fonttools 4.55.3__cp313-cp313-win32.whl → 4.55.4__cp313-cp313-win32.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.

Binary file
@@ -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:
Binary file
@@ -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
@@ -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.4
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,15 @@ Have fun!
377
389
  Changelog
378
390
  ~~~~~~~~~
379
391
 
380
- 4.55.3 (released 2024-12-10)
392
+ 4.55.4 (released 2025-01-21)
381
393
  ----------------------------
382
394
 
395
+ - [bezierTools] Fixed ``splitCubicAtT`` sometimes not returning identical start/end points as result of numerical precision (#3742, #3743).
396
+ - [feaLib/ast] Fixed docstring of ``AlternateSubstStatement`` (#3735).
397
+ - [transform] Typing fixes (#3734).
398
+
399
+ 4.55.3 (released 2024-12-10)
400
+ ----------------------------
383
401
 
384
402
  - [Docs] fill out ttLib table section [#3716]
385
403
  - [feaLib] More efficient inline format 4 lookups [#3726]
@@ -403,7 +421,6 @@ Changelog
403
421
  4.55.0 (released 2024-11-14)
404
422
  ----------------------------
405
423
 
406
-
407
424
  - [cffLib.specializer] Adjust stack use calculation (#3689)
408
425
  - [varLib] Lets not add mac names if the rest of name doesn't have them (#3688)
409
426
  - [ttLib.reorderGlyphs] Update CFF table charstrings and charset (#3682)
@@ -1,4 +1,4 @@
1
- fontTools/__init__.py,sha256=MP_1iTN0EFf0VaKmXbVsbAsJ-QgvrRYdnaPmVQUc-JQ,191
1
+ fontTools/__init__.py,sha256=JV3_oXfC3f76I5_IohOgqBFezLp2eTgShySbSHe3IjQ,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.cp313-win32.pyd,sha256=M3HXgbLFUv1_6IhD3YI9xTzbbwE1fnP0atddDM7-e-g,97280
28
+ fontTools/cu2qu/cu2qu.cp313-win32.pyd,sha256=czcIbZWKHHp1ZMy50aRmr0TvQekHHk9EE98PkfEBFtM,97280
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=rjEQSs5fFCCUM03RIEJ1iohPv-VPttlkngE_UzTKOL8,75935
43
+ fontTools/feaLib/ast.py,sha256=3bDOxPIwmxM5tjhnI8K7pheRkgEHYMb_ExJsco0SyDU,75934
44
44
  fontTools/feaLib/builder.py,sha256=exK2143ntpp9tCKJJXGldqpSLmMdBwerncD_sFzd_9E,72319
45
45
  fontTools/feaLib/error.py,sha256=PSXeclXORb9hkvXh95e6YrNKZpPPWkekXOJZCSEhSjg,665
46
46
  fontTools/feaLib/lexer.c,sha256=yKf2WoKLiJJcrI35TuqUxIQYLOLoyr5D2MhcxY8vFF8,750768
47
- fontTools/feaLib/lexer.cp313-win32.pyd,sha256=MZECF6jLdzMl7fSmhgsPVCSJAFqcNw706VHrtigPCGY,131072
47
+ fontTools/feaLib/lexer.cp313-win32.pyd,sha256=7WFRZY6mJZQCyWQ6kbuwssE7FKRRI50g1IM-Bstk0-w,131072
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
@@ -61,9 +61,9 @@ fontTools/merge/unicode.py,sha256=mgqRFhRugda62Xt0r28SduaN7YBzRfHxrpNprjLqoX8,43
61
61
  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
- fontTools/misc/bezierTools.c,sha256=6GXbwsUuu68dBOek0XIdZTM4S3qI35B-0v80SPHBXmo,1802154
65
- fontTools/misc/bezierTools.cp313-win32.pyd,sha256=_WlRz4Fu2Fi5IsHEKcUm9GdkJrIrwzDHVh0JuKaWJt8,360448
66
- fontTools/misc/bezierTools.py,sha256=pGC_2kFPjSftWVm7DJTh9xxfddUw2DkBPFn4779iq1o,46221
64
+ fontTools/misc/bezierTools.c,sha256=IpsvlD6PupyRJ0mNv6-fEeN9ubSaLCKFsa_pTjTO-Kg,1814064
65
+ fontTools/misc/bezierTools.cp313-win32.pyd,sha256=MTzPoBI-W_FyeJurJIH_qcga1BZdEhgpKryyjtmmmV4,363008
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
69
69
  fontTools/misc/configTools.py,sha256=JNR7HqId8zudAlFcK4lwocHZkwgaTSH4u6BOyFLTujw,11537
@@ -90,7 +90,7 @@ fontTools/misc/symfont.py,sha256=ZxyD-mipj7raOtXDdCakpwoSo0hsKPJXLlp3OBPHraE,723
90
90
  fontTools/misc/testTools.py,sha256=OhWQmnuWrgJWtME_9fHG7Npd1JzVktCPcbHiccxL2wI,7162
91
91
  fontTools/misc/textTools.py,sha256=NIBmM6k9PXIs8DMpio-9ckHS35QxL2EMFwBXP6zG-8w,3531
92
92
  fontTools/misc/timeTools.py,sha256=lmncKUKvxQKO4Kqx2k7UNFkYYpj2n5CwR1lPiLZv3tA,2322
93
- fontTools/misc/transform.py,sha256=WZ9mVAEBqcyhCCUmLLS-hDuiFgppQYvK3e-jESkugGY,16136
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
96
  fontTools/misc/visitor.py,sha256=h35A4SWww-MNII7f68bc9pj1-2poTxztvVpKH5EEtEE,5456
@@ -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.cp313-win32.pyd,sha256=Xs-HlWm5YPd1W4GoxZQpL8lBGIC3NI4clCR52caiQW8,89600
122
+ fontTools/pens/momentsPen.cp313-win32.pyd,sha256=vSxKdvQFiDLZCpKIE8uzUmS7qJcAgsh34tt_7d0pYvA,89600
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
@@ -131,7 +131,7 @@ fontTools/pens/recordingPen.py,sha256=hw393TStvhoF1XT7aidpVQ8glASbxZuARnUAyUyZAG
131
131
  fontTools/pens/reportLabPen.py,sha256=vVRG044LvUvFtqrRFYRiMFS_USHAeAvz9y9-7__WbY4,2145
132
132
  fontTools/pens/reverseContourPen.py,sha256=E_Ny86JfiMoQ04VfswMtdpaKCU37wNy9ifOccb0aWKQ,4118
133
133
  fontTools/pens/roundingPen.py,sha256=AHC1J0dgRChtFmkkgeR1D1ZNFUoHZTcHpWRIyL5d1_Q,4779
134
- fontTools/pens/statisticsPen.py,sha256=zVMmaCHxiMnmdghb2yDKPkSSPUxs2JYMjepXP4I_6iA,9947
134
+ fontTools/pens/statisticsPen.py,sha256=F_JjbNtvYmJ0b3Fbv3BA3-LZhecodPr4tJEQZZd4Jxc,10120
135
135
  fontTools/pens/svgPathPen.py,sha256=4aU4iTlnGuzzyXrBgfHvrjMOkC2rdSF8HOkJ_q8tZ38,8882
136
136
  fontTools/pens/t2CharStringPen.py,sha256=vG6gmTe2bWc-bCn4-LQgv1f16p62oNWJUn8FiXTl0EM,2459
137
137
  fontTools/pens/teePen.py,sha256=19N3FEaFm4mGMTZrEn5Qg4YiXGGK61zcXjh2LcRxe_s,1345
@@ -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.cp313-win32.pyd,sha256=vRfFGT_uxYP-yQ9BGnF6qGdO2f5Q-QbMeuKliRWdLDc,106496
146
+ fontTools/qu2cu/qu2cu.cp313-win32.pyd,sha256=oSDv_yCUXDBl-capm_OzL8fY4iI1Lnu168jHkoIjsMw,106496
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
@@ -248,7 +248,7 @@ fontTools/ttLib/tables/_m_a_x_p.py,sha256=9B6lvWo4y42dyLPIvG6CsVOlWCk7bs4DoVJDB8
248
248
  fontTools/ttLib/tables/_m_e_t_a.py,sha256=I8HaZgcIPQZcCxBiSX0rGrfrs-zXRGUfEbJ8eGvZ07A,4025
249
249
  fontTools/ttLib/tables/_m_o_r_t.py,sha256=LU3D9PmV_nFs6hoccGmr1pfUzjJaeB_WRW2OIS0RwPc,501
250
250
  fontTools/ttLib/tables/_m_o_r_x.py,sha256=vLyrtx_O__BwnPi7Qo3oT8WHaANRARtHcqHSdZ5ct0E,563
251
- fontTools/ttLib/tables/_n_a_m_e.py,sha256=eMkpYbxSfXpXhzuo87b9sQ6-KRStAVCeoXi5jrwVyME,42671
251
+ fontTools/ttLib/tables/_n_a_m_e.py,sha256=bvahvBMX21pC6G83D35WZap6F7BDd7Xi2AmhVMBZz00,42300
252
252
  fontTools/ttLib/tables/_o_p_b_d.py,sha256=lfJi6kblt_nGmGmRSupwEaud3Ri_y6ftWNuyrCPpzQ0,462
253
253
  fontTools/ttLib/tables/_p_o_s_t.py,sha256=rgY2-OvgvCK_F6qcBUrPIEcIMpBvWfX1AJEOyxxOGqI,11927
254
254
  fontTools/ttLib/tables/_p_r_e_p.py,sha256=qWDjHiHvHaJCx2hYFmjJeMwpgwvD-cG5zkibMh9TWuk,443
@@ -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.cp313-win32.pyd,sha256=HLivWPUsqbYheX9JV2Jd6ZM7IuL-e-R1bdAy6I_Vaos,126976
302
+ fontTools/varLib/iup.cp313-win32.pyd,sha256=5rnfCtvzk1hKaROV33MOlOIX3BRpe3bu_NtpGKLlI3o,126976
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.3.data/data/share/man/man1/ttx.1,sha256=E71F9mRNWlttVpzlnP7w_fqkQygPkph5s-AtVa0Js50,5601
324
- fonttools-4.55.3.dist-info/LICENSE,sha256=Ir74Bpfs-qF_l-YrmibfoSggvgVYPo3RKtFpskEnTJk,1093
325
- fonttools-4.55.3.dist-info/METADATA,sha256=XVEqqqeWctr-6KmXfMHa2x5rdO-01XnMOD-OeK_nOdI,168502
326
- fonttools-4.55.3.dist-info/WHEEL,sha256=pUXSsnGWJ09R6rv65E7mPoM8rWovBqrkySmEuK3ly_A,97
327
- fonttools-4.55.3.dist-info/entry_points.txt,sha256=8kVHddxfFWA44FSD4mBpmC-4uCynQnkoz_9aNJb227Y,147
328
- fonttools-4.55.3.dist-info/top_level.txt,sha256=rRgRylrXzekqWOsrhygzib12pQ7WILf7UGjqEwkIFDM,10
329
- fonttools-4.55.3.dist-info/RECORD,,
323
+ fonttools-4.55.4.data/data/share/man/man1/ttx.1,sha256=E71F9mRNWlttVpzlnP7w_fqkQygPkph5s-AtVa0Js50,5601
324
+ fonttools-4.55.4.dist-info/LICENSE,sha256=Ir74Bpfs-qF_l-YrmibfoSggvgVYPo3RKtFpskEnTJk,1093
325
+ fonttools-4.55.4.dist-info/METADATA,sha256=nj_IBl5pZSZltLTRIAUoGx_oa8qvb8DvIBWCkbwTnMs,169069
326
+ fonttools-4.55.4.dist-info/WHEEL,sha256=DFEd4wH53WDAEWJlYTy3wsIIOJTkJ3-fMddO9UbJavY,97
327
+ fonttools-4.55.4.dist-info/entry_points.txt,sha256=8kVHddxfFWA44FSD4mBpmC-4uCynQnkoz_9aNJb227Y,147
328
+ fonttools-4.55.4.dist-info/top_level.txt,sha256=rRgRylrXzekqWOsrhygzib12pQ7WILf7UGjqEwkIFDM,10
329
+ fonttools-4.55.4.dist-info/RECORD,,
@@ -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: cp313-cp313-win32
5
5