fonttools 4.59.1__cp310-cp310-win_amd64.whl → 4.60.0__cp310-cp310-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.

Files changed (51) hide show
  1. fontTools/__init__.py +1 -1
  2. fontTools/annotations.py +30 -0
  3. fontTools/cu2qu/cu2qu.c +1185 -971
  4. fontTools/cu2qu/cu2qu.cp310-win_amd64.pyd +0 -0
  5. fontTools/cu2qu/cu2qu.py +36 -4
  6. fontTools/feaLib/builder.py +9 -3
  7. fontTools/feaLib/lexer.c +18 -12
  8. fontTools/feaLib/lexer.cp310-win_amd64.pyd +0 -0
  9. fontTools/feaLib/parser.py +11 -1
  10. fontTools/feaLib/variableScalar.py +6 -1
  11. fontTools/misc/bezierTools.c +18 -12
  12. fontTools/misc/bezierTools.cp310-win_amd64.pyd +0 -0
  13. fontTools/misc/enumTools.py +23 -0
  14. fontTools/misc/textTools.py +4 -2
  15. fontTools/pens/filterPen.py +218 -26
  16. fontTools/pens/momentsPen.c +18 -12
  17. fontTools/pens/momentsPen.cp310-win_amd64.pyd +0 -0
  18. fontTools/pens/pointPen.py +40 -6
  19. fontTools/qu2cu/qu2cu.c +30 -16
  20. fontTools/qu2cu/qu2cu.cp310-win_amd64.pyd +0 -0
  21. fontTools/subset/__init__.py +1 -0
  22. fontTools/ttLib/tables/_a_v_a_r.py +4 -2
  23. fontTools/ttLib/tables/_n_a_m_e.py +11 -6
  24. fontTools/ttLib/tables/_p_o_s_t.py +5 -5
  25. fontTools/ufoLib/__init__.py +279 -176
  26. fontTools/ufoLib/converters.py +14 -5
  27. fontTools/ufoLib/filenames.py +16 -6
  28. fontTools/ufoLib/glifLib.py +286 -190
  29. fontTools/ufoLib/kerning.py +32 -12
  30. fontTools/ufoLib/utils.py +41 -13
  31. fontTools/ufoLib/validators.py +121 -97
  32. fontTools/varLib/__init__.py +80 -1
  33. fontTools/varLib/avar/__init__.py +0 -0
  34. fontTools/varLib/avar/__main__.py +72 -0
  35. fontTools/varLib/avar/build.py +79 -0
  36. fontTools/varLib/avar/map.py +108 -0
  37. fontTools/varLib/avar/plan.py +1004 -0
  38. fontTools/varLib/{avar.py → avar/unbuild.py} +70 -59
  39. fontTools/varLib/avarPlanner.py +3 -999
  40. fontTools/varLib/instancer/__init__.py +56 -18
  41. fontTools/varLib/interpolatableHelpers.py +3 -0
  42. fontTools/varLib/iup.c +24 -14
  43. fontTools/varLib/iup.cp310-win_amd64.pyd +0 -0
  44. {fonttools-4.59.1.dist-info → fonttools-4.60.0.dist-info}/METADATA +43 -2
  45. {fonttools-4.59.1.dist-info → fonttools-4.60.0.dist-info}/RECORD +51 -44
  46. {fonttools-4.59.1.data → fonttools-4.60.0.data}/data/share/man/man1/ttx.1 +0 -0
  47. {fonttools-4.59.1.dist-info → fonttools-4.60.0.dist-info}/WHEEL +0 -0
  48. {fonttools-4.59.1.dist-info → fonttools-4.60.0.dist-info}/entry_points.txt +0 -0
  49. {fonttools-4.59.1.dist-info → fonttools-4.60.0.dist-info}/licenses/LICENSE +0 -0
  50. {fonttools-4.59.1.dist-info → fonttools-4.60.0.dist-info}/licenses/LICENSE.external +0 -0
  51. {fonttools-4.59.1.dist-info → fonttools-4.60.0.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,4 @@
1
- """ Partially instantiate a variable font.
1
+ """Partially instantiate a variable font.
2
2
 
3
3
  The module exports an `instantiateVariableFont` function and CLI that allow to
4
4
  create full instances (i.e. static fonts) from variable fonts, as well as "partial"
@@ -36,7 +36,7 @@ If the input location specifies all the axes, the resulting instance is no longe
36
36
  'variable' (same as using fontools varLib.mutator):
37
37
  .. code-block:: pycon
38
38
 
39
- >>>
39
+ >>>
40
40
  >> instance = instancer.instantiateVariableFont(
41
41
  ... varfont, {"wght": 700, "wdth": 67.5}
42
42
  ... )
@@ -56,8 +56,10 @@ From the console script, this is equivalent to passing `wght=drop` as input.
56
56
 
57
57
  This module is similar to fontTools.varLib.mutator, which it's intended to supersede.
58
58
  Note that, unlike varLib.mutator, when an axis is not mentioned in the input
59
- location, the varLib.instancer will keep the axis and the corresponding deltas,
60
- whereas mutator implicitly drops the axis at its default coordinate.
59
+ location, by default the varLib.instancer will keep the axis and the corresponding
60
+ deltas, whereas mutator implicitly drops the axis at its default coordinate.
61
+ To obtain the same behavior as mutator, pass the `static=True` parameter or
62
+ the `--static` CLI option.
61
63
 
62
64
  The module supports all the following "levels" of instancing, which can of
63
65
  course be combined:
@@ -72,7 +74,7 @@ L1
72
74
  L2
73
75
  dropping one or more axes while pinning them at non-default locations;
74
76
  .. code-block:: pycon
75
-
77
+
76
78
  >>>
77
79
  >> font = instancer.instantiateVariableFont(varfont, {"wght": 700})
78
80
 
@@ -81,22 +83,18 @@ L3
81
83
  a new minimum or maximum, potentially -- though not necessarily -- dropping
82
84
  entire regions of variations that fall completely outside this new range.
83
85
  .. code-block:: pycon
84
-
86
+
85
87
  >>>
86
88
  >> font = instancer.instantiateVariableFont(varfont, {"wght": (100, 300)})
87
89
 
88
90
  L4
89
91
  moving the default location of an axis, by specifying (min,defalt,max) values:
90
92
  .. code-block:: pycon
91
-
93
+
92
94
  >>>
93
95
  >> font = instancer.instantiateVariableFont(varfont, {"wght": (100, 300, 700)})
94
96
 
95
- Currently only TrueType-flavored variable fonts (i.e. containing 'glyf' table)
96
- are supported, but support for CFF2 variable fonts will be added soon.
97
-
98
- The discussion and implementation of these features are tracked at
99
- https://github.com/fonttools/fonttools/issues/1537
97
+ Both TrueType-flavored (glyf+gvar) variable and CFF2 variable fonts are supported.
100
98
  """
101
99
 
102
100
  from fontTools.misc.fixedTools import (
@@ -435,7 +433,27 @@ class AxisLimits(_BaseAxisLimits):
435
433
 
436
434
  avarSegments = {}
437
435
  if usingAvar and "avar" in varfont:
438
- avarSegments = varfont["avar"].segments
436
+ avar = varfont["avar"]
437
+ avarSegments = avar.segments
438
+
439
+ if getattr(avar, "majorVersion", 1) >= 2 and avar.table.VarStore:
440
+ pinnedAxes = set(self.pinnedLocation())
441
+ if not pinnedAxes.issuperset(avarSegments):
442
+ raise NotImplementedError(
443
+ "Partial-instancing avar2 table is not supported"
444
+ )
445
+
446
+ # TODO: Merge this with the main codepath.
447
+
448
+ # Full instancing of avar2 font. Use avar table to normalize location and return.
449
+ location = self.pinnedLocation()
450
+ location = {
451
+ tag: normalize(value, axes[tag], avarSegments.get(tag, None))
452
+ for tag, value in location.items()
453
+ }
454
+ return NormalizedAxisLimits(
455
+ **avar.renormalizeLocation(location, varfont, dropZeroes=False)
456
+ )
439
457
 
440
458
  normalizedLimits = {}
441
459
 
@@ -1122,7 +1140,8 @@ def _instantiateVHVAR(varfont, axisLimits, tableFields, *, round=round):
1122
1140
  varIdx = advMapping.mapping[glyphName]
1123
1141
  else:
1124
1142
  varIdx = varfont.getGlyphID(glyphName)
1125
- metrics[glyphName] = (advanceWidth + round(defaultDeltas[varIdx]), sb)
1143
+ delta = round(defaultDeltas[varIdx])
1144
+ metrics[glyphName] = (max(0, advanceWidth + delta), sb)
1126
1145
 
1127
1146
  if (
1128
1147
  tableTag == "VVAR"
@@ -1384,7 +1403,6 @@ def _isValidAvarSegmentMap(axisTag, segmentMap):
1384
1403
 
1385
1404
 
1386
1405
  def downgradeCFF2ToCFF(varfont):
1387
-
1388
1406
  # Save these properties
1389
1407
  recalcTimestamp = varfont.recalcTimestamp
1390
1408
  recalcBBoxes = varfont.recalcBBoxes
@@ -1433,8 +1451,6 @@ def instantiateAvar(varfont, axisLimits):
1433
1451
  # 'axisLimits' dict must contain user-space (non-normalized) coordinates.
1434
1452
 
1435
1453
  avar = varfont["avar"]
1436
- if getattr(avar, "majorVersion", 1) >= 2 and avar.table.VarStore:
1437
- raise NotImplementedError("avar table with VarStore is not supported")
1438
1454
 
1439
1455
  segments = avar.segments
1440
1456
 
@@ -1445,6 +1461,9 @@ def instantiateAvar(varfont, axisLimits):
1445
1461
  del varfont["avar"]
1446
1462
  return
1447
1463
 
1464
+ if getattr(avar, "majorVersion", 1) >= 2 and avar.table.VarStore:
1465
+ raise NotImplementedError("avar table with VarStore is not supported")
1466
+
1448
1467
  log.info("Instantiating avar table")
1449
1468
  for axis in pinnedAxes:
1450
1469
  if axis in segments:
@@ -1646,6 +1665,7 @@ def instantiateVariableFont(
1646
1665
  updateFontNames=False,
1647
1666
  *,
1648
1667
  downgradeCFF2=False,
1668
+ static=False,
1649
1669
  ):
1650
1670
  """Instantiate variable font, either fully or partially.
1651
1671
 
@@ -1689,12 +1709,23 @@ def instantiateVariableFont(
1689
1709
  software that does not support CFF2. Defaults to False. Note that this
1690
1710
  operation also removes overlaps within glyph shapes, as CFF does not support
1691
1711
  overlaps but CFF2 does.
1712
+ static (bool): if True, generate a full instance (static font) instead of a partial
1713
+ instance (variable font).
1692
1714
  """
1693
1715
  # 'overlap' used to be bool and is now enum; for backward compat keep accepting bool
1694
1716
  overlap = OverlapMode(int(overlap))
1695
1717
 
1696
1718
  sanityCheckVariableTables(varfont)
1697
1719
 
1720
+ if static:
1721
+ unspecified = []
1722
+ for axis in varfont["fvar"].axes:
1723
+ if axis.axisTag not in axisLimits:
1724
+ axisLimits[axis.axisTag] = None
1725
+ unspecified.append(axis.axisTag)
1726
+ if unspecified:
1727
+ log.info("Pinning unspecified axes to default: %s", unspecified)
1728
+
1698
1729
  axisLimits = AxisLimits(axisLimits).limitAxesAndPopulateDefaults(varfont)
1699
1730
 
1700
1731
  log.info("Restricted limits: %s", axisLimits)
@@ -1886,6 +1917,12 @@ def parseArgs(args):
1886
1917
  default=None,
1887
1918
  help="Output instance TTF file (default: INPUT-instance.ttf).",
1888
1919
  )
1920
+ parser.add_argument(
1921
+ "--static",
1922
+ dest="static",
1923
+ action="store_true",
1924
+ help="Make a static font: pin unspecified axes to their default location.",
1925
+ )
1889
1926
  parser.add_argument(
1890
1927
  "--no-optimize",
1891
1928
  dest="optimize",
@@ -1983,7 +2020,7 @@ def main(args=None):
1983
2020
  recalcBBoxes=options.recalc_bounds,
1984
2021
  )
1985
2022
 
1986
- isFullInstance = {
2023
+ isFullInstance = options.static or {
1987
2024
  axisTag
1988
2025
  for axisTag, limit in axisLimits.items()
1989
2026
  if limit is None or limit[0] == limit[2]
@@ -1997,6 +2034,7 @@ def main(args=None):
1997
2034
  overlap=options.overlap,
1998
2035
  updateFontNames=options.update_name_table,
1999
2036
  downgradeCFF2=options.downgrade_cff2,
2037
+ static=options.static,
2000
2038
  )
2001
2039
 
2002
2040
  suffix = "-instance" if isFullInstance else "-partial"
@@ -174,6 +174,9 @@ def min_cost_perfect_bipartite_matching_bruteforce(G):
174
174
  return best, best_cost
175
175
 
176
176
 
177
+ # Prefer `scipy.optimize.linear_sum_assignment` for performance.
178
+ # `Munkres` is also supported as a fallback for minimalistic systems
179
+ # where installing SciPy is not feasible.
177
180
  try:
178
181
  from scipy.optimize import linear_sum_assignment
179
182
 
fontTools/varLib/iup.c CHANGED
@@ -1,4 +1,4 @@
1
- /* Generated by Cython 3.1.3 */
1
+ /* Generated by Cython 3.1.4 */
2
2
 
3
3
  /* BEGIN: Cython Metadata
4
4
  {
@@ -26,8 +26,8 @@ END: Cython Metadata */
26
26
  #elif PY_VERSION_HEX < 0x03080000
27
27
  #error Cython requires Python 3.8+.
28
28
  #else
29
- #define __PYX_ABI_VERSION "3_1_3"
30
- #define CYTHON_HEX_VERSION 0x030103F0
29
+ #define __PYX_ABI_VERSION "3_1_4"
30
+ #define CYTHON_HEX_VERSION 0x030104F0
31
31
  #define CYTHON_FUTURE_DIVISION 1
32
32
  /* CModulePreamble */
33
33
  #include <stddef.h>
@@ -3970,8 +3970,12 @@ static PyObject *__pyx_pf_9fontTools_6varLib_3iup_iup_contour(CYTHON_UNUSED PyOb
3970
3970
  * # All deltas are None. Return 0,0 for all.
3971
3971
  * return [(0, 0)] * n
3972
3972
  */
3973
- __pyx_t_3 = (__Pyx_PyList_GET_SIZE(__pyx_v_indices) != 0);
3974
- if (unlikely(((!CYTHON_ASSUME_SAFE_MACROS) && __pyx_t_3 < 0))) __PYX_ERR(0, 104, __pyx_L1_error)
3973
+ {
3974
+ Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_v_indices);
3975
+ if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(0, 104, __pyx_L1_error)
3976
+ __pyx_t_3 = (__pyx_temp != 0);
3977
+ }
3978
+
3975
3979
  __pyx_t_9 = (!__pyx_t_3);
3976
3980
  if (__pyx_t_9) {
3977
3981
 
@@ -12096,15 +12100,16 @@ static int __Pyx_InitConstants(__pyx_mstatetype *__pyx_mstate) {
12096
12100
  return -1;
12097
12101
  }
12098
12102
  /* #### Code section: init_codeobjects ### */
12099
- typedef struct {
12100
- unsigned int argcount : 3;
12101
- unsigned int num_posonly_args : 1;
12102
- unsigned int num_kwonly_args : 1;
12103
- unsigned int nlocals : 5;
12104
- unsigned int flags : 10;
12105
- unsigned int first_line : 9;
12106
- unsigned int line_table_length : 14;
12107
- } __Pyx_PyCode_New_function_description;
12103
+ \
12104
+ typedef struct {
12105
+ unsigned int argcount : 3;
12106
+ unsigned int num_posonly_args : 1;
12107
+ unsigned int num_kwonly_args : 1;
12108
+ unsigned int nlocals : 5;
12109
+ unsigned int flags : 10;
12110
+ unsigned int first_line : 9;
12111
+ unsigned int line_table_length : 14;
12112
+ } __Pyx_PyCode_New_function_description;
12108
12113
  /* NewCodeObj.proto */
12109
12114
  static PyObject* __Pyx_PyCode_New(
12110
12115
  const __Pyx_PyCode_New_function_description descr,
@@ -15532,6 +15537,7 @@ static int __pyx_CommonTypesMetaclass_init(PyObject *module) {
15532
15537
  return -1;
15533
15538
  }
15534
15539
  mstate->__pyx_CommonTypesMetaclassType = __Pyx_FetchCommonTypeFromSpec(NULL, module, &__pyx_CommonTypesMetaclass_spec, bases);
15540
+ Py_DECREF(bases);
15535
15541
  if (unlikely(mstate->__pyx_CommonTypesMetaclassType == NULL)) {
15536
15542
  return -1;
15537
15543
  }
@@ -19189,6 +19195,10 @@ static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt
19189
19195
  PyCode_NewWithPosOnlyArgs
19190
19196
  #endif
19191
19197
  (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, __pyx_mstate_global->__pyx_empty_bytes);
19198
+ #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030c00A1
19199
+ if (likely(result))
19200
+ result->_co_firsttraceable = 0;
19201
+ #endif
19192
19202
  return result;
19193
19203
  }
19194
19204
  #elif PY_VERSION_HEX >= 0x030800B2 && !CYTHON_COMPILING_IN_PYPY
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fonttools
3
- Version: 4.59.1
3
+ Version: 4.60.0
4
4
  Summary: Tools to manipulate font files
5
5
  Home-page: http://github.com/fonttools/fonttools
6
6
  Author: Just van Rossum
@@ -211,7 +211,11 @@ are required to unlock the extra features named "ufo", etc.
211
211
  for Python, which internally uses `NumPy <https://pypi.python.org/pypi/numpy>`__
212
212
  arrays and hence is very fast;
213
213
  * `munkres <https://pypi.python.org/pypi/munkres>`__: a pure-Python
214
- module that implements the Hungarian or Kuhn-Munkres algorithm.
214
+ module that implements the Hungarian or Kuhn-Munkres algorithm. Slower than
215
+ SciPy, but useful for minimalistic systems where adding SciPy is undesirable.
216
+
217
+ This ensures both performance (via SciPy) and minimal footprint (via Munkres)
218
+ are possible.
215
219
 
216
220
  To plot the results to a PDF or HTML format, you also need to install:
217
221
 
@@ -388,6 +392,43 @@ Have fun!
388
392
  Changelog
389
393
  ~~~~~~~~~
390
394
 
395
+ 4.60.0 (released 2025-09-17)
396
+ ----------------------------
397
+
398
+ - [pointPen] Allow ``reverseFlipped`` parameter of ``DecomposingPointPen`` to take a ``ReverseFlipped``
399
+ enum value to control whether/how to reverse contour direction of flipped components, in addition to
400
+ the existing True/False. This allows to set ``ReverseFlipped.ON_CURVE_FIRST`` to ensure that
401
+ the decomposed outline starts with an on-curve point before being reversed, for better consistency
402
+ with other segment-oriented contour transformations. The change is backward compatible, and the
403
+ default behavior hasn't changed (#3934).
404
+ - [filterPen] Added ``ContourFilterPointPen``, base pen for buffered contour operations, and
405
+ ``OnCurveStartPointPen`` filter to ensure contours start with an on-curve point (#3934).
406
+ - [cu2qu] Fixed difference in cython vs pure-python complex division by real number (#3930).
407
+ - [varLib.avar] Refactored and added some new sub-modules and scripts (#3926).
408
+ * ``varLib.avar.build`` module to build avar (and a missing fvar) binaries into a possibly empty TTFont,
409
+ * ``varLib.avar.unbuild`` module to print a .designspace snippet that would generate the same avar binary,
410
+ * ``varLib.avar.map`` module to take TTFont and do the mapping, in user/normalized space,
411
+ * ``varLib.avar.plan`` module moved from ``varLib.avarPlanner``.
412
+ The bare ``fonttools varLib.avar`` script is deprecated, in favour of ``fonttools varLib.avar.build`` (or ``unbuild``).
413
+ - [interpolatable] Clarify ``linear_sum_assignment`` backend options and minimal dependency
414
+ usage (#3927).
415
+ - [post] Speed up ``build_psNameMapping`` (#3923).
416
+ - [ufoLib] Added typing annotations to fontTools.ufoLib (#3875).
417
+
418
+ 4.59.2 (released 2025-08-27)
419
+ ----------------------------
420
+
421
+ - [varLib] Clear ``USE_MY_METRICS`` component flags when inconsistent across masters (#3912).
422
+ - [varLib.instancer] Avoid negative advance width/height values when instatiating HVAR/VVAR,
423
+ (unlikely in well-behaved fonts) (#3918).
424
+ - [subset] Fix shaping behaviour when pruning empty mark sets (#3915, harfbuzz/harfbuzz#5499).
425
+ - [cu2qu] Fixed ``dot()`` product of perpendicular vectors not always returning exactly 0.0
426
+ in all Python implementations (#3911)
427
+ - [varLib.instancer] Implemented fully-instantiating ``avar2`` fonts (#3909).
428
+ - [feaLib] Allow float values in ``VariableScalar``'s axis locations (#3906, #3907).
429
+ - [cu2qu] Handle special case in ``calc_intersect`` for degenerate cubic curves where 3 to 4
430
+ control points are equal (#3904).
431
+
391
432
  4.59.1 (released 2025-08-14)
392
433
  ----------------------------
393
434
 
@@ -1,7 +1,8 @@
1
- fontTools/__init__.py,sha256=57GFbw-0oMhpoPuHsKfQPQWBV6jVdkCDEyCW48RYF64,191
1
+ fontTools/__init__.py,sha256=-tK8qTdJjP4_Cywkr803Z5-SQva92shSxi0NbjVPlgU,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
5
+ fontTools/annotations.py,sha256=9qO1E6zyl_cyF_vSJtFUz9FQAv2brjTrJ_rDXbREEVM,1255
5
6
  fontTools/fontBuilder.py,sha256=qeUEUzacKdZXZ9dS_e2AuLE62c17eg_oHwnZgD04TaQ,35144
6
7
  fontTools/help.py,sha256=8yn5iAonGPsijFSHmU6aLuuZtaLMhR5CIkSp9hVYL2c,1161
7
8
  fontTools/tfmLib.py,sha256=-bv4iv2VhUSse5pA0oXdudf7o7ZuFWdWNsiHElO06dk,14730
@@ -24,9 +25,9 @@ fontTools/cu2qu/__init__.py,sha256=OoM_nBJAleZal6kxeNJn1ESy1pNm5c3DG417yVIE0-Q,6
24
25
  fontTools/cu2qu/__main__.py,sha256=6Vb8Ler3yqJ5w84UwlMJV6cS01uhV4PN10OlXQ6jlqo,98
25
26
  fontTools/cu2qu/benchmark.py,sha256=FwdvNjKfWHo18_CX0CO8AY5c68XSBE4M4TJo_EkB4q8,1350
26
27
  fontTools/cu2qu/cli.py,sha256=CvWzC5a6XF_v5o0yrS4vGI1JXiVVLzSJahTIqpJmiPk,6274
27
- fontTools/cu2qu/cu2qu.c,sha256=7YlYhEWuAjEASayl8E8Bo2067_ACGq4SGfxUmK0rMzY,645618
28
- fontTools/cu2qu/cu2qu.cp310-win_amd64.pyd,sha256=hlQmeDDIgk8P-RQzALENDPdS1POQ2ZVPTNf5cG1vj6k,98304
29
- fontTools/cu2qu/cu2qu.py,sha256=XH2bnQ5aG9ic921ZWzQzU1-q3MQU6INCjLk4XjRj5_Y,16970
28
+ fontTools/cu2qu/cu2qu.c,sha256=2FsHl-S3Z_szu4zNH2Hv9ouU4Kg7jlK_GFax_U57xeU,653740
29
+ fontTools/cu2qu/cu2qu.cp310-win_amd64.pyd,sha256=mURX2bdDA7xDrZWQIrQhJdx90rGQgjapaL5yHUvYa3k,99840
30
+ fontTools/cu2qu/cu2qu.py,sha256=nyniLf18Y6D7CBjp6NXZj2XOpYdaiiZVFprZLiFTwtc,18549
30
31
  fontTools/cu2qu/errors.py,sha256=uYyPSs_x-EMJKO2S3cLGWyk_KlHoOoh_XEtdB_oKBp0,2518
31
32
  fontTools/cu2qu/ufo.py,sha256=Mpd_7Be9jxNcOKFqkyRp8Oem3CS3R-ZYMMSD03LJL6o,12143
32
33
  fontTools/designspaceLib/__init__.py,sha256=80fzbsWaoTMaXsPGMnevXAxR4eqvZeYCwV_GYpBvlkM,132601
@@ -41,15 +42,15 @@ fontTools/encodings/codecs.py,sha256=bSpO6kuPbEIDsXSVHhzftqsm_FFUiXpLVfPSk410SqE
41
42
  fontTools/feaLib/__init__.py,sha256=RprjP6BKswq4pt0J-9L1XGuZfjIFAGD6HDly_haMAN4,217
42
43
  fontTools/feaLib/__main__.py,sha256=niUAPkiYxeRAJMlJuvVJZism2VFufZrNaQtieA7sNLk,2318
43
44
  fontTools/feaLib/ast.py,sha256=q-UvEPZ97AAHpggVOzVHdgfTcE072kuOK08rdAYpCXU,76301
44
- fontTools/feaLib/builder.py,sha256=JlxYFm1g99yi3XWZ2cTl_BmrnaB_YBZ-qWYN3VkhxbE,75324
45
+ fontTools/feaLib/builder.py,sha256=_ofuSJ9Jtz1Ybzk4ReCWSa431PXfIq-UcVkYZ2B0Ruo,75565
45
46
  fontTools/feaLib/error.py,sha256=pqi8F2tnH2h7pXVffxwzuBuWaSHMzZsXs5VckdQKQAI,670
46
- fontTools/feaLib/lexer.c,sha256=m0YzN-VNwtnglL5NrlYvUTJGlJjpnDANAfwpfujmOtk,771396
47
- fontTools/feaLib/lexer.cp310-win_amd64.pyd,sha256=7GmXAHPt5JNvflIGyYOmKRz3xNfaHFlFQoJRyTY909M,119808
47
+ fontTools/feaLib/lexer.c,sha256=y9M2Lf0jZy0tYvxpZBWoPs5DZPOVIoZSzmD5Ab5jjRM,771641
48
+ fontTools/feaLib/lexer.cp310-win_amd64.pyd,sha256=YKvLlGQ-J4GDjHu1syslRkM0xuYlRBnjWSX5Xf0KixE,119808
48
49
  fontTools/feaLib/lexer.py,sha256=7VZ3NPFH7V1mvRbym111BNKvbB4hLfGLTMS0VV_3Ipw,11408
49
50
  fontTools/feaLib/location.py,sha256=teHrhjT8zzImcGBEJS1J43oaX9onCPu_pynxS8d-tUg,246
50
51
  fontTools/feaLib/lookupDebugInfo.py,sha256=h4Ig8kmEk5WlGf1C9JJAbbOKQK5OwkFLdj8CT7fOkmU,316
51
- fontTools/feaLib/parser.py,sha256=fdycJS5E1RtBvFifNx4rub360J6LmUyX5XpvfoEGxNI,101710
52
- fontTools/feaLib/variableScalar.py,sha256=RiLHKQh2-wa-BZ015H2e7XkbshssTj2PjlapaMNJfAs,4182
52
+ fontTools/feaLib/parser.py,sha256=T8IVOqzU92A3_V2-R0-W-HzNBjziJJHSg1ZGcmde-Rc,102105
53
+ fontTools/feaLib/variableScalar.py,sha256=KWFE5YBW7WWgLC4eqLfcGmiA7SbYO3VSdsF_5ZwJa0k,4318
53
54
  fontTools/merge/__init__.py,sha256=A6aQxwtbzcLUrE9UOdk3yCrMwqPOboTEr5ZyEu9RxRg,8504
54
55
  fontTools/merge/__main__.py,sha256=3_u3dnyEOyh0O-SrLMLlkXxOfCFT-0SlwJpimosVJ-c,100
55
56
  fontTools/merge/base.py,sha256=LPJKOwMiDwayLGzA1xH325CtYHPvahAA17lihvKjiPw,2470
@@ -61,8 +62,8 @@ fontTools/merge/unicode.py,sha256=mgqRFhRugda62Xt0r28SduaN7YBzRfHxrpNprjLqoX8,43
61
62
  fontTools/merge/util.py,sha256=3alo4b7mhFNC6h8PjeqNU99dS7EuO8sdZkZpvRsEE6E,3521
62
63
  fontTools/misc/__init__.py,sha256=QoK6HlOoqtVqX5gOyv0bJiTXsVBbBRreUifdccWNp2k,76
63
64
  fontTools/misc/arrayTools.py,sha256=baENNALPvYRUhS4rdx_F3ltOmVIf1PV9G2EaMt7gAHM,11907
64
- fontTools/misc/bezierTools.c,sha256=RIXuhMVdCd71LHQyLE0tKUAaX74qoZeYigooTdUvI50,1861643
65
- fontTools/misc/bezierTools.cp310-win_amd64.pyd,sha256=aX8plaAieF4tafcsgVRlMU1RJaEAL1qx2Ferw86iXcU,342016
65
+ fontTools/misc/bezierTools.c,sha256=wub0OhTy2OMmdZ6ppQxP1YTKNzEskK_i6lNfRiVNW9M,1861888
66
+ fontTools/misc/bezierTools.cp310-win_amd64.pyd,sha256=gMi1_h4CRl8ZdGSzRxVqMgMpqjiDyMj7mFFI0m38Uas,342016
66
67
  fontTools/misc/bezierTools.py,sha256=m4j14ckKYtrKy8NhFFFY_Uv3kuL8g-SWNdEKUzqGjRQ,46535
67
68
  fontTools/misc/classifyTools.py,sha256=wLTjOhLiZaLiwwUTj2Ad5eZ5T_38W0Eo_uzRGWHWYvE,5783
68
69
  fontTools/misc/cliTools.py,sha256=7zKOXczaCKRMW6Yv5jdCZYHco8y0-lfimhIWzQ2IL8A,1915
@@ -71,6 +72,7 @@ fontTools/misc/cython.py,sha256=fZ9_mObkVzdJoK6sufiIU95k5GStjp6LWOk4AQ8zW_Q,709
71
72
  fontTools/misc/dictTools.py,sha256=GZa83GxwQD4-kZYkbCCefW-ggH4WG8G6f5jCy0NcO6w,2500
72
73
  fontTools/misc/eexec.py,sha256=eN9R1_67tWaeWn3ikEs0VwB1N7yr4vBbzs-aMbAUROw,3450
73
74
  fontTools/misc/encodingTools.py,sha256=rlAZpxgcKXPzfpfHKk0BQW2Edz2JwTT8d0IIMRib3VE,2145
75
+ fontTools/misc/enumTools.py,sha256=0oNH7O7JR_lKi9GNy2IcbFnvyND7P3htiGR2Tdgx51U,525
74
76
  fontTools/misc/etree.py,sha256=M_4wKgaiaV7ALP3Uiv3HnK_KXFJmb37SUIK4tFZFVws,16760
75
77
  fontTools/misc/filenames.py,sha256=IZuoPgh88KI2Rdo56FrHAtNSUoCeIaiWqrQk2VEeRoQ,8468
76
78
  fontTools/misc/fixedTools.py,sha256=3HzMFAs57LqsGBnbslq2btQ3KJbKwxmxkJPvTvOi8sY,7900
@@ -88,7 +90,7 @@ fontTools/misc/roundTools.py,sha256=2rmbuk73NYGPmJqP58FQCFioSLilvNffd0WbL5znKUg,
88
90
  fontTools/misc/sstruct.py,sha256=7Lc9x2RV_e2JvSI4A_Rs0tM1mZpjYg_oAJKhP_F9zts,7236
89
91
  fontTools/misc/symfont.py,sha256=KYAtw-ZnG5YReS8XkSDIvxc1bl0xzZl-Wx4J7k7u7LA,7219
90
92
  fontTools/misc/testTools.py,sha256=SG48M4TJIQ4_cPpitUzGEITPnwL-o0yNZKXzWSQdwVE,7285
91
- fontTools/misc/textTools.py,sha256=NIBmM6k9PXIs8DMpio-9ckHS35QxL2EMFwBXP6zG-8w,3531
93
+ fontTools/misc/textTools.py,sha256=ws89gG0KB67ldR8kdGOdYWwx3ht644nHhNrmUt-WYzc,3639
92
94
  fontTools/misc/timeTools.py,sha256=lmncKUKvxQKO4Kqx2k7UNFkYYpj2n5CwR1lPiLZv3tA,2322
93
95
  fontTools/misc/transform.py,sha256=pCR0tbKzmhH6crB_rDT5hnAWySztW_XqL0efmKOVsCU,16314
94
96
  fontTools/misc/treeTools.py,sha256=IMopMUcuhelvz8gNra50Zc1w8DSlWywnL6DFaz1ijQs,1314
@@ -127,15 +129,15 @@ fontTools/pens/cairoPen.py,sha256=jQL-9usqCU_FvfFpH4uaKjOcGd6jsarPpVM3vrhdyOU,61
127
129
  fontTools/pens/cocoaPen.py,sha256=ReJkXzlgP8qe4zi_6X4oO_I6m0jQGATeB6ZHjJhNv_I,638
128
130
  fontTools/pens/cu2quPen.py,sha256=w9xTNmhb96kvNZwcM5WT9q8FnRgA51AOISzVRpkiI3g,13332
129
131
  fontTools/pens/explicitClosingLinePen.py,sha256=knCXcjSl2iPy6mLCDnsdDYx6J5rV7FH4S24OXFdINjg,3320
130
- fontTools/pens/filterPen.py,sha256=tWhgklyaCTUt7oQRTBbFUcOlc702V0NfadCH3X93CYg,8031
132
+ fontTools/pens/filterPen.py,sha256=wvNVXLGKmNxJcpAKAnmev2wy6Rshq6aXgRfxL0Iobdg,15136
131
133
  fontTools/pens/freetypePen.py,sha256=NqNzXrOTDckoH4N6WLnj-KuxGcg6z7DlqSCfmpq8qAE,20370
132
134
  fontTools/pens/hashPointPen.py,sha256=ZAU87uw5ge3Kb4i9kRV28a5VFeZ_TWSsJabyAzwAHrU,3662
133
- fontTools/pens/momentsPen.c,sha256=jZXVypFPp5jR1IwgQGJf4Bp4lig_IuG2iWRvnkp3M0I,578536
134
- fontTools/pens/momentsPen.cp310-win_amd64.pyd,sha256=WBcxZVOMRBXOzDq526LxVVvgg7Q1zZ6GI61DdGIK5EQ,89088
135
+ fontTools/pens/momentsPen.c,sha256=tccF2oegGdXqHhmkR_ReOr-SveDxltMm67E3XryuVbI,578781
136
+ fontTools/pens/momentsPen.cp310-win_amd64.pyd,sha256=dgsvp7PKeRh2DTwuVE4H1Yze15cWRVrFR0jS6zXYYSE,89088
135
137
  fontTools/pens/momentsPen.py,sha256=Z-V5CjQBSj3qPxg3C_DBFKExqno89nOe3jWwHT9_xsM,26537
136
138
  fontTools/pens/perimeterPen.py,sha256=Zy5F8QzaNJAkkQQSb2QJCp-wZTvDAjBn-B099t2ABds,2222
137
139
  fontTools/pens/pointInsidePen.py,sha256=Hy48iR5NWV3x_wWoos-UC7GMtwvvUhd_q_ykiwaWdzQ,6547
138
- fontTools/pens/pointPen.py,sha256=GV28cLEwSgpZZ4QGV7_eUw4Mdks_UqIpShQU0DBcvRs,23339
140
+ fontTools/pens/pointPen.py,sha256=bYvSSBXvcMv6Emzdi31C4lnaI_WUhRtW1adBPj_8Zp0,24840
139
141
  fontTools/pens/qtPen.py,sha256=KHHQggFQc6Gq-kPdn9X2_wBXTPWzvyzKTSUeq0mqvSM,663
140
142
  fontTools/pens/qu2cuPen.py,sha256=VIqUzA_y_6xnRmTESKzlKkoByh7ZU5TnQwHnVAoy4no,4090
141
143
  fontTools/pens/quartzPen.py,sha256=6DMDWPYfsOb374VDnLLpKLqcMJig4GCGbTsW1Jr0fgg,1330
@@ -154,10 +156,10 @@ fontTools/qu2cu/__init__.py,sha256=MpdE0XsHSDo9M3hyHLkPPLxB3FKr3aiT0dPW5qHCuSo,6
154
156
  fontTools/qu2cu/__main__.py,sha256=leKpToUNNyHf0nobr1I19vus2ziA1pO7rRKkreat-Xw,100
155
157
  fontTools/qu2cu/benchmark.py,sha256=PFxx2Bfu7-KuNrzdOIBXHPZvyNphqqcTVy4CneaCo3M,1456
156
158
  fontTools/qu2cu/cli.py,sha256=1QLBTSZW7e_VATJN9vjszRxIk_-Xjxu1KP53yX4T7q8,3839
157
- fontTools/qu2cu/qu2cu.c,sha256=htIol4qS19oUMmn4dtbpX31cK3_zlZxHXp2_wnoxFB8,706830
158
- fontTools/qu2cu/qu2cu.cp310-win_amd64.pyd,sha256=VOFrP2D0wEHdSxqXhC-lNwJrpsEbf-6sQUmgL0UTEtU,106496
159
+ fontTools/qu2cu/qu2cu.c,sha256=zpMJuiGamoWxvBEqP84gp1DPDsSlvbqMxf0gkxgA0u8,707187
160
+ fontTools/qu2cu/qu2cu.cp310-win_amd64.pyd,sha256=MJBqgw4vIOqVpsH9DRjhWhtEuaTtbft0F8Pjiypnr-U,106496
159
161
  fontTools/qu2cu/qu2cu.py,sha256=dtp5Zqhcs_NePwA2U5fgG2LtWleRwmBilTurau8sLL0,12693
160
- fontTools/subset/__init__.py,sha256=cMUbkLDSaj0f576WF5zhbZ9mYT4U9b_PPzFFBpg8VEI,141636
162
+ fontTools/subset/__init__.py,sha256=BIx4NBKTps8oFRnB_3uN6MDsQh10IPkrId5VyR9AI9M,141672
161
163
  fontTools/subset/__main__.py,sha256=cEIC52EtGOJvFDfHXzi0M2EAYmyHAcI-ZZ0lb2y4r7s,101
162
164
  fontTools/subset/cff.py,sha256=GSmxdsokxuFKvJJQVcAIOhd5hYQq8KkzxnXE_dgm8yo,6329
163
165
  fontTools/subset/svg.py,sha256=y_yTZuAm3bjcoEOFu5likXoHuG5u1oNiv0mOni2Z9fQ,9637
@@ -236,7 +238,7 @@ fontTools/ttLib/tables/V_O_R_G_.py,sha256=s9g03_qeTV3qoJAWpXxpRCmao0l1wj4WagR_Ys
236
238
  fontTools/ttLib/tables/V_V_A_R_.py,sha256=PiwzLv95tfXH25hYQFAxL11mwgbLjeg4R1LvVH5m7lU,332
237
239
  fontTools/ttLib/tables/__init__.py,sha256=pYmftKvp7RCNIaEJuUNjcZFaiIfOC0zzcApViNKUxkU,2749
238
240
  fontTools/ttLib/tables/_a_n_k_r.py,sha256=eiy6DKxPGw-H9QCLWIQBFveuTFQSKgcPItwgyBOghk8,498
239
- fontTools/ttLib/tables/_a_v_a_r.py,sha256=cIqfWyyU5hNrJ-SIfVCKQcpyi2DUjobAgrmyE2In9FI,7307
241
+ fontTools/ttLib/tables/_a_v_a_r.py,sha256=521RCooxpE8T9sOdm0BMY2E--iWnrhO-cTr7O4dLhC4,7368
240
242
  fontTools/ttLib/tables/_b_s_l_n.py,sha256=iHLFy3sjFFoGa-pDGdcLCCudv4QFMt2VBL06gigGA_k,480
241
243
  fontTools/ttLib/tables/_c_i_d_g.py,sha256=BPa6b0yrmT8OXPW3USRpn_H8DOLKFlDe9subtRDJBrc,937
242
244
  fontTools/ttLib/tables/_c_m_a_p.py,sha256=dvtnrDf1LjXVf_DXW0tz67BqOlf7dINyG0_HF3aoDmw,63793
@@ -261,9 +263,9 @@ fontTools/ttLib/tables/_m_a_x_p.py,sha256=9B6lvWo4y42dyLPIvG6CsVOlWCk7bs4DoVJDB8
261
263
  fontTools/ttLib/tables/_m_e_t_a.py,sha256=I8HaZgcIPQZcCxBiSX0rGrfrs-zXRGUfEbJ8eGvZ07A,4025
262
264
  fontTools/ttLib/tables/_m_o_r_t.py,sha256=LU3D9PmV_nFs6hoccGmr1pfUzjJaeB_WRW2OIS0RwPc,501
263
265
  fontTools/ttLib/tables/_m_o_r_x.py,sha256=vLyrtx_O__BwnPi7Qo3oT8WHaANRARtHcqHSdZ5ct0E,563
264
- fontTools/ttLib/tables/_n_a_m_e.py,sha256=bvahvBMX21pC6G83D35WZap6F7BDd7Xi2AmhVMBZz00,42300
266
+ fontTools/ttLib/tables/_n_a_m_e.py,sha256=Z3BZtWPZfL-tpRjypnxjsvJzdwZWMbJ50BuFngtnkCs,42508
265
267
  fontTools/ttLib/tables/_o_p_b_d.py,sha256=lfJi6kblt_nGmGmRSupwEaud3Ri_y6ftWNuyrCPpzQ0,462
266
- fontTools/ttLib/tables/_p_o_s_t.py,sha256=HIsvathEMOAm8QFG7vcRfPQvBqXh-QmsVyOoDWsaRNc,12020
268
+ fontTools/ttLib/tables/_p_o_s_t.py,sha256=eCOxa-PocooWBk5TIAdkc0K9b9ylYLIN9oo7HsLCuqw,11990
267
269
  fontTools/ttLib/tables/_p_r_e_p.py,sha256=qWDjHiHvHaJCx2hYFmjJeMwpgwvD-cG5zkibMh9TWuk,443
268
270
  fontTools/ttLib/tables/_p_r_o_p.py,sha256=ux5Z0FrE7uuKQrO-SCQwButVtKmEAsvfDE6mOP_SOnE,439
269
271
  fontTools/ttLib/tables/_s_b_i_x.py,sha256=KF9acCLqBcYpg92h5vJBp5LsNT7c4MDKD4rocixRPKw,4994
@@ -281,40 +283,39 @@ fontTools/ttLib/tables/sbixGlyph.py,sha256=a-mCmO5EibN_He7QQohG06Qg-fCOHWiNFMAbC
281
283
  fontTools/ttLib/tables/sbixStrike.py,sha256=Q1F4rFlj-SwUKFDJkcta1oz_b393dt9VYFOyxaFSc_o,6828
282
284
  fontTools/ttLib/tables/table_API_readme.txt,sha256=E9lwGW1P_dGqy1FYBcYLVEDDmikbsqW4pUtpv1RKCJU,2839
283
285
  fontTools/ttLib/tables/ttProgram.py,sha256=vkRtptH7QXD0Ng8LNzh-A_Ln27VPCxSJOXgW8878nSo,36482
284
- fontTools/ufoLib/__init__.py,sha256=HbYdVqQUpL5szGEnkuBhRSOKgpWTQLuRADfy1te1Rv0,96811
285
- fontTools/ufoLib/converters.py,sha256=hPVFC0K1IPXG8tCGZQOIUXB4ILdiGPuzbgtqSiWHZn4,13442
286
+ fontTools/ufoLib/__init__.py,sha256=oXmFxjiUSr4N4PEmjTsyS8EuTfK1cJOF4mKvJd5UeD4,101536
287
+ fontTools/ufoLib/converters.py,sha256=7B5JwsY2GrtgEcPirkkYnsWGvQpbntQRaERFH1LiG7c,13851
286
288
  fontTools/ufoLib/errors.py,sha256=pgJKS2A5RcsfQS2Z6Y_l3mIz62-VD_SrpIysKmywuYA,875
287
289
  fontTools/ufoLib/etree.py,sha256=kTUP1EzN2wSXZ4jwAX8waNfKz52u7jc2qQ2LrqPYLBw,237
288
- fontTools/ufoLib/filenames.py,sha256=wuXjT9VX3791TBJ0WL4lWhFQ6pInkcYML9Mgc2cdJsE,10764
289
- fontTools/ufoLib/glifLib.py,sha256=lV42VMkIDuYL10L5lqLj6c4JNqSgvWGJZT05Kw2ddVI,74723
290
- fontTools/ufoLib/kerning.py,sha256=VgE-xhGMAD2ipauleB-liNxwBuR_Ze5Jceb4XDi2Ob4,4354
290
+ fontTools/ufoLib/filenames.py,sha256=Q35r0-W8pQE-mNEif-lyZE5_X6m7yZmBkcZU_SJQk7M,11010
291
+ fontTools/ufoLib/glifLib.py,sha256=en3UH38tRjPYNfZkHrHh375uvi7cQMhpsJOyiOVo8yo,79290
292
+ fontTools/ufoLib/kerning.py,sha256=RoRFBDlimIx9MhqrTmnOQFwmLi6Xr2fma8Sva42cooA,4977
291
293
  fontTools/ufoLib/plistlib.py,sha256=GpWReRtO7S1JCv6gJnnuiYooo4Hwbgc2vagT041kFk8,1557
292
294
  fontTools/ufoLib/pointPen.py,sha256=bU0-DLHrWKyutmwjw0tvhT-QPE-kmqs2Dqe0cflYgOk,250
293
- fontTools/ufoLib/utils.py,sha256=3hKaFRkCBhmwP6NRst6H0d5ZKSXYTzKK8kNfGGwzEaw,2074
294
- fontTools/ufoLib/validators.py,sha256=VtH8-SzQv16T6oVqYkRmdcwLBE8E0c9t0kiDgCMgqO4,31997
295
+ fontTools/ufoLib/utils.py,sha256=Lh7_vWibH2ztfwexp4NRKcniWFNebmP4cZy1i3XOBKU,3299
296
+ fontTools/ufoLib/validators.py,sha256=1C6l6bs62u4HmN3BcyJQi3uVORLE0oeqhUOpPNjBbYA,33595
295
297
  fontTools/unicodedata/Blocks.py,sha256=R0rSdM3NktyDMxtyLQJV4nvlTJylX9osWKkQQ_ZTEpQ,33216
296
298
  fontTools/unicodedata/Mirrored.py,sha256=I6Fy7stp4cphy9JQ2zFZOynXvqIp3eKL6Clw7CTI8IU,9688
297
299
  fontTools/unicodedata/OTTags.py,sha256=IAt8NXaZOhu5cuuks46DDX3E7Ovoqp-PMUQC-WJUPIs,1246
298
300
  fontTools/unicodedata/ScriptExtensions.py,sha256=eIAXBnM9BbI5V_MWeA9I9Iv2rvgWi8mt8dCWN3cN1gY,29033
299
301
  fontTools/unicodedata/Scripts.py,sha256=jCKY8wlKrSFmsFndzLegVS6vrhVGZ-S3T0dw2vO9Drg,133888
300
302
  fontTools/unicodedata/__init__.py,sha256=dUWWA4Ga1Wud8XkCIWZ02NCHBLtX2XYYUJo4ZLHTd0U,9337
301
- fontTools/varLib/__init__.py,sha256=E38iOYGLna0PhK-t7G33KNl36B11w_Lq7rd6KV5Pt8s,55753
303
+ fontTools/varLib/__init__.py,sha256=HTGmRXieDmkNGeav4uSmoHuhV6IasgiLbeT5TAfu-tQ,58918
302
304
  fontTools/varLib/__main__.py,sha256=ykyZY5GG9IPDsPrUWiHgXEnsgKrQudZkneCTes6GUpU,101
303
- fontTools/varLib/avar.py,sha256=tRgKAUn_K5MTCSkB2MgPYYZ2U6Qo_Cg3jFQV0TDKFgc,9907
304
- fontTools/varLib/avarPlanner.py,sha256=orjyFvg3YkC-slt7fgSEU1AGjLCkGgMEJ7hTRV6CqUA,28362
305
+ fontTools/varLib/avarPlanner.py,sha256=qU3Fw4pZKQc_a1swRW-_d0P-czIT-WJrZJFIxCAq2FM,117
305
306
  fontTools/varLib/builder.py,sha256=1k-N-rTwnZqQpzhNLBx2tqu2oYGG44sJSXKTCjAvIVM,6824
306
307
  fontTools/varLib/cff.py,sha256=bl8rrPHHpwzUdZBY80_5JJLWYcXQOolhKKvTJiiU-Bs,23532
307
308
  fontTools/varLib/errors.py,sha256=mXl-quT2Z75_t7Uwb6ug3VMhmbQjO841YNLeghwuY_s,7153
308
309
  fontTools/varLib/featureVars.py,sha256=cPiijbzRMZ0AiudBNPhF8XE1LoBr5VGkjiwpw5N0oKQ,26883
309
310
  fontTools/varLib/hvar.py,sha256=Tm0ibxOtSVrBQeHiA5-idUQaJEjzOdUWxAQyKTGsOdQ,3808
310
311
  fontTools/varLib/interpolatable.py,sha256=8AXrhsnYY1z0hR6gskqYRYx8qcFsvUKmIIHZRpIOlAU,46430
311
- fontTools/varLib/interpolatableHelpers.py,sha256=JnabttZY7sY9-QzdiqkgzQ_S5nG8k_O1TzLEmfNUvNo,11892
312
+ fontTools/varLib/interpolatableHelpers.py,sha256=CnQIzgJPe_QvhYuDV4QJwf1XelUEPuv5UDG5iPPSifs,12071
312
313
  fontTools/varLib/interpolatablePlot.py,sha256=tUKFd8H9B2eD_GE6jV13J-dZkkIeLmk3ojAYrf-edsA,45644
313
314
  fontTools/varLib/interpolatableTestContourOrder.py,sha256=Pbt0jW0LoVggIwrtADZ7HWK6Ftdoo1bjuWz0ost0HD0,3103
314
315
  fontTools/varLib/interpolatableTestStartingPoint.py,sha256=f5MJ3mj8MctJCvDJwqmW1fIVOgovUMYAOela9HweaRU,4403
315
316
  fontTools/varLib/interpolate_layout.py,sha256=tTPUes_K7MwooUO_wac9AeFEVgL1uGSz4ITYiOizaME,3813
316
- fontTools/varLib/iup.c,sha256=P2w9qYqmYXAowP_RWmnqI0ei6ahoK2Cik5d-gq39JzY,847276
317
- fontTools/varLib/iup.cp310-win_amd64.pyd,sha256=KMsvQFiTvNW9JDMbmzZOnd9ZLhaqhDdsnLQe8OiyDgM,128512
317
+ fontTools/varLib/iup.c,sha256=ah8enmoMLi_AO2jjHrcRou4Wip4X8Y-0ik8_N-KNGmw,847577
318
+ fontTools/varLib/iup.cp310-win_amd64.pyd,sha256=2rBzGeRv9mj2y2umLjK395QdGop42ebaQ-brPFTDHxE,128512
318
319
  fontTools/varLib/iup.py,sha256=O_xPJOBECrNDbQqCC3e5xf9KsWXUd1i3BAp9Fl6Hv2Y,15474
319
320
  fontTools/varLib/merger.py,sha256=V-B17poOYbbrRsfUYJbdqt46GtRfG833MKwtv9NOB3Q,62519
320
321
  fontTools/varLib/models.py,sha256=ZqQb1Lapj5dCO8dwa3UTx1LsIpF0-GiDte32t_TMJJQ,23040
@@ -324,7 +325,13 @@ fontTools/varLib/mvar.py,sha256=Gf3q54ICH-E9oAwKYeIKUPLZabfjY0bUT4t220zLzYI,2489
324
325
  fontTools/varLib/plot.py,sha256=BtozrcnKoEyCs0rGy7PZmrUvUNTmZT-5_sylW5PuJ28,7732
325
326
  fontTools/varLib/stat.py,sha256=ScaVFIVpXTqA-F07umv_66GoxtcjaZ54MPLFvFK4s68,4960
326
327
  fontTools/varLib/varStore.py,sha256=GWz-B1YcR-JnIh2aDmeQg621GDEBj9M4pKYcbZraA3w,24808
327
- fontTools/varLib/instancer/__init__.py,sha256=DHzuj_HRfNA6ELtCqBdCIdq5vjM1KE62ukZsZ-suJZc,76006
328
+ fontTools/varLib/avar/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
329
+ fontTools/varLib/avar/__main__.py,sha256=ILAMsUy9WhhOLjS7XhVKRZteaYjYUx-FT6sahT7PSdE,1842
330
+ fontTools/varLib/avar/build.py,sha256=Fe7w6sYaqXb4UzI2yWd7WAvoMOUcSBtbLvq1rwpxEBo,2166
331
+ fontTools/varLib/avar/map.py,sha256=PYuIRhdYp4TpluFiC_sszp86cGbW5q1PCSdD817QqOw,2975
332
+ fontTools/varLib/avar/plan.py,sha256=G67bjebEBzGsawB_ODEw6ypnhxg8G-Pt98mYir2lmZI,28358
333
+ fontTools/varLib/avar/unbuild.py,sha256=NrdvoZXIpvCwxPjUyc6fKQLzYc0PxhbgZyo37OpMW9E,10738
334
+ fontTools/varLib/instancer/__init__.py,sha256=Enbv3I0j25PhYymbZNTboqnx5dnQXmUSv3ORT9-qib8,77606
328
335
  fontTools/varLib/instancer/__main__.py,sha256=YN_tyJDdmLlH3umiLDS2ue0Zc3fSFexa9wCuk3Wuod0,109
329
336
  fontTools/varLib/instancer/featureVars.py,sha256=b3qtGCYVZ9fqkqcgFQUikYQBX_3_x0YgdrvvxIALbuU,7300
330
337
  fontTools/varLib/instancer/names.py,sha256=vmHi7JZlh-N4amxKdaTJ-5DN9mDJ8Wnh_s9W1gJAQ4Y,15338
@@ -336,11 +343,11 @@ fontTools/voltLib/error.py,sha256=3TsaZBA82acFd2j5Beq3WUQTURTKM0zxOnUFGZovSNA,40
336
343
  fontTools/voltLib/lexer.py,sha256=v9V4zdBO2VqVJG__IWrL8fv_CRURmh2eD_1UpbIJn9g,3467
337
344
  fontTools/voltLib/parser.py,sha256=HS72gxtFzvcPSwEbUYj3E41CPK7ZqK9mSe0nLRxn-IY,26060
338
345
  fontTools/voltLib/voltToFea.py,sha256=nS-OSlx_a-TngGICFNKyFxMhjqkV3OQLcvyzw4sQFyk,37460
339
- fonttools-4.59.1.data/data/share/man/man1/ttx.1,sha256=E71F9mRNWlttVpzlnP7w_fqkQygPkph5s-AtVa0Js50,5601
340
- fonttools-4.59.1.dist-info/licenses/LICENSE,sha256=Ir74Bpfs-qF_l-YrmibfoSggvgVYPo3RKtFpskEnTJk,1093
341
- fonttools-4.59.1.dist-info/licenses/LICENSE.external,sha256=sIKl-Gd1smQfAbzLi5yCkISB3l9QK7JUseE7_CqfMD0,20410
342
- fonttools-4.59.1.dist-info/METADATA,sha256=w4dkM7l3YORuqe-It8OyLkQbUvr3HFOLfIt-KPDAifA,111107
343
- fonttools-4.59.1.dist-info/WHEEL,sha256=KUuBC6lxAbHCKilKua8R9W_TM71_-9Sg5uEP3uDWcoU,101
344
- fonttools-4.59.1.dist-info/entry_points.txt,sha256=8kVHddxfFWA44FSD4mBpmC-4uCynQnkoz_9aNJb227Y,147
345
- fonttools-4.59.1.dist-info/top_level.txt,sha256=rRgRylrXzekqWOsrhygzib12pQ7WILf7UGjqEwkIFDM,10
346
- fonttools-4.59.1.dist-info/RECORD,,
346
+ fonttools-4.60.0.data/data/share/man/man1/ttx.1,sha256=E71F9mRNWlttVpzlnP7w_fqkQygPkph5s-AtVa0Js50,5601
347
+ fonttools-4.60.0.dist-info/licenses/LICENSE,sha256=Ir74Bpfs-qF_l-YrmibfoSggvgVYPo3RKtFpskEnTJk,1093
348
+ fonttools-4.60.0.dist-info/licenses/LICENSE.external,sha256=sIKl-Gd1smQfAbzLi5yCkISB3l9QK7JUseE7_CqfMD0,20410
349
+ fonttools-4.60.0.dist-info/METADATA,sha256=PgJqP6RUEsuXOOvZS6DpPWUA9MQK6_-1-osJkq100CU,113831
350
+ fonttools-4.60.0.dist-info/WHEEL,sha256=KUuBC6lxAbHCKilKua8R9W_TM71_-9Sg5uEP3uDWcoU,101
351
+ fonttools-4.60.0.dist-info/entry_points.txt,sha256=8kVHddxfFWA44FSD4mBpmC-4uCynQnkoz_9aNJb227Y,147
352
+ fonttools-4.60.0.dist-info/top_level.txt,sha256=rRgRylrXzekqWOsrhygzib12pQ7WILf7UGjqEwkIFDM,10
353
+ fonttools-4.60.0.dist-info/RECORD,,