|
14 | 14 |
|
15 | 15 | from __future__ import annotations |
16 | 16 |
|
| 17 | +import dataclasses |
17 | 18 | import enum |
18 | 19 | import glob |
19 | 20 | import logging |
|
26 | 27 | from pathlib import Path |
27 | 28 | from re import fullmatch |
28 | 29 |
|
29 | | -import attr |
30 | 30 | import ufo2ft |
31 | 31 | import ufo2ft.errors |
32 | 32 | import ufoLib2 |
|
37 | 37 | from fontTools.misc.plistlib import load as readPlist |
38 | 38 | from fontTools.ttLib import TTFont |
39 | 39 | from fontTools.varLib.interpolate_layout import interpolate_layout |
40 | | -from ufo2ft import CFFOptimization |
| 40 | +from ufo2ft import CFFOptimization, instantiator |
41 | 41 | from ufo2ft.featureCompiler import parseLayoutFeatures |
42 | 42 | from ufo2ft.featureWriters import FEATURE_WRITERS_KEY, loadFeatureWriters |
43 | 43 | from ufo2ft.filters import FILTERS_KEY, loadFilters |
44 | 44 | from ufo2ft.util import makeOfficialGlyphOrder |
45 | 45 |
|
46 | | -from fontmake import instantiator |
47 | 46 | from fontmake.compatibility import CompatibilityChecker |
48 | 47 | from fontmake.errors import FontmakeError, TTFAError |
49 | 48 | from fontmake.ttfautohint import ttfautohint |
@@ -1021,7 +1020,7 @@ def interpolate_instance_ufos( |
1021 | 1020 | fea_txt = parseLayoutFeatures( |
1022 | 1021 | subDoc.default.font, includeDir=fea_include_dir |
1023 | 1022 | ).asFea() |
1024 | | - generator = attr.evolve(generator, copy_feature_text=fea_txt) |
| 1023 | + generator = dataclasses.replace(generator, copy_feature_text=fea_txt) |
1025 | 1024 |
|
1026 | 1025 | for instance in subDoc.instances: |
1027 | 1026 | # Skip instances that have been set to non-export in Glyphs, stored as the |
|
0 commit comments