diff options
Diffstat (limited to 'Master/texmf-dist/tex/luatex/optex/base/math-unicode.opm')
-rw-r--r-- | Master/texmf-dist/tex/luatex/optex/base/math-unicode.opm | 102 |
1 files changed, 60 insertions, 42 deletions
diff --git a/Master/texmf-dist/tex/luatex/optex/base/math-unicode.opm b/Master/texmf-dist/tex/luatex/optex/base/math-unicode.opm index 01595975aba..f857deb1750 100644 --- a/Master/texmf-dist/tex/luatex/optex/base/math-unicode.opm +++ b/Master/texmf-dist/tex/luatex/optex/base/math-unicode.opm @@ -1,14 +1,14 @@ -%% This is part of OpTeX project, see http://petr.olsak.net/optex +%% This is part of the OpTeX project, see http://petr.olsak.net/optex \_codedecl \loadmath {Unicode Math fonts <2020-06-06>} % preloaded in format \_doc ----------------------------- - \`\loadmath` `{<Unicode-math font>}` loads given font. It does: + \`\loadmath` `{<Unicode-math font>}` loads the given font. It does: \begitems * define \`\_unimathfont` as `<Unicode-math font>`, * redefine `\normalmath` and `\boldmath` macros to their Unicode counterparts, * load the `\_unimathfont` by `\normalmath`, - * print information about loaded font on the terminal, + * print information about the loaded font on the terminal, * redefine all encoding dependent setting by `\input unimath-codes.opm`, * protect new loading by setting \`\_ifmathloading` to false. \enditems @@ -28,7 +28,7 @@ \_opwarning{Math font "#1" not found, skipped...}% \_else \_def\_unimathfont{#1}% - \_let\_normalmath = \_normalunimath \_let\_boldmath = \_boldunimath + \_let\_normalmath = \_normalunimath \_let\_boldmath = \_boldunimath \_normalmath \_wterm {MATH-FONT: "#1" -- unicode math prepared.}% \_ifx\_ncharrmA\_undefined \_opinput {unimath-codes.opm}\_fi @@ -40,7 +40,7 @@ \_doc ----------------------------- \`\loadboldmath` `{<bold-font>} \to {<normal-font>}` defines \`\_unimathboldfont` as `<bold-font>` only if `\_unimathfont` is - defined as `<normal-font>`. It is used when `\boldmath` macro is run. + defined as `<normal-font>`. It is used when \^`\boldmath` macro is run. When no `\_unimathboldfont` is defined then the `\boldmath` macro use \"fake bold" generated by `embolden` \LuaTeX/ font feature. \_cod ----------------------------- @@ -48,7 +48,7 @@ \_def\_loadboldmath#1#2\to #3{% \_def\_tmp{#3}\_ifx\_unimathfont\_tmp % do work only if #3 is loaded as normal Math \_isfont{#1}\_iffalse - \_opwarning{Bold-Math font "#1" not found, skipped...} + \_opwarning{Bold-Math font "#1" not found, skipped...} \_else \_def\_unimathboldfont{#1}% \_wterm {MATH-FONT: "#1" -- unicode math bold prepared.}% @@ -59,8 +59,15 @@ \_doc ----------------------------- The Unicode version of the \^`\normalmath` and \^`\boldmath` macros are defined here as \`\_normalunimath` and \`\_boldunimath` macros. - They are using \`\_setunimathdimens` in similar sense as + They are using \`\_setunimathdimens` in a similar sense as \^`\_setmathdimens`. + \nl + You can combine more fonts if you register them to another + math families (5, 6, 7, etc.) in the \^`\normalmath` macro. + \nl + The default value of \^`\_normalunimath` shows a combination of base Unicode-math + font with 8bit Math font at family 4. See definition of `\script` macro where + `\fam4` is used. \_cod ----------------------------- \_def\_normalunimath{% @@ -69,7 +76,7 @@ \_setunimathdimens }% \_def\_boldunimath{% - \_ifx\_unimathboldfont \_undefined + \_ifx\_unimathboldfont \_undefined \_loadumathfamily 1 {\_unimathfont}{embolden=1.7;} % Base faked bold \_else \_loadumathfamily 1 {\_unimathboldfont}{} % Base real bold font @@ -86,20 +93,36 @@ } \_doc ----------------------------- - \`\_loadumathfamily` `<number> {<font>}{<font features>}` - loads the given Unicode-math fonts in three sizes given by the + If you try the example above about + \~`\loadboldmath``{[xitsmath-bold]} \to {[xitsmath-regular]}` + then you can find a bug in XITSMath-Bold font: the symbols for norm + $\|x\|$ are missing. So, we have to define `\_boldmath` macro manually. + The missing symbol is loaded from family 5 as no-bold variant in our example: + \begtt + \loadmath{[xitsmath-regular]} + \def\_boldmath{% + \_loadumathfamily 1 {[xitsmath-bold]}{} % Base font + \_loadmathfamily 4 rsfs % script + \_loadumathfamily 5 {[xitsmath-regular]}{} + \_def\|{\_Udelimiter 0 5 "02016 }% % norm delimiter from family 5 + \_setmathdimens + } + \endtt + + \`\_loadumathfamily` `<number> {<font>}{<font features>}` + loads the given Unicode-math fonts in three sizes given by the \^`\setmathsizes` macro and sets it as the math family `<number>`. The `<font features>` are added to the default - \`\_mfontfeatures` and to the size dependent features `+ssty=0` + \`\_mfontfeatures` and to the size-dependent features `+ssty=0` if script size is asked or `+ssty=1` if scriptscriptsize is asked. - If the fath family 1 is loaded then the family 2 and 3 is set by the same - font because \TeX/ needs to read dimension information about generating + If the math family 1 is loaded then the family 2 and 3 are set by the same + font because \TeX/ needs to read dimension information about generating math formulae from these three math families. All information needed by \TeX/ is collected in single Unicode-math font. \_cod ----------------------------- \_def\_umathname#1#2{"#1:\_mfontfeatures#2"} -\_def\_mfontfeatures{mode=base;script=math;} +\_def\_mfontfeatures{mode=base;script=math;} \_def\_loadumathfamily #1 #2#3 {% \_edef\_optsizesave{\_the\_optsize}% @@ -108,35 +131,35 @@ \_optsize=\_sizemscript \_font\_mF=\_umathname{#2}{+ssty=0;#3} at\_optsize \_scriptfont#1=\_mF \_ifnum#1=1 \_scriptfont2=\_mF \_scriptfont3=\_mF \_fi \_optsize=\_sizemsscript \_font\_mF=\_umathname{#2}{+ssty=1;#3} at\_optsize\_scriptscriptfont#1=\_mF - \_ifnum#1=1 \_scriptscriptfont2=\_mF \_scriptscriptfont3=\_mF \_fi + \_ifnum#1=1 \_scriptscriptfont2=\_mF \_scriptscriptfont3=\_mF \_fi \_optsize=\_optsizesave \_relax } \_doc ----------------------------- Unicode math font includes all typical math alphabets together, user needs not to - load more \TeX/ math families. These math aphabets are encoded by + load more \TeX/ math families. These math alphabets are encoded by different parts of Unicode table. We need auxiliary macros for setting mathcodes by selected math alphabet. - \nl + \nl \`\_umathrange` `{<from->-<to>}<class><family>\<first>` sets `\Umathcode`s - of the characters in the interval `<from>-<to>` to `\<first>`, + of the characters in the interval `<from>-<to>` to `\<first>`, `\<first>+1`, `\<first>+2` - etc., but \`\_umathcharholes` are skipped + etc., but \`\_umathcharholes` are skipped (`\_umathcharholes` are parts of the Unicode table not designed for math - alphabets but they causes that the math alphabets are + alphabets but they cause that the math alphabets are not continuously spread out in the table; I mean that the designers were under the influence of drugs when they created this part of the Unicode table). - The `<from>-<to>` clause includes normal letters like `A-Z`. + The `<from>-<to>` clause includes normal letters like `A-Z`. \nl - \`\_umahrangegreek` `\<first>` is the same as + \`\_umahrangegreek` `\<first>` is the same as `\_umathrange {<alpha>-<omega>}\<first>`. \nl - \`\_umahrangeGREEK` `\<first>` is the same as + \`\_umahrangeGREEK` `\<first>` is the same as `\_umathrange {<Alpha>-<Omega>}\<first>`. \nl \`\_greekdef` `<control sequences> \_relax` defines each control sequence - as a normal character with codes `\_umathnumB`, `\_umathnumB+1`, + as a normal character with codes `\_umathnumB`, `\_umathnumB+1`, `\_umathnumB+2` etc. It is used for redefinig the contol sequences for math Greek `\alpha`, `\beta`, `\gamma` etc. \_cod ----------------------------- @@ -176,47 +199,42 @@ The \^`\loadmath` `{<Unicode-math font>}` macro loads math fonts and -redefines all default math-codes using `\input unimath-codes.opm`. +redefines all default math-codes using `\input unimath-codes.opm`. If Unicode-math font is loaded then \^`\_mathloadingfalse` -is set, so new UnicodeMath font isn't loaded until \^`\doloadmath` is used. +is set, so the new Unicode-math font isn't loaded until \^`\doloadmath` is used. \^`\loadboldmath` `{<bold-font>} \to {<normal-font>}` loads bold variant only -if `<normal-font>` was sucessully loaded by the `\loadmath`. For example: +if `<normal-font>` was sucessully loaded by the previous `\loadmath`. For example: \begtt \loadmath {[xitsmath-regular]} \loadboldmath {[xitsmath-bold]} \to {[xitsmath-regular]} \endtt - -You can combine more fonts, if you register them to another -math families (5, 6, 7, etc.) in the `\normalmath` macro. - -The default value of `\normalmath` shows a combination of base Unicode Math -font with 8bit Math font at family 4. See definition of `\script` macro where -`\fam4` is used. Of course, we need to set `\rmvariables` too, because 8bit font -accepts only codes less than 255. - -See \url{http://tex.stackexchange.com/questions/308749/} for more technical details. +There are very few Unicode-math fonts with full \^`\boldmath` support. +I know only XITSMath-Bold and KpMath-Bold. If \^`\loadboldmath` is not used +then \"faked bold" created from \^`\normalmath` is used by default. The \^`\loadmath` macro was succesfully tested on: \begtt \loadmath{[XITSMath-Regular]} ... XITS MATH \loadmath{[latinmodern-math]} ... Latin Modern Math -\loadmath{[texgyretermes-math]} ... TeXGyre Termes Math -\loadmath{[texgyrebonum-math]} ... TeXGyre Bonum Math -\loadmath{[texgyrepagella-math]} ... TeXGyre Pagella Math +\loadmath{[texgyretermes-math]} ... TeXGyre Termes Math +\loadmath{[texgyrebonum-math]} ... TeXGyre Bonum Math +\loadmath{[texgyrepagella-math]} ... TeXGyre Pagella Math \loadmath{[texgyreschola-math]} ... TeXGyre Schola Math -\loadmath{[texgyredejavu-math]} ... TeXGyre DeJaVu Math -\loadmath{[LibertinusMath-Regular]} ... Libertinus Math +\loadmath{[texgyredejavu-math]} ... TeXGyre DeJaVu Math +\loadmath{[LibertinusMath-Regular]} ... Libertinus Math \loadmath{[FiraMath-Regular]} ... Fira Math \loadmath{[Asana-Math]} ... Asana Math +\loadmath{[KpMath-Regular]} ... KP fonts Math \endtt \secc Unicode-math macros preloaded in the format \printdoc math-unicode.opm + \secc[unimath-codes] Macros and codes set when \code{\\loadmatfont} is processed The file `unimath-codes.opm` is loaded when the \^`\loadmath` is used. The |