fonttools 4.55.4__cp39-cp39-win_amd64.whl → 4.55.6__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/builder.py +7 -1
- 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/ttLib/tables/_g_l_y_f.py +30 -6
- fontTools/varLib/iup.cp39-win_amd64.pyd +0 -0
- {fonttools-4.55.4.dist-info → fonttools-4.55.6.dist-info}/METADATA +12 -1
- {fonttools-4.55.4.dist-info → fonttools-4.55.6.dist-info}/RECORD +16 -16
- {fonttools-4.55.4.data → fonttools-4.55.6.data}/data/share/man/man1/ttx.1 +0 -0
- {fonttools-4.55.4.dist-info → fonttools-4.55.6.dist-info}/LICENSE +0 -0
- {fonttools-4.55.4.dist-info → fonttools-4.55.6.dist-info}/WHEEL +0 -0
- {fonttools-4.55.4.dist-info → fonttools-4.55.6.dist-info}/entry_points.txt +0 -0
- {fonttools-4.55.4.dist-info → fonttools-4.55.6.dist-info}/top_level.txt +0 -0
fontTools/__init__.py
CHANGED
|
Binary file
|
fontTools/feaLib/builder.py
CHANGED
|
@@ -1106,7 +1106,13 @@ class Builder(object):
|
|
|
1106
1106
|
if (language == "dflt" or include_default) and lookups:
|
|
1107
1107
|
self.features_[key] = lookups[:]
|
|
1108
1108
|
else:
|
|
1109
|
-
|
|
1109
|
+
# if we aren't including default we need to manually remove the
|
|
1110
|
+
# default lookups, which were added to all declared langsystems
|
|
1111
|
+
# as they were encountered (we don't remove all lookups because
|
|
1112
|
+
# we want to allow duplicate script/lang statements;
|
|
1113
|
+
# see https://github.com/fonttools/fonttools/issues/3748
|
|
1114
|
+
cur_lookups = self.features_.get(key, [])
|
|
1115
|
+
self.features_[key] = [x for x in cur_lookups if x not in lookups]
|
|
1110
1116
|
self.language_systems = frozenset([(self.script_, language)])
|
|
1111
1117
|
|
|
1112
1118
|
if required:
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1187,7 +1187,7 @@ class Glyph(object):
|
|
|
1187
1187
|
):
|
|
1188
1188
|
return
|
|
1189
1189
|
try:
|
|
1190
|
-
coords, endPts, flags = self.getCoordinates(glyfTable)
|
|
1190
|
+
coords, endPts, flags = self.getCoordinates(glyfTable, round=otRound)
|
|
1191
1191
|
self.xMin, self.yMin, self.xMax, self.yMax = coords.calcIntBounds()
|
|
1192
1192
|
except NotImplementedError:
|
|
1193
1193
|
pass
|
|
@@ -1206,9 +1206,7 @@ class Glyph(object):
|
|
|
1206
1206
|
Return True if bounds were calculated, False otherwise.
|
|
1207
1207
|
"""
|
|
1208
1208
|
for compo in self.components:
|
|
1209
|
-
if
|
|
1210
|
-
return False
|
|
1211
|
-
if not float(compo.x).is_integer() or not float(compo.y).is_integer():
|
|
1209
|
+
if not compo._hasOnlyIntegerTranslate():
|
|
1212
1210
|
return False
|
|
1213
1211
|
|
|
1214
1212
|
# All components are untransformed and have an integer x/y translate
|
|
@@ -1241,7 +1239,7 @@ class Glyph(object):
|
|
|
1241
1239
|
else:
|
|
1242
1240
|
return self.numberOfContours == -1
|
|
1243
1241
|
|
|
1244
|
-
def getCoordinates(self, glyfTable):
|
|
1242
|
+
def getCoordinates(self, glyfTable, *, round=noRound):
|
|
1245
1243
|
"""Return the coordinates, end points and flags
|
|
1246
1244
|
|
|
1247
1245
|
This method returns three values: A :py:class:`GlyphCoordinates` object,
|
|
@@ -1267,13 +1265,27 @@ class Glyph(object):
|
|
|
1267
1265
|
for compo in self.components:
|
|
1268
1266
|
g = glyfTable[compo.glyphName]
|
|
1269
1267
|
try:
|
|
1270
|
-
coordinates, endPts, flags = g.getCoordinates(
|
|
1268
|
+
coordinates, endPts, flags = g.getCoordinates(
|
|
1269
|
+
glyfTable, round=round
|
|
1270
|
+
)
|
|
1271
1271
|
except RecursionError:
|
|
1272
1272
|
raise ttLib.TTLibError(
|
|
1273
1273
|
"glyph '%s' contains a recursive component reference"
|
|
1274
1274
|
% compo.glyphName
|
|
1275
1275
|
)
|
|
1276
1276
|
coordinates = GlyphCoordinates(coordinates)
|
|
1277
|
+
# if asked to round e.g. while computing bboxes, it's important we
|
|
1278
|
+
# do it immediately before a component transform is applied to a
|
|
1279
|
+
# simple glyph's coordinates in case these might still contain floats;
|
|
1280
|
+
# however, if the referenced component glyph is another composite, we
|
|
1281
|
+
# must not round here but only at the end, after all the nested
|
|
1282
|
+
# transforms have been applied, or else rounding errors will compound.
|
|
1283
|
+
if (
|
|
1284
|
+
round is not noRound
|
|
1285
|
+
and g.numberOfContours > 0
|
|
1286
|
+
and not compo._hasOnlyIntegerTranslate()
|
|
1287
|
+
):
|
|
1288
|
+
coordinates.toInt(round=round)
|
|
1277
1289
|
if hasattr(compo, "firstPt"):
|
|
1278
1290
|
# component uses two reference points: we apply the transform _before_
|
|
1279
1291
|
# computing the offset between the points
|
|
@@ -1930,6 +1942,18 @@ class GlyphComponent(object):
|
|
|
1930
1942
|
result = self.__eq__(other)
|
|
1931
1943
|
return result if result is NotImplemented else not result
|
|
1932
1944
|
|
|
1945
|
+
def _hasOnlyIntegerTranslate(self):
|
|
1946
|
+
"""Return True if it's a 'simple' component.
|
|
1947
|
+
|
|
1948
|
+
That is, it has no anchor points and no transform other than integer translate.
|
|
1949
|
+
"""
|
|
1950
|
+
return (
|
|
1951
|
+
not hasattr(self, "firstPt")
|
|
1952
|
+
and not hasattr(self, "transform")
|
|
1953
|
+
and float(self.x).is_integer()
|
|
1954
|
+
and float(self.y).is_integer()
|
|
1955
|
+
)
|
|
1956
|
+
|
|
1933
1957
|
|
|
1934
1958
|
class GlyphCoordinates(object):
|
|
1935
1959
|
"""A list of glyph coordinates.
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: fonttools
|
|
3
|
-
Version: 4.55.
|
|
3
|
+
Version: 4.55.6
|
|
4
4
|
Summary: Tools to manipulate font files
|
|
5
5
|
Home-page: http://github.com/fonttools/fonttools
|
|
6
6
|
Author: Just van Rossum
|
|
@@ -389,6 +389,17 @@ Have fun!
|
|
|
389
389
|
Changelog
|
|
390
390
|
~~~~~~~~~
|
|
391
391
|
|
|
392
|
+
4.55.6 (released 2025-01-24)
|
|
393
|
+
----------------------------
|
|
394
|
+
|
|
395
|
+
- [glyf] Fixed regression introduced in 4.55.5 when computing bounds of nested composite glyphs with transformed components (#3752).
|
|
396
|
+
|
|
397
|
+
4.55.5 (released 2025-01-23)
|
|
398
|
+
----------------------------
|
|
399
|
+
|
|
400
|
+
- [glyf] Fixed recalcBounds of transformed components with unrounded coordinates (#3750).
|
|
401
|
+
- [feaLib] Allow duplicate script/language statements (#3749).
|
|
402
|
+
|
|
392
403
|
4.55.4 (released 2025-01-21)
|
|
393
404
|
----------------------------
|
|
394
405
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
fontTools/__init__.py,sha256=
|
|
1
|
+
fontTools/__init__.py,sha256=7x-e0A0SRMGJMgU_gibbCDPraIshzf3b0djOpMsyUG8,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=DGeaocDDXSlWL0vHL553KLiFwXVQ550C5SM5OgimUiU,589442
|
|
28
|
-
fontTools/cu2qu/cu2qu.cp39-win_amd64.pyd,sha256=
|
|
28
|
+
fontTools/cu2qu/cu2qu.cp39-win_amd64.pyd,sha256=K28INBxj-_yNxQeZhkvhDut7fD8ZApr3_vfyml41Pws,104960
|
|
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
|
|
@@ -41,10 +41,10 @@ fontTools/encodings/codecs.py,sha256=bSpO6kuPbEIDsXSVHhzftqsm_FFUiXpLVfPSk410SqE
|
|
|
41
41
|
fontTools/feaLib/__init__.py,sha256=RprjP6BKswq4pt0J-9L1XGuZfjIFAGD6HDly_haMAN4,217
|
|
42
42
|
fontTools/feaLib/__main__.py,sha256=niUAPkiYxeRAJMlJuvVJZism2VFufZrNaQtieA7sNLk,2318
|
|
43
43
|
fontTools/feaLib/ast.py,sha256=3bDOxPIwmxM5tjhnI8K7pheRkgEHYMb_ExJsco0SyDU,75934
|
|
44
|
-
fontTools/feaLib/builder.py,sha256=
|
|
44
|
+
fontTools/feaLib/builder.py,sha256=VBDpD311XvqhzPA9wfyiY06ps14J0-FUWjOEs6fwrHE,72783
|
|
45
45
|
fontTools/feaLib/error.py,sha256=PSXeclXORb9hkvXh95e6YrNKZpPPWkekXOJZCSEhSjg,665
|
|
46
46
|
fontTools/feaLib/lexer.c,sha256=yKf2WoKLiJJcrI35TuqUxIQYLOLoyr5D2MhcxY8vFF8,750768
|
|
47
|
-
fontTools/feaLib/lexer.cp39-win_amd64.pyd,sha256=
|
|
47
|
+
fontTools/feaLib/lexer.cp39-win_amd64.pyd,sha256=ITKUgp7IeMXFW-3kGfnaULi6N9QTBVOA6RxQiIpRwXk,140288
|
|
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=IpsvlD6PupyRJ0mNv6-fEeN9ubSaLCKFsa_pTjTO-Kg,1814064
|
|
65
|
-
fontTools/misc/bezierTools.cp39-win_amd64.pyd,sha256=
|
|
65
|
+
fontTools/misc/bezierTools.cp39-win_amd64.pyd,sha256=daMJYk1qAtfBJC8uwZA6KbYJwJQnRgnZ-TnA1zlscgw,383488
|
|
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
|
|
@@ -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=ajNsDnHtKVFHde329jgP1R_dCoAhd_lJF3oFrtSlaX8,530428
|
|
122
|
-
fontTools/pens/momentsPen.cp39-win_amd64.pyd,sha256=
|
|
122
|
+
fontTools/pens/momentsPen.cp39-win_amd64.pyd,sha256=rEKaCbxo-XDtRxXtjfpdxMnoK7TLM8_jGyl_EKzZua0,95232
|
|
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=xLksDndkY4iCqLrFx9a6XOFL3mWNdDw1kdpiu16sidg,654946
|
|
146
|
-
fontTools/qu2cu/qu2cu.cp39-win_amd64.pyd,sha256=
|
|
146
|
+
fontTools/qu2cu/qu2cu.cp39-win_amd64.pyd,sha256=BQmxTa7kd2DdYN3vjD-BlI7e6UGX7rawp4-S4HFj_Ls,115712
|
|
147
147
|
fontTools/qu2cu/qu2cu.py,sha256=dtp5Zqhcs_NePwA2U5fgG2LtWleRwmBilTurau8sLL0,12693
|
|
148
148
|
fontTools/subset/__init__.py,sha256=a0OHXLf9m8qlXRFA7Gxp5qxe8ImUQ5ziK3bD-4fm618,137743
|
|
149
149
|
fontTools/subset/__main__.py,sha256=cEIC52EtGOJvFDfHXzi0M2EAYmyHAcI-ZZ0lb2y4r7s,101
|
|
@@ -234,7 +234,7 @@ fontTools/ttLib/tables/_f_p_g_m.py,sha256=MiDyOiSyn4iA92G8YDZytJMqTFgNix03oiX5xM
|
|
|
234
234
|
fontTools/ttLib/tables/_f_v_a_r.py,sha256=hpxU0-u7_pZYDmQdKpmd_7c6BjVpXHdoQ97jKk9Kz5U,9098
|
|
235
235
|
fontTools/ttLib/tables/_g_a_s_p.py,sha256=Pr4X2CEg3a_nYAZrKSWT0auQ5HU2WutP1Shxxg7ALPw,2266
|
|
236
236
|
fontTools/ttLib/tables/_g_c_i_d.py,sha256=diZlew4U8nFK5vimh-GMOjwHw8ccZtIEl9cPq0PrNdA,375
|
|
237
|
-
fontTools/ttLib/tables/_g_l_y_f.py,sha256=
|
|
237
|
+
fontTools/ttLib/tables/_g_l_y_f.py,sha256=7nGKdrSZ7yz2k-o1pKNlVM-RZ0fuYCtvuUhoCD2lGKE,87942
|
|
238
238
|
fontTools/ttLib/tables/_g_v_a_r.py,sha256=etECZEoWa1KEimNg2hqNFqPqr85OFsfj3odDIU-0lRI,11065
|
|
239
239
|
fontTools/ttLib/tables/_h_d_m_x.py,sha256=Da8Og1KFmOLJGkBlLDlcgdvrIeCTx1USGwnmlg93r3E,4398
|
|
240
240
|
fontTools/ttLib/tables/_h_e_a_d.py,sha256=ft9ghTA1NZsGBvB0yElFFCqVHecuCKGjT2m2GfYB3Yc,5056
|
|
@@ -299,7 +299,7 @@ fontTools/varLib/interpolatableTestContourOrder.py,sha256=Pbt0jW0LoVggIwrtADZ7HW
|
|
|
299
299
|
fontTools/varLib/interpolatableTestStartingPoint.py,sha256=f5MJ3mj8MctJCvDJwqmW1fIVOgovUMYAOela9HweaRU,4403
|
|
300
300
|
fontTools/varLib/interpolate_layout.py,sha256=tTPUes_K7MwooUO_wac9AeFEVgL1uGSz4ITYiOizaME,3813
|
|
301
301
|
fontTools/varLib/iup.c,sha256=DLuKtbG8sRuBAZXN0blJBfPYEUjsuImoF1Rnnn_f-Os,776376
|
|
302
|
-
fontTools/varLib/iup.cp39-win_amd64.pyd,sha256=
|
|
302
|
+
fontTools/varLib/iup.cp39-win_amd64.pyd,sha256=359FiUAOR_R_95OSxEXn-L_ZObXGvi3rS7-Yj0CR56k,137728
|
|
303
303
|
fontTools/varLib/iup.py,sha256=O_xPJOBECrNDbQqCC3e5xf9KsWXUd1i3BAp9Fl6Hv2Y,15474
|
|
304
304
|
fontTools/varLib/merger.py,sha256=V-B17poOYbbrRsfUYJbdqt46GtRfG833MKwtv9NOB3Q,62519
|
|
305
305
|
fontTools/varLib/models.py,sha256=ZqQb1Lapj5dCO8dwa3UTx1LsIpF0-GiDte32t_TMJJQ,23040
|
|
@@ -320,10 +320,10 @@ fontTools/voltLib/error.py,sha256=3TsaZBA82acFd2j5Beq3WUQTURTKM0zxOnUFGZovSNA,40
|
|
|
320
320
|
fontTools/voltLib/lexer.py,sha256=v9V4zdBO2VqVJG__IWrL8fv_CRURmh2eD_1UpbIJn9g,3467
|
|
321
321
|
fontTools/voltLib/parser.py,sha256=xAQPwO8uyYHKi-v9yMtz2RGE3lj75V4lanUGgIL9AC4,25572
|
|
322
322
|
fontTools/voltLib/voltToFea.py,sha256=iJ7mJa9q-vWpmQgfCJC_ZrzNop_mgC1pazr1DhPJleE,29235
|
|
323
|
-
fonttools-4.55.
|
|
324
|
-
fonttools-4.55.
|
|
325
|
-
fonttools-4.55.
|
|
326
|
-
fonttools-4.55.
|
|
327
|
-
fonttools-4.55.
|
|
328
|
-
fonttools-4.55.
|
|
329
|
-
fonttools-4.55.
|
|
323
|
+
fonttools-4.55.6.data/data/share/man/man1/ttx.1,sha256=E71F9mRNWlttVpzlnP7w_fqkQygPkph5s-AtVa0Js50,5601
|
|
324
|
+
fonttools-4.55.6.dist-info/LICENSE,sha256=Ir74Bpfs-qF_l-YrmibfoSggvgVYPo3RKtFpskEnTJk,1093
|
|
325
|
+
fonttools-4.55.6.dist-info/METADATA,sha256=iJ8QbdypBtYzl7EoxZW2gDmzOU6Q5FwVNy_n__dLpjQ,169487
|
|
326
|
+
fonttools-4.55.6.dist-info/WHEEL,sha256=agy-BJge3afXwWznUXANATmKFW4eqelqRR0uf608A_0,99
|
|
327
|
+
fonttools-4.55.6.dist-info/entry_points.txt,sha256=8kVHddxfFWA44FSD4mBpmC-4uCynQnkoz_9aNJb227Y,147
|
|
328
|
+
fonttools-4.55.6.dist-info/top_level.txt,sha256=rRgRylrXzekqWOsrhygzib12pQ7WILf7UGjqEwkIFDM,10
|
|
329
|
+
fonttools-4.55.6.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|