297 Commits

Author SHA1 Message Date
Cosimo Lupo
4610bf39e3
[glyf] skip empty components when computing bounds of composite glyphs 2023-11-14 16:47:20 +00:00
Behdad Esfahbod
db393f6560 [glyf] Review feedback 2023-10-16 12:30:36 -04:00
Behdad Esfahbod
67be79d77a [glyf] Use a boundsCache within _setCoordinates
Speeds up "pixel" fonts that reuse the same component a lot.
Speeds up instantiating Handjet by 47%.
2023-10-14 13:02:21 -04:00
Behdad Esfahbod
e1117da0af [glyf] Speed up getGlyphID()
Speeds up compiling of fonts with lots of composite glyphs.
For example, 40% speedup in decompile/compiling Handjet font:

./fonttools ttLib Handjet\[ELGR,ELSH,wght\].ttf -t'*' -o out.ttf
2023-10-14 12:57:32 -04:00
Behdad Esfahbod
9eeee75b03 [glyf] Speed up recalcBounds() 2023-10-13 13:53:44 -04:00
Behdad Esfahbod
fe37e91258 [glyf] Speed up recalcBounds of composite glyphs
Brings down decompile/compiling of Handjet font from 11s to 0.3s.

Test with:
time ./fonttools ttLib Handjet.ttf -o out.ttf -tglyf

Part of fixing https://github.com/fonttools/fontbakery/discussions/4301
2023-10-13 13:52:19 -04:00
Behdad Esfahbod
377105f0c1 [glyf] Speed up coordinates slice access 2023-10-13 12:22:48 -04:00
Behdad Esfahbod
9974a74a18 [cubic-glyf] Fix drawPoints() contour ending with cubic offCurve
Fixes https://github.com/fonttools/fonttools/issues/3189
2023-06-27 11:48:25 -04:00
Behdad Esfahbod
4ae0a93692 black
I'm sorry.
2023-06-27 08:49:31 -06:00
Behdad Esfahbod
9ec121322b [cubic-glyf] Emit integers instead of floats when possible
I was seeing unnecessary ".0" in the SVG output. Granted,
should probably be fixed in the SVG pen as well. Will do.
2023-06-27 08:43:44 -06:00
Behdad Esfahbod
0b11a46e3a [cubic-glyf] Fix rendering no-oncurve outlines
Test coming.
2023-06-27 08:39:29 -06:00
Cosimo Lupo
dfec4abf6d
glyf: use 'round' parameter in _getCoordinatesAndControls
as Behdad suggested in review
2023-06-08 11:47:47 +01:00
Cosimo Lupo
5c0f05cc42
allow to pass 'round' parameter in ttGlyphPen, optimize for noRound 2023-06-08 11:41:07 +01:00
Cosimo Lupo
86777525a6
drop oncurve if it's impliable either before OR after rounding
ofter the rounding gives us an opportunity to make an oncurve impliable, for points that were not equidistant become so after round, so why not take it!
2023-06-07 18:13:58 +01:00
Cosimo Lupo
1ca554332c
_getCoordinatesAndControls: make sure coords are rounded toInt() as gvar expects
ufo2ft will no longer send varLib already-rounded master glyf tables (to give it an opportunity to compute implied oncurves on the pre-rounded coords) so when retrieving coordinates off the glyf table in order to compute gvar deltas we have to round
2023-06-07 18:05:48 +01:00
Cosimo Lupo
0761508510
must update start = last + 1 in dropImpliedOnCurvePoints
Fixes #3155
2023-06-06 17:01:40 +01:00
Cosimo Lupo
5b93100616
also check endPtsOfContours in dropImpliedOnCurvePoints
as per review https://github.com/fonttools/fonttools/pull/3147#discussion_r1214708207

Also, don't do same work multiple times when dropping points from flags/endPtsOfContours arrays since these are supposed to be the same for all interpolatable glyphs
2023-06-05 12:11:17 +01:00
Cosimo Lupo
6a276d9f6a
dropImpliedOnCurvePoints: raise if incompatible, skip empty/composites 2023-06-02 13:51:28 +01:00
Cosimo Lupo
3b62811b63
have dropImpliedOnCurvePoints return the set of point indices useful for testing 2023-06-01 18:21:59 +01:00
Cosimo Lupo
e19871981d
add docstring to dropImpliedOnCurvePoints function 2023-06-01 16:49:30 +01:00
Cosimo Lupo
b7f4e9b83e
move dropImpliedOnCurvePoints function to glyf table module
so it can be used by client code on multiple glyf Glyph objects regardles of TTGlyphPen
2023-06-01 16:49:29 +01:00
Jens Kutilek
85c80be6b6
Fix missing composite instructions in ttx (#3092)
* Fix calculation of haveInstructions
* Add test
2023-04-25 16:21:24 +02:00
Behdad Esfahbod
501353f3df [VarComposites] Flag rename 2023-03-06 13:10:09 -07:00
Behdad Esfahbod
568dd0c5d4 [glyf] Support and test cubic spline 2023-02-21 13:01:49 -07:00
Behdad Esfahbod
0a0b152c33 [glyf] Support, and add test for, all-offcurve cubic contour 2023-02-21 13:01:49 -07:00
Behdad Esfahbod
82e0536beb [glyf] Support cubic curves
https://github.com/harfbuzz/boring-expansion-spec/issues/41
2023-02-21 13:01:49 -07:00
Behdad Esfahbod
54a19c6b70 [VarComposite] Magic-number hygiene 2023-02-06 11:22:24 -07:00
Behdad Esfahbod
4c201b9a42 [glyf/VarComposite] Implement padding trimming 2023-02-06 11:00:05 -07:00
Behdad Esfahbod
3af9bb5976 [VarComposite] Add message to exception 2023-02-06 10:35:59 -07:00
Behdad Esfahbod
07bc09fb0c [VarComposites] Another fix after transform change 2023-02-04 11:48:42 -07:00
Behdad Esfahbod
51d7524a23 Revert "[ttGlyphSet] Must deep copy var components when instantiating"
This reverts commit fe6f5bd14386d0a1f546d079f1ec38e4d2414fbf.

Better fix.
2023-02-03 15:22:10 -07:00
Behdad Esfahbod
a14a02ecc2 [glyf] Fix VarComposite compile for .transform change
Ouch!
2023-02-03 13:19:37 -07:00
Behdad Esfahbod
8e981a1b28 [transform] Change the DecomposedTransform skewX sign to match Transform
Unfortunate but for consistency's sake.

This deviates from VarComposite convention.

https://github.com/fonttools/fonttools/pull/2958#issuecomment-1416155600
2023-02-03 10:23:23 -07:00
Behdad Esfahbod
2e20e47473 [transform] Rename VarTransform to DecomposedTransform 2023-02-03 09:05:55 -07:00
Behdad Esfahbod
59418656a4 [VarComposite] Add VarTransform and use 2023-02-02 14:50:26 -07:00
Behdad Esfahbod
68774ac0e6 [VarComposites] Simplify a loop as per review 2023-02-02 11:30:30 -07:00
Behdad Esfahbod
aa2e29f05f [VarComposite] Rename as per review 2023-02-02 11:00:45 -07:00
Behdad Esfahbod
700a8b36f6 [glyf] Remove leftover 2023-02-02 10:59:51 -07:00
Behdad Esfahbod
f205ba0f6c
Update Lib/fontTools/ttLib/tables/_g_l_y_f.py
Co-authored-by: Just van Rossum <justvanrossum@gmail.com>
2023-02-01 13:22:08 -07:00
Behdad Esfahbod
7db21cd197 [VarComposite] Link to spec 2023-01-31 11:30:47 -07:00
Behdad Esfahbod
4310512f07 [ttGlyphSet/VarComposite] Add VarComponentFlags.RESET_UNSPECIFIED_AXES 2023-01-30 11:26:21 -07:00
Behdad Esfahbod
8ac23b2209 [VarComposite/compile] Better flags computation 2023-01-30 11:26:21 -07:00
Behdad Esfahbod
38bbbf7fbc [VarComposites/compile] Better uniform-scale check 2023-01-30 11:26:20 -07:00
Behdad Esfahbod
d8f6d0c6af [ttx/VarComposite] Limit fractional bits when reading/writing 2023-01-30 11:26:20 -07:00
Behdad Esfahbod
e0a6bdf79e [glyf/VarComposites] raise NotImplementedError in getCoordinates 2023-01-30 11:26:20 -07:00
Behdad Esfahbod
9475dccbea [glyf/VarComposites] Hook up setCoordinates() 2023-01-30 11:26:20 -07:00
Behdad Esfahbod
68682aa833 [glyf/VarComposites] Allow in maxp function 2023-01-30 11:26:20 -07:00
Behdad Esfahbod
d32650b58d [glyf/VarComposite] Implement subsetting 2023-01-30 11:26:20 -07:00
Behdad Esfahbod
baf302d0cf [glyf/VarComposite] Add a NotImplementedError 2023-01-30 11:26:20 -07:00
Behdad Esfahbod
792ebb7a35 [glyf/VarComposite] Adjust UNIFORM_SCALE 2023-01-30 11:26:20 -07:00