typerig.proxy.pens.abstractPen

typerig.proxy.pens.abstractPen (version 0.0.1)

# MODULE: Typerig / Proxy / Pen (Objects)
# -----------------------------------------------------------
# (C) Vassil Kateliev, 2019-2020        (http://www.kateliev.com)
# (C) Karandash Type Foundry            (http://www.karandash.eu)
#------------------------------------------------------------
# www.typerig.com

Modules

  • fontgate
  • fontlab

Classes

class AbstractPen(builtin.object)

AbstractPen as specified by FontTools (fontTools.pens.basePen.py)

Methods

addComponent(self, glyphName, transformation)

Add a sub glyph. The 'transformation' argument must be a 6-tuple
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(self)

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

curveTo(self, *points)

Draw a cubic bezier with an arbitrary number of control points.

The last point specified is on-curve, all others are off-curve
(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:
n-1 PostScript-style 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(self)

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

lineTo(self, pt)

Draw a straight line from the current point to 'pt'.

moveTo(self, pt)

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(self, *points)

Draw a whole string of quadratic curve segments.

The last point specified is on-curve, all others are off-curve
points.

This method implements TrueType-style curves, breaking up curves
using 'implied points': between each two consequtive off-curve points,
there is one implied point exactly in the middle between them. See
also decomposeQuadraticSegment().

The last argument (normally the on-curve point) may be None.
This is to support contours that have NO on-curve points (a rarely
seen feature of TrueType outlines).

Descriptors

dict

dictionary for instance variables (if defined)

weakref

list of weak references to the object (if defined)

class AbstractPointPen(builtin.object)

Baseclass for all PointPens as specified by FontTools (fontTools.pens.pointPen.py)

Methods

addComponent(self, baseGlyphName, transformation, identifier=None, **kwargs)

Add a sub glyph.

addPoint(self, pt, segmentType=None, smooth=False, name=None, identifier=None, **kwargs)

Add a point to the current sub path.

beginPath(self, identifier=None, **kwargs)

Start a new sub path.

endPath(self)

End the current sub path.

Descriptors

dict

dictionary for instance variables (if defined)

weakref

list of weak references to the object (if defined)

AbstractPen

typerig.proxy.pens.abstractPen.AbstractPen = class AbstractPen(__builtin__.object)

AbstractPen as specified by FontTools (fontTools.pens.basePen.py)

Methods

addComponent(self, glyphName, transformation)
Add a sub glyph. The 'transformation' argument must be a 6-tuple
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(self)
Close the current sub path. You must call either pen.closePath()
or pen.endPath() after each sub path.
curveTo(self, *points)
Draw a cubic bezier with an arbitrary number of control points.

The last point specified is on-curve, all others are off-curve
(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:
n-1 PostScript-style 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(self)
End the current sub path, but don't close it. You must call
either pen.closePath() or pen.endPath() after each sub path.
lineTo(self, pt)
Draw a straight line from the current point to 'pt'.
moveTo(self, pt)
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(self, *points)
Draw a whole string of quadratic curve segments.

The last point specified is on-curve, all others are off-curve
points.

This method implements TrueType-style curves, breaking up curves
using 'implied points': between each two consequtive off-curve points,
there is one implied point exactly in the middle between them. See
also decomposeQuadraticSegment().

The last argument (normally the on-curve point) may be None.
This is to support contours that have NO on-curve points (a rarely
seen feature of TrueType outlines).

Descriptors

__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

moveTo

typerig.proxy.pens.abstractPen.AbstractPen.moveTo = moveTo(self, pt) unbound typerig.proxy.pens.abstractPen.AbstractPen method
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().

lineTo

typerig.proxy.pens.abstractPen.AbstractPen.lineTo = lineTo(self, pt) unbound typerig.proxy.pens.abstractPen.AbstractPen method
Draw a straight line from the current point to 'pt'.

curveTo

typerig.proxy.pens.abstractPen.AbstractPen.curveTo = curveTo(self, *points) unbound typerig.proxy.pens.abstractPen.AbstractPen method
Draw a cubic bezier with an arbitrary number of control points.

The last point specified is on-curve, all others are off-curve
(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:
n-1 PostScript-style 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().

qCurveTo

typerig.proxy.pens.abstractPen.AbstractPen.qCurveTo = qCurveTo(self, *points) unbound typerig.proxy.pens.abstractPen.AbstractPen method
Draw a whole string of quadratic curve segments.

The last point specified is on-curve, all others are off-curve
points.

This method implements TrueType-style curves, breaking up curves
using 'implied points': between each two consequtive off-curve points,
there is one implied point exactly in the middle between them. See
also decomposeQuadraticSegment().

The last argument (normally the on-curve point) may be None.
This is to support contours that have NO on-curve points (a rarely
seen feature of TrueType outlines).

closePath

typerig.proxy.pens.abstractPen.AbstractPen.closePath = closePath(self) unbound typerig.proxy.pens.abstractPen.AbstractPen method
Close the current sub path. You must call either pen.closePath()
or pen.endPath() after each sub path.

endPath

typerig.proxy.pens.abstractPen.AbstractPen.endPath = endPath(self) unbound typerig.proxy.pens.abstractPen.AbstractPen method
End the current sub path, but don't close it. You must call
either pen.closePath() or pen.endPath() after each sub path.

addComponent

typerig.proxy.pens.abstractPen.AbstractPen.addComponent = addComponent(self, glyphName, transformation) unbound typerig.proxy.pens.abstractPen.AbstractPen method
Add a sub glyph. The 'transformation' argument must be a 6-tuple
containing an affine transformation, or a Transform object from the
fontTools.misc.transform module. More precisely: it should be a
sequence containing 6 numbers.

AbstractPointPen

typerig.proxy.pens.abstractPen.AbstractPointPen = class AbstractPointPen(__builtin__.object)

Baseclass for all PointPens as specified by FontTools (fontTools.pens.pointPen.py)

Methods

addComponent(self, baseGlyphName, transformation, identifier=None, **kwargs)
Add a sub glyph.
addPoint(self, pt, segmentType=None, smooth=False, name=None, identifier=None, **kwargs)
Add a point to the current sub path.
beginPath(self, identifier=None, **kwargs)
Start a new sub path.
endPath(self)
End the current sub path.

Descriptors

__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

beginPath

typerig.proxy.pens.abstractPen.AbstractPointPen.beginPath = beginPath(self, identifier=None, **kwargs) unbound typerig.proxy.pens.abstractPen.AbstractPointPen method
Start a new sub path.

endPath

typerig.proxy.pens.abstractPen.AbstractPointPen.endPath = endPath(self) unbound typerig.proxy.pens.abstractPen.AbstractPointPen method
End the current sub path.

addPoint

typerig.proxy.pens.abstractPen.AbstractPointPen.addPoint = addPoint(self, pt, segmentType=None, smooth=False, name=None, identifier=None, **kwargs) unbound typerig.proxy.pens.abstractPen.AbstractPointPen method
Add a point to the current sub path.

addComponent

typerig.proxy.pens.abstractPen.AbstractPointPen.addComponent = addComponent(self, baseGlyphName, transformation, identifier=None, **kwargs) unbound typerig.proxy.pens.abstractPen.AbstractPointPen method
Add a sub glyph.