3206 Commits

Author SHA1 Message Date
Jens Kutilek
f36c7ec39f Make "unexpected character" exception ASCII-safe 2017-08-08 13:46:05 +02:00
Behdad Esfahbod
a1629fa52b [varLib] Update supportScalar() to allow for OpenType-specific contraints
Part of https://github.com/fonttools/fonttools/issues/1020
2017-08-07 17:05:29 -07:00
justvanrossum
18fa7ccec0 supportScalar(): ignore an axis when its peak value is 0; fixes #1020 2017-08-07 13:16:24 +02:00
Erik van Blokland
4762865cac Makes it a bit easier to find out what is wrong with the values. 2017-08-05 20:37:37 +02:00
Behdad Esfahbod
b9151ffacb [varLib] Add assertions to make sure we merge similar ValueFormat2-zeroedness 2017-08-04 09:22:43 +01:00
Behdad Esfahbod
49f249b118 [varLib] Add faster tables first
Speeds up development speed :).
2017-08-04 09:07:38 +01:00
Behdad Esfahbod
f3031ce797 [varLib] Add comment 2017-08-04 08:55:34 +01:00
Behdad Esfahbod
010ea47de1 [varLib] Minor rename 2017-08-04 08:41:29 +01:00
Cosimo Lupo
b5ab6d3af3 [varLib] temporary workaround to make MVAR tests pass
https://travis-ci.org/fonttools/fonttools/jobs/260671300#L2519-L2519

Behdad will revert this later
2017-08-03 17:57:16 +01:00
Cosimo Lupo
74035147a0 [varLib] remove unused 'instances' argument in _add_avar 2017-08-03 14:57:02 +01:00
Behdad Esfahbod
3746f75d7f [varLib] Split _add_fvar_avar() into _add_fvar() and _add_avar() 2017-08-03 12:38:23 +01:00
Cosimo Lupo
19c4b377b8 [varLib] add predefined avar mappings to fix rendering in CoreText
Fixes https://github.com/googlei18n/fontmake/issues/295
2017-08-02 15:12:26 +01:00
Behdad Esfahbod
c55ef5257d [varLib] Flatten multiple tail PairPosFormat2 subtables before merging
Reuses the aligner.  Neat.
2017-08-01 19:06:40 +01:00
Behdad Esfahbod
eca0c441d1 [varLib] Factor out PairPosFormat2 matrix alignment code 2017-08-01 19:06:40 +01:00
Behdad Esfahbod
f2a1f3446b [varLib] Minor 2017-08-01 19:06:40 +01:00
Cosimo Lupo
ca1bb10aa8 [varLib] test avar mappings are 'interesting' after normalizing values
otherwise we could end up with unnecessary avar tables only containing
the standard maps.
2017-08-01 12:08:44 +01:00
Masaya Nakamura
3708f2c8d3 Don't cache charString bounds
https://github.com/fonttools/fonttools/pull/970#discussion_r117903692
2017-08-01 10:54:47 +09:00
Masaya Nakamura
22dfcd94a1 [cffLib] Use None instead of initialBounds
https://github.com/fonttools/fonttools/pull/970#discussion_r117621101
2017-08-01 10:53:29 +09:00
Masaya Nakamura
68c7275945 [hhea,vhea] Refactor 2017-08-01 10:53:28 +09:00
Masaya Nakamura
69199b3225 [hhea,vhea] Ensure charString has bounds 2017-08-01 10:53:27 +09:00
Masaya Nakamura
1b773c17d7 [hhea,vhea] Fix advance{Width,Height}Max calculations
Before this commit, empty glyphs were wrongly ignored.
2017-08-01 10:51:48 +09:00
Masaya Nakamura
994337ffe2 [ttLib] Update recalcBBoxes description 2017-08-01 10:51:48 +09:00
Masaya Nakamura
d13aab2c70 [hhea,vhea] Add recalcBBoxes support for CFF-flavored fonts 2017-08-01 10:51:48 +09:00
Masaya Nakamura
cf3474ba6a [hhea,vhea] Refactor to support CFF bounds recalculation 2017-08-01 10:51:47 +09:00
Masaya Nakamura
d1bc55756f [hhea,vhea] Use float('inf') instead of INFINITY 2017-08-01 10:51:47 +09:00
Masaya Nakamura
b22b59f730 [cffLib] Use intRect() for FontBBox rounding
AFDKO seems to calculate bounds and side bearings in this manner.
2017-08-01 10:51:47 +09:00
Masaya Nakamura
5fd38a762e [head] Recalc bounds when compiling CFF-flavored fonts 2017-08-01 10:51:47 +09:00
Masaya Nakamura
b84ee6744d [cffLib] Recalc CFF's FontBBox when compiling 2017-08-01 10:51:47 +09:00
Masaya Nakamura
a68bfc2458 [psCharStrings] Add recalcBounds() to T2CharString 2017-08-01 10:51:47 +09:00
Cosimo Lupo
c3df74f597 Release 3.14.0 2017-07-31 19:41:55 +01:00
Behdad Esfahbod
3d1f5ae7d4 [varLib.merger] Fixup on previous commit
Also drop Extension from self.
2017-07-28 18:33:01 +01:00
Behdad Esfahbod
f7c20cf895 [varLib.merger] Remove Extensions subtables before merging 2017-07-28 18:17:21 +01:00
Behdad Esfahbod
24db8b015b [varLib] Assert that avar -1,0,+1 mappings are as expected if they exist 2017-07-28 15:30:40 +01:00
Jens Kutilek
1136afd304 [varLib] Initialize the avar segment map with required default entries (#1014)
* Initialize the avar segment map with required default entries

* Set default values only after deciding that a segment map is needed for this axis

* Correct dict update call
2017-07-28 15:25:03 +01:00
Behdad Esfahbod
39ffa74128 Merge pull request #1019 from fonttools/varlib-iup-optimal
Varlib iup optimal
2017-07-28 12:09:27 +01:00
Cosimo Lupo
0ad14b67a9 [varLib] fix TypeError: zip object has no len on python3 2017-07-27 17:05:34 +01:00
Behdad Esfahbod
bb6ce80f63 [varLib] Speed up IUP optimizer by detecting more forced points 2017-07-26 14:13:18 -07:00
Behdad Esfahbod
3094926304 [varLib] Minor 2017-07-26 11:56:45 -07:00
Cosimo Lupo
dca96c9c55 [cffLib] get TopDict by index as well as by name
There can only be one TopDict in an OpenType font, whether CFF or CFF2;
plus in the latter, TopDict INDEX and Names INDEX are gone, just the
one TopDict is left. Most of the time, one simple wants to get to
that single TopDict instance.

So instead of doing this:

topDict = font['CFF '].cff.values()[0]

one can alternatively do this now:

topDict = font['CFF '].cff[0]
2017-07-26 18:53:42 +01:00
Cosimo Lupo
212ac26147 Merge pull request #1015 from robmck-ms/master
Add AxisValueFormat4 for STAT table v1.2  from OT v1.8.2.
2017-07-25 20:39:00 +01:00
Cosimo Lupo
ae89c0d5ca [ttx] drop the 'n' from "an TTX" 2017-07-25 20:35:55 +01:00
Cosimo Lupo
2d9ca0b2bd [ttx] remove mention to otf2ttf.py Snippet from help message
https://github.com/fonttools/fonttools/pull/1016#issuecomment-317847536
2017-07-25 20:33:41 +01:00
Dave Crossland
32fa8bc86b ttx.py Clarify help text
Confusion reported at https://groups.google.com/forum/#!topic/fonttools/7ocZWHbsCLw
2017-07-25 11:16:47 -04:00
Rob McKaughan
b8e2d90cda Add AxisValueFormat4 for STAT table v1.2 from OT v1.8.2. 2017-07-24 16:12:31 -07:00
Cosimo Lupo
25aad9041d minor: fix doctest failing on latest pypy
Expected:
    [-0.0, -0.0, -0.0]
Got:
    [0.0, 0.0, 0.0]
2017-07-24 16:47:07 +01:00
Cosimo Lupo
8ca53c6a17 [name] fix bcp46 language tag for Mac langID=9: 'si' -> 'sl'
Fixes #1013
2017-07-24 13:03:38 +01:00
Behdad Esfahbod
69206e290e [varLib] "Document" IUP DP algorithm for the case when forced set is empty 2017-07-22 18:48:23 -07:00
Behdad Esfahbod
e5ac044969 [varLib] Speed up IUP DP some more when forced set is empty
Pass a maximum lookback of n to the circle-breaking DP of size 2*n.

This should theoretically speed up that DP by a factor of 4 or 8 or something...
Empirically it's far from that, but solidly measurable.

Again, gvar table size got a slight improvement, which I didn't expect... It
might be that my one test is hitting lucky cases with point encodings.. or it
might be just me wishfully thinking so.
2017-07-22 18:46:16 -07:00
Behdad Esfahbod
91e4220193 [varLib] Speed up IUP DP when forced set is empty
Drives it into acceptable speed now.  Note that I'm getting better
gvar size after this patch, which I didn't expect.  So, either this
algorithm or the previous one was buggy. :(
2017-07-22 18:31:10 -07:00
Cosimo Lupo
c0d672ba70 [subset] return value from _DehintingT2Decompiler.op_hintmask
The `_SimpleT2Decompiler.execute` method expects that handlers for
hintmask/cntrmask operators return a tuple of (hintMaskBytes, index).
The index value is used to skip to the next token following the
hintmask bytes.
However, the `_DehintingT2Decompiler.op_hintmask` method was returning
None, thus the hintmask bytes were evaluated as the following token
instead of being consumed as such; but since in legacy python 2
`isinstance(token, basestring)` is True for both operators and
hintmask bytes, the latter might sometimes be wrongly interpreted
as operators!

For example, the hintmask bits '0110111101110010', encoded as a
bytes string `'\x6f\x72'` was being confused for the unimplemented
`'or'` operator...

Fixes #1006
2017-07-20 21:45:30 +01:00