fonttools 4.55.3__cp311-cp311-macosx_10_9_universal2.whl → 4.55.6__cp311-cp311-macosx_10_9_universal2.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.cpython-311-darwin.so +0 -0
- fontTools/feaLib/ast.py +2 -2
- fontTools/feaLib/builder.py +7 -1
- fontTools/feaLib/lexer.cpython-311-darwin.so +0 -0
- fontTools/misc/bezierTools.c +3256 -2972
- fontTools/misc/bezierTools.cpython-311-darwin.so +0 -0
- fontTools/misc/bezierTools.py +8 -1
- fontTools/misc/transform.py +13 -15
- fontTools/pens/momentsPen.cpython-311-darwin.so +0 -0
- fontTools/pens/statisticsPen.py +5 -0
- fontTools/qu2cu/qu2cu.cpython-311-darwin.so +0 -0
- fontTools/ttLib/tables/_g_l_y_f.py +30 -6
- fontTools/ttLib/tables/_n_a_m_e.py +5 -13
- fontTools/varLib/iup.cpython-311-darwin.so +0 -0
- {fonttools-4.55.3.dist-info → fonttools-4.55.6.dist-info}/METADATA +32 -4
- {fonttools-4.55.3.dist-info → fonttools-4.55.6.dist-info}/RECORD +22 -22
- {fonttools-4.55.3.dist-info → fonttools-4.55.6.dist-info}/WHEEL +1 -1
- {fonttools-4.55.3.data → fonttools-4.55.6.data}/data/share/man/man1/ttx.1 +0 -0
- {fonttools-4.55.3.dist-info → fonttools-4.55.6.dist-info}/LICENSE +0 -0
- {fonttools-4.55.3.dist-info → fonttools-4.55.6.dist-info}/entry_points.txt +0 -0
- {fonttools-4.55.3.dist-info → fonttools-4.55.6.dist-info}/top_level.txt +0 -0
|
Binary file
|
fontTools/misc/bezierTools.py
CHANGED
|
@@ -631,7 +631,14 @@ def splitCubicAtT(pt1, pt2, pt3, pt4, *ts):
|
|
|
631
631
|
((77.3438, 56.25), (85.9375, 43.75), (93.75, 25), (100, 0))
|
|
632
632
|
"""
|
|
633
633
|
a, b, c, d = calcCubicParameters(pt1, pt2, pt3, pt4)
|
|
634
|
-
|
|
634
|
+
split = _splitCubicAtT(a, b, c, d, *ts)
|
|
635
|
+
|
|
636
|
+
# the split impl can introduce floating point errors; we know the first
|
|
637
|
+
# segment should always start at pt1 and the last segment should end at pt4,
|
|
638
|
+
# so we set those values directly before returning.
|
|
639
|
+
split[0] = (pt1, *split[0][1:])
|
|
640
|
+
split[-1] = (*split[-1][:-1], pt4)
|
|
641
|
+
return split
|
|
635
642
|
|
|
636
643
|
|
|
637
644
|
@cython.locals(
|
fontTools/misc/transform.py
CHANGED
|
@@ -52,6 +52,8 @@ translate, rotation, scale, skew, and transformation-center components.
|
|
|
52
52
|
>>>
|
|
53
53
|
"""
|
|
54
54
|
|
|
55
|
+
from __future__ import annotations
|
|
56
|
+
|
|
55
57
|
import math
|
|
56
58
|
from typing import NamedTuple
|
|
57
59
|
from dataclasses import dataclass
|
|
@@ -65,7 +67,7 @@ _ONE_EPSILON = 1 - _EPSILON
|
|
|
65
67
|
_MINUS_ONE_EPSILON = -1 + _EPSILON
|
|
66
68
|
|
|
67
69
|
|
|
68
|
-
def _normSinCos(v):
|
|
70
|
+
def _normSinCos(v: float) -> float:
|
|
69
71
|
if abs(v) < _EPSILON:
|
|
70
72
|
v = 0
|
|
71
73
|
elif v > _ONE_EPSILON:
|
|
@@ -214,7 +216,7 @@ class Transform(NamedTuple):
|
|
|
214
216
|
xx, xy, yx, yy = self[:4]
|
|
215
217
|
return [(xx * dx + yx * dy, xy * dx + yy * dy) for dx, dy in vectors]
|
|
216
218
|
|
|
217
|
-
def translate(self, x=0, y=0):
|
|
219
|
+
def translate(self, x: float = 0, y: float = 0):
|
|
218
220
|
"""Return a new transformation, translated (offset) by x, y.
|
|
219
221
|
|
|
220
222
|
:Example:
|
|
@@ -225,7 +227,7 @@ class Transform(NamedTuple):
|
|
|
225
227
|
"""
|
|
226
228
|
return self.transform((1, 0, 0, 1, x, y))
|
|
227
229
|
|
|
228
|
-
def scale(self, x=1, y=None):
|
|
230
|
+
def scale(self, x: float = 1, y: float | None = None):
|
|
229
231
|
"""Return a new transformation, scaled by x, y. The 'y' argument
|
|
230
232
|
may be None, which implies to use the x value for y as well.
|
|
231
233
|
|
|
@@ -241,7 +243,7 @@ class Transform(NamedTuple):
|
|
|
241
243
|
y = x
|
|
242
244
|
return self.transform((x, 0, 0, y, 0, 0))
|
|
243
245
|
|
|
244
|
-
def rotate(self, angle):
|
|
246
|
+
def rotate(self, angle: float):
|
|
245
247
|
"""Return a new transformation, rotated by 'angle' (radians).
|
|
246
248
|
|
|
247
249
|
:Example:
|
|
@@ -251,13 +253,11 @@ class Transform(NamedTuple):
|
|
|
251
253
|
<Transform [0 1 -1 0 0 0]>
|
|
252
254
|
>>>
|
|
253
255
|
"""
|
|
254
|
-
import math
|
|
255
|
-
|
|
256
256
|
c = _normSinCos(math.cos(angle))
|
|
257
257
|
s = _normSinCos(math.sin(angle))
|
|
258
258
|
return self.transform((c, s, -s, c, 0, 0))
|
|
259
259
|
|
|
260
|
-
def skew(self, x=0, y=0):
|
|
260
|
+
def skew(self, x: float = 0, y: float = 0):
|
|
261
261
|
"""Return a new transformation, skewed by x and y.
|
|
262
262
|
|
|
263
263
|
:Example:
|
|
@@ -267,8 +267,6 @@ class Transform(NamedTuple):
|
|
|
267
267
|
<Transform [1 0 1 1 0 0]>
|
|
268
268
|
>>>
|
|
269
269
|
"""
|
|
270
|
-
import math
|
|
271
|
-
|
|
272
270
|
return self.transform((1, math.tan(y), math.tan(x), 1, 0, 0))
|
|
273
271
|
|
|
274
272
|
def transform(self, other):
|
|
@@ -336,7 +334,7 @@ class Transform(NamedTuple):
|
|
|
336
334
|
dx, dy = -xx * dx - yx * dy, -xy * dx - yy * dy
|
|
337
335
|
return self.__class__(xx, xy, yx, yy, dx, dy)
|
|
338
336
|
|
|
339
|
-
def toPS(self):
|
|
337
|
+
def toPS(self) -> str:
|
|
340
338
|
"""Return a PostScript representation
|
|
341
339
|
|
|
342
340
|
:Example:
|
|
@@ -352,7 +350,7 @@ class Transform(NamedTuple):
|
|
|
352
350
|
"""Decompose into a DecomposedTransform."""
|
|
353
351
|
return DecomposedTransform.fromTransform(self)
|
|
354
352
|
|
|
355
|
-
def __bool__(self):
|
|
353
|
+
def __bool__(self) -> bool:
|
|
356
354
|
"""Returns True if transform is not identity, False otherwise.
|
|
357
355
|
|
|
358
356
|
:Example:
|
|
@@ -374,14 +372,14 @@ class Transform(NamedTuple):
|
|
|
374
372
|
"""
|
|
375
373
|
return self != Identity
|
|
376
374
|
|
|
377
|
-
def __repr__(self):
|
|
375
|
+
def __repr__(self) -> str:
|
|
378
376
|
return "<%s [%g %g %g %g %g %g]>" % ((self.__class__.__name__,) + self)
|
|
379
377
|
|
|
380
378
|
|
|
381
379
|
Identity = Transform()
|
|
382
380
|
|
|
383
381
|
|
|
384
|
-
def Offset(x=0, y=0):
|
|
382
|
+
def Offset(x: float = 0, y: float = 0) -> Transform:
|
|
385
383
|
"""Return the identity transformation offset by x, y.
|
|
386
384
|
|
|
387
385
|
:Example:
|
|
@@ -392,7 +390,7 @@ def Offset(x=0, y=0):
|
|
|
392
390
|
return Transform(1, 0, 0, 1, x, y)
|
|
393
391
|
|
|
394
392
|
|
|
395
|
-
def Scale(x, y=None):
|
|
393
|
+
def Scale(x: float, y: float | None = None) -> Transform:
|
|
396
394
|
"""Return the identity transformation scaled by x, y. The 'y' argument
|
|
397
395
|
may be None, which implies to use the x value for y as well.
|
|
398
396
|
|
|
@@ -492,7 +490,7 @@ class DecomposedTransform:
|
|
|
492
490
|
0,
|
|
493
491
|
)
|
|
494
492
|
|
|
495
|
-
def toTransform(self):
|
|
493
|
+
def toTransform(self) -> Transform:
|
|
496
494
|
"""Return the Transform() equivalent of this transformation.
|
|
497
495
|
|
|
498
496
|
:Example:
|
|
Binary file
|
fontTools/pens/statisticsPen.py
CHANGED
|
@@ -106,6 +106,7 @@ class StatisticsControlPen(StatisticsBase, BasePen):
|
|
|
106
106
|
|
|
107
107
|
def _moveTo(self, pt):
|
|
108
108
|
self._nodes.append(complex(*pt))
|
|
109
|
+
self._startPoint = pt
|
|
109
110
|
|
|
110
111
|
def _lineTo(self, pt):
|
|
111
112
|
self._nodes.append(complex(*pt))
|
|
@@ -119,12 +120,16 @@ class StatisticsControlPen(StatisticsBase, BasePen):
|
|
|
119
120
|
self._nodes.append(complex(*pt))
|
|
120
121
|
|
|
121
122
|
def _closePath(self):
|
|
123
|
+
p0 = self._getCurrentPoint()
|
|
124
|
+
if p0 != self._startPoint:
|
|
125
|
+
self._lineTo(self._startPoint)
|
|
122
126
|
self._update()
|
|
123
127
|
|
|
124
128
|
def _endPath(self):
|
|
125
129
|
p0 = self._getCurrentPoint()
|
|
126
130
|
if p0 != self._startPoint:
|
|
127
131
|
raise OpenContourError("Glyph statistics not defined on open contours.")
|
|
132
|
+
self._update()
|
|
128
133
|
|
|
129
134
|
def _update(self):
|
|
130
135
|
nodes = self._nodes
|
|
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.
|
|
@@ -48,6 +48,10 @@ class table__n_a_m_e(DefaultTable.DefaultTable):
|
|
|
48
48
|
|
|
49
49
|
dependencies = ["ltag"]
|
|
50
50
|
|
|
51
|
+
def __init__(self, tag=None):
|
|
52
|
+
super().__init__(tag)
|
|
53
|
+
self.names = []
|
|
54
|
+
|
|
51
55
|
def decompile(self, data, ttFont):
|
|
52
56
|
format, n, stringOffset = struct.unpack(b">HHH", data[:6])
|
|
53
57
|
expectedStringOffset = 6 + n * nameRecordSize
|
|
@@ -78,10 +82,6 @@ class table__n_a_m_e(DefaultTable.DefaultTable):
|
|
|
78
82
|
self.names.append(name)
|
|
79
83
|
|
|
80
84
|
def compile(self, ttFont):
|
|
81
|
-
if not hasattr(self, "names"):
|
|
82
|
-
# only happens when there are NO name table entries read
|
|
83
|
-
# from the TTX file
|
|
84
|
-
self.names = []
|
|
85
85
|
names = self.names
|
|
86
86
|
names.sort() # sort according to the spec; see NameRecord.__lt__()
|
|
87
87
|
stringData = b""
|
|
@@ -108,8 +108,6 @@ class table__n_a_m_e(DefaultTable.DefaultTable):
|
|
|
108
108
|
def fromXML(self, name, attrs, content, ttFont):
|
|
109
109
|
if name != "namerecord":
|
|
110
110
|
return # ignore unknown tags
|
|
111
|
-
if not hasattr(self, "names"):
|
|
112
|
-
self.names = []
|
|
113
111
|
name = NameRecord()
|
|
114
112
|
self.names.append(name)
|
|
115
113
|
name.fromXML(name, attrs, content, ttFont)
|
|
@@ -194,8 +192,6 @@ class table__n_a_m_e(DefaultTable.DefaultTable):
|
|
|
194
192
|
identified by the (platformID, platEncID, langID) triplet. A warning is issued
|
|
195
193
|
to prevent unexpected results.
|
|
196
194
|
"""
|
|
197
|
-
if not hasattr(self, "names"):
|
|
198
|
-
self.names = []
|
|
199
195
|
if not isinstance(string, str):
|
|
200
196
|
if isinstance(string, bytes):
|
|
201
197
|
log.warning(
|
|
@@ -262,7 +258,7 @@ class table__n_a_m_e(DefaultTable.DefaultTable):
|
|
|
262
258
|
The nameID is assigned in the range between 'minNameID' and 32767 (inclusive),
|
|
263
259
|
following the last nameID in the name table.
|
|
264
260
|
"""
|
|
265
|
-
names =
|
|
261
|
+
names = self.names
|
|
266
262
|
nameID = 1 + max([n.nameID for n in names] + [minNameID - 1])
|
|
267
263
|
if nameID > 32767:
|
|
268
264
|
raise ValueError("nameID must be less than 32768")
|
|
@@ -359,8 +355,6 @@ class table__n_a_m_e(DefaultTable.DefaultTable):
|
|
|
359
355
|
If the 'nameID' argument is None, the created nameID will not
|
|
360
356
|
be less than the 'minNameID' argument.
|
|
361
357
|
"""
|
|
362
|
-
if not hasattr(self, "names"):
|
|
363
|
-
self.names = []
|
|
364
358
|
if nameID is None:
|
|
365
359
|
# Reuse nameID if possible
|
|
366
360
|
nameID = self.findMultilingualName(
|
|
@@ -404,8 +398,6 @@ class table__n_a_m_e(DefaultTable.DefaultTable):
|
|
|
404
398
|
assert (
|
|
405
399
|
len(platforms) > 0
|
|
406
400
|
), "'platforms' must contain at least one (platformID, platEncID, langID) tuple"
|
|
407
|
-
if not hasattr(self, "names"):
|
|
408
|
-
self.names = []
|
|
409
401
|
if not isinstance(string, str):
|
|
410
402
|
raise TypeError(
|
|
411
403
|
"expected str, found %s: %r" % (type(string).__name__, string)
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
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
|
|
@@ -72,6 +72,18 @@ Requires-Dist: sympy; extra == "all"
|
|
|
72
72
|
Requires-Dist: xattr; sys_platform == "darwin" and extra == "all"
|
|
73
73
|
Requires-Dist: skia-pathops>=0.5.0; extra == "all"
|
|
74
74
|
Requires-Dist: uharfbuzz>=0.23.0; extra == "all"
|
|
75
|
+
Dynamic: author
|
|
76
|
+
Dynamic: author-email
|
|
77
|
+
Dynamic: classifier
|
|
78
|
+
Dynamic: description
|
|
79
|
+
Dynamic: home-page
|
|
80
|
+
Dynamic: license
|
|
81
|
+
Dynamic: maintainer
|
|
82
|
+
Dynamic: maintainer-email
|
|
83
|
+
Dynamic: platform
|
|
84
|
+
Dynamic: provides-extra
|
|
85
|
+
Dynamic: requires-python
|
|
86
|
+
Dynamic: summary
|
|
75
87
|
|
|
76
88
|
|CI Build Status| |Coverage Status| |PyPI| |Gitter Chat|
|
|
77
89
|
|
|
@@ -377,9 +389,26 @@ Have fun!
|
|
|
377
389
|
Changelog
|
|
378
390
|
~~~~~~~~~
|
|
379
391
|
|
|
380
|
-
4.55.
|
|
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)
|
|
381
398
|
----------------------------
|
|
382
399
|
|
|
400
|
+
- [glyf] Fixed recalcBounds of transformed components with unrounded coordinates (#3750).
|
|
401
|
+
- [feaLib] Allow duplicate script/language statements (#3749).
|
|
402
|
+
|
|
403
|
+
4.55.4 (released 2025-01-21)
|
|
404
|
+
----------------------------
|
|
405
|
+
|
|
406
|
+
- [bezierTools] Fixed ``splitCubicAtT`` sometimes not returning identical start/end points as result of numerical precision (#3742, #3743).
|
|
407
|
+
- [feaLib/ast] Fixed docstring of ``AlternateSubstStatement`` (#3735).
|
|
408
|
+
- [transform] Typing fixes (#3734).
|
|
409
|
+
|
|
410
|
+
4.55.3 (released 2024-12-10)
|
|
411
|
+
----------------------------
|
|
383
412
|
|
|
384
413
|
- [Docs] fill out ttLib table section [#3716]
|
|
385
414
|
- [feaLib] More efficient inline format 4 lookups [#3726]
|
|
@@ -403,7 +432,6 @@ Changelog
|
|
|
403
432
|
4.55.0 (released 2024-11-14)
|
|
404
433
|
----------------------------
|
|
405
434
|
|
|
406
|
-
|
|
407
435
|
- [cffLib.specializer] Adjust stack use calculation (#3689)
|
|
408
436
|
- [varLib] Lets not add mac names if the rest of name doesn't have them (#3688)
|
|
409
437
|
- [ttLib.reorderGlyphs] Update CFF table charstrings and charset (#3682)
|
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
fonttools-4.55.
|
|
2
|
-
fonttools-4.55.3.dist-info/LICENSE,sha256=Z4cgj4P2Wcy8IiOy_elS_6b36KymLxqKK_W8UbsbI4M,1072
|
|
3
|
-
fonttools-4.55.3.dist-info/WHEEL,sha256=SAXwsvUnStmqZDZIFc0R93dpIgZzQCxgSCg6H6Io4Og,114
|
|
4
|
-
fonttools-4.55.3.dist-info/entry_points.txt,sha256=8kVHddxfFWA44FSD4mBpmC-4uCynQnkoz_9aNJb227Y,147
|
|
5
|
-
fonttools-4.55.3.dist-info/top_level.txt,sha256=rRgRylrXzekqWOsrhygzib12pQ7WILf7UGjqEwkIFDM,10
|
|
6
|
-
fonttools-4.55.3.dist-info/METADATA,sha256=WjSNtIXgSmvbXWc6nIzkPBYXND_si-0XhIDBWzhPrHg,165117
|
|
1
|
+
fonttools-4.55.6.data/data/share/man/man1/ttx.1,sha256=cLbm_pOOj1C76T2QXvDxzwDj9gk-GTd5RztvTMsouFw,5377
|
|
7
2
|
fontTools/ttx.py,sha256=XCerBn2ySMc5Bn54io4j5U5cW228GFREYvEeuvp0ZfM,16652
|
|
8
3
|
fontTools/fontBuilder.py,sha256=ntG0lXnhXNcHK-C7bp0nGNQ68OutFA-84TNNpzntTcE,33952
|
|
9
4
|
fontTools/unicode.py,sha256=ZZ7OMmWvIyV1IL1k6ioTzaRAh3tUvm6gvK7QgFbOIHY,1237
|
|
10
|
-
fontTools/__init__.py,sha256=
|
|
5
|
+
fontTools/__init__.py,sha256=DxxZT_7Dukh-9b99tImAS_ifGPG3Gxr_h3DKNFZ58a4,183
|
|
11
6
|
fontTools/tfmLib.py,sha256=UMbkM73JXRJVS9t2B-BJc13rSjImaWBuzCoehLwHFhs,14270
|
|
12
7
|
fontTools/afmLib.py,sha256=1MagIItOzRV4vV5kKPxeDZbPJsfxLB3wdHLFkQvl0uk,13164
|
|
13
8
|
fontTools/agl.py,sha256=05bm8Uq45uVWW8nPbP6xbNgmFyxQr8sWhYAiP0VSjnI,112975
|
|
@@ -17,7 +12,7 @@ fontTools/encodings/codecs.py,sha256=u50ruwz9fcRsrUrRGpR17Cr55Ovn1fvCHCKrElVumDE
|
|
|
17
12
|
fontTools/encodings/__init__.py,sha256=DJBWmoX_Haau7qlgmvWyfbhSzrX2qL636Rns7CG01pk,75
|
|
18
13
|
fontTools/encodings/MacRoman.py,sha256=4vEooUDm2gLCG8KIIDhRxm5-A64w7XrhP9cjDRr2Eo0,3576
|
|
19
14
|
fontTools/encodings/StandardEncoding.py,sha256=Eo3AGE8FE_p-IVYYuV097KouSsF3UrXoRRN0XyvYbrs,3581
|
|
20
|
-
fontTools/qu2cu/qu2cu.cpython-311-darwin.so,sha256=
|
|
15
|
+
fontTools/qu2cu/qu2cu.cpython-311-darwin.so,sha256=a-R3CaUbHQCc-tHESM38UiDdW0rJohn_0KEMMl90k7g,345120
|
|
21
16
|
fontTools/qu2cu/benchmark.py,sha256=GMcr_4r7L6K9SmJ13itt-_XKhnKqSVUDPlXUG6IZmmM,1400
|
|
22
17
|
fontTools/qu2cu/__init__.py,sha256=Jfm1JljXbt91w4gyvZn6jzEmVnhRx50sh2fDongrOsE,618
|
|
23
18
|
fontTools/qu2cu/qu2cu.py,sha256=IYtpkwHdfKOXJr65Y_pJ9Lrt_MgJaISAKGMAs5ilFSM,12288
|
|
@@ -50,13 +45,13 @@ fontTools/misc/textTools.py,sha256=pbhr6LVhm3J-0Z4saYnJfxBDzyoiw4BR9pAgwypiOw8,3
|
|
|
50
45
|
fontTools/misc/visitor.py,sha256=S3I_OCavPhkwGQpwIKV9XjNCaWUcafo7HQCyxDI0nQg,5314
|
|
51
46
|
fontTools/misc/macCreatorType.py,sha256=Je9jtqUr7EPbpH3QxlVl3pizoQ-1AOPMBIctHIMTM3k,1593
|
|
52
47
|
fontTools/misc/psCharStrings.py,sha256=Tb5-k_5krP0eu7qD054iGxE4Zybk9oB4jdiKzcsV0rw,43036
|
|
53
|
-
fontTools/misc/transform.py,sha256=
|
|
48
|
+
fontTools/misc/transform.py,sha256=OR8dPsAw87z77gkZQMq00iUkDWLIxYv-12XiKH1-erk,15798
|
|
54
49
|
fontTools/misc/etree.py,sha256=EPldipUNNMvbPimNX7qOUwKkbpJMY4uyElhe-wqKWkM,17079
|
|
55
50
|
fontTools/misc/xmlReader.py,sha256=igut4_d13RT4WarliqVvuuPybO1uSXVeoBOeW4j0_e4,6580
|
|
56
|
-
fontTools/misc/bezierTools.cpython-311-darwin.so,sha256=
|
|
57
|
-
fontTools/misc/bezierTools.c,sha256=
|
|
51
|
+
fontTools/misc/bezierTools.cpython-311-darwin.so,sha256=fieGYB8aIUToerIT3c06CT8U8tqTZBlY3eQN62CEH-s,1060904
|
|
52
|
+
fontTools/misc/bezierTools.c,sha256=tIJLZkz3M1Lsc_dg1ApLWmdOezdsNt2tXpuk3c3Dclo,1814052
|
|
58
53
|
fontTools/misc/dictTools.py,sha256=VxjarsGJuk_wa3z29FSCtKZNCFfXtMBiNEu0RPAlpDk,2417
|
|
59
|
-
fontTools/misc/bezierTools.py,sha256=
|
|
54
|
+
fontTools/misc/bezierTools.py,sha256=OmR3pzCGExNvZyTPrByH7gQHpAJsYOl1cmvfYQIVfQA,45038
|
|
60
55
|
fontTools/misc/eexec.py,sha256=GNn2OCRvO1HbbIeDPxk9i0glO7cux_AQaoVMXhBR8y8,3331
|
|
61
56
|
fontTools/misc/xmlWriter.py,sha256=CA1c-Ov5vFTF9tT4bGk-f3yBvaX7lVmSdLPYygUqlAE,6046
|
|
62
57
|
fontTools/misc/intTools.py,sha256=l6pjk4UYlXcyLtfC0DdOC5RL6UJ8ihRR0zRiYow5xA8,586
|
|
@@ -64,7 +59,7 @@ fontTools/misc/iterTools.py,sha256=17H6LPZszp32bTKoNorp6uZF1PKj47BAbe5QG8irUjo,3
|
|
|
64
59
|
fontTools/misc/plistlib/__init__.py,sha256=1HfhHPt3As6u2eRSlFfl6XdnXv_ypQImeQdWIw6wK7Y,21113
|
|
65
60
|
fontTools/misc/plistlib/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
66
61
|
fontTools/cu2qu/benchmark.py,sha256=wasPJmf8q9k9UHjpHChC3WQAGbBAyHN9PvJzXvWC0Fw,1296
|
|
67
|
-
fontTools/cu2qu/cu2qu.cpython-311-darwin.so,sha256=
|
|
62
|
+
fontTools/cu2qu/cu2qu.cpython-311-darwin.so,sha256=Y9vuz-QlomwxKSsY9SLS10k1_2USD0DkNXq3SjIl5_k,307392
|
|
68
63
|
fontTools/cu2qu/cu2qu.c,sha256=zvMRDcmpgT7WY6HSX9N97fVaSdEA9LZJYBKfE40hoK0,589430
|
|
69
64
|
fontTools/cu2qu/__init__.py,sha256=Cuc7Uglb0nSgaraTxXY5J8bReznH5wApW0uakN7MycY,618
|
|
70
65
|
fontTools/cu2qu/ufo.py,sha256=qZR70uWdCia19Ff8GLn5NeItscvvn69DegjDZVF4eNI,11794
|
|
@@ -105,7 +100,7 @@ fontTools/varLib/plot.py,sha256=NoSZkJ5ndxNcDvJIvd5pQ9_jX6X1oM1K2G_tR4sdPVs,7494
|
|
|
105
100
|
fontTools/varLib/cff.py,sha256=EVgaQcoROIrYQsRuftnxFuGGldEPYbrIh5yBckylJC4,22901
|
|
106
101
|
fontTools/varLib/models.py,sha256=sj_ENljh_qcMbfYzRIOlRgHq6tFOmL02Wv6WO8uofis,22398
|
|
107
102
|
fontTools/varLib/avar.py,sha256=Ye_u0HHznaPQaTzufNFKDj_v9o_LxOKJoa_eTK1D1F0,9647
|
|
108
|
-
fontTools/varLib/iup.cpython-311-darwin.so,sha256=
|
|
103
|
+
fontTools/varLib/iup.cpython-311-darwin.so,sha256=YAr9sGIx6sZaQkd8NhdcwCt5c4qu3piAx96yh8_b2i4,396448
|
|
109
104
|
fontTools/varLib/__init__.py,sha256=RGQ1bNPr9UcGeJ3mSAwctZbJJ-avZL1brjeAukRljEA,53983
|
|
110
105
|
fontTools/varLib/mutator.py,sha256=YJkKFFWjwpYZ1MrC7UZYJ1BuYTGiwgi7jHnpqNpKfKg,19278
|
|
111
106
|
fontTools/varLib/interpolatablePlot.py,sha256=w393P6mGLRhYkIjSxMww3qyoYxAUZzCXlmPBbI_84C0,44375
|
|
@@ -147,12 +142,12 @@ fontTools/pens/momentsPen.c,sha256=ObZVy0eAslCcXxpf9enZD1RtKpdikXt26VetwzqTyB0,5
|
|
|
147
142
|
fontTools/pens/perimeterPen.py,sha256=lr6NzrIWxi4TXBJPbcJsKzqABWfQeil2Bgm9BgUD3N4,2153
|
|
148
143
|
fontTools/pens/__init__.py,sha256=DJBWmoX_Haau7qlgmvWyfbhSzrX2qL636Rns7CG01pk,75
|
|
149
144
|
fontTools/pens/ttGlyphPen.py,sha256=yLtB-E5pTQR59OKVYySttWBu1xC2vR8ezSaRhIMtVwg,11870
|
|
150
|
-
fontTools/pens/statisticsPen.py,sha256=
|
|
145
|
+
fontTools/pens/statisticsPen.py,sha256=piWK6NjjWqk9MLROjeE2-4EsxVYMyNU7UQFGD_trE9g,9808
|
|
151
146
|
fontTools/pens/cairoPen.py,sha256=wuuOJ1qQDSt_K3zscM2nukRyHZTZMwMzzCXCirfq_qQ,592
|
|
152
147
|
fontTools/pens/wxPen.py,sha256=W9RRHlBWHp-CVC4Exvk3ytBmRaB4-LgJPP5Bv7o9BA0,680
|
|
153
148
|
fontTools/pens/boundsPen.py,sha256=wE3owOQA8DfhH-zBGC3lJvnVwp-oyIt0KZrEqXbmS9I,3129
|
|
154
149
|
fontTools/pens/recordingPen.py,sha256=VgFZ4NMhnZt1qSTzFEU0cma-gw3kBe47bfSxPYH73rs,12489
|
|
155
|
-
fontTools/pens/momentsPen.cpython-311-darwin.so,sha256
|
|
150
|
+
fontTools/pens/momentsPen.cpython-311-darwin.so,sha256=-RToHJVBEHdX7869mkSgCuVeVdE8BshCw-Fu7XELTTI,272968
|
|
156
151
|
fontTools/pens/momentsPen.py,sha256=kjLVXhGe55Abl__Yr1gob0bl0dHe7fPSwyr7TRJnbug,25658
|
|
157
152
|
fontTools/pens/roundingPen.py,sha256=Q4vvG0Esq_sLNODU0TITU4F3wcXcKWo4BA7DWdDaVcM,4649
|
|
158
153
|
fontTools/pens/freetypePen.py,sha256=HD-gXJSbgImJdBc8sIBk0HWBdjv3WKFofs6PgCCsGOY,19908
|
|
@@ -190,16 +185,16 @@ fontTools/designspaceLib/split.py,sha256=FB1NuvhUO453UXveQZi9oyrW_caoCPM3RADp1rY
|
|
|
190
185
|
fontTools/designspaceLib/statNames.py,sha256=lDqFxZAKSbpMuLsgbK6XtyHA5lqLyAK0t561wsSWmaM,9069
|
|
191
186
|
fontTools/designspaceLib/__main__.py,sha256=xhtYXo1T1tsykhQDD0tcconSNYgWL5hoTBORpVDUYrc,103
|
|
192
187
|
fontTools/feaLib/error.py,sha256=Tq2dZUlCOyLfjTr3qibsT2g9t-S_JEf6bKgyNX55oCE,643
|
|
193
|
-
fontTools/feaLib/lexer.cpython-311-darwin.so,sha256=
|
|
188
|
+
fontTools/feaLib/lexer.cpython-311-darwin.so,sha256=byJvzXTIbTXcas7RhuhhHhcWv_FRj7qc1YTgergiaDk,411776
|
|
194
189
|
fontTools/feaLib/variableScalar.py,sha256=Xu8tpDlQbfIfjnKnYDEf43EqVdyIJUy8_1ROVPg9_mg,4069
|
|
195
190
|
fontTools/feaLib/lexer.c,sha256=vQ4myMvJqvp8rdY6YeEQJHM2Crw_eFajkHWefik884Q,750756
|
|
196
191
|
fontTools/feaLib/__init__.py,sha256=jlIru2ghxvb1HhC5Je2BCXjFJmFQlYKpruorPoz3BvQ,213
|
|
197
192
|
fontTools/feaLib/lookupDebugInfo.py,sha256=gVRr5-APWfT_a5-25hRuawSVX8fEvXVsOSLWkH91T2w,304
|
|
198
|
-
fontTools/feaLib/builder.py,sha256=
|
|
193
|
+
fontTools/feaLib/builder.py,sha256=y7t8_q0-PiPoLpXZCfThx1SmvF-ZpDDyVe8605FzaL4,71036
|
|
199
194
|
fontTools/feaLib/parser.py,sha256=wbfG_-rqrn2RWMRQMlR3-uaiM9k4_mzCVF-wPLr00rQ,98466
|
|
200
195
|
fontTools/feaLib/location.py,sha256=JXzHqGV56EHdcq823AwA5oaK05hf_1ySWpScbo3zGC0,234
|
|
201
196
|
fontTools/feaLib/lexer.py,sha256=emyMPmRoqNZkzxnJyI6JRCCtXrbCOFofwa9O6ABGLiw,11121
|
|
202
|
-
fontTools/feaLib/ast.py,sha256=
|
|
197
|
+
fontTools/feaLib/ast.py,sha256=3DU5NKXesyNCVu5wcebGlnvwdMf0_NKrPgOvS0FrWSg,73800
|
|
203
198
|
fontTools/feaLib/__main__.py,sha256=Df2PA6LXwna98lSXiL7R4as_ZEdWCIk3egSM5w7GpvM,2240
|
|
204
199
|
fontTools/ttLib/sfnt.py,sha256=rkznKfteU_Rn9P65WSjFaiwQgpEAoh-TrQpvkQhdIlo,22832
|
|
205
200
|
fontTools/ttLib/macUtils.py,sha256=lj3oeFpyjV7ko_JqnluneITmAtlc119J-vwTTg2s73A,1737
|
|
@@ -256,7 +251,7 @@ fontTools/ttLib/tables/otTraverse.py,sha256=oTr7nA7u7kEltLAhl4Kfl1RPD8O2_bKaoXa5
|
|
|
256
251
|
fontTools/ttLib/tables/_m_o_r_x.py,sha256=OwamVpIO7REDnFr95HuFPoY_0U6i9zQPb11K1sFTvDY,548
|
|
257
252
|
fontTools/ttLib/tables/_l_t_a_g.py,sha256=9YpApjI-rZ4e3HeT8Pj-osiHl3uALD9JXg5O7pqk9L0,2552
|
|
258
253
|
fontTools/ttLib/tables/D_S_I_G_.py,sha256=AgQPM9Cdro1P-ehJjTfsC9mRTTtSc16At0nnpb1XOGI,5517
|
|
259
|
-
fontTools/ttLib/tables/_g_l_y_f.py,sha256=
|
|
254
|
+
fontTools/ttLib/tables/_g_l_y_f.py,sha256=R0WuModxptcPfoBTZxvs5xDTnA9olAVf67blh-k-tmM,85631
|
|
260
255
|
fontTools/ttLib/tables/T_S_I_S_.py,sha256=tVBnl63vyZUIq93oM6dEjHCXvPn9vt5vvL3jG59b0Lg,341
|
|
261
256
|
fontTools/ttLib/tables/T_S_I_D_.py,sha256=TsdX-G2xxVQO9sSE1wE_xDRx-gor5YiXTHeUthMwCPY,341
|
|
262
257
|
fontTools/ttLib/tables/B_A_S_E_.py,sha256=H71A9pJ850mvjbrWHqy8iFI2Dxg7102YRtAkfdCooig,369
|
|
@@ -268,7 +263,7 @@ fontTools/ttLib/tables/C_B_L_C_.py,sha256=YXlwovoCHYx8THLQD9iBU_VGoaB9LFObEKtL6d
|
|
|
268
263
|
fontTools/ttLib/tables/T_S_I_P_.py,sha256=-il2ucTBOghVBY7cmleHdLZc3W3CKh7-iPPT0A3KBzk,341
|
|
269
264
|
fontTools/ttLib/tables/_m_a_x_p.py,sha256=cIDIZWse9czwwsnlxIh3qwgwaXbt7PQAjXKAcmMDspY,5264
|
|
270
265
|
fontTools/ttLib/tables/M_A_T_H_.py,sha256=-TVu9Nlcs-1shkElbIk-CWtUwXUMdycHFkjvPE8C_fs,342
|
|
271
|
-
fontTools/ttLib/tables/_n_a_m_e.py,sha256=
|
|
266
|
+
fontTools/ttLib/tables/_n_a_m_e.py,sha256=LYySKOxLr_t5dYKeNTqA8pozf8MfI1R_jS0SCHNViq0,41063
|
|
272
267
|
fontTools/ttLib/tables/M_E_T_A_.py,sha256=sA6ookcjchw8UYVEuS8QEXc62I9_Rms9cu_jKA6MkNI,11989
|
|
273
268
|
fontTools/ttLib/tables/_h_h_e_a.py,sha256=X4t1aF1MZMuz3phCVSFwKcNTeoZdx-042wFtHc-nK9w,4767
|
|
274
269
|
fontTools/ttLib/tables/S_T_A_T_.py,sha256=y9NiWCtnlZtMjw4K9_SdA84Xa-dJk7G5eb2dSe6ciWc,498
|
|
@@ -326,4 +321,9 @@ fontTools/colorLib/builder.py,sha256=kmO7OuudQQb3fEOS7aLzgTDVjqS9i2xIQmk9p1uBe8A
|
|
|
326
321
|
fontTools/colorLib/geometry.py,sha256=3ScySrR2YDJa7d5K5_xM5Yt1-3NCV-ry8ikYA5VwVbI,5518
|
|
327
322
|
fontTools/colorLib/errors.py,sha256=CsaviiRxxrpgVX4blm7KCyK8553ljwL44xkJOeC5U7U,41
|
|
328
323
|
fontTools/colorLib/unbuilder.py,sha256=iW-E5I39WsV82K3NgCO4Cjzwm1WqzGrtypHt8epwbHM,2142
|
|
329
|
-
fonttools-4.55.
|
|
324
|
+
fonttools-4.55.6.dist-info/RECORD,,
|
|
325
|
+
fonttools-4.55.6.dist-info/LICENSE,sha256=Z4cgj4P2Wcy8IiOy_elS_6b36KymLxqKK_W8UbsbI4M,1072
|
|
326
|
+
fonttools-4.55.6.dist-info/WHEEL,sha256=K10eKSN6_vzvMOgXxWbVOQNR7Orfl6gBTCpCI8bcYx4,114
|
|
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/METADATA,sha256=GcD2y8KE7yKQbFGQyPNPCQVQHvYSGs07zMFLQUrW3n8,166074
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|