32 Commits

Author SHA1 Message Date
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
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
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
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
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
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
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
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
jamesgk
4f107a9119 Merge branch 'master' into error-em 2015-11-20 14:39:10 -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
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
jamesgk
45364ed045 Move RoboFab-specific code to a "robofab" module 2015-11-19 16:40:52 -08:00
Cosimo Lupo
e8db3a18bb don't truncate floats but round them before casting them to ints 2015-11-14 18:04:22 +00:00
jamesgk
ebcd99b1df Rearrange some code
Hopefully this should make the code supporting the public API more
clear.
2015-11-12 16:36:23 -08:00
jamesgk
3855de8887 Move non-RoboFab code into a separate module 2015-11-12 16:22:15 -08:00
jamesgk
3e7c9a39d3 Move cu2qu into a package 2015-11-12 16:18:58 -08:00