[interpolatable] Support avar2 in the .ttf codepath

This commit is contained in:
Behdad Esfahbod 2024-04-02 13:14:16 -06:00
parent d590feba99
commit 6a2a204cc3
2 changed files with 15 additions and 8 deletions

View File

@ -12,7 +12,7 @@ from typing import Any, Dict, List, MutableMapping, Optional, Tuple, Union, cast
from fontTools.misc import etree as ET
from fontTools.misc import plistlib
from fontTools.misc.loggingTools import LogMixin
from fontTools.misc.loggingTools import LogMixin, deprecateFunction
from fontTools.misc.textTools import tobytes, tostr
"""

View File

@ -749,22 +749,27 @@ def main(args=None):
if "gvar" in font:
# Is variable font
axisMapping = {}
fvar = font["fvar"]
axisMapping = {}
for axis in fvar.axes:
axisMapping[axis.axisTag] = {
-1: axis.minValue,
0: axis.defaultValue,
1: axis.maxValue,
}
normalized = False
if "avar" in font:
avar = font["avar"]
for axisTag, segments in avar.segments.items():
fvarMapping = axisMapping[axisTag].copy()
for location, value in segments.items():
axisMapping[axisTag][value] = piecewiseLinearMap(
location, fvarMapping
)
if getattr(avar.table, "VarStore", None):
axisMapping = {tag: {-1: -1, 0: 0, 1: 1} for tag in axisMapping}
normalized = True
else:
for axisTag, segments in avar.segments.items():
fvarMapping = axisMapping[axisTag].copy()
for location, value in segments.items():
axisMapping[axisTag][value] = piecewiseLinearMap(
location, fvarMapping
)
gvar = font["gvar"]
glyf = font["glyf"]
@ -811,6 +816,8 @@ def main(args=None):
)
+ "'"
)
if normalized:
name += " (normalized)"
names.append(name)
fonts.append(glyphsets[locTuple])
locations.append(dict(locTuple))