8102 Commits

Author SHA1 Message Date
Behdad Esfahbod
bb7a29e81a [cffLib.specializer] Fix more stack-overflow opportunity
I think it's solid now.
2024-11-06 19:13:35 -05:00
ftCLI
1cb153b2c5 Remove unused imports from reorderGlyphs.py 2024-11-05 17:42:26 +01:00
ftCLI
a238ed2c31 Remove '.notdef' glyph handling code 2024-11-05 17:10:39 +01:00
Behdad Esfahbod
776e1ce132 [cffLib.specializer] Fix CFF argument stack overflow
The code was always merging at least two blends, which was causing
stack-overflow with a test font of ours. Move the overflow check
earlier to catch that.

Fixes https://github.com/fonttools/fonttools/issues/3676
2024-11-05 10:38:00 -05:00
ftCLI
ea59c39e21 Ensure '.notdef' is first glyph and update CFF table 2024-11-05 16:36:36 +01:00
Behdad Esfahbod
614d9ebf6b [cffLib.specializer] Minor refactor 2024-11-04 13:52:28 -05:00
Behdad Esfahbod
b5373bf5d2 [varLib.interpolatable] Support CFF2 input font
Fixes https://github.com/fonttools/fonttools/issues/3666
2024-11-04 11:13:42 -07:00
Behdad Esfahbod
885d7c1ecb [varLib.interpolatable] Warn if only one master was found
Motivated by https://github.com/fonttools/fonttools/issues/3666
2024-11-04 11:13:42 -07:00
Behdad Esfahbod
20b47fc989 [CFF2] Lift uint16 VariationSore.length limitation
Fixes https://github.com/fonttools/fonttools/issues/3673
2024-10-30 09:15:49 -06:00
Behdad Esfahbod
9372554dce [cffLib] Typo 2024-10-29 10:31:42 -07:00
Behdad Esfahbod
7a0062a718 [cffLib.specializer] Add cmdline to specialize a CFF2 font 2024-10-29 08:25:20 -06:00
Garret Rieger
201f02c2c2 [subset] Fix lint. 2024-10-24 00:30:38 +00:00
Garret Rieger
4a38610072 [subset] consider variation selectors subsetting cmap14
cmap14 subsetting code was not considering variation selectors in the input unicode set when deciding which variant glyphs to keep. This updates subsetting to only keeps variant glyphs if their variation selector code point is in the input unicodes set.
2024-10-23 21:39:33 +00:00
Behdad Esfahbod
4ad6b0db13 [CFF2ToCFF] Map charset to CIDs
This seems to fix the case of ttx not handling the results.
I *think* this fixes the rest of the issues I've been seeing
with this conversion.
2024-10-23 11:36:26 -06:00
Behdad Esfahbod
c384709c0a [CFF2ToCFF] Convert FD's to CFF1
Makes ftview like the font, but still not ttx.
2024-10-23 11:36:26 -06:00
Behdad Esfahbod
87ae6ba224 [CFF2ToCFF] Remove wrong and unnecessary argument
This had no effect though, since file is None.
2024-10-23 11:36:26 -06:00
Behdad Esfahbod
4360969baa [cffLib.transforms] Handle case of one FD in remove_unused_subrs 2024-10-23 11:36:26 -06:00
Behdad Esfahbod
2225c84a1b [CFFToCFF2] Allow fdIndex==0
Oops.
2024-10-23 11:36:26 -06:00
Behdad Esfahbod
7fadfa4e81 Revert "refactor: pass isfinal argument spelled-out not a number"
This reverts commit 6d65a87301b6c746ae0ec1dc1cf0df75c0c21d63.

https://github.com/fonttools/fonttools/pull/3669#issuecomment-2428475144
2024-10-22 01:34:48 -06:00
Robin
6d65a87301 refactor: pass isfinal argument spelled-out not a number 2024-10-22 01:28:05 -06:00
Robin
505c6e1fa3 set isfinal to true to enable xml parser to free resources 2024-10-22 01:28:05 -06:00
Cosimo Lupo
dd8d80a4f2
Merge pull request #3561 from drj11/drj11/unicode-hex
Check unicode elements have required hex attribute
2024-10-15 16:39:12 +02:00
Khaled Hosny
101ff1508c [removeOverlaps] Pass None to T2CharStringPen if widths equals defaultWidthX 2024-10-12 01:45:32 +03:00
Khaled Hosny
40b525c1e3 [removeOverlaps] Fix CFF CharString width
The width argument of `T2CharStringPen()` is inserted directly into the
CharString program, so it must be relative to Private.nominalWidthX, but
CharString.width is a calculated absolute value.

Some implementations, notably Adobe’s, will use the width from the CFF
CharString instead of the one from hmtx table.

Fixes https://github.com/fonttools/fonttools/issues/3658
2024-10-12 01:22:17 +03:00
Behdad Esfahbod
e8146a6d07 [glyf] Add optimizeSize option
Set to True by default. Can be turned to False on the table,
or at Glyph() compile time.

Also fixes Glyph's draw() to expand the glyph first. Otherwise
it was failing.
2024-10-11 08:31:31 -06:00
Behdad Esfahbod
6c2cbc273d [otConverters] Map int32
Unused. For completeness.
2024-10-07 06:08:35 -06:00
Behdad Esfahbod
0213bea88e [TupleVariation] Option to optimize for loading speed, not size 2024-10-06 18:11:48 -06:00
Behdad Esfahbod
0c38f86da9 [MultiVarStore] Remove unused optimize parameter 2024-09-25 09:30:39 -06:00
Simon Cozens
ae96a6d374 Fix cut-and-paste error 2024-09-25 06:34:31 -06:00
n8willis
ff78d5a161
Merge pull request #3637 from n8willis/docs-ufoLib
Docs: ufoLib and misc updates
2024-09-25 11:27:46 +01:00
Khaled Hosny
47c1edbee5 Bump version: 4.54.1 → 4.54.2.dev0 2024-09-24 17:15:33 +03:00
Khaled Hosny
112ace8189 Release 4.54.1 2024-09-24 17:15:32 +03:00
Mark Elliot
4cd0b0d87d Escape \ in subset docs 2024-09-23 12:42:15 -06:00
Behdad Esfahbod
10a61ef7de Update to Unicode 16 2024-09-23 08:46:56 -06:00
Nikolaus Waxweiler
6af41afddf Bump version: 4.54.0 → 4.54.1.dev0 2024-09-23 15:22:33 +01:00
Nikolaus Waxweiler
5429a6c7a4 Release 4.54.0 2024-09-23 15:22:33 +01:00
Nathan Williis
69cecfaa10 Docs: cffLib, minor updates. 2024-09-17 17:23:44 +01:00
Nathan Williis
3cafab8d50 Docs: reconfigure ufoLib documentation. 2024-09-17 17:11:39 +01:00
n8willis
63611d4474
Merge pull request #3627 from n8willis/docs-cleanup
Docs: clean up various code blocks in docstrings, to enable correct syntax highlighting in HTML / RTD output.
2024-09-16 10:40:05 +01:00
Harry Dalton
07351d12e6 Fix visual artefacts with partial L2 instancing
Closes #3634

To produce inferred deltas that will be correct given OpenType's gvar
semantics, fontTool's IUP optimisation module checks the equality of
some points. However, this happens before the points are rounded,
whereas the point comparison that happens at runtime will occur after
the points are rounded (as is necessary to serialise glyf), which leads
to diverging semantics and so diverging and incorrect implied deltas.

This leads to significant visual artefacts, e.g. where large deltas that
should be inferred based on previous values are instead interpreted as 0
at runtime.

I suspect this has gone undetected as the subsetter normally works with
rounded points; in the rarer case that partial VF instancing is
occurring with a different default position, however, varLib.instancer
will calculate and apply the relevant deltas to the font's original
coordinates to effect the new default position, which leads to unrounded
points in memory. This commit ensures that we round directly before
optimising (but still after calculating `glyf` metrics, for backward
compatibility).
2024-09-15 12:10:29 -07:00
Nathan Williis
d05cdcf21f Docs: black 2024-09-11 15:48:09 +01:00
Nathan Williis
7d93689aca Docs: workaround doctest-vs-Sphinx syntax highlighting. 2024-09-11 15:45:46 +01:00
Roel Nieskens
11343ed64c Add instructions to escape question mark
Arguments without it will not work in zsh and possibly other shells.
2024-09-10 11:17:33 -06:00
Roel Nieskens
d871fd3a08 Remove dotslash from examples 2024-09-10 11:17:33 -06:00
Nathan Williis
6914070e00 Docs, minor: remove trailing whitespace. 2024-09-04 17:36:48 +01:00
Nathan Williis
21d04842f8 Docs: fix code-example blocks in ttLib. 2024-09-03 17:55:02 +01:00
Nathan Williis
df49533892 Docs: fix code-example blocks in voltLib. 2024-09-03 17:54:45 +01:00
Nathan Williis
1fc9bc2dca Docs: fix code-example blocks in varLib/instancer. 2024-09-03 17:54:29 +01:00
Nathan Williis
23e3ab60f8 Docs: fix code-example blocks in varLib. 2024-09-03 17:53:56 +01:00
Nathan Williis
4b9cb1030e Docs: fix code-example blocks in svgLib. 2024-09-03 17:52:59 +01:00