2525 visible_leaf_layers ,
2626)
2727from quickthumb ._effects import EffectsEngine
28- from quickthumb ._fonts import FontEngine
2928from quickthumb ._groups import GroupEngine
3029from quickthumb ._images import ImageEngine
3130from quickthumb ._measurements import LayerMeasurement , measure_layers
@@ -59,7 +58,6 @@ def __init__(
5958 ctx : RenderContext ,
6059 canvas : "Canvas" ,
6160 effects : EffectsEngine ,
62- fonts : FontEngine ,
6361 images : ImageEngine ,
6462 shapes : ShapeEngine ,
6563 text : TextEngine ,
@@ -68,7 +66,6 @@ def __init__(
6866 self ._ctx = ctx
6967 self ._canvas = canvas
7068 self ._effects = effects
71- self ._fonts = fonts
7269 self ._images = images
7370 self ._shapes = shapes
7471 self ._text = text
@@ -421,23 +418,8 @@ def _find_overflowing_word(self, layer: TextLayer) -> tuple[str, int, int] | Non
421418
422419 max_width_px = parse_coordinate (layer .max_width , self ._ctx .width )
423420
424- if isinstance (layer .content , str ):
425- font = self ._fonts .load_font (layer )
426- return self ._first_word_wider_than (
427- layer .content , font , layer .letter_spacing or 0 , max_width_px
428- )
429-
430- for part in layer .content :
431- font = self ._fonts .load_font_variant (
432- part .font or layer .font ,
433- self ._text .resolve_size (part , layer ),
434- self ._text .resolve_bold (part , layer ),
435- self ._text .resolve_italic (part , layer ),
436- self ._text .resolve_weight (part , layer ),
437- )
438- word = self ._first_word_wider_than (
439- part .text , font , self ._text .resolve_letter_spacing (part , layer ), max_width_px
440- )
421+ for text , font , letter_spacing in self ._text .iter_text_runs (layer ):
422+ word = self ._first_word_wider_than (text , font , letter_spacing , max_width_px )
441423 if word is not None :
442424 return word
443425 return None
@@ -506,7 +488,7 @@ def _canvas_overflow(self, box) -> dict[str, int]:
506488 def _find_missing_glyphs (self , layer : TextLayer ) -> list [str ]:
507489 missing : list [str ] = []
508490 seen : set [str ] = set ()
509- for text , font in self ._text .iter_font_runs (layer ):
491+ for text , font , _letter_spacing in self ._text .iter_text_runs (layer ):
510492 missing_signatures = self ._missing_glyph_signatures (font )
511493 for char in text :
512494 if (
@@ -517,7 +499,8 @@ def _find_missing_glyphs(self, layer: TextLayer) -> list[str]:
517499 ):
518500 continue
519501 seen .add (char )
520- if self ._renders_as_missing_glyph (font , char , missing_signatures ):
502+ signature = self ._glyph_signature (font , char )
503+ if signature is not None and signature in missing_signatures :
521504 missing .append (char )
522505 return missing
523506
@@ -528,12 +511,6 @@ def _missing_glyph_signatures(self, font) -> set:
528511 if (signature := self ._glyph_signature (font , probe )) is not None
529512 }
530513
531- def _renders_as_missing_glyph (self , font , char : str , missing_signatures : set ) -> bool :
532- signature = self ._glyph_signature (font , char )
533- if signature is None :
534- return False
535- return signature in missing_signatures
536-
537514 def _glyph_signature (self , font , char : str ):
538515 try :
539516 mask = font .getmask (char )
0 commit comments