% 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