[varLib] include default maps for all avar axes, even without <map> elements
This is a follow-up to Jens' comment:
19c4b377b8 (commitcomment-23458151)
Now, if there's any axis that has 'interesting' segment maps (and thus
an avar table is added), we also ensure that for the rest of the axes
that aren't modified (either because no <map> elements are defined or
because an identity mapping is defined in the designspace), we always
have a non-empty segment maps array containing the three default maps:
{-1.0: -1.0, 0.0: 0.0, 1.0: 1.0}.
This is to work around CoreText and DirectWrite rendering issue with
empty avar segment maps arrays.
This commit is contained in:
parent
77876e8df4
commit
04eacf13cd
@ -109,7 +109,14 @@ def _add_avar(font, axes):
|
|||||||
|
|
||||||
interesting = False
|
interesting = False
|
||||||
for axis in axes.values():
|
for axis in axes.values():
|
||||||
curve = avar.segments[axis.tag] = {}
|
# Currently, some rasterizers require that the default value maps
|
||||||
|
# (-1 to -1, 0 to 0, and 1 to 1) be present for all the segment
|
||||||
|
# maps, even when the default normalization mapping for the axis
|
||||||
|
# was not modified.
|
||||||
|
# https://github.com/googlei18n/fontmake/issues/295
|
||||||
|
# https://github.com/fonttools/fonttools/issues/1011
|
||||||
|
# TODO(anthrotype) revert this (and 19c4b37) when issue is fixed
|
||||||
|
curve = avar.segments[axis.tag] = {-1.0: -1.0, 0.0: 0.0, 1.0: 1.0}
|
||||||
if not axis.map:
|
if not axis.map:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@ -135,16 +142,6 @@ def _add_avar(font, axes):
|
|||||||
keys = [models.normalizeValue(v, keys_triple) for v in keys]
|
keys = [models.normalizeValue(v, keys_triple) for v in keys]
|
||||||
vals = [models.normalizeValue(v, vals_triple) for v in vals]
|
vals = [models.normalizeValue(v, vals_triple) for v in vals]
|
||||||
|
|
||||||
# Work around rendering issue with CoreText when avar table
|
|
||||||
# contains segment maps with zero axis value maps.
|
|
||||||
# Currently, CoreText requires that the three default value maps
|
|
||||||
# (-1 to -1, 0 to 0, and 1 to 1) be present for all the segment
|
|
||||||
# maps, even when the default normalization mapping for the axis
|
|
||||||
# was not modified.
|
|
||||||
# https://github.com/googlei18n/fontmake/issues/295
|
|
||||||
# TODO(anthrotype) revert this change once CoreText is modified
|
|
||||||
curve.update({-1.0: -1.0, 0.0: 0.0, 1.0: 1.0})
|
|
||||||
|
|
||||||
if all(k == v for k, v in zip(keys, vals)):
|
if all(k == v for k, v in zip(keys, vals)):
|
||||||
continue
|
continue
|
||||||
interesting = True
|
interesting = True
|
||||||
|
Loading…
x
Reference in New Issue
Block a user