Cosimo Lupo
a21c388355
[test.pens_test] add test module for Cu2Qu pens
2016-03-25 19:55:39 +01:00
Cosimo Lupo
5f8bb98107
[test.utils] add dummy pen and glyph classes to use with unit tests
2016-03-25 19:55:38 +01:00
Cosimo Lupo
2a6feb01be
[test] add __init__.py to turn 'test' into a sub-package
2016-03-25 19:55:38 +01:00
Cosimo Lupo
072a60da97
create test folder; add test .glif files
2016-03-25 19:55:38 +01:00
Cosimo Lupo
a246bcfdbd
[pens] add "super bezier" support to Cu2QuPointPen
2016-03-25 19:55:38 +01:00
Cosimo Lupo
8e3c6ce5a2
[pens] minor comments and assertion error message
2016-03-25 19:55:08 +01:00
Cosimo Lupo
c5bd215e2f
[pens] add assertions esuring that Cu2QuPen methods are called in the right order
2016-03-25 14:26:33 +01:00
Cosimo Lupo
a79ea7e126
[pens] set smooth=False for offcurve points in new quadratic segments
2016-03-18 15:41:44 +00:00
Cosimo Lupo
4f6d04bcf3
[pens] don't use super() for compat with robofab's old-style classes
2016-03-18 15:40:16 +00:00
Cosimo Lupo
84f24b189b
[pens] fix imports for robofab pens
2016-03-16 18:58:06 +00:00
Cosimo Lupo
9fcca0f5c5
[pens] call lineTo if len(points) == 1 in qCurveTo()
...
we were alrady doing that in curveTo, so we might well do it here too
2016-03-16 10:39:06 +00:00
Cosimo Lupo
adaa9fc242
[pens] add docstrings; make ignore_single_points=False by default
2016-03-16 10:14:05 +00:00
Cosimo Lupo
a7ed9c8cc1
add pens module containing Cu2QuPen, Cu2QuPointPen, ReverseContourPen and ReverseContourPointPen
...
I copied the ReverseContourPointPen from the robofab.pens. I think it's useful for the Cu2QuPen to
have a `reverse_direction` argument which inverts the contours' winding direction. I didn't want to
add a dependency on robofab, since things are in transitions... We will add it to the future "penBox"
package (or whatever it'll be called) once that is set up.
2016-03-15 19:49:23 +00:00
James Godfrey-Kittle
7014fc7c3a
Merge pull request #19 from googlei18n/no-rounding
...
[robofab] Don't round new points
2016-02-16 17:58:07 -08:00
James Godfrey-Kittle
6fd3f19f2d
[robofab] Don't round new points
...
It doesn't seem to be a good idea to round some points in a glyph but
not others. With this change, control points (which don't change)
that were equivalent to other non-curve points before conversion will
remain so. This can be significant when drawing with pen objects.
The rounding has been there since the initial commit; it's not clear
that it serves a purpose.
2016-02-11 17:51:35 -08:00
James Godfrey-Kittle
d4913e3077
[minor] Use setuptools in setup.py
2016-02-11 17:44:57 -08:00
James Godfrey-Kittle
49defc4e80
Merge pull request #18 from googlei18n/api
...
API changes
2015-12-11 10:53:09 -08:00
jamesgk
3c3c579ab1
Assert # error tolerances matches # fonts/curves
2015-12-10 12:50:53 -08:00
jamesgk
2dfd8aec76
Add convenience function font_to_quadratic
2015-12-10 12:20:39 -08:00
jamesgk
555ff7c43f
Accept error tolerances as lists or tuples
...
This way you can designate different tolerances for different fonts,
which may be useful for example with fonts of different weights.
2015-12-10 12:19:15 -08:00
jamesgk
f7c251e9a2
Rename "report" parameter to "stats"
...
This also makes the stats parameter optional in the other public rf
module functions.
2015-12-08 14:21:44 -08:00
jamesgk
56f36a1b2a
[API] Take in list of fonts, no **kwarg syntax
...
This is hopefully the last non-backwards-compatible API change. We
take a list of fonts in rf.fonts_to_quadratic so that we can spell out
its keyword arguments explicitly. Also, only one max error argument is
accepted.
2015-12-08 14:19:57 -08:00
jamesgk
b568c934d0
Remove max_n parameter
...
This is probably not useful as a parameter, so instead we hardcode the
value into the main module.
2015-12-08 12:44:29 -08:00
jamesgk
856ffe1fca
Make only a few functions public
...
This way we hopefully don't have to worry about changing things behind
the scenes.
2015-12-08 12:42:42 -08:00
James Godfrey-Kittle
b6ae3f4b58
Merge pull request #17 from anthrotype/return-error
...
Return (spline, error) tuple from approximation functions
2015-12-08 11:58:59 -08:00
Cosimo Lupo
e6b47d61c9
cu2qu.rf: only get fist item returned from curve_to_quadratic, ignore approx error
...
curve_to_quadratic and curves_to_quadratic now return a (spline, error) tuple.
2015-12-07 15:09:26 +00:00
Cosimo Lupo
4dffdb7dd7
cu2qu.__init__: return (spline[s], error[s]) tuple from curve[s]_to_quadratic; raise exception if no approximation is found; ensure returned spline is a list of tuples
2015-12-07 15:09:26 +00:00
Behdad Esfahbod
1ab0631ba4
Merge pull request #16 from googlei18n/py23
...
Use __future__ imports to ease Python2/3 compat
2015-12-04 22:44:53 -08:00
jamesgk
a79fb041a2
Use __future__ imports to ease Python2/3 compat
2015-12-04 13:07:32 -08:00
Behdad Esfahbod
aba3051aac
[benchmark] Print time in micro-seconds
2015-12-03 18:13:27 -08:00
Behdad Esfahbod
1665774752
Merge pull request #15 from googlei18n/optimize
...
Remove Point class and only use built-ins
2015-12-03 17:53:13 -08:00
jamesgk
72ebeb1085
Add license to benchmark script
2015-12-01 17:28:19 -08:00
jamesgk
3d4a7872ab
Add a benchmarking suite for curve/s_to_quadratic
2015-12-01 17:13:14 -08:00
jamesgk
a787cd2daf
Pass tuples to curves_to_quadratic in rf module
2015-12-01 17:12:30 -08:00
jamesgk
561bed0ea0
Remove Point class and only use built-ins
...
Using built-in types (mostly tuples) seems to cut the running time
overall by about one half. Spelling out linear interpolation in the
bezier_at functions actually cuts the running time by another 10%,
but I'm not sure if it's worth it given that this code looks a bit
nicer.
2015-12-01 13:22:24 -08:00
Behdad Esfahbod
bb79a8bf62
Merge pull request #14 from googlei18n/api
...
Move geometry module to __init__
2015-12-01 13:03:08 -08:00
jamesgk
97ce534d7b
Move geometry.py to __init__.py
2015-12-01 12:30:31 -08:00
jamesgk
ebf1573564
Remove __init__.py (will be replace by geometry.py)
2015-12-01 11:04:48 -08:00
Behdad Esfahbod
fdd84fad88
Merge pull request #12 from googlei18n/error-em
...
Specify tolerance in em through `max_err_em`
2015-11-24 15:38:22 -06:00
jamesgk
bf6b2d9f7e
Specify tolerance in em through max_err_em
...
This way, the `max_err` parameter is consistent with the other
functions (being in font units).
2015-11-24 12:52:03 -08:00
James Godfrey-Kittle
f82e320395
Merge pull request #5 from googlei18n/error-em
...
Specify max error in em instead of font units
2015-11-20 14:40:07 -08:00
jamesgk
4f107a9119
Merge branch 'master' into error-em
2015-11-20 14:39:10 -08:00
Behdad Esfahbod
a5e23c01f6
Merge pull request #4 from googlei18n/stats-arg
...
Take in dictionary of conversion statistics
2015-11-20 14:19:47 -08:00
jamesgk
85821f081d
Update readme with max_error param changes
2015-11-20 12:08:28 -08:00
jamesgk
79ea6b4973
Swap order of "max_err" and "max_n" parameters
...
I like this new order better, since max_err seems to be the more
important parameter, and it corresponds more closely with the actual
font object params (which can be lists) than max_n (which is always
a single value).
2015-11-20 12:06:18 -08:00
jamesgk
e94071a2d8
Specify max error in em instead of font units
...
This should be more compatible between fonts with different UPM. In
fact, it should work within a single call with such fonts.
The default max error is now 0.0025 em, which is about 5 units for a
2048 UPM font.
2015-11-20 12:04:48 -08:00
jamesgk
5ef46a5bb3
Update readme with API changes
2015-11-19 17:17:56 -08:00
jamesgk
042a392d35
Take in dictionary of conversion stats
...
This allows stats to be accumulated between function calls.
2015-11-19 17:11:06 -08:00
jamesgk
8bbdb47cf5
Rename "robofab" module to "rf"
...
Apparently naming this robofab conflicts with the global robofab
module.
2015-11-19 16:59:49 -08:00
jamesgk
68d5213dd1
Update comments -- conversion is always compatible
2015-11-19 16:45:05 -08:00