185 Commits

Author SHA1 Message Date
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
Cosimo Lupo
d4b9a2bec3 [ttGlyphPen_test] ttProgram has __eq__ now, remove unnecessary assignments
previously assertEqual would fail, despite the `program` attributes where both empty, as the object have different id(). The Program.__eq__ method now compares self.__dict__ == other.__dict__, hence the test pass.
2016-03-11 15:10:50 +00:00
Cosimo Lupo
9b83c377c2 [ttGlyphPen] only add empty ttProgram to simple glyphs, not to composites
Unlike simple glyphs (with contours) which must always have `instructionLength`, the field is optional in composite glyphs and depends on whether `WE_HAVE_INSTR` flag is set:
https://www.microsoft.com/typography/otspec/glyf.htm

In the previous code, the TTGlyphPen was adding an empty `program` attribute to any new glyph, including composite glyphs. It should only do it for simple glyphs.

For example, if you take Roboto-Regular.ttf from here:
https://github.com/google/roboto/releases/tag/v2.129

The font (unhinted) was compiled using the ttGlyphPen. It has 1434 composite glyphs. For each of them, a USHORT value for the number of instructions (0) is written, so the binary ttf is 2.868 KB greater than
what it should be.
2016-03-11 10:53:41 +00:00
Cosimo Lupo
87d13888ce [ttGlyphPen] check last point in qCurveTo is not None
otherwise, if points[-1] == 0, the on-curve point won't be added.
2016-03-09 17:58:48 +00:00
James Godfrey-Kittle
fd5b6de3ba [TTGlyphPen] Add component flags argument 2016-03-07 14:48:46 -08:00
James Godfrey-Kittle
f02e771527 [TTGlyphPen] Don't cast values to int
The glyf table will handle rounding when compiling, so this is
unnecessary.
2016-02-16 17:17:14 -08:00
Cosimo Lupo
c4d2ebca66 remove deprecated use of 'quiet' option in test modules 2016-02-01 13:39:39 +00:00
Cosimo Lupo
974421e8b0 boundsPen_test: test single-point contours, with/without 'ignoreSinglePoints' 2016-01-07 15:48:23 +00:00
Cosimo Lupo
dc2ef2e341 boundsPen: add 'ignoreSinglePoints' argument to do like robofab.pens.boundsPen
if `ignoreSinglePoints` is True, single points are excluded from the computation of the bounds.
The default value (False) keeps the current behaviour (i.e., single points are not ignored).

https://github.com/robofab-developers/robofab/blob/master/Lib/robofab/pens/boundsPen.py

See discussion at: https://github.com/typemytype/booleanOperations/pull/20
2016-01-07 15:47:31 +00:00
James Godfrey-Kittle
45e496fdb8 [TTGlyphPen] Use bytes for array.array for python3 2015-11-06 11:50:39 -08:00
James Godfrey-Kittle
981ad5978c Add endPath method to TransformPen
I think this was just forgotten before.
2015-11-06 11:25:48 -08:00
James Godfrey-Kittle
9ff7d62454 [TTGlyphPen] Do special case ignoring anchors
This fixes the ignoring anchors test, which led me to believe we
didn't need to special case them (which we do, and now are).
2015-11-05 15:28:19 -08:00
James Godfrey-Kittle
6dc5092e2b [TTGlyphPen] Move some code around
No effective differences, just lingering un-committed local changes.
2015-11-05 15:19:53 -08:00
James Godfrey-Kittle
ec2daf00e4 [TTGlyphPen] Add unit tests
These test some pen methods which can't be tested via TTFont objects.
The other option seemed to be using UFOs, but this is simpler.
2015-11-05 15:18:32 -08:00
James Godfrey-Kittle
1bff12f311 [TTGlyphPen] Don't explicitly relcalc glyph bounds
There's no need to do this explicitly; it happens during the calls to
compile().
2015-11-05 15:13:43 -08:00
James Godfrey-Kittle
0b3b83f765 [TTGlyphPen] Don't special case ignoring anchors
There's no need to special case this, it happens anyways.
2015-11-05 15:12:18 -08:00
James Godfrey-Kittle
f5b9ec0186 [TTGlyphPen] Add a new e2e test 2015-11-05 14:11:51 -08:00
James Godfrey-Kittle
b511b2b0d8 [TTGlyphPen] Go back to using AbstractPen
Using BasePen breaks on quadratic splines, since there's no way to
know if a on-curve point was added by the pen or in the original
glyph. Should have considered this before....
2015-11-05 13:57:53 -08:00
James Godfrey-Kittle
7767683ea4 [TTGlyphPen] Abstract out a _popPoint method 2015-11-05 13:57:06 -08:00
James Godfrey-Kittle
9f5c51897c [TTGlyphPen] Move checks for closed contours
We probably don't want to raise errors in init, which allows a drawer
to reset the pen state.
2015-11-05 13:54:51 -08:00
James Godfrey-Kittle
943d258bdb [TTGlyphPen] Add a test using existing test data 2015-11-04 18:01:34 -08:00
James Godfrey-Kittle
fa82fcd213 [TTGlyphPen] Make components with correct defaults
This seems consistent with what one sees opening up an existing TTF.
2015-11-04 17:59:57 -08:00
James Godfrey-Kittle
8c61d08d94 [TTGlyphPen] Remove last point in closed contours
When a pen adds the first point to a contour at the end to close it,
we should remove it for the TrueType outline.
2015-11-04 17:58:27 -08:00
James Godfrey-Kittle
1c73a1942a Don't use lineTo in moveTo
It shouldn't make a difference, but semantically this is now correct.
2015-11-04 17:21:17 -08:00
James Godfrey-Kittle
b83ed7ab2b Allow a TTGlyph pen to be used more than once 2015-11-04 17:19:58 -08:00
James Godfrey-Kittle
58dd55c0ae Use BasePen instead of AbstractPen in TTGlyphPen 2015-11-04 17:18:03 -08:00
James Godfrey-Kittle
5d7f3a9a1f Fix author name typo 2015-10-30 10:32:04 -07:00
James Godfrey-Kittle
e85b975f3a Fix imports in t2CharStringPen
We don't need the array module here, and it looks like py23.* should
be imported everywhere.
2015-10-23 11:36:46 -07:00
James Godfrey-Kittle
82e53f020c Use Python3-compatible arguments for roundIntPoint 2015-10-23 11:23:21 -07:00
James Godfrey-Kittle
7b3ac62db7 Add pen which draws to Type 2 charstrings 2015-10-23 11:15:16 -07:00
James Godfrey-Kittle
8b4c3b7892 Add assertion and comments to ttGlyphPen 2015-10-06 09:14:04 -07:00
James Godfrey-Kittle
b916c5bb93 ttGlyphPen: handle qcurves with no on-curve points 2015-10-06 09:12:15 -07:00
James Godfrey-Kittle
b0c03b86d6 Add pen which draws to TrueType glyphs. 2015-10-01 15:12:20 -07:00
Cosimo Lupo
915b8c303a Merge pull request #332 from miguelsousa/mixed_indents
fix "indentation contains mixed spaces and tabs" errors reported by Landscape
2015-08-09 13:21:30 +01:00
Miguel Sousa
d28a942683 fix two misc errors reported by Landscape 2015-08-09 00:40:31 -07:00
Miguel Sousa
a7aef47695 fix "indentation contains mixed spaces and tabs" errors reported by Landscape 2015-08-09 00:33:50 -07:00
Cosimo Lupo
bf0e336d31 replace all 'StringIO' with 'BytesIO' 2015-08-07 17:25:22 +01:00
Sascha Brawer
3cb5c9ca7c Replace calls to obsolete unittest.assertEquals()
Since Python 2.7, unittest.assertEquals() has been deprecated.
https://docs.python.org/2.7/library/unittest.html#deprecated-aliases
2015-06-25 10:11:52 +02:00