|
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