Chris@909
|
1 #!/usr/bin/env ruby
|
Chris@909
|
2 #
|
Chris@909
|
3 # Utility to generate font definition files
|
Chris@909
|
4 # Version: 1.1
|
Chris@909
|
5 # Date: 2006-07-19
|
Chris@909
|
6 #
|
Chris@909
|
7 # Changelog:
|
Chris@909
|
8 # Version 1.1 - Brian Ollenberger
|
Chris@909
|
9 # - Fixed a very small bug in MakeFont for generating FontDef.diff.
|
Chris@909
|
10
|
Chris@909
|
11 Charencodings = {
|
Chris@909
|
12 # Central Europe
|
Chris@909
|
13 'cp1250' => [
|
Chris@909
|
14 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
15 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
16 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
17 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
18 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
19 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
20 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
21 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
22 'space', 'exclam', 'quotedbl', 'numbersign',
|
Chris@909
|
23 'dollar', 'percent', 'ampersand', 'quotesingle',
|
Chris@909
|
24 'parenleft', 'parenright', 'asterisk', 'plus',
|
Chris@909
|
25 'comma', 'hyphen', 'period', 'slash',
|
Chris@909
|
26 'zero', 'one', 'two', 'three',
|
Chris@909
|
27 'four', 'five', 'six', 'seven',
|
Chris@909
|
28 'eight', 'nine', 'colon', 'semicolon',
|
Chris@909
|
29 'less', 'equal', 'greater', 'question',
|
Chris@909
|
30 'at', 'A', 'B', 'C',
|
Chris@909
|
31 'D', 'E', 'F', 'G',
|
Chris@909
|
32 'H', 'I', 'J', 'K',
|
Chris@909
|
33 'L', 'M', 'N', 'O',
|
Chris@909
|
34 'P', 'Q', 'R', 'S',
|
Chris@909
|
35 'T', 'U', 'V', 'W',
|
Chris@909
|
36 'X', 'Y', 'Z', 'bracketleft',
|
Chris@909
|
37 'backslash', 'bracketright', 'asciicircum', 'underscore',
|
Chris@909
|
38 'grave', 'a', 'b', 'c',
|
Chris@909
|
39 'd', 'e', 'f', 'g',
|
Chris@909
|
40 'h', 'i', 'j', 'k',
|
Chris@909
|
41 'l', 'm', 'n', 'o',
|
Chris@909
|
42 'p', 'q', 'r', 's',
|
Chris@909
|
43 't', 'u', 'v', 'w',
|
Chris@909
|
44 'x', 'y', 'z', 'braceleft',
|
Chris@909
|
45 'bar', 'braceright', 'asciitilde', '.notdef',
|
Chris@909
|
46 'Euro', '.notdef', 'quotesinglbase', '.notdef',
|
Chris@909
|
47 'quotedblbase', 'ellipsis', 'dagger', 'daggerdbl',
|
Chris@909
|
48 '.notdef', 'perthousand', 'Scaron', 'guilsinglleft',
|
Chris@909
|
49 'Sacute', 'Tcaron', 'Zcaron', 'Zacute',
|
Chris@909
|
50 '.notdef', 'quoteleft', 'quoteright', 'quotedblleft',
|
Chris@909
|
51 'quotedblright', 'bullet', 'endash', 'emdash',
|
Chris@909
|
52 '.notdef', 'trademark', 'scaron', 'guilsinglright',
|
Chris@909
|
53 'sacute', 'tcaron', 'zcaron', 'zacute',
|
Chris@909
|
54 'space', 'caron', 'breve', 'Lslash',
|
Chris@909
|
55 'currency', 'Aogonek', 'brokenbar', 'section',
|
Chris@909
|
56 'dieresis', 'copyright', 'Scedilla', 'guillemotleft',
|
Chris@909
|
57 'logicalnot', 'hyphen', 'registered', 'Zdotaccent',
|
Chris@909
|
58 'degree', 'plusminus', 'ogonek', 'lslash',
|
Chris@909
|
59 'acute', 'mu', 'paragraph', 'periodcentered',
|
Chris@909
|
60 'cedilla', 'aogonek', 'scedilla', 'guillemotright',
|
Chris@909
|
61 'Lcaron', 'hungarumlaut', 'lcaron', 'zdotaccent',
|
Chris@909
|
62 'Racute', 'Aacute', 'Acircumflex', 'Abreve',
|
Chris@909
|
63 'Adieresis', 'Lacute', 'Cacute', 'Ccedilla',
|
Chris@909
|
64 'Ccaron', 'Eacute', 'Eogonek', 'Edieresis',
|
Chris@909
|
65 'Ecaron', 'Iacute', 'Icircumflex', 'Dcaron',
|
Chris@909
|
66 'Dcroat', 'Nacute', 'Ncaron', 'Oacute',
|
Chris@909
|
67 'Ocircumflex', 'Ohungarumlaut', 'Odieresis', 'multiply',
|
Chris@909
|
68 'Rcaron', 'Uring', 'Uacute', 'Uhungarumlaut',
|
Chris@909
|
69 'Udieresis', 'Yacute', 'Tcommaaccent', 'germandbls',
|
Chris@909
|
70 'racute', 'aacute', 'acircumflex', 'abreve',
|
Chris@909
|
71 'adieresis', 'lacute', 'cacute', 'ccedilla',
|
Chris@909
|
72 'ccaron', 'eacute', 'eogonek', 'edieresis',
|
Chris@909
|
73 'ecaron', 'iacute', 'icircumflex', 'dcaron',
|
Chris@909
|
74 'dcroat', 'nacute', 'ncaron', 'oacute',
|
Chris@909
|
75 'ocircumflex', 'ohungarumlaut', 'odieresis', 'divide',
|
Chris@909
|
76 'rcaron', 'uring', 'uacute', 'uhungarumlaut',
|
Chris@909
|
77 'udieresis', 'yacute', 'tcommaaccent', 'dotaccent'
|
Chris@909
|
78 ],
|
Chris@909
|
79 # Cyrillic
|
Chris@909
|
80 'cp1251' => [
|
Chris@909
|
81 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
82 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
83 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
84 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
85 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
86 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
87 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
88 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
89 'space', 'exclam', 'quotedbl', 'numbersign',
|
Chris@909
|
90 'dollar', 'percent', 'ampersand', 'quotesingle',
|
Chris@909
|
91 'parenleft', 'parenright', 'asterisk', 'plus',
|
Chris@909
|
92 'comma', 'hyphen', 'period', 'slash',
|
Chris@909
|
93 'zero', 'one', 'two', 'three',
|
Chris@909
|
94 'four', 'five', 'six', 'seven',
|
Chris@909
|
95 'eight', 'nine', 'colon', 'semicolon',
|
Chris@909
|
96 'less', 'equal', 'greater', 'question',
|
Chris@909
|
97 'at', 'A', 'B', 'C',
|
Chris@909
|
98 'D', 'E', 'F', 'G',
|
Chris@909
|
99 'H', 'I', 'J', 'K',
|
Chris@909
|
100 'L', 'M', 'N', 'O',
|
Chris@909
|
101 'P', 'Q', 'R', 'S',
|
Chris@909
|
102 'T', 'U', 'V', 'W',
|
Chris@909
|
103 'X', 'Y', 'Z', 'bracketleft',
|
Chris@909
|
104 'backslash', 'bracketright', 'asciicircum', 'underscore',
|
Chris@909
|
105 'grave', 'a', 'b', 'c',
|
Chris@909
|
106 'd', 'e', 'f', 'g',
|
Chris@909
|
107 'h', 'i', 'j', 'k',
|
Chris@909
|
108 'l', 'm', 'n', 'o',
|
Chris@909
|
109 'p', 'q', 'r', 's',
|
Chris@909
|
110 't', 'u', 'v', 'w',
|
Chris@909
|
111 'x', 'y', 'z', 'braceleft',
|
Chris@909
|
112 'bar', 'braceright', 'asciitilde', '.notdef',
|
Chris@909
|
113 'afii10051', 'afii10052', 'quotesinglbase', 'afii10100',
|
Chris@909
|
114 'quotedblbase', 'ellipsis', 'dagger', 'daggerdbl',
|
Chris@909
|
115 'Euro', 'perthousand', 'afii10058', 'guilsinglleft',
|
Chris@909
|
116 'afii10059', 'afii10061', 'afii10060', 'afii10145',
|
Chris@909
|
117 'afii10099', 'quoteleft', 'quoteright', 'quotedblleft',
|
Chris@909
|
118 'quotedblright', 'bullet', 'endash', 'emdash',
|
Chris@909
|
119 '.notdef', 'trademark', 'afii10106', 'guilsinglright',
|
Chris@909
|
120 'afii10107', 'afii10109', 'afii10108', 'afii10193',
|
Chris@909
|
121 'space', 'afii10062', 'afii10110', 'afii10057',
|
Chris@909
|
122 'currency', 'afii10050', 'brokenbar', 'section',
|
Chris@909
|
123 'afii10023', 'copyright', 'afii10053', 'guillemotleft',
|
Chris@909
|
124 'logicalnot', 'hyphen', 'registered', 'afii10056',
|
Chris@909
|
125 'degree', 'plusminus', 'afii10055', 'afii10103',
|
Chris@909
|
126 'afii10098', 'mu', 'paragraph', 'periodcentered',
|
Chris@909
|
127 'afii10071', 'afii61352', 'afii10101', 'guillemotright',
|
Chris@909
|
128 'afii10105', 'afii10054', 'afii10102', 'afii10104',
|
Chris@909
|
129 'afii10017', 'afii10018', 'afii10019', 'afii10020',
|
Chris@909
|
130 'afii10021', 'afii10022', 'afii10024', 'afii10025',
|
Chris@909
|
131 'afii10026', 'afii10027', 'afii10028', 'afii10029',
|
Chris@909
|
132 'afii10030', 'afii10031', 'afii10032', 'afii10033',
|
Chris@909
|
133 'afii10034', 'afii10035', 'afii10036', 'afii10037',
|
Chris@909
|
134 'afii10038', 'afii10039', 'afii10040', 'afii10041',
|
Chris@909
|
135 'afii10042', 'afii10043', 'afii10044', 'afii10045',
|
Chris@909
|
136 'afii10046', 'afii10047', 'afii10048', 'afii10049',
|
Chris@909
|
137 'afii10065', 'afii10066', 'afii10067', 'afii10068',
|
Chris@909
|
138 'afii10069', 'afii10070', 'afii10072', 'afii10073',
|
Chris@909
|
139 'afii10074', 'afii10075', 'afii10076', 'afii10077',
|
Chris@909
|
140 'afii10078', 'afii10079', 'afii10080', 'afii10081',
|
Chris@909
|
141 'afii10082', 'afii10083', 'afii10084', 'afii10085',
|
Chris@909
|
142 'afii10086', 'afii10087', 'afii10088', 'afii10089',
|
Chris@909
|
143 'afii10090', 'afii10091', 'afii10092', 'afii10093',
|
Chris@909
|
144 'afii10094', 'afii10095', 'afii10096', 'afii10097'
|
Chris@909
|
145 ],
|
Chris@909
|
146 # Western Europe
|
Chris@909
|
147 'cp1252' => [
|
Chris@909
|
148 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
149 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
150 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
151 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
152 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
153 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
154 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
155 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
156 'space', 'exclam', 'quotedbl', 'numbersign',
|
Chris@909
|
157 'dollar', 'percent', 'ampersand', 'quotesingle',
|
Chris@909
|
158 'parenleft', 'parenright', 'asterisk', 'plus',
|
Chris@909
|
159 'comma', 'hyphen', 'period', 'slash',
|
Chris@909
|
160 'zero', 'one', 'two', 'three',
|
Chris@909
|
161 'four', 'five', 'six', 'seven',
|
Chris@909
|
162 'eight', 'nine', 'colon', 'semicolon',
|
Chris@909
|
163 'less', 'equal', 'greater', 'question',
|
Chris@909
|
164 'at', 'A', 'B', 'C',
|
Chris@909
|
165 'D', 'E', 'F', 'G',
|
Chris@909
|
166 'H', 'I', 'J', 'K',
|
Chris@909
|
167 'L', 'M', 'N', 'O',
|
Chris@909
|
168 'P', 'Q', 'R', 'S',
|
Chris@909
|
169 'T', 'U', 'V', 'W',
|
Chris@909
|
170 'X', 'Y', 'Z', 'bracketleft',
|
Chris@909
|
171 'backslash', 'bracketright', 'asciicircum', 'underscore',
|
Chris@909
|
172 'grave', 'a', 'b', 'c',
|
Chris@909
|
173 'd', 'e', 'f', 'g',
|
Chris@909
|
174 'h', 'i', 'j', 'k',
|
Chris@909
|
175 'l', 'm', 'n', 'o',
|
Chris@909
|
176 'p', 'q', 'r', 's',
|
Chris@909
|
177 't', 'u', 'v', 'w',
|
Chris@909
|
178 'x', 'y', 'z', 'braceleft',
|
Chris@909
|
179 'bar', 'braceright', 'asciitilde', '.notdef',
|
Chris@909
|
180 'Euro', '.notdef', 'quotesinglbase', 'florin',
|
Chris@909
|
181 'quotedblbase', 'ellipsis', 'dagger', 'daggerdbl',
|
Chris@909
|
182 'circumflex', 'perthousand', 'Scaron', 'guilsinglleft',
|
Chris@909
|
183 'OE', '.notdef', 'Zcaron', '.notdef',
|
Chris@909
|
184 '.notdef', 'quoteleft', 'quoteright', 'quotedblleft',
|
Chris@909
|
185 'quotedblright', 'bullet', 'endash', 'emdash',
|
Chris@909
|
186 'tilde', 'trademark', 'scaron', 'guilsinglright',
|
Chris@909
|
187 'oe', '.notdef', 'zcaron', 'Ydieresis',
|
Chris@909
|
188 'space', 'exclamdown', 'cent', 'sterling',
|
Chris@909
|
189 'currency', 'yen', 'brokenbar', 'section',
|
Chris@909
|
190 'dieresis', 'copyright', 'ordfeminine', 'guillemotleft',
|
Chris@909
|
191 'logicalnot', 'hyphen', 'registered', 'macron',
|
Chris@909
|
192 'degree', 'plusminus', 'twosuperior', 'threesuperior',
|
Chris@909
|
193 'acute', 'mu', 'paragraph', 'periodcentered',
|
Chris@909
|
194 'cedilla', 'onesuperior', 'ordmasculine', 'guillemotright',
|
Chris@909
|
195 'onequarter', 'onehalf', 'threequarters', 'questiondown',
|
Chris@909
|
196 'Agrave', 'Aacute', 'Acircumflex', 'Atilde',
|
Chris@909
|
197 'Adieresis', 'Aring', 'AE', 'Ccedilla',
|
Chris@909
|
198 'Egrave', 'Eacute', 'Ecircumflex', 'Edieresis',
|
Chris@909
|
199 'Igrave', 'Iacute', 'Icircumflex', 'Idieresis',
|
Chris@909
|
200 'Eth', 'Ntilde', 'Ograve', 'Oacute',
|
Chris@909
|
201 'Ocircumflex', 'Otilde', 'Odieresis', 'multiply',
|
Chris@909
|
202 'Oslash', 'Ugrave', 'Uacute', 'Ucircumflex',
|
Chris@909
|
203 'Udieresis', 'Yacute', 'Thorn', 'germandbls',
|
Chris@909
|
204 'agrave', 'aacute', 'acircumflex', 'atilde',
|
Chris@909
|
205 'adieresis', 'aring', 'ae', 'ccedilla',
|
Chris@909
|
206 'egrave', 'eacute', 'ecircumflex', 'edieresis',
|
Chris@909
|
207 'igrave', 'iacute', 'icircumflex', 'idieresis',
|
Chris@909
|
208 'eth', 'ntilde', 'ograve', 'oacute',
|
Chris@909
|
209 'ocircumflex', 'otilde', 'odieresis', 'divide',
|
Chris@909
|
210 'oslash', 'ugrave', 'uacute', 'ucircumflex',
|
Chris@909
|
211 'udieresis', 'yacute', 'thorn', 'ydieresis'
|
Chris@909
|
212 ],
|
Chris@909
|
213 # Greek
|
Chris@909
|
214 'cp1253' => [
|
Chris@909
|
215 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
216 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
217 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
218 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
219 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
220 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
221 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
222 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
223 'space', 'exclam', 'quotedbl', 'numbersign',
|
Chris@909
|
224 'dollar', 'percent', 'ampersand', 'quotesingle',
|
Chris@909
|
225 'parenleft', 'parenright', 'asterisk', 'plus',
|
Chris@909
|
226 'comma', 'hyphen', 'period', 'slash',
|
Chris@909
|
227 'zero', 'one', 'two', 'three',
|
Chris@909
|
228 'four', 'five', 'six', 'seven',
|
Chris@909
|
229 'eight', 'nine', 'colon', 'semicolon',
|
Chris@909
|
230 'less', 'equal', 'greater', 'question',
|
Chris@909
|
231 'at', 'A', 'B', 'C',
|
Chris@909
|
232 'D', 'E', 'F', 'G',
|
Chris@909
|
233 'H', 'I', 'J', 'K',
|
Chris@909
|
234 'L', 'M', 'N', 'O',
|
Chris@909
|
235 'P', 'Q', 'R', 'S',
|
Chris@909
|
236 'T', 'U', 'V', 'W',
|
Chris@909
|
237 'X', 'Y', 'Z', 'bracketleft',
|
Chris@909
|
238 'backslash', 'bracketright', 'asciicircum', 'underscore',
|
Chris@909
|
239 'grave', 'a', 'b', 'c',
|
Chris@909
|
240 'd', 'e', 'f', 'g',
|
Chris@909
|
241 'h', 'i', 'j', 'k',
|
Chris@909
|
242 'l', 'm', 'n', 'o',
|
Chris@909
|
243 'p', 'q', 'r', 's',
|
Chris@909
|
244 't', 'u', 'v', 'w',
|
Chris@909
|
245 'x', 'y', 'z', 'braceleft',
|
Chris@909
|
246 'bar', 'braceright', 'asciitilde', '.notdef',
|
Chris@909
|
247 'Euro', '.notdef', 'quotesinglbase', 'florin',
|
Chris@909
|
248 'quotedblbase', 'ellipsis', 'dagger', 'daggerdbl',
|
Chris@909
|
249 '.notdef', 'perthousand', '.notdef', 'guilsinglleft',
|
Chris@909
|
250 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
251 '.notdef', 'quoteleft', 'quoteright', 'quotedblleft',
|
Chris@909
|
252 'quotedblright', 'bullet', 'endash', 'emdash',
|
Chris@909
|
253 '.notdef', 'trademark', '.notdef', 'guilsinglright',
|
Chris@909
|
254 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
255 'space', 'dieresistonos', 'Alphatonos', 'sterling',
|
Chris@909
|
256 'currency', 'yen', 'brokenbar', 'section',
|
Chris@909
|
257 'dieresis', 'copyright', '.notdef', 'guillemotleft',
|
Chris@909
|
258 'logicalnot', 'hyphen', 'registered', 'afii00208',
|
Chris@909
|
259 'degree', 'plusminus', 'twosuperior', 'threesuperior',
|
Chris@909
|
260 'tonos', 'mu', 'paragraph', 'periodcentered',
|
Chris@909
|
261 'Epsilontonos', 'Etatonos', 'Iotatonos', 'guillemotright',
|
Chris@909
|
262 'Omicrontonos', 'onehalf', 'Upsilontonos', 'Omegatonos',
|
Chris@909
|
263 'iotadieresistonos','Alpha', 'Beta', 'Gamma',
|
Chris@909
|
264 'Delta', 'Epsilon', 'Zeta', 'Eta',
|
Chris@909
|
265 'Theta', 'Iota', 'Kappa', 'Lambda',
|
Chris@909
|
266 'Mu', 'Nu', 'Xi', 'Omicron',
|
Chris@909
|
267 'Pi', 'Rho', '.notdef', 'Sigma',
|
Chris@909
|
268 'Tau', 'Upsilon', 'Phi', 'Chi',
|
Chris@909
|
269 'Psi', 'Omega', 'Iotadieresis', 'Upsilondieresis',
|
Chris@909
|
270 'alphatonos', 'epsilontonos', 'etatonos', 'iotatonos',
|
Chris@909
|
271 'upsilondieresistonos','alpha', 'beta', 'gamma',
|
Chris@909
|
272 'delta', 'epsilon', 'zeta', 'eta',
|
Chris@909
|
273 'theta', 'iota', 'kappa', 'lambda',
|
Chris@909
|
274 'mu', 'nu', 'xi', 'omicron',
|
Chris@909
|
275 'pi', 'rho', 'sigma1', 'sigma',
|
Chris@909
|
276 'tau', 'upsilon', 'phi', 'chi',
|
Chris@909
|
277 'psi', 'omega', 'iotadieresis', 'upsilondieresis',
|
Chris@909
|
278 'omicrontonos', 'upsilontonos', 'omegatonos', '.notdef'
|
Chris@909
|
279 ],
|
Chris@909
|
280 # Turkish
|
Chris@909
|
281 'cp1254' => [
|
Chris@909
|
282 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
283 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
284 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
285 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
286 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
287 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
288 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
289 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
290 'space', 'exclam', 'quotedbl', 'numbersign',
|
Chris@909
|
291 'dollar', 'percent', 'ampersand', 'quotesingle',
|
Chris@909
|
292 'parenleft', 'parenright', 'asterisk', 'plus',
|
Chris@909
|
293 'comma', 'hyphen', 'period', 'slash',
|
Chris@909
|
294 'zero', 'one', 'two', 'three',
|
Chris@909
|
295 'four', 'five', 'six', 'seven',
|
Chris@909
|
296 'eight', 'nine', 'colon', 'semicolon',
|
Chris@909
|
297 'less', 'equal', 'greater', 'question',
|
Chris@909
|
298 'at', 'A', 'B', 'C',
|
Chris@909
|
299 'D', 'E', 'F', 'G',
|
Chris@909
|
300 'H', 'I', 'J', 'K',
|
Chris@909
|
301 'L', 'M', 'N', 'O',
|
Chris@909
|
302 'P', 'Q', 'R', 'S',
|
Chris@909
|
303 'T', 'U', 'V', 'W',
|
Chris@909
|
304 'X', 'Y', 'Z', 'bracketleft',
|
Chris@909
|
305 'backslash', 'bracketright', 'asciicircum', 'underscore',
|
Chris@909
|
306 'grave', 'a', 'b', 'c',
|
Chris@909
|
307 'd', 'e', 'f', 'g',
|
Chris@909
|
308 'h', 'i', 'j', 'k',
|
Chris@909
|
309 'l', 'm', 'n', 'o',
|
Chris@909
|
310 'p', 'q', 'r', 's',
|
Chris@909
|
311 't', 'u', 'v', 'w',
|
Chris@909
|
312 'x', 'y', 'z', 'braceleft',
|
Chris@909
|
313 'bar', 'braceright', 'asciitilde', '.notdef',
|
Chris@909
|
314 'Euro', '.notdef', 'quotesinglbase', 'florin',
|
Chris@909
|
315 'quotedblbase', 'ellipsis', 'dagger', 'daggerdbl',
|
Chris@909
|
316 'circumflex', 'perthousand', 'Scaron', 'guilsinglleft',
|
Chris@909
|
317 'OE', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
318 '.notdef', 'quoteleft', 'quoteright', 'quotedblleft',
|
Chris@909
|
319 'quotedblright', 'bullet', 'endash', 'emdash',
|
Chris@909
|
320 'tilde', 'trademark', 'scaron', 'guilsinglright',
|
Chris@909
|
321 'oe', '.notdef', '.notdef', 'Ydieresis',
|
Chris@909
|
322 'space', 'exclamdown', 'cent', 'sterling',
|
Chris@909
|
323 'currency', 'yen', 'brokenbar', 'section',
|
Chris@909
|
324 'dieresis', 'copyright', 'ordfeminine', 'guillemotleft',
|
Chris@909
|
325 'logicalnot', 'hyphen', 'registered', 'macron',
|
Chris@909
|
326 'degree', 'plusminus', 'twosuperior', 'threesuperior',
|
Chris@909
|
327 'acute', 'mu', 'paragraph', 'periodcentered',
|
Chris@909
|
328 'cedilla', 'onesuperior', 'ordmasculine', 'guillemotright',
|
Chris@909
|
329 'onequarter', 'onehalf', 'threequarters', 'questiondown',
|
Chris@909
|
330 'Agrave', 'Aacute', 'Acircumflex', 'Atilde',
|
Chris@909
|
331 'Adieresis', 'Aring', 'AE', 'Ccedilla',
|
Chris@909
|
332 'Egrave', 'Eacute', 'Ecircumflex', 'Edieresis',
|
Chris@909
|
333 'Igrave', 'Iacute', 'Icircumflex', 'Idieresis',
|
Chris@909
|
334 'Gbreve', 'Ntilde', 'Ograve', 'Oacute',
|
Chris@909
|
335 'Ocircumflex', 'Otilde', 'Odieresis', 'multiply',
|
Chris@909
|
336 'Oslash', 'Ugrave', 'Uacute', 'Ucircumflex',
|
Chris@909
|
337 'Udieresis', 'Idotaccent', 'Scedilla', 'germandbls',
|
Chris@909
|
338 'agrave', 'aacute', 'acircumflex', 'atilde',
|
Chris@909
|
339 'adieresis', 'aring', 'ae', 'ccedilla',
|
Chris@909
|
340 'egrave', 'eacute', 'ecircumflex', 'edieresis',
|
Chris@909
|
341 'igrave', 'iacute', 'icircumflex', 'idieresis',
|
Chris@909
|
342 'gbreve', 'ntilde', 'ograve', 'oacute',
|
Chris@909
|
343 'ocircumflex', 'otilde', 'odieresis', 'divide',
|
Chris@909
|
344 'oslash', 'ugrave', 'uacute', 'ucircumflex',
|
Chris@909
|
345 'udieresis', 'dotlessi', 'scedilla', 'ydieresis'
|
Chris@909
|
346 ],
|
Chris@909
|
347 # Hebrew
|
Chris@909
|
348 'cp1255' => [
|
Chris@909
|
349 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
350 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
351 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
352 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
353 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
354 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
355 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
356 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
357 'space', 'exclam', 'quotedbl', 'numbersign',
|
Chris@909
|
358 'dollar', 'percent', 'ampersand', 'quotesingle',
|
Chris@909
|
359 'parenleft', 'parenright', 'asterisk', 'plus',
|
Chris@909
|
360 'comma', 'hyphen', 'period', 'slash',
|
Chris@909
|
361 'zero', 'one', 'two', 'three',
|
Chris@909
|
362 'four', 'five', 'six', 'seven',
|
Chris@909
|
363 'eight', 'nine', 'colon', 'semicolon',
|
Chris@909
|
364 'less', 'equal', 'greater', 'question',
|
Chris@909
|
365 'at', 'A', 'B', 'C',
|
Chris@909
|
366 'D', 'E', 'F', 'G',
|
Chris@909
|
367 'H', 'I', 'J', 'K',
|
Chris@909
|
368 'L', 'M', 'N', 'O',
|
Chris@909
|
369 'P', 'Q', 'R', 'S',
|
Chris@909
|
370 'T', 'U', 'V', 'W',
|
Chris@909
|
371 'X', 'Y', 'Z', 'bracketleft',
|
Chris@909
|
372 'backslash', 'bracketright', 'asciicircum', 'underscore',
|
Chris@909
|
373 'grave', 'a', 'b', 'c',
|
Chris@909
|
374 'd', 'e', 'f', 'g',
|
Chris@909
|
375 'h', 'i', 'j', 'k',
|
Chris@909
|
376 'l', 'm', 'n', 'o',
|
Chris@909
|
377 'p', 'q', 'r', 's',
|
Chris@909
|
378 't', 'u', 'v', 'w',
|
Chris@909
|
379 'x', 'y', 'z', 'braceleft',
|
Chris@909
|
380 'bar', 'braceright', 'asciitilde', '.notdef',
|
Chris@909
|
381 'Euro', '.notdef', 'quotesinglbase', 'florin',
|
Chris@909
|
382 'quotedblbase', 'ellipsis', 'dagger', 'daggerdbl',
|
Chris@909
|
383 'circumflex', 'perthousand', '.notdef', 'guilsinglleft',
|
Chris@909
|
384 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
385 '.notdef', 'quoteleft', 'quoteright', 'quotedblleft',
|
Chris@909
|
386 'quotedblright', 'bullet', 'endash', 'emdash',
|
Chris@909
|
387 'tilde', 'trademark', '.notdef', 'guilsinglright',
|
Chris@909
|
388 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
389 'space', 'exclamdown', 'cent', 'sterling',
|
Chris@909
|
390 'afii57636', 'yen', 'brokenbar', 'section',
|
Chris@909
|
391 'dieresis', 'copyright', 'multiply', 'guillemotleft',
|
Chris@909
|
392 'logicalnot', 'sfthyphen', 'registered', 'macron',
|
Chris@909
|
393 'degree', 'plusminus', 'twosuperior', 'threesuperior',
|
Chris@909
|
394 'acute', 'mu', 'paragraph', 'middot',
|
Chris@909
|
395 'cedilla', 'onesuperior', 'divide', 'guillemotright',
|
Chris@909
|
396 'onequarter', 'onehalf', 'threequarters', 'questiondown',
|
Chris@909
|
397 'afii57799', 'afii57801', 'afii57800', 'afii57802',
|
Chris@909
|
398 'afii57793', 'afii57794', 'afii57795', 'afii57798',
|
Chris@909
|
399 'afii57797', 'afii57806', '.notdef', 'afii57796',
|
Chris@909
|
400 'afii57807', 'afii57839', 'afii57645', 'afii57841',
|
Chris@909
|
401 'afii57842', 'afii57804', 'afii57803', 'afii57658',
|
Chris@909
|
402 'afii57716', 'afii57717', 'afii57718', 'gereshhebrew',
|
Chris@909
|
403 'gershayimhebrew','.notdef', '.notdef', '.notdef',
|
Chris@909
|
404 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
405 'afii57664', 'afii57665', 'afii57666', 'afii57667',
|
Chris@909
|
406 'afii57668', 'afii57669', 'afii57670', 'afii57671',
|
Chris@909
|
407 'afii57672', 'afii57673', 'afii57674', 'afii57675',
|
Chris@909
|
408 'afii57676', 'afii57677', 'afii57678', 'afii57679',
|
Chris@909
|
409 'afii57680', 'afii57681', 'afii57682', 'afii57683',
|
Chris@909
|
410 'afii57684', 'afii57685', 'afii57686', 'afii57687',
|
Chris@909
|
411 'afii57688', 'afii57689', 'afii57690', '.notdef',
|
Chris@909
|
412 '.notdef', 'afii299', 'afii300', '.notdef'
|
Chris@909
|
413 ],
|
Chris@909
|
414 # Baltic
|
Chris@909
|
415 'cp1257' => [
|
Chris@909
|
416 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
417 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
418 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
419 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
420 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
421 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
422 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
423 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
424 'space', 'exclam', 'quotedbl', 'numbersign',
|
Chris@909
|
425 'dollar', 'percent', 'ampersand', 'quotesingle',
|
Chris@909
|
426 'parenleft', 'parenright', 'asterisk', 'plus',
|
Chris@909
|
427 'comma', 'hyphen', 'period', 'slash',
|
Chris@909
|
428 'zero', 'one', 'two', 'three',
|
Chris@909
|
429 'four', 'five', 'six', 'seven',
|
Chris@909
|
430 'eight', 'nine', 'colon', 'semicolon',
|
Chris@909
|
431 'less', 'equal', 'greater', 'question',
|
Chris@909
|
432 'at', 'A', 'B', 'C',
|
Chris@909
|
433 'D', 'E', 'F', 'G',
|
Chris@909
|
434 'H', 'I', 'J', 'K',
|
Chris@909
|
435 'L', 'M', 'N', 'O',
|
Chris@909
|
436 'P', 'Q', 'R', 'S',
|
Chris@909
|
437 'T', 'U', 'V', 'W',
|
Chris@909
|
438 'X', 'Y', 'Z', 'bracketleft',
|
Chris@909
|
439 'backslash', 'bracketright', 'asciicircum', 'underscore',
|
Chris@909
|
440 'grave', 'a', 'b', 'c',
|
Chris@909
|
441 'd', 'e', 'f', 'g',
|
Chris@909
|
442 'h', 'i', 'j', 'k',
|
Chris@909
|
443 'l', 'm', 'n', 'o',
|
Chris@909
|
444 'p', 'q', 'r', 's',
|
Chris@909
|
445 't', 'u', 'v', 'w',
|
Chris@909
|
446 'x', 'y', 'z', 'braceleft',
|
Chris@909
|
447 'bar', 'braceright', 'asciitilde', '.notdef',
|
Chris@909
|
448 'Euro', '.notdef', 'quotesinglbase', '.notdef',
|
Chris@909
|
449 'quotedblbase', 'ellipsis', 'dagger', 'daggerdbl',
|
Chris@909
|
450 '.notdef', 'perthousand', '.notdef', 'guilsinglleft',
|
Chris@909
|
451 '.notdef', 'dieresis', 'caron', 'cedilla',
|
Chris@909
|
452 '.notdef', 'quoteleft', 'quoteright', 'quotedblleft',
|
Chris@909
|
453 'quotedblright', 'bullet', 'endash', 'emdash',
|
Chris@909
|
454 '.notdef', 'trademark', '.notdef', 'guilsinglright',
|
Chris@909
|
455 '.notdef', 'macron', 'ogonek', '.notdef',
|
Chris@909
|
456 'space', '.notdef', 'cent', 'sterling',
|
Chris@909
|
457 'currency', '.notdef', 'brokenbar', 'section',
|
Chris@909
|
458 'Oslash', 'copyright', 'Rcommaaccent', 'guillemotleft',
|
Chris@909
|
459 'logicalnot', 'hyphen', 'registered', 'AE',
|
Chris@909
|
460 'degree', 'plusminus', 'twosuperior', 'threesuperior',
|
Chris@909
|
461 'acute', 'mu', 'paragraph', 'periodcentered',
|
Chris@909
|
462 'oslash', 'onesuperior', 'rcommaaccent', 'guillemotright',
|
Chris@909
|
463 'onequarter', 'onehalf', 'threequarters', 'ae',
|
Chris@909
|
464 'Aogonek', 'Iogonek', 'Amacron', 'Cacute',
|
Chris@909
|
465 'Adieresis', 'Aring', 'Eogonek', 'Emacron',
|
Chris@909
|
466 'Ccaron', 'Eacute', 'Zacute', 'Edotaccent',
|
Chris@909
|
467 'Gcommaaccent', 'Kcommaaccent', 'Imacron', 'Lcommaaccent',
|
Chris@909
|
468 'Scaron', 'Nacute', 'Ncommaaccent', 'Oacute',
|
Chris@909
|
469 'Omacron', 'Otilde', 'Odieresis', 'multiply',
|
Chris@909
|
470 'Uogonek', 'Lslash', 'Sacute', 'Umacron',
|
Chris@909
|
471 'Udieresis', 'Zdotaccent', 'Zcaron', 'germandbls',
|
Chris@909
|
472 'aogonek', 'iogonek', 'amacron', 'cacute',
|
Chris@909
|
473 'adieresis', 'aring', 'eogonek', 'emacron',
|
Chris@909
|
474 'ccaron', 'eacute', 'zacute', 'edotaccent',
|
Chris@909
|
475 'gcommaaccent', 'kcommaaccent', 'imacron', 'lcommaaccent',
|
Chris@909
|
476 'scaron', 'nacute', 'ncommaaccent', 'oacute',
|
Chris@909
|
477 'omacron', 'otilde', 'odieresis', 'divide',
|
Chris@909
|
478 'uogonek', 'lslash', 'sacute', 'umacron',
|
Chris@909
|
479 'udieresis', 'zdotaccent', 'zcaron', 'dotaccent'
|
Chris@909
|
480 ],
|
Chris@909
|
481 # Vietnamese
|
Chris@909
|
482 'cp1258' => [
|
Chris@909
|
483 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
484 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
485 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
486 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
487 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
488 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
489 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
490 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
491 'space', 'exclam', 'quotedbl', 'numbersign',
|
Chris@909
|
492 'dollar', 'percent', 'ampersand', 'quotesingle',
|
Chris@909
|
493 'parenleft', 'parenright', 'asterisk', 'plus',
|
Chris@909
|
494 'comma', 'hyphen', 'period', 'slash',
|
Chris@909
|
495 'zero', 'one', 'two', 'three',
|
Chris@909
|
496 'four', 'five', 'six', 'seven',
|
Chris@909
|
497 'eight', 'nine', 'colon', 'semicolon',
|
Chris@909
|
498 'less', 'equal', 'greater', 'question',
|
Chris@909
|
499 'at', 'A', 'B', 'C',
|
Chris@909
|
500 'D', 'E', 'F', 'G',
|
Chris@909
|
501 'H', 'I', 'J', 'K',
|
Chris@909
|
502 'L', 'M', 'N', 'O',
|
Chris@909
|
503 'P', 'Q', 'R', 'S',
|
Chris@909
|
504 'T', 'U', 'V', 'W',
|
Chris@909
|
505 'X', 'Y', 'Z', 'bracketleft',
|
Chris@909
|
506 'backslash', 'bracketright', 'asciicircum', 'underscore',
|
Chris@909
|
507 'grave', 'a', 'b', 'c',
|
Chris@909
|
508 'd', 'e', 'f', 'g',
|
Chris@909
|
509 'h', 'i', 'j', 'k',
|
Chris@909
|
510 'l', 'm', 'n', 'o',
|
Chris@909
|
511 'p', 'q', 'r', 's',
|
Chris@909
|
512 't', 'u', 'v', 'w',
|
Chris@909
|
513 'x', 'y', 'z', 'braceleft',
|
Chris@909
|
514 'bar', 'braceright', 'asciitilde', '.notdef',
|
Chris@909
|
515 'Euro', '.notdef', 'quotesinglbase', 'florin',
|
Chris@909
|
516 'quotedblbase', 'ellipsis', 'dagger', 'daggerdbl',
|
Chris@909
|
517 'circumflex', 'perthousand', '.notdef', 'guilsinglleft',
|
Chris@909
|
518 'OE', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
519 '.notdef', 'quoteleft', 'quoteright', 'quotedblleft',
|
Chris@909
|
520 'quotedblright', 'bullet', 'endash', 'emdash',
|
Chris@909
|
521 'tilde', 'trademark', '.notdef', 'guilsinglright',
|
Chris@909
|
522 'oe', '.notdef', '.notdef', 'Ydieresis',
|
Chris@909
|
523 'space', 'exclamdown', 'cent', 'sterling',
|
Chris@909
|
524 'currency', 'yen', 'brokenbar', 'section',
|
Chris@909
|
525 'dieresis', 'copyright', 'ordfeminine', 'guillemotleft',
|
Chris@909
|
526 'logicalnot', 'hyphen', 'registered', 'macron',
|
Chris@909
|
527 'degree', 'plusminus', 'twosuperior', 'threesuperior',
|
Chris@909
|
528 'acute', 'mu', 'paragraph', 'periodcentered',
|
Chris@909
|
529 'cedilla', 'onesuperior', 'ordmasculine', 'guillemotright',
|
Chris@909
|
530 'onequarter', 'onehalf', 'threequarters', 'questiondown',
|
Chris@909
|
531 'Agrave', 'Aacute', 'Acircumflex', 'Abreve',
|
Chris@909
|
532 'Adieresis', 'Aring', 'AE', 'Ccedilla',
|
Chris@909
|
533 'Egrave', 'Eacute', 'Ecircumflex', 'Edieresis',
|
Chris@909
|
534 'gravecomb', 'Iacute', 'Icircumflex', 'Idieresis',
|
Chris@909
|
535 'Dcroat', 'Ntilde', 'hookabovecomb', 'Oacute',
|
Chris@909
|
536 'Ocircumflex', 'Ohorn', 'Odieresis', 'multiply',
|
Chris@909
|
537 'Oslash', 'Ugrave', 'Uacute', 'Ucircumflex',
|
Chris@909
|
538 'Udieresis', 'Uhorn', 'tildecomb', 'germandbls',
|
Chris@909
|
539 'agrave', 'aacute', 'acircumflex', 'abreve',
|
Chris@909
|
540 'adieresis', 'aring', 'ae', 'ccedilla',
|
Chris@909
|
541 'egrave', 'eacute', 'ecircumflex', 'edieresis',
|
Chris@909
|
542 'acutecomb', 'iacute', 'icircumflex', 'idieresis',
|
Chris@909
|
543 'dcroat', 'ntilde', 'dotbelowcomb', 'oacute',
|
Chris@909
|
544 'ocircumflex', 'ohorn', 'odieresis', 'divide',
|
Chris@909
|
545 'oslash', 'ugrave', 'uacute', 'ucircumflex',
|
Chris@909
|
546 'udieresis', 'uhorn', 'dong', 'ydieresis'
|
Chris@909
|
547 ],
|
Chris@909
|
548 # Thai
|
Chris@909
|
549 'cp874' => [
|
Chris@909
|
550 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
551 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
552 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
553 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
554 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
555 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
556 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
557 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
558 'space', 'exclam', 'quotedbl', 'numbersign',
|
Chris@909
|
559 'dollar', 'percent', 'ampersand', 'quotesingle',
|
Chris@909
|
560 'parenleft', 'parenright', 'asterisk', 'plus',
|
Chris@909
|
561 'comma', 'hyphen', 'period', 'slash',
|
Chris@909
|
562 'zero', 'one', 'two', 'three',
|
Chris@909
|
563 'four', 'five', 'six', 'seven',
|
Chris@909
|
564 'eight', 'nine', 'colon', 'semicolon',
|
Chris@909
|
565 'less', 'equal', 'greater', 'question',
|
Chris@909
|
566 'at', 'A', 'B', 'C',
|
Chris@909
|
567 'D', 'E', 'F', 'G',
|
Chris@909
|
568 'H', 'I', 'J', 'K',
|
Chris@909
|
569 'L', 'M', 'N', 'O',
|
Chris@909
|
570 'P', 'Q', 'R', 'S',
|
Chris@909
|
571 'T', 'U', 'V', 'W',
|
Chris@909
|
572 'X', 'Y', 'Z', 'bracketleft',
|
Chris@909
|
573 'backslash', 'bracketright', 'asciicircum', 'underscore',
|
Chris@909
|
574 'grave', 'a', 'b', 'c',
|
Chris@909
|
575 'd', 'e', 'f', 'g',
|
Chris@909
|
576 'h', 'i', 'j', 'k',
|
Chris@909
|
577 'l', 'm', 'n', 'o',
|
Chris@909
|
578 'p', 'q', 'r', 's',
|
Chris@909
|
579 't', 'u', 'v', 'w',
|
Chris@909
|
580 'x', 'y', 'z', 'braceleft',
|
Chris@909
|
581 'bar', 'braceright', 'asciitilde', '.notdef',
|
Chris@909
|
582 'Euro', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
583 '.notdef', 'ellipsis', '.notdef', '.notdef',
|
Chris@909
|
584 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
585 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
586 '.notdef', 'quoteleft', 'quoteright', 'quotedblleft',
|
Chris@909
|
587 'quotedblright', 'bullet', 'endash', 'emdash',
|
Chris@909
|
588 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
589 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
590 'space', 'kokaithai', 'khokhaithai', 'khokhuatthai',
|
Chris@909
|
591 'khokhwaithai', 'khokhonthai', 'khorakhangthai', 'ngonguthai',
|
Chris@909
|
592 'chochanthai', 'chochingthai', 'chochangthai', 'sosothai',
|
Chris@909
|
593 'chochoethai', 'yoyingthai', 'dochadathai', 'topatakthai',
|
Chris@909
|
594 'thothanthai', 'thonangmonthothai', 'thophuthaothai', 'nonenthai',
|
Chris@909
|
595 'dodekthai', 'totaothai', 'thothungthai', 'thothahanthai',
|
Chris@909
|
596 'thothongthai', 'nonuthai', 'bobaimaithai', 'poplathai',
|
Chris@909
|
597 'phophungthai', 'fofathai', 'phophanthai', 'fofanthai',
|
Chris@909
|
598 'phosamphaothai', 'momathai', 'yoyakthai', 'roruathai',
|
Chris@909
|
599 'ruthai', 'lolingthai', 'luthai', 'wowaenthai',
|
Chris@909
|
600 'sosalathai', 'sorusithai', 'sosuathai', 'hohipthai',
|
Chris@909
|
601 'lochulathai', 'oangthai', 'honokhukthai', 'paiyannoithai',
|
Chris@909
|
602 'saraathai', 'maihanakatthai', 'saraaathai', 'saraamthai',
|
Chris@909
|
603 'saraithai', 'saraiithai', 'sarauethai', 'saraueethai',
|
Chris@909
|
604 'sarauthai', 'sarauuthai', 'phinthuthai', '.notdef',
|
Chris@909
|
605 '.notdef', '.notdef', '.notdef', 'bahtthai',
|
Chris@909
|
606 'saraethai', 'saraaethai', 'saraothai', 'saraaimaimuanthai',
|
Chris@909
|
607 'saraaimaimalaithai', 'lakkhangyaothai', 'maiyamokthai', 'maitaikhuthai',
|
Chris@909
|
608 'maiekthai', 'maithothai', 'maitrithai', 'maichattawathai',
|
Chris@909
|
609 'thanthakhatthai', 'nikhahitthai', 'yamakkanthai', 'fongmanthai',
|
Chris@909
|
610 'zerothai', 'onethai', 'twothai', 'threethai',
|
Chris@909
|
611 'fourthai', 'fivethai', 'sixthai', 'seventhai',
|
Chris@909
|
612 'eightthai', 'ninethai', 'angkhankhuthai', 'khomutthai',
|
Chris@909
|
613 '.notdef', '.notdef', '.notdef', '.notdef'
|
Chris@909
|
614 ],
|
Chris@909
|
615 # Western Europe
|
Chris@909
|
616 'ISO-8859-1' => [
|
Chris@909
|
617 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
618 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
619 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
620 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
621 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
622 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
623 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
624 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
625 'space', 'exclam', 'quotedbl', 'numbersign',
|
Chris@909
|
626 'dollar', 'percent', 'ampersand', 'quotesingle',
|
Chris@909
|
627 'parenleft', 'parenright', 'asterisk', 'plus',
|
Chris@909
|
628 'comma', 'hyphen', 'period', 'slash',
|
Chris@909
|
629 'zero', 'one', 'two', 'three',
|
Chris@909
|
630 'four', 'five', 'six', 'seven',
|
Chris@909
|
631 'eight', 'nine', 'colon', 'semicolon',
|
Chris@909
|
632 'less', 'equal', 'greater', 'question',
|
Chris@909
|
633 'at', 'A', 'B', 'C',
|
Chris@909
|
634 'D', 'E', 'F', 'G',
|
Chris@909
|
635 'H', 'I', 'J', 'K',
|
Chris@909
|
636 'L', 'M', 'N', 'O',
|
Chris@909
|
637 'P', 'Q', 'R', 'S',
|
Chris@909
|
638 'T', 'U', 'V', 'W',
|
Chris@909
|
639 'X', 'Y', 'Z', 'bracketleft',
|
Chris@909
|
640 'backslash', 'bracketright', 'asciicircum', 'underscore',
|
Chris@909
|
641 'grave', 'a', 'b', 'c',
|
Chris@909
|
642 'd', 'e', 'f', 'g',
|
Chris@909
|
643 'h', 'i', 'j', 'k',
|
Chris@909
|
644 'l', 'm', 'n', 'o',
|
Chris@909
|
645 'p', 'q', 'r', 's',
|
Chris@909
|
646 't', 'u', 'v', 'w',
|
Chris@909
|
647 'x', 'y', 'z', 'braceleft',
|
Chris@909
|
648 'bar', 'braceright', 'asciitilde', '.notdef',
|
Chris@909
|
649 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
650 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
651 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
652 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
653 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
654 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
655 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
656 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
657 'space', 'exclamdown', 'cent', 'sterling',
|
Chris@909
|
658 'currency', 'yen', 'brokenbar', 'section',
|
Chris@909
|
659 'dieresis', 'copyright', 'ordfeminine', 'guillemotleft',
|
Chris@909
|
660 'logicalnot', 'hyphen', 'registered', 'macron',
|
Chris@909
|
661 'degree', 'plusminus', 'twosuperior', 'threesuperior',
|
Chris@909
|
662 'acute', 'mu', 'paragraph', 'periodcentered',
|
Chris@909
|
663 'cedilla', 'onesuperior', 'ordmasculine', 'guillemotright',
|
Chris@909
|
664 'onequarter', 'onehalf', 'threequarters', 'questiondown',
|
Chris@909
|
665 'Agrave', 'Aacute', 'Acircumflex', 'Atilde',
|
Chris@909
|
666 'Adieresis', 'Aring', 'AE', 'Ccedilla',
|
Chris@909
|
667 'Egrave', 'Eacute', 'Ecircumflex', 'Edieresis',
|
Chris@909
|
668 'Igrave', 'Iacute', 'Icircumflex', 'Idieresis',
|
Chris@909
|
669 'Eth', 'Ntilde', 'Ograve', 'Oacute',
|
Chris@909
|
670 'Ocircumflex', 'Otilde', 'Odieresis', 'multiply',
|
Chris@909
|
671 'Oslash', 'Ugrave', 'Uacute', 'Ucircumflex',
|
Chris@909
|
672 'Udieresis', 'Yacute', 'Thorn', 'germandbls',
|
Chris@909
|
673 'agrave', 'aacute', 'acircumflex', 'atilde',
|
Chris@909
|
674 'adieresis', 'aring', 'ae', 'ccedilla',
|
Chris@909
|
675 'egrave', 'eacute', 'ecircumflex', 'edieresis',
|
Chris@909
|
676 'igrave', 'iacute', 'icircumflex', 'idieresis',
|
Chris@909
|
677 'eth', 'ntilde', 'ograve', 'oacute',
|
Chris@909
|
678 'ocircumflex', 'otilde', 'odieresis', 'divide',
|
Chris@909
|
679 'oslash', 'ugrave', 'uacute', 'ucircumflex',
|
Chris@909
|
680 'udieresis', 'yacute', 'thorn', 'ydieresis'
|
Chris@909
|
681 ],
|
Chris@909
|
682 # Central Europe
|
Chris@909
|
683 'ISO-8859-2' => [
|
Chris@909
|
684 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
685 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
686 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
687 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
688 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
689 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
690 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
691 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
692 'space', 'exclam', 'quotedbl', 'numbersign',
|
Chris@909
|
693 'dollar', 'percent', 'ampersand', 'quotesingle',
|
Chris@909
|
694 'parenleft', 'parenright', 'asterisk', 'plus',
|
Chris@909
|
695 'comma', 'hyphen', 'period', 'slash',
|
Chris@909
|
696 'zero', 'one', 'two', 'three',
|
Chris@909
|
697 'four', 'five', 'six', 'seven',
|
Chris@909
|
698 'eight', 'nine', 'colon', 'semicolon',
|
Chris@909
|
699 'less', 'equal', 'greater', 'question',
|
Chris@909
|
700 'at', 'A', 'B', 'C',
|
Chris@909
|
701 'D', 'E', 'F', 'G',
|
Chris@909
|
702 'H', 'I', 'J', 'K',
|
Chris@909
|
703 'L', 'M', 'N', 'O',
|
Chris@909
|
704 'P', 'Q', 'R', 'S',
|
Chris@909
|
705 'T', 'U', 'V', 'W',
|
Chris@909
|
706 'X', 'Y', 'Z', 'bracketleft',
|
Chris@909
|
707 'backslash', 'bracketright', 'asciicircum', 'underscore',
|
Chris@909
|
708 'grave', 'a', 'b', 'c',
|
Chris@909
|
709 'd', 'e', 'f', 'g',
|
Chris@909
|
710 'h', 'i', 'j', 'k',
|
Chris@909
|
711 'l', 'm', 'n', 'o',
|
Chris@909
|
712 'p', 'q', 'r', 's',
|
Chris@909
|
713 't', 'u', 'v', 'w',
|
Chris@909
|
714 'x', 'y', 'z', 'braceleft',
|
Chris@909
|
715 'bar', 'braceright', 'asciitilde', '.notdef',
|
Chris@909
|
716 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
717 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
718 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
719 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
720 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
721 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
722 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
723 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
724 'space', 'Aogonek', 'breve', 'Lslash',
|
Chris@909
|
725 'currency', 'Lcaron', 'Sacute', 'section',
|
Chris@909
|
726 'dieresis', 'Scaron', 'Scedilla', 'Tcaron',
|
Chris@909
|
727 'Zacute', 'hyphen', 'Zcaron', 'Zdotaccent',
|
Chris@909
|
728 'degree', 'aogonek', 'ogonek', 'lslash',
|
Chris@909
|
729 'acute', 'lcaron', 'sacute', 'caron',
|
Chris@909
|
730 'cedilla', 'scaron', 'scedilla', 'tcaron',
|
Chris@909
|
731 'zacute', 'hungarumlaut', 'zcaron', 'zdotaccent',
|
Chris@909
|
732 'Racute', 'Aacute', 'Acircumflex', 'Abreve',
|
Chris@909
|
733 'Adieresis', 'Lacute', 'Cacute', 'Ccedilla',
|
Chris@909
|
734 'Ccaron', 'Eacute', 'Eogonek', 'Edieresis',
|
Chris@909
|
735 'Ecaron', 'Iacute', 'Icircumflex', 'Dcaron',
|
Chris@909
|
736 'Dcroat', 'Nacute', 'Ncaron', 'Oacute',
|
Chris@909
|
737 'Ocircumflex', 'Ohungarumlaut', 'Odieresis', 'multiply',
|
Chris@909
|
738 'Rcaron', 'Uring', 'Uacute', 'Uhungarumlaut',
|
Chris@909
|
739 'Udieresis', 'Yacute', 'Tcommaaccent', 'germandbls',
|
Chris@909
|
740 'racute', 'aacute', 'acircumflex', 'abreve',
|
Chris@909
|
741 'adieresis', 'lacute', 'cacute', 'ccedilla',
|
Chris@909
|
742 'ccaron', 'eacute', 'eogonek', 'edieresis',
|
Chris@909
|
743 'ecaron', 'iacute', 'icircumflex', 'dcaron',
|
Chris@909
|
744 'dcroat', 'nacute', 'ncaron', 'oacute',
|
Chris@909
|
745 'ocircumflex', 'ohungarumlaut', 'odieresis', 'divide',
|
Chris@909
|
746 'rcaron', 'uring', 'uacute', 'uhungarumlaut',
|
Chris@909
|
747 'udieresis', 'yacute', 'tcommaaccent', 'dotaccent'
|
Chris@909
|
748 ],
|
Chris@909
|
749 # Baltic
|
Chris@909
|
750 'ISO-8859-4' => [
|
Chris@909
|
751 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
752 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
753 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
754 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
755 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
756 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
757 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
758 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
759 'space', 'exclam', 'quotedbl', 'numbersign',
|
Chris@909
|
760 'dollar', 'percent', 'ampersand', 'quotesingle',
|
Chris@909
|
761 'parenleft', 'parenright', 'asterisk', 'plus',
|
Chris@909
|
762 'comma', 'hyphen', 'period', 'slash',
|
Chris@909
|
763 'zero', 'one', 'two', 'three',
|
Chris@909
|
764 'four', 'five', 'six', 'seven',
|
Chris@909
|
765 'eight', 'nine', 'colon', 'semicolon',
|
Chris@909
|
766 'less', 'equal', 'greater', 'question',
|
Chris@909
|
767 'at', 'A', 'B', 'C',
|
Chris@909
|
768 'D', 'E', 'F', 'G',
|
Chris@909
|
769 'H', 'I', 'J', 'K',
|
Chris@909
|
770 'L', 'M', 'N', 'O',
|
Chris@909
|
771 'P', 'Q', 'R', 'S',
|
Chris@909
|
772 'T', 'U', 'V', 'W',
|
Chris@909
|
773 'X', 'Y', 'Z', 'bracketleft',
|
Chris@909
|
774 'backslash', 'bracketright', 'asciicircum', 'underscore',
|
Chris@909
|
775 'grave', 'a', 'b', 'c',
|
Chris@909
|
776 'd', 'e', 'f', 'g',
|
Chris@909
|
777 'h', 'i', 'j', 'k',
|
Chris@909
|
778 'l', 'm', 'n', 'o',
|
Chris@909
|
779 'p', 'q', 'r', 's',
|
Chris@909
|
780 't', 'u', 'v', 'w',
|
Chris@909
|
781 'x', 'y', 'z', 'braceleft',
|
Chris@909
|
782 'bar', 'braceright', 'asciitilde', '.notdef',
|
Chris@909
|
783 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
784 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
785 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
786 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
787 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
788 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
789 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
790 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
791 'space', 'Aogonek', 'kgreenlandic', 'Rcommaaccent',
|
Chris@909
|
792 'currency', 'Itilde', 'Lcommaaccent', 'section',
|
Chris@909
|
793 'dieresis', 'Scaron', 'Emacron', 'Gcommaaccent',
|
Chris@909
|
794 'Tbar', 'hyphen', 'Zcaron', 'macron',
|
Chris@909
|
795 'degree', 'aogonek', 'ogonek', 'rcommaaccent',
|
Chris@909
|
796 'acute', 'itilde', 'lcommaaccent', 'caron',
|
Chris@909
|
797 'cedilla', 'scaron', 'emacron', 'gcommaaccent',
|
Chris@909
|
798 'tbar', 'Eng', 'zcaron', 'eng',
|
Chris@909
|
799 'Amacron', 'Aacute', 'Acircumflex', 'Atilde',
|
Chris@909
|
800 'Adieresis', 'Aring', 'AE', 'Iogonek',
|
Chris@909
|
801 'Ccaron', 'Eacute', 'Eogonek', 'Edieresis',
|
Chris@909
|
802 'Edotaccent', 'Iacute', 'Icircumflex', 'Imacron',
|
Chris@909
|
803 'Dcroat', 'Ncommaaccent', 'Omacron', 'Kcommaaccent',
|
Chris@909
|
804 'Ocircumflex', 'Otilde', 'Odieresis', 'multiply',
|
Chris@909
|
805 'Oslash', 'Uogonek', 'Uacute', 'Ucircumflex',
|
Chris@909
|
806 'Udieresis', 'Utilde', 'Umacron', 'germandbls',
|
Chris@909
|
807 'amacron', 'aacute', 'acircumflex', 'atilde',
|
Chris@909
|
808 'adieresis', 'aring', 'ae', 'iogonek',
|
Chris@909
|
809 'ccaron', 'eacute', 'eogonek', 'edieresis',
|
Chris@909
|
810 'edotaccent', 'iacute', 'icircumflex', 'imacron',
|
Chris@909
|
811 'dcroat', 'ncommaaccent', 'omacron', 'kcommaaccent',
|
Chris@909
|
812 'ocircumflex', 'otilde', 'odieresis', 'divide',
|
Chris@909
|
813 'oslash', 'uogonek', 'uacute', 'ucircumflex',
|
Chris@909
|
814 'udieresis', 'utilde', 'umacron', 'dotaccent'
|
Chris@909
|
815 ],
|
Chris@909
|
816 # Cyrillic
|
Chris@909
|
817 'ISO-8859-5' => [
|
Chris@909
|
818 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
819 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
820 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
821 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
822 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
823 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
824 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
825 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
826 'space', 'exclam', 'quotedbl', 'numbersign',
|
Chris@909
|
827 'dollar', 'percent', 'ampersand', 'quotesingle',
|
Chris@909
|
828 'parenleft', 'parenright', 'asterisk', 'plus',
|
Chris@909
|
829 'comma', 'hyphen', 'period', 'slash',
|
Chris@909
|
830 'zero', 'one', 'two', 'three',
|
Chris@909
|
831 'four', 'five', 'six', 'seven',
|
Chris@909
|
832 'eight', 'nine', 'colon', 'semicolon',
|
Chris@909
|
833 'less', 'equal', 'greater', 'question',
|
Chris@909
|
834 'at', 'A', 'B', 'C',
|
Chris@909
|
835 'D', 'E', 'F', 'G',
|
Chris@909
|
836 'H', 'I', 'J', 'K',
|
Chris@909
|
837 'L', 'M', 'N', 'O',
|
Chris@909
|
838 'P', 'Q', 'R', 'S',
|
Chris@909
|
839 'T', 'U', 'V', 'W',
|
Chris@909
|
840 'X', 'Y', 'Z', 'bracketleft',
|
Chris@909
|
841 'backslash', 'bracketright', 'asciicircum', 'underscore',
|
Chris@909
|
842 'grave', 'a', 'b', 'c',
|
Chris@909
|
843 'd', 'e', 'f', 'g',
|
Chris@909
|
844 'h', 'i', 'j', 'k',
|
Chris@909
|
845 'l', 'm', 'n', 'o',
|
Chris@909
|
846 'p', 'q', 'r', 's',
|
Chris@909
|
847 't', 'u', 'v', 'w',
|
Chris@909
|
848 'x', 'y', 'z', 'braceleft',
|
Chris@909
|
849 'bar', 'braceright', 'asciitilde', '.notdef',
|
Chris@909
|
850 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
851 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
852 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
853 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
854 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
855 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
856 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
857 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
858 'space', 'afii10023', 'afii10051', 'afii10052',
|
Chris@909
|
859 'afii10053', 'afii10054', 'afii10055', 'afii10056',
|
Chris@909
|
860 'afii10057', 'afii10058', 'afii10059', 'afii10060',
|
Chris@909
|
861 'afii10061', 'hyphen', 'afii10062', 'afii10145',
|
Chris@909
|
862 'afii10017', 'afii10018', 'afii10019', 'afii10020',
|
Chris@909
|
863 'afii10021', 'afii10022', 'afii10024', 'afii10025',
|
Chris@909
|
864 'afii10026', 'afii10027', 'afii10028', 'afii10029',
|
Chris@909
|
865 'afii10030', 'afii10031', 'afii10032', 'afii10033',
|
Chris@909
|
866 'afii10034', 'afii10035', 'afii10036', 'afii10037',
|
Chris@909
|
867 'afii10038', 'afii10039', 'afii10040', 'afii10041',
|
Chris@909
|
868 'afii10042', 'afii10043', 'afii10044', 'afii10045',
|
Chris@909
|
869 'afii10046', 'afii10047', 'afii10048', 'afii10049',
|
Chris@909
|
870 'afii10065', 'afii10066', 'afii10067', 'afii10068',
|
Chris@909
|
871 'afii10069', 'afii10070', 'afii10072', 'afii10073',
|
Chris@909
|
872 'afii10074', 'afii10075', 'afii10076', 'afii10077',
|
Chris@909
|
873 'afii10078', 'afii10079', 'afii10080', 'afii10081',
|
Chris@909
|
874 'afii10082', 'afii10083', 'afii10084', 'afii10085',
|
Chris@909
|
875 'afii10086', 'afii10087', 'afii10088', 'afii10089',
|
Chris@909
|
876 'afii10090', 'afii10091', 'afii10092', 'afii10093',
|
Chris@909
|
877 'afii10094', 'afii10095', 'afii10096', 'afii10097',
|
Chris@909
|
878 'afii61352', 'afii10071', 'afii10099', 'afii10100',
|
Chris@909
|
879 'afii10101', 'afii10102', 'afii10103', 'afii10104',
|
Chris@909
|
880 'afii10105', 'afii10106', 'afii10107', 'afii10108',
|
Chris@909
|
881 'afii10109', 'section', 'afii10110', 'afii10193'
|
Chris@909
|
882 ],
|
Chris@909
|
883 # Greek
|
Chris@909
|
884 'ISO-8859-7' => [
|
Chris@909
|
885 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
886 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
887 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
888 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
889 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
890 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
891 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
892 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
893 'space', 'exclam', 'quotedbl', 'numbersign',
|
Chris@909
|
894 'dollar', 'percent', 'ampersand', 'quotesingle',
|
Chris@909
|
895 'parenleft', 'parenright', 'asterisk', 'plus',
|
Chris@909
|
896 'comma', 'hyphen', 'period', 'slash',
|
Chris@909
|
897 'zero', 'one', 'two', 'three',
|
Chris@909
|
898 'four', 'five', 'six', 'seven',
|
Chris@909
|
899 'eight', 'nine', 'colon', 'semicolon',
|
Chris@909
|
900 'less', 'equal', 'greater', 'question',
|
Chris@909
|
901 'at', 'A', 'B', 'C',
|
Chris@909
|
902 'D', 'E', 'F', 'G',
|
Chris@909
|
903 'H', 'I', 'J', 'K',
|
Chris@909
|
904 'L', 'M', 'N', 'O',
|
Chris@909
|
905 'P', 'Q', 'R', 'S',
|
Chris@909
|
906 'T', 'U', 'V', 'W',
|
Chris@909
|
907 'X', 'Y', 'Z', 'bracketleft',
|
Chris@909
|
908 'backslash', 'bracketright', 'asciicircum', 'underscore',
|
Chris@909
|
909 'grave', 'a', 'b', 'c',
|
Chris@909
|
910 'd', 'e', 'f', 'g',
|
Chris@909
|
911 'h', 'i', 'j', 'k',
|
Chris@909
|
912 'l', 'm', 'n', 'o',
|
Chris@909
|
913 'p', 'q', 'r', 's',
|
Chris@909
|
914 't', 'u', 'v', 'w',
|
Chris@909
|
915 'x', 'y', 'z', 'braceleft',
|
Chris@909
|
916 'bar', 'braceright', 'asciitilde', '.notdef',
|
Chris@909
|
917 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
918 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
919 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
920 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
921 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
922 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
923 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
924 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
925 'space', 'quoteleft', 'quoteright', 'sterling',
|
Chris@909
|
926 '.notdef', '.notdef', 'brokenbar', 'section',
|
Chris@909
|
927 'dieresis', 'copyright', '.notdef', 'guillemotleft',
|
Chris@909
|
928 'logicalnot', 'hyphen', '.notdef', 'afii00208',
|
Chris@909
|
929 'degree', 'plusminus', 'twosuperior', 'threesuperior',
|
Chris@909
|
930 'tonos', 'dieresistonos', 'Alphatonos', 'periodcentered',
|
Chris@909
|
931 'Epsilontonos', 'Etatonos', 'Iotatonos', 'guillemotright',
|
Chris@909
|
932 'Omicrontonos', 'onehalf', 'Upsilontonos', 'Omegatonos',
|
Chris@909
|
933 'iotadieresistonos','Alpha', 'Beta', 'Gamma',
|
Chris@909
|
934 'Delta', 'Epsilon', 'Zeta', 'Eta',
|
Chris@909
|
935 'Theta', 'Iota', 'Kappa', 'Lambda',
|
Chris@909
|
936 'Mu', 'Nu', 'Xi', 'Omicron',
|
Chris@909
|
937 'Pi', 'Rho', '.notdef', 'Sigma',
|
Chris@909
|
938 'Tau', 'Upsilon', 'Phi', 'Chi',
|
Chris@909
|
939 'Psi', 'Omega', 'Iotadieresis', 'Upsilondieresis',
|
Chris@909
|
940 'alphatonos', 'epsilontonos', 'etatonos', 'iotatonos',
|
Chris@909
|
941 'upsilondieresistonos','alpha', 'beta', 'gamma',
|
Chris@909
|
942 'delta', 'epsilon', 'zeta', 'eta',
|
Chris@909
|
943 'theta', 'iota', 'kappa', 'lambda',
|
Chris@909
|
944 'mu', 'nu', 'xi', 'omicron',
|
Chris@909
|
945 'pi', 'rho', 'sigma1', 'sigma',
|
Chris@909
|
946 'tau', 'upsilon', 'phi', 'chi',
|
Chris@909
|
947 'psi', 'omega', 'iotadieresis', 'upsilondieresis',
|
Chris@909
|
948 'omicrontonos', 'upsilontonos', 'omegatonos', '.notdef'
|
Chris@909
|
949 ],
|
Chris@909
|
950 # Turkish
|
Chris@909
|
951 'ISO-8859-9' => [
|
Chris@909
|
952 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
953 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
954 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
955 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
956 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
957 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
958 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
959 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
960 'space', 'exclam', 'quotedbl', 'numbersign',
|
Chris@909
|
961 'dollar', 'percent', 'ampersand', 'quotesingle',
|
Chris@909
|
962 'parenleft', 'parenright', 'asterisk', 'plus',
|
Chris@909
|
963 'comma', 'hyphen', 'period', 'slash',
|
Chris@909
|
964 'zero', 'one', 'two', 'three',
|
Chris@909
|
965 'four', 'five', 'six', 'seven',
|
Chris@909
|
966 'eight', 'nine', 'colon', 'semicolon',
|
Chris@909
|
967 'less', 'equal', 'greater', 'question',
|
Chris@909
|
968 'at', 'A', 'B', 'C',
|
Chris@909
|
969 'D', 'E', 'F', 'G',
|
Chris@909
|
970 'H', 'I', 'J', 'K',
|
Chris@909
|
971 'L', 'M', 'N', 'O',
|
Chris@909
|
972 'P', 'Q', 'R', 'S',
|
Chris@909
|
973 'T', 'U', 'V', 'W',
|
Chris@909
|
974 'X', 'Y', 'Z', 'bracketleft',
|
Chris@909
|
975 'backslash', 'bracketright', 'asciicircum', 'underscore',
|
Chris@909
|
976 'grave', 'a', 'b', 'c',
|
Chris@909
|
977 'd', 'e', 'f', 'g',
|
Chris@909
|
978 'h', 'i', 'j', 'k',
|
Chris@909
|
979 'l', 'm', 'n', 'o',
|
Chris@909
|
980 'p', 'q', 'r', 's',
|
Chris@909
|
981 't', 'u', 'v', 'w',
|
Chris@909
|
982 'x', 'y', 'z', 'braceleft',
|
Chris@909
|
983 'bar', 'braceright', 'asciitilde', '.notdef',
|
Chris@909
|
984 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
985 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
986 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
987 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
988 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
989 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
990 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
991 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
992 'space', 'exclamdown', 'cent', 'sterling',
|
Chris@909
|
993 'currency', 'yen', 'brokenbar', 'section',
|
Chris@909
|
994 'dieresis', 'copyright', 'ordfeminine', 'guillemotleft',
|
Chris@909
|
995 'logicalnot', 'hyphen', 'registered', 'macron',
|
Chris@909
|
996 'degree', 'plusminus', 'twosuperior', 'threesuperior',
|
Chris@909
|
997 'acute', 'mu', 'paragraph', 'periodcentered',
|
Chris@909
|
998 'cedilla', 'onesuperior', 'ordmasculine', 'guillemotright',
|
Chris@909
|
999 'onequarter', 'onehalf', 'threequarters', 'questiondown',
|
Chris@909
|
1000 'Agrave', 'Aacute', 'Acircumflex', 'Atilde',
|
Chris@909
|
1001 'Adieresis', 'Aring', 'AE', 'Ccedilla',
|
Chris@909
|
1002 'Egrave', 'Eacute', 'Ecircumflex', 'Edieresis',
|
Chris@909
|
1003 'Igrave', 'Iacute', 'Icircumflex', 'Idieresis',
|
Chris@909
|
1004 'Gbreve', 'Ntilde', 'Ograve', 'Oacute',
|
Chris@909
|
1005 'Ocircumflex', 'Otilde', 'Odieresis', 'multiply',
|
Chris@909
|
1006 'Oslash', 'Ugrave', 'Uacute', 'Ucircumflex',
|
Chris@909
|
1007 'Udieresis', 'Idotaccent', 'Scedilla', 'germandbls',
|
Chris@909
|
1008 'agrave', 'aacute', 'acircumflex', 'atilde',
|
Chris@909
|
1009 'adieresis', 'aring', 'ae', 'ccedilla',
|
Chris@909
|
1010 'egrave', 'eacute', 'ecircumflex', 'edieresis',
|
Chris@909
|
1011 'igrave', 'iacute', 'icircumflex', 'idieresis',
|
Chris@909
|
1012 'gbreve', 'ntilde', 'ograve', 'oacute',
|
Chris@909
|
1013 'ocircumflex', 'otilde', 'odieresis', 'divide',
|
Chris@909
|
1014 'oslash', 'ugrave', 'uacute', 'ucircumflex',
|
Chris@909
|
1015 'udieresis', 'dotlessi', 'scedilla', 'ydieresis'
|
Chris@909
|
1016 ],
|
Chris@909
|
1017 # Thai
|
Chris@909
|
1018 'ISO-8859-11' => [
|
Chris@909
|
1019 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1020 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1021 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1022 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1023 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1024 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1025 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1026 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1027 'space', 'exclam', 'quotedbl', 'numbersign',
|
Chris@909
|
1028 'dollar', 'percent', 'ampersand', 'quotesingle',
|
Chris@909
|
1029 'parenleft', 'parenright', 'asterisk', 'plus',
|
Chris@909
|
1030 'comma', 'hyphen', 'period', 'slash',
|
Chris@909
|
1031 'zero', 'one', 'two', 'three',
|
Chris@909
|
1032 'four', 'five', 'six', 'seven',
|
Chris@909
|
1033 'eight', 'nine', 'colon', 'semicolon',
|
Chris@909
|
1034 'less', 'equal', 'greater', 'question',
|
Chris@909
|
1035 'at', 'A', 'B', 'C',
|
Chris@909
|
1036 'D', 'E', 'F', 'G',
|
Chris@909
|
1037 'H', 'I', 'J', 'K',
|
Chris@909
|
1038 'L', 'M', 'N', 'O',
|
Chris@909
|
1039 'P', 'Q', 'R', 'S',
|
Chris@909
|
1040 'T', 'U', 'V', 'W',
|
Chris@909
|
1041 'X', 'Y', 'Z', 'bracketleft',
|
Chris@909
|
1042 'backslash', 'bracketright', 'asciicircum', 'underscore',
|
Chris@909
|
1043 'grave', 'a', 'b', 'c',
|
Chris@909
|
1044 'd', 'e', 'f', 'g',
|
Chris@909
|
1045 'h', 'i', 'j', 'k',
|
Chris@909
|
1046 'l', 'm', 'n', 'o',
|
Chris@909
|
1047 'p', 'q', 'r', 's',
|
Chris@909
|
1048 't', 'u', 'v', 'w',
|
Chris@909
|
1049 'x', 'y', 'z', 'braceleft',
|
Chris@909
|
1050 'bar', 'braceright', 'asciitilde', '.notdef',
|
Chris@909
|
1051 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1052 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1053 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1054 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1055 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1056 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1057 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1058 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1059 'space', 'kokaithai', 'khokhaithai', 'khokhuatthai',
|
Chris@909
|
1060 'khokhwaithai', 'khokhonthai', 'khorakhangthai', 'ngonguthai',
|
Chris@909
|
1061 'chochanthai', 'chochingthai', 'chochangthai', 'sosothai',
|
Chris@909
|
1062 'chochoethai', 'yoyingthai', 'dochadathai', 'topatakthai',
|
Chris@909
|
1063 'thothanthai', 'thonangmonthothai','thophuthaothai', 'nonenthai',
|
Chris@909
|
1064 'dodekthai', 'totaothai', 'thothungthai', 'thothahanthai',
|
Chris@909
|
1065 'thothongthai', 'nonuthai', 'bobaimaithai', 'poplathai',
|
Chris@909
|
1066 'phophungthai', 'fofathai', 'phophanthai', 'fofanthai',
|
Chris@909
|
1067 'phosamphaothai', 'momathai', 'yoyakthai', 'roruathai',
|
Chris@909
|
1068 'ruthai', 'lolingthai', 'luthai', 'wowaenthai',
|
Chris@909
|
1069 'sosalathai', 'sorusithai', 'sosuathai', 'hohipthai',
|
Chris@909
|
1070 'lochulathai', 'oangthai', 'honokhukthai', 'paiyannoithai',
|
Chris@909
|
1071 'saraathai', 'maihanakatthai', 'saraaathai', 'saraamthai',
|
Chris@909
|
1072 'saraithai', 'saraiithai', 'sarauethai', 'saraueethai',
|
Chris@909
|
1073 'sarauthai', 'sarauuthai', 'phinthuthai', '.notdef',
|
Chris@909
|
1074 '.notdef', '.notdef', '.notdef', 'bahtthai',
|
Chris@909
|
1075 'saraethai', 'saraaethai', 'saraothai', 'saraaimaimuanthai',
|
Chris@909
|
1076 'saraaimaimalaithai','lakkhangyaothai','maiyamokthai', 'maitaikhuthai',
|
Chris@909
|
1077 'maiekthai', 'maithothai', 'maitrithai', 'maichattawathai',
|
Chris@909
|
1078 'thanthakhatthai','nikhahitthai', 'yamakkanthai', 'fongmanthai',
|
Chris@909
|
1079 'zerothai', 'onethai', 'twothai', 'threethai',
|
Chris@909
|
1080 'fourthai', 'fivethai', 'sixthai', 'seventhai',
|
Chris@909
|
1081 'eightthai', 'ninethai', 'angkhankhuthai', 'khomutthai',
|
Chris@909
|
1082 '.notdef', '.notdef', '.notdef', '.notdef'
|
Chris@909
|
1083 ],
|
Chris@909
|
1084 # Western Europe
|
Chris@909
|
1085 'ISO-8859-15' => [
|
Chris@909
|
1086 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1087 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1088 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1089 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1090 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1091 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1092 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1093 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1094 'space', 'exclam', 'quotedbl', 'numbersign',
|
Chris@909
|
1095 'dollar', 'percent', 'ampersand', 'quotesingle',
|
Chris@909
|
1096 'parenleft', 'parenright', 'asterisk', 'plus',
|
Chris@909
|
1097 'comma', 'hyphen', 'period', 'slash',
|
Chris@909
|
1098 'zero', 'one', 'two', 'three',
|
Chris@909
|
1099 'four', 'five', 'six', 'seven',
|
Chris@909
|
1100 'eight', 'nine', 'colon', 'semicolon',
|
Chris@909
|
1101 'less', 'equal', 'greater', 'question',
|
Chris@909
|
1102 'at', 'A', 'B', 'C',
|
Chris@909
|
1103 'D', 'E', 'F', 'G',
|
Chris@909
|
1104 'H', 'I', 'J', 'K',
|
Chris@909
|
1105 'L', 'M', 'N', 'O',
|
Chris@909
|
1106 'P', 'Q', 'R', 'S',
|
Chris@909
|
1107 'T', 'U', 'V', 'W',
|
Chris@909
|
1108 'X', 'Y', 'Z', 'bracketleft',
|
Chris@909
|
1109 'backslash', 'bracketright', 'asciicircum', 'underscore',
|
Chris@909
|
1110 'grave', 'a', 'b', 'c',
|
Chris@909
|
1111 'd', 'e', 'f', 'g',
|
Chris@909
|
1112 'h', 'i', 'j', 'k',
|
Chris@909
|
1113 'l', 'm', 'n', 'o',
|
Chris@909
|
1114 'p', 'q', 'r', 's',
|
Chris@909
|
1115 't', 'u', 'v', 'w',
|
Chris@909
|
1116 'x', 'y', 'z', 'braceleft',
|
Chris@909
|
1117 'bar', 'braceright', 'asciitilde', '.notdef',
|
Chris@909
|
1118 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1119 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1120 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1121 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1122 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1123 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1124 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1125 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1126 'space', 'exclamdown', 'cent', 'sterling',
|
Chris@909
|
1127 'Euro', 'yen', 'Scaron', 'section',
|
Chris@909
|
1128 'scaron', 'copyright', 'ordfeminine', 'guillemotleft',
|
Chris@909
|
1129 'logicalnot', 'hyphen', 'registered', 'macron',
|
Chris@909
|
1130 'degree', 'plusminus', 'twosuperior', 'threesuperior',
|
Chris@909
|
1131 'Zcaron', 'mu', 'paragraph', 'periodcentered',
|
Chris@909
|
1132 'zcaron', 'onesuperior', 'ordmasculine', 'guillemotright',
|
Chris@909
|
1133 'OE', 'oe', 'Ydieresis', 'questiondown',
|
Chris@909
|
1134 'Agrave', 'Aacute', 'Acircumflex', 'Atilde',
|
Chris@909
|
1135 'Adieresis', 'Aring', 'AE', 'Ccedilla',
|
Chris@909
|
1136 'Egrave', 'Eacute', 'Ecircumflex', 'Edieresis',
|
Chris@909
|
1137 'Igrave', 'Iacute', 'Icircumflex', 'Idieresis',
|
Chris@909
|
1138 'Eth', 'Ntilde', 'Ograve', 'Oacute',
|
Chris@909
|
1139 'Ocircumflex', 'Otilde', 'Odieresis', 'multiply',
|
Chris@909
|
1140 'Oslash', 'Ugrave', 'Uacute', 'Ucircumflex',
|
Chris@909
|
1141 'Udieresis', 'Yacute', 'Thorn', 'germandbls',
|
Chris@909
|
1142 'agrave', 'aacute', 'acircumflex', 'atilde',
|
Chris@909
|
1143 'adieresis', 'aring', 'ae', 'ccedilla',
|
Chris@909
|
1144 'egrave', 'eacute', 'ecircumflex', 'edieresis',
|
Chris@909
|
1145 'igrave', 'iacute', 'icircumflex', 'idieresis',
|
Chris@909
|
1146 'eth', 'ntilde', 'ograve', 'oacute',
|
Chris@909
|
1147 'ocircumflex', 'otilde', 'odieresis', 'divide',
|
Chris@909
|
1148 'oslash', 'ugrave', 'uacute', 'ucircumflex',
|
Chris@909
|
1149 'udieresis', 'yacute', 'thorn', 'ydieresis'
|
Chris@909
|
1150 ],
|
Chris@909
|
1151 # Central Europe
|
Chris@909
|
1152 'ISO-8859-16' => [
|
Chris@909
|
1153 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1154 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1155 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1156 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1157 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1158 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1159 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1160 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1161 'space', 'exclam', 'quotedbl', 'numbersign',
|
Chris@909
|
1162 'dollar', 'percent', 'ampersand', 'quotesingle',
|
Chris@909
|
1163 'parenleft', 'parenright', 'asterisk', 'plus',
|
Chris@909
|
1164 'comma', 'hyphen', 'period', 'slash',
|
Chris@909
|
1165 'zero', 'one', 'two', 'three',
|
Chris@909
|
1166 'four', 'five', 'six', 'seven',
|
Chris@909
|
1167 'eight', 'nine', 'colon', 'semicolon',
|
Chris@909
|
1168 'less', 'equal', 'greater', 'question',
|
Chris@909
|
1169 'at', 'A', 'B', 'C',
|
Chris@909
|
1170 'D', 'E', 'F', 'G',
|
Chris@909
|
1171 'H', 'I', 'J', 'K',
|
Chris@909
|
1172 'L', 'M', 'N', 'O',
|
Chris@909
|
1173 'P', 'Q', 'R', 'S',
|
Chris@909
|
1174 'T', 'U', 'V', 'W',
|
Chris@909
|
1175 'X', 'Y', 'Z', 'bracketleft',
|
Chris@909
|
1176 'backslash', 'bracketright', 'asciicircum', 'underscore',
|
Chris@909
|
1177 'grave', 'a', 'b', 'c',
|
Chris@909
|
1178 'd', 'e', 'f', 'g',
|
Chris@909
|
1179 'h', 'i', 'j', 'k',
|
Chris@909
|
1180 'l', 'm', 'n', 'o',
|
Chris@909
|
1181 'p', 'q', 'r', 's',
|
Chris@909
|
1182 't', 'u', 'v', 'w',
|
Chris@909
|
1183 'x', 'y', 'z', 'braceleft',
|
Chris@909
|
1184 'bar', 'braceright', 'asciitilde', '.notdef',
|
Chris@909
|
1185 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1186 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1187 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1188 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1189 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1190 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1191 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1192 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1193 'space', 'Aogonek', 'aogonek', 'Lslash',
|
Chris@909
|
1194 'Euro', 'quotedblbase', 'Scaron', 'section',
|
Chris@909
|
1195 'scaron', 'copyright', 'Scommaaccent', 'guillemotleft',
|
Chris@909
|
1196 'Zacute', 'hyphen', 'zacute', 'Zdotaccent',
|
Chris@909
|
1197 'degree', 'plusminus', 'Ccaron', 'lslash',
|
Chris@909
|
1198 'Zcaron', 'quotedblright', 'paragraph', 'periodcentered',
|
Chris@909
|
1199 'zcaron', 'ccaron', 'scommaaccent', 'guillemotright',
|
Chris@909
|
1200 'OE', 'oe', 'Ydieresis', 'zdotaccent',
|
Chris@909
|
1201 'Agrave', 'Aacute', 'Acircumflex', 'Abreve',
|
Chris@909
|
1202 'Adieresis', 'Cacute', 'AE', 'Ccedilla',
|
Chris@909
|
1203 'Egrave', 'Eacute', 'Ecircumflex', 'Edieresis',
|
Chris@909
|
1204 'Igrave', 'Iacute', 'Icircumflex', 'Idieresis',
|
Chris@909
|
1205 'Dcroat', 'Nacute', 'Ograve', 'Oacute',
|
Chris@909
|
1206 'Ocircumflex', 'Ohungarumlaut', 'Odieresis', 'Sacute',
|
Chris@909
|
1207 'Uhungarumlaut', 'Ugrave', 'Uacute', 'Ucircumflex',
|
Chris@909
|
1208 'Udieresis', 'Eogonek', 'Tcommaaccent', 'germandbls',
|
Chris@909
|
1209 'agrave', 'aacute', 'acircumflex', 'abreve',
|
Chris@909
|
1210 'adieresis', 'cacute', 'ae', 'ccedilla',
|
Chris@909
|
1211 'egrave', 'eacute', 'ecircumflex', 'edieresis',
|
Chris@909
|
1212 'igrave', 'iacute', 'icircumflex', 'idieresis',
|
Chris@909
|
1213 'dcroat', 'nacute', 'ograve', 'oacute',
|
Chris@909
|
1214 'ocircumflex', 'ohungarumlaut', 'odieresis', 'sacute',
|
Chris@909
|
1215 'uhungarumlaut', 'ugrave', 'uacute', 'ucircumflex',
|
Chris@909
|
1216 'udieresis', 'eogonek', 'tcommaaccent', 'ydieresis'
|
Chris@909
|
1217 ],
|
Chris@909
|
1218 # Russian
|
Chris@909
|
1219 'KOI8-R' => [
|
Chris@909
|
1220 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1221 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1222 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1223 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1224 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1225 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1226 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1227 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1228 'space', 'exclam', 'quotedbl', 'numbersign',
|
Chris@909
|
1229 'dollar', 'percent', 'ampersand', 'quotesingle',
|
Chris@909
|
1230 'parenleft', 'parenright', 'asterisk', 'plus',
|
Chris@909
|
1231 'comma', 'hyphen', 'period', 'slash',
|
Chris@909
|
1232 'zero', 'one', 'two', 'three',
|
Chris@909
|
1233 'four', 'five', 'six', 'seven',
|
Chris@909
|
1234 'eight', 'nine', 'colon', 'semicolon',
|
Chris@909
|
1235 'less', 'equal', 'greater', 'question',
|
Chris@909
|
1236 'at', 'A', 'B', 'C',
|
Chris@909
|
1237 'D', 'E', 'F', 'G',
|
Chris@909
|
1238 'H', 'I', 'J', 'K',
|
Chris@909
|
1239 'L', 'M', 'N', 'O',
|
Chris@909
|
1240 'P', 'Q', 'R', 'S',
|
Chris@909
|
1241 'T', 'U', 'V', 'W',
|
Chris@909
|
1242 'X', 'Y', 'Z', 'bracketleft',
|
Chris@909
|
1243 'backslash', 'bracketright', 'asciicircum', 'underscore',
|
Chris@909
|
1244 'grave', 'a', 'b', 'c',
|
Chris@909
|
1245 'd', 'e', 'f', 'g',
|
Chris@909
|
1246 'h', 'i', 'j', 'k',
|
Chris@909
|
1247 'l', 'm', 'n', 'o',
|
Chris@909
|
1248 'p', 'q', 'r', 's',
|
Chris@909
|
1249 't', 'u', 'v', 'w',
|
Chris@909
|
1250 'x', 'y', 'z', 'braceleft',
|
Chris@909
|
1251 'bar', 'braceright', 'asciitilde', '.notdef',
|
Chris@909
|
1252 'SF100000', 'SF110000', 'SF010000', 'SF030000',
|
Chris@909
|
1253 'SF020000', 'SF040000', 'SF080000', 'SF090000',
|
Chris@909
|
1254 'SF060000', 'SF070000', 'SF050000', 'upblock',
|
Chris@909
|
1255 'dnblock', 'block', 'lfblock', 'rtblock',
|
Chris@909
|
1256 'ltshade', 'shade', 'dkshade', 'integraltp',
|
Chris@909
|
1257 'filledbox', 'periodcentered', 'radical', 'approxequal',
|
Chris@909
|
1258 'lessequal', 'greaterequal', 'space', 'integralbt',
|
Chris@909
|
1259 'degree', 'twosuperior', 'periodcentered', 'divide',
|
Chris@909
|
1260 'SF430000', 'SF240000', 'SF510000', 'afii10071',
|
Chris@909
|
1261 'SF520000', 'SF390000', 'SF220000', 'SF210000',
|
Chris@909
|
1262 'SF250000', 'SF500000', 'SF490000', 'SF380000',
|
Chris@909
|
1263 'SF280000', 'SF270000', 'SF260000', 'SF360000',
|
Chris@909
|
1264 'SF370000', 'SF420000', 'SF190000', 'afii10023',
|
Chris@909
|
1265 'SF200000', 'SF230000', 'SF470000', 'SF480000',
|
Chris@909
|
1266 'SF410000', 'SF450000', 'SF460000', 'SF400000',
|
Chris@909
|
1267 'SF540000', 'SF530000', 'SF440000', 'copyright',
|
Chris@909
|
1268 'afii10096', 'afii10065', 'afii10066', 'afii10088',
|
Chris@909
|
1269 'afii10069', 'afii10070', 'afii10086', 'afii10068',
|
Chris@909
|
1270 'afii10087', 'afii10074', 'afii10075', 'afii10076',
|
Chris@909
|
1271 'afii10077', 'afii10078', 'afii10079', 'afii10080',
|
Chris@909
|
1272 'afii10081', 'afii10097', 'afii10082', 'afii10083',
|
Chris@909
|
1273 'afii10084', 'afii10085', 'afii10072', 'afii10067',
|
Chris@909
|
1274 'afii10094', 'afii10093', 'afii10073', 'afii10090',
|
Chris@909
|
1275 'afii10095', 'afii10091', 'afii10089', 'afii10092',
|
Chris@909
|
1276 'afii10048', 'afii10017', 'afii10018', 'afii10040',
|
Chris@909
|
1277 'afii10021', 'afii10022', 'afii10038', 'afii10020',
|
Chris@909
|
1278 'afii10039', 'afii10026', 'afii10027', 'afii10028',
|
Chris@909
|
1279 'afii10029', 'afii10030', 'afii10031', 'afii10032',
|
Chris@909
|
1280 'afii10033', 'afii10049', 'afii10034', 'afii10035',
|
Chris@909
|
1281 'afii10036', 'afii10037', 'afii10024', 'afii10019',
|
Chris@909
|
1282 'afii10046', 'afii10045', 'afii10025', 'afii10042',
|
Chris@909
|
1283 'afii10047', 'afii10043', 'afii10041', 'afii10044'
|
Chris@909
|
1284 ],
|
Chris@909
|
1285 # Ukrainian
|
Chris@909
|
1286 'KOI8-U' => [
|
Chris@909
|
1287 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1288 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1289 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1290 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1291 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1292 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1293 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1294 '.notdef', '.notdef', '.notdef', '.notdef',
|
Chris@909
|
1295 'space', 'exclam', 'quotedbl', 'numbersign',
|
Chris@909
|
1296 'dollar', 'percent', 'ampersand', 'quotesingle',
|
Chris@909
|
1297 'parenleft', 'parenright', 'asterisk', 'plus',
|
Chris@909
|
1298 'comma', 'hyphen', 'period', 'slash',
|
Chris@909
|
1299 'zero', 'one', 'two', 'three',
|
Chris@909
|
1300 'four', 'five', 'six', 'seven',
|
Chris@909
|
1301 'eight', 'nine', 'colon', 'semicolon',
|
Chris@909
|
1302 'less', 'equal', 'greater', 'question',
|
Chris@909
|
1303 'at', 'A', 'B', 'C',
|
Chris@909
|
1304 'D', 'E', 'F', 'G',
|
Chris@909
|
1305 'H', 'I', 'J', 'K',
|
Chris@909
|
1306 'L', 'M', 'N', 'O',
|
Chris@909
|
1307 'P', 'Q', 'R', 'S',
|
Chris@909
|
1308 'T', 'U', 'V', 'W',
|
Chris@909
|
1309 'X', 'Y', 'Z', 'bracketleft',
|
Chris@909
|
1310 'backslash', 'bracketright', 'asciicircum', 'underscore',
|
Chris@909
|
1311 'grave', 'a', 'b', 'c',
|
Chris@909
|
1312 'd', 'e', 'f', 'g',
|
Chris@909
|
1313 'h', 'i', 'j', 'k',
|
Chris@909
|
1314 'l', 'm', 'n', 'o',
|
Chris@909
|
1315 'p', 'q', 'r', 's',
|
Chris@909
|
1316 't', 'u', 'v', 'w',
|
Chris@909
|
1317 'x', 'y', 'z', 'braceleft',
|
Chris@909
|
1318 'bar', 'braceright', 'asciitilde', '.notdef',
|
Chris@909
|
1319 'SF100000', 'SF110000', 'SF010000', 'SF030000',
|
Chris@909
|
1320 'SF020000', 'SF040000', 'SF080000', 'SF090000',
|
Chris@909
|
1321 'SF060000', 'SF070000', 'SF050000', 'upblock',
|
Chris@909
|
1322 'dnblock', 'block', 'lfblock', 'rtblock',
|
Chris@909
|
1323 'ltshade', 'shade', 'dkshade', 'integraltp',
|
Chris@909
|
1324 'filledbox', 'bullet', 'radical', 'approxequal',
|
Chris@909
|
1325 'lessequal', 'greaterequal', 'space', 'integralbt',
|
Chris@909
|
1326 'degree', 'twosuperior', 'periodcentered', 'divide',
|
Chris@909
|
1327 'SF430000', 'SF240000', 'SF510000', 'afii10071',
|
Chris@909
|
1328 'afii10101', 'SF390000', 'afii10103', 'afii10104',
|
Chris@909
|
1329 'SF250000', 'SF500000', 'SF490000', 'SF380000',
|
Chris@909
|
1330 'SF280000', 'afii10098', 'SF260000', 'SF360000',
|
Chris@909
|
1331 'SF370000', 'SF420000', 'SF190000', 'afii10023',
|
Chris@909
|
1332 'afii10053', 'SF230000', 'afii10055', 'afii10056',
|
Chris@909
|
1333 'SF410000', 'SF450000', 'SF460000', 'SF400000',
|
Chris@909
|
1334 'SF540000', 'afii10050', 'SF440000', 'copyright',
|
Chris@909
|
1335 'afii10096', 'afii10065', 'afii10066', 'afii10088',
|
Chris@909
|
1336 'afii10069', 'afii10070', 'afii10086', 'afii10068',
|
Chris@909
|
1337 'afii10087', 'afii10074', 'afii10075', 'afii10076',
|
Chris@909
|
1338 'afii10077', 'afii10078', 'afii10079', 'afii10080',
|
Chris@909
|
1339 'afii10081', 'afii10097', 'afii10082', 'afii10083',
|
Chris@909
|
1340 'afii10084', 'afii10085', 'afii10072', 'afii10067',
|
Chris@909
|
1341 'afii10094', 'afii10093', 'afii10073', 'afii10090',
|
Chris@909
|
1342 'afii10095', 'afii10091', 'afii10089', 'afii10092',
|
Chris@909
|
1343 'afii10048', 'afii10017', 'afii10018', 'afii10040',
|
Chris@909
|
1344 'afii10021', 'afii10022', 'afii10038', 'afii10020',
|
Chris@909
|
1345 'afii10039', 'afii10026', 'afii10027', 'afii10028',
|
Chris@909
|
1346 'afii10029', 'afii10030', 'afii10031', 'afii10032',
|
Chris@909
|
1347 'afii10033', 'afii10049', 'afii10034', 'afii10035',
|
Chris@909
|
1348 'afii10036', 'afii10037', 'afii10024', 'afii10019',
|
Chris@909
|
1349 'afii10046', 'afii10045', 'afii10025', 'afii10042',
|
Chris@909
|
1350 'afii10047', 'afii10043', 'afii10041', 'afii10044'
|
Chris@909
|
1351 ]
|
Chris@909
|
1352 }
|
Chris@909
|
1353
|
Chris@909
|
1354 def ReadAFM(file, map)
|
Chris@909
|
1355
|
Chris@909
|
1356 # Read a font metric file
|
Chris@909
|
1357 a = IO.readlines(file)
|
Chris@909
|
1358
|
Chris@909
|
1359 raise "File no found: #{file}" if a.size == 0
|
Chris@909
|
1360
|
Chris@909
|
1361 widths = {}
|
Chris@909
|
1362 fm = {}
|
Chris@909
|
1363 fix = { 'Edot' => 'Edotaccent', 'edot' => 'edotaccent',
|
Chris@909
|
1364 'Idot' => 'Idotaccent',
|
Chris@909
|
1365 'Zdot' => 'Zdotaccent', 'zdot' => 'zdotaccent',
|
Chris@909
|
1366 'Odblacute' => 'Ohungarumlaut', 'odblacute' => 'ohungarumlaut',
|
Chris@909
|
1367 'Udblacute' => 'Uhungarumlaut', 'udblacute' => 'uhungarumlaut',
|
Chris@909
|
1368 'Gcedilla' => 'Gcommaaccent', 'gcedilla' => 'gcommaaccent',
|
Chris@909
|
1369 'Kcedilla' => 'Kcommaaccent', 'kcedilla' => 'kcommaaccent',
|
Chris@909
|
1370 'Lcedilla' => 'Lcommaaccent', 'lcedilla' => 'lcommaaccent',
|
Chris@909
|
1371 'Ncedilla' => 'Ncommaaccent', 'ncedilla' => 'ncommaaccent',
|
Chris@909
|
1372 'Rcedilla' => 'Rcommaaccent', 'rcedilla' => 'rcommaaccent',
|
Chris@909
|
1373 'Scedilla' => 'Scommaaccent',' scedilla' => 'scommaaccent',
|
Chris@909
|
1374 'Tcedilla' => 'Tcommaaccent',' tcedilla' => 'tcommaaccent',
|
Chris@909
|
1375 'Dslash' => 'Dcroat', 'dslash' => 'dcroat',
|
Chris@909
|
1376 'Dmacron' => 'Dcroat', 'dmacron' => 'dcroat',
|
Chris@909
|
1377 'combininggraveaccent' => 'gravecomb',
|
Chris@909
|
1378 'combininghookabove' => 'hookabovecomb',
|
Chris@909
|
1379 'combiningtildeaccent' => 'tildecomb',
|
Chris@909
|
1380 'combiningacuteaccent' => 'acutecomb',
|
Chris@909
|
1381 'combiningdotbelow' => 'dotbelowcomb',
|
Chris@909
|
1382 'dongsign' => 'dong'
|
Chris@909
|
1383 }
|
Chris@909
|
1384
|
Chris@909
|
1385 a.each do |line|
|
Chris@909
|
1386
|
Chris@909
|
1387 e = line.rstrip.split(' ')
|
Chris@909
|
1388 next if e.size < 2
|
Chris@909
|
1389
|
Chris@909
|
1390 code = e[0]
|
Chris@909
|
1391 param = e[1]
|
Chris@909
|
1392
|
Chris@909
|
1393 if code == 'C' then
|
Chris@909
|
1394
|
Chris@909
|
1395 # Character metrics
|
Chris@909
|
1396 cc = e[1].to_i
|
Chris@909
|
1397 w = e[4]
|
Chris@909
|
1398 gn = e[7]
|
Chris@909
|
1399
|
Chris@909
|
1400 gn = 'Euro' if gn[-4, 4] == '20AC'
|
Chris@909
|
1401
|
Chris@909
|
1402 if fix[gn] then
|
Chris@909
|
1403
|
Chris@909
|
1404 # Fix incorrect glyph name
|
Chris@909
|
1405 0.upto(map.size - 1) do |i|
|
Chris@909
|
1406 if map[i] == fix[gn] then
|
Chris@909
|
1407 map[i] = gn
|
Chris@909
|
1408 end
|
Chris@909
|
1409 end
|
Chris@909
|
1410 end
|
Chris@909
|
1411
|
Chris@909
|
1412 if map.size == 0 then
|
Chris@909
|
1413 # Symbolic font: use built-in encoding
|
Chris@909
|
1414 widths[cc] = w
|
Chris@909
|
1415 else
|
Chris@909
|
1416 widths[gn] = w
|
Chris@909
|
1417 fm['CapXHeight'] = e[13].to_i if gn == 'X'
|
Chris@909
|
1418 end
|
Chris@909
|
1419
|
Chris@909
|
1420 fm['MissingWidth'] = w if gn == '.notdef'
|
Chris@909
|
1421
|
Chris@909
|
1422 elsif code == 'FontName' then
|
Chris@909
|
1423 fm['FontName'] = param
|
Chris@909
|
1424 elsif code == 'Weight' then
|
Chris@909
|
1425 fm['Weight'] = param
|
Chris@909
|
1426 elsif code == 'ItalicAngle' then
|
Chris@909
|
1427 fm['ItalicAngle'] = param.to_f
|
Chris@909
|
1428 elsif code == 'Ascender' then
|
Chris@909
|
1429 fm['Ascender'] = param.to_i
|
Chris@909
|
1430 elsif code == 'Descender' then
|
Chris@909
|
1431 fm['Descender'] = param.to_i
|
Chris@909
|
1432 elsif code == 'UnderlineThickness' then
|
Chris@909
|
1433 fm['UnderlineThickness'] = param.to_i
|
Chris@909
|
1434 elsif code == 'UnderlinePosition' then
|
Chris@909
|
1435 fm['UnderlinePosition'] = param.to_i
|
Chris@909
|
1436 elsif code == 'IsFixedPitch' then
|
Chris@909
|
1437 fm['IsFixedPitch'] = (param == 'true')
|
Chris@909
|
1438 elsif code == 'FontBBox' then
|
Chris@909
|
1439 fm['FontBBox'] = "[#{e[1]},#{e[2]},#{e[3]},#{e[4]}]"
|
Chris@909
|
1440 elsif code == 'CapHeight' then
|
Chris@909
|
1441 fm['CapHeight'] = param.to_i
|
Chris@909
|
1442 elsif code == 'StdVW' then
|
Chris@909
|
1443 fm['StdVW'] = param.to_i
|
Chris@909
|
1444 end
|
Chris@909
|
1445 end
|
Chris@909
|
1446
|
Chris@909
|
1447 raise 'FontName not found' unless fm['FontName']
|
Chris@909
|
1448
|
Chris@909
|
1449 if map.size > 0 then
|
Chris@909
|
1450 widths['.notdef'] = 600 unless widths['.notdef']
|
Chris@909
|
1451
|
Chris@909
|
1452 if (widths['Delta'] == nil) && widths['increment'] then
|
Chris@909
|
1453 widths['Delta'] = widths['increment']
|
Chris@909
|
1454 end
|
Chris@909
|
1455
|
Chris@909
|
1456 # Order widths according to map
|
Chris@909
|
1457 0.upto(255) do |i|
|
Chris@909
|
1458 if widths[map[i]] == nil
|
Chris@909
|
1459 puts "Warning: character #{map[i]} is missing"
|
Chris@909
|
1460 widths[i] = widths['.notdef']
|
Chris@909
|
1461 else
|
Chris@909
|
1462 widths[i] = widths[map[i]]
|
Chris@909
|
1463 end
|
Chris@909
|
1464 end
|
Chris@909
|
1465 end
|
Chris@909
|
1466
|
Chris@909
|
1467 fm['Widths'] = widths
|
Chris@909
|
1468
|
Chris@909
|
1469 return fm
|
Chris@909
|
1470 end
|
Chris@909
|
1471
|
Chris@909
|
1472 def MakeFontDescriptor(fm, symbolic)
|
Chris@909
|
1473
|
Chris@909
|
1474 # Ascent
|
Chris@909
|
1475 asc = fm['Ascender'] ? fm['Ascender'] : 1000
|
Chris@909
|
1476 fd = "{\n 'Ascent' => '#{asc}'"
|
Chris@909
|
1477
|
Chris@909
|
1478 # Descent
|
Chris@909
|
1479 desc = fm['Descender'] ? fm['Descender'] : -200
|
Chris@909
|
1480 fd += ", 'Descent' => '#{desc}'"
|
Chris@909
|
1481
|
Chris@909
|
1482 # CapHeight
|
Chris@909
|
1483 if fm['CapHeight'] then
|
Chris@909
|
1484 ch = fm['CapHeight']
|
Chris@909
|
1485 elsif fm['CapXHeight']
|
Chris@909
|
1486 ch = fm['CapXHeight']
|
Chris@909
|
1487 else
|
Chris@909
|
1488 ch = asc
|
Chris@909
|
1489 end
|
Chris@909
|
1490 fd += ", 'CapHeight' => '#{ch}'"
|
Chris@909
|
1491
|
Chris@909
|
1492 # Flags
|
Chris@909
|
1493 flags = 0
|
Chris@909
|
1494
|
Chris@909
|
1495 if fm['IsFixedPitch'] then
|
Chris@909
|
1496 flags += 1 << 0
|
Chris@909
|
1497 end
|
Chris@909
|
1498
|
Chris@909
|
1499 if symbolic then
|
Chris@909
|
1500 flags += 1 << 2
|
Chris@909
|
1501 else
|
Chris@909
|
1502 flags += 1 << 5
|
Chris@909
|
1503 end
|
Chris@909
|
1504
|
Chris@909
|
1505 if fm['ItalicAngle'] && (fm['ItalicAngle'] != 0) then
|
Chris@909
|
1506 flags += 1 << 6
|
Chris@909
|
1507 end
|
Chris@909
|
1508
|
Chris@909
|
1509 fd += ",\n 'Flags' => '#{flags}'"
|
Chris@909
|
1510
|
Chris@909
|
1511 # FontBBox
|
Chris@909
|
1512 if fm['FontBBox'] then
|
Chris@909
|
1513 fbb = fm['FontBBox'].gsub(/,/, ' ')
|
Chris@909
|
1514 else
|
Chris@909
|
1515 fbb = "[0 #{desc - 100} 1000 #{asc + 100}]"
|
Chris@909
|
1516 end
|
Chris@909
|
1517
|
Chris@909
|
1518 fd += ", 'FontBBox' => '#{fbb}'"
|
Chris@909
|
1519
|
Chris@909
|
1520 # ItalicAngle
|
Chris@909
|
1521 ia = fm['ItalicAngle'] ? fm['ItalicAngle'] : 0
|
Chris@909
|
1522 fd += ",\n 'ItalicAngle' => '#{ia}'"
|
Chris@909
|
1523
|
Chris@909
|
1524 # StemV
|
Chris@909
|
1525 if fm['StdVW'] then
|
Chris@909
|
1526 stemv = fm['StdVW']
|
Chris@909
|
1527 elsif fm['Weight'] && (/bold|black/i =~ fm['Weight'])
|
Chris@909
|
1528 stemv = 120
|
Chris@909
|
1529 else
|
Chris@909
|
1530 stemv = 70
|
Chris@909
|
1531 end
|
Chris@909
|
1532
|
Chris@909
|
1533 fd += ", 'StemV' => '#{stemv}'"
|
Chris@909
|
1534
|
Chris@909
|
1535 # MissingWidth
|
Chris@909
|
1536 if fm['MissingWidth'] then
|
Chris@909
|
1537 fd += ", 'MissingWidth' => '#{fm['MissingWidth']}'"
|
Chris@909
|
1538 end
|
Chris@909
|
1539
|
Chris@909
|
1540 fd += "\n }"
|
Chris@909
|
1541 return fd
|
Chris@909
|
1542 end
|
Chris@909
|
1543
|
Chris@909
|
1544 def MakeWidthArray(fm)
|
Chris@909
|
1545
|
Chris@909
|
1546 # Make character width array
|
Chris@909
|
1547 s = " [\n "
|
Chris@909
|
1548
|
Chris@909
|
1549 cw = fm['Widths']
|
Chris@909
|
1550
|
Chris@909
|
1551 0.upto(255) do |i|
|
Chris@909
|
1552 s += "%5d" % cw[i]
|
Chris@909
|
1553 s += "," if i != 255
|
Chris@909
|
1554 s += "\n " if (i % 8) == 7
|
Chris@909
|
1555 end
|
Chris@909
|
1556
|
Chris@909
|
1557 s += ']'
|
Chris@909
|
1558
|
Chris@909
|
1559 return s
|
Chris@909
|
1560 end
|
Chris@909
|
1561
|
Chris@909
|
1562 def MakeFontEncoding(map)
|
Chris@909
|
1563
|
Chris@909
|
1564 # Build differences from reference encoding
|
Chris@909
|
1565 ref = Charencodings['cp1252']
|
Chris@909
|
1566 s = ''
|
Chris@909
|
1567 last = 0
|
Chris@909
|
1568 32.upto(255) do |i|
|
Chris@909
|
1569 if map[i] != ref[i] then
|
Chris@909
|
1570 if i != last + 1 then
|
Chris@909
|
1571 s += i.to_s + ' '
|
Chris@909
|
1572 end
|
Chris@909
|
1573 last = i
|
Chris@909
|
1574 s += '/' + map[i] + ' '
|
Chris@909
|
1575 end
|
Chris@909
|
1576 end
|
Chris@909
|
1577 return s.rstrip
|
Chris@909
|
1578 end
|
Chris@909
|
1579
|
Chris@909
|
1580 def ReadShort(f)
|
Chris@909
|
1581 a = f.read(2).unpack('n')
|
Chris@909
|
1582 return a[0]
|
Chris@909
|
1583 end
|
Chris@909
|
1584
|
Chris@909
|
1585 def ReadLong(f)
|
Chris@909
|
1586 a = f.read(4).unpack('N')
|
Chris@909
|
1587 return a[0]
|
Chris@909
|
1588 end
|
Chris@909
|
1589
|
Chris@909
|
1590 def CheckTTF(file)
|
Chris@909
|
1591
|
Chris@909
|
1592 rl = false
|
Chris@909
|
1593 pp = false
|
Chris@909
|
1594 e = false
|
Chris@909
|
1595
|
Chris@909
|
1596 # Check if font license allows embedding
|
Chris@909
|
1597 File.open(file, 'rb') do |f|
|
Chris@909
|
1598
|
Chris@909
|
1599 # Extract number of tables
|
Chris@909
|
1600 f.seek(4, IO::SEEK_CUR)
|
Chris@909
|
1601 nb = ReadShort(f)
|
Chris@909
|
1602 f.seek(6, IO::SEEK_CUR)
|
Chris@909
|
1603
|
Chris@909
|
1604 # Seek OS/2 table
|
Chris@909
|
1605 found = false
|
Chris@909
|
1606 0.upto(nb - 1) do |i|
|
Chris@909
|
1607 if f.read(4) == 'OS/2' then
|
Chris@909
|
1608 found = true
|
Chris@909
|
1609 break
|
Chris@909
|
1610 end
|
Chris@909
|
1611
|
Chris@909
|
1612 f.seek(12, IO::SEEK_CUR)
|
Chris@909
|
1613 end
|
Chris@909
|
1614
|
Chris@909
|
1615 if ! found then
|
Chris@909
|
1616 return
|
Chris@909
|
1617 end
|
Chris@909
|
1618
|
Chris@909
|
1619 f.seek(4, IO::SEEK_CUR)
|
Chris@909
|
1620 offset = ReadLong(f)
|
Chris@909
|
1621 f.seek(offset, IO::SEEK_SET)
|
Chris@909
|
1622
|
Chris@909
|
1623 # Extract fsType flags
|
Chris@909
|
1624 f.seek(8, IO::SEEK_CUR)
|
Chris@909
|
1625 fsType = ReadShort(f)
|
Chris@909
|
1626
|
Chris@909
|
1627 rl = (fsType & 0x02) != 0
|
Chris@909
|
1628 pp = (fsType & 0x04) != 0
|
Chris@909
|
1629 e = (fsType & 0x08) != 0
|
Chris@909
|
1630 end
|
Chris@909
|
1631
|
Chris@909
|
1632 if rl && ( ! pp) && ( ! e) then
|
Chris@909
|
1633 puts 'Warning: font license does not allow embedding'
|
Chris@909
|
1634 end
|
Chris@909
|
1635 end
|
Chris@909
|
1636
|
Chris@909
|
1637 #
|
Chris@909
|
1638 # fontfile: path to TTF file (or empty string if not to be embedded)
|
Chris@909
|
1639 # afmfile: path to AFM file
|
Chris@909
|
1640 # enc: font encoding (or empty string for symbolic fonts)
|
Chris@909
|
1641 # patch: optional patch for encoding
|
Chris@909
|
1642 # type : font type if $fontfile is empty
|
Chris@909
|
1643 #
|
Chris@909
|
1644 def MakeFont(fontfile, afmfile, enc = 'cp1252', patch = {}, type = 'TrueType')
|
Chris@909
|
1645 # Generate a font definition file
|
Chris@909
|
1646 if (enc != nil) && (enc != '') then
|
Chris@909
|
1647 map = Charencodings[enc]
|
Chris@909
|
1648 patch.each { |cc, gn| map[cc] = gn }
|
Chris@909
|
1649 else
|
Chris@909
|
1650 map = []
|
Chris@909
|
1651 end
|
Chris@909
|
1652
|
Chris@909
|
1653 raise "Error: AFM file not found: #{afmfile}" unless File.exists?(afmfile)
|
Chris@909
|
1654
|
Chris@909
|
1655 fm = ReadAFM(afmfile, map)
|
Chris@909
|
1656
|
Chris@909
|
1657 if (enc != nil) && (enc != '') then
|
Chris@909
|
1658 diff = MakeFontEncoding(map)
|
Chris@909
|
1659 else
|
Chris@909
|
1660 diff = ''
|
Chris@909
|
1661 end
|
Chris@909
|
1662
|
Chris@909
|
1663 fd = MakeFontDescriptor(fm, (map.size == 0))
|
Chris@909
|
1664
|
Chris@909
|
1665 # Find font type
|
Chris@909
|
1666 if fontfile then
|
Chris@909
|
1667 ext = File.extname(fontfile).downcase.sub(/^\./, '')
|
Chris@909
|
1668
|
Chris@909
|
1669 if ext == 'ttf' then
|
Chris@909
|
1670 type = 'TrueType'
|
Chris@909
|
1671 elsif ext == 'pfb'
|
Chris@909
|
1672 type = 'Type1'
|
Chris@909
|
1673 else
|
Chris@909
|
1674 raise "Error: unrecognized font file extension: #{ext}"
|
Chris@909
|
1675 end
|
Chris@909
|
1676 else
|
Chris@909
|
1677 raise "Error: incorrect font type: #{type}" if (type != 'TrueType') && (type != 'Type1')
|
Chris@909
|
1678 end
|
Chris@909
|
1679 printf "type = #{type}\n"
|
Chris@909
|
1680 # Start generation
|
Chris@909
|
1681 s = "# #{fm['FontName']} font definition\n\n"
|
Chris@909
|
1682 s += "module FontDef\n"
|
Chris@909
|
1683 s += " def FontDef.type\n '#{type}'\n end\n"
|
Chris@909
|
1684 s += " def FontDef.name\n '#{fm['FontName']}'\n end\n"
|
Chris@909
|
1685 s += " def FontDef.desc\n #{fd}\n end\n"
|
Chris@909
|
1686
|
Chris@909
|
1687 if fm['UnderlinePosition'] == nil then
|
Chris@909
|
1688 fm['UnderlinePosition'] = -100
|
Chris@909
|
1689 end
|
Chris@909
|
1690
|
Chris@909
|
1691 if fm['UnderlineThickness'] == nil then
|
Chris@909
|
1692 fm['UnderlineThickness'] = 50
|
Chris@909
|
1693 end
|
Chris@909
|
1694
|
Chris@909
|
1695 s += " def FontDef.up\n #{fm['UnderlinePosition']}\n end\n"
|
Chris@909
|
1696 s += " def FontDef.ut\n #{fm['UnderlineThickness']}\n end\n"
|
Chris@909
|
1697
|
Chris@909
|
1698 w = MakeWidthArray(fm)
|
Chris@909
|
1699 s += " def FontDef.cw\n#{w}\n end\n"
|
Chris@909
|
1700
|
Chris@909
|
1701 s += " def FontDef.enc\n '#{enc}'\n end\n"
|
Chris@909
|
1702 s += " def FontDef.diff\n #{(diff == nil) || (diff == '') ? 'nil' : '\'' + diff '\''}\n end\n"
|
Chris@909
|
1703
|
Chris@909
|
1704 basename = File.basename(afmfile, '.*')
|
Chris@909
|
1705
|
Chris@909
|
1706 if fontfile then
|
Chris@909
|
1707 # Embedded font
|
Chris@909
|
1708 if ! File.exist?(fontfile) then
|
Chris@909
|
1709 raise "Error: font file not found: #{fontfile}"
|
Chris@909
|
1710 end
|
Chris@909
|
1711
|
Chris@909
|
1712 if type == 'TrueType' then
|
Chris@909
|
1713 CheckTTF(fontfile)
|
Chris@909
|
1714 end
|
Chris@909
|
1715
|
Chris@909
|
1716 file = ''
|
Chris@909
|
1717 File.open(fontfile, 'rb') do |f|
|
Chris@909
|
1718 file = f.read()
|
Chris@909
|
1719 end
|
Chris@909
|
1720
|
Chris@909
|
1721 if type == 'Type1' then
|
Chris@909
|
1722 # Find first two sections and discard third one
|
Chris@909
|
1723 header = file[0] == 128
|
Chris@909
|
1724 file = file[6, file.length - 6] if header
|
Chris@909
|
1725
|
Chris@909
|
1726 pos = file.index('eexec')
|
Chris@909
|
1727 raise 'Error: font file does not seem to be valid Type1' if pos == nil
|
Chris@909
|
1728
|
Chris@909
|
1729 size1 = pos + 6
|
Chris@909
|
1730
|
Chris@909
|
1731 file = file[0, size1] + file[size1 + 6, file.length - (size1 + 6)] if header && file[size1] == 128
|
Chris@909
|
1732
|
Chris@909
|
1733 pos = file.index('00000000')
|
Chris@909
|
1734 raise 'Error: font file does not seem to be valid Type1' if pos == nil
|
Chris@909
|
1735
|
Chris@909
|
1736 size2 = pos - size1
|
Chris@909
|
1737 file = file[0, size1 + size2]
|
Chris@909
|
1738 end
|
Chris@909
|
1739
|
Chris@909
|
1740 if require 'zlib' then
|
Chris@909
|
1741 File.open(basename + '.z', 'wb') { |f| f.write(Zlib::Deflate.deflate(file)) }
|
Chris@909
|
1742 s += " def FontDef.file\n '#{basename}.z'\n end\n"
|
Chris@909
|
1743 puts "Font file compressed ('#{basename}.z')"
|
Chris@909
|
1744 else
|
Chris@909
|
1745 s += " def FontDef.file\n '#{File.basename(fontfile)}'\n end\n"
|
Chris@909
|
1746 puts 'Notice: font file could not be compressed (zlib not available)'
|
Chris@909
|
1747 end
|
Chris@909
|
1748
|
Chris@909
|
1749 if type == 'Type1' then
|
Chris@909
|
1750 s += " def FontDef.size1\n '#{size1}'\n end\n"
|
Chris@909
|
1751 s += " def FontDef.size2\n '#{size2}'\n end\n"
|
Chris@909
|
1752 else
|
Chris@909
|
1753 s += " def FontDef.originalsize\n '#{File.size(fontfile)}'\n end\n"
|
Chris@909
|
1754 end
|
Chris@909
|
1755
|
Chris@909
|
1756 else
|
Chris@909
|
1757 # Not embedded font
|
Chris@909
|
1758 s += " def FontDef.file\n ''\n end\n"
|
Chris@909
|
1759 end
|
Chris@909
|
1760
|
Chris@909
|
1761 s += "end\n"
|
Chris@909
|
1762 File.open(basename + '.rb', 'w') { |file| file.write(s)}
|
Chris@909
|
1763 puts "Font definition file generated (#{basename}.rb)"
|
Chris@909
|
1764 end
|
Chris@909
|
1765
|
Chris@909
|
1766
|
Chris@909
|
1767 if $0 == __FILE__ then
|
Chris@909
|
1768 if ARGV.length >= 3 then
|
Chris@909
|
1769 enc = ARGV[2]
|
Chris@909
|
1770 else
|
Chris@909
|
1771 enc = 'cp1252'
|
Chris@909
|
1772 end
|
Chris@909
|
1773
|
Chris@909
|
1774 if ARGV.length >= 4 then
|
Chris@909
|
1775 patch = ARGV[3]
|
Chris@909
|
1776 else
|
Chris@909
|
1777 patch = {}
|
Chris@909
|
1778 end
|
Chris@909
|
1779
|
Chris@909
|
1780 if ARGV.length >= 5 then
|
Chris@909
|
1781 type = ARGV[4]
|
Chris@909
|
1782 else
|
Chris@909
|
1783 type = 'TrueType'
|
Chris@909
|
1784 end
|
Chris@909
|
1785
|
Chris@909
|
1786 MakeFont(ARGV[0], ARGV[1], enc, patch, type)
|
Chris@909
|
1787 end
|