fonttools 4.58.4__cp313-cp313-macosx_10_13_x86_64.whl → 4.58.5__cp313-cp313-macosx_10_13_x86_64.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
@@ -14,7 +15,7 @@ fontTools/encodings/StandardEncoding.py,sha256=Eo3AGE8FE_p-IVYYuV097KouSsF3UrXoR
14
15
  fontTools/qu2cu/benchmark.py,sha256=GMcr_4r7L6K9SmJ13itt-_XKhnKqSVUDPlXUG6IZmmM,1400
15
16
  fontTools/qu2cu/__init__.py,sha256=Jfm1JljXbt91w4gyvZn6jzEmVnhRx50sh2fDongrOsE,618
16
17
  fontTools/qu2cu/qu2cu.py,sha256=IYtpkwHdfKOXJr65Y_pJ9Lrt_MgJaISAKGMAs5ilFSM,12288
17
- fontTools/qu2cu/qu2cu.cpython-313-darwin.so,sha256=LXiDAm51_QydX8Klm-4iHDG3XPGtMNRXormiO30NwiY,166664
18
+ fontTools/qu2cu/qu2cu.cpython-313-darwin.so,sha256=Q0-AJraFAf1okETsjWeupD76iGMBILno6IuCFYU3V7c,166664
18
19
  fontTools/qu2cu/cli.py,sha256=U2rooYnVVEalGRAWGFHk-Kp6Okys8wtzdaWLjw1bngY,3714
19
20
  fontTools/qu2cu/qu2cu.c,sha256=aAgEd2kICdXMOPZyPWUp6FNP4MekqCJ0A_DO2lzh7yA,689362
20
21
  fontTools/qu2cu/__main__.py,sha256=9FWf6SIZaRaC8SiL0LhjAWC2yIdY9N_9wlRko8m1l2Q,93
@@ -26,7 +27,7 @@ fontTools/misc/psLib.py,sha256=ioIPm5x3MHkBXF2vzNkC4iVZYobrkWcyvFhmYsjOrPY,12099
26
27
  fontTools/misc/timeTools.py,sha256=e9h5pgzL04tBDXmCv_8eRGB4boFV8GKXlS6dq3ggEpw,2234
27
28
  fontTools/misc/configTools.py,sha256=YXBE_vL2dMWCnK4oY3vtU15B79q82DtKp7h7XRqJc1Q,11188
28
29
  fontTools/misc/sstruct.py,sha256=HuXwoRr9-mAbBxI3gJ3n34ML7NAGSHsAAazaaloWQB4,7158
29
- fontTools/misc/bezierTools.cpython-313-darwin.so,sha256=RmC3rLng_zC74XCe40IkFJHK-dGbHMB_MbgA5y0N4A0,527024
30
+ fontTools/misc/bezierTools.cpython-313-darwin.so,sha256=O8mqBAl6nJdAxoTsYOEe4MaznPagAsPU3kB3mv-36i8,527024
30
31
  fontTools/misc/classifyTools.py,sha256=zcg3EM4GOerBW9c063ljaLllgeeZ772EpFZjp9CdgLI,5613
31
32
  fontTools/misc/symfont.py,sha256=x5ZwqK9Ik9orG6qSftgVGygBFE1wTSngrMK2We1Z5AM,6977
32
33
  fontTools/misc/roundTools.py,sha256=1RSXZ0gyi1qW42tz6WSBMJD1FlPdtgqKfWixVN9bd78,3173
@@ -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
@@ -62,7 +63,7 @@ fontTools/cu2qu/cu2qu.c,sha256=5MqBt8fFiiaXVyfUVZbAkI1P1CP9g6ZSyk7LbKzmx78,62933
62
63
  fontTools/cu2qu/__init__.py,sha256=Cuc7Uglb0nSgaraTxXY5J8bReznH5wApW0uakN7MycY,618
63
64
  fontTools/cu2qu/ufo.py,sha256=qZR70uWdCia19Ff8GLn5NeItscvvn69DegjDZVF4eNI,11794
64
65
  fontTools/cu2qu/cli.py,sha256=MbAQnOpZwrUFe_tjAP3Tgf6uLdOgHlONUcPNeTXwH0Y,6076
65
- fontTools/cu2qu/cu2qu.cpython-313-darwin.so,sha256=cIQccFWeAcp3r7DnzQ6gf3TczFnwmRS1RYHyHbzxy6s,143984
66
+ fontTools/cu2qu/cu2qu.cpython-313-darwin.so,sha256=JXMBz98YRyrHEiPYJEPKkbMi35pfl46p5uAJj6yJ1zg,143984
66
67
  fontTools/cu2qu/errors.py,sha256=PyJNMy8lHDtKpfFkc0nkM8F4jNLZAC4lPQCN1Km4bpg,2441
67
68
  fontTools/cu2qu/cu2qu.py,sha256=GGNdNWT4xgrvxeZTczIj9Nxi6vN-5lb90KyVmB95W0Y,16439
68
69
  fontTools/cu2qu/__main__.py,sha256=kTUI-jczsHeelULLlory74QEeFjZWp9zigCc7PrdVQY,92
@@ -113,14 +114,14 @@ fontTools/varLib/interpolatable.py,sha256=Bhlq_LhEZ-sXfLNY8aFEChFrsKuT2kzmnuMfG5
113
114
  fontTools/varLib/avarPlanner.py,sha256=uLMGsL6cBbEMq5YItwABG_vXlXV3bxquM93WGDJ1brA,27358
114
115
  fontTools/varLib/mvar.py,sha256=LTV77vH_3Ecg_qKBO5xQzjLOlJir_ppEr7mPVZRgad8,2449
115
116
  fontTools/varLib/errors.py,sha256=dMo8eGj76I7H4hrBEiNbYrGs2J1K1SwdsUyTHpkVOrQ,6934
116
- fontTools/varLib/iup.cpython-313-darwin.so,sha256=QxKtBbD3W0_kvWw6V1Uw1219VBDr8EMZdTL2ygiYWzo,202392
117
+ fontTools/varLib/iup.cpython-313-darwin.so,sha256=w7iLDs2EMD_2NZ1p4AhgdXma0LcbO1SpvkjeCWWm2u4,202392
117
118
  fontTools/varLib/__main__.py,sha256=wbdYC5bPjWCxA0I4SKcLO88gl-UMtsYS8MxdW9ySTkY,95
118
119
  fontTools/varLib/featureVars.py,sha256=ZmHPyy4KuamR4bI1PfH-Umk4EN_CfwvNfchu7BOmECg,25695
119
120
  fontTools/varLib/interpolate_layout.py,sha256=22VjGZuV2YiAe2MpdTf0xPVz1x2G84bcOL0vOeBpGQM,3689
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
@@ -139,7 +140,7 @@ fontTools/pens/teePen.py,sha256=P1ARJOCMJ6MxK-PB1yZ-ips3CUfnadWYnQ_do6VIasQ,1290
139
140
  fontTools/pens/basePen.py,sha256=eIGSKrKm6w4LLHuG6XJoQZ3eObtoKV5P6aF4gT4sk7U,17073
140
141
  fontTools/pens/pointInsidePen.py,sha256=noEUvBQIeAheDMJwzvvfnEiKhmwbS1i0RQE9jik6Gl4,6355
141
142
  fontTools/pens/cu2quPen.py,sha256=gMUwFUsm_-WzBlDjTMQiNnEuI2heomGeOJBX81zYXPo,13007
142
- fontTools/pens/momentsPen.cpython-313-darwin.so,sha256=gmbHvsvwa_MPi2yqen99Wy-ESBhenGUVNoDdYLA8H18,126480
143
+ fontTools/pens/momentsPen.cpython-313-darwin.so,sha256=q0Z_KgFEIgLZsa4fBYNfpU6NJ_rgPRC62ArztJx9XWo,126480
143
144
  fontTools/pens/momentsPen.c,sha256=LkH6tRXOFN-2qH-WheVoA4-F8-mbjMMoJrdqbQeNpsQ,564887
144
145
  fontTools/pens/perimeterPen.py,sha256=lr6NzrIWxi4TXBJPbcJsKzqABWfQeil2Bgm9BgUD3N4,2153
145
146
  fontTools/pens/__init__.py,sha256=DJBWmoX_Haau7qlgmvWyfbhSzrX2qL636Rns7CG01pk,75
@@ -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,12 +192,12 @@ 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/lexer.cpython-313-darwin.so,sha256=AD_CAzOUOmLh5iOtvB4PhElmrlAHlPsP6K77VBvFkVo,184064
199
+ fontTools/feaLib/ast.py,sha256=48Y6vpSD_wYfucWyh_bQtzf2AQFX-pOwBvsxdcpVDz0,74158
200
+ fontTools/feaLib/lexer.cpython-313-darwin.so,sha256=yFdSJXDH30RrJm5twLpRShdmA9Ofh5kHL17rrdg62HU,184064
200
201
  fontTools/feaLib/__main__.py,sha256=Df2PA6LXwna98lSXiL7R4as_ZEdWCIk3egSM5w7GpvM,2240
201
202
  fontTools/ttLib/sfnt.py,sha256=rkznKfteU_Rn9P65WSjFaiwQgpEAoh-TrQpvkQhdIlo,22832
202
203
  fontTools/ttLib/macUtils.py,sha256=lj3oeFpyjV7ko_JqnluneITmAtlc119J-vwTTg2s73A,1737
@@ -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=0rn5ODYhsjI3KEHrk9RXNWLZT7Rowo6wA0Jh2iAIJLk,138
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=0rn5ODYhsjI3KEHrk9RXNWLZT7Rowo6wA0Jh2iAIJLk,138
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