Hello!
Type design applications automatically generate features based on character suffixes. But sometimes it is necessary to write something custom like a lookup for a stylistic set, and I wrote an automation where you can insert a list of character names, set the suffix you need, and generate a substitution code, as well as wrap characters into classes, reverse the direction of substitution, capitalize or decapitalize, or just sort the list (alphabetically but logically grouped).
Suggestions for improvement are welcome.
Suffix Automator in action.
Project page on GitHub with feature explanation.
Comments
In Action: https://michaelrafailyk.github.io/suffix-automator/
On GitHub: https://github.com/michaelrafailyk/suffix-automator
sub germandbls by Germandbls.alt;
sub ae by AE.alt;
sub germandbls by uni1E9E.alt;
'Aring':'aring',
'uni0216':'uni0217',
'Ograve':'ograve',
'Uring':'uring',
'Edieresis':'edieresis',
'Obreve':'obreve',
'Ccedilla':'ccedilla',
'uni020A':'uni020B',
'Kcommaaccent':'kcommaaccent',
'Zdotaccent':'zdotaccent',
'Hcircumflex':'hcircumflex',
'Otilde':'otilde',
'Ccaron':'ccaron',
'Gcircumflex':'gcircumflex',
'Oslash':'oslash',
'Ecircumflex':'ecircumflex',
'Uacute':'uacute',
'Cacute':'cacute',
'Gcaron':'gcaron',
'Ccircumflex':'ccircumflex',
'Dcroat':'dcroat',
'Ecaron':'ecaron',
'Omacron':'omacron',
'D':'d',
'uni0208':'uni0209',
'Lcaron':'lcaron',
'uni0206':'uni0207',
'H':'h',
'uni0204':'uni0205',
'F':'f',
'Ydieresis':'ydieresis',
'L':'l',
'uni0200':'uni0201',
'Amacron':'amacron',
'P':'p',
'T':'t',
'X':'x',
'Aogonek':'aogonek',
'Udieresis':'udieresis',
'uni01F8':'uni01F9',
'Scircumflex':'scircumflex',
'uni0202':'uni0203',
'Rcaron':'rcaron',
'Agrave':'agrave',
'Jcircumflex':'jcircumflex',
'Umacron':'umacron',
'Edotaccent':'edotaccent',
'uni022E':'uni022F',
'Egrave':'egrave',
'Eogonek':'eogonek',
'uni0214':'uni0215',
'Utilde':'utilde',
'uni0210':'uni0211',
'uni0212':'uni0213',
'Ntilde':'ntilde',
'Ucircumflex':'ucircumflex',
'Atilde':'atilde',
'Sacute':'sacute',
'Gcommaaccent':'gcommaaccent',
'Ncommaaccent':'ncommaaccent',
'Gbreve':'gbreve',
'Zcaron':'zcaron',
'Odieresis':'odieresis',
'Scommaaccent':'scommaaccent',
'Ebreve':'ebreve',
'Acircumflex':'acircumflex',
'uni021E':'uni021F',
'uni021A':'uni021B',
'uni0228':'uni0229',
'Oslashacute':'oslashacute',
'C':'c',
'G':'g',
'Imacron':'imacron',
'Rcommaaccent':'rcommaaccent',
'K':'k',
'O':'o',
'S':'s',
'W':'w',
'Eth':'eth',
'Hbar':'hbar',
'Uhungarumlaut':'uhungarumlaut',
'Ocircumflex':'ocircumflex',
'Igrave':'igrave',
'Zacute':'zacute',
'uni020E':'uni020F',
'uni0232':'uni0233',
'AE':'ae',
'Dcaron':'dcaron',
'Uogonek':'uogonek',
'Lslash':'lslash',
'Scaron':'scaron',
'Ycircumflex':'ycircumflex',
'uni01CD':'uni01CE',
'Iacute':'iacute',
'AEacute':'aeacute',
'uni020C':'uni020D',
'uni1E9E':'germandbls',
'B':'b',
'Iogonek':'iogonek',
'J':'j',
'N':'n',
'R':'r',
'V':'v',
'Z':'z',
'Idieresis':'idieresis',
'OE':'oe',
'Tcaron':'tcaron',
'Nacute':'nacute',
'Lcommaaccent':'lcommaaccent',
'Ugrave':'ugrave',
'uni0226':'uni0227',
'Abreve':'abreve',
'Racute':'racute',
'Itilde':'itilde',
'uni01E8':'uni01E9',
'Yacute':'yacute',
'Lacute':'lacute',
'Ibreve':'ibreve',
'uni01E2':'uni01E3',
'Ubreve':'ubreve',
'Gdotaccent':'gdotaccent',
'Adieresis':'adieresis',
'Ohungarumlaut':'ohungarumlaut',
'uni01EA':'uni01EB',
'Cdotaccent':'cdotaccent',
'Scedilla':'scedilla',
'Aacute':'aacute',
'uni01EC':'uni01ED',
'Icircumflex':'icircumflex',
'uni01CF':'uni01D0',
'Emacron':'emacron',
'Eacute':'eacute',
'A':'a',
'Wcircumflex':'wcircumflex',
'E':'e',
'I':'i',
'M':'m',
'Tcedilla':'tcedilla',
'Tbar':'tbar',
'Q':'q',
'U':'u',
'Y':'y',
'Ncaron':'ncaron',
'uni01D1':'uni01D2',
'uni01D3':'uni01D4',
'Oacute':'oacute',
'Thorn':'thorn',
'Wgrave':'wgrave',
'Wacute':'wacute',
'Wdieresis':'wdieresis',
'uni1E86':'uni1E87',
'uni1E8E':'uni1E8F',
'uni1EBC':'uni1EBD',
'Ygrave':'ygrave',
'uni1EF8':'uni1EF9',
'uni01F4':'uni01F5',
'Ldot':'ldot',
'IJ':'ij',
'Tcommaaccent':'tcommaaccent',
'uni1E88':'uni1E89'
}
Just upload an update. I cover it using exceptions.
If the first two letters of the character name is AE OE IJ NJ (in both lower and upper cases) the first two letters both will be converted.
If the first three letters of the character name is uni or UNI, the conversion doesn't happens.
This is how capitalize and decapitalize now works with exceptions (I marked them with red):
Interesting. It's really a bit more difficult to implement, however it's also possible with a few numeral and alphabetic rules. Not sure if I will implement it, because developers usually use friendly glyph names.
Also, most type design application do it all automatically, covering correct unicode name conversion. So this tool is for some non-standard decisions when type design application can't handle with your non-standard suffix.
Is it some external text feature file that should not contain the friendly/nice names?
I mean, usually applications automatically convert the glyph names to production names at the export.