Coverage Report

Created: 2026-04-01 07:17

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/ghostpdl/pcl/pl/plvocab.c
Line
Count
Source
1
/* Copyright (C) 2001-2023 Artifex Software, Inc.
2
   All Rights Reserved.
3
4
   This software is provided AS-IS with no warranty, either express or
5
   implied.
6
7
   This software is distributed under license and may not be copied,
8
   modified or distributed except as expressly authorized under the terms
9
   of the license contained in the file LICENSE in this distribution.
10
11
   Refer to licensing information at http://www.artifex.com or contact
12
   Artifex Software, Inc.,  39 Mesa Street, Suite 108A, San Francisco,
13
   CA 94129, USA, for further information.
14
*/
15
16
17
/* plvocab.c */
18
/* Maps between glyph vocabularies */
19
#include "stdpre.h"
20
#include "plvocab.h"
21
22
/* Define an entry in a glyph mapping table. */
23
/* Glyph mapping tables are sorted by key. */
24
typedef struct pl_glyph_mapping_s
25
{
26
    ushort key;
27
    ushort value;
28
} pl_glyph_mapping_t;
29
30
/* derived from: http://pcl.to/msl/mastermsl.txt */
31
static const pl_glyph_mapping_t pl_map_m2u[] = {
32
    {0, 0x0000},
33
    {1, 0x0021},                /* exclamation mark *//* u */
34
    {2, 0x0022},                /* Neutral Double Quote *//* u */
35
    {3, 0x0023},                /* Number Sign *//* u */
36
    {4, 0x0024},                /* dollar sign *//* u */
37
    {5, 0x0025},                /* Per Cent Sign *//* u */
38
    {6, 0x0026},                /* ampersand *//* u */
39
    {7, 0xF4CF},
40
    {8, 0x2019},                /* Single Close Quote (9) *//* u */
41
    {9, 0x0028},                /* Left Parenthesis *//* u */
42
    {10, 0x0029},               /* Right Parenthesis *//* u */
43
    {11, 0x002A},               /* asterisk *//* u */
44
    {12, 0x002B},               /* Plus Sign *//* u */
45
    {13, 0x002C},               /* Comma, Decimal Separator *//* u */
46
    {14, 0x002D},               /* Hyphen *//* u */
47
    {15, 0x002E},               /* period *//* u */
48
    {16, 0x002F},               /* Solidus, Slash *//* u */
49
    {17, 0x0030},               /* Numeral Zero *//* u */
50
    {18, 0x0031},               /* Numeral One *//* u */
51
    {19, 0x0032},               /* Numeral Two *//* u */
52
    {20, 0x0033},               /* Numeral Three *//* u */
53
    {21, 0x0034},               /*  Numeral Four *//* u */
54
    {22, 0x0035},               /* Numeral Five *//* u */
55
    {23, 0x0036},               /* Numeral Six *//* u */
56
    {24, 0x0037},               /* Numeral Seven *//* u */
57
    {25, 0x0038},               /* Numeral Eight *//* u */
58
    {26, 0x0039},               /* Numeral Nine *//* u */
59
    {27, 0x003A},               /* colon *//* u */
60
    {28, 0x003B},               /* Semicolon *//* u */
61
    {29, 0x003C},               /* Less Than Sign *//* u */
62
    {30, 0x003D},               /* Equals Sign *//* u */
63
    {31, 0x003E},               /* Greater Than Sign *//* u */
64
    {32, 0x003F},               /* question mark *//* u */
65
    {33, 0x0040},               /* Commercial At Sign *//* u */
66
    {34, 0x0041},               /* Uppercase A *//* u */
67
    {35, 0x0042},               /* Uppercase B *//* u */
68
    {36, 0x0043},               /* Uppercase C *//* u */
69
    {37, 0x0044},               /* Uppercase D *//* u */
70
    {38, 0x0045},               /* Uppercase E *//* u */
71
    {39, 0x0046},               /* Uppercase F *//* u */
72
    {40, 0x0047},               /* Uppercase G *//* u */
73
    {41, 0x0048},               /* Uppercase H *//* u */
74
    {42, 0x0049},               /* Uppercase I *//* u */
75
    {43, 0x004A},               /* Uppercase J *//* u */
76
    {44, 0x004B},               /* Uppercase K *//* u */
77
    {45, 0x004C},               /* Uppercase L *//* u */
78
    {46, 0x004D},               /* Uppercase M *//* u */
79
    {47, 0x004E},               /* Uppercase N *//* u */
80
    {48, 0x004F},               /* Uppercase O *//* u */
81
    {49, 0x0050},               /* Uppercase P *//* u */
82
    {50, 0x0051},               /* Uppercase Q *//* u */
83
    {51, 0x0052},               /* Uppercase R *//* u */
84
    {52, 0x0053},               /* Uppercase S *//* u */
85
    {53, 0x0054},               /* Uppercase T *//* u */
86
    {54, 0x0055},               /* Uppercase U *//* u */
87
    {55, 0x0056},               /* Uppercase V *//* u */
88
    {56, 0x0057},               /* Uppercase W *//* u */
89
    {57, 0x0058},               /* Uppercase X *//* u */
90
    {58, 0x0059},               /* Uppercase Y *//* u */
91
    {59, 0x005A},               /* Uppercase Z *//* u */
92
    {60, 0x005B},               /* Left Bracket *//* u */
93
    {61, 0x005C},               /* Rev Solidus, Backslash *//* u */
94
    {62, 0x005D},               /* Right Bracket *//* u */
95
    {63, 0x005E},               /* ASCII Circumflex *//* u */
96
    {64, 0x005F},               /* Underline, Underscore *//* u */
97
    {65, 0xEFA7},
98
    {66, 0x2018},               /* Single Open Quote (6) *//* u */
99
    {67, 0x0061},               /* Lowercase A *//* u */
100
    {68, 0x0062},               /* Lowercase B *//* u */
101
    {69, 0x0063},               /* Lowercase C *//* u */
102
    {70, 0x0064},               /* Lowercase D *//* u */
103
    {71, 0x0065},               /* Lowercase E *//* u */
104
    {72, 0x0066},               /* Lowercase F *//* u */
105
    {73, 0x0067},               /* Lowercase G *//* u */
106
    {74, 0x0068},               /* Lowercase H *//* u */
107
    {75, 0x0069},               /* Lowercase I *//* u */
108
    {76, 0x006A},               /* Lowercase J *//* u */
109
    {77, 0x006B},               /* Lowercase K *//* u */
110
    {78, 0x006C},               /* Lowercase L *//* u */
111
    {79, 0x006D},               /* Lowercase M *//* u */
112
    {80, 0x006E},               /* Lowercase N *//* u */
113
    {81, 0x006F},               /* Lowercase O *//* u */
114
    {82, 0x0070},               /* Lowercase P *//* u */
115
    {83, 0x0071},               /* Lowercase Q *//* u */
116
    {84, 0x0072},               /* Lowercase R *//* u */
117
    {85, 0x0073},               /* Lowercase S *//* u */
118
    {86, 0x0074},               /* Lowercase T *//* u */
119
    {87, 0x0075},               /* Lowercase U *//* u */
120
    {88, 0x0076},               /* Lowercase V *//* u */
121
    {89, 0x0077},               /* Lowercase W *//* u */
122
    {90, 0x0078},               /* Lowercase X *//* u */
123
    {91, 0x0079},               /* Lowercase Y *//* u */
124
    {92, 0x007A},               /* Lowercase Z *//* u */
125
    {93, 0x007B},               /* Left Brace *//* u */
126
    {94, 0x007C},               /* Long Vertical Mark *//* u */
127
    {95, 0x007D},               /* Right Brace *//* u */
128
    {96, 0x007E},               /* 1 Wavy Line Approx *//* u */
129
    {97, 0x2592},               /* Medium Shading *//* u */
130
    {98, 0xF4C7},
131
    {99, 0x00C0},               /* Uppercase A Grave *//* u */
132
    {100, 0x00C2},              /* Uppercase A Circumflex *//* u */
133
    {101, 0x00C8},              /* Uppercase E Grave *//* u */
134
    {102, 0x00CA},              /* Uppercase E Circumflex *//* u */
135
    {103, 0x00CB},              /* Uppercase E Dieresis *//* u */
136
    {104, 0x00CE},              /* Uppercase I Circumflex *//* u */
137
    {105, 0x00CF},              /* Uppercase I Dieresis *//* u */
138
    {106, 0x00B4},              /* Lowercase Acute *//* u */
139
    {107, 0x0060},              /* Lowercase Grave *//* u */
140
    {108, 0x02C6},              /* Lowercase Circumflex *//* u *//* ? 5E ? */
141
    {109, 0x00A8},              /* Lowercase Dieresis *//* u */
142
    {110, 0x02DC},              /* Lowercase Tilde *//* u *//* ? 7E ? */
143
    {111, 0x00D9},              /* Uppercase U Grave *//* u */
144
    {112, 0x00DB},              /* Uppercase U Circumflex *//* u */
145
    {113, 0x00AF},              /* Overline, Overscore *//* u */
146
    {114, 0x00DD},              /* Uppercase Y Acute *//* u */
147
    {115, 0x00FD},              /* Lowercase Y Acute *//* u */
148
    {116, 0x00B0},              /* Degree Sign *//* u */
149
    {117, 0x00C7},              /* Uppercase C Cedilla *//* u */
150
    {118, 0x00E7},              /* Lowercase C Cedilla *//* u */
151
    {119, 0x00D1},              /* Uppercase N tilde *//* u */
152
    {120, 0x00F1},              /* Lowercase N tilde *//* u */
153
    {121, 0x00A1},              /* Inverted Exclamation Mark *//* u */
154
    {122, 0x00BF},              /* Inverted Question Mark *//* u */
155
    {123, 0x00A4},              /* Currency Symbol *//* u */
156
    {124, 0x00A3},              /* Pound Sterling Sign *//* u */
157
    {125, 0x00A5},              /* Yen Sign *//* u */
158
    {126, 0x00A7},              /* Section Mark *//* u */
159
    {127, 0x0192},              /* Florin Sign *//* u */
160
    {128, 0x00A2},              /* Cent Sign *//* u */
161
    {129, 0x00E2},              /* Lowercase A Circumflex *//* u */
162
    {130, 0x00EA},              /* Lowercase E Circumflex *//* u */
163
    {131, 0x00F4},              /* Lowercase O Circumflex *//* u */
164
    {132, 0x00FB},              /* Lowercase U Circumflex *//* u */
165
    {133, 0x00E1},              /* Lowercase A Acute *//* u */
166
    {134, 0x00E9},              /* Lowercase E Acute *//* u */
167
    {135, 0x00F3},              /* Lowercase O Acute *//* u */
168
    {136, 0x00FA},              /* Lowercase U Acute *//* u */
169
    {137, 0x00E0},              /* Lowercase A Grave *//* u */
170
    {138, 0x00E8},              /* Lowercase E Grave *//* u */
171
    {139, 0x00F2},              /* Lowercase O Grave *//* u */
172
    {140, 0x00F9},              /* Lowercase U Grave *//* u */
173
    {141, 0x00E4},              /* Lowercase A Dieresis *//* u */
174
    {142, 0x00EB},              /* Lowercase E Dieresis *//* u */
175
    {143, 0x00F6},              /* Lowercase O Dieresis *//* u */
176
    {144, 0x00FC},              /* Lowercase U Dieresis *//* u */
177
    {145, 0x00C5},              /* Uppercase A Ring *//* u */
178
    {146, 0x00EE},              /* Lowercase I Circumflex *//* u */
179
    {147, 0x00D8},              /* Uppercase O Oblique *//* u */
180
    {148, 0x00C6},              /* Uppercase AE Diphthong *//* u */
181
    {149, 0x00E5},              /* Lowercase A Ring *//* u */
182
    {150, 0x00ED},              /* Lowercase I Acute *//* u */
183
    {151, 0x00F8},              /* Lowercase O Oblique *//* u */
184
    {152, 0x00E6},              /* Lowercase AE Diphthong *//* u */
185
    {153, 0x00C4},              /* Uppercase A Dieresis *//* u */
186
    {154, 0x00EC},              /* Lowercase I Grave *//* u */
187
    {155, 0x00D6},              /* Uppercase O Dieresis *//* u */
188
    {156, 0x00DC},              /* Uppercase U Dieresis *//* u */
189
    {157, 0x00C9},              /* Uppercase E Acute *//* u */
190
    {158, 0x00EF},              /* Lowercase I Dieresis *//* u */
191
    {159, 0x00DF},              /* Lowercase Es-zet Ligature *//* u */
192
    {160, 0x00D4},              /* Uppercase O Circumflex *//* u */
193
    {161, 0x00C1},              /* Uppercase A Acute *//* u */
194
    {162, 0x00C3},              /* Uppercase A Tilde *//* u */
195
    {163, 0x00E3},              /* Lowercase A Tilde *//* u */
196
    {164, 0x00D0},              /* Uppercase Eth, D-stroke *//* u */
197
    {165, 0x00F0},              /* Lowercase Eth *//* u */
198
    {166, 0x00CD},              /* Uppercase I Acute *//* u */
199
    {167, 0x00CC},              /* Uppercase I Grave *//* u */
200
    {168, 0x00D3},              /* Uppercase O Acute *//* u */
201
    {169, 0x00D2},              /* Uppercase O Grave *//* u */
202
    {170, 0x00D5},              /* Uppercase O Tilde *//* u */
203
    {171, 0x00F5},              /* Lowercase O Tilde *//* u */
204
    {172, 0x0160},              /* Uppercase S Hacek *//* u */
205
    {173, 0x0161},              /* Lowercase S Hacek *//* u */
206
    {174, 0x00DA},              /* Uppercase U Acute *//* u */
207
    {175, 0x0178},              /* Uppercase Y Dieresis *//* u */
208
    {176, 0x00FF},              /* Lowercase Y Dieresis *//* u */
209
    {177, 0x00DE},              /* Uppercase Thorn *//* u */
210
    {178, 0x00FE},              /* Lowercase Thorn *//* u */
211
    {179, 0x00B7},              /* Lowercase Middle Dot *//* u */
212
    {180, 0x00B5},              /* Lowercase Mu, Micro *//* u */
213
    {181, 0x00B6},              /* Pilcrow, Paragraph *//* u */
214
    {182, 0x00BE},              /* Vulgar Fraction 3/4 *//* u */
215
    {183, 0x2212},              /* Minus Sign *//* u */
216
    {184, 0x00BC},              /* Vulgar Fraction 1/4 *//* u */
217
    {185, 0x00BD},              /* Vulgar Fraction 1/2 *//* u */
218
    {186, 0x00AA},              /* Female Ordinal *//* u */
219
    {187, 0x00BA},              /* Mail Ordinal *//* u */
220
    {188, 0x00AB},              /* Dbl lft point Ang Quote *//* u */
221
    {189, 0x25A0},              /* Medium Solid Box */
222
    {190, 0x00BB},              /* Dbl rt point Ang Quote *//* u */
223
    {191, 0x00B1},              /* Plus Over Minus Sign *//* u */
224
    {192, 0x00A6},              /* Broken Vertical Mark *//* u */
225
    {193, 0x00A9},              /* Copyright Sign, Sup *//* u */
226
    {194, 0x00AC},              /* Not Sign *//* u */
227
    {195, 0x00AD},              /* Soft Hyphen *//* u */
228
    {196, 0x00AE},              /* Registered Sign, Sup *//* u */
229
    {197, 0x00B2},              /* Superior Numeral 2 *//* u */
230
    {198, 0x00B3},              /* Superior Numeral 3 *//* u */
231
    {199, 0x00B8},              /* Lowercase Cedilla *//* u */
232
    {200, 0x00B9},              /* Superior Numeral 1 *//* u */
233
    {201, 0x00D7},              /* Multiply Sign *//* u */
234
    {202, 0x00F7},              /* Divide Sign *//* u */
235
    {203, 0x263A},              /* Open Smiling Face */
236
    {204, 0x263B},              /* Solid Smiling Face */
237
    {205, 0x2665},              /* Solid Heart */
238
    {206, 0x2666},              /* Solid Diamond */
239
    {207, 0x2663},              /* Solid Club */
240
    {208, 0x2660},              /* Solid Spade */
241
    {209, 0x2022},              /* Medium Solid Bullet *//* (PC), 0x25CF (other) */
242
    {210, 0x25D8},              /* Large Solid Sq/Open Dot */
243
    {211, 0x25CB},              /* Large Open Bullet *//* (PC only) */
244
    {212, 0x25D9},              /* Large Solid Sq/Open Ring */
245
    {213, 0x2642},              /* Male Symbol */
246
    {214, 0x2640},              /* Female Symbol */
247
    {215, 0x266A},              /* Musical Note */
248
    {216, 0x266B},              /* Pair of Musical Notes */
249
    {217, 0x263C},              /* Compass, 8 Pointed Sun */
250
    {218, 0x25BA},              /* Right Solid Arrowhead */
251
    {219, 0x25C4},              /* Left Solid Arrowhead */
252
    {220, 0x2195},              /* Up/Down Arrow */
253
    {221, 0x203C},              /* Double Exclamation Mark *//* u */
254
    {222, 0x25AC},              /* Thick Horizontal Mark */
255
    {223, 0x21A8},              /* Up/Down Arrow Baseline */
256
    {224, 0x2191},              /* Up Arrow */
257
    {225, 0x2193},              /* Down Arrow */
258
    {226, 0x2192},              /* Right Arrow */
259
    {227, 0x2190},              /* Left Arrow */
260
    {228, 0x221F},              /* Tick Up at Left */
261
    {229, 0x2194},              /* Left/Right Arrow */
262
    {230, 0x25B2},              /* Up Solid Arrowhead */
263
    {231, 0x25BC},              /* Down Solid Arrowhead */
264
    {232, 0x20A7},              /* Pesetas *//* u */
265
    {233, 0x2310},              /* Tick Down at Left *//* u */
266
    {234, 0x2591},              /* Light Shading */
267
    {235, 0x2593},              /* Dark Shading */
268
    {236, 0x2502},              /* Vertical 1 */
269
    {237, 0x2524},              /* Left 1 Vertical 1 */
270
    {238, 0x2561},              /* Left 2 Vertical 1 */
271
    {239, 0x2562},              /* Left 1 Vertical 2 */
272
    {240, 0x2556},              /* Left 1 Down 2 */
273
    {241, 0x2555},              /* Left 2 Down 1 */
274
    {242, 0x2563},              /* Left 2 Verical 2 */
275
    {243, 0x2551},              /* Vertical 2 */
276
    {244, 0x2557},              /* Left 2 Down 2 */
277
    {245, 0x255d},              /* Left 2 Up 2 */
278
    {246, 0x255c},              /* Left 1 Up 2 */
279
    {247, 0x255b},              /* Left 2 Up 1 */
280
    {248, 0x2510},              /* Left 1 Down 1 */
281
    {249, 0x2514},              /* Right 1 Up 1 */
282
    {250, 0x2534},              /* Horizontal 1 Up 1 */
283
    {251, 0x252c},              /* Horizontal 1 Down 1 */
284
    {252, 0x251c},              /* Right 1 Vertical 1 */
285
    {253, 0x2500},              /* Horizontal 1 */
286
    {254, 0x253c},              /* Horizontal 1 Vertical 1 */
287
    {255, 0x255e},              /* Right 2 Vertical 1 */
288
    {256, 0x255f},              /* Right 1 Vertical 2 */
289
    {257, 0x255a},              /* Right 2 Up 2 */
290
    {258, 0x2554},              /* Right 2 Down 2 */
291
    {259, 0x2569},              /* Horizontal 2 Up 2 */
292
    {260, 0x2566},              /* Horizontal 2 Down 2 */
293
    {261, 0x2560},              /* Right 2 Vertical 2 */
294
    {262, 0x2550},              /* Horizontal 2 */
295
    {263, 0x256c},              /*  Horizontal 2 Vertical 2 */
296
    {264, 0x2567},              /* Horizontal 2 Up 1 */
297
    {265, 0x2568},              /* Horizontal 1 Up 2 */
298
    {266, 0x2564},              /* Horizontal 2 Down 1 */
299
    {267, 0x2565},              /* Horizontal 1 Down 2 */
300
    {268, 0x2559},              /* Right 1 Up 2 */
301
    {269, 0x2558},              /* Right 2 Up 1 */
302
    {270, 0x2552},              /* Right 2 Down 1 */
303
    {271, 0x2553},              /* Right 1 Down 2 */
304
    {272, 0x256b},              /* Horizontal 1 Vertical 2 */
305
    {273, 0x256a},              /* Horizontal 2 Vertical 1 */
306
    {274, 0x2518},              /* Left 1 Up 1 */
307
    {275, 0x250c},              /* Right 1 Down 1 */
308
    {276, 0x2588},              /* Solid Full Rectangle */
309
    {277, 0x2584},              /* Bottom 1/2 Solid Rectangle */
310
    {278, 0x258c},              /* Left 1/2 Solid Rectangle */
311
    {279, 0x2590},              /* Right 1/2 Solid Rectangle */
312
    {280, 0x2580},              /* Top 1/2 Solid Rectangle */
313
    {281, 0x03B1},              /* Lowercase Greek Alpha *//* u */
314
    {282, 0xEFA3},
315
    {283, 0x0393},              /* Uppercase Greek Gamma *//* u */
316
    {284, 0x03C0},              /* Lowercase Greek Pi *//* u */
317
    {285, 0x03A3},              /* Uppercase Greek Sigma */
318
    {286, 0x03C3},              /* Lowercase Greek Sigma *//* u */
319
    {287, 0x03C4},              /* Lowercase Greek Tau *//* u */
320
    {288, 0x03A6},              /* Uppercase Greek Phi *//* u */
321
    {289, 0x0398},              /* Uppercase Greek Theta *//* u */
322
    {290, 0x03A9},              /* Uppercase Omega, Ohms *//* u */
323
    {291, 0x03B4},              /* Lowercase Greek Delta *//* u */
324
    {292, 0x221E},              /* Infinity Sign *//* u */
325
    {293, 0x03C6},              /* Lowercase Greek Phi *//* u */
326
    {294, 0x03B5},              /* Lowercase Greek Epsilon *//* u */
327
    {295, 0x2229},              /* Set Intersection *//* u */
328
    {296, 0x2261},              /* Exactly Equals *//* u */
329
    {297, 0x2265},              /* Greater Than/Equal To *//* u */
330
    {298, 0x2264},              /* Less Than/Equal To *//* u */
331
    {299, 0x2320},              /* Top Segment Integral */
332
    {300, 0x2321},              /* Bottom Segment Integral */
333
    {301, 0x2248},              /* 2 Wavy Line Approx *//* u */
334
    {302, 0x2219},              /* Center Period *//* u */
335
    {303, 0x221A},              /* Radical Symbol *//* u */
336
    {305, 0x25AA},              /* Small Solid Box */
337
    {306, 0x013F},              /* Uppercase L Dot *//* u */
338
    {307, 0x0140},              /* Lowercase L-Dot *//* u */
339
    {308, 0x2113},              /* Litre Symbol *//* u */
340
    {309, 0x0149},              /* Lowercase Apostrophe-N *//* u */
341
    {310, 0x2032},              /* Prime *//* u */
342
    {311, 0x2033},              /* Double Prime *//* u */
343
    {312, 0x2020},              /* Dagger Symbol *//* u */
344
    {313, 0x2122},              /* Trademark Sign, Sup *//* u */
345
    {314, 0x2017},              /* Double Underline */
346
    {315, 0x02C7},              /* Lowercase Hacek *//* u */
347
    {316, 0x02DA},              /* Lowercase Ring *//* u */
348
    {317, 0x02CA},              /* Uppercase Acute */
349
    {318, 0x02CB},              /* Uppercase Grave */
350
    {319, 0x02C6},              /* Uppercase Circumflex */
351
    {320, 0x00A8},              /* Uppercase Dieresis */
352
    {321, 0x02DC},              /* Uppercase Tilde */
353
    {322, 0x02C7},              /* Uppercase Hacek */
354
    {323, 0x02DA},              /* Uppercase Ring */
355
    {324, 0x2215},              /* Vulgar Fraction Bar *//* u */
356
    {325, 0x2014},              /* Em Dash *//* u */
357
    {326, 0x2013},              /* En Dash *//* u */
358
    {327, 0x2021},              /* Double Dagger Symbol *//* u */
359
    {328, 0x0131},              /* Lowercase Undotted I *//* u */
360
    {329, 0x0027},              /* Neutral Single Quote *//* u */
361
    {330, 0x00B8},              /* Uppercase Cedilla */
362
    {331, 0x2022},              /* Small Solid Bullet *//* u */
363
    {332, 0x207F},              /* Superior Lowercase N *//* u */
364
    {333, 0x2302},              /* Home Plate */
365
    {335, 0x0138},              /* Lowercase Greenlandic Kra *//* u */
366
    {336, 0xEFA2},
367
    {338, 0x0166},              /* Uppercase T-Stroke *//* u */
368
    {339, 0x0167},              /* Lowercase T-Stroke *//* u */
369
    {340, 0x014A},              /* Uppercase Eng *//* u */
370
    {341, 0x014B},              /* Lowercase Eng *//* u */
371
    {342, 0x0111},              /* Lowercase D-Stroke *//* u */
372
    {371, 0xEFA4},
373
    {372, 0xEFAA},
374
    {373, 0xF4C8},
375
    {400, 0x0102},              /* Uppercase A Breve *//* u */
376
    {401, 0x0103},              /* Lowercase A Breve *//* u */
377
    {402, 0x0100},              /* Uppercase A Macron *//* u */
378
    {403, 0x0101},              /* Lowercase A Macron *//* u */
379
    {404, 0x0104},              /* Uppercase A Ogonek *//* u */
380
    {405, 0x0105},              /* Lowercase A Ogonek *//* u */
381
    {406, 0x0106},              /* Uppercase C Acute *//* u */
382
    {407, 0x0107},              /* Lowercase C Acute *//* u */
383
    {408, 0xF4C4},
384
    {409, 0xF4CE},
385
    {410, 0x010C},              /* Uppercase C Hacek *//* u */
386
    {411, 0x010D},              /* Lowercase C Hacek *//* u */
387
    {414, 0x010E},              /* Uppercase D Hacek *//* u */
388
    {415, 0x010F},              /* Lowercase D Hacek *//* u */
389
    {416, 0x011A},              /* Uppercase E Hacek *//* u */
390
    {417, 0x011B},              /* Lowercase E Hacek *//* u */
391
    {418, 0x0116},              /* Uppercase E Overdot *//* u */
392
    {419, 0x0117},              /* Lowercase E Overdot *//* u */
393
    {420, 0x0112},              /* Uppercase E Macron *//* u */
394
    {421, 0x0113},              /* Lowercase E Macron *//* u */
395
    {422, 0x0118},              /* Uppercase E Ogonek *//* u */
396
    {423, 0x0119},              /* Lowercase E Ogonek *//* u */
397
    {428, 0x0122},              /* Uppercase G Cedilla *//* u */
398
    {429, 0x0123},              /* Lowercase G Cedilla *//* u */
399
    {432, 0x012E},              /* Uppercase I Ogonek *//* u */
400
    {433, 0x012F},              /* Lowercase I Ogonek *//* u */
401
    {434, 0x012A},              /* Uppercase I Macron *//* u */
402
    {435, 0x012B},              /* Lowercase I Macron *//* u */
403
    {438, 0x0136},              /* Uppercase K Cedilla *//* u */
404
    {439, 0x0137},              /* Lowercase K Cedilla *//* u */
405
    {440, 0x0139},              /* Uppercase L Acute *//* u */
406
    {441, 0x013A},              /* Lowercase L Acute *//* u */
407
    {442, 0x013D},              /* Uppercase L Hacek *//* u */
408
    {443, 0x013E},              /* Lowercase L Hacek *//* u */
409
    {444, 0x013B},              /* Uppercase L Cedilla *//* u */
410
    {445, 0x013C},              /* Lowercase L Cedilla *//* u */
411
    {446, 0x0143},              /* Uppercase N Acute *//* u */
412
    {447, 0x0144},              /* Lowercase N Acute *//* u */
413
    {448, 0x0147},              /* Uppercase N Hacek *//* u */
414
    {449, 0x0148},              /* Lowercase N Hacek *//* u */
415
    {450, 0x0145},              /* Uppercase N Cedilla *//* u */
416
    {451, 0x0146},              /* Lowercase N Cedilla *//* u */
417
    {452, 0x0150},              /* Uppercase O Dbl Acute *//* u */
418
    {453, 0x0151},              /* Lowercase O Dbl Acute *//* u */
419
    {454, 0x014C},              /* Uppercase O Macron *//* u */
420
    {455, 0x014D},              /* Lowercase O Macron *//* u */
421
    {456, 0x0154},              /* Uppercase R Acute *//* u */
422
    {457, 0x0155},              /* Lowercase R Acute *//* u */
423
    {458, 0x0158},              /* Uppercase R Hacek *//* u */
424
    {459, 0x0159},              /* Lowercase R Hacek *//* u */
425
    {460, 0x0156},              /* Uppercase R Cedilla *//* u */
426
    {461, 0x0157},              /* Lowercase R Cedilla *//* u */
427
    {462, 0x015A},              /* Uppercase S Acute *//* u */
428
    {463, 0x015B},              /* Lowercase S Acute *//* u */
429
    {466, 0x0164},              /* Uppercase T Hacek *//* u */
430
    {467, 0x0165},              /* Lowercase T Hacek *//* u */
431
    {468, 0x0162},              /* Uppercase T Cedilla *//* u */
432
    {469, 0x0163},              /* Lowercase T Cedilla *//* u */
433
    {470, 0x0168},              /* Uppercase U Tilde *//* u */
434
    {471, 0x0169},              /* Lowercase U Tilde *//* u */
435
    {474, 0x0170},              /* Uppercase U Double Acute *//* u */
436
    {475, 0x0171},              /* Lowercase U Double Acute *//* u */
437
    {476, 0x016E},              /* Uppercase U Ring *//* u */
438
    {477, 0x016F},              /* Lowercase U Ring *//* u */
439
    {478, 0x016A},              /* Uppercase U Macron *//* u */
440
    {479, 0x016B},              /* Lowercase U Macron *//* u */
441
    {480, 0x0172},              /* Uppercase U Ogonek *//* u */
442
    {481, 0x0173},              /* Lowercase U Ogonek *//* u */
443
    {482, 0x0179},              /* Uppercase Z Acute *//* u */
444
    {483, 0x017A},              /* Lowercase Z Acute *//* u */
445
    {484, 0x017B},              /* Uppercase Z Overdot *//* u */
446
    {485, 0x017C},              /* Lowercase Z Overdot *//* u */
447
    {486, 0x0128},              /* Uppercase I Tilde *//* u */
448
    {487, 0x0129},              /* Lowercase I Tilde *//* u */
449
    {500, 0xEFBF},              /* Radical Segment */
450
    {501, 0x221D},              /* Proportional To Symbol */
451
    {502, 0x212F},              /* Lowercase Italic E */
452
    {503, 0xEFEC},              /* Alternate LC Epsilon */
453
    {504, 0x2234},              /* Therefore */
454
    {505, 0x0393},              /* Uppercase Greek Gamma */
455
    {506, 0x0394},              /* Uppercase Greek Delta *//* u */
456
    {507, 0x0398},              /* Uppercase Greek Theta */
457
    {508, 0x039B},              /* Uppercase Greek Lambda */
458
    {509, 0x039E},              /* Uppercase Greek Xi */
459
    {510, 0x03A0},              /* Uppercase Greek Pi */
460
    {511, 0x03A3},              /* Uppercase Greek Sigma */
461
    {512, 0x03A5},              /* Uppercase Greek Upsilon */
462
    {513, 0x03A6},              /* Uppercase Greek Phi */
463
    {514, 0x03A8},              /* Uppercase Greek Psi */
464
    {515, 0x03A9},              /* Uppercase Greek Omega */
465
    {516, 0x2207},              /* Nabla Symbol */
466
    {517, 0x2202},              /* Partial Diff Symbol *//* u */
467
    {518, 0x03C2},              /* Terminal Symbol */
468
    {519, 0x2260},              /* Not Equal To Symbol *//* u */
469
    {520, 0xEFEB},              /* Underline, Composite */
470
    {521, 0x2235},              /* Because */
471
    {522, 0x03B1},              /* Lowercase Greek Alpha */
472
    {523, 0x03B2},              /* Lowercase Greek Beta */
473
    {524, 0x03B3},              /* Lowercase Greek Gamma */
474
    {525, 0x03B4},              /* Lowercase Greek Delta */
475
    {526, 0x03B5},              /* Lowercase Greek Epsilon */
476
    {527, 0x03B6},              /* Lowercase Greek Zeta */
477
    {528, 0x03B7},              /* Lowercase Greek Eta */
478
    {529, 0x03B8},              /* Lowercase Greek Theta */
479
    {530, 0x03B9},              /* Lowercase Greek Iota */
480
    {531, 0x03BA},              /* Lowercase Greek Kappa */
481
    {532, 0x03BB},              /* Lowercase Greek Lambda */
482
    {533, 0x03BC},              /* Lowercase Greek Mu */
483
    {534, 0x03BD},              /* Lowercase Greek Nu */
484
    {535, 0x03BE},              /* Lowercase Greek Xi */
485
    {536, 0x03BF},              /* Lowercase Greek Omicron */
486
    {537, 0x03C0},              /* Lowercase Greek Pi *//* u */
487
    {538, 0x03C1},              /* Lowercase Greek Rho */
488
    {539, 0x03C3},              /* Lowercase Greek Sigma */
489
    {540, 0x03C4},              /* Lowercase Greek Tau */
490
    {541, 0x03C5},              /* Lowercase Greek Upsilon */
491
    {542, 0x03C6},              /* Lowercase Greek Phi */
492
    {543, 0x03C7},              /* Lowercase Greek Chi */
493
    {544, 0x03C8},              /* Lowercase Greek Psi */
494
    {545, 0x03C9},              /* Lowercase Greek Omega */
495
    {546, 0x03D1},              /* Open LC Greek Theta */
496
    {547, 0x03D5},              /* Open LC Greek Phi */
497
    {548, 0x03D6},              /* Alternate LC Pi */
498
    {549, 0x2243},              /* Wavy/Straight Approx */
499
    {550, 0x2262},              /* Not Exactly Equal To */
500
    {551, 0x21D1},              /* Up Arrow Dbl Stroke */
501
    {552, 0x21D2},              /* Right Arrow Dbl Stroke */
502
    {553, 0x21D3},              /* Down Arrow Dbl Stroke */
503
    {554, 0x21D0},              /* Left Arrow Dbl Stroke */
504
    {555, 0x21D5},              /* Up/Dn Arrow Dbl Stroke */
505
    {556, 0x21D4},              /* Lft/Rt Arrow Dbl Stroke */
506
    {557, 0x21C4},              /* Right Over Left Arrow */
507
    {558, 0x21C6},              /* Left Over Right Arrow */
508
    {559, 0xEFE9},              /* Vector Symbol */
509
    {560, 0xEFEA},              /* Overline, Composite */
510
    {561, 0x2200},              /* For All Symbol */
511
    {562, 0x2203},              /* There Exists Symbol */
512
    {563, 0x22A4},              /* Top Symbol */
513
    {564, 0x22A5},              /* Bottom Symbol */
514
    {565, 0x222A},              /* Set Union Symbol */
515
    {566, 0x2208},              /* Element Of Symbol */
516
    {567, 0x220B},              /* Contains Symbol */
517
    {568, 0x2209},              /* Not Element Of Symbol */
518
    {569, 0x2282},              /* Proper Subset Symbol */
519
    {570, 0x2283},              /* Proper Superset Symbol */
520
    {571, 0x2284},              /* Not Proper Subset Symbol */
521
    {572, 0x2285},              /* Not Proper Superset Symbol */
522
    {573, 0x2286},              /* Subset Symbol */
523
    {574, 0x2287},              /* Superset Symbol */
524
    {575, 0x2295},              /* Plus In Circle Symbol */
525
    {576, 0x2299},              /* Dot In Circle */
526
    {577, 0x2297},              /* Times In Circle */
527
    {578, 0x2296},              /* Minus In Circle */
528
    {579, 0x2298},              /*  Slash In Circle */
529
    {580, 0x2227},              /* Logical And Symbol */
530
    {581, 0x2228},              /* Logical Or Symbol */
531
    {582, 0x22BB},              /* Exclusive Or Symbol */
532
    {583, 0x2218},              /* Funct. Composition Sym */
533
    {584, 0x20DD},              /* Large Open Circle */
534
    {585, 0x22A3},              /* Assertion Symbol */
535
    {586, 0x22A2},              /* Backwards Assertion Symbol */
536
    {587, 0x222B},              /* Integral Symbol *//* u */
537
    {588, 0x222E},              /* Curvilinear Integral Sym */
538
    {589, 0x2220},              /* Angle Symbol */
539
    {590, 0x2205},              /* Empty Set Symbol */
540
    {591, 0x2135},              /* Hebrew Aleph */
541
    {592, 0x2136},              /* Hebrew Beth */
542
    {593, 0x2137},              /* Hebrew Gimmel */
543
    {594, 0x212D},              /* Fraktur C */
544
    {595, 0x2111},              /* Fraktur I */
545
    {596, 0x211C},              /* Fraktur R */
546
    {597, 0x2128},              /* Fraktur Z */
547
    {598, 0x250C},              /* Top Left Bracket */
548
    {599, 0x2514},              /* Bottom Left Bracket */
549
    {600, 0xEFE3},              /* Top Left Brace */
550
    {601, 0xEFE2},              /* Middle Left Brace */
551
    {602, 0xEFE1},              /* Bottom Left Brace */
552
    {603, 0xEFD4},              /* Middle Curv. Integral */
553
    {604, 0xEFD3},              /* Top Left Summation */
554
    {605, 0x2225},              /* Dbl Verical Line, Comp */
555
    {606, 0xEFD2},              /* Bottom Left Summation */
556
    {607, 0xEFD1},              /* Bottom Diag. Summation */
557
    {608, 0x2510},              /* Top Right Bracket */
558
    {609, 0x2518},              /* Bottom Right Bracket */
559
    {610, 0xEFE0},              /* Top Right Brace */
560
    {611, 0xEFDF},              /* Middle Right Brace */
561
    {612, 0xEFDE},              /* Bottom Right Brace */
562
    {613, 0xEFDD},              /* Thick Vert Line, Comp */
563
    {614, 0x2223},              /* Thin Vert Line, Comp */
564
    {615, 0xEFDC},              /* Bottom Radical, Vert */
565
    {616, 0xEFD0},              /* Top Right Summation */
566
    {617, 0xEFCF},              /* Middle Summation */
567
    {618, 0xEFCE},              /* Bottom Right Summation */
568
    {619, 0xEFCD},              /* Top Diagonal Summation */
569
    {620, 0x2213},              /* Minus Over Plus Sign */
570
    {621, 0x2329},              /* Left Angle Bracket */
571
    {622, 0x232A},              /* Right Angle Bracket */
572
    {623, 0xEFFF},              /* Mask Symbol, Sup */
573
    {624, 0x2245},              /* Wavy/2 Straight Approx */
574
    {625, 0x2197},              /* 45 degree Arrow */
575
    {626, 0x2198},              /* -45 degree Arrow */
576
    {627, 0x2199},              /* -135 degree Arrow */
577
    {628, 0x2196},              /* 135 degree Arrow */
578
    {629, 0x25B5},              /* Up Open Triangle */
579
    {630, 0x25B9},              /* Right Open Triangle */
580
    {631, 0x25BF},              /* Down Open Triangle */
581
    {632, 0x25C3},              /* Left Open Triangle */
582
    {633, 0x226A},              /* Much Less Than Sign */
583
    {634, 0x226B},              /* Much Greater Than Sign */
584
    {635, 0x2237},              /* Proportional To Symbol */
585
    {636, 0xEFCA},              /* Defined As Symbol */
586
    {637, 0xEFD5},              /* LC Greek Digamma */
587
    {638, 0x210F},              /* Plank's Constant/2 pi */
588
    {639, 0x2112},              /* Laplace Transform Sym */
589
    {640, 0xEFFE},              /* Power Set Symbol */
590
    {641, 0x2118},              /* Weierstraussian Symbol */
591
    {642, 0x2211},              /* Summation Symbol, Sigma *//* u */
592
    {643, 0x301A},              /* Left Double Bracket */
593
    {644, 0xEFC9},              /* Middle Dbl Bracket */
594
    {645, 0x301B},              /* Right Double Bracket */
595
    {646, 0x256D},              /* Lft Top Round Corner */
596
    {647, 0x2570},              /* Lft Bottom Round Corner */
597
    {648, 0xEFC8},              /* Ext Lrg Union/Product */
598
    {649, 0xEFC7},              /* Bottom Lrg Union */
599
    {650, 0xEFC6},              /* Top Large Intersection */
600
    {651, 0xEFC5},              /* Top Lft Dbl Bracket */
601
    {652, 0xEFC4},              /* Bottom Lft Dbl Bracket */
602
    {653, 0xEFFC},              /* Large Open Box */
603
    {654, 0x25C7},              /* Open Diamond */
604
    {655, 0x256E},              /* Rt Top Round Corner */
605
    {656, 0x256F},              /* Rt Bottom Round Corner */
606
    {657, 0xEFC3},              /* Bottom Lrg Bott Product */
607
    {658, 0xEFC2},              /* Top Large Top Product */
608
    {659, 0xEFC1},              /* Top Rt Dbl Bracket */
609
    {660, 0xEFC0},              /* Bottom Rt Dbl Bracket */
610
    {661, 0xEFFB},              /* Large Solid Box */
611
    {662, 0x25C6},              /* Solid Diamond */
612
    {663, 0x220D},              /* Such That */
613
    {664, 0x2217},              /* Math Asterisk Sign */
614
    {665, 0xEFE8},              /* Horizontal Arrow Ext */
615
    {666, 0xEFCB},              /* Dbl Horizontal Arrow Ext */
616
    {667, 0xEFCC},              /* Complement of #617 */
617
    {668, 0x221F},              /* Right Angle Symbol */
618
    {669, 0x220F},              /* N-ary Product */
619
    {683, 0x203E},              /* Triangular Bullet */
620
    {684, 0x25CA},              /* Lozenge */
621
    {685, 0xF4CB},
622
    {1000, 0x2070},             /* Superior Numeral 0 */
623
    {1001, 0x2074},             /* Superior Numeral 4 */
624
    {1002, 0x2075},             /* Superior Numeral 5 */
625
    {1003, 0x2076},             /* Superior Numeral 6 */
626
    {1004, 0x2077},             /* Superior Numeral 7 */
627
    {1005, 0x2078},             /* Superior Numeral 8 */
628
    {1006, 0x2079},             /* Superior Numeral 9 */
629
    {1009, 0xF4C1},
630
    {1010, 0xF4C2},
631
    {1011, 0xEFA5},
632
    {1012, 0xEFAE},
633
    {1013, 0xEFA6},
634
    {1015, 0xEFAF},
635
    {1017, 0x201C},             /* Double Open Quote (6) *//* u */
636
    {1018, 0x201D},             /* Double Close Quote (9) *//* u */
637
    {1019, 0x201E},             /* Dbl Baseline Quote (9) *//* u */
638
    {1020, 0x2003},             /* Em Space */
639
    {1021, 0x2002},             /* En Space */
640
    {1023, 0x2009},             /* Thin Space */
641
    {1028, 0x2026},             /* Ellipsis *//* u */
642
    {1030, 0x02DB},             /* Uppercase Ogonek */
643
    {1031, 0x017E},             /* Lowercase Z Hacek *//* u */
644
    {1034, 0x2120},             /* Signature Mark, Sup */
645
    {1036, 0x211E},             /* Prescription Sign */
646
    {1040, 0xF001},             /* Lowercase FI Ligature *//* u */
647
    {1041, 0xF002},             /* Lowercase FL Ligature *//* u */
648
    {1042, 0xFB00},             /* Lowercase FF Ligature */
649
    {1043, 0xFB03},             /* Lowercase FFI Ligature */
650
    {1044, 0xFB04},             /* Lowercase ffl Ligature */
651
    {1045, 0x02DD},             /* Uppercase Dbl Acute */
652
    {1047, 0x0133},             /* Lowercase IJ Ligature *//* u */
653
    {1060, 0x2105},             /* Care Of Symbol *//* u */
654
    {1061, 0x011E},             /* Uppercase G Breve *//* u */
655
    {1062, 0x011F},             /* Lowercase G Breve *//* u */
656
    {1063, 0x015E},             /* Uppercase S Cedilla *//* u */
657
    {1064, 0x015F},             /* Lowercase S Cedilla *//* u */
658
    {1065, 0x0130},             /* Uppercase I Overdot *//* u */
659
    {1066, 0x20A3},             /* French Franc *//* u */
660
    {1067, 0x201A},             /* Sngl Baseline Quote (9) *//* u */
661
    {1068, 0x2030},             /* Per Mill Sign *//* u */
662
    {1069, 0x20AC},             /* Euro Sign */
663
    {1084, 0x02C9},             /* Lowercase Macron *//* u */
664
    {1085, 0xEFEF},             /* Uppercase Macron */
665
    {1086, 0x02D8},             /* Lowercase Breve *//* u */
666
    {1087, 0xEFEE},             /* Uppercase Breve */
667
    {1088, 0x02D9},             /* Lowercase Overdot *//* u */
668
    {1089, 0xEFED},             /* Uppercase Overdot */
669
    {1090, 0x0153},             /* Lowercase OE Ligature *//* u */
670
    {1091, 0x0152},             /* Uppercase OE Ligature *//* u */
671
    {1092, 0x2039},             /* Sngl lft point Ang Quote *//* u */
672
    {1093, 0x203A},             /* Sngl rt point Ang Quote *//* u */
673
    {1094, 0x25A1},             /* Medium Open Box */
674
    {1095, 0x0141},             /* Uppercase L-Stroke *//* u */
675
    {1096, 0x0142},             /* Lowercase L-Stroke *//* u */
676
    {1097, 0x02DD},             /* Lowercase Dbl Acute *//* u */
677
    {1098, 0x02DB},             /* Lowercase Ogonek *//* u */
678
    {1099, 0x21B5},             /* Carriage Return Symbol */
679
    {1100, 0x00AE},             /* Registered, Full, Serif */
680
    {1101, 0x00A9},             /* Copyright, Full, Serif */
681
    {1102, 0x2122},             /* Trademark, Full, Serif */
682
    {1103, 0x00AE},             /* Registered, Full, Sans */
683
    {1104, 0x00A9},             /* Copyright, Full, Sans */
684
    {1105, 0x2122},             /* Trademark, Full, Sans */
685
    {1106, 0x017D},             /* Uppercase Z Hacek *//* u */
686
    {1107, 0x0132},             /* Uppercase IJ Ligature *//* u */
687
    {1108, 0x25AB},             /* Small Open Box */
688
    {1109, 0x25E6},             /* Small Open Bullet */
689
    {1110, 0x25CB},             /* Medium Open Bullet */
690
    {1111, 0x25CF},             /* Large Solid Bullet */
691
    {1112, 0x2182},             /* Visible Carriage Return */
692
    {1113, 0x21E5},             /* Visible Tab */
693
    {1114, 0x2423},             /* Visible Space */
694
    {1115, 0x00AD},             /* Visible Soft Hyphen */
695
    {1116, 0xFFFF},             /* Visible End-of-File */
696
    {1409, 0x02D9},             /* Dot Above */
697
    {1450, 0xEFA8},
698
    {1451, 0xEFA9},
699
    {1452, 0xF4CA},
700
    {1453, 0xF4CC},
701
    {1454, 0xEFAC},
702
    {2000, 0x278A},             /* Dingbat, negative circled 1 */
703
    {2001, 0x27A1},             /* Black rightwards arrow */
704
    {2002, 0x278C},             /* Dingbat, negative circled 3 */
705
    {2003, 0x278D},             /* Dingbat, negative circled 4 */
706
    {2004, 0x278E},             /* Dingbat, negative circled 5 */
707
    {2005, 0x2790},             /* Dingbat, negative circled 7 */
708
    {2007, 0x2792},             /* Dingbat, negative circled 9 */
709
    {2008, 0x2793},             /* Dingbat, negative circled 10 */
710
    {2009, 0x2791},             /* Dingbat, negative circled 8 */
711
    {2010, 0x2713},             /* Checkmark */
712
    {2011, 0x2727},             /* White 4-pointed star */
713
    {2013, 0x2708},             /* Airplane */
714
    {2014, 0x2722},             /* Four teardrop-spoked asterisk */
715
    {2015, 0x2789},             /* Dingbat, circled 10 */
716
    {2016, 0x2780},             /* Dingbat, circled 1 */
717
    {2017, 0x2781},             /* Dingbat, circled 2 */
718
    {2018, 0x2782},             /* Dingbat, circled 3 */
719
    {2019, 0x2783},             /* Dingbat, circled 4 */
720
    {2020, 0x2784},             /* Dingbat, circled 5 */
721
    {2021, 0x2785},             /* Dingbat, circled 6 */
722
    {2022, 0x2786},             /* Dingbat, circled 7 */
723
    {2023, 0x2787},             /* Dingbat, circled 8 */
724
    {2024, 0x2788},             /* Dingbat, circled 9 */
725
    {2027, 0x2717},             /* Ballot X */
726
    {2030, 0x00A7},             /* Section Sign */
727
    {2031, 0x278B},             /* Dingbat, negative circled 2 */
728
    {2032, 0x272C},             /* Black center white star */
729
    {2037, 0x279C},             /* Heavy round-tipped rightwards arrow */
730
    {2041, 0x27A7},
731
    {2044, 0x271D},
732
    {2046, 0x2736},
733
    {2047, 0x272B},
734
    {2048, 0x25B2},
735
    {2050, 0x2020},
736
    {2052, 0x272A},
737
    {2053, 0x279B},
738
    {2055, 0x27A5},
739
    {2058, 0x2730},
740
    {2059, 0x25EF},
741
    {2060, 0x272D},
742
    {2061, 0x278F},
743
    {2064, 0x2606},
744
    {2070, 0x279D},
745
    {2071, 0x279E},
746
    {2072, 0x2749},
747
    {2076, 0x271E},
748
    {2077, 0x2718},
749
    {2078, 0x272E},
750
    {2080, 0x2533},
751
    {2083, 0x2605},
752
    {2087, 0x27A6},
753
    {2088, 0x2729},
754
    {2089, 0x2756},
755
    {2090, 0x2737},
756
    {2091, 0x25A0},
757
    {2092, 0x272F},
758
    {2096, 0x2702},
759
    {2100, 0x275B},
760
    {2104, 0x27BD},
761
    {2105, 0x27B8},
762
    {2108, 0x2709},
763
    {2109, 0x2701},
764
    {2113, 0x275C},
765
    {2116, 0x274D},
766
    {2120, 0x2703},
767
    {2121, 0x2712},
768
    {2200, 0x2776},
769
    {2202, 0x2778},
770
    {2203, 0x2779},
771
    {2204, 0x277A},
772
    {2205, 0x277C},
773
    {2207, 0x277E},
774
    {2208, 0x277F},
775
    {2209, 0x277D},
776
    {2210, 0x2714},
777
    {2212, 0x27BE},
778
    {2213, 0x2765},
779
    {2215, 0x2469},
780
    {2216, 0x2460},
781
    {2217, 0x2461},
782
    {2218, 0x2462},
783
    {2219, 0x2463},
784
    {2220, 0x2464},
785
    {2221, 0x2465},
786
    {2222, 0x2466},
787
    {2223, 0x2467},
788
    {2224, 0x2468},
789
    {2227, 0xEFAB},
790
    {2228, 0xEFA1},
791
    {2229, 0xF4C0},
792
    {2230, 0x2720},
793
    {2231, 0x2777},
794
    {2232, 0x274B},
795
    {2233, 0x2798},
796
    {2234, 0x27B3},
797
    {2235, 0x27A4},
798
    {2240, 0x2738},
799
    {2242, 0x27BC},
800
    {2245, 0x27B7},
801
    {2248, 0x25BC},
802
    {2249, 0x25D6},
803
    {2250, 0x2751},
804
    {2252, 0x2732},
805
    {2253, 0x27BB},
806
    {2254, 0x2716},
807
    {2256, 0x2731},
808
    {2258, 0x2743},
809
    {2260, 0x2747},
810
    {2261, 0x277B},
811
    {2262, 0x27A8},
812
    {2263, 0x00A9},
813
    {2264, 0x274A},
814
    {2265, 0x27B4},
815
    {2267, 0x27A2},
816
    {2272, 0x2739},
817
    {2278, 0x273D},
818
    {2279, 0x273B},
819
    {2280, 0x25BD},
820
    {2282, 0x274F},
821
    {2283, 0x2733},
822
    {2285, 0x27BA},
823
    {2286, 0x2715},
824
    {2287, 0x27B5},
825
    {2288, 0x2741},
826
    {2290, 0x273E},
827
    {2292, 0x2748},
828
    {2293, 0x00AE},
829
    {2295, 0x261E},
830
    {2300, 0x2767},
831
    {2305, 0x2799},
832
    {2306, 0x2794},
833
    {2307, 0x270F},
834
    {2308, 0x2752},
835
    {2309, 0x27B9},
836
    {2310, 0x279A},
837
    {2312, 0x261B},
838
    {2313, 0x270C},
839
    {2315, 0x2706},
840
    {2317, 0x2766},
841
    {2324, 0x2711},
842
    {2325, 0x2750},
843
    {2326, 0x27A3},
844
    {2327, 0x27B6},
845
    {2410, 0x2763},
846
    {2411, 0x2721},
847
    {2412, 0x27B2},
848
    {2414, 0x2764},
849
    {2428, 0x2762},
850
    {2432, 0x2746},
851
    {2441, 0x27A9},
852
    {2442, 0x27AB},
853
    {2443, 0x27AD},
854
    {2444, 0x2719},
855
    {2447, 0x2734},
856
    {2448, 0x2726},
857
    {2451, 0x273F},
858
    {2452, 0x273A},
859
    {2454, 0x275A},
860
    {2456, 0x271C},
861
    {2458, 0x2707},
862
    {2460, 0x2740},
863
    {2464, 0x2744},
864
    {2472, 0x2723},
865
    {2475, 0x27AF},
866
    {2476, 0x271F},
867
    {2478, 0x2724},
868
    {2479, 0x2735},
869
    {2480, 0x2758},
870
    {2483, 0x273C},
871
    {2484, 0x2733},
872
    {2486, 0x2759},
873
    {2488, 0x271B},
874
    {2490, 0x2742},
875
    {2492, 0x2745},
876
    {2493, 0x0040},
877
    {2497, 0x2704},
878
    {2498, 0x260E},
879
    {2499, 0x270E},
880
    {2500, 0x2761},
881
    {2501, 0x275D},
882
    {2502, 0x2725},
883
    {2504, 0x27A0},
884
    {2507, 0x27AC},
885
    {2508, 0x27AE},
886
    {2509, 0x2710},
887
    {2513, 0x0023},
888
    {2514, 0x260F},
889
    {2515, 0x270D},
890
    {2517, 0x275E},
891
    {2520, 0x279F},
892
    {2523, 0x27AA},
893
    {2524, 0x27B1},
894
    {2612, 0x0391},
895
    {2613, 0x0392},
896
    {2616, 0x0395},
897
    {2617, 0x0396},
898
    {2618, 0x0397},
899
    {2620, 0x0399},
900
    {2621, 0x039A},
901
    {2623, 0x039C},
902
    {2624, 0x039D},
903
    {2626, 0x039F},
904
    {2628, 0x03A1},
905
    {2630, 0x03A4},
906
    {2633, 0x03A7},
907
    {2680, 0xEFAD},
908
    {2681, 0xF4C3},
909
    {2682, 0xF4C5},
910
    {2726, 0x2726},
911
    {3487, 0xEFA0},
912
    {3488, 0xF4C9},
913
    {3489, 0xF4CD},
914
    {3490, 0xF4C6},
915
    {3812, 0xF000}
916
};
917
0
#define pl_map_m2u_size countof(pl_map_m2u)
918
919
/* inverse of previous map */
920
static const pl_glyph_mapping_t pl_map_u2m[] = {
921
    {0x0020, 0},                /* space         */
922
    {0x0021, 1},                /* exclam        */
923
    {0x0022, 2},                /* quotedbl      */
924
    {0x0023, 3},                /* numbersign    */
925
    {0x0024, 4},                /* dollar        */
926
    {0x0025, 5},                /* percent       */
927
    {0x0026, 6},                /* ampersand     */
928
    {0x0027, 329},              /* quotesingle or 8 */
929
    {0x0028, 9},                /* parenleft     */
930
    {0x0029, 10},               /* parenright    */
931
    {0x002A, 11},               /* asterisk      */
932
    {0x002B, 12},               /* plus          */
933
    {0x002C, 13},               /* comma         */
934
    {0x002D, 14},               /* hyphen        */
935
    {0x002E, 15},               /* period        */
936
    {0x002F, 16},               /* slash         */
937
    {0x0030, 17},               /* zero          */
938
    {0x0031, 18},               /* one           */
939
    {0x0032, 19},               /* two           */
940
    {0x0033, 20},               /* three         */
941
    {0x0034, 21},               /* four          */
942
    {0x0035, 22},               /* five          */
943
    {0x0036, 23},               /* six           */
944
    {0x0037, 24},               /* seven         */
945
    {0x0038, 25},               /* eight         */
946
    {0x0039, 26},               /* nine          */
947
    {0x003A, 27},               /* colon         */
948
    {0x003B, 28},               /* semicolon     */
949
    {0x003C, 29},               /* less          */
950
    {0x003D, 30},               /* equal         */
951
    {0x003E, 31},               /* greater       */
952
    {0x003F, 32},               /* question      */
953
    {0x0040, 33},               /* at            */
954
    {0x0041, 34},               /* A             */
955
    {0x0042, 35},               /* B             */
956
    {0x0043, 36},               /* C             */
957
    {0x0044, 37},               /* D             */
958
    {0x0045, 38},               /* E             */
959
    {0x0046, 39},               /* F             */
960
    {0x0047, 40},               /* G             */
961
    {0x0048, 41},               /* H             */
962
    {0x0049, 42},               /* I             */
963
    {0x004A, 43},               /* J             */
964
    {0x004B, 44},               /* K             */
965
    {0x004C, 45},               /* L             */
966
    {0x004D, 46},               /* M             */
967
    {0x004E, 47},               /* N             */
968
    {0x004F, 48},               /* O             */
969
    {0x0050, 49},               /* P             */
970
    {0x0051, 50},               /* Q             */
971
    {0x0052, 51},               /* R             */
972
    {0x0053, 52},               /* S             */
973
    {0x0054, 53},               /* T             */
974
    {0x0055, 54},               /* U             */
975
    {0x0056, 55},               /* V             */
976
    {0x0057, 56},               /* W             */
977
    {0x0058, 57},               /* X             */
978
    {0x0059, 58},               /* Y             */
979
    {0x005A, 59},               /* Z             */
980
    {0x005B, 60},               /* bracketleft   */
981
    {0x005C, 61},               /* backslash     */
982
    {0x005D, 62},               /* bracketright  */
983
    {0x005E, 63},               /* asciicircum   */
984
    {0x005F, 64},               /* underscore    */
985
    {0x0060, 107},              /* grave         */
986
    {0x0061, 67},               /* a             */
987
    {0x0062, 68},               /* b             */
988
    {0x0063, 69},               /* c             */
989
    {0x0064, 70},               /* d             */
990
    {0x0065, 71},               /* e             */
991
    {0x0066, 72},               /* f             */
992
    {0x0067, 73},               /* g             */
993
    {0x0068, 74},               /* h             */
994
    {0x0069, 75},               /* i             */
995
    {0x006A, 76},               /* j             */
996
    {0x006B, 77},               /* k             */
997
    {0x006C, 78},               /* l             */
998
    {0x006D, 79},               /* m             */
999
    {0x006E, 80},               /* n             */
1000
    {0x006F, 81},               /* o             */
1001
    {0x0070, 82},               /* p             */
1002
    {0x0071, 83},               /* q             */
1003
    {0x0072, 84},               /* r             */
1004
    {0x0073, 85},               /* s             */
1005
    {0x0074, 86},               /* t             */
1006
    {0x0075, 87},               /* u             */
1007
    {0x0076, 88},               /* v             */
1008
    {0x0077, 89},               /* w             */
1009
    {0x0078, 90},               /* x             */
1010
    {0x0079, 91},               /* y             */
1011
    {0x007A, 92},               /* z             */
1012
    {0x007B, 93},               /* braceleft     */
1013
    {0x007C, 94},               /* bar           */
1014
    {0x007D, 95},               /* braceright    */
1015
    {0x007E, 96},               /* asciitilde    */
1016
    {0x00A0, 0},                /* No Break Space */
1017
    {0x00A1, 121},              /* exclamdown    */
1018
    {0x00A2, 128},              /* cent          */
1019
    {0x00A3, 124},              /* sterling      */
1020
    {0x00A4, 123},              /* currency      */
1021
    {0x00A5, 125},              /* yen           */
1022
    {0x00A6, 192},              /* brokenbar     */
1023
    {0x00A7, 126},              /* section       */
1024
    {0x00A8, 109},              /* dieresis      */
1025
    {0x00A9, 193},              /* copyright...  (various) */
1026
    {0x00AA, 186},              /*               */
1027
    {0x00AB, 188},              /* guillemotleft */
1028
    {0x00AC, 194},              /* logicalnot    */
1029
    {0x00AD, 195},              /* hyphen        */
1030
    {0x00AE, 196},              /* registered (also 1103 & 1100) */
1031
    {0x00AF, 113},              /* overline, also matches 1084 lc macron */
1032
    {0x00B0, 116},              /* degree        */
1033
    {0x00B1, 191},              /* plusminus     */
1034
    {0x00B2, 197},              /* twosuperior   */
1035
    {0x00B3, 198},              /* threesuperior */
1036
    {0x00B4, 106},              /* acute         */
1037
    {0x00B5, 180},              /* mu & 533 mu3  */
1038
    {0x00B6, 181},              /* paragraph     */
1039
    {0x00B7, 179},              /* periodcentered & 302 middot */
1040
    {0x00B8, 199},              /* cedilla & 330 */
1041
    {0x00B9, 200},              /* onesuperior   */
1042
    {0x00BA, 187},              /*               */
1043
    {0x00BB, 190},              /* guillemotright */
1044
    {0x00BC, 184},              /* onequarter    */
1045
    {0x00BD, 185},              /* onehalf       */
1046
    {0x00BE, 182},              /* threequarters */
1047
    {0x00BF, 122},              /* questiondown  */
1048
    {0x00C0, 99},               /* Agrave        */
1049
    {0x00C1, 161},              /* Aacute        */
1050
    {0x00C2, 100},              /* Acircumflex   */
1051
    {0x00C3, 162},              /* Atilde        */
1052
    {0x00C4, 153},              /* Adieresis     */
1053
    {0x00C5, 145},              /* Aring         */
1054
    {0x00C6, 148},              /* AE            */
1055
    {0x00C7, 117},              /* Ccedilla      */
1056
    {0x00C8, 101},              /* Egrave        */
1057
    {0x00C9, 157},              /* Eacute        */
1058
    {0x00CA, 102},              /* Ecircumflex   */
1059
    {0x00CB, 103},              /* Edieresis     */
1060
    {0x00CC, 167},              /* Igrave        */
1061
    {0x00CD, 166},              /* Iacute        */
1062
    {0x00CE, 104},              /* Icircumflex   */
1063
    {0x00CF, 105},              /* Idieresis     */
1064
    {0x00D0, 164},              /* Eth see also 0x0110 */
1065
    {0x00D1, 119},              /* Ntilde        */
1066
    {0x00D2, 169},              /* Ograve        */
1067
    {0x00D3, 168},              /* Oacute        */
1068
    {0x00D4, 160},              /* Ocircumflex   */
1069
    {0x00D5, 170},              /* Otilde        */
1070
    {0x00D6, 155},              /* Odieresis     */
1071
    {0x00D7, 201},              /* multiply      */
1072
    {0x00D8, 147},              /* Oslash        */
1073
    {0x00D9, 111},              /* Ugrave        */
1074
    {0x00DA, 174},              /* Uacute        */
1075
    {0x00DB, 112},              /* Ucircumflex   */
1076
    {0x00DC, 156},              /* Udieresis     */
1077
    {0x00DD, 114},              /* Yacute        */
1078
    {0x00DE, 177},              /* Thorn         */
1079
    {0x00DF, 159},              /* germandbls    */
1080
    {0x00E0, 137},              /* agrave        */
1081
    {0x00E1, 133},              /* aacute        */
1082
    {0x00E2, 129},              /* acircumflex   */
1083
    {0x00E3, 163},              /* atilde        */
1084
    {0x00E4, 141},              /* adieresis     */
1085
    {0x00E5, 149},              /* aring         */
1086
    {0x00E6, 152},              /* ae            */
1087
    {0x00E7, 118},              /* ccedilla      */
1088
    {0x00E8, 138},              /* egrave        */
1089
    {0x00E9, 134},              /* eacute        */
1090
    {0x00EA, 130},              /* ecircumflex   */
1091
    {0x00EB, 142},              /* edieresis     */
1092
    {0x00EC, 154},              /* igrave        */
1093
    {0x00ED, 150},              /* iacute        */
1094
    {0x00EE, 146},              /* icircumflex   */
1095
    {0x00EF, 158},              /* idieresis     */
1096
    {0x00F0, 165},              /* eth           */
1097
    {0x00F1, 120},              /* ntilde        */
1098
    {0x00F2, 139},              /* ograve        */
1099
    {0x00F3, 135},              /* oacute        */
1100
    {0x00F4, 131},              /* ocircumflex   */
1101
    {0x00F5, 171},              /* otilde        */
1102
    {0x00F6, 143},              /* odieresis     */
1103
    {0x00F7, 202},              /* divide        */
1104
    {0x00F8, 151},              /* oslash        */
1105
    {0x00F9, 140},              /* ugrave        */
1106
    {0x00FA, 136},              /* uacute        */
1107
    {0x00FB, 132},              /* ucircumflex   */
1108
    {0x00FC, 144},              /* udieresis     */
1109
    {0x00FD, 115},              /* yacute        */
1110
    {0x00FE, 178},              /* thorn         */
1111
    {0x00FF, 176},              /* ydieresis     */
1112
    {0x0100, 402},              /* Amacron (NEW) */
1113
    {0x0101, 403},              /* amacron (NEW) */
1114
    {0x0102, 400},              /* Abreve        */
1115
    {0x0103, 401},              /* abreve        */
1116
    {0x0104, 404},              /* Aogonek       */
1117
    {0x0105, 405},              /* aogonek       */
1118
    {0x0106, 406},              /* Cacute        */
1119
    {0x0107, 407},              /* cacute        */
1120
    {0x010C, 410},              /* Ccaron        */
1121
    {0x010D, 411},              /* ccaron        */
1122
    {0x010E, 414},              /* Dcaron        */
1123
    {0x010F, 415},              /* dcaron        */
1124
    {0x0110, 164},              /* Eth see also 0x00D0 */
1125
    {0x0111, 342},              /* dmacron       */
1126
    {0x0112, 420},              /* Emacron (NEW) */
1127
    {0x0113, 421},              /* emacron (NEW) */
1128
    {0x0116, 418},              /* Edot (NEW)    */
1129
    {0x0117, 419},              /* edot (NEW)    */
1130
    {0x0118, 422},              /* Eogonek       */
1131
    {0x0119, 423},              /* eogonek       */
1132
    {0x011A, 416},              /* Ecaron        */
1133
    {0x011B, 417},              /* ecaron        */
1134
    {0x011E, 1061},             /* Gbreve        */
1135
    {0x011F, 1062},             /* gbreve        */
1136
    {0x0122, 428},              /* Gcommaaccent (NEW) */
1137
    {0x0123, 429},              /* gcommaaccent (NEW) */
1138
    {0x0128, 486},              /* Itilde        */
1139
    {0x0129, 487},              /* itilde        */
1140
    {0x012A, 434},              /* Imacron (NEW) */
1141
    {0x012B, 435},              /* imacron (NEW) */
1142
    {0x012E, 432},              /* Iogonek (NEW) */
1143
    {0x012F, 433},              /* iogonek (NEW) */
1144
    {0x0130, 1065},             /* Idot          */
1145
    {0x0131, 328},              /* dotlessi      */
1146
    {0x0132, 1107},             /* IJ            */
1147
    {0x0133, 1047},             /* ij            */
1148
    {0x0136, 438},              /* Kcomma (NEW)  */
1149
    {0x0137, 439},              /* kcomma (NEW)  */
1150
    {0x0138, 335},              /* kra (NEW)     */
1151
    {0x0139, 440},              /* Lacute        */
1152
    {0x013A, 441},              /* lacute        */
1153
    {0x013B, 444},              /* Lcomma (NEW)  */
1154
    {0x013C, 445},              /* lcomma (NEW)  */
1155
    {0x013D, 442},              /* Lcaron        */
1156
    {0x013E, 443},              /* lcaron        */
1157
    {0x013F, 306},              /* Ldot          */
1158
    {0x0140, 307},              /* ldot          */
1159
    {0x0141, 1095},             /* Lslash        */
1160
    {0x0142, 1096},             /* lslash        */
1161
    {0x0143, 446},              /* Nacute        */
1162
    {0x0144, 447},              /* nacute        */
1163
    {0x0145, 450},              /* Ncomma (NEW)  */
1164
    {0x0146, 451},              /* ncomma (NEW)  */
1165
    {0x0147, 448},              /* Ncaron        */
1166
    {0x0148, 449},              /* ncaron        */
1167
    {0x0149, 309},              /* apostrophe_n  */
1168
    {0x014A, 340},              /* Eng (NEW)     */
1169
    {0x014B, 341},              /* eng (NEW)     */
1170
    {0x014C, 454},              /* Omacron (NEW) */
1171
    {0x014D, 455},              /* omacron (NEW) */
1172
    {0x0150, 452},              /* Odblacute     */
1173
    {0x0151, 453},              /* odblacute     */
1174
    {0x0152, 1091},             /* OE            */
1175
    {0x0153, 1090},             /* oe            */
1176
    {0x0154, 456},              /* Racute        */
1177
    {0x0155, 457},              /* racute        */
1178
    {0x0156, 460},              /* Rcomma (NEW)  */
1179
    {0x0157, 461},              /* rcomma (NEW)  */
1180
    {0x0158, 458},              /* Rcaron        */
1181
    {0x0159, 459},              /* rcaron        */
1182
    {0x015A, 462},              /* Sacute        */
1183
    {0x015B, 463},              /* sacute        */
1184
    {0x015E, 1063},             /* Scedilla      */
1185
    {0x015F, 1064},             /* scedilla      */
1186
    {0x0160, 172},              /* Scaron        */
1187
    {0x0161, 173},              /* scaron        */
1188
    {0x0162, 468},              /* Tcedilla      */
1189
    {0x0163, 469},              /* tcedilla      */
1190
    {0x0164, 466},              /* Tcaron        */
1191
    {0x0165, 467},              /* tcaron        */
1192
    {0x0166, 338},              /* Tbar (NEW)    */
1193
    {0x0167, 339},              /* tbar (NEW)    */
1194
    {0x0168, 470},              /* Utilde (NEW)  */
1195
    {0x0169, 471},              /* utilde (NEW)  */
1196
    {0x016A, 478},              /* Umacron (NEW) */
1197
    {0x016B, 479},              /* umacron (NEW) */
1198
    {0x016E, 476},              /* Uring         */
1199
    {0x016F, 477},              /* uring         */
1200
    {0x0170, 474},              /* Udblacute     */
1201
    {0x0171, 475},              /* udblacute     */
1202
    {0x0172, 480},              /* Uogonek (NEW) */
1203
    {0x0173, 481},              /* uogonek (NEW) */
1204
    {0x0178, 175},              /* Ydieresis     */
1205
    {0x0179, 482},              /* Zacute        */
1206
    {0x017A, 483},              /* zacute        */
1207
    {0x017B, 484},              /* Zoverdot      */
1208
    {0x017C, 485},              /* zoverdot      */
1209
    {0x017D, 1106},             /* Zcaron        */
1210
    {0x017E, 1031},             /* zcaron        */
1211
    {0x0192, 127},              /* florin        */
1212
    {0x02C6, 108},              /* circumflex    */
1213
    {0x02C7, 315},              /* caron         */
1214
    {0x02C9, 1084},             /* macron        */
1215
    {0x02D8, 1086},             /* breve         */
1216
    {0x02D9, 1088},             /* dotaccent     */
1217
    {0x02D9, 1409},             /* dotaccent     */
1218
    {0x02DA, 316},              /* ring          */
1219
    {0x02DB, 1098},             /* ogonek & 1425, 1412, 1030 */
1220
    {0x02DC, 110},              /* tilde         */
1221
    {0x02DD, 1097},             /* hungarumlaut & was 1407 (NEW) */
1222
    {0x0391, 2612},             /* Alpha         *//* Prefer Math, use Greek if nec. */
1223
    {0x0392, 2613},             /* Beta          */
1224
    {0x0393, 283},              /* Gamma or 505, or Greek */
1225
    {0x0394, 506},              /* Delta         */
1226
    {0x0395, 2616},             /* Epsilon       */
1227
    {0x0396, 2617},             /* Zeta          */
1228
    {0x0397, 2618},             /* Eta           */
1229
    {0x0398, 507},              /* Theta or 507 or Greek */
1230
    {0x0399, 2620},             /* Iota          */
1231
    {0x039A, 2621},             /* Kappa         */
1232
    {0x039B, 508},              /* Lambda        */
1233
    {0x039C, 2623},             /* Mu            */
1234
    {0x039D, 2624},             /* Nu            */
1235
    {0x039E, 509},              /* Xi            */
1236
    {0x039F, 2626},             /* Omicron       */
1237
    {0x03A0, 510},              /* Pi            */
1238
    {0x03A1, 2628},             /* Rho           */
1239
    {0x03A3, 511},              /* Sigma         */
1240
    {0x03A4, 2630},             /* Tau           */
1241
    {0x03A5, 512},              /* Upsilon       */
1242
    {0x03A6, 288},              /* Phi or 513 or Greek */
1243
    {0x03A7, 2633},             /* Chi           */
1244
    {0x03A8, 514},              /* Psi           */
1245
    {0x03A9, 290},              /* Omega or 515  */
1246
    {0x03B1, 281},              /* alpha or 522  */
1247
    {0x03B2, 523},              /* beta          */
1248
    {0x03B3, 524},              /* gamma         */
1249
    {0x03B4, 291},              /* delta or 525  */
1250
    {0x03B5, 294},              /* epsilon or 503 or 526 or Greek */
1251
    {0x03B6, 527},              /* zeta          */
1252
    {0x03B7, 528},              /* eta           */
1253
    {0x03B8, 529},              /* theta         */
1254
    {0x03B9, 530},              /* iota          */
1255
    {0x03BA, 531},              /* kappa         */
1256
    {0x03BB, 532},              /* lambda        */
1257
    {0x03BC, 533},              /* mu            */
1258
    {0x03BD, 534},              /* nu            */
1259
    {0x03BE, 535},              /* xi (NEW) fix  */
1260
    {0x03BF, 536},              /* omicron       */
1261
    {0x03C0, 284},              /* pi or 537     */
1262
    {0x03C1, 538},              /* rho           */
1263
    {0x03C2, 518},              /* sigma1 - term */
1264
    {0x03C3, 286},              /* sigma or 539  */
1265
    {0x03C4, 287},              /* tau or 540    */
1266
    {0x03C5, 541},              /* upsilon       */
1267
    {0x03C6, 293},              /* phi or 542    */
1268
    {0x03C7, 543},              /* chi           */
1269
    {0x03C8, 544},              /* psi           */
1270
    {0x03C9, 545},              /* omega         */
1271
    {0x03D1, 546},              /* theta1        */
1272
    {0x03D2, 512},              /* Upsilon1      */
1273
    {0x03D5, 547},              /* phi1          */
1274
    {0x03D6, 548},              /* omega1        */
1275
    {0x2002, 1021},             /* en space (NEW) */
1276
    {0x2003, 1020},             /* em space (NEW) */
1277
    {0x2009, 1023},             /* thin space (NEW) */
1278
    {0x2013, 326},              /* endash        */
1279
    {0x2014, 325},              /* emdash        */
1280
    {0x2017, 314},              /* dbl underline */
1281
    {0x2018, 66},               /* quoteleft     */
1282
    {0x2019, 8},                /* quoteright    */
1283
    {0x201A, 1067},             /* quotesinglbase */
1284
    {0x201C, 1017},             /* quotedblleft  */
1285
    {0x201D, 1018},             /* quotedblright */
1286
    {0x201E, 1019},             /* quotedblbase  */
1287
    {0x2020, 312},              /* dagger        */
1288
    {0x2021, 327},              /* daggerdbl     */
1289
    {0x2022, 331},              /* bullet        */
1290
    {0x2026, 1028},             /* ellipsis      */
1291
    {0x2030, 1068},             /* perthousand   */
1292
    {0x2032, 310},              /* minute        */
1293
    {0x2033, 311},              /* second        */
1294
    {0x2039, 1092},             /* guilsinglleft */
1295
    {0x203A, 1093},             /* guilsinglright */
1296
    {0x203C, 221},              /* dblexclam     */
1297
    {0x203E, 683},              /* radicalex     */
1298
    {0x2044, 324},              /* slash (NEW) */
1299
    {0x2070, 1000},             /* superior0 (NEW)    */
1300
    {0x2074, 1001},             /* superior4 (NEW)    */
1301
    {0x2075, 1002},             /* superior5 (NEW)    */
1302
    {0x2076, 1003},             /* superior6 (NEW)    */
1303
    {0x2077, 1004},             /* superior7 (NEW)    */
1304
    {0x2078, 1005},             /* superior8 (NEW)    */
1305
    {0x2079, 1006},             /* superior9 (NEW)    */
1306
    {0x207F, 332},              /* nsuperior (NEW)    */
1307
    {0x20A3, 1066},             /* franc - NOT FOUND IN MSLs FOR LJ4 YET */
1308
    {0x20A7, 232},              /* peseta        */
1309
    {0x20AC, 1069},             /* EUR symbol */
1310
    {0x20DD, 584},              /* combiningcircle (NEW) */
1311
    {0x2105, 1060},             /* careof        */
1312
    {0x210F, 638},              /* planckconstant (NEW) */
1313
    {0x2111, 595},              /* Ifraktur      */
1314
    {0x2112, 639},              /* scriptL (NEW) */
1315
    {0x2113, 308},              /* script l      */
1316
    {0x2118, 641},              /* scriptP (NEW) */
1317
    {0x211C, 596},              /* Rfraktur      */
1318
    {0x211E, 1036},             /* prescription  (NEW) */
1319
    {0x2120, 1034},             /* servicemark  (NEW) */
1320
    {0x2122, 313},              /* trademark or 1102 or 1105 */
1321
    {0x2126, 290},              /* Omega         */
1322
    {0x2128, 597},              /* blackletterZ (NEW) */
1323
    {0x212D, 594},              /* blackletterC (NEW) */
1324
    {0x212F, 502},              /* scripte (NEW) */
1325
    {0x2135, 591},              /* aleph         */
1326
    {0x2136, 592},              /* betsymbol (NEW) */
1327
    {0x2137, 593},              /* gimelsymbol (NEW) */
1328
    {0x2182, 1112},             /* arrowleft     */
1329
    {0x2190, 227},              /* arrowleft     */
1330
    {0x2191, 224},              /* arrowup       */
1331
    /*    {0x2192,    2042}, Why was this here ? *//* a161   <- indicates a dingbat, PostScript num? */
1332
    {0x2192, 226},              /* arrowright    */
1333
    {0x2193, 225},              /* arrowdown     */
1334
    {0x2194, 229},              /* arrowboth     */
1335
    /* {0x2194,    2043}, *//* a163          */
1336
    {0x2195, 220},              /* up_down_arrow */
1337
    /* {0x2195,    2075}, *//* a164          */
1338
    {0x2196, 628},              /* nw arrow  (NEW) */
1339
    {0x2197, 625},              /* ne arrow  (NEW) */
1340
    {0x2198, 626},              /* se arrow  (NEW) */
1341
    {0x2199, 627},              /* ww arrow  (NEW) */
1342
    {0x21A8, 223},              /* updownunderarrow */
1343
    {0x21B5, 1099},             /* carriagereturn */
1344
    {0x21C4, 557},              /* rightoverleftarrows (NEW) */
1345
    {0x21C6, 558},              /* leftoverrightarrows (NEW) */
1346
    {0x21D0, 554},              /* arrowdblleft  */
1347
    {0x21D1, 551},              /* arrowdblup    */
1348
    {0x21D2, 552},              /* arrowdblright */
1349
    {0x21D3, 553},              /* arrowdbldown  */
1350
    {0x21D4, 556},              /* arrowdblboth  */
1351
    {0x21D5, 555},              /* arrowdblbvertboth (NEW) */
1352
    {0x21E5, 1113},             /* arrowdblbvertboth (NEW) */
1353
    {0x2200, 561},              /* universal     */
1354
    {0x2202, 517},              /* partialdiff   */
1355
    {0x2203, 562},              /* existential   */
1356
    {0x2205, 590},              /* emptyset      */
1357
    {0x2206, 506},              /* Delta or 98   */
1358
    {0x2207, 516},              /* gradient      */
1359
    {0x2208, 566},              /* element       */
1360
    {0x2209, 568},              /* notelement    */
1361
    {0x220B, 567},              /* suchthat      */
1362
    {0x220D, 663},              /* small member (NEW) */
1363
    /*    {0x220F,     658}, *//* producttop    */
1364
    {0x220F, 669},              /* producttop  (NEW)  */
1365
    /*{0x2211,     285}, *//* Sigma or 642  */
1366
    {0x2211, 642},              /* Sigma or 642 (NEW) */
1367
    {0x2212, 183},              /* minus         */
1368
    {0x2213, 620},              /* minusoverplus (NEW) */
1369
    {0x2215, 324},              /* fraction      */
1370
    {0x2217, 664},              /* asteriskmath  */
1371
    /*   {0x2218,     641}, *//* weierstrass   */
1372
    {0x2218, 583},              /* ringoperator (NEW) */
1373
    {0x2219, 302},              /* middot or 1427 */
1374
    {0x221A, 303},              /* radical       */
1375
    {0x221D, 501},              /* proportional  */
1376
    {0x221E, 292},              /* infinity      */
1377
    /* {0x221F,     228}, *//* Tick up left  */
1378
    {0x221F, 668},              /* rightangle (NEW)  */
1379
    {0x2220, 589},              /* angle         */
1380
    {0x2223, 614},              /* divides (NEW) */
1381
    {0x2225, 605},              /* parallelto (NEW) */
1382
    {0x2227, 580},              /* logicaland    */
1383
    {0x2228, 581},              /* logicalor     */
1384
    {0x2229, 295},              /* intersection  */
1385
    {0x222A, 565},              /* union         */
1386
    {0x222B, 587},              /* integral      */
1387
    {0x222E, 588},              /* contourintegral (NEW) */
1388
    {0x2234, 504},              /* therefore     */
1389
    {0x2235, 521},              /* because (NEW) */
1390
    {0x2237, 635},              /* proportion (NEW) */
1391
    /* 0x223C, UNKNOWN,    similar       */
1392
    {0x2243, 549},              /* asymptoticallyequalto (NEW) */
1393
    {0x2245, 624},              /* congruent     */
1394
    {0x2248, 301},              /* approxequal   */
1395
    {0x2260, 519},              /* notequal      */
1396
    {0x2261, 296},              /* equivalence   */
1397
    {0x2262, 550},              /* notidenticalto (NEW) */
1398
    {0x2264, 298},              /* lessequal     */
1399
    {0x2265, 297},              /* greaterequal  */
1400
    {0x226A, 633},              /* muchlessthan (NEW) */
1401
    {0x226B, 634},              /* muchgreaterthan (NEW) */
1402
    {0x2282, 569},              /* propersubset  */
1403
    {0x2283, 570},              /* propersuperset */
1404
    {0x2284, 571},              /* notsubset     */
1405
    {0x2285, 572},              /* notasupersetof (NEW) */
1406
    {0x2286, 573},              /* reflexsubset  */
1407
    {0x2287, 574},              /* reflexsuperset */
1408
    {0x2295, 575},              /* circleplus    */
1409
    {0x2296, 578},              /* circleminus (NEW) */
1410
    {0x2297, 577},              /* circlemultiply */
1411
    {0x2298, 579},              /* circledivide (NEW) */
1412
    {0x2299, 576},              /* circledot (NEW) */
1413
    {0x22A2, 586},              /* righttack (NEW) */
1414
    {0x22A3, 585},              /* lefttack (NEW) */
1415
    {0x22A4, 563},              /* downtack (NEW) */
1416
    {0x22A5, 564},              /* perpendicular */
1417
    {0x22BB, 582},              /* XOR (NEW)     */
1418
    {0x22C5, 302},              /* dotmath       */
1419
    {0x2302, 333},              /* home_plate    */
1420
    {0x2310, 233},              /* tick down left */
1421
    {0x2320, 299},              /* integraltp    */
1422
    {0x2321, 300},              /* integralbt    */
1423
    {0x2329, 621},              /* angleleft     */
1424
    {0x232A, 622},              /* angleright    */
1425
    {0x2423, 1114},             /* a120          */
1426
    {0x2460, 2216},             /* a120          */
1427
    {0x2461, 2217},             /* a121          */
1428
    {0x2462, 2218},             /* a122          */
1429
    {0x2463, 2219},             /* a123          */
1430
    {0x2464, 2220},             /* a124          */
1431
    {0x2465, 2221},             /* a125          */
1432
    {0x2466, 2222},             /* a126          */
1433
    {0x2467, 2223},             /* a127          */
1434
    {0x2468, 2224},             /* a128          */
1435
    {0x2469, 2215},             /* a129          */
1436
    {0x2500, 253},              /* line-draw semi-graphics follow */
1437
    {0x2502, 236},              /* names omitted */
1438
    {0x250C, 275},              /*     :         */
1439
    {0x2510, 248},              /*     :         */
1440
    {0x2514, 249},              /*     :         */
1441
    {0x2518, 274},              /*     :         */
1442
    {0x251C, 252},              /*     :         */
1443
    {0x2524, 237},              /*     :         */
1444
    {0x252C, 251},              /*     :         */
1445
    {0x2534, 250},              /*     :         */
1446
    {0x253C, 254},              /*     :         */
1447
    {0x2550, 262},              /*     :         */
1448
    {0x2551, 243},              /*     :         */
1449
    {0x2552, 270},              /*     :         */
1450
    {0x2553, 271},              /*     :         */
1451
    {0x2554, 258},              /*     :         */
1452
    {0x2555, 241},              /*     :         */
1453
    {0x2556, 240},              /*     :         */
1454
    {0x2557, 244},              /*     :         */
1455
    {0x2558, 269},              /*     :         */
1456
    {0x2559, 268},              /*     :         */
1457
    {0x255A, 257},              /*     :         */
1458
    {0x255B, 247},              /*     :         */
1459
    {0x255C, 246},              /*     :         */
1460
    {0x255D, 245},              /*     :         */
1461
    {0x255E, 255},              /*     :         */
1462
    {0x255F, 256},              /*     :         */
1463
    {0x2560, 261},              /*     :         */
1464
    {0x2561, 238},              /*     :         */
1465
    {0x2562, 239},              /*     :         */
1466
    {0x2563, 242},              /*     :         */
1467
    {0x2564, 266},              /*     :         */
1468
    {0x2565, 267},              /*     :         */
1469
    {0x2566, 260},              /*     :         */
1470
    {0x2567, 264},              /*     :         */
1471
    {0x2568, 265},              /*     :         */
1472
    {0x2569, 259},              /*     :         */
1473
    {0x256A, 273},              /*     :         */
1474
    {0x256B, 272},              /*     :         */
1475
    {0x256C, 263},              /*     :         */
1476
    {0x256D, 646},              /* arcupperleft (NEW) */
1477
    {0x256E, 655},              /* arcupperright (NEW) */
1478
    {0x256F, 656},              /* arclowerright (NEW) */
1479
    {0x2570, 647},              /* arclowerleft (NEW) */
1480
    {0x2580, 280},              /* top_half_cell */
1481
    {0x2584, 277},              /* bottom_half_cell */
1482
    {0x2588, 276},              /* solid_cell    */
1483
    {0x258C, 278},              /* left_half_cell  */
1484
    {0x2590, 279},              /* right_half_cell */
1485
    {0x2591, 234},              /* quarter_fill  */
1486
    {0x2592, 97},               /* half_fill     */
1487
    {0x2593, 235},              /* threeq_fill   */
1488
    {0x25A0, 189},              /* medium box     */
1489
    {0x25A1, 1094},             /* opensquare    */
1490
    {0x25AA, 305},              /* small box     */
1491
    {0x25AB, 1108},             /* enboxopen     */
1492
    {0x25AC, 222},              /* candybar      */
1493
    {0x25B2, 230},              /* up_triangle   */
1494
    {0x25B5, 629},              /* upopentriange (NEW) */
1495
    {0x25B9, 630},              /* rightopentriangle (NEW) */
1496
    {0x25BA, 218},              /* right_triangle */
1497
    {0x25BC, 231},              /* down_triangle */
1498
    {0x25BF, 631},              /* downopentriangle (NEW) */
1499
    {0x25C3, 632},              /* leftopentriange (NEW) */
1500
    {0x25C4, 219},              /* left_triangle */
1501
    /*{0x25C6,    2491}, *//* a78           */
1502
    {0x25C6, 662},              /* blackdiamond (NEW) */
1503
    {0x25C7, 654},              /* opendiamond (NEW) */
1504
    {0x25CA, 684},              /* lozenge (NEW) fixed */
1505
    {0x25CB, 1110},             /* circle or 584 or 1110 */
1506
    {0x25CF, 209},              /* ball          */
1507
    {0x25D8, 210},              /* reverse_ball  */
1508
    {0x25D9, 212},              /* reverse_circle */
1509
    {0x25E6, 1109},             /* encircleopen  */
1510
    {0x2605, 2083},             /* a35           */
1511
    {0x260E, 2498},             /* a4            */
1512
    {0x261B, 2312},             /* a11           */
1513
    {0x261E, 2295},             /* a12           */
1514
    {0x263A, 203},              /* smiley_face   */
1515
    {0x263B, 204},              /* shiney_face   */
1516
    {0x263C, 217},              /* sphincter     */
1517
    {0x2640, 214},              /* female ordinal */
1518
    {0x2642, 213},              /* male ordinal  */
1519
    {0x2660, 208},              /* spade         */
1520
    {0x2663, 207},              /* club          */
1521
    {0x2665, 205},              /* heart         */
1522
    {0x2666, 206},              /* diamond       */
1523
    {0x266A, 215},              /* eightnote     */
1524
    {0x266B, 216},              /* dblsixteenthnote */
1525
    {0x2701, 2109},             /* a1 Scissors   */
1526
    {0x2702, 2096},             /* a2            */
1527
    {0x2703, 2120},             /* a202          */
1528
    {0x2704, 2497},             /* a3            */
1529
    {0x2706, 2315},             /* a5            */
1530
    {0x2707, 2458},             /* a119          */
1531
    {0x2708, 2013},             /* a118          */
1532
    {0x2709, 2108},             /* a117          */
1533
    {0x270C, 2313},             /* a13           */
1534
    {0x270D, 2515},             /* a14           */
1535
    {0x270E, 2499},             /* a15           */
1536
    {0x270F, 2307},             /* a16           */
1537
    {0x2710, 2509},             /* a105          */
1538
    {0x2711, 2324},             /* a17           */
1539
    {0x2712, 2121},             /* a18           */
1540
    {0x2713, 2010},             /* a19           */
1541
    {0x2714, 2210},             /* a20           */
1542
    {0x2715, 2286},             /* a21           */
1543
    {0x2716, 2254},             /* a22           */
1544
    {0x2717, 2027},             /* a23           */
1545
    {0x2718, 2077},             /* a24           */
1546
    {0x2719, 2444},             /* a25           */
1547
    /* 0x271A, UNKNOWN, a26 Probably some sort of plus sign */
1548
    {0x271B, 2488},             /* a27           */
1549
    {0x271C, 2456},             /* a28           */
1550
    {0x271D, 2044},             /* a6            */
1551
    {0x271E, 2076},             /* a7            */
1552
    {0x271F, 2476},             /* a8            */
1553
    {0x2720, 2230},             /* a9            */
1554
    {0x2721, 2411},             /* a10           */
1555
    {0x2722, 2014},             /* a29           */
1556
    {0x2723, 2472},             /* a30           */
1557
    {0x2724, 2478},             /* a31           */
1558
    {0x2725, 2502},             /* a32           */
1559
    {0x2726, 2726},             /* a33           */
1560
    {0x2727, 2011},             /* a34           */
1561
    {0x2729, 2088},             /* a36           */
1562
    {0x272A, 2052},             /* a37           */
1563
    {0x272B, 2047},             /* a38           */
1564
    {0x272C, 2032},             /* a39           */
1565
    {0x272D, 2060},             /* a40           */
1566
    {0x272E, 2078},             /* a41           */
1567
    {0x272F, 2092},             /* a42           */
1568
    {0x2730, 2058},             /* a43           */
1569
    {0x2731, 2256},             /* a44           */
1570
    {0x2732, 2252},             /* a45           */
1571
    {0x2733, 2484},             /* a46           */
1572
    {0x2734, 2447},             /* a47           */
1573
    {0x2735, 2479},             /* a48           */
1574
    {0x2736, 2046},             /* a49           */
1575
    {0x2737, 2090},             /* a50           */
1576
    {0x2738, 2240},             /* a51           */
1577
    {0x2739, 2272},             /* a52           */
1578
    {0x273A, 2452},             /* a53           */
1579
    {0x273B, 2279},             /* a54           */
1580
    {0x273C, 2483},             /* a55           */
1581
    {0x273D, 2278},             /* a56           */
1582
    {0x273E, 2290},             /* a57           */
1583
    {0x273F, 2451},             /* a58           */
1584
    {0x2740, 2460},             /* a59           */
1585
    {0x2741, 2288},             /* a60           */
1586
    {0x2742, 2490},             /* a61           */
1587
    {0x2743, 2258},             /* a62           */
1588
    {0x2744, 2464},             /* a63           */
1589
    {0x2745, 2492},             /* a64           */
1590
    {0x2746, 2432},             /* a65           */
1591
    {0x2747, 2260},             /* a66           */
1592
    {0x2748, 2292},             /* a67           */
1593
    {0x2749, 2072},             /* a68           */
1594
    {0x274A, 2264},             /* a69           */
1595
    {0x274B, 2232},             /* a70           */
1596
    {0x274D, 2116},             /* a72           */
1597
    {0x274F, 2282},             /* a74           */
1598
    {0x2750, 2325},             /* a203          */
1599
    {0x2751, 2250},             /* a75           */
1600
    {0x2752, 2308},             /* a204          */
1601
    {0x2756, 2089},             /* a79           */
1602
    {0x2758, 2480},             /* a82           */
1603
    {0x2759, 2486},             /* a83           */
1604
    {0x275A, 2454},             /* a84           */
1605
    {0x275B, 2100},             /* a97           */
1606
    {0x275C, 2113},             /* a98           */
1607
    {0x275D, 2501},             /* a99           */
1608
    {0x275E, 2517},             /* a100          */
1609
    {0x2761, 2500},             /* a101          */
1610
    {0x2762, 2428},             /* a102          */
1611
    {0x2763, 2410},             /* a103          */
1612
    {0x2764, 2414},             /* a104          */
1613
    {0x2765, 2213},             /* a106          */
1614
    {0x2766, 2317},             /* a107          */
1615
    {0x2767, 2300},             /* a108          */
1616
    {0x2776, 2200},             /* a130          */
1617
    {0x2777, 2231},             /* a131          */
1618
    {0x2778, 2202},             /* a132          */
1619
    {0x2779, 2203},             /* a133          */
1620
    {0x277A, 2204},             /* a134          */
1621
    {0x277B, 2261},             /* a135          */
1622
    {0x277C, 2205},             /* a136          */
1623
    {0x277D, 2209},             /* a137          */
1624
    {0x277E, 2207},             /* a138          */
1625
    {0x277F, 2208},             /* a139          */
1626
    {0x2780, 2016},             /* a140          */
1627
    {0x2781, 2017},             /* a141          */
1628
    {0x2782, 2018},             /* a142          */
1629
    {0x2783, 2019},             /* a143          */
1630
    {0x2784, 2020},             /* a144          */
1631
    {0x2785, 2021},             /* a145          */
1632
    {0x2786, 2022},             /* a146          */
1633
    {0x2787, 2023},             /* a147          */
1634
    {0x2788, 2024},             /* a148          */
1635
    {0x2789, 2015},             /* a149          */
1636
    {0x278A, 2000},             /* a150          */
1637
    {0x278B, 2031},             /* a151          */
1638
    {0x278C, 2002},             /* a152          */
1639
    {0x278D, 2003},             /* a153          */
1640
    {0x278E, 2004},             /* a154          */
1641
    {0x278F, 2061},             /* a155          */
1642
    {0x2790, 2005},             /* a156          */
1643
    {0x2791, 2009},             /* a157          */
1644
    {0x2792, 2007},             /* a158          */
1645
    {0x2793, 2008},             /* a159          */
1646
    {0x2794, 2306},             /* a160          */
1647
    {0x2798, 2233},             /* a196          */
1648
    {0x2799, 2305},             /* a165          */
1649
    {0x279A, 2310},             /* a192          */
1650
    {0x279B, 2053},             /* a166          */
1651
    {0x279C, 2037},             /* a167          */
1652
    {0x279D, 2070},             /* a168          */
1653
    {0x279E, 2071},             /* a169          */
1654
    {0x279F, 2520},             /* a170          */
1655
    {0x27A0, 2504},             /* a171          */
1656
    {0x27A1, 2001},             /* a172          */
1657
    {0x27A2, 2267},             /* a173          */
1658
    {0x27A3, 2326},             /* a162          */
1659
    {0x27A4, 2235},             /* a174          */
1660
    {0x27A5, 2055},             /* a175          */
1661
    {0x27A6, 2087},             /* a176          */
1662
    {0x27A7, 2041},             /* a177          */
1663
    {0x27A8, 2262},             /* a178          */
1664
    {0x27A9, 2441},             /* a179          */
1665
    {0x27AA, 2523},             /* a193          */
1666
    {0x27AB, 2442},             /* a180          */
1667
    {0x27AC, 2507},             /* a199          */
1668
    {0x27AD, 2443},             /* a181          */
1669
    {0x27AE, 2508},             /* a200          */
1670
    {0x27AF, 2475},             /* a182          */
1671
    {0x27B1, 2524},             /* a201          */
1672
    {0x27B2, 2412},             /* a183          */
1673
    {0x27B3, 2234},             /* a184          */
1674
    {0x27B4, 2265},             /* a197          */
1675
    {0x27B5, 2287},             /* a185          */
1676
    {0x27B6, 2327},             /* a194          */
1677
    {0x27B7, 2245},             /* a198          */
1678
    {0x27B8, 2105},             /* a186          */
1679
    {0x27B9, 2309},             /* a195          */
1680
    {0x27BA, 2285},             /* a187          */
1681
    {0x27BB, 2253},             /* a188          */
1682
    {0x27BC, 2242},             /* a189          */
1683
    {0x27BD, 2104},             /* a190          */
1684
    {0x27BE, 2212},             /* a191          */
1685
1686
    {0x301A, 643},              /* (NEW) */
1687
    {0x301B, 645},              /* (NEW) */
1688
1689
    {0xEFA0, 3487},             /* (NEW) */
1690
    {0xEFA1, 2228},             /* (NEW) */
1691
    {0xEFA2, 336},              /* (NEW) */
1692
    {0xEFA3, 282},              /* (NEW) */
1693
    {0xEFA4, 371},              /* (NEW) */
1694
    {0xEFA5, 1011},             /* (NEW) */
1695
    {0xEFA6, 1013},             /* (NEW) */
1696
    {0xEFA7, 65},               /* (NEW) */
1697
    {0xEFA8, 1450},             /* (NEW) */
1698
    {0xEFA9, 1451},             /* (NEW) */
1699
    {0xEFAA, 372},              /* (NEW) */
1700
    {0xEFAB, 2227},             /* (NEW) */
1701
    {0xEFAC, 1454},             /* (NEW) */
1702
    {0xEFAD, 2680},             /* (NEW) */
1703
    {0xEFAE, 1012},             /* (NEW) */
1704
    {0xEFAF, 1015},             /* (NEW) */
1705
1706
    {0xEFBF, 500},              /* (NEW) */
1707
1708
    {0xEFC0, 660},              /* (NEW) */
1709
    {0xEFC1, 659},              /* (NEW) */
1710
    {0xEFC2, 658},              /* (NEW) */
1711
    {0xEFC3, 657},              /* (NEW) */
1712
    {0xEFC4, 652},              /* (NEW) */
1713
    {0xEFC5, 651},              /* (NEW) */
1714
    {0xEFC6, 650},              /* (NEW) */
1715
    {0xEFC7, 649},              /* (NEW) */
1716
    {0xEFC8, 648},              /* (NEW) */
1717
    {0xEFC9, 644},              /* (NEW) */
1718
    {0xEFCA, 636},              /* (NEW) */
1719
    {0xEFCB, 666},              /* (NEW) */
1720
    {0xEFCC, 667},              /* (NEW) */
1721
    {0xEFCD, 619},              /* (NEW) */
1722
    {0xEFCE, 618},              /* (NEW) */
1723
    {0xEFCF, 617},              /* (NEW) */
1724
1725
    {0xEFD0, 616},              /* (NEW) */
1726
    {0xEFD1, 607},              /* (NEW) */
1727
    {0xEFD2, 606},              /* (NEW) */
1728
    {0xEFD3, 604},              /* (NEW) */
1729
    {0xEFD4, 603},              /* (NEW) */
1730
    {0xEFD5, 637},              /* (NEW) */
1731
    {0xEFD6, 1105},             /* (NEW) */
1732
    {0xEFD7, 1104},             /* (NEW) */
1733
    {0xEFD8, 1103},             /* (NEW) */
1734
    {0xEFD9, 1102},             /* (NEW) */
1735
    {0xEFDA, 1101},             /* (NEW) */
1736
    {0xEFDB, 1100},             /* (NEW) */
1737
    {0xEFDC, 615},              /* (NEW) */
1738
    {0xEFDD, 613},              /* (NEW) */
1739
    {0xEFDE, 612},              /* (NEW) */
1740
    {0xEFDF, 611},              /* (NEW) */
1741
1742
    {0xEFE0, 610},              /* (NEW) */
1743
    {0xEFE1, 602},              /* (NEW) */
1744
    {0xEFE2, 601},              /* (NEW) */
1745
    {0xEFE3, 600},              /* (NEW) */
1746
    {0xEFE4, 609},              /* (NEW) */
1747
    {0xEFE5, 608},              /* (NEW) */
1748
    {0xEFE6, 599},              /* (NEW) */
1749
    {0xEFE7, 598},              /* (NEW) */
1750
    {0xEFE8, 665},              /* (NEW) */
1751
    {0xEFE9, 559},              /* (NEW) */
1752
    {0xEFEA, 560},              /* (NEW) */
1753
    {0xEFEB, 520},              /* (NEW) */
1754
    {0xEFEC, 503},              /* (NEW) */
1755
    {0xEFED, 1089},             /* (NEW) */
1756
    {0xEFEE, 1087},             /* (NEW) */
1757
    {0xEFEF, 1085},             /* (NEW) */
1758
1759
    {0xEFF0, 1045},             /* (NEW) */
1760
    {0xEFF1, 1030},             /* (NEW) */
1761
    {0xEFF2, 330},              /* (NEW) */
1762
    {0xEFF3, 323},              /* (NEW) */
1763
    {0xEFF4, 322},              /* (NEW) */
1764
    {0xEFF5, 321},              /* (NEW) */
1765
    {0xEFF6, 320},              /* (NEW) */
1766
    {0xEFF7, 319},              /* (NEW) */
1767
    {0xEFF8, 318},              /* (NEW) */
1768
    {0xEFF9, 317},              /* (NEW) */
1769
1770
    {0xEFFA, 1111},             /* (NEW) */
1771
    {0xEFFB, 661},              /* (NEW) */
1772
    {0xEFFC, 653},              /* (NEW) */
1773
    {0xEFFD, 211},              /* (NEW) */
1774
1775
    {0xEFFE, 640},              /* (NEW) */
1776
    {0xEFFF, 623},              /* (NEW) */
1777
1778
    {0xF000, 3812},             /* apple         */
1779
    {0xF001, 1040},             /* fi            */
1780
    {0xF002, 1041},             /* fl            */
1781
1782
    {0xF4C0, 2229},             /* (NEW) */
1783
    {0xF4C1, 1009},             /* (NEW) */
1784
    {0xF4C2, 1010},             /* (NEW) */
1785
    {0xF4C3, 2681},             /* (NEW) */
1786
    {0xF4C4, 408},              /* (NEW) */
1787
    {0xF4C5, 2682},             /* (NEW) */
1788
    {0xF4C6, 3490},             /* (NEW) */
1789
    {0xF4C7, 98},               /* (NEW) */
1790
    {0xF4C8, 373},              /* (NEW) */
1791
    {0xF4C9, 3488},             /* (NEW) */
1792
    {0xF4CA, 1452},             /* (NEW) */
1793
    {0xF4CB, 685},              /* (NEW) */
1794
    {0xF4CC, 1453},             /* (NEW) */
1795
    {0xF4CD, 3489},             /* (NEW) */
1796
    {0xF4CE, 409},              /* (NEW) */
1797
    {0xF4CF, 7},                /* (NEW) */
1798
1799
    {0xFB00, 1042},             /* ff (NEW)            */
1800
    {0xFB01, 1040},             /* fi (NEW)           */
1801
    {0xFB02, 1041},             /* fl (NEW)           */
1802
    {0xFB03, 1043},             /* ffi (NEW)           */
1803
    {0xFB04, 1044}              /* ffl (NEW)           */
1804
};
1805
1806
0
#define pl_map_u2m_size countof(pl_map_u2m)
1807
/* Map a Unicode character code to a MSL glyph code similarly. */
1808
uint
1809
pl_map_Unicode_to_MSL(uint uni, uint symbol_set)
1810
0
{
1811
0
    uint low = 0;
1812
0
    uint high = pl_map_u2m_size - 1;
1813
0
    uint mid;
1814
1815
    /* A symbol map entry of 0xFFFF indicates that no printable
1816
     * symbol is associated with that character code.
1817
     * In this case, the LJ4 prints a blank space.
1818
     */
1819
1820
0
    if (uni == 0xffff)
1821
0
        return 0x0020;
1822
1823
0
    if ((uni < pl_map_u2m[low].key) || (uni > pl_map_u2m[high].key))
1824
0
        return 0xffff;
1825
1826
    /* Binary search, right out of K&R */
1827
0
    while (low <= high) {
1828
0
        mid = (low + high) / 2;
1829
0
        if (uni < pl_map_u2m[mid].key)
1830
0
            high = mid - 1;
1831
0
        else if (uni > pl_map_u2m[mid].key)
1832
0
            low = mid + 1;
1833
0
        else
1834
0
            return (uint) pl_map_u2m[mid].value;
1835
0
    }
1836
0
    return 0xffff;
1837
0
}
1838
/* Map a MSL glyph code to a Unicode character code. */
1839
/* Note that the symbol set is required, because some characters map */
1840
/* differently in different symbol sets. */
1841
uint
1842
pl_map_MSL_to_Unicode(uint msl, uint symbol_set)
1843
0
{
1844
0
    uint low = 0;
1845
0
    uint high = pl_map_m2u_size - 1;
1846
0
    uint mid;
1847
1848
    /* Binary search, right out of K&R */
1849
0
    while (low <= high) {
1850
0
        mid = (low + high) / 2;
1851
0
        if (msl < pl_map_m2u[mid].key)
1852
0
            high = mid - 1;
1853
0
        else if (msl > pl_map_m2u[mid].key)
1854
0
            low = mid + 1;
1855
0
        else
1856
0
            return (uint) pl_map_m2u[mid].value;
1857
0
    }
1858
0
    return 0xffff;
1859
0
}