Initial code commit

* inserted scripts
* changed README
This commit is contained in:
Jan Schilbach
2022-09-22 13:37:46 +02:00
parent 5ca6ff13fa
commit 337dfa050e
77 changed files with 1419532 additions and 81 deletions
+52
View File
@@ -0,0 +1,52 @@
#!/usr/local/bin/fontforge
# $1 => Source-Font
# $2 => Target-Font
# $3 => FullName
# $4 => Weight
# $5 => Family
# $6 => UniqueID
# $7 => Version
# $8 => Copyright
# $9 => Scaling
# $10 => Ascent
# $11 => Decent
Print("Open " + $1);
Open($1);
SetTTFName(0x409, 0, $8) # Copyright
SetTTFName(0x409, 1, $5) # Family
SetTTFName(0x409, 2, $4) # Sub Family-Name
SetTTFName(0x409, 3, $6) # UniqueID
SetTTFName(0x409, 4, $5 + " " + $4) # Fullname
SetTTFName(0x409, 5, "Version " + $7) # Version
SetTTFName(0x409, 16, $5) # Preferred Family
SetTTFName(0x409, 17, $4) # Preferred Sub-Family
SetFontNames($3, $5, $5 + " " + $4, $4, $8, $7)
ClearPrivateEntry('BlueValues')
ClearPrivateEntry('OtherBlues')
ClearPrivateEntry('BlueScale')
ClearPrivateEntry('BlueShift')
ClearPrivateEntry('StdHW')
ClearPrivateEntry('StdVW')
# Em-Values
SelectAll()
ScaleToEm(Strtol($10), Strtol($11))
SelectAll()
Transform(Strtol($9), 0, 0, Strtol($9), 0, 0)
# AUTOHINT
SelectAll()
AutoHint()
Print("Generate " + $2)
Generate($2);
Quit(0);
+30
View File
@@ -0,0 +1,30 @@
#!/usr/local/bin/fontforge
#Take a Latin font and apply some simple transformations to it
#prior to adding cyrillic letters.
#can be run in a non-interactive fontforge session.
# $1 => der Quellfont
# $2 => der Zielfont-Name
# $3 => der Zielfont-Family-Name
# $4 => Der Codepoint an dem die kombinierte Glyphe eingesetzt werden soll
# $5 => Das Basiszeichen für die kombinierte Glyphe
# $6.. => Die Diakritika
Print("Open " + $1);
Open($1);
Print("Select " + ToString(UCodePoint(Strtol(Strsub($4,3), 16))));
Select(UCodePoint(Strtol(Strsub($4,3), 16)));
CopyReference();
Print("Select " + $3);
Select(UCodePoint(Strtol(Strsub($3,3), 16)));
Paste();
SetFontNames($2, $3, $2);
;
i=6
while ( i<$argc )
AddAccent(UCodePoint(Strtol(Strsub($argv[i],3), 16)));
i = i+1
endloop
Print("Generate " + $2 + '.otf')
Generate($2 + '.otf');
Quit(0);
+28
View File
@@ -0,0 +1,28 @@
import fontforge
import sys
source_font = fontforge.open(sys.argv[1])
target_font = fontforge.open(sys.argv[2])
target_font.familyname = sys.argv[3]
target_font.fontname = sys.argv[3]
target_font.fullname = sys.argv[3]
target_glyph = int(sys.argv[4].strip().replace("uni",""),16)
base_source_glyph = int(sys.argv[5].strip().replace("uni",""),16)
target_font.selection.select(("more",None),target_glyph)
source_font.selection.select(("more",None),base_source_glyph)
source_font.copy()
target_font.paste()
for i in sys.argv[6:]:
source_font.selection.select(int(i.strip().replace("uni",""),16))
source_font.copy()
target_font.pasteInto()
target_font.generate(sys.argv[3] + ".otf")
+27
View File
@@ -0,0 +1,27 @@
import fontforge
import sys
with open(sys.argv[1]) as f:
content = f.readlines()
# you may also want to remove whitespace characters like `\n` at the end of each line
content = [int(x.strip().replace("uni",""),16) for x in content]
source_font = fontforge.open(sys.argv[2])
[source_font.selection.select(("more",None),x) for x in content]
if content:
print("Copy")
source_font.copy()
print("Copy")
target_font = fontforge.open(sys.argv[3])
[target_font.selection.select(("more",None),x) for x in content]
if content:
print("Paste")
target_font.paste()
print("Paste")
target_font.familyname = sys.argv[5]
target_font.fontname = sys.argv[4]
target_font.fullname = sys.argv[4]
target_font.generate(sys.argv[4] + ".otf")
+427
View File
@@ -0,0 +1,427 @@
#!/usr/local/bin/fontforge
#
# Soll in einem Font die Namen der verschiedenen Glyphen für Zahlen setzen und die entsprechenden Subtables anpassen
# $1 => der Quellfont
Print("Open " + $1);
Open($1 + '.otf');
lookups = GetLookups("GSUB")
i=0; #semicolon is not needed here, but it's ok
while ( i<SizeOf(lookups) )
if ( Strsub(lookups[i], 1, 5) == 'lnum')
@lnum_lu = lookups[i]
elseif ( Strsub(lookups[i], 1, 5) == 'pnum')
@pnum_lu = lookups[i]
elseif ( Strsub(lookups[i], 1, 5) == 'tnum')
@tnum_lu = lookups[i]
elseif ( Strsub(lookups[i], 1, 5) == 'onum')
@onum_lu = lookups[i]
elseif ( Strsub(lookups[i], 1, 5) == 'numr')
@numr_lu = lookups[i]
elseif ( Strsub(lookups[i], 1, 5) == 'dnom')
@dnom_lu = lookups[i]
endif
++i
endloop
### Die eigentlichen Zahlen sollen proportional sein
### Codepoints F130-F139 enthalten die tabular-Varianten
Select(UCodePoint(Strtol("F130", 16)));
SetGlyphName('zero.tf', 0)
Select(UCodePoint(Strtol("F131", 16)));
SetGlyphName('one.tf', 0)
Select(UCodePoint(Strtol("F132", 16)));
SetGlyphName('two.tf', 0)
Select(UCodePoint(Strtol("F133", 16)));
SetGlyphName('three.tf', 0)
Select(UCodePoint(Strtol("F134", 16)));
SetGlyphName('four.tf', 0)
Select(UCodePoint(Strtol("F135", 16)));
SetGlyphName('five.tf', 0)
Select(UCodePoint(Strtol("F136", 16)));
SetGlyphName('six.tf', 0)
Select(UCodePoint(Strtol("F137", 16)));
SetGlyphName('seven.tf', 0)
Select(UCodePoint(Strtol("F138", 16)));
SetGlyphName('eight.tf', 0)
Select(UCodePoint(Strtol("F139", 16)));
SetGlyphName('nine.tf', 0)
### Codepoints F230-F239 enthalten die old style-Varianten
Select(UCodePoint(Strtol("F230", 16)));
SetGlyphName('zero.osf', 0)
Select(UCodePoint(Strtol("F231", 16)));
SetGlyphName('one.osf', 0)
Select(UCodePoint(Strtol("F232", 16)));
SetGlyphName('two.osf', 0)
Select(UCodePoint(Strtol("F233", 16)));
SetGlyphName('three.osf', 0)
Select(UCodePoint(Strtol("F234", 16)));
SetGlyphName('four.osf', 0)
Select(UCodePoint(Strtol("F235", 16)));
SetGlyphName('five.osf', 0)
Select(UCodePoint(Strtol("F236", 16)));
SetGlyphName('six.osf', 0)
Select(UCodePoint(Strtol("F237", 16)));
SetGlyphName('seven.osf', 0)
Select(UCodePoint(Strtol("F238", 16)));
SetGlyphName('eight.osf', 0)
Select(UCodePoint(Strtol("F239", 16)));
SetGlyphName('nine.osf', 0)
### Codepoints F330-F339 enthalten die tabular old style-Varianten
Select(UCodePoint(Strtol("F330", 16)));
SetGlyphName('zero.tosf', 0)
Select(UCodePoint(Strtol("F331", 16)));
SetGlyphName('one.tosf', 0)
Select(UCodePoint(Strtol("F332", 16)));
SetGlyphName('two.tosf', 0)
Select(UCodePoint(Strtol("F333", 16)));
SetGlyphName('three.tosf', 0)
Select(UCodePoint(Strtol("F334", 16)));
SetGlyphName('four.tosf', 0)
Select(UCodePoint(Strtol("F335", 16)));
SetGlyphName('five.tosf', 0)
Select(UCodePoint(Strtol("F336", 16)));
SetGlyphName('six.tosf', 0)
Select(UCodePoint(Strtol("F337", 16)));
SetGlyphName('seven.tosf', 0)
Select(UCodePoint(Strtol("F338", 16)));
SetGlyphName('eight.tosf', 0)
Select(UCodePoint(Strtol("F339", 16)));
SetGlyphName('nine.tosf', 0)
### Codepoints F430-F439 enthalten die numr-Varianten
Select(UCodePoint(Strtol("F430", 16)));
SetGlyphName('zero.numr', 0)
Select(UCodePoint(Strtol("F431", 16)));
SetGlyphName('one.numr', 0)
Select(UCodePoint(Strtol("F432", 16)));
SetGlyphName('two.numr', 0)
Select(UCodePoint(Strtol("F433", 16)));
SetGlyphName('three.numr', 0)
Select(UCodePoint(Strtol("F434", 16)));
SetGlyphName('four.numr', 0)
Select(UCodePoint(Strtol("F435", 16)));
SetGlyphName('five.numr', 0)
Select(UCodePoint(Strtol("F436", 16)));
SetGlyphName('six.numr', 0)
Select(UCodePoint(Strtol("F437", 16)));
SetGlyphName('seven.numr', 0)
Select(UCodePoint(Strtol("F438", 16)));
SetGlyphName('eight.numr', 0)
Select(UCodePoint(Strtol("F439", 16)));
SetGlyphName('nine.numr', 0)
### Codepoints F530-F539 enthalten die dnom-Varianten
Select(UCodePoint(Strtol("F530", 16)));
SetGlyphName('zero.dnom', 0)
Select(UCodePoint(Strtol("F531", 16)));
SetGlyphName('one.dnom', 0)
Select(UCodePoint(Strtol("F532", 16)));
SetGlyphName('two.dnom', 0)
Select(UCodePoint(Strtol("F533", 16)));
SetGlyphName('three.dnom', 0)
Select(UCodePoint(Strtol("F534", 16)));
SetGlyphName('four.dnom', 0)
Select(UCodePoint(Strtol("F535", 16)));
SetGlyphName('five.dnom', 0)
Select(UCodePoint(Strtol("F536", 16)));
SetGlyphName('six.dnom', 0)
Select(UCodePoint(Strtol("F537", 16)));
SetGlyphName('seven.dnom', 0)
Select(UCodePoint(Strtol("F538", 16)));
SetGlyphName('eight.dnom', 0)
Select(UCodePoint(Strtol("F539", 16)));
SetGlyphName('nine.dnom', 0)
############################ LNUM ####################################
############################ LNUM ####################################
############################ LNUM ####################################
Print(GetLookupSubtables(@lnum_lu))
RemoveLookupSubtable(@lnum_lu + " subtable")
AddLookupSubtable(@lnum_lu, @lnum_lu + " subtable")
Select(UCodePoint(Strtol("F130", 16)));
AddPosSub(@lnum_lu + " subtable", 'zero')
Select(UCodePoint(Strtol("F131", 16)));
AddPosSub(@lnum_lu + " subtable", 'one')
Select(UCodePoint(Strtol("F132", 16)));
AddPosSub(@lnum_lu + " subtable", 'two')
Select(UCodePoint(Strtol("F133", 16)));
AddPosSub(@lnum_lu + " subtable", 'three')
Select(UCodePoint(Strtol("F134", 16)));
AddPosSub(@lnum_lu + " subtable", 'four')
Select(UCodePoint(Strtol("F135", 16)));
AddPosSub(@lnum_lu + " subtable", 'five')
Select(UCodePoint(Strtol("F136", 16)));
AddPosSub(@lnum_lu + " subtable", 'six')
Select(UCodePoint(Strtol("F137", 16)));
AddPosSub(@lnum_lu + " subtable", 'seven')
Select(UCodePoint(Strtol("F138", 16)));
AddPosSub(@lnum_lu + " subtable", 'eight')
Select(UCodePoint(Strtol("F139", 16)));
AddPosSub(@lnum_lu + " subtable", 'nine')
Select(UCodePoint(Strtol("F330", 16)));
AddPosSub(@lnum_lu + " subtable", 'zero.osf')
Select(UCodePoint(Strtol("F331", 16)));
AddPosSub(@lnum_lu + " subtable", 'one.osf')
Select(UCodePoint(Strtol("F332", 16)));
AddPosSub(@lnum_lu + " subtable", 'two.osf')
Select(UCodePoint(Strtol("F333", 16)));
AddPosSub(@lnum_lu + " subtable", 'three.osf')
Select(UCodePoint(Strtol("F334", 16)));
AddPosSub(@lnum_lu + " subtable", 'four.osf')
Select(UCodePoint(Strtol("F335", 16)));
AddPosSub(@lnum_lu + " subtable", 'five.osf')
Select(UCodePoint(Strtol("F336", 16)));
AddPosSub(@lnum_lu + " subtable", 'six.osf')
Select(UCodePoint(Strtol("F337", 16)));
AddPosSub(@lnum_lu + " subtable", 'seven.osf')
Select(UCodePoint(Strtol("F338", 16)));
AddPosSub(@lnum_lu + " subtable", 'eight.osf')
Select(UCodePoint(Strtol("F339", 16)));
AddPosSub(@lnum_lu + " subtable", 'nine.osf')
############################ PNUM ####################################
############################ PNUM ####################################
############################ PNUM ####################################
Print(GetLookupSubtables(@pnum_lu))
RemoveLookupSubtable(@pnum_lu + " subtable")
AddLookupSubtable(@pnum_lu, @pnum_lu + " subtable")
Select(UCodePoint(Strtol("F130", 16)));
AddPosSub(@pnum_lu + " subtable", 'zero')
Select(UCodePoint(Strtol("F131", 16)));
AddPosSub(@pnum_lu + " subtable", 'one')
Select(UCodePoint(Strtol("F132", 16)));
AddPosSub(@pnum_lu + " subtable", 'two')
Select(UCodePoint(Strtol("F133", 16)));
AddPosSub(@pnum_lu + " subtable", 'three')
Select(UCodePoint(Strtol("F134", 16)));
AddPosSub(@pnum_lu + " subtable", 'four')
Select(UCodePoint(Strtol("F135", 16)));
AddPosSub(@pnum_lu + " subtable", 'five')
Select(UCodePoint(Strtol("F136", 16)));
AddPosSub(@pnum_lu + " subtable", 'six')
Select(UCodePoint(Strtol("F137", 16)));
AddPosSub(@pnum_lu + " subtable", 'seven')
Select(UCodePoint(Strtol("F138", 16)));
AddPosSub(@pnum_lu + " subtable", 'eight')
Select(UCodePoint(Strtol("F139", 16)));
AddPosSub(@pnum_lu + " subtable", 'nine')
Select(UCodePoint(Strtol("F330", 16)));
AddPosSub(@pnum_lu + " subtable", 'zero.osf')
Select(UCodePoint(Strtol("F331", 16)));
AddPosSub(@pnum_lu + " subtable", 'one.osf')
Select(UCodePoint(Strtol("F332", 16)));
AddPosSub(@pnum_lu + " subtable", 'two.osf')
Select(UCodePoint(Strtol("F333", 16)));
AddPosSub(@pnum_lu + " subtable", 'three.osf')
Select(UCodePoint(Strtol("F334", 16)));
AddPosSub(@pnum_lu + " subtable", 'four.osf')
Select(UCodePoint(Strtol("F335", 16)));
AddPosSub(@pnum_lu + " subtable", 'five.osf')
Select(UCodePoint(Strtol("F336", 16)));
AddPosSub(@pnum_lu + " subtable", 'six.osf')
Select(UCodePoint(Strtol("F337", 16)));
AddPosSub(@pnum_lu + " subtable", 'seven.osf')
Select(UCodePoint(Strtol("F338", 16)));
AddPosSub(@pnum_lu + " subtable", 'eight.osf')
Select(UCodePoint(Strtol("F339", 16)));
AddPosSub(@pnum_lu + " subtable", 'nine.osf')
############################ TNUM ####################################
############################ TNUM ####################################
############################ TNUM ####################################
Print(GetLookupSubtables(@tnum_lu))
RemoveLookupSubtable(@tnum_lu + " subtable")
AddLookupSubtable(@tnum_lu, @tnum_lu + " subtable")
Select(UCodePoint(Strtol("0030", 16)));
AddPosSub(@tnum_lu + " subtable", 'zero.tf')
Select(UCodePoint(Strtol("0031", 16)));
AddPosSub(@tnum_lu + " subtable", 'one.tf')
Select(UCodePoint(Strtol("0032", 16)));
AddPosSub(@tnum_lu + " subtable", 'two.tf')
Select(UCodePoint(Strtol("0033", 16)));
AddPosSub(@tnum_lu + " subtable", 'three.tf')
Select(UCodePoint(Strtol("0034", 16)));
AddPosSub(@tnum_lu + " subtable", 'four.tf')
Select(UCodePoint(Strtol("0035", 16)));
AddPosSub(@tnum_lu + " subtable", 'five.tf')
Select(UCodePoint(Strtol("0036", 16)));
AddPosSub(@tnum_lu + " subtable", 'six.tf')
Select(UCodePoint(Strtol("0037", 16)));
AddPosSub(@tnum_lu + " subtable", 'seven.tf')
Select(UCodePoint(Strtol("0038", 16)));
AddPosSub(@tnum_lu + " subtable", 'eight.tf')
Select(UCodePoint(Strtol("0039", 16)));
AddPosSub(@tnum_lu + " subtable", 'nine.tf')
Select(UCodePoint(Strtol("F230", 16)));
AddPosSub(@tnum_lu + " subtable", 'zero.tosf')
Select(UCodePoint(Strtol("F231", 16)));
AddPosSub(@tnum_lu + " subtable", 'one.tosf')
Select(UCodePoint(Strtol("F232", 16)));
AddPosSub(@tnum_lu + " subtable", 'two.tosf')
Select(UCodePoint(Strtol("F233", 16)));
AddPosSub(@tnum_lu + " subtable", 'three.tosf')
Select(UCodePoint(Strtol("F234", 16)));
AddPosSub(@tnum_lu + " subtable", 'four.tosf')
Select(UCodePoint(Strtol("F235", 16)));
AddPosSub(@tnum_lu + " subtable", 'five.tosf')
Select(UCodePoint(Strtol("F236", 16)));
AddPosSub(@tnum_lu + " subtable", 'six.tosf')
Select(UCodePoint(Strtol("F237", 16)));
AddPosSub(@tnum_lu + " subtable", 'seven.tosf')
Select(UCodePoint(Strtol("F238", 16)));
AddPosSub(@tnum_lu + " subtable", 'eight.tosf')
Select(UCodePoint(Strtol("F239", 16)));
AddPosSub(@tnum_lu + " subtable", 'nine.tosf')
############################ ONUM ####################################
############################ ONUM ####################################
############################ ONUM ####################################
Print(GetLookupSubtables(@onum_lu))
RemoveLookupSubtable(@onum_lu + " subtable")
AddLookupSubtable(@onum_lu, @onum_lu + " subtable")
Select(UCodePoint(Strtol("0030", 16)));
AddPosSub(@onum_lu + " subtable", 'zero.osf')
Select(UCodePoint(Strtol("0031", 16)));
AddPosSub(@onum_lu + " subtable", 'one.osf')
Select(UCodePoint(Strtol("0032", 16)));
AddPosSub(@onum_lu + " subtable", 'two.osf')
Select(UCodePoint(Strtol("0033", 16)));
AddPosSub(@onum_lu + " subtable", 'three.osf')
Select(UCodePoint(Strtol("0034", 16)));
AddPosSub(@onum_lu + " subtable", 'four.osf')
Select(UCodePoint(Strtol("0035", 16)));
AddPosSub(@onum_lu + " subtable", 'five.osf')
Select(UCodePoint(Strtol("0036", 16)));
AddPosSub(@onum_lu + " subtable", 'six.osf')
Select(UCodePoint(Strtol("0037", 16)));
AddPosSub(@onum_lu + " subtable", 'seven.osf')
Select(UCodePoint(Strtol("0038", 16)));
AddPosSub(@onum_lu + " subtable", 'eight.osf')
Select(UCodePoint(Strtol("0039", 16)));
AddPosSub(@onum_lu + " subtable", 'nine.osf')
Select(UCodePoint(Strtol("F130", 16)));
AddPosSub(@onum_lu + " subtable", 'zero.tosf')
Select(UCodePoint(Strtol("F131", 16)));
AddPosSub(@onum_lu + " subtable", 'one.tosf')
Select(UCodePoint(Strtol("F132", 16)));
AddPosSub(@onum_lu + " subtable", 'two.tosf')
Select(UCodePoint(Strtol("F133", 16)));
AddPosSub(@onum_lu + " subtable", 'three.tosf')
Select(UCodePoint(Strtol("F134", 16)));
AddPosSub(@onum_lu + " subtable", 'four.tosf')
Select(UCodePoint(Strtol("F135", 16)));
AddPosSub(@onum_lu + " subtable", 'five.tosf')
Select(UCodePoint(Strtol("F136", 16)));
AddPosSub(@onum_lu + " subtable", 'six.tosf')
Select(UCodePoint(Strtol("F137", 16)));
AddPosSub(@onum_lu + " subtable", 'seven.tosf')
Select(UCodePoint(Strtol("F138", 16)));
AddPosSub(@onum_lu + " subtable", 'eight.tosf')
Select(UCodePoint(Strtol("F139", 16)));
AddPosSub(@onum_lu + " subtable", 'nine.tosf')
############################ NUMR ####################################
############################ NUMR ####################################
############################ NUMR ####################################
Print(GetLookupSubtables(@numr_lu))
RemoveLookupSubtable(@numr_lu + " subtable")
AddLookupSubtable(@numr_lu, @numr_lu + " subtable")
Select(UCodePoint(Strtol("0030", 16)));
AddPosSub(@numr_lu + " subtable", 'zero.numr')
Select(UCodePoint(Strtol("0031", 16)));
AddPosSub(@numr_lu + " subtable", 'one.numr')
Select(UCodePoint(Strtol("0032", 16)));
AddPosSub(@numr_lu + " subtable", 'two.numr')
Select(UCodePoint(Strtol("0033", 16)));
AddPosSub(@numr_lu + " subtable", 'three.numr')
Select(UCodePoint(Strtol("0034", 16)));
AddPosSub(@numr_lu + " subtable", 'four.numr')
Select(UCodePoint(Strtol("0035", 16)));
AddPosSub(@numr_lu + " subtable", 'five.numr')
Select(UCodePoint(Strtol("0036", 16)));
AddPosSub(@numr_lu + " subtable", 'six.numr')
Select(UCodePoint(Strtol("0037", 16)));
AddPosSub(@numr_lu + " subtable", 'seven.numr')
Select(UCodePoint(Strtol("0038", 16)));
AddPosSub(@numr_lu + " subtable", 'eight.numr')
Select(UCodePoint(Strtol("0039", 16)));
AddPosSub(@numr_lu + " subtable", 'nine.numr')
############################ DNOM ####################################
############################ DNOM ####################################
############################ DNOM ####################################
Print(GetLookupSubtables(@dnom_lu))
RemoveLookupSubtable(@dnom_lu + " subtable")
AddLookupSubtable(@dnom_lu, @dnom_lu + " subtable")
Select(UCodePoint(Strtol("0030", 16)));
AddPosSub(@dnom_lu + " subtable", 'zero.dnom')
Select(UCodePoint(Strtol("0031", 16)));
AddPosSub(@dnom_lu + " subtable", 'one.dnom')
Select(UCodePoint(Strtol("0032", 16)));
AddPosSub(@dnom_lu + " subtable", 'two.dnom')
Select(UCodePoint(Strtol("0033", 16)));
AddPosSub(@dnom_lu + " subtable", 'three.dnom')
Select(UCodePoint(Strtol("0034", 16)));
AddPosSub(@dnom_lu + " subtable", 'four.dnom')
Select(UCodePoint(Strtol("0035", 16)));
AddPosSub(@dnom_lu + " subtable", 'five.dnom')
Select(UCodePoint(Strtol("0036", 16)));
AddPosSub(@dnom_lu + " subtable", 'six.dnom')
Select(UCodePoint(Strtol("0037", 16)));
AddPosSub(@dnom_lu + " subtable", 'seven.dnom')
Select(UCodePoint(Strtol("0038", 16)));
AddPosSub(@dnom_lu + " subtable", 'eight.dnom')
Select(UCodePoint(Strtol("0039", 16)));
AddPosSub(@dnom_lu + " subtable", 'nine.dnom')
Print("Generate " + $1 + '-edited.otf')
Generate($1 + '-edited.otf');
Quit(0);