Skip to content

# `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

- builtin.object
- - AbstractPen
  - AbstractPointPen

## 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.