@@ -482,60 +482,40 @@ def _get_glyph(self, fontname: str, font_class: str,
482482 else :
483483 return self ._stix_fallback ._get_glyph (fontname , font_class , sym )
484484
485- # The Bakoma fonts contain many pre-sized alternatives for the
486- # delimiters. The AutoSizedChar class will use these alternatives
487- # and select the best (closest sized) glyph.
485+ # The Bakoma fonts contain many pre-sized alternatives for the delimiters. The
486+ # Auto(Height|Width)Char classes will use these alternatives and select the best
487+ # (closest sized) glyph.
488+ _latex_sizes = ('big' , 'Big' , 'bigg' , 'Bigg' )
488489 _size_alternatives = {
489- '(' : [('rm' , '(' ), ('ex' , '\xa1 ' ), ('ex' , '\xb3 ' ),
490- ('ex' , '\xb5 ' ), ('ex' , '\xc3 ' )],
491- ')' : [('rm' , ')' ), ('ex' , '\xa2 ' ), ('ex' , '\xb4 ' ),
492- ('ex' , '\xb6 ' ), ('ex' , '\x21 ' )],
493- '{' : [('cal' , '{' ), ('ex' , '\xa9 ' ), ('ex' , '\x6e ' ),
494- ('ex' , '\xbd ' ), ('ex' , '\x28 ' )],
495- '}' : [('cal' , '}' ), ('ex' , '\xaa ' ), ('ex' , '\x6f ' ),
496- ('ex' , '\xbe ' ), ('ex' , '\x29 ' )],
497- # The fourth size of '[' is mysteriously missing from the BaKoMa
498- # font, so I've omitted it for both '[' and ']'
499- '[' : [('rm' , '[' ), ('ex' , '\xa3 ' ), ('ex' , '\x68 ' ),
500- ('ex' , '\x22 ' )],
501- ']' : [('rm' , ']' ), ('ex' , '\xa4 ' ), ('ex' , '\x69 ' ),
502- ('ex' , '\x23 ' )],
503- r'\lfloor' : [('ex' , '\xa5 ' ), ('ex' , '\x6a ' ),
504- ('ex' , '\xb9 ' ), ('ex' , '\x24 ' )],
505- r'\rfloor' : [('ex' , '\xa6 ' ), ('ex' , '\x6b ' ),
506- ('ex' , '\xba ' ), ('ex' , '\x25 ' )],
507- r'\lceil' : [('ex' , '\xa7 ' ), ('ex' , '\x6c ' ),
508- ('ex' , '\xbb ' ), ('ex' , '\x26 ' )],
509- r'\rceil' : [('ex' , '\xa8 ' ), ('ex' , '\x6d ' ),
510- ('ex' , '\xbc ' ), ('ex' , '\x27 ' )],
511- r'\langle' : [('ex' , '\xad ' ), ('ex' , '\x44 ' ),
512- ('ex' , '\xbf ' ), ('ex' , '\x2a ' )],
513- r'\rangle' : [('ex' , '\xae ' ), ('ex' , '\x45 ' ),
514- ('ex' , '\xc0 ' ), ('ex' , '\x2b ' )],
515- r'\__sqrt__' : [('ex' , '\x70 ' ), ('ex' , '\x71 ' ),
516- ('ex' , '\x72 ' ), ('ex' , '\x73 ' )],
517- r'\backslash' : [('ex' , '\xb2 ' ), ('ex' , '\x2f ' ),
518- ('ex' , '\xc2 ' ), ('ex' , '\x2d ' )],
519- r'/' : [('rm' , '/' ), ('ex' , '\xb1 ' ), ('ex' , '\x2e ' ),
520- ('ex' , '\xcb ' ), ('ex' , '\x2c ' )],
521- r'\widehat' : [('rm' , '\x5e ' ), ('ex' , '\x62 ' ), ('ex' , '\x63 ' ),
522- ('ex' , '\x64 ' )],
523- r'\widetilde' : [('rm' , '\x7e ' ), ('ex' , '\x65 ' ), ('ex' , '\x66 ' ),
524- ('ex' , '\x67 ' )],
525- r'<' : [('cal' , 'h' ), ('ex' , 'D' )],
526- r'>' : [('cal' , 'i' ), ('ex' , 'E' )]
527- }
490+ '(' : [('rm' , '(' ), * [('ex' , fr'\__parenleft{ s } __' ) for s in _latex_sizes ]],
491+ ')' : [('rm' , ')' ), * [('ex' , fr'\__parenright{ s } __' ) for s in _latex_sizes ]],
492+ '{' : [('ex' , fr'\__braceleft{ s } __' ) for s in _latex_sizes ],
493+ '}' : [('ex' , fr'\__braceright{ s } __' ) for s in _latex_sizes ],
494+ '[' : [('rm' , '[' ), * [('ex' , fr'\__bracketleft{ s } __' ) for s in _latex_sizes ]],
495+ ']' : [('rm' , ']' ), * [('ex' , fr'\__bracketright{ s } __' ) for s in _latex_sizes ]],
496+ '<' : [('cal' , r'\__angbracketleft__' ),
497+ * [('ex' , fr'\__angbracketleft{ s } __' ) for s in _latex_sizes ]],
498+ '>' : [('cal' , r'\__angbracketright__' ),
499+ * [('ex' , fr'\__angbracketright{ s } __' ) for s in _latex_sizes ]],
500+ r'\lfloor' : [('ex' , fr'\__floorleft{ s } __' ) for s in _latex_sizes ],
501+ r'\rfloor' : [('ex' , fr'\__floorright{ s } __' ) for s in _latex_sizes ],
502+ r'\lceil' : [('ex' , fr'\__ceilingleft{ s } __' ) for s in _latex_sizes ],
503+ r'\rceil' : [('ex' , fr'\__ceilingright{ s } __' ) for s in _latex_sizes ],
504+ r'\__sqrt__' : [('ex' , fr'\__radical{ s } __' ) for s in _latex_sizes ],
505+ r'\backslash' : [('ex' , fr'\__backslash{ s } __' ) for s in _latex_sizes ],
506+ r'/' : [('rm' , '/' ), * [('ex' , fr'\__slash{ s } __' ) for s in _latex_sizes ]],
507+ r'\widehat' : [('rm' , '\x5e ' ), ('ex' , r'\__hatwide__' ), ('ex' , r'\__hatwider__' ),
508+ ('ex' , r'\__hatwidest__' )],
509+ r'\widetilde' : [('rm' , '\x7e ' ), ('ex' , r'\__tildewide__' ),
510+ ('ex' , r'\__tildewider__' ), ('ex' , r'\__tildewidest__' )],
511+ }
528512
529- for alias , target in [(r'\leftparen' , '(' ),
530- (r'\rightparen' , ')' ),
531- (r'\leftbrace' , '{' ),
532- (r'\rightbrace' , '}' ),
533- (r'\leftbracket' , '[' ),
534- (r'\rightbracket' , ']' ),
535- (r'\{' , '{' ),
536- (r'\}' , '}' ),
537- (r'\[' , '[' ),
538- (r'\]' , ']' )]:
513+ for alias , target in [(r'\leftparen' , '(' ), (r'\rightparen' , ')' ),
514+ (r'\leftbrace' , '{' ), (r'\rightbrace' , '}' ),
515+ (r'\leftbracket' , '[' ), (r'\rightbracket' , ']' ),
516+ (r'\langle' , '<' ), (r'\rangle' , '>' ),
517+ (r'\{' , '{' ), (r'\}' , '}' ),
518+ (r'\[' , '[' ), (r'\]' , ']' )]:
539519 _size_alternatives [alias ] = _size_alternatives [target ]
540520
541521 def get_sized_alternatives_for_symbol (self , fontname : str ,
@@ -1531,7 +1511,7 @@ class AutoHeightChar(Hlist):
15311511 """
15321512
15331513 def __init__ (self , c : str , height : float , depth : float , state : ParserState ,
1534- always : bool = False , factor : float | None = None ):
1514+ factor : float | None = None ):
15351515 alternatives = state .fontset .get_sized_alternatives_for_symbol (state .font , c )
15361516
15371517 x_height = state .fontset .get_xheight (state .font , state .fontsize , state .dpi )
@@ -1568,7 +1548,7 @@ class AutoWidthChar(Hlist):
15681548 always just return a scaled version of the glyph.
15691549 """
15701550
1571- def __init__ (self , c : str , width : float , state : ParserState , always : bool = False ,
1551+ def __init__ (self , c : str , width : float , state : ParserState ,
15721552 char_class : type [Char ] = Char ):
15731553 alternatives = state .fontset .get_sized_alternatives_for_symbol (state .font , c )
15741554
@@ -2706,7 +2686,7 @@ def sqrt(self, toks: ParseResults) -> T.Any:
27062686 # the height so it doesn't seem cramped
27072687 height = body .height - body .shift_amount + 5 * thickness
27082688 depth = body .depth + body .shift_amount
2709- check = AutoHeightChar (r'\__sqrt__' , height , depth , state , always = True )
2689+ check = AutoHeightChar (r'\__sqrt__' , height , depth , state )
27102690 height = check .height - check .shift_amount
27112691 depth = check .depth + check .shift_amount
27122692
0 commit comments