### Now to load glyph number vs proper glyph names for expert fonts. @glyphexptable=( "32 space", "33 exclamsmall", "34 Hungarumlautsmall", "36 dollaroldstyle", "37 dollarsuperior", "38 ampersandsmall", "39 Acutesmall", "40 parenleftsuperior", "41 parenrightsuperior", "42 twodotenleader", "43 onedotenleader", "44 comma", "45 hyphen", "46 period", "47 fraction", "48 zerooldstyle", "49 oneoldstyle", "50 twooldstyle", "51 threeoldstyle", "52 fouroldstyle", "53 fiveoldstyle", "54 sixoldstyle", "55 sevenoldstyle", "56 eightoldstyle", "57 nineoldstyle", "58 colon", "59 semicolon", "60 commasuperior", "61 threequartersemdash", "62 periodsuperior", "63 questionsmall", "65 asuperior", "66 bsuperior", "67 centsuperior", "68 dsuperior", "69 esuperior", "73 isuperior", "76 lsuperior", "77 msuperior", "78 nsuperior", "79 osuperior", "82 rsuperior", "83 ssuperior", "84 tsuperior", "86 ff", "87 fi", "88 fl", "89 ffi", "90 ffl", "91 parenleftinferior", "93 parenrightinferior", "94 Circumflexsmall", "95 hyphensuperior", "96 Gravesmall", "97 Asmall", "98 Bsmall", "99 Csmall", "100 Dsmall", "101 Esmall", "102 Fsmall", "103 Gsmall", "104 Hsmall", "105 Ismall", "106 Jsmall", "107 Ksmall", "108 Lsmall", "109 Msmall", "110 Nsmall", "111 Osmall", "112 Psmall", "113 Qsmall", "114 Rsmall", "115 Ssmall", "116 Tsmall", "117 Usmall", "118 Vsmall", "119 Wsmall", "120 Xsmall", "121 Ysmall", "122 Zsmall", "123 colonmonetary", "124 onefitted", "125 rupiah", "126 Tildesmall", "161 exclamdownsmall", "162 centoldstyle", "163 Lslashsmall", "166 Scaronsmall", "167 Zcaronsmall", "168 Dieresissmall", "169 Brevesmall", "170 Caronsmall", "172 Dotaccentsmall", "175 Macronsmall", "178 figuredash", "179 hypheninferior", "182 Ogoneksmall", "183 Ringsmall", "184 Cedillasmall", "188 onequarter", "189 onehalf", "190 threequarters", "191 questiondownsmall", "192 oneeighth", "193 threeeighths", "194 fiveeighths", "195 seveneighths", "196 onethird", "197 twothirds", "200 zerosuperior", "201 onesuperior", "202 twosuperior", "203 threesuperior", "204 foursuperior", "205 fivesuperior", "206 sixsuperior", "207 sevensuperior", "208 eightsuperior", "209 ninesuperior", "210 zeroinferior", "211 oneinferior", "212 twoinferior", "213 threeinferior", "214 fourinferior", "215 fiveinferior", "216 sixinferior", "217 seveninferior", "218 eightinferior", "219 nineinferior", "220 centinferior", "221 dollarinferior", "222 periodinferior", "223 commainferior", "224 Agravesmall", "225 Aacutesmall", "226 Acircumflexsmall", "227 Atildesmall", "228 Adieresissmall", "229 Aringsmall", "230 AEsmall", "231 Ccedillasmall", "232 Egravesmall", "233 Eacutesmall", "234 Ecircumflexsmall", "235 Edieresissmall", "236 Igravesmall", "237 Iacutesmall", "238 Icircumflexsmall", "239 Idieresissmall", "240 Ethsmall", "241 Ntildesmall", "242 Ogravesmall", "243 Oacutesmall", "244 Ocircumflexsmall", "245 Otildesmall", "246 Odieresissmall", "247 OEsmall", "248 Oslashsmall", "249 Ugravesmall", "250 Uacutesmall", "251 Ucircumflexsmall", "252 Udieresissmall", "253 Yacutesmall", "254 Thornsmall", "255 Ydieresissmall", ); sub loadglyphexpnames{ foreach $pair (@glyphexptable) { local($glyphnumber, $properglyphname)=split(/ /, $pair, 2); $expglyphname[$glyphnumber]=$properglyphname; } } &loadglyphexpnames; # let 'er rip... @glyphasetable=( # This is the table of glyphs in the Adobe Stand'd Encoding (ASE) "32 space", "33 exclam", "34 quotedbl", "35 numbersign", "36 dollar", "37 percent", "38 ampersand", "39 quoteright", "40 parenleft", "41 parenright", "42 asterisk", "43 plus", "44 comma", "45 hyphen", "46 period", "47 slash", "48 zero", "49 one", "50 two", "51 three", "52 four", "53 five", "54 six", "55 seven", "56 eight", "57 nine", "58 colon", "59 semicolon", "60 less", "61 equal", "62 greater", "63 question", "64 at", "65 A", "66 B", "67 C", "68 D", "69 E", "70 F", "71 G", "72 H", "73 I", "74 J", "75 K", "76 L", "77 M", "78 N", "79 O", "80 P", "81 Q", "82 R", "83 S", "84 T", "85 U", "86 V", "87 W", "88 X", "89 Y", "90 Z", "91 bracketleft", "92 backslash", "93 bracketright", "94 asciicircum", "95 underscore", "96 quoteleft", "97 a", "98 b", "99 c", "100 d", "101 e", "102 f", "103 g", "104 h", "105 i", "106 j", "107 k", "108 l", "109 m", "110 n", "111 o", "112 p", "113 q", "114 r", "115 s", "116 t", "117 u", "118 v", "119 w", "120 x", "121 y", "122 z", "123 braceleft", "124 bar", "125 braceright", "126 asciitilde", "161 exclamdown", "162 cent", "163 sterling", "164 fraction", "165 yen", "166 florin", "167 section ", "168 currency", "169 quotesingle", "170 quotedblleft", "171 guillemotleft", "172 guilsinglleft", "173 guilsinglright", "174 fi", "175 fl", "177 endash", "178 dagger", "179 daggerdbl", "180 periodcentered", "182 paragraph", "183 bullet", "184 quotesinglbase", "185 quotedblbase", "186 quotedblright", "187 guillemotright", "188 ellipsis", "189 perthousand", "191 questiondown", "193 grave", "194 acute", "195 circumflex", "196 tilde", "197 macron", "198 breve", "199 dotaccent", "200 dieresis", "202 ring", "203 cedilla", "205 hungarumlaut", "206 ogonek", "207 caron", "208 emdash", "225 AE", "227 ordfeminine", "232 Lslash", "233 Oslash", "234 OE", "235 ordmasculine", "241 ae", "245 dotlessi", "248 lslash", "249 oslash", "250 oe", "251 germandbls", ); sub loadglyphasenames{ foreach $pair (@glyphasetable) { local($glyphnumber, $ASEglyphname)=split(/ /, $pair, 2); $aseglyphname[$glyphnumber]=$ASEglyphname; } } &loadglyphasenames; ## The two arrays are @aseglyphname and @expglyphname. open (OUT, ">ase2exp.mtx"); foreach $i (32..251) { if ($aseglyphname[$i] eq $expglyphname[$i]) { push @unsets, "\\unsetglyph\{$aseglyphname[$i]\} \% char $i\n"; } else { push @renames, "\\rename\{$aseglyphname[$i]\}\{$expglyphname[$i]\} \% char $i\n"; } } print OUT "\\relax\n\n\\metrics\n\n"; print OUT @renames; print OUT "\n"; print OUT "@unsets\n\\endmetrics";