fonttools 4.55.3__cp39-cp39-macosx_10_9_universal2.whl → 4.55.5__cp39-cp39-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.

@@ -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
- return _splitCubicAtT(a, b, c, d, *ts)
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(
@@ -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:
@@ -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
@@ -1241,7 +1241,7 @@ class Glyph(object):
1241
1241
  else:
1242
1242
  return self.numberOfContours == -1
1243
1243
 
1244
- def getCoordinates(self, glyfTable):
1244
+ def getCoordinates(self, glyfTable, round=noRound):
1245
1245
  """Return the coordinates, end points and flags
1246
1246
 
1247
1247
  This method returns three values: A :py:class:`GlyphCoordinates` object,
@@ -1267,13 +1267,16 @@ class Glyph(object):
1267
1267
  for compo in self.components:
1268
1268
  g = glyfTable[compo.glyphName]
1269
1269
  try:
1270
- coordinates, endPts, flags = g.getCoordinates(glyfTable)
1270
+ coordinates, endPts, flags = g.getCoordinates(
1271
+ glyfTable, round=round
1272
+ )
1271
1273
  except RecursionError:
1272
1274
  raise ttLib.TTLibError(
1273
1275
  "glyph '%s' contains a recursive component reference"
1274
1276
  % compo.glyphName
1275
1277
  )
1276
1278
  coordinates = GlyphCoordinates(coordinates)
1279
+ coordinates.toInt(round=round)
1277
1280
  if hasattr(compo, "firstPt"):
1278
1281
  # component uses two reference points: we apply the transform _before_
1279
1282
  # computing the offset between the points
@@ -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 = getattr(self, "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
1
+ Metadata-Version: 2.2
2
2
  Name: fonttools
3
- Version: 4.55.3
3
+ Version: 4.55.5
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,21 @@ Have fun!
377
389
  Changelog
378
390
  ~~~~~~~~~
379
391
 
380
- 4.55.3 (released 2024-12-10)
392
+ 4.55.5 (released 2025-01-23)
393
+ ----------------------------
394
+
395
+ - [glyf] Fixed recalcBounds of transformed components with unrounded coordinates (#3750).
396
+ - [feaLib] Allow duplicate script/language statements (#3749).
397
+
398
+ 4.55.4 (released 2025-01-21)
381
399
  ----------------------------
382
400
 
401
+ - [bezierTools] Fixed ``splitCubicAtT`` sometimes not returning identical start/end points as result of numerical precision (#3742, #3743).
402
+ - [feaLib/ast] Fixed docstring of ``AlternateSubstStatement`` (#3735).
403
+ - [transform] Typing fixes (#3734).
404
+
405
+ 4.55.3 (released 2024-12-10)
406
+ ----------------------------
383
407
 
384
408
  - [Docs] fill out ttLib table section [#3716]
385
409
  - [feaLib] More efficient inline format 4 lookups [#3726]
@@ -403,7 +427,6 @@ Changelog
403
427
  4.55.0 (released 2024-11-14)
404
428
  ----------------------------
405
429
 
406
-
407
430
  - [cffLib.specializer] Adjust stack use calculation (#3689)
408
431
  - [varLib] Lets not add mac names if the rest of name doesn't have them (#3688)
409
432
  - [ttLib.reorderGlyphs] Update CFF table charstrings and charset (#3682)
@@ -1,13 +1,13 @@
1
- fonttools-4.55.3.dist-info/RECORD,,
2
- fonttools-4.55.3.dist-info/LICENSE,sha256=Z4cgj4P2Wcy8IiOy_elS_6b36KymLxqKK_W8UbsbI4M,1072
3
- fonttools-4.55.3.dist-info/WHEEL,sha256=6Jttq6AfcWtuRmLm2_3IJTdjGV1CXy3Nk5dn_Y8g5fU,112
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.5.dist-info/RECORD,,
2
+ fonttools-4.55.5.dist-info/LICENSE,sha256=Z4cgj4P2Wcy8IiOy_elS_6b36KymLxqKK_W8UbsbI4M,1072
3
+ fonttools-4.55.5.dist-info/WHEEL,sha256=WwXsMctN3PTYNjsKqwUSvPchw2tnl4FqfTsIm7Wfyp8,112
4
+ fonttools-4.55.5.dist-info/entry_points.txt,sha256=8kVHddxfFWA44FSD4mBpmC-4uCynQnkoz_9aNJb227Y,147
5
+ fonttools-4.55.5.dist-info/top_level.txt,sha256=rRgRylrXzekqWOsrhygzib12pQ7WILf7UGjqEwkIFDM,10
6
+ fonttools-4.55.5.dist-info/METADATA,sha256=LTpr4fuHsoSAtkaG68Uuij-9NQNhB8V_Ra8J14m7u1M,165880
7
7
  fontTools/ttx.py,sha256=XCerBn2ySMc5Bn54io4j5U5cW228GFREYvEeuvp0ZfM,16652
8
8
  fontTools/fontBuilder.py,sha256=ntG0lXnhXNcHK-C7bp0nGNQ68OutFA-84TNNpzntTcE,33952
9
9
  fontTools/unicode.py,sha256=ZZ7OMmWvIyV1IL1k6ioTzaRAh3tUvm6gvK7QgFbOIHY,1237
10
- fontTools/__init__.py,sha256=RzqvYZ4XuSVQo17n6eW2jL_XA6YjAfBybJrwLrYIOHE,183
10
+ fontTools/__init__.py,sha256=OYDPTWCWOw88Y0Ovnd6VAvxaE753VM7PqOK6uaMfM6s,183
11
11
  fontTools/tfmLib.py,sha256=UMbkM73JXRJVS9t2B-BJc13rSjImaWBuzCoehLwHFhs,14270
12
12
  fontTools/afmLib.py,sha256=1MagIItOzRV4vV5kKPxeDZbPJsfxLB3wdHLFkQvl0uk,13164
13
13
  fontTools/agl.py,sha256=05bm8Uq45uVWW8nPbP6xbNgmFyxQr8sWhYAiP0VSjnI,112975
@@ -18,7 +18,7 @@ fontTools/encodings/__init__.py,sha256=DJBWmoX_Haau7qlgmvWyfbhSzrX2qL636Rns7CG01
18
18
  fontTools/encodings/MacRoman.py,sha256=4vEooUDm2gLCG8KIIDhRxm5-A64w7XrhP9cjDRr2Eo0,3576
19
19
  fontTools/encodings/StandardEncoding.py,sha256=Eo3AGE8FE_p-IVYYuV097KouSsF3UrXoRRN0XyvYbrs,3581
20
20
  fontTools/qu2cu/benchmark.py,sha256=GMcr_4r7L6K9SmJ13itt-_XKhnKqSVUDPlXUG6IZmmM,1400
21
- fontTools/qu2cu/qu2cu.cpython-39-darwin.so,sha256=RJfJTCDBN3rmvZkQk-H8V0Za1HQ_1BoLJWfEfrImUbg,344864
21
+ fontTools/qu2cu/qu2cu.cpython-39-darwin.so,sha256=LKoHp9xT5Y9eWEZMOCT8QuCXI75ExJ87nerqZHvW-G4,344864
22
22
  fontTools/qu2cu/__init__.py,sha256=Jfm1JljXbt91w4gyvZn6jzEmVnhRx50sh2fDongrOsE,618
23
23
  fontTools/qu2cu/qu2cu.py,sha256=IYtpkwHdfKOXJr65Y_pJ9Lrt_MgJaISAKGMAs5ilFSM,12288
24
24
  fontTools/qu2cu/cli.py,sha256=U2rooYnVVEalGRAWGFHk-Kp6Okys8wtzdaWLjw1bngY,3714
@@ -50,20 +50,20 @@ fontTools/misc/textTools.py,sha256=pbhr6LVhm3J-0Z4saYnJfxBDzyoiw4BR9pAgwypiOw8,3
50
50
  fontTools/misc/visitor.py,sha256=S3I_OCavPhkwGQpwIKV9XjNCaWUcafo7HQCyxDI0nQg,5314
51
51
  fontTools/misc/macCreatorType.py,sha256=Je9jtqUr7EPbpH3QxlVl3pizoQ-1AOPMBIctHIMTM3k,1593
52
52
  fontTools/misc/psCharStrings.py,sha256=Tb5-k_5krP0eu7qD054iGxE4Zybk9oB4jdiKzcsV0rw,43036
53
- fontTools/misc/bezierTools.cpython-39-darwin.so,sha256=uQTb06DE5eoL4aVz3ulrOYZGDUDQrxyWh1CZbH-UqfQ,1060296
54
- fontTools/misc/transform.py,sha256=eOr8sF4oojAEc_GIST3S0uVFN4kgkVbHv1aPOS9biSw,15618
53
+ fontTools/misc/bezierTools.cpython-39-darwin.so,sha256=86xeTansyykfEKhVod0A7G-7k5rBtu0jRmTUaqVNjIY,1060648
54
+ fontTools/misc/transform.py,sha256=OR8dPsAw87z77gkZQMq00iUkDWLIxYv-12XiKH1-erk,15798
55
55
  fontTools/misc/etree.py,sha256=EPldipUNNMvbPimNX7qOUwKkbpJMY4uyElhe-wqKWkM,17079
56
56
  fontTools/misc/xmlReader.py,sha256=igut4_d13RT4WarliqVvuuPybO1uSXVeoBOeW4j0_e4,6580
57
- fontTools/misc/bezierTools.c,sha256=JGI_oE1RxSahAIJKQcwL0_sBAZweIrpeferhb7fD6vE,1802142
57
+ fontTools/misc/bezierTools.c,sha256=tIJLZkz3M1Lsc_dg1ApLWmdOezdsNt2tXpuk3c3Dclo,1814052
58
58
  fontTools/misc/dictTools.py,sha256=VxjarsGJuk_wa3z29FSCtKZNCFfXtMBiNEu0RPAlpDk,2417
59
- fontTools/misc/bezierTools.py,sha256=wLd4UkuHQ1Wi8Pvw1cpXoTVV7bbpK_qmAhuiWvBfb3o,44731
59
+ fontTools/misc/bezierTools.py,sha256=OmR3pzCGExNvZyTPrByH7gQHpAJsYOl1cmvfYQIVfQA,45038
60
60
  fontTools/misc/eexec.py,sha256=GNn2OCRvO1HbbIeDPxk9i0glO7cux_AQaoVMXhBR8y8,3331
61
61
  fontTools/misc/xmlWriter.py,sha256=CA1c-Ov5vFTF9tT4bGk-f3yBvaX7lVmSdLPYygUqlAE,6046
62
62
  fontTools/misc/intTools.py,sha256=l6pjk4UYlXcyLtfC0DdOC5RL6UJ8ihRR0zRiYow5xA8,586
63
63
  fontTools/misc/iterTools.py,sha256=17H6LPZszp32bTKoNorp6uZF1PKj47BAbe5QG8irUjo,390
64
64
  fontTools/misc/plistlib/__init__.py,sha256=1HfhHPt3As6u2eRSlFfl6XdnXv_ypQImeQdWIw6wK7Y,21113
65
65
  fontTools/misc/plistlib/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
- fontTools/cu2qu/cu2qu.cpython-39-darwin.so,sha256=7oWWrZE_ngkjgGguiVG5Ij68F7qGAlgaa3aacABFRWs,307136
66
+ fontTools/cu2qu/cu2qu.cpython-39-darwin.so,sha256=jg_3e1k8fmlVd3uJ39S9iojgTqmM1zn7BDgRceFSP5g,307136
67
67
  fontTools/cu2qu/benchmark.py,sha256=wasPJmf8q9k9UHjpHChC3WQAGbBAyHN9PvJzXvWC0Fw,1296
68
68
  fontTools/cu2qu/cu2qu.c,sha256=zvMRDcmpgT7WY6HSX9N97fVaSdEA9LZJYBKfE40hoK0,589430
69
69
  fontTools/cu2qu/__init__.py,sha256=Cuc7Uglb0nSgaraTxXY5J8bReznH5wApW0uakN7MycY,618
@@ -117,7 +117,7 @@ fontTools/varLib/interpolatable.py,sha256=Bhlq_LhEZ-sXfLNY8aFEChFrsKuT2kzmnuMfG5
117
117
  fontTools/varLib/avarPlanner.py,sha256=uLMGsL6cBbEMq5YItwABG_vXlXV3bxquM93WGDJ1brA,27358
118
118
  fontTools/varLib/mvar.py,sha256=LTV77vH_3Ecg_qKBO5xQzjLOlJir_ppEr7mPVZRgad8,2449
119
119
  fontTools/varLib/errors.py,sha256=dMo8eGj76I7H4hrBEiNbYrGs2J1K1SwdsUyTHpkVOrQ,6934
120
- fontTools/varLib/iup.cpython-39-darwin.so,sha256=vxnLyiTxf3pATgnV9iwqCf1a2kIq6XCmaaRSPS5aFno,396192
120
+ fontTools/varLib/iup.cpython-39-darwin.so,sha256=yVa_iQUxNSwwRDiwvAfSS600E0_IVVbzVs-ngJ43tOs,396192
121
121
  fontTools/varLib/__main__.py,sha256=wbdYC5bPjWCxA0I4SKcLO88gl-UMtsYS8MxdW9ySTkY,95
122
122
  fontTools/varLib/featureVars.py,sha256=BCOBGjGUv2Rw_z0rlVi1ZYkTDcCMh0LyAUzDVJ2PYm4,25448
123
123
  fontTools/varLib/interpolate_layout.py,sha256=22VjGZuV2YiAe2MpdTf0xPVz1x2G84bcOL0vOeBpGQM,3689
@@ -147,14 +147,14 @@ fontTools/pens/momentsPen.c,sha256=ObZVy0eAslCcXxpf9enZD1RtKpdikXt26VetwzqTyB0,5
147
147
  fontTools/pens/perimeterPen.py,sha256=lr6NzrIWxi4TXBJPbcJsKzqABWfQeil2Bgm9BgUD3N4,2153
148
148
  fontTools/pens/__init__.py,sha256=DJBWmoX_Haau7qlgmvWyfbhSzrX2qL636Rns7CG01pk,75
149
149
  fontTools/pens/ttGlyphPen.py,sha256=yLtB-E5pTQR59OKVYySttWBu1xC2vR8ezSaRhIMtVwg,11870
150
- fontTools/pens/statisticsPen.py,sha256=Hjy8SmXxRzOtkTjpvKVmfY_2WcIZ5veZYuX-t6YQ1yA,9640
150
+ fontTools/pens/statisticsPen.py,sha256=piWK6NjjWqk9MLROjeE2-4EsxVYMyNU7UQFGD_trE9g,9808
151
151
  fontTools/pens/cairoPen.py,sha256=wuuOJ1qQDSt_K3zscM2nukRyHZTZMwMzzCXCirfq_qQ,592
152
152
  fontTools/pens/wxPen.py,sha256=W9RRHlBWHp-CVC4Exvk3ytBmRaB4-LgJPP5Bv7o9BA0,680
153
153
  fontTools/pens/boundsPen.py,sha256=wE3owOQA8DfhH-zBGC3lJvnVwp-oyIt0KZrEqXbmS9I,3129
154
154
  fontTools/pens/recordingPen.py,sha256=VgFZ4NMhnZt1qSTzFEU0cma-gw3kBe47bfSxPYH73rs,12489
155
155
  fontTools/pens/momentsPen.py,sha256=kjLVXhGe55Abl__Yr1gob0bl0dHe7fPSwyr7TRJnbug,25658
156
156
  fontTools/pens/roundingPen.py,sha256=Q4vvG0Esq_sLNODU0TITU4F3wcXcKWo4BA7DWdDaVcM,4649
157
- fontTools/pens/momentsPen.cpython-39-darwin.so,sha256=0P77E2bLo4pDBQY1vIKtJaMm4sfTE5M6Rxc3qtRRAvc,272904
157
+ fontTools/pens/momentsPen.cpython-39-darwin.so,sha256=egx_hiJqys3sXNMVEzY48O_sspR4cC-Tvu_8cvA68vE,272904
158
158
  fontTools/pens/freetypePen.py,sha256=HD-gXJSbgImJdBc8sIBk0HWBdjv3WKFofs6PgCCsGOY,19908
159
159
  fontTools/pens/explicitClosingLinePen.py,sha256=kKKtdZiwaf8Cj4_ytrIDdGB2GMpPPDXm5Nwbw5WDgwU,3219
160
160
  fontTools/pens/reverseContourPen.py,sha256=oz64ZRhLAvT7DYMAwGKoLzZXQK8l81jRiYnTZkW6a-Y,4022
@@ -194,12 +194,12 @@ fontTools/feaLib/variableScalar.py,sha256=Xu8tpDlQbfIfjnKnYDEf43EqVdyIJUy8_1ROVP
194
194
  fontTools/feaLib/lexer.c,sha256=vQ4myMvJqvp8rdY6YeEQJHM2Crw_eFajkHWefik884Q,750756
195
195
  fontTools/feaLib/__init__.py,sha256=jlIru2ghxvb1HhC5Je2BCXjFJmFQlYKpruorPoz3BvQ,213
196
196
  fontTools/feaLib/lookupDebugInfo.py,sha256=gVRr5-APWfT_a5-25hRuawSVX8fEvXVsOSLWkH91T2w,304
197
- fontTools/feaLib/builder.py,sha256=JTNF8AvveJmU0NDs0TV9wnUFjDkh9fdn3E6SPhtatvs,70578
197
+ fontTools/feaLib/builder.py,sha256=y7t8_q0-PiPoLpXZCfThx1SmvF-ZpDDyVe8605FzaL4,71036
198
198
  fontTools/feaLib/parser.py,sha256=wbfG_-rqrn2RWMRQMlR3-uaiM9k4_mzCVF-wPLr00rQ,98466
199
199
  fontTools/feaLib/location.py,sha256=JXzHqGV56EHdcq823AwA5oaK05hf_1ySWpScbo3zGC0,234
200
- fontTools/feaLib/lexer.cpython-39-darwin.so,sha256=2NYtgfWFrncso-lAHsBuVjI9qu33sBI6-eXGup0iq3I,395184
200
+ fontTools/feaLib/lexer.cpython-39-darwin.so,sha256=4pdoNEYmUkV0MYvUgLVXSfo5nfpS0NP1OUu47WsdcC0,395184
201
201
  fontTools/feaLib/lexer.py,sha256=emyMPmRoqNZkzxnJyI6JRCCtXrbCOFofwa9O6ABGLiw,11121
202
- fontTools/feaLib/ast.py,sha256=_27skibzPidJtI5lUFeVjEv5NVaNPbuz4u8oZfMuxMk,73801
202
+ fontTools/feaLib/ast.py,sha256=3DU5NKXesyNCVu5wcebGlnvwdMf0_NKrPgOvS0FrWSg,73800
203
203
  fontTools/feaLib/__main__.py,sha256=Df2PA6LXwna98lSXiL7R4as_ZEdWCIk3egSM5w7GpvM,2240
204
204
  fontTools/ttLib/sfnt.py,sha256=rkznKfteU_Rn9P65WSjFaiwQgpEAoh-TrQpvkQhdIlo,22832
205
205
  fontTools/ttLib/macUtils.py,sha256=lj3oeFpyjV7ko_JqnluneITmAtlc119J-vwTTg2s73A,1737
@@ -256,7 +256,7 @@ fontTools/ttLib/tables/otTraverse.py,sha256=oTr7nA7u7kEltLAhl4Kfl1RPD8O2_bKaoXa5
256
256
  fontTools/ttLib/tables/_m_o_r_x.py,sha256=OwamVpIO7REDnFr95HuFPoY_0U6i9zQPb11K1sFTvDY,548
257
257
  fontTools/ttLib/tables/_l_t_a_g.py,sha256=9YpApjI-rZ4e3HeT8Pj-osiHl3uALD9JXg5O7pqk9L0,2552
258
258
  fontTools/ttLib/tables/D_S_I_G_.py,sha256=AgQPM9Cdro1P-ehJjTfsC9mRTTtSc16At0nnpb1XOGI,5517
259
- fontTools/ttLib/tables/_g_l_y_f.py,sha256=nO1wO9P2aC7sgJrBGkr2bOc_mhagCtF8HW2SGRBtFwk,84531
259
+ fontTools/ttLib/tables/_g_l_y_f.py,sha256=FOUV04tS3lxwecbmlPwkYbbmI9tjTndrrPQKedbC4lA,84667
260
260
  fontTools/ttLib/tables/T_S_I_S_.py,sha256=tVBnl63vyZUIq93oM6dEjHCXvPn9vt5vvL3jG59b0Lg,341
261
261
  fontTools/ttLib/tables/T_S_I_D_.py,sha256=TsdX-G2xxVQO9sSE1wE_xDRx-gor5YiXTHeUthMwCPY,341
262
262
  fontTools/ttLib/tables/B_A_S_E_.py,sha256=H71A9pJ850mvjbrWHqy8iFI2Dxg7102YRtAkfdCooig,369
@@ -268,7 +268,7 @@ fontTools/ttLib/tables/C_B_L_C_.py,sha256=YXlwovoCHYx8THLQD9iBU_VGoaB9LFObEKtL6d
268
268
  fontTools/ttLib/tables/T_S_I_P_.py,sha256=-il2ucTBOghVBY7cmleHdLZc3W3CKh7-iPPT0A3KBzk,341
269
269
  fontTools/ttLib/tables/_m_a_x_p.py,sha256=cIDIZWse9czwwsnlxIh3qwgwaXbt7PQAjXKAcmMDspY,5264
270
270
  fontTools/ttLib/tables/M_A_T_H_.py,sha256=-TVu9Nlcs-1shkElbIk-CWtUwXUMdycHFkjvPE8C_fs,342
271
- fontTools/ttLib/tables/_n_a_m_e.py,sha256=6bj6cD43eSUQ7WjAsUTy0x15aOLL1HOuYq0eDgQS54U,41426
271
+ fontTools/ttLib/tables/_n_a_m_e.py,sha256=LYySKOxLr_t5dYKeNTqA8pozf8MfI1R_jS0SCHNViq0,41063
272
272
  fontTools/ttLib/tables/M_E_T_A_.py,sha256=sA6ookcjchw8UYVEuS8QEXc62I9_Rms9cu_jKA6MkNI,11989
273
273
  fontTools/ttLib/tables/_h_h_e_a.py,sha256=X4t1aF1MZMuz3phCVSFwKcNTeoZdx-042wFtHc-nK9w,4767
274
274
  fontTools/ttLib/tables/S_T_A_T_.py,sha256=y9NiWCtnlZtMjw4K9_SdA84Xa-dJk7G5eb2dSe6ciWc,498
@@ -326,4 +326,4 @@ fontTools/colorLib/builder.py,sha256=kmO7OuudQQb3fEOS7aLzgTDVjqS9i2xIQmk9p1uBe8A
326
326
  fontTools/colorLib/geometry.py,sha256=3ScySrR2YDJa7d5K5_xM5Yt1-3NCV-ry8ikYA5VwVbI,5518
327
327
  fontTools/colorLib/errors.py,sha256=CsaviiRxxrpgVX4blm7KCyK8553ljwL44xkJOeC5U7U,41
328
328
  fontTools/colorLib/unbuilder.py,sha256=iW-E5I39WsV82K3NgCO4Cjzwm1WqzGrtypHt8epwbHM,2142
329
- fonttools-4.55.3.data/data/share/man/man1/ttx.1,sha256=cLbm_pOOj1C76T2QXvDxzwDj9gk-GTd5RztvTMsouFw,5377
329
+ fonttools-4.55.5.data/data/share/man/man1/ttx.1,sha256=cLbm_pOOj1C76T2QXvDxzwDj9gk-GTd5RztvTMsouFw,5377
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.6.0)
2
+ Generator: setuptools (75.8.0)
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp39-cp39-macosx_10_9_universal2
5
5