mirror of
https://github.com/rsms/inter.git
synced 2024-11-27 09:49:07 +03:00
56 lines
1.5 KiB
Python
56 lines
1.5 KiB
Python
# Helper for making variants of a glyph.
|
|
#
|
|
# e.g. we have 10 glyphs based on "I" and we now want to
|
|
# create an alternate "I" called "I.1".
|
|
#
|
|
# 1. We first make our I.1 manually
|
|
# 2. Next we generate all other glyphs:
|
|
# Idieresisacute=Idieresisacute.1
|
|
# Istroke=Istroke.1
|
|
# Itildebelow=Itildebelow.1
|
|
# Igrave=Igrave.1
|
|
# Iacute=Iacute.1
|
|
# Icircumflex=Icircumflex.1
|
|
# Itilde=Itilde.1
|
|
# Imacron=Imacron.1
|
|
# Ibreve=Ibreve.1
|
|
# Iogonek=Iogonek.1
|
|
# Which we paset into the "create glyphs" window
|
|
# 3. We now have 10 new glyphs.
|
|
# 4. Select all those new glyphs
|
|
# 5. Open the macro window
|
|
# 6. Paste this script and modify `prevcn` and `newcn`
|
|
# 7. Run it
|
|
#
|
|
prevcn = "I" # component to find and replace
|
|
newcn = "I.1" # replacement component
|
|
|
|
font = Glyphs.font
|
|
font.disableUpdateInterface()
|
|
try:
|
|
for layer in font.selectedLayers:
|
|
g = None
|
|
if isinstance(layer, GSGlyph):
|
|
g = layer
|
|
else:
|
|
g = layer.parent
|
|
print(g)
|
|
g.beginUndo()
|
|
try:
|
|
for master in font.masters:
|
|
layer = g.layers[master.id]
|
|
print(layer)
|
|
if len(layer.components) != 1:
|
|
print("not a single component %s" % layer)
|
|
continue
|
|
layer.components[0].decompose()
|
|
for c in layer.components:
|
|
if c.name == prevcn:
|
|
print("replace %s with %s" % (prevcn, newcn))
|
|
c.name = newcn
|
|
finally:
|
|
g.endUndo()
|
|
finally:
|
|
font.enableUpdateInterface()
|
|
|