fonttools/Scripts/RoboFabIntro/intro_Groups.py
Erik van Blokland 617945dcf1 The scripts folder for FontLab as they shipped with Fab 1.1.1.
git-svn-id: http://svn.robofab.com/trunk@22 b5fa9d6c-a76f-4ffd-b3cb-f825fc41095c
2008-01-16 08:14:00 +00:00

89 lines
2.6 KiB
Python

#FLM: RoboFab Intro, Font Groups
#
#
# demo of RoboFab font groups
#
#
# RoboFab font objects have several objects associated with them
# kerning, info, groups, etc. Let's talk about groups. Groups are,
# well groups of glyph names. These can be useful for lots of things
# like kerning and OpenType features. The number of uses for
# groups is only limited by your imagination. Enough of this
# silly pep talk. Let's check it out.
from robofab.world import CurrentFont
# gString has lots of glyph lists, these two will be useful for this demo
from robofab.gString import uppercase_plain, lowercase_plain
# (you will need t have a font open in FontLab for this demo)
font = CurrentFont()
# First off, let's gather up some glyph names.
# gString's uppercase_plain and lowercase_plain
# lists will do for now. Let's go through these lists
# and see if they contain any glyphs that are in this font.
uppercase = []
lowercase = []
for glyphName in uppercase_plain:
if font.has_key(glyphName):
uppercase.append(glyphName)
for glyphName in lowercase_plain:
if font.has_key(glyphName):
lowercase.append(glyphName)
uppercase.sort()
lowercase.sort()
# And, we'll combine the uppercase glyph names and
# lowercase glyph names that we found into one list
both = uppercase + lowercase
both.sort()
# Just for kicks, let's get the list of glyphs
# that you have selected in the font window as well
selected = font.selection
# Ok, now that we have these lists, what do we do with them?
# Well, we'll store them in font.groups. That object is
# essentially a dictionary that has a few special tricks.
# The dictionary is keyed by the name of the group, and
# the value is the list of the glyphs. Pretty simple.
# Now, let's store these lists away.
groups = font.groups
groups['uppercase'] = uppercase
groups['lowercase'] = lowercase
groups['uppercaseAndLowercase'] = both
groups['selected'] = both
font.update()
# In FontLab the group info is visible in the classes panel.
# if you look there now, you'll (hopefully) see these new
# groups. Wow! Exciting! Amazing! But, what if you want to
# get these lists back? Easy:
groups = font.groups
print 'uppercase:'
print groups['uppercase']
print
print 'lowercase:'
print groups['lowercase']
print
print 'upper and lowercase:'
print groups['uppercaseAndLowercase']
print
print 'selected:'
print groups['selected']
print
# You can even search the groups for the names of groups
# that contain a certain glyph name. It works like this:
groups = font.groups
found = groups.findGlyph('a')
print '"a" is in these groups: %s'%str(found)
# Oh yeah, don't forget to update the font.
font.update()
# Super easy, huh? Now get to it!