datatypes.data_fontmetrics
1from dataclasses import dataclass, field 2from lib import helpers 3import drawBot 4 5 6@dataclass 7class DFontMetrics: 8 """A dataclass for extracting and storing key font metrics from a font file using DrawBot.""" 9 10 fontPath: str 11 """File path to the font""" 12 factors: tuple[float, float] = 1, 1 13 """Scale factors for ascender and descender""" 14 ascender: int = field(init=False) 15 """The ascender height of the font, scaled by the ascender factor.""" 16 cap: int = field(init=False) 17 """The cap height of the font.""" 18 xheight: int = field(init=False) 19 """The x-height of the font.""" 20 descender: int = field(init=False) 21 """The descender height of the font, scaled by the descender factor.""" 22 23 def __post_init__(self): 24 drawBot.font(self.fontPath) 25 26 factorAsc, factorDesc = self.factors 27 self.ascender = drawBot.fontAscender() * factorAsc 28 self.cap = drawBot.fontCapHeight() 29 self.xheight = drawBot.fontXHeight() 30 self.baseline = 0 31 self.descender = drawBot.fontDescender() * factorDesc 32 33 @property 34 def values(self): 35 """ 36 Returns a list of font metric values. 37 38 The returned list includes the following metrics (in order): 39 40 - ascender (excluded if within 10 units of cap height) 41 - cap height 42 - x-height 43 - baseline 44 - descender 45 46 Returns: 47 A list of font metric values with None values removed. 48 """ 49 50 return helpers.removeNone( 51 [ 52 ( 53 self.ascender 54 if not helpers.isInRange( 55 self.cap - 10, self.cap + 10, self.ascender 56 ) 57 else None 58 ), 59 self.cap, 60 self.xheight, 61 self.baseline, 62 self.descender, 63 ] 64 )
@dataclass
class
DFontMetrics:
7@dataclass 8class DFontMetrics: 9 """A dataclass for extracting and storing key font metrics from a font file using DrawBot.""" 10 11 fontPath: str 12 """File path to the font""" 13 factors: tuple[float, float] = 1, 1 14 """Scale factors for ascender and descender""" 15 ascender: int = field(init=False) 16 """The ascender height of the font, scaled by the ascender factor.""" 17 cap: int = field(init=False) 18 """The cap height of the font.""" 19 xheight: int = field(init=False) 20 """The x-height of the font.""" 21 descender: int = field(init=False) 22 """The descender height of the font, scaled by the descender factor.""" 23 24 def __post_init__(self): 25 drawBot.font(self.fontPath) 26 27 factorAsc, factorDesc = self.factors 28 self.ascender = drawBot.fontAscender() * factorAsc 29 self.cap = drawBot.fontCapHeight() 30 self.xheight = drawBot.fontXHeight() 31 self.baseline = 0 32 self.descender = drawBot.fontDescender() * factorDesc 33 34 @property 35 def values(self): 36 """ 37 Returns a list of font metric values. 38 39 The returned list includes the following metrics (in order): 40 41 - ascender (excluded if within 10 units of cap height) 42 - cap height 43 - x-height 44 - baseline 45 - descender 46 47 Returns: 48 A list of font metric values with None values removed. 49 """ 50 51 return helpers.removeNone( 52 [ 53 ( 54 self.ascender 55 if not helpers.isInRange( 56 self.cap - 10, self.cap + 10, self.ascender 57 ) 58 else None 59 ), 60 self.cap, 61 self.xheight, 62 self.baseline, 63 self.descender, 64 ] 65 )
A dataclass for extracting and storing key font metrics from a font file using DrawBot.
values
34 @property 35 def values(self): 36 """ 37 Returns a list of font metric values. 38 39 The returned list includes the following metrics (in order): 40 41 - ascender (excluded if within 10 units of cap height) 42 - cap height 43 - x-height 44 - baseline 45 - descender 46 47 Returns: 48 A list of font metric values with None values removed. 49 """ 50 51 return helpers.removeNone( 52 [ 53 ( 54 self.ascender 55 if not helpers.isInRange( 56 self.cap - 10, self.cap + 10, self.ascender 57 ) 58 else None 59 ), 60 self.cap, 61 self.xheight, 62 self.baseline, 63 self.descender, 64 ] 65 )
Returns a list of font metric values.
The returned list includes the following metrics (in order):
- ascender (excluded if within 10 units of cap height)
- cap height
- x-height
- baseline
- descender
Returns:
A list of font metric values with None values removed.