Layer

Note

This section needs to contain the following:

  • description of what this is

  • sub-object with basic usage

  • glyph interaction with basic usage

Overview

Copy

BaseLayer.copy

Copy the layer into a new layer that does not belong to a font. ::.

Parents

BaseLayer.font

The layer's parent BaseFont. ::.

Attributes

BaseLayer.name

The name of the layer. ::.

BaseLayer.color

The layer's color. ::.

Sub-Objects

BaseLayer.lib

The layer's BaseLib object. ::.

BaseLayer.tempLib

The layer's BaseLib object. ::.

Glyphs

BaseLayer.__len__

An int representing number of glyphs in the layer. ::.

BaseLayer.keys

Get a list of all glyphs in the layer. ::.

BaseLayer.__iter__

Iterate through the BaseGlyph objects in the layer. ::.

BaseLayer.__contains__

Test if the layer contains a glyph with name. ::.

BaseLayer.__getitem__

Get the BaseGlyph with name from the layer. ::.

BaseLayer.newGlyph

Make a new glyph with name in the layer. ::.

BaseLayer.insertGlyph

Insert glyph into the layer. ::.

BaseLayer.removeGlyph

Remove the glyph with name from the layer. ::.

Interpolation

BaseLayer.isCompatible

Evaluate interpolation compatibility with other. ::.

BaseLayer.interpolate

Interpolate all possible data in the layer. ::.

Normalization

BaseLayer.round

Round all approriate data to integers. ::.

BaseLayer.autoUnicodes

Use heuristics to set Unicode values in all glyphs. ::.

Environment

BaseLayer.naked

Return the environment's native object that has been wrapped by this object.

BaseLayer.changed

Tell the environment that something has changed in the object.

Reference

class fontParts.base.BaseLayer(*args, **kwargs)[source]

Copy

BaseLayer.copy()[source]

Copy the layer into a new layer that does not belong to a font.

>>> copiedLayer = layer.copy()

This will copy:

  • name

  • color

  • lib

  • glyphs

Parents

BaseLayer.font

The layer’s parent BaseFont.

>>> font = layer.font

Attributes

BaseLayer.name

The name of the layer.

>>> layer.name
"foreground"
>>> layer.name = "top"
BaseLayer.color

The layer’s color.

>>> layer.color
None
>>> layer.color = (1, 0, 0, 0.5)

Sub-Objects

BaseLayer.lib

The layer’s BaseLib object.

>>> layer.lib["org.robofab.hello"]
"world"

Glyphs

BaseLayer.__len__()

An int representing number of glyphs in the layer.

>>> len(layer)
256
BaseLayer.keys()

Get a list of all glyphs in the layer.

>>> layer.keys()
["B", "C", "A"]

The order of the glyphs is undefined.

BaseLayer.__iter__()

Iterate through the BaseGlyph objects in the layer.

>>> for glyph in layer:
...     glyph.name
"A"
"B"
"C"
BaseLayer.__contains__(name)

Test if the layer contains a glyph with name.

>>> "A" in layer
True
BaseLayer.__getitem__(name)

Get the BaseGlyph with name from the layer.

>>> glyph = layer["A"]
BaseLayer.newGlyph(name, clear=True)

Make a new glyph with name in the layer.

>>> glyph = layer.newGlyph("A")

The newly created BaseGlyph will be returned.

If the glyph exists in the layer and clear is set to False, the existing glyph will be returned, otherwise the default behavior is to clear the exisiting glyph.

BaseLayer.insertGlyph(glyph, name=None)

Insert glyph into the layer.

>>> glyph = layer.insertGlyph(otherGlyph, name="A")

This method is deprecated. BaseFont.__setitem__ instead.

BaseLayer.removeGlyph(name)

Remove the glyph with name from the layer.

>>> layer.removeGlyph("A")

This method is deprecated. BaseFont.__delitem__ instead.

Interpolation

BaseLayer.isCompatible(other)[source]

Evaluate interpolation compatibility with other.

>>> compat, report = self.isCompatible(otherLayer)
>>> compat
False
>>> report
A
-
[Fatal] The glyphs do not contain the same number of contours.

This will return a bool indicating if the layer is compatible for interpolation with other and a String of compatibility notes.

BaseLayer.interpolate(factor, minLayer, maxLayer, round=True, suppressError=True)[source]

Interpolate all possible data in the layer.

>>> layer.interpolate(0.5, otherLayer1, otherLayer2)
>>> layer.interpolate((0.5, 2.0), otherLayer1, otherLayer2, round=False)

The interpolation occurs on a 0 to 1.0 range where minLayer is located at 0 and maxLayer is located at 1.0. factor is the interpolation value. It may be less than 0 and greater than 1.0. It may be a Integer/Float or a tuple of two Integer/Float. If it is a tuple, the first number indicates the x factor and the second number indicates the y factor. round indicates if the result should be rounded to integers. suppressError indicates if incompatible data should be ignored or if an error should be raised when such incompatibilities are found.

Normalization

BaseLayer.round()[source]

Round all approriate data to integers.

>>> layer.round()

This is the equivalent of calling the round method on:

  • all glyphs in the layer

BaseLayer.autoUnicodes()[source]

Use heuristics to set Unicode values in all glyphs.

>>> layer.autoUnicodes()

Environments will define their own heuristics for automatically determining values.

Environment

BaseLayer.naked()

Return the environment’s native object that has been wrapped by this object.

>>> loweLevelObj = obj.naked()
BaseLayer.changed(*args, **kwargs)

Tell the environment that something has changed in the object. The behavior of this method will vary from environment to environment.

>>> obj.changed()