%D \module %D [ file=s-math-extensibles.mkiv, %D version=2013.02.03, %D title=\CONTEXT\ Style File, %D subtitle=Math Stackers Checking, %D author=Hans Hagen, %D date=\currentdate, %D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. %D This module provides a macro that will typeset a table of (horizontal) %D extensibles including some tracing. You can set up the \type {demo} %D stacker category to tweak things. %D %D \starttyping %D \showmathextensibles[alternative=a|b] %D \stoptyping \startmodule[math-extensibles] \unprotect \definemathstackers [demo] [math] [\c!offset=\v!max] \installcorenamespace{modulemathextensibles} \installcorenamespace{modulemathextensiblesalternative} \installdirectsetuphandler \??modulemathextensibles {modulemathextensibles} \setupmodulemathextensibles [\c!alternative=\v!a] \unexpanded\def\showmathextensibles {\dosingleempty\module_math_extensibles_show_all} \def\module_math_extensibles_show_all[#1]% {\begingroup \setupcurrentmodulemathextensibles[#1]% \expandnamespacevalue\??modulemathextensiblesalternative\c!alternative\v!a \endgroup} \def\modulemathextensiblesalternativea#1#2#3% {\NC U+#1 \NC \filledhboxm{\math{\char"#1}} \NC \hbox{\math{\mathstacker[demo]{"#1}{top}{bottom}}} \NC \hbox{\math{\mathstacker[demo]{"#1}{}{bottom}}} \NC \hbox{\math{\mathstacker[demo]{"#1}{top}{}}} \NC \nohyphens \veryraggedright #2 \NC\NR} \setvalue{\??modulemathextensiblesalternative\v!a}% {\enabletrackers[math.stackers.texts] \starttabulate[|Tl|l|l|l|l|Tp|] \ctxlua { moduledata.math.extensibles.show { command = "modulemathextensiblesalternativea", } } \stoptabulate \disabletrackers[math.stackers.texts]} \def\modulemathextensiblesalternativeb#1#2#3% {\NC U+#1 \NC \math{\char"#1} \NC \nohyphens \veryraggedright #3 \NC \NR} \setvalue{\??modulemathextensiblesalternative\v!b}% {\enabletrackers[math.stackers.texts] \starttabulate[|Tl|l|Tp|] \ctxlua { moduledata.math.extensibles.show { command = "modulemathextensiblesalternativeb", sparse = true, } } \stoptabulate \disabletrackers[math.stackers.texts]} \startluacode moduledata.math = moduledata.math or { } moduledata.math.extensibles = moduledata.math.extensibles or { } function moduledata.math.extensibles.show(settings) local command = settings.command local sparse = settings.sparse for k, v in table.sortedhash(characters.data) do local mathextensible = v.mathextensible if mathextensible == "r" or mathextensible == "l" or mathextensible == "h" then local names = { } local mathname = v.mathname if mathname then names[#names+1] = v.mathclass .. ":" .. mathname end local mathspec = v.mathspec if mathspec then for i=1,#mathspec do local v = mathspec[i] names[#names+1] = v.class .. ":" .. v.name end end local mathfiller = v.mathfiller if mathfiller then names[#names+1] = "filler:" .. mathfiller end if not sparse or #names > 0 then context[command](string.format("%04X",k),v.description,table.concat(names," ")) end end end end \stopluacode \protect \stopmodule \continueifinputfile{s-math-extensibles.mkiv} \setuplayout [width=middle, height=middle, footer=0cm, backspace=1.5cm, topspace=1.5cm] \setuphead[chapter][style=\bfc] \setuphead[section][style=\bfa] \starttext \dowith {a,b} { \page \title {Latin Modern} \showmathextensibles[alternative=#1] \page \setupbodyfont[pagella] \title {Pagella} \showmathextensibles[alternative=#1] \page \setupbodyfont[termes] \title {Termes} \showmathextensibles[alternative=#1] \page \setupbodyfont[dejavu] \title {Xits} \showmathextensibles[alternative=#1] \page \setupbodyfont[cambria] \title {Cambria} \showmathextensibles[alternative=#1] \page \setupbodyfont[lucidaot] \title {Lucida} \showmathextensibles[alternative=#1] } \stoptext % This could also be some tracer \definefontfeature[mathextra][goodies=] % or use the raw unpatched font \def\Test#1% {\left( \scratchdimen\Umathaxis\displaystyle \blackrule [height=\dimexpr#1ex+\scratchdimen\relax, depth=\dimexpr#1ex-\scratchdimen\relax] \right)} \startbuffer[p] % \Umathconnectoroverlapmin\allmathstyles \zeropoint % \Umathconnectoroverlapmin\allmathstyles 2pt % \zeropoint \Umathdelimitershortfall \allmathstyles \zeropoint \showboxes \showglyphs \Test{4.0} \Test{4.5} \Test{5.0} \Test{8.0} \quad \dorecurse{\mathvariantcount `(} { \char\mathvariantcode `( #1 } \stopbuffer \startbuffer[p] \showboxes \showglyphs \overparent{\blackrule[color=darkgray,width=1em,height=2ex]}\quad \overparent{\blackrule[color=darkgray,width=2em,height=2ex]}\quad \overparent{\blackrule[color=darkgray,width=4em,height=2ex]}\quad \overparent{\blackrule[color=darkgray,width=8em,height=2ex]} \stopbuffer \startbuffer \hpack\bgroup $ \getbuffer[p] $ \egroup \stopbuffer \def\TestFont#1% {\dontleavehmode \begingroup \hbox to 5.5em{\hss\type{#1}:}\quad \switchtobodyfont[#1]\getbuffer \endgroup \par} \starttext \startTEXpage[offset=1dk] % \TestFont{modern} % \TestFont{pagella} % \TestFont{termes} % \TestFont{bonum} \TestFont{lucida} % \TestFont{cambria} \TestFont{ebgaramond} % \TestFont{xits} \stopTEXpage \stoptext