diff options
Diffstat (limited to 'doc/context/presentations/context/2021/context-2021-math.tex')
-rw-r--r-- | doc/context/presentations/context/2021/context-2021-math.tex | 236 |
1 files changed, 236 insertions, 0 deletions
diff --git a/doc/context/presentations/context/2021/context-2021-math.tex b/doc/context/presentations/context/2021/context-2021-math.tex new file mode 100644 index 000000000..fce4ca4d5 --- /dev/null +++ b/doc/context/presentations/context/2021/context-2021-math.tex @@ -0,0 +1,236 @@ +% language=us + +\usemodule[present-boring,abbreviations-logos] + +\definecolor[maincolor] [r=.4] +\definecolor[extracolor][s=.1] + +\startdocument + [title={MATH}, + banner={complete control}, + location={context\enspace {\bf 2021}\enspace meeting}] + +\starttitle[title=The benchmark] + +\startitemize + +\startitem + Traditional \TEX\ has set the benchmark for typesetting math. +\stopitem + +\startitem + It uses three categories of fonts: alphabet, symbol, extensible. +\stopitem + +\startitem + Limitations in fonts have lead to some curious handling of dimensions. +\stopitem + +\startitem + The fact that there is \type {\over} makes for multipass scanning and + processing. +\stopitem + +\startitem + The last family counts (when entering the second pass) so one has to use very + controlled font switching. +\stopitem + +\startitem + Some features (limits, integrals, primes) rely on special macros and parsing. +\stopitem + +\startitem + One can end up in tricky font switching. Also, quite some fonts are loaded in + order to set up the machinery. +\stopitem + +\stopitemize + +\stoptitle + +\starttitle[title=Todays reality] + +\startitemize + +\startitem + We now use \OPENTYPE\ math fonts. In fact, in \MKIV\ we always used only one + font instance (unless we mix font families). +\stopitem + +\startitem + We operate in the \UNICODE\ domain, so in the end there was no need to bump the + number of families in \LUATEX. +\stopitem + +\startitem + In \CONTEXT\ we use only a few font families: regular, regular r2l, bold, bold r2l. +\stopitem + +\startitem + All the tricky stuff is done with the help of \LUA. This already started very + early in the \LUATEX\ project and has not changed. +\stopitem + +\startitem + But we still run into issues because the available fonts are inconsistent, + incompatible, have issues and that is unlikely to change. +\stopitem + +\startitem + We have a virtual font system in place that was used during the transition (when no + fonts were available). +\stopitem + +\startitem + In \CONTEXT\ there are various ways to deal with shortcomings in or extensions to fonts. +\stopitem + +\startitem + At some point we need to make up our minds, accept the issues with fonts, and + just fix things runtime. +\stopitem + +\stopitemize + +\stoptitle + +\starttitle[title=The engine] + +\startitemize + +\startitem + In \LUATEX\ we started with a hybrid approach but eventually ended up with + more split code paths. +\stopitem + +\startitem + In \LUAMETATEX\ nearly all aspects of the engine had made configurable and are under + user control. +\stopitem + +\startitem + This permits experiments where we can apply old methods onto new fonts. +\stopitem + +\stopitemize + +\stoptitle + +\starttitle[title=The tricky things] + +\startitemize + +\startitem + Spacing in traditional math is a combination of widths and italic correction: + we need to add them and sometimes afterwards subtract the italic correction. + In \OPENTYPE\ math we don't lie about dimensions and apply italic correction + selectively (as we have staircase kerns). +\stopitem + +\startitem + Special symbols like primes are quite inconsistent wrt dimensions and positioning + and we need to catch that. We also need robust ways to collapse them to the proper + \UNICODE\ symbol. +\stopitem + +\startitem + Larger variants (these \type {\bigg} things) needs some attention too. +\stopitem + +\startitem + We need to map characters onto the right shaped (alphabets) because hardly + anyone will enter the \UNICODE\ math characters directly. +\stopitem + +\startitem + We might want to fix scripts, italics, kern pairs etc. +\stopitem + +\stopitemize + +\stoptitle + +\starttitle[title=Implementation] + +Among the new features (introduced over a period of time) are: + +\startitemize + +\startitem + All kind of inter|-|class spacing parameters (in addition to what \LUATEX\ + already provides). +\stopitem + +\startitem + Dozens of \OPENTYPE\ font related spacing parameters (more that traditional + \TEX). +\stopitem + +\startitem + Opened up additional font (and taste) related parameters (hard coded in + traditional \TEX). +\stopitem + +\startitem + Opened up style related parameters (hard coded in traditional \TEX). +\stopitem + +\startitem + Control codes that make the engine follow a different (the traditional) code + path (which can come in handy when testing or writing manuals). +\stopitem + +\startitem + The ability to simplify the result a bit wrt characters (the engine loves to + box a lot). +\stopitem + +\startitem + Efficient font, style and parameter scaling by reusing fonts and thereby + limiting the number of instances. +\stopitem + +\startitem + More options to special (constructed) symbols. +\stopitem + +\startitem + Let math related nodes carry around more control properties and states. +\stopitem + +\startitem + Support of local changes to math parameters. +\stopitem + +\stopitemize + +\stoptitle + +\stopdocument + +% mml +% vf chars for extensibles + +% noads.handlers.showtree +% noads.handlers.unscript +% noads.handlers.unstack +% noads.handlers.variants +% noads.handlers.relocate +% noads.handlers.families +% noads.handlers.render +% noads.handlers.collapse +% noads.handlers.fixscripts +% noads.handlers.domains +% noads.handlers.autofences +% noads.handlers.resize +% noads.handlers.respace +% noads.handlers.alternates +% noads.handlers.tags +% noads.handlers.italics +% noads.handlers.kernpairs +% noads.handlers.classes + +% builders.kernel.mlisttohlist +% noads.handlers.makeup +% noads.handlers.align |