This page gives an overview of the different ways to get a glyph object.

Asking a font for a glyph

A font works behaves like a dictionary, with glyph names as keys and glyph objects as values. If we have a font object, we can ask it for one of its glyphs by name:

font = CurrentFont()
glyph = font['A']
print(glyph)
<RGlyph at 4724219600>

Adding a glyph to a font

We can also ask a font to create a new glyph with a given name:

f.newGlyph('hello')

If a glyph with this name already exists in the font, it will be overwritten.

CurrentGlyph

As with CurrentFont, we can get the glyph which is currently open in the Glyph Window:

glyph = CurrentGlyph()
print(glyph)
<RGlyph at 4663441680>
  • If several Glyph Windows are open, CurrentGlyph will return the one at the top.
  • If no Glyph Window is open:
    • If one glyph is selected in the Font Overview, that glyph will be returned.
    • If no glyph or several glyphs are selected in the Font Overview, None will be returned.

RGlyph

The RGlyph object can be used to create a new ‘orphan’ glyph which does not belong to any font. This can be useful as an intermediate step in a transformation, for example. When we’re done, we can insert the glyph into a font using font.insertGlyph.

# create a new orphan glyph
glyph = RGlyph()

# do something to the glyph...

# insert the into a font
font.insertGlyph(glyph, name='hi')

Getting selected glyphs

If a font is open in the inteface, we can select one or more glyphs in the Font Overview. We can get the selected glyphs as a list of glyph names, or as a list of glyph objects.

f = CurrentFont()

# get selected glyphs as glyph objects
for glyph in f.selectedGlyphs:
    print(glyph)
<RGlyph 'a' ('foreground') at 4705008216>
<RGlyph 'c' ('foreground') at 5186352520>
<RGlyph 'd' ('foreground') at 5186352128>
<RGlyph 'b' ('foreground') at 5186353024>
# get selected glyphs as glyph names
for glyph in f.selectedGlyphNames:
    print(glyph)
a
b
c
d

Getting all glyphs in a font

If we need to access all glyphs in the order in which they appear in a font, we can use the glyphOrder attribute to get a list of glyph names:

f = CurrentFont()

for glyphName in f.glyphOrder:
    print(glyphName)
space
A
Agrave
Aacute
Acircumflex
Atilde
Adieresis
...

Getting template glyphs

Template glyphs are placeholders for creating new glyphs in the Font Overview. There are a few ways to access them from a script:

font.templateGlyphOrder
Returns the font’s glyph order including template glyphs.
font.templateGlyphs
Returns all template glyphs in the font as a list of glyph objects.
font.templateSelectedGlyphNames
Returns the names of all selected glyphs in the font including template glyphs.
Last edited on 28/01/2019