fonttools 4.58.3__cp312-cp312-win_amd64.whl → 4.58.5__cp312-cp312-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of fonttools might be problematic. Click here for more details.
- fontTools/__init__.py +1 -1
- fontTools/cu2qu/cu2qu.cp312-win_amd64.pyd +0 -0
- fontTools/feaLib/ast.py +2 -1
- fontTools/feaLib/builder.py +5 -4
- fontTools/feaLib/lexer.cp312-win_amd64.pyd +0 -0
- fontTools/misc/bezierTools.cp312-win_amd64.pyd +0 -0
- fontTools/misc/visitor.py +8 -0
- fontTools/otlLib/builder.py +30 -0
- fontTools/pens/momentsPen.cp312-win_amd64.pyd +0 -0
- fontTools/qu2cu/qu2cu.cp312-win_amd64.pyd +0 -0
- fontTools/varLib/instancer/__init__.py +33 -25
- fontTools/varLib/iup.cp312-win_amd64.pyd +0 -0
- {fonttools-4.58.3.dist-info → fonttools-4.58.5.dist-info}/METADATA +13 -1
- {fonttools-4.58.3.dist-info → fonttools-4.58.5.dist-info}/RECORD +20 -20
- {fonttools-4.58.3.data → fonttools-4.58.5.data}/data/share/man/man1/ttx.1 +0 -0
- {fonttools-4.58.3.dist-info → fonttools-4.58.5.dist-info}/WHEEL +0 -0
- {fonttools-4.58.3.dist-info → fonttools-4.58.5.dist-info}/entry_points.txt +0 -0
- {fonttools-4.58.3.dist-info → fonttools-4.58.5.dist-info}/licenses/LICENSE +0 -0
- {fonttools-4.58.3.dist-info → fonttools-4.58.5.dist-info}/licenses/LICENSE.external +0 -0
- {fonttools-4.58.3.dist-info → fonttools-4.58.5.dist-info}/top_level.txt +0 -0
fontTools/__init__.py
CHANGED
|
Binary file
|
fontTools/feaLib/ast.py
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import weakref
|
|
1
2
|
from fontTools.feaLib.error import FeatureLibError
|
|
2
3
|
from fontTools.feaLib.location import FeatureLibLocation
|
|
3
4
|
from fontTools.misc.encodingTools import getEncoding
|
|
@@ -529,7 +530,7 @@ class MarkClass(object):
|
|
|
529
530
|
def addDefinition(self, definition):
|
|
530
531
|
"""Add a :class:`MarkClassDefinition` statement to this mark class."""
|
|
531
532
|
assert isinstance(definition, MarkClassDefinition)
|
|
532
|
-
self.definitions.append(definition)
|
|
533
|
+
self.definitions.append(weakref.proxy(definition))
|
|
533
534
|
for glyph in definition.glyphSet():
|
|
534
535
|
if glyph in self.glyphs:
|
|
535
536
|
otherLoc = self.glyphs[glyph].location
|
fontTools/feaLib/builder.py
CHANGED
|
@@ -259,12 +259,13 @@ class Builder(object):
|
|
|
259
259
|
key = (script, lang, feature_name)
|
|
260
260
|
self.features_.setdefault(key, []).append(lookup)
|
|
261
261
|
|
|
262
|
-
def get_lookup_(self, location, builder_class):
|
|
262
|
+
def get_lookup_(self, location, builder_class, mapping=None):
|
|
263
263
|
if (
|
|
264
264
|
self.cur_lookup_
|
|
265
265
|
and type(self.cur_lookup_) == builder_class
|
|
266
266
|
and self.cur_lookup_.lookupflag == self.lookupflag_
|
|
267
267
|
and self.cur_lookup_.markFilterSet == self.lookupflag_markFilterSet_
|
|
268
|
+
and self.cur_lookup_.can_add_mapping(mapping)
|
|
268
269
|
):
|
|
269
270
|
return self.cur_lookup_
|
|
270
271
|
if self.cur_lookup_name_ and self.cur_lookup_:
|
|
@@ -1206,10 +1207,10 @@ class Builder(object):
|
|
|
1206
1207
|
|
|
1207
1208
|
def set_lookup_flag(self, location, value, markAttach, markFilter):
|
|
1208
1209
|
value = value & 0xFF
|
|
1209
|
-
if markAttach:
|
|
1210
|
+
if markAttach is not None:
|
|
1210
1211
|
markAttachClass = self.getMarkAttachClass_(location, markAttach)
|
|
1211
1212
|
value = value | (markAttachClass << 8)
|
|
1212
|
-
if markFilter:
|
|
1213
|
+
if markFilter is not None:
|
|
1213
1214
|
markFilterSet = self.getMarkFilterSet_(location, markFilter)
|
|
1214
1215
|
value = value | 0x10
|
|
1215
1216
|
self.lookupflag_markFilterSet_ = markFilterSet
|
|
@@ -1305,7 +1306,7 @@ class Builder(object):
|
|
|
1305
1306
|
# GSUB rules
|
|
1306
1307
|
|
|
1307
1308
|
def add_any_subst_(self, location, mapping):
|
|
1308
|
-
lookup = self.get_lookup_(location, AnySubstBuilder)
|
|
1309
|
+
lookup = self.get_lookup_(location, AnySubstBuilder, mapping=mapping)
|
|
1309
1310
|
for key, value in mapping.items():
|
|
1310
1311
|
if key in lookup.mapping:
|
|
1311
1312
|
if value == lookup.mapping[key]:
|
|
Binary file
|
|
Binary file
|
fontTools/misc/visitor.py
CHANGED
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
"""Generic visitor pattern implementation for Python objects."""
|
|
2
2
|
|
|
3
3
|
import enum
|
|
4
|
+
import weakref
|
|
4
5
|
|
|
5
6
|
|
|
6
7
|
class Visitor(object):
|
|
7
8
|
defaultStop = False
|
|
8
9
|
|
|
10
|
+
_visitors = {
|
|
11
|
+
# By default we skip visiting weak references to avoid recursion
|
|
12
|
+
# issues. Users can override this by registering a visit
|
|
13
|
+
# function for weakref.ProxyType.
|
|
14
|
+
weakref.ProxyType: {None: lambda self, obj, *args, **kwargs: False}
|
|
15
|
+
}
|
|
16
|
+
|
|
9
17
|
@classmethod
|
|
10
18
|
def _register(celf, clazzes_attrs):
|
|
11
19
|
assert celf != Visitor, "Subclass Visitor instead."
|
fontTools/otlLib/builder.py
CHANGED
|
@@ -256,6 +256,10 @@ class LookupBuilder(object):
|
|
|
256
256
|
)
|
|
257
257
|
)
|
|
258
258
|
|
|
259
|
+
def can_add_mapping(self, _mapping) -> bool:
|
|
260
|
+
# used by AnySubstBuilder, below
|
|
261
|
+
return True
|
|
262
|
+
|
|
259
263
|
|
|
260
264
|
class AlternateSubstBuilder(LookupBuilder):
|
|
261
265
|
"""Builds an Alternate Substitution (GSUB3) lookup.
|
|
@@ -1376,6 +1380,32 @@ class AnySubstBuilder(LookupBuilder):
|
|
|
1376
1380
|
def _add_to_ligature_subst(self, builder, key, value):
|
|
1377
1381
|
builder.ligatures[key] = value[0]
|
|
1378
1382
|
|
|
1383
|
+
def can_add_mapping(self, mapping) -> bool:
|
|
1384
|
+
if mapping is None:
|
|
1385
|
+
return True
|
|
1386
|
+
# single sub rules can be treated as (degenerate) liga-or-multi sub
|
|
1387
|
+
# rules, but multi and liga sub rules themselves have incompatible
|
|
1388
|
+
# representations. It is uncommon that these are in the same set of
|
|
1389
|
+
# rules, but it happens.
|
|
1390
|
+
is_multi = any(len(v) > 1 for v in mapping.values())
|
|
1391
|
+
is_liga = any(len(k) > 1 for k in mapping.keys())
|
|
1392
|
+
|
|
1393
|
+
has_existing_multi = False
|
|
1394
|
+
has_existing_liga = False
|
|
1395
|
+
|
|
1396
|
+
for k, v in self.mapping.items():
|
|
1397
|
+
if k[0] == self.SUBTABLE_BREAK_:
|
|
1398
|
+
continue
|
|
1399
|
+
if len(k) > 1:
|
|
1400
|
+
has_existing_liga = True
|
|
1401
|
+
if len(v) > 1:
|
|
1402
|
+
has_existing_multi = True
|
|
1403
|
+
|
|
1404
|
+
can_reuse = not (has_existing_multi and is_liga) and not (
|
|
1405
|
+
has_existing_liga and is_multi
|
|
1406
|
+
)
|
|
1407
|
+
return can_reuse
|
|
1408
|
+
|
|
1379
1409
|
def promote_lookup_type(self, is_named_lookup):
|
|
1380
1410
|
# https://github.com/fonttools/fonttools/issues/612
|
|
1381
1411
|
# A multiple substitution may have a single destination, in which case
|
|
Binary file
|
|
Binary file
|
|
@@ -723,9 +723,7 @@ def instantiateCFF2(
|
|
|
723
723
|
minor = varDataCursor[major]
|
|
724
724
|
varDataCursor[major] += 1
|
|
725
725
|
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
defaultValue += round(defaultDeltas[varIdx])
|
|
726
|
+
defaultValue += round(defaultDeltas[major][minor])
|
|
729
727
|
newDefaults.append(defaultValue)
|
|
730
728
|
|
|
731
729
|
varData = varStore.VarData[major]
|
|
@@ -781,7 +779,9 @@ def instantiateCFF2(
|
|
|
781
779
|
storeBlendsToVarStore(value + [count])
|
|
782
780
|
|
|
783
781
|
# Instantiate VarStore
|
|
784
|
-
defaultDeltas = instantiateItemVariationStore(
|
|
782
|
+
defaultDeltas = instantiateItemVariationStore(
|
|
783
|
+
varStore, fvarAxes, axisLimits, hierarchical=True
|
|
784
|
+
)
|
|
785
785
|
|
|
786
786
|
# Read back new charstring blends from the instantiated VarStore
|
|
787
787
|
varDataCursor = [0] * len(varStore.VarData)
|
|
@@ -839,18 +839,13 @@ def instantiateCFF2(
|
|
|
839
839
|
varData.Item = []
|
|
840
840
|
varData.ItemCount = 0
|
|
841
841
|
|
|
842
|
-
#
|
|
843
|
-
usedVsindex = set(
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
vsindex = command[1][0]
|
|
850
|
-
continue
|
|
851
|
-
if any(isinstance(arg, list) for arg in command[1]):
|
|
852
|
-
usedVsindex.add(vsindex)
|
|
853
|
-
else:
|
|
842
|
+
# Collect surviving vsindexes
|
|
843
|
+
usedVsindex = set(
|
|
844
|
+
i for i in range(len(varStore.VarData)) if varStore.VarData[i].VarRegionCount
|
|
845
|
+
)
|
|
846
|
+
# Remove vsindex commands that are no longer needed
|
|
847
|
+
for commands, private in zip(allCommands, allCommandPrivates):
|
|
848
|
+
if not any(isinstance(arg, list) for command in commands for arg in command[1]):
|
|
854
849
|
commands[:] = [command for command in commands if command[0] != "vsindex"]
|
|
855
850
|
|
|
856
851
|
# Remove unused VarData and update vsindex values
|
|
@@ -863,10 +858,14 @@ def instantiateCFF2(
|
|
|
863
858
|
for command in commands:
|
|
864
859
|
if command[0] == "vsindex":
|
|
865
860
|
command[1][0] = vsindexMapping[command[1][0]]
|
|
861
|
+
for private in privateDicts:
|
|
862
|
+
if hasattr(private, "vsindex"):
|
|
863
|
+
private.vsindex = vsindexMapping[private.vsindex]
|
|
866
864
|
|
|
867
865
|
# Remove initial vsindex commands that are implied
|
|
868
|
-
for commands in allCommands:
|
|
869
|
-
|
|
866
|
+
for commands, private in zip(allCommands, allCommandPrivates):
|
|
867
|
+
vsindex = getattr(private, "vsindex", 0)
|
|
868
|
+
if commands and commands[0] == ("vsindex", [vsindex]):
|
|
870
869
|
commands.pop(0)
|
|
871
870
|
|
|
872
871
|
# Ship the charstrings!
|
|
@@ -1247,7 +1246,9 @@ class _TupleVarStoreAdapter(object):
|
|
|
1247
1246
|
return itemVarStore
|
|
1248
1247
|
|
|
1249
1248
|
|
|
1250
|
-
def instantiateItemVariationStore(
|
|
1249
|
+
def instantiateItemVariationStore(
|
|
1250
|
+
itemVarStore, fvarAxes, axisLimits, hierarchical=False
|
|
1251
|
+
):
|
|
1251
1252
|
"""Compute deltas at partial location, and update varStore in-place.
|
|
1252
1253
|
|
|
1253
1254
|
Remove regions in which all axes were instanced, or fall outside the new axis
|
|
@@ -1279,12 +1280,19 @@ def instantiateItemVariationStore(itemVarStore, fvarAxes, axisLimits):
|
|
|
1279
1280
|
assert itemVarStore.VarDataCount == newItemVarStore.VarDataCount
|
|
1280
1281
|
itemVarStore.VarData = newItemVarStore.VarData
|
|
1281
1282
|
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1283
|
+
if not hierarchical:
|
|
1284
|
+
defaultDeltas = {
|
|
1285
|
+
((major << 16) + minor): delta
|
|
1286
|
+
for major, deltas in enumerate(defaultDeltaArray)
|
|
1287
|
+
for minor, delta in enumerate(deltas)
|
|
1288
|
+
}
|
|
1289
|
+
defaultDeltas[itemVarStore.NO_VARIATION_INDEX] = 0
|
|
1290
|
+
else:
|
|
1291
|
+
defaultDeltas = {0xFFFF: {0xFFFF: 0}} # NO_VARIATION_INDEX
|
|
1292
|
+
for major, deltas in enumerate(defaultDeltaArray):
|
|
1293
|
+
defaultDeltasForMajor = defaultDeltas.setdefault(major, {})
|
|
1294
|
+
for minor, delta in enumerate(deltas):
|
|
1295
|
+
defaultDeltasForMajor[minor] = delta
|
|
1288
1296
|
return defaultDeltas
|
|
1289
1297
|
|
|
1290
1298
|
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fonttools
|
|
3
|
-
Version: 4.58.
|
|
3
|
+
Version: 4.58.5
|
|
4
4
|
Summary: Tools to manipulate font files
|
|
5
5
|
Home-page: http://github.com/fonttools/fonttools
|
|
6
6
|
Author: Just van Rossum
|
|
@@ -388,6 +388,18 @@ Have fun!
|
|
|
388
388
|
Changelog
|
|
389
389
|
~~~~~~~~~
|
|
390
390
|
|
|
391
|
+
4.58.5 (released 2025-07-03)
|
|
392
|
+
----------------------------
|
|
393
|
+
|
|
394
|
+
- [feaLib] Don't try to combine ligature & multisub rules (#3874).
|
|
395
|
+
- [feaLib/ast] Use weakref proxies to avoid cycles in visitor (#3873).
|
|
396
|
+
- [varLib.instancer] Fixed instancing CFF2 fonts where VarData contains more than 64k items (#3858).
|
|
397
|
+
|
|
398
|
+
4.58.4 (released 2025-06-13)
|
|
399
|
+
----------------------------
|
|
400
|
+
|
|
401
|
+
- [feaLib] Allow for empty MarkFilter & MarkAttach sets (#3856).
|
|
402
|
+
|
|
391
403
|
4.58.3 (released 2025-06-13)
|
|
392
404
|
----------------------------
|
|
393
405
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
fontTools/__init__.py,sha256=
|
|
1
|
+
fontTools/__init__.py,sha256=CMvLHAX8mH1p7lpibUmfxRpuUumFA3KUNRLvSOB4KYU,191
|
|
2
2
|
fontTools/__main__.py,sha256=T8Tg8xPKHOCVoYVG82p_zpQXfW7_ERRAphBkZVvhWN8,960
|
|
3
3
|
fontTools/afmLib.py,sha256=YbmmjT8Du6qFUhFHwnAhOdvsyfXszODVjSJtd18CCjY,13603
|
|
4
4
|
fontTools/agl.py,sha256=4aKwnbvSVUa39eV5Ka8e5ULwV-IEp4pcfwlMwEH_z3k,118208
|
|
@@ -25,7 +25,7 @@ fontTools/cu2qu/__main__.py,sha256=6Vb8Ler3yqJ5w84UwlMJV6cS01uhV4PN10OlXQ6jlqo,9
|
|
|
25
25
|
fontTools/cu2qu/benchmark.py,sha256=FwdvNjKfWHo18_CX0CO8AY5c68XSBE4M4TJo_EkB4q8,1350
|
|
26
26
|
fontTools/cu2qu/cli.py,sha256=CvWzC5a6XF_v5o0yrS4vGI1JXiVVLzSJahTIqpJmiPk,6274
|
|
27
27
|
fontTools/cu2qu/cu2qu.c,sha256=vGZopOBC5bnIqTGmwPiW107oLG0YSrHSoyq1BFoqppI,644884
|
|
28
|
-
fontTools/cu2qu/cu2qu.cp312-win_amd64.pyd,sha256=
|
|
28
|
+
fontTools/cu2qu/cu2qu.cp312-win_amd64.pyd,sha256=KFdxPYqKxM5b7DXu0Ltu-3x5kIwAjsUb-Fn3OLIDkQs,100864
|
|
29
29
|
fontTools/cu2qu/cu2qu.py,sha256=XH2bnQ5aG9ic921ZWzQzU1-q3MQU6INCjLk4XjRj5_Y,16970
|
|
30
30
|
fontTools/cu2qu/errors.py,sha256=uYyPSs_x-EMJKO2S3cLGWyk_KlHoOoh_XEtdB_oKBp0,2518
|
|
31
31
|
fontTools/cu2qu/ufo.py,sha256=Mpd_7Be9jxNcOKFqkyRp8Oem3CS3R-ZYMMSD03LJL6o,12143
|
|
@@ -40,11 +40,11 @@ fontTools/encodings/__init__.py,sha256=QoK6HlOoqtVqX5gOyv0bJiTXsVBbBRreUifdccWNp
|
|
|
40
40
|
fontTools/encodings/codecs.py,sha256=bSpO6kuPbEIDsXSVHhzftqsm_FFUiXpLVfPSk410SqE,4856
|
|
41
41
|
fontTools/feaLib/__init__.py,sha256=RprjP6BKswq4pt0J-9L1XGuZfjIFAGD6HDly_haMAN4,217
|
|
42
42
|
fontTools/feaLib/__main__.py,sha256=niUAPkiYxeRAJMlJuvVJZism2VFufZrNaQtieA7sNLk,2318
|
|
43
|
-
fontTools/feaLib/ast.py,sha256=
|
|
44
|
-
fontTools/feaLib/builder.py,sha256=
|
|
43
|
+
fontTools/feaLib/ast.py,sha256=q-UvEPZ97AAHpggVOzVHdgfTcE072kuOK08rdAYpCXU,76301
|
|
44
|
+
fontTools/feaLib/builder.py,sha256=9f7v9Vfo0HkC6Pqj-hP4B6xj5GDIoV_XLCeDajmbI2g,74962
|
|
45
45
|
fontTools/feaLib/error.py,sha256=pqi8F2tnH2h7pXVffxwzuBuWaSHMzZsXs5VckdQKQAI,670
|
|
46
46
|
fontTools/feaLib/lexer.c,sha256=PXU52K9r0MSS_E2tiD4R_ac1r-uXCeye8yHgRfcww44,770662
|
|
47
|
-
fontTools/feaLib/lexer.cp312-win_amd64.pyd,sha256=
|
|
47
|
+
fontTools/feaLib/lexer.cp312-win_amd64.pyd,sha256=2lpQV9zx9jUwAnvQ3Qt_VjmE_BWbvOl8o4F1jYrb-C0,118784
|
|
48
48
|
fontTools/feaLib/lexer.py,sha256=7VZ3NPFH7V1mvRbym111BNKvbB4hLfGLTMS0VV_3Ipw,11408
|
|
49
49
|
fontTools/feaLib/location.py,sha256=teHrhjT8zzImcGBEJS1J43oaX9onCPu_pynxS8d-tUg,246
|
|
50
50
|
fontTools/feaLib/lookupDebugInfo.py,sha256=h4Ig8kmEk5WlGf1C9JJAbbOKQK5OwkFLdj8CT7fOkmU,316
|
|
@@ -62,7 +62,7 @@ fontTools/merge/util.py,sha256=3alo4b7mhFNC6h8PjeqNU99dS7EuO8sdZkZpvRsEE6E,3521
|
|
|
62
62
|
fontTools/misc/__init__.py,sha256=QoK6HlOoqtVqX5gOyv0bJiTXsVBbBRreUifdccWNp2k,76
|
|
63
63
|
fontTools/misc/arrayTools.py,sha256=baENNALPvYRUhS4rdx_F3ltOmVIf1PV9G2EaMt7gAHM,11907
|
|
64
64
|
fontTools/misc/bezierTools.c,sha256=R4i5TUxLgiDFCwkoBZUpdBhGzRp5AI4GYDW497S1f54,1860910
|
|
65
|
-
fontTools/misc/bezierTools.cp312-win_amd64.pyd,sha256=
|
|
65
|
+
fontTools/misc/bezierTools.cp312-win_amd64.pyd,sha256=6pWAwnD-VEaitnYsC6xOCxWmGUITJBq7XbvU1SUqQe8,337408
|
|
66
66
|
fontTools/misc/bezierTools.py,sha256=m4j14ckKYtrKy8NhFFFY_Uv3kuL8g-SWNdEKUzqGjRQ,46535
|
|
67
67
|
fontTools/misc/classifyTools.py,sha256=wLTjOhLiZaLiwwUTj2Ad5eZ5T_38W0Eo_uzRGWHWYvE,5783
|
|
68
68
|
fontTools/misc/cliTools.py,sha256=7zKOXczaCKRMW6Yv5jdCZYHco8y0-lfimhIWzQ2IL8A,1915
|
|
@@ -93,7 +93,7 @@ fontTools/misc/timeTools.py,sha256=lmncKUKvxQKO4Kqx2k7UNFkYYpj2n5CwR1lPiLZv3tA,2
|
|
|
93
93
|
fontTools/misc/transform.py,sha256=pCR0tbKzmhH6crB_rDT5hnAWySztW_XqL0efmKOVsCU,16314
|
|
94
94
|
fontTools/misc/treeTools.py,sha256=IMopMUcuhelvz8gNra50Zc1w8DSlWywnL6DFaz1ijQs,1314
|
|
95
95
|
fontTools/misc/vector.py,sha256=yaNixq5pXXpPCD_wRP-LsXYSLr4WPX_y92Po05FeLU0,4209
|
|
96
|
-
fontTools/misc/visitor.py,sha256=
|
|
96
|
+
fontTools/misc/visitor.py,sha256=30EPyUKvNsYU81uiYKjp_9gFj2KSqF8W2y_ldyIBJYQ,5760
|
|
97
97
|
fontTools/misc/xmlReader.py,sha256=gqYg3qlDkrKsO55DPaJ-dU0i5rltqZgnKlrXmR2Z7dQ,6768
|
|
98
98
|
fontTools/misc/xmlWriter.py,sha256=3gHeiyhbXDqDK-jn44f4znND3nEPWnk2Bdlm2Y8JZYo,6250
|
|
99
99
|
fontTools/misc/plistlib/__init__.py,sha256=doPqlGry1mRywSup0ahnwuT7mNeClhYQ82y7kd86hWQ,21794
|
|
@@ -101,7 +101,7 @@ fontTools/misc/plistlib/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
|
|
|
101
101
|
fontTools/mtiLib/__init__.py,sha256=izRpPCoQfLoDjrlgKqP6gAE6JF9LU73aqH2_qi0NpaM,48002
|
|
102
102
|
fontTools/mtiLib/__main__.py,sha256=MnVcMQ1TxmYged20wKcjrpZDIvetmkzfRVKHCb5dsUc,99
|
|
103
103
|
fontTools/otlLib/__init__.py,sha256=WhTONAtlItZxWAkHNit_EBW19pP32TFZSqIJ_GG6Peg,46
|
|
104
|
-
fontTools/otlLib/builder.py,sha256=
|
|
104
|
+
fontTools/otlLib/builder.py,sha256=YTmrntgVrFbeSkAv44AZqBdIUBUUPyKcKPHj_kkh_pc,132192
|
|
105
105
|
fontTools/otlLib/error.py,sha256=0OQ2AuxKNEqvoHIkgouf47LDGDEmPUlhdZIW5DROL8k,346
|
|
106
106
|
fontTools/otlLib/maxContextCalc.py,sha256=sVU7LLwkjhV16ADcpjbUwCt5PZbWWdc8_yZo9Lv7HaI,3271
|
|
107
107
|
fontTools/otlLib/optimize/__init__.py,sha256=NKqA7fqHyzjkmuBL_ZVpc3u9OMbWxbKDtymC8CnVGNY,1583
|
|
@@ -119,7 +119,7 @@ fontTools/pens/filterPen.py,sha256=tWhgklyaCTUt7oQRTBbFUcOlc702V0NfadCH3X93CYg,8
|
|
|
119
119
|
fontTools/pens/freetypePen.py,sha256=NqNzXrOTDckoH4N6WLnj-KuxGcg6z7DlqSCfmpq8qAE,20370
|
|
120
120
|
fontTools/pens/hashPointPen.py,sha256=ZAU87uw5ge3Kb4i9kRV28a5VFeZ_TWSsJabyAzwAHrU,3662
|
|
121
121
|
fontTools/pens/momentsPen.c,sha256=JgH7cc_5ZKbJJUq0iiwppphdXhD4XL33KsNAIsBejx8,578346
|
|
122
|
-
fontTools/pens/momentsPen.cp312-win_amd64.pyd,sha256=
|
|
122
|
+
fontTools/pens/momentsPen.cp312-win_amd64.pyd,sha256=SMk5ssJCT-ebHhcyAyJ46sLWaJhPYmojGoJ0_KTDajo,90624
|
|
123
123
|
fontTools/pens/momentsPen.py,sha256=Z-V5CjQBSj3qPxg3C_DBFKExqno89nOe3jWwHT9_xsM,26537
|
|
124
124
|
fontTools/pens/perimeterPen.py,sha256=Zy5F8QzaNJAkkQQSb2QJCp-wZTvDAjBn-B099t2ABds,2222
|
|
125
125
|
fontTools/pens/pointInsidePen.py,sha256=Hy48iR5NWV3x_wWoos-UC7GMtwvvUhd_q_ykiwaWdzQ,6547
|
|
@@ -143,7 +143,7 @@ fontTools/qu2cu/__main__.py,sha256=leKpToUNNyHf0nobr1I19vus2ziA1pO7rRKkreat-Xw,1
|
|
|
143
143
|
fontTools/qu2cu/benchmark.py,sha256=PFxx2Bfu7-KuNrzdOIBXHPZvyNphqqcTVy4CneaCo3M,1456
|
|
144
144
|
fontTools/qu2cu/cli.py,sha256=1QLBTSZW7e_VATJN9vjszRxIk_-Xjxu1KP53yX4T7q8,3839
|
|
145
145
|
fontTools/qu2cu/qu2cu.c,sha256=mPAVbeH6SgLkKCnPhergCFE2-evs0Z8E1WlvBhDxo5E,706100
|
|
146
|
-
fontTools/qu2cu/qu2cu.cp312-win_amd64.pyd,sha256=
|
|
146
|
+
fontTools/qu2cu/qu2cu.cp312-win_amd64.pyd,sha256=IPb2Rmp5fY79OvuuVyc-Jf250CVWL3_NUjKbmyIsGp0,107008
|
|
147
147
|
fontTools/qu2cu/qu2cu.py,sha256=dtp5Zqhcs_NePwA2U5fgG2LtWleRwmBilTurau8sLL0,12693
|
|
148
148
|
fontTools/subset/__init__.py,sha256=UUOidAx7b_LNNsRnEizxG8tPF5JX5-4fooerwyTWFvU,141588
|
|
149
149
|
fontTools/subset/__main__.py,sha256=cEIC52EtGOJvFDfHXzi0M2EAYmyHAcI-ZZ0lb2y4r7s,101
|
|
@@ -302,7 +302,7 @@ fontTools/varLib/interpolatableTestContourOrder.py,sha256=Pbt0jW0LoVggIwrtADZ7HW
|
|
|
302
302
|
fontTools/varLib/interpolatableTestStartingPoint.py,sha256=f5MJ3mj8MctJCvDJwqmW1fIVOgovUMYAOela9HweaRU,4403
|
|
303
303
|
fontTools/varLib/interpolate_layout.py,sha256=tTPUes_K7MwooUO_wac9AeFEVgL1uGSz4ITYiOizaME,3813
|
|
304
304
|
fontTools/varLib/iup.c,sha256=Eld9QWThV5wgZlhHNvj15DILGRPArLAkU2071G1fSEY,846546
|
|
305
|
-
fontTools/varLib/iup.cp312-win_amd64.pyd,sha256=
|
|
305
|
+
fontTools/varLib/iup.cp312-win_amd64.pyd,sha256=8ddX5VwWmZ5DwUwQc9Zlcu7mHMrlBGoP6F48omYdeqs,131584
|
|
306
306
|
fontTools/varLib/iup.py,sha256=O_xPJOBECrNDbQqCC3e5xf9KsWXUd1i3BAp9Fl6Hv2Y,15474
|
|
307
307
|
fontTools/varLib/merger.py,sha256=V-B17poOYbbrRsfUYJbdqt46GtRfG833MKwtv9NOB3Q,62519
|
|
308
308
|
fontTools/varLib/models.py,sha256=ZqQb1Lapj5dCO8dwa3UTx1LsIpF0-GiDte32t_TMJJQ,23040
|
|
@@ -312,7 +312,7 @@ fontTools/varLib/mvar.py,sha256=Gf3q54ICH-E9oAwKYeIKUPLZabfjY0bUT4t220zLzYI,2489
|
|
|
312
312
|
fontTools/varLib/plot.py,sha256=BtozrcnKoEyCs0rGy7PZmrUvUNTmZT-5_sylW5PuJ28,7732
|
|
313
313
|
fontTools/varLib/stat.py,sha256=ScaVFIVpXTqA-F07umv_66GoxtcjaZ54MPLFvFK4s68,4960
|
|
314
314
|
fontTools/varLib/varStore.py,sha256=GWz-B1YcR-JnIh2aDmeQg621GDEBj9M4pKYcbZraA3w,24808
|
|
315
|
-
fontTools/varLib/instancer/__init__.py,sha256=
|
|
315
|
+
fontTools/varLib/instancer/__init__.py,sha256=Dp4bxw_aOCdpECbQ4QPj8PujUzzpZAxQso4huWUx2J4,74220
|
|
316
316
|
fontTools/varLib/instancer/__main__.py,sha256=YN_tyJDdmLlH3umiLDS2ue0Zc3fSFexa9wCuk3Wuod0,109
|
|
317
317
|
fontTools/varLib/instancer/featureVars.py,sha256=b3qtGCYVZ9fqkqcgFQUikYQBX_3_x0YgdrvvxIALbuU,7300
|
|
318
318
|
fontTools/varLib/instancer/names.py,sha256=vmHi7JZlh-N4amxKdaTJ-5DN9mDJ8Wnh_s9W1gJAQ4Y,15338
|
|
@@ -324,11 +324,11 @@ fontTools/voltLib/error.py,sha256=3TsaZBA82acFd2j5Beq3WUQTURTKM0zxOnUFGZovSNA,40
|
|
|
324
324
|
fontTools/voltLib/lexer.py,sha256=v9V4zdBO2VqVJG__IWrL8fv_CRURmh2eD_1UpbIJn9g,3467
|
|
325
325
|
fontTools/voltLib/parser.py,sha256=HS72gxtFzvcPSwEbUYj3E41CPK7ZqK9mSe0nLRxn-IY,26060
|
|
326
326
|
fontTools/voltLib/voltToFea.py,sha256=nS-OSlx_a-TngGICFNKyFxMhjqkV3OQLcvyzw4sQFyk,37460
|
|
327
|
-
fonttools-4.58.
|
|
328
|
-
fonttools-4.58.
|
|
329
|
-
fonttools-4.58.
|
|
330
|
-
fonttools-4.58.
|
|
331
|
-
fonttools-4.58.
|
|
332
|
-
fonttools-4.58.
|
|
333
|
-
fonttools-4.58.
|
|
334
|
-
fonttools-4.58.
|
|
327
|
+
fonttools-4.58.5.data/data/share/man/man1/ttx.1,sha256=E71F9mRNWlttVpzlnP7w_fqkQygPkph5s-AtVa0Js50,5601
|
|
328
|
+
fonttools-4.58.5.dist-info/licenses/LICENSE,sha256=Ir74Bpfs-qF_l-YrmibfoSggvgVYPo3RKtFpskEnTJk,1093
|
|
329
|
+
fonttools-4.58.5.dist-info/licenses/LICENSE.external,sha256=p5eWRJLxSGv9_M1uYYVeOjFkXzYCPqXeeF2jfqwvy04,19046
|
|
330
|
+
fonttools-4.58.5.dist-info/METADATA,sha256=btf65Ggqrp-gkUSzPHqVQAstBMwthSS-fKTo3hZuPpk,109046
|
|
331
|
+
fonttools-4.58.5.dist-info/WHEEL,sha256=8UP9x9puWI0P1V_d7K2oMTBqfeLNm21CTzZ_Ptr0NXU,101
|
|
332
|
+
fonttools-4.58.5.dist-info/entry_points.txt,sha256=8kVHddxfFWA44FSD4mBpmC-4uCynQnkoz_9aNJb227Y,147
|
|
333
|
+
fonttools-4.58.5.dist-info/top_level.txt,sha256=rRgRylrXzekqWOsrhygzib12pQ7WILf7UGjqEwkIFDM,10
|
|
334
|
+
fonttools-4.58.5.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|