fonttools 4.55.4__py3-none-any.whl → 4.55.5__py3-none-any.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.55.4"
6
+ version = __version__ = "4.55.5"
7
7
 
8
8
  __all__ = ["version", "log", "configLogger"]
@@ -1106,7 +1106,13 @@ class Builder(object):
1106
1106
  if (language == "dflt" or include_default) and lookups:
1107
1107
  self.features_[key] = lookups[:]
1108
1108
  else:
1109
- self.features_[key] = []
1109
+ # if we aren't including default we need to manually remove the
1110
+ # default lookups, which were added to all declared langsystems
1111
+ # as they were encountered (we don't remove all lookups because
1112
+ # we want to allow duplicate script/lang statements;
1113
+ # see https://github.com/fonttools/fonttools/issues/3748
1114
+ cur_lookups = self.features_.get(key, [])
1115
+ self.features_[key] = [x for x in cur_lookups if x not in lookups]
1110
1116
  self.language_systems = frozenset([(self.script_, language)])
1111
1117
 
1112
1118
  if required:
@@ -1187,7 +1187,7 @@ class Glyph(object):
1187
1187
  ):
1188
1188
  return
1189
1189
  try:
1190
- coords, endPts, flags = self.getCoordinates(glyfTable)
1190
+ coords, endPts, flags = self.getCoordinates(glyfTable, round=otRound)
1191
1191
  self.xMin, self.yMin, self.xMax, self.yMax = coords.calcIntBounds()
1192
1192
  except NotImplementedError:
1193
1193
  pass
@@ -1241,7 +1241,7 @@ class Glyph(object):
1241
1241
  else:
1242
1242
  return self.numberOfContours == -1
1243
1243
 
1244
- def getCoordinates(self, glyfTable):
1244
+ def getCoordinates(self, glyfTable, round=noRound):
1245
1245
  """Return the coordinates, end points and flags
1246
1246
 
1247
1247
  This method returns three values: A :py:class:`GlyphCoordinates` object,
@@ -1267,13 +1267,16 @@ class Glyph(object):
1267
1267
  for compo in self.components:
1268
1268
  g = glyfTable[compo.glyphName]
1269
1269
  try:
1270
- coordinates, endPts, flags = g.getCoordinates(glyfTable)
1270
+ coordinates, endPts, flags = g.getCoordinates(
1271
+ glyfTable, round=round
1272
+ )
1271
1273
  except RecursionError:
1272
1274
  raise ttLib.TTLibError(
1273
1275
  "glyph '%s' contains a recursive component reference"
1274
1276
  % compo.glyphName
1275
1277
  )
1276
1278
  coordinates = GlyphCoordinates(coordinates)
1279
+ coordinates.toInt(round=round)
1277
1280
  if hasattr(compo, "firstPt"):
1278
1281
  # component uses two reference points: we apply the transform _before_
1279
1282
  # computing the offset between the points
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: fonttools
3
- Version: 4.55.4
3
+ Version: 4.55.5
4
4
  Summary: Tools to manipulate font files
5
5
  Home-page: http://github.com/fonttools/fonttools
6
6
  Author: Just van Rossum
@@ -389,6 +389,12 @@ Have fun!
389
389
  Changelog
390
390
  ~~~~~~~~~
391
391
 
392
+ 4.55.5 (released 2025-01-23)
393
+ ----------------------------
394
+
395
+ - [glyf] Fixed recalcBounds of transformed components with unrounded coordinates (#3750).
396
+ - [feaLib] Allow duplicate script/language statements (#3749).
397
+
392
398
  4.55.4 (released 2025-01-21)
393
399
  ----------------------------
394
400
 
@@ -1,4 +1,4 @@
1
- fontTools/__init__.py,sha256=_Q4qhB3PMUa2enWbOt-YeWxDlVufbXDuUwEHTTzzirI,183
1
+ fontTools/__init__.py,sha256=OYDPTWCWOw88Y0Ovnd6VAvxaE753VM7PqOK6uaMfM6s,183
2
2
  fontTools/__main__.py,sha256=VjkGh1UD-i1zTDA1dXo1uecSs6PxHdGQ5vlCk_mCCYs,925
3
3
  fontTools/afmLib.py,sha256=1MagIItOzRV4vV5kKPxeDZbPJsfxLB3wdHLFkQvl0uk,13164
4
4
  fontTools/agl.py,sha256=05bm8Uq45uVWW8nPbP6xbNgmFyxQr8sWhYAiP0VSjnI,112975
@@ -39,7 +39,7 @@ fontTools/encodings/codecs.py,sha256=u50ruwz9fcRsrUrRGpR17Cr55Ovn1fvCHCKrElVumDE
39
39
  fontTools/feaLib/__init__.py,sha256=jlIru2ghxvb1HhC5Je2BCXjFJmFQlYKpruorPoz3BvQ,213
40
40
  fontTools/feaLib/__main__.py,sha256=Df2PA6LXwna98lSXiL7R4as_ZEdWCIk3egSM5w7GpvM,2240
41
41
  fontTools/feaLib/ast.py,sha256=3DU5NKXesyNCVu5wcebGlnvwdMf0_NKrPgOvS0FrWSg,73800
42
- fontTools/feaLib/builder.py,sha256=JTNF8AvveJmU0NDs0TV9wnUFjDkh9fdn3E6SPhtatvs,70578
42
+ fontTools/feaLib/builder.py,sha256=y7t8_q0-PiPoLpXZCfThx1SmvF-ZpDDyVe8605FzaL4,71036
43
43
  fontTools/feaLib/error.py,sha256=Tq2dZUlCOyLfjTr3qibsT2g9t-S_JEf6bKgyNX55oCE,643
44
44
  fontTools/feaLib/lexer.py,sha256=emyMPmRoqNZkzxnJyI6JRCCtXrbCOFofwa9O6ABGLiw,11121
45
45
  fontTools/feaLib/location.py,sha256=JXzHqGV56EHdcq823AwA5oaK05hf_1ySWpScbo3zGC0,234
@@ -224,7 +224,7 @@ fontTools/ttLib/tables/_f_p_g_m.py,sha256=t1T6lfuoJv1ImKu7X4h6jg2S6B4rxQZSlDrnZ5
224
224
  fontTools/ttLib/tables/_f_v_a_r.py,sha256=rV33H2BgHUl3Wuydsou1G-Hi4uASBppWaLj3FMmiLjs,8837
225
225
  fontTools/ttLib/tables/_g_a_s_p.py,sha256=YvhAVDvdssN2fjPMTfSrO4WBCfTuh9T2cU5zquDVnSw,2203
226
226
  fontTools/ttLib/tables/_g_c_i_d.py,sha256=AJ4uV7PTHbnsw4Tfw8c2Ezh0VMox3oAH0qhhq7y8hdM,362
227
- fontTools/ttLib/tables/_g_l_y_f.py,sha256=nO1wO9P2aC7sgJrBGkr2bOc_mhagCtF8HW2SGRBtFwk,84531
227
+ fontTools/ttLib/tables/_g_l_y_f.py,sha256=FOUV04tS3lxwecbmlPwkYbbmI9tjTndrrPQKedbC4lA,84667
228
228
  fontTools/ttLib/tables/_g_v_a_r.py,sha256=9T8XwBWaWyJINSeDhLR-g9oPiKLXJvlhThpXL0YuSs0,10773
229
229
  fontTools/ttLib/tables/_h_d_m_x.py,sha256=kgydwtD1ibF3T0Vbohq-aM_QD8PY-vp4oUuWQWJJMNA,4271
230
230
  fontTools/ttLib/tables/_h_e_a_d.py,sha256=yY2GTFq6Mn6nN8EegbMVJRMUWIqDYFln3FhTk3ziw6s,4926
@@ -308,10 +308,10 @@ fontTools/voltLib/error.py,sha256=phcQOQj-xOspCXu9hBJQRhSOBDzxHRgZd3fWQOFNJzw,39
308
308
  fontTools/voltLib/lexer.py,sha256=OvuETOSvlS6v7iCVeJ3IdH2Cg71n3OJoEyiB3-h6vhE,3368
309
309
  fontTools/voltLib/parser.py,sha256=wBSUrjLT3fSPv9Mjx6_ULIf8IcGlwjtb4Auxjh5wqnc,24916
310
310
  fontTools/voltLib/voltToFea.py,sha256=igP7_E-7AzSl8f_LiN_GHMoNmFiXPBaXp_zZLndjU4c,28505
311
- fonttools-4.55.4.data/data/share/man/man1/ttx.1,sha256=cLbm_pOOj1C76T2QXvDxzwDj9gk-GTd5RztvTMsouFw,5377
312
- fonttools-4.55.4.dist-info/LICENSE,sha256=Z4cgj4P2Wcy8IiOy_elS_6b36KymLxqKK_W8UbsbI4M,1072
313
- fonttools-4.55.4.dist-info/METADATA,sha256=7kkr7Xc937Q2FFzm3FwNI8CRwUkvSuNl6s7prRAuc80,165667
314
- fonttools-4.55.4.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
315
- fonttools-4.55.4.dist-info/entry_points.txt,sha256=8kVHddxfFWA44FSD4mBpmC-4uCynQnkoz_9aNJb227Y,147
316
- fonttools-4.55.4.dist-info/top_level.txt,sha256=rRgRylrXzekqWOsrhygzib12pQ7WILf7UGjqEwkIFDM,10
317
- fonttools-4.55.4.dist-info/RECORD,,
311
+ fonttools-4.55.5.data/data/share/man/man1/ttx.1,sha256=cLbm_pOOj1C76T2QXvDxzwDj9gk-GTd5RztvTMsouFw,5377
312
+ fonttools-4.55.5.dist-info/LICENSE,sha256=Z4cgj4P2Wcy8IiOy_elS_6b36KymLxqKK_W8UbsbI4M,1072
313
+ fonttools-4.55.5.dist-info/METADATA,sha256=LTpr4fuHsoSAtkaG68Uuij-9NQNhB8V_Ra8J14m7u1M,165880
314
+ fonttools-4.55.5.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
315
+ fonttools-4.55.5.dist-info/entry_points.txt,sha256=8kVHddxfFWA44FSD4mBpmC-4uCynQnkoz_9aNJb227Y,147
316
+ fonttools-4.55.5.dist-info/top_level.txt,sha256=rRgRylrXzekqWOsrhygzib12pQ7WILf7UGjqEwkIFDM,10
317
+ fonttools-4.55.5.dist-info/RECORD,,