fonttools 4.58.1__cp39-cp39-win_amd64.whl → 4.58.3__cp39-cp39-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.cp39-win_amd64.pyd +0 -0
- fontTools/feaLib/ast.py +2 -2
- fontTools/feaLib/lexer.cp39-win_amd64.pyd +0 -0
- fontTools/misc/bezierTools.cp39-win_amd64.pyd +0 -0
- fontTools/pens/momentsPen.cp39-win_amd64.pyd +0 -0
- fontTools/qu2cu/qu2cu.cp39-win_amd64.pyd +0 -0
- fontTools/subset/__init__.py +81 -1
- fontTools/ttLib/reorderGlyphs.py +8 -7
- fontTools/varLib/iup.cp39-win_amd64.pyd +0 -0
- {fonttools-4.58.1.dist-info → fonttools-4.58.3.dist-info}/METADATA +12 -1
- {fonttools-4.58.1.dist-info → fonttools-4.58.3.dist-info}/RECORD +18 -18
- {fonttools-4.58.1.data → fonttools-4.58.3.data}/data/share/man/man1/ttx.1 +0 -0
- {fonttools-4.58.1.dist-info → fonttools-4.58.3.dist-info}/WHEEL +0 -0
- {fonttools-4.58.1.dist-info → fonttools-4.58.3.dist-info}/entry_points.txt +0 -0
- {fonttools-4.58.1.dist-info → fonttools-4.58.3.dist-info}/licenses/LICENSE +0 -0
- {fonttools-4.58.1.dist-info → fonttools-4.58.3.dist-info}/licenses/LICENSE.external +0 -0
- {fonttools-4.58.1.dist-info → fonttools-4.58.3.dist-info}/top_level.txt +0 -0
fontTools/__init__.py
CHANGED
|
Binary file
|
fontTools/feaLib/ast.py
CHANGED
|
@@ -719,7 +719,7 @@ class ChainContextPosStatement(Statement):
|
|
|
719
719
|
for i, lookup in enumerate(lookups):
|
|
720
720
|
if lookup:
|
|
721
721
|
try:
|
|
722
|
-
(
|
|
722
|
+
iter(lookup)
|
|
723
723
|
except TypeError:
|
|
724
724
|
self.lookups[i] = [lookup]
|
|
725
725
|
|
|
@@ -777,7 +777,7 @@ class ChainContextSubstStatement(Statement):
|
|
|
777
777
|
for i, lookup in enumerate(lookups):
|
|
778
778
|
if lookup:
|
|
779
779
|
try:
|
|
780
|
-
(
|
|
780
|
+
iter(lookup)
|
|
781
781
|
except TypeError:
|
|
782
782
|
self.lookups[i] = [lookup]
|
|
783
783
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
fontTools/subset/__init__.py
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
#
|
|
3
3
|
# Google Author(s): Behdad Esfahbod
|
|
4
4
|
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
5
7
|
from fontTools import config
|
|
6
8
|
from fontTools.misc.roundTools import otRound
|
|
7
9
|
from fontTools import ttLib
|
|
@@ -15,7 +17,7 @@ from fontTools.subset.util import _add_method, _uniq_sort
|
|
|
15
17
|
from fontTools.subset.cff import *
|
|
16
18
|
from fontTools.subset.svg import *
|
|
17
19
|
from fontTools.varLib import varStore, multiVarStore # For monkey-patching
|
|
18
|
-
from fontTools.ttLib.tables._n_a_m_e import NameRecordVisitor
|
|
20
|
+
from fontTools.ttLib.tables._n_a_m_e import NameRecordVisitor, makeName
|
|
19
21
|
from fontTools.unicodedata import mirrored
|
|
20
22
|
import sys
|
|
21
23
|
import struct
|
|
@@ -3004,6 +3006,9 @@ def prune_pre_subset(self, font, options):
|
|
|
3004
3006
|
return True
|
|
3005
3007
|
|
|
3006
3008
|
|
|
3009
|
+
NAME_IDS_TO_OBFUSCATE = {1, 2, 3, 4, 6, 16, 17, 18}
|
|
3010
|
+
|
|
3011
|
+
|
|
3007
3012
|
@_add_method(ttLib.getTableClass("name"))
|
|
3008
3013
|
def prune_post_subset(self, font, options):
|
|
3009
3014
|
visitor = NameRecordVisitor()
|
|
@@ -3022,6 +3027,11 @@ def prune_post_subset(self, font, options):
|
|
|
3022
3027
|
self.names = [n for n in self.names if n.langID in options.name_languages]
|
|
3023
3028
|
if options.obfuscate_names:
|
|
3024
3029
|
namerecs = []
|
|
3030
|
+
# Preserve names to be scrambled or dropped elsewhere so that other
|
|
3031
|
+
# parts of the font don't break.
|
|
3032
|
+
needRemapping = visitor.seen.intersection(NAME_IDS_TO_OBFUSCATE)
|
|
3033
|
+
if needRemapping:
|
|
3034
|
+
_remap_select_name_ids(font, needRemapping)
|
|
3025
3035
|
for n in self.names:
|
|
3026
3036
|
if n.nameID in [1, 4]:
|
|
3027
3037
|
n.string = ".\x7f".encode("utf_16_be") if n.isUnicode() else ".\x7f"
|
|
@@ -3036,6 +3046,76 @@ def prune_post_subset(self, font, options):
|
|
|
3036
3046
|
return True # Required table
|
|
3037
3047
|
|
|
3038
3048
|
|
|
3049
|
+
def _remap_select_name_ids(font: ttLib.TTFont, needRemapping: set[int]) -> None:
|
|
3050
|
+
"""Remap a set of IDs so that the originals can be safely scrambled or
|
|
3051
|
+
dropped.
|
|
3052
|
+
|
|
3053
|
+
For each name record whose name id is in the `needRemapping` set, make a copy
|
|
3054
|
+
and allocate a new unused name id in the font-specific range (> 255).
|
|
3055
|
+
|
|
3056
|
+
Finally update references to these in the `fvar` and `STAT` tables.
|
|
3057
|
+
"""
|
|
3058
|
+
|
|
3059
|
+
if "fvar" not in font and "STAT" not in font:
|
|
3060
|
+
return
|
|
3061
|
+
|
|
3062
|
+
name = font["name"]
|
|
3063
|
+
|
|
3064
|
+
# 1. Assign new IDs for names to be preserved.
|
|
3065
|
+
existingIds = {record.nameID for record in name.names}
|
|
3066
|
+
remapping = {}
|
|
3067
|
+
nextId = name._findUnusedNameID() - 1 # Should skip gaps in name IDs.
|
|
3068
|
+
for nameId in needRemapping:
|
|
3069
|
+
nextId += 1 # We should have complete freedom until 32767.
|
|
3070
|
+
assert nextId not in existingIds, "_findUnusedNameID did not skip gaps"
|
|
3071
|
+
if nextId > 32767:
|
|
3072
|
+
raise ValueError("Ran out of name IDs while trying to remap existing ones.")
|
|
3073
|
+
remapping[nameId] = nextId
|
|
3074
|
+
|
|
3075
|
+
# 2. Copy records to use the new ID. We can't rewrite them in place, because
|
|
3076
|
+
# that could make IDs 1 to 6 "disappear" from code that follows. Some
|
|
3077
|
+
# tools that produce EOT fonts expect them to exist, even when they're
|
|
3078
|
+
# scrambled. See https://github.com/fonttools/fonttools/issues/165.
|
|
3079
|
+
copiedRecords = []
|
|
3080
|
+
for record in name.names:
|
|
3081
|
+
if record.nameID not in needRemapping:
|
|
3082
|
+
continue
|
|
3083
|
+
recordCopy = makeName(
|
|
3084
|
+
record.string,
|
|
3085
|
+
remapping[record.nameID],
|
|
3086
|
+
record.platformID,
|
|
3087
|
+
record.platEncID,
|
|
3088
|
+
record.langID,
|
|
3089
|
+
)
|
|
3090
|
+
copiedRecords.append(recordCopy)
|
|
3091
|
+
name.names.extend(copiedRecords)
|
|
3092
|
+
|
|
3093
|
+
# 3. Rewrite the corresponding IDs in other tables. For now, care only about
|
|
3094
|
+
# STAT and fvar. If more tables need to be changed, consider adapting
|
|
3095
|
+
# NameRecordVisitor to rewrite IDs wherever it finds them.
|
|
3096
|
+
fvar = font.get("fvar")
|
|
3097
|
+
if fvar is not None:
|
|
3098
|
+
for axis in fvar.axes:
|
|
3099
|
+
axis.axisNameID = remapping.get(axis.axisNameID, axis.axisNameID)
|
|
3100
|
+
for instance in fvar.instances:
|
|
3101
|
+
nameID = instance.subfamilyNameID
|
|
3102
|
+
instance.subfamilyNameID = remapping.get(nameID, nameID)
|
|
3103
|
+
nameID = instance.postscriptNameID
|
|
3104
|
+
instance.postscriptNameID = remapping.get(nameID, nameID)
|
|
3105
|
+
|
|
3106
|
+
stat = font.get("STAT")
|
|
3107
|
+
if stat is None:
|
|
3108
|
+
return
|
|
3109
|
+
elidedNameID = stat.table.ElidedFallbackNameID
|
|
3110
|
+
stat.table.ElidedFallbackNameID = remapping.get(elidedNameID, elidedNameID)
|
|
3111
|
+
if stat.table.DesignAxisRecord:
|
|
3112
|
+
for axis in stat.table.DesignAxisRecord.Axis:
|
|
3113
|
+
axis.AxisNameID = remapping.get(axis.AxisNameID, axis.AxisNameID)
|
|
3114
|
+
if stat.table.AxisValueArray:
|
|
3115
|
+
for value in stat.table.AxisValueArray.AxisValue:
|
|
3116
|
+
value.ValueNameID = remapping.get(value.ValueNameID, value.ValueNameID)
|
|
3117
|
+
|
|
3118
|
+
|
|
3039
3119
|
@_add_method(ttLib.getTableClass("head"))
|
|
3040
3120
|
def prune_post_subset(self, font, options):
|
|
3041
3121
|
# Force re-compiling head table, to update any recalculated values.
|
fontTools/ttLib/reorderGlyphs.py
CHANGED
|
@@ -275,10 +275,11 @@ def reorderGlyphs(font: ttLib.TTFont, new_glyph_order: List[str]):
|
|
|
275
275
|
for reorder in _REORDER_RULES.get(reorder_key, []):
|
|
276
276
|
reorder.apply(font, value)
|
|
277
277
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
278
|
+
for tag in ["CFF ", "CFF2"]:
|
|
279
|
+
if tag in font:
|
|
280
|
+
cff_table = font[tag]
|
|
281
|
+
charstrings = cff_table.cff.topDictIndex[0].CharStrings.charStrings
|
|
282
|
+
cff_table.cff.topDictIndex[0].charset = new_glyph_order
|
|
283
|
+
cff_table.cff.topDictIndex[0].CharStrings.charStrings = {
|
|
284
|
+
k: charstrings.get(k) for k in new_glyph_order
|
|
285
|
+
}
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fonttools
|
|
3
|
-
Version: 4.58.
|
|
3
|
+
Version: 4.58.3
|
|
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,17 @@ Have fun!
|
|
|
388
388
|
Changelog
|
|
389
389
|
~~~~~~~~~
|
|
390
390
|
|
|
391
|
+
4.58.3 (released 2025-06-13)
|
|
392
|
+
----------------------------
|
|
393
|
+
|
|
394
|
+
- [feaLib] Fixed iterable check for Python 3.13.4 and newer (#3854, #3855).
|
|
395
|
+
|
|
396
|
+
4.58.2 (released 2025-06-06)
|
|
397
|
+
----------------------------
|
|
398
|
+
|
|
399
|
+
- [ttLib.reorderGlyphs] Handle CFF2 when reordering glyphs (#3852)
|
|
400
|
+
- [subset] Copy name IDs in use before scrapping or scrambling them for webfonts (#3853)
|
|
401
|
+
|
|
391
402
|
4.58.1 (released 2025-05-28)
|
|
392
403
|
----------------------------
|
|
393
404
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
fontTools/__init__.py,sha256=
|
|
1
|
+
fontTools/__init__.py,sha256=15whx9IXkutLVZCICM6AMqLSXzr2yczrtjGq8Wwd4Ds,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
|
|
@@ -24,7 +24,7 @@ fontTools/cu2qu/__init__.py,sha256=OoM_nBJAleZal6kxeNJn1ESy1pNm5c3DG417yVIE0-Q,6
|
|
|
24
24
|
fontTools/cu2qu/__main__.py,sha256=6Vb8Ler3yqJ5w84UwlMJV6cS01uhV4PN10OlXQ6jlqo,98
|
|
25
25
|
fontTools/cu2qu/benchmark.py,sha256=FwdvNjKfWHo18_CX0CO8AY5c68XSBE4M4TJo_EkB4q8,1350
|
|
26
26
|
fontTools/cu2qu/cli.py,sha256=CvWzC5a6XF_v5o0yrS4vGI1JXiVVLzSJahTIqpJmiPk,6274
|
|
27
|
-
fontTools/cu2qu/cu2qu.cp39-win_amd64.pyd,sha256=
|
|
27
|
+
fontTools/cu2qu/cu2qu.cp39-win_amd64.pyd,sha256=LqBteRUBaMUmGoVhQUfIVhxI8-Sc5hFdeyRO8WGOExk,99840
|
|
28
28
|
fontTools/cu2qu/cu2qu.py,sha256=XH2bnQ5aG9ic921ZWzQzU1-q3MQU6INCjLk4XjRj5_Y,16970
|
|
29
29
|
fontTools/cu2qu/errors.py,sha256=uYyPSs_x-EMJKO2S3cLGWyk_KlHoOoh_XEtdB_oKBp0,2518
|
|
30
30
|
fontTools/cu2qu/ufo.py,sha256=Mpd_7Be9jxNcOKFqkyRp8Oem3CS3R-ZYMMSD03LJL6o,12143
|
|
@@ -39,10 +39,10 @@ fontTools/encodings/__init__.py,sha256=QoK6HlOoqtVqX5gOyv0bJiTXsVBbBRreUifdccWNp
|
|
|
39
39
|
fontTools/encodings/codecs.py,sha256=bSpO6kuPbEIDsXSVHhzftqsm_FFUiXpLVfPSk410SqE,4856
|
|
40
40
|
fontTools/feaLib/__init__.py,sha256=RprjP6BKswq4pt0J-9L1XGuZfjIFAGD6HDly_haMAN4,217
|
|
41
41
|
fontTools/feaLib/__main__.py,sha256=niUAPkiYxeRAJMlJuvVJZism2VFufZrNaQtieA7sNLk,2318
|
|
42
|
-
fontTools/feaLib/ast.py,sha256=
|
|
42
|
+
fontTools/feaLib/ast.py,sha256=jyQ-s8Ge0lofy9iFRC45T_heW5TET--qoPtNst1Au9Q,76270
|
|
43
43
|
fontTools/feaLib/builder.py,sha256=6ubKf1ZF6xj6o2_P19NS85y9JOlS82I4UksdswMO5fk,74848
|
|
44
44
|
fontTools/feaLib/error.py,sha256=pqi8F2tnH2h7pXVffxwzuBuWaSHMzZsXs5VckdQKQAI,670
|
|
45
|
-
fontTools/feaLib/lexer.cp39-win_amd64.pyd,sha256
|
|
45
|
+
fontTools/feaLib/lexer.cp39-win_amd64.pyd,sha256=-UF5xXmAJbFwP5kTRdc41tfKBaZ1iPHjqfzm7jTqgh0,121344
|
|
46
46
|
fontTools/feaLib/lexer.py,sha256=7VZ3NPFH7V1mvRbym111BNKvbB4hLfGLTMS0VV_3Ipw,11408
|
|
47
47
|
fontTools/feaLib/location.py,sha256=teHrhjT8zzImcGBEJS1J43oaX9onCPu_pynxS8d-tUg,246
|
|
48
48
|
fontTools/feaLib/lookupDebugInfo.py,sha256=h4Ig8kmEk5WlGf1C9JJAbbOKQK5OwkFLdj8CT7fOkmU,316
|
|
@@ -59,7 +59,7 @@ fontTools/merge/unicode.py,sha256=mgqRFhRugda62Xt0r28SduaN7YBzRfHxrpNprjLqoX8,43
|
|
|
59
59
|
fontTools/merge/util.py,sha256=3alo4b7mhFNC6h8PjeqNU99dS7EuO8sdZkZpvRsEE6E,3521
|
|
60
60
|
fontTools/misc/__init__.py,sha256=QoK6HlOoqtVqX5gOyv0bJiTXsVBbBRreUifdccWNp2k,76
|
|
61
61
|
fontTools/misc/arrayTools.py,sha256=baENNALPvYRUhS4rdx_F3ltOmVIf1PV9G2EaMt7gAHM,11907
|
|
62
|
-
fontTools/misc/bezierTools.cp39-win_amd64.pyd,sha256=
|
|
62
|
+
fontTools/misc/bezierTools.cp39-win_amd64.pyd,sha256=O9h7dOF20a3Lci4Jq_MnB_98kjcXbHOjT78ZQ4ua3qQ,346112
|
|
63
63
|
fontTools/misc/bezierTools.py,sha256=m4j14ckKYtrKy8NhFFFY_Uv3kuL8g-SWNdEKUzqGjRQ,46535
|
|
64
64
|
fontTools/misc/classifyTools.py,sha256=wLTjOhLiZaLiwwUTj2Ad5eZ5T_38W0Eo_uzRGWHWYvE,5783
|
|
65
65
|
fontTools/misc/cliTools.py,sha256=7zKOXczaCKRMW6Yv5jdCZYHco8y0-lfimhIWzQ2IL8A,1915
|
|
@@ -115,7 +115,7 @@ fontTools/pens/explicitClosingLinePen.py,sha256=knCXcjSl2iPy6mLCDnsdDYx6J5rV7FH4
|
|
|
115
115
|
fontTools/pens/filterPen.py,sha256=tWhgklyaCTUt7oQRTBbFUcOlc702V0NfadCH3X93CYg,8031
|
|
116
116
|
fontTools/pens/freetypePen.py,sha256=NqNzXrOTDckoH4N6WLnj-KuxGcg6z7DlqSCfmpq8qAE,20370
|
|
117
117
|
fontTools/pens/hashPointPen.py,sha256=ZAU87uw5ge3Kb4i9kRV28a5VFeZ_TWSsJabyAzwAHrU,3662
|
|
118
|
-
fontTools/pens/momentsPen.cp39-win_amd64.pyd,sha256=
|
|
118
|
+
fontTools/pens/momentsPen.cp39-win_amd64.pyd,sha256=6wAG0wSAd7anOa0PCZSY3LLDy3YpsMrCV9aiOVxoy1Y,89088
|
|
119
119
|
fontTools/pens/momentsPen.py,sha256=Z-V5CjQBSj3qPxg3C_DBFKExqno89nOe3jWwHT9_xsM,26537
|
|
120
120
|
fontTools/pens/perimeterPen.py,sha256=Zy5F8QzaNJAkkQQSb2QJCp-wZTvDAjBn-B099t2ABds,2222
|
|
121
121
|
fontTools/pens/pointInsidePen.py,sha256=Hy48iR5NWV3x_wWoos-UC7GMtwvvUhd_q_ykiwaWdzQ,6547
|
|
@@ -138,9 +138,9 @@ fontTools/qu2cu/__init__.py,sha256=MpdE0XsHSDo9M3hyHLkPPLxB3FKr3aiT0dPW5qHCuSo,6
|
|
|
138
138
|
fontTools/qu2cu/__main__.py,sha256=leKpToUNNyHf0nobr1I19vus2ziA1pO7rRKkreat-Xw,100
|
|
139
139
|
fontTools/qu2cu/benchmark.py,sha256=PFxx2Bfu7-KuNrzdOIBXHPZvyNphqqcTVy4CneaCo3M,1456
|
|
140
140
|
fontTools/qu2cu/cli.py,sha256=1QLBTSZW7e_VATJN9vjszRxIk_-Xjxu1KP53yX4T7q8,3839
|
|
141
|
-
fontTools/qu2cu/qu2cu.cp39-win_amd64.pyd,sha256=
|
|
141
|
+
fontTools/qu2cu/qu2cu.cp39-win_amd64.pyd,sha256=2fEhG9RWAASW2P9hZo1hmHPyKLM0aRy8sF8QSUxeh0k,107008
|
|
142
142
|
fontTools/qu2cu/qu2cu.py,sha256=dtp5Zqhcs_NePwA2U5fgG2LtWleRwmBilTurau8sLL0,12693
|
|
143
|
-
fontTools/subset/__init__.py,sha256=
|
|
143
|
+
fontTools/subset/__init__.py,sha256=UUOidAx7b_LNNsRnEizxG8tPF5JX5-4fooerwyTWFvU,141588
|
|
144
144
|
fontTools/subset/__main__.py,sha256=cEIC52EtGOJvFDfHXzi0M2EAYmyHAcI-ZZ0lb2y4r7s,101
|
|
145
145
|
fontTools/subset/cff.py,sha256=GSmxdsokxuFKvJJQVcAIOhd5hYQq8KkzxnXE_dgm8yo,6329
|
|
146
146
|
fontTools/subset/svg.py,sha256=y_yTZuAm3bjcoEOFu5likXoHuG5u1oNiv0mOni2Z9fQ,9637
|
|
@@ -155,7 +155,7 @@ fontTools/ttLib/__init__.py,sha256=2dJ9-KzN_5AwttwMEhmusrxR2IdFTZ73hJiPjeVwuwU,6
|
|
|
155
155
|
fontTools/ttLib/__main__.py,sha256=gSaKy1O2Hws3_1xGHGdLL-lEUVxw9q8ymNx9YlwIFXs,4881
|
|
156
156
|
fontTools/ttLib/macUtils.py,sha256=B5UhZU8gQerJMXEG9-BGZsuv3aewFRAGQ5HCuZMzMkQ,1791
|
|
157
157
|
fontTools/ttLib/removeOverlaps.py,sha256=PTxICjLx89JxKfboLruoV_OwuwCIxcJ4feNcCCkrsTQ,13005
|
|
158
|
-
fontTools/ttLib/reorderGlyphs.py,sha256=
|
|
158
|
+
fontTools/ttLib/reorderGlyphs.py,sha256=PAHvoh4yN3u-_aDACH8H1ResVMCmVE7Kp5_mIKAG0TI,10656
|
|
159
159
|
fontTools/ttLib/scaleUpem.py,sha256=Qz-kS48q7a5GibgnPoUglyVk_qIVkYp5KZ-r1aMx_7Q,15054
|
|
160
160
|
fontTools/ttLib/sfnt.py,sha256=7X9xujgV0Za4nOEfUD3mSrrRb-f9NuzEqgJ-IFLNVQU,23494
|
|
161
161
|
fontTools/ttLib/standardGlyphOrder.py,sha256=VG-8hW1VgQIro7cDJusSXThILIr4pQgmU37t85SQ65Y,6056
|
|
@@ -296,7 +296,7 @@ fontTools/varLib/interpolatablePlot.py,sha256=tUKFd8H9B2eD_GE6jV13J-dZkkIeLmk3oj
|
|
|
296
296
|
fontTools/varLib/interpolatableTestContourOrder.py,sha256=Pbt0jW0LoVggIwrtADZ7HWK6Ftdoo1bjuWz0ost0HD0,3103
|
|
297
297
|
fontTools/varLib/interpolatableTestStartingPoint.py,sha256=f5MJ3mj8MctJCvDJwqmW1fIVOgovUMYAOela9HweaRU,4403
|
|
298
298
|
fontTools/varLib/interpolate_layout.py,sha256=tTPUes_K7MwooUO_wac9AeFEVgL1uGSz4ITYiOizaME,3813
|
|
299
|
-
fontTools/varLib/iup.cp39-win_amd64.pyd,sha256=
|
|
299
|
+
fontTools/varLib/iup.cp39-win_amd64.pyd,sha256=o1WTksP5VEbradyW58yyA7JU9pPKtsw87QU1yeGNucc,130048
|
|
300
300
|
fontTools/varLib/iup.py,sha256=O_xPJOBECrNDbQqCC3e5xf9KsWXUd1i3BAp9Fl6Hv2Y,15474
|
|
301
301
|
fontTools/varLib/merger.py,sha256=V-B17poOYbbrRsfUYJbdqt46GtRfG833MKwtv9NOB3Q,62519
|
|
302
302
|
fontTools/varLib/models.py,sha256=ZqQb1Lapj5dCO8dwa3UTx1LsIpF0-GiDte32t_TMJJQ,23040
|
|
@@ -318,11 +318,11 @@ fontTools/voltLib/error.py,sha256=3TsaZBA82acFd2j5Beq3WUQTURTKM0zxOnUFGZovSNA,40
|
|
|
318
318
|
fontTools/voltLib/lexer.py,sha256=v9V4zdBO2VqVJG__IWrL8fv_CRURmh2eD_1UpbIJn9g,3467
|
|
319
319
|
fontTools/voltLib/parser.py,sha256=HS72gxtFzvcPSwEbUYj3E41CPK7ZqK9mSe0nLRxn-IY,26060
|
|
320
320
|
fontTools/voltLib/voltToFea.py,sha256=nS-OSlx_a-TngGICFNKyFxMhjqkV3OQLcvyzw4sQFyk,37460
|
|
321
|
-
fonttools-4.58.
|
|
322
|
-
fonttools-4.58.
|
|
323
|
-
fonttools-4.58.
|
|
324
|
-
fonttools-4.58.
|
|
325
|
-
fonttools-4.58.
|
|
326
|
-
fonttools-4.58.
|
|
327
|
-
fonttools-4.58.
|
|
328
|
-
fonttools-4.58.
|
|
321
|
+
fonttools-4.58.3.data/data/share/man/man1/ttx.1,sha256=E71F9mRNWlttVpzlnP7w_fqkQygPkph5s-AtVa0Js50,5601
|
|
322
|
+
fonttools-4.58.3.dist-info/licenses/LICENSE,sha256=Ir74Bpfs-qF_l-YrmibfoSggvgVYPo3RKtFpskEnTJk,1093
|
|
323
|
+
fonttools-4.58.3.dist-info/licenses/LICENSE.external,sha256=p5eWRJLxSGv9_M1uYYVeOjFkXzYCPqXeeF2jfqwvy04,19046
|
|
324
|
+
fonttools-4.58.3.dist-info/METADATA,sha256=JFC47xWFnAi-sGMqRczzxjqKxlb6zr0nniG2LBpx4iE,108610
|
|
325
|
+
fonttools-4.58.3.dist-info/WHEEL,sha256=XkFE14KmFh7mutkkb-qn_ueuH2lwfT8rLdfc5xpQ7wE,99
|
|
326
|
+
fonttools-4.58.3.dist-info/entry_points.txt,sha256=8kVHddxfFWA44FSD4mBpmC-4uCynQnkoz_9aNJb227Y,147
|
|
327
|
+
fonttools-4.58.3.dist-info/top_level.txt,sha256=rRgRylrXzekqWOsrhygzib12pQ7WILf7UGjqEwkIFDM,10
|
|
328
|
+
fonttools-4.58.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|