fonttools 4.58.4__cp312-cp312-macosx_10_13_universal2.whl → 4.58.5__cp312-cp312-macosx_10_13_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 CHANGED
@@ -3,6 +3,6 @@ from fontTools.misc.loggingTools import configLogger
3
3
 
4
4
  log = logging.getLogger(__name__)
5
5
 
6
- version = __version__ = "4.58.4"
6
+ version = __version__ = "4.58.5"
7
7
 
8
8
  __all__ = ["version", "log", "configLogger"]
Binary file
fontTools/feaLib/ast.py CHANGED
@@ -1,3 +1,4 @@
1
+ import weakref
1
2
  from fontTools.feaLib.error import FeatureLibError
2
3
  from fontTools.feaLib.location import FeatureLibLocation
3
4
  from fontTools.misc.encodingTools import getEncoding
@@ -529,7 +530,7 @@ class MarkClass(object):
529
530
  def addDefinition(self, definition):
530
531
  """Add a :class:`MarkClassDefinition` statement to this mark class."""
531
532
  assert isinstance(definition, MarkClassDefinition)
532
- self.definitions.append(definition)
533
+ self.definitions.append(weakref.proxy(definition))
533
534
  for glyph in definition.glyphSet():
534
535
  if glyph in self.glyphs:
535
536
  otherLoc = self.glyphs[glyph].location
@@ -259,12 +259,13 @@ class Builder(object):
259
259
  key = (script, lang, feature_name)
260
260
  self.features_.setdefault(key, []).append(lookup)
261
261
 
262
- def get_lookup_(self, location, builder_class):
262
+ def get_lookup_(self, location, builder_class, mapping=None):
263
263
  if (
264
264
  self.cur_lookup_
265
265
  and type(self.cur_lookup_) == builder_class
266
266
  and self.cur_lookup_.lookupflag == self.lookupflag_
267
267
  and self.cur_lookup_.markFilterSet == self.lookupflag_markFilterSet_
268
+ and self.cur_lookup_.can_add_mapping(mapping)
268
269
  ):
269
270
  return self.cur_lookup_
270
271
  if self.cur_lookup_name_ and self.cur_lookup_:
@@ -1305,7 +1306,7 @@ class Builder(object):
1305
1306
  # GSUB rules
1306
1307
 
1307
1308
  def add_any_subst_(self, location, mapping):
1308
- lookup = self.get_lookup_(location, AnySubstBuilder)
1309
+ lookup = self.get_lookup_(location, AnySubstBuilder, mapping=mapping)
1309
1310
  for key, value in mapping.items():
1310
1311
  if key in lookup.mapping:
1311
1312
  if value == lookup.mapping[key]:
fontTools/misc/visitor.py CHANGED
@@ -1,11 +1,19 @@
1
1
  """Generic visitor pattern implementation for Python objects."""
2
2
 
3
3
  import enum
4
+ import weakref
4
5
 
5
6
 
6
7
  class Visitor(object):
7
8
  defaultStop = False
8
9
 
10
+ _visitors = {
11
+ # By default we skip visiting weak references to avoid recursion
12
+ # issues. Users can override this by registering a visit
13
+ # function for weakref.ProxyType.
14
+ weakref.ProxyType: {None: lambda self, obj, *args, **kwargs: False}
15
+ }
16
+
9
17
  @classmethod
10
18
  def _register(celf, clazzes_attrs):
11
19
  assert celf != Visitor, "Subclass Visitor instead."
@@ -256,6 +256,10 @@ class LookupBuilder(object):
256
256
  )
257
257
  )
258
258
 
259
+ def can_add_mapping(self, _mapping) -> bool:
260
+ # used by AnySubstBuilder, below
261
+ return True
262
+
259
263
 
260
264
  class AlternateSubstBuilder(LookupBuilder):
261
265
  """Builds an Alternate Substitution (GSUB3) lookup.
@@ -1376,6 +1380,32 @@ class AnySubstBuilder(LookupBuilder):
1376
1380
  def _add_to_ligature_subst(self, builder, key, value):
1377
1381
  builder.ligatures[key] = value[0]
1378
1382
 
1383
+ def can_add_mapping(self, mapping) -> bool:
1384
+ if mapping is None:
1385
+ return True
1386
+ # single sub rules can be treated as (degenerate) liga-or-multi sub
1387
+ # rules, but multi and liga sub rules themselves have incompatible
1388
+ # representations. It is uncommon that these are in the same set of
1389
+ # rules, but it happens.
1390
+ is_multi = any(len(v) > 1 for v in mapping.values())
1391
+ is_liga = any(len(k) > 1 for k in mapping.keys())
1392
+
1393
+ has_existing_multi = False
1394
+ has_existing_liga = False
1395
+
1396
+ for k, v in self.mapping.items():
1397
+ if k[0] == self.SUBTABLE_BREAK_:
1398
+ continue
1399
+ if len(k) > 1:
1400
+ has_existing_liga = True
1401
+ if len(v) > 1:
1402
+ has_existing_multi = True
1403
+
1404
+ can_reuse = not (has_existing_multi and is_liga) and not (
1405
+ has_existing_liga and is_multi
1406
+ )
1407
+ return can_reuse
1408
+
1379
1409
  def promote_lookup_type(self, is_named_lookup):
1380
1410
  # https://github.com/fonttools/fonttools/issues/612
1381
1411
  # A multiple substitution may have a single destination, in which case
Binary file
@@ -723,9 +723,7 @@ def instantiateCFF2(
723
723
  minor = varDataCursor[major]
724
724
  varDataCursor[major] += 1
725
725
 
726
- varIdx = (major << 16) + minor
727
-
728
- defaultValue += round(defaultDeltas[varIdx])
726
+ defaultValue += round(defaultDeltas[major][minor])
729
727
  newDefaults.append(defaultValue)
730
728
 
731
729
  varData = varStore.VarData[major]
@@ -781,7 +779,9 @@ def instantiateCFF2(
781
779
  storeBlendsToVarStore(value + [count])
782
780
 
783
781
  # Instantiate VarStore
784
- defaultDeltas = instantiateItemVariationStore(varStore, fvarAxes, axisLimits)
782
+ defaultDeltas = instantiateItemVariationStore(
783
+ varStore, fvarAxes, axisLimits, hierarchical=True
784
+ )
785
785
 
786
786
  # Read back new charstring blends from the instantiated VarStore
787
787
  varDataCursor = [0] * len(varStore.VarData)
@@ -839,18 +839,13 @@ def instantiateCFF2(
839
839
  varData.Item = []
840
840
  varData.ItemCount = 0
841
841
 
842
- # Remove vsindex commands that are no longer needed, collect those that are.
843
- usedVsindex = set()
844
- for commands in allCommands:
845
- if any(isinstance(arg, list) for command in commands for arg in command[1]):
846
- vsindex = 0
847
- for command in commands:
848
- if command[0] == "vsindex":
849
- vsindex = command[1][0]
850
- continue
851
- if any(isinstance(arg, list) for arg in command[1]):
852
- usedVsindex.add(vsindex)
853
- else:
842
+ # Collect surviving vsindexes
843
+ usedVsindex = set(
844
+ i for i in range(len(varStore.VarData)) if varStore.VarData[i].VarRegionCount
845
+ )
846
+ # Remove vsindex commands that are no longer needed
847
+ for commands, private in zip(allCommands, allCommandPrivates):
848
+ if not any(isinstance(arg, list) for command in commands for arg in command[1]):
854
849
  commands[:] = [command for command in commands if command[0] != "vsindex"]
855
850
 
856
851
  # Remove unused VarData and update vsindex values
@@ -863,10 +858,14 @@ def instantiateCFF2(
863
858
  for command in commands:
864
859
  if command[0] == "vsindex":
865
860
  command[1][0] = vsindexMapping[command[1][0]]
861
+ for private in privateDicts:
862
+ if hasattr(private, "vsindex"):
863
+ private.vsindex = vsindexMapping[private.vsindex]
866
864
 
867
865
  # Remove initial vsindex commands that are implied
868
- for commands in allCommands:
869
- if commands and commands[0] == ("vsindex", [0]):
866
+ for commands, private in zip(allCommands, allCommandPrivates):
867
+ vsindex = getattr(private, "vsindex", 0)
868
+ if commands and commands[0] == ("vsindex", [vsindex]):
870
869
  commands.pop(0)
871
870
 
872
871
  # Ship the charstrings!
@@ -1247,7 +1246,9 @@ class _TupleVarStoreAdapter(object):
1247
1246
  return itemVarStore
1248
1247
 
1249
1248
 
1250
- def instantiateItemVariationStore(itemVarStore, fvarAxes, axisLimits):
1249
+ def instantiateItemVariationStore(
1250
+ itemVarStore, fvarAxes, axisLimits, hierarchical=False
1251
+ ):
1251
1252
  """Compute deltas at partial location, and update varStore in-place.
1252
1253
 
1253
1254
  Remove regions in which all axes were instanced, or fall outside the new axis
@@ -1279,12 +1280,19 @@ def instantiateItemVariationStore(itemVarStore, fvarAxes, axisLimits):
1279
1280
  assert itemVarStore.VarDataCount == newItemVarStore.VarDataCount
1280
1281
  itemVarStore.VarData = newItemVarStore.VarData
1281
1282
 
1282
- defaultDeltas = {
1283
- ((major << 16) + minor): delta
1284
- for major, deltas in enumerate(defaultDeltaArray)
1285
- for minor, delta in enumerate(deltas)
1286
- }
1287
- defaultDeltas[itemVarStore.NO_VARIATION_INDEX] = 0
1283
+ if not hierarchical:
1284
+ defaultDeltas = {
1285
+ ((major << 16) + minor): delta
1286
+ for major, deltas in enumerate(defaultDeltaArray)
1287
+ for minor, delta in enumerate(deltas)
1288
+ }
1289
+ defaultDeltas[itemVarStore.NO_VARIATION_INDEX] = 0
1290
+ else:
1291
+ defaultDeltas = {0xFFFF: {0xFFFF: 0}} # NO_VARIATION_INDEX
1292
+ for major, deltas in enumerate(defaultDeltaArray):
1293
+ defaultDeltasForMajor = defaultDeltas.setdefault(major, {})
1294
+ for minor, delta in enumerate(deltas):
1295
+ defaultDeltasForMajor[minor] = delta
1288
1296
  return defaultDeltas
1289
1297
 
1290
1298
 
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fonttools
3
- Version: 4.58.4
3
+ Version: 4.58.5
4
4
  Summary: Tools to manipulate font files
5
5
  Home-page: http://github.com/fonttools/fonttools
6
6
  Author: Just van Rossum
@@ -388,6 +388,13 @@ Have fun!
388
388
  Changelog
389
389
  ~~~~~~~~~
390
390
 
391
+ 4.58.5 (released 2025-07-03)
392
+ ----------------------------
393
+
394
+ - [feaLib] Don't try to combine ligature & multisub rules (#3874).
395
+ - [feaLib/ast] Use weakref proxies to avoid cycles in visitor (#3873).
396
+ - [varLib.instancer] Fixed instancing CFF2 fonts where VarData contains more than 64k items (#3858).
397
+
391
398
  4.58.4 (released 2025-06-13)
392
399
  ----------------------------
393
400
 
@@ -1,7 +1,8 @@
1
+ fonttools-4.58.5.data/data/share/man/man1/ttx.1,sha256=cLbm_pOOj1C76T2QXvDxzwDj9gk-GTd5RztvTMsouFw,5377
1
2
  fontTools/ttx.py,sha256=FxuGubujWCGJWSTrJEjoNH--25fVIPy-ZRtYy9H6iTk,17277
2
3
  fontTools/fontBuilder.py,sha256=yF2-IYl_hao-Zy_FWSI4R-HnlFpzFrz0YBGQO8zfaOs,34130
3
4
  fontTools/unicode.py,sha256=ZZ7OMmWvIyV1IL1k6ioTzaRAh3tUvm6gvK7QgFbOIHY,1237
4
- fontTools/__init__.py,sha256=Zh-X7sXdWHvqUllqCJHWVEWn45Cl9M9sbKwmwS0FQtg,183
5
+ fontTools/__init__.py,sha256=4HbUas2X9jd_VJXaT0sWmsVzqiFmh9BonBxhlk4Sho8,183
5
6
  fontTools/tfmLib.py,sha256=UMbkM73JXRJVS9t2B-BJc13rSjImaWBuzCoehLwHFhs,14270
6
7
  fontTools/afmLib.py,sha256=1MagIItOzRV4vV5kKPxeDZbPJsfxLB3wdHLFkQvl0uk,13164
7
8
  fontTools/agl.py,sha256=05bm8Uq45uVWW8nPbP6xbNgmFyxQr8sWhYAiP0VSjnI,112975
@@ -16,9 +17,9 @@ fontTools/qu2cu/__init__.py,sha256=Jfm1JljXbt91w4gyvZn6jzEmVnhRx50sh2fDongrOsE,6
16
17
  fontTools/qu2cu/qu2cu.py,sha256=IYtpkwHdfKOXJr65Y_pJ9Lrt_MgJaISAKGMAs5ilFSM,12288
17
18
  fontTools/qu2cu/cli.py,sha256=U2rooYnVVEalGRAWGFHk-Kp6Okys8wtzdaWLjw1bngY,3714
18
19
  fontTools/qu2cu/qu2cu.c,sha256=aAgEd2kICdXMOPZyPWUp6FNP4MekqCJ0A_DO2lzh7yA,689362
19
- fontTools/qu2cu/qu2cu.cpython-312-darwin.so,sha256=QUSFY8GpYW1cg8YROqXs2L30Hl0jZ5-nc6sYgIOPEes,330736
20
+ fontTools/qu2cu/qu2cu.cpython-312-darwin.so,sha256=g8m0hHn8VXmTvJLCkIZI3MoDqQka__Mj3ayY1_DlRNk,330736
20
21
  fontTools/qu2cu/__main__.py,sha256=9FWf6SIZaRaC8SiL0LhjAWC2yIdY9N_9wlRko8m1l2Q,93
21
- fontTools/misc/bezierTools.cpython-312-darwin.so,sha256=kn3hW1CN_7i2AxkHpZ8-5N41FyHbwhUcwQd2m3sGMxU,1000136
22
+ fontTools/misc/bezierTools.cpython-312-darwin.so,sha256=etQJu-xnUKdLi0pafiYCpzKhxA2_kN96CCzSfTIjrRA,1000136
22
23
  fontTools/misc/arrayTools.py,sha256=jZk__GE-K9VViZE_H-LPPj0smWbKng-yfPE8BfGp8HI,11483
23
24
  fontTools/misc/cython.py,sha256=eyLcL2Bw-SSToYro8f44dkkYRlQfiFbhcza0afS-qHE,682
24
25
  fontTools/misc/cliTools.py,sha256=qCznJMLCQu3ZHQD_4ctUnr3TkfAUdkGl-UuxZUrppy0,1862
@@ -42,7 +43,7 @@ fontTools/misc/testTools.py,sha256=3vj_KllUQVEiVFbS0SzTmeuKv44-L-disI1dZ4XhOfw,7
42
43
  fontTools/misc/lazyTools.py,sha256=BC6MmF-OzJ3GrBD8TYDZ-VCSN4UOx0pN0r3oF4GSoiw,1020
43
44
  fontTools/misc/loggingTools.py,sha256=NOYROsLK5TzONK5967OGdVonNyXC6kP_CmPr7M2PW_c,19933
44
45
  fontTools/misc/textTools.py,sha256=pbhr6LVhm3J-0Z4saYnJfxBDzyoiw4BR9pAgwypiOw8,3377
45
- fontTools/misc/visitor.py,sha256=S3I_OCavPhkwGQpwIKV9XjNCaWUcafo7HQCyxDI0nQg,5314
46
+ fontTools/misc/visitor.py,sha256=c9YQs14bXfL1SmqwoAhEGCvXlmyZIKR5_Vr4n7iWaRs,5610
46
47
  fontTools/misc/macCreatorType.py,sha256=Je9jtqUr7EPbpH3QxlVl3pizoQ-1AOPMBIctHIMTM3k,1593
47
48
  fontTools/misc/psCharStrings.py,sha256=Tb5-k_5krP0eu7qD054iGxE4Zybk9oB4jdiKzcsV0rw,43036
48
49
  fontTools/misc/transform.py,sha256=OR8dPsAw87z77gkZQMq00iUkDWLIxYv-12XiKH1-erk,15798
@@ -65,7 +66,7 @@ fontTools/cu2qu/cli.py,sha256=MbAQnOpZwrUFe_tjAP3Tgf6uLdOgHlONUcPNeTXwH0Y,6076
65
66
  fontTools/cu2qu/errors.py,sha256=PyJNMy8lHDtKpfFkc0nkM8F4jNLZAC4lPQCN1Km4bpg,2441
66
67
  fontTools/cu2qu/cu2qu.py,sha256=GGNdNWT4xgrvxeZTczIj9Nxi6vN-5lb90KyVmB95W0Y,16439
67
68
  fontTools/cu2qu/__main__.py,sha256=kTUI-jczsHeelULLlory74QEeFjZWp9zigCc7PrdVQY,92
68
- fontTools/cu2qu/cu2qu.cpython-312-darwin.so,sha256=sXRkIRbfzh71LUOqUMAfln7pO6A7com_WEDkhpol__M,308656
69
+ fontTools/cu2qu/cu2qu.cpython-312-darwin.so,sha256=o0CzKU9i8c5Yqmuhn4Nii7y42NCCQc3HUhLEAfqkqso,308656
69
70
  fontTools/subset/cff.py,sha256=rqMRJOlX5FacV1LW8aDlVOglgEM87TkMA9bdsYenask,6145
70
71
  fontTools/subset/util.py,sha256=9SXFYb5Ef9Z58uXmYPCQil8B2i3Q7aFB_1fFDFSppdU,754
71
72
  fontTools/subset/__init__.py,sha256=c3EulDBf-RYUaUFTM_JoIuVHvmLK7Fwf4_IlgxS46BY,137659
@@ -104,7 +105,7 @@ fontTools/varLib/__init__.py,sha256=dc1_8itv2pS3q6mO8vMuEe-XdWOiJLIWVsJ8-bhPflI,
104
105
  fontTools/varLib/mutator.py,sha256=YJkKFFWjwpYZ1MrC7UZYJ1BuYTGiwgi7jHnpqNpKfKg,19278
105
106
  fontTools/varLib/interpolatablePlot.py,sha256=w393P6mGLRhYkIjSxMww3qyoYxAUZzCXlmPBbI_84C0,44375
106
107
  fontTools/varLib/builder.py,sha256=mSKOCcnnw-WzmZs15FayoqCDh77Ts7o9Tre9psh8CUc,6609
107
- fontTools/varLib/iup.cpython-312-darwin.so,sha256=8oCj7YKBohSgO2oTB3iPJzcaUX4-Psi7WvZffPfz4rQ,415472
108
+ fontTools/varLib/iup.cpython-312-darwin.so,sha256=3reucE3r31Xza7DO4szyvpZUb9dYlVOwzHoEKP7OoKg,415472
108
109
  fontTools/varLib/stat.py,sha256=XuNKKZxGlBrl4OGFDAwVXhpBwJi23U3BdHmNTKoJnvE,4811
109
110
  fontTools/varLib/hvar.py,sha256=u7ppYCyWRBbJhIYyBcOxuVvwbZHnlOmXlUJH74a3LHs,3695
110
111
  fontTools/varLib/interpolatableHelpers.py,sha256=lXd7kwfIVl-4opd-vxCDhf48RnJ7IQKv_uuFQM_6vaU,11496
@@ -120,7 +121,7 @@ fontTools/varLib/interpolate_layout.py,sha256=22VjGZuV2YiAe2MpdTf0xPVz1x2G84bcOL
120
121
  fontTools/varLib/merger.py,sha256=E59oli4AwqWZ-FgnuStMSBvsB-FHe-55esXTYUqGeJ8,60802
121
122
  fontTools/varLib/multiVarStore.py,sha256=eQEuWNY01YF5zDpy1UwNtvOYyD6c0FLxpH-QFpX1i78,8305
122
123
  fontTools/varLib/instancer/solver.py,sha256=uMePwX0BVT5F94kUvDglsI4_F0nEH67F7RFuJ6tQwQ0,11002
123
- fontTools/varLib/instancer/__init__.py,sha256=4I3M5PL3rLcch_yw_rflb0f09SG3zA3eADws-purFXg,71827
124
+ fontTools/varLib/instancer/__init__.py,sha256=UxmXi4zpOGxSOMRaWQB-2IsI_tsZIK0O_T4AqXPJXZQ,72266
124
125
  fontTools/varLib/instancer/names.py,sha256=IPRqel_M8zVU0jl30WsfgufxUm9PBBQDQCY3VHapeHc,14950
125
126
  fontTools/varLib/instancer/__main__.py,sha256=zfULwcP01FhplS1IlcMgNQnLxk5RVfmOuinWjqeid-g,104
126
127
  fontTools/varLib/instancer/featureVars.py,sha256=oPqSlnHLMDTtOsmQMi6gkzLox7ymCrqlRAkvC_EJ4bc,7110
@@ -132,7 +133,7 @@ fontTools/pens/cocoaPen.py,sha256=IJRQcAxRuVOTQ90bB_Bgjnmz7px_ST5uLF9CW-Y0KPY,61
132
133
  fontTools/pens/t2CharStringPen.py,sha256=GgGklb5XsCer0w37ujgRLRXx-EuzdFsyCYuzCx4n-Qs,2931
133
134
  fontTools/pens/pointPen.py,sha256=kc-jhMC-UgXZzKz7r6UL36kosYAQQEJ0xjhm3SaX59Y,22730
134
135
  fontTools/pens/transformPen.py,sha256=s0kUyQdnemUwHvYr2SFboFmh4WY1S9OHBL8L4PJKRwE,4056
135
- fontTools/pens/momentsPen.cpython-312-darwin.so,sha256=luzcFiT9c5seYWG-b2iDzu_ax54rvM0XOgkoMeqZnxw,274584
136
+ fontTools/pens/momentsPen.cpython-312-darwin.so,sha256=jzyi56KUpbl6TvAndijCn6Cko0-B4k223KR_jXG-EEE,274584
136
137
  fontTools/pens/reportLabPen.py,sha256=kpfMfOLXt2vOQ5smPsU82ft80FpCPWJzQLl7ENOH8Ew,2066
137
138
  fontTools/pens/filterPen.py,sha256=kKSvLmWCW4MkCF0ciJhjTj-LdUGOQL593PFkpm5PhP8,7790
138
139
  fontTools/pens/areaPen.py,sha256=Y1WkmqzcC4z_bpGAR0IZUKrtHFtxKUQBmr5-64_zCOk,1472
@@ -159,7 +160,7 @@ fontTools/pens/hashPointPen.py,sha256=gElrFyQoOQp3ZbpKHRWPwC61A9OgT2Js8crVUD8BQA
159
160
  fontTools/pens/quartzPen.py,sha256=EH482Kz_xsqYhVRovv6N_T1CXaSvOzUKPLxTaN956tU,1287
160
161
  fontTools/otlLib/error.py,sha256=cthuhBuOwZYpkTLi5gFPupUxkXkCHe-L_YgkE7N1wCI,335
161
162
  fontTools/otlLib/__init__.py,sha256=D2leUW-3gsUTOFcJYGC18edBYjIJ804ut4qitJYWsaQ,45
162
- fontTools/otlLib/builder.py,sha256=nv1bEbN-Q3OhDZJyz3t1CK4M-EoFZ1iPHIPHIQUBNB8,127669
163
+ fontTools/otlLib/builder.py,sha256=MHuQKul3Nl3vzXmY7Wb6x54ZNbJGUzRUD7-VKpOG7lE,128727
163
164
  fontTools/otlLib/maxContextCalc.py,sha256=3es4Kt84TaZ49sA2ev1zrlwPJikJCAECx5KavwhyB-I,3175
164
165
  fontTools/otlLib/optimize/__init__.py,sha256=UUQRpNkHU2RczCRt-Gz7sEiYE9AQq9BHLXZEOyvsnX4,1530
165
166
  fontTools/otlLib/optimize/gpos.py,sha256=htOgSP743DZDUKF3eWAeJ-kdqNYOnpGXdlV-rbEXJ1A,17668
@@ -191,13 +192,13 @@ fontTools/feaLib/variableScalar.py,sha256=Xu8tpDlQbfIfjnKnYDEf43EqVdyIJUy8_1ROVP
191
192
  fontTools/feaLib/lexer.c,sha256=yVnAVeP6s8MEmqVhbu3aZHdgJZxF-AQyzNssVS-09rY,753326
192
193
  fontTools/feaLib/__init__.py,sha256=jlIru2ghxvb1HhC5Je2BCXjFJmFQlYKpruorPoz3BvQ,213
193
194
  fontTools/feaLib/lookupDebugInfo.py,sha256=gVRr5-APWfT_a5-25hRuawSVX8fEvXVsOSLWkH91T2w,304
194
- fontTools/feaLib/builder.py,sha256=Rfevokk_53TD5_0uiGxXbUKoqZnE7DuKoG6OKyl742o,73076
195
+ fontTools/feaLib/builder.py,sha256=f8bet-VuwM6aIBIUPgKUQ01chyTSaWOzn152zq4Y1rY,73165
195
196
  fontTools/feaLib/parser.py,sha256=YDy5ySnQaNXB-q-fSpcIAbBRzQO9jJH8t2Y7jt3vpuI,99331
196
197
  fontTools/feaLib/location.py,sha256=JXzHqGV56EHdcq823AwA5oaK05hf_1ySWpScbo3zGC0,234
197
198
  fontTools/feaLib/lexer.py,sha256=emyMPmRoqNZkzxnJyI6JRCCtXrbCOFofwa9O6ABGLiw,11121
198
- fontTools/feaLib/ast.py,sha256=AuWdCUE_oysF2yDkvr1dj8K7AUF9bibDEIM0Dla9sbc,74128
199
+ fontTools/feaLib/ast.py,sha256=48Y6vpSD_wYfucWyh_bQtzf2AQFX-pOwBvsxdcpVDz0,74158
199
200
  fontTools/feaLib/__main__.py,sha256=Df2PA6LXwna98lSXiL7R4as_ZEdWCIk3egSM5w7GpvM,2240
200
- fontTools/feaLib/lexer.cpython-312-darwin.so,sha256=HJ2wSi8nV951Y-3Gl644-0N9HHblhAmuIq7Cq7xD6Jg,364256
201
+ fontTools/feaLib/lexer.cpython-312-darwin.so,sha256=_RF8MqObnTVXjTowNHhFQYwlZId2plAycZTm4emsF_M,364256
201
202
  fontTools/ttLib/sfnt.py,sha256=rkznKfteU_Rn9P65WSjFaiwQgpEAoh-TrQpvkQhdIlo,22832
202
203
  fontTools/ttLib/macUtils.py,sha256=lj3oeFpyjV7ko_JqnluneITmAtlc119J-vwTTg2s73A,1737
203
204
  fontTools/ttLib/standardGlyphOrder.py,sha256=7AY_fVWdtwZ4iv5uWdyKAUcbEQiSDt1lN4sqx9xXwE0,5785
@@ -324,11 +325,10 @@ fontTools/colorLib/builder.py,sha256=kmO7OuudQQb3fEOS7aLzgTDVjqS9i2xIQmk9p1uBe8A
324
325
  fontTools/colorLib/geometry.py,sha256=3ScySrR2YDJa7d5K5_xM5Yt1-3NCV-ry8ikYA5VwVbI,5518
325
326
  fontTools/colorLib/errors.py,sha256=CsaviiRxxrpgVX4blm7KCyK8553ljwL44xkJOeC5U7U,41
326
327
  fontTools/colorLib/unbuilder.py,sha256=iW-E5I39WsV82K3NgCO4Cjzwm1WqzGrtypHt8epwbHM,2142
327
- fonttools-4.58.4.data/data/share/man/man1/ttx.1,sha256=cLbm_pOOj1C76T2QXvDxzwDj9gk-GTd5RztvTMsouFw,5377
328
- fonttools-4.58.4.dist-info/RECORD,,
329
- fonttools-4.58.4.dist-info/WHEEL,sha256=3DzZhK-rNIkkEIppB3qbu6syT4kayeV5HkusnWIqMIg,142
330
- fonttools-4.58.4.dist-info/entry_points.txt,sha256=8kVHddxfFWA44FSD4mBpmC-4uCynQnkoz_9aNJb227Y,147
331
- fonttools-4.58.4.dist-info/top_level.txt,sha256=rRgRylrXzekqWOsrhygzib12pQ7WILf7UGjqEwkIFDM,10
332
- fonttools-4.58.4.dist-info/METADATA,sha256=SkGgR8yK__IzBRG7rCXQWPqII5dAr-r5yU83yucM2II,106602
333
- fonttools-4.58.4.dist-info/licenses/LICENSE,sha256=Z4cgj4P2Wcy8IiOy_elS_6b36KymLxqKK_W8UbsbI4M,1072
334
- fonttools-4.58.4.dist-info/licenses/LICENSE.external,sha256=1IdixYQuQZseNUNQ1bR3SJQhW1d5SGRUR23TNBJjzwo,18687
328
+ fonttools-4.58.5.dist-info/RECORD,,
329
+ fonttools-4.58.5.dist-info/WHEEL,sha256=3DzZhK-rNIkkEIppB3qbu6syT4kayeV5HkusnWIqMIg,142
330
+ fonttools-4.58.5.dist-info/entry_points.txt,sha256=8kVHddxfFWA44FSD4mBpmC-4uCynQnkoz_9aNJb227Y,147
331
+ fonttools-4.58.5.dist-info/top_level.txt,sha256=rRgRylrXzekqWOsrhygzib12pQ7WILf7UGjqEwkIFDM,10
332
+ fonttools-4.58.5.dist-info/METADATA,sha256=0pEZMdDGPPqfSxc73Y1oqegWL7klg3-JmIrl8U2eWwE,106901
333
+ fonttools-4.58.5.dist-info/licenses/LICENSE,sha256=Z4cgj4P2Wcy8IiOy_elS_6b36KymLxqKK_W8UbsbI4M,1072
334
+ fonttools-4.58.5.dist-info/licenses/LICENSE.external,sha256=1IdixYQuQZseNUNQ1bR3SJQhW1d5SGRUR23TNBJjzwo,18687