Coverage Report

Created: 2026-04-01 07:17

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/ghostpdl/pcl/pl/plsymbol.c
Line
Count
Source
1
/* Copyright (C) 2001-2025 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
/* plsymbol.c */
18
/* Built-in PCL symbol sets */
19
20
#include "stdpre.h"
21
#include "std.h"
22
#include "gdebug.h"
23
#include "plsymbol.h"
24
#include "plvocab.h"
25
#include "plvalue.h"
26
27
/* Define the MSL code for unmapped characters. */
28
#define ffff 0xffff
29
30
/* Define a macro for generating the header for built-in symbol sets. */
31
#define map_number(n, l) ((n) * 32 + (l) - '@')
32
#define map_header(n, l, vocab, t, cc0, cc1, cc2, cc3, cc4, cc5, cc6, cc7, mapping_type) \
33
    {0, 18}, {map_number(n, l) >> 8, map_number(n, l) & 0xff},          \
34
        (vocab) * 2 + 1, t, {0, 0}, {0, 255},                           \
35
  {cc0, cc1, cc2, cc3, cc4, cc5, cc6, ((cc7) & 0xf8) | (vocab)},        \
36
        (mapping_type)
37
38
/*
39
 * This file may exist in many different source formats over time.
40
 * To help convert between formats, if this file is compiled with the
41
 * -dMAIN switch, it will include a 'main' program that will write out
42
 * the data in directly usable format.
43
 */
44
#ifdef MAIN
45
#include <stdio.h>
46
#undef printf
47
int
48
main(int argc, char *argv[])
49
{
50
    const pl_symbol_map_t **ppmap = pl_built_in_symbol_maps;
51
52
    for (; *ppmap; ++ppmap) {
53
        const pl_symbol_map_t *pmap = *ppmap;
54
        uint id = (pmap->id[0] << 8) + pmap->id[1];
55
        int n = id >> 5;
56
        int l = (id & 31) + '@';
57
        uint i;
58
59
        printf("\n/**** %d%c ****/", n, l);
60
        for (i = 0; i < 256; ++i) {
61
            if (!(i & 7)) {
62
                if (!(i & 15))
63
                    printf("\n/* 0x%02x */\n   ", i);
64
                else
65
                    fputs("\n   ", stdout);
66
            }
67
            printf(" 0x%04x", (uint) pmap->codes[i]);
68
            if (i != 255)
69
                putchar(',');
70
        }
71
        puts("\n");
72
    }
73
    return 0;
74
}
75
#endif /* MAIN */
76
77
/* Define common symbol set elements. */
78
79
/***************************************
80
 * ASCII and national variant mappings *
81
 ***************************************/
82
/* ISO ASCII */
83
static const pl_symbol_map_t map_0U_unicode = {
84
    map_header(0, 'U', plgv_Unicode, 1, 0, 0, 0, 0, 0xc0, 0, 0, 0,
85
               PLGV_U2M_MAPPING),
86
    {
87
     /* 0x00 */
88
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
89
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
90
     /* 0x10 */
91
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
92
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
93
     /* 0x20 */
94
     0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x2019,
95
     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
96
     /* 0x30 */
97
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
98
     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
99
     /* 0x40 */
100
     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
101
     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
102
     /* 0x50 */
103
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
104
     0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
105
     /* 0x60 */
106
     0x2018, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
107
     0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
108
     /* 0x70 */
109
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
110
     0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2592,
111
     /* 0x80 */
112
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
113
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
114
     /* 0x90 */
115
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
116
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
117
     /* 0xa0 */
118
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
119
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
120
     /* 0xb0 */
121
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
122
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
123
     /* 0xc0 */
124
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
125
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
126
     /* 0xd0 */
127
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
128
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
129
     /* 0xe0 */
130
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
131
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
132
     /* 0xf0 */
133
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
134
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff}
135
};
136
/* United Kingdom */
137
static const pl_symbol_map_t map_1E_unicode = {
138
    map_header(1, 'E', plgv_Unicode, 1, 0, 0, 0, 0, 0xc0, 0, 0, 0,
139
               PLGV_U2M_MAPPING),
140
    {
141
     /* 0x00 */
142
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
143
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
144
     /* 0x10 */
145
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
146
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
147
     /* 0x20 */
148
     0x0020, 0x0021, 0x0022, 0x00a3, 0x0024, 0x0025, 0x0026, 0x0027,
149
     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
150
     /* 0x30 */
151
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
152
     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
153
     /* 0x40 */
154
     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
155
     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
156
     /* 0x50 */
157
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
158
     0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x02c6, 0x005f,
159
     /* 0x60 */
160
     0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
161
     0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
162
     /* 0x70 */
163
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
164
     0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x00af, 0x2592,
165
     /* 0x80 */
166
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
167
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
168
     /* 0x90 */
169
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
170
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
171
     /* 0xa0 */
172
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
173
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
174
     /* 0xb0 */
175
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
176
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
177
     /* 0xc0 */
178
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
179
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
180
     /* 0xd0 */
181
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
182
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
183
     /* 0xe0 */
184
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
185
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
186
     /* 0xf0 */
187
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
188
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff}
189
};
190
/* French */
191
static const pl_symbol_map_t map_1F_unicode = {
192
    map_header(1, 'F', plgv_Unicode, 1, 0, 0, 0, 0, 0xc0, 0, 0, 0,
193
               PLGV_U2M_MAPPING),
194
    {
195
     /* 0x00 */
196
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
197
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
198
     /* 0x10 */
199
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
200
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
201
     /* 0x20 */
202
     0x0020, 0x0021, 0x0022, 0x00a3, 0x0024, 0x0025, 0x0026, 0x2019,
203
     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
204
     /* 0x30 */
205
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
206
     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
207
     /* 0x40 */
208
     0x00e0, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
209
     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
210
     /* 0x50 */
211
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
212
     0x0058, 0x0059, 0x005a, 0x00b0, 0x00e7, 0x00a7, 0x005e, 0x005f,
213
     /* 0x60 */
214
     0x00b5, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
215
     0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
216
     /* 0x70 */
217
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
218
     0x0078, 0x0079, 0x007a, 0x00e9, 0x00f9, 0x00e8, 0x00a8, 0x2592,
219
     /* 0x80 */
220
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
221
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
222
     /* 0x90 */
223
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
224
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
225
     /* 0xa0 */
226
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
227
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
228
     /* 0xb0 */
229
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
230
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
231
     /* 0xc0 */
232
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
233
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
234
     /* 0xd0 */
235
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
236
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
237
     /* 0xe0 */
238
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
239
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
240
     /* 0xf0 */
241
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
242
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff}
243
};
244
/* German */
245
static const pl_symbol_map_t map_1G_unicode = {
246
    map_header(1, 'G', plgv_Unicode, 1, 0, 0, 0, 0, 0xc0, 0, 0, 0,
247
               PLGV_U2M_MAPPING),
248
    {
249
     /* 0x00 */
250
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
251
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
252
     /* 0x10 */
253
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
254
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
255
     /* 0x20 */
256
     0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
257
     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
258
     /* 0x30 */
259
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
260
     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
261
     /* 0x40 */
262
     0x00a7, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
263
     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
264
     /* 0x50 */
265
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
266
     0x0058, 0x0059, 0x005a, 0x00c4, 0x00d6, 0x00dc, 0x005e, 0x005f,
267
     /* 0x60 */
268
     0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
269
     0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
270
     /* 0x70 */
271
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
272
     0x0078, 0x0079, 0x007a, 0x00e4, 0x00f6, 0x00fc, 0x00df, 0x2592,
273
     /* 0x80 */
274
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
275
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
276
     /* 0x90 */
277
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
278
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
279
     /* 0xa0 */
280
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
281
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
282
     /* 0xb0 */
283
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
284
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
285
     /* 0xc0 */
286
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
287
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
288
     /* 0xd0 */
289
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
290
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
291
     /* 0xe0 */
292
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
293
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
294
     /* 0xf0 */
295
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
296
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff}
297
};
298
299
/* Italian */
300
static const pl_symbol_map_t map_0I_unicode = {
301
    map_header(0, 'I', plgv_Unicode, 1, 0, 0, 0, 0, 0xc0, 0, 0, 0,
302
               PLGV_U2M_MAPPING),
303
    {
304
     /* 0x00 */
305
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
306
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
307
     /* 0x10 */
308
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
309
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
310
     /* 0x20 */
311
     0x0020, 0x0021, 0x0022, 0x00a3, 0x0024, 0x0025, 0x0026, 0x2019,
312
     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
313
     /* 0x30 */
314
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
315
     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
316
     /* 0x40 */
317
     0x00a7, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
318
     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
319
     /* 0x50 */
320
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
321
     0x0058, 0x0059, 0x005a, 0x00b0, 0x00e7, 0x00e9, 0x02c6, 0x005f,
322
     /* 0x60 */
323
     0x00f9, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
324
     0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
325
     /* 0x70 */
326
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
327
     0x0078, 0x0079, 0x007a, 0x00e0, 0x00f2, 0x00e8, 0x00ec, 0x2592,
328
     /* 0x80 */
329
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
330
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
331
     /* 0x90 */
332
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
333
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
334
     /* 0xa0 */
335
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
336
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
337
     /* 0xb0 */
338
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
339
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
340
     /* 0xc0 */
341
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
342
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
343
     /* 0xd0 */
344
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
345
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
346
     /* 0xe0 */
347
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
348
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
349
     /* 0xf0 */
350
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
351
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff}
352
};
353
354
/* Swedish for names */
355
static const pl_symbol_map_t map_0S_unicode = {
356
    map_header(0, 'S', plgv_Unicode, 1, 0, 0, 0, 0, 0xc0, 0, 0, 0,
357
               PLGV_U2M_MAPPING),
358
    {
359
     /* 0x00 */
360
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
361
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
362
     /* 0x10 */
363
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
364
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
365
     /* 0x20 */
366
     0x0020, 0x0021, 0x0022, 0x0023, 0x00a4, 0x0025, 0x0026, 0x0027,
367
     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
368
     /* 0x30 */
369
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
370
     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
371
     /* 0x40 */
372
     0x00c9, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
373
     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
374
     /* 0x50 */
375
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
376
     0x0058, 0x0059, 0x005a, 0x00c4, 0x00d6, 0x00c5, 0x00dc, 0x005f,
377
     /* 0x60 */
378
     0x00e9, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
379
     0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
380
     /* 0x70 */
381
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
382
     0x0078, 0x0079, 0x007a, 0x00e4, 0x00f6, 0x00e5, 0x00fc, 0x2592,
383
     /* 0x80 */
384
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
385
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
386
     /* 0x90 */
387
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
388
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
389
     /* 0xa0 */
390
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
391
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
392
     /* 0xb0 */
393
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
394
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
395
     /* 0xc0 */
396
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
397
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
398
     /* 0xd0 */
399
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
400
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
401
     /* 0xe0 */
402
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
403
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
404
     /* 0xf0 */
405
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
406
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff}
407
};
408
409
/* PC-865 Norway */
410
static const pl_symbol_map_t map_25U_unicode = {
411
    map_header(20, 'U', plgv_Unicode, 1, 0, 0, 0, 0, 0xc0, 0, 0, 0,
412
               PLGV_U2M_MAPPING),
413
    {
414
        /* 0x00 */
415
        0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
416
        0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
417
        /* 0x10 */
418
        0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
419
        0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
420
        /* 0x20 */
421
        0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
422
        0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
423
        /* 0x30 */
424
        0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
425
        0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
426
        /* 0x40 */
427
        0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
428
        0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
429
        /* 0x50 */
430
        0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
431
        0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
432
        /* 0x60 */
433
        0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
434
        0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
435
        /* 0x70 */
436
        0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
437
        0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0xffff,
438
        /* 0x80 */
439
        0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7,
440
        0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5,
441
        /* 0x90 */
442
        0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9,
443
        0x00ff, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x20a7, 0x0192,
444
        /* 0xa0 */
445
        0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba,
446
        0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00a4,
447
        /* 0xb0 */
448
        0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
449
        0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510,
450
        /* 0xc0 */
451
        0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f,
452
        0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567,
453
        /* 0xd0 */
454
        0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b,
455
        0x256a, 0x2518, 0x250c, 0xffff, 0x2584, 0x258c, 0x2590, 0x2580,
456
        /* 0xe0 */
457
        0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4,
458
        0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0xffff,
459
        /* 0xf0 */
460
        0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248,
461
        0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0
462
    }
463
};
464
465
/* PC-860 Portugal */
466
static const pl_symbol_map_t map_20U_unicode = {
467
    map_header(20, 'U', plgv_Unicode, 1, 0, 0, 0, 0, 0xc0, 0, 0, 0,
468
               PLGV_U2M_MAPPING),
469
    {
470
        /* 0x00 */
471
        0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
472
        0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
473
        /* 0x10 */
474
        0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
475
        0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
476
        /* 0x20 */
477
        0xffff, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
478
        0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
479
        /* 0x30 */
480
        0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
481
        0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
482
        /* 0x40 */
483
        0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
484
        0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
485
        /* 0x50 */
486
        0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
487
        0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
488
        /* 0x60 */
489
        0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
490
        0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
491
        /* 0x70 */
492
        0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
493
        0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0xffff,
494
        /* 0x80 */
495
        0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e3, 0x00e0, 0x00c1, 0x00e7,
496
        0x00ea, 0x00ca, 0x00e8, 0x00cd, 0x00d4, 0x00ec, 0x00c3, 0x00c2,
497
        /* 0x90 */
498
        0xffff, 0x00c0, 0x00c8, 0x00f4, 0x00f5, 0x00f2, 0x00da, 0x00f9,
499
        0x00cc, 0x00d5, 0x00dc, 0x00a2, 0x00a3, 0x00d9, 0x20a7, 0x00d3,
500
        /* 0xa0 */
501
        0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba,
502
        0x00bf, 0x00d2, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb,
503
        /* 0xb0 */
504
        0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
505
        0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510,
506
        /* 0xc0 */
507
        0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f,
508
        0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567,
509
        /* 0xd0 */
510
        0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b,
511
        0x256a, 0x2518, 0x250c, 0xffff, 0x2584, 0x258c, 0x2590, 0x2580,
512
        /* 0xe0 */
513
        0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4,
514
        0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0xffff,
515
        /* 0xf0 */
516
        0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248,
517
        0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0
518
    }
519
};
520
521
/* Spanish */
522
static const pl_symbol_map_t map_2S_unicode = {
523
    map_header(2, 'S', plgv_Unicode, 1, 0, 0, 0, 0, 0xc0, 0, 0, 0,
524
               PLGV_U2M_MAPPING),
525
    {
526
     /* 0x00 */
527
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
528
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
529
     /* 0x10 */
530
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
531
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
532
     /* 0x20 */
533
     0x0020, 0x0021, 0x0022, 0x00a3, 0x0024, 0x0025, 0x0026, 0x2019,
534
     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
535
     /* 0x30 */
536
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
537
     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
538
     /* 0x40 */
539
     0x00a7, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
540
     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
541
     /* 0x50 */
542
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
543
     0x0058, 0x0059, 0x005a, 0x00a1, 0x00d1, 0x00bf, 0x02c6, 0x005f,
544
     /* 0x60 */
545
     0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
546
     0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
547
     /* 0x70 */
548
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
549
     0x0078, 0x0079, 0x007a, 0x00b0, 0x00f1, 0x00e7, 0x02dc, 0x2592,
550
     /* 0x80 */
551
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
552
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
553
     /* 0x90 */
554
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
555
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
556
     /* 0xa0 */
557
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
558
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
559
     /* 0xb0 */
560
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
561
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
562
     /* 0xc0 */
563
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
564
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
565
     /* 0xd0 */
566
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
567
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
568
     /* 0xe0 */
569
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
570
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
571
     /* 0xf0 */
572
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
573
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff}
574
};
575
/* Norwegian version 1 */
576
static const pl_symbol_map_t map_0D_unicode = {
577
    map_header(0, 'D', plgv_Unicode, 1, 0, 0, 0, 0, 0xc0, 0, 0, 0,
578
               PLGV_U2M_MAPPING),
579
    {
580
     /* 0x00 */
581
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
582
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
583
     /* 0x10 */
584
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
585
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
586
     /* 0x20 */
587
     0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
588
     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
589
     /* 0x30 */
590
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
591
     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
592
     /* 0x40 */
593
     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
594
     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
595
     /* 0x50 */
596
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
597
     0x0058, 0x0059, 0x005a, 0x00c6, 0x00d8, 0x00c5, 0x02c6, 0x005f,
598
     /* 0x60 */
599
     0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
600
     0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
601
     /* 0x70 */
602
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
603
     0x0078, 0x0079, 0x007a, 0x00e6, 0x00f8, 0x00e5, 0x00af, 0x2592,
604
     /* 0x80 */
605
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
606
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
607
     /* 0x90 */
608
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
609
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
610
     /* 0xa0 */
611
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
612
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
613
     /* 0xb0 */
614
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
615
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
616
     /* 0xc0 */
617
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
618
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
619
     /* 0xd0 */
620
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
621
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
622
     /* 0xe0 */
623
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
624
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
625
     /* 0xf0 */
626
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
627
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff}
628
};
629
630
/***************************
631
 * Roman-8 Unicode mapping *
632
 ***************************/
633
const pl_symbol_map_t map_8U_unicode = {
634
    map_header(8, 'U', plgv_Unicode, 1, 0, 0, 0, 0, 0xc0, 0, 0, 0,
635
               PLGV_U2M_MAPPING),
636
    {
637
     /* 0x00 */
638
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
639
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
640
     /* 0x10 */
641
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
642
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
643
     /* 0x20 */
644
     0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x2019,
645
     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
646
     /* 0x30 */
647
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
648
     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
649
     /* 0x40 */
650
     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
651
     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
652
     /* 0x50 */
653
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
654
     0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
655
     /* 0x60 */
656
     0x2018, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
657
     0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
658
     /* 0x70 */
659
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
660
     0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2592,
661
     /* 0x80 */
662
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
663
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
664
     /* 0x90 */
665
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
666
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
667
     /* 0xa0 */
668
     0x00a0, 0x00c0, 0x00c2, 0x00c8, 0x00ca, 0x00cb, 0x00ce, 0x00cf,
669
     0x00b4, 0x0060, 0x02c6, 0x00a8, 0x02dc, 0x00d9, 0x00db, 0x00a3,
670
     /* 0xb0 */
671
     0x00af, 0x00dd, 0x00fd, 0x00b0, 0x00c7, 0x00e7, 0x00d1, 0x00f1,
672
     0x00a1, 0x00bf, 0x00a4, 0x00a3, 0x00a5, 0x00a7, 0x0192, 0x00a2,
673
     /* 0xc0 */
674
     0x00e2, 0x00ea, 0x00f4, 0x00fb, 0x00e1, 0x00e9, 0x00f3, 0x00fa,
675
     0x00e0, 0x00e8, 0x00f2, 0x00f9, 0x00e4, 0x00eb, 0x00f6, 0x00fc,
676
     /* 0xd0 */
677
     0x00c5, 0x00ee, 0x00d8, 0x00c6, 0x00e5, 0x00ed, 0x00f8, 0x00e6,
678
     0x00c4, 0x00ec, 0x00d6, 0x00dc, 0x00c9, 0x00ef, 0x00df, 0x00d4,
679
     /* 0xe0 */
680
     0x00c1, 0x00c3, 0x00e3, 0x00d0, 0x00f0, 0x00cd, 0x00cc, 0x00d3,
681
     0x00d2, 0x00d5, 0x00f5, 0x0160, 0x0161, 0x00da, 0x0178, 0x00ff,
682
     /* 0xf0 */
683
     0x00de, 0x00fe, 0x2219, 0x00b5, 0x00b6, 0x00be, 0x2212, 0x00bc,
684
     0x00bd, 0x00aa, 0x00ba, 0x00ab, 0x25a0, 0x00bb, 0x00b1, 0xffff}
685
};
686
687
/***************************
688
 * Desktop Unicode mapping *
689
 ***************************/
690
static const pl_symbol_map_t map_7J_unicode = {
691
    map_header(7, 'J', plgv_Unicode, 1, 0, 0, 0, 0, 0x88, 0, 0, 0,
692
               PLGV_U2M_MAPPING),
693
    {
694
     /* 0x00 */
695
     0x0000, 0x0002, 0x0001, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
696
     0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
697
     /* 0x10 */
698
     0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
699
     0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
700
     /* 0x20 */
701
     0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x2019,
702
     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
703
     /* 0x30 */
704
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
705
     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
706
     /* 0x40 */
707
     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
708
     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
709
     /* 0x50 */
710
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
711
     0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
712
     /* 0x60 */
713
     0x2018, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
714
     0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
715
     /* 0x70 */
716
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
717
     0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2592,
718
     /* 0x80 */
719
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
720
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
721
     /* 0x90 */
722
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
723
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
724
     /* 0xa0 */
725
     0x0001, 0x00b6, 0x00a7, 0x2020, 0x2021, 0x00a9, 0x00ae, 0x2122,
726
     0x2105, 0x00a2, 0x2013, 0x2014, 0x2026, 0xfb01, 0xfb02, 0xffff,
727
     /* 0xb0 */
728
     0x201c, 0x201d, 0x00b5, 0x2030, 0x2022, 0x25cf, 0x25e6, 0x25cb,
729
     0x25aa, 0x25a0, 0x25ab, 0x25a1, 0x0027, 0x00ac, 0x00a6, 0x2017,
730
     /* 0xc0 */
731
     0x2212, 0x00b1, 0x00d7, 0x00f7, 0x00b0, 0x2032, 0x2033, 0x00bc,
732
     0x00bd, 0x00be, 0x00b9, 0x00b2, 0x00b3, 0x2215, 0xffff, 0xffff,
733
     /* 0xd0 */
734
     0x2039, 0x203a, 0x00ab, 0x00bb, 0x201a, 0x201e, 0x2219, 0x00a1,
735
     0x00bf, 0x20A7, 0x2113, 0x00a3, 0x00a5, 0x00a4, 0x0192, 0x00df,
736
     /* 0xe0 */
737
     0x00aa, 0x00ba, 0x00e6, 0x00c6, 0x00f0, 0x00d0, 0x0133, 0x0132,
738
     0x0142, 0x0141, 0x0153, 0x0152, 0x00f8, 0x00d8, 0x00fe, 0x00de,
739
     /* 0xf0 */
740
     0x00b4, 0x0060, 0x02c6, 0x00a8, 0x02dc, 0x02c7, 0x02d8, 0x02dd,
741
     0x02da, 0x02d9, 0x02c9, 0x00b8, 0x02db, 0x00b7, 0x0131, 0xffff}
742
};
743
744
/***************************
745
 * PC-1004 OS/2         9J *
746
 ***************************/
747
static const pl_symbol_map_t map_9J_unicode = {
748
    map_header(9, 'J', plgv_Unicode, 1, 0, 0, 0, 0, 0xc0, 0, 0, 0,
749
               PLGV_U2M_MAPPING),
750
    {
751
     /*0x00 */
752
     0xffff, 0xffff, 0xffff, 0xffff, 0x02c9, 0x02d8, 0x02d9, 0xffff,
753
     0x02da, 0xffff, 0x02dd, 0x02db, 0x02c7, 0x000d, 0x000e, 0x000f,
754
     /*0x10 */
755
     0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
756
     0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
757
     /*0x20 */
758
     0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
759
     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
760
     /*0x30 */
761
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
762
     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
763
     /*0x40 */
764
     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
765
     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
766
     /*0x50 */
767
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
768
     0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
769
     /*0x60 */
770
     0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
771
     0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
772
     /*0x70 */
773
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
774
     /* NB check if 0x7f is 0x7f instead 0x2302 */
775
     0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2302,
776
     /*0x80 */
777
     0xffff, 0xffff, 0x201a, 0xffff, 0x201e, 0x2026, 0x2020, 0x2021,
778
     0xeff7, 0x2030, 0x0160, 0x2039, 0x0152, 0xffff, 0xffff, 0xffff,
779
     /*0x90 */
780
     0xffff, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
781
     0xeff5, 0x2122, 0x0161, 0x203a, 0x0153, 0xffff, 0xffff, 0x0178,
782
     /*0xa0 */
783
     0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
784
     0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x002d, 0x00ae, 0x00af,
785
     /*0xb0 */
786
     0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x2219,
787
     0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
788
     /*0xc0 */
789
     0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
790
     0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
791
     /*0xd0 */
792
     0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
793
     0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
794
     /*0xe0 */
795
     0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
796
     0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
797
     /*0xf0 */
798
     0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
799
     0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff}
800
};
801
802
/**************************************
803
 * ISO 8859/1 Latin 1 Unicode mapping *
804
 **************************************/
805
static const pl_symbol_map_t map_0N_unicode = {
806
    map_header(0, 'N', plgv_Unicode, 1, 0, 0, 0, 0, 0xc4, 0, 0, 0,
807
               PLGV_U2M_MAPPING),
808
    {
809
     /* 0x00 */
810
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
811
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
812
     /* 0x10 */
813
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
814
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
815
     /* 0x20 */
816
     0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
817
     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
818
     /* 0x30 */
819
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
820
     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
821
     /* 0x40 */
822
     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
823
     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
824
     /* 0x50 */
825
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
826
     0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x02c6, 0x005f,
827
     /* 0x60 */
828
     0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
829
     0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
830
     /* 0x70 */
831
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
832
     0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x02dc, 0x2592,
833
     /* 0x80 */
834
     0x20ac, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
835
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
836
     /* 0x90 */
837
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
838
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
839
     /* 0xa0 */
840
     0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
841
     0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x02c9,
842
     /* 0xb0 */
843
     0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x2219,
844
     0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
845
     /* 0xc0 */
846
     0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
847
     0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
848
     /* 0xd0 */
849
     0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
850
     0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
851
     /* 0xe0 */
852
     0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
853
     0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
854
     /* 0xf0 */
855
     0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
856
     0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff}
857
};
858
859
/***************************************
860
 * Windows 3.1 Latin 1 Unicode mapping *
861
 ***************************************/
862
/*
863
 * This is identical to the ISO 8859/1 Latin 1 mapping, except that
864
 * it has added characters in positions 0x80 - 0x9f.
865
 */
866
static const pl_symbol_map_t map_19U_unicode = {
867
    map_header(19, 'U', plgv_Unicode, 2, 0, 0, 0, 0, 0xc6, 0, 0, 0,
868
               PLGV_U2M_MAPPING),
869
    {
870
     /* 0x00 */
871
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
872
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
873
     /* 0x10 */
874
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
875
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
876
     /* 0x20 */
877
     0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
878
     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
879
     /* 0x30 */
880
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
881
     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
882
     /* 0x40 */
883
     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
884
     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
885
     /* 0x50 */
886
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
887
     0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
888
     /* 0x60 */
889
     0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
890
     0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
891
     /* 0x70 */
892
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
893
     0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2592,
894
     /* 0x80 */
895
     0x20ac, 0xffff, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
896
     0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0xffff, 0x017d, 0xffff,
897
     /* 0x90 */
898
     0xffff, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
899
     0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0xffff, 0x017e, 0x0178,
900
     /* 0xa0 */
901
     0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
902
     0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x002d, 0x00ae, 0x00af,
903
     /* 0xb0 */
904
     0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
905
     0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
906
     /* 0xc0 */
907
     0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
908
     0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
909
     /* 0xd0 */
910
     0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
911
     0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
912
     /* 0xe0 */
913
     0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
914
     0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
915
     /* 0xf0 */
916
     0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
917
     0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff,
918
     }
919
};
920
921
/**************************************
922
 * PC-8 Code Page 437 Unicode mapping *
923
 **************************************/
924
/*
925
 * Codes 0x00-0x1f are shared with other PC mappings;
926
 * codes 0x80-0xaf are (almost) shared with the PC-850 Multilingual map.
927
 */
928
static const pl_symbol_map_t map_10U_unicode = {
929
    map_header(10, 'U', plgv_Unicode, 2, 0, 0, 0, 0, 0xc2, 0, 0, 0,
930
               PLGV_U2M_MAPPING),
931
    {
932
     /* 0x00 */
933
     0xffff, 0x263a, 0x263b, 0x2665, 0x2666, 0x2663, 0x2660, 0x2022,
934
     0x25d8, 0x25cb, 0x25d9, 0x2642, 0x2640, 0x266a, 0x266b, 0x263c,
935
     /* 0x10 */
936
     0x25ba, 0x25c4, 0x2195, 0x203c, 0x00b6, 0x00a7, 0x25ac, 0x21a8,
937
     0x2191, 0x2193, 0x2192, 0x2190, 0x221f, 0x2194, 0x25b2, 0x25bC,
938
     /* 0x20 */
939
     0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
940
     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
941
     /* 0x30 */
942
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
943
     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
944
     /* 0x40 */
945
     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
946
     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
947
     /* 0x50 */
948
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
949
     0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
950
     /* 0x60 */
951
     0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
952
     0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
953
     /* 0x70 */
954
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
955
     0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x02dc, 0x2302,
956
     /* 0x80 */
957
     0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7,
958
     0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5,
959
     /* 0x90 */
960
     0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9,
961
     0x00ff, 0x00d6, 0x00dc, 0x00a2, 0x00a3, 0x00a5, 0x20a7, 0x0192,
962
     /* 0xa0 */
963
     0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba,
964
     0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb,
965
     /*0xb0 */
966
     0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
967
     0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510,
968
     /*0xc0 */
969
     0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f,
970
     0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567,
971
     /*0xd0 */
972
     0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b,
973
     0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580,
974
     /*0xe0 */
975
     0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4,
976
     0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229,
977
     /*0xf0 */
978
     0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248,
979
     0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25aa, 0x00a0}
980
};
981
982
/***************************************
983
 * PC-850 Multilingual Unicode mapping *
984
 ***************************************/
985
static const pl_symbol_map_t map_12U_unicode = {
986
    map_header(12, 'U', plgv_Unicode, 2, 0, 0, 0, 0, 0xe6, 0, 0, 0,
987
               PLGV_U2M_MAPPING),
988
    {
989
     /* 0x00 */
990
     0xffff, 0x263a, 0x263b, 0x2665, 0x2666, 0x2663, 0x2660, 0x2022,
991
     0x25d8, 0x25cb, 0x25d9, 0x2642, 0x2640, 0x266a, 0x266b, 0x263c,
992
     /* 0x10 */
993
     0x25ba, 0x25c4, 0x2195, 0x203c, 0x00b6, 0x00a7, 0x25ac, 0x21a8,
994
     0x2191, 0x2193, 0x2192, 0x2190, 0x221f, 0x2194, 0x25b2, 0x25bc,
995
     /* 0x20 */
996
     0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
997
     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
998
     /* 0x30 */
999
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
1000
     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
1001
     /* 0x40 */
1002
     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
1003
     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
1004
     /* 0x50 */
1005
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
1006
     0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x02c6, 0x005f,
1007
     /* 0x60 */
1008
     0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
1009
     0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
1010
     /* 0x70 */
1011
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
1012
     0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x02dc, 0x2302,
1013
     /* 0x80 */
1014
     0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7,
1015
     0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5,
1016
     /* 0x90 */
1017
     0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9,
1018
     0x00ff, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x00d7, 0x0192,
1019
     /* 0xa0 */
1020
     0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba,
1021
     0x00bf, 0x00ae, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb,
1022
     /*0xb0 */
1023
     0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00c1, 0x00c2, 0x00c0,
1024
     0x00a9, 0x2563, 0x2551, 0x2557, 0x255d, 0x00a2, 0x00a5, 0x2510,
1025
     /*0xc0 */
1026
     0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x00e3, 0x00c3,
1027
     0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4,
1028
     /*0xd0 */
1029
     0x00f0, 0x00d0, 0x00ca, 0x00cb, 0x00c8, 0x0131, 0x00cd, 0x00ce,
1030
     0x00cf, 0x2518, 0x250c, 0x2588, 0x2584, 0x00a6, 0x00cc, 0x2580,
1031
     /*0xe0 */
1032
     0x00d3, 0x00df, 0x00d4, 0x00d2, 0x00f5, 0x00d5, 0x00b5, 0x00fe,
1033
     0x00de, 0x00da, 0x00db, 0x00d9, 0x00fd, 0x00dd, 0x02c9, 0x00b4,
1034
     /*0xf0 */
1035
     0x002d, 0x00b1, 0x2017, 0x00be, 0x00b6, 0x00a7, 0x00f7, 0x00b8,
1036
     0x00b0, 0x00a8, 0x00b7, 0x00b9, 0x00b3, 0x00b2, 0x25aa, 0x00a0}
1037
};
1038
1039
/********************************
1040
 * PS Text (TS) Unicode mapping *
1041
 ********************************/
1042
static const pl_symbol_map_t map_10J_unicode = {
1043
    map_header(10, 'J', plgv_Unicode, 1, 0, 0, 0, 0, 0xc0, 0x80, 0, 0,
1044
               PLGV_U2M_MAPPING),
1045
    {
1046
     /*0x00 */
1047
     0x0000, 0x0002, 0x0001, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
1048
     0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
1049
     /*0x01 */
1050
     0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
1051
     0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
1052
     /*0x02 */
1053
     0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x2019,
1054
     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
1055
     /*0x30 */
1056
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
1057
     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
1058
     /*0x40 */
1059
     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
1060
     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
1061
     /*0x50 */
1062
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
1063
     0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
1064
     /*0x60 */
1065
     0x2018, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
1066
     0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
1067
     /*0x70 */
1068
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
1069
     0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x0097,
1070
     /*0x80 */
1071
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1072
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1073
     /*0x90 */
1074
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1075
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1076
     /*0xa0 */
1077
     0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x2215, 0x00a5, 0x0192, 0x00a7,
1078
     0x00a4, 0x0027, 0x201c, 0x00ab, 0x2039, 0x203a, 0xfb01, 0xfb02,
1079
     /*0xb0 */
1080
     0xffff, 0x2013, 0x2020, 0x2021, 0x2219, 0xffff, 0x00b6, 0x2022,
1081
     0x201a, 0x201e, 0x201d, 0x00bb, 0x2026, 0x2030, 0xffff, 0x00bf,
1082
     /*0xc0 */
1083
     0xffff, 0x0060, 0x00b4, 0x02c6, 0x02dc, 0x02c9, 0x02d8, 0x02d9,
1084
     0x00a8, 0xffff, 0x02da, 0x00b8, 0xffff, 0x02dd, 0x02db, 0x02c7,
1085
     /*0xd0 */
1086
     0x2014, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1087
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1088
     /*0xe0 */
1089
     0xffff, 0x00c6, 0xffff, 0x00aa, 0xffff, 0xffff, 0xffff, 0xffff,
1090
     0x0141, 0x00d8, 0x0152, 0x00ba, 0xffff, 0xffff, 0xffff, 0xffff,
1091
     /*0xf0 */
1092
     0xffff, 0x00e6, 0xffff, 0xffff, 0xffff, 0x0131, 0xffff, 0xffff,
1093
     0x0142, 0x00f8, 0x0153, 0x00df, 0xffff, 0xffff, 0xffff, 0xffff}
1094
};
1095
1096
/********************************
1097
 * MC Text (MC) Unicode mapping *
1098
 ********************************/
1099
static const pl_symbol_map_t map_12J_unicode = {
1100
    map_header(12, 'J', plgv_Unicode, 2, 0, 0, 0, 0, 0xc1, 0, 0, 0,
1101
               PLGV_U2M_MAPPING),
1102
    {
1103
     /*0x00 */
1104
     0x0000, 0x0002, 0x0001, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
1105
     0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
1106
     /*0x10 */
1107
     0x0010, 0x0011, 0x0012, 0x0013, 0x0013, /* urw 14 bad */ 0x0015, 0x0016,
1108
     0x0017,
1109
     0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
1110
     /*0x20 */
1111
     0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
1112
     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
1113
     /*0x30 */
1114
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
1115
     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
1116
     /*0x40 */
1117
     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
1118
     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
1119
     /*0x50 */
1120
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
1121
     0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
1122
     /*0x60 */
1123
     0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
1124
     0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
1125
     /*0x70 */
1126
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
1127
     0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0xffff,
1128
     /*0x80 */
1129
     0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1,
1130
     0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8,
1131
     /*0x90 */
1132
     0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3,
1133
     0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc,
1134
     /*0xa0 */
1135
     0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df,
1136
     0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8,
1137
     /*0xb0 */
1138
     0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211,
1139
     0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x03a9, 0x00e6, 0x00f8,
1140
     /*0xc0 */
1141
     0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab,
1142
     0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153,
1143
     /*0xd0 */
1144
     0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca,
1145
     0x00ff, 0x0178, 0x2215, 0x20ac, 0x2039, 0x203a, 0xfb01, 0xfb02,
1146
     /*0xe0 */
1147
     0x2021, 0x2219, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1,
1148
     0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4,
1149
     /*0xf0 */
1150
     0xffff, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc,
1151
     0x02c9, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7}
1152
};
1153
1154
/***********************************************
1155
 * PC-8 Danish/Norweigian (PD) Unicode mapping *
1156
 ***********************************************/
1157
static const pl_symbol_map_t map_11U_unicode = {
1158
    map_header(11, 'U', plgv_Unicode, 2, 0, 0, 0, 0, 0xc0, 0x40, 0, 0,
1159
               PLGV_U2M_MAPPING),
1160
    {
1161
     /* 0x00 */
1162
     0xffff, 0x263a, 0x263b, 0x2665, 0x2666, 0x2663, 0x2660, 0x2022,
1163
     0x25d8, 0x25cb, 0x25d9, 0x2642, 0x2640, 0x266a, 0x266b, 0x263c,
1164
     /* 0x10 */
1165
     0x25ba, 0x25c4, 0x2195, 0x203c, 0x00b6, 0x00a7, 0x25ac, 0x21a8,
1166
     0x2191, 0x2193, 0x2192, 0x2190, 0x221f, 0x2194, 0x25b2, 0x25bC,
1167
     /*0x20 */
1168
     0xffff, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
1169
     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
1170
     /*0x30 */
1171
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
1172
     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
1173
     /*0x40 */
1174
     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
1175
     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
1176
     /*0x50 */
1177
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
1178
     0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x02c6, 0x005f,
1179
     /*0x60 */
1180
     0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
1181
     0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
1182
     /*0x70 */
1183
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
1184
     0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x02dc, 0x2302,
1185
     /*0x80 */
1186
     0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7,
1187
     0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5,
1188
     /*0x90 */
1189
     0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9,
1190
     0x00ff, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x013f, 0x0140,
1191
     /*0xa0 */
1192
     0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00f5, 0x00d5,
1193
     0x00bf, 0x00e3, 0x00c3, 0x2113, 0x0149, 0x00a1, 0x00b3, 0x00a4,
1194
     /*0xb0 */
1195
     0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
1196
     0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510,
1197
     /*0xc0 */
1198
     0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f,
1199
     0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567,
1200
     /*0xd0 */
1201
     0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b,
1202
     0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580,
1203
     /*0xe0 */
1204
     0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4,
1205
     0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229,
1206
     /*0xf0 */
1207
     0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248,
1208
     0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25aa, 0x00a0}
1209
};
1210
1211
/******************************
1212
 * Legal (LG) Unicode mapping *
1213
 ******************************/
1214
static const pl_symbol_map_t map_1U_unicode = {
1215
    map_header(1, 'U', plgv_Unicode, 1, 0, 0, 0, 0, 0xc0, 0, 0, 0,
1216
               PLGV_U2M_MAPPING),
1217
    {
1218
     /*0x00 */
1219
     0x0000, 0x0002, 0x0001, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
1220
     0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x001e, 0x000f,
1221
     /*0x10 */
1222
     0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
1223
     0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
1224
     /*0x20 */
1225
     0x0020, 0x0021, 0x2033, 0x0023, 0x0024, 0x0025, 0x0026, 0x2032,
1226
     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
1227
     /*0x30 */
1228
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
1229
     0x0038, 0x0039, 0x003a, 0x003b, 0x2017, 0x003d, 0x00a2, 0x003f,
1230
     /*0x40 */
1231
     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
1232
     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
1233
     /*0x50 */
1234
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
1235
     0x0058, 0x0059, 0x005a, 0x005b, 0x00ae, 0x005d, 0x00a9, 0x005f,
1236
     /*0x60 */
1237
     0x00b0, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
1238
     0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
1239
     /*0x70 */
1240
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
1241
     0x0078, 0x0079, 0x007a, 0x00a7, 0x00b6, 0x2020, 0x2122, 0x2592,
1242
     /*0x80 */
1243
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1244
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1245
     /*0x90 */
1246
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1247
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1248
     /*0xa0 */
1249
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1250
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1251
     /*0xb0 */
1252
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1253
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1254
     /*0xc0 */
1255
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1256
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1257
     /*0xd0 */
1258
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1259
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1260
     /*0xe0 */
1261
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1262
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1263
     /*0xf0 */
1264
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1265
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff}
1266
};
1267
1268
/***************************************
1269
 * Windows 3.0 Latin 1 Unicode mapping *
1270
 ***************************************/
1271
/*
1272
 * This is identical to the ISO 8859/1 Latin 1 mapping, except that
1273
 * it has added characters in positions 0x91 - 0x92.
1274
 */
1275
static const pl_symbol_map_t map_9U_unicode = {
1276
    map_header(9, 'U', plgv_Unicode, 2, 0, 0, 0, 0, 0xcc, 0, 0, 0,
1277
               PLGV_U2M_MAPPING),
1278
    {
1279
     /* 0x00 */
1280
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1281
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1282
     /* 0x10 */
1283
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1284
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1285
     /* 0x20 */
1286
     0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
1287
     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
1288
     /* 0x30 */
1289
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
1290
     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
1291
     /* 0x40 */
1292
     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
1293
     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
1294
     /* 0x50 */
1295
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
1296
     0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
1297
     /* 0x60 */
1298
     0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
1299
     0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
1300
     /* 0x70 */
1301
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
1302
     0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x02dc, 0x2592,
1303
     /* 0x80 */
1304
     0x20ac, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1305
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1306
     /* 0x90 */
1307
     0xffff, 0x2018, 0x2019, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1308
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1309
     /* 0xa0 */
1310
     0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
1311
     0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x02c9,
1312
     /* 0xb0 */
1313
     0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
1314
     0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
1315
     /* 0xc0 */
1316
     0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
1317
     0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
1318
     /* 0xd0 */
1319
     0x0110, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
1320
     0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
1321
     /* 0xe0 */
1322
     0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
1323
     0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
1324
     /* 0xf0 */
1325
     0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
1326
     0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff}
1327
};
1328
1329
/*********************************************
1330
 * Microsoft Publishing (PB) Unicode mapping *
1331
 *********************************************/
1332
static const pl_symbol_map_t map_6J_unicode = {
1333
    map_header(6, 'J', plgv_Unicode, 2, 0, 0, 0, 0, 0xc8, 0, 0, 0,
1334
               PLGV_U2M_MAPPING),
1335
    {
1336
     /* 0x00 */
1337
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1338
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1339
     /* 0x10 */
1340
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1341
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1342
     /*0x20 */
1343
     0x0020, 0x00b9, 0x201d, 0x00b3, 0x2074, 0x2075, 0x2077, 0x2019,
1344
     0x2079, 0x2070, 0x2078, 0x2020, 0x201a, 0x2212, 0x2026, 0x2215,
1345
     /*0x30 */
1346
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1347
     0xffff, 0xffff, 0xffff, 0xffff, 0x201e, 0x2021, 0xffff, 0xffff,
1348
     /*0x40 */
1349
     0x00b2, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1350
     0xffff, 0xffff, 0xffff, 0xffff, 0x013d, 0x2014, 0x2013, 0x0152,
1351
     /*0x50 */
1352
     0xffff, 0xffff, 0x211e, 0x0160, 0x2122, 0xffff, 0xffff, 0xffff,
1353
     0xffff, 0x0178, 0x017d, 0xffff, 0xffff, 0xffff, 0x2076, 0x2017,
1354
     /*0x60 */
1355
     0x2018, 0xffff, 0xffff, 0x2105, 0xffff, 0xffff, 0xffff, 0xffff,
1356
     0xffff, 0xffff, 0xffff, 0xffff, 0x2113, 0xffff, 0xffff, 0x0153,
1357
     /*0x70 */
1358
     0xffff, 0xffff, 0xffff, 0x0161, 0xffff, 0xffff, 0xffff, 0xffff,
1359
     0xffff, 0xffff, 0x017e, 0xffff, 0xffff, 0xffff, 0x201c, 0xffff,
1360
     /*0x80 */
1361
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1362
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1363
     /*0x90 */
1364
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1365
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x20a7, 0x0192,
1366
     /*0xa0 */
1367
     0xffff, 0x2032, 0x2033, 0x005e, 0x007E, 0xffff, 0xffff, 0xffff,
1368
     0xffff, 0xfb01, 0xfb02, 0xfb00, 0xfb03, 0xfb04, 0x2039, 0x203a,
1369
     /*0xb0 */
1370
     0x00b0, 0x2022, 0x25cf, 0xeffa, 0x25e6, 0x25cb, 0xeffd, 0x25aa,
1371
     0x25a0, 0xeffb, 0x25ab, 0x25a1, 0xeffc, 0x2030, 0x25c6, 0x25c7,
1372
     /*0xc0 */
1373
     0xffff, 0xeff8, 0xeff9, 0xeff7, 0xeff5, 0xefef, 0xefee, 0xefed,
1374
     0xeff6, 0xffff, 0xeff3, 0xeff2, 0xffff, 0xeff0, 0xeff1, 0xeff4,
1375
     /*0xd0 */
1376
     0xffff, 0x0060, 0x00b4, 0x02c6, 0x02dc, 0x02c9, 0x02d8, 0x02d9,
1377
     0x00a8, 0xffff, 0x02da, 0x00b8, 0xffff, 0x02dd, 0x02db, 0x02c7,
1378
     /*0xe0 */
1379
     0x03a9, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0132, 0x013f,
1380
     0x0141, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0149,
1381
     /*0xf0 */
1382
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0131, 0x0133, 0x0140,
1383
     0x0142, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff}
1384
};
1385
1386
/**********************************
1387
 * PC-852 Latin 2 Unicode mapping *
1388
 **********************************/
1389
static const pl_symbol_map_t map_17U_unicode = {
1390
    map_header(17, 'U', plgv_Unicode, 2, 0, 0, 0, 0, 0xe4, 0, 0, 0,
1391
               PLGV_U2M_MAPPING),
1392
    {
1393
     /* 0x00 */
1394
     0xffff, 0x263a, 0x263b, 0x2665, 0x2666, 0x2663, 0x2660, 0x2022,
1395
     0x25d8, 0x25cb, 0x25d9, 0x2642, 0x2640, 0x266a, 0x266b, 0x263c,
1396
     /* 0x10 */
1397
     0x25ba, 0x25c4, 0x2195, 0x203c, 0x00b6, 0x00a7, 0x25ac, 0x21a8,
1398
     0x2191, 0x2193, 0x2192, 0x2190, 0x221f, 0x2194, 0x25b2, 0x25bc,
1399
     /* 0x20 */
1400
     0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
1401
     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
1402
     /* 0x30 */
1403
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
1404
     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
1405
     /* 0x40 */
1406
     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
1407
     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
1408
     /* 0x50 */
1409
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
1410
     0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
1411
     /* 0x60 */
1412
     0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
1413
     0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
1414
     /* 0x70 */
1415
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
1416
     0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x02dc, 0x2302,
1417
     /* 0x80 */
1418
     0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x016f, 0x0107, 0x00e7,
1419
     0x0142, 0x00eb, 0x0150, 0x0151, 0x00ee, 0x0179, 0x00c4, 0x0106,
1420
     /* 0x90 */
1421
     0x00c9, 0x0139, 0x013a, 0x00f4, 0x00f6, 0x013d, 0x013e, 0x015a,
1422
     0x015b, 0x00d6, 0x00dc, 0x0164, 0x0165, 0x0141, 0x00d7, 0x010d,
1423
     /* 0xa0 */
1424
     0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x0104, 0x0105, 0x017d, 0x017e,
1425
     0x0118, 0x0119, 0xffff, 0x017a, 0x010c, 0x015f, 0x00ab, 0x00bb,
1426
     /*0xb0 */
1427
     0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00c1, 0x00c2, 0x011a,
1428
     0x015e, 0x2563, 0x2551, 0x2557, 0x255d, 0x017b, 0x017c, 0x2510,
1429
     /*0xc0 */
1430
     0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x0102, 0x0103,
1431
     0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4,
1432
     /*0xd0 */
1433
     0x0111, 0x0110, 0x010e, 0x00cb, 0x010f, 0x0147, 0x00cd, 0x00ce,
1434
     0x011b, 0x2518, 0x250c, 0x2588, 0x2584, 0x0162, 0x016e, 0x2580,
1435
     /*0xe0 */
1436
     0x00d3, 0x00df, 0x00d4, 0x0143, 0x0144, 0x0148, 0x0160, 0x0161,
1437
     0x0154, 0x00da, 0x0155, 0x0170, 0x00fd, 0x00dd, 0x0163, 0x00b4,
1438
     /*0xf0 */
1439
     0x00ad, 0x02dd, 0x02db, 0x02c7, 0x02d8, 0x00a7, 0x00f7, 0x00b8,
1440
     0x00b0, 0x00a8, 0x02d9, 0x0171, 0x0158, 0x0159, 0x25aa, 0x00a0}
1441
};
1442
1443
/************************************
1444
 * PC-Turkish  (PT) Unicode mapping *
1445
 ************************************/
1446
static const pl_symbol_map_t map_9T_unicode = {
1447
    map_header(9, 'T', plgv_Unicode, 2, 0, 0, 0, 0, 0xd0, 0, 0, 0,
1448
               PLGV_U2M_MAPPING),
1449
    {
1450
     /*0x00 */
1451
     0xffff, 0x263a, 0x263b, 0x2665, 0x2666, 0x2663, 0x2660, 0x2022,
1452
     0x25d8, 0x25cb, 0x25d9, 0x2642, 0x2640, 0x266a, 0x266b, 0x263c,
1453
     /*0x10 */
1454
     0x25ba, 0x25c4, 0x2195, 0x203c, 0x00b6, 0x00a7, 0x25ac, 0x21a8,
1455
     0x2191, 0x2193, 0x2192, 0x2190, 0x221f, 0x2194, 0x25b2, 0x25bC,
1456
     /*0x20 */
1457
     0xffff, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
1458
     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
1459
     /*0x30 */
1460
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
1461
     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
1462
     /*0x40 */
1463
     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
1464
     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
1465
     /*0x50 */
1466
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
1467
     0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x02c6, 0x005f,
1468
     /*0x60 */
1469
     0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
1470
     0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
1471
     /*0x70 */
1472
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
1473
     0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x02dc, 0x2302,
1474
     /*0x80 */
1475
     0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7,
1476
     0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x0131, 0x00c4, 0x00c5,
1477
     /*0x90 */
1478
     0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9,
1479
     0x0130, 0x00d6, 0x00dc, 0x00a2, 0x00a3, 0x00a5, 0x015e, 0x15f,
1480
     /*0xa0 */
1481
     0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x011e, 0x011f,
1482
     0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb,
1483
     /*0xb0 */
1484
     0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
1485
     0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510,
1486
     /*0xc0 */
1487
     0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f,
1488
     0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567,
1489
     /*0xd0 */
1490
     0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b,
1491
     0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580,
1492
     /*0xe0 */
1493
     0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4,
1494
     0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229,
1495
     /*0xf0 */
1496
     0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248,
1497
     0x00b0, 0x2219, 0x2219, 0x221a, 0x207f, 0x00b2, 0x25aa, 0x00a0}
1498
};
1499
1500
/*******************************************
1501
 * ISO 8859/2 Latin 2 (E2) Unicode mapping *
1502
 *******************************************/
1503
static const pl_symbol_map_t map_2N_unicode = {
1504
    map_header(2, 'N', plgv_Unicode, 1, 0, 0, 0, 0, 0xe0, 0, 0, 0,
1505
               PLGV_U2M_MAPPING),
1506
    {
1507
     /*0x00 */
1508
     0x0000, 0x0002, 0x0001, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
1509
     0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
1510
     /*0x10 */
1511
     0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
1512
     0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
1513
     /*0x20 */
1514
     0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
1515
     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
1516
     /*0x30 */
1517
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
1518
     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
1519
     /*0x40 */
1520
     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
1521
     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
1522
     /*0x50 */
1523
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
1524
     0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x02c6, 0x005f,
1525
     /*0x60 */
1526
     0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
1527
     0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
1528
     /*0x70 */
1529
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
1530
     0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x02dc, 0x2592,
1531
     /*0x80 */
1532
     0x20ac, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1533
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1534
     /*0x90 */
1535
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1536
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
1537
     /*0xa0 */
1538
     0x00a0, 0x0104, 0x02d8, 0x0141, 0x00a4, 0x013d, 0x015a, 0x00a7,
1539
     0x00a8, 0x0160, 0x015e, 0x0164, 0x0179, 0x00ad, 0x017d, 0x017b,
1540
     /*0xb0 */
1541
     0x00b0, 0x0105, 0x02db, 0x0142, 0x00b4, 0x013e, 0x015b, 0x02c7,
1542
     0x00b8, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c,
1543
     /*0xc0 */
1544
     0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7,
1545
     0x010c, 0x00c9, 0x0118, 0x00cb, 0x011A, 0x00cd, 0x00ce, 0x010e,
1546
     /*0xd0 */
1547
     0x00d0, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7,
1548
     0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df,
1549
     /*0xe0 */
1550
     0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7,
1551
     0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f,
1552
     /*0xf0 */
1553
     0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7,
1554
     0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9}
1555
};
1556
1557
/********************************************
1558
 * Windows 3.1 Latin 2 (EE) Unicode mapping *
1559
 * windows-1250                             *
1560
 ********************************************/
1561
static const pl_symbol_map_t map_9E_unicode = {
1562
    map_header(9, 'E', plgv_Unicode, 2, 0, 0, 0, 0, 0xe0, 0, 0, 0,
1563
               PLGV_U2M_MAPPING),
1564
    {
1565
     /*0x00 */
1566
     0x0000, 0x0002, 0x0001, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
1567
     0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
1568
     /*0x10 */
1569
     0x0010, 0x0011, 0x0012, 0x0013, 0x0013, /*urw 14 bad */ 0x0015, 0x0016,
1570
     0x0017,
1571
     0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
1572
     /*0x20 */
1573
     0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
1574
     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
1575
     /*0x30 */
1576
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
1577
     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
1578
     /*0x40 */
1579
     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
1580
     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
1581
     /*0x50 */
1582
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
1583
     0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
1584
     /*0x60 */
1585
     0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
1586
     0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
1587
     /*0x70 */
1588
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
1589
     0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x07e /*0x023c */ ,
1590
     0x2592 /*0x0097 */ ,
1591
     /*0x80 */
1592
     0x20ac, 0xffff, 0x201a, 0xffff, 0x201e, 0x2026, 0x2020, 0x2021,
1593
     0xffff, 0x2030, 0x0160, 0x2039, 0x015a, 0x0164, 0x017d, 0x0179,
1594
     /*0x90 */
1595
     0xffff, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
1596
     0xffff, 0x2122, 0x0161, 0x203a, 0x015b, 0x0165, 0x017e, 0x017a,
1597
     /*0xa0 */
1598
     0x00a0, 0x02c7, 0x02d8, 0x0141, 0x00a4, 0x0104, 0x00a6, 0x00a7,
1599
     0x00a8, 0x00a9, 0x015e, 0x00ab, 0x00ac, 0x002d, 0x00ae, 0x017b,
1600
     /*0xb0 */
1601
     0x00b0, 0x00b1, 0x02db, 0x0142, 0x00b4, 0x00b5, 0x00b6, 0x2219,
1602
     0x00b8, 0x0105, 0x015f, 0x00bb, 0x013d, 0x02dd, 0x013e, 0x017c,
1603
     /*0xc0 */
1604
     0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7,
1605
     0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e,
1606
     /*0xd0 */
1607
     0x00d0, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7,
1608
     0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df,
1609
     /*0xe0 */
1610
     0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7,
1611
     0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f,
1612
     /*0xf0 */
1613
     0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7,
1614
     0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9,
1615
     }
1616
};
1617
1618
/* NB The following 3 symbols sets need to be formatted consistently
1619
   with the other symbol sets. */
1620
1621
/********************************************
1622
 * windows-1251 Cyrillic                    *
1623
 ********************************************/
1624
static const pl_symbol_map_t map_9R_unicode = {
1625
    map_header(9, 'R', plgv_Unicode, 2, 0, 0, 0, 0, 0xc0, 0, 0, 0,
1626
               PLGV_U2M_MAPPING),
1627
    {
1628
     0x0000,
1629
     0x0001,
1630
     0x0002,
1631
     0x0003,
1632
     0x0004,
1633
     0x0005,
1634
     0x0006,
1635
     0x0007,
1636
     0x0008,
1637
     0x0009,
1638
     0x000a,
1639
     0x000b,
1640
     0x000c,
1641
     0x000d,
1642
     0x000e,
1643
     0x000f,
1644
     0x0010,
1645
     0x0011,
1646
     0x0012,
1647
     0x0013,
1648
     0x0014,
1649
     0x0015,
1650
     0x0016,
1651
     0x0017,
1652
     0x0018,
1653
     0x0019,
1654
     0x001a,
1655
     0x001b,
1656
     0x001c,
1657
     0x001d,
1658
     0x001e,
1659
     0x001f,
1660
     0x0020,
1661
     0x0021,
1662
     0x0022,
1663
     0x0023,
1664
     0x0024,
1665
     0x0025,
1666
     0x0026,
1667
     0x0027,
1668
     0x0028,
1669
     0x0029,
1670
     0x002a,
1671
     0x002b,
1672
     0x002c,
1673
     0x002d,
1674
     0x002e,
1675
     0x002f,
1676
     0x0030,
1677
     0x0031,
1678
     0x0032,
1679
     0x0033,
1680
     0x0034,
1681
     0x0035,
1682
     0x0036,
1683
     0x0037,
1684
     0x0038,
1685
     0x0039,
1686
     0x003a,
1687
     0x003b,
1688
     0x003c,
1689
     0x003d,
1690
     0x003e,
1691
     0x003f,
1692
     0x0040,
1693
     0x0041,
1694
     0x0042,
1695
     0x0043,
1696
     0x0044,
1697
     0x0045,
1698
     0x0046,
1699
     0x0047,
1700
     0x0048,
1701
     0x0049,
1702
     0x004a,
1703
     0x004b,
1704
     0x004c,
1705
     0x004d,
1706
     0x004e,
1707
     0x004f,
1708
     0x0050,
1709
     0x0051,
1710
     0x0052,
1711
     0x0053,
1712
     0x0054,
1713
     0x0055,
1714
     0x0056,
1715
     0x0057,
1716
     0x0058,
1717
     0x0059,
1718
     0x005a,
1719
     0x005b,
1720
     0x005c,
1721
     0x005d,
1722
     0x005e,
1723
     0x005f,
1724
     0x0060,
1725
     0x0061,
1726
     0x0062,
1727
     0x0063,
1728
     0x0064,
1729
     0x0065,
1730
     0x0066,
1731
     0x0067,
1732
     0x0068,
1733
     0x0069,
1734
     0x006a,
1735
     0x006b,
1736
     0x006c,
1737
     0x006d,
1738
     0x006e,
1739
     0x006f,
1740
     0x0070,
1741
     0x0071,
1742
     0x0072,
1743
     0x0073,
1744
     0x0074,
1745
     0x0075,
1746
     0x0076,
1747
     0x0077,
1748
     0x0078,
1749
     0x0079,
1750
     0x007a,
1751
     0x007b,
1752
     0x007c,
1753
     0x007d,
1754
     0x007e,
1755
     0x007f,
1756
     0x0402,
1757
     0x0403,
1758
     0x201a,
1759
     0x0453,
1760
     0x201e,
1761
     0x2026,
1762
     0x2020,
1763
     0x2021,
1764
     0x20ac,
1765
     0x2030,
1766
     0x0409,
1767
     0x2039,
1768
     0x040a,
1769
     0x040c,
1770
     0x040b,
1771
     0x040f,
1772
     0x0452,
1773
     0x2018,
1774
     0x2019,
1775
     0x201c,
1776
     0x201d,
1777
     0x2022,
1778
     0x2013,
1779
     0x2014,
1780
     0xffff,
1781
     0x2122,
1782
     0x0459,
1783
     0x203a,
1784
     0x045a,
1785
     0x045c,
1786
     0x045b,
1787
     0x045f,
1788
     0x00a0,
1789
     0x040e,
1790
     0x045e,
1791
     0x0408,
1792
     0x00a4,
1793
     0x0490,
1794
     0x00a6,
1795
     0x00a7,
1796
     0x0401,
1797
     0x00a9,
1798
     0x0404,
1799
     0x00ab,
1800
     0x00ac,
1801
     0x00ad,
1802
     0x00ae,
1803
     0x0407,
1804
     0x00b0,
1805
     0x00b1,
1806
     0x0406,
1807
     0x0456,
1808
     0x0491,
1809
     0x00b5,
1810
     0x00b6,
1811
     0x00b7,
1812
     0x0451,
1813
     0x2116,
1814
     0x0454,
1815
     0x00bb,
1816
     0x0458,
1817
     0x0405,
1818
     0x0455,
1819
     0x0457,
1820
     0x0410,
1821
     0x0411,
1822
     0x0412,
1823
     0x0413,
1824
     0x0414,
1825
     0x0415,
1826
     0x0416,
1827
     0x0417,
1828
     0x0418,
1829
     0x0419,
1830
     0x041a,
1831
     0x041b,
1832
     0x041c,
1833
     0x041d,
1834
     0x041e,
1835
     0x041f,
1836
     0x0420,
1837
     0x0421,
1838
     0x0422,
1839
     0x0423,
1840
     0x0424,
1841
     0x0425,
1842
     0x0426,
1843
     0x0427,
1844
     0x0428,
1845
     0x0429,
1846
     0x042a,
1847
     0x042b,
1848
     0x042c,
1849
     0x042d,
1850
     0x042e,
1851
     0x042f,
1852
     0x0430,
1853
     0x0431,
1854
     0x0432,
1855
     0x0433,
1856
     0x0434,
1857
     0x0435,
1858
     0x0436,
1859
     0x0437,
1860
     0x0438,
1861
     0x0439,
1862
     0x043a,
1863
     0x043b,
1864
     0x043c,
1865
     0x043d,
1866
     0x043e,
1867
     0x043f,
1868
     0x0440,
1869
     0x0441,
1870
     0x0442,
1871
     0x0443,
1872
     0x0444,
1873
     0x0445,
1874
     0x0446,
1875
     0x0447,
1876
     0x0448,
1877
     0x0449,
1878
     0x044a,
1879
     0x044b,
1880
     0x044c,
1881
     0x044d,
1882
     0x044e,
1883
     0x044f}
1884
};
1885
/********************************************
1886
 * windows-1253 Greek                       *
1887
 ********************************************/
1888
static const pl_symbol_map_t map_9G_unicode = {
1889
    map_header(9, 'G', plgv_Unicode, 2, 0, 0, 0, 0, 0xc0, 0, 0, 0,
1890
               PLGV_U2M_MAPPING),
1891
    {
1892
     0x0000,
1893
     0x0001,
1894
     0x0002,
1895
     0x0003,
1896
     0x0004,
1897
     0x0005,
1898
     0x0006,
1899
     0x0007,
1900
     0x0008,
1901
     0x0009,
1902
     0x000a,
1903
     0x000b,
1904
     0x000c,
1905
     0x000d,
1906
     0x000e,
1907
     0x000f,
1908
     0x0010,
1909
     0x0011,
1910
     0x0012,
1911
     0x0013,
1912
     0x0014,
1913
     0x0015,
1914
     0x0016,
1915
     0x0017,
1916
     0x0018,
1917
     0x0019,
1918
     0x001a,
1919
     0x001b,
1920
     0x001c,
1921
     0x001d,
1922
     0x001e,
1923
     0x001f,
1924
     0x0020,
1925
     0x0021,
1926
     0x0022,
1927
     0x0023,
1928
     0x0024,
1929
     0x0025,
1930
     0x0026,
1931
     0x0027,
1932
     0x0028,
1933
     0x0029,
1934
     0x002a,
1935
     0x002b,
1936
     0x002c,
1937
     0x002d,
1938
     0x002e,
1939
     0x002f,
1940
     0x0030,
1941
     0x0031,
1942
     0x0032,
1943
     0x0033,
1944
     0x0034,
1945
     0x0035,
1946
     0x0036,
1947
     0x0037,
1948
     0x0038,
1949
     0x0039,
1950
     0x003a,
1951
     0x003b,
1952
     0x003c,
1953
     0x003d,
1954
     0x003e,
1955
     0x003f,
1956
     0x0040,
1957
     0x0041,
1958
     0x0042,
1959
     0x0043,
1960
     0x0044,
1961
     0x0045,
1962
     0x0046,
1963
     0x0047,
1964
     0x0048,
1965
     0x0049,
1966
     0x004a,
1967
     0x004b,
1968
     0x004c,
1969
     0x004d,
1970
     0x004e,
1971
     0x004f,
1972
     0x0050,
1973
     0x0051,
1974
     0x0052,
1975
     0x0053,
1976
     0x0054,
1977
     0x0055,
1978
     0x0056,
1979
     0x0057,
1980
     0x0058,
1981
     0x0059,
1982
     0x005a,
1983
     0x005b,
1984
     0x005c,
1985
     0x005d,
1986
     0x005e,
1987
     0x005f,
1988
     0x0060,
1989
     0x0061,
1990
     0x0062,
1991
     0x0063,
1992
     0x0064,
1993
     0x0065,
1994
     0x0066,
1995
     0x0067,
1996
     0x0068,
1997
     0x0069,
1998
     0x006a,
1999
     0x006b,
2000
     0x006c,
2001
     0x006d,
2002
     0x006e,
2003
     0x006f,
2004
     0x0070,
2005
     0x0071,
2006
     0x0072,
2007
     0x0073,
2008
     0x0074,
2009
     0x0075,
2010
     0x0076,
2011
     0x0077,
2012
     0x0078,
2013
     0x0079,
2014
     0x007a,
2015
     0x007b,
2016
     0x007c,
2017
     0x007d,
2018
     0x007e,
2019
     0x007f,
2020
     0x20ac,
2021
     0xffff,
2022
     0x201a,
2023
     0x0192,
2024
     0x201e,
2025
     0x2026,
2026
     0x2020,
2027
     0x2021,
2028
     0xffff,
2029
     0x2030,
2030
     0xffff,
2031
     0x2039,
2032
     0xffff,
2033
     0xffff,
2034
     0xffff,
2035
     0xffff,
2036
     0xffff,
2037
     0x2018,
2038
     0x2019,
2039
     0x201c,
2040
     0x201d,
2041
     0x2022,
2042
     0x2013,
2043
     0x2014,
2044
     0xffff,
2045
     0x2122,
2046
     0xffff,
2047
     0x203a,
2048
     0xffff,
2049
     0xffff,
2050
     0xffff,
2051
     0xffff,
2052
     0x00a0,
2053
     0x0385,
2054
     0x0386,
2055
     0x00a3,
2056
     0x00a4,
2057
     0x00a5,
2058
     0x00a6,
2059
     0x00a7,
2060
     0x00a8,
2061
     0x00a9,
2062
     0xffff,
2063
     0x00ab,
2064
     0x00ac,
2065
     0x00ad,
2066
     0x00ae,
2067
     0x2015,
2068
     0x00b0,
2069
     0x00b1,
2070
     0x00b2,
2071
     0x00b3,
2072
     0x0384,
2073
     0x00b5,
2074
     0x00b6,
2075
     0x00b7,
2076
     0x0388,
2077
     0x0389,
2078
     0x038a,
2079
     0x00bb,
2080
     0x038c,
2081
     0x00bd,
2082
     0x038e,
2083
     0x038f,
2084
     0x0390,
2085
     0x0391,
2086
     0x0392,
2087
     0x0393,
2088
     0x0394,
2089
     0x0395,
2090
     0x0396,
2091
     0x0397,
2092
     0x0398,
2093
     0x0399,
2094
     0x039a,
2095
     0x039b,
2096
     0x039c,
2097
     0x039d,
2098
     0x039e,
2099
     0x039f,
2100
     0x03a0,
2101
     0x03a1,
2102
     0xffff,
2103
     0x03a3,
2104
     0x03a4,
2105
     0x03a5,
2106
     0x03a6,
2107
     0x03a7,
2108
     0x03a8,
2109
     0x03a9,
2110
     0x03aa,
2111
     0x03ab,
2112
     0x03ac,
2113
     0x03ad,
2114
     0x03ae,
2115
     0x03af,
2116
     0x03b0,
2117
     0x03b1,
2118
     0x03b2,
2119
     0x03b3,
2120
     0x03b4,
2121
     0x03b5,
2122
     0x03b6,
2123
     0x03b7,
2124
     0x03b8,
2125
     0x03b9,
2126
     0x03ba,
2127
     0x03bb,
2128
     0x03bc,
2129
     0x03bd,
2130
     0x03be,
2131
     0x03bf,
2132
     0x03c0,
2133
     0x03c1,
2134
     0x03c2,
2135
     0x03c3,
2136
     0x03c4,
2137
     0x03c5,
2138
     0x03c6,
2139
     0x03c7,
2140
     0x03c8,
2141
     0x03c9,
2142
     0x03ca,
2143
     0x03cb,
2144
     0x03cc,
2145
     0x03cd,
2146
     0x03ce,
2147
     0xffff}
2148
};
2149
/********************************************
2150
 * windows-1256 Arabic                      *
2151
 ********************************************/
2152
static const pl_symbol_map_t map_9V_unicode = {
2153
    map_header(9, 'V', plgv_Unicode, 2, 0, 0, 0, 0, 0xc0, 0, 0, 0,
2154
               PLGV_U2M_MAPPING),
2155
    {
2156
     0x0000,
2157
     0x0001,
2158
     0x0002,
2159
     0x0003,
2160
     0x0004,
2161
     0x0005,
2162
     0x0006,
2163
     0x0007,
2164
     0x0008,
2165
     0x0009,
2166
     0x000a,
2167
     0x000b,
2168
     0x000c,
2169
     0x000d,
2170
     0x000e,
2171
     0x000f,
2172
     0x0010,
2173
     0x0011,
2174
     0x0012,
2175
     0x0013,
2176
     0x0014,
2177
     0x0015,
2178
     0x0016,
2179
     0x0017,
2180
     0x0018,
2181
     0x0019,
2182
     0x001a,
2183
     0x001b,
2184
     0x001c,
2185
     0x001d,
2186
     0x001e,
2187
     0x001f,
2188
     0x0020,
2189
     0x0021,
2190
     0x0022,
2191
     0x0023,
2192
     0x0024,
2193
     0x0025,
2194
     0x0026,
2195
     0x0027,
2196
     0x0028,
2197
     0x0029,
2198
     0x002a,
2199
     0x002b,
2200
     0x002c,
2201
     0x002d,
2202
     0x002e,
2203
     0x002f,
2204
     0x0030,
2205
     0x0031,
2206
     0x0032,
2207
     0x0033,
2208
     0x0034,
2209
     0x0035,
2210
     0x0036,
2211
     0x0037,
2212
     0x0038,
2213
     0x0039,
2214
     0x003a,
2215
     0x003b,
2216
     0x003c,
2217
     0x003d,
2218
     0x003e,
2219
     0x003f,
2220
     0x0040,
2221
     0x0041,
2222
     0x0042,
2223
     0x0043,
2224
     0x0044,
2225
     0x0045,
2226
     0x0046,
2227
     0x0047,
2228
     0x0048,
2229
     0x0049,
2230
     0x004a,
2231
     0x004b,
2232
     0x004c,
2233
     0x004d,
2234
     0x004e,
2235
     0x004f,
2236
     0x0050,
2237
     0x0051,
2238
     0x0052,
2239
     0x0053,
2240
     0x0054,
2241
     0x0055,
2242
     0x0056,
2243
     0x0057,
2244
     0x0058,
2245
     0x0059,
2246
     0x005a,
2247
     0x005b,
2248
     0x005c,
2249
     0x005d,
2250
     0x005e,
2251
     0x005f,
2252
     0x0060,
2253
     0x0061,
2254
     0x0062,
2255
     0x0063,
2256
     0x0064,
2257
     0x0065,
2258
     0x0066,
2259
     0x0067,
2260
     0x0068,
2261
     0x0069,
2262
     0x006a,
2263
     0x006b,
2264
     0x006c,
2265
     0x006d,
2266
     0x006e,
2267
     0x006f,
2268
     0x0070,
2269
     0x0071,
2270
     0x0072,
2271
     0x0073,
2272
     0x0074,
2273
     0x0075,
2274
     0x0076,
2275
     0x0077,
2276
     0x0078,
2277
     0x0079,
2278
     0x007a,
2279
     0x007b,
2280
     0x007c,
2281
     0x007d,
2282
     0x007e,
2283
     0x007f,
2284
     0x20ac,
2285
     0x067e,
2286
     0x201a,
2287
     0x0192,
2288
     0x201e,
2289
     0x2026,
2290
     0x2020,
2291
     0x2021,
2292
     0x02c6,
2293
     0x2030,
2294
     0x0679,
2295
     0x2039,
2296
     0x0152,
2297
     0x0686,
2298
     0x0698,
2299
     0x0688,
2300
     0x06af,
2301
     0x2018,
2302
     0x2019,
2303
     0x201c,
2304
     0x201d,
2305
     0x2022,
2306
     0x2013,
2307
     0x2014,
2308
     0x06a9,
2309
     0x2122,
2310
     0x0691,
2311
     0x203a,
2312
     0x0153,
2313
     0x200c,
2314
     0x200d,
2315
     0x06ba,
2316
     0x00a0,
2317
     0x060c,
2318
     0x00a2,
2319
     0x00a3,
2320
     0x00a4,
2321
     0x00a5,
2322
     0x00a6,
2323
     0x00a7,
2324
     0x00a8,
2325
     0x00a9,
2326
     0x06be,
2327
     0x00ab,
2328
     0x00ac,
2329
     0x00ad,
2330
     0x00ae,
2331
     0x00af,
2332
     0x00b0,
2333
     0x00b1,
2334
     0x00b2,
2335
     0x00b3,
2336
     0x00b4,
2337
     0x00b5,
2338
     0x00b6,
2339
     0x00b7,
2340
     0x00b8,
2341
     0x00b9,
2342
     0x061b,
2343
     0x00bb,
2344
     0x00bc,
2345
     0x00bd,
2346
     0x00be,
2347
     0x061f,
2348
     0x06c1,
2349
     0x0621,
2350
     0x0622,
2351
     0x0623,
2352
     0x0624,
2353
     0x0625,
2354
     0x0626,
2355
     0x0627,
2356
     0x0628,
2357
     0x0629,
2358
     0x062a,
2359
     0x062b,
2360
     0x062c,
2361
     0x062d,
2362
     0x062e,
2363
     0x062f,
2364
     0x0630,
2365
     0x0631,
2366
     0x0632,
2367
     0x0633,
2368
     0x0634,
2369
     0x0635,
2370
     0x0636,
2371
     0x00d7,
2372
     0x0637,
2373
     0x0638,
2374
     0x0639,
2375
     0x063a,
2376
     0x0640,
2377
     0x0641,
2378
     0x0642,
2379
     0x0643,
2380
     0x00e0,
2381
     0x0644,
2382
     0x00e2,
2383
     0x0645,
2384
     0x0646,
2385
     0x0647,
2386
     0x0648,
2387
     0x00e7,
2388
     0x00e8,
2389
     0x00e9,
2390
     0x00ea,
2391
     0x00eb,
2392
     0x0649,
2393
     0x064a,
2394
     0x00ee,
2395
     0x00ef,
2396
     0x064b,
2397
     0x064c,
2398
     0x064d,
2399
     0x064e,
2400
     0x00f4,
2401
     0x064f,
2402
     0x0650,
2403
     0x00f7,
2404
     0x0651,
2405
     0x00f9,
2406
     0x0652,
2407
     0x00fb,
2408
     0x00fc,
2409
     0x200e,
2410
     0x200f,
2411
     0x06d2}
2412
};
2413
2414
/*******************************************
2415
 * ISO 8859/9 Latin 5 (E5) Unicode mapping *
2416
 *******************************************/
2417
static const pl_symbol_map_t map_5N_unicode = {
2418
    map_header(5, 'N', plgv_Unicode, 1, 0, 0, 0, 0, 0xd0, 0, 0, 0,
2419
               PLGV_U2M_MAPPING),
2420
    {
2421
     /*0x00 */
2422
     0x0000, 0x0002, 0x0001, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
2423
     0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
2424
     /*0x10 */
2425
     0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
2426
     0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
2427
     /*0x20 */
2428
     0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
2429
     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
2430
     /*0x30 */
2431
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
2432
     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
2433
     /*0x40 */
2434
     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
2435
     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
2436
     /*0x50 */
2437
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
2438
     0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
2439
     /*0x60 */
2440
     0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
2441
     0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
2442
     /*0x70 */
2443
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
2444
     0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x02dc, 0x2592,
2445
     /*0x80 */
2446
     0x20ac, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
2447
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
2448
     /*0x90 */
2449
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
2450
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
2451
     /*0xa0 */
2452
     0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
2453
     0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x002d, 0x00ae, 0x02c9,
2454
     /*0xb0 */
2455
     0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x2219,
2456
     0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
2457
     /*0xc0 */
2458
     0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
2459
     0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
2460
     /*0xd0 */
2461
     0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
2462
     0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df,
2463
     /*0xe0 */
2464
     0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
2465
     0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
2466
     /*0xf0 */
2467
     0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
2468
     0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff}
2469
};
2470
2471
/********************************************
2472
 * Windows 3.1 Latin 5 (WT) Unicode mapping *
2473
 ********************************************/
2474
static const pl_symbol_map_t map_5T_unicode = {
2475
    map_header(5, 'T', plgv_Unicode, 2, 0, 0, 0, 0, 0xd0, 0, 0, 0,
2476
               PLGV_U2M_MAPPING),
2477
    {
2478
     /*0x00 */
2479
     0x0000, 0x0002, 0x0001, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
2480
     0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
2481
     /*0x10 */
2482
     0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
2483
     0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
2484
     /*0x20 */
2485
     0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
2486
     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
2487
     /*0x30 */
2488
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
2489
     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
2490
     /*0x40 */
2491
     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
2492
     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
2493
     /*0x50 */
2494
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
2495
     0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
2496
     /*0x60 */
2497
     0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
2498
     0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
2499
     /*0x70 */
2500
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
2501
     0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2592,
2502
     /*0x80 */
2503
     0x20ac, 0xffff, 0x002c, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
2504
     0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0xffff, 0xffff, 0xffff,
2505
     /*0x90 */
2506
     0xffff, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
2507
     0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0xffff, 0xffff, 0x0178,
2508
     /*0xa0 */
2509
     0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
2510
     0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
2511
     /*0xb0 */
2512
     0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x2219,
2513
     0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
2514
     /*0xc0 */
2515
     0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
2516
     0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
2517
     /*0xd0 */
2518
     0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
2519
     0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df,
2520
     /*0xe0 */
2521
     0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
2522
     0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
2523
     /*0xf0 */
2524
     0x20ac, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
2525
     0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff}
2526
};
2527
2528
/*******************************
2529
 * Math-8 (M8) Unicode mapping *
2530
 *******************************/
2531
static const pl_symbol_map_t map_8M_unicode = {
2532
    map_header(8, 'M', plgv_Unicode, 1, 0, 0, 0, 4, 0, 0, 0, 0,
2533
               PLGV_U2M_MAPPING),
2534
    {
2535
     /*0x00 */
2536
     0x0000, 0x0002, 0x0001, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
2537
     0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
2538
     /*0x10 */
2539
     0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
2540
     0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
2541
     /*0x20 */
2542
     0x0020, 0xefbf, 0x2033, 0x00b0, 0x221e, 0x00f7, 0x221d, 0x2032,
2543
     0x0028, 0x0029, 0x00d7, 0x002b, 0x002c, 0x2212, 0x002e, 0x002f,
2544
     /*0x30 */
2545
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
2546
     0x0038, 0x0039, 0x212f, 0xefec, 0x003c, 0x003d, 0x003e, 0x2248,
2547
     /*0x40 */
2548
     0x2234, 0x0041, 0x0042, 0x0393, 0x2206, 0x0045, 0x005a, 0x0048,
2549
     0x0398, 0x0049, 0x004b, 0x039b, 0x004d, 0x004e, 0x039e, 0x004f,
2550
     /*0x50 */
2551
     0x03a0, 0x0050, 0x03a3, 0x0054, 0x03a5, 0x03a6, 0x0058, 0x03a8,
2552
     0x03a9, 0x2207, 0x2202, 0x03c2, 0x2264, 0x2260, 0x2265, 0xefeb,
2553
     /*0x60 */
2554
     0x2235, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7,
2555
     0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf,
2556
     /*0x70 */
2557
     0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8,
2558
     0x03c9, 0x03d1, 0x03d5, 0x03d6, 0x2243, 0x2261, 0x2262, 0x2592,
2559
     /*0x80 */
2560
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
2561
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
2562
     /*0x90 */
2563
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
2564
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
2565
     /*0xa0 */
2566
     0xffff, 0x2191, 0x2192, 0x2193, 0x2190, 0x21d1, 0x21d2, 0x21d3,
2567
     0x21d0, 0x2195, 0x2194, 0x21d5, 0x21d4, 0x21c4, 0x21c6, 0xefe9,
2568
     /*0xb0 */
2569
     0xefea, 0x2200, 0x2203, 0x22a4, 0x22a5, 0x222a, 0x2229, 0x2208,
2570
     0x220b, 0x2209, 0x2282, 0x2283, 0x2284, 0x2285, 0x2286, 0x2287,
2571
     /*0xc0 */
2572
     0x2295, 0x2299, 0x2297, 0x2296, 0x2298, 0x2227, 0x2228, 0x22bb,
2573
     0x00ac, 0x2218, 0x2219, 0x2022, 0x25cf, 0x20dd, 0x2020, 0x2021,
2574
     /*0xd0 */
2575
     0x00c5, 0x22a3, 0x22a2, 0x221f, 0x220d, 0x222b, 0x222e, 0x2220,
2576
     0x2205, 0x2135, 0x2136, 0x2137, 0x212d, 0x2111, 0x211c, 0x2128,
2577
     /*0xe0 */
2578
     0xefe7, 0xefe6, 0xefe3, 0xefe2, 0xefe1, 0x2320, 0xefd4, 0x2321,
2579
     0xefd3, 0x2225, 0xefd2, 0xefd1, 0xefe8, 0xefcb, 0x2217, 0x2245,
2580
     /*0xf0 */
2581
     0xefe5, 0xefe4, 0xefe0, 0xefdf, 0xefde, 0xefdd, 0x2223, 0xefdc,
2582
     0xefd0, 0xefcf, 0xefce, 0xefcd, 0xefcc, 0x2213, 0x00b1, 0xffff}
2583
};
2584
2585
/*******************************
2586
 * PI Font(PI) Unicode mapping *
2587
 *******************************/
2588
static const pl_symbol_map_t map_15U_unicode = {
2589
    map_header(15, 'U', plgv_Unicode, 1, 0, 0, 0, 4, 0, 0, 0, 0,
2590
               PLGV_U2M_MAPPING),
2591
    {
2592
     /*0x00 */
2593
     0x0000, 0x0002, 0x0001, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
2594
     0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
2595
     /*0x10 */
2596
     0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
2597
     0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
2598
     /*0x20 */
2599
     0x0020, 0xffff, 0x201e, 0x201a, 0x201c, 0x201d, 0x2018, 0x2019,
2600
     0x2329, 0x232a, 0x2122, 0x2120, 0x00ae, 0x00a9, 0xefff, 0xffff,
2601
     /*0x30 */
2602
     0x02c9, 0x02d8, 0x02c7, 0x02d9, 0x2197, 0x2198, 0x2199, 0x2196,
2603
     0x25b5, 0x25b9, 0x25bf, 0x25c3, 0x226a, 0x00a7, 0x226b, 0x00b6,
2604
     /*0x40 */
2605
     0x2237, 0xefca, 0xffff, 0xffff, 0xffff, 0xffff, 0xefd5, 0xffff,
2606
     0x210f, 0xffff, 0xffff, 0xffff, 0x2112, 0x2113, 0xffff, 0xffff,
2607
     /*0x50 */
2608
     0xeffe, 0x2118, 0x211e, 0x2211, 0xffff, 0xffff, 0xffff, 0xffff,
2609
     0xffff, 0xffff, 0xffff, 0x301a, 0xefc9, 0x301b, 0x2039, 0x203a,
2610
     /*0x60 */
2611
     0x250c, 0x2514, 0x256d, 0x2570, 0x253c, 0x251c, 0x2500, 0xefc8,
2612
     0xefc7, 0xefc6, 0xefc5, 0xefc4, 0xeffc, 0x25c7, 0xffff, 0xffff,
2613
     /*0x70 */
2614
     0x2510, 0x2518, 0x256e, 0x256f, 0x252c, 0x2524, 0x2534, 0x2502,
2615
     0xefc3, 0xefc2, 0xefc1, 0xefc0, 0xeffb, 0x25c6, 0xffff, 0x2592,
2616
     /*0x80 */
2617
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
2618
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
2619
     /*0x90 */
2620
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
2621
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
2622
     /*0xa0 */
2623
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
2624
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
2625
     /*0xb0 */
2626
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
2627
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
2628
     /*0xc0 */
2629
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
2630
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
2631
     /*0xd0 */
2632
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
2633
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
2634
     /*0xe0 */
2635
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
2636
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
2637
     /*0xf0 */
2638
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
2639
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff}
2640
};
2641
2642
/********************************
2643
 * PS Math (MS) Unicode mapping *
2644
 ********************************/
2645
static const pl_symbol_map_t map_5M_unicode = {
2646
    map_header(5, 'M', plgv_Unicode, 1, 0, 0, 0, 4, 0, 0, 0, 0,
2647
               PLGV_U2M_MAPPING),
2648
    {
2649
     /*0x00 */
2650
     0x0000, 0x0002, 0x0001, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
2651
     0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
2652
     /*0x10 */
2653
     0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
2654
     0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
2655
     /*0x20 */
2656
     0x0020, 0x0021, 0x2200, 0x0023, 0x2203, 0x0025, 0x0026, 0x220d,
2657
     0x0028, 0x0029, 0x2217, 0x002b, 0x002c, 0x2212, 0x002e, 0x002f,
2658
     /*0x30 */
2659
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
2660
     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
2661
     /*0x40 */
2662
     0x2245, 0x0041, 0x0042, 0x0058, 0x2206, 0x0045, 0x03a6, 0x0393,
2663
     0x0048, 0x0049, 0x03d1, 0x004b, 0x039b, 0x004d, 0x004e, 0x004f,
2664
     /*0x50 */
2665
     0x03a0, 0x0398, 0x0050, 0x03a3, 0x0054, 0x0059, 0x03c2, 0x03a9,
2666
     0x039e, 0x03a8, 0x005a, 0x005b, 0x2234, 0x005d, 0x22a5, 0xefeb,
2667
     /*0x60 */
2668
     0xefea, 0x03b1, 0x03b2, 0x03c7, 0x03b4, 0x03b5, 0x03c6, 0x03b3,
2669
     0x03b7, 0x03b9, 0x03d5, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03bf,
2670
     /*0x70 */
2671
     0x03c0, 0x03b8, 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03d6, 0x03c9,
2672
     0x03be, 0x03c8, 0x03b6, 0x007b, 0x007c, 0x007d, 0x007e, 0xffff,
2673
     /*0x80 */
2674
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
2675
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
2676
     /*0x90 */
2677
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
2678
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
2679
     /*0xa0 */
2680
     0xffff, 0x03a5, 0x2032, 0x2264, 0x2215, 0x221e, 0x0192, 0x2663,
2681
     0x2666, 0x2665, 0x2660, 0x2194, 0x2190, 0x2191, 0x2192, 0x2193,
2682
     /*0xb0 */
2683
     0x00b0, 0x00b1, 0x2033, 0x2265, 0x00d7, 0x221d, 0x2202, 0x2022,
2684
     0x00f7, 0x2260, 0x2261, 0x2248, 0x2026, 0x2223, 0xefe8, 0x21b5,
2685
     /*0xc0 */
2686
     0x2135, 0x2111, 0x211c, 0x2118, 0x2297, 0x2295, 0x2205, 0x2229,
2687
     0x222a, 0x2283, 0x2287, 0x2284, 0x2282, 0x2286, 0x2208, 0x2209,
2688
     /*0xd0 */
2689
     0x2220, 0x2207, 0xefdb, 0xefda, 0xefd9, 0x220f, 0xefbf, 0x2219,
2690
     0x00ac, 0x2227, 0x2228, 0x21d4, 0x21d0, 0x21d1, 0x21d2, 0x21d3,
2691
     /*0xe0 */
2692
     0x25ca, 0x2329, 0xefd8, 0xefd7, 0xefd6, 0x2211, 0xefe3, 0xefdd,
2693
     0xefe1, 0xefe7, 0x2223, 0xefe6, 0xefe3, 0xefe2, 0xefe1, 0xefdd,
2694
     /*0xf0 */
2695
     0x20ac, 0x232a, 0x222b, 0x2320, 0xefdd, 0x2321, 0xefe0, 0xefdd,
2696
     0xefde, 0xefe5, 0x2223, 0xefe4, 0xefe0, 0xefdf, 0xefde, 0xffff}
2697
};
2698
2699
/************************************
2700
 * Symbol Font (AS) Unicode mapping *
2701
 ************************************/
2702
static const pl_symbol_map_t map_19M_unicode = {
2703
    map_header(19, 'M', plgv_Unicode, 1, 0, 0, 0, 4, 0, 0, 0, 0,
2704
               PLGV_U2M_MAPPING),
2705
    {
2706
     /*00 */
2707
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2708
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2709
     /*10 */
2710
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2711
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2712
     /*20 */
2713
     0x0020, 0xf021, 0xf022, 0xf023, 0xf024, 0xf025, 0xf026, 0xf027,
2714
     0xf028, 0xf029, 0xf02a, 0xf02b, 0xf02c, 0xf02d, 0xf02e, 0xf02f,
2715
     /*30 */
2716
     0xf030, 0xf031, 0xf032, 0xf033, 0xf034, 0xf035, 0xf036, 0xf037,
2717
     0xf038, 0xf039, 0xf03a, 0xf03b, 0xf03c, 0xf03d, 0xf03e, 0xf03f,
2718
     /*40 */
2719
     0xf040, 0xf041, 0xf042, 0xf043, 0xf044, 0xf045, 0xf046, 0xf047,
2720
     0xf048, 0xf049, 0xf04a, 0xf04b, 0xf04c, 0xf04d, 0xf04e, 0xf04f,
2721
     /*50 */
2722
     0xf050, 0xf051, 0xf052, 0xf053, 0xf054, 0xf055, 0xf056, 0xf057,
2723
     0xf058, 0xf059, 0xf05a, 0xf05b, 0xf05c, 0xf05d, 0xf05e, 0xf05f,
2724
     /*60 */
2725
     0xf060, 0xf061, 0xf062, 0xf063, 0xf064, 0xf065, 0xf066, 0xf067,
2726
     0xf068, 0xf069, 0xf06a, 0xf06b, 0xf06c, 0xf06d, 0xf06e, 0xf06f,
2727
     /*70 */
2728
     0xf070, 0xf071, 0xf072, 0xf073, 0xf074, 0xf075, 0xf076, 0xf077,
2729
     0xf078, 0xf079, 0xf07a, 0xf07b, 0xf07c, 0xf07d, 0xf07e, 0xf07f,
2730
     /*80 */
2731
     0xf080, 0xf081, 0xf082, 0xf083, 0xf084, 0xf085, 0xf086, 0xf087,
2732
     0xf088, 0xf089, 0xf08a, 0xf08b, 0xf08c, 0xf08d, 0xf08e, 0xf08f,
2733
     /*90 */
2734
     0xf090, 0xf091, 0xf092, 0xf093, 0xf094, 0xf095, 0xf096, 0xf097,
2735
     0xf098, 0xf099, 0xf09a, 0xf09b, 0xf09c, 0xf09d, 0xf09e, 0xf09f,
2736
     /*a0 */
2737
     0xf0a0, 0xf0a1, 0xf0a2, 0xf0a3, 0xf0a4, 0xf0a5, 0xf0a6, 0xf0a7,
2738
     0xf0a8, 0xf0a9, 0xf0aa, 0xf0ab, 0xf0ac, 0xf0ad, 0xf0ae, 0xf0af,
2739
     /*b0 */
2740
     0xf0b0, 0xf0b1, 0xf0b2, 0xf0b3, 0xf0b4, 0xf0b5, 0xf0b6, 0xf0b7,
2741
     0xf0b8, 0xf0b9, 0xf0ba, 0xf0bb, 0xf0bc, 0xf0bd, 0xf0be, 0xf0bf,
2742
     /*c0 */
2743
     0xf0c0, 0xf0c1, 0xf0c2, 0xf0c3, 0xf0c4, 0xf0c5, 0xf0c6, 0xf0c7,
2744
     0xf0c8, 0xf0c9, 0xf0ca, 0xf0cb, 0xf0cc, 0xf0cd, 0xf0ce, 0xf0cf,
2745
     /*d0 */
2746
     0xf0d0, 0xf0d1, 0xf0d2, 0xf0d3, 0xf0d4, 0xf0d5, 0xf0d6, 0xf0d7,
2747
     0xf0d8, 0xf0d9, 0xf0da, 0xf0db, 0xf0dc, 0xf0dd, 0xf0de, 0xf0df,
2748
     /*e0 */
2749
     0xf0e0, 0xf0e1, 0xf0e2, 0xf0e3, 0xf0e4, 0xf0e5, 0xf0e6, 0xf0e7,
2750
     0xf0e8, 0xf0e9, 0xf0ea, 0xf0eb, 0xf0ec, 0xf0ed, 0xf0ee, 0xf0ef,
2751
     /*f0 */
2752
     0xf0f0, 0xf0f1, 0xf0f2, 0xf0f3, 0xf0f4, 0xf0f5, 0xf0f6, 0xf0f7,
2753
     0xf0f8, 0xf0f9, 0xf0fa, 0xf0fb, 0xf0fc, 0xf0fd, 0xf0fe, 0xf0ff,
2754
     }
2755
};
2756
2757
/***********************************
2758
 * Wingdings Font (L$) MSL mapping *
2759
 ***********************************/
2760
static const pl_symbol_map_t map_579L_unicode = {
2761
    map_header(579, 'L', plgv_Unicode, 2, 0, 0, 0, 1, 0, 0, 0, 0,
2762
               PLGV_U2M_MAPPING),
2763
    {
2764
     /*00 */
2765
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2766
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2767
     /*10 */
2768
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2769
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2770
     /*20 */
2771
     0x0020, 0xf021, 0xf022, 0xf023, 0xf024, 0xf025, 0xf026, 0xf027,
2772
     0xf028, 0xf029, 0xf02a, 0xf02b, 0xf02c, 0xf02d, 0xf02e, 0xf02f,
2773
     /*30 */
2774
     0xf030, 0xf031, 0xf032, 0xf033, 0xf034, 0xf035, 0xf036, 0xf037,
2775
     0xf038, 0xf039, 0xf03a, 0xf03b, 0xf03c, 0xf03d, 0xf03e, 0xf03f,
2776
     /*40 */
2777
     0xf040, 0xf041, 0xf042, 0xf043, 0xf044, 0xf045, 0xf046, 0xf047,
2778
     0xf048, 0xf049, 0xf04a, 0xf04b, 0xf04c, 0xf04d, 0xf04e, 0xf04f,
2779
     /*50 */
2780
     0xf050, 0xf051, 0xf052, 0xf053, 0xf054, 0xf055, 0xf056, 0xf057,
2781
     0xf058, 0xf059, 0xf05a, 0xf05b, 0xf05c, 0xf05d, 0xf05e, 0xf05f,
2782
     /*60 */
2783
     0xf060, 0xf061, 0xf062, 0xf063, 0xf064, 0xf065, 0xf066, 0xf067,
2784
     0xf068, 0xf069, 0xf06a, 0xf06b, 0xf06c, 0xf06d, 0xf06e, 0xf06f,
2785
     /*70 */
2786
     0xf070, 0xf071, 0xf072, 0xf073, 0xf074, 0xf075, 0xf076, 0xf077,
2787
     0xf078, 0xf079, 0xf07a, 0xf07b, 0xf07c, 0xf07d, 0xf07e, 0xf07f,
2788
     /*80 */
2789
     0xf080, 0xf081, 0xf082, 0xf083, 0xf084, 0xf085, 0xf086, 0xf087,
2790
     0xf088, 0xf089, 0xf08a, 0xf08b, 0xf08c, 0xf08d, 0xf08e, 0xf08f,
2791
     /*90 */
2792
     0xf090, 0xf091, 0xf092, 0xf093, 0xf094, 0xf095, 0xf096, 0xf097,
2793
     0xf098, 0xf099, 0xf09a, 0xf09b, 0xf09c, 0xf09d, 0xf09e, 0xf09f,
2794
     /*a0 */
2795
     0xf0a0, 0xf0a1, 0xf0a2, 0xf0a3, 0xf0a4, 0xf0a5, 0xf0a6, 0xf0a7,
2796
     0xf0a8, 0xf0a9, 0xf0aa, 0xf0ab, 0xf0ac, 0xf0ad, 0xf0ae, 0xf0af,
2797
     /*b0 */
2798
     0xf0b0, 0xf0b1, 0xf0b2, 0xf0b3, 0xf0b4, 0xf0b5, 0xf0b6, 0xf0b7,
2799
     0xf0b8, 0xf0b9, 0xf0ba, 0xf0bb, 0xf0bc, 0xf0bd, 0xf0be, 0xf0bf,
2800
     /*c0 */
2801
     0xf0c0, 0xf0c1, 0xf0c2, 0xf0c3, 0xf0c4, 0xf0c5, 0xf0c6, 0xf0c7,
2802
     0xf0c8, 0xf0c9, 0xf0ca, 0xf0cb, 0xf0cc, 0xf0cd, 0xf0ce, 0xf0cf,
2803
     /*d0 */
2804
     0xf0d0, 0xf0d1, 0xf0d2, 0xf0d3, 0xf0d4, 0xf0d5, 0xf0d6, 0xf0d7,
2805
     0xf0d8, 0xf0d9, 0xf0da, 0xf0db, 0xf0dc, 0xf0dd, 0xf0de, 0xf0df,
2806
     /*e0 */
2807
     0xf0e0, 0xf0e1, 0xf0e2, 0xf0e3, 0xf0e4, 0xf0e5, 0xf0e6, 0xf0e7,
2808
     0xf0e8, 0xf0e9, 0xf0ea, 0xf0eb, 0xf0ec, 0xf0ed, 0xf0ee, 0xf0ef,
2809
     /*f0 */
2810
     0xf0f0, 0xf0f1, 0xf0f2, 0xf0f3, 0xf0f4, 0xf0f5, 0xf0f6, 0xf0f7,
2811
     0xf0f8, 0xf0f9, 0xf0fa, 0xf0fb, 0xf0fc, 0xf0fd, 0xf0fe, 0xf0ff,
2812
     }
2813
};
2814
2815
/*****************************************
2816
 * PS ITC Zapf Dingbats (DS) MSL mapping *
2817
 *****************************************/
2818
static const pl_symbol_map_t map_10L_msl = {
2819
    map_header(10, 'L', plgv_MSL, 1, 0, 0, 0, 1, 0, 0, 0, 0, PLGV_NO_MAPPING),
2820
    {
2821
     /*00 */
2822
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2823
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2824
     /*10 */
2825
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2826
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2827
     /*20 */
2828
     ffff, 2109, 2096, 2120, 2497, 2498, 2315, 2458,
2829
     2013, 2108, 2095, 2295, 2313, 2515, 2499, 2307,
2830
     /*30 */
2831
     2710, 2324, 2121, 2010, 2210, 2286, 2254, 2027,
2832
     2077, 2444, 2054, 2488, 2456, 2044, 2076, 2476,
2833
     /*40 */
2834
     2230, 2411, 2014, 2472, 2478, 2502, 2448, 2011,
2835
     2051, 2729, 2052, 2047, 2032, 2060, 2078, 2092,
2836
     /*50 */
2837
     2058, 2256, 2252, 2484, 2447, 2479, 2046, 2090,
2838
     2240, 2739, 2452, 2279, 2483, 2430, 2290, 2451,
2839
     /*60 */
2840
     2460, 2288, 2490, 2258, 2464, 2492, 2432, 2260,
2841
     2292, 2072, 2264, 2232, 2091, 2116, 2291, 2282,
2842
     /*70 */
2843
     2325, 2250, 2308, 2048, 2248, 2491, 2089, 2281,
2844
     2480, 2486, 2454, 2100, 2113, 2501, 2517, ffff,
2845
     /*80 */
2846
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2847
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2848
     /*90 */
2849
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2850
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2851
     /*a0 */
2852
     ffff, 2500, 2428, 2410, 2414, 2213, 2317, 2300,
2853
     2445, 2433, 2453, 2434, 2216, 217, 2218, 2219,
2854
     /*b0 */
2855
     2220, 2221, 2222, 2223, 2224, 2215, 2200, 2231,
2856
     2202, 2203, 2204, 2261, 2205, 2209, 2207, 2208,
2857
     /*c0 */
2858
     2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023,
2859
     2024, 2015, 2000, 2031, 2002, 2003, 2004, 2061,
2860
     /*d0 */
2861
     2005, 2009, 2007, 2008, 2306, 2042, 2043, 2075,
2862
     2233, 2305, 2310, 2053, 2037, 2070, 2071, 2520,
2863
     /*e0 */
2864
     2504, 2001, 2267, 2326, 2235, 2055, 2087, 2041,
2865
     2262, 2441, 2523, 2442, 2507, 2443, 2508, 2475,
2866
     /*f0 */
2867
     ffff, 2524, 2412, 2234, 2265, 2287, 2327, 2245,
2868
     2105, 2309, 2285, 2253, 2242, 2104, 2212, 2003}
2869
};
2870
2871
/*************************************************
2872
 * ITC Zapf Dingbats series 100 (D1) MSL mapping *
2873
 *************************************************/
2874
static const pl_symbol_map_t map_11L_msl = {
2875
    map_header(11, 'L', plgv_MSL, 1, 0, 0, 0, 1, 0, 0, 0, 0, PLGV_NO_MAPPING),
2876
    {
2877
     /*00 */
2878
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2879
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2880
     /*10 */
2881
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2882
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2883
     /*20 */
2884
     ffff, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
2885
     2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014,
2886
     /*30 */
2887
     2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022,
2888
     2023, 2024, 2025, 2026, 2229, 2028, 2029, 2030,
2889
     /*40 */
2890
     2031, 2032, 2038, 2034, 2323, 2036, 2037, 2070,
2891
     2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046,
2892
     /*50 */
2893
     2047, 2048, 2049, 2050, 2051, 2052, 2053, 2054,
2894
     2055, 2064, 2057, 2058, 2059, 2060, 2061, 2062,
2895
     /*60 */
2896
     2063, 2088, 2065, 2066, 2067, 2068, 2069, 2038,
2897
     2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078,
2898
     /*70 */
2899
     2079, 2080, 2081, 2082, 2083, 2046, 2085, 2086,
2900
     2087, 2056, 2089, 2090, 2091, 2092, 2093, ffff,
2901
     /*80 */
2902
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2903
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2904
     /*90 */
2905
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2906
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2907
     /*a0 */
2908
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2909
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2910
     /*b0 */
2911
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2912
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2913
     /*c0 */
2914
     ffff, 2094, 2095, 2096, 2097, 2098, 2099, 2110,
2915
     2101, 2425, 2426, 2104, 2105, 2106, ffff, ffff,
2916
     /*d0 */
2917
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2918
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2919
     /*e0 */
2920
     ffff, 2495, 2108, 2109, 2110, 2111, 2112, 2113,
2921
     2114, 2115, 2116, 2117, 2118, 2119, ffff, ffff,
2922
     /*f0 */
2923
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2924
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff}
2925
};
2926
2927
/*************************************************
2928
 * ITC Zapf Dingbats series 200 (D2) MSL mapping *
2929
 *************************************************/
2930
static const pl_symbol_map_t map_12L_msl = {
2931
    map_header(12, 'L', plgv_MSL, 1, 0, 0, 0, 1, 0, 0, 0, 0, PLGV_NO_MAPPING),
2932
    {
2933
     /*00 */
2934
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2935
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2936
     /*10 */
2937
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2938
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2939
     /*20 */
2940
     ffff, 2200, 2201, 2202, 2203, 2204, 2205, 2206,
2941
     2207, 2208, 2209, 2210, 2211, 2212, 2213, 2214,
2942
     /*30 */
2943
     2215, 2216, 2217, 2218, 2219, 2220, 2221, 2222,
2944
     2223, 2224, 2225, 2226, 2239, 2228, 2229, 2230,
2945
     /*40 */
2946
     2231, 2232, 2233, 2234, 2235, 2236, 2237, 2238,
2947
     2273, 2240, 2241, 2242, 2243, 2244, 2245, 2246,
2948
     /*50 */
2949
     2247, 2248, 2249, 2250, 2251, 2252, 2253, 2254,
2950
     2255, 2256, 2257, 2258, 2259, 2260, 2261, 2262,
2951
     /*60 */
2952
     2263, 2264, 2265, 2266, 2267, 2268, 2269, 2270,
2953
     2271, 2739, 2241, 2274, 2275, 2276, 2277, 2430,
2954
     /*70 */
2955
     2279, 2280, 2281, 2282, 2251, 2284, 2285, 2286,
2956
     2287, 2288, 2289, 2290, 2291, 2292, 2293, ffff,
2957
     /*80 */
2958
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2959
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2960
     /*90 */
2961
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2962
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2963
     /*a0 */
2964
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2965
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2966
     /*b0 */
2967
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2968
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2969
     /*c0 */
2970
     ffff, 2294, 2295, 2296, 2297, 2298, 2299, 2300,
2971
     2301, 2302, 2303, 2304, 2305, 2306, ffff, ffff,
2972
     /*d0 */
2973
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2974
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2975
     /*e0 */
2976
     ffff, 2494, 2095, 2313, 2314, 2315, 2316, 2317,
2977
     2318, 2319, 2320, 2321, 2322, 2271, ffff, ffff,
2978
     /*f0 */
2979
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2980
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff}
2981
};
2982
2983
/*************************************************
2984
 * ITC Zapf Dingbats series 300 (D3) MSL mapping *
2985
 *************************************************/
2986
static const pl_symbol_map_t map_13L_msl = {
2987
    map_header(13, 'L', plgv_MSL, 1, 0, 0, 0, 1, 0, 0, 0, 0, PLGV_NO_MAPPING),
2988
    {
2989
     /*00 */
2990
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2991
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2992
     /*10 */
2993
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2994
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
2995
     /*20 */
2996
     ffff, 2400, 2401, 2402, 2403, 2404, 2405, 2406,
2997
     2407, 2408, 2409, 2410, 2411, 2412, 2413, 2414,
2998
     /*30 */
2999
     2415, 2416, 2417, 2418, 2419, 2420, 2421, 2422,
3000
     2423, 2424, 2425, 2426, 2427, 2428, 2429, 2430,
3001
     /*40 */
3002
     2431, 2432, 2433, 2434, 2435, 2436, 2437, 2438,
3003
     2439, 2440, 2441, 2442, 2443, 2444, 2445, 2446,
3004
     /*50 */
3005
     2477, 2488, 2499, 2450, 2451, 2452, 2453, 2454,
3006
     2455, 2456, 2457, 2458, 2459, 2460, 2461, 2462,
3007
     /*60 */
3008
     2463, 2464, 2465, 2466, 2467, 2468, 2469, 2470,
3009
     2471, 2427, 2473, 2474, 2475, 2476, 2477, 2478,
3010
     /*70 */
3011
     2479, 2480, 2481, 2482, 2483, 2484, 2485, 2486,
3012
     2487, 2488, 2457, 2490, 2491, 2492, 2493, ffff,
3013
     /*80 */
3014
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
3015
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
3016
     /*90 */
3017
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
3018
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
3019
     /*a0 */
3020
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
3021
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
3022
     /*b0 */
3023
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
3024
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
3025
     /*c0 */
3026
     ffff, 2494, 2107, 2496, 2497, 2498, 2499, 2500,
3027
     2501, 2502, 2252, 2504, 2505, 2506, ffff, ffff,
3028
     /*d0 */
3029
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
3030
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
3031
     /*e0 */
3032
     ffff, 2510, 2511, 2512, 2513, 2514, 2515, 2516,
3033
     2517, 2518, 2519, 2520, 2521, 2522, ffff, ffff,
3034
     /*f0 */
3035
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
3036
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff}
3037
};
3038
3039
/*************************************************
3040
 * Truetype OCR-B_10 *
3041
 *************************************************/
3042
static const pl_symbol_map_t map_1O_unicode = {
3043
    map_header(1, 'O', plgv_Unicode, 1, 0, 0, 0, 0, 0, 0, 0, 1,
3044
               PLGV_NO_MAPPING),
3045
    {
3046
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
3047
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
3048
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
3049
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
3050
     0xf020, 0xf021, 0xf022, 0xf023, 0xf024, 0xf025, 0xf026, 0xf027,
3051
     0xf028, 0xf029, 0xf02a, 0xf02b, 0xf02c, 0xf02d, 0xf02e, 0xf02f,
3052
     0xf030, 0xf031, 0xf032, 0xf033, 0xf034, 0xf035, 0xf036, 0xf037,
3053
     0xf038, 0xf039, 0xf03a, 0xf03b, 0xf03c, 0xf03d, 0xf03e, 0xf03f,
3054
     0xf040, 0xf041, 0xf042, 0xf043, 0xf044, 0xf045, 0xf046, 0xf047,
3055
     0xf048, 0xf049, 0xf04a, 0xf04b, 0xf04c, 0xf04d, 0xf04e, 0xf04f,
3056
     0xf050, 0xf051, 0xf052, 0xf053, 0xf054, 0xf055, 0xf056, 0xf057,
3057
     0xf058, 0xf059, 0xf05a, 0xf05b, 0xf05c, 0xf05d, 0xf05e, 0xf05f,
3058
     0xf060, 0xf061, 0xf062, 0xf063, 0xf064, 0xf065, 0xf066, 0xf067,
3059
     0xf068, 0xf069, 0xf06a, 0xf06b, 0xf06c, 0xf06d, 0xf06e, 0xf06f,
3060
     0xf070, 0xf071, 0xf072, 0xf073, 0xf074, 0xf075, 0xf076, 0xf077,
3061
     0xf078, 0xf079, 0xf07a, 0xf07b, 0xf07c, 0xf07d, 0xf07e, 0xf07f,
3062
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
3063
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
3064
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
3065
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
3066
     ffff, ffff, ffff, 0xf0a3, 0xf0a4, 0xf0a5, 0xf0a6, 0xf0a7,
3067
     0xf0a8, 0xf0a9, 0xf0aa, ffff, ffff, ffff, ffff, ffff,
3068
     ffff, ffff, 0xf0b2, 0xf0b3, 0xf0b4, 0xf0b5, 0xf0b6, 0xf0b7,
3069
     0xf0b8, 0xf0b9, 0xf0ba, ffff, ffff, ffff, ffff, ffff,
3070
     ffff, 0xf0c1, 0xf0c2, 0xf0c3, 0xf0c4, 0xf0c5, 0xf0c6, 0xf0c7,
3071
     0xf0c8, 0xf0c9, 0xf0ca, 0xf0cb, 0xf0cc, 0xf0cd, 0xf0ce, 0xf0cf,
3072
     0xf0d0, 0xf0d1, 0xf0d2, 0xf0d3, 0xf0d4, 0xf0d5, 0xf0d6, 0xf0d7,
3073
     0xf0d8, 0xf0d9, 0xf0da, 0xf0db, 0xf0dc, 0xf0dd, 0xf0de, 0xf0df,
3074
     ffff, ffff, ffff, ffff, ffff, 0xf0e5, 0xf0e6, ffff,
3075
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
3076
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
3077
     0xf0f8, ffff, ffff, ffff, ffff, ffff, ffff, ffff}
3078
};
3079
/*************************************************
3080
 * Windows Baltic
3081
 *************************************************/
3082
static const pl_symbol_map_t map_19L_unicode = {
3083
    map_header(19, 'L', plgv_Unicode, 1, 0, 0, 0, 0, 0xc0, 0x00, 0, 0,
3084
               PLGV_U2M_MAPPING),
3085
    {
3086
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3087
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3088
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3089
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3090
     0xffff, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
3091
     0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
3092
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
3093
     0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
3094
     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
3095
     0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
3096
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
3097
     0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
3098
     0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
3099
     0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
3100
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
3101
     0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x2592,
3102
     0x20AC, 0xffff, 0x201A, 0xffff, 0x201E, 0x2026, 0x2020, 0x2021,
3103
     0xffff, 0x2030, 0xffff, 0x2039, 0xffff, 0xEFF6, 0xEFF4, 0x00B8,
3104
     0xffff, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
3105
     0xffff, 0x2122, 0xffff, 0x203A, 0xffff, 0xEFEF, 0x02DB, 0xffff,
3106
     0xffff, 0xffff, 0x00A2, 0x00A3, 0x00A4, 0xffff, 0x00A6, 0x00A7,
3107
     0x00D8, 0x00A9, 0x0156, 0x00AB, 0x00AC, 0x002D, 0x00AE, 0x00C6,
3108
     0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x2219,
3109
     0x00F8, 0x00B9, 0x0157, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00E6,
3110
     0x0104, 0x012E, 0x0100, 0x0106, 0x00C4, 0x00C5, 0x0118, 0x0112,
3111
     0x010C, 0x00C9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012A, 0x013B,
3112
     0x0160, 0x0143, 0x0145, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7,
3113
     0x0172, 0x0141, 0x015A, 0x016A, 0x00DC, 0x017B, 0x017D, 0x00DF,
3114
     0x0105, 0x012F, 0x0101, 0x0107, 0x00E4, 0x00E5, 0x0119, 0x0113,
3115
     0x010D, 0x00E9, 0x017A, 0x0117, 0x0123, 0x0137, 0x012B, 0x013C,
3116
     0x0161, 0x0144, 0x0146, 0x00F3, 0x014D, 0x00F5, 0x00F6, 0x00F7,
3117
     0x0173, 0x0142, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017E, 0x02D9}
3118
};
3119
/*************************************************
3120
 * Ventura International
3121
 *************************************************/
3122
static const pl_symbol_map_t map_13J_unicode = {
3123
    map_header(13, 'J', plgv_Unicode, 1, 0, 0, 0, 0, 0xc0, 0x80, 0, 0,
3124
               PLGV_U2M_MAPPING),
3125
    {
3126
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3127
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3128
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3129
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3130
     0xffff, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x2019,
3131
     0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
3132
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
3133
     0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
3134
     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
3135
     0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
3136
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
3137
     0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
3138
     0x2018, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
3139
     0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
3140
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
3141
     0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0xffff,
3142
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3143
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3144
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3145
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3146
     0x201E, 0x00C0, 0x00C2, 0x00C8, 0x00CA, 0x00CB, 0x00CE, 0x00CF,
3147
     0x00A9, 0x00AE, 0x2122, 0x2039, 0x203A, 0x00D9, 0x00DB, 0xffff,
3148
     0x2030, 0x201C, 0x201D, 0x00B0, 0x00C7, 0x00E7, 0x00D1, 0x00F1,
3149
     0x00A1, 0x00BF, 0x00A4, 0x00A3, 0x00A5, 0x00A7, 0x0192, 0x00A2,
3150
     0x00E2, 0x00EA, 0x00F4, 0x00FB, 0x00E1, 0x00E9, 0x00F3, 0x00FA,
3151
     0x00E0, 0x00E8, 0x00F2, 0x00F9, 0x00E4, 0x00EB, 0x00F6, 0x00FC,
3152
     0x00C5, 0x00EE, 0x00D8, 0x00C6, 0x00E5, 0x00ED, 0x00F8, 0x00E6,
3153
     0x00C4, 0x00EC, 0x00D6, 0x00DC, 0x00C9, 0x00EF, 0x00DF, 0x00D4,
3154
     0x00C1, 0x00C3, 0x00E3, 0xffff, 0xffff, 0x00CD, 0x00CC, 0x00D3,
3155
     0x00D2, 0x00D5, 0x00F5, 0x0160, 0x0161, 0x00DA, 0x0178, 0x00FF,
3156
     0x0152, 0x0153, 0x00B6, 0x2020, 0x2021, 0x2014, 0x2013, 0xffff,
3157
     0xffff, 0x00AA, 0x00BA, 0x00AB, 0x2022, 0x00BB, 0xffff, 0x2026}
3158
};
3159
/*************************************************
3160
 * Ventura US
3161
 *************************************************/
3162
static const pl_symbol_map_t map_14J_unicode = {
3163
    map_header(14, 'J', plgv_Unicode, 1, 0, 0, 0, 0, 0xc0, 0x80, 0, 0,
3164
               PLGV_U2M_MAPPING),
3165
    {
3166
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3167
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3168
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3169
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3170
     0xffff, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x2019,
3171
     0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
3172
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
3173
     0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
3174
     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
3175
     0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
3176
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
3177
     0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
3178
     0x2018, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
3179
     0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
3180
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
3181
     0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0xffff,
3182
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3183
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3184
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3185
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3186
     0x201E, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3187
     0x00A9, 0x00AE, 0x2122, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3188
     0x2030, 0x201C, 0x201D, 0x00B0, 0xffff, 0xffff, 0xffff, 0xffff,
3189
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x00A7, 0xffff, 0x00A2,
3190
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3191
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3192
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3193
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3194
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3195
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3196
     0xffff, 0xffff, 0x00B6, 0x2020, 0x2021, 0x2014, 0x2013, 0xffff,
3197
     0xffff, 0xffff, 0xffff, 0xffff, 0x2022, 0xffff, 0xffff, 0x2026}
3198
};
3199
/*************************************************
3200
 * Ventura US
3201
 *************************************************/
3202
static const pl_symbol_map_t map_6M_unicode = {
3203
    map_header(6, 'M', plgv_Unicode, 1, 0, 0, 0, 0, 0xc0, 0x80, 0, 0,
3204
               PLGV_U2M_MAPPING),
3205
    {
3206
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3207
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3208
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3209
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3210
     0xffff, 0x0021, 0x2200, 0x0023, 0x2203, 0x0025, 0x0026, 0x220D,
3211
     0x0028, 0x0029, 0x2217, 0x002B, 0x002C, 0x2212, 0x002E, 0x002F,
3212
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
3213
     0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
3214
     0x2245, 0x0041, 0x0042, 0x0058, 0x2206, 0x0045, 0x03A6, 0x0393,
3215
     0x0048, 0x0049, 0x03D1, 0x004B, 0x039B, 0x004D, 0x004E, 0x004F,
3216
     0x03A0, 0x0398, 0x0050, 0x03A3, 0x0054, 0x0059, 0x03C2, 0x03A9,
3217
     0x039E, 0x03A8, 0x005A, 0x005B, 0x2234, 0x005D, 0x22A5, 0xEFEB,
3218
     0xEFEA, 0x03B1, 0x03B2, 0x03C7, 0x03B4, 0xEFEC, 0x03C6, 0x03B3,
3219
     0x03B7, 0x03B9, 0x03D5, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BF,
3220
     0x03C0, 0x03B8, 0x03C1, 0x03C3, 0x03C4, 0x03C5, 0x03D6, 0x03C9,
3221
     0x03BE, 0x03C8, 0x03B6, 0x007B, 0x007C, 0x007D, 0x007E, 0xffff,
3222
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3223
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3224
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3225
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3226
     0x25C7, 0xEFBF, 0xEFE1, 0xEFE7, 0x2223, 0xEFE6, 0xEFE1, 0xEFDD,
3227
     0x21D1, 0x21D2, 0x21D3, 0x2284, 0x2282, 0x2321, 0xEFDD, 0xEFDF,
3228
     0xEFD8, 0x2283, 0x2287, 0xEFE3, 0xffff, 0x2663, 0x2295, 0x2297,
3229
     0x2286, 0x222A, 0xEFE8, 0x2026, 0x2223, 0x2227, 0x21B5, 0x2248,
3230
     0x2264, 0x2666, 0x2265, 0x2202, 0x2135, 0x2032, 0x211C, 0x2118,
3231
     0x221E, 0x2660, 0x221D, 0x2022, 0x2215, 0x2665, 0x00D7, 0x03A5,
3232
     0x2193, 0x2190, 0xEFDB, 0x2033, 0x0192, 0x2111, 0xEFDA, 0x00B1,
3233
     0x2192, 0x2191, 0x2260, 0x2261, 0x00B0, 0x2194, 0xEFE5, 0x222B,
3234
     0xEFDD, 0x2219, 0x2220, 0xEFDE, 0xffff, 0xEFE2, 0xEFE3, 0x232A,
3235
     0xffff, 0x00AC, 0x2207, 0x2320, 0xEFDD, 0xEFE0, 0xEFDE, 0x00F7,
3236
     0xEFC2, 0xEFD9, 0x21D0, 0x21D4, 0x2228, 0x2211, 0xEFD6, 0x2223,
3237
     0xEFE4, 0x2205, 0x2229, 0x2208, 0xEFD7, 0x2209, 0xEFE0, 0x2329}
3238
};
3239
/***************************************
3240
 * PC-858 Multilingual Unicode mapping *
3241
 ***************************************/
3242
static const pl_symbol_map_t map_13U_unicode = {
3243
    map_header(13, 'U', plgv_Unicode, 2, 0, 0, 0, 0, 0xe6, 0, 0, 0,
3244
               PLGV_U2M_MAPPING),
3245
    {
3246
     /* 0x00 */
3247
     0xffff, 0x263a, 0x263b, 0x2665, 0x2666, 0x2663, 0x2660, 0x2022,
3248
     0x25d8, 0x25cb, 0x25d9, 0x2642, 0x2640, 0x266a, 0x266b, 0x263c,
3249
     /* 0x10 */
3250
     0x25ba, 0x25c4, 0x2195, 0x203c, 0x00b6, 0x00a7, 0x25ac, 0x21a8,
3251
     0x2191, 0x2193, 0x2192, 0x2190, 0x221f, 0x2194, 0x25b2, 0x25bc,
3252
     /* 0x20 */
3253
     0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
3254
     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
3255
     /* 0x30 */
3256
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
3257
     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
3258
     /* 0x40 */
3259
     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
3260
     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
3261
     /* 0x50 */
3262
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
3263
     0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x02c6, 0x005f,
3264
     /* 0x60 */
3265
     0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
3266
     0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
3267
     /* 0x70 */
3268
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
3269
     0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x02dc, 0x2302,
3270
     /* 0x80 */
3271
     0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7,
3272
     0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5,
3273
     /* 0x90 */
3274
     0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9,
3275
     0x00ff, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x00d7, 0x0192,
3276
     /* 0xa0 */
3277
     0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba,
3278
     0x00bf, 0x00ae, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb,
3279
     /*0xb0 */
3280
     0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00c1, 0x00c2, 0x00c0,
3281
     0x00a9, 0x2563, 0x2551, 0x2557, 0x255d, 0x00a2, 0x00a5, 0x2510,
3282
     /*0xc0 */
3283
     0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x00e3, 0x00c3,
3284
     0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4,
3285
     /*0xd0 */
3286
     0x00f0, 0x00d0, 0x00ca, 0x00cb, 0x00c8, 0x20ac, 0x00cd, 0x00ce,
3287
     0x00cf, 0x2518, 0x250c, 0x2588, 0x2584, 0x00a6, 0x00cc, 0x2580,
3288
     /*0xe0 */
3289
     0x00d3, 0x00df, 0x00d4, 0x00d2, 0x00f5, 0x00d5, 0x00b5, 0x00fe,
3290
     0x00de, 0x00da, 0x00db, 0x00d9, 0x00fd, 0x00dd, 0x02c9, 0x00b4,
3291
     /*0xf0 */
3292
     0x002d, 0x00b1, 0x2017, 0x00be, 0x00b6, 0x00a7, 0x00f7, 0x00b8,
3293
     0x00b0, 0x00a8, 0x00b7, 0x00b9, 0x00b3, 0x00b2, 0x25aa, 0x00a0}
3294
};
3295
/*******************************************
3296
 * ISO 8859/10 Latin 6 (6N) Unicode mapping *
3297
 *******************************************/
3298
static const pl_symbol_map_t map_6N_unicode = {
3299
    map_header(6, 'N', plgv_Unicode, 1, 0, 0, 0, 0, 0xd0, 0, 0, 0,
3300
               PLGV_U2M_MAPPING),
3301
    {
3302
     /*0x00 */
3303
     0x0000, 0x0002, 0x0001, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
3304
     0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
3305
     /*0x10 */
3306
     0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
3307
     0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
3308
     /*0x20 */
3309
     0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
3310
     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
3311
     /*0x30 */
3312
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
3313
     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
3314
     /*0x40 */
3315
     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
3316
     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
3317
     /*0x50 */
3318
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
3319
     0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x02c6, 0x005f,
3320
     /*0x60 */
3321
     0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
3322
     0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
3323
     /*0x70 */
3324
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
3325
     0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x02dc, 0x2592,
3326
     /*0x80 */
3327
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3328
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3329
     /*0x90 */
3330
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3331
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3332
     /*0xa0 */
3333
     0xffff, 0x0104, 0x0112, 0x0122, 0x012A, 0x0128, 0x0136, 0x00A7,
3334
     0x013B, 0x00D0, 0x0160, 0x0166, 0x017D, 0x002D, 0x016A, 0x014A,
3335
     /*0xb0 */
3336
     0x00B0, 0x0105, 0x0113, 0x0123, 0x012B, 0x0129, 0x0137, 0x00B7,
3337
     0x013C, 0x0111, 0x0161, 0x0167, 0x017E, 0x2014, 0x016B, 0x014B,
3338
     /*0xc0 */
3339
     0x0100, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x012E,
3340
     0x010C, 0x00C9, 0x0118, 0x00CB, 0x0116, 0x00CD, 0x00CE, 0x00CF,
3341
     /*0xd0 */
3342
     0x00D0, 0x0145, 0x014C, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x0168,
3343
     0x00D8, 0x0172, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF,
3344
     /*0xe0 */
3345
     0x0101, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x012F,
3346
     0x010D, 0x00E9, 0x0119, 0x00EB, 0x0117, 0x00ED, 0x00EE, 0x00EF,
3347
     /*0xf0 */
3348
     0x00F0, 0x0146, 0x014D, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x0169,
3349
     0x00F8, 0x0173, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x0138}
3350
};
3351
/*******************************************
3352
 * ISO 8859/15 Latin 9 Unicode mapping *
3353
 *******************************************/
3354
static const pl_symbol_map_t map_9N_unicode = {
3355
    map_header(9, 'N', plgv_Unicode, 1, 0, 0, 0, 0, 0xd0, 0, 0, 0,
3356
               PLGV_U2M_MAPPING),
3357
    {
3358
     /*0x00 */
3359
     0x0000, 0x0002, 0x0001, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
3360
     0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
3361
     /*0x10 */
3362
     0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
3363
     0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
3364
     /*0x20 */
3365
     0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
3366
     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
3367
     /*0x30 */
3368
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
3369
     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
3370
     /*0x40 */
3371
     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
3372
     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
3373
     /*0x50 */
3374
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
3375
     0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x02c6, 0x005f,
3376
     /*0x60 */
3377
     0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
3378
     0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
3379
     /*0x70 */
3380
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
3381
     0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x02dc, 0x2592,
3382
     /*0x80 */
3383
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3384
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3385
     /*0x90 */
3386
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3387
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3388
     /*0xa0 */
3389
     0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x0160, 0x00a7,
3390
     0x0161, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x002d, 0x00ae, 0x02c9,
3391
     /*0xb0 */
3392
     0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x017d, 0x00b5, 0x00b6, 0x2219,
3393
     0x017e, 0x00b9, 0x00ba, 0x00bb, 0x0152, 0x0153, 0x0178, 0x00bf,
3394
     /*0xc0 */
3395
     0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
3396
     0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
3397
     /*0xd0 */
3398
     0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
3399
     0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
3400
     /*0xe0 */
3401
     0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
3402
     0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
3403
     /*0xf0 */
3404
     0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
3405
     0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff}
3406
};
3407
/***************************
3408
 * Roman-9 Unicode mapping *
3409
 ***************************/
3410
const pl_symbol_map_t map_4U_unicode = {
3411
    map_header(4, 'U', plgv_Unicode, 1, 0, 0, 0, 0, 0xc0, 0, 0, 0,
3412
               PLGV_U2M_MAPPING),
3413
    {
3414
     /* 0x00 */
3415
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3416
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3417
     /* 0x10 */
3418
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3419
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3420
     /* 0x20 */
3421
     0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x2019,
3422
     0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
3423
     /* 0x30 */
3424
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
3425
     0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
3426
     /* 0x40 */
3427
     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
3428
     0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
3429
     /* 0x50 */
3430
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
3431
     0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
3432
     /* 0x60 */
3433
     0x2018, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
3434
     0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
3435
     /* 0x70 */
3436
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
3437
     0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2592,
3438
     /* 0x80 */
3439
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3440
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3441
     /* 0x90 */
3442
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3443
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3444
     /* 0xa0 */
3445
     0x00a0, 0x00c0, 0x00c2, 0x00c8, 0x00ca, 0x00cb, 0x00ce, 0x00cf,
3446
     0x00b4, 0x0060, 0x02c6, 0x00a8, 0x02dc, 0x00d9, 0x00db, 0x00a3,
3447
     /* 0xb0 */
3448
     0x00af, 0x00dd, 0x00fd, 0x00b0, 0x00c7, 0x00e7, 0x00d1, 0x00f1,
3449
     0x00a1, 0x00bf, 0x20ac, 0x00a3, 0x00a5, 0x00a7, 0x0192, 0x00a2,
3450
     /* 0xc0 */
3451
     0x00e2, 0x00ea, 0x00f4, 0x00fb, 0x00e1, 0x00e9, 0x00f3, 0x00fa,
3452
     0x00e0, 0x00e8, 0x00f2, 0x00f9, 0x00e4, 0x00eb, 0x00f6, 0x00fc,
3453
     /* 0xd0 */
3454
     0x00c5, 0x00ee, 0x00d8, 0x00c6, 0x00e5, 0x00ed, 0x00f8, 0x00e6,
3455
     0x00c4, 0x00ec, 0x00d6, 0x00dc, 0x00c9, 0x00ef, 0x00df, 0x00d4,
3456
     /* 0xe0 */
3457
     0x00c1, 0x00c3, 0x00e3, 0x00d0, 0x00f0, 0x00cd, 0x00cc, 0x00d3,
3458
     0x00d2, 0x00d5, 0x00f5, 0x0160, 0x0161, 0x00da, 0x0178, 0x00ff,
3459
     /* 0xf0 */
3460
     0x00de, 0x00fe, 0x2219, 0x00b5, 0x00b6, 0x00be, 0x2212, 0x00bc,
3461
     0x00bd, 0x00aa, 0x00ba, 0x00ab, 0x25a0, 0x00bb, 0x00b1, 0xffff}
3462
};
3463
/***************************
3464
 * Roman-9 Unicode mapping *
3465
 ***************************/
3466
const pl_symbol_map_t map_26U_unicode = {
3467
    map_header(26, 'U', plgv_Unicode, 1, 0, 0, 0, 0, 0xc0, 0, 0, 0,
3468
               PLGV_U2M_MAPPING),
3469
    {
3470
     0xffff, 0x263A, 0x263B, 0x2665, 0x2666, 0x2663, 0x2660, 0x2022,
3471
     0x25D8, 0x25CB, 0x25D9, 0x2642, 0x2640, 0x266A, 0x266B, 0x263C,
3472
     0x25BA, 0x25C4, 0x2195, 0x203C, 0x00B6, 0x00A7, 0x25AC, 0x21A8,
3473
     0x2191, 0x2193, 0x2192, 0x2190, 0x221F, 0x2194, 0x25B2, 0x25BC,
3474
     0xffff, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x2019,
3475
     0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
3476
     0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
3477
     0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
3478
     0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
3479
     0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
3480
     0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
3481
     0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x02C6, 0x005F,
3482
     0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
3483
     0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
3484
     0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
3485
     0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x02DC, 0x2302,
3486
     0x0106, 0x00FC, 0x00E9, 0x0101, 0x00E4, 0x0123, 0x00E5, 0x0107,
3487
     0x0142, 0x0113, 0x0156, 0x0157, 0x012B, 0x0179, 0x00C4, 0x00C5,
3488
     0x00C9, 0x00E6, 0x00C6, 0x014D, 0x00F6, 0x0122, 0x00A2, 0x015A,
3489
     0x015B, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x00D7, 0x00A4,
3490
     0x0100, 0x012A, 0x00F3, 0x017B, 0x017C, 0x017A, 0x201D, 0x00A6,
3491
     0x00A9, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x0141, 0x00AB, 0x00BB,
3492
     0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x0104, 0x010C, 0x0118,
3493
     0x0116, 0x2563, 0x2551, 0x2557, 0x255D, 0x012E, 0x0160, 0x2510,
3494
     0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x0172, 0x016A,
3495
     0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x017D,
3496
     0x0105, 0x010D, 0x0119, 0x0117, 0x012F, 0x0161, 0x0173, 0x016B,
3497
     0x017E, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580,
3498
     0x00D3, 0x00DF, 0x014C, 0x0143, 0x00F5, 0x00D5, 0x00B5, 0x0144,
3499
     0x0136, 0x0137, 0x013B, 0x013C, 0x0146, 0x0112, 0x0145, 0x2019,
3500
     0x00AD, 0x00B1, 0x201C, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x201E,
3501
     0x00B0, 0x2219, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25AA, 0xffff}
3502
};
3503
3504
/*****************************************
3505
 * ITC Zapf Dingbats MS (DZ) Unicode mapping *
3506
 *****************************************/
3507
static const pl_symbol_map_t map_14L_unicode = {
3508
    map_header(14, 'L', plgv_Unicode, 2, 0, 0, 0, 1, 0, 0, 0, 0,
3509
               PLGV_U2M_MAPPING),
3510
    {
3511
     /*00 */
3512
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
3513
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
3514
     /*10 */
3515
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
3516
     ffff, ffff, ffff, ffff, ffff, ffff, ffff, ffff,
3517
     /*20 */
3518
     0x0020, 0xf021, 0xf022, 0xf023, 0xf024, 0xf025, 0xf026, 0xf027,
3519
     0xf028, 0xf029, 0xf02a, 0xf02b, 0xf02c, 0xf02d, 0xf02e, 0xf02f,
3520
     /*30 */
3521
     0xf030, 0xf031, 0xf032, 0xf033, 0xf034, 0xf035, 0xf036, 0xf037,
3522
     0xf038, 0xf039, 0xf03a, 0xf03b, 0xf03c, 0xf03d, 0xf03e, 0xf03f,
3523
     /*40 */
3524
     0xf040, 0xf041, 0xf042, 0xf043, 0xf044, 0xf045, 0xf046, 0xf047,
3525
     0xf048, 0xf049, 0xf04a, 0xf04b, 0xf04c, 0xf04d, 0xf04e, 0xf04f,
3526
     /*50 */
3527
     0xf050, 0xf051, 0xf052, 0xf053, 0xf054, 0xf055, 0xf056, 0xf057,
3528
     0xf058, 0xf059, 0xf05a, 0xf05b, 0xf05c, 0xf05d, 0xf05e, 0xf05f,
3529
     /*60 */
3530
     0xf060, 0xf061, 0xf062, 0xf063, 0xf064, 0xf065, 0xf066, 0xf067,
3531
     0xf068, 0xf069, 0xf06a, 0xf06b, 0xf06c, 0xf06d, 0xf06e, 0xf06f,
3532
     /*70 */
3533
     0xf070, 0xf071, 0xf072, 0xf073, 0xf074, 0xf075, 0xf076, 0xf077,
3534
     0xf078, 0xf079, 0xf07a, 0xf07b, 0xf07c, 0xf07d, 0xf07e, 0xf07f,
3535
     /*80 */
3536
     0xf080, 0xf081, 0xf082, 0xf083, 0xf084, 0xf085, 0xf086, 0xf087,
3537
     0xf088, 0xf089, 0xf08a, 0xf08b, 0xf08c, 0xf08d, 0xf08e, 0xf08f,
3538
     /*90 */
3539
     0xf090, 0xf091, 0xf092, 0xf093, 0xf094, 0xf095, 0xf096, 0xf097,
3540
     0xf098, 0xf099, 0xf09a, 0xf09b, 0xf09c, 0xf09d, 0xf09e, 0xf09f,
3541
     /*a0 */
3542
     0xf0a0, 0xf0a1, 0xf0a2, 0xf0a3, 0xf0a4, 0xf0a5, 0xf0a6, 0xf0a7,
3543
     0xf0a8, 0xf0a9, 0xf0aa, 0xf0ab, 0xf0ac, 0xf0ad, 0xf0ae, 0xf0af,
3544
     /*b0 */
3545
     0xf0b0, 0xf0b1, 0xf0b2, 0xf0b3, 0xf0b4, 0xf0b5, 0xf0b6, 0xf0b7,
3546
     0xf0b8, 0xf0b9, 0xf0ba, 0xf0bb, 0xf0bc, 0xf0bd, 0xf0be, 0xf0bf,
3547
     /*c0 */
3548
     0xf0c0, 0xf0c1, 0xf0c2, 0xf0c3, 0xf0c4, 0xf0c5, 0xf0c6, 0xf0c7,
3549
     0xf0c8, 0xf0c9, 0xf0ca, 0xf0cb, 0xf0cc, 0xf0cd, 0xf0ce, 0xf0cf,
3550
     /*d0 */
3551
     0xf0d0, 0xf0d1, 0xf0d2, 0xf0d3, 0xf0d4, 0xf0d5, 0xf0d6, 0xf0d7,
3552
     0xf0d8, 0xf0d9, 0xf0da, 0xf0db, 0xf0dc, 0xf0dd, 0xf0de, 0xf0df,
3553
     /*e0 */
3554
     0xf0e0, 0xf0e1, 0xf0e2, 0xf0e3, 0xf0e4, 0xf0e5, 0xf0e6, 0xf0e7,
3555
     0xf0e8, 0xf0e9, 0xf0ea, 0xf0eb, 0xf0ec, 0xf0ed, 0xf0ee, 0xf0ef,
3556
     /*f0 */
3557
     0xf0f0, 0xf0f1, 0xf0f2, 0xf0f3, 0xf0f4, 0xf0f5, 0xf0f6, 0xf0f7,
3558
     0xf0f8, 0xf0f9, 0xf0fa, 0xf0fb, 0xf0fc, 0xf0fd, 0xf0fe, 0xf0ff,
3559
3560
     }
3561
};
3562
3563
/* ISO/IEC 8859-7 Latin/Greek alphabet */
3564
static const pl_symbol_map_t map_12N_unicode = {
3565
    map_header(12, 'N', plgv_Unicode, 2, 0, 0, 0, 0, 0xc0, 0, 0, 0,
3566
               PLGV_U2M_MAPPING),
3567
    {
3568
        /* 0x00 */
3569
        0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3570
        0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3571
        /* 0x10 */
3572
        0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3573
        0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3574
        /* 0x20 */
3575
        0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
3576
        0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f,
3577
        /* 0x30 */
3578
        0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
3579
        0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f,
3580
        /* 0x40 */
3581
        0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
3582
        0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f,
3583
        /* 0x50 */
3584
        0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
3585
        0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f,
3586
        /* 0x60 */
3587
        0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
3588
        0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f,
3589
        /* 0x70 */
3590
        0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
3591
        0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f,
3592
        /* 0x80 */
3593
        0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3594
        0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3595
        /* 0x90 */
3596
        0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3597
        0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3598
        /* 0xa0 */
3599
        0x00a0, 0x02bd, 0x02bc, 0x00a3, 0xffff, 0xffff, 0x00a6, 0x00a7,
3600
        0x00a8, 0x00a9, 0xffff, 0x00ab, 0x00ac, 0x00ad, 0xffff, 0x2015,
3601
        /* 0xb0 */
3602
        0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x0385, 0x0386, 0x00b7,
3603
        0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f,
3604
        /* 0xc0 */
3605
        0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
3606
        0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f,
3607
        /* 0xd0 */
3608
        0x03a0, 0x03a1, 0xffff, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7,
3609
        0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af,
3610
        /* 0xe0 */
3611
        0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7,
3612
        0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf,
3613
        /* 0xf0 */
3614
        0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7,
3615
        0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0xffff
3616
    }
3617
};
3618
3619
/*************************************************************
3620
 * HP-GL/2 stick font extended character set Unicode mapping *
3621
 * (Note: this symbol set is not documented anywhere.)       *
3622
 * Strange mapping is effectively: roman8(charcode - 0x80)   *
3623
 *************************************************************/
3624
static const pl_symbol_map_t map_0E_unicode = {
3625
    map_header(0, 'E', plgv_Unicode, 0, 0, 0, 0, 0, 0x40, 0, 0, 0,
3626
               PLGV_U2M_MAPPING),
3627
    {
3628
     /* 0x00 */
3629
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3630
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3631
     /* 0x10 */
3632
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3633
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3634
     /* 0x20 */
3635
     0x00a0, 0x00c0, 0x00c2, 0x00c8, 0x00ca, 0x00cb, 0x00ce, 0x00cf,
3636
     0x00b4, 0x0060, 0x02c6, 0x00a8, 0x02dc, 0x00d9, 0x00db, 0x00a3,
3637
     /* 0x30 */
3638
     0x00af, 0x00dd, 0x00fd, 0x00b0, 0x00c7, 0x00e7, 0x00d1, 0x00f1,
3639
     0x00a1, 0x00bf, 0x00a4, 0x00a3, 0x00a5, 0x00a7, 0x0192, 0x00a2,
3640
     /* 0x40 */
3641
     0x00e2, 0x00ea, 0x00f4, 0x00fb, 0x00e1, 0x00e9, 0x00f3, 0x00fa,
3642
     0x00e0, 0x00e8, 0x00f2, 0x00f9, 0x00e4, 0x00eb, 0x00f6, 0x00fc,
3643
     /* 0x50 */
3644
     0x00c5, 0x00ee, 0x00d8, 0x00c6, 0x00e5, 0x00ed, 0x00f8, 0x00e6,
3645
     0x00c4, 0x00ec, 0x00d6, 0x00dc, 0x00c9, 0x00ef, 0x00df, 0x00d4,
3646
     /* 0x60 */
3647
     0x00c1, 0x00c3, 0x00e3, 0x0110, 0x00f0, 0x00cd, 0x00cc, 0x00d3,
3648
     0x00d2, 0x00d5, 0x00f5, 0x0160, 0x0161, 0x00da, 0x0178, 0x00ff,
3649
     /* 0x70 */
3650
     0x00de, 0x00fe, 0x00b7, 0x00b5, 0x00b6, 0x00be, 0x2212, 0x00bc,
3651
     0x00bd, 0x00aa, 0x00ba, 0x00ab, 0x25a0, 0x00bb, 0x00b1, 0xffff,
3652
     /* 0x80 */
3653
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3654
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3655
     /* 0x90 */
3656
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3657
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3658
     /* 0xa0 */
3659
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3660
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3661
     /* 0xb0 */
3662
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3663
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3664
     /* 0xc0 */
3665
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3666
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3667
     /* 0xd0 */
3668
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3669
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3670
     /* 0xe0 */
3671
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3672
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3673
     /* 0xf0 */
3674
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
3675
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff}
3676
};
3677
3678
static const pl_symbol_map_t map_18N_unicode = {
3679
    map_header(18, 'N', plgv_Unicode, 2, 0, 0, 0, 0, 0, 0, 0, 0,
3680
               PLGV_U2M_MAPPING),
3681
    {0}
3682
};
3683
3684
/*
3685
 * Define the list of built-in symbol maps.
3686
 */
3687
const pl_symbol_map_t *pl_built_in_symbol_maps[] = {
3688
    &map_0U_unicode,
3689
    &map_1E_unicode,
3690
    &map_1F_unicode,
3691
    &map_1G_unicode,
3692
    &map_0I_unicode,
3693
    &map_0S_unicode,
3694
    &map_2S_unicode,
3695
    &map_0D_unicode,
3696
    &map_8U_unicode,
3697
    &map_7J_unicode,
3698
    &map_19U_unicode,
3699
    &map_0N_unicode,
3700
    &map_10U_unicode,
3701
    &map_12U_unicode,
3702
    &map_10J_unicode,
3703
    &map_12J_unicode,
3704
    &map_11U_unicode,
3705
    &map_1U_unicode,
3706
    &map_9U_unicode,
3707
    &map_6J_unicode,
3708
    &map_17U_unicode,
3709
    &map_9T_unicode,
3710
    &map_2N_unicode,
3711
    &map_9E_unicode,
3712
    &map_5N_unicode,
3713
    &map_5T_unicode,
3714
    &map_8M_unicode,
3715
    &map_15U_unicode,
3716
    &map_5M_unicode,
3717
    &map_19M_unicode,
3718
    &map_579L_unicode,
3719
    &map_10L_msl,
3720
    &map_11L_msl,
3721
    &map_12L_msl,
3722
    &map_13L_msl,
3723
    &map_0E_unicode,
3724
    &map_9J_unicode,
3725
    &map_1O_unicode,
3726
    &map_13J_unicode,
3727
    &map_14J_unicode,
3728
    &map_6M_unicode,
3729
    &map_13U_unicode,
3730
    &map_19L_unicode,
3731
    &map_6N_unicode,
3732
    &map_9N_unicode,
3733
    &map_4U_unicode,
3734
    &map_26U_unicode,
3735
    &map_14L_unicode,
3736
    &map_9R_unicode,
3737
    &map_9G_unicode,
3738
    &map_9V_unicode,
3739
    &map_18N_unicode,
3740
    &map_20U_unicode,
3741
    &map_25U_unicode,
3742
    &map_12N_unicode,
3743
    0                           /* end marker */
3744
};
3745
3746
const int pl_built_in_symbol_map_count = countof(pl_built_in_symbol_maps) - 1;
3747
3748
ulong
3749
pl_map_symbol(const pl_symbol_map_t * psm,
3750
              uint chr, bool is_resident_font, bool is_MSL,
3751
              const gs_memory_t * mem)
3752
16.1M
{
3753
16.1M
    uint first_code, last_code, code;
3754
3755
    /*
3756
     * If there is no symbol map we assume the the character
3757
     * implicitly indexes the font.  The symbol set 590 is not
3758
     * documented it appears to do implicit mapping as well.
3759
     *
3760
     * symbol set 590/18N is for UTF-8 according to
3761
     * http://docs.hp.com/en/5991-7956/5991-7956.pdf
3762
     *
3763
     */
3764
3765
16.1M
    if ((psm == 0) || (pl_get_uint16(psm->id) == 590))
3766
358k
        return chr;
3767
3768
3769
15.7M
    first_code = pl_get_uint16(psm->first_code);
3770
15.7M
    last_code = pl_get_uint16(psm->last_code);
3771
15.7M
    if ((chr < first_code) || (chr > last_code))
3772
0
        code = ((last_code <= 0xff) && (chr > 0xff) ? chr : 0xffff);
3773
15.7M
    else
3774
15.7M
        code = psm->codes[chr - first_code];
3775
    /* we do not provide many of the symbol sets in MSL format.
3776
       Instead we may use a corresponding unicode symbol set and
3777
       convert the resulting unicode value to msl.  This will not
3778
       necessarily match HP. */
3779
3780
    /* NB refactor me. */
3781
15.7M
    if (is_MSL && (code != 0xffff) &&
3782
0
        (pl_symbol_map_vocabulary(psm) == plgv_Unicode)) {
3783
#ifdef DEBUG
3784
        if (gs_debug_c('=')) {
3785
            dmprintf3(mem,
3786
                      "[=] unicode to msl conversion: chr=%d, unicode=0x%x, msl code=%d\n",
3787
                      chr, code, pl_map_Unicode_to_MSL(code,
3788
                                                       (psm->id[0] << 8) +
3789
                                                       psm->id[1]));
3790
        }
3791
#endif
3792
0
        code = pl_map_Unicode_to_MSL(code, (psm->id[0] << 8) + psm->id[1]);
3793
15.7M
    } else if (!is_MSL && (code != 0xffff) &&
3794
15.6M
               (pl_symbol_map_vocabulary(psm) == plgv_MSL)) {
3795
#ifdef DEBUG
3796
        if (gs_debug_c('=')) {
3797
            dmprintf3(mem,
3798
                      "[=] msl to unicode conversion: chr=%d, msl=0x%x, unicode=%d\n",
3799
                      chr, code, pl_map_MSL_to_Unicode(code,
3800
                                                       (psm->id[0] << 8) +
3801
                                                       psm->id[1]));
3802
        }
3803
#endif
3804
0
        code = pl_map_MSL_to_Unicode(code, (psm->id[0] << 8) + psm->id[1]);
3805
0
    }
3806
15.7M
    return code;
3807
16.1M
}