8888 Commits

Author SHA1 Message Date
Behdad Esfahbod
67794827ff [TupleVariation] Use defaultdict in compileSharedTuples 2021-04-08 11:56:36 -06:00
Behdad Esfahbod
9b379bbb87 [TupleVariation] Further optimize compileCoord() 2021-04-08 11:51:15 -06:00
Behdad Esfahbod
48e827aa21 [TupleVariation] Minor optimization in compileCoord() 2021-04-08 11:46:32 -06:00
Behdad Esfahbod
416ff89171 [TupleVariation] Minor optimize in using sharedCoordinates 2021-04-08 11:40:44 -06:00
Behdad Esfahbod
f40ca25726 [GlyphCoordinates] Remove isFloat() again
Based on subsequent review feedback.
2021-04-08 11:22:08 -06:00
Behdad Esfahbod
80069e9608 [py23] Make tobytes() always return bytes even for bytearray 2021-04-08 11:13:15 -06:00
Behdad Esfahbod
ec80f24315 [TupleVariation] Remove use of bytesjoin() 2021-04-08 11:11:50 -06:00
Behdad Esfahbod
f8d54b1ebb [TupleVariation] Minor rewrite bound checks 2021-04-08 11:01:20 -06:00
Behdad Esfahbod
faaac34acf [GlyphCoordinates] Add back isFloat() and deprecate it 2021-04-08 10:58:58 -06:00
Behdad Esfahbod
c206341bb0 [GlyphCoordinates] Inline _i() 2021-04-08 10:52:40 -06:00
Behdad Esfahbod
645a3eb104 [GlyphCoordinates] Use float.is_integer() 2021-04-08 10:43:20 -06:00
Behdad Esfahbod
c5e3fca636 [GlyphCoordinates] Format 2021-04-08 09:48:35 -06:00
Behdad Esfahbod
5c815a6def [TupleVariation] Do away with another bytesjoin() 2021-04-08 09:41:45 -06:00
Behdad Esfahbod
a715f57130 [TupleVariation] Optimize compilePoints() 2021-04-08 09:41:45 -06:00
Behdad Esfahbod
6abf8680b4 [TupleVariation] More bytes optimization 2021-04-08 09:41:45 -06:00
Behdad Esfahbod
250e59886f [TupleVariation] Micro-optimize away a lambda 2021-04-08 09:41:45 -06:00
Behdad Esfahbod
62a89bc3d5 [TupleVariations] Optimize serialization loops 2021-04-08 09:41:45 -06:00
Behdad Esfahbod
b1b672e17e [TupleVariation] Remove a few hot asserts
We verify the code instead.
2021-04-08 09:41:45 -06:00
Behdad Esfahbod
4cbf6ae1c4 [TupleVariation] Minor 2021-04-08 09:41:45 -06:00
Behdad Esfahbod
d5d771b2bf [TupleVariation] Use array.array to serialize multiple deltas 2021-04-08 09:41:45 -06:00
Behdad Esfahbod
1e6b20cc2c [TupleVariation] Don't round deltas (again!)
Remove tests that passed float in.
2021-04-08 09:41:45 -06:00
Behdad Esfahbod
9405244617 [TupleVariation] Use bytearray() instead of io.Bytes() 2021-04-08 09:41:45 -06:00
Behdad Esfahbod
869f00507b [glyf] Use bytearray() instead of array.array('B') for flags 2021-04-08 09:41:45 -06:00
Behdad Esfahbod
db918e3355 [glyf] Use bytearray() in trim() 2021-04-08 09:41:45 -06:00
Behdad Esfahbod
3a80b56829 [py23] Change tobytes() to accept bytearray 2021-04-08 09:41:45 -06:00
Behdad Esfahbod
33d9e3d6de [subset] Use bytearray() instead of array.array('B') 2021-04-08 09:41:45 -06:00
Behdad Esfahbod
492118c7b5 [subset] Set glyph.data to b'' instead of ''
Fixes tests after 7adbe44154c1bd8a99668512e88facbcb034f05f
2021-04-08 09:41:45 -06:00
Behdad Esfahbod
bbbc877af9 [glyf] Remove several bytes slicings 2021-04-08 09:41:45 -06:00
Behdad Esfahbod
8284af6b61 [TupleVariation] Use list(coordinates) instead of coordinates[:]
The latter is more expensive in GlyphCoordinates().
2021-04-08 09:41:45 -06:00
Behdad Esfahbod
c23a540d07 [GlyphCoordinates] Micro-optimize _i() access 2021-04-08 09:41:45 -06:00
Behdad Esfahbod
b5af979fbd [glyf] Minor 2021-04-08 09:41:45 -06:00
Behdad Esfahbod
1f3c23e62b [glyf] Remove most use of py23 byteord etc 2021-04-08 09:41:45 -06:00
Behdad Esfahbod
693bf0457a [glyf] Remove reprflag()
If compatibility is an issue, we should rewrite it in terms of "bin(flag)".
2021-04-08 09:41:45 -06:00
Behdad Esfahbod
9be029c0cc [glyf] Remove unnecessary use of byteord() 2021-04-08 09:41:45 -06:00
Behdad Esfahbod
fb196fdf7d [glyf] Avoid a copy during decompile of flags 2021-04-08 09:41:45 -06:00
Behdad Esfahbod
e328ee0254 [glyf] Use memoryview() in decompile for larger glyphs 2021-04-08 09:41:45 -06:00
Behdad Esfahbod
4ff6b3390e [glyf] Use bytearray() when compiling 2021-04-08 09:41:45 -06:00
Behdad Esfahbod
3252ed10ee [GlyphCoordinates] Remove unused .isFloat() 2021-04-08 09:41:45 -06:00
Behdad Esfahbod
b63b8ceb8b [GlyphCoordinates] Remove internal dual representation
Always store coordinates as float. Convert to int in __getitem__() if is whole.

This changes observed values. But we never made any guarantees so that's fine.
2021-04-08 09:41:45 -06:00
Behdad Esfahbod
acc56bdf72 [GlyphCoordinates] Faster .zeros()
Using .frombytes() since bytes() constructor can make zeros fast.
2021-04-08 09:41:45 -06:00
Behdad Esfahbod
7ef101ccb1 [GlyphCoordinates] Speed up .zeros()
Such a pain that this is a speedup...
2021-04-08 09:41:45 -06:00
Behdad Esfahbod
f6e8577476 [GlyphCoordinates] Revert back from double to float
We do proper rounding these days, so revert this back.

https://github.com/fonttools/fonttools/pull/964#issuecomment-814511128
2021-04-08 09:41:45 -06:00
Behdad Esfahbod
e9acd9634f [GlyphCoordinates] Store int data as 4byte, not 2byte
The memory increase is negligible, but means that we don't have to
worry about integer overflows anymore.
2021-04-08 09:41:45 -06:00
Behdad Esfahbod
8be2f49b84 [GlyphCoordinates] Speed up __imul__()
Like the recent change to __isub__/__iadd__().

This, as well as the other, change do not handle overflows.
Going to fix that now.
2021-04-08 09:41:45 -06:00
Behdad Esfahbod
96690de9a9 [varLib] Optimize out multiplication by 1 when computing deltas 2021-04-08 09:41:45 -06:00
Behdad Esfahbod
77abdad0f7 [GlyphCoordinates] Move identity check to scale() / translate() 2021-04-08 09:41:45 -06:00
Behdad Esfahbod
45e94ff2bd [GlyphCoordinates] Speed up __isub__() and __iadd__() 2021-04-08 09:41:45 -06:00
Behdad Esfahbod
3892ece50c [GlyphCoordinates] Remove Jython workaround 2021-04-08 09:41:45 -06:00
Khaled Hosny
cbb33d8aa9
Merge pull request #2259 from fonttools/subset-cpal-0xFFFF
subset: fix pruning unused CPAL palettes when 0xFFFF is present
2021-04-06 22:22:46 +02:00
Cosimo Lupo
2136aac0f0 subset: fix pruning unused CPAL palettes when 0xFFFF is present
FIxes https://github.com/fonttools/fonttools/issues/2257
2021-04-06 19:43:45 +01:00