Cosimo Lupo
58ac5a9fd8
have ClipList and ClipBox format start at 1, not 0
...
b7e81fcbd6
2021-08-02 19:34:30 +02:00
Cosimo Lupo
800bf85b2f
add ClipList.Format so we can bump when we finally get >16bit GIDs
...
https://github.com/googlefonts/colr-gradients-spec/issues/346
2021-07-29 15:35:08 +02:00
Cosimo Lupo
9876f3c5c0
address review comments
2021-07-29 15:06:16 +02:00
Cosimo Lupo
bee2c85f61
[colrv1] otData: define ClipList, ClipBox, etc.
2021-07-28 18:04:48 +02:00
Cosimo Lupo
29a2ebf813
omit default VarIndexBase
...
4294967295 (0xFFFFFFFF in decimal form) is not very memorable.
Still, using hex notation for all VarIndexBases would make the non-default values less readable (when interpreted as an index into the DeltaSetIndexMap array, decimal makes more sense).
Since 0xFFFFFFFF means 'no variation data', it makes sense to omit it from the ttx dump and write an empty <VarIndexBase/> element with no value.
We also allow to build Var tables without needing to pass "VarIndexBase": 0xFFFFFFFF in the source dict.
2021-07-23 17:27:57 +01:00
Cosimo Lupo
e8e2aa530b
remove unused Variable{Float,Int} namedtuples from otTables/otConverters
2021-07-23 17:27:57 +01:00
Cosimo Lupo
0eb27e9878
Remove and inline {Var,}ColorIndex
2021-07-23 17:27:57 +01:00
Cosimo Lupo
40897a1508
Define DeltaSetIndexMap table used for COLR.VarIndexMap
...
https://github.com/googlefonts/colr-gradients-spec/pull/316
2021-07-23 17:27:57 +01:00
Cosimo Lupo
1cb7e36bbd
COLRv1: rename otData structs to remove 'V1' to match updated draft spec
...
This is a breaking change (but the COLRv1 API was already marked as unstable and subject to change)
The changes in this PR are meant to match the changes from the COLRv1 draft spec at:
https://github.com/googlefonts/colr-gradients-spec/pull/302
2021-06-28 16:13:47 +01:00
Cosimo Lupo
f2df149db3
COLR: set {BaseGlyph,Layer}RecordArray to None when no colorGlyphsV0 in populateCOLRv0
...
Same when LayerV1List is empty. All these fields are optional in v1
2021-05-14 10:47:13 +01:00
Behdad Esfahbod
abc1ba07a4
[misc.roundTools] New module; move otRound() here
...
Code relying on old place (fixedTools.otRound) still works.
2021-03-04 09:20:43 -07:00
Cosimo Lupo
4036512a27
C_O_L_R_: factor out method to convert v0 layer records to dict of list
...
we'll need that when we subset the COLRv0 portion of a COLRv1 table
2021-02-15 11:12:16 +00:00
rsheeter
7abd234929
Update tests for new formats
2021-02-15 10:42:59 +00:00
rsheeter
5316ae4b8c
Add test to expose missed otRound + fix
2021-02-12 20:23:06 -08:00
rsheeter
0353c809cd
Update COLR build fns per review feedback
2021-02-12 10:02:08 -08:00
rsheeter
ec77db3619
Update Lib/fontTools/colorLib/builder.py
...
Co-authored-by: Cosimo Lupo <cosimo@anthrotype.com>
2021-02-12 10:02:08 -08:00
Cosimo Lupo
e542b60dde
colorLib: add generic TableUnbuilder, reverse of TableBuilder
2021-02-10 18:44:28 +00:00
rsheeter
cf4a4087be
Generic build fns
2021-02-10 09:40:37 -08:00
Cosimo Lupo
df672a7ae4
move PaintFormat enum outside of Paint class nested scope
...
When a TTFont is loaded with lazy=True, the otTables are only loaded upon BaseTable.__getattr__
when the requested attribute is not found in the instance __dict__.
Since the Paint.Format enum was defined at class level, every Paint instance, even when loaded
lazily, will have a 'Format' attribute and the magic decompile-on-missing-attribute will not
trigger, since the class attribute will be returned when the instance is missing one.
For this reason, and to not add further special cases, it's better to simply move this Paint.Format
enum class outside to the module level scope, and rename it PaintFormat.
2021-02-05 12:11:43 +00:00
Cosimo Lupo
4b17301321
unbuilder: get Format attribute directly from the Paint instance
2021-02-04 12:24:13 +00:00
Cosimo Lupo
e20ccfcf9f
add unbuildPaintSweepGradient
2021-02-04 12:16:29 +00:00
Cosimo Lupo
22d290b06e
Merge remote-tracking branch 'origin/master' into colorLib-unbuilder
2021-02-04 12:09:30 +00:00
Cosimo Lupo
93c23eaaf7
COLRv1: define new PaintSweepGradient, amend tests with new format numbers
2021-02-03 18:21:09 +00:00
Cosimo Lupo
8f66a1e813
COLRv1: add functions to un-build COLR otTables to raw dicts
...
This adds an unbuildColrV1 which does the inverse of colorLib.builder.buildColrV1.
Takes a LayerV1List and BaseGlypV1List and returns a map of base glyphs to raw data structures (list, dict, float, str, etc.).
Useful not only for debugging purpose, but also for implementing COLRv1 subsetting (where we need to drop whole chunks of paints which may be reused by multiple glyphs).
2021-02-03 16:47:59 +00:00
Cosimo Lupo
9d33afe04d
COLRv1: support unlimited paints as 255-ary tree of PaintColrLayers
...
Fixes https://github.com/googlefonts/nanoemoji/pull/225
E.g. BASKET noto-emoji U+1F9FA contains 364 layers
2021-01-18 17:33:21 +00:00
Cosimo Lupo
a3247ea472
compute rounding (dx,dy) offset outside loop then simply do Circle.move() inside
2021-01-18 09:50:47 +00:00
Cosimo Lupo
c13b1cef84
determine direction to nudge pre-loop
2021-01-15 19:11:10 +00:00
Cosimo Lupo
c9055871d6
minor: rename local vars without _circle suffix
2021-01-15 18:17:08 +00:00
Cosimo Lupo
b465dcff75
rename function to round_start_circle_stable_containment
...
as suggested in https://github.com/fonttools/fonttools/pull/2148#discussion_r557656073
2021-01-15 17:37:11 +00:00
Cosimo Lupo
4f1102ac6e
add a Circle class, handle concentrical case, explain why 2 iterations are enough
2021-01-15 16:59:17 +00:00
Cosimo Lupo
4f886cc226
reword _is_circle_inside_circle parameters for better readability
2021-01-14 19:06:33 +00:00
Cosimo Lupo
c403dbe83a
minor: rename function, remove redundant one
2021-01-14 18:57:19 +00:00
Cosimo Lupo
7f0788ca25
use math.hypot() as per review
...
https://github.com/fonttools/fonttools/pull/2148#discussion_r557596711
2021-01-14 18:22:57 +00:00
Cosimo Lupo
db14e6375e
COLRv1: avoid abrupt change after rounding c0 when too near c1's perimeter
...
Fixes https://github.com/googlefonts/picosvg/issues/158
Also see https://github.com/googlefonts/colr-gradients-spec/issues/204
2021-01-14 17:13:22 +00:00
Cosimo Lupo
538528d5a1
COLRv1: Implement PaintTranslate
...
https://github.com/googlefonts/colr-gradients-spec/pull/163
2020-12-15 16:58:31 +00:00
Cosimo Lupo
f24a640b65
minor
2020-12-08 10:01:37 +00:00
rsheeter
17395b0769
id() invalid if things disappear
2020-12-08 10:00:47 +00:00
Cosimo Lupo
bd8861f10d
sort __dict__.items() when freezing paint tuples
2020-12-08 10:00:46 +00:00
rsheeter
f0dcd335bb
Cache tuples
2020-12-08 10:00:27 +00:00
rsheeter
d888526659
Hook up paint skew and rotate
2020-12-02 21:21:19 -08:00
Cosimo Lupo
e5439eb92b
colorLib: also treat lists [layerGlyph, paletteIndex] as COLRv0 layers
...
Don't be too strict about them being tuple type. Plist doesn't distinguish the two.
Fixes https://github.com/googlefonts/ufo2ft/issues/426
2020-11-16 16:38:22 +00:00
rsheeter
cf2097f7c0
Update to builder per review discussion
2020-11-10 21:51:33 -08:00
rsheeter
cd39e6e246
Add a test
2020-11-06 14:59:52 -08:00
rsheeter
3069ad97ee
Less errorprone message
2020-11-06 12:20:26 -08:00
rsheeter
5c83b5be47
Don't generate a PaintColrLayers for a list of 1
2020-11-04 21:59:30 -08:00
rsheeter
9698c71198
Change case of LayerCollector fields per comment
2020-11-04 18:47:16 -08:00
rsheeter
f531038bf9
Start hooking up revised PaintColrLayers
2020-11-04 14:36:43 -08:00
Cosimo Lupo
581416d77c
WIP: add buildPaintColrLayers
2020-11-03 19:11:24 +00:00
rsheeter
d285481215
Fix f-string
2020-11-03 11:06:23 -08:00
Cosimo Lupo
e992953474
swap xy and yx fields in COLRv1 Affine2x3 struct
...
following the latest draft
See discussion at https://github.com/googlefonts/colr-gradients-spec/pull/85
2020-10-30 19:29:59 +00:00