Compositor Usage Reference

This document covers the basic usage of the compositor package. For more detailed information read the documentation strings in the source.

Asumptions

Some assumptions about the OpenType fonts being used are made by the package:

The Font Object

Importing

from compositor import Font

Construction

font = Font(path)

path A path to an OpenType font.

Special Behavior

glyph = font["aGlyphName"]

Returns the glyph object named “aGlyphName”. This will raise a KeyError if “aGlyphName” is not in the font.

isThere = "aGlyphName" in font

Returns a boolean representing if “aGlyphName” is in the font.

Methods

font.keys()

A list of all glyph names in the font.

glyphRecords = font.process(aString)

This is the most important method. It takes a string (Unicode or plain ASCII) and processes it with the features defined in the font’s GSUB and GPOS tables. A list of GlyphRecord objects will be returned.

featureTags = font.getFeatureList()

A list of all available features in GSUB and GPOS.

state = font.getFeatureState(featureTag)

Get a boolean representing if a feature is on or not. This assumes that the feature state is consistent in both the GSUB and GPOS tables. A CompositorError will be raised if the feature is inconsistently applied. A CompositorError will be raised if featureTag is not defined in GSUB or GPOS.

font.setFeatureState(self, featureTag, state)

Set the application state of a feature.

Attributes

info The Info object for the font.

The GlyphRecord Object

Attributes

glyphName The name of the referenced glyph.

xPlacement Horizontal placement.

yPlacement Vertical placement.

xAdvance Horizontal adjustment for advance.

yAdvance Vertical adjustment for advance.

alternates A list of GlyphRecords indicating alternates for the glyph.

The Glyph Object

Methods

glyph.draw(pen)

Draws the glyph with a FontTools pen.

Attributes

name The name of the glyph.

index The glyph’s index within the source font.

width The width of the glyph.

bounds The bounding box for the glyph. Formatted as (xMin, yMin, xMax, yMax). If the glyph contains no outlines, this will return None.

The Info Object

Attributes

familyName

styleName

unitsPerEm

ascender

descender