diff options
Diffstat (limited to 'doc/context/sources/general/manuals/math/math-features.tex')
-rw-r--r-- | doc/context/sources/general/manuals/math/math-features.tex | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/doc/context/sources/general/manuals/math/math-features.tex b/doc/context/sources/general/manuals/math/math-features.tex index 3869c575e..863493804 100644 --- a/doc/context/sources/general/manuals/math/math-features.tex +++ b/doc/context/sources/general/manuals/math/math-features.tex @@ -122,6 +122,84 @@ show the plus sign. \stopsection +\startsection[title=Script kerning] + +Text in math is somewhat special. First of all, a math font is not a text fonts +because the characters and glyphs have a different purpose. Text features are +normally not present (and often not even wanted). Anyway, you can force a text +font, but that doesn't mean you will get for instance kerning. You can force a +box which in turn will trigger font processing, but then you normally loose the +script related size properties. So we end up with some juggling possibly combined +with user intervention, and that is what the \type {\text} macro does. + +But still there is the kern between a variable and its subscript to consider, +something that normally is dealt with with staircase kerns, an \OPENTYPE\ math +speciality. But, as we progress over the math list, and we bind a subscript to a +variable, that subscript can be anything: a simple character, or more characters +(a list) or something wrapped in a box. There is simply no universal solution +that we can hard code because sometimes you don't want that special kerning. This +is why in \LUATEX\ the integer variable \type {\mathscriptboxmode} controls the +way this is dealt with. + +\starttabulate[|l|p|] +\NC \type {0} \NC forget about kerning \NC \NR +\NC \type {1} \NC kern math sub lists with a valid glyph (default in the engine) \NC \NR +\NC \type {2} \NC also kern math sub boxes that have a valid glyph (default in \CONTEXT) \NC \NR +\NC \type {3} \NC only kern math sub boxes with a boundary node present \NC \NR +\stoptabulate + +Here we show some examples of how this parameter controls kerning. Watch the +difference between a simple font switch and a text wrapped in a box. There are +differences between fonts: some fonts have kerns, some don't. When present kerns +are passed to the engine without further user intervention. + +\startbuffer[1] + $T_{\tf fluff}$ +\stopbuffer + +\startbuffer[2] + $T_{\text{fluff}}$ +\stopbuffer + +\startbuffer[3] + $T_{\text{\boundary1 fluff}}$ +\stopbuffer + +\unexpanded\def\Show#1#2#3% + {\doifelsenothing{#3} + {\typeinlinebuffer[#1]} + {\doifelse{#3}{-} + {\type{mode #2}} + {\switchtobodyfont[#3,big]\setstrut\strut\showfontkerns\showglyphs\mathscriptboxmode#2\relax\inlinebuffer[#1]}}} + +% \starttabulate[|lT|c|c|c|c|c|] +% \NC \NC \Show{1}{0}{} \NC\Show{1}{1}{} \NC \Show{2}{1}{} \NC \Show{2}{2}{} \NC \Show{3}{3}{} \NC \NR +% \NC \NC \Show{1}{0}{-} \NC\Show{1}{1}{-} \NC \Show{2}{1}{-} \NC \Show{2}{2}{-} \NC \Show{3}{3}{-} \NC \NR +% \NC modern \NC \Show{1}{0}{modern} \NC\Show{1}{1}{modern} \NC \Show{2}{1}{modern} \NC \Show{2}{2}{modern} \NC \Show{3}{3}{modern} \NC \NR +% \NC lucidaot \NC \Show{1}{0}{lucidaot} \NC\Show{1}{1}{lucidaot} \NC \Show{2}{1}{lucidaot} \NC \Show{2}{2}{lucidaot} \NC \Show{3}{3}{lucidaot} \NC \NR +% \NC pagella \NC \Show{1}{0}{pagella} \NC\Show{1}{1}{pagella} \NC \Show{2}{1}{pagella} \NC \Show{2}{2}{pagella} \NC \Show{3}{3}{pagella} \NC \NR +% \NC cambria \NC \Show{1}{0}{cambria} \NC\Show{1}{1}{cambria} \NC \Show{2}{1}{cambria} \NC \Show{2}{2}{cambria} \NC \Show{3}{3}{cambria} \NC \NR +% \NC dejavu \NC \Show{1}{0}{dejavu} \NC\Show{1}{1}{dejavu} \NC \Show{2}{1}{dejavu} \NC \Show{2}{2}{dejavu} \NC \Show{3}{3}{dejavu} \NC \NR +% \stoptabulate + +\def\ShowMore#1#2% + {\subsubject{\Show{#1}{#2}{} (\Show{#1}{#2}{-})} + \starttabulate[|lT|c|c|c|c|c|] + \NC modern \NC \Show{#1}{#2}{modern} \NC \NR + \NC lucidaot \NC \Show{#1}{#2}{lucidaot} \NC \NR + \NC pagella \NC \Show{#1}{#2}{pagella} \NC \NR + \NC cambria \NC \Show{#1}{#2}{cambria} \NC \NR + \NC dejavu \NC \Show{#1}{#2}{dejavu} \NC \NR + \stoptabulate} + +\ShowMore{1}{0} +\ShowMore{1}{1} +\ShowMore{2}{1} +\ShowMore{2}{2} +\ShowMore{3}{3} + +\stopsection + \stopchapter \stopcomponent |