mirror of
https://github.com/ryanoasis/nerd-fonts.git
synced 2024-09-12 09:41:47 +02:00
font-patcher: Allow xy scaling for ScaleGroups
[why] All the box drawing glyphs should be scaled and shifted as one (i.e. equally). For such glyph sets we have the ScaleGroups that handle it nicely, determining a combined bounding box and calculation scale and shift from that bounding box instead of the actual glyph's bounding box. But unfortunately it is hard-wired to do just 'pa' scaling. For the box drawing glyphs we need 'xy' scaling. [how] The preparatory stage calculates the 'pa' factor for ScaleGroups for us. That is mainly so because the old system worked that way and has no notion of combinded-bounding-box. The data needed to be stored in one number, the scale. Later came the correct shifting, which needed the bounding box. But the scaling still relied on the one scale factor that is used for x and y. Instead, if we have a combinded bounding box, we ignore the precalculated scale factor and calculate a new set of x- and y-scales based on the requested scaling algorithm. In this way we can get 'xy' or 'pa' or even 'xy2' scaling, or whatever we like, based on the combined bounding box. Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
This commit is contained in:
parent
1d7c4f7791
commit
80e818bf55
1 changed files with 5 additions and 3 deletions
|
@ -1260,9 +1260,11 @@ class font_patcher:
|
|||
if glyph_scale_data is not None:
|
||||
if glyph_scale_data[1] is not None:
|
||||
sym_dim = glyph_scale_data[1] # Use combined bounding box
|
||||
# This is roughly alike get_scale_factors(glyph_scale_data[1], 'pa')
|
||||
# Except we do not have glyph_scale_data[1] always...
|
||||
(scale_ratio_x, scale_ratio_y) = (glyph_scale_data[0], glyph_scale_data[0])
|
||||
(scale_ratio_x, scale_ratio_y) = self.get_scale_factors(sym_dim, sym_attr['stretch'])
|
||||
else:
|
||||
# This is roughly alike get_scale_factors(glyph_scale_data[1], 'pa')
|
||||
# Except we do not have glyph_scale_data[1] always...
|
||||
(scale_ratio_x, scale_ratio_y) = (glyph_scale_data[0], glyph_scale_data[0])
|
||||
else:
|
||||
(scale_ratio_x, scale_ratio_y) = self.get_scale_factors(sym_dim, sym_attr['stretch'])
|
||||
|
||||
|
|
Loading…
Reference in a new issue