2.4 Fonts

<..configure mozilla fontmath..>
 <.math fonts utilities.>
 <.set mathcal class.>
 <.set mathcal symbols.>
 <.set Re/Im class.>
 <.set Re/Im symbols.>
 <.set math sf class.>
 <.set math sf symbols.>
-_-_-

<..configure mozilla euler..>
 <.math fonts utilities.>
 <.set fraktur class.>
 <.set fraktur symbols.>
 <.set math script class.>
 <.set math script symbols.>
 <.set math sf class.>
 <.set math sf symbols.>
-_-_-

<..configure mozilla eucal..>
 <.set mathcal class.>
 <.set mathcal symbols.>
-_-_-

<..configure mozilla amsfonts..>
 <.math fonts utilities.>
 <.set mathbb class.>
 <.set mathbb symbols.>
 <.set fraktur class.>
 <.set fraktur symbols at amsfonts.>
-_-_-

<..configure mozilla dsfont..>
 <.math fonts utilities.>
 <.configure mathds mathclass.>
-_-_-

<..math fonts utilities..>
 \ifx \tmp:bx\:UnDef \csname newbox\endcsname \tmp:bx \fi
 \def\find:set:mgroup#1#2#3{\bgroup
   \def\use@mathgroup##1##2##3{\relax
     \tmp:cnt=##2%
     \xdef\:temp####1{\noexpand\Configure{MathClass}{#2}%
         {}{}{}{\mathchar"0\the\tmp:cnt ####1}}%
   }%
   \setbox\tmp:bx=\hbox{$#1$}\setbox\tmp:bx=\hbox{}%
   \set:mgroup#3{}{}%
   \egroup
 }
 \def\set:mgroup#1#2{\if :#1#2:\else
    \:temp{#1#2}\expandafter\set:mgroup \fi}
-_-_-

<..set mathbb class..>
 \ifx \mathbbMathClass\:UnDef
   \NewMathClass\mathbbMathClass
 \fi
 \Configure{MathClass}{\mathbbMathClass}{*}
     {<\a:mathml mi mathvariant="double-struck">}{</\a:mathml mi>}{}
-_-_-

<..set mathbb symbols..>
 \find:set:mgroup{\mathbb{A}}{\mathbbMathClass}%
    {414244454647494A4B4C4D4F535455565758597C} A--Z (not CHNPQRZ),k
-_-_-

The characters CHNPQRZ bet a <mi mathvariant="double-struck"> decoration.

Mathfrak might be conditionally loaded by latex, upon encountering the mathfrak command. Hence, the indirect setting of math classes.

<..set fraktur symbols at amsfonts..>
 \expandafter\ifx \csname sv:@mathfrak:\endcsname\relax
    \let\sv:@mathfrak:=\n:@mathfrak:
 \fi
 \def\n:@mathfrak:{\global\let\n:@mathfrak:=\sv:@mathfrak:
    \global\let\sv:@mathfrak:=\:UnDef
    <.set fraktur symbols.>%
 }
 \n:@mathfrak:
-_-_-

In version 1.4b <mi mathvariant="fraktur">&Lfr;</mi> is needed. The representations <mi>&Lfr;</mi> and <mi mathvariant="fraktur">L</mi> don’t work.

<..set fraktur class..>
 \ifx \mathfrakMathClass\:UnDef
   \NewMathClass\mathfrakMathClass
 \fi
 \Configure{MathClass}{\mathfrakMathClass}{*}
     {<\a:mathml mi\Hnewline
          mathvariant="fraktur">}{</\a:mathml mi>}{}
-_-_-

<..set fraktur symbols..>
 \find:set:mgroup{\mathfrak{A}}{\mathfrakMathClass}%
   {4142434445464748494A4B4C4D4E4F505152535455565758595A% A--Z
    6162636465666768696A6B6C6D6E6F707172737475767778797A% a--z
    30313233343536373839}% 0--9
-_-_-

<..set fraktur class..>+
 \ifx \mathboldfrakMathClass\:UnDef
   \NewMathClass\mathboldfrakMathClass
 \fi
 \Configure{MathClass}{\mathboldfrakMathClass}{*}
     {<\a:mathml mi\Hnewline
          mathvariant="bold-fraktur">}{</\a:mathml mi>}{}
-_-_-

<..set fraktur symbols..>+
 \expandafter\ifx\csname mv@bold\endcsname\relax  \else
 \bgroup
 \mathversion{bold}%
 \find:set:mgroup{\mathfrak{A}}{\mathboldfrakMathClass}%
   {4142434445464748494A4B4C4D4E4F505152535455565758595A% A--Z
    6162636465666768696A6B6C6D6E6F707172737475767778797A% a--z
   }%
 \egroup
 \fi
-_-_-

<..set math script class..>
 \ifx \mathscrMathClass\:UnDef
   \NewMathClass\mathscrMathClass
 \fi
 \Configure{MathClass}{\mathscrMathClass}{*}
     {<\a:mathml mi\Hnewline
          mathvariant="script">}{</\a:mathml mi>}{}
-_-_-

<..set math script symbols..>
 \find:set:mgroup{\mathscr{A}}{\mathscrMathClass}%
   {4142434445464748494A4B4C4D4E4F505152535455565758595A} A--Z
-_-_-

<..set math script class..>+
 \ifx \mathboldscrMathClass\:UnDef
   \NewMathClass\mathboldscrMathClass
 \fi
 \Configure{MathClass}{\mathboldscrMathClass}{*}
     {<\a:mathml mi\Hnewline
          mathvariant="bold-script">}{</\a:mathml mi>}{}
-_-_-

<..set math script symbols..>+
 \expandafter\ifx\csname mv@bold\endcsname\relax  \else
 \bgroup
 \mathversion{bold}%
 \find:set:mgroup{\mathscr{A}}{\mathboldscrMathClass}%
   {4142434445464748494A4B4C4D4E4F505152535455565758595A} A--Z
 \egroup
 \fi
-_-_-

<..set mathcal class..>
 \ifx \mathcalMathClass\:UnDef
   \NewMathClass\mathcalMathClass
 \fi
 \Configure{MathClass}{\mathcalMathClass}{*}
     {<\a:mathml mi\Hnewline
          mathvariant="script">}{</\a:mathml mi>}{}
-_-_-

<..set mathcal symbols..>
 \find:set:mgroup{\mathcal{A}}{\mathcalMathClass}%
   {4142434445464748494A4B4C4D4E4F505152535455565758595A} A--Z
-_-_-

<..set mathcal class..>+
 \ifx \mathboldcalMathClass\:UnDef
   \NewMathClass\mathboldcalMathClass
 \fi
 \Configure{MathClass}{\mathboldcalMathClass}{*}
     {<\a:mathml mi\Hnewline
          mathvariant="bold-script">}{</\a:mathml mi>}{}
-_-_-

<..set mathcal symbols..>+
 \expandafter\ifx\csname mv@bold\endcsname\relax  \else
 \bgroup
 \mathversion{bold}%
 \find:set:mgroup{\mathcal{A}}{\mathboldcalMathClass}%
   {4142434445464748494A4B4C4D4E4F505152535455565758595A} A--Z
 \egroup
 \fi
-_-_-

<..set math sf classBROKEN..>
 \ifx \boldmathsfMathClass\:UnDef
   \NewMathClass\boldmathsfMathClass
 \fi
 \Configure{MathClass}{\boldmathsfMathClass}{*}
     {<\a:mathml mi mathvariant="bold-sans-serif">}{</\a:mathml mi>}{}
-_-_-

<..set math sf symbolsBROKEN..>
 \find:set:mgroup{{\boldmath\mathsf{A}}}{\boldmathsfMathClass}%
   {4142434445464748494A4B4C4D4E4F505152535455565758595A% A--Z
    6162636465666768696A6B6C6D6E6F707172737475767778797A% a--z
   }%
-_-_-

<..set math sf classBROKEN..>+
 \ifx \boldmathsfDigitMathClass\:UnDef
   \NewMathClass\boldmathsfDigitMathClass
 \fi
 \Configure{MathClass}{\boldmathsfDigitMathClass}{*}
     {<\a:mathml mn mathvariant="bold-sans-serif">}{</\a:mathml mn>}{}
-_-_-

<..set math sf symbolsBROKEN..>+
 \find:set:mgroup{{\boldmath\mathsf{A}}}{\boldmathsfDigitMathClass}%
   {30313233343536373839}% 0--9
-_-_-

BROKEN: The above, for instance, fail for the prima math code:

\documentclass{article}  
\tracingmacros=2  
\begin{document}  
 
prima  {\boldmath $\mathrm{{\csname HCode\endcsname{}}^{14}C}$}  
 
seconda   {\boldmath $\mathsf{{\csname HCode\endcsname{}}^{15}C}$}  
 
terza   {\boldmath $\mathrm{{\csname HCode\endcsname{}}^{16}C}$}  
 
quarta   {\boldmath $\mathsf{{\csname HCode\endcsname{}}^{17}C}$}  
 
 quinta   {$\mathtt{{\csname HCode\endcsname{}}^{18}C}$}  
\end{document}

Double strike:

<..configure mathds mathclass..>
 \ifx \mathdsMathClass\:UnDef
   \NewMathClass\mathdsMathClass
 \fi
 \Configure{MathClass}{\mathdsMathClass}{*}
     {<\a:mathml mi mathvariant="double-struck">}{</\a:mathml mi>}{}
 \find:set:mgroup{\mathds{A}}{\mathdsMathClass}%  1,A--Z,A,h,k
    {314142434445464748494A4B4C4D4E4F505152535455565758595A61686B}
-_-_-

<..set Re/Im class..>
 \ifx \mathReImMathClass\:UnDef
   \NewMathClass\mathboldReImMathClass
 \fi
 \Configure{MathClass}{\mathboldReImMathClass}{*}
     {<\a:mathml mi\Hnewline
          fontweight="bold">}{</\a:mathml mi>}{}
-_-_-

<..set Re/Im symbols..>
 \expandafter\ifx\csname mv@bold\endcsname\relax  \else
 \bgroup
 \mathversion{bold}%
 \find:set:mgroup{\mathcal{A}}{\mathboldReImMathClass}%
   {3C3D}
 \egroup
 \fi
-_-_-