Using the lib¶
The lib is very much like a plain dictionary: you use keys to store stuff in it. The nice thing about them is that they save their contents in the font and are available (after the font is saved) to scripts the next time you open the file again. In FontLab the libs (because there are several) are stored in the .vfb
source. In UFO-based fonts the font.libs
end up in their own, XML based .plist
files, inside th UFO package. The Glyph.libs
end up in the .glif
files.
Which lib?¶
Sometimes it is handy to store values directly in the font that needs them. Rather than saving something in a seperate file (which could easily get lost), you can store data like this in the lib. A RFont
has a lib and each single RGlyph
has a lib as well. RoboFog users might remember the various applications. It is likely that stuff will collect in the font and glyph libs, so it is wise to pay some attention to naming the entries. If you use undescriptive or generic names like a
or mydata
, there’s a chance that another script will overwrite the data. So the RoboFab developers propose to use the ‘reverse domain name scheme’ which works out something like this:
# storing something that belongs to a letterror script
aFont.lib['com.letterror.develop.markers']
# storing something that belongs to a aFoundry script
aFont.lib['com.aFoundry.bud.notes']
The lib is a flat dictionary. For RoboFog users: the RoboFog lib was nested and tried to be very clever. Unfortunately it meant that sometimes data would get lost in confusing situations. A flat dictionary solves that.
Note
In FontLab version 4.5 and 4.6 there’s a nasty bug which causes FontLab to crash after something has been added to the font.customdata
or glyph.customdata
fields. Unfortunately these fields were used to store the robofab.font.lib
and robofab.glyph.lib
data. We hope future versions of FontLab will address this. In UFO files the libs for font and glyphs work fine.
aFont.lib¶
# robofab manual
# Usethelib howto
# aFont.lib examples
anyGlyph.lib¶
# robofab manual
# Usethelib howto
# anyGlyph.lib examples