@@ -58,10 +58,69 @@ my %unicode_map = ( # CONSTANT
5858 ' sans-serif-italic' => { makePlane1Map(0x1D608, undef , undef , undef ) },
5959 ' sans-serif-bold-italic' => { makePlane1Map(0x1D63C, 0x1D790, 0x1D7AA, undef ) },
6060 ' monospace' => { makePlane1Map(0x1D670, undef , undef , 0x1D7F6) },
61- ' script' => { makePlane1Map(0x1D49C, undef , undef , undef ),
62- B => " \x{212C} " , E => " \x{2130} " , F => " \x{2131} " , H => " \x{210B} " , I => " \x{2110} " ,
63- L => " \x{2112} " , M => " \x{2133} " , R => " \x{211B} " ,
64- e => " \x{212F} " , g => " \x{210A} " , o => " \x{2134} " },
61+ # since Unicode 14, capital script characters admit two variant selectors
62+ # - U+FE00 for chancery style (caligraphic)
63+ # - U+FE01 for roundhand style (script)
64+ ' script' => { makePlane1Map(0x1D49C, undef , undef , undef ),
65+ A => " \x{1D49C}\x{FE01} " ,
66+ B => " \x{212C}\x{FE01} " ,
67+ C => " \x{1D49E}\x{FE01} " ,
68+ D => " \x{1D49F}\x{FE01} " ,
69+ E => " \x{2130}\x{FE01} " ,
70+ F => " \x{2131}\x{FE01} " ,
71+ G => " \x{1D4A2}\x{FE01} " ,
72+ H => " \x{210B}\x{FE01} " ,
73+ I => " \x{2110}\x{FE01} " ,
74+ J => " \x{1D4A5}\x{FE01} " ,
75+ K => " \x{1D4A6}\x{FE01} " ,
76+ L => " \x{2112}\x{FE01} " ,
77+ M => " \x{2133}\x{FE01} " ,
78+ N => " \x{1D4A9}\x{FE01} " ,
79+ O => " \x{1D4AA}\x{FE01} " ,
80+ P => " \x{1D4AB}\x{FE01} " ,
81+ Q => " \x{1D4AC}\x{FE01} " ,
82+ R => " \x{211B}\x{FE01} " ,
83+ S => " \x{1D4AE}\x{FE01} " ,
84+ T => " \x{1D4AF}\x{FE01} " ,
85+ U => " \x{1D4B0}\x{FE01} " ,
86+ V => " \x{1D4B1}\x{FE01} " ,
87+ W => " \x{1D4B2}\x{FE01} " ,
88+ X => " \x{1D4B3}\x{FE01} " ,
89+ Y => " \x{1D4B4}\x{FE01} " ,
90+ Z => " \x{1D4B5}\x{FE01} " ,
91+ e => " \x{212F} " ,
92+ g => " \x{210A} " ,
93+ o => " \x{2134} " },
94+ ' caligraphic' => { makePlane1Map(0x1D49C, undef , undef , undef ),
95+ A => " \x{1D49C}\x{FE00} " ,
96+ B => " \x{212C}\x{FE00} " ,
97+ C => " \x{1D49E}\x{FE00} " ,
98+ D => " \x{1D49F}\x{FE00} " ,
99+ E => " \x{2130}\x{FE00} " ,
100+ F => " \x{2131}\x{FE00} " ,
101+ G => " \x{1D4A2}\x{FE00} " ,
102+ H => " \x{210B}\x{FE00} " ,
103+ I => " \x{2110}\x{FE00} " ,
104+ J => " \x{1D4A5}\x{FE00} " ,
105+ K => " \x{1D4A6}\x{FE00} " ,
106+ L => " \x{2112}\x{FE00} " ,
107+ M => " \x{2133}\x{FE00} " ,
108+ N => " \x{1D4A9}\x{FE00} " ,
109+ O => " \x{1D4AA}\x{FE00} " ,
110+ P => " \x{1D4AB}\x{FE00} " ,
111+ Q => " \x{1D4AC}\x{FE00} " ,
112+ R => " \x{211B}\x{FE00} " ,
113+ S => " \x{1D4AE}\x{FE00} " ,
114+ T => " \x{1D4AF}\x{FE00} " ,
115+ U => " \x{1D4B0}\x{FE00} " ,
116+ V => " \x{1D4B1}\x{FE00} " ,
117+ W => " \x{1D4B2}\x{FE00} " ,
118+ X => " \x{1D4B3}\x{FE00} " ,
119+ Y => " \x{1D4B4}\x{FE00} " ,
120+ Z => " \x{1D4B5}\x{FE00} " ,
121+ e => " \x{212F} " ,
122+ g => " \x{210A} " ,
123+ o => " \x{2134} " },
65124 ' bold-script' => { makePlane1Map(0x1D4D0, undef , undef , undef ) },
66125 ' fraktur' => { makePlane1Map(0x1D504, undef , undef , undef ),
67126 C => " \x{212D} " , H => " \x{210C} " , I => " \x{2111} " , R => " \x{211C} " , Z => " \x{2128} " },
@@ -217,25 +276,25 @@ my %mathvariants = ( # CONSTANT
217276 ' bold italic' => ' bold-italic' ,
218277 ' doublestruck' => ' double-struck' ,
219278 ' blackboard' => ' double-struck' ,
220- ' blackboard bold' => ' double-struck' , # all collapse
221- ' blackboard upright' => ' double-struck' , # all collapse
222- ' blackboard bold upright' => ' double-struck' , # all collapse
279+ ' blackboard bold' => ' double-struck' , # all collapse
280+ ' blackboard upright' => ' double-struck' , # all collapse
281+ ' blackboard bold upright' => ' double-struck' , # all collapse
223282 ' fraktur' => ' fraktur' ,
224- ' fraktur italic' => ' fraktur' , # all collapse
283+ ' fraktur italic' => ' fraktur' , # all collapse
225284 ' fraktur bold' => ' bold-fraktur' ,
226285 ' script' => ' script' ,
227- ' script italic' => ' script' , # all collapse
286+ ' script italic' => ' script' , # all collapse
228287 ' script bold' => ' bold-script' ,
229- ' caligraphic' => ' script ' , # NOTE: TeX caligraphic is NOT script!
230- ' caligraphic bold' => ' bold-script' , # collapse
231- ' sansserif' => ' sans-serif' ,
232- ' sansserif bold' => ' bold-sans-serif' ,
233- ' sansserif italic' => ' sans-serif-italic' ,
234- ' sansserif bold italic' => ' sans-serif-bold-italic' ,
235- ' typewriter' => ' monospace' ,
236- ' typewriter bold' => ' monospace' ,
237- ' typewriter italic' => ' monospace' ,
238- ' typewriter bold italic' => ' monospace' ,
288+ ' caligraphic' => ' caligraphic ' , # not a true mathvariant, supported via Unicode variation sequences
289+ ' caligraphic bold' => ' bold-script' , # collapse (NOTE: TeX caligraphic is NOT script!)
290+ ' sansserif' => ' sans-serif' ,
291+ ' sansserif bold' => ' bold-sans-serif' ,
292+ ' sansserif italic' => ' sans-serif-italic' ,
293+ ' sansserif bold italic' => ' sans-serif-bold-italic' ,
294+ ' typewriter' => ' monospace' ,
295+ ' typewriter bold' => ' monospace' ,
296+ ' typewriter italic' => ' monospace' ,
297+ ' typewriter bold italic' => ' monospace' ,
239298);
240299
241300# The font differences (from the containing context) have been deciphered
@@ -310,6 +369,7 @@ C<sans-serif-italic>,
310369C<sans-serif-bold-italic > ,
311370C<monospace > ,
312371C<script > ,
372+ C<caligraphic > ,
313373C<bold-script > ,
314374C<fraktur > ,
315375C<bold-fraktur > ,
0 commit comments