Coverage report: /home/ellis/.stash/quicklisp/dists/ultralisp/software/cl-babel-babel-20240610131823/src/enc-iso-8859.lisp
Kind | Covered | All | % |
expression | 0 | 138 | 0.0 |
branch | 0 | 0 | nil |
Key
Not instrumented
Conditionalized out
Executed
Not executed
Both branches taken
One branch taken
Neither branch taken
1
;;;; -*- Mode: lisp; indent-tabs-mode: nil -*-
3
;;; enc-iso-8859.lisp --- ISO-8859-* encodings.
5
;;; Copyright (C) 2007, Luis Oliveira <loliveira@common-lisp.net>
7
;;; Permission is hereby granted, free of charge, to any person
8
;;; obtaining a copy of this software and associated documentation
9
;;; files (the "Software"), to deal in the Software without
10
;;; restriction, including without limitation the rights to use, copy,
11
;;; modify, merge, publish, distribute, sublicense, and/or sell copies
12
;;; of the Software, and to permit persons to whom the Software is
13
;;; furnished to do so, subject to the following conditions:
15
;;; The above copyright notice and this permission notice shall be
16
;;; included in all copies or substantial portions of the Software.
18
;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19
;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20
;;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21
;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
22
;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
23
;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25
;;; DEALINGS IN THE SOFTWARE.
27
;;; This implementation is largely based on OpenMCL's l1-unicode.lisp
28
;;; Copyright (C) 2006 Clozure Associates and contributors.
30
(in-package #:babel-encodings)
32
;;; Typically, ISO-8859-* codes in the range #x00-#x9f map straight
33
;;; through, while codes #xa0-#xff select arbitrary Unicode characters
34
;;; that are commonly used in some locale. (Sometimes the break is at
35
;;; #x80 instead of #xa0).
37
;;; (comment from OpenMCL's ccl/level-1/l1-unicode.lisp)
39
(define-character-encoding :iso-8859-1
40
"An 8-bit, fixed-width character encoding in which all
41
character codes map to their Unicode equivalents. Intended to
42
support most characters used in most Western European languages."
43
:aliases '(:latin-1 :latin1)
44
:literal-char-code-limit 256)
46
(define-unibyte-encoder :iso-8859-1 (code)
51
(define-unibyte-decoder :iso-8859-1 (octet)
54
(define-character-encoding :iso-8859-2
55
"An 8-bit, fixed-width character encoding in which codes
56
#x00-#x9f map to their Unicode equivalents and other codes map to
57
other Unicode character values. Intended to provide most
58
characters found in most languages used in Central/Eastern
60
:aliases '(:latin-2 :latin2)
61
:literal-char-code-limit #xa0)
63
(define-constant +unicode-00a0-0180-to-iso-8859-2+
64
#(#xa0 nil nil nil #xa4 nil nil #xa7 ; #xa0-#xa7
65
#xa8 nil nil nil nil #xad nil nil ; #xa8-#xaf
66
#xb0 nil nil nil #xb4 nil nil nil ; #xb0-#xb7
67
#xb8 nil nil nil nil nil nil nil ; #xb8-#xbf
68
nil #xc1 #xc2 nil #xc4 nil nil #xc7 ; #xc0-#xc7
69
nil #xc9 nil #xcb nil #xcd #xce nil ; #xc8-#xcf
70
nil nil nil #xd3 #xd4 nil #xd6 #xd7 ; #xd0-#xd7
71
nil nil #xda nil #xdc #xdd nil #xdf ; #xd8-#xdf
72
nil #xe1 #xe2 nil #xe4 nil nil #xe7 ; #xe0-#xe7
73
nil #xe9 nil #xeb nil #xed #xee nil ; #xe8-#xef
74
nil nil nil #xf3 #xf4 nil #xf6 #xf7 ; #xf0-#xf7
75
nil nil #xfa nil #xfc #xfd nil nil ; #xf8-#xff
77
nil nil #xc3 #xe3 #xa1 #xb1 #xc6 #xe6 ; #x100-#x107
78
nil nil nil nil #xc8 #xe8 #xcf #xef ; #x108-#x10f
79
#xd0 #xf0 nil nil nil nil nil nil ; #x110-#x117
80
#xca #xea #xcc #xec nil nil nil nil ; #x118-#x11f
81
nil nil nil nil nil nil nil nil ; #x120-#x127
82
nil nil nil nil nil nil nil nil ; #x128-#x12f
83
nil nil nil nil nil nil nil nil ; #x130-#x137
84
nil #xc5 #xe5 nil nil #xa5 #xb5 nil ; #x138-#x13f
85
nil #xa3 #xb3 #xd1 #xf1 nil nil #xd2 ; #x140-#x147
86
#xf2 nil nil nil nil nil nil nil ; #x148-#x14f
87
#xd5 #xf5 nil nil #xc0 #xe0 nil nil ; #x150-#x157
88
#xd8 #xf8 #xa6 #xb6 nil nil #xaa #xba ; #x158-#x15f
89
#xa9 #xb9 #xde #xfe #xab #xbb nil nil ; #x160-#x167
90
nil nil nil nil nil nil #xd9 #xf9 ; #x168-#x16f
91
#xdb #xfb nil nil nil nil nil nil ; #x170-#x177
92
nil #xac #xbc #xaf #xbf #xae #xbe nil) ; #x178-#x17f
95
(define-constant +unicode-02c0-02e0-to-iso-8859-2+
96
#(nil nil nil nil nil nil nil #xb7 ; #x2c0-#x2c7
97
nil nil nil nil nil nil nil nil ; #x2c8-#x2cf
98
nil nil nil nil nil nil nil nil ; #x2d0-#x2d7
99
#xa2 #xff nil #xb2 nil #xbd nil nil) ; #x2d8-#x2df
102
(define-unibyte-encoder :iso-8859-2 (code)
103
(or (cond ((< code #xa0) code)
105
(svref +unicode-00a0-0180-to-iso-8859-2+
106
(the ub8 (- code #xa0))))
107
((<= #x2c0 code #x2df)
108
(svref +unicode-02c0-02e0-to-iso-8859-2+
109
(the ub8 (- code #x2c0)))))
112
(define-constant +iso-8859-2-to-unicode+
114
#x00a0 #x0104 #x02d8 #x0141 #x00a4 #x013d #x015a #x00a7
115
#x00a8 #x0160 #x015e #x0164 #x0179 #x00ad #x017d #x017b
117
#x00b0 #x0105 #x02db #x0142 #x00b4 #x013e #x015b #x02c7
118
#x00b8 #x0161 #x015f #x0165 #x017a #x02dd #x017e #x017c
120
#x0154 #x00c1 #x00c2 #x0102 #x00c4 #x0139 #x0106 #x00c7
121
#x010c #x00c9 #x0118 #x00cb #x011a #x00cd #x00ce #x010e
123
#x0110 #x0143 #x0147 #x00d3 #x00d4 #x0150 #x00d6 #x00d7
124
#x0158 #x016e #x00da #x0170 #x00dc #x00dd #x0162 #x00df
126
#x0155 #x00e1 #x00e2 #x0103 #x00e4 #x013a #x0107 #x00e7
127
#x010d #x00e9 #x0119 #x00eb #x011b #x00ed #x00ee #x010f
129
#x0111 #x0144 #x0148 #x00f3 #x00f4 #x0151 #x00f6 #x00f7
130
#x0159 #x016f #x00fa #x0171 #x00fc #x00fd #x0163 #x02d9)
133
(define-unibyte-decoder :iso-8859-2 (octet)
136
(svref +iso-8859-2-to-unicode+ (the ub8 (- octet #xa0)))))
138
(define-character-encoding :iso-8859-3
139
"An 8-bit, fixed-width character encoding in which codes
140
#x00-#x9f map to their Unicode equivalents and other codes map to
141
other Unicode character values. Intended to provide most
142
characters found in most languages used in Southern Europe."
143
:aliases '(:latin-3 :latin3)
144
:literal-char-code-limit #xa0)
146
(define-constant +unicode-a0-100-to-iso-8859-3+
147
#(#xa0 nil nil #xa3 #xa4 nil nil #xa7 ; #xa0-#xa7
148
#xa8 nil nil nil nil #xad nil nil ; #xa8-#xaf
149
#xb0 nil #xb2 #xb3 #xb4 #xb5 nil #xb7 ; #xb0-#xb7
150
#xb8 nil nil nil nil #xbd nil nil ; #xb8-#xbf
151
#xc0 #xc1 #xc2 nil #xc4 nil nil #xc7 ; #xc0-#xc7
152
#xc8 #xc9 #xca #xcb #xcc #xcd #xce #xcf ; #xc8-#xcf
153
nil #xd1 #xd2 #xd3 #xd4 nil #xd6 #xd7 ; #xd0-#xd7
154
nil #xd9 #xda #xdb #xdc nil nil #xdf ; #xd8-#xdf
155
#xe0 #xe1 #xe2 nil #xe4 nil nil #xe7 ; #xe0-#xe7
156
#xe8 #xe9 #xea #xeb #xec #xed #xee #xef ; #xe8-#xef
157
nil #xf1 #xf2 #xf3 #xf4 nil #xf6 #xf7 ; #xf0-#xf7
158
nil #xf9 #xfa #xfb #xfc nil nil nil) ; #xf8-#xff
161
(define-constant +unicode-108-180-to-iso-8859-3+
162
#(#xc6 #xe6 #xc5 #xe5 #x00 #x00 #x00 #x00 ; #x108-#x10f
163
nil nil nil nil nil nil nil nil ; #x110-#x117
164
nil nil nil nil #xd8 #xf8 #xab #xbb ; #x118-#x11f
165
#xd5 #xf5 nil nil #xa6 #xb6 #xa1 #xb1 ; #x120-#x127
166
nil nil nil nil nil nil nil nil ; #x128-#x12f
167
#xa9 #xb9 nil nil #xac #xbc nil nil ; #x130-#x137
168
nil nil nil nil nil nil nil nil ; #x138-#x13f
169
nil nil nil nil nil nil nil nil ; #x140-#x147
170
nil nil nil nil nil nil nil nil ; #x148-#x14f
171
nil nil nil nil nil nil nil nil ; #x150-#x157
172
nil nil nil nil #xde #xfe #xaa #xba ; #x158-#x15f
173
nil nil nil nil nil nil nil nil ; #x160-#x167
174
nil nil nil nil #xdd #xfd nil nil ; #x168-#x16f
175
nil nil nil nil nil nil nil nil ; #x170-#x177
176
nil nil nil #xaf #xbf nil nil nil) ; #x178-#x17f
179
(define-constant +unicode-2d8-2e0-to-iso-8859-3+
180
#(#xa2 #xff nil nil nil nil nil nil) ; #x2d8-#x2df
183
(define-unibyte-encoder :iso-8859-3 (code)
184
(or (cond ((< code #xa0) code)
186
(svref +unicode-a0-100-to-iso-8859-3+
187
(the ub8 (- code #xa0))))
188
((<= #x108 code #x17f)
189
(svref +unicode-108-180-to-iso-8859-3+
190
(the ub8 (- code #x108))))
191
((<= #x2d8 code #x2df)
192
(svref +unicode-2d8-2e0-to-iso-8859-3+
193
(the ub8 (- code #x2d8)))))
196
(define-constant +iso-8859-3-to-unicode+
198
#x00a0 #x0126 #x02d8 #x00a3 #x00a4 #xfffd #x0124 #x00a7
199
#x00a8 #x0130 #x015e #x011e #x0134 #x00ad #xfffd #x017b
201
#x00b0 #x0127 #x00b2 #x00b3 #x00b4 #x00b5 #x0125 #x00b7
202
#x00b8 #x0131 #x015f #x011f #x0135 #x00bd #xfffd #x017c
204
#x00c0 #x00c1 #x00c2 #xfffd #x00c4 #x010a #x0108 #x00c7
205
#x00c8 #x00c9 #x00ca #x00cb #x00cc #x00cd #x00ce #x00cf
207
#xfffd #x00d1 #x00d2 #x00d3 #x00d4 #x0120 #x00d6 #x00d7
208
#x011c #x00d9 #x00da #x00db #x00dc #x016c #x015c #x00df
210
#x00e0 #x00e1 #x00e2 #xfffd #x00e4 #x010b #x0109 #x00e7
211
#x00e8 #x00e9 #x00ea #x00eb #x00ec #x00ed #x00ee #x00ef
213
#xfffd #x00f1 #x00f2 #x00f3 #x00f4 #x0121 #x00f6 #x00f7
214
#x011d #x00f9 #x00fa #x00fb #x00fc #x016d #x015d #x02d9)
217
(define-unibyte-decoder :iso-8859-3 (octet)
220
(svref +iso-8859-3-to-unicode+ (the ub8 (- octet #xa0)))))
222
(define-character-encoding :iso-8859-4
223
"An 8-bit, fixed-width character encoding in which codes
224
#x00-#x9f map to their Unicode equivalents and other codes map to
225
other Unicode character values. Intended to provide most
226
characters found in most languages used in Northern Europe."
227
:aliases '(:latin-4 :latin4)
228
:literal-char-code-limit #xa0)
230
(define-constant +unicode-a0-180-to-iso-8859-4+
231
#(#xa0 nil nil nil #xa4 nil nil #xa7 ; #xa0-#xa7
232
#xa8 nil nil nil nil #xad nil #xaf ; #xa8-#xaf
233
#xb0 nil nil nil #xb4 nil nil nil ; #xb0-#xb7
234
#xb8 nil nil nil nil nil nil nil ; #xb8-#xbf
235
nil #xc1 #xc2 #xc3 #xc4 #xc5 #xc6 nil ; #xc0-#xc7
236
nil #xc9 nil #xcb nil #xcd #xce nil ; #xc8-#xcf
237
nil nil nil nil #xd4 #xd5 #xd6 #xd7 ; #xd0-#xd7
238
#xd8 nil #xda #xdb #xdc nil nil #xdf ; #xd8-#xdf
239
nil #xe1 #xe2 #xe3 #xe4 #xe5 #xe6 nil ; #xe0-#xe7
240
nil #xe9 nil #xeb nil #xed #xee nil ; #xe8-#xef
241
nil nil nil nil #xf4 #xf5 #xf6 #xf7 ; #xf0-#xf7
242
#xf8 nil #xfa #xfb #xfc nil nil nil ; #xf8-#xff
243
#xc0 #xe0 nil nil #xa1 #xb1 nil nil ; #x100-#x107
244
nil nil nil nil #xc8 #xe8 nil nil ; #x108-#x10f
245
#xd0 #xf0 #xaa #xba nil nil #xcc #xec ; #x110-#x117
246
#xca #xea nil nil nil nil nil nil ; #x118-#x11f
247
nil nil #xab #xbb nil nil nil nil ; #x120-#x127
248
#xa5 #xb5 #xcf #xef nil nil #xc7 #xe7 ; #x128-#x12f
249
nil nil nil nil nil nil #xd3 #xf3 ; #x130-#x137
250
#xa2 nil nil #xa6 #xb6 nil nil nil ; #x138-#x13f
251
nil nil nil nil nil #xd1 #xf1 nil ; #x140-#x147
252
nil nil #xbd #xbf #xd2 #xf2 nil nil ; #x148-#x14f
253
nil nil nil nil nil nil #xa3 #xb3 ; #x150-#x157
254
nil nil nil nil nil nil nil nil ; #x158-#x15f
255
#xa9 #xb9 nil nil nil nil #xac #xbc ; #x160-#x167
256
#xdd #xfd #xde #xfe nil nil nil nil ; #x168-#x16f
257
nil nil #xd9 #xf9 nil nil nil nil ; #x170-#x177
258
nil nil nil nil nil #xae #xbe nil) ; #x178-#x17f
261
(define-constant +unicode-2c0-2e0-to-iso-8859-4+
262
#(nil nil nil nil nil nil nil #xb7 ; #x2c0-#x2c7
263
nil nil nil nil nil nil nil nil ; #x2c8-#x2cf
264
nil nil nil nil nil nil nil nil ; #x2d0-#x2d7
265
nil #xff nil #xb2 nil nil nil nil) ; #x2d8-#x2df
268
(define-unibyte-encoder :iso-8859-4 (code)
269
(or (cond ((< code #xa0) code)
271
(svref +unicode-a0-180-to-iso-8859-4+
272
(the ub8 (- code #xa0))))
273
((<= #x2c0 code #x2df)
274
(svref +unicode-2c0-2e0-to-iso-8859-4+
275
(the ub8 (- code #x2c0)))))
278
(define-constant +iso-8859-4-to-unicode+
280
#x00a0 #x0104 #x0138 #x0156 #x00a4 #x0128 #x013b #x00a7
281
#x00a8 #x0160 #x0112 #x0122 #x0166 #x00ad #x017d #x00af
283
#x00b0 #x0105 #x02db #x0157 #x00b4 #x0129 #x013c #x02c7
284
#x00b8 #x0161 #x0113 #x0123 #x0167 #x014a #x017e #x014b
286
#x0100 #x00c1 #x00c2 #x00c3 #x00c4 #x00c5 #x00c6 #x012e
287
#x010c #x00c9 #x0118 #x00cb #x0116 #x00cd #x00ce #x012a
289
#x0110 #x0145 #x014c #x0136 #x00d4 #x00d5 #x00d6 #x00d7
290
#x00d8 #x0172 #x00da #x00db #x00dc #x0168 #x016a #x00df
292
#x0101 #x00e1 #x00e2 #x00e3 #x00e4 #x00e5 #x00e6 #x012f
293
#x010d #x00e9 #x0119 #x00eb #x0117 #x00ed #x00ee #x012b
295
#x0111 #x0146 #x014d #x0137 #x00f4 #x00f5 #x00f6 #x00f7
296
#x00f8 #x0173 #x00fa #x00fb #x00fc #x0169 #x016b #x02d9)
299
(define-unibyte-decoder :iso-8859-4 (octet)
302
(svref +iso-8859-4-to-unicode+ (the ub8 (- octet #xa0)))))
304
(define-character-encoding :iso-8859-5
305
"An 8-bit, fixed-width character encoding in which codes
306
#x00-#x9f map to their Unicode equivalents and other codes map to
307
other Unicode character values. Intended to provide most
308
characters found in the Cyrillic alphabet."
309
:aliases '(:cyrillic)
310
:literal-char-code-limit #xa0)
312
(define-constant +unicode-a0-b0-to-iso-8859-5+
313
#(#xa0 nil nil nil nil nil nil #xfd ; #xa0-#xa7
314
nil nil nil nil nil #xad nil nil) ; #xa8-#xaf
317
(define-constant +unicode-400-460-to-iso-8859-5+
318
#(nil #xa1 #xa2 #xa3 #xa4 #xa5 #xa6 #xa7 ; #x400-#x407
319
#xa8 #xa9 #xaa #xab #xac nil #xae #xaf ; #x408-#x40f
320
#xb0 #xb1 #xb2 #xb3 #xb4 #xb5 #xb6 #xb7 ; #x410-#x417
321
#xb8 #xb9 #xba #xbb #xbc #xbd #xbe #xbf ; #x418-#x41f
322
#xc0 #xc1 #xc2 #xc3 #xc4 #xc5 #xc6 #xc7 ; #x420-#x427
323
#xc8 #xc9 #xca #xcb #xcc #xcd #xce #xcf ; #x428-#x42f
324
#xd0 #xd1 #xd2 #xd3 #xd4 #xd5 #xd6 #xd7 ; #x430-#x437
325
#xd8 #xd9 #xda #xdb #xdc #xdd #xde #xdf ; #x438-#x43f
326
#xe0 #xe1 #xe2 #xe3 #xe4 #xe5 #xe6 #xe7 ; #x440-#x447
327
#xe8 #xe9 #xea #xeb #xec #xed #xee #xef ; #x448-#x44f
328
nil #xf1 #xf2 #xf3 #xf4 #xf5 #xf6 #xf7 ; #x450-#x457
329
#xf8 #xf9 #xfa #xfb #xfc nil #xfe #xff) ; #x458-#x45f
332
(define-unibyte-encoder :iso-8859-5 (code)
333
(or (cond ((< code #xa0) code)
335
(svref +unicode-a0-b0-to-iso-8859-5+
336
(the ub8 (- code #xa0))))
337
((<= #x400 code #x45f)
338
(svref +unicode-400-460-to-iso-8859-5+
339
(the ub8 (- code #x400))))
341
((= code #x2116) #xf0))
344
(define-constant +iso-8859-5-to-unicode+
346
#x00a0 #x0401 #x0402 #x0403 #x0404 #x0405 #x0406 #x0407
347
#x0408 #x0409 #x040a #x040b #x040c #x00ad #x040e #x040f
349
#x0410 #x0411 #x0412 #x0413 #x0414 #x0415 #x0416 #x0417
350
#x0418 #x0419 #x041a #x041b #x041c #x041d #x041e #x041f
352
#x0420 #x0421 #x0422 #x0423 #x0424 #x0425 #x0426 #x0427
353
#x0428 #x0429 #x042a #x042b #x042c #x042d #x042e #x042f
355
#x0430 #x0431 #x0432 #x0433 #x0434 #x0435 #x0436 #x0437
356
#x0438 #x0439 #x043a #x043b #x043c #x043d #x043e #x043f
358
#x0440 #x0441 #x0442 #x0443 #x0444 #x0445 #x0446 #x0447
359
#x0448 #x0449 #x044a #x044b #x044c #x044d #x044e #x044f
361
#x2116 #x0451 #x0452 #x0453 #x0454 #x0455 #x0456 #x0457
362
#x0458 #x0459 #x045a #x045b #x045c #x00a7 #x045e #x045f)
365
(define-unibyte-decoder :iso-8859-5 (octet)
368
(svref +iso-8859-5-to-unicode+ (the ub8 (- octet #xa0)))))
370
(define-character-encoding :iso-8859-6
371
"An 8-bit, fixed-width character encoding in which codes #x00-#x9f
372
map to their Unicode equivalents and other codes map to other Unicode
373
character values. Intended to provide most characters found in the
376
:literal-char-code-limit #xa0)
378
(define-constant +unicode-a0-b0-to-iso-8859-6+
379
#(#xa0 nil nil nil #xa4 nil nil nil ; #xa0-#xa7
380
nil nil nil nil nil #xad nil nil) ; #xa8-#xaf
383
(define-constant +unicode-608-658-to-iso-8859-6+
384
#(nil nil nil nil #xac nil nil nil ; #x608-#x60f
385
nil nil nil nil nil nil nil nil ; #x610-#x617
386
nil nil nil #xbb nil nil nil #xbf ; #x618-#x61f
387
nil #xc1 #xc2 #xc3 #xc4 #xc5 #xc6 #xc7 ; #x620-#x627
388
#xc8 #xc9 #xca #xcb #xcc #xcd #xce #xcf ; #x628-#x62f
389
#xd0 #xd1 #xd2 #xd3 #xd4 #xd5 #xd6 #xd7 ; #x630-#x637
390
#xd8 #xd9 #xda nil nil nil nil nil ; #x638-#x63f
391
#xe0 #xe1 #xe2 #xe3 #xe4 #xe5 #xe6 #xe7 ; #x640-#x647
392
#xe8 #xe9 #xea #xeb #xec #xed #xee #xef ; #x648-#x64f
393
#xf0 #xf1 #xf2 nil nil nil nil nil) ; #x650-#x657
396
(define-unibyte-encoder :iso-8859-6 (code)
397
(or (cond ((< code #xa0) code)
399
(svref +unicode-a0-b0-to-iso-8859-6+
400
(the ub8 (- code #xa0))))
401
((<= #x608 code #x657)
402
(svref +unicode-608-658-to-iso-8859-6+
403
(the ub8 (- code #x608)))))
406
(define-constant +iso-8859-6-to-unicode+
408
#x00a0 #xfffd #xfffd #xfffd #x00a4 #xfffd #xfffd #xfffd
409
#xfffd #xfffd #xfffd #xfffd #x060c #x00ad #xfffd #xfffd
411
#xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd
412
#xfffd #xfffd #xfffd #x061b #xfffd #xfffd #xfffd #x061f
414
#xfffd #x0621 #x0622 #x0623 #x0624 #x0625 #x0626 #x0627
415
#x0628 #x0629 #x062a #x062b #x062c #x062d #x062e #x062f
417
#x0630 #x0631 #x0632 #x0633 #x0634 #x0635 #x0636 #x0637
418
#x0638 #x0639 #x063a #xfffd #xfffd #xfffd #xfffd #xfffd
420
#x0640 #x0641 #x0642 #x0643 #x0644 #x0645 #x0646 #x0647
421
#x0648 #x0649 #x064a #x064b #x064c #x064d #x064e #x064f
423
#x0650 #x0651 #x0652 #xfffd #xfffd #xfffd #xfffd #xfffd
424
#xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd)
427
(define-unibyte-decoder :iso-8859-6 (octet)
430
(svref +iso-8859-6-to-unicode+ (the ub8 (- octet #xa0)))))
432
(define-character-encoding :iso-8859-7
433
"An 8-bit, fixed-width character encoding in which codes
434
#x00-#x9f map to their Unicode equivalents and other codes map to
435
other Unicode character values. Intended to provide most
436
characters found in the Greek alphabet."
438
:literal-char-code-limit #xa0)
440
(define-constant +unicode-a0-c0-to-iso-8859-7+
441
#(#xa0 nil nil #xa3 nil nil #xa6 #xa7 ; #xa0-#xa7
442
#xa8 #xa9 nil #xab #xac #xad nil nil ; #xa8-#xaf
443
#xb0 #xb1 #xb2 #xb3 nil nil nil #xb7 ; #xb0-#xb7
444
nil nil nil #xbb nil #xbd nil nil) ; #xb8-#xbf
447
(define-constant +unicode-378-3d0-to-iso-8859-7+
448
#(nil nil #xaa nil nil nil nil nil ; #x378-#x37f
449
nil nil nil nil #xb4 #xb5 #xb6 nil ; #x380-#x387
450
#xb8 #xb9 #xba nil #xbc nil #xbe #xbf ; #x388-#x38f
451
#xc0 #xc1 #xc2 #xc3 #xc4 #xc5 #xc6 #xc7 ; #x390-#x397
452
#xc8 #xc9 #xca #xcb #xcc #xcd #xce #xcf ; #x398-#x39f
453
#xd0 #xd1 nil #xd3 #xd4 #xd5 #xd6 #xd7 ; #x3a0-#x3a7
454
#xd8 #xd9 #xda #xdb #xdc #xdd #xde #xdf ; #x3a8-#x3af
455
#xe0 #xe1 #xe2 #xe3 #xe4 #xe5 #xe6 #xe7 ; #x3b0-#x3b7
456
#xe8 #xe9 #xea #xeb #xec #xed #xee #xef ; #x3b8-#x3bf
457
#xf0 #xf1 #xf2 #xf3 #xf4 #xf5 #xf6 #xf7 ; #x3c0-#x3c7
458
#xf8 #xf9 #xfa #xfb #xfc #xfd #xfe nil) ; #x3c8-#x3cf
461
(define-constant +unicode-2010-2020-to-iso-8859-7+
462
#(nil nil nil nil nil #xaf nil nil ; #x2010-#x2017
463
#xa1 #xa2 nil nil nil nil nil nil) ; #x2018-#x201f
466
(define-constant +unicode-20ac-20b0-to-iso-8859-7+
470
(define-unibyte-encoder :iso-8859-7 (code)
471
(or (cond ((< code #xa0) code)
473
(svref +unicode-a0-c0-to-iso-8859-7+
474
(the ub8 (- code #xa0))))
475
((<= #x378 code #x3cf)
476
(svref +unicode-378-3d0-to-iso-8859-7+
477
(the ub8 (- code #x378))))
478
((<= #x2010 code #x201f)
479
(svref +unicode-2010-2020-to-iso-8859-7+
480
(the ub8 (- code #x2010))))
481
((<= #x201c code #x20af)
482
(svref +unicode-20ac-20b0-to-iso-8859-7+
483
(the ub8 (- code #x20ac)))))
486
(define-constant +iso-8859-7-to-unicode+
488
#x00a0 #x2018 #x2019 #x00a3 #x20ac #x20af #x00a6 #x00a7
489
#x00a8 #x00a9 #x037a #x00ab #x00ac #x00ad #xfffd #x2015
491
#x00b0 #x00b1 #x00b2 #x00b3 #x0384 #x0385 #x0386 #x00b7
492
#x0388 #x0389 #x038a #x00bb #x038c #x00bd #x038e #x038f
494
#x0390 #x0391 #x0392 #x0393 #x0394 #x0395 #x0396 #x0397
495
#x0398 #x0399 #x039a #x039b #x039c #x039d #x039e #x039f
497
#x03a0 #x03a1 #xfffd #x03a3 #x03a4 #x03a5 #x03a6 #x03a7
498
#x03a8 #x03a9 #x03aa #x03ab #x03ac #x03ad #x03ae #x03af
500
#x03b0 #x03b1 #x03b2 #x03b3 #x03b4 #x03b5 #x03b6 #x03b7
501
#x03b8 #x03b9 #x03ba #x03bb #x03bc #x03bd #x03be #x03bf
503
#x03c0 #x03c1 #x03c2 #x03c3 #x03c4 #x03c5 #x03c6 #x03c7
504
#x03c8 #x03c9 #x03ca #x03cb #x03cc #x03cd #x03ce #xfffd)
507
(define-unibyte-decoder :iso-8859-7 (octet)
510
(svref +iso-8859-7-to-unicode+ (the ub8 (- octet #xa0)))))
512
(define-character-encoding :iso-8859-8
513
"An 8-bit, fixed-width character encoding in which codes #x00-#x9f
514
map to their Unicode equivalents and other codes map to other Unicode
515
character values. Intended to provide most characters found in the
518
:literal-char-code-limit #xa0)
520
(define-constant +unicode-a0-f8-to-iso-8859-8+
521
#(#xa0 nil #xa2 #xa3 #xa4 #xa5 #xa6 #xa7 ; #xa0-#xa7
522
#xa8 #xa9 nil #xab #xac #xad #xae #xaf ; #xa8-#xaf
523
#xb0 #xb1 #xb2 #xb3 #xb4 #xb5 #xb6 #xb7 ; #xb0-#xb7
524
#xb8 #xb9 nil #xbb #xbc #xbd #xbe nil ; #xb8-#xbf
525
nil nil nil nil nil nil nil nil ; #xc0-#xc7
526
nil nil nil nil nil nil nil nil ; #xc8-#xcf
527
nil nil nil nil nil nil nil #xaa ; #xd0-#xd7
528
nil nil nil nil nil nil nil nil ; #xd8-#xdf
529
nil nil nil nil nil nil nil nil ; #xe0-#xe7
530
nil nil nil nil nil nil nil nil ; #xe8-#xef
531
nil nil nil nil nil nil nil #xba) ; #xf0-#xf7
534
(define-constant +unicode-5d0-5f0-to-iso-8859-8+
535
#(#xe0 #xe1 #xe2 #xe3 #xe4 #xe5 #xe6 #xe7 ; #x5d0-#x5d7
536
#xe8 #xe9 #xea #xeb #xec #xed #xee #xef ; #x5d8-#x5df
537
#xf0 #xf1 #xf2 #xf3 #xf4 #xf5 #xf6 #xf7 ; #x5e0-#x5e7
538
#xf8 #xf9 #xfa nil nil nil nil nil) ; #x5e8-#x5ef
541
(define-constant +unicode-2008-2018-to-iso-8859-8+
542
#(nil nil nil nil nil nil #xfd #xfe ; #x2008-#x200f
543
nil nil nil nil nil nil nil #xdf) ; #x2010-#x2017
546
(define-unibyte-encoder :iso-8859-8 (code)
547
(or (cond ((< code #xa0) code)
549
(svref +unicode-a0-f8-to-iso-8859-8+
550
(the ub8 (- code #xa0))))
551
((<= #x5d0 code #x5ef)
552
(svref +unicode-5d0-5f0-to-iso-8859-8+
553
(the ub8 (- code #x5d0))))
554
((<= #x2008 code #x201f)
555
(svref +unicode-2008-2018-to-iso-8859-8+
556
(the ub8 (- code #x2008)))))
559
(define-constant +iso-8859-8-to-unicode+
561
#x00a0 #xfffd #x00a2 #x00a3 #x00a4 #x00a5 #x00a6 #x00a7
562
#x00a8 #x00a9 #x00d7 #x00ab #x00ac #x00ad #x00ae #x00af
564
#x00b0 #x00b1 #x00b2 #x00b3 #x00b4 #x00b5 #x00b6 #x00b7
565
#x00b8 #x00b9 #x00f7 #x00bb #x00bc #x00bd #x00be #xfffd
567
#xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd
568
#xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd
570
#xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd
571
#xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #xfffd #x2017
573
#x05d0 #x05d1 #x05d2 #x05d3 #x05d4 #x05d5 #x05d6 #x05d7
574
#x05d8 #x05d9 #x05da #x05db #x05dc #x05dd #x05de #x05df
576
#x05e0 #x05e1 #x05e2 #x05e3 #x05e4 #x05e5 #x05e6 #x05e7
577
#x05e8 #x05e9 #x05ea #xfffd #xfffd #x200e #x200f #xfffd)
580
(define-unibyte-decoder :iso-8859-8 (octet)
583
(svref +iso-8859-8-to-unicode+ (the ub8 (- octet #xa0)))))
585
(define-character-encoding :iso-8859-9
586
"An 8-bit, fixed-width character encoding in which codes
587
#x00-#xcf map to their Unicode equivalents and other codes map to
588
other Unicode character values. Intended to provide most
589
characters found in the Turkish alphabet."
590
:aliases '(:latin-5 :latin5)
591
:decode-literal-code-unit-limit #xd0
592
:encode-literal-code-unit-limit #xa0)
594
(define-constant +unicode-d0-100-to-iso-8859-9+
595
#(nil #xd1 #xd2 #xd3 #xd4 #xd5 #xd6 #xd7 ; #xd0-#xd7
596
#xd8 #xd9 #xda #xdb #xdc nil nil #xdf ; #xd8-#xdf
597
#xe0 #xe1 #xe2 #xe3 #xe4 #xe5 #xe6 #xe7 ; #xe0-#xe7
598
#xe8 #xe9 #xea #xeb #xec #xed #xee #xef ; #xe8-#xef
599
nil #xf1 #xf2 #xf3 #xf4 #xf5 #xf6 #xf7 ; #xf0-#xf7
600
#xf8 #xf9 #xfa #xfb #xfc nil nil #xff) ; #xf8-#xff
603
(define-constant +unicode-118-160-to-iso-8859-9+
604
#(nil nil nil nil nil nil #xd0 #xf0 ; #x118-#x11f
605
nil nil nil nil nil nil nil nil ; #x120-#x127
606
nil nil nil nil nil nil nil nil ; #x128-#x12f
607
#xdd #xfd nil nil nil nil nil nil ; #x130-#x137
608
nil nil nil nil nil nil nil nil ; #x138-#x13f
609
nil nil nil nil nil nil nil nil ; #x140-#x147
610
nil nil nil nil nil nil nil nil ; #x148-#x14f
611
nil nil nil nil nil nil nil nil ; #x150-#x157
612
nil nil nil nil nil nil #xde #xfe) ; #x158-#x15f
615
(define-unibyte-encoder :iso-8859-9 (code)
616
(or (cond ((< code #xd0) code)
618
(svref +unicode-d0-100-to-iso-8859-9+
619
(the ub8 (- code #xd0))))
620
((<= #x118 code #x15f)
621
(svref +unicode-118-160-to-iso-8859-9+
622
(the ub8 (- code #x118)))))
625
(define-constant +iso-8859-9-to-unicode+
627
#x011e #x00d1 #x00d2 #x00d3 #x00d4 #x00d5 #x00d6 #x00d7
628
#x00d8 #x00d9 #x00da #x00db #x00dc #x0130 #x015e #x00df
630
#x00e0 #x00e1 #x00e2 #x00e3 #x00e4 #x00e5 #x00e6 #x00e7
631
#x00e8 #x00e9 #x00ea #x00eb #x00ec #x00ed #x00ee #x00ef
633
#x011f #x00f1 #x00f2 #x00f3 #x00f4 #x00f5 #x00f6 #x00f7
634
#x00f8 #x00f9 #x00fa #x00fb #x00fc #x0131 #x015f #x00ff)
637
(define-unibyte-decoder :iso-8859-9 (octet)
640
(svref +iso-8859-9-to-unicode+ (the ub8 (- octet #xd0)))))
642
(define-character-encoding :iso-8859-10
643
"An 8-bit, fixed-width character encoding in which codes
644
#x00-#x9f map to their Unicode equivalents and other codes map to
645
other Unicode character values. Intended to provide most
646
characters found in Nordic alphabets."
647
:aliases '(:latin-6 :latin6)
648
:literal-char-code-limit #xa0)
650
(define-constant +unicode-a0-180-to-iso-8859-10+
651
#(#xa0 nil nil nil nil nil nil #xa7 ; #xa0-#xa7
652
nil nil nil nil nil #xad nil nil ; #xa8-#xaf
653
#xb0 nil nil nil nil nil nil #xb7 ; #xb0-#xb7
654
nil nil nil nil nil #x2015 nil nil ; #xb8-#xbf
655
nil #xc1 #xc2 #xc3 #xc4 #xc5 #xc6 nil ; #xc0-#xc7
656
nil #xc9 nil #xcb nil #xcd #xce #xcf ; #xc8-#xcf
657
#xd0 nil nil #xd3 #xd4 #xd5 #xd6 nil ; #xd0-#xd7
658
#xd8 nil #xda #xdb #xdc #xdd #xde #xdf ; #xd8-#xdf
659
nil #xe1 #xe2 #xe3 #xe4 #xe5 #xe6 nil ; #xe0-#xe7
660
nil #xe9 nil #xeb nil #xed #xee #xef ; #xe8-#xef
661
#xf0 nil nil #xf3 #xf4 #xf5 #xf6 nil ; #xf0-#xf7
662
#xf8 nil #xfa #xfb #xfc #xfd #xfe nil ; #xf8-#xff
663
#xc0 #xe0 nil nil #xa1 #xb1 nil nil ; #x100-#x107
664
nil nil nil nil #xc8 #xe8 nil nil ; #x108-#x10f
665
#xa9 #xb9 #xa2 #xb2 nil nil #xcc #xec ; #x110-#x117
666
#xca #xea nil nil nil nil nil nil ; #x118-#x11f
667
nil nil #xa3 #xb3 nil nil nil nil ; #x120-#x127
668
#xa5 #xb5 #xa4 #xb4 nil nil #xc7 #xe7 ; #x128-#x12f
669
nil nil nil nil nil nil #xa6 #xb6 ; #x130-#x137
670
#xff nil nil #xa8 #xb8 nil nil nil ; #x138-#x13f
671
nil nil nil nil nil #xd1 #xf1 nil ; #x140-#x147
672
nil nil #xaf #xbf #xd2 #xf2 nil nil ; #x148-#x14f
673
nil nil nil nil nil nil nil nil ; #x150-#x157
674
nil nil nil nil nil nil nil nil ; #x158-#x15f
675
#xaa #xba nil nil nil nil #xab #xbb ; #x160-#x167
676
#xd7 #xf7 #xae #xbe nil nil nil nil ; #x168-#x16f
677
nil nil #xd9 #xf9 nil nil nil nil ; #x170-#x177
678
nil nil nil nil nil #xac #xbc nil) ; #x178-#x17f
681
(define-unibyte-encoder :iso-8859-10 (code)
682
(or (cond ((< code #xa0) code)
684
(svref +unicode-a0-180-to-iso-8859-10+
685
(the ub8 (- code #xa0))))
687
((= code #x2015) #xbd))
690
(define-constant +iso-8859-10-to-unicode+
692
#x00a0 #x0104 #x0112 #x0122 #x012a #x0128 #x0136 #x00a7
693
#x013b #x0110 #x0160 #x0166 #x017d #x00ad #x016a #x014a
695
#x00b0 #x0105 #x0113 #x0123 #x012b #x0129 #x0137 #x00b7
696
#x013c #x0111 #x0161 #x0167 #x017e #x2015 #x016b #x014b
698
#x0100 #x00c1 #x00c2 #x00c3 #x00c4 #x00c5 #x00c6 #x012e
699
#x010c #x00c9 #x0118 #x00cb #x0116 #x00cd #x00ce #x00cf
701
#x00d0 #x0145 #x014c #x00d3 #x00d4 #x00d5 #x00d6 #x0168
702
#x00d8 #x0172 #x00da #x00db #x00dc #x00dd #x00de #x00df
704
#x0101 #x00e1 #x00e2 #x00e3 #x00e4 #x00e5 #x00e6 #x012f
705
#x010d #x00e9 #x0119 #x00eb #x0117 #x00ed #x00ee #x00ef
707
#x00f0 #x0146 #x014d #x00f3 #x00f4 #x00f5 #x00f6 #x0169
708
#x00f8 #x0173 #x00fa #x00fb #x00fc #x00fd #x00fe #x0138)
711
(define-unibyte-decoder :iso-8859-10 (octet)
714
(svref +iso-8859-10-to-unicode+ (the ub8 (- octet #xa0)))))
716
(define-character-encoding :iso-8859-11
717
"An 8-bit, fixed-width character encoding in which codes
718
#x00-#x9f map to their Unicode equivalents and other codes map to
719
other Unicode character values. Intended to provide most
720
characters found the Thai alphabet."
722
:literal-char-code-limit #xa0)
724
(define-unibyte-encoder :iso-8859-11 (code)
725
(cond ((< code #xa1) code)
726
((and (<= #xe01 code #xe5b)
727
(not (<= #xe3b code #xe3e))
728
(not (<= #xe5c code #xe5f)))
732
(define-unibyte-decoder :iso-8859-11 (octet)
733
(cond ((<= octet #xa0) octet)
734
((or (<= #xdb octet #xde)
735
(<= #xfc octet #xff))
741
;;; There is no iso-8859-12 encoding.
743
(define-character-encoding :iso-8859-13
744
"An 8-bit, fixed-width character encoding in which codes
745
#x00-#x9f map to their Unicode equivalents and other codes map to
746
other Unicode character values. Intended to provide most
747
characters found in Baltic alphabets."
749
:literal-char-code-limit #xa0)
751
(define-constant +unicode-a0-180-to-iso-8859-13+
752
#(#xa0 nil #xa2 #xa3 #xa4 nil #xa6 #xa7 ; #xa0-#xa7
753
nil #xa9 nil #xab #xac #xad #xae nil ; #xa8-#xaf
754
#xb0 #xb1 #xb2 #xb3 nil #xb5 #xb6 #xb7 ; #xb0-#xb7
755
nil #xb9 nil #xbb #xbc #xbd #xbe nil ; #xb8-#xbf
756
nil nil nil nil #xc4 #xc5 #xaf nil ; #xc0-#xc7
757
nil #xc9 nil nil nil nil nil nil ; #xc8-#xcf
758
nil nil nil #xd3 nil #xd5 #xd6 #xd7 ; #xd0-#xd7
759
#xa8 nil nil nil #xdc nil nil #xdf ; #xd8-#xdf
760
nil nil nil nil #xe4 #xe5 #xbf nil ; #xe0-#xe7
761
nil #xe9 nil nil nil nil nil nil ; #xe8-#xef
762
nil nil nil #xf3 nil #xf5 #xf6 #xf7 ; #xf0-#xf7
763
#xb8 nil nil nil #xfc nil nil nil ; #xf8-#xff
764
#xc2 #xe2 nil nil #xc0 #xe0 #xc3 #xe3 ; #x100-#x107
765
nil nil nil nil #xc8 #xe8 nil nil ; #x108-#x10f
766
nil nil #xc7 #xe7 nil nil #xcb #xeb ; #x110-#x117
767
#xc6 #xe6 nil nil nil nil nil nil ; #x118-#x11f
768
nil nil #xcc #xec nil nil nil nil ; #x120-#x127
769
nil nil #xce #xee nil nil #xc1 #xe1 ; #x128-#x12f
770
nil nil nil nil nil nil #xcd #xed ; #x130-#x137
771
nil nil nil #xcf #xef nil nil nil ; #x138-#x13f
772
nil #xd9 #xf9 #xd1 #xf1 #xd2 #xf2 nil ; #x140-#x147
773
nil nil nil nil #xd4 #xf4 nil nil ; #x148-#x14f
774
nil nil nil nil nil nil #xaa #xba ; #x150-#x157
775
nil nil #xda #xfa nil nil nil nil ; #x158-#x15f
776
#xd0 #xf0 nil nil nil nil nil nil ; #x160-#x167
777
nil nil #xdb #xfb nil nil nil nil ; #x168-#x16f
778
nil nil #xd8 #xf8 nil nil nil nil ; #x170-#x177
779
nil #xca #xea #xdd #xfd #xde #xfe nil) ; #x178-#x17f
782
(define-constant +unicode-2018-2020-to-iso-8859-13+
783
#(nil #xff nil nil #xb4 #xa1 #xa5 nil) ; #x2018-#x201f
786
(define-unibyte-encoder :iso-8859-13 (code)
787
(or (cond ((< code #xa0) code)
789
(svref +unicode-a0-180-to-iso-8859-13+
790
(the ub8 (- code #xa0))))
791
((<= #x2018 code #x201f)
792
(svref +unicode-2018-2020-to-iso-8859-13+
793
(the ub8 (- code #x2018)))))
796
(define-constant +iso-8859-13-to-unicode+
798
#x00a0 #x201d #x00a2 #x00a3 #x00a4 #x201e #x00a6 #x00a7
799
#x00d8 #x00a9 #x0156 #x00ab #x00ac #x00ad #x00ae #x00c6
801
#x00b0 #x00b1 #x00b2 #x00b3 #x201c #x00b5 #x00b6 #x00b7
802
#x00f8 #x00b9 #x0157 #x00bb #x00bc #x00bd #x00be #x00e6
804
#x0104 #x012e #x0100 #x0106 #x00c4 #x00c5 #x0118 #x0112
805
#x010c #x00c9 #x0179 #x0116 #x0122 #x0136 #x012a #x013b
807
#x0160 #x0143 #x0145 #x00d3 #x014c #x00d5 #x00d6 #x00d7
808
#x0172 #x0141 #x015a #x016a #x00dc #x017b #x017d #x00df
810
#x0105 #x012f #x0101 #x0107 #x00e4 #x00e5 #x0119 #x0113
811
#x010d #x00e9 #x017a #x0117 #x0123 #x0137 #x012b #x013c
813
#x0161 #x0144 #x0146 #x00f3 #x014d #x00f5 #x00f6 #x00f7
814
#x0173 #x0142 #x015b #x016b #x00fc #x017c #x017e #x2019)
817
(define-unibyte-decoder :iso-8859-13 (octet)
820
(svref +iso-8859-13-to-unicode+ (the ub8 (- octet #xa0)))))
822
(define-character-encoding :iso-8859-14
823
"An 8-bit, fixed-width character encoding in which codes
824
#x00-#x9f map to their Unicode equivalents and other codes map to
825
other Unicode character values. Intended to provide most
826
characters found in Celtic languages."
827
:aliases '(:latin-8 :latin8)
828
:literal-char-code-limit #xa0)
830
(define-constant +unicode-a0-100-to-iso-8859-14+
831
#(#xa0 nil nil #xa3 nil nil nil #xa7 ; #xa0-#xa7
832
nil #xa9 nil nil nil #xad #xae nil ; #xa8-#xaf
833
nil nil nil nil nil nil #xb6 nil ; #xb0-#xb7
834
nil nil nil nil nil nil nil nil ; #xb8-#xbf
835
#xc0 #xc1 #xc2 #xc3 #xc4 #xc5 #xc6 #xc7 ; #xc0-#xc7
836
#xc8 #xc9 #xca #xcb #xcc #xcd #xce #xcf ; #xc8-#xcf
837
nil #xd1 #xd2 #xd3 #xd4 #xd5 #xd6 nil ; #xd0-#xd7
838
#xd8 #xd9 #xda #xdb #xdc #xdd nil #xdf ; #xd8-#xdf
839
#xe0 #xe1 #xe2 #xe3 #xe4 #xe5 #xe6 #xe7 ; #xe0-#xe7
840
#xe8 #xe9 #xea #xeb #xec #xed #xee #xef ; #xe8-#xef
841
nil #xf1 #xf2 #xf3 #xf4 #xf5 #xf6 nil ; #xf0-#xf7
842
#xf8 #xf9 #xfa #xfb #xfc #xfd nil #xff) ; #xf8-#xff
845
(define-constant +unicode-108-128-to-iso-8859-14+
846
#(nil nil #xa4 #xa5 nil nil nil nil ; #x108-#x10f
847
nil nil nil nil nil nil nil nil ; #x110-#x117
848
nil nil nil nil nil nil nil nil ; #x118-#x11f
849
#xb2 #xb3 nil nil nil nil nil nil) ; #x120-#x127
852
(define-constant +unicode-170-180-to-iso-8859-14+
853
#(nil nil nil nil #xd0 #xf0 #xde #xfe ; #x170-#x177
854
#xaf nil nil nil nil nil nil nil) ; #x178-#x17f
857
(define-constant +unicode-1e00-1e88-to-iso-8859-14+
858
#(nil nil #xa1 #xa2 nil nil nil nil ; #x1e00-#x1e07
859
nil nil #xa6 #xab nil nil nil nil ; #x1e08-#x1e0f
860
nil nil nil nil nil nil nil nil ; #x1e10-#x1e17
861
nil nil nil nil nil nil #xb0 #xb1 ; #x1e18-#x1e1f
862
nil nil nil nil nil nil nil nil ; #x1e20-#x1e27
863
nil nil nil nil nil nil nil nil ; #x1e28-#x1e2f
864
nil nil nil nil nil nil nil nil ; #x1e30-#x1e37
865
nil nil nil nil nil nil nil nil ; #x1e38-#x1e3f
866
#xb4 #xb5 nil nil nil nil nil nil ; #x1e40-#x1e47
867
nil nil nil nil nil nil nil nil ; #x1e48-#x1e4f
868
nil nil nil nil nil nil #xb7 #xb9 ; #x1e50-#x1e57
869
nil nil nil nil nil nil nil nil ; #x1e58-#x1e5f
870
#xbb #xbf nil nil nil nil nil nil ; #x1e60-#x1e67
871
nil nil #xd7 #xf7 nil nil nil nil ; #x1e68-#x1e6f
872
nil nil nil nil nil nil nil nil ; #x1e70-#x1e77
873
nil nil nil nil nil nil nil nil ; #x1e78-#x1e7f
874
#xa8 #xb8 #xaa #xba #xbd #xbe nil nil) ; #x1e80-#x1e87
877
(define-constant +unicode-1ef0-1ef8-to-iso-8859-14+
878
#(nil nil #xac #xbc nil nil nil nil) ; #x1ef0-#x1ef7
881
(define-unibyte-encoder :iso-8859-14 (code)
882
(or (cond ((< code #xa0) code)
884
(svref +unicode-a0-100-to-iso-8859-14+
885
(the ub8 (- code #xa0))))
886
((<= #x108 code #x127)
887
(svref +unicode-108-128-to-iso-8859-14+
888
(the ub8 (- code #x108))))
889
((<= #x170 code #x17f)
890
(svref +unicode-170-180-to-iso-8859-14+
891
(the ub8 (- code #x170))))
892
((<= #x1e00 code #x1e87)
893
(svref +unicode-1e00-1e88-to-iso-8859-14+
894
(the ub8 (- code #x1e00))))
895
((<= #x1ef0 code #x1ef7)
896
(svref +unicode-1ef0-1ef8-to-iso-8859-14+
897
(the ub8 (- code #x1ef0)))))
900
(define-constant +iso-8859-14-to-unicode+
902
#x00a0 #x1e02 #x1e03 #x00a3 #x010a #x010b #x1e0a #x00a7
903
#x1e80 #x00a9 #x1e82 #x1e0b #x1ef2 #x00ad #x00ae #x0178
905
#x1e1e #x1e1f #x0120 #x0121 #x1e40 #x1e41 #x00b6 #x1e56
906
#x1e81 #x1e57 #x1e83 #x1e60 #x1ef3 #x1e84 #x1e85 #x1e61
908
#x00c0 #x00c1 #x00c2 #x00c3 #x00c4 #x00c5 #x00c6 #x00c7
909
#x00c8 #x00c9 #x00ca #x00cb #x00cc #x00cd #x00ce #x00cf
911
#x0174 #x00d1 #x00d2 #x00d3 #x00d4 #x00d5 #x00d6 #x1e6a
912
#x00d8 #x00d9 #x00da #x00db #x00dc #x00dd #x0176 #x00df
914
#x00e0 #x00e1 #x00e2 #x00e3 #x00e4 #x00e5 #x00e6 #x00e7
915
#x00e8 #x00e9 #x00ea #x00eb #x00ec #x00ed #x00ee #x00ef
917
#x0175 #x00f1 #x00f2 #x00f3 #x00f4 #x00f5 #x00f6 #x1e6b
918
#x00f8 #x00f9 #x00fa #x00fb #x00fc #x00fd #x0177 #x00ff)
921
(define-unibyte-decoder :iso-8859-14 (octet)
924
(svref +iso-8859-14-to-unicode+ (the ub8 (- octet #xa0)))))
926
(define-character-encoding :iso-8859-15
927
"An 8-bit, fixed-width character encoding in which codes
928
#x00-#x9f map to their Unicode equivalents and other codes map to
929
other Unicode character values. Intended to provide most
930
characters found in Western European languages (including the
931
Euro sign and some other characters missing from ISO-8859-1."
932
:aliases '(:latin-9 :latin9)
933
:literal-char-code-limit #xa0)
935
(define-constant +unicode-a0-100-to-iso-8859-15+
936
#(#xa0 #xa1 #xa2 #xa3 nil #xa5 nil #xa7 ; #xa0-#xa7
937
nil #xa9 #xaa #xab #xac #xad #xae #xaf ; #xa8-#xaf
938
#xb0 #xb1 #xb2 #xb3 nil #xb5 #xb6 #xb7 ; #xb0-#xb7
939
nil #xb9 #xba #xbb nil nil nil #xbf ; #xb8-0xbf
940
#xc0 #xc1 #xc2 #xc3 #xc4 #xc5 #xc6 #xc7 ; #xc0-#xc7
941
#xc8 #xc9 #xca #xcb #xcc #xcd #xce #xcf ; #xc8-#xcf
942
#xd0 #xd1 #xd2 #xd3 #xd4 #xd5 #xd6 #xd7 ; #xd0-#xd7
943
#xd8 #xd9 #xda #xdb #xdc #xdd #xde #xdf ; #xd8-#xdf
944
#xe0 #xe1 #xe2 #xe3 #xe4 #xe5 #xe6 #xe7 ; #xe0-#xe7
945
#xe8 #xe9 #xea #xeb #xec #xed #xee #xef ; #xe8-#xef
946
#xf0 #xf1 #xf2 #xf3 #xf4 #xf5 #xf6 #xf7 ; #xf0-#xf7
947
#xf8 #xf9 #xfa #xfb #xfc #xfd #xfe #xff) ; #xf8-#xff
950
(define-constant +unicode-150-180-to-iso-8859-15+
951
#(nil nil #xbc #xbd nil nil nil nil ; #x150-#x157
952
nil nil nil nil nil nil nil nil ; #x158-#x15f
953
#xa6 #xa8 nil nil nil nil nil nil ; #x160-#x167
954
nil nil nil nil nil nil nil nil ; #x168-#x16f
955
nil nil nil nil nil nil nil nil ; #x170-#x177
956
#xbe nil nil nil nil #xb4 #xb8 nil) ; #x178-#x17f
959
(define-unibyte-encoder :iso-8859-15 (code)
960
(or (cond ((< code #xa0) code)
962
(svref +unicode-a0-100-to-iso-8859-15+
963
(the ub8 (- code #xa0))))
964
((<= #x150 code #x1f7)
965
(svref +unicode-150-180-to-iso-8859-15+
966
(the ub8 (- code #x150))))
968
((= code #x20ac) #xa4))
971
(define-constant +iso-8859-15-to-unicode+
973
#x00a0 #x00a1 #x00a2 #x00a3 #x20ac #x00a5 #x0160 #x00a7
974
#x0161 #x00a9 #x00aa #x00ab #x00ac #x00ad #x00ae #x00af
976
#x00b0 #x00b1 #x00b2 #x00b3 #x017d #x00b5 #x00b6 #x00b7
977
#x017e #x00b9 #x00ba #x00bb #x0152 #x0153 #x0178 #x00bf
979
#x00c0 #x00c1 #x00c2 #x00c3 #x00c4 #x00c5 #x00c6 #x00c7
981
#x00c8 #x00c9 #x00ca #x00cb #x00cc #x00cd #x00ce #x00cf
983
#x00d0 #x00d1 #x00d2 #x00d3 #x00d4 #x00d5 #x00d6 #x00d7
985
#x00d8 #x00d9 #x00da #x00db #x00dc #x00dd #x00de #x00df
987
#x00e0 #x00e1 #x00e2 #x00e3 #x00e4 #x00e5 #x00e6 #x00e7
989
#x00e8 #x00e9 #x00ea #x00eb #x00ec #x00ed #x00ee #x00ef
991
#x00f0 #x00f1 #x00f2 #x00f3 #x00f4 #x00f5 #x00f6 #x00f7
993
#x00f8 #x00f9 #x00fa #x00fb #x00fc #x00fd #x00fe #x00ff)
996
(define-unibyte-decoder :iso-8859-15 (octet)
999
(svref +iso-8859-15-to-unicode+ (the ub8 (- octet #xa0)))))
1001
(define-character-encoding :iso-8859-16
1002
"An 8-bit, fixed-width character encoding in which codes
1003
#x00-#x9f map to their Unicode equivalents and other codes map to
1004
other Unicode character values. Intended to provide most
1005
characters found in Southeast European languages."
1006
:aliases '(:latin-10 :latin10)
1007
:literal-char-code-limit #xa0)
1009
(define-constant +unicode-a0-180-to-iso-8859-16+
1010
#(#xa0 nil nil nil nil nil nil #xa7 ; #xa0-#xa7
1011
nil #xa9 nil #xab nil #xad nil nil ; #xa8-#xaf
1012
#xb0 #xb1 nil nil nil nil #xb6 #xb7 ; #xb0-#xb7
1013
nil nil nil #xbb nil nil nil nil ; #xb8-#xbf
1014
#xc0 #xc1 #xc2 nil #xc4 nil #xc6 #xc7 ; #xc0-#xc7
1015
#xc8 #xc9 #xca #xcb #xcc #xcd #xce #xcf ; #xc8-#xcf
1016
nil nil #xd2 #xd3 #xd4 nil #xd6 nil ; #xd0-#xd7
1017
nil #xd9 #xda #xdb #xdc nil nil #xdf ; #xd8-#xdf
1018
#xe0 #xe1 #xe2 nil #xe4 nil #xe6 #xe7 ; #xe0-#xe7
1019
#xe8 #xe9 #xea #xeb #xec #xed #xee #xef ; #xe8-#xef
1020
nil nil #xf2 #xf3 #xf4 nil #xf6 nil ; #xf0-#xf7
1021
nil #xf9 #xfa #xfb #xfc nil nil #xff ; #xf8-#xff
1022
nil nil #xc3 #xe3 #xa1 #xa2 #xc5 #xe5 ; #x100-#x107
1023
nil nil nil nil #xb2 #xb9 nil nil ; #x108-#x10f
1024
#xd0 #xf0 nil nil nil nil nil nil ; #x110-#x117
1025
#xdd #xfd nil nil nil nil nil nil ; #x118-#x11f
1026
nil nil nil nil nil nil nil nil ; #x120-#x127
1027
nil nil nil nil nil nil nil nil ; #x128-#x12f
1028
nil nil nil nil nil nil nil nil ; #x130-#x137
1029
nil nil nil nil nil nil nil nil ; #x138-#x13f
1030
nil #xa3 #xb3 #xd1 #xf1 nil nil nil ; #x140-#x147
1031
nil nil nil nil nil nil nil nil ; #x148-#x14f
1032
#xd5 #xf5 #xbc #xbd nil nil nil nil ; #x150-#x157
1033
nil nil #xd7 #xf7 nil nil nil nil ; #x158-#x15f
1034
#xa6 #xa8 nil nil nil nil nil nil ; #x160-#x167
1035
nil nil nil nil nil nil nil nil ; #x168-#x16f
1036
#xd8 #xf8 nil nil nil nil nil nil ; #x170-#x177
1037
#xbe #xac #xae #xaf #xbf #xb4 #xb8 nil) ; #x178-#x17f
1040
(define-constant +unicode-218-220-to-iso-8859-16+
1041
#(#xaa #xba #xde #xfe nil nil nil nil) ; #x218-#x21f
1044
(define-constant +unicode-2018-2020-to-iso-8859-16+
1045
#(nil nil nil nil nil #xb5 #xa5 nil) ; #x2018-#x201f
1048
(define-unibyte-encoder :iso-8859-16 (code)
1049
(or (cond ((< code #xa0) code)
1051
(svref +unicode-a0-180-to-iso-8859-16+
1052
(the ub8 (- code #xa0))))
1053
((<= #x218 code #x21f)
1054
(svref +unicode-218-220-to-iso-8859-16+
1055
(the ub8 (- code #x218))))
1056
((< #x2018 code #x201f)
1057
(svref +unicode-2018-2020-to-iso-8859-16+
1058
(the ub8 (- code #x2018))))
1060
((= code #x20ac) #xa4))
1063
(define-constant +iso-8859-16-to-unicode+
1065
#x00a0 #x0104 #x0105 #x0141 #x20ac #x201e #x0160 #x00a7
1066
#x0161 #x00a9 #x0218 #x00ab #x0179 #x00ad #x017a #x017b
1068
#x00b0 #x00b1 #x010c #x0142 #x017d #x201d #x00b6 #x00b7
1069
#x017e #x010d #x0219 #x00bb #x0152 #x0153 #x0178 #x017c
1071
#x00c0 #x00c1 #x00c2 #x0102 #x00c4 #x0106 #x00c6 #x00c7
1072
#x00c8 #x00c9 #x00ca #x00cb #x00cc #x00cd #x00ce #x00cf
1074
#x0110 #x0143 #x00d2 #x00d3 #x00d4 #x0150 #x00d6 #x015a
1075
#x0170 #x00d9 #x00da #x00db #x00dc #x0118 #x021a #x00df
1077
#x00e0 #x00e1 #x00e2 #x0103 #x00e4 #x0107 #x00e6 #x00e7
1078
#x00e8 #x00e9 #x00ea #x00eb #x00ec #x00ed #x00ee #x00ef
1080
#x0111 #x0144 #x00f2 #x00f3 #x00f4 #x0151 #x00f6 #x015b
1081
#x0171 #x00f9 #x00fa #x00fb #x00fc #x0119 #x021b #x00ff)
1084
(define-unibyte-decoder :iso-8859-16 (octet)
1087
(svref +iso-8859-16-to-unicode+ (the ub8 (- octet #xa0)))))