1494 Commits

Author SHA1 Message Date
Simon Cozens
41c1dcce1c Tidy up as per review 2020-09-09 19:56:44 +01:00
Simon Cozens
4cddc38263 Use a named tuple, tidy ttx dump code 2020-09-09 19:56:05 +01:00
Simon Cozens
b548c5f2e1 Namespace debug output. 2020-08-25 20:22:54 +01:00
Simon Cozens
50e1105604 Parse Debg info in LookupList 2020-08-25 20:19:31 +01:00
Simon Cozens
aebb2e511c The long-threatened Debg table! 2020-08-25 14:06:14 +01:00
Just van Rossum
bec19252c5
[ttLib] Fix for #2044: fix maxp.maxComponentDepth calculation (#2045)
Fix for #2044: don't overwrite the initial maxComponentDepth variable, as this will give the wrong value when there are multiple nested components.
2020-08-14 20:13:01 +02:00
Cosimo Lupo
09c0e42031
Partly revert "use 32-bit GlyphIDs in COLRv1 baseGlyphs and layers"
This reverts commit 690080b14d9a4f193092ffc172a39b3e212d307c.

We keep 16-bit GlyphIDs for COLRv1 tables, at least for now
https://github.com/googlefonts/colr-gradients-spec/pull/24

I keep the GlyphID32 converter in case we may need it in the future.
2020-07-08 16:06:45 +01:00
Cosimo Lupo
ff79338607
rename radial gradient Paint.Affine attribute to Transform
as suggested by Peter Constable in
https://github.com/PeterConstable/OT_Drafts/blob/master/COLR_V1/COLRv1formats_rev3.md#paintformat3-table-conicalradial-gradient
2020-07-02 12:21:12 +01:00
Cosimo Lupo
ac0a755d20
make linear/radial gradient 'point-less', inline x0,y0,x1,y1,...
https://github.com/googlefonts/colr-gradients-spec/issues/21
2020-07-02 12:11:40 +01:00
Cosimo Lupo
dea9896421
rename COLR Color -> ColorIndex, transparency to alpha
https://github.com/googlefonts/colr-gradients-spec/issues/17
https://github.com/googlefonts/colr-gradients-spec/issues/19
2020-07-02 10:27:47 +01:00
Cosimo Lupo
ff7dc9a1c5
Rename: Var* types: Scalar->Fixed, NormalizedScalar->F2Dot14, etc.
VariablePosition -> VarInt16
VariableDistance -> VarUInt16

cf. https://github.com/googlefonts/colr-gradients-spec/issues/17
2020-07-01 20:13:14 +01:00
Cosimo Lupo
690080b14d
use 32-bit GlyphIDs in COLRv1 baseGlyphs and layers
For forward-compatibility, see https://github.com/googlefonts/colr-gradients-spec/issues/8
2020-07-01 19:50:48 +01:00
Cosimo Lupo
b215c000df
Rename LayerV1Array to LayerV1List, like with BaseGlyphV1List
See https://github.com/googlefonts/colr-gradients-spec/issues/14#issuecomment-652542829
2020-07-01 18:22:03 +01:00
Cosimo Lupo
5f18d9891c
rename BaseGlyphV1Array to BaseGlyphV1List
As suggested by Peter Constable in https://github.com/googlefonts/colr-gradients-spec/issues/14 and https://github.com/googlefonts/colr-gradients-spec/issues/18
2020-07-01 18:16:07 +01:00
Just van Rossum
dc7d016538
[ttLib.tables._n_a_m_e] Fix #1997: Only attempt to recovered malformed data from bytes (#1998)
* don't attempt to recover malformed data from str, only from bytes. Fixes #1997
2020-06-16 16:35:40 +02:00
Just van Rossum
90c7c7fae1
Fix for #1985: ensure that the AxisNameID in the STAT table is > 255 (#1986)
Fix for #1985:
* ensure that the AxisNameID in the STAT table is not less than 256. This needed an additional argument to the addMultiLingualName() name table method.
* fvar axis name IDs must also not be less than 256, just like STAT axis names.
2020-06-08 19:39:28 +02:00
Guillaume Ayoub
2a1f09dbb2 Don’t calculate whole sets of unicode codepoints
_getUnicodeRangeSets used to calculate sets containing lots of numbers, only to
get intersections between a set and ranges. Creating and manipulating a lot of
big sets requires a lot of memory.

The function has been replaced by _getUnicodeRanges, returning a list of range
starts boundaries and a list of range stops + corresponding bits.

Tests on intersectUnicodeRanges save about 130 MB (!) of RAM, with no
significant speed penalty.
2020-06-05 11:28:18 +02:00
Cosimo Lupo
9d8a7e27fe
[COLR] should set self.version after decompiling COLRv1
we set self.version for COLRv0 already; makes easier to check COLR.version
2020-05-21 16:57:35 +01:00
Just van Rossum
db26cf804e
[ttLib.name] Fix findMultilingualName() (#1963)
* when reading from binary, name.string may be an encoded bytes sequence: we should call toUnicode() before we compare to the requested string

* fix expected output
2020-05-16 11:29:23 +02:00
Just van Rossum
a53bb37d8e
Merge pull request #1938 from justvanrossum/meta-comment
[ttLib.table._m_e_t_a] if data happens to be ascii, emit comment in TTX
2020-05-11 18:47:56 +02:00
Cosimo Lupo
07e3cf7ef6
Merge pull request #1928 from simoncozens/unused-loop-variable
Use _ to denoted unused loop variable
2020-05-11 11:10:57 +01:00
justvanrossum
0dc0222f59 if the binary data happens to be ascii, emit a comment with an ascii representation 2020-05-08 10:37:01 +02:00
Simon Cozens
46c8f90da8 Use _ to denoted unused loop variable 2020-05-07 21:00:28 +01:00
Just van Rossum
4febf38be2
[ttLib.name] Add nameTable.findMultilingualName() method (#1921)
* add nameTable.findMultilingualName(), to find an existing multilingual name
* Make addMultilingualName() reuse nameIDs if possible when asking for a new nameID, by calling findMultilingualName()
2020-05-07 11:06:51 +02:00
justvanrossum
b4c5b07741 sort XML output by glyph name 2020-04-29 16:31:54 +02:00
Cosimo Lupo
3110944745
Merge remote-tracking branch 'origin/master' into otdata-colr 2020-03-23 13:09:33 +00:00
Jan Sindler
15aa8dce79 hex above repr 2020-03-23 12:43:42 +01:00
Jan Sindler
13b2455675 init removed, back to inhereted namedtuple 2020-03-23 12:22:02 +01:00
Jan Sindler
08cd70e222 fixed spaces 2020-03-23 12:02:13 +01:00
Jan Sindler
0a33dbdc99 CPAL/Color, fromRGBA, added __init__, moved dunder repr to the dunder part of the Color class 2020-03-23 12:00:08 +01:00
Cosimo Lupo
d2bbfdb610
Merge remote-tracking branch 'origin/master' into otdata-colr 2020-03-12 17:42:56 +00:00
Simon Cozens
681ca4ae0c Test the flags, not the value
Avoids an empty comment when reserved values are used.
2020-03-12 11:51:36 +00:00
Cosimo Lupo
49d504d970
otData: fix Offset decriptions for COLRv1 subtables 2020-03-11 19:01:26 +00:00
Cosimo Lupo
8b32b79e8d
C_O_L_R_: remove unused lines
name attribute is always a glyph name (str), never an int
2020-03-11 19:01:25 +00:00
Simon Cozens
8fac69b0ea Also output mark attachment class 2020-03-11 13:59:05 +00:00
Simon Cozens
ab075a9957 Annotate LookupFlag ttx dump 2020-03-10 21:42:28 +00:00
Cosimo Lupo
b2a0d62295
otConverters: in _NamedTupleConverter only dump to XML non-default values
so we don't see varIdx='0' dumped all the time, even when there are no variations in font
2020-03-09 16:15:33 +00:00
Cosimo Lupo
e57f8b59d7
make ttLib.C_O_L_R_ a hybrid that keeps old API for v0, uses otTables for COLRv1 2020-03-06 18:39:14 +00:00
Cosimo Lupo
c42c4162c2
add otConverter for namedtuples and use it for Variable{Scalar,Position,Distance}
in COLRv1 all scalar values have associated varIdx to support variations. I want to load them as
immutable namedtuples, and also I want to dump them as simple XML tags with 'value' and 'varIdx'
attributes, instead of normal otTables (i.e. with nested Value and VarIdx sub-elements) as
that would make them too verbose in the XML dump.
So I made a custom _NamedTupleConverter, as a base class for VariableScalar, etc.; sub-classes
must provide a tupleClass and a list of converterClasses for each namedtuple field.

The ExtendMode enum has also a custom converter to dump it as string in the XML, and load it
as IntEnum.

fixup
2020-03-06 18:35:32 +00:00
Cosimo Lupo
4e6eec964c
COLR: remove ability to get/set by glyphID as incoherent with rest of ttLib classes 2020-03-02 13:10:47 +00:00
Cosimo Lupo
d659e055b2
Merge remote-tracking branch 'origin/master' into otdata-colr 2020-03-02 10:59:55 +00:00
Cosimo Lupo
f60bcc2c5a
[CPAL] the absence of a color palette label nameID is 0xFFFF, not 0 2020-02-17 17:03:37 +00:00
Cosimo Lupo
7c023c42af
[glyf] if comp uses anchors compute firstPt-secondPt offset after applying transform
Fixes https://github.com/fonttools/fonttools/issues/1556

When a component uses firstPt/secondPt reference anchor points instead of XY offsets,
and the component also has a transform, fonttools is incorrectly computing its bounding box.
This is because we are computing the translation offset between firstPt and secondPt before
applying the 2x2 scale/rotation/shear transform. By the time we do the translation, the
offset is now incorrect.

We need to compute the translation offset after we have applied the 2x2 transform.
2020-02-13 18:07:57 +00:00
Cosimo Lupo
9c7ceadc0e
[glyf] compile empty table as 1 null byte to make OTS and Windows happy
Fixes #899

See https://github.com/khaledhosny/ots/issues/52#issuecomment-289369267
2020-02-12 14:25:25 +00:00
Cosimo Lupo
16bff17483
head: when checking for extra padding at end of table, must compare bytes, not str 2020-02-12 12:53:09 +00:00
Cosimo Lupo
d2026bd651
WIP: otData: define draft COLRv1 structures
https://docs.google.com/document/d/1EPndWsdMK_M135FOIxQZ--dHpH727rXEBvLZqgIzZvs/edit#
2020-02-11 16:33:38 +00:00
Cosimo Lupo
29422a49f3
C_O_L_R_: further simplify decompile 2020-02-11 13:46:45 +00:00
Cosimo Lupo
fb92f228af
C_O_L_R_: simplify toXML 2020-02-11 13:30:20 +00:00
Cosimo Lupo
67c97f214a
C_O_L_R_: use OTTableReader and Writer instead of struct to decompile/compile
But keep the existing C_O_L_R_ table interface for backward compatibility.
2020-02-10 13:45:44 +00:00
Cosimo Lupo
8e48c57a00
otTables: initialize a CountReference for LayerRecordCount in COLR.preWrite 2020-02-04 17:14:52 +00:00