2812 Commits

Author SHA1 Message Date
Behdad Esfahbod
501e1f2f7e [symfont] Remove another level of indirection
Saves another few percents, though not as much as previous commit.
2016-07-11 12:23:56 -07:00
Behdad Esfahbod
7fd9dce0e9 [symfont] Speed up a bit
Remove one level of indirection in access to point data in generated
functions; ie. use p0, p1, ... instead of P[0], P[1], ...

Makes for about 10% speedup.
2016-07-11 12:23:56 -07:00
Behdad Esfahbod
cde56fce66 [symfont] Minor 2016-07-11 12:23:56 -07:00
Cosimo Lupo
1d809ac92f Merge pull request #632 from miguelsousa/cff-fix
Fix xml-roundtripping of CFF fonts (name-keyed & cid-keyed)
2016-07-06 19:48:59 +01:00
Miguel Sousa
8bf1bd4f30 [cff] fix fetching of fdSelectIndex value 2016-07-06 10:27:02 -06:00
Miguel Sousa
c04a6d922c [cff] fdSelect array only exists in CID fonts, so test for the presence of fdArray and set the selector value to None otherwise 2016-07-06 04:23:43 -06:00
Denis Moyogo Jacquerye
384b050b08 Merge pull request #629 from jamesgk/mtilib-cmap
Add cmap handling to mtiLib
2016-06-30 22:32:54 +01:00
James Godfrey-Kittle
797061679a [mtiLib] Make tables in parsers, don't pass in 2016-06-30 14:16:58 -07:00
James Godfrey-Kittle
1b61637473 Add cmap handling to mtiLib 2016-06-30 12:50:39 -07:00
Behdad Esfahbod
3868ac845f [Snippets/interpolatable.py] Flesh out some more 2016-06-24 19:00:56 -04:00
Sascha Brawer
42177e03b7 Merge pull request #625 from jamesgk/fealib-scriptlang
[feaLib] Don't set language when script is unset
2016-06-23 15:44:44 +02:00
James Godfrey-Kittle
5c723ebfb0 [feaLib] Don't assume feature has lookups in DFLT
It's possible for all of a feature's lookups to be in specific script
and/or language systems, so this code could crash.
2016-06-22 16:19:45 -07:00
James Godfrey-Kittle
e2186dec53 [feaLib] Don't set language when script is unset
Before, if someone tried to set the language before setting the script
a None/language language system would be created (with actual tag
"None" stored in the feature table). This defaults to tag DFLT and
fails when a non-dflt language is set for DFLT, since that's illegal.
2016-06-22 11:29:42 -07:00
Sascha Brawer
87f86424ca Merge pull request #623 from jamesgk/fealib-scriptlang
[feaLib] Fix exclude_dflt handling
2016-06-22 08:28:57 +02:00
James Godfrey-Kittle
aaf9294d97 [feaLib] Add another test for language systems 2016-06-21 16:40:17 -07:00
James Godfrey-Kittle
d1af1cfd4a [feaLib] Fix exclude_dflt handling
This is to fix what I think was a misunderstanding of the exclude_dflt
keyword (and the implicit include_dflt option active by default).

Rather than including the following lookups in the default language
systems, I think it is used to include the lookups specific to default
language systems in the system defined by the current language
statement. Thus instead of registering a lookup in all default
systems when include_dflt is true, we should exclude the lookups
registered with default systems from the current system when
include_dflt is false.
2016-06-21 16:39:27 -07:00
Behdad Esfahbod
0deb34829c [Snippets/interpolatable.py] Add preliminary script for detecting interpolation errors
Very basic.  Right now detects if glyphs have wrong order of contours / components.
2016-06-15 18:46:59 +04:00
Behdad Esfahbod
220ff2b238 [pens.areaPen] Clean up a bit
Based on discussion in
https://github.com/behdad/fonttools/pull/618#issuecomment-226105824
2016-06-15 14:10:44 +04:00
Behdad Esfahbod
b3414e9ffd [symfont] Use AreaPen from fontTools
It's about 20% faster.
2016-06-14 01:26:39 -04:00
Behdad Esfahbod
acbd3df647 [symfont] Add function to print function sources for caching 2016-06-14 01:23:40 -04:00
Behdad Esfahbod
1a48fc27a1 [symfont] Remove one level of function call 2016-06-14 01:16:57 -04:00
Behdad Esfahbod
b0b049774c Implement analytical curve length for quadratic beziers
This is multiple times faster, and tolerance-independent.

I'll explain how I arrived at this later.
2016-06-13 20:08:50 -04:00
Behdad Esfahbod
56c27f45c9 Speed up perimeterPen
It's still too slow, but an improvement.

Also, remove duplicate copy from symfont.
2016-06-13 18:50:01 -04:00
Behdad Esfahbod
71fb49962a Improve perimeterPen tests
The tolerance on the pen is set to 0.5%, so it does not make sense
to test for accuracy for anything more than integers given the
values.
2016-06-13 18:47:03 -04:00
Behdad Esfahbod
b7cf54aef1 [symfont] Minor 2016-06-13 18:20:42 -04:00
Cosimo Lupo
04c19fda80 Merge pull request #619 from miguelsousa/pen-tests
AreaPen and PerimeterPen unit tests
2016-06-13 06:23:00 +01:00
Miguel Sousa
9efcaf05e4 Unit tests for AreaPen and PerimeterPen 2016-06-12 15:46:52 -07:00
Miguel Sousa
92e8455259 perimeterPen.py: make glyphset the first argument (like in all other pens) 2016-06-12 15:46:04 -07:00
Cosimo Lupo
b73b432add Merge pull request #618 from anthrotype/area-pen
Area and Perimeter pens
2016-06-12 12:51:09 +01:00
Cosimo Lupo
c5ed6c6456 perimeterPen.py: handle implied lineTo in closePath 2016-06-12 11:49:00 +01:00
Cosimo Lupo
d51b88a234 areaPen.py: remove unused 'interpolate' function; call polygon_area directly in closePath 2016-06-12 11:37:02 +01:00
Cosimo Lupo
39f919f1f1 areaPen.py: calculate area under quadratic curve directly, using Green theorem 2016-06-12 03:14:09 +01:00
Cosimo Lupo
5f0e48e649 areaPen.py: make sure the first and last points of contour overlap 2016-06-12 03:13:32 +01:00
Cosimo Lupo
38359b054d areaPen.py: invert sign of area (CCW is now positive) 2016-06-12 03:12:02 +01:00
Cosimo Lupo
c08e47ed47 perimeterPen.py: copy PerimeterPen from symfont.py 2016-06-11 23:07:23 +01:00
Cosimo Lupo
eb7e193773 areaPen.py: typo 2016-06-11 23:07:23 +01:00
Cosimo Lupo
76dc5d2607 areaPen.py: use tabs for indentation as that's the norm in fontTools
(despite I prefer spaces)
2016-06-11 23:07:23 +01:00
Cosimo Lupo
2dc88be8a7 areaPen.py: remove unused 'distance' function 2016-06-11 23:07:23 +01:00
Cosimo Lupo
2cb93ee7dd areaPen.py: hook up quadratic_curve_area to AreaPen._qCurveToOne method 2016-06-11 23:07:23 +01:00
Cosimo Lupo
ac3b30e0db areaPen.py: add default __future__ imports 2016-06-11 23:07:23 +01:00
Cosimo Lupo
ad4b94f4b9 areaPen.py: use regular tuples for points instead of namedtuple 2016-06-11 23:07:23 +01:00
Cosimo Lupo
046333dda5 areaPen.py: pen to calculate the area of a glyph (by Behdad)
https://github.com/behdad/fonttools/issues/617#issuecomment-225029592
2016-06-11 23:07:23 +01:00
Behdad Esfahbod
be27acbbd2 [varLib] Fix thinko 2016-06-10 19:49:45 -07:00
Behdad Esfahbod
c34739760c [symfont] Handle closePath()
Apparently some draw() implementations expect closePath() to
draw a line to the contour beginning.

In fact, looks like fontTools's TrueType draw() always does the
lineTo() before closePath(), but the CFF draw() doesn't.

As raised in
https://github.com/behdad/fonttools/pull/618#issuecomment-225314022
2016-06-10 16:06:22 -07:00
Behdad Esfahbod
7822958fa5 [symfont] Negate sign in green() function
Following the theorem declaration:
https://en.wikipedia.org/wiki/Green%27s_theorem

we should negate the result.  Ie, for a counter-clockwise curve,
the area must be positive.

Raised in
https://github.com/behdad/fonttools/pull/618#issuecomment-225205335
2016-06-10 15:58:56 -07:00
Behdad Esfahbod
78c29bc5a1 Some more solveCubic() work
Should be stable again now.
2016-06-08 18:56:31 -07:00
Behdad Esfahbod
93d08d4188 [mtiLib] Accept "u " as well as "U " in Unicode glyph references
Fixes https://github.com/googlei18n/fontmake/issues/86
2016-06-08 15:17:08 -07:00
Behdad Esfahbod
b2bd15d580 Make solveCubic() more robust
Also, return duplicate roots multiple times.

Part of https://github.com/behdad/fonttools/issues/617
2016-06-08 14:54:23 -07:00
Behdad Esfahbod
b1474a3993 Minor 2016-06-07 16:21:43 -07:00
Behdad Esfahbod
c4f8cbb6a1 [varLib/mutator.py] Update hmtx lsb after updating glyf bounds 2016-06-07 15:51:54 -07:00