cu2quPen¶

class
fontTools.pens.cu2quPen.
Cu2QuPen
(other_pen, max_err, reverse_direction=False, stats=None, ignore_single_points=False)[source]¶ A filter pen to convert cubic bezier curves to quadratic bsplines using the FontTools SegmentPen protocol.
other_pen: another SegmentPen used to draw the transformed outline. max_err: maximum approximation error in font units. For optimal results,
if you know the UPEM of the font, we recommend setting this to a value equal, or close to UPEM / 1000.
reverse_direction: flip the contours’ direction but keep starting point. stats: a dictionary counting the point numbers of quadratic segments. ignore_single_points: don’t emit contours containing only a single point
NOTE: The “ignore_single_points” argument is deprecated since v1.3.0, which dropped Robofab subpport. It’s no longer needed to specialcase UFO2style anchors (aka “named points”) when using ufoLib >= 2.0, as these are no longer drawn onto pens as singlepoint contours, but are handled separately as anchors.

addComponent
(glyphName, transformation)[source]¶ Add a sub glyph. The ‘transformation’ argument must be a 6tuple containing an affine transformation, or a Transform object from the fontTools.misc.transform module. More precisely: it should be a sequence containing 6 numbers.

closePath
()[source]¶ Close the current sub path. You must call either pen.closePath() or pen.endPath() after each sub path.

curveTo
(*points)[source]¶ Draw a cubic bezier with an arbitrary number of control points.
The last point specified is oncurve, all others are offcurve (control) points. If the number of control points is > 2, the segment is split into multiple bezier segments. This works like this:
Let n be the number of control points (which is the number of arguments to this call minus 1). If n==2, a plain vanilla cubic bezier is drawn. If n==1, we fall back to a quadratic segment and if n==0 we draw a straight line. It gets interesting when n>2: n1 PostScriptstyle cubic segments will be drawn as if it were one curve. See decomposeSuperBezierSegment().
The conversion algorithm used for n>2 is inspired by NURB splines, and is conceptually equivalent to the TrueType “implied points” principle. See also decomposeQuadraticSegment().

endPath
()[source]¶ End the current sub path, but don’t close it. You must call either pen.closePath() or pen.endPath() after each sub path.

moveTo
(pt)[source]¶ Begin a new sub path, set the current point to ‘pt’. You must end each sub path with a call to pen.closePath() or pen.endPath().

qCurveTo
(*points)[source]¶ Draw a whole string of quadratic curve segments.
The last point specified is oncurve, all others are offcurve points.
This method implements TrueTypestyle curves, breaking up curves using ‘implied points’: between each two consequtive offcurve points, there is one implied point exactly in the middle between them. See also decomposeQuadraticSegment().
The last argument (normally the oncurve point) may be None. This is to support contours that have NO oncurve points (a rarely seen feature of TrueType outlines).


class
fontTools.pens.cu2quPen.
Cu2QuPointPen
(other_point_pen, max_err, reverse_direction=False, stats=None)[source]¶ A filter pen to convert cubic bezier curves to quadratic bsplines using the RoboFab PointPen protocol.
other_point_pen: another PointPen used to draw the transformed outline. max_err: maximum approximation error in font units. For optimal results,
if you know the UPEM of the font, we recommend setting this to a value equal, or close to UPEM / 1000.
reverse_direction: reverse the winding direction of all contours. stats: a dictionary counting the point numbers of quadratic segments.

addPoint
(pt, segmentType=None, smooth=False, name=None, identifier=None, **kwargs)¶ Add a point to the current sub path.

beginPath
(identifier=None, **kwargs)¶ Start a new sub path.

endPath
()¶ End the current sub path.
