Previous 199869 Revisions Next

r26117 Tuesday 12th November, 2013 at 10:20:52 UTC by Jürgen Buchmüller
Add Unicode lookup tables from http://www.unicode.org/Public/MAPPINGS and support for a Unicode table replacing ASCII to dvmemory
[/branches/alto2/src/emu/cpu/alto2]alto2.c alto2dsm.c
[/branches/alto2/src/emu/debug]dvdisasm.c dvmemory.c dvmemory.h
[/branches/alto2/src/lib/util]unicode.c unicode.h

branches/alto2/src/emu/cpu/alto2/alto2.c
r26116r26117
24112411      /* nano seconds per cycle */
24122412      m_ntime[m_task] += ALTO2_UCYCLE;
24132413
2414      debugger_instruction_hook(this, m_mpc);
24152414      /* next instruction's mpc */
24162415      m_mpc = m_next;
24172416      m_mir = m_ucode->read_dword(m_mpc);
r26116r26117
24222421      bs = MIR_BS(m_mir);
24232422      f1 = MIR_F1(m_mir);
24242423      f2 = MIR_F2(m_mir);
2425      LOG((LOG_CPU,2,"\n%s-%04o: r:%02o af:%02o bs:%02o f1:%02o f2:%02o t:%o l:%o next:%05o next2:%05o cycle:%lld\n",
2426         task_name(m_task), m_mpc, m_rsel, aluf, bs, f1, f2, MIR_T(m_mir), MIR_L(m_mir), m_next, m_next2, cycle()));
2424      LOG((LOG_CPU,2,"\n%s-%04o: %011o r:%02o aluf:%02o bs:%02o f1:%02o f2:%02o t:%o l:%o next:%05o next2:%05o\n",
2425         task_name(m_task), m_mpc, m_mir, m_rsel, aluf, bs, f1, f2, MIR_T(m_mir), MIR_L(m_mir), m_next, m_next2));
2426      debugger_instruction_hook(this, m_mpc);
24272427
24282428      /*
24292429       * This bus source decoding is not performed if f1 = 7 or f2 = 7.
branches/alto2/src/emu/cpu/alto2/alto2dsm.c
r26116r26117
211211   UINT16 prefetch = next2 & 1023;
212212   char *dst = buffer;
213213   offs_t result = 1 | DASMFLAG_SUPPORTED;
214   int pa;
214   UINT8 pa;
215215
216216   if (next != pc + 1)
217217      result |= DASMFLAG_STEP_OUT;
r26116r26117
368368      dst += snprintf(dst, len - (size_t)(dst - buffer), "BUS←%s ", regname[rsel]);
369369      break;
370370   case 1:   // load R from shifter output
371      // dst += snprintf(dst, len - (size_t)(dst - buffer), "; %s←", rn[rsel]);
371      // dst += snprintf(dst, len - (size_t)(dst - buffer), "; %s←", regname[rsel]);
372372      break;
373373   case 2: // enables no source to the BUS, leaving it all ones
374374      dst += snprintf(dst, len - (size_t)(dst - buffer), "BUS←177777 ");
r26116r26117
424424   switch (f2) {
425425   case 0:   // no operation
426426      break;
427   case 1:   // NEXT ← NEXT OR (if (BUS=0) then 1 else 0)
428      dst += snprintf(dst, len - (size_t)(dst - buffer), "[(BUS=0) ? %s : %s] ",
427   case 1:   // NEXT ← NEXT OR (BUS==0 ? 1 : 0)
428      dst += snprintf(dst, len - (size_t)(dst - buffer), "[BUS==0 ? %s : %s] ",
429429         addrname((prefetch | 1) & MCODE_MASK),
430430         addrname(prefetch & MCODE_MASK));
431431      break;
432   case 2:   // NEXT ← NEXT OR (if (SHIFTER OUTPUT<0) then 1 else 0)
433      dst += snprintf(dst, len - (size_t)(dst - buffer), "[(SH=0) ? %s : %s] ",
432   case 2:   // NEXT ← NEXT OR (SHIFTER==0 ? 1 : 0)
433      dst += snprintf(dst, len - (size_t)(dst - buffer), "[SH==0 ? %s : %s] ",
434434         addrname((prefetch | 1) & MCODE_MASK),
435435         addrname(prefetch & MCODE_MASK));
436436      break;
437   case 3:   // NEXT ← NEXT OR (if (SHIFTER OUTPUT<0) then 1 else 0)
438      dst += snprintf(dst, len - (size_t)(dst - buffer), "[(SH<0) ? %s : %s] ",
437   case 3:   // NEXT ← NEXT OR (SHIFTER<0 ? 1 : 0)
438      dst += snprintf(dst, len - (size_t)(dst - buffer), "[SH<0 ? %s : %s] ",
439439         addrname((prefetch | 1) & MCODE_MASK),
440440         addrname(prefetch & MCODE_MASK));
441441      break;
r26116r26117
443443      dst += snprintf(dst, len - (size_t)(dst - buffer), "NEXT←BUS ");
444444      break;
445445   case 5:   // NEXT ← NEXT OR ALUC0. ALUC0 is the carry produced by last L loading microinstruction.
446      dst += snprintf(dst, len - (size_t)(dst - buffer), "[(ALUC0) ? %s : %s] ",
446      dst += snprintf(dst, len - (size_t)(dst - buffer), "[ALUC0 ? %s : %s] ",
447447         addrname((prefetch | 1) & MCODE_MASK),
448448         addrname(prefetch & MCODE_MASK));
449449      break;
r26116r26117
451451      dst += snprintf(dst, len - (size_t)(dst - buffer), "MD←BUS ");
452452      break;
453453   case 7:   // put on the bus the constant from PROM (RSELECT,BS)
454      pa = (rsel << 3) | bs;
455      dst += snprintf(dst, len - (size_t)(dst - buffer), "BUS←[%03o]%05o ", pa, const_prom[pa]);
454      pa = 8 * rsel + bs;
455      dst += snprintf(dst, len - (size_t)(dst - buffer), "BUS←%05o CONST[%03o]", const_prom[pa], pa);
456456      break;
457457   default:
458458      dst += snprintf(dst, len - (size_t)(dst - buffer), "BUS←F2_%02o ", f2);
branches/alto2/src/emu/debug/dvmemory.c
r26116r26117
1414#include "debugcpu.h"
1515#include <ctype.h>
1616
17
18
1917//**************************************************************************
2018//  GLOBAL VARIABLES
2119//**************************************************************************
r26116r26117
9795      m_reverse_view(false),
9896      m_ascii_view(true),
9997      m_no_translation(false),
98      m_unicode(0),
10099      m_maxaddr(0),
101100      m_bytes_per_row(16),
102101      m_byte_offset(0)
r26116r26117
261260               }
262261         }
263262
264         // generate the ASCII data
263         // generate the ASCII or Unicode lookup table data
265264         if (m_section[2].m_width > 0)
266265         {
267266            dest = destrow + m_section[2].m_pos + 1;
r26116r26117
270269               {
271270                  UINT64 chval;
272271                  bool ismapped = read(1, addrbyte + ch, chval);
273                  dest->uchar = (ismapped && isprint(chval)) ? chval : '.';
272                  if (m_unicode)
273                     dest->uchar = ismapped ? m_unicode[chval & 255] : 0xfffe;
274                  else
275                     dest->uchar = (ismapped && isprint(chval)) ? chval : '.';
274276               }
275277         }
276278      }
r26116r26117
809811   m_recompute = m_update_pending = true;
810812   end_update_and_set_cursor_pos(pos);
811813}
814
815//-------------------------------------------------
816//  set_unicode - specify a unsigned char to
817//  unicode lookup table address, i.e. a code
818//  page lookup table or generic translation
819//-------------------------------------------------
820
821void debug_view_memory::set_unicode(const unicode_char* unicode)
822{
823   begin_update();
824   m_unicode = unicode;
825   m_update_pending = true;
826   end_update();
827}
branches/alto2/src/emu/debug/dvmemory.h
r26116r26117
22// copyright-holders:Aaron Giles
33/*********************************************************************
44
5    dvmemory.h
5   dvmemory.h
66
7    Memory debugger view.
7   Memory debugger view.
88
99***************************************************************************/
1010
r26116r26117
5858   bool reverse() const { return m_reverse_view; }
5959   bool ascii() const { return m_ascii_view; }
6060   bool physical() const { return m_no_translation; }
61   const unicode_char* unicode() { return m_unicode; }
6162   offs_t addressAtCursorPosition(const debug_view_xy& pos) { return get_cursor_pos(pos).m_address; }
6263
6364   // setters
r26116r26117
6566   void set_bytes_per_chunk(UINT8 chunkbytes);
6667   void set_chunks_per_row(UINT32 rowchunks);
6768   void set_reverse(bool reverse);
68   void set_ascii(bool reverse);
69   void set_ascii(bool ascii);
6970   void set_physical(bool physical);
71   void set_unicode(const unicode_char* unicode);
7072
7173protected:
7274   // view overrides
r26116r26117
105107   bool                m_reverse_view;         // reverse-endian view?
106108   bool                m_ascii_view;           // display ASCII characters?
107109   bool                m_no_translation;       // don't run addresses through the cpu translation hook
110   const unicode_char* m_unicode;              // (optional) pointer to unicode lookup table for 256 entries
108111   offs_t              m_maxaddr;              // (derived) maximum address to display
109112   UINT32              m_bytes_per_row;        // (derived) number of bytes displayed per line
110113   UINT32              m_byte_offset;          // (derived) offset of starting visible byte
branches/alto2/src/emu/debug/dvdisasm.c
r26116r26117
1313#include "dvdisasm.h"
1414#include "debugcpu.h"
1515
16// FIXME: should be known to disassemblers to not exceed buffer
17#define   DISASM_BUFFSIZE   128
1618
1719//**************************************************************************
1820//  UNICODE HELPERS
r26116r26117
320322         instlen = 1;
321323         if (debug_cpu_translate(source.m_space, TRANSLATE_FETCH, &physpcbyte))
322324         {
323            char dasmbuffer[100];
325            char dasmbuffer[DISASM_BUFFSIZE];
324326            instlen = source.m_device.debug()->disassemble(dasmbuffer, scanpc, &opbuf[1000 + scanpcbyte - targetpcbyte], &argbuf[1000 + scanpcbyte - targetpcbyte]) & DASMFLAG_LENGTHMASK;
325327         }
326328
r26116r26117
381383//  disassembly view
382384//-------------------------------------------------
383385
384#define   DISASM_BUFFSIZE   128
385386bool debug_view_disasm::recompute(offs_t pc, int startline, int lines)
386387{
387388   bool changed = false;
r26116r26117
465466      else
466467         strcpy(buffer, "<unmapped>");
467468
468      // append the disassembly to the buffer
469      // append the UTF-8 decoded disassembly to the buffer
469470      const char* src = buffer;
470471      for (UINT32 offs = 0; offs < m_dasm_width + 2; offs++)
471472      {
branches/alto2/src/lib/util/unicode.c
r26116r26117
22// copyright-holders:Aaron Giles
33/*********************************************************************
44
5    unicode.c
5   unicode.c
66
7    Unicode related functions
7   Unicode related functions
88
99***************************************************************************/
1010
r26116r26117
1212
1313
1414/*-------------------------------------------------
15    uchar_isvalid - return true if a given
16    character is a legitimate unicode character
15   uchar_isvalid - return true if a given
16   character is a legitimate unicode character
1717-------------------------------------------------*/
1818
1919int uchar_isvalid(unicode_char uchar)
r26116r26117
2323
2424
2525/*-------------------------------------------------
26    uchar_from_utf8 - convert a UTF-8 sequence
27    into a unicode character
26   uchar_from_utf8 - convert a UTF-8 sequence
27   into a unicode character
2828-------------------------------------------------*/
2929
3030int uchar_from_utf8(unicode_char *uchar, const char *utf8char, size_t count)
r26116r26117
118118
119119
120120/*-------------------------------------------------
121    uchar_from_utf16 - convert a UTF-16 sequence
122    into a unicode character
121   uchar_from_utf16 - convert a UTF-16 sequence
122   into a unicode character
123123-------------------------------------------------*/
124124
125125int uchar_from_utf16(unicode_char *uchar, const utf16_char *utf16char, size_t count)
r26116r26117
152152
153153
154154/*-------------------------------------------------
155    uchar_from_utf16f - convert a UTF-16 sequence
156    into a unicode character from a flipped
157    byte order
155   uchar_from_utf16f - convert a UTF-16 sequence
156   into a unicode character from a flipped
157   byte order
158158-------------------------------------------------*/
159159
160160int uchar_from_utf16f(unicode_char *uchar, const utf16_char *utf16char, size_t count)
r26116r26117
169169
170170
171171/*-------------------------------------------------
172    utf8_from_uchar - convert a unicode character
173    into a UTF-8 sequence
172   utf8_from_uchar - convert a unicode character
173   into a UTF-8 sequence
174174-------------------------------------------------*/
175175
176176int utf8_from_uchar(char *utf8string, size_t count, unicode_char uchar)
r26116r26117
247247
248248
249249/*-------------------------------------------------
250    utf16_from_uchar - convert a unicode character
251    into a UTF-16 sequence
250   utf16_from_uchar - convert a unicode character
251   into a UTF-16 sequence
252252-------------------------------------------------*/
253253
254254int utf16_from_uchar(utf16_char *utf16string, size_t count, unicode_char uchar)
r26116r26117
284284
285285
286286/*-------------------------------------------------
287    utf16_from_uchar - convert a unicode character
288    into a UTF-16 sequence with flipped endianness
287   utf16_from_uchar - convert a unicode character
288   into a UTF-16 sequence with flipped endianness
289289-------------------------------------------------*/
290290
291291int utf16f_from_uchar(utf16_char *utf16string, size_t count, unicode_char uchar)
r26116r26117
304304
305305
306306/*-------------------------------------------------
307    utf8_previous_char - return a pointer to the
308    previous character in a string
307   utf8_previous_char - return a pointer to the
308   previous character in a string
309309-------------------------------------------------*/
310310
311311const char *utf8_previous_char(const char *utf8string)
r26116r26117
317317
318318
319319/*-------------------------------------------------
320    utf8_is_valid_string - return true if the
321    given string is a properly formed sequence of
322    UTF-8 characters
320   utf8_is_valid_string - return true if the
321   given string is a properly formed sequence of
322   UTF-8 characters
323323-------------------------------------------------*/
324324
325325int utf8_is_valid_string(const char *utf8string)
r26116r26117
343343
344344   return TRUE;
345345}
346
347//**************************************************************************
348//  ISO-8859 to Unicode lookup tables
349//  Source: http://www.unicode.org/Public/MAPPINGS/ISO8859/
350//**************************************************************************
351
352/***************************************************************************
353#
354#   Name:             ISO/IEC 8859-1:1998 to Unicode
355#   Unicode version:  3.0
356#   Table version:    1.0
357#   Table format:     Format A
358#   Date:             1999 July 27
359#   Authors:          Ken Whistler <kenw@sybase.com>
360#
361#   Copyright (c) 1991-1999 Unicode, Inc.  All Rights reserved.
362#
363#   This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
364#   No claims are made as to fitness for any particular purpose.  No
365#   warranties of any kind are expressed or implied.  The recipient
366#   agrees to determine applicability of information provided.  If this
367#   file has been provided on optical media by Unicode, Inc., the sole
368#   remedy for any claim will be exchange of defective media within 90
369#   days of receipt.
370#
371#   Unicode, Inc. hereby grants the right to freely use the information
372#   supplied in this file in the creation of products supporting the
373#   Unicode Standard, and to make copies of this file in any form for
374#   internal or external distribution as long as this notice remains
375#   attached.
376#
377#   General notes:
378#
379#   This table contains the data the Unicode Consortium has on how
380#       ISO/IEC 8859-1:1998 characters map into Unicode.
381#
382#   Format:  Three tab-separated columns
383#       Column #1 is the ISO/IEC 8859-1 code (in hex as 0xXX)
384#       Column #2 is the Unicode (in hex as 0xXXXX)
385#       Column #3 the Unicode name (follows a comment sign, '#')
386#
387#   The entries are in ISO/IEC 8859-1 order.
388#
389#   Version history
390#   1.0 version updates 0.1 version by adding mappings for all
391#   control characters.
392#
393#   Updated versions of this file may be found in:
394#      <ftp://ftp.unicode.org/Public/MAPPINGS/>
395#
396#   Any comments or problems, contact <errata@unicode.org>
397#   Please note that <errata@unicode.org> is an archival address;
398#   notices will be checked, but do not expect an immediate response.
399#
400 ***************************************************************************/
401static const unicode_char lookup_iso8859_1[256] = {
402/* 00 */   0x0000,   //   NULL
403/* 01 */   0x0001,   //   START OF HEADING
404/* 02 */   0x0002,   //   START OF TEXT
405/* 03 */   0x0003,   //   END OF TEXT
406/* 04 */   0x0004,   //   END OF TRANSMISSION
407/* 05 */   0x0005,   //   ENQUIRY
408/* 06 */   0x0006,   //   ACKNOWLEDGE
409/* 07 */   0x0007,   //   BELL
410/* 08 */   0x0008,   //   BACKSPACE
411/* 09 */   0x0009,   //   HORIZONTAL TABULATION
412/* 0A */   0x000A,   //   LINE FEED
413/* 0B */   0x000B,   //   VERTICAL TABULATION
414/* 0C */   0x000C,   //   FORM FEED
415/* 0D */   0x000D,   //   CARRIAGE RETURN
416/* 0E */   0x000E,   //   SHIFT OUT
417/* 0F */   0x000F,   //   SHIFT IN
418/* 10 */   0x0010,   //   DATA LINK ESCAPE
419/* 11 */   0x0011,   //   DEVICE CONTROL ONE
420/* 12 */   0x0012,   //   DEVICE CONTROL TWO
421/* 13 */   0x0013,   //   DEVICE CONTROL THREE
422/* 14 */   0x0014,   //   DEVICE CONTROL FOUR
423/* 15 */   0x0015,   //   NEGATIVE ACKNOWLEDGE
424/* 16 */   0x0016,   //   SYNCHRONOUS IDLE
425/* 17 */   0x0017,   //   END OF TRANSMISSION BLOCK
426/* 18 */   0x0018,   //   CANCEL
427/* 19 */   0x0019,   //   END OF MEDIUM
428/* 1A */   0x001A,   //   SUBSTITUTE
429/* 1B */   0x001B,   //   ESCAPE
430/* 1C */   0x001C,   //   FILE SEPARATOR
431/* 1D */   0x001D,   //   GROUP SEPARATOR
432/* 1E */   0x001E,   //   RECORD SEPARATOR
433/* 1F */   0x001F,   //   UNIT SEPARATOR
434/* 20 */   0x0020,   //   SPACE
435/* 21 */   0x0021,   //   EXCLAMATION MARK
436/* 22 */   0x0022,   //   QUOTATION MARK
437/* 23 */   0x0023,   //   NUMBER SIGN
438/* 24 */   0x0024,   //   DOLLAR SIGN
439/* 25 */   0x0025,   //   PERCENT SIGN
440/* 26 */   0x0026,   //   AMPERSAND
441/* 27 */   0x0027,   //   APOSTROPHE
442/* 28 */   0x0028,   //   LEFT PARENTHESIS
443/* 29 */   0x0029,   //   RIGHT PARENTHESIS
444/* 2A */   0x002A,   //   ASTERISK
445/* 2B */   0x002B,   //   PLUS SIGN
446/* 2C */   0x002C,   //   COMMA
447/* 2D */   0x002D,   //   HYPHEN-MINUS
448/* 2E */   0x002E,   //   FULL STOP
449/* 2F */   0x002F,   //   SOLIDUS
450/* 30 */   0x0030,   //   DIGIT ZERO
451/* 31 */   0x0031,   //   DIGIT ONE
452/* 32 */   0x0032,   //   DIGIT TWO
453/* 33 */   0x0033,   //   DIGIT THREE
454/* 34 */   0x0034,   //   DIGIT FOUR
455/* 35 */   0x0035,   //   DIGIT FIVE
456/* 36 */   0x0036,   //   DIGIT SIX
457/* 37 */   0x0037,   //   DIGIT SEVEN
458/* 38 */   0x0038,   //   DIGIT EIGHT
459/* 39 */   0x0039,   //   DIGIT NINE
460/* 3A */   0x003A,   //   COLON
461/* 3B */   0x003B,   //   SEMICOLON
462/* 3C */   0x003C,   //   LESS-THAN SIGN
463/* 3D */   0x003D,   //   EQUALS SIGN
464/* 3E */   0x003E,   //   GREATER-THAN SIGN
465/* 3F */   0x003F,   //   QUESTION MARK
466/* 40 */   0x0040,   //   COMMERCIAL AT
467/* 41 */   0x0041,   //   LATIN CAPITAL LETTER A
468/* 42 */   0x0042,   //   LATIN CAPITAL LETTER B
469/* 43 */   0x0043,   //   LATIN CAPITAL LETTER C
470/* 44 */   0x0044,   //   LATIN CAPITAL LETTER D
471/* 45 */   0x0045,   //   LATIN CAPITAL LETTER E
472/* 46 */   0x0046,   //   LATIN CAPITAL LETTER F
473/* 47 */   0x0047,   //   LATIN CAPITAL LETTER G
474/* 48 */   0x0048,   //   LATIN CAPITAL LETTER H
475/* 49 */   0x0049,   //   LATIN CAPITAL LETTER I
476/* 4A */   0x004A,   //   LATIN CAPITAL LETTER J
477/* 4B */   0x004B,   //   LATIN CAPITAL LETTER K
478/* 4C */   0x004C,   //   LATIN CAPITAL LETTER L
479/* 4D */   0x004D,   //   LATIN CAPITAL LETTER M
480/* 4E */   0x004E,   //   LATIN CAPITAL LETTER N
481/* 4F */   0x004F,   //   LATIN CAPITAL LETTER O
482/* 50 */   0x0050,   //   LATIN CAPITAL LETTER P
483/* 51 */   0x0051,   //   LATIN CAPITAL LETTER Q
484/* 52 */   0x0052,   //   LATIN CAPITAL LETTER R
485/* 53 */   0x0053,   //   LATIN CAPITAL LETTER S
486/* 54 */   0x0054,   //   LATIN CAPITAL LETTER T
487/* 55 */   0x0055,   //   LATIN CAPITAL LETTER U
488/* 56 */   0x0056,   //   LATIN CAPITAL LETTER V
489/* 57 */   0x0057,   //   LATIN CAPITAL LETTER W
490/* 58 */   0x0058,   //   LATIN CAPITAL LETTER X
491/* 59 */   0x0059,   //   LATIN CAPITAL LETTER Y
492/* 5A */   0x005A,   //   LATIN CAPITAL LETTER Z
493/* 5B */   0x005B,   //   LEFT SQUARE BRACKET
494/* 5C */   0x005C,   //   REVERSE SOLIDUS
495/* 5D */   0x005D,   //   RIGHT SQUARE BRACKET
496/* 5E */   0x005E,   //   CIRCUMFLEX ACCENT
497/* 5F */   0x005F,   //   LOW LINE
498/* 60 */   0x0060,   //   GRAVE ACCENT
499/* 61 */   0x0061,   //   LATIN SMALL LETTER A
500/* 62 */   0x0062,   //   LATIN SMALL LETTER B
501/* 63 */   0x0063,   //   LATIN SMALL LETTER C
502/* 64 */   0x0064,   //   LATIN SMALL LETTER D
503/* 65 */   0x0065,   //   LATIN SMALL LETTER E
504/* 66 */   0x0066,   //   LATIN SMALL LETTER F
505/* 67 */   0x0067,   //   LATIN SMALL LETTER G
506/* 68 */   0x0068,   //   LATIN SMALL LETTER H
507/* 69 */   0x0069,   //   LATIN SMALL LETTER I
508/* 6A */   0x006A,   //   LATIN SMALL LETTER J
509/* 6B */   0x006B,   //   LATIN SMALL LETTER K
510/* 6C */   0x006C,   //   LATIN SMALL LETTER L
511/* 6D */   0x006D,   //   LATIN SMALL LETTER M
512/* 6E */   0x006E,   //   LATIN SMALL LETTER N
513/* 6F */   0x006F,   //   LATIN SMALL LETTER O
514/* 70 */   0x0070,   //   LATIN SMALL LETTER P
515/* 71 */   0x0071,   //   LATIN SMALL LETTER Q
516/* 72 */   0x0072,   //   LATIN SMALL LETTER R
517/* 73 */   0x0073,   //   LATIN SMALL LETTER S
518/* 74 */   0x0074,   //   LATIN SMALL LETTER T
519/* 75 */   0x0075,   //   LATIN SMALL LETTER U
520/* 76 */   0x0076,   //   LATIN SMALL LETTER V
521/* 77 */   0x0077,   //   LATIN SMALL LETTER W
522/* 78 */   0x0078,   //   LATIN SMALL LETTER X
523/* 79 */   0x0079,   //   LATIN SMALL LETTER Y
524/* 7A */   0x007A,   //   LATIN SMALL LETTER Z
525/* 7B */   0x007B,   //   LEFT CURLY BRACKET
526/* 7C */   0x007C,   //   VERTICAL LINE
527/* 7D */   0x007D,   //   RIGHT CURLY BRACKET
528/* 7E */   0x007E,   //   TILDE
529/* 7F */   0x007F,   //   DELETE
530/* 80 */   0x0080,   //   <control>
531/* 81 */   0x0081,   //   <control>
532/* 82 */   0x0082,   //   <control>
533/* 83 */   0x0083,   //   <control>
534/* 84 */   0x0084,   //   <control>
535/* 85 */   0x0085,   //   <control>
536/* 86 */   0x0086,   //   <control>
537/* 87 */   0x0087,   //   <control>
538/* 88 */   0x0088,   //   <control>
539/* 89 */   0x0089,   //   <control>
540/* 8A */   0x008A,   //   <control>
541/* 8B */   0x008B,   //   <control>
542/* 8C */   0x008C,   //   <control>
543/* 8D */   0x008D,   //   <control>
544/* 8E */   0x008E,   //   <control>
545/* 8F */   0x008F,   //   <control>
546/* 90 */   0x0090,   //   <control>
547/* 91 */   0x0091,   //   <control>
548/* 92 */   0x0092,   //   <control>
549/* 93 */   0x0093,   //   <control>
550/* 94 */   0x0094,   //   <control>
551/* 95 */   0x0095,   //   <control>
552/* 96 */   0x0096,   //   <control>
553/* 97 */   0x0097,   //   <control>
554/* 98 */   0x0098,   //   <control>
555/* 99 */   0x0099,   //   <control>
556/* 9A */   0x009A,   //   <control>
557/* 9B */   0x009B,   //   <control>
558/* 9C */   0x009C,   //   <control>
559/* 9D */   0x009D,   //   <control>
560/* 9E */   0x009E,   //   <control>
561/* 9F */   0x009F,   //   <control>
562/* A0 */   0x00A0,   //   NO-BREAK SPACE
563/* A1 */   0x00A1,   //   INVERTED EXCLAMATION MARK
564/* A2 */   0x00A2,   //   CENT SIGN
565/* A3 */   0x00A3,   //   POUND SIGN
566/* A4 */   0x00A4,   //   CURRENCY SIGN
567/* A5 */   0x00A5,   //   YEN SIGN
568/* A6 */   0x00A6,   //   BROKEN BAR
569/* A7 */   0x00A7,   //   SECTION SIGN
570/* A8 */   0x00A8,   //   DIAERESIS
571/* A9 */   0x00A9,   //   COPYRIGHT SIGN
572/* AA */   0x00AA,   //   FEMININE ORDINAL INDICATOR
573/* AB */   0x00AB,   //   LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
574/* AC */   0x00AC,   //   NOT SIGN
575/* AD */   0x00AD,   //   SOFT HYPHEN
576/* AE */   0x00AE,   //   REGISTERED SIGN
577/* AF */   0x00AF,   //   MACRON
578/* B0 */   0x00B0,   //   DEGREE SIGN
579/* B1 */   0x00B1,   //   PLUS-MINUS SIGN
580/* B2 */   0x00B2,   //   SUPERSCRIPT TWO
581/* B3 */   0x00B3,   //   SUPERSCRIPT THREE
582/* B4 */   0x00B4,   //   ACUTE ACCENT
583/* B5 */   0x00B5,   //   MICRO SIGN
584/* B6 */   0x00B6,   //   PILCROW SIGN
585/* B7 */   0x00B7,   //   MIDDLE DOT
586/* B8 */   0x00B8,   //   CEDILLA
587/* B9 */   0x00B9,   //   SUPERSCRIPT ONE
588/* BA */   0x00BA,   //   MASCULINE ORDINAL INDICATOR
589/* BB */   0x00BB,   //   RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
590/* BC */   0x00BC,   //   VULGAR FRACTION ONE QUARTER
591/* BD */   0x00BD,   //   VULGAR FRACTION ONE HALF
592/* BE */   0x00BE,   //   VULGAR FRACTION THREE QUARTERS
593/* BF */   0x00BF,   //   INVERTED QUESTION MARK
594/* C0 */   0x00C0,   //   LATIN CAPITAL LETTER A WITH GRAVE
595/* C1 */   0x00C1,   //   LATIN CAPITAL LETTER A WITH ACUTE
596/* C2 */   0x00C2,   //   LATIN CAPITAL LETTER A WITH CIRCUMFLEX
597/* C3 */   0x00C3,   //   LATIN CAPITAL LETTER A WITH TILDE
598/* C4 */   0x00C4,   //   LATIN CAPITAL LETTER A WITH DIAERESIS
599/* C5 */   0x00C5,   //   LATIN CAPITAL LETTER A WITH RING ABOVE
600/* C6 */   0x00C6,   //   LATIN CAPITAL LETTER AE
601/* C7 */   0x00C7,   //   LATIN CAPITAL LETTER C WITH CEDILLA
602/* C8 */   0x00C8,   //   LATIN CAPITAL LETTER E WITH GRAVE
603/* C9 */   0x00C9,   //   LATIN CAPITAL LETTER E WITH ACUTE
604/* CA */   0x00CA,   //   LATIN CAPITAL LETTER E WITH CIRCUMFLEX
605/* CB */   0x00CB,   //   LATIN CAPITAL LETTER E WITH DIAERESIS
606/* CC */   0x00CC,   //   LATIN CAPITAL LETTER I WITH GRAVE
607/* CD */   0x00CD,   //   LATIN CAPITAL LETTER I WITH ACUTE
608/* CE */   0x00CE,   //   LATIN CAPITAL LETTER I WITH CIRCUMFLEX
609/* CF */   0x00CF,   //   LATIN CAPITAL LETTER I WITH DIAERESIS
610/* D0 */   0x00D0,   //   LATIN CAPITAL LETTER ETH (Icelandic)
611/* D1 */   0x00D1,   //   LATIN CAPITAL LETTER N WITH TILDE
612/* D2 */   0x00D2,   //   LATIN CAPITAL LETTER O WITH GRAVE
613/* D3 */   0x00D3,   //   LATIN CAPITAL LETTER O WITH ACUTE
614/* D4 */   0x00D4,   //   LATIN CAPITAL LETTER O WITH CIRCUMFLEX
615/* D5 */   0x00D5,   //   LATIN CAPITAL LETTER O WITH TILDE
616/* D6 */   0x00D6,   //   LATIN CAPITAL LETTER O WITH DIAERESIS
617/* D7 */   0x00D7,   //   MULTIPLICATION SIGN
618/* D8 */   0x00D8,   //   LATIN CAPITAL LETTER O WITH STROKE
619/* D9 */   0x00D9,   //   LATIN CAPITAL LETTER U WITH GRAVE
620/* DA */   0x00DA,   //   LATIN CAPITAL LETTER U WITH ACUTE
621/* DB */   0x00DB,   //   LATIN CAPITAL LETTER U WITH CIRCUMFLEX
622/* DC */   0x00DC,   //   LATIN CAPITAL LETTER U WITH DIAERESIS
623/* DD */   0x00DD,   //   LATIN CAPITAL LETTER Y WITH ACUTE
624/* DE */   0x00DE,   //   LATIN CAPITAL LETTER THORN (Icelandic)
625/* DF */   0x00DF,   //   LATIN SMALL LETTER SHARP S (German)
626/* E0 */   0x00E0,   //   LATIN SMALL LETTER A WITH GRAVE
627/* E1 */   0x00E1,   //   LATIN SMALL LETTER A WITH ACUTE
628/* E2 */   0x00E2,   //   LATIN SMALL LETTER A WITH CIRCUMFLEX
629/* E3 */   0x00E3,   //   LATIN SMALL LETTER A WITH TILDE
630/* E4 */   0x00E4,   //   LATIN SMALL LETTER A WITH DIAERESIS
631/* E5 */   0x00E5,   //   LATIN SMALL LETTER A WITH RING ABOVE
632/* E6 */   0x00E6,   //   LATIN SMALL LETTER AE
633/* E7 */   0x00E7,   //   LATIN SMALL LETTER C WITH CEDILLA
634/* E8 */   0x00E8,   //   LATIN SMALL LETTER E WITH GRAVE
635/* E9 */   0x00E9,   //   LATIN SMALL LETTER E WITH ACUTE
636/* EA */   0x00EA,   //   LATIN SMALL LETTER E WITH CIRCUMFLEX
637/* EB */   0x00EB,   //   LATIN SMALL LETTER E WITH DIAERESIS
638/* EC */   0x00EC,   //   LATIN SMALL LETTER I WITH GRAVE
639/* ED */   0x00ED,   //   LATIN SMALL LETTER I WITH ACUTE
640/* EE */   0x00EE,   //   LATIN SMALL LETTER I WITH CIRCUMFLEX
641/* EF */   0x00EF,   //   LATIN SMALL LETTER I WITH DIAERESIS
642/* F0 */   0x00F0,   //   LATIN SMALL LETTER ETH (Icelandic)
643/* F1 */   0x00F1,   //   LATIN SMALL LETTER N WITH TILDE
644/* F2 */   0x00F2,   //   LATIN SMALL LETTER O WITH GRAVE
645/* F3 */   0x00F3,   //   LATIN SMALL LETTER O WITH ACUTE
646/* F4 */   0x00F4,   //   LATIN SMALL LETTER O WITH CIRCUMFLEX
647/* F5 */   0x00F5,   //   LATIN SMALL LETTER O WITH TILDE
648/* F6 */   0x00F6,   //   LATIN SMALL LETTER O WITH DIAERESIS
649/* F7 */   0x00F7,   //   DIVISION SIGN
650/* F8 */   0x00F8,   //   LATIN SMALL LETTER O WITH STROKE
651/* F9 */   0x00F9,   //   LATIN SMALL LETTER U WITH GRAVE
652/* FA */   0x00FA,   //   LATIN SMALL LETTER U WITH ACUTE
653/* FB */   0x00FB,   //   LATIN SMALL LETTER U WITH CIRCUMFLEX
654/* FC */   0x00FC,   //   LATIN SMALL LETTER U WITH DIAERESIS
655/* FD */   0x00FD,   //   LATIN SMALL LETTER Y WITH ACUTE
656/* FE */   0x00FE,   //   LATIN SMALL LETTER THORN (Icelandic)
657/* FF */   0x00FF   //   LATIN SMALL LETTER Y WITH DIAERESIS
658};
659
660/***************************************************************************
661#
662#   Name:             ISO 8859-2:1999 to Unicode
663#   Unicode version:  3.0
664#   Table version:    1.0
665#   Table format:     Format A
666#   Date:             1999 July 27
667#   Authors:          Ken Whistler <kenw@sybase.com>
668#
669#   Copyright (c) 1991-1999 Unicode, Inc.  All Rights reserved.
670#
671#   This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
672#   No claims are made as to fitness for any particular purpose.  No
673#   warranties of any kind are expressed or implied.  The recipient
674#   agrees to determine applicability of information provided.  If this
675#   file has been provided on optical media by Unicode, Inc., the sole
676#   remedy for any claim will be exchange of defective media within 90
677#   days of receipt.
678#
679#   Unicode, Inc. hereby grants the right to freely use the information
680#   supplied in this file in the creation of products supporting the
681#   Unicode Standard, and to make copies of this file in any form for
682#   internal or external distribution as long as this notice remains
683#   attached.
684#
685#   General notes:
686#
687#   This table contains the data the Unicode Consortium has on how
688#       ISO/IEC 8859-2:1999 characters map into Unicode.
689#
690#   Format:  Three tab-separated columns
691#       Column #1 is the ISO/IEC 8859-2 code (in hex as 0xXX)
692#       Column #2 is the Unicode (in hex as 0xXXXX)
693#       Column #3 the Unicode name (follows a comment sign, '#')
694#
695#   The entries are in ISO/IEC 8859-2 order.
696#
697#   Version history
698#   1.0 version updates 0.1 version by adding mappings for all
699#   control characters.
700#
701#   Updated versions of this file may be found in:
702#      <ftp://ftp.unicode.org/Public/MAPPINGS/>
703#
704#   Any comments or problems, contact <errata@unicode.org>
705#   Please note that <errata@unicode.org> is an archival address;
706#   notices will be checked, but do not expect an immediate response.
707#
708***************************************************************************/
709static const unicode_char lookup_iso8859_2[256] = {
710/* 00 */   0x0000,   //   NULL
711/* 01 */   0x0001,   //   START OF HEADING
712/* 02 */   0x0002,   //   START OF TEXT
713/* 03 */   0x0003,   //   END OF TEXT
714/* 04 */   0x0004,   //   END OF TRANSMISSION
715/* 05 */   0x0005,   //   ENQUIRY
716/* 06 */   0x0006,   //   ACKNOWLEDGE
717/* 07 */   0x0007,   //   BELL
718/* 08 */   0x0008,   //   BACKSPACE
719/* 09 */   0x0009,   //   HORIZONTAL TABULATION
720/* 0A */   0x000A,   //   LINE FEED
721/* 0B */   0x000B,   //   VERTICAL TABULATION
722/* 0C */   0x000C,   //   FORM FEED
723/* 0D */   0x000D,   //   CARRIAGE RETURN
724/* 0E */   0x000E,   //   SHIFT OUT
725/* 0F */   0x000F,   //   SHIFT IN
726/* 10 */   0x0010,   //   DATA LINK ESCAPE
727/* 11 */   0x0011,   //   DEVICE CONTROL ONE
728/* 12 */   0x0012,   //   DEVICE CONTROL TWO
729/* 13 */   0x0013,   //   DEVICE CONTROL THREE
730/* 14 */   0x0014,   //   DEVICE CONTROL FOUR
731/* 15 */   0x0015,   //   NEGATIVE ACKNOWLEDGE
732/* 16 */   0x0016,   //   SYNCHRONOUS IDLE
733/* 17 */   0x0017,   //   END OF TRANSMISSION BLOCK
734/* 18 */   0x0018,   //   CANCEL
735/* 19 */   0x0019,   //   END OF MEDIUM
736/* 1A */   0x001A,   //   SUBSTITUTE
737/* 1B */   0x001B,   //   ESCAPE
738/* 1C */   0x001C,   //   FILE SEPARATOR
739/* 1D */   0x001D,   //   GROUP SEPARATOR
740/* 1E */   0x001E,   //   RECORD SEPARATOR
741/* 1F */   0x001F,   //   UNIT SEPARATOR
742/* 20 */   0x0020,   //   SPACE
743/* 21 */   0x0021,   //   EXCLAMATION MARK
744/* 22 */   0x0022,   //   QUOTATION MARK
745/* 23 */   0x0023,   //   NUMBER SIGN
746/* 24 */   0x0024,   //   DOLLAR SIGN
747/* 25 */   0x0025,   //   PERCENT SIGN
748/* 26 */   0x0026,   //   AMPERSAND
749/* 27 */   0x0027,   //   APOSTROPHE
750/* 28 */   0x0028,   //   LEFT PARENTHESIS
751/* 29 */   0x0029,   //   RIGHT PARENTHESIS
752/* 2A */   0x002A,   //   ASTERISK
753/* 2B */   0x002B,   //   PLUS SIGN
754/* 2C */   0x002C,   //   COMMA
755/* 2D */   0x002D,   //   HYPHEN-MINUS
756/* 2E */   0x002E,   //   FULL STOP
757/* 2F */   0x002F,   //   SOLIDUS
758/* 30 */   0x0030,   //   DIGIT ZERO
759/* 31 */   0x0031,   //   DIGIT ONE
760/* 32 */   0x0032,   //   DIGIT TWO
761/* 33 */   0x0033,   //   DIGIT THREE
762/* 34 */   0x0034,   //   DIGIT FOUR
763/* 35 */   0x0035,   //   DIGIT FIVE
764/* 36 */   0x0036,   //   DIGIT SIX
765/* 37 */   0x0037,   //   DIGIT SEVEN
766/* 38 */   0x0038,   //   DIGIT EIGHT
767/* 39 */   0x0039,   //   DIGIT NINE
768/* 3A */   0x003A,   //   COLON
769/* 3B */   0x003B,   //   SEMICOLON
770/* 3C */   0x003C,   //   LESS-THAN SIGN
771/* 3D */   0x003D,   //   EQUALS SIGN
772/* 3E */   0x003E,   //   GREATER-THAN SIGN
773/* 3F */   0x003F,   //   QUESTION MARK
774/* 40 */   0x0040,   //   COMMERCIAL AT
775/* 41 */   0x0041,   //   LATIN CAPITAL LETTER A
776/* 42 */   0x0042,   //   LATIN CAPITAL LETTER B
777/* 43 */   0x0043,   //   LATIN CAPITAL LETTER C
778/* 44 */   0x0044,   //   LATIN CAPITAL LETTER D
779/* 45 */   0x0045,   //   LATIN CAPITAL LETTER E
780/* 46 */   0x0046,   //   LATIN CAPITAL LETTER F
781/* 47 */   0x0047,   //   LATIN CAPITAL LETTER G
782/* 48 */   0x0048,   //   LATIN CAPITAL LETTER H
783/* 49 */   0x0049,   //   LATIN CAPITAL LETTER I
784/* 4A */   0x004A,   //   LATIN CAPITAL LETTER J
785/* 4B */   0x004B,   //   LATIN CAPITAL LETTER K
786/* 4C */   0x004C,   //   LATIN CAPITAL LETTER L
787/* 4D */   0x004D,   //   LATIN CAPITAL LETTER M
788/* 4E */   0x004E,   //   LATIN CAPITAL LETTER N
789/* 4F */   0x004F,   //   LATIN CAPITAL LETTER O
790/* 50 */   0x0050,   //   LATIN CAPITAL LETTER P
791/* 51 */   0x0051,   //   LATIN CAPITAL LETTER Q
792/* 52 */   0x0052,   //   LATIN CAPITAL LETTER R
793/* 53 */   0x0053,   //   LATIN CAPITAL LETTER S
794/* 54 */   0x0054,   //   LATIN CAPITAL LETTER T
795/* 55 */   0x0055,   //   LATIN CAPITAL LETTER U
796/* 56 */   0x0056,   //   LATIN CAPITAL LETTER V
797/* 57 */   0x0057,   //   LATIN CAPITAL LETTER W
798/* 58 */   0x0058,   //   LATIN CAPITAL LETTER X
799/* 59 */   0x0059,   //   LATIN CAPITAL LETTER Y
800/* 5A */   0x005A,   //   LATIN CAPITAL LETTER Z
801/* 5B */   0x005B,   //   LEFT SQUARE BRACKET
802/* 5C */   0x005C,   //   REVERSE SOLIDUS
803/* 5D */   0x005D,   //   RIGHT SQUARE BRACKET
804/* 5E */   0x005E,   //   CIRCUMFLEX ACCENT
805/* 5F */   0x005F,   //   LOW LINE
806/* 60 */   0x0060,   //   GRAVE ACCENT
807/* 61 */   0x0061,   //   LATIN SMALL LETTER A
808/* 62 */   0x0062,   //   LATIN SMALL LETTER B
809/* 63 */   0x0063,   //   LATIN SMALL LETTER C
810/* 64 */   0x0064,   //   LATIN SMALL LETTER D
811/* 65 */   0x0065,   //   LATIN SMALL LETTER E
812/* 66 */   0x0066,   //   LATIN SMALL LETTER F
813/* 67 */   0x0067,   //   LATIN SMALL LETTER G
814/* 68 */   0x0068,   //   LATIN SMALL LETTER H
815/* 69 */   0x0069,   //   LATIN SMALL LETTER I
816/* 6A */   0x006A,   //   LATIN SMALL LETTER J
817/* 6B */   0x006B,   //   LATIN SMALL LETTER K
818/* 6C */   0x006C,   //   LATIN SMALL LETTER L
819/* 6D */   0x006D,   //   LATIN SMALL LETTER M
820/* 6E */   0x006E,   //   LATIN SMALL LETTER N
821/* 6F */   0x006F,   //   LATIN SMALL LETTER O
822/* 70 */   0x0070,   //   LATIN SMALL LETTER P
823/* 71 */   0x0071,   //   LATIN SMALL LETTER Q
824/* 72 */   0x0072,   //   LATIN SMALL LETTER R
825/* 73 */   0x0073,   //   LATIN SMALL LETTER S
826/* 74 */   0x0074,   //   LATIN SMALL LETTER T
827/* 75 */   0x0075,   //   LATIN SMALL LETTER U
828/* 76 */   0x0076,   //   LATIN SMALL LETTER V
829/* 77 */   0x0077,   //   LATIN SMALL LETTER W
830/* 78 */   0x0078,   //   LATIN SMALL LETTER X
831/* 79 */   0x0079,   //   LATIN SMALL LETTER Y
832/* 7A */   0x007A,   //   LATIN SMALL LETTER Z
833/* 7B */   0x007B,   //   LEFT CURLY BRACKET
834/* 7C */   0x007C,   //   VERTICAL LINE
835/* 7D */   0x007D,   //   RIGHT CURLY BRACKET
836/* 7E */   0x007E,   //   TILDE
837/* 7F */   0x007F,   //   DELETE
838/* 80 */   0x0080,   //   <control>
839/* 81 */   0x0081,   //   <control>
840/* 82 */   0x0082,   //   <control>
841/* 83 */   0x0083,   //   <control>
842/* 84 */   0x0084,   //   <control>
843/* 85 */   0x0085,   //   <control>
844/* 86 */   0x0086,   //   <control>
845/* 87 */   0x0087,   //   <control>
846/* 88 */   0x0088,   //   <control>
847/* 89 */   0x0089,   //   <control>
848/* 8A */   0x008A,   //   <control>
849/* 8B */   0x008B,   //   <control>
850/* 8C */   0x008C,   //   <control>
851/* 8D */   0x008D,   //   <control>
852/* 8E */   0x008E,   //   <control>
853/* 8F */   0x008F,   //   <control>
854/* 90 */   0x0090,   //   <control>
855/* 91 */   0x0091,   //   <control>
856/* 92 */   0x0092,   //   <control>
857/* 93 */   0x0093,   //   <control>
858/* 94 */   0x0094,   //   <control>
859/* 95 */   0x0095,   //   <control>
860/* 96 */   0x0096,   //   <control>
861/* 97 */   0x0097,   //   <control>
862/* 98 */   0x0098,   //   <control>
863/* 99 */   0x0099,   //   <control>
864/* 9A */   0x009A,   //   <control>
865/* 9B */   0x009B,   //   <control>
866/* 9C */   0x009C,   //   <control>
867/* 9D */   0x009D,   //   <control>
868/* 9E */   0x009E,   //   <control>
869/* 9F */   0x009F,   //   <control>
870/* A0 */   0x00A0,   //   NO-BREAK SPACE
871/* A1 */   0x0104,   //   LATIN CAPITAL LETTER A WITH OGONEK
872/* A2 */   0x02D8,   //   BREVE
873/* A3 */   0x0141,   //   LATIN CAPITAL LETTER L WITH STROKE
874/* A4 */   0x00A4,   //   CURRENCY SIGN
875/* A5 */   0x013D,   //   LATIN CAPITAL LETTER L WITH CARON
876/* A6 */   0x015A,   //   LATIN CAPITAL LETTER S WITH ACUTE
877/* A7 */   0x00A7,   //   SECTION SIGN
878/* A8 */   0x00A8,   //   DIAERESIS
879/* A9 */   0x0160,   //   LATIN CAPITAL LETTER S WITH CARON
880/* AA */   0x015E,   //   LATIN CAPITAL LETTER S WITH CEDILLA
881/* AB */   0x0164,   //   LATIN CAPITAL LETTER T WITH CARON
882/* AC */   0x0179,   //   LATIN CAPITAL LETTER Z WITH ACUTE
883/* AD */   0x00AD,   //   SOFT HYPHEN
884/* AE */   0x017D,   //   LATIN CAPITAL LETTER Z WITH CARON
885/* AF */   0x017B,   //   LATIN CAPITAL LETTER Z WITH DOT ABOVE
886/* B0 */   0x00B0,   //   DEGREE SIGN
887/* B1 */   0x0105,   //   LATIN SMALL LETTER A WITH OGONEK
888/* B2 */   0x02DB,   //   OGONEK
889/* B3 */   0x0142,   //   LATIN SMALL LETTER L WITH STROKE
890/* B4 */   0x00B4,   //   ACUTE ACCENT
891/* B5 */   0x013E,   //   LATIN SMALL LETTER L WITH CARON
892/* B6 */   0x015B,   //   LATIN SMALL LETTER S WITH ACUTE
893/* B7 */   0x02C7,   //   CARON
894/* B8 */   0x00B8,   //   CEDILLA
895/* B9 */   0x0161,   //   LATIN SMALL LETTER S WITH CARON
896/* BA */   0x015F,   //   LATIN SMALL LETTER S WITH CEDILLA
897/* BB */   0x0165,   //   LATIN SMALL LETTER T WITH CARON
898/* BC */   0x017A,   //   LATIN SMALL LETTER Z WITH ACUTE
899/* BD */   0x02DD,   //   DOUBLE ACUTE ACCENT
900/* BE */   0x017E,   //   LATIN SMALL LETTER Z WITH CARON
901/* BF */   0x017C,   //   LATIN SMALL LETTER Z WITH DOT ABOVE
902/* C0 */   0x0154,   //   LATIN CAPITAL LETTER R WITH ACUTE
903/* C1 */   0x00C1,   //   LATIN CAPITAL LETTER A WITH ACUTE
904/* C2 */   0x00C2,   //   LATIN CAPITAL LETTER A WITH CIRCUMFLEX
905/* C3 */   0x0102,   //   LATIN CAPITAL LETTER A WITH BREVE
906/* C4 */   0x00C4,   //   LATIN CAPITAL LETTER A WITH DIAERESIS
907/* C5 */   0x0139,   //   LATIN CAPITAL LETTER L WITH ACUTE
908/* C6 */   0x0106,   //   LATIN CAPITAL LETTER C WITH ACUTE
909/* C7 */   0x00C7,   //   LATIN CAPITAL LETTER C WITH CEDILLA
910/* C8 */   0x010C,   //   LATIN CAPITAL LETTER C WITH CARON
911/* C9 */   0x00C9,   //   LATIN CAPITAL LETTER E WITH ACUTE
912/* CA */   0x0118,   //   LATIN CAPITAL LETTER E WITH OGONEK
913/* CB */   0x00CB,   //   LATIN CAPITAL LETTER E WITH DIAERESIS
914/* CC */   0x011A,   //   LATIN CAPITAL LETTER E WITH CARON
915/* CD */   0x00CD,   //   LATIN CAPITAL LETTER I WITH ACUTE
916/* CE */   0x00CE,   //   LATIN CAPITAL LETTER I WITH CIRCUMFLEX
917/* CF */   0x010E,   //   LATIN CAPITAL LETTER D WITH CARON
918/* D0 */   0x0110,   //   LATIN CAPITAL LETTER D WITH STROKE
919/* D1 */   0x0143,   //   LATIN CAPITAL LETTER N WITH ACUTE
920/* D2 */   0x0147,   //   LATIN CAPITAL LETTER N WITH CARON
921/* D3 */   0x00D3,   //   LATIN CAPITAL LETTER O WITH ACUTE
922/* D4 */   0x00D4,   //   LATIN CAPITAL LETTER O WITH CIRCUMFLEX
923/* D5 */   0x0150,   //   LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
924/* D6 */   0x00D6,   //   LATIN CAPITAL LETTER O WITH DIAERESIS
925/* D7 */   0x00D7,   //   MULTIPLICATION SIGN
926/* D8 */   0x0158,   //   LATIN CAPITAL LETTER R WITH CARON
927/* D9 */   0x016E,   //   LATIN CAPITAL LETTER U WITH RING ABOVE
928/* DA */   0x00DA,   //   LATIN CAPITAL LETTER U WITH ACUTE
929/* DB */   0x0170,   //   LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
930/* DC */   0x00DC,   //   LATIN CAPITAL LETTER U WITH DIAERESIS
931/* DD */   0x00DD,   //   LATIN CAPITAL LETTER Y WITH ACUTE
932/* DE */   0x0162,   //   LATIN CAPITAL LETTER T WITH CEDILLA
933/* DF */   0x00DF,   //   LATIN SMALL LETTER SHARP S
934/* E0 */   0x0155,   //   LATIN SMALL LETTER R WITH ACUTE
935/* E1 */   0x00E1,   //   LATIN SMALL LETTER A WITH ACUTE
936/* E2 */   0x00E2,   //   LATIN SMALL LETTER A WITH CIRCUMFLEX
937/* E3 */   0x0103,   //   LATIN SMALL LETTER A WITH BREVE
938/* E4 */   0x00E4,   //   LATIN SMALL LETTER A WITH DIAERESIS
939/* E5 */   0x013A,   //   LATIN SMALL LETTER L WITH ACUTE
940/* E6 */   0x0107,   //   LATIN SMALL LETTER C WITH ACUTE
941/* E7 */   0x00E7,   //   LATIN SMALL LETTER C WITH CEDILLA
942/* E8 */   0x010D,   //   LATIN SMALL LETTER C WITH CARON
943/* E9 */   0x00E9,   //   LATIN SMALL LETTER E WITH ACUTE
944/* EA */   0x0119,   //   LATIN SMALL LETTER E WITH OGONEK
945/* EB */   0x00EB,   //   LATIN SMALL LETTER E WITH DIAERESIS
946/* EC */   0x011B,   //   LATIN SMALL LETTER E WITH CARON
947/* ED */   0x00ED,   //   LATIN SMALL LETTER I WITH ACUTE
948/* EE */   0x00EE,   //   LATIN SMALL LETTER I WITH CIRCUMFLEX
949/* EF */   0x010F,   //   LATIN SMALL LETTER D WITH CARON
950/* F0 */   0x0111,   //   LATIN SMALL LETTER D WITH STROKE
951/* F1 */   0x0144,   //   LATIN SMALL LETTER N WITH ACUTE
952/* F2 */   0x0148,   //   LATIN SMALL LETTER N WITH CARON
953/* F3 */   0x00F3,   //   LATIN SMALL LETTER O WITH ACUTE
954/* F4 */   0x00F4,   //   LATIN SMALL LETTER O WITH CIRCUMFLEX
955/* F5 */   0x0151,   //   LATIN SMALL LETTER O WITH DOUBLE ACUTE
956/* F6 */   0x00F6,   //   LATIN SMALL LETTER O WITH DIAERESIS
957/* F7 */   0x00F7,   //   DIVISION SIGN
958/* F8 */   0x0159,   //   LATIN SMALL LETTER R WITH CARON
959/* F9 */   0x016F,   //   LATIN SMALL LETTER U WITH RING ABOVE
960/* FA */   0x00FA,   //   LATIN SMALL LETTER U WITH ACUTE
961/* FB */   0x0171,   //   LATIN SMALL LETTER U WITH DOUBLE ACUTE
962/* FC */   0x00FC,   //   LATIN SMALL LETTER U WITH DIAERESIS
963/* FD */   0x00FD,   //   LATIN SMALL LETTER Y WITH ACUTE
964/* FE */   0x0163,   //   LATIN SMALL LETTER T WITH CEDILLA
965/* FF */   0x02D9   //   DOT ABOVE
966};
967
968/***************************************************************************
969#
970#   Name:             ISO/IEC 8859-3:1999 to Unicode
971#   Unicode version:  3.0
972#   Table version:    1.0
973#   Table format:     Format A
974#   Date:             1999 July 27
975#   Authors:          Ken Whistler <kenw@sybase.com>
976#
977#   Copyright (c) 1991-1999 Unicode, Inc.  All Rights reserved.
978#
979#   This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
980#   No claims are made as to fitness for any particular purpose.  No
981#   warranties of any kind are expressed or implied.  The recipient
982#   agrees to determine applicability of information provided.  If this
983#   file has been provided on optical media by Unicode, Inc., the sole
984#   remedy for any claim will be exchange of defective media within 90
985#   days of receipt.
986#
987#   Unicode, Inc. hereby grants the right to freely use the information
988#   supplied in this file in the creation of products supporting the
989#   Unicode Standard, and to make copies of this file in any form for
990#   internal or external distribution as long as this notice remains
991#   attached.
992#
993#   General notes:
994#
995#   This table contains the data the Unicode Consortium has on how
996#       ISO/IEC 8859-3:1999 characters map into Unicode.
997#
998#   Format:  Three tab-separated columns
999#       Column #1 is the ISO/IEC 8859-3 code (in hex as 0xXX)
1000#       Column #2 is the Unicode (in hex as 0xXXXX)
1001#       Column #3 the Unicode name (follows a comment sign, '#')
1002#
1003#   The entries are in ISO/IEC 8859-3 order.
1004#
1005#   Version history
1006#   1.0 version updates 0.1 version by adding mappings for all
1007#   control characters.
1008#
1009#   Updated versions of this file may be found in:
1010#      <ftp://ftp.unicode.org/Public/MAPPINGS/>
1011#
1012#   Any comments or problems, contact <errata@unicode.org>
1013#   Please note that <errata@unicode.org> is an archival address;
1014#   notices will be checked, but do not expect an immediate response.
1015#
1016***************************************************************************/
1017static const unicode_char lookup_iso8859_3[256] = {
1018/* 00 */   0x0000,   //   NULL
1019/* 01 */   0x0001,   //   START OF HEADING
1020/* 02 */   0x0002,   //   START OF TEXT
1021/* 03 */   0x0003,   //   END OF TEXT
1022/* 04 */   0x0004,   //   END OF TRANSMISSION
1023/* 05 */   0x0005,   //   ENQUIRY
1024/* 06 */   0x0006,   //   ACKNOWLEDGE
1025/* 07 */   0x0007,   //   BELL
1026/* 08 */   0x0008,   //   BACKSPACE
1027/* 09 */   0x0009,   //   HORIZONTAL TABULATION
1028/* 0A */   0x000A,   //   LINE FEED
1029/* 0B */   0x000B,   //   VERTICAL TABULATION
1030/* 0C */   0x000C,   //   FORM FEED
1031/* 0D */   0x000D,   //   CARRIAGE RETURN
1032/* 0E */   0x000E,   //   SHIFT OUT
1033/* 0F */   0x000F,   //   SHIFT IN
1034/* 10 */   0x0010,   //   DATA LINK ESCAPE
1035/* 11 */   0x0011,   //   DEVICE CONTROL ONE
1036/* 12 */   0x0012,   //   DEVICE CONTROL TWO
1037/* 13 */   0x0013,   //   DEVICE CONTROL THREE
1038/* 14 */   0x0014,   //   DEVICE CONTROL FOUR
1039/* 15 */   0x0015,   //   NEGATIVE ACKNOWLEDGE
1040/* 16 */   0x0016,   //   SYNCHRONOUS IDLE
1041/* 17 */   0x0017,   //   END OF TRANSMISSION BLOCK
1042/* 18 */   0x0018,   //   CANCEL
1043/* 19 */   0x0019,   //   END OF MEDIUM
1044/* 1A */   0x001A,   //   SUBSTITUTE
1045/* 1B */   0x001B,   //   ESCAPE
1046/* 1C */   0x001C,   //   FILE SEPARATOR
1047/* 1D */   0x001D,   //   GROUP SEPARATOR
1048/* 1E */   0x001E,   //   RECORD SEPARATOR
1049/* 1F */   0x001F,   //   UNIT SEPARATOR
1050/* 20 */   0x0020,   //   SPACE
1051/* 21 */   0x0021,   //   EXCLAMATION MARK
1052/* 22 */   0x0022,   //   QUOTATION MARK
1053/* 23 */   0x0023,   //   NUMBER SIGN
1054/* 24 */   0x0024,   //   DOLLAR SIGN
1055/* 25 */   0x0025,   //   PERCENT SIGN
1056/* 26 */   0x0026,   //   AMPERSAND
1057/* 27 */   0x0027,   //   APOSTROPHE
1058/* 28 */   0x0028,   //   LEFT PARENTHESIS
1059/* 29 */   0x0029,   //   RIGHT PARENTHESIS
1060/* 2A */   0x002A,   //   ASTERISK
1061/* 2B */   0x002B,   //   PLUS SIGN
1062/* 2C */   0x002C,   //   COMMA
1063/* 2D */   0x002D,   //   HYPHEN-MINUS
1064/* 2E */   0x002E,   //   FULL STOP
1065/* 2F */   0x002F,   //   SOLIDUS
1066/* 30 */   0x0030,   //   DIGIT ZERO
1067/* 31 */   0x0031,   //   DIGIT ONE
1068/* 32 */   0x0032,   //   DIGIT TWO
1069/* 33 */   0x0033,   //   DIGIT THREE
1070/* 34 */   0x0034,   //   DIGIT FOUR
1071/* 35 */   0x0035,   //   DIGIT FIVE
1072/* 36 */   0x0036,   //   DIGIT SIX
1073/* 37 */   0x0037,   //   DIGIT SEVEN
1074/* 38 */   0x0038,   //   DIGIT EIGHT
1075/* 39 */   0x0039,   //   DIGIT NINE
1076/* 3A */   0x003A,   //   COLON
1077/* 3B */   0x003B,   //   SEMICOLON
1078/* 3C */   0x003C,   //   LESS-THAN SIGN
1079/* 3D */   0x003D,   //   EQUALS SIGN
1080/* 3E */   0x003E,   //   GREATER-THAN SIGN
1081/* 3F */   0x003F,   //   QUESTION MARK
1082/* 40 */   0x0040,   //   COMMERCIAL AT
1083/* 41 */   0x0041,   //   LATIN CAPITAL LETTER A
1084/* 42 */   0x0042,   //   LATIN CAPITAL LETTER B
1085/* 43 */   0x0043,   //   LATIN CAPITAL LETTER C
1086/* 44 */   0x0044,   //   LATIN CAPITAL LETTER D
1087/* 45 */   0x0045,   //   LATIN CAPITAL LETTER E
1088/* 46 */   0x0046,   //   LATIN CAPITAL LETTER F
1089/* 47 */   0x0047,   //   LATIN CAPITAL LETTER G
1090/* 48 */   0x0048,   //   LATIN CAPITAL LETTER H
1091/* 49 */   0x0049,   //   LATIN CAPITAL LETTER I
1092/* 4A */   0x004A,   //   LATIN CAPITAL LETTER J
1093/* 4B */   0x004B,   //   LATIN CAPITAL LETTER K
1094/* 4C */   0x004C,   //   LATIN CAPITAL LETTER L
1095/* 4D */   0x004D,   //   LATIN CAPITAL LETTER M
1096/* 4E */   0x004E,   //   LATIN CAPITAL LETTER N
1097/* 4F */   0x004F,   //   LATIN CAPITAL LETTER O
1098/* 50 */   0x0050,   //   LATIN CAPITAL LETTER P
1099/* 51 */   0x0051,   //   LATIN CAPITAL LETTER Q
1100/* 52 */   0x0052,   //   LATIN CAPITAL LETTER R
1101/* 53 */   0x0053,   //   LATIN CAPITAL LETTER S
1102/* 54 */   0x0054,   //   LATIN CAPITAL LETTER T
1103/* 55 */   0x0055,   //   LATIN CAPITAL LETTER U
1104/* 56 */   0x0056,   //   LATIN CAPITAL LETTER V
1105/* 57 */   0x0057,   //   LATIN CAPITAL LETTER W
1106/* 58 */   0x0058,   //   LATIN CAPITAL LETTER X
1107/* 59 */   0x0059,   //   LATIN CAPITAL LETTER Y
1108/* 5A */   0x005A,   //   LATIN CAPITAL LETTER Z
1109/* 5B */   0x005B,   //   LEFT SQUARE BRACKET
1110/* 5C */   0x005C,   //   REVERSE SOLIDUS
1111/* 5D */   0x005D,   //   RIGHT SQUARE BRACKET
1112/* 5E */   0x005E,   //   CIRCUMFLEX ACCENT
1113/* 5F */   0x005F,   //   LOW LINE
1114/* 60 */   0x0060,   //   GRAVE ACCENT
1115/* 61 */   0x0061,   //   LATIN SMALL LETTER A
1116/* 62 */   0x0062,   //   LATIN SMALL LETTER B
1117/* 63 */   0x0063,   //   LATIN SMALL LETTER C
1118/* 64 */   0x0064,   //   LATIN SMALL LETTER D
1119/* 65 */   0x0065,   //   LATIN SMALL LETTER E
1120/* 66 */   0x0066,   //   LATIN SMALL LETTER F
1121/* 67 */   0x0067,   //   LATIN SMALL LETTER G
1122/* 68 */   0x0068,   //   LATIN SMALL LETTER H
1123/* 69 */   0x0069,   //   LATIN SMALL LETTER I
1124/* 6A */   0x006A,   //   LATIN SMALL LETTER J
1125/* 6B */   0x006B,   //   LATIN SMALL LETTER K
1126/* 6C */   0x006C,   //   LATIN SMALL LETTER L
1127/* 6D */   0x006D,   //   LATIN SMALL LETTER M
1128/* 6E */   0x006E,   //   LATIN SMALL LETTER N
1129/* 6F */   0x006F,   //   LATIN SMALL LETTER O
1130/* 70 */   0x0070,   //   LATIN SMALL LETTER P
1131/* 71 */   0x0071,   //   LATIN SMALL LETTER Q
1132/* 72 */   0x0072,   //   LATIN SMALL LETTER R
1133/* 73 */   0x0073,   //   LATIN SMALL LETTER S
1134/* 74 */   0x0074,   //   LATIN SMALL LETTER T
1135/* 75 */   0x0075,   //   LATIN SMALL LETTER U
1136/* 76 */   0x0076,   //   LATIN SMALL LETTER V
1137/* 77 */   0x0077,   //   LATIN SMALL LETTER W
1138/* 78 */   0x0078,   //   LATIN SMALL LETTER X
1139/* 79 */   0x0079,   //   LATIN SMALL LETTER Y
1140/* 7A */   0x007A,   //   LATIN SMALL LETTER Z
1141/* 7B */   0x007B,   //   LEFT CURLY BRACKET
1142/* 7C */   0x007C,   //   VERTICAL LINE
1143/* 7D */   0x007D,   //   RIGHT CURLY BRACKET
1144/* 7E */   0x007E,   //   TILDE
1145/* 7F */   0x007F,   //   DELETE
1146/* 80 */   0x0080,   //   <control>
1147/* 81 */   0x0081,   //   <control>
1148/* 82 */   0x0082,   //   <control>
1149/* 83 */   0x0083,   //   <control>
1150/* 84 */   0x0084,   //   <control>
1151/* 85 */   0x0085,   //   <control>
1152/* 86 */   0x0086,   //   <control>
1153/* 87 */   0x0087,   //   <control>
1154/* 88 */   0x0088,   //   <control>
1155/* 89 */   0x0089,   //   <control>
1156/* 8A */   0x008A,   //   <control>
1157/* 8B */   0x008B,   //   <control>
1158/* 8C */   0x008C,   //   <control>
1159/* 8D */   0x008D,   //   <control>
1160/* 8E */   0x008E,   //   <control>
1161/* 8F */   0x008F,   //   <control>
1162/* 90 */   0x0090,   //   <control>
1163/* 91 */   0x0091,   //   <control>
1164/* 92 */   0x0092,   //   <control>
1165/* 93 */   0x0093,   //   <control>
1166/* 94 */   0x0094,   //   <control>
1167/* 95 */   0x0095,   //   <control>
1168/* 96 */   0x0096,   //   <control>
1169/* 97 */   0x0097,   //   <control>
1170/* 98 */   0x0098,   //   <control>
1171/* 99 */   0x0099,   //   <control>
1172/* 9A */   0x009A,   //   <control>
1173/* 9B */   0x009B,   //   <control>
1174/* 9C */   0x009C,   //   <control>
1175/* 9D */   0x009D,   //   <control>
1176/* 9E */   0x009E,   //   <control>
1177/* 9F */   0x009F,   //   <control>
1178/* A0 */   0x00A0,   //   NO-BREAK SPACE
1179/* A1 */   0x0126,   //   LATIN CAPITAL LETTER H WITH STROKE
1180/* A2 */   0x02D8,   //   BREVE
1181/* A3 */   0x00A3,   //   POUND SIGN
1182/* A4 */   0x00A4,   //   CURRENCY SIGN
1183/* A6 */   0x0124,   //   LATIN CAPITAL LETTER H WITH CIRCUMFLEX
1184/* A7 */   0x00A7,   //   SECTION SIGN
1185/* A8 */   0x00A8,   //   DIAERESIS
1186/* A9 */   0x0130,   //   LATIN CAPITAL LETTER I WITH DOT ABOVE
1187/* AA */   0x015E,   //   LATIN CAPITAL LETTER S WITH CEDILLA
1188/* AB */   0x011E,   //   LATIN CAPITAL LETTER G WITH BREVE
1189/* AC */   0x0134,   //   LATIN CAPITAL LETTER J WITH CIRCUMFLEX
1190/* AD */   0x00AD,   //   SOFT HYPHEN
1191/* AF */   0x017B,   //   LATIN CAPITAL LETTER Z WITH DOT ABOVE
1192/* B0 */   0x00B0,   //   DEGREE SIGN
1193/* B1 */   0x0127,   //   LATIN SMALL LETTER H WITH STROKE
1194/* B2 */   0x00B2,   //   SUPERSCRIPT TWO
1195/* B3 */   0x00B3,   //   SUPERSCRIPT THREE
1196/* B4 */   0x00B4,   //   ACUTE ACCENT
1197/* B5 */   0x00B5,   //   MICRO SIGN
1198/* B6 */   0x0125,   //   LATIN SMALL LETTER H WITH CIRCUMFLEX
1199/* B7 */   0x00B7,   //   MIDDLE DOT
1200/* B8 */   0x00B8,   //   CEDILLA
1201/* B9 */   0x0131,   //   LATIN SMALL LETTER DOTLESS I
1202/* BA */   0x015F,   //   LATIN SMALL LETTER S WITH CEDILLA
1203/* BB */   0x011F,   //   LATIN SMALL LETTER G WITH BREVE
1204/* BC */   0x0135,   //   LATIN SMALL LETTER J WITH CIRCUMFLEX
1205/* BD */   0x00BD,   //   VULGAR FRACTION ONE HALF
1206/* BF */   0x017C,   //   LATIN SMALL LETTER Z WITH DOT ABOVE
1207/* C0 */   0x00C0,   //   LATIN CAPITAL LETTER A WITH GRAVE
1208/* C1 */   0x00C1,   //   LATIN CAPITAL LETTER A WITH ACUTE
1209/* C2 */   0x00C2,   //   LATIN CAPITAL LETTER A WITH CIRCUMFLEX
1210/* C4 */   0x00C4,   //   LATIN CAPITAL LETTER A WITH DIAERESIS
1211/* C5 */   0x010A,   //   LATIN CAPITAL LETTER C WITH DOT ABOVE
1212/* C6 */   0x0108,   //   LATIN CAPITAL LETTER C WITH CIRCUMFLEX
1213/* C7 */   0x00C7,   //   LATIN CAPITAL LETTER C WITH CEDILLA
1214/* C8 */   0x00C8,   //   LATIN CAPITAL LETTER E WITH GRAVE
1215/* C9 */   0x00C9,   //   LATIN CAPITAL LETTER E WITH ACUTE
1216/* CA */   0x00CA,   //   LATIN CAPITAL LETTER E WITH CIRCUMFLEX
1217/* CB */   0x00CB,   //   LATIN CAPITAL LETTER E WITH DIAERESIS
1218/* CC */   0x00CC,   //   LATIN CAPITAL LETTER I WITH GRAVE
1219/* CD */   0x00CD,   //   LATIN CAPITAL LETTER I WITH ACUTE
1220/* CE */   0x00CE,   //   LATIN CAPITAL LETTER I WITH CIRCUMFLEX
1221/* CF */   0x00CF,   //   LATIN CAPITAL LETTER I WITH DIAERESIS
1222/* D1 */   0x00D1,   //   LATIN CAPITAL LETTER N WITH TILDE
1223/* D2 */   0x00D2,   //   LATIN CAPITAL LETTER O WITH GRAVE
1224/* D3 */   0x00D3,   //   LATIN CAPITAL LETTER O WITH ACUTE
1225/* D4 */   0x00D4,   //   LATIN CAPITAL LETTER O WITH CIRCUMFLEX
1226/* D5 */   0x0120,   //   LATIN CAPITAL LETTER G WITH DOT ABOVE
1227/* D6 */   0x00D6,   //   LATIN CAPITAL LETTER O WITH DIAERESIS
1228/* D7 */   0x00D7,   //   MULTIPLICATION SIGN
1229/* D8 */   0x011C,   //   LATIN CAPITAL LETTER G WITH CIRCUMFLEX
1230/* D9 */   0x00D9,   //   LATIN CAPITAL LETTER U WITH GRAVE
1231/* DA */   0x00DA,   //   LATIN CAPITAL LETTER U WITH ACUTE
1232/* DB */   0x00DB,   //   LATIN CAPITAL LETTER U WITH CIRCUMFLEX
1233/* DC */   0x00DC,   //   LATIN CAPITAL LETTER U WITH DIAERESIS
1234/* DD */   0x016C,   //   LATIN CAPITAL LETTER U WITH BREVE
1235/* DE */   0x015C,   //   LATIN CAPITAL LETTER S WITH CIRCUMFLEX
1236/* DF */   0x00DF,   //   LATIN SMALL LETTER SHARP S
1237/* E0 */   0x00E0,   //   LATIN SMALL LETTER A WITH GRAVE
1238/* E1 */   0x00E1,   //   LATIN SMALL LETTER A WITH ACUTE
1239/* E2 */   0x00E2,   //   LATIN SMALL LETTER A WITH CIRCUMFLEX
1240/* E4 */   0x00E4,   //   LATIN SMALL LETTER A WITH DIAERESIS
1241/* E5 */   0x010B,   //   LATIN SMALL LETTER C WITH DOT ABOVE
1242/* E6 */   0x0109,   //   LATIN SMALL LETTER C WITH CIRCUMFLEX
1243/* E7 */   0x00E7,   //   LATIN SMALL LETTER C WITH CEDILLA
1244/* E8 */   0x00E8,   //   LATIN SMALL LETTER E WITH GRAVE
1245/* E9 */   0x00E9,   //   LATIN SMALL LETTER E WITH ACUTE
1246/* EA */   0x00EA,   //   LATIN SMALL LETTER E WITH CIRCUMFLEX
1247/* EB */   0x00EB,   //   LATIN SMALL LETTER E WITH DIAERESIS
1248/* EC */   0x00EC,   //   LATIN SMALL LETTER I WITH GRAVE
1249/* ED */   0x00ED,   //   LATIN SMALL LETTER I WITH ACUTE
1250/* EE */   0x00EE,   //   LATIN SMALL LETTER I WITH CIRCUMFLEX
1251/* EF */   0x00EF,   //   LATIN SMALL LETTER I WITH DIAERESIS
1252/* F1 */   0x00F1,   //   LATIN SMALL LETTER N WITH TILDE
1253/* F2 */   0x00F2,   //   LATIN SMALL LETTER O WITH GRAVE
1254/* F3 */   0x00F3,   //   LATIN SMALL LETTER O WITH ACUTE
1255/* F4 */   0x00F4,   //   LATIN SMALL LETTER O WITH CIRCUMFLEX
1256/* F5 */   0x0121,   //   LATIN SMALL LETTER G WITH DOT ABOVE
1257/* F6 */   0x00F6,   //   LATIN SMALL LETTER O WITH DIAERESIS
1258/* F7 */   0x00F7,   //   DIVISION SIGN
1259/* F8 */   0x011D,   //   LATIN SMALL LETTER G WITH CIRCUMFLEX
1260/* F9 */   0x00F9,   //   LATIN SMALL LETTER U WITH GRAVE
1261/* FA */   0x00FA,   //   LATIN SMALL LETTER U WITH ACUTE
1262/* FB */   0x00FB,   //   LATIN SMALL LETTER U WITH CIRCUMFLEX
1263/* FC */   0x00FC,   //   LATIN SMALL LETTER U WITH DIAERESIS
1264/* FD */   0x016D,   //   LATIN SMALL LETTER U WITH BREVE
1265/* FE */   0x015D,   //   LATIN SMALL LETTER S WITH CIRCUMFLEX
1266/* FF */   0x02D9   //   DOT ABOVE
1267};
1268
1269/***************************************************************************
1270#
1271#   Name:             ISO/IEC 8859-4:1998 to Unicode
1272#   Unicode version:  3.0
1273#   Table version:    1.0
1274#   Table format:     Format A
1275#   Date:             1999 July 27
1276#   Authors:          Ken Whistler <kenw@sybase.com>
1277#
1278#   Copyright (c) 1991-1999 Unicode, Inc.  All Rights reserved.
1279#
1280#   This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
1281#   No claims are made as to fitness for any particular purpose.  No
1282#   warranties of any kind are expressed or implied.  The recipient
1283#   agrees to determine applicability of information provided.  If this
1284#   file has been provided on optical media by Unicode, Inc., the sole
1285#   remedy for any claim will be exchange of defective media within 90
1286#   days of receipt.
1287#
1288#   Unicode, Inc. hereby grants the right to freely use the information
1289#   supplied in this file in the creation of products supporting the
1290#   Unicode Standard, and to make copies of this file in any form for
1291#   internal or external distribution as long as this notice remains
1292#   attached.
1293#
1294#   General notes:
1295#
1296#   This table contains the data the Unicode Consortium has on how
1297#       ISO/IEC 8859-4:1998 characters map into Unicode.
1298#
1299#   Format:  Three tab-separated columns
1300#       Column #1 is the ISO/IEC 8859-4 code (in hex as 0xXX)
1301#       Column #2 is the Unicode (in hex as 0xXXXX)
1302#       Column #3 the Unicode name (follows a comment sign, '#')
1303#
1304#   The entries are in ISO/IEC 8859-4 order.
1305#
1306#   Version history
1307#   1.0 version updates 0.1 version by adding mappings for all
1308#   control characters.
1309#
1310#   Updated versions of this file may be found in:
1311#      <ftp://ftp.unicode.org/Public/MAPPINGS/>
1312#
1313#   Any comments or problems, contact <errata@unicode.org>
1314#   Please note that <errata@unicode.org> is an archival address;
1315#   notices will be checked, but do not expect an immediate response.
1316#
1317***************************************************************************/
1318static const unicode_char lookup_iso8859_4[256] = {
1319/* 00 */   0x0000,   //   NULL
1320/* 01 */   0x0001,   //   START OF HEADING
1321/* 02 */   0x0002,   //   START OF TEXT
1322/* 03 */   0x0003,   //   END OF TEXT
1323/* 04 */   0x0004,   //   END OF TRANSMISSION
1324/* 05 */   0x0005,   //   ENQUIRY
1325/* 06 */   0x0006,   //   ACKNOWLEDGE
1326/* 07 */   0x0007,   //   BELL
1327/* 08 */   0x0008,   //   BACKSPACE
1328/* 09 */   0x0009,   //   HORIZONTAL TABULATION
1329/* 0A */   0x000A,   //   LINE FEED
1330/* 0B */   0x000B,   //   VERTICAL TABULATION
1331/* 0C */   0x000C,   //   FORM FEED
1332/* 0D */   0x000D,   //   CARRIAGE RETURN
1333/* 0E */   0x000E,   //   SHIFT OUT
1334/* 0F */   0x000F,   //   SHIFT IN
1335/* 10 */   0x0010,   //   DATA LINK ESCAPE
1336/* 11 */   0x0011,   //   DEVICE CONTROL ONE
1337/* 12 */   0x0012,   //   DEVICE CONTROL TWO
1338/* 13 */   0x0013,   //   DEVICE CONTROL THREE
1339/* 14 */   0x0014,   //   DEVICE CONTROL FOUR
1340/* 15 */   0x0015,   //   NEGATIVE ACKNOWLEDGE
1341/* 16 */   0x0016,   //   SYNCHRONOUS IDLE
1342/* 17 */   0x0017,   //   END OF TRANSMISSION BLOCK
1343/* 18 */   0x0018,   //   CANCEL
1344/* 19 */   0x0019,   //   END OF MEDIUM
1345/* 1A */   0x001A,   //   SUBSTITUTE
1346/* 1B */   0x001B,   //   ESCAPE
1347/* 1C */   0x001C,   //   FILE SEPARATOR
1348/* 1D */   0x001D,   //   GROUP SEPARATOR
1349/* 1E */   0x001E,   //   RECORD SEPARATOR
1350/* 1F */   0x001F,   //   UNIT SEPARATOR
1351/* 20 */   0x0020,   //   SPACE
1352/* 21 */   0x0021,   //   EXCLAMATION MARK
1353/* 22 */   0x0022,   //   QUOTATION MARK
1354/* 23 */   0x0023,   //   NUMBER SIGN
1355/* 24 */   0x0024,   //   DOLLAR SIGN
1356/* 25 */   0x0025,   //   PERCENT SIGN
1357/* 26 */   0x0026,   //   AMPERSAND
1358/* 27 */   0x0027,   //   APOSTROPHE
1359/* 28 */   0x0028,   //   LEFT PARENTHESIS
1360/* 29 */   0x0029,   //   RIGHT PARENTHESIS
1361/* 2A */   0x002A,   //   ASTERISK
1362/* 2B */   0x002B,   //   PLUS SIGN
1363/* 2C */   0x002C,   //   COMMA
1364/* 2D */   0x002D,   //   HYPHEN-MINUS
1365/* 2E */   0x002E,   //   FULL STOP
1366/* 2F */   0x002F,   //   SOLIDUS
1367/* 30 */   0x0030,   //   DIGIT ZERO
1368/* 31 */   0x0031,   //   DIGIT ONE
1369/* 32 */   0x0032,   //   DIGIT TWO
1370/* 33 */   0x0033,   //   DIGIT THREE
1371/* 34 */   0x0034,   //   DIGIT FOUR
1372/* 35 */   0x0035,   //   DIGIT FIVE
1373/* 36 */   0x0036,   //   DIGIT SIX
1374/* 37 */   0x0037,   //   DIGIT SEVEN
1375/* 38 */   0x0038,   //   DIGIT EIGHT
1376/* 39 */   0x0039,   //   DIGIT NINE
1377/* 3A */   0x003A,   //   COLON
1378/* 3B */   0x003B,   //   SEMICOLON
1379/* 3C */   0x003C,   //   LESS-THAN SIGN
1380/* 3D */   0x003D,   //   EQUALS SIGN
1381/* 3E */   0x003E,   //   GREATER-THAN SIGN
1382/* 3F */   0x003F,   //   QUESTION MARK
1383/* 40 */   0x0040,   //   COMMERCIAL AT
1384/* 41 */   0x0041,   //   LATIN CAPITAL LETTER A
1385/* 42 */   0x0042,   //   LATIN CAPITAL LETTER B
1386/* 43 */   0x0043,   //   LATIN CAPITAL LETTER C
1387/* 44 */   0x0044,   //   LATIN CAPITAL LETTER D
1388/* 45 */   0x0045,   //   LATIN CAPITAL LETTER E
1389/* 46 */   0x0046,   //   LATIN CAPITAL LETTER F
1390/* 47 */   0x0047,   //   LATIN CAPITAL LETTER G
1391/* 48 */   0x0048,   //   LATIN CAPITAL LETTER H
1392/* 49 */   0x0049,   //   LATIN CAPITAL LETTER I
1393/* 4A */   0x004A,   //   LATIN CAPITAL LETTER J
1394/* 4B */   0x004B,   //   LATIN CAPITAL LETTER K
1395/* 4C */   0x004C,   //   LATIN CAPITAL LETTER L
1396/* 4D */   0x004D,   //   LATIN CAPITAL LETTER M
1397/* 4E */   0x004E,   //   LATIN CAPITAL LETTER N
1398/* 4F */   0x004F,   //   LATIN CAPITAL LETTER O
1399/* 50 */   0x0050,   //   LATIN CAPITAL LETTER P
1400/* 51 */   0x0051,   //   LATIN CAPITAL LETTER Q
1401/* 52 */   0x0052,   //   LATIN CAPITAL LETTER R
1402/* 53 */   0x0053,   //   LATIN CAPITAL LETTER S
1403/* 54 */   0x0054,   //   LATIN CAPITAL LETTER T
1404/* 55 */   0x0055,   //   LATIN CAPITAL LETTER U
1405/* 56 */   0x0056,   //   LATIN CAPITAL LETTER V
1406/* 57 */   0x0057,   //   LATIN CAPITAL LETTER W
1407/* 58 */   0x0058,   //   LATIN CAPITAL LETTER X
1408/* 59 */   0x0059,   //   LATIN CAPITAL LETTER Y
1409/* 5A */   0x005A,   //   LATIN CAPITAL LETTER Z
1410/* 5B */   0x005B,   //   LEFT SQUARE BRACKET
1411/* 5C */   0x005C,   //   REVERSE SOLIDUS
1412/* 5D */   0x005D,   //   RIGHT SQUARE BRACKET
1413/* 5E */   0x005E,   //   CIRCUMFLEX ACCENT
1414/* 5F */   0x005F,   //   LOW LINE
1415/* 60 */   0x0060,   //   GRAVE ACCENT
1416/* 61 */   0x0061,   //   LATIN SMALL LETTER A
1417/* 62 */   0x0062,   //   LATIN SMALL LETTER B
1418/* 63 */   0x0063,   //   LATIN SMALL LETTER C
1419/* 64 */   0x0064,   //   LATIN SMALL LETTER D
1420/* 65 */   0x0065,   //   LATIN SMALL LETTER E
1421/* 66 */   0x0066,   //   LATIN SMALL LETTER F
1422/* 67 */   0x0067,   //   LATIN SMALL LETTER G
1423/* 68 */   0x0068,   //   LATIN SMALL LETTER H
1424/* 69 */   0x0069,   //   LATIN SMALL LETTER I
1425/* 6A */   0x006A,   //   LATIN SMALL LETTER J
1426/* 6B */   0x006B,   //   LATIN SMALL LETTER K
1427/* 6C */   0x006C,   //   LATIN SMALL LETTER L
1428/* 6D */   0x006D,   //   LATIN SMALL LETTER M
1429/* 6E */   0x006E,   //   LATIN SMALL LETTER N
1430/* 6F */   0x006F,   //   LATIN SMALL LETTER O
1431/* 70 */   0x0070,   //   LATIN SMALL LETTER P
1432/* 71 */   0x0071,   //   LATIN SMALL LETTER Q
1433/* 72 */   0x0072,   //   LATIN SMALL LETTER R
1434/* 73 */   0x0073,   //   LATIN SMALL LETTER S
1435/* 74 */   0x0074,   //   LATIN SMALL LETTER T
1436/* 75 */   0x0075,   //   LATIN SMALL LETTER U
1437/* 76 */   0x0076,   //   LATIN SMALL LETTER V
1438/* 77 */   0x0077,   //   LATIN SMALL LETTER W
1439/* 78 */   0x0078,   //   LATIN SMALL LETTER X
1440/* 79 */   0x0079,   //   LATIN SMALL LETTER Y
1441/* 7A */   0x007A,   //   LATIN SMALL LETTER Z
1442/* 7B */   0x007B,   //   LEFT CURLY BRACKET
1443/* 7C */   0x007C,   //   VERTICAL LINE
1444/* 7D */   0x007D,   //   RIGHT CURLY BRACKET
1445/* 7E */   0x007E,   //   TILDE
1446/* 7F */   0x007F,   //   DELETE
1447/* 80 */   0x0080,   //   <control>
1448/* 81 */   0x0081,   //   <control>
1449/* 82 */   0x0082,   //   <control>
1450/* 83 */   0x0083,   //   <control>
1451/* 84 */   0x0084,   //   <control>
1452/* 85 */   0x0085,   //   <control>
1453/* 86 */   0x0086,   //   <control>
1454/* 87 */   0x0087,   //   <control>
1455/* 88 */   0x0088,   //   <control>
1456/* 89 */   0x0089,   //   <control>
1457/* 8A */   0x008A,   //   <control>
1458/* 8B */   0x008B,   //   <control>
1459/* 8C */   0x008C,   //   <control>
1460/* 8D */   0x008D,   //   <control>
1461/* 8E */   0x008E,   //   <control>
1462/* 8F */   0x008F,   //   <control>
1463/* 90 */   0x0090,   //   <control>
1464/* 91 */   0x0091,   //   <control>
1465/* 92 */   0x0092,   //   <control>
1466/* 93 */   0x0093,   //   <control>
1467/* 94 */   0x0094,   //   <control>
1468/* 95 */   0x0095,   //   <control>
1469/* 96 */   0x0096,   //   <control>
1470/* 97 */   0x0097,   //   <control>
1471/* 98 */   0x0098,   //   <control>
1472/* 99 */   0x0099,   //   <control>
1473/* 9A */   0x009A,   //   <control>
1474/* 9B */   0x009B,   //   <control>
1475/* 9C */   0x009C,   //   <control>
1476/* 9D */   0x009D,   //   <control>
1477/* 9E */   0x009E,   //   <control>
1478/* 9F */   0x009F,   //   <control>
1479/* A0 */   0x00A0,   //   NO-BREAK SPACE
1480/* A1 */   0x0104,   //   LATIN CAPITAL LETTER A WITH OGONEK
1481/* A2 */   0x0138,   //   LATIN SMALL LETTER KRA
1482/* A3 */   0x0156,   //   LATIN CAPITAL LETTER R WITH CEDILLA
1483/* A4 */   0x00A4,   //   CURRENCY SIGN
1484/* A5 */   0x0128,   //   LATIN CAPITAL LETTER I WITH TILDE
1485/* A6 */   0x013B,   //   LATIN CAPITAL LETTER L WITH CEDILLA
1486/* A7 */   0x00A7,   //   SECTION SIGN
1487/* A8 */   0x00A8,   //   DIAERESIS
1488/* A9 */   0x0160,   //   LATIN CAPITAL LETTER S WITH CARON
1489/* AA */   0x0112,   //   LATIN CAPITAL LETTER E WITH MACRON
1490/* AB */   0x0122,   //   LATIN CAPITAL LETTER G WITH CEDILLA
1491/* AC */   0x0166,   //   LATIN CAPITAL LETTER T WITH STROKE
1492/* AD */   0x00AD,   //   SOFT HYPHEN
1493/* AE */   0x017D,   //   LATIN CAPITAL LETTER Z WITH CARON
1494/* AF */   0x00AF,   //   MACRON
1495/* B0 */   0x00B0,   //   DEGREE SIGN
1496/* B1 */   0x0105,   //   LATIN SMALL LETTER A WITH OGONEK
1497/* B2 */   0x02DB,   //   OGONEK
1498/* B3 */   0x0157,   //   LATIN SMALL LETTER R WITH CEDILLA
1499/* B4 */   0x00B4,   //   ACUTE ACCENT
1500/* B5 */   0x0129,   //   LATIN SMALL LETTER I WITH TILDE
1501/* B6 */   0x013C,   //   LATIN SMALL LETTER L WITH CEDILLA
1502/* B7 */   0x02C7,   //   CARON
1503/* B8 */   0x00B8,   //   CEDILLA
1504/* B9 */   0x0161,   //   LATIN SMALL LETTER S WITH CARON
1505/* BA */   0x0113,   //   LATIN SMALL LETTER E WITH MACRON
1506/* BB */   0x0123,   //   LATIN SMALL LETTER G WITH CEDILLA
1507/* BC */   0x0167,   //   LATIN SMALL LETTER T WITH STROKE
1508/* BD */   0x014A,   //   LATIN CAPITAL LETTER ENG
1509/* BE */   0x017E,   //   LATIN SMALL LETTER Z WITH CARON
1510/* BF */   0x014B,   //   LATIN SMALL LETTER ENG
1511/* C0 */   0x0100,   //   LATIN CAPITAL LETTER A WITH MACRON
1512/* C1 */   0x00C1,   //   LATIN CAPITAL LETTER A WITH ACUTE
1513/* C2 */   0x00C2,   //   LATIN CAPITAL LETTER A WITH CIRCUMFLEX
1514/* C3 */   0x00C3,   //   LATIN CAPITAL LETTER A WITH TILDE
1515/* C4 */   0x00C4,   //   LATIN CAPITAL LETTER A WITH DIAERESIS
1516/* C5 */   0x00C5,   //   LATIN CAPITAL LETTER A WITH RING ABOVE
1517/* C6 */   0x00C6,   //   LATIN CAPITAL LETTER AE
1518/* C7 */   0x012E,   //   LATIN CAPITAL LETTER I WITH OGONEK
1519/* C8 */   0x010C,   //   LATIN CAPITAL LETTER C WITH CARON
1520/* C9 */   0x00C9,   //   LATIN CAPITAL LETTER E WITH ACUTE
1521/* CA */   0x0118,   //   LATIN CAPITAL LETTER E WITH OGONEK
1522/* CB */   0x00CB,   //   LATIN CAPITAL LETTER E WITH DIAERESIS
1523/* CC */   0x0116,   //   LATIN CAPITAL LETTER E WITH DOT ABOVE
1524/* CD */   0x00CD,   //   LATIN CAPITAL LETTER I WITH ACUTE
1525/* CE */   0x00CE,   //   LATIN CAPITAL LETTER I WITH CIRCUMFLEX
1526/* CF */   0x012A,   //   LATIN CAPITAL LETTER I WITH MACRON
1527/* D0 */   0x0110,   //   LATIN CAPITAL LETTER D WITH STROKE
1528/* D1 */   0x0145,   //   LATIN CAPITAL LETTER N WITH CEDILLA
1529/* D2 */   0x014C,   //   LATIN CAPITAL LETTER O WITH MACRON
1530/* D3 */   0x0136,   //   LATIN CAPITAL LETTER K WITH CEDILLA
1531/* D4 */   0x00D4,   //   LATIN CAPITAL LETTER O WITH CIRCUMFLEX
1532/* D5 */   0x00D5,   //   LATIN CAPITAL LETTER O WITH TILDE
1533/* D6 */   0x00D6,   //   LATIN CAPITAL LETTER O WITH DIAERESIS
1534/* D7 */   0x00D7,   //   MULTIPLICATION SIGN
1535/* D8 */   0x00D8,   //   LATIN CAPITAL LETTER O WITH STROKE
1536/* D9 */   0x0172,   //   LATIN CAPITAL LETTER U WITH OGONEK
1537/* DA */   0x00DA,   //   LATIN CAPITAL LETTER U WITH ACUTE
1538/* DB */   0x00DB,   //   LATIN CAPITAL LETTER U WITH CIRCUMFLEX
1539/* DC */   0x00DC,   //   LATIN CAPITAL LETTER U WITH DIAERESIS
1540/* DD */   0x0168,   //   LATIN CAPITAL LETTER U WITH TILDE
1541/* DE */   0x016A,   //   LATIN CAPITAL LETTER U WITH MACRON
1542/* DF */   0x00DF,   //   LATIN SMALL LETTER SHARP S
1543/* E0 */   0x0101,   //   LATIN SMALL LETTER A WITH MACRON
1544/* E1 */   0x00E1,   //   LATIN SMALL LETTER A WITH ACUTE
1545/* E2 */   0x00E2,   //   LATIN SMALL LETTER A WITH CIRCUMFLEX
1546/* E3 */   0x00E3,   //   LATIN SMALL LETTER A WITH TILDE
1547/* E4 */   0x00E4,   //   LATIN SMALL LETTER A WITH DIAERESIS
1548/* E5 */   0x00E5,   //   LATIN SMALL LETTER A WITH RING ABOVE
1549/* E6 */   0x00E6,   //   LATIN SMALL LETTER AE
1550/* E7 */   0x012F,   //   LATIN SMALL LETTER I WITH OGONEK
1551/* E8 */   0x010D,   //   LATIN SMALL LETTER C WITH CARON
1552/* E9 */   0x00E9,   //   LATIN SMALL LETTER E WITH ACUTE
1553/* EA */   0x0119,   //   LATIN SMALL LETTER E WITH OGONEK
1554/* EB */   0x00EB,   //   LATIN SMALL LETTER E WITH DIAERESIS
1555/* EC */   0x0117,   //   LATIN SMALL LETTER E WITH DOT ABOVE
1556/* ED */   0x00ED,   //   LATIN SMALL LETTER I WITH ACUTE
1557/* EE */   0x00EE,   //   LATIN SMALL LETTER I WITH CIRCUMFLEX
1558/* EF */   0x012B,   //   LATIN SMALL LETTER I WITH MACRON
1559/* F0 */   0x0111,   //   LATIN SMALL LETTER D WITH STROKE
1560/* F1 */   0x0146,   //   LATIN SMALL LETTER N WITH CEDILLA
1561/* F2 */   0x014D,   //   LATIN SMALL LETTER O WITH MACRON
1562/* F3 */   0x0137,   //   LATIN SMALL LETTER K WITH CEDILLA
1563/* F4 */   0x00F4,   //   LATIN SMALL LETTER O WITH CIRCUMFLEX
1564/* F5 */   0x00F5,   //   LATIN SMALL LETTER O WITH TILDE
1565/* F6 */   0x00F6,   //   LATIN SMALL LETTER O WITH DIAERESIS
1566/* F7 */   0x00F7,   //   DIVISION SIGN
1567/* F8 */   0x00F8,   //   LATIN SMALL LETTER O WITH STROKE
1568/* F9 */   0x0173,   //   LATIN SMALL LETTER U WITH OGONEK
1569/* FA */   0x00FA,   //   LATIN SMALL LETTER U WITH ACUTE
1570/* FB */   0x00FB,   //   LATIN SMALL LETTER U WITH CIRCUMFLEX
1571/* FC */   0x00FC,   //   LATIN SMALL LETTER U WITH DIAERESIS
1572/* FD */   0x0169,   //   LATIN SMALL LETTER U WITH TILDE
1573/* FE */   0x016B,   //   LATIN SMALL LETTER U WITH MACRON
1574/* FF */   0x02D9   //   DOT ABOVE
1575};
1576
1577/***************************************************************************
1578#
1579#   Name:             ISO 8859-5:1999 to Unicode
1580#   Unicode version:  3.0
1581#   Table version:    1.0
1582#   Table format:     Format A
1583#   Date:             1999 July 27
1584#   Authors:          Ken Whistler <kenw@sybase.com>
1585#
1586#   Copyright (c) 1991-1999 Unicode, Inc.  All Rights reserved.
1587#
1588#   This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
1589#   No claims are made as to fitness for any particular purpose.  No
1590#   warranties of any kind are expressed or implied.  The recipient
1591#   agrees to determine applicability of information provided.  If this
1592#   file has been provided on optical media by Unicode, Inc., the sole
1593#   remedy for any claim will be exchange of defective media within 90
1594#   days of receipt.
1595#
1596#   Unicode, Inc. hereby grants the right to freely use the information
1597#   supplied in this file in the creation of products supporting the
1598#   Unicode Standard, and to make copies of this file in any form for
1599#   internal or external distribution as long as this notice remains
1600#   attached.
1601#
1602#   General notes:
1603#
1604#   This table contains the data the Unicode Consortium has on how
1605#       ISO/IEC 8859-5:1999 characters map into Unicode.
1606#
1607#   Format:  Three tab-separated columns
1608#       Column #1 is the ISO/IEC 8859-5 code (in hex as 0xXX)
1609#       Column #2 is the Unicode (in hex as 0xXXXX)
1610#       Column #3 the Unicode name (follows a comment sign, '#')
1611#
1612#   The entries are in ISO/IEC 8859-5 order.
1613#
1614#   Version history
1615#   1.0 version updates 0.1 version by adding mappings for all
1616#   control characters.
1617#
1618#   Updated versions of this file may be found in:
1619#      <ftp://ftp.unicode.org/Public/MAPPINGS/>
1620#
1621#   Any comments or problems, contact <errata@unicode.org>
1622#   Please note that <errata@unicode.org> is an archival address;
1623#   notices will be checked, but do not expect an immediate response.
1624#
1625***************************************************************************/
1626static const unicode_char lookup_iso8859_5[256] = {
1627/* 00 */   0x0000,   //   NULL
1628/* 01 */   0x0001,   //   START OF HEADING
1629/* 02 */   0x0002,   //   START OF TEXT
1630/* 03 */   0x0003,   //   END OF TEXT
1631/* 04 */   0x0004,   //   END OF TRANSMISSION
1632/* 05 */   0x0005,   //   ENQUIRY
1633/* 06 */   0x0006,   //   ACKNOWLEDGE
1634/* 07 */   0x0007,   //   BELL
1635/* 08 */   0x0008,   //   BACKSPACE
1636/* 09 */   0x0009,   //   HORIZONTAL TABULATION
1637/* 0A */   0x000A,   //   LINE FEED
1638/* 0B */   0x000B,   //   VERTICAL TABULATION
1639/* 0C */   0x000C,   //   FORM FEED
1640/* 0D */   0x000D,   //   CARRIAGE RETURN
1641/* 0E */   0x000E,   //   SHIFT OUT
1642/* 0F */   0x000F,   //   SHIFT IN
1643/* 10 */   0x0010,   //   DATA LINK ESCAPE
1644/* 11 */   0x0011,   //   DEVICE CONTROL ONE
1645/* 12 */   0x0012,   //   DEVICE CONTROL TWO
1646/* 13 */   0x0013,   //   DEVICE CONTROL THREE
1647/* 14 */   0x0014,   //   DEVICE CONTROL FOUR
1648/* 15 */   0x0015,   //   NEGATIVE ACKNOWLEDGE
1649/* 16 */   0x0016,   //   SYNCHRONOUS IDLE
1650/* 17 */   0x0017,   //   END OF TRANSMISSION BLOCK
1651/* 18 */   0x0018,   //   CANCEL
1652/* 19 */   0x0019,   //   END OF MEDIUM
1653/* 1A */   0x001A,   //   SUBSTITUTE
1654/* 1B */   0x001B,   //   ESCAPE
1655/* 1C */   0x001C,   //   FILE SEPARATOR
1656/* 1D */   0x001D,   //   GROUP SEPARATOR
1657/* 1E */   0x001E,   //   RECORD SEPARATOR
1658/* 1F */   0x001F,   //   UNIT SEPARATOR
1659/* 20 */   0x0020,   //   SPACE
1660/* 21 */   0x0021,   //   EXCLAMATION MARK
1661/* 22 */   0x0022,   //   QUOTATION MARK
1662/* 23 */   0x0023,   //   NUMBER SIGN
1663/* 24 */   0x0024,   //   DOLLAR SIGN
1664/* 25 */   0x0025,   //   PERCENT SIGN
1665/* 26 */   0x0026,   //   AMPERSAND
1666/* 27 */   0x0027,   //   APOSTROPHE
1667/* 28 */   0x0028,   //   LEFT PARENTHESIS
1668/* 29 */   0x0029,   //   RIGHT PARENTHESIS
1669/* 2A */   0x002A,   //   ASTERISK
1670/* 2B */   0x002B,   //   PLUS SIGN
1671/* 2C */   0x002C,   //   COMMA
1672/* 2D */   0x002D,   //   HYPHEN-MINUS
1673/* 2E */   0x002E,   //   FULL STOP
1674/* 2F */   0x002F,   //   SOLIDUS
1675/* 30 */   0x0030,   //   DIGIT ZERO
1676/* 31 */   0x0031,   //   DIGIT ONE
1677/* 32 */   0x0032,   //   DIGIT TWO
1678/* 33 */   0x0033,   //   DIGIT THREE
1679/* 34 */   0x0034,   //   DIGIT FOUR
1680/* 35 */   0x0035,   //   DIGIT FIVE
1681/* 36 */   0x0036,   //   DIGIT SIX
1682/* 37 */   0x0037,   //   DIGIT SEVEN
1683/* 38 */   0x0038,   //   DIGIT EIGHT
1684/* 39 */   0x0039,   //   DIGIT NINE
1685/* 3A */   0x003A,   //   COLON
1686/* 3B */   0x003B,   //   SEMICOLON
1687/* 3C */   0x003C,   //   LESS-THAN SIGN
1688/* 3D */   0x003D,   //   EQUALS SIGN
1689/* 3E */   0x003E,   //   GREATER-THAN SIGN
1690/* 3F */   0x003F,   //   QUESTION MARK
1691/* 40 */   0x0040,   //   COMMERCIAL AT
1692/* 41 */   0x0041,   //   LATIN CAPITAL LETTER A
1693/* 42 */   0x0042,   //   LATIN CAPITAL LETTER B
1694/* 43 */   0x0043,   //   LATIN CAPITAL LETTER C
1695/* 44 */   0x0044,   //   LATIN CAPITAL LETTER D
1696/* 45 */   0x0045,   //   LATIN CAPITAL LETTER E
1697/* 46 */   0x0046,   //   LATIN CAPITAL LETTER F
1698/* 47 */   0x0047,   //   LATIN CAPITAL LETTER G
1699/* 48 */   0x0048,   //   LATIN CAPITAL LETTER H
1700/* 49 */   0x0049,   //   LATIN CAPITAL LETTER I
1701/* 4A */   0x004A,   //   LATIN CAPITAL LETTER J
1702/* 4B */   0x004B,   //   LATIN CAPITAL LETTER K
1703/* 4C */   0x004C,   //   LATIN CAPITAL LETTER L
1704/* 4D */   0x004D,   //   LATIN CAPITAL LETTER M
1705/* 4E */   0x004E,   //   LATIN CAPITAL LETTER N
1706/* 4F */   0x004F,   //   LATIN CAPITAL LETTER O
1707/* 50 */   0x0050,   //   LATIN CAPITAL LETTER P
1708/* 51 */   0x0051,   //   LATIN CAPITAL LETTER Q
1709/* 52 */   0x0052,   //   LATIN CAPITAL LETTER R
1710/* 53 */   0x0053,   //   LATIN CAPITAL LETTER S
1711/* 54 */   0x0054,   //   LATIN CAPITAL LETTER T
1712/* 55 */   0x0055,   //   LATIN CAPITAL LETTER U
1713/* 56 */   0x0056,   //   LATIN CAPITAL LETTER V
1714/* 57 */   0x0057,   //   LATIN CAPITAL LETTER W
1715/* 58 */   0x0058,   //   LATIN CAPITAL LETTER X
1716/* 59 */   0x0059,   //   LATIN CAPITAL LETTER Y
1717/* 5A */   0x005A,   //   LATIN CAPITAL LETTER Z
1718/* 5B */   0x005B,   //   LEFT SQUARE BRACKET
1719/* 5C */   0x005C,   //   REVERSE SOLIDUS
1720/* 5D */   0x005D,   //   RIGHT SQUARE BRACKET
1721/* 5E */   0x005E,   //   CIRCUMFLEX ACCENT
1722/* 5F */   0x005F,   //   LOW LINE
1723/* 60 */   0x0060,   //   GRAVE ACCENT
1724/* 61 */   0x0061,   //   LATIN SMALL LETTER A
1725/* 62 */   0x0062,   //   LATIN SMALL LETTER B
1726/* 63 */   0x0063,   //   LATIN SMALL LETTER C
1727/* 64 */   0x0064,   //   LATIN SMALL LETTER D
1728/* 65 */   0x0065,   //   LATIN SMALL LETTER E
1729/* 66 */   0x0066,   //   LATIN SMALL LETTER F
1730/* 67 */   0x0067,   //   LATIN SMALL LETTER G
1731/* 68 */   0x0068,   //   LATIN SMALL LETTER H
1732/* 69 */   0x0069,   //   LATIN SMALL LETTER I
1733/* 6A */   0x006A,   //   LATIN SMALL LETTER J
1734/* 6B */   0x006B,   //   LATIN SMALL LETTER K
1735/* 6C */   0x006C,   //   LATIN SMALL LETTER L
1736/* 6D */   0x006D,   //   LATIN SMALL LETTER M
1737/* 6E */   0x006E,   //   LATIN SMALL LETTER N
1738/* 6F */   0x006F,   //   LATIN SMALL LETTER O
1739/* 70 */   0x0070,   //   LATIN SMALL LETTER P
1740/* 71 */   0x0071,   //   LATIN SMALL LETTER Q
1741/* 72 */   0x0072,   //   LATIN SMALL LETTER R
1742/* 73 */   0x0073,   //   LATIN SMALL LETTER S
1743/* 74 */   0x0074,   //   LATIN SMALL LETTER T
1744/* 75 */   0x0075,   //   LATIN SMALL LETTER U
1745/* 76 */   0x0076,   //   LATIN SMALL LETTER V
1746/* 77 */   0x0077,   //   LATIN SMALL LETTER W
1747/* 78 */   0x0078,   //   LATIN SMALL LETTER X
1748/* 79 */   0x0079,   //   LATIN SMALL LETTER Y
1749/* 7A */   0x007A,   //   LATIN SMALL LETTER Z
1750/* 7B */   0x007B,   //   LEFT CURLY BRACKET
1751/* 7C */   0x007C,   //   VERTICAL LINE
1752/* 7D */   0x007D,   //   RIGHT CURLY BRACKET
1753/* 7E */   0x007E,   //   TILDE
1754/* 7F */   0x007F,   //   DELETE
1755/* 80 */   0x0080,   //   <control>
1756/* 81 */   0x0081,   //   <control>
1757/* 82 */   0x0082,   //   <control>
1758/* 83 */   0x0083,   //   <control>
1759/* 84 */   0x0084,   //   <control>
1760/* 85 */   0x0085,   //   <control>
1761/* 86 */   0x0086,   //   <control>
1762/* 87 */   0x0087,   //   <control>
1763/* 88 */   0x0088,   //   <control>
1764/* 89 */   0x0089,   //   <control>
1765/* 8A */   0x008A,   //   <control>
1766/* 8B */   0x008B,   //   <control>
1767/* 8C */   0x008C,   //   <control>
1768/* 8D */   0x008D,   //   <control>
1769/* 8E */   0x008E,   //   <control>
1770/* 8F */   0x008F,   //   <control>
1771/* 90 */   0x0090,   //   <control>
1772/* 91 */   0x0091,   //   <control>
1773/* 92 */   0x0092,   //   <control>
1774/* 93 */   0x0093,   //   <control>
1775/* 94 */   0x0094,   //   <control>
1776/* 95 */   0x0095,   //   <control>
1777/* 96 */   0x0096,   //   <control>
1778/* 97 */   0x0097,   //   <control>
1779/* 98 */   0x0098,   //   <control>
1780/* 99 */   0x0099,   //   <control>
1781/* 9A */   0x009A,   //   <control>
1782/* 9B */   0x009B,   //   <control>
1783/* 9C */   0x009C,   //   <control>
1784/* 9D */   0x009D,   //   <control>
1785/* 9E */   0x009E,   //   <control>
1786/* 9F */   0x009F,   //   <control>
1787/* A0 */   0x00A0,   //   NO-BREAK SPACE
1788/* A1 */   0x0401,   //   CYRILLIC CAPITAL LETTER IO
1789/* A2 */   0x0402,   //   CYRILLIC CAPITAL LETTER DJE
1790/* A3 */   0x0403,   //   CYRILLIC CAPITAL LETTER GJE
1791/* A4 */   0x0404,   //   CYRILLIC CAPITAL LETTER UKRAINIAN IE
1792/* A5 */   0x0405,   //   CYRILLIC CAPITAL LETTER DZE
1793/* A6 */   0x0406,   //   CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
1794/* A7 */   0x0407,   //   CYRILLIC CAPITAL LETTER YI
1795/* A8 */   0x0408,   //   CYRILLIC CAPITAL LETTER JE
1796/* A9 */   0x0409,   //   CYRILLIC CAPITAL LETTER LJE
1797/* AA */   0x040A,   //   CYRILLIC CAPITAL LETTER NJE
1798/* AB */   0x040B,   //   CYRILLIC CAPITAL LETTER TSHE
1799/* AC */   0x040C,   //   CYRILLIC CAPITAL LETTER KJE
1800/* AD */   0x00AD,   //   SOFT HYPHEN
1801/* AE */   0x040E,   //   CYRILLIC CAPITAL LETTER SHORT U
1802/* AF */   0x040F,   //   CYRILLIC CAPITAL LETTER DZHE
1803/* B0 */   0x0410,   //   CYRILLIC CAPITAL LETTER A
1804/* B1 */   0x0411,   //   CYRILLIC CAPITAL LETTER BE
1805/* B2 */   0x0412,   //   CYRILLIC CAPITAL LETTER VE
1806/* B3 */   0x0413,   //   CYRILLIC CAPITAL LETTER GHE
1807/* B4 */   0x0414,   //   CYRILLIC CAPITAL LETTER DE
1808/* B5 */   0x0415,   //   CYRILLIC CAPITAL LETTER IE
1809/* B6 */   0x0416,   //   CYRILLIC CAPITAL LETTER ZHE
1810/* B7 */   0x0417,   //   CYRILLIC CAPITAL LETTER ZE
1811/* B8 */   0x0418,   //   CYRILLIC CAPITAL LETTER I
1812/* B9 */   0x0419,   //   CYRILLIC CAPITAL LETTER SHORT I
1813/* BA */   0x041A,   //   CYRILLIC CAPITAL LETTER KA
1814/* BB */   0x041B,   //   CYRILLIC CAPITAL LETTER EL
1815/* BC */   0x041C,   //   CYRILLIC CAPITAL LETTER EM
1816/* BD */   0x041D,   //   CYRILLIC CAPITAL LETTER EN
1817/* BE */   0x041E,   //   CYRILLIC CAPITAL LETTER O
1818/* BF */   0x041F,   //   CYRILLIC CAPITAL LETTER PE
1819/* C0 */   0x0420,   //   CYRILLIC CAPITAL LETTER ER
1820/* C1 */   0x0421,   //   CYRILLIC CAPITAL LETTER ES
1821/* C2 */   0x0422,   //   CYRILLIC CAPITAL LETTER TE
1822/* C3 */   0x0423,   //   CYRILLIC CAPITAL LETTER U
1823/* C4 */   0x0424,   //   CYRILLIC CAPITAL LETTER EF
1824/* C5 */   0x0425,   //   CYRILLIC CAPITAL LETTER HA
1825/* C6 */   0x0426,   //   CYRILLIC CAPITAL LETTER TSE
1826/* C7 */   0x0427,   //   CYRILLIC CAPITAL LETTER CHE
1827/* C8 */   0x0428,   //   CYRILLIC CAPITAL LETTER SHA
1828/* C9 */   0x0429,   //   CYRILLIC CAPITAL LETTER SHCHA
1829/* CA */   0x042A,   //   CYRILLIC CAPITAL LETTER HARD SIGN
1830/* CB */   0x042B,   //   CYRILLIC CAPITAL LETTER YERU
1831/* CC */   0x042C,   //   CYRILLIC CAPITAL LETTER SOFT SIGN
1832/* CD */   0x042D,   //   CYRILLIC CAPITAL LETTER E
1833/* CE */   0x042E,   //   CYRILLIC CAPITAL LETTER YU
1834/* CF */   0x042F,   //   CYRILLIC CAPITAL LETTER YA
1835/* D0 */   0x0430,   //   CYRILLIC SMALL LETTER A
1836/* D1 */   0x0431,   //   CYRILLIC SMALL LETTER BE
1837/* D2 */   0x0432,   //   CYRILLIC SMALL LETTER VE
1838/* D3 */   0x0433,   //   CYRILLIC SMALL LETTER GHE
1839/* D4 */   0x0434,   //   CYRILLIC SMALL LETTER DE
1840/* D5 */   0x0435,   //   CYRILLIC SMALL LETTER IE
1841/* D6 */   0x0436,   //   CYRILLIC SMALL LETTER ZHE
1842/* D7 */   0x0437,   //   CYRILLIC SMALL LETTER ZE
1843/* D8 */   0x0438,   //   CYRILLIC SMALL LETTER I
1844/* D9 */   0x0439,   //   CYRILLIC SMALL LETTER SHORT I
1845/* DA */   0x043A,   //   CYRILLIC SMALL LETTER KA
1846/* DB */   0x043B,   //   CYRILLIC SMALL LETTER EL
1847/* DC */   0x043C,   //   CYRILLIC SMALL LETTER EM
1848/* DD */   0x043D,   //   CYRILLIC SMALL LETTER EN
1849/* DE */   0x043E,   //   CYRILLIC SMALL LETTER O
1850/* DF */   0x043F,   //   CYRILLIC SMALL LETTER PE
1851/* E0 */   0x0440,   //   CYRILLIC SMALL LETTER ER
1852/* E1 */   0x0441,   //   CYRILLIC SMALL LETTER ES
1853/* E2 */   0x0442,   //   CYRILLIC SMALL LETTER TE
1854/* E3 */   0x0443,   //   CYRILLIC SMALL LETTER U
1855/* E4 */   0x0444,   //   CYRILLIC SMALL LETTER EF
1856/* E5 */   0x0445,   //   CYRILLIC SMALL LETTER HA
1857/* E6 */   0x0446,   //   CYRILLIC SMALL LETTER TSE
1858/* E7 */   0x0447,   //   CYRILLIC SMALL LETTER CHE
1859/* E8 */   0x0448,   //   CYRILLIC SMALL LETTER SHA
1860/* E9 */   0x0449,   //   CYRILLIC SMALL LETTER SHCHA
1861/* EA */   0x044A,   //   CYRILLIC SMALL LETTER HARD SIGN
1862/* EB */   0x044B,   //   CYRILLIC SMALL LETTER YERU
1863/* EC */   0x044C,   //   CYRILLIC SMALL LETTER SOFT SIGN
1864/* ED */   0x044D,   //   CYRILLIC SMALL LETTER E
1865/* EE */   0x044E,   //   CYRILLIC SMALL LETTER YU
1866/* EF */   0x044F,   //   CYRILLIC SMALL LETTER YA
1867/* F0 */   0x2116,   //   NUMERO SIGN
1868/* F1 */   0x0451,   //   CYRILLIC SMALL LETTER IO
1869/* F2 */   0x0452,   //   CYRILLIC SMALL LETTER DJE
1870/* F3 */   0x0453,   //   CYRILLIC SMALL LETTER GJE
1871/* F4 */   0x0454,   //   CYRILLIC SMALL LETTER UKRAINIAN IE
1872/* F5 */   0x0455,   //   CYRILLIC SMALL LETTER DZE
1873/* F6 */   0x0456,   //   CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
1874/* F7 */   0x0457,   //   CYRILLIC SMALL LETTER YI
1875/* F8 */   0x0458,   //   CYRILLIC SMALL LETTER JE
1876/* F9 */   0x0459,   //   CYRILLIC SMALL LETTER LJE
1877/* FA */   0x045A,   //   CYRILLIC SMALL LETTER NJE
1878/* FB */   0x045B,   //   CYRILLIC SMALL LETTER TSHE
1879/* FC */   0x045C,   //   CYRILLIC SMALL LETTER KJE
1880/* FD */   0x00A7,   //   SECTION SIGN
1881/* FE */   0x045E,   //   CYRILLIC SMALL LETTER SHORT U
1882/* FF */   0x045F   //   CYRILLIC SMALL LETTER DZHE
1883};
1884
1885/***************************************************************************
1886#
1887#   Name:             ISO 8859-6:1999 to Unicode
1888#   Unicode version:  3.0
1889#   Table version:    1.0
1890#   Table format:     Format A
1891#   Date:             1999 July 27
1892#   Authors:          Ken Whistler <kenw@sybase.com>
1893#
1894#   Copyright (c) 1991-1999 Unicode, Inc.  All Rights reserved.
1895#
1896#   This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
1897#   No claims are made as to fitness for any particular purpose.  No
1898#   warranties of any kind are expressed or implied.  The recipient
1899#   agrees to determine applicability of information provided.  If this
1900#   file has been provided on optical media by Unicode, Inc., the sole
1901#   remedy for any claim will be exchange of defective media within 90
1902#   days of receipt.
1903#
1904#   Unicode, Inc. hereby grants the right to freely use the information
1905#   supplied in this file in the creation of products supporting the
1906#   Unicode Standard, and to make copies of this file in any form for
1907#   internal or external distribution as long as this notice remains
1908#   attached.
1909#
1910#   General notes:
1911#
1912#   This table contains the data the Unicode Consortium has on how
1913#       ISO/IEC 8859-6:1999 characters map into Unicode.
1914#
1915#   Format:  Three tab-separated columns
1916#       Column #1 is the ISO/IEC 8859-6 code (in hex as 0xXX)
1917#       Column #2 is the Unicode (in hex as 0xXXXX)
1918#       Column #3 the Unicode name (follows a comment sign, '#')
1919#
1920#   The entries are in ISO/IEC 8859-6 order.
1921#
1922#   Version history
1923#   1.0 version updates 0.1 version by adding mappings for all
1924#   control characters.
1925#   0x30..0x39 remapped to the ASCII digits (U+0030..U+0039) instead
1926#   of the Arabic digits (U+0660..U+0669).
1927#
1928#   Updated versions of this file may be found in:
1929#      <ftp://ftp.unicode.org/Public/MAPPINGS/>
1930#
1931#   Any comments or problems, contact <errata@unicode.org>
1932#   Please note that <errata@unicode.org> is an archival address;
1933#   notices will be checked, but do not expect an immediate response.
1934#
1935***************************************************************************/
1936static const unicode_char lookup_iso8859_6[256] = {
1937/* 00 */   0x0000,   //   NULL
1938/* 01 */   0x0001,   //   START OF HEADING
1939/* 02 */   0x0002,   //   START OF TEXT
1940/* 03 */   0x0003,   //   END OF TEXT
1941/* 04 */   0x0004,   //   END OF TRANSMISSION
1942/* 05 */   0x0005,   //   ENQUIRY
1943/* 06 */   0x0006,   //   ACKNOWLEDGE
1944/* 07 */   0x0007,   //   BELL
1945/* 08 */   0x0008,   //   BACKSPACE
1946/* 09 */   0x0009,   //   HORIZONTAL TABULATION
1947/* 0A */   0x000A,   //   LINE FEED
1948/* 0B */   0x000B,   //   VERTICAL TABULATION
1949/* 0C */   0x000C,   //   FORM FEED
1950/* 0D */   0x000D,   //   CARRIAGE RETURN
1951/* 0E */   0x000E,   //   SHIFT OUT
1952/* 0F */   0x000F,   //   SHIFT IN
1953/* 10 */   0x0010,   //   DATA LINK ESCAPE
1954/* 11 */   0x0011,   //   DEVICE CONTROL ONE
1955/* 12 */   0x0012,   //   DEVICE CONTROL TWO
1956/* 13 */   0x0013,   //   DEVICE CONTROL THREE
1957/* 14 */   0x0014,   //   DEVICE CONTROL FOUR
1958/* 15 */   0x0015,   //   NEGATIVE ACKNOWLEDGE
1959/* 16 */   0x0016,   //   SYNCHRONOUS IDLE
1960/* 17 */   0x0017,   //   END OF TRANSMISSION BLOCK
1961/* 18 */   0x0018,   //   CANCEL
1962/* 19 */   0x0019,   //   END OF MEDIUM
1963/* 1A */   0x001A,   //   SUBSTITUTE
1964/* 1B */   0x001B,   //   ESCAPE
1965/* 1C */   0x001C,   //   FILE SEPARATOR
1966/* 1D */   0x001D,   //   GROUP SEPARATOR
1967/* 1E */   0x001E,   //   RECORD SEPARATOR
1968/* 1F */   0x001F,   //   UNIT SEPARATOR
1969/* 20 */   0x0020,   //   SPACE
1970/* 21 */   0x0021,   //   EXCLAMATION MARK
1971/* 22 */   0x0022,   //   QUOTATION MARK
1972/* 23 */   0x0023,   //   NUMBER SIGN
1973/* 24 */   0x0024,   //   DOLLAR SIGN
1974/* 25 */   0x0025,   //   PERCENT SIGN
1975/* 26 */   0x0026,   //   AMPERSAND
1976/* 27 */   0x0027,   //   APOSTROPHE
1977/* 28 */   0x0028,   //   LEFT PARENTHESIS
1978/* 29 */   0x0029,   //   RIGHT PARENTHESIS
1979/* 2A */   0x002A,   //   ASTERISK
1980/* 2B */   0x002B,   //   PLUS SIGN
1981/* 2C */   0x002C,   //   COMMA
1982/* 2D */   0x002D,   //   HYPHEN-MINUS
1983/* 2E */   0x002E,   //   FULL STOP
1984/* 2F */   0x002F,   //   SOLIDUS
1985/* 30 */   0x0030,   //   DIGIT ZERO
1986/* 31 */   0x0031,   //   DIGIT ONE
1987/* 32 */   0x0032,   //   DIGIT TWO
1988/* 33 */   0x0033,   //   DIGIT THREE
1989/* 34 */   0x0034,   //   DIGIT FOUR
1990/* 35 */   0x0035,   //   DIGIT FIVE
1991/* 36 */   0x0036,   //   DIGIT SIX
1992/* 37 */   0x0037,   //   DIGIT SEVEN
1993/* 38 */   0x0038,   //   DIGIT EIGHT
1994/* 39 */   0x0039,   //   DIGIT NINE
1995/* 3A */   0x003A,   //   COLON
1996/* 3B */   0x003B,   //   SEMICOLON
1997/* 3C */   0x003C,   //   LESS-THAN SIGN
1998/* 3D */   0x003D,   //   EQUALS SIGN
1999/* 3E */   0x003E,   //   GREATER-THAN SIGN
2000/* 3F */   0x003F,   //   QUESTION MARK
2001/* 40 */   0x0040,   //   COMMERCIAL AT
2002/* 41 */   0x0041,   //   LATIN CAPITAL LETTER A
2003/* 42 */   0x0042,   //   LATIN CAPITAL LETTER B
2004/* 43 */   0x0043,   //   LATIN CAPITAL LETTER C
2005/* 44 */   0x0044,   //   LATIN CAPITAL LETTER D
2006/* 45 */   0x0045,   //   LATIN CAPITAL LETTER E
2007/* 46 */   0x0046,   //   LATIN CAPITAL LETTER F
2008/* 47 */   0x0047,   //   LATIN CAPITAL LETTER G
2009/* 48 */   0x0048,   //   LATIN CAPITAL LETTER H
2010/* 49 */   0x0049,   //   LATIN CAPITAL LETTER I
2011/* 4A */   0x004A,   //   LATIN CAPITAL LETTER J
2012/* 4B */   0x004B,   //   LATIN CAPITAL LETTER K
2013/* 4C */   0x004C,   //   LATIN CAPITAL LETTER L
2014/* 4D */   0x004D,   //   LATIN CAPITAL LETTER M
2015/* 4E */   0x004E,   //   LATIN CAPITAL LETTER N
2016/* 4F */   0x004F,   //   LATIN CAPITAL LETTER O
2017/* 50 */   0x0050,   //   LATIN CAPITAL LETTER P
2018/* 51 */   0x0051,   //   LATIN CAPITAL LETTER Q
2019/* 52 */   0x0052,   //   LATIN CAPITAL LETTER R
2020/* 53 */   0x0053,   //   LATIN CAPITAL LETTER S
2021/* 54 */   0x0054,   //   LATIN CAPITAL LETTER T
2022/* 55 */   0x0055,   //   LATIN CAPITAL LETTER U
2023/* 56 */   0x0056,   //   LATIN CAPITAL LETTER V
2024/* 57 */   0x0057,   //   LATIN CAPITAL LETTER W
2025/* 58 */   0x0058,   //   LATIN CAPITAL LETTER X
2026/* 59 */   0x0059,   //   LATIN CAPITAL LETTER Y
2027/* 5A */   0x005A,   //   LATIN CAPITAL LETTER Z
2028/* 5B */   0x005B,   //   LEFT SQUARE BRACKET
2029/* 5C */   0x005C,   //   REVERSE SOLIDUS
2030/* 5D */   0x005D,   //   RIGHT SQUARE BRACKET
2031/* 5E */   0x005E,   //   CIRCUMFLEX ACCENT
2032/* 5F */   0x005F,   //   LOW LINE
2033/* 60 */   0x0060,   //   GRAVE ACCENT
2034/* 61 */   0x0061,   //   LATIN SMALL LETTER A
2035/* 62 */   0x0062,   //   LATIN SMALL LETTER B
2036/* 63 */   0x0063,   //   LATIN SMALL LETTER C
2037/* 64 */   0x0064,   //   LATIN SMALL LETTER D
2038/* 65 */   0x0065,   //   LATIN SMALL LETTER E
2039/* 66 */   0x0066,   //   LATIN SMALL LETTER F
2040/* 67 */   0x0067,   //   LATIN SMALL LETTER G
2041/* 68 */   0x0068,   //   LATIN SMALL LETTER H
2042/* 69 */   0x0069,   //   LATIN SMALL LETTER I
2043/* 6A */   0x006A,   //   LATIN SMALL LETTER J
2044/* 6B */   0x006B,   //   LATIN SMALL LETTER K
2045/* 6C */   0x006C,   //   LATIN SMALL LETTER L
2046/* 6D */   0x006D,   //   LATIN SMALL LETTER M
2047/* 6E */   0x006E,   //   LATIN SMALL LETTER N
2048/* 6F */   0x006F,   //   LATIN SMALL LETTER O
2049/* 70 */   0x0070,   //   LATIN SMALL LETTER P
2050/* 71 */   0x0071,   //   LATIN SMALL LETTER Q
2051/* 72 */   0x0072,   //   LATIN SMALL LETTER R
2052/* 73 */   0x0073,   //   LATIN SMALL LETTER S
2053/* 74 */   0x0074,   //   LATIN SMALL LETTER T
2054/* 75 */   0x0075,   //   LATIN SMALL LETTER U
2055/* 76 */   0x0076,   //   LATIN SMALL LETTER V
2056/* 77 */   0x0077,   //   LATIN SMALL LETTER W
2057/* 78 */   0x0078,   //   LATIN SMALL LETTER X
2058/* 79 */   0x0079,   //   LATIN SMALL LETTER Y
2059/* 7A */   0x007A,   //   LATIN SMALL LETTER Z
2060/* 7B */   0x007B,   //   LEFT CURLY BRACKET
2061/* 7C */   0x007C,   //   VERTICAL LINE
2062/* 7D */   0x007D,   //   RIGHT CURLY BRACKET
2063/* 7E */   0x007E,   //   TILDE
2064/* 7F */   0x007F,   //   DELETE
2065/* 80 */   0x0080,   //   <control>
2066/* 81 */   0x0081,   //   <control>
2067/* 82 */   0x0082,   //   <control>
2068/* 83 */   0x0083,   //   <control>
2069/* 84 */   0x0084,   //   <control>
2070/* 85 */   0x0085,   //   <control>
2071/* 86 */   0x0086,   //   <control>
2072/* 87 */   0x0087,   //   <control>
2073/* 88 */   0x0088,   //   <control>
2074/* 89 */   0x0089,   //   <control>
2075/* 8A */   0x008A,   //   <control>
2076/* 8B */   0x008B,   //   <control>
2077/* 8C */   0x008C,   //   <control>
2078/* 8D */   0x008D,   //   <control>
2079/* 8E */   0x008E,   //   <control>
2080/* 8F */   0x008F,   //   <control>
2081/* 90 */   0x0090,   //   <control>
2082/* 91 */   0x0091,   //   <control>
2083/* 92 */   0x0092,   //   <control>
2084/* 93 */   0x0093,   //   <control>
2085/* 94 */   0x0094,   //   <control>
2086/* 95 */   0x0095,   //   <control>
2087/* 96 */   0x0096,   //   <control>
2088/* 97 */   0x0097,   //   <control>
2089/* 98 */   0x0098,   //   <control>
2090/* 99 */   0x0099,   //   <control>
2091/* 9A */   0x009A,   //   <control>
2092/* 9B */   0x009B,   //   <control>
2093/* 9C */   0x009C,   //   <control>
2094/* 9D */   0x009D,   //   <control>
2095/* 9E */   0x009E,   //   <control>
2096/* 9F */   0x009F,   //   <control>
2097/* A0 */   0x00A0,   //   NO-BREAK SPACE
2098/* A4 */   0x00A4,   //   CURRENCY SIGN
2099/* AC */   0x060C,   //   ARABIC COMMA
2100/* AD */   0x00AD,   //   SOFT HYPHEN
2101/* BB */   0x061B,   //   ARABIC SEMICOLON
2102/* BF */   0x061F,   //   ARABIC QUESTION MARK
2103/* C1 */   0x0621,   //   ARABIC LETTER HAMZA
2104/* C2 */   0x0622,   //   ARABIC LETTER ALEF WITH MADDA ABOVE
2105/* C3 */   0x0623,   //   ARABIC LETTER ALEF WITH HAMZA ABOVE
2106/* C4 */   0x0624,   //   ARABIC LETTER WAW WITH HAMZA ABOVE
2107/* C5 */   0x0625,   //   ARABIC LETTER ALEF WITH HAMZA BELOW
2108/* C6 */   0x0626,   //   ARABIC LETTER YEH WITH HAMZA ABOVE
2109/* C7 */   0x0627,   //   ARABIC LETTER ALEF
2110/* C8 */   0x0628,   //   ARABIC LETTER BEH
2111/* C9 */   0x0629,   //   ARABIC LETTER TEH MARBUTA
2112/* CA */   0x062A,   //   ARABIC LETTER TEH
2113/* CB */   0x062B,   //   ARABIC LETTER THEH
2114/* CC */   0x062C,   //   ARABIC LETTER JEEM
2115/* CD */   0x062D,   //   ARABIC LETTER HAH
2116/* CE */   0x062E,   //   ARABIC LETTER KHAH
2117/* CF */   0x062F,   //   ARABIC LETTER DAL
2118/* D0 */   0x0630,   //   ARABIC LETTER THAL
2119/* D1 */   0x0631,   //   ARABIC LETTER REH
2120/* D2 */   0x0632,   //   ARABIC LETTER ZAIN
2121/* D3 */   0x0633,   //   ARABIC LETTER SEEN
2122/* D4 */   0x0634,   //   ARABIC LETTER SHEEN
2123/* D5 */   0x0635,   //   ARABIC LETTER SAD
2124/* D6 */   0x0636,   //   ARABIC LETTER DAD
2125/* D7 */   0x0637,   //   ARABIC LETTER TAH
2126/* D8 */   0x0638,   //   ARABIC LETTER ZAH
2127/* D9 */   0x0639,   //   ARABIC LETTER AIN
2128/* DA */   0x063A,   //   ARABIC LETTER GHAIN
2129/* E0 */   0x0640,   //   ARABIC TATWEEL
2130/* E1 */   0x0641,   //   ARABIC LETTER FEH
2131/* E2 */   0x0642,   //   ARABIC LETTER QAF
2132/* E3 */   0x0643,   //   ARABIC LETTER KAF
2133/* E4 */   0x0644,   //   ARABIC LETTER LAM
2134/* E5 */   0x0645,   //   ARABIC LETTER MEEM
2135/* E6 */   0x0646,   //   ARABIC LETTER NOON
2136/* E7 */   0x0647,   //   ARABIC LETTER HEH
2137/* E8 */   0x0648,   //   ARABIC LETTER WAW
2138/* E9 */   0x0649,   //   ARABIC LETTER ALEF MAKSURA
2139/* EA */   0x064A,   //   ARABIC LETTER YEH
2140/* EB */   0x064B,   //   ARABIC FATHATAN
2141/* EC */   0x064C,   //   ARABIC DAMMATAN
2142/* ED */   0x064D,   //   ARABIC KASRATAN
2143/* EE */   0x064E,   //   ARABIC FATHA
2144/* EF */   0x064F,   //   ARABIC DAMMA
2145/* F0 */   0x0650,   //   ARABIC KASRA
2146/* F1 */   0x0651,   //   ARABIC SHADDA
2147/* F2 */   0x0652,   //   ARABIC SUKUN
2148/* F3 */   0xFFFD,   //   INVALID
2149/* F4 */   0xFFFD,   //   INVALID
2150/* F5 */   0xFFFD,   //   INVALID
2151/* F6 */   0xFFFD,   //   INVALID
2152/* F7 */   0xFFFD,   //   INVALID
2153/* F8 */   0xFFFD,   //   INVALID
2154/* F9 */   0xFFFD,   //   INVALID
2155/* FA */   0xFFFD,   //   INVALID
2156/* FB */   0xFFFD,   //   INVALID
2157/* FC */   0xFFFD,   //   INVALID
2158/* FD */   0xFFFD,   //   INVALID
2159/* FE */   0xFFFD,   //   INVALID
2160/* FF */   0xFFFD   //   INVALID
2161};
2162
2163/***************************************************************************
2164#
2165#   Name:             ISO 8859-7:2003 to Unicode
2166#   Unicode version:  4.0
2167#   Table version:    2.0
2168#   Table format:     Format A
2169#   Date:             2003-Nov-12
2170#   Authors:          Ken Whistler <kenw@sybase.com>
2171#
2172#   Copyright (c) 1991-2003 Unicode, Inc.  All Rights reserved.
2173#
2174#   This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
2175#   No claims are made as to fitness for any particular purpose.  No
2176#   warranties of any kind are expressed or implied.  The recipient
2177#   agrees to determine applicability of information provided.  If this
2178#   file has been provided on optical media by Unicode, Inc., the sole
2179#   remedy for any claim will be exchange of defective media within 90
2180#   days of receipt.
2181#
2182#   Unicode, Inc. hereby grants the right to freely use the information
2183#   supplied in this file in the creation of products supporting the
2184#   Unicode Standard, and to make copies of this file in any form for
2185#   internal or external distribution as long as this notice remains
2186#   attached.
2187#
2188#   General notes:
2189#
2190#   This table contains the data the Unicode Consortium has on how
2191#       ISO 8859-7:2003 characters map into Unicode.
2192#
2193#   ISO 8859-7:1987 is equivalent to ISO-IR-126, ELOT 928,
2194#   and ECMA 118. ISO 8859-7:2003 adds two currency signs
2195#   and one other character not in the earlier standard.
2196#
2197#   Format:  Three tab-separated columns
2198#       Column #1 is the ISO 8859-7 code (in hex as 0xXX)
2199#       Column #2 is the Unicode (in hex as 0xXXXX)
2200#       Column #3 the Unicode name (follows a comment sign, '#')
2201#
2202#   The entries are in ISO 8859-7 order.
2203#
2204#   Version history
2205#   1.0 version updates 0.1 version by adding mappings for all
2206#   control characters.
2207#   Remap 0xA1 to U+2018 (instead of 0x02BD) to match text of 8859-7
2208#   Remap 0xA2 to U+2019 (instead of 0x02BC) to match text of 8859-7
2209#
2210#   2.0 version updates 1.0 version by adding mappings for the
2211#   three newly added characters 0xA4, 0xA5, 0xAA.
2212#
2213#   Updated versions of this file may be found in:
2214#      <http://www.unicode.org/Public/MAPPINGS/>
2215#
2216#   Any comments or problems, contact the Unicode Consortium at:
2217#           <http://www.unicode.org/reporting.html>
2218#
2219***************************************************************************/
2220static const unicode_char lookup_iso8859_7[256] = {
2221/* 00 */   0x0000,   //   NULL
2222/* 01 */   0x0001,   //   START OF HEADING
2223/* 02 */   0x0002,   //   START OF TEXT
2224/* 03 */   0x0003,   //   END OF TEXT
2225/* 04 */   0x0004,   //   END OF TRANSMISSION
2226/* 05 */   0x0005,   //   ENQUIRY
2227/* 06 */   0x0006,   //   ACKNOWLEDGE
2228/* 07 */   0x0007,   //   BELL
2229/* 08 */   0x0008,   //   BACKSPACE
2230/* 09 */   0x0009,   //   HORIZONTAL TABULATION
2231/* 0A */   0x000A,   //   LINE FEED
2232/* 0B */   0x000B,   //   VERTICAL TABULATION
2233/* 0C */   0x000C,   //   FORM FEED
2234/* 0D */   0x000D,   //   CARRIAGE RETURN
2235/* 0E */   0x000E,   //   SHIFT OUT
2236/* 0F */   0x000F,   //   SHIFT IN
2237/* 10 */   0x0010,   //   DATA LINK ESCAPE
2238/* 11 */   0x0011,   //   DEVICE CONTROL ONE
2239/* 12 */   0x0012,   //   DEVICE CONTROL TWO
2240/* 13 */   0x0013,   //   DEVICE CONTROL THREE
2241/* 14 */   0x0014,   //   DEVICE CONTROL FOUR
2242/* 15 */   0x0015,   //   NEGATIVE ACKNOWLEDGE
2243/* 16 */   0x0016,   //   SYNCHRONOUS IDLE
2244/* 17 */   0x0017,   //   END OF TRANSMISSION BLOCK
2245/* 18 */   0x0018,   //   CANCEL
2246/* 19 */   0x0019,   //   END OF MEDIUM
2247/* 1A */   0x001A,   //   SUBSTITUTE
2248/* 1B */   0x001B,   //   ESCAPE
2249/* 1C */   0x001C,   //   FILE SEPARATOR
2250/* 1D */   0x001D,   //   GROUP SEPARATOR
2251/* 1E */   0x001E,   //   RECORD SEPARATOR
2252/* 1F */   0x001F,   //   UNIT SEPARATOR
2253/* 20 */   0x0020,   //   SPACE
2254/* 21 */   0x0021,   //   EXCLAMATION MARK
2255/* 22 */   0x0022,   //   QUOTATION MARK
2256/* 23 */   0x0023,   //   NUMBER SIGN
2257/* 24 */   0x0024,   //   DOLLAR SIGN
2258/* 25 */   0x0025,   //   PERCENT SIGN
2259/* 26 */   0x0026,   //   AMPERSAND
2260/* 27 */   0x0027,   //   APOSTROPHE
2261/* 28 */   0x0028,   //   LEFT PARENTHESIS
2262/* 29 */   0x0029,   //   RIGHT PARENTHESIS
2263/* 2A */   0x002A,   //   ASTERISK
2264/* 2B */   0x002B,   //   PLUS SIGN
2265/* 2C */   0x002C,   //   COMMA
2266/* 2D */   0x002D,   //   HYPHEN-MINUS
2267/* 2E */   0x002E,   //   FULL STOP
2268/* 2F */   0x002F,   //   SOLIDUS
2269/* 30 */   0x0030,   //   DIGIT ZERO
2270/* 31 */   0x0031,   //   DIGIT ONE
2271/* 32 */   0x0032,   //   DIGIT TWO
2272/* 33 */   0x0033,   //   DIGIT THREE
2273/* 34 */   0x0034,   //   DIGIT FOUR
2274/* 35 */   0x0035,   //   DIGIT FIVE
2275/* 36 */   0x0036,   //   DIGIT SIX
2276/* 37 */   0x0037,   //   DIGIT SEVEN
2277/* 38 */   0x0038,   //   DIGIT EIGHT
2278/* 39 */   0x0039,   //   DIGIT NINE
2279/* 3A */   0x003A,   //   COLON
2280/* 3B */   0x003B,   //   SEMICOLON
2281/* 3C */   0x003C,   //   LESS-THAN SIGN
2282/* 3D */   0x003D,   //   EQUALS SIGN
2283/* 3E */   0x003E,   //   GREATER-THAN SIGN
2284/* 3F */   0x003F,   //   QUESTION MARK
2285/* 40 */   0x0040,   //   COMMERCIAL AT
2286/* 41 */   0x0041,   //   LATIN CAPITAL LETTER A
2287/* 42 */   0x0042,   //   LATIN CAPITAL LETTER B
2288/* 43 */   0x0043,   //   LATIN CAPITAL LETTER C
2289/* 44 */   0x0044,   //   LATIN CAPITAL LETTER D
2290/* 45 */   0x0045,   //   LATIN CAPITAL LETTER E
2291/* 46 */   0x0046,   //   LATIN CAPITAL LETTER F
2292/* 47 */   0x0047,   //   LATIN CAPITAL LETTER G
2293/* 48 */   0x0048,   //   LATIN CAPITAL LETTER H
2294/* 49 */   0x0049,   //   LATIN CAPITAL LETTER I
2295/* 4A */   0x004A,   //   LATIN CAPITAL LETTER J
2296/* 4B */   0x004B,   //   LATIN CAPITAL LETTER K
2297/* 4C */   0x004C,   //   LATIN CAPITAL LETTER L
2298/* 4D */   0x004D,   //   LATIN CAPITAL LETTER M
2299/* 4E */   0x004E,   //   LATIN CAPITAL LETTER N
2300/* 4F */   0x004F,   //   LATIN CAPITAL LETTER O
2301/* 50 */   0x0050,   //   LATIN CAPITAL LETTER P
2302/* 51 */   0x0051,   //   LATIN CAPITAL LETTER Q
2303/* 52 */   0x0052,   //   LATIN CAPITAL LETTER R
2304/* 53 */   0x0053,   //   LATIN CAPITAL LETTER S
2305/* 54 */   0x0054,   //   LATIN CAPITAL LETTER T
2306/* 55 */   0x0055,   //   LATIN CAPITAL LETTER U
2307/* 56 */   0x0056,   //   LATIN CAPITAL LETTER V
2308/* 57 */   0x0057,   //   LATIN CAPITAL LETTER W
2309/* 58 */   0x0058,   //   LATIN CAPITAL LETTER X
2310/* 59 */   0x0059,   //   LATIN CAPITAL LETTER Y
2311/* 5A */   0x005A,   //   LATIN CAPITAL LETTER Z
2312/* 5B */   0x005B,   //   LEFT SQUARE BRACKET
2313/* 5C */   0x005C,   //   REVERSE SOLIDUS
2314/* 5D */   0x005D,   //   RIGHT SQUARE BRACKET
2315/* 5E */   0x005E,   //   CIRCUMFLEX ACCENT
2316/* 5F */   0x005F,   //   LOW LINE
2317/* 60 */   0x0060,   //   GRAVE ACCENT
2318/* 61 */   0x0061,   //   LATIN SMALL LETTER A
2319/* 62 */   0x0062,   //   LATIN SMALL LETTER B
2320/* 63 */   0x0063,   //   LATIN SMALL LETTER C
2321/* 64 */   0x0064,   //   LATIN SMALL LETTER D
2322/* 65 */   0x0065,   //   LATIN SMALL LETTER E
2323/* 66 */   0x0066,   //   LATIN SMALL LETTER F
2324/* 67 */   0x0067,   //   LATIN SMALL LETTER G
2325/* 68 */   0x0068,   //   LATIN SMALL LETTER H
2326/* 69 */   0x0069,   //   LATIN SMALL LETTER I
2327/* 6A */   0x006A,   //   LATIN SMALL LETTER J
2328/* 6B */   0x006B,   //   LATIN SMALL LETTER K
2329/* 6C */   0x006C,   //   LATIN SMALL LETTER L
2330/* 6D */   0x006D,   //   LATIN SMALL LETTER M
2331/* 6E */   0x006E,   //   LATIN SMALL LETTER N
2332/* 6F */   0x006F,   //   LATIN SMALL LETTER O
2333/* 70 */   0x0070,   //   LATIN SMALL LETTER P
2334/* 71 */   0x0071,   //   LATIN SMALL LETTER Q
2335/* 72 */   0x0072,   //   LATIN SMALL LETTER R
2336/* 73 */   0x0073,   //   LATIN SMALL LETTER S
2337/* 74 */   0x0074,   //   LATIN SMALL LETTER T
2338/* 75 */   0x0075,   //   LATIN SMALL LETTER U
2339/* 76 */   0x0076,   //   LATIN SMALL LETTER V
2340/* 77 */   0x0077,   //   LATIN SMALL LETTER W
2341/* 78 */   0x0078,   //   LATIN SMALL LETTER X
2342/* 79 */   0x0079,   //   LATIN SMALL LETTER Y
2343/* 7A */   0x007A,   //   LATIN SMALL LETTER Z
2344/* 7B */   0x007B,   //   LEFT CURLY BRACKET
2345/* 7C */   0x007C,   //   VERTICAL LINE
2346/* 7D */   0x007D,   //   RIGHT CURLY BRACKET
2347/* 7E */   0x007E,   //   TILDE
2348/* 7F */   0x007F,   //   DELETE
2349/* 80 */   0x0080,   //   <control>
2350/* 81 */   0x0081,   //   <control>
2351/* 82 */   0x0082,   //   <control>
2352/* 83 */   0x0083,   //   <control>
2353/* 84 */   0x0084,   //   <control>
2354/* 85 */   0x0085,   //   <control>
2355/* 86 */   0x0086,   //   <control>
2356/* 87 */   0x0087,   //   <control>
2357/* 88 */   0x0088,   //   <control>
2358/* 89 */   0x0089,   //   <control>
2359/* 8A */   0x008A,   //   <control>
2360/* 8B */   0x008B,   //   <control>
2361/* 8C */   0x008C,   //   <control>
2362/* 8D */   0x008D,   //   <control>
2363/* 8E */   0x008E,   //   <control>
2364/* 8F */   0x008F,   //   <control>
2365/* 90 */   0x0090,   //   <control>
2366/* 91 */   0x0091,   //   <control>
2367/* 92 */   0x0092,   //   <control>
2368/* 93 */   0x0093,   //   <control>
2369/* 94 */   0x0094,   //   <control>
2370/* 95 */   0x0095,   //   <control>
2371/* 96 */   0x0096,   //   <control>
2372/* 97 */   0x0097,   //   <control>
2373/* 98 */   0x0098,   //   <control>
2374/* 99 */   0x0099,   //   <control>
2375/* 9A */   0x009A,   //   <control>
2376/* 9B */   0x009B,   //   <control>
2377/* 9C */   0x009C,   //   <control>
2378/* 9D */   0x009D,   //   <control>
2379/* 9E */   0x009E,   //   <control>
2380/* 9F */   0x009F,   //   <control>
2381/* A0 */   0x00A0,   //   NO-BREAK SPACE
2382/* A1 */   0x2018,   //   LEFT SINGLE QUOTATION MARK
2383/* A2 */   0x2019,   //   RIGHT SINGLE QUOTATION MARK
2384/* A3 */   0x00A3,   //   POUND SIGN
2385/* A4 */   0x20AC,   //   EURO SIGN
2386/* A5 */   0x20AF,   //   DRACHMA SIGN
2387/* A6 */   0x00A6,   //   BROKEN BAR
2388/* A7 */   0x00A7,   //   SECTION SIGN
2389/* A8 */   0x00A8,   //   DIAERESIS
2390/* A9 */   0x00A9,   //   COPYRIGHT SIGN
2391/* AA */   0x037A,   //   GREEK YPOGEGRAMMENI
2392/* AB */   0x00AB,   //   LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
2393/* AC */   0x00AC,   //   NOT SIGN
2394/* AD */   0x00AD,   //   SOFT HYPHEN
2395/* AF */   0x2015,   //   HORIZONTAL BAR
2396/* B0 */   0x00B0,   //   DEGREE SIGN
2397/* B1 */   0x00B1,   //   PLUS-MINUS SIGN
2398/* B2 */   0x00B2,   //   SUPERSCRIPT TWO
2399/* B3 */   0x00B3,   //   SUPERSCRIPT THREE
2400/* B4 */   0x0384,   //   GREEK TONOS
2401/* B5 */   0x0385,   //   GREEK DIALYTIKA TONOS
2402/* B6 */   0x0386,   //   GREEK CAPITAL LETTER ALPHA WITH TONOS
2403/* B7 */   0x00B7,   //   MIDDLE DOT
2404/* B8 */   0x0388,   //   GREEK CAPITAL LETTER EPSILON WITH TONOS
2405/* B9 */   0x0389,   //   GREEK CAPITAL LETTER ETA WITH TONOS
2406/* BA */   0x038A,   //   GREEK CAPITAL LETTER IOTA WITH TONOS
2407/* BB */   0x00BB,   //   RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
2408/* BC */   0x038C,   //   GREEK CAPITAL LETTER OMICRON WITH TONOS
2409/* BD */   0x00BD,   //   VULGAR FRACTION ONE HALF
2410/* BE */   0x038E,   //   GREEK CAPITAL LETTER UPSILON WITH TONOS
2411/* BF */   0x038F,   //   GREEK CAPITAL LETTER OMEGA WITH TONOS
2412/* C0 */   0x0390,   //   GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
2413/* C1 */   0x0391,   //   GREEK CAPITAL LETTER ALPHA
2414/* C2 */   0x0392,   //   GREEK CAPITAL LETTER BETA
2415/* C3 */   0x0393,   //   GREEK CAPITAL LETTER GAMMA
2416/* C4 */   0x0394,   //   GREEK CAPITAL LETTER DELTA
2417/* C5 */   0x0395,   //   GREEK CAPITAL LETTER EPSILON
2418/* C6 */   0x0396,   //   GREEK CAPITAL LETTER ZETA
2419/* C7 */   0x0397,   //   GREEK CAPITAL LETTER ETA
2420/* C8 */   0x0398,   //   GREEK CAPITAL LETTER THETA
2421/* C9 */   0x0399,   //   GREEK CAPITAL LETTER IOTA
2422/* CA */   0x039A,   //   GREEK CAPITAL LETTER KAPPA
2423/* CB */   0x039B,   //   GREEK CAPITAL LETTER LAMDA
2424/* CC */   0x039C,   //   GREEK CAPITAL LETTER MU
2425/* CD */   0x039D,   //   GREEK CAPITAL LETTER NU
2426/* CE */   0x039E,   //   GREEK CAPITAL LETTER XI
2427/* CF */   0x039F,   //   GREEK CAPITAL LETTER OMICRON
2428/* D0 */   0x03A0,   //   GREEK CAPITAL LETTER PI
2429/* D1 */   0x03A1,   //   GREEK CAPITAL LETTER RHO
2430/* D3 */   0x03A3,   //   GREEK CAPITAL LETTER SIGMA
2431/* D4 */   0x03A4,   //   GREEK CAPITAL LETTER TAU
2432/* D5 */   0x03A5,   //   GREEK CAPITAL LETTER UPSILON
2433/* D6 */   0x03A6,   //   GREEK CAPITAL LETTER PHI
2434/* D7 */   0x03A7,   //   GREEK CAPITAL LETTER CHI
2435/* D8 */   0x03A8,   //   GREEK CAPITAL LETTER PSI
2436/* D9 */   0x03A9,   //   GREEK CAPITAL LETTER OMEGA
2437/* DA */   0x03AA,   //   GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
2438/* DB */   0x03AB,   //   GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
2439/* DC */   0x03AC,   //   GREEK SMALL LETTER ALPHA WITH TONOS
2440/* DD */   0x03AD,   //   GREEK SMALL LETTER EPSILON WITH TONOS
2441/* DE */   0x03AE,   //   GREEK SMALL LETTER ETA WITH TONOS
2442/* DF */   0x03AF,   //   GREEK SMALL LETTER IOTA WITH TONOS
2443/* E0 */   0x03B0,   //   GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
2444/* E1 */   0x03B1,   //   GREEK SMALL LETTER ALPHA
2445/* E2 */   0x03B2,   //   GREEK SMALL LETTER BETA
2446/* E3 */   0x03B3,   //   GREEK SMALL LETTER GAMMA
2447/* E4 */   0x03B4,   //   GREEK SMALL LETTER DELTA
2448/* E5 */   0x03B5,   //   GREEK SMALL LETTER EPSILON
2449/* E6 */   0x03B6,   //   GREEK SMALL LETTER ZETA
2450/* E7 */   0x03B7,   //   GREEK SMALL LETTER ETA
2451/* E8 */   0x03B8,   //   GREEK SMALL LETTER THETA
2452/* E9 */   0x03B9,   //   GREEK SMALL LETTER IOTA
2453/* EA */   0x03BA,   //   GREEK SMALL LETTER KAPPA
2454/* EB */   0x03BB,   //   GREEK SMALL LETTER LAMDA
2455/* EC */   0x03BC,   //   GREEK SMALL LETTER MU
2456/* ED */   0x03BD,   //   GREEK SMALL LETTER NU
2457/* EE */   0x03BE,   //   GREEK SMALL LETTER XI
2458/* EF */   0x03BF,   //   GREEK SMALL LETTER OMICRON
2459/* F0 */   0x03C0,   //   GREEK SMALL LETTER PI
2460/* F1 */   0x03C1,   //   GREEK SMALL LETTER RHO
2461/* F2 */   0x03C2,   //   GREEK SMALL LETTER FINAL SIGMA
2462/* F3 */   0x03C3,   //   GREEK SMALL LETTER SIGMA
2463/* F4 */   0x03C4,   //   GREEK SMALL LETTER TAU
2464/* F5 */   0x03C5,   //   GREEK SMALL LETTER UPSILON
2465/* F6 */   0x03C6,   //   GREEK SMALL LETTER PHI
2466/* F7 */   0x03C7,   //   GREEK SMALL LETTER CHI
2467/* F8 */   0x03C8,   //   GREEK SMALL LETTER PSI
2468/* F9 */   0x03C9,   //   GREEK SMALL LETTER OMEGA
2469/* FA */   0x03CA,   //   GREEK SMALL LETTER IOTA WITH DIALYTIKA
2470/* FB */   0x03CB,   //   GREEK SMALL LETTER UPSILON WITH DIALYTIKA
2471/* FC */   0x03CC,   //   GREEK SMALL LETTER OMICRON WITH TONOS
2472/* FD */   0x03CD,   //   GREEK SMALL LETTER UPSILON WITH TONOS
2473/* FE */   0x03CE,   //   GREEK SMALL LETTER OMEGA WITH TONOS
2474/* FF */   0xFFFD,   //   INVALID
2475};
2476
2477/***************************************************************************
2478#
2479#   Name:             ISO/IEC 8859-8:1999 to Unicode
2480#   Unicode version:  3.0
2481#   Table version:    1.1
2482#   Table format:     Format A
2483#   Date:             2000-Jan-03
2484#   Authors:          Ken Whistler <kenw@sybase.com>
2485#
2486#   Copyright (c) 1991-1999 Unicode, Inc.  All Rights reserved.
2487#
2488#   This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
2489#   No claims are made as to fitness for any particular purpose.  No
2490#   warranties of any kind are expressed or implied.  The recipient
2491#   agrees to determine applicability of information provided.  If this
2492#   file has been provided on optical media by Unicode, Inc., the sole
2493#   remedy for any claim will be exchange of defective media within 90
2494#   days of receipt.
2495#
2496#   Unicode, Inc. hereby grants the right to freely use the information
2497#   supplied in this file in the creation of products supporting the
2498#   Unicode Standard, and to make copies of this file in any form for
2499#   internal or external distribution as long as this notice remains
2500#   attached.
2501#
2502#   General notes:
2503#
2504#   This table contains the data the Unicode Consortium has on how
2505#       ISO/IEC 8859-8:1999 characters map into Unicode.
2506#
2507#   Format:  Three tab-separated columns
2508#       Column #1 is the ISO/IEC 8859-8 code (in hex as 0xXX)
2509#       Column #2 is the Unicode (in hex as 0xXXXX)
2510#       Column #3 the Unicode name (follows a comment sign, '#')
2511#
2512#   The entries are in ISO/IEC 8859-8 order.
2513#
2514#   Version history
2515#   1.0 version updates 0.1 version by adding mappings for all
2516#   control characters.
2517#       1.1 version updates to the published 8859-8:1999, correcting
2518#          the mapping of 0xAF and adding mappings for LRM and RLM.
2519#
2520#   Updated versions of this file may be found in:
2521#      <ftp://ftp.unicode.org/Public/MAPPINGS/>
2522#
2523#   Any comments or problems, contact <errata@unicode.org>
2524#   Please note that <errata@unicode.org> is an archival address;
2525#   notices will be checked, but do not expect an immediate response.
2526#
2527***************************************************************************/
2528static const unicode_char lookup_iso8859_8[256] = {
2529/* 00 */   0x0000,   //   NULL
2530/* 01 */   0x0001,   //   START OF HEADING
2531/* 02 */   0x0002,   //   START OF TEXT
2532/* 03 */   0x0003,   //   END OF TEXT
2533/* 04 */   0x0004,   //   END OF TRANSMISSION
2534/* 05 */   0x0005,   //   ENQUIRY
2535/* 06 */   0x0006,   //   ACKNOWLEDGE
2536/* 07 */   0x0007,   //   BELL
2537/* 08 */   0x0008,   //   BACKSPACE
2538/* 09 */   0x0009,   //   HORIZONTAL TABULATION
2539/* 0A */   0x000A,   //   LINE FEED
2540/* 0B */   0x000B,   //   VERTICAL TABULATION
2541/* 0C */   0x000C,   //   FORM FEED
2542/* 0D */   0x000D,   //   CARRIAGE RETURN
2543/* 0E */   0x000E,   //   SHIFT OUT
2544/* 0F */   0x000F,   //   SHIFT IN
2545/* 10 */   0x0010,   //   DATA LINK ESCAPE
2546/* 11 */   0x0011,   //   DEVICE CONTROL ONE
2547/* 12 */   0x0012,   //   DEVICE CONTROL TWO
2548/* 13 */   0x0013,   //   DEVICE CONTROL THREE
2549/* 14 */   0x0014,   //   DEVICE CONTROL FOUR
2550/* 15 */   0x0015,   //   NEGATIVE ACKNOWLEDGE
2551/* 16 */   0x0016,   //   SYNCHRONOUS IDLE
2552/* 17 */   0x0017,   //   END OF TRANSMISSION BLOCK
2553/* 18 */   0x0018,   //   CANCEL
2554/* 19 */   0x0019,   //   END OF MEDIUM
2555/* 1A */   0x001A,   //   SUBSTITUTE
2556/* 1B */   0x001B,   //   ESCAPE
2557/* 1C */   0x001C,   //   FILE SEPARATOR
2558/* 1D */   0x001D,   //   GROUP SEPARATOR
2559/* 1E */   0x001E,   //   RECORD SEPARATOR
2560/* 1F */   0x001F,   //   UNIT SEPARATOR
2561/* 20 */   0x0020,   //   SPACE
2562/* 21 */   0x0021,   //   EXCLAMATION MARK
2563/* 22 */   0x0022,   //   QUOTATION MARK
2564/* 23 */   0x0023,   //   NUMBER SIGN
2565/* 24 */   0x0024,   //   DOLLAR SIGN
2566/* 25 */   0x0025,   //   PERCENT SIGN
2567/* 26 */   0x0026,   //   AMPERSAND
2568/* 27 */   0x0027,   //   APOSTROPHE
2569/* 28 */   0x0028,   //   LEFT PARENTHESIS
2570/* 29 */   0x0029,   //   RIGHT PARENTHESIS
2571/* 2A */   0x002A,   //   ASTERISK
2572/* 2B */   0x002B,   //   PLUS SIGN
2573/* 2C */   0x002C,   //   COMMA
2574/* 2D */   0x002D,   //   HYPHEN-MINUS
2575/* 2E */   0x002E,   //   FULL STOP
2576/* 2F */   0x002F,   //   SOLIDUS
2577/* 30 */   0x0030,   //   DIGIT ZERO
2578/* 31 */   0x0031,   //   DIGIT ONE
2579/* 32 */   0x0032,   //   DIGIT TWO
2580/* 33 */   0x0033,   //   DIGIT THREE
2581/* 34 */   0x0034,   //   DIGIT FOUR
2582/* 35 */   0x0035,   //   DIGIT FIVE
2583/* 36 */   0x0036,   //   DIGIT SIX
2584/* 37 */   0x0037,   //   DIGIT SEVEN
2585/* 38 */   0x0038,   //   DIGIT EIGHT
2586/* 39 */   0x0039,   //   DIGIT NINE
2587/* 3A */   0x003A,   //   COLON
2588/* 3B */   0x003B,   //   SEMICOLON
2589/* 3C */   0x003C,   //   LESS-THAN SIGN
2590/* 3D */   0x003D,   //   EQUALS SIGN
2591/* 3E */   0x003E,   //   GREATER-THAN SIGN
2592/* 3F */   0x003F,   //   QUESTION MARK
2593/* 40 */   0x0040,   //   COMMERCIAL AT
2594/* 41 */   0x0041,   //   LATIN CAPITAL LETTER A
2595/* 42 */   0x0042,   //   LATIN CAPITAL LETTER B
2596/* 43 */   0x0043,   //   LATIN CAPITAL LETTER C
2597/* 44 */   0x0044,   //   LATIN CAPITAL LETTER D
2598/* 45 */   0x0045,   //   LATIN CAPITAL LETTER E
2599/* 46 */   0x0046,   //   LATIN CAPITAL LETTER F
2600/* 47 */   0x0047,   //   LATIN CAPITAL LETTER G
2601/* 48 */   0x0048,   //   LATIN CAPITAL LETTER H
2602/* 49 */   0x0049,   //   LATIN CAPITAL LETTER I
2603/* 4A */   0x004A,   //   LATIN CAPITAL LETTER J
2604/* 4B */   0x004B,   //   LATIN CAPITAL LETTER K
2605/* 4C */   0x004C,   //   LATIN CAPITAL LETTER L
2606/* 4D */   0x004D,   //   LATIN CAPITAL LETTER M
2607/* 4E */   0x004E,   //   LATIN CAPITAL LETTER N
2608/* 4F */   0x004F,   //   LATIN CAPITAL LETTER O
2609/* 50 */   0x0050,   //   LATIN CAPITAL LETTER P
2610/* 51 */   0x0051,   //   LATIN CAPITAL LETTER Q
2611/* 52 */   0x0052,   //   LATIN CAPITAL LETTER R
2612/* 53 */   0x0053,   //   LATIN CAPITAL LETTER S
2613/* 54 */   0x0054,   //   LATIN CAPITAL LETTER T
2614/* 55 */   0x0055,   //   LATIN CAPITAL LETTER U
2615/* 56 */   0x0056,   //   LATIN CAPITAL LETTER V
2616/* 57 */   0x0057,   //   LATIN CAPITAL LETTER W
2617/* 58 */   0x0058,   //   LATIN CAPITAL LETTER X
2618/* 59 */   0x0059,   //   LATIN CAPITAL LETTER Y
2619/* 5A */   0x005A,   //   LATIN CAPITAL LETTER Z
2620/* 5B */   0x005B,   //   LEFT SQUARE BRACKET
2621/* 5C */   0x005C,   //   REVERSE SOLIDUS
2622/* 5D */   0x005D,   //   RIGHT SQUARE BRACKET
2623/* 5E */   0x005E,   //   CIRCUMFLEX ACCENT
2624/* 5F */   0x005F,   //   LOW LINE
2625/* 60 */   0x0060,   //   GRAVE ACCENT
2626/* 61 */   0x0061,   //   LATIN SMALL LETTER A
2627/* 62 */   0x0062,   //   LATIN SMALL LETTER B
2628/* 63 */   0x0063,   //   LATIN SMALL LETTER C
2629/* 64 */   0x0064,   //   LATIN SMALL LETTER D
2630/* 65 */   0x0065,   //   LATIN SMALL LETTER E
2631/* 66 */   0x0066,   //   LATIN SMALL LETTER F
2632/* 67 */   0x0067,   //   LATIN SMALL LETTER G
2633/* 68 */   0x0068,   //   LATIN SMALL LETTER H
2634/* 69 */   0x0069,   //   LATIN SMALL LETTER I
2635/* 6A */   0x006A,   //   LATIN SMALL LETTER J
2636/* 6B */   0x006B,   //   LATIN SMALL LETTER K
2637/* 6C */   0x006C,   //   LATIN SMALL LETTER L
2638/* 6D */   0x006D,   //   LATIN SMALL LETTER M
2639/* 6E */   0x006E,   //   LATIN SMALL LETTER N
2640/* 6F */   0x006F,   //   LATIN SMALL LETTER O
2641/* 70 */   0x0070,   //   LATIN SMALL LETTER P
2642/* 71 */   0x0071,   //   LATIN SMALL LETTER Q
2643/* 72 */   0x0072,   //   LATIN SMALL LETTER R
2644/* 73 */   0x0073,   //   LATIN SMALL LETTER S
2645/* 74 */   0x0074,   //   LATIN SMALL LETTER T
2646/* 75 */   0x0075,   //   LATIN SMALL LETTER U
2647/* 76 */   0x0076,   //   LATIN SMALL LETTER V
2648/* 77 */   0x0077,   //   LATIN SMALL LETTER W
2649/* 78 */   0x0078,   //   LATIN SMALL LETTER X
2650/* 79 */   0x0079,   //   LATIN SMALL LETTER Y
2651/* 7A */   0x007A,   //   LATIN SMALL LETTER Z
2652/* 7B */   0x007B,   //   LEFT CURLY BRACKET
2653/* 7C */   0x007C,   //   VERTICAL LINE
2654/* 7D */   0x007D,   //   RIGHT CURLY BRACKET
2655/* 7E */   0x007E,   //   TILDE
2656/* 7F */   0x007F,   //   DELETE
2657/* 80 */   0x0080,   //   <control>
2658/* 81 */   0x0081,   //   <control>
2659/* 82 */   0x0082,   //   <control>
2660/* 83 */   0x0083,   //   <control>
2661/* 84 */   0x0084,   //   <control>
2662/* 85 */   0x0085,   //   <control>
2663/* 86 */   0x0086,   //   <control>
2664/* 87 */   0x0087,   //   <control>
2665/* 88 */   0x0088,   //   <control>
2666/* 89 */   0x0089,   //   <control>
2667/* 8A */   0x008A,   //   <control>
2668/* 8B */   0x008B,   //   <control>
2669/* 8C */   0x008C,   //   <control>
2670/* 8D */   0x008D,   //   <control>
2671/* 8E */   0x008E,   //   <control>
2672/* 8F */   0x008F,   //   <control>
2673/* 90 */   0x0090,   //   <control>
2674/* 91 */   0x0091,   //   <control>
2675/* 92 */   0x0092,   //   <control>
2676/* 93 */   0x0093,   //   <control>
2677/* 94 */   0x0094,   //   <control>
2678/* 95 */   0x0095,   //   <control>
2679/* 96 */   0x0096,   //   <control>
2680/* 97 */   0x0097,   //   <control>
2681/* 98 */   0x0098,   //   <control>
2682/* 99 */   0x0099,   //   <control>
2683/* 9A */   0x009A,   //   <control>
2684/* 9B */   0x009B,   //   <control>
2685/* 9C */   0x009C,   //   <control>
2686/* 9D */   0x009D,   //   <control>
2687/* 9E */   0x009E,   //   <control>
2688/* 9F */   0x009F,   //   <control>
2689/* A0 */   0x00A0,   //   NO-BREAK SPACE
2690/* A2 */   0x00A2,   //   CENT SIGN
2691/* A3 */   0x00A3,   //   POUND SIGN
2692/* A4 */   0x00A4,   //   CURRENCY SIGN
2693/* A5 */   0x00A5,   //   YEN SIGN
2694/* A6 */   0x00A6,   //   BROKEN BAR
2695/* A7 */   0x00A7,   //   SECTION SIGN
2696/* A8 */   0x00A8,   //   DIAERESIS
2697/* A9 */   0x00A9,   //   COPYRIGHT SIGN
2698/* AA */   0x00D7,   //   MULTIPLICATION SIGN
2699/* AB */   0x00AB,   //   LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
2700/* AC */   0x00AC,   //   NOT SIGN
2701/* AD */   0x00AD,   //   SOFT HYPHEN
2702/* AE */   0x00AE,   //   REGISTERED SIGN
2703/* AF */   0x00AF,   //   MACRON
2704/* B0 */   0x00B0,   //   DEGREE SIGN
2705/* B1 */   0x00B1,   //   PLUS-MINUS SIGN
2706/* B2 */   0x00B2,   //   SUPERSCRIPT TWO
2707/* B3 */   0x00B3,   //   SUPERSCRIPT THREE
2708/* B4 */   0x00B4,   //   ACUTE ACCENT
2709/* B5 */   0x00B5,   //   MICRO SIGN
2710/* B6 */   0x00B6,   //   PILCROW SIGN
2711/* B7 */   0x00B7,   //   MIDDLE DOT
2712/* B8 */   0x00B8,   //   CEDILLA
2713/* B9 */   0x00B9,   //   SUPERSCRIPT ONE
2714/* BA */   0x00F7,   //   DIVISION SIGN
2715/* BB */   0x00BB,   //   RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
2716/* BC */   0x00BC,   //   VULGAR FRACTION ONE QUARTER
2717/* BD */   0x00BD,   //   VULGAR FRACTION ONE HALF
2718/* BE */   0x00BE,   //   VULGAR FRACTION THREE QUARTERS
2719/* DF */   0x2017,   //   DOUBLE LOW LINE
2720/* E0 */   0x05D0,   //   HEBREW LETTER ALEF
2721/* E1 */   0x05D1,   //   HEBREW LETTER BET
2722/* E2 */   0x05D2,   //   HEBREW LETTER GIMEL
2723/* E3 */   0x05D3,   //   HEBREW LETTER DALET
2724/* E4 */   0x05D4,   //   HEBREW LETTER HE
2725/* E5 */   0x05D5,   //   HEBREW LETTER VAV
2726/* E6 */   0x05D6,   //   HEBREW LETTER ZAYIN
2727/* E7 */   0x05D7,   //   HEBREW LETTER HET
2728/* E8 */   0x05D8,   //   HEBREW LETTER TET
2729/* E9 */   0x05D9,   //   HEBREW LETTER YOD
2730/* EA */   0x05DA,   //   HEBREW LETTER FINAL KAF
2731/* EB */   0x05DB,   //   HEBREW LETTER KAF
2732/* EC */   0x05DC,   //   HEBREW LETTER LAMED
2733/* ED */   0x05DD,   //   HEBREW LETTER FINAL MEM
2734/* EE */   0x05DE,   //   HEBREW LETTER MEM
2735/* EF */   0x05DF,   //   HEBREW LETTER FINAL NUN
2736/* F0 */   0x05E0,   //   HEBREW LETTER NUN
2737/* F1 */   0x05E1,   //   HEBREW LETTER SAMEKH
2738/* F2 */   0x05E2,   //   HEBREW LETTER AYIN
2739/* F3 */   0x05E3,   //   HEBREW LETTER FINAL PE
2740/* F4 */   0x05E4,   //   HEBREW LETTER PE
2741/* F5 */   0x05E5,   //   HEBREW LETTER FINAL TSADI
2742/* F6 */   0x05E6,   //   HEBREW LETTER TSADI
2743/* F7 */   0x05E7,   //   HEBREW LETTER QOF
2744/* F8 */   0x05E8,   //   HEBREW LETTER RESH
2745/* F9 */   0x05E9,   //   HEBREW LETTER SHIN
2746/* FA */   0x05EA,   //   HEBREW LETTER TAV
2747/* FD */   0x200E,   //   LEFT-TO-RIGHT MARK
2748/* FE */   0x200F,   //   RIGHT-TO-LEFT MARK
2749/* FF */   0xFFFD   //   INVALID
2750};
2751
2752/***************************************************************************
2753#
2754#   Name:             ISO/IEC 8859-9:1999 to Unicode
2755#   Unicode version:  3.0
2756#   Table version:    1.0
2757#   Table format:     Format A
2758#   Date:             1999 July 27
2759#   Authors:          Ken Whistler <kenw@sybase.com>
2760#
2761#   Copyright (c) 1991-1999 Unicode, Inc.  All Rights reserved.
2762#
2763#   This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
2764#   No claims are made as to fitness for any particular purpose.  No
2765#   warranties of any kind are expressed or implied.  The recipient
2766#   agrees to determine applicability of information provided.  If this
2767#   file has been provided on magnetic media by Unicode, Inc., the sole
2768#   remedy for any claim will be exchange of defective media within 90
2769#   days of receipt.
2770#
2771#   Unicode, Inc. hereby grants the right to freely use the information
2772#   supplied in this file in the creation of products supporting the
2773#   Unicode Standard, and to make copies of this file in any form for
2774#   internal or external distribution as long as this notice remains
2775#   attached.
2776#
2777#   General notes:
2778#
2779#   This table contains the data the Unicode Consortium has on how
2780#       ISO/IEC 8859-9:1999 characters map into Unicode.
2781#
2782#   Format:  Three tab-separated columns
2783#       Column #1 is the ISO/IEC 8859-9 code (in hex as 0xXX)
2784#       Column #2 is the Unicode (in hex as 0xXXXX)
2785#       Column #3 the Unicode name (follows a comment sign, '#')
2786#
2787#   The entries are in ISO/IEC 8859-9 order.
2788#
2789#   ISO/IEC 8859-9 is also equivalent to ISO-IR-148.
2790#
2791#   Version history
2792#   1.0 version updates 0.1 version by adding mappings for all
2793#   control characters.
2794#
2795#   Updated versions of this file may be found in:
2796#      <ftp://ftp.unicode.org/Public/MAPPINGS/>
2797#
2798#   Any comments or problems, contact <errata@unicode.org>
2799#   Please note that <errata@unicode.org> is an archival address;
2800#   notices will be checked, but do not expect an immediate response.
2801#
2802***************************************************************************/
2803static const unicode_char lookup_iso8859_9[256] = {
2804/* 00 */   0x0000,   //   NULL
2805/* 01 */   0x0001,   //   START OF HEADING
2806/* 02 */   0x0002,   //   START OF TEXT
2807/* 03 */   0x0003,   //   END OF TEXT
2808/* 04 */   0x0004,   //   END OF TRANSMISSION
2809/* 05 */   0x0005,   //   ENQUIRY
2810/* 06 */   0x0006,   //   ACKNOWLEDGE
2811/* 07 */   0x0007,   //   BELL
2812/* 08 */   0x0008,   //   BACKSPACE
2813/* 09 */   0x0009,   //   HORIZONTAL TABULATION
2814/* 0A */   0x000A,   //   LINE FEED
2815/* 0B */   0x000B,   //   VERTICAL TABULATION
2816/* 0C */   0x000C,   //   FORM FEED
2817/* 0D */   0x000D,   //   CARRIAGE RETURN
2818/* 0E */   0x000E,   //   SHIFT OUT
2819/* 0F */   0x000F,   //   SHIFT IN
2820/* 10 */   0x0010,   //   DATA LINK ESCAPE
2821/* 11 */   0x0011,   //   DEVICE CONTROL ONE
2822/* 12 */   0x0012,   //   DEVICE CONTROL TWO
2823/* 13 */   0x0013,   //   DEVICE CONTROL THREE
2824/* 14 */   0x0014,   //   DEVICE CONTROL FOUR
2825/* 15 */   0x0015,   //   NEGATIVE ACKNOWLEDGE
2826/* 16 */   0x0016,   //   SYNCHRONOUS IDLE
2827/* 17 */   0x0017,   //   END OF TRANSMISSION BLOCK
2828/* 18 */   0x0018,   //   CANCEL
2829/* 19 */   0x0019,   //   END OF MEDIUM
2830/* 1A */   0x001A,   //   SUBSTITUTE
2831/* 1B */   0x001B,   //   ESCAPE
2832/* 1C */   0x001C,   //   FILE SEPARATOR
2833/* 1D */   0x001D,   //   GROUP SEPARATOR
2834/* 1E */   0x001E,   //   RECORD SEPARATOR
2835/* 1F */   0x001F,   //   UNIT SEPARATOR
2836/* 20 */   0x0020,   //   SPACE
2837/* 21 */   0x0021,   //   EXCLAMATION MARK
2838/* 22 */   0x0022,   //   QUOTATION MARK
2839/* 23 */   0x0023,   //   NUMBER SIGN
2840/* 24 */   0x0024,   //   DOLLAR SIGN
2841/* 25 */   0x0025,   //   PERCENT SIGN
2842/* 26 */   0x0026,   //   AMPERSAND
2843/* 27 */   0x0027,   //   APOSTROPHE
2844/* 28 */   0x0028,   //   LEFT PARENTHESIS
2845/* 29 */   0x0029,   //   RIGHT PARENTHESIS
2846/* 2A */   0x002A,   //   ASTERISK
2847/* 2B */   0x002B,   //   PLUS SIGN
2848/* 2C */   0x002C,   //   COMMA
2849/* 2D */   0x002D,   //   HYPHEN-MINUS
2850/* 2E */   0x002E,   //   FULL STOP
2851/* 2F */   0x002F,   //   SOLIDUS
2852/* 30 */   0x0030,   //   DIGIT ZERO
2853/* 31 */   0x0031,   //   DIGIT ONE
2854/* 32 */   0x0032,   //   DIGIT TWO
2855/* 33 */   0x0033,   //   DIGIT THREE
2856/* 34 */   0x0034,   //   DIGIT FOUR
2857/* 35 */   0x0035,   //   DIGIT FIVE
2858/* 36 */   0x0036,   //   DIGIT SIX
2859/* 37 */   0x0037,   //   DIGIT SEVEN
2860/* 38 */   0x0038,   //   DIGIT EIGHT
2861/* 39 */   0x0039,   //   DIGIT NINE
2862/* 3A */   0x003A,   //   COLON
2863/* 3B */   0x003B,   //   SEMICOLON
2864/* 3C */   0x003C,   //   LESS-THAN SIGN
2865/* 3D */   0x003D,   //   EQUALS SIGN
2866/* 3E */   0x003E,   //   GREATER-THAN SIGN
2867/* 3F */   0x003F,   //   QUESTION MARK
2868/* 40 */   0x0040,   //   COMMERCIAL AT
2869/* 41 */   0x0041,   //   LATIN CAPITAL LETTER A
2870/* 42 */   0x0042,   //   LATIN CAPITAL LETTER B
2871/* 43 */   0x0043,   //   LATIN CAPITAL LETTER C
2872/* 44 */   0x0044,   //   LATIN CAPITAL LETTER D
2873/* 45 */   0x0045,   //   LATIN CAPITAL LETTER E
2874/* 46 */   0x0046,   //   LATIN CAPITAL LETTER F
2875/* 47 */   0x0047,   //   LATIN CAPITAL LETTER G
2876/* 48 */   0x0048,   //   LATIN CAPITAL LETTER H
2877/* 49 */   0x0049,   //   LATIN CAPITAL LETTER I
2878/* 4A */   0x004A,   //   LATIN CAPITAL LETTER J
2879/* 4B */   0x004B,   //   LATIN CAPITAL LETTER K
2880/* 4C */   0x004C,   //   LATIN CAPITAL LETTER L
2881/* 4D */   0x004D,   //   LATIN CAPITAL LETTER M
2882/* 4E */   0x004E,   //   LATIN CAPITAL LETTER N
2883/* 4F */   0x004F,   //   LATIN CAPITAL LETTER O
2884/* 50 */   0x0050,   //   LATIN CAPITAL LETTER P
2885/* 51 */   0x0051,   //   LATIN CAPITAL LETTER Q
2886/* 52 */   0x0052,   //   LATIN CAPITAL LETTER R
2887/* 53 */   0x0053,   //   LATIN CAPITAL LETTER S
2888/* 54 */   0x0054,   //   LATIN CAPITAL LETTER T
2889/* 55 */   0x0055,   //   LATIN CAPITAL LETTER U
2890/* 56 */   0x0056,   //   LATIN CAPITAL LETTER V
2891/* 57 */   0x0057,   //   LATIN CAPITAL LETTER W
2892/* 58 */   0x0058,   //   LATIN CAPITAL LETTER X
2893/* 59 */   0x0059,   //   LATIN CAPITAL LETTER Y
2894/* 5A */   0x005A,   //   LATIN CAPITAL LETTER Z
2895/* 5B */   0x005B,   //   LEFT SQUARE BRACKET
2896/* 5C */   0x005C,   //   REVERSE SOLIDUS
2897/* 5D */   0x005D,   //   RIGHT SQUARE BRACKET
2898/* 5E */   0x005E,   //   CIRCUMFLEX ACCENT
2899/* 5F */   0x005F,   //   LOW LINE
2900/* 60 */   0x0060,   //   GRAVE ACCENT
2901/* 61 */   0x0061,   //   LATIN SMALL LETTER A
2902/* 62 */   0x0062,   //   LATIN SMALL LETTER B
2903/* 63 */   0x0063,   //   LATIN SMALL LETTER C
2904/* 64 */   0x0064,   //   LATIN SMALL LETTER D
2905/* 65 */   0x0065,   //   LATIN SMALL LETTER E
2906/* 66 */   0x0066,   //   LATIN SMALL LETTER F
2907/* 67 */   0x0067,   //   LATIN SMALL LETTER G
2908/* 68 */   0x0068,   //   LATIN SMALL LETTER H
2909/* 69 */   0x0069,   //   LATIN SMALL LETTER I
2910/* 6A */   0x006A,   //   LATIN SMALL LETTER J
2911/* 6B */   0x006B,   //   LATIN SMALL LETTER K
2912/* 6C */   0x006C,   //   LATIN SMALL LETTER L
2913/* 6D */   0x006D,   //   LATIN SMALL LETTER M
2914/* 6E */   0x006E,   //   LATIN SMALL LETTER N
2915/* 6F */   0x006F,   //   LATIN SMALL LETTER O
2916/* 70 */   0x0070,   //   LATIN SMALL LETTER P
2917/* 71 */   0x0071,   //   LATIN SMALL LETTER Q
2918/* 72 */   0x0072,   //   LATIN SMALL LETTER R
2919/* 73 */   0x0073,   //   LATIN SMALL LETTER S
2920/* 74 */   0x0074,   //   LATIN SMALL LETTER T
2921/* 75 */   0x0075,   //   LATIN SMALL LETTER U
2922/* 76 */   0x0076,   //   LATIN SMALL LETTER V
2923/* 77 */   0x0077,   //   LATIN SMALL LETTER W
2924/* 78 */   0x0078,   //   LATIN SMALL LETTER X
2925/* 79 */   0x0079,   //   LATIN SMALL LETTER Y
2926/* 7A */   0x007A,   //   LATIN SMALL LETTER Z
2927/* 7B */   0x007B,   //   LEFT CURLY BRACKET
2928/* 7C */   0x007C,   //   VERTICAL LINE
2929/* 7D */   0x007D,   //   RIGHT CURLY BRACKET
2930/* 7E */   0x007E,   //   TILDE
2931/* 7F */   0x007F,   //   DELETE
2932/* 80 */   0x0080,   //   <control>
2933/* 81 */   0x0081,   //   <control>
2934/* 82 */   0x0082,   //   <control>
2935/* 83 */   0x0083,   //   <control>
2936/* 84 */   0x0084,   //   <control>
2937/* 85 */   0x0085,   //   <control>
2938/* 86 */   0x0086,   //   <control>
2939/* 87 */   0x0087,   //   <control>
2940/* 88 */   0x0088,   //   <control>
2941/* 89 */   0x0089,   //   <control>
2942/* 8A */   0x008A,   //   <control>
2943/* 8B */   0x008B,   //   <control>
2944/* 8C */   0x008C,   //   <control>
2945/* 8D */   0x008D,   //   <control>
2946/* 8E */   0x008E,   //   <control>
2947/* 8F */   0x008F,   //   <control>
2948/* 90 */   0x0090,   //   <control>
2949/* 91 */   0x0091,   //   <control>
2950/* 92 */   0x0092,   //   <control>
2951/* 93 */   0x0093,   //   <control>
2952/* 94 */   0x0094,   //   <control>
2953/* 95 */   0x0095,   //   <control>
2954/* 96 */   0x0096,   //   <control>
2955/* 97 */   0x0097,   //   <control>
2956/* 98 */   0x0098,   //   <control>
2957/* 99 */   0x0099,   //   <control>
2958/* 9A */   0x009A,   //   <control>
2959/* 9B */   0x009B,   //   <control>
2960/* 9C */   0x009C,   //   <control>
2961/* 9D */   0x009D,   //   <control>
2962/* 9E */   0x009E,   //   <control>
2963/* 9F */   0x009F,   //   <control>
2964/* A0 */   0x00A0,   //   NO-BREAK SPACE
2965/* A1 */   0x00A1,   //   INVERTED EXCLAMATION MARK
2966/* A2 */   0x00A2,   //   CENT SIGN
2967/* A3 */   0x00A3,   //   POUND SIGN
2968/* A4 */   0x00A4,   //   CURRENCY SIGN
2969/* A5 */   0x00A5,   //   YEN SIGN
2970/* A6 */   0x00A6,   //   BROKEN BAR
2971/* A7 */   0x00A7,   //   SECTION SIGN
2972/* A8 */   0x00A8,   //   DIAERESIS
2973/* A9 */   0x00A9,   //   COPYRIGHT SIGN
2974/* AA */   0x00AA,   //   FEMININE ORDINAL INDICATOR
2975/* AB */   0x00AB,   //   LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
2976/* AC */   0x00AC,   //   NOT SIGN
2977/* AD */   0x00AD,   //   SOFT HYPHEN
2978/* AE */   0x00AE,   //   REGISTERED SIGN
2979/* AF */   0x00AF,   //   MACRON
2980/* B0 */   0x00B0,   //   DEGREE SIGN
2981/* B1 */   0x00B1,   //   PLUS-MINUS SIGN
2982/* B2 */   0x00B2,   //   SUPERSCRIPT TWO
2983/* B3 */   0x00B3,   //   SUPERSCRIPT THREE
2984/* B4 */   0x00B4,   //   ACUTE ACCENT
2985/* B5 */   0x00B5,   //   MICRO SIGN
2986/* B6 */   0x00B6,   //   PILCROW SIGN
2987/* B7 */   0x00B7,   //   MIDDLE DOT
2988/* B8 */   0x00B8,   //   CEDILLA
2989/* B9 */   0x00B9,   //   SUPERSCRIPT ONE
2990/* BA */   0x00BA,   //   MASCULINE ORDINAL INDICATOR
2991/* BB */   0x00BB,   //   RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
2992/* BC */   0x00BC,   //   VULGAR FRACTION ONE QUARTER
2993/* BD */   0x00BD,   //   VULGAR FRACTION ONE HALF
2994/* BE */   0x00BE,   //   VULGAR FRACTION THREE QUARTERS
2995/* BF */   0x00BF,   //   INVERTED QUESTION MARK
2996/* C0 */   0x00C0,   //   LATIN CAPITAL LETTER A WITH GRAVE
2997/* C1 */   0x00C1,   //   LATIN CAPITAL LETTER A WITH ACUTE
2998/* C2 */   0x00C2,   //   LATIN CAPITAL LETTER A WITH CIRCUMFLEX
2999/* C3 */   0x00C3,   //   LATIN CAPITAL LETTER A WITH TILDE
3000/* C4 */   0x00C4,   //   LATIN CAPITAL LETTER A WITH DIAERESIS
3001/* C5 */   0x00C5,   //   LATIN CAPITAL LETTER A WITH RING ABOVE
3002/* C6 */   0x00C6,   //   LATIN CAPITAL LETTER AE
3003/* C7 */   0x00C7,   //   LATIN CAPITAL LETTER C WITH CEDILLA
3004/* C8 */   0x00C8,   //   LATIN CAPITAL LETTER E WITH GRAVE
3005/* C9 */   0x00C9,   //   LATIN CAPITAL LETTER E WITH ACUTE
3006/* CA */   0x00CA,   //   LATIN CAPITAL LETTER E WITH CIRCUMFLEX
3007/* CB */   0x00CB,   //   LATIN CAPITAL LETTER E WITH DIAERESIS
3008/* CC */   0x00CC,   //   LATIN CAPITAL LETTER I WITH GRAVE
3009/* CD */   0x00CD,   //   LATIN CAPITAL LETTER I WITH ACUTE
3010/* CE */   0x00CE,   //   LATIN CAPITAL LETTER I WITH CIRCUMFLEX
3011/* CF */   0x00CF,   //   LATIN CAPITAL LETTER I WITH DIAERESIS
3012/* D0 */   0x011E,   //   LATIN CAPITAL LETTER G WITH BREVE
3013/* D1 */   0x00D1,   //   LATIN CAPITAL LETTER N WITH TILDE
3014/* D2 */   0x00D2,   //   LATIN CAPITAL LETTER O WITH GRAVE
3015/* D3 */   0x00D3,   //   LATIN CAPITAL LETTER O WITH ACUTE
3016/* D4 */   0x00D4,   //   LATIN CAPITAL LETTER O WITH CIRCUMFLEX
3017/* D5 */   0x00D5,   //   LATIN CAPITAL LETTER O WITH TILDE
3018/* D6 */   0x00D6,   //   LATIN CAPITAL LETTER O WITH DIAERESIS
3019/* D7 */   0x00D7,   //   MULTIPLICATION SIGN
3020/* D8 */   0x00D8,   //   LATIN CAPITAL LETTER O WITH STROKE
3021/* D9 */   0x00D9,   //   LATIN CAPITAL LETTER U WITH GRAVE
3022/* DA */   0x00DA,   //   LATIN CAPITAL LETTER U WITH ACUTE
3023/* DB */   0x00DB,   //   LATIN CAPITAL LETTER U WITH CIRCUMFLEX
3024/* DC */   0x00DC,   //   LATIN CAPITAL LETTER U WITH DIAERESIS
3025/* DD */   0x0130,   //   LATIN CAPITAL LETTER I WITH DOT ABOVE
3026/* DE */   0x015E,   //   LATIN CAPITAL LETTER S WITH CEDILLA
3027/* DF */   0x00DF,   //   LATIN SMALL LETTER SHARP S
3028/* E0 */   0x00E0,   //   LATIN SMALL LETTER A WITH GRAVE
3029/* E1 */   0x00E1,   //   LATIN SMALL LETTER A WITH ACUTE
3030/* E2 */   0x00E2,   //   LATIN SMALL LETTER A WITH CIRCUMFLEX
3031/* E3 */   0x00E3,   //   LATIN SMALL LETTER A WITH TILDE
3032/* E4 */   0x00E4,   //   LATIN SMALL LETTER A WITH DIAERESIS
3033/* E5 */   0x00E5,   //   LATIN SMALL LETTER A WITH RING ABOVE
3034/* E6 */   0x00E6,   //   LATIN SMALL LETTER AE
3035/* E7 */   0x00E7,   //   LATIN SMALL LETTER C WITH CEDILLA
3036/* E8 */   0x00E8,   //   LATIN SMALL LETTER E WITH GRAVE
3037/* E9 */   0x00E9,   //   LATIN SMALL LETTER E WITH ACUTE
3038/* EA */   0x00EA,   //   LATIN SMALL LETTER E WITH CIRCUMFLEX
3039/* EB */   0x00EB,   //   LATIN SMALL LETTER E WITH DIAERESIS
3040/* EC */   0x00EC,   //   LATIN SMALL LETTER I WITH GRAVE
3041/* ED */   0x00ED,   //   LATIN SMALL LETTER I WITH ACUTE
3042/* EE */   0x00EE,   //   LATIN SMALL LETTER I WITH CIRCUMFLEX
3043/* EF */   0x00EF,   //   LATIN SMALL LETTER I WITH DIAERESIS
3044/* F0 */   0x011F,   //   LATIN SMALL LETTER G WITH BREVE
3045/* F1 */   0x00F1,   //   LATIN SMALL LETTER N WITH TILDE
3046/* F2 */   0x00F2,   //   LATIN SMALL LETTER O WITH GRAVE
3047/* F3 */   0x00F3,   //   LATIN SMALL LETTER O WITH ACUTE
3048/* F4 */   0x00F4,   //   LATIN SMALL LETTER O WITH CIRCUMFLEX
3049/* F5 */   0x00F5,   //   LATIN SMALL LETTER O WITH TILDE
3050/* F6 */   0x00F6,   //   LATIN SMALL LETTER O WITH DIAERESIS
3051/* F7 */   0x00F7,   //   DIVISION SIGN
3052/* F8 */   0x00F8,   //   LATIN SMALL LETTER O WITH STROKE
3053/* F9 */   0x00F9,   //   LATIN SMALL LETTER U WITH GRAVE
3054/* FA */   0x00FA,   //   LATIN SMALL LETTER U WITH ACUTE
3055/* FB */   0x00FB,   //   LATIN SMALL LETTER U WITH CIRCUMFLEX
3056/* FC */   0x00FC,   //   LATIN SMALL LETTER U WITH DIAERESIS
3057/* FD */   0x0131,   //   LATIN SMALL LETTER DOTLESS I
3058/* FE */   0x015F,   //   LATIN SMALL LETTER S WITH CEDILLA
3059/* FF */   0x00FF   //   LATIN SMALL LETTER Y WITH DIAERESIS
3060};
3061
3062/***************************************************************************
3063#
3064#   Name:             ISO/IEC 8859-10:1998 to Unicode
3065#   Unicode version:  3.0
3066#   Table version:    1.1
3067#   Table format:     Format A
3068#   Date:             1999 October 11
3069#   Authors:          Ken Whistler <kenw@sybase.com>
3070#
3071#   Copyright (c) 1999 Unicode, Inc.  All Rights reserved.
3072#
3073#   This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
3074#   No claims are made as to fitness for any particular purpose.  No
3075#   warranties of any kind are expressed or implied.  The recipient
3076#   agrees to determine applicability of information provided.  If this
3077#   file has been provided on optical media by Unicode, Inc., the sole
3078#   remedy for any claim will be exchange of defective media within 90
3079#   days of receipt.
3080#
3081#   Unicode, Inc. hereby grants the right to freely use the information
3082#   supplied in this file in the creation of products supporting the
3083#   Unicode Standard, and to make copies of this file in any form for
3084#   internal or external distribution as long as this notice remains
3085#   attached.
3086#
3087#   General notes:
3088#
3089#   This table contains the data the Unicode Consortium has on how
3090#       ISO/IEC 8859-10:1998 characters map into Unicode.
3091#
3092#   Format:  Three tab-separated columns
3093#       Column #1 is the ISO/IEC 8859-10 code (in hex as 0xXX)
3094#       Column #2 is the Unicode (in hex as 0xXXXX)
3095#       Column #3 the Unicode name (follows a comment sign, '#')
3096#
3097#   The entries are in ISO/IEC 8859-10 order.
3098#
3099#   Version history
3100#   1.0 version new.
3101#       1.1 corrected mistake in mapping of 0xA4
3102#
3103#   Updated versions of this file may be found in:
3104#      <ftp://ftp.unicode.org/Public/MAPPINGS/>
3105#
3106#   Any comments or problems, contact <errata@unicode.org>
3107#   Please note that <errata@unicode.org> is an archival address;
3108#   notices will be checked, but do not expect an immediate response.
3109#
3110***************************************************************************/
3111static const unicode_char lookup_iso8859_10[256] = {
3112/* 00 */   0x0000,   //   NULL
3113/* 01 */   0x0001,   //   START OF HEADING
3114/* 02 */   0x0002,   //   START OF TEXT
3115/* 03 */   0x0003,   //   END OF TEXT
3116/* 04 */   0x0004,   //   END OF TRANSMISSION
3117/* 05 */   0x0005,   //   ENQUIRY
3118/* 06 */   0x0006,   //   ACKNOWLEDGE
3119/* 07 */   0x0007,   //   BELL
3120/* 08 */   0x0008,   //   BACKSPACE
3121/* 09 */   0x0009,   //   HORIZONTAL TABULATION
3122/* 0A */   0x000A,   //   LINE FEED
3123/* 0B */   0x000B,   //   VERTICAL TABULATION
3124/* 0C */   0x000C,   //   FORM FEED
3125/* 0D */   0x000D,   //   CARRIAGE RETURN
3126/* 0E */   0x000E,   //   SHIFT OUT
3127/* 0F */   0x000F,   //   SHIFT IN
3128/* 10 */   0x0010,   //   DATA LINK ESCAPE
3129/* 11 */   0x0011,   //   DEVICE CONTROL ONE
3130/* 12 */   0x0012,   //   DEVICE CONTROL TWO
3131/* 13 */   0x0013,   //   DEVICE CONTROL THREE
3132/* 14 */   0x0014,   //   DEVICE CONTROL FOUR
3133/* 15 */   0x0015,   //   NEGATIVE ACKNOWLEDGE
3134/* 16 */   0x0016,   //   SYNCHRONOUS IDLE
3135/* 17 */   0x0017,   //   END OF TRANSMISSION BLOCK
3136/* 18 */   0x0018,   //   CANCEL
3137/* 19 */   0x0019,   //   END OF MEDIUM
3138/* 1A */   0x001A,   //   SUBSTITUTE
3139/* 1B */   0x001B,   //   ESCAPE
3140/* 1C */   0x001C,   //   FILE SEPARATOR
3141/* 1D */   0x001D,   //   GROUP SEPARATOR
3142/* 1E */   0x001E,   //   RECORD SEPARATOR
3143/* 1F */   0x001F,   //   UNIT SEPARATOR
3144/* 20 */   0x0020,   //   SPACE
3145/* 21 */   0x0021,   //   EXCLAMATION MARK
3146/* 22 */   0x0022,   //   QUOTATION MARK
3147/* 23 */   0x0023,   //   NUMBER SIGN
3148/* 24 */   0x0024,   //   DOLLAR SIGN
3149/* 25 */   0x0025,   //   PERCENT SIGN
3150/* 26 */   0x0026,   //   AMPERSAND
3151/* 27 */   0x0027,   //   APOSTROPHE
3152/* 28 */   0x0028,   //   LEFT PARENTHESIS
3153/* 29 */   0x0029,   //   RIGHT PARENTHESIS
3154/* 2A */   0x002A,   //   ASTERISK
3155/* 2B */   0x002B,   //   PLUS SIGN
3156/* 2C */   0x002C,   //   COMMA
3157/* 2D */   0x002D,   //   HYPHEN-MINUS
3158/* 2E */   0x002E,   //   FULL STOP
3159/* 2F */   0x002F,   //   SOLIDUS
3160/* 30 */   0x0030,   //   DIGIT ZERO
3161/* 31 */   0x0031,   //   DIGIT ONE
3162/* 32 */   0x0032,   //   DIGIT TWO
3163/* 33 */   0x0033,   //   DIGIT THREE
3164/* 34 */   0x0034,   //   DIGIT FOUR
3165/* 35 */   0x0035,   //   DIGIT FIVE
3166/* 36 */   0x0036,   //   DIGIT SIX
3167/* 37 */   0x0037,   //   DIGIT SEVEN
3168/* 38 */   0x0038,   //   DIGIT EIGHT
3169/* 39 */   0x0039,   //   DIGIT NINE
3170/* 3A */   0x003A,   //   COLON
3171/* 3B */   0x003B,   //   SEMICOLON
3172/* 3C */   0x003C,   //   LESS-THAN SIGN
3173/* 3D */   0x003D,   //   EQUALS SIGN
3174/* 3E */   0x003E,   //   GREATER-THAN SIGN
3175/* 3F */   0x003F,   //   QUESTION MARK
3176/* 40 */   0x0040,   //   COMMERCIAL AT
3177/* 41 */   0x0041,   //   LATIN CAPITAL LETTER A
3178/* 42 */   0x0042,   //   LATIN CAPITAL LETTER B
3179/* 43 */   0x0043,   //   LATIN CAPITAL LETTER C
3180/* 44 */   0x0044,   //   LATIN CAPITAL LETTER D
3181/* 45 */   0x0045,   //   LATIN CAPITAL LETTER E
3182/* 46 */   0x0046,   //   LATIN CAPITAL LETTER F
3183/* 47 */   0x0047,   //   LATIN CAPITAL LETTER G
3184/* 48 */   0x0048,   //   LATIN CAPITAL LETTER H
3185/* 49 */   0x0049,   //   LATIN CAPITAL LETTER I
3186/* 4A */   0x004A,   //   LATIN CAPITAL LETTER J
3187/* 4B */   0x004B,   //   LATIN CAPITAL LETTER K
3188/* 4C */   0x004C,   //   LATIN CAPITAL LETTER L
3189/* 4D */   0x004D,   //   LATIN CAPITAL LETTER M
3190/* 4E */   0x004E,   //   LATIN CAPITAL LETTER N
3191/* 4F */   0x004F,   //   LATIN CAPITAL LETTER O
3192/* 50 */   0x0050,   //   LATIN CAPITAL LETTER P
3193/* 51 */   0x0051,   //   LATIN CAPITAL LETTER Q
3194/* 52 */   0x0052,   //   LATIN CAPITAL LETTER R
3195/* 53 */   0x0053,   //   LATIN CAPITAL LETTER S
3196/* 54 */   0x0054,   //   LATIN CAPITAL LETTER T
3197/* 55 */   0x0055,   //   LATIN CAPITAL LETTER U
3198/* 56 */   0x0056,   //   LATIN CAPITAL LETTER V
3199/* 57 */   0x0057,   //   LATIN CAPITAL LETTER W
3200/* 58 */   0x0058,   //   LATIN CAPITAL LETTER X
3201/* 59 */   0x0059,   //   LATIN CAPITAL LETTER Y
3202/* 5A */   0x005A,   //   LATIN CAPITAL LETTER Z
3203/* 5B */   0x005B,   //   LEFT SQUARE BRACKET
3204/* 5C */   0x005C,   //   REVERSE SOLIDUS
3205/* 5D */   0x005D,   //   RIGHT SQUARE BRACKET
3206/* 5E */   0x005E,   //   CIRCUMFLEX ACCENT
3207/* 5F */   0x005F,   //   LOW LINE
3208/* 60 */   0x0060,   //   GRAVE ACCENT
3209/* 61 */   0x0061,   //   LATIN SMALL LETTER A
3210/* 62 */   0x0062,   //   LATIN SMALL LETTER B
3211/* 63 */   0x0063,   //   LATIN SMALL LETTER C
3212/* 64 */   0x0064,   //   LATIN SMALL LETTER D
3213/* 65 */   0x0065,   //   LATIN SMALL LETTER E
3214/* 66 */   0x0066,   //   LATIN SMALL LETTER F
3215/* 67 */   0x0067,   //   LATIN SMALL LETTER G
3216/* 68 */   0x0068,   //   LATIN SMALL LETTER H
3217/* 69 */   0x0069,   //   LATIN SMALL LETTER I
3218/* 6A */   0x006A,   //   LATIN SMALL LETTER J
3219/* 6B */   0x006B,   //   LATIN SMALL LETTER K
3220/* 6C */   0x006C,   //   LATIN SMALL LETTER L
3221/* 6D */   0x006D,   //   LATIN SMALL LETTER M
3222/* 6E */   0x006E,   //   LATIN SMALL LETTER N
3223/* 6F */   0x006F,   //   LATIN SMALL LETTER O
3224/* 70 */   0x0070,   //   LATIN SMALL LETTER P
3225/* 71 */   0x0071,   //   LATIN SMALL LETTER Q
3226/* 72 */   0x0072,   //   LATIN SMALL LETTER R
3227/* 73 */   0x0073,   //   LATIN SMALL LETTER S
3228/* 74 */   0x0074,   //   LATIN SMALL LETTER T
3229/* 75 */   0x0075,   //   LATIN SMALL LETTER U
3230/* 76 */   0x0076,   //   LATIN SMALL LETTER V
3231/* 77 */   0x0077,   //   LATIN SMALL LETTER W
3232/* 78 */   0x0078,   //   LATIN SMALL LETTER X
3233/* 79 */   0x0079,   //   LATIN SMALL LETTER Y
3234/* 7A */   0x007A,   //   LATIN SMALL LETTER Z
3235/* 7B */   0x007B,   //   LEFT CURLY BRACKET
3236/* 7C */   0x007C,   //   VERTICAL LINE
3237/* 7D */   0x007D,   //   RIGHT CURLY BRACKET
3238/* 7E */   0x007E,   //   TILDE
3239/* 7F */   0x007F,   //   DELETE
3240/* 80 */   0x0080,   //   <control>
3241/* 81 */   0x0081,   //   <control>
3242/* 82 */   0x0082,   //   <control>
3243/* 83 */   0x0083,   //   <control>
3244/* 84 */   0x0084,   //   <control>
3245/* 85 */   0x0085,   //   <control>
3246/* 86 */   0x0086,   //   <control>
3247/* 87 */   0x0087,   //   <control>
3248/* 88 */   0x0088,   //   <control>
3249/* 89 */   0x0089,   //   <control>
3250/* 8A */   0x008A,   //   <control>
3251/* 8B */   0x008B,   //   <control>
3252/* 8C */   0x008C,   //   <control>
3253/* 8D */   0x008D,   //   <control>
3254/* 8E */   0x008E,   //   <control>
3255/* 8F */   0x008F,   //   <control>
3256/* 90 */   0x0090,   //   <control>
3257/* 91 */   0x0091,   //   <control>
3258/* 92 */   0x0092,   //   <control>
3259/* 93 */   0x0093,   //   <control>
3260/* 94 */   0x0094,   //   <control>
3261/* 95 */   0x0095,   //   <control>
3262/* 96 */   0x0096,   //   <control>
3263/* 97 */   0x0097,   //   <control>
3264/* 98 */   0x0098,   //   <control>
3265/* 99 */   0x0099,   //   <control>
3266/* 9A */   0x009A,   //   <control>
3267/* 9B */   0x009B,   //   <control>
3268/* 9C */   0x009C,   //   <control>
3269/* 9D */   0x009D,   //   <control>
3270/* 9E */   0x009E,   //   <control>
3271/* 9F */   0x009F,   //   <control>
3272/* A0 */   0x00A0,   //   NO-BREAK SPACE
3273/* A1 */   0x0104,   //   LATIN CAPITAL LETTER A WITH OGONEK
3274/* A2 */   0x0112,   //   LATIN CAPITAL LETTER E WITH MACRON
3275/* A3 */   0x0122,   //   LATIN CAPITAL LETTER G WITH CEDILLA
3276/* A4 */   0x012A,   //   LATIN CAPITAL LETTER I WITH MACRON
3277/* A5 */   0x0128,   //   LATIN CAPITAL LETTER I WITH TILDE
3278/* A6 */   0x0136,   //   LATIN CAPITAL LETTER K WITH CEDILLA
3279/* A7 */   0x00A7,   //   SECTION SIGN
3280/* A8 */   0x013B,   //   LATIN CAPITAL LETTER L WITH CEDILLA
3281/* A9 */   0x0110,   //   LATIN CAPITAL LETTER D WITH STROKE
3282/* AA */   0x0160,   //   LATIN CAPITAL LETTER S WITH CARON
3283/* AB */   0x0166,   //   LATIN CAPITAL LETTER T WITH STROKE
3284/* AC */   0x017D,   //   LATIN CAPITAL LETTER Z WITH CARON
3285/* AD */   0x00AD,   //   SOFT HYPHEN
3286/* AE */   0x016A,   //   LATIN CAPITAL LETTER U WITH MACRON
3287/* AF */   0x014A,   //   LATIN CAPITAL LETTER ENG
3288/* B0 */   0x00B0,   //   DEGREE SIGN
3289/* B1 */   0x0105,   //   LATIN SMALL LETTER A WITH OGONEK
3290/* B2 */   0x0113,   //   LATIN SMALL LETTER E WITH MACRON
3291/* B3 */   0x0123,   //   LATIN SMALL LETTER G WITH CEDILLA
3292/* B4 */   0x012B,   //   LATIN SMALL LETTER I WITH MACRON
3293/* B5 */   0x0129,   //   LATIN SMALL LETTER I WITH TILDE
3294/* B6 */   0x0137,   //   LATIN SMALL LETTER K WITH CEDILLA
3295/* B7 */   0x00B7,   //   MIDDLE DOT
3296/* B8 */   0x013C,   //   LATIN SMALL LETTER L WITH CEDILLA
3297/* B9 */   0x0111,   //   LATIN SMALL LETTER D WITH STROKE
3298/* BA */   0x0161,   //   LATIN SMALL LETTER S WITH CARON
3299/* BB */   0x0167,   //   LATIN SMALL LETTER T WITH STROKE
3300/* BC */   0x017E,   //   LATIN SMALL LETTER Z WITH CARON
3301/* BD */   0x2015,   //   HORIZONTAL BAR
3302/* BE */   0x016B,   //   LATIN SMALL LETTER U WITH MACRON
3303/* BF */   0x014B,   //   LATIN SMALL LETTER ENG
3304/* C0 */   0x0100,   //   LATIN CAPITAL LETTER A WITH MACRON
3305/* C1 */   0x00C1,   //   LATIN CAPITAL LETTER A WITH ACUTE
3306/* C2 */   0x00C2,   //   LATIN CAPITAL LETTER A WITH CIRCUMFLEX
3307/* C3 */   0x00C3,   //   LATIN CAPITAL LETTER A WITH TILDE
3308/* C4 */   0x00C4,   //   LATIN CAPITAL LETTER A WITH DIAERESIS
3309/* C5 */   0x00C5,   //   LATIN CAPITAL LETTER A WITH RING ABOVE
3310/* C6 */   0x00C6,   //   LATIN CAPITAL LETTER AE
3311/* C7 */   0x012E,   //   LATIN CAPITAL LETTER I WITH OGONEK
3312/* C8 */   0x010C,   //   LATIN CAPITAL LETTER C WITH CARON
3313/* C9 */   0x00C9,   //   LATIN CAPITAL LETTER E WITH ACUTE
3314/* CA */   0x0118,   //   LATIN CAPITAL LETTER E WITH OGONEK
3315/* CB */   0x00CB,   //   LATIN CAPITAL LETTER E WITH DIAERESIS
3316/* CC */   0x0116,   //   LATIN CAPITAL LETTER E WITH DOT ABOVE
3317/* CD */   0x00CD,   //   LATIN CAPITAL LETTER I WITH ACUTE
3318/* CE */   0x00CE,   //   LATIN CAPITAL LETTER I WITH CIRCUMFLEX
3319/* CF */   0x00CF,   //   LATIN CAPITAL LETTER I WITH DIAERESIS
3320/* D0 */   0x00D0,   //   LATIN CAPITAL LETTER ETH (Icelandic)
3321/* D1 */   0x0145,   //   LATIN CAPITAL LETTER N WITH CEDILLA
3322/* D2 */   0x014C,   //   LATIN CAPITAL LETTER O WITH MACRON
3323/* D3 */   0x00D3,   //   LATIN CAPITAL LETTER O WITH ACUTE
3324/* D4 */   0x00D4,   //   LATIN CAPITAL LETTER O WITH CIRCUMFLEX
3325/* D5 */   0x00D5,   //   LATIN CAPITAL LETTER O WITH TILDE
3326/* D6 */   0x00D6,   //   LATIN CAPITAL LETTER O WITH DIAERESIS
3327/* D7 */   0x0168,   //   LATIN CAPITAL LETTER U WITH TILDE
3328/* D8 */   0x00D8,   //   LATIN CAPITAL LETTER O WITH STROKE
3329/* D9 */   0x0172,   //   LATIN CAPITAL LETTER U WITH OGONEK
3330/* DA */   0x00DA,   //   LATIN CAPITAL LETTER U WITH ACUTE
3331/* DB */   0x00DB,   //   LATIN CAPITAL LETTER U WITH CIRCUMFLEX
3332/* DC */   0x00DC,   //   LATIN CAPITAL LETTER U WITH DIAERESIS
3333/* DD */   0x00DD,   //   LATIN CAPITAL LETTER Y WITH ACUTE
3334/* DE */   0x00DE,   //   LATIN CAPITAL LETTER THORN (Icelandic)
3335/* DF */   0x00DF,   //   LATIN SMALL LETTER SHARP S (German)
3336/* E0 */   0x0101,   //   LATIN SMALL LETTER A WITH MACRON
3337/* E1 */   0x00E1,   //   LATIN SMALL LETTER A WITH ACUTE
3338/* E2 */   0x00E2,   //   LATIN SMALL LETTER A WITH CIRCUMFLEX
3339/* E3 */   0x00E3,   //   LATIN SMALL LETTER A WITH TILDE
3340/* E4 */   0x00E4,   //   LATIN SMALL LETTER A WITH DIAERESIS
3341/* E5 */   0x00E5,   //   LATIN SMALL LETTER A WITH RING ABOVE
3342/* E6 */   0x00E6,   //   LATIN SMALL LETTER AE
3343/* E7 */   0x012F,   //   LATIN SMALL LETTER I WITH OGONEK
3344/* E8 */   0x010D,   //   LATIN SMALL LETTER C WITH CARON
3345/* E9 */   0x00E9,   //   LATIN SMALL LETTER E WITH ACUTE
3346/* EA */   0x0119,   //   LATIN SMALL LETTER E WITH OGONEK
3347/* EB */   0x00EB,   //   LATIN SMALL LETTER E WITH DIAERESIS
3348/* EC */   0x0117,   //   LATIN SMALL LETTER E WITH DOT ABOVE
3349/* ED */   0x00ED,   //   LATIN SMALL LETTER I WITH ACUTE
3350/* EE */   0x00EE,   //   LATIN SMALL LETTER I WITH CIRCUMFLEX
3351/* EF */   0x00EF,   //   LATIN SMALL LETTER I WITH DIAERESIS
3352/* F0 */   0x00F0,   //   LATIN SMALL LETTER ETH (Icelandic)
3353/* F1 */   0x0146,   //   LATIN SMALL LETTER N WITH CEDILLA
3354/* F2 */   0x014D,   //   LATIN SMALL LETTER O WITH MACRON
3355/* F3 */   0x00F3,   //   LATIN SMALL LETTER O WITH ACUTE
3356/* F4 */   0x00F4,   //   LATIN SMALL LETTER O WITH CIRCUMFLEX
3357/* F5 */   0x00F5,   //   LATIN SMALL LETTER O WITH TILDE
3358/* F6 */   0x00F6,   //   LATIN SMALL LETTER O WITH DIAERESIS
3359/* F7 */   0x0169,   //   LATIN SMALL LETTER U WITH TILDE
3360/* F8 */   0x00F8,   //   LATIN SMALL LETTER O WITH STROKE
3361/* F9 */   0x0173,   //   LATIN SMALL LETTER U WITH OGONEK
3362/* FA */   0x00FA,   //   LATIN SMALL LETTER U WITH ACUTE
3363/* FB */   0x00FB,   //   LATIN SMALL LETTER U WITH CIRCUMFLEX
3364/* FC */   0x00FC,   //   LATIN SMALL LETTER U WITH DIAERESIS
3365/* FD */   0x00FD,   //   LATIN SMALL LETTER Y WITH ACUTE
3366/* FE */   0x00FE,   //   LATIN SMALL LETTER THORN (Icelandic)
3367/* FF */   0x0138   //   LATIN SMALL LETTER KRA
3368};
3369
3370/***************************************************************************
3371#
3372#   Name:             ISO/IEC 8859-11:2001 to Unicode
3373#   Unicode version:  3.2
3374#   Table version:    1.0
3375#   Table format:     Format A
3376#   Date:             2002 October 7
3377#   Authors:          Ken Whistler <kenw@sybase.com>
3378#
3379#   Copyright (c) 2002 Unicode, Inc.  All Rights reserved.
3380#
3381#   This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
3382#   No claims are made as to fitness for any particular purpose.  No
3383#   warranties of any kind are expressed or implied.  The recipient
3384#   agrees to determine applicability of information provided.  If this
3385#   file has been provided on optical media by Unicode, Inc., the sole
3386#   remedy for any claim will be exchange of defective media within 90
3387#   days of receipt.
3388#
3389#   Unicode, Inc. hereby grants the right to freely use the information
3390#   supplied in this file in the creation of products supporting the
3391#   Unicode Standard, and to make copies of this file in any form for
3392#   internal or external distribution as long as this notice remains
3393#   attached.
3394#
3395#   General notes:
3396#
3397#   This table contains the data the Unicode Consortium has on how
3398#       ISO/IEC 8859-11:2001 characters map into Unicode.
3399#
3400#   ISO/IEC 8859-11:2001 is equivalent to TIS 620-2533 (1990) with
3401#   the addition of 0xA0 NO-BREAK SPACE.
3402#
3403#   Format:  Three tab-separated columns
3404#       Column #1 is the ISO/IEC 8859-11 code (in hex as 0xXX)
3405#       Column #2 is the Unicode (in hex as 0xXXXX)
3406#       Column #3 the Unicode name (follows a comment sign, '#')
3407#
3408#   The entries are in ISO/IEC 8859-11 order.
3409#
3410#   Version history:
3411#      2002 October 7  Created
3412#
3413#   Updated versions of this file may be found in:
3414#      <ftp://ftp.unicode.org/Public/MAPPINGS/>
3415#
3416#   For any comments or problems, please use the Unicode
3417#   web contact form at:
3418#      http://www.unicode.org/unicode/reporting.html
3419#
3420***************************************************************************/
3421static const unicode_char lookup_iso8859_11[256] = {
3422/* 00 */   0x0000,   //   NULL
3423/* 01 */   0x0001,   //   START OF HEADING
3424/* 02 */   0x0002,   //   START OF TEXT
3425/* 03 */   0x0003,   //   END OF TEXT
3426/* 04 */   0x0004,   //   END OF TRANSMISSION
3427/* 05 */   0x0005,   //   ENQUIRY
3428/* 06 */   0x0006,   //   ACKNOWLEDGE
3429/* 07 */   0x0007,   //   BELL
3430/* 08 */   0x0008,   //   BACKSPACE
3431/* 09 */   0x0009,   //   HORIZONTAL TABULATION
3432/* 0A */   0x000A,   //   LINE FEED
3433/* 0B */   0x000B,   //   VERTICAL TABULATION
3434/* 0C */   0x000C,   //   FORM FEED
3435/* 0D */   0x000D,   //   CARRIAGE RETURN
3436/* 0E */   0x000E,   //   SHIFT OUT
3437/* 0F */   0x000F,   //   SHIFT IN
3438/* 10 */   0x0010,   //   DATA LINK ESCAPE
3439/* 11 */   0x0011,   //   DEVICE CONTROL ONE
3440/* 12 */   0x0012,   //   DEVICE CONTROL TWO
3441/* 13 */   0x0013,   //   DEVICE CONTROL THREE
3442/* 14 */   0x0014,   //   DEVICE CONTROL FOUR
3443/* 15 */   0x0015,   //   NEGATIVE ACKNOWLEDGE
3444/* 16 */   0x0016,   //   SYNCHRONOUS IDLE
3445/* 17 */   0x0017,   //   END OF TRANSMISSION BLOCK
3446/* 18 */   0x0018,   //   CANCEL
3447/* 19 */   0x0019,   //   END OF MEDIUM
3448/* 1A */   0x001A,   //   SUBSTITUTE
3449/* 1B */   0x001B,   //   ESCAPE
3450/* 1C */   0x001C,   //   FILE SEPARATOR
3451/* 1D */   0x001D,   //   GROUP SEPARATOR
3452/* 1E */   0x001E,   //   RECORD SEPARATOR
3453/* 1F */   0x001F,   //   UNIT SEPARATOR
3454/* 20 */   0x0020,   //   SPACE
3455/* 21 */   0x0021,   //   EXCLAMATION MARK
3456/* 22 */   0x0022,   //   QUOTATION MARK
3457/* 23 */   0x0023,   //   NUMBER SIGN
3458/* 24 */   0x0024,   //   DOLLAR SIGN
3459/* 25 */   0x0025,   //   PERCENT SIGN
3460/* 26 */   0x0026,   //   AMPERSAND
3461/* 27 */   0x0027,   //   APOSTROPHE
3462/* 28 */   0x0028,   //   LEFT PARENTHESIS
3463/* 29 */   0x0029,   //   RIGHT PARENTHESIS
3464/* 2A */   0x002A,   //   ASTERISK
3465/* 2B */   0x002B,   //   PLUS SIGN
3466/* 2C */   0x002C,   //   COMMA
3467/* 2D */   0x002D,   //   HYPHEN-MINUS
3468/* 2E */   0x002E,   //   FULL STOP
3469/* 2F */   0x002F,   //   SOLIDUS
3470/* 30 */   0x0030,   //   DIGIT ZERO
3471/* 31 */   0x0031,   //   DIGIT ONE
3472/* 32 */   0x0032,   //   DIGIT TWO
3473/* 33 */   0x0033,   //   DIGIT THREE
3474/* 34 */   0x0034,   //   DIGIT FOUR
3475/* 35 */   0x0035,   //   DIGIT FIVE
3476/* 36 */   0x0036,   //   DIGIT SIX
3477/* 37 */   0x0037,   //   DIGIT SEVEN
3478/* 38 */   0x0038,   //   DIGIT EIGHT
3479/* 39 */   0x0039,   //   DIGIT NINE
3480/* 3A */   0x003A,   //   COLON
3481/* 3B */   0x003B,   //   SEMICOLON
3482/* 3C */   0x003C,   //   LESS-THAN SIGN
3483/* 3D */   0x003D,   //   EQUALS SIGN
3484/* 3E */   0x003E,   //   GREATER-THAN SIGN
3485/* 3F */   0x003F,   //   QUESTION MARK
3486/* 40 */   0x0040,   //   COMMERCIAL AT
3487/* 41 */   0x0041,   //   LATIN CAPITAL LETTER A
3488/* 42 */   0x0042,   //   LATIN CAPITAL LETTER B
3489/* 43 */   0x0043,   //   LATIN CAPITAL LETTER C
3490/* 44 */   0x0044,   //   LATIN CAPITAL LETTER D
3491/* 45 */   0x0045,   //   LATIN CAPITAL LETTER E
3492/* 46 */   0x0046,   //   LATIN CAPITAL LETTER F
3493/* 47 */   0x0047,   //   LATIN CAPITAL LETTER G
3494/* 48 */   0x0048,   //   LATIN CAPITAL LETTER H
3495/* 49 */   0x0049,   //   LATIN CAPITAL LETTER I
3496/* 4A */   0x004A,   //   LATIN CAPITAL LETTER J
3497/* 4B */   0x004B,   //   LATIN CAPITAL LETTER K
3498/* 4C */   0x004C,   //   LATIN CAPITAL LETTER L
3499/* 4D */   0x004D,   //   LATIN CAPITAL LETTER M
3500/* 4E */   0x004E,   //   LATIN CAPITAL LETTER N
3501/* 4F */   0x004F,   //   LATIN CAPITAL LETTER O
3502/* 50 */   0x0050,   //   LATIN CAPITAL LETTER P
3503/* 51 */   0x0051,   //   LATIN CAPITAL LETTER Q
3504/* 52 */   0x0052,   //   LATIN CAPITAL LETTER R
3505/* 53 */   0x0053,   //   LATIN CAPITAL LETTER S
3506/* 54 */   0x0054,   //   LATIN CAPITAL LETTER T
3507/* 55 */   0x0055,   //   LATIN CAPITAL LETTER U
3508/* 56 */   0x0056,   //   LATIN CAPITAL LETTER V
3509/* 57 */   0x0057,   //   LATIN CAPITAL LETTER W
3510/* 58 */   0x0058,   //   LATIN CAPITAL LETTER X
3511/* 59 */   0x0059,   //   LATIN CAPITAL LETTER Y
3512/* 5A */   0x005A,   //   LATIN CAPITAL LETTER Z
3513/* 5B */   0x005B,   //   LEFT SQUARE BRACKET
3514/* 5C */   0x005C,   //   REVERSE SOLIDUS
3515/* 5D */   0x005D,   //   RIGHT SQUARE BRACKET
3516/* 5E */   0x005E,   //   CIRCUMFLEX ACCENT
3517/* 5F */   0x005F,   //   LOW LINE
3518/* 60 */   0x0060,   //   GRAVE ACCENT
3519/* 61 */   0x0061,   //   LATIN SMALL LETTER A
3520/* 62 */   0x0062,   //   LATIN SMALL LETTER B
3521/* 63 */   0x0063,   //   LATIN SMALL LETTER C
3522/* 64 */   0x0064,   //   LATIN SMALL LETTER D
3523/* 65 */   0x0065,   //   LATIN SMALL LETTER E
3524/* 66 */   0x0066,   //   LATIN SMALL LETTER F
3525/* 67 */   0x0067,   //   LATIN SMALL LETTER G
3526/* 68 */   0x0068,   //   LATIN SMALL LETTER H
3527/* 69 */   0x0069,   //   LATIN SMALL LETTER I
3528/* 6A */   0x006A,   //   LATIN SMALL LETTER J
3529/* 6B */   0x006B,   //   LATIN SMALL LETTER K
3530/* 6C */   0x006C,   //   LATIN SMALL LETTER L
3531/* 6D */   0x006D,   //   LATIN SMALL LETTER M
3532/* 6E */   0x006E,   //   LATIN SMALL LETTER N
3533/* 6F */   0x006F,   //   LATIN SMALL LETTER O
3534/* 70 */   0x0070,   //   LATIN SMALL LETTER P
3535/* 71 */   0x0071,   //   LATIN SMALL LETTER Q
3536/* 72 */   0x0072,   //   LATIN SMALL LETTER R
3537/* 73 */   0x0073,   //   LATIN SMALL LETTER S
3538/* 74 */   0x0074,   //   LATIN SMALL LETTER T
3539/* 75 */   0x0075,   //   LATIN SMALL LETTER U
3540/* 76 */   0x0076,   //   LATIN SMALL LETTER V
3541/* 77 */   0x0077,   //   LATIN SMALL LETTER W
3542/* 78 */   0x0078,   //   LATIN SMALL LETTER X
3543/* 79 */   0x0079,   //   LATIN SMALL LETTER Y
3544/* 7A */   0x007A,   //   LATIN SMALL LETTER Z
3545/* 7B */   0x007B,   //   LEFT CURLY BRACKET
3546/* 7C */   0x007C,   //   VERTICAL LINE
3547/* 7D */   0x007D,   //   RIGHT CURLY BRACKET
3548/* 7E */   0x007E,   //   TILDE
3549/* 7F */   0x007F,   //   DELETE
3550/* 80 */   0x0080,   //   <control>
3551/* 81 */   0x0081,   //   <control>
3552/* 82 */   0x0082,   //   <control>
3553/* 83 */   0x0083,   //   <control>
3554/* 84 */   0x0084,   //   <control>
3555/* 85 */   0x0085,   //   <control>
3556/* 86 */   0x0086,   //   <control>
3557/* 87 */   0x0087,   //   <control>
3558/* 88 */   0x0088,   //   <control>
3559/* 89 */   0x0089,   //   <control>
3560/* 8A */   0x008A,   //   <control>
3561/* 8B */   0x008B,   //   <control>
3562/* 8C */   0x008C,   //   <control>
3563/* 8D */   0x008D,   //   <control>
3564/* 8E */   0x008E,   //   <control>
3565/* 8F */   0x008F,   //   <control>
3566/* 90 */   0x0090,   //   <control>
3567/* 91 */   0x0091,   //   <control>
3568/* 92 */   0x0092,   //   <control>
3569/* 93 */   0x0093,   //   <control>
3570/* 94 */   0x0094,   //   <control>
3571/* 95 */   0x0095,   //   <control>
3572/* 96 */   0x0096,   //   <control>
3573/* 97 */   0x0097,   //   <control>
3574/* 98 */   0x0098,   //   <control>
3575/* 99 */   0x0099,   //   <control>
3576/* 9A */   0x009A,   //   <control>
3577/* 9B */   0x009B,   //   <control>
3578/* 9C */   0x009C,   //   <control>
3579/* 9D */   0x009D,   //   <control>
3580/* 9E */   0x009E,   //   <control>
3581/* 9F */   0x009F,   //   <control>
3582/* A0 */   0x00A0,   //   NO-BREAK SPACE
3583/* A1 */   0x0E01,   //   THAI CHARACTER KO KAI
3584/* A2 */   0x0E02,   //   THAI CHARACTER KHO KHAI
3585/* A3 */   0x0E03,   //   THAI CHARACTER KHO KHUAT
3586/* A4 */   0x0E04,   //   THAI CHARACTER KHO KHWAI
3587/* A5 */   0x0E05,   //   THAI CHARACTER KHO KHON
3588/* A6 */   0x0E06,   //   THAI CHARACTER KHO RAKHANG
3589/* A7 */   0x0E07,   //   THAI CHARACTER NGO NGU
3590/* A8 */   0x0E08,   //   THAI CHARACTER CHO CHAN
3591/* A9 */   0x0E09,   //   THAI CHARACTER CHO CHING
3592/* AA */   0x0E0A,   //   THAI CHARACTER CHO CHANG
3593/* AB */   0x0E0B,   //   THAI CHARACTER SO SO
3594/* AC */   0x0E0C,   //   THAI CHARACTER CHO CHOE
3595/* AD */   0x0E0D,   //   THAI CHARACTER YO YING
3596/* AE */   0x0E0E,   //   THAI CHARACTER DO CHADA
3597/* AF */   0x0E0F,   //   THAI CHARACTER TO PATAK
3598/* B0 */   0x0E10,   //   THAI CHARACTER THO THAN
3599/* B1 */   0x0E11,   //   THAI CHARACTER THO NANGMONTHO
3600/* B2 */   0x0E12,   //   THAI CHARACTER THO PHUTHAO
3601/* B3 */   0x0E13,   //   THAI CHARACTER NO NEN
3602/* B4 */   0x0E14,   //   THAI CHARACTER DO DEK
3603/* B5 */   0x0E15,   //   THAI CHARACTER TO TAO
3604/* B6 */   0x0E16,   //   THAI CHARACTER THO THUNG
3605/* B7 */   0x0E17,   //   THAI CHARACTER THO THAHAN
3606/* B8 */   0x0E18,   //   THAI CHARACTER THO THONG
3607/* B9 */   0x0E19,   //   THAI CHARACTER NO NU
3608/* BA */   0x0E1A,   //   THAI CHARACTER BO BAIMAI
3609/* BB */   0x0E1B,   //   THAI CHARACTER PO PLA
3610/* BC */   0x0E1C,   //   THAI CHARACTER PHO PHUNG
3611/* BD */   0x0E1D,   //   THAI CHARACTER FO FA
3612/* BE */   0x0E1E,   //   THAI CHARACTER PHO PHAN
3613/* BF */   0x0E1F,   //   THAI CHARACTER FO FAN
3614/* C0 */   0x0E20,   //   THAI CHARACTER PHO SAMPHAO
3615/* C1 */   0x0E21,   //   THAI CHARACTER MO MA
3616/* C2 */   0x0E22,   //   THAI CHARACTER YO YAK
3617/* C3 */   0x0E23,   //   THAI CHARACTER RO RUA
3618/* C4 */   0x0E24,   //   THAI CHARACTER RU
3619/* C5 */   0x0E25,   //   THAI CHARACTER LO LING
3620/* C6 */   0x0E26,   //   THAI CHARACTER LU
3621/* C7 */   0x0E27,   //   THAI CHARACTER WO WAEN
3622/* C8 */   0x0E28,   //   THAI CHARACTER SO SALA
3623/* C9 */   0x0E29,   //   THAI CHARACTER SO RUSI
3624/* CA */   0x0E2A,   //   THAI CHARACTER SO SUA
3625/* CB */   0x0E2B,   //   THAI CHARACTER HO HIP
3626/* CC */   0x0E2C,   //   THAI CHARACTER LO CHULA
3627/* CD */   0x0E2D,   //   THAI CHARACTER O ANG
3628/* CE */   0x0E2E,   //   THAI CHARACTER HO NOKHUK
3629/* CF */   0x0E2F,   //   THAI CHARACTER PAIYANNOI
3630/* D0 */   0x0E30,   //   THAI CHARACTER SARA A
3631/* D1 */   0x0E31,   //   THAI CHARACTER MAI HAN-AKAT
3632/* D2 */   0x0E32,   //   THAI CHARACTER SARA AA
3633/* D3 */   0x0E33,   //   THAI CHARACTER SARA AM
3634/* D4 */   0x0E34,   //   THAI CHARACTER SARA I
3635/* D5 */   0x0E35,   //   THAI CHARACTER SARA II
3636/* D6 */   0x0E36,   //   THAI CHARACTER SARA UE
3637/* D7 */   0x0E37,   //   THAI CHARACTER SARA UEE
3638/* D8 */   0x0E38,   //   THAI CHARACTER SARA U
3639/* D9 */   0x0E39,   //   THAI CHARACTER SARA UU
3640/* DA */   0x0E3A,   //   THAI CHARACTER PHINTHU
3641/* DF */   0x0E3F,   //   THAI CURRENCY SYMBOL BAHT
3642/* E0 */   0x0E40,   //   THAI CHARACTER SARA E
3643/* E1 */   0x0E41,   //   THAI CHARACTER SARA AE
3644/* E2 */   0x0E42,   //   THAI CHARACTER SARA O
3645/* E3 */   0x0E43,   //   THAI CHARACTER SARA AI MAIMUAN
3646/* E4 */   0x0E44,   //   THAI CHARACTER SARA AI MAIMALAI
3647/* E5 */   0x0E45,   //   THAI CHARACTER LAKKHANGYAO
3648/* E6 */   0x0E46,   //   THAI CHARACTER MAIYAMOK
3649/* E7 */   0x0E47,   //   THAI CHARACTER MAITAIKHU
3650/* E8 */   0x0E48,   //   THAI CHARACTER MAI EK
3651/* E9 */   0x0E49,   //   THAI CHARACTER MAI THO
3652/* EA */   0x0E4A,   //   THAI CHARACTER MAI TRI
3653/* EB */   0x0E4B,   //   THAI CHARACTER MAI CHATTAWA
3654/* EC */   0x0E4C,   //   THAI CHARACTER THANTHAKHAT
3655/* ED */   0x0E4D,   //   THAI CHARACTER NIKHAHIT
3656/* EE */   0x0E4E,   //   THAI CHARACTER YAMAKKAN
3657/* EF */   0x0E4F,   //   THAI CHARACTER FONGMAN
3658/* F0 */   0x0E50,   //   THAI DIGIT ZERO
3659/* F1 */   0x0E51,   //   THAI DIGIT ONE
3660/* F2 */   0x0E52,   //   THAI DIGIT TWO
3661/* F3 */   0x0E53,   //   THAI DIGIT THREE
3662/* F4 */   0x0E54,   //   THAI DIGIT FOUR
3663/* F5 */   0x0E55,   //   THAI DIGIT FIVE
3664/* F6 */   0x0E56,   //   THAI DIGIT SIX
3665/* F7 */   0x0E57,   //   THAI DIGIT SEVEN
3666/* F8 */   0x0E58,   //   THAI DIGIT EIGHT
3667/* F9 */   0x0E59,   //   THAI DIGIT NINE
3668/* FA */   0x0E5A,   //   THAI CHARACTER ANGKHANKHU
3669/* FB */   0x0E5B,   //   THAI CHARACTER KHOMUT
3670/* FC */   0xFFFD,   //   INVALID
3671/* FD */   0xFFFD,   //   INVALID
3672/* FE */   0xFFFD,   //   INVALID
3673/* FF */   0xFFFD   //   INVALID
3674};
3675
3676/***************************************************************************
3677#
3678#   Name:             ISO/IEC 8859-13:1998  to Unicode
3679#   Unicode version:  3.0
3680#   Table version:    1.0
3681#   Table format:     Format A
3682#   Date:             1999 July 27
3683#   Authors:          Ken Whistler <kenw@sybase.com>
3684#
3685#   Copyright (c) 1998 - 1999 Unicode, Inc.  All Rights reserved.
3686#
3687#   This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
3688#   No claims are made as to fitness for any particular purpose.  No
3689#   warranties of any kind are expressed or implied.  The recipient
3690#   agrees to determine applicability of information provided.  If this
3691#   file has been provided on optical media by Unicode, Inc., the sole
3692#   remedy for any claim will be exchange of defective media within 90
3693#   days of receipt.
3694#
3695#   Unicode, Inc. hereby grants the right to freely use the information
3696#   supplied in this file in the creation of products supporting the
3697#   Unicode Standard, and to make copies of this file in any form for
3698#   internal or external distribution as long as this notice remains
3699#   attached.
3700#
3701#   General notes:
3702#
3703#   This table contains the data the Unicode Consortium has on how
3704#       ISO/IEC 8859-13:1998 characters map into Unicode.
3705#
3706#   Format:  Three tab-separated columns
3707#       Column #1 is the ISO/IEC 8859-13 code (in hex as 0xXX)
3708#       Column #2 is the Unicode (in hex as 0xXXXX)
3709#       Column #3 the Unicode name (follows a comment sign, '#')
3710#
3711#   The entries are in ISO/IEC 8859-13 order.
3712#
3713#   Updated versions of this file may be found in:
3714#      <ftp://ftp.unicode.org/Public/MAPPINGS/>
3715#
3716#   Any comments or problems, contact <errata@unicode.org>
3717#   Please note that <errata@unicode.org> is an archival address;
3718#   notices will be checked, but do not expect an immediate response.
3719#
3720***************************************************************************/
3721static const unicode_char lookup_iso8859_13[256] = {
3722/* 00 */   0x0000,   //   NULL
3723/* 01 */   0x0001,   //   START OF HEADING
3724/* 02 */   0x0002,   //   START OF TEXT
3725/* 03 */   0x0003,   //   END OF TEXT
3726/* 04 */   0x0004,   //   END OF TRANSMISSION
3727/* 05 */   0x0005,   //   ENQUIRY
3728/* 06 */   0x0006,   //   ACKNOWLEDGE
3729/* 07 */   0x0007,   //   BELL
3730/* 08 */   0x0008,   //   BACKSPACE
3731/* 09 */   0x0009,   //   HORIZONTAL TABULATION
3732/* 0A */   0x000A,   //   LINE FEED
3733/* 0B */   0x000B,   //   VERTICAL TABULATION
3734/* 0C */   0x000C,   //   FORM FEED
3735/* 0D */   0x000D,   //   CARRIAGE RETURN
3736/* 0E */   0x000E,   //   SHIFT OUT
3737/* 0F */   0x000F,   //   SHIFT IN
3738/* 10 */   0x0010,   //   DATA LINK ESCAPE
3739/* 11 */   0x0011,   //   DEVICE CONTROL ONE
3740/* 12 */   0x0012,   //   DEVICE CONTROL TWO
3741/* 13 */   0x0013,   //   DEVICE CONTROL THREE
3742/* 14 */   0x0014,   //   DEVICE CONTROL FOUR
3743/* 15 */   0x0015,   //   NEGATIVE ACKNOWLEDGE
3744/* 16 */   0x0016,   //   SYNCHRONOUS IDLE
3745/* 17 */   0x0017,   //   END OF TRANSMISSION BLOCK
3746/* 18 */   0x0018,   //   CANCEL
3747/* 19 */   0x0019,   //   END OF MEDIUM
3748/* 1A */   0x001A,   //   SUBSTITUTE
3749/* 1B */   0x001B,   //   ESCAPE
3750/* 1C */   0x001C,   //   FILE SEPARATOR
3751/* 1D */   0x001D,   //   GROUP SEPARATOR
3752/* 1E */   0x001E,   //   RECORD SEPARATOR
3753/* 1F */   0x001F,   //   UNIT SEPARATOR
3754/* 20 */   0x0020,   //   SPACE
3755/* 21 */   0x0021,   //   EXCLAMATION MARK
3756/* 22 */   0x0022,   //   QUOTATION MARK
3757/* 23 */   0x0023,   //   NUMBER SIGN
3758/* 24 */   0x0024,   //   DOLLAR SIGN
3759/* 25 */   0x0025,   //   PERCENT SIGN
3760/* 26 */   0x0026,   //   AMPERSAND
3761/* 27 */   0x0027,   //   APOSTROPHE
3762/* 28 */   0x0028,   //   LEFT PARENTHESIS
3763/* 29 */   0x0029,   //   RIGHT PARENTHESIS
3764/* 2A */   0x002A,   //   ASTERISK
3765/* 2B */   0x002B,   //   PLUS SIGN
3766/* 2C */   0x002C,   //   COMMA
3767/* 2D */   0x002D,   //   HYPHEN-MINUS
3768/* 2E */   0x002E,   //   FULL STOP
3769/* 2F */   0x002F,   //   SOLIDUS
3770/* 30 */   0x0030,   //   DIGIT ZERO
3771/* 31 */   0x0031,   //   DIGIT ONE
3772/* 32 */   0x0032,   //   DIGIT TWO
3773/* 33 */   0x0033,   //   DIGIT THREE
3774/* 34 */   0x0034,   //   DIGIT FOUR
3775/* 35 */   0x0035,   //   DIGIT FIVE
3776/* 36 */   0x0036,   //   DIGIT SIX
3777/* 37 */   0x0037,   //   DIGIT SEVEN
3778/* 38 */   0x0038,   //   DIGIT EIGHT
3779/* 39 */   0x0039,   //   DIGIT NINE
3780/* 3A */   0x003A,   //   COLON
3781/* 3B */   0x003B,   //   SEMICOLON
3782/* 3C */   0x003C,   //   LESS-THAN SIGN
3783/* 3D */   0x003D,   //   EQUALS SIGN
3784/* 3E */   0x003E,   //   GREATER-THAN SIGN
3785/* 3F */   0x003F,   //   QUESTION MARK
3786/* 40 */   0x0040,   //   COMMERCIAL AT
3787/* 41 */   0x0041,   //   LATIN CAPITAL LETTER A
3788/* 42 */   0x0042,   //   LATIN CAPITAL LETTER B
3789/* 43 */   0x0043,   //   LATIN CAPITAL LETTER C
3790/* 44 */   0x0044,   //   LATIN CAPITAL LETTER D
3791/* 45 */   0x0045,   //   LATIN CAPITAL LETTER E
3792/* 46 */   0x0046,   //   LATIN CAPITAL LETTER F
3793/* 47 */   0x0047,   //   LATIN CAPITAL LETTER G
3794/* 48 */   0x0048,   //   LATIN CAPITAL LETTER H
3795/* 49 */   0x0049,   //   LATIN CAPITAL LETTER I
3796/* 4A */   0x004A,   //   LATIN CAPITAL LETTER J
3797/* 4B */   0x004B,   //   LATIN CAPITAL LETTER K
3798/* 4C */   0x004C,   //   LATIN CAPITAL LETTER L
3799/* 4D */   0x004D,   //   LATIN CAPITAL LETTER M
3800/* 4E */   0x004E,   //   LATIN CAPITAL LETTER N
3801/* 4F */   0x004F,   //   LATIN CAPITAL LETTER O
3802/* 50 */   0x0050,   //   LATIN CAPITAL LETTER P
3803/* 51 */   0x0051,   //   LATIN CAPITAL LETTER Q
3804/* 52 */   0x0052,   //   LATIN CAPITAL LETTER R
3805/* 53 */   0x0053,   //   LATIN CAPITAL LETTER S
3806/* 54 */   0x0054,   //   LATIN CAPITAL LETTER T
3807/* 55 */   0x0055,   //   LATIN CAPITAL LETTER U
3808/* 56 */   0x0056,   //   LATIN CAPITAL LETTER V
3809/* 57 */   0x0057,   //   LATIN CAPITAL LETTER W
3810/* 58 */   0x0058,   //   LATIN CAPITAL LETTER X
3811/* 59 */   0x0059,   //   LATIN CAPITAL LETTER Y
3812/* 5A */   0x005A,   //   LATIN CAPITAL LETTER Z
3813/* 5B */   0x005B,   //   LEFT SQUARE BRACKET
3814/* 5C */   0x005C,   //   REVERSE SOLIDUS
3815/* 5D */   0x005D,   //   RIGHT SQUARE BRACKET
3816/* 5E */   0x005E,   //   CIRCUMFLEX ACCENT
3817/* 5F */   0x005F,   //   LOW LINE
3818/* 60 */   0x0060,   //   GRAVE ACCENT
3819/* 61 */   0x0061,   //   LATIN SMALL LETTER A
3820/* 62 */   0x0062,   //   LATIN SMALL LETTER B
3821/* 63 */   0x0063,   //   LATIN SMALL LETTER C
3822/* 64 */   0x0064,   //   LATIN SMALL LETTER D
3823/* 65 */   0x0065,   //   LATIN SMALL LETTER E
3824/* 66 */   0x0066,   //   LATIN SMALL LETTER F
3825/* 67 */   0x0067,   //   LATIN SMALL LETTER G
3826/* 68 */   0x0068,   //   LATIN SMALL LETTER H
3827/* 69 */   0x0069,   //   LATIN SMALL LETTER I
3828/* 6A */   0x006A,   //   LATIN SMALL LETTER J
3829/* 6B */   0x006B,   //   LATIN SMALL LETTER K
3830/* 6C */   0x006C,   //   LATIN SMALL LETTER L
3831/* 6D */   0x006D,   //   LATIN SMALL LETTER M
3832/* 6E */   0x006E,   //   LATIN SMALL LETTER N
3833/* 6F */   0x006F,   //   LATIN SMALL LETTER O
3834/* 70 */   0x0070,   //   LATIN SMALL LETTER P
3835/* 71 */   0x0071,   //   LATIN SMALL LETTER Q
3836/* 72 */   0x0072,   //   LATIN SMALL LETTER R
3837/* 73 */   0x0073,   //   LATIN SMALL LETTER S
3838/* 74 */   0x0074,   //   LATIN SMALL LETTER T
3839/* 75 */   0x0075,   //   LATIN SMALL LETTER U
3840/* 76 */   0x0076,   //   LATIN SMALL LETTER V
3841/* 77 */   0x0077,   //   LATIN SMALL LETTER W
3842/* 78 */   0x0078,   //   LATIN SMALL LETTER X
3843/* 79 */   0x0079,   //   LATIN SMALL LETTER Y
3844/* 7A */   0x007A,   //   LATIN SMALL LETTER Z
3845/* 7B */   0x007B,   //   LEFT CURLY BRACKET
3846/* 7C */   0x007C,   //   VERTICAL LINE
3847/* 7D */   0x007D,   //   RIGHT CURLY BRACKET
3848/* 7E */   0x007E,   //   TILDE
3849/* 7F */   0x007F,   //   DELETE
3850/* 80 */   0x0080,   //   <control>
3851/* 81 */   0x0081,   //   <control>
3852/* 82 */   0x0082,   //   <control>
3853/* 83 */   0x0083,   //   <control>
3854/* 84 */   0x0084,   //   <control>
3855/* 85 */   0x0085,   //   <control>
3856/* 86 */   0x0086,   //   <control>
3857/* 87 */   0x0087,   //   <control>
3858/* 88 */   0x0088,   //   <control>
3859/* 89 */   0x0089,   //   <control>
3860/* 8A */   0x008A,   //   <control>
3861/* 8B */   0x008B,   //   <control>
3862/* 8C */   0x008C,   //   <control>
3863/* 8D */   0x008D,   //   <control>
3864/* 8E */   0x008E,   //   <control>
3865/* 8F */   0x008F,   //   <control>
3866/* 90 */   0x0090,   //   <control>
3867/* 91 */   0x0091,   //   <control>
3868/* 92 */   0x0092,   //   <control>
3869/* 93 */   0x0093,   //   <control>
3870/* 94 */   0x0094,   //   <control>
3871/* 95 */   0x0095,   //   <control>
3872/* 96 */   0x0096,   //   <control>
3873/* 97 */   0x0097,   //   <control>
3874/* 98 */   0x0098,   //   <control>
3875/* 99 */   0x0099,   //   <control>
3876/* 9A */   0x009A,   //   <control>
3877/* 9B */   0x009B,   //   <control>
3878/* 9C */   0x009C,   //   <control>
3879/* 9D */   0x009D,   //   <control>
3880/* 9E */   0x009E,   //   <control>
3881/* 9F */   0x009F,   //   <control>
3882/* A0 */   0x00A0,   //   NO-BREAK SPACE
3883/* A1 */   0x201D,   //   RIGHT DOUBLE QUOTATION MARK
3884/* A2 */   0x00A2,   //   CENT SIGN
3885/* A3 */   0x00A3,   //   POUND SIGN
3886/* A4 */   0x00A4,   //   CURRENCY SIGN
3887/* A5 */   0x201E,   //   DOUBLE LOW-9 QUOTATION MARK
3888/* A6 */   0x00A6,   //   BROKEN BAR
3889/* A7 */   0x00A7,   //   SECTION SIGN
3890/* A8 */   0x00D8,   //   LATIN CAPITAL LETTER O WITH STROKE
3891/* A9 */   0x00A9,   //   COPYRIGHT SIGN
3892/* AA */   0x0156,   //   LATIN CAPITAL LETTER R WITH CEDILLA
3893/* AB */   0x00AB,   //   LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
3894/* AC */   0x00AC,   //   NOT SIGN
3895/* AD */   0x00AD,   //   SOFT HYPHEN
3896/* AE */   0x00AE,   //   REGISTERED SIGN
3897/* AF */   0x00C6,   //   LATIN CAPITAL LETTER AE
3898/* B0 */   0x00B0,   //   DEGREE SIGN
3899/* B1 */   0x00B1,   //   PLUS-MINUS SIGN
3900/* B2 */   0x00B2,   //   SUPERSCRIPT TWO
3901/* B3 */   0x00B3,   //   SUPERSCRIPT THREE
3902/* B4 */   0x201C,   //   LEFT DOUBLE QUOTATION MARK
3903/* B5 */   0x00B5,   //   MICRO SIGN
3904/* B6 */   0x00B6,   //   PILCROW SIGN
3905/* B7 */   0x00B7,   //   MIDDLE DOT
3906/* B8 */   0x00F8,   //   LATIN SMALL LETTER O WITH STROKE
3907/* B9 */   0x00B9,   //   SUPERSCRIPT ONE
3908/* BA */   0x0157,   //   LATIN SMALL LETTER R WITH CEDILLA
3909/* BB */   0x00BB,   //   RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
3910/* BC */   0x00BC,   //   VULGAR FRACTION ONE QUARTER
3911/* BD */   0x00BD,   //   VULGAR FRACTION ONE HALF
3912/* BE */   0x00BE,   //   VULGAR FRACTION THREE QUARTERS
3913/* BF */   0x00E6,   //   LATIN SMALL LETTER AE
3914/* C0 */   0x0104,   //   LATIN CAPITAL LETTER A WITH OGONEK
3915/* C1 */   0x012E,   //   LATIN CAPITAL LETTER I WITH OGONEK
3916/* C2 */   0x0100,   //   LATIN CAPITAL LETTER A WITH MACRON
3917/* C3 */   0x0106,   //   LATIN CAPITAL LETTER C WITH ACUTE
3918/* C4 */   0x00C4,   //   LATIN CAPITAL LETTER A WITH DIAERESIS
3919/* C5 */   0x00C5,   //   LATIN CAPITAL LETTER A WITH RING ABOVE
3920/* C6 */   0x0118,   //   LATIN CAPITAL LETTER E WITH OGONEK
3921/* C7 */   0x0112,   //   LATIN CAPITAL LETTER E WITH MACRON
3922/* C8 */   0x010C,   //   LATIN CAPITAL LETTER C WITH CARON
3923/* C9 */   0x00C9,   //   LATIN CAPITAL LETTER E WITH ACUTE
3924/* CA */   0x0179,   //   LATIN CAPITAL LETTER Z WITH ACUTE
3925/* CB */   0x0116,   //   LATIN CAPITAL LETTER E WITH DOT ABOVE
3926/* CC */   0x0122,   //   LATIN CAPITAL LETTER G WITH CEDILLA
3927/* CD */   0x0136,   //   LATIN CAPITAL LETTER K WITH CEDILLA
3928/* CE */   0x012A,   //   LATIN CAPITAL LETTER I WITH MACRON
3929/* CF */   0x013B,   //   LATIN CAPITAL LETTER L WITH CEDILLA
3930/* D0 */   0x0160,   //   LATIN CAPITAL LETTER S WITH CARON
3931/* D1 */   0x0143,   //   LATIN CAPITAL LETTER N WITH ACUTE
3932/* D2 */   0x0145,   //   LATIN CAPITAL LETTER N WITH CEDILLA
3933/* D3 */   0x00D3,   //   LATIN CAPITAL LETTER O WITH ACUTE
3934/* D4 */   0x014C,   //   LATIN CAPITAL LETTER O WITH MACRON
3935/* D5 */   0x00D5,   //   LATIN CAPITAL LETTER O WITH TILDE
3936/* D6 */   0x00D6,   //   LATIN CAPITAL LETTER O WITH DIAERESIS
3937/* D7 */   0x00D7,   //   MULTIPLICATION SIGN
3938/* D8 */   0x0172,   //   LATIN CAPITAL LETTER U WITH OGONEK
3939/* D9 */   0x0141,   //   LATIN CAPITAL LETTER L WITH STROKE
3940/* DA */   0x015A,   //   LATIN CAPITAL LETTER S WITH ACUTE
3941/* DB */   0x016A,   //   LATIN CAPITAL LETTER U WITH MACRON
3942/* DC */   0x00DC,   //   LATIN CAPITAL LETTER U WITH DIAERESIS
3943/* DD */   0x017B,   //   LATIN CAPITAL LETTER Z WITH DOT ABOVE
3944/* DE */   0x017D,   //   LATIN CAPITAL LETTER Z WITH CARON
3945/* DF */   0x00DF,   //   LATIN SMALL LETTER SHARP S (German)
3946/* E0 */   0x0105,   //   LATIN SMALL LETTER A WITH OGONEK
3947/* E1 */   0x012F,   //   LATIN SMALL LETTER I WITH OGONEK
3948/* E2 */   0x0101,   //   LATIN SMALL LETTER A WITH MACRON
3949/* E3 */   0x0107,   //   LATIN SMALL LETTER C WITH ACUTE
3950/* E4 */   0x00E4,   //   LATIN SMALL LETTER A WITH DIAERESIS
3951/* E5 */   0x00E5,   //   LATIN SMALL LETTER A WITH RING ABOVE
3952/* E6 */   0x0119,   //   LATIN SMALL LETTER E WITH OGONEK
3953/* E7 */   0x0113,   //   LATIN SMALL LETTER E WITH MACRON
3954/* E8 */   0x010D,   //   LATIN SMALL LETTER C WITH CARON
3955/* E9 */   0x00E9,   //   LATIN SMALL LETTER E WITH ACUTE
3956/* EA */   0x017A,   //   LATIN SMALL LETTER Z WITH ACUTE
3957/* EB */   0x0117,   //   LATIN SMALL LETTER E WITH DOT ABOVE
3958/* EC */   0x0123,   //   LATIN SMALL LETTER G WITH CEDILLA
3959/* ED */   0x0137,   //   LATIN SMALL LETTER K WITH CEDILLA
3960/* EE */   0x012B,   //   LATIN SMALL LETTER I WITH MACRON
3961/* EF */   0x013C,   //   LATIN SMALL LETTER L WITH CEDILLA
3962/* F0 */   0x0161,   //   LATIN SMALL LETTER S WITH CARON
3963/* F1 */   0x0144,   //   LATIN SMALL LETTER N WITH ACUTE
3964/* F2 */   0x0146,   //   LATIN SMALL LETTER N WITH CEDILLA
3965/* F3 */   0x00F3,   //   LATIN SMALL LETTER O WITH ACUTE
3966/* F4 */   0x014D,   //   LATIN SMALL LETTER O WITH MACRON
3967/* F5 */   0x00F5,   //   LATIN SMALL LETTER O WITH TILDE
3968/* F6 */   0x00F6,   //   LATIN SMALL LETTER O WITH DIAERESIS
3969/* F7 */   0x00F7,   //   DIVISION SIGN
3970/* F8 */   0x0173,   //   LATIN SMALL LETTER U WITH OGONEK
3971/* F9 */   0x0142,   //   LATIN SMALL LETTER L WITH STROKE
3972/* FA */   0x015B,   //   LATIN SMALL LETTER S WITH ACUTE
3973/* FB */   0x016B,   //   LATIN SMALL LETTER U WITH MACRON
3974/* FC */   0x00FC,   //   LATIN SMALL LETTER U WITH DIAERESIS
3975/* FD */   0x017C,   //   LATIN SMALL LETTER Z WITH DOT ABOVE
3976/* FE */   0x017E,   //   LATIN SMALL LETTER Z WITH CARON
3977/* FF */   0x2019   //   RIGHT SINGLE QUOTATION MARK
3978};
3979
3980/***************************************************************************
3981#
3982#   Name:             ISO/IEC 8859-14:1998 to Unicode
3983#   Unicode version:  3.0
3984#   Table version:    1.0
3985#   Table format:     Format A
3986#   Date:             1999 July 27
3987#   Authors:          Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/>
3988#           Ken Whistler <kenw@sybase.com>
3989#
3990#   Copyright (c) 1998 - 1999 Unicode, Inc.  All Rights reserved.
3991#
3992#   This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
3993#   No claims are made as to fitness for any particular purpose.  No
3994#   warranties of any kind are expressed or implied.  The recipient
3995#   agrees to determine applicability of information provided.  If this
3996#   file has been provided on optical media by Unicode, Inc., the sole
3997#   remedy for any claim will be exchange of defective media within 90
3998#   days of receipt.
3999#
4000#   Unicode, Inc. hereby grants the right to freely use the information
4001#   supplied in this file in the creation of products supporting the
4002#   Unicode Standard, and to make copies of this file in any form for
4003#   internal or external distribution as long as this notice remains
4004#   attached.
4005#
4006#   General notes:
4007#
4008#   This table contains the data the Unicode Consortium has on how
4009#       ISO/IEC 8859-14:1998 characters map into Unicode.
4010#
4011#   Format:  Three tab-separated columns
4012#       Column #1 is the ISO/IEC 8859-14 code (in hex as 0xXX)
4013#       Column #2 is the Unicode (in hex as 0xXXXX)
4014#       Column #3 the Unicode name (follows a comment sign, '#')
4015#
4016#   The entries are in ISO/IEC 8859-14 order.
4017#
4018#   Updated versions of this file may be found in:
4019#      <ftp://ftp.unicode.org/Public/MAPPINGS/>
4020#
4021#   Any comments or problems, contact <errata@unicode.org>
4022#   Please note that <errata@unicode.org> is an archival address;
4023#   notices will be checked, but do not expect an immediate response.
4024#
4025***************************************************************************/
4026static const unicode_char lookup_iso8859_14[256] = {
4027/* 00 */   0x0000,   //   NULL
4028/* 01 */   0x0001,   //   START OF HEADING
4029/* 02 */   0x0002,   //   START OF TEXT
4030/* 03 */   0x0003,   //   END OF TEXT
4031/* 04 */   0x0004,   //   END OF TRANSMISSION
4032/* 05 */   0x0005,   //   ENQUIRY
4033/* 06 */   0x0006,   //   ACKNOWLEDGE
4034/* 07 */   0x0007,   //   BELL
4035/* 08 */   0x0008,   //   BACKSPACE
4036/* 09 */   0x0009,   //   HORIZONTAL TABULATION
4037/* 0A */   0x000A,   //   LINE FEED
4038/* 0B */   0x000B,   //   VERTICAL TABULATION
4039/* 0C */   0x000C,   //   FORM FEED
4040/* 0D */   0x000D,   //   CARRIAGE RETURN
4041/* 0E */   0x000E,   //   SHIFT OUT
4042/* 0F */   0x000F,   //   SHIFT IN
4043/* 10 */   0x0010,   //   DATA LINK ESCAPE
4044/* 11 */   0x0011,   //   DEVICE CONTROL ONE
4045/* 12 */   0x0012,   //   DEVICE CONTROL TWO
4046/* 13 */   0x0013,   //   DEVICE CONTROL THREE
4047/* 14 */   0x0014,   //   DEVICE CONTROL FOUR
4048/* 15 */   0x0015,   //   NEGATIVE ACKNOWLEDGE
4049/* 16 */   0x0016,   //   SYNCHRONOUS IDLE
4050/* 17 */   0x0017,   //   END OF TRANSMISSION BLOCK
4051/* 18 */   0x0018,   //   CANCEL
4052/* 19 */   0x0019,   //   END OF MEDIUM
4053/* 1A */   0x001A,   //   SUBSTITUTE
4054/* 1B */   0x001B,   //   ESCAPE
4055/* 1C */   0x001C,   //   FILE SEPARATOR
4056/* 1D */   0x001D,   //   GROUP SEPARATOR
4057/* 1E */   0x001E,   //   RECORD SEPARATOR
4058/* 1F */   0x001F,   //   UNIT SEPARATOR
4059/* 20 */   0x0020,   //   SPACE
4060/* 21 */   0x0021,   //   EXCLAMATION MARK
4061/* 22 */   0x0022,   //   QUOTATION MARK
4062/* 23 */   0x0023,   //   NUMBER SIGN
4063/* 24 */   0x0024,   //   DOLLAR SIGN
4064/* 25 */   0x0025,   //   PERCENT SIGN
4065/* 26 */   0x0026,   //   AMPERSAND
4066/* 27 */   0x0027,   //   APOSTROPHE
4067/* 28 */   0x0028,   //   LEFT PARENTHESIS
4068/* 29 */   0x0029,   //   RIGHT PARENTHESIS
4069/* 2A */   0x002A,   //   ASTERISK
4070/* 2B */   0x002B,   //   PLUS SIGN
4071/* 2C */   0x002C,   //   COMMA
4072/* 2D */   0x002D,   //   HYPHEN-MINUS
4073/* 2E */   0x002E,   //   FULL STOP
4074/* 2F */   0x002F,   //   SOLIDUS
4075/* 30 */   0x0030,   //   DIGIT ZERO
4076/* 31 */   0x0031,   //   DIGIT ONE
4077/* 32 */   0x0032,   //   DIGIT TWO
4078/* 33 */   0x0033,   //   DIGIT THREE
4079/* 34 */   0x0034,   //   DIGIT FOUR
4080/* 35 */   0x0035,   //   DIGIT FIVE
4081/* 36 */   0x0036,   //   DIGIT SIX
4082/* 37 */   0x0037,   //   DIGIT SEVEN
4083/* 38 */   0x0038,   //   DIGIT EIGHT
4084/* 39 */   0x0039,   //   DIGIT NINE
4085/* 3A */   0x003A,   //   COLON
4086/* 3B */   0x003B,   //   SEMICOLON
4087/* 3C */   0x003C,   //   LESS-THAN SIGN
4088/* 3D */   0x003D,   //   EQUALS SIGN
4089/* 3E */   0x003E,   //   GREATER-THAN SIGN
4090/* 3F */   0x003F,   //   QUESTION MARK
4091/* 40 */   0x0040,   //   COMMERCIAL AT
4092/* 41 */   0x0041,   //   LATIN CAPITAL LETTER A
4093/* 42 */   0x0042,   //   LATIN CAPITAL LETTER B
4094/* 43 */   0x0043,   //   LATIN CAPITAL LETTER C
4095/* 44 */   0x0044,   //   LATIN CAPITAL LETTER D
4096/* 45 */   0x0045,   //   LATIN CAPITAL LETTER E
4097/* 46 */   0x0046,   //   LATIN CAPITAL LETTER F
4098/* 47 */   0x0047,   //   LATIN CAPITAL LETTER G
4099/* 48 */   0x0048,   //   LATIN CAPITAL LETTER H
4100/* 49 */   0x0049,   //   LATIN CAPITAL LETTER I
4101/* 4A */   0x004A,   //   LATIN CAPITAL LETTER J
4102/* 4B */   0x004B,   //   LATIN CAPITAL LETTER K
4103/* 4C */   0x004C,   //   LATIN CAPITAL LETTER L
4104/* 4D */   0x004D,   //   LATIN CAPITAL LETTER M
4105/* 4E */   0x004E,   //   LATIN CAPITAL LETTER N
4106/* 4F */   0x004F,   //   LATIN CAPITAL LETTER O
4107/* 50 */   0x0050,   //   LATIN CAPITAL LETTER P
4108/* 51 */   0x0051,   //   LATIN CAPITAL LETTER Q
4109/* 52 */   0x0052,   //   LATIN CAPITAL LETTER R
4110/* 53 */   0x0053,   //   LATIN CAPITAL LETTER S
4111/* 54 */   0x0054,   //   LATIN CAPITAL LETTER T
4112/* 55 */   0x0055,   //   LATIN CAPITAL LETTER U
4113/* 56 */   0x0056,   //   LATIN CAPITAL LETTER V
4114/* 57 */   0x0057,   //   LATIN CAPITAL LETTER W
4115/* 58 */   0x0058,   //   LATIN CAPITAL LETTER X
4116/* 59 */   0x0059,   //   LATIN CAPITAL LETTER Y
4117/* 5A */   0x005A,   //   LATIN CAPITAL LETTER Z
4118/* 5B */   0x005B,   //   LEFT SQUARE BRACKET
4119/* 5C */   0x005C,   //   REVERSE SOLIDUS
4120/* 5D */   0x005D,   //   RIGHT SQUARE BRACKET
4121/* 5E */   0x005E,   //   CIRCUMFLEX ACCENT
4122/* 5F */   0x005F,   //   LOW LINE
4123/* 60 */   0x0060,   //   GRAVE ACCENT
4124/* 61 */   0x0061,   //   LATIN SMALL LETTER A
4125/* 62 */   0x0062,   //   LATIN SMALL LETTER B
4126/* 63 */   0x0063,   //   LATIN SMALL LETTER C
4127/* 64 */   0x0064,   //   LATIN SMALL LETTER D
4128/* 65 */   0x0065,   //   LATIN SMALL LETTER E
4129/* 66 */   0x0066,   //   LATIN SMALL LETTER F
4130/* 67 */   0x0067,   //   LATIN SMALL LETTER G
4131/* 68 */   0x0068,   //   LATIN SMALL LETTER H
4132/* 69 */   0x0069,   //   LATIN SMALL LETTER I
4133/* 6A */   0x006A,   //   LATIN SMALL LETTER J
4134/* 6B */   0x006B,   //   LATIN SMALL LETTER K
4135/* 6C */   0x006C,   //   LATIN SMALL LETTER L
4136/* 6D */   0x006D,   //   LATIN SMALL LETTER M
4137/* 6E */   0x006E,   //   LATIN SMALL LETTER N
4138/* 6F */   0x006F,   //   LATIN SMALL LETTER O
4139/* 70 */   0x0070,   //   LATIN SMALL LETTER P
4140/* 71 */   0x0071,   //   LATIN SMALL LETTER Q
4141/* 72 */   0x0072,   //   LATIN SMALL LETTER R
4142/* 73 */   0x0073,   //   LATIN SMALL LETTER S
4143/* 74 */   0x0074,   //   LATIN SMALL LETTER T
4144/* 75 */   0x0075,   //   LATIN SMALL LETTER U
4145/* 76 */   0x0076,   //   LATIN SMALL LETTER V
4146/* 77 */   0x0077,   //   LATIN SMALL LETTER W
4147/* 78 */   0x0078,   //   LATIN SMALL LETTER X
4148/* 79 */   0x0079,   //   LATIN SMALL LETTER Y
4149/* 7A */   0x007A,   //   LATIN SMALL LETTER Z
4150/* 7B */   0x007B,   //   LEFT CURLY BRACKET
4151/* 7C */   0x007C,   //   VERTICAL LINE
4152/* 7D */   0x007D,   //   RIGHT CURLY BRACKET
4153/* 7E */   0x007E,   //   TILDE
4154/* 7F */   0x007F,   //   DELETE
4155/* 80 */   0x0080,   //   <control>
4156/* 81 */   0x0081,   //   <control>
4157/* 82 */   0x0082,   //   <control>
4158/* 83 */   0x0083,   //   <control>
4159/* 84 */   0x0084,   //   <control>
4160/* 85 */   0x0085,   //   <control>
4161/* 86 */   0x0086,   //   <control>
4162/* 87 */   0x0087,   //   <control>
4163/* 88 */   0x0088,   //   <control>
4164/* 89 */   0x0089,   //   <control>
4165/* 8A */   0x008A,   //   <control>
4166/* 8B */   0x008B,   //   <control>
4167/* 8C */   0x008C,   //   <control>
4168/* 8D */   0x008D,   //   <control>
4169/* 8E */   0x008E,   //   <control>
4170/* 8F */   0x008F,   //   <control>
4171/* 90 */   0x0090,   //   <control>
4172/* 91 */   0x0091,   //   <control>
4173/* 92 */   0x0092,   //   <control>
4174/* 93 */   0x0093,   //   <control>
4175/* 94 */   0x0094,   //   <control>
4176/* 95 */   0x0095,   //   <control>
4177/* 96 */   0x0096,   //   <control>
4178/* 97 */   0x0097,   //   <control>
4179/* 98 */   0x0098,   //   <control>
4180/* 99 */   0x0099,   //   <control>
4181/* 9A */   0x009A,   //   <control>
4182/* 9B */   0x009B,   //   <control>
4183/* 9C */   0x009C,   //   <control>
4184/* 9D */   0x009D,   //   <control>
4185/* 9E */   0x009E,   //   <control>
4186/* 9F */   0x009F,   //   <control>
4187/* A0 */   0x00A0,   //   NO-BREAK SPACE
4188/* A1 */   0x1E02,   //   LATIN CAPITAL LETTER B WITH DOT ABOVE
4189/* A2 */   0x1E03,   //   LATIN SMALL LETTER B WITH DOT ABOVE
4190/* A3 */   0x00A3,   //   POUND SIGN
4191/* A4 */   0x010A,   //   LATIN CAPITAL LETTER C WITH DOT ABOVE
4192/* A5 */   0x010B,   //   LATIN SMALL LETTER C WITH DOT ABOVE
4193/* A6 */   0x1E0A,   //   LATIN CAPITAL LETTER D WITH DOT ABOVE
4194/* A7 */   0x00A7,   //   SECTION SIGN
4195/* A8 */   0x1E80,   //   LATIN CAPITAL LETTER W WITH GRAVE
4196/* A9 */   0x00A9,   //   COPYRIGHT SIGN
4197/* AA */   0x1E82,   //   LATIN CAPITAL LETTER W WITH ACUTE
4198/* AB */   0x1E0B,   //   LATIN SMALL LETTER D WITH DOT ABOVE
4199/* AC */   0x1EF2,   //   LATIN CAPITAL LETTER Y WITH GRAVE
4200/* AD */   0x00AD,   //   SOFT HYPHEN
4201/* AE */   0x00AE,   //   REGISTERED SIGN
4202/* AF */   0x0178,   //   LATIN CAPITAL LETTER Y WITH DIAERESIS
4203/* B0 */   0x1E1E,   //   LATIN CAPITAL LETTER F WITH DOT ABOVE
4204/* B1 */   0x1E1F,   //   LATIN SMALL LETTER F WITH DOT ABOVE
4205/* B2 */   0x0120,   //   LATIN CAPITAL LETTER G WITH DOT ABOVE
4206/* B3 */   0x0121,   //   LATIN SMALL LETTER G WITH DOT ABOVE
4207/* B4 */   0x1E40,   //   LATIN CAPITAL LETTER M WITH DOT ABOVE
4208/* B5 */   0x1E41,   //   LATIN SMALL LETTER M WITH DOT ABOVE
4209/* B6 */   0x00B6,   //   PILCROW SIGN
4210/* B7 */   0x1E56,   //   LATIN CAPITAL LETTER P WITH DOT ABOVE
4211/* B8 */   0x1E81,   //   LATIN SMALL LETTER W WITH GRAVE
4212/* B9 */   0x1E57,   //   LATIN SMALL LETTER P WITH DOT ABOVE
4213/* BA */   0x1E83,   //   LATIN SMALL LETTER W WITH ACUTE
4214/* BB */   0x1E60,   //   LATIN CAPITAL LETTER S WITH DOT ABOVE
4215/* BC */   0x1EF3,   //   LATIN SMALL LETTER Y WITH GRAVE
4216/* BD */   0x1E84,   //   LATIN CAPITAL LETTER W WITH DIAERESIS
4217/* BE */   0x1E85,   //   LATIN SMALL LETTER W WITH DIAERESIS
4218/* BF */   0x1E61,   //   LATIN SMALL LETTER S WITH DOT ABOVE
4219/* C0 */   0x00C0,   //   LATIN CAPITAL LETTER A WITH GRAVE
4220/* C1 */   0x00C1,   //   LATIN CAPITAL LETTER A WITH ACUTE
4221/* C2 */   0x00C2,   //   LATIN CAPITAL LETTER A WITH CIRCUMFLEX
4222/* C3 */   0x00C3,   //   LATIN CAPITAL LETTER A WITH TILDE
4223/* C4 */   0x00C4,   //   LATIN CAPITAL LETTER A WITH DIAERESIS
4224/* C5 */   0x00C5,   //   LATIN CAPITAL LETTER A WITH RING ABOVE
4225/* C6 */   0x00C6,   //   LATIN CAPITAL LETTER AE
4226/* C7 */   0x00C7,   //   LATIN CAPITAL LETTER C WITH CEDILLA
4227/* C8 */   0x00C8,   //   LATIN CAPITAL LETTER E WITH GRAVE
4228/* C9 */   0x00C9,   //   LATIN CAPITAL LETTER E WITH ACUTE
4229/* CA */   0x00CA,   //   LATIN CAPITAL LETTER E WITH CIRCUMFLEX
4230/* CB */   0x00CB,   //   LATIN CAPITAL LETTER E WITH DIAERESIS
4231/* CC */   0x00CC,   //   LATIN CAPITAL LETTER I WITH GRAVE
4232/* CD */   0x00CD,   //   LATIN CAPITAL LETTER I WITH ACUTE
4233/* CE */   0x00CE,   //   LATIN CAPITAL LETTER I WITH CIRCUMFLEX
4234/* CF */   0x00CF,   //   LATIN CAPITAL LETTER I WITH DIAERESIS
4235/* D0 */   0x0174,   //   LATIN CAPITAL LETTER W WITH CIRCUMFLEX
4236/* D1 */   0x00D1,   //   LATIN CAPITAL LETTER N WITH TILDE
4237/* D2 */   0x00D2,   //   LATIN CAPITAL LETTER O WITH GRAVE
4238/* D3 */   0x00D3,   //   LATIN CAPITAL LETTER O WITH ACUTE
4239/* D4 */   0x00D4,   //   LATIN CAPITAL LETTER O WITH CIRCUMFLEX
4240/* D5 */   0x00D5,   //   LATIN CAPITAL LETTER O WITH TILDE
4241/* D6 */   0x00D6,   //   LATIN CAPITAL LETTER O WITH DIAERESIS
4242/* D7 */   0x1E6A,   //   LATIN CAPITAL LETTER T WITH DOT ABOVE
4243/* D8 */   0x00D8,   //   LATIN CAPITAL LETTER O WITH STROKE
4244/* D9 */   0x00D9,   //   LATIN CAPITAL LETTER U WITH GRAVE
4245/* DA */   0x00DA,   //   LATIN CAPITAL LETTER U WITH ACUTE
4246/* DB */   0x00DB,   //   LATIN CAPITAL LETTER U WITH CIRCUMFLEX
4247/* DC */   0x00DC,   //   LATIN CAPITAL LETTER U WITH DIAERESIS
4248/* DD */   0x00DD,   //   LATIN CAPITAL LETTER Y WITH ACUTE
4249/* DE */   0x0176,   //   LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
4250/* DF */   0x00DF,   //   LATIN SMALL LETTER SHARP S
4251/* E0 */   0x00E0,   //   LATIN SMALL LETTER A WITH GRAVE
4252/* E1 */   0x00E1,   //   LATIN SMALL LETTER A WITH ACUTE
4253/* E2 */   0x00E2,   //   LATIN SMALL LETTER A WITH CIRCUMFLEX
4254/* E3 */   0x00E3,   //   LATIN SMALL LETTER A WITH TILDE
4255/* E4 */   0x00E4,   //   LATIN SMALL LETTER A WITH DIAERESIS
4256/* E5 */   0x00E5,   //   LATIN SMALL LETTER A WITH RING ABOVE
4257/* E6 */   0x00E6,   //   LATIN SMALL LETTER AE
4258/* E7 */   0x00E7,   //   LATIN SMALL LETTER C WITH CEDILLA
4259/* E8 */   0x00E8,   //   LATIN SMALL LETTER E WITH GRAVE
4260/* E9 */   0x00E9,   //   LATIN SMALL LETTER E WITH ACUTE
4261/* EA */   0x00EA,   //   LATIN SMALL LETTER E WITH CIRCUMFLEX
4262/* EB */   0x00EB,   //   LATIN SMALL LETTER E WITH DIAERESIS
4263/* EC */   0x00EC,   //   LATIN SMALL LETTER I WITH GRAVE
4264/* ED */   0x00ED,   //   LATIN SMALL LETTER I WITH ACUTE
4265/* EE */   0x00EE,   //   LATIN SMALL LETTER I WITH CIRCUMFLEX
4266/* EF */   0x00EF,   //   LATIN SMALL LETTER I WITH DIAERESIS
4267/* F0 */   0x0175,   //   LATIN SMALL LETTER W WITH CIRCUMFLEX
4268/* F1 */   0x00F1,   //   LATIN SMALL LETTER N WITH TILDE
4269/* F2 */   0x00F2,   //   LATIN SMALL LETTER O WITH GRAVE
4270/* F3 */   0x00F3,   //   LATIN SMALL LETTER O WITH ACUTE
4271/* F4 */   0x00F4,   //   LATIN SMALL LETTER O WITH CIRCUMFLEX
4272/* F5 */   0x00F5,   //   LATIN SMALL LETTER O WITH TILDE
4273/* F6 */   0x00F6,   //   LATIN SMALL LETTER O WITH DIAERESIS
4274/* F7 */   0x1E6B,   //   LATIN SMALL LETTER T WITH DOT ABOVE
4275/* F8 */   0x00F8,   //   LATIN SMALL LETTER O WITH STROKE
4276/* F9 */   0x00F9,   //   LATIN SMALL LETTER U WITH GRAVE
4277/* FA */   0x00FA,   //   LATIN SMALL LETTER U WITH ACUTE
4278/* FB */   0x00FB,   //   LATIN SMALL LETTER U WITH CIRCUMFLEX
4279/* FC */   0x00FC,   //   LATIN SMALL LETTER U WITH DIAERESIS
4280/* FD */   0x00FD,   //   LATIN SMALL LETTER Y WITH ACUTE
4281/* FE */   0x0177,   //   LATIN SMALL LETTER Y WITH CIRCUMFLEX
4282/* FF */   0x00FF   //   LATIN SMALL LETTER Y WITH DIAERESIS
4283};
4284
4285/***************************************************************************
4286#
4287#   Name:             ISO/IEC 8859-15:1999 to Unicode
4288#   Unicode version:  3.0
4289#   Table version:    1.0
4290#   Table format:     Format A
4291#   Date:             1999 July 27
4292#   Authors:          Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/>
4293#           Ken Whistler <kenw@sybase.com>
4294#
4295#   Copyright (c) 1998 - 1999 Unicode, Inc.  All Rights reserved.
4296#
4297#   This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
4298#   No claims are made as to fitness for any particular purpose.  No
4299#   warranties of any kind are expressed or implied.  The recipient
4300#   agrees to determine applicability of information provided.  If this
4301#   file has been provided on optical media by Unicode, Inc., the sole
4302#   remedy for any claim will be exchange of defective media within 90
4303#   days of receipt.
4304#
4305#   Unicode, Inc. hereby grants the right to freely use the information
4306#   supplied in this file in the creation of products supporting the
4307#   Unicode Standard, and to make copies of this file in any form for
4308#   internal or external distribution as long as this notice remains
4309#   attached.
4310#
4311#   General notes:
4312#
4313#   This table contains the data the Unicode Consortium has on how
4314#       ISO/IEC 8859-15:1999 characters map into Unicode.
4315#
4316#   Format:  Three tab-separated columns
4317#       Column #1 is the ISO/IEC 8859-15 code (in hex as 0xXX)
4318#       Column #2 is the Unicode (in hex as 0xXXXX)
4319#       Column #3 the Unicode name (follows a comment sign, '#')
4320#
4321#   The entries are in ISO/IEC 8859-15 order.
4322#
4323#   Version history
4324#
4325#   Updated versions of this file may be found in:
4326#      <ftp://ftp.unicode.org/Public/MAPPINGS/>
4327#
4328#   Any comments or problems, contact <errata@unicode.org>
4329#   Please note that <errata@unicode.org> is an archival address;
4330#   notices will be checked, but do not expect an immediate response.
4331#
4332***************************************************************************/
4333static const unicode_char lookup_iso8859_15[256] = {
4334/* 00 */   0x0000,   //   NULL
4335/* 01 */   0x0001,   //   START OF HEADING
4336/* 02 */   0x0002,   //   START OF TEXT
4337/* 03 */   0x0003,   //   END OF TEXT
4338/* 04 */   0x0004,   //   END OF TRANSMISSION
4339/* 05 */   0x0005,   //   ENQUIRY
4340/* 06 */   0x0006,   //   ACKNOWLEDGE
4341/* 07 */   0x0007,   //   BELL
4342/* 08 */   0x0008,   //   BACKSPACE
4343/* 09 */   0x0009,   //   HORIZONTAL TABULATION
4344/* 0A */   0x000A,   //   LINE FEED
4345/* 0B */   0x000B,   //   VERTICAL TABULATION
4346/* 0C */   0x000C,   //   FORM FEED
4347/* 0D */   0x000D,   //   CARRIAGE RETURN
4348/* 0E */   0x000E,   //   SHIFT OUT
4349/* 0F */   0x000F,   //   SHIFT IN
4350/* 10 */   0x0010,   //   DATA LINK ESCAPE
4351/* 11 */   0x0011,   //   DEVICE CONTROL ONE
4352/* 12 */   0x0012,   //   DEVICE CONTROL TWO
4353/* 13 */   0x0013,   //   DEVICE CONTROL THREE
4354/* 14 */   0x0014,   //   DEVICE CONTROL FOUR
4355/* 15 */   0x0015,   //   NEGATIVE ACKNOWLEDGE
4356/* 16 */   0x0016,   //   SYNCHRONOUS IDLE
4357/* 17 */   0x0017,   //   END OF TRANSMISSION BLOCK
4358/* 18 */   0x0018,   //   CANCEL
4359/* 19 */   0x0019,   //   END OF MEDIUM
4360/* 1A */   0x001A,   //   SUBSTITUTE
4361/* 1B */   0x001B,   //   ESCAPE
4362/* 1C */   0x001C,   //   FILE SEPARATOR
4363/* 1D */   0x001D,   //   GROUP SEPARATOR
4364/* 1E */   0x001E,   //   RECORD SEPARATOR
4365/* 1F */   0x001F,   //   UNIT SEPARATOR
4366/* 20 */   0x0020,   //   SPACE
4367/* 21 */   0x0021,   //   EXCLAMATION MARK
4368/* 22 */   0x0022,   //   QUOTATION MARK
4369/* 23 */   0x0023,   //   NUMBER SIGN
4370/* 24 */   0x0024,   //   DOLLAR SIGN
4371/* 25 */   0x0025,   //   PERCENT SIGN
4372/* 26 */   0x0026,   //   AMPERSAND
4373/* 27 */   0x0027,   //   APOSTROPHE
4374/* 28 */   0x0028,   //   LEFT PARENTHESIS
4375/* 29 */   0x0029,   //   RIGHT PARENTHESIS
4376/* 2A */   0x002A,   //   ASTERISK
4377/* 2B */   0x002B,   //   PLUS SIGN
4378/* 2C */   0x002C,   //   COMMA
4379/* 2D */   0x002D,   //   HYPHEN-MINUS
4380/* 2E */   0x002E,   //   FULL STOP
4381/* 2F */   0x002F,   //   SOLIDUS
4382/* 30 */   0x0030,   //   DIGIT ZERO
4383/* 31 */   0x0031,   //   DIGIT ONE
4384/* 32 */   0x0032,   //   DIGIT TWO
4385/* 33 */   0x0033,   //   DIGIT THREE
4386/* 34 */   0x0034,   //   DIGIT FOUR
4387/* 35 */   0x0035,   //   DIGIT FIVE
4388/* 36 */   0x0036,   //   DIGIT SIX
4389/* 37 */   0x0037,   //   DIGIT SEVEN
4390/* 38 */   0x0038,   //   DIGIT EIGHT
4391/* 39 */   0x0039,   //   DIGIT NINE
4392/* 3A */   0x003A,   //   COLON
4393/* 3B */   0x003B,   //   SEMICOLON
4394/* 3C */   0x003C,   //   LESS-THAN SIGN
4395/* 3D */   0x003D,   //   EQUALS SIGN
4396/* 3E */   0x003E,   //   GREATER-THAN SIGN
4397/* 3F */   0x003F,   //   QUESTION MARK
4398/* 40 */   0x0040,   //   COMMERCIAL AT
4399/* 41 */   0x0041,   //   LATIN CAPITAL LETTER A
4400/* 42 */   0x0042,   //   LATIN CAPITAL LETTER B
4401/* 43 */   0x0043,   //   LATIN CAPITAL LETTER C
4402/* 44 */   0x0044,   //   LATIN CAPITAL LETTER D
4403/* 45 */   0x0045,   //   LATIN CAPITAL LETTER E
4404/* 46 */   0x0046,   //   LATIN CAPITAL LETTER F
4405/* 47 */   0x0047,   //   LATIN CAPITAL LETTER G
4406/* 48 */   0x0048,   //   LATIN CAPITAL LETTER H
4407/* 49 */   0x0049,   //   LATIN CAPITAL LETTER I
4408/* 4A */   0x004A,   //   LATIN CAPITAL LETTER J
4409/* 4B */   0x004B,   //   LATIN CAPITAL LETTER K
4410/* 4C */   0x004C,   //   LATIN CAPITAL LETTER L
4411/* 4D */   0x004D,   //   LATIN CAPITAL LETTER M
4412/* 4E */   0x004E,   //   LATIN CAPITAL LETTER N
4413/* 4F */   0x004F,   //   LATIN CAPITAL LETTER O
4414/* 50 */   0x0050,   //   LATIN CAPITAL LETTER P
4415/* 51 */   0x0051,   //   LATIN CAPITAL LETTER Q
4416/* 52 */   0x0052,   //   LATIN CAPITAL LETTER R
4417/* 53 */   0x0053,   //   LATIN CAPITAL LETTER S
4418/* 54 */   0x0054,   //   LATIN CAPITAL LETTER T
4419/* 55 */   0x0055,   //   LATIN CAPITAL LETTER U
4420/* 56 */   0x0056,   //   LATIN CAPITAL LETTER V
4421/* 57 */   0x0057,   //   LATIN CAPITAL LETTER W
4422/* 58 */   0x0058,   //   LATIN CAPITAL LETTER X
4423/* 59 */   0x0059,   //   LATIN CAPITAL LETTER Y
4424/* 5A */   0x005A,   //   LATIN CAPITAL LETTER Z
4425/* 5B */   0x005B,   //   LEFT SQUARE BRACKET
4426/* 5C */   0x005C,   //   REVERSE SOLIDUS
4427/* 5D */   0x005D,   //   RIGHT SQUARE BRACKET
4428/* 5E */   0x005E,   //   CIRCUMFLEX ACCENT
4429/* 5F */   0x005F,   //   LOW LINE
4430/* 60 */   0x0060,   //   GRAVE ACCENT
4431/* 61 */   0x0061,   //   LATIN SMALL LETTER A
4432/* 62 */   0x0062,   //   LATIN SMALL LETTER B
4433/* 63 */   0x0063,   //   LATIN SMALL LETTER C
4434/* 64 */   0x0064,   //   LATIN SMALL LETTER D
4435/* 65 */   0x0065,   //   LATIN SMALL LETTER E
4436/* 66 */   0x0066,   //   LATIN SMALL LETTER F
4437/* 67 */   0x0067,   //   LATIN SMALL LETTER G
4438/* 68 */   0x0068,   //   LATIN SMALL LETTER H
4439/* 69 */   0x0069,   //   LATIN SMALL LETTER I
4440/* 6A */   0x006A,   //   LATIN SMALL LETTER J
4441/* 6B */   0x006B,   //   LATIN SMALL LETTER K
4442/* 6C */   0x006C,   //   LATIN SMALL LETTER L
4443/* 6D */   0x006D,   //   LATIN SMALL LETTER M
4444/* 6E */   0x006E,   //   LATIN SMALL LETTER N
4445/* 6F */   0x006F,   //   LATIN SMALL LETTER O
4446/* 70 */   0x0070,   //   LATIN SMALL LETTER P
4447/* 71 */   0x0071,   //   LATIN SMALL LETTER Q
4448/* 72 */   0x0072,   //   LATIN SMALL LETTER R
4449/* 73 */   0x0073,   //   LATIN SMALL LETTER S
4450/* 74 */   0x0074,   //   LATIN SMALL LETTER T
4451/* 75 */   0x0075,   //   LATIN SMALL LETTER U
4452/* 76 */   0x0076,   //   LATIN SMALL LETTER V
4453/* 77 */   0x0077,   //   LATIN SMALL LETTER W
4454/* 78 */   0x0078,   //   LATIN SMALL LETTER X
4455/* 79 */   0x0079,   //   LATIN SMALL LETTER Y
4456/* 7A */   0x007A,   //   LATIN SMALL LETTER Z
4457/* 7B */   0x007B,   //   LEFT CURLY BRACKET
4458/* 7C */   0x007C,   //   VERTICAL LINE
4459/* 7D */   0x007D,   //   RIGHT CURLY BRACKET
4460/* 7E */   0x007E,   //   TILDE
4461/* 7F */   0x007F,   //   DELETE
4462/* 80 */   0x0080,   //   <control>
4463/* 81 */   0x0081,   //   <control>
4464/* 82 */   0x0082,   //   <control>
4465/* 83 */   0x0083,   //   <control>
4466/* 84 */   0x0084,   //   <control>
4467/* 85 */   0x0085,   //   <control>
4468/* 86 */   0x0086,   //   <control>
4469/* 87 */   0x0087,   //   <control>
4470/* 88 */   0x0088,   //   <control>
4471/* 89 */   0x0089,   //   <control>
4472/* 8A */   0x008A,   //   <control>
4473/* 8B */   0x008B,   //   <control>
4474/* 8C */   0x008C,   //   <control>
4475/* 8D */   0x008D,   //   <control>
4476/* 8E */   0x008E,   //   <control>
4477/* 8F */   0x008F,   //   <control>
4478/* 90 */   0x0090,   //   <control>
4479/* 91 */   0x0091,   //   <control>
4480/* 92 */   0x0092,   //   <control>
4481/* 93 */   0x0093,   //   <control>
4482/* 94 */   0x0094,   //   <control>
4483/* 95 */   0x0095,   //   <control>
4484/* 96 */   0x0096,   //   <control>
4485/* 97 */   0x0097,   //   <control>
4486/* 98 */   0x0098,   //   <control>
4487/* 99 */   0x0099,   //   <control>
4488/* 9A */   0x009A,   //   <control>
4489/* 9B */   0x009B,   //   <control>
4490/* 9C */   0x009C,   //   <control>
4491/* 9D */   0x009D,   //   <control>
4492/* 9E */   0x009E,   //   <control>
4493/* 9F */   0x009F,   //   <control>
4494/* A0 */   0x00A0,   //   NO-BREAK SPACE
4495/* A1 */   0x00A1,   //   INVERTED EXCLAMATION MARK
4496/* A2 */   0x00A2,   //   CENT SIGN
4497/* A3 */   0x00A3,   //   POUND SIGN
4498/* A4 */   0x20AC,   //   EURO SIGN
4499/* A5 */   0x00A5,   //   YEN SIGN
4500/* A6 */   0x0160,   //   LATIN CAPITAL LETTER S WITH CARON
4501/* A7 */   0x00A7,   //   SECTION SIGN
4502/* A8 */   0x0161,   //   LATIN SMALL LETTER S WITH CARON
4503/* A9 */   0x00A9,   //   COPYRIGHT SIGN
4504/* AA */   0x00AA,   //   FEMININE ORDINAL INDICATOR
4505/* AB */   0x00AB,   //   LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
4506/* AC */   0x00AC,   //   NOT SIGN
4507/* AD */   0x00AD,   //   SOFT HYPHEN
4508/* AE */   0x00AE,   //   REGISTERED SIGN
4509/* AF */   0x00AF,   //   MACRON
4510/* B0 */   0x00B0,   //   DEGREE SIGN
4511/* B1 */   0x00B1,   //   PLUS-MINUS SIGN
4512/* B2 */   0x00B2,   //   SUPERSCRIPT TWO
4513/* B3 */   0x00B3,   //   SUPERSCRIPT THREE
4514/* B4 */   0x017D,   //   LATIN CAPITAL LETTER Z WITH CARON
4515/* B5 */   0x00B5,   //   MICRO SIGN
4516/* B6 */   0x00B6,   //   PILCROW SIGN
4517/* B7 */   0x00B7,   //   MIDDLE DOT
4518/* B8 */   0x017E,   //   LATIN SMALL LETTER Z WITH CARON
4519/* B9 */   0x00B9,   //   SUPERSCRIPT ONE
4520/* BA */   0x00BA,   //   MASCULINE ORDINAL INDICATOR
4521/* BB */   0x00BB,   //   RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
4522/* BC */   0x0152,   //   LATIN CAPITAL LIGATURE OE
4523/* BD */   0x0153,   //   LATIN SMALL LIGATURE OE
4524/* BE */   0x0178,   //   LATIN CAPITAL LETTER Y WITH DIAERESIS
4525/* BF */   0x00BF,   //   INVERTED QUESTION MARK
4526/* C0 */   0x00C0,   //   LATIN CAPITAL LETTER A WITH GRAVE
4527/* C1 */   0x00C1,   //   LATIN CAPITAL LETTER A WITH ACUTE
4528/* C2 */   0x00C2,   //   LATIN CAPITAL LETTER A WITH CIRCUMFLEX
4529/* C3 */   0x00C3,   //   LATIN CAPITAL LETTER A WITH TILDE
4530/* C4 */   0x00C4,   //   LATIN CAPITAL LETTER A WITH DIAERESIS
4531/* C5 */   0x00C5,   //   LATIN CAPITAL LETTER A WITH RING ABOVE
4532/* C6 */   0x00C6,   //   LATIN CAPITAL LETTER AE
4533/* C7 */   0x00C7,   //   LATIN CAPITAL LETTER C WITH CEDILLA
4534/* C8 */   0x00C8,   //   LATIN CAPITAL LETTER E WITH GRAVE
4535/* C9 */   0x00C9,   //   LATIN CAPITAL LETTER E WITH ACUTE
4536/* CA */   0x00CA,   //   LATIN CAPITAL LETTER E WITH CIRCUMFLEX
4537/* CB */   0x00CB,   //   LATIN CAPITAL LETTER E WITH DIAERESIS
4538/* CC */   0x00CC,   //   LATIN CAPITAL LETTER I WITH GRAVE
4539/* CD */   0x00CD,   //   LATIN CAPITAL LETTER I WITH ACUTE
4540/* CE */   0x00CE,   //   LATIN CAPITAL LETTER I WITH CIRCUMFLEX
4541/* CF */   0x00CF,   //   LATIN CAPITAL LETTER I WITH DIAERESIS
4542/* D0 */   0x00D0,   //   LATIN CAPITAL LETTER ETH
4543/* D1 */   0x00D1,   //   LATIN CAPITAL LETTER N WITH TILDE
4544/* D2 */   0x00D2,   //   LATIN CAPITAL LETTER O WITH GRAVE
4545/* D3 */   0x00D3,   //   LATIN CAPITAL LETTER O WITH ACUTE
4546/* D4 */   0x00D4,   //   LATIN CAPITAL LETTER O WITH CIRCUMFLEX
4547/* D5 */   0x00D5,   //   LATIN CAPITAL LETTER O WITH TILDE
4548/* D6 */   0x00D6,   //   LATIN CAPITAL LETTER O WITH DIAERESIS
4549/* D7 */   0x00D7,   //   MULTIPLICATION SIGN
4550/* D8 */   0x00D8,   //   LATIN CAPITAL LETTER O WITH STROKE
4551/* D9 */   0x00D9,   //   LATIN CAPITAL LETTER U WITH GRAVE
4552/* DA */   0x00DA,   //   LATIN CAPITAL LETTER U WITH ACUTE
4553/* DB */   0x00DB,   //   LATIN CAPITAL LETTER U WITH CIRCUMFLEX
4554/* DC */   0x00DC,   //   LATIN CAPITAL LETTER U WITH DIAERESIS
4555/* DD */   0x00DD,   //   LATIN CAPITAL LETTER Y WITH ACUTE
4556/* DE */   0x00DE,   //   LATIN CAPITAL LETTER THORN
4557/* DF */   0x00DF,   //   LATIN SMALL LETTER SHARP S
4558/* E0 */   0x00E0,   //   LATIN SMALL LETTER A WITH GRAVE
4559/* E1 */   0x00E1,   //   LATIN SMALL LETTER A WITH ACUTE
4560/* E2 */   0x00E2,   //   LATIN SMALL LETTER A WITH CIRCUMFLEX
4561/* E3 */   0x00E3,   //   LATIN SMALL LETTER A WITH TILDE
4562/* E4 */   0x00E4,   //   LATIN SMALL LETTER A WITH DIAERESIS
4563/* E5 */   0x00E5,   //   LATIN SMALL LETTER A WITH RING ABOVE
4564/* E6 */   0x00E6,   //   LATIN SMALL LETTER AE
4565/* E7 */   0x00E7,   //   LATIN SMALL LETTER C WITH CEDILLA
4566/* E8 */   0x00E8,   //   LATIN SMALL LETTER E WITH GRAVE
4567/* E9 */   0x00E9,   //   LATIN SMALL LETTER E WITH ACUTE
4568/* EA */   0x00EA,   //   LATIN SMALL LETTER E WITH CIRCUMFLEX
4569/* EB */   0x00EB,   //   LATIN SMALL LETTER E WITH DIAERESIS
4570/* EC */   0x00EC,   //   LATIN SMALL LETTER I WITH GRAVE
4571/* ED */   0x00ED,   //   LATIN SMALL LETTER I WITH ACUTE
4572/* EE */   0x00EE,   //   LATIN SMALL LETTER I WITH CIRCUMFLEX
4573/* EF */   0x00EF,   //   LATIN SMALL LETTER I WITH DIAERESIS
4574/* F0 */   0x00F0,   //   LATIN SMALL LETTER ETH
4575/* F1 */   0x00F1,   //   LATIN SMALL LETTER N WITH TILDE
4576/* F2 */   0x00F2,   //   LATIN SMALL LETTER O WITH GRAVE
4577/* F3 */   0x00F3,   //   LATIN SMALL LETTER O WITH ACUTE
4578/* F4 */   0x00F4,   //   LATIN SMALL LETTER O WITH CIRCUMFLEX
4579/* F5 */   0x00F5,   //   LATIN SMALL LETTER O WITH TILDE
4580/* F6 */   0x00F6,   //   LATIN SMALL LETTER O WITH DIAERESIS
4581/* F7 */   0x00F7,   //   DIVISION SIGN
4582/* F8 */   0x00F8,   //   LATIN SMALL LETTER O WITH STROKE
4583/* F9 */   0x00F9,   //   LATIN SMALL LETTER U WITH GRAVE
4584/* FA */   0x00FA,   //   LATIN SMALL LETTER U WITH ACUTE
4585/* FB */   0x00FB,   //   LATIN SMALL LETTER U WITH CIRCUMFLEX
4586/* FC */   0x00FC,   //   LATIN SMALL LETTER U WITH DIAERESIS
4587/* FD */   0x00FD,   //   LATIN SMALL LETTER Y WITH ACUTE
4588/* FE */   0x00FE,   //   LATIN SMALL LETTER THORN
4589/* FF */   0x00FF   //   LATIN SMALL LETTER Y WITH DIAERESIS
4590};
4591
4592/***************************************************************************
4593#
4594#   Name:             ISO/IEC 8859-16:2001 to Unicode
4595#   Unicode version:  3.0
4596#   Table version:    1.0
4597#   Table format:     Format A
4598#   Date:             2001 July 26
4599#   Authors:          Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/>
4600#
4601#   Copyright (c) 1999-2001 Unicode, Inc.  All Rights reserved.
4602#
4603#   This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
4604#   No claims are made as to fitness for any particular purpose.  No
4605#   warranties of any kind are expressed or implied.  The recipient
4606#   agrees to determine applicability of information provided.  If this
4607#   file has been provided on optical media by Unicode, Inc., the sole
4608#   remedy for any claim will be exchange of defective media within 90
4609#   days of receipt.
4610#
4611#   Unicode, Inc. hereby grants the right to freely use the information
4612#   supplied in this file in the creation of products supporting the
4613#   Unicode Standard, and to make copies of this file in any form for
4614#   internal or external distribution as long as this notice remains
4615#   attached.
4616#
4617#   General notes:
4618#
4619#   This table contains the data the Unicode Consortium has on how
4620#       ISO/IEC 8859-16:2001 characters map into Unicode.
4621#
4622#   Format:  Three tab-separated columns
4623#       Column #1 is the ISO/IEC 8859-16 code (in hex as 0xXX)
4624#       Column #2 is the Unicode (in hex as 0xXXXX)
4625#       Column #3 the Unicode name (follows a comment sign, '#')
4626#
4627#   The entries are in ISO/IEC 8859-16 order.
4628#
4629#   Updated versions of this file may be found in:
4630#      <ftp://ftp.unicode.org/Public/MAPPINGS/>
4631#
4632#   Any comments or problems, contact <errata@unicode.org>
4633#   Please note that <errata@unicode.org> is an archival address;
4634#   notices will be checked, but do not expect an immediate response.
4635#
4636***************************************************************************/
4637static const unicode_char lookup_iso8859_16[256] = {
4638/* 00 */   0x0000,   //   NULL
4639/* 01 */   0x0001,   //   START OF HEADING
4640/* 02 */   0x0002,   //   START OF TEXT
4641/* 03 */   0x0003,   //   END OF TEXT
4642/* 04 */   0x0004,   //   END OF TRANSMISSION
4643/* 05 */   0x0005,   //   ENQUIRY
4644/* 06 */   0x0006,   //   ACKNOWLEDGE
4645/* 07 */   0x0007,   //   BELL
4646/* 08 */   0x0008,   //   BACKSPACE
4647/* 09 */   0x0009,   //   HORIZONTAL TABULATION
4648/* 0A */   0x000A,   //   LINE FEED
4649/* 0B */   0x000B,   //   VERTICAL TABULATION
4650/* 0C */   0x000C,   //   FORM FEED
4651/* 0D */   0x000D,   //   CARRIAGE RETURN
4652/* 0E */   0x000E,   //   SHIFT OUT
4653/* 0F */   0x000F,   //   SHIFT IN
4654/* 10 */   0x0010,   //   DATA LINK ESCAPE
4655/* 11 */   0x0011,   //   DEVICE CONTROL ONE
4656/* 12 */   0x0012,   //   DEVICE CONTROL TWO
4657/* 13 */   0x0013,   //   DEVICE CONTROL THREE
4658/* 14 */   0x0014,   //   DEVICE CONTROL FOUR
4659/* 15 */   0x0015,   //   NEGATIVE ACKNOWLEDGE
4660/* 16 */   0x0016,   //   SYNCHRONOUS IDLE
4661/* 17 */   0x0017,   //   END OF TRANSMISSION BLOCK
4662/* 18 */   0x0018,   //   CANCEL
4663/* 19 */   0x0019,   //   END OF MEDIUM
4664/* 1A */   0x001A,   //   SUBSTITUTE
4665/* 1B */   0x001B,   //   ESCAPE
4666/* 1C */   0x001C,   //   FILE SEPARATOR
4667/* 1D */   0x001D,   //   GROUP SEPARATOR
4668/* 1E */   0x001E,   //   RECORD SEPARATOR
4669/* 1F */   0x001F,   //   UNIT SEPARATOR
4670/* 20 */   0x0020,   //   SPACE
4671/* 21 */   0x0021,   //   EXCLAMATION MARK
4672/* 22 */   0x0022,   //   QUOTATION MARK
4673/* 23 */   0x0023,   //   NUMBER SIGN
4674/* 24 */   0x0024,   //   DOLLAR SIGN
4675/* 25 */   0x0025,   //   PERCENT SIGN
4676/* 26 */   0x0026,   //   AMPERSAND
4677/* 27 */   0x0027,   //   APOSTROPHE
4678/* 28 */   0x0028,   //   LEFT PARENTHESIS
4679/* 29 */   0x0029,   //   RIGHT PARENTHESIS
4680/* 2A */   0x002A,   //   ASTERISK
4681/* 2B */   0x002B,   //   PLUS SIGN
4682/* 2C */   0x002C,   //   COMMA
4683/* 2D */   0x002D,   //   HYPHEN-MINUS
4684/* 2E */   0x002E,   //   FULL STOP
4685/* 2F */   0x002F,   //   SOLIDUS
4686/* 30 */   0x0030,   //   DIGIT ZERO
4687/* 31 */   0x0031,   //   DIGIT ONE
4688/* 32 */   0x0032,   //   DIGIT TWO
4689/* 33 */   0x0033,   //   DIGIT THREE
4690/* 34 */   0x0034,   //   DIGIT FOUR
4691/* 35 */   0x0035,   //   DIGIT FIVE
4692/* 36 */   0x0036,   //   DIGIT SIX
4693/* 37 */   0x0037,   //   DIGIT SEVEN
4694/* 38 */   0x0038,   //   DIGIT EIGHT
4695/* 39 */   0x0039,   //   DIGIT NINE
4696/* 3A */   0x003A,   //   COLON
4697/* 3B */   0x003B,   //   SEMICOLON
4698/* 3C */   0x003C,   //   LESS-THAN SIGN
4699/* 3D */   0x003D,   //   EQUALS SIGN
4700/* 3E */   0x003E,   //   GREATER-THAN SIGN
4701/* 3F */   0x003F,   //   QUESTION MARK
4702/* 40 */   0x0040,   //   COMMERCIAL AT
4703/* 41 */   0x0041,   //   LATIN CAPITAL LETTER A
4704/* 42 */   0x0042,   //   LATIN CAPITAL LETTER B
4705/* 43 */   0x0043,   //   LATIN CAPITAL LETTER C
4706/* 44 */   0x0044,   //   LATIN CAPITAL LETTER D
4707/* 45 */   0x0045,   //   LATIN CAPITAL LETTER E
4708/* 46 */   0x0046,   //   LATIN CAPITAL LETTER F
4709/* 47 */   0x0047,   //   LATIN CAPITAL LETTER G
4710/* 48 */   0x0048,   //   LATIN CAPITAL LETTER H
4711/* 49 */   0x0049,   //   LATIN CAPITAL LETTER I
4712/* 4A */   0x004A,   //   LATIN CAPITAL LETTER J
4713/* 4B */   0x004B,   //   LATIN CAPITAL LETTER K
4714/* 4C */   0x004C,   //   LATIN CAPITAL LETTER L
4715/* 4D */   0x004D,   //   LATIN CAPITAL LETTER M
4716/* 4E */   0x004E,   //   LATIN CAPITAL LETTER N
4717/* 4F */   0x004F,   //   LATIN CAPITAL LETTER O
4718/* 50 */   0x0050,   //   LATIN CAPITAL LETTER P
4719/* 51 */   0x0051,   //   LATIN CAPITAL LETTER Q
4720/* 52 */   0x0052,   //   LATIN CAPITAL LETTER R
4721/* 53 */   0x0053,   //   LATIN CAPITAL LETTER S
4722/* 54 */   0x0054,   //   LATIN CAPITAL LETTER T
4723/* 55 */   0x0055,   //   LATIN CAPITAL LETTER U
4724/* 56 */   0x0056,   //   LATIN CAPITAL LETTER V
4725/* 57 */   0x0057,   //   LATIN CAPITAL LETTER W
4726/* 58 */   0x0058,   //   LATIN CAPITAL LETTER X
4727/* 59 */   0x0059,   //   LATIN CAPITAL LETTER Y
4728/* 5A */   0x005A,   //   LATIN CAPITAL LETTER Z
4729/* 5B */   0x005B,   //   LEFT SQUARE BRACKET
4730/* 5C */   0x005C,   //   REVERSE SOLIDUS
4731/* 5D */   0x005D,   //   RIGHT SQUARE BRACKET
4732/* 5E */   0x005E,   //   CIRCUMFLEX ACCENT
4733/* 5F */   0x005F,   //   LOW LINE
4734/* 60 */   0x0060,   //   GRAVE ACCENT
4735/* 61 */   0x0061,   //   LATIN SMALL LETTER A
4736/* 62 */   0x0062,   //   LATIN SMALL LETTER B
4737/* 63 */   0x0063,   //   LATIN SMALL LETTER C
4738/* 64 */   0x0064,   //   LATIN SMALL LETTER D
4739/* 65 */   0x0065,   //   LATIN SMALL LETTER E
4740/* 66 */   0x0066,   //   LATIN SMALL LETTER F
4741/* 67 */   0x0067,   //   LATIN SMALL LETTER G
4742/* 68 */   0x0068,   //   LATIN SMALL LETTER H
4743/* 69 */   0x0069,   //   LATIN SMALL LETTER I
4744/* 6A */   0x006A,   //   LATIN SMALL LETTER J
4745/* 6B */   0x006B,   //   LATIN SMALL LETTER K
4746/* 6C */   0x006C,   //   LATIN SMALL LETTER L
4747/* 6D */   0x006D,   //   LATIN SMALL LETTER M
4748/* 6E */   0x006E,   //   LATIN SMALL LETTER N
4749/* 6F */   0x006F,   //   LATIN SMALL LETTER O
4750/* 70 */   0x0070,   //   LATIN SMALL LETTER P
4751/* 71 */   0x0071,   //   LATIN SMALL LETTER Q
4752/* 72 */   0x0072,   //   LATIN SMALL LETTER R
4753/* 73 */   0x0073,   //   LATIN SMALL LETTER S
4754/* 74 */   0x0074,   //   LATIN SMALL LETTER T
4755/* 75 */   0x0075,   //   LATIN SMALL LETTER U
4756/* 76 */   0x0076,   //   LATIN SMALL LETTER V
4757/* 77 */   0x0077,   //   LATIN SMALL LETTER W
4758/* 78 */   0x0078,   //   LATIN SMALL LETTER X
4759/* 79 */   0x0079,   //   LATIN SMALL LETTER Y
4760/* 7A */   0x007A,   //   LATIN SMALL LETTER Z
4761/* 7B */   0x007B,   //   LEFT CURLY BRACKET
4762/* 7C */   0x007C,   //   VERTICAL LINE
4763/* 7D */   0x007D,   //   RIGHT CURLY BRACKET
4764/* 7E */   0x007E,   //   TILDE
4765/* 7F */   0x007F,   //   DELETE
4766/* 80 */   0x0080,   //   <control>
4767/* 81 */   0x0081,   //   <control>
4768/* 82 */   0x0082,   //   <control>
4769/* 83 */   0x0083,   //   <control>
4770/* 84 */   0x0084,   //   <control>
4771/* 85 */   0x0085,   //   <control>
4772/* 86 */   0x0086,   //   <control>
4773/* 87 */   0x0087,   //   <control>
4774/* 88 */   0x0088,   //   <control>
4775/* 89 */   0x0089,   //   <control>
4776/* 8A */   0x008A,   //   <control>
4777/* 8B */   0x008B,   //   <control>
4778/* 8C */   0x008C,   //   <control>
4779/* 8D */   0x008D,   //   <control>
4780/* 8E */   0x008E,   //   <control>
4781/* 8F */   0x008F,   //   <control>
4782/* 90 */   0x0090,   //   <control>
4783/* 91 */   0x0091,   //   <control>
4784/* 92 */   0x0092,   //   <control>
4785/* 93 */   0x0093,   //   <control>
4786/* 94 */   0x0094,   //   <control>
4787/* 95 */   0x0095,   //   <control>
4788/* 96 */   0x0096,   //   <control>
4789/* 97 */   0x0097,   //   <control>
4790/* 98 */   0x0098,   //   <control>
4791/* 99 */   0x0099,   //   <control>
4792/* 9A */   0x009A,   //   <control>
4793/* 9B */   0x009B,   //   <control>
4794/* 9C */   0x009C,   //   <control>
4795/* 9D */   0x009D,   //   <control>
4796/* 9E */   0x009E,   //   <control>
4797/* 9F */   0x009F,   //   <control>
4798/* A0 */   0x00A0,   //   NO-BREAK SPACE
4799/* A1 */   0x0104,   //   LATIN CAPITAL LETTER A WITH OGONEK
4800/* A2 */   0x0105,   //   LATIN SMALL LETTER A WITH OGONEK
4801/* A3 */   0x0141,   //   LATIN CAPITAL LETTER L WITH STROKE
4802/* A4 */   0x20AC,   //   EURO SIGN
4803/* A5 */   0x201E,   //   DOUBLE LOW-9 QUOTATION MARK
4804/* A6 */   0x0160,   //   LATIN CAPITAL LETTER S WITH CARON
4805/* A7 */   0x00A7,   //   SECTION SIGN
4806/* A8 */   0x0161,   //   LATIN SMALL LETTER S WITH CARON
4807/* A9 */   0x00A9,   //   COPYRIGHT SIGN
4808/* AA */   0x0218,   //   LATIN CAPITAL LETTER S WITH COMMA BELOW
4809/* AB */   0x00AB,   //   LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
4810/* AC */   0x0179,   //   LATIN CAPITAL LETTER Z WITH ACUTE
4811/* AD */   0x00AD,   //   SOFT HYPHEN
4812/* AE */   0x017A,   //   LATIN SMALL LETTER Z WITH ACUTE
4813/* AF */   0x017B,   //   LATIN CAPITAL LETTER Z WITH DOT ABOVE
4814/* B0 */   0x00B0,   //   DEGREE SIGN
4815/* B1 */   0x00B1,   //   PLUS-MINUS SIGN
4816/* B2 */   0x010C,   //   LATIN CAPITAL LETTER C WITH CARON
4817/* B3 */   0x0142,   //   LATIN SMALL LETTER L WITH STROKE
4818/* B4 */   0x017D,   //   LATIN CAPITAL LETTER Z WITH CARON
4819/* B5 */   0x201D,   //   RIGHT DOUBLE QUOTATION MARK
4820/* B6 */   0x00B6,   //   PILCROW SIGN
4821/* B7 */   0x00B7,   //   MIDDLE DOT
4822/* B8 */   0x017E,   //   LATIN SMALL LETTER Z WITH CARON
4823/* B9 */   0x010D,   //   LATIN SMALL LETTER C WITH CARON
4824/* BA */   0x0219,   //   LATIN SMALL LETTER S WITH COMMA BELOW
4825/* BB */   0x00BB,   //   RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
4826/* BC */   0x0152,   //   LATIN CAPITAL LIGATURE OE
4827/* BD */   0x0153,   //   LATIN SMALL LIGATURE OE
4828/* BE */   0x0178,   //   LATIN CAPITAL LETTER Y WITH DIAERESIS
4829/* BF */   0x017C,   //   LATIN SMALL LETTER Z WITH DOT ABOVE
4830/* C0 */   0x00C0,   //   LATIN CAPITAL LETTER A WITH GRAVE
4831/* C1 */   0x00C1,   //   LATIN CAPITAL LETTER A WITH ACUTE
4832/* C2 */   0x00C2,   //   LATIN CAPITAL LETTER A WITH CIRCUMFLEX
4833/* C3 */   0x0102,   //   LATIN CAPITAL LETTER A WITH BREVE
4834/* C4 */   0x00C4,   //   LATIN CAPITAL LETTER A WITH DIAERESIS
4835/* C5 */   0x0106,   //   LATIN CAPITAL LETTER C WITH ACUTE
4836/* C6 */   0x00C6,   //   LATIN CAPITAL LETTER AE
4837/* C7 */   0x00C7,   //   LATIN CAPITAL LETTER C WITH CEDILLA
4838/* C8 */   0x00C8,   //   LATIN CAPITAL LETTER E WITH GRAVE
4839/* C9 */   0x00C9,   //   LATIN CAPITAL LETTER E WITH ACUTE
4840/* CA */   0x00CA,   //   LATIN CAPITAL LETTER E WITH CIRCUMFLEX
4841/* CB */   0x00CB,   //   LATIN CAPITAL LETTER E WITH DIAERESIS
4842/* CC */   0x00CC,   //   LATIN CAPITAL LETTER I WITH GRAVE
4843/* CD */   0x00CD,   //   LATIN CAPITAL LETTER I WITH ACUTE
4844/* CE */   0x00CE,   //   LATIN CAPITAL LETTER I WITH CIRCUMFLEX
4845/* CF */   0x00CF,   //   LATIN CAPITAL LETTER I WITH DIAERESIS
4846/* D0 */   0x0110,   //   LATIN CAPITAL LETTER D WITH STROKE
4847/* D1 */   0x0143,   //   LATIN CAPITAL LETTER N WITH ACUTE
4848/* D2 */   0x00D2,   //   LATIN CAPITAL LETTER O WITH GRAVE
4849/* D3 */   0x00D3,   //   LATIN CAPITAL LETTER O WITH ACUTE
4850/* D4 */   0x00D4,   //   LATIN CAPITAL LETTER O WITH CIRCUMFLEX
4851/* D5 */   0x0150,   //   LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
4852/* D6 */   0x00D6,   //   LATIN CAPITAL LETTER O WITH DIAERESIS
4853/* D7 */   0x015A,   //   LATIN CAPITAL LETTER S WITH ACUTE
4854/* D8 */   0x0170,   //   LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
4855/* D9 */   0x00D9,   //   LATIN CAPITAL LETTER U WITH GRAVE
4856/* DA */   0x00DA,   //   LATIN CAPITAL LETTER U WITH ACUTE
4857/* DB */   0x00DB,   //   LATIN CAPITAL LETTER U WITH CIRCUMFLEX
4858/* DC */   0x00DC,   //   LATIN CAPITAL LETTER U WITH DIAERESIS
4859/* DD */   0x0118,   //   LATIN CAPITAL LETTER E WITH OGONEK
4860/* DE */   0x021A,   //   LATIN CAPITAL LETTER T WITH COMMA BELOW
4861/* DF */   0x00DF,   //   LATIN SMALL LETTER SHARP S
4862/* E0 */   0x00E0,   //   LATIN SMALL LETTER A WITH GRAVE
4863/* E1 */   0x00E1,   //   LATIN SMALL LETTER A WITH ACUTE
4864/* E2 */   0x00E2,   //   LATIN SMALL LETTER A WITH CIRCUMFLEX
4865/* E3 */   0x0103,   //   LATIN SMALL LETTER A WITH BREVE
4866/* E4 */   0x00E4,   //   LATIN SMALL LETTER A WITH DIAERESIS
4867/* E5 */   0x0107,   //   LATIN SMALL LETTER C WITH ACUTE
4868/* E6 */   0x00E6,   //   LATIN SMALL LETTER AE
4869/* E7 */   0x00E7,   //   LATIN SMALL LETTER C WITH CEDILLA
4870/* E8 */   0x00E8,   //   LATIN SMALL LETTER E WITH GRAVE
4871/* E9 */   0x00E9,   //   LATIN SMALL LETTER E WITH ACUTE
4872/* EA */   0x00EA,   //   LATIN SMALL LETTER E WITH CIRCUMFLEX
4873/* EB */   0x00EB,   //   LATIN SMALL LETTER E WITH DIAERESIS
4874/* EC */   0x00EC,   //   LATIN SMALL LETTER I WITH GRAVE
4875/* ED */   0x00ED,   //   LATIN SMALL LETTER I WITH ACUTE
4876/* EE */   0x00EE,   //   LATIN SMALL LETTER I WITH CIRCUMFLEX
4877/* EF */   0x00EF,   //   LATIN SMALL LETTER I WITH DIAERESIS
4878/* F0 */   0x0111,   //   LATIN SMALL LETTER D WITH STROKE
4879/* F1 */   0x0144,   //   LATIN SMALL LETTER N WITH ACUTE
4880/* F2 */   0x00F2,   //   LATIN SMALL LETTER O WITH GRAVE
4881/* F3 */   0x00F3,   //   LATIN SMALL LETTER O WITH ACUTE
4882/* F4 */   0x00F4,   //   LATIN SMALL LETTER O WITH CIRCUMFLEX
4883/* F5 */   0x0151,   //   LATIN SMALL LETTER O WITH DOUBLE ACUTE
4884/* F6 */   0x00F6,   //   LATIN SMALL LETTER O WITH DIAERESIS
4885/* F7 */   0x015B,   //   LATIN SMALL LETTER S WITH ACUTE
4886/* F8 */   0x0171,   //   LATIN SMALL LETTER U WITH DOUBLE ACUTE
4887/* F9 */   0x00F9,   //   LATIN SMALL LETTER U WITH GRAVE
4888/* FA */   0x00FA,   //   LATIN SMALL LETTER U WITH ACUTE
4889/* FB */   0x00FB,   //   LATIN SMALL LETTER U WITH CIRCUMFLEX
4890/* FC */   0x00FC,   //   LATIN SMALL LETTER U WITH DIAERESIS
4891/* FD */   0x0119,   //   LATIN SMALL LETTER E WITH OGONEK
4892/* FE */   0x021B,   //   LATIN SMALL LETTER T WITH COMMA BELOW
4893/* FF */   0x00FF   //   LATIN SMALL LETTER Y WITH DIAERESIS
4894};
4895
4896/***************************************************************************
4897# File encoding:    UTF-8
4898# Name:             AtariST to Unicode
4899# Unicode version:  4.0
4900# Table version:    1.2
4901# Table format:     Format A
4902# Date:             2011 October 27
4903# Authors:          Philippe Verdy <verdyp AT gmail.com>
4904#                   Bruno Haible <bruno AT clisp.org>
4905#
4906# Copyright (c) 1998 - 2011 Unicode, Inc.  All Rights reserved.
4907#
4908# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
4909# No claims are made as to fitness for any particular purpose.  No
4910# warranties of any kind are expressed or implied.  The recipient
4911# agrees to determine applicability of information provided.  If this
4912# file has been provided on optical media by Unicode, Inc., the sole
4913# remedy for any claim will be exchange of defective media within 90
4914# days of receipt.
4915#
4916# Unicode, Inc. hereby grants the right to freely use the information
4917# supplied in this file in the creation of products supporting the
4918# Unicode Standard, and to make copies of this file in any form for
4919# internal or external distribution as long as this notice remains
4920# attached.
4921#
4922# General notes:
4923#
4924# This table contains the data the Unicode Consortium has on how
4925# Atari ST/TT (TOS) characters map into Unicode.
4926#
4927# Format:  Three tab-separated columns
4928#   Column 1 is the Atari ST code (in hex as 0xXX)
4929#   Column 2 is the Unicode (in hex as 0xXXXX)
4930#   Column 3 is a comment field containing:
4931#            - the Unicode name (follows a comment sign, '#'),
4932#            - the actual character or <symbol> (follows a comment sign, '#'),
4933#            - some backward compatible character set mappings.
4934#
4935# The entries are in Atari ST order.
4936#
4937# Version history
4938# 1.2 Thanks to Ulf Zibis for his report (no mapping changes).
4939#     - Fix the correct Unicode character names for
4940#       code points 0x00C6, 0x00E6, 0x00D6, 0x00DC, 0x00A8, 0x00B4.
4941#     - Fix editorial issues from from the previous HTML reporting form.
4942#     - Document that the file is UTF-8 encoded.
4943# 1.1 Thanks to Bruno Haible.
4944#     - swap the positions of GREEK SMALL LETTER BETA and LATIN SHARP S
4945#       on code positions 0x9E and 0xE1. So AtariST mapped the LATIN SHARP S
4946#       differently than PC codepages 437 and 850 (was it true on the TT in 1992?).
4947#     - Fix the correct code point 0x00B3 instead of 0x22B3 for SUPERSCRIPT THREE,
4948#       on code position 0xFE.
4949#     - Fix the spelling of a "GREEP" letter name to "GREEK" (no code changed)
4950#     - Change the mapping of code 0xEE from GREEK SMALL LETTER EPSILON to the
4951#       mathematical ELEMENT OF SIGN, on code position 0xEE.
4952# 1.0 version new, by Philippe Verdy.
4953#
4954# Updated versions of this file may be found in:
4955#   <ftp://ftp.unicode.org/Public/MAPPINGS/>
4956#
4957# Any comments or problems, contact http://www.unicode.org/reporting.html
4958#
4959***************************************************************************/
4960static const unicode_char lookup_atari_st[256] = {
4961/* 00 */   0x0000,   // NULL                                       <NUL>   ISO646
4962/* 01 */   0x0001,   // START OF HEADING                           <SOH>   ISO646
4963/* 02 */   0x0002,   // START OF TEXT                              <STX>   ISO646
4964/* 03 */   0x0003,   // END OF TEXT                                <ETX>   ISO646
4965/* 04 */   0x0004,   // END OF TRANSMISSION                        <EOT>   ISO646
4966/* 05 */   0x0005,   // ENQUIRY                                    <ENQ>   ISO646
4967/* 06 */   0x0006,   // ACKNOWLEDGE                                <ACK>   ISO646
4968/* 07 */   0x0007,   // BELL                                       <BEL>   ISO646
4969/* 08 */   0x0008,   // BACKSPACE                                  <BS>   ISO646
4970/* 09 */   0x0009,   // HORIZONTAL TABULATION                      <TAB>   ISO646
4971/* 0A */   0x000A,   // LINE FEED                                  <LF>   ISO646
4972/* 0B */   0x000B,   // VERTICAL TABULATION                        <VT>   ISO646
4973/* 0C */   0x000C,   // FORM FEED                                  <FF>   ISO646
4974/* 0D */   0x000D,   // CARRIAGE RETURN                            <CR>   ISO646
4975/* 0E */   0x000E,   // SHIFT OUT                                  <SO>   ISO646
4976/* 0F */   0x000F,   // SHIFT IN                                   <SI>   ISO646
4977/* 10 */   0x0010,   // DATA LINK ESCAPE                           <DLE>   ISO646
4978/* 11 */   0x0011,   // DEVICE CONTROL ONE                         <DC1>   ISO646
4979/* 12 */   0x0012,   // DEVICE CONTROL TWO                         <DC2>   ISO646
4980/* 13 */   0x0013,   // DEVICE CONTROL THREE                       <DC3>   ISO646
4981/* 14 */   0x0014,   // DEVICE CONTROL FOUR                        <DC4>   ISO646
4982/* 15 */   0x0015,   // NEGATIVE ACKNOWLEDGE                       <NAK>   ISO646
4983/* 16 */   0x0016,   // SYNCHRONOUS IDLE                           <SYN>   ISO646
4984/* 17 */   0x0017,   // END OF TRANSMISSION BLOCK                  <ETB>   ISO646
4985/* 18 */   0x0018,   // CANCEL                                     <CAN>   ISO646
4986/* 19 */   0x0019,   // END OF MEDIUM                              <EM>   ISO646
4987/* 1A */   0x001A,   // SUBSTITUTE                                 <SUB>   ISO646
4988/* 1B */   0x001B,   // ESCAPE                                     <ESC>   ISO646
4989/* 1C */   0x001C,   // FILE SEPARATOR                             <FS>   ISO646
4990/* 1D */   0x001D,   // GROUP SEPARATOR                            <GS>   ISO646
4991/* 1E */   0x001E,   // RECORD SEPARATOR                           <RS>   ISO646
4992/* 1F */   0x001F,   // UNIT SEPARATOR                             <US>   ISO646
4993/* 20 */   0x0020,   // SPACE                                      <SP>   ISO646
4994/* 21 */   0x0021,   // EXCLAMATION MARK                           !   ASCII
4995/* 22 */   0x0022,   // QUOTATION MARK                             "   ASCII
4996/* 23 */   0x0023,   // NUMBER SIGN                                #   ASCII
4997/* 24 */   0x0024,   // DOLLAR SIGN                                $   ASCII
4998/* 25 */   0x0025,   // PERCENT SIGN                               %   ASCII
4999/* 26 */   0x0026,   // AMPERSAND                                  &   ASCII
5000/* 27 */   0x0027,   // APOSTROPHE                                 '   ASCII
5001/* 28 */   0x0028,   // LEFT PARENTHESIS                           (   ASCII
5002/* 29 */   0x0029,   // RIGHT PARENTHESIS                          )   ASCII
5003/* 2A */   0x002A,   // ASTERISK                                   *   ASCII
5004/* 2B */   0x002B,   // PLUS SIGN                                  +   ASCII
5005/* 2C */   0x002C,   // COMMA                                      ,   ASCII
5006/* 2D */   0x002D,   // HYPHEN-MINUS                               -   ASCII
5007/* 2E */   0x002E,   // FULL STOP                                  .   ASCII
5008/* 2F */   0x002F,   // SOLIDUS                                    /   ASCII
5009/* 30 */   0x0030,   // DIGIT ZERO                                 0   ASCII
5010/* 31 */   0x0031,   // DIGIT ONE                                  1   ASCII
5011/* 32 */   0x0032,   // DIGIT TWO                                  2   ASCII
5012/* 33 */   0x0033,   // DIGIT THREE                                3   ASCII
5013/* 34 */   0x0034,   // DIGIT FOUR                                 4   ASCII
5014/* 35 */   0x0035,   // DIGIT FIVE                                 5   ASCII
5015/* 36 */   0x0036,   // DIGIT SIX                                  6   ASCII
5016/* 37 */   0x0037,   // DIGIT SEVEN                                7   ASCII
5017/* 38 */   0x0038,   // DIGIT EIGHT                                8   ASCII
5018/* 39 */   0x0039,   // DIGIT NINE                                 9   ASCII
5019/* 3A */   0x003A,   // COLON                                      :   ASCII
5020/* 3B */   0x003B,   // SEMICOLON                                  ;   ASCII
5021/* 3C */   0x003C,   // LESS-THAN SIGN                             <   ASCII
5022/* 3D */   0x003D,   // EQUALS SIGN                                =   ASCII
5023/* 3E */   0x003E,   // GREATER-THAN SIGN                          >   ASCII
5024/* 3F */   0x003F,   // QUESTION MARK                              ?   ASCII
5025/* 40 */   0x0040,   // COMMERCIAL AT                              @   ASCII
5026/* 41 */   0x0041,   // LATIN CAPITAL LETTER A                     A   ASCII
5027/* 42 */   0x0042,   // LATIN CAPITAL LETTER B                     B   ASCII
5028/* 43 */   0x0043,   // LATIN CAPITAL LETTER C                     C   ASCII
5029/* 44 */   0x0044,   // LATIN CAPITAL LETTER D                     D   ASCII
5030/* 45 */   0x0045,   // LATIN CAPITAL LETTER E                     E   ASCII
5031/* 46 */   0x0046,   // LATIN CAPITAL LETTER F                     F   ASCII
5032/* 47 */   0x0047,   // LATIN CAPITAL LETTER G                     G   ASCII
5033/* 48 */   0x0048,   // LATIN CAPITAL LETTER H                     H   ASCII
5034/* 49 */   0x0049,   // LATIN CAPITAL LETTER I                     I   ASCII
5035/* 4A */   0x004A,   // LATIN CAPITAL LETTER J                     J   ASCII
5036/* 4B */   0x004B,   // LATIN CAPITAL LETTER K                     K   ASCII
5037/* 4C */   0x004C,   // LATIN CAPITAL LETTER L                     L   ASCII
5038/* 4D */   0x004D,   // LATIN CAPITAL LETTER M                     M   ASCII
5039/* 4E */   0x004E,   // LATIN CAPITAL LETTER N                     N   ASCII
5040/* 4F */   0x004F,   // LATIN CAPITAL LETTER O                     O   ASCII
5041/* 50 */   0x0050,   // LATIN CAPITAL LETTER P                     P   ASCII
5042/* 51 */   0x0051,   // LATIN CAPITAL LETTER Q                     Q   ASCII
5043/* 52 */   0x0052,   // LATIN CAPITAL LETTER R                     R   ASCII
5044/* 53 */   0x0053,   // LATIN CAPITAL LETTER S                     S   ASCII
5045/* 54 */   0x0054,   // LATIN CAPITAL LETTER T                     T   ASCII
5046/* 55 */   0x0055,   // LATIN CAPITAL LETTER U                     U   ASCII
5047/* 56 */   0x0056,   // LATIN CAPITAL LETTER V                     V   ASCII
5048/* 57 */   0x0057,   // LATIN CAPITAL LETTER W                     W   ASCII
5049/* 58 */   0x0058,   // LATIN CAPITAL LETTER X                     X   ASCII
5050/* 59 */   0x0059,   // LATIN CAPITAL LETTER Y                     Y   ASCII
5051/* 5A */   0x005A,   // LATIN CAPITAL LETTER Z                     Z   ASCII
5052/* 5B */   0x005B,   // LEFT SQUARE BRACKET                        [   ASCII
5053/* 5C */   0x005C,   // REVERSE SOLIDUS                            \   ASCII
5054/* 5D */   0x005D,   // RIGHT SQUARE BRACKET                       ]   ASCII
5055/* 5E */   0x005E,   // CIRCUMFLEX ACCENT                          ^   ASCII
5056/* 5F */   0x005F,   // LOW LINE                                   _   ASCII
5057/* 60 */   0x0060,   // GRAVE ACCENT                               `   ASCII
5058/* 61 */   0x0061,   // LATIN SMALL LETTER A                       a   ASCII
5059/* 62 */   0x0062,   // LATIN SMALL LETTER B                       b   ASCII
5060/* 63 */   0x0063,   // LATIN SMALL LETTER C                       c   ASCII
5061/* 64 */   0x0064,   // LATIN SMALL LETTER D                       d   ASCII
5062/* 65 */   0x0065,   // LATIN SMALL LETTER E                       e   ASCII
5063/* 66 */   0x0066,   // LATIN SMALL LETTER F                       f   ASCII
5064/* 67 */   0x0067,   // LATIN SMALL LETTER G                       g   ASCII
5065/* 68 */   0x0068,   // LATIN SMALL LETTER H                       h   ASCII
5066/* 69 */   0x0069,   // LATIN SMALL LETTER I                       i   ASCII
5067/* 6A */   0x006A,   // LATIN SMALL LETTER J                       j   ASCII
5068/* 6B */   0x006B,   // LATIN SMALL LETTER K                       k   ASCII
5069/* 6C */   0x006C,   // LATIN SMALL LETTER L                       l   ASCII
5070/* 6D */   0x006D,   // LATIN SMALL LETTER M                       m   ASCII
5071/* 6E */   0x006E,   // LATIN SMALL LETTER N                       n   ASCII
5072/* 6F */   0x006F,   // LATIN SMALL LETTER O                       o   ASCII
5073/* 70 */   0x0070,   // LATIN SMALL LETTER P                       p   ASCII
5074/* 71 */   0x0071,   // LATIN SMALL LETTER Q                       q   ASCII
5075/* 72 */   0x0072,   // LATIN SMALL LETTER R                       r   ASCII
5076/* 73 */   0x0073,   // LATIN SMALL LETTER S                       s   ASCII
5077/* 74 */   0x0074,   // LATIN SMALL LETTER T                       t   ASCII
5078/* 75 */   0x0075,   // LATIN SMALL LETTER U                       u   ASCII
5079/* 76 */   0x0076,   // LATIN SMALL LETTER V                       v   ASCII
5080/* 77 */   0x0077,   // LATIN SMALL LETTER W                       w   ASCII
5081/* 78 */   0x0078,   // LATIN SMALL LETTER X                       x   ASCII
5082/* 79 */   0x0079,   // LATIN SMALL LETTER Y                       y   ASCII
5083/* 7A */   0x007A,   // LATIN SMALL LETTER Z                       z   ASCII
5084/* 7B */   0x007B,   // LEFT CURLY BRACKET                         {   ASCII
5085/* 7C */   0x007C,   // VERTICAL LINE                              |   ASCII
5086/* 7D */   0x007D,   // RIGHT CURLY BRACKET                        }   ASCII
5087/* 7E */   0x007E,   // TILDE                                      ~   ASCII
5088/* 7F */   0x007F,   // DELETE                                     <DEL>   ISO646
5089/* 80 */   0x00C7,   // LATIN CAPITAL LETTER C WITH CEDILLA        Ç   CP437,CP850
5090/* 81 */   0x00FC,   // LATIN SMALL LETTER U WITH DIAERESIS        ü   CP437,CP850
5091/* 82 */   0x00E9,   // LATIN SMALL LETTER E WITH ACUTE            é   CP437,CP850
5092/* 83 */   0x00E2,   // LATIN SMALL LETTER A WITH CIRCUMFLEX       â   CP437,CP850
5093/* 84 */   0x00E4,   // LATIN SMALL LETTER A WITH DIAERESIS        ä   CP437,CP850
5094/* 85 */   0x00E0,   // LATIN SMALL LETTER A WITH GRAVE            à   CP437,CP850
5095/* 86 */   0x00E5,   // LATIN SMALL LETTER A WITH RING ABOVE       å   CP437,CP850
5096/* 87 */   0x00E7,   // LATIN SMALL LETTER C WITH CEDILLA          ç   CP437,CP850
5097/* 88 */   0x00EA,   // LATIN SMALL LETTER E WITH CIRCUMFLEX       ê   CP437,CP850
5098/* 89 */   0x00EB,   // LATIN SMALL LETTER E WITH DIAERESIS        ë   CP437,CP850
5099/* 8A */   0x00E8,   // LATIN SMALL LETTER E WITH GRAVE            è   CP437,CP850
5100/* 8B */   0x00EF,   // LATIN SMALL LETTER I WITH DIAERESIS        ï   CP437,CP850
5101/* 8C */   0x00EE,   // LATIN SMALL LETTER I WITH CIRCUMFLEX       î   CP437,CP850
5102/* 8D */   0x00EC,   // LATIN SMALL LETTER I WITH GRAVE            ì   CP437,CP850
5103/* 8E */   0x00C4,   // LATIN CAPITAL LETTER A WITH DIAERESIS      Ä   CP437,CP850
5104/* 8F */   0x00C5,   // LATIN CAPITAL LETTER A WITH RING ABOVE     Å   CP437,CP850
5105/* 90 */   0x00C9,   // LATIN CAPITAL LETTER E WITH ACUTE          É   CP437,CP850
5106/* 91 */   0x00E6,   // LATIN SMALL LETTER AE                      æ   CP437,CP850
5107/* 92 */   0x00C6,   // LATIN CAPITAL LETTER AE                    Æ   CP437,CP850
5108/* 93 */   0x00F4,   // LATIN SMALL LETTER O WITH CIRCUMFLEX       ô   CP437,CP850
5109/* 94 */   0x00F6,   // LATIN SMALL LETTER O WITH DIAERESIS        ö   CP437,CP850
5110/* 95 */   0x00F2,   // LATIN SMALL LETTER O WITH GRAVE            ò   CP437,CP850
5111/* 96 */   0x00FB,   // LATIN SMALL LETTER U WITH CIRCUMFLEX       û   CP437,CP850
5112/* 97 */   0x00F9,   // LATIN SMALL LETTER U WITH GRAVE            ù   CP437,CP850
5113/* 98 */   0x00FF,   // LATIN SMALL LETTER Y WITH DIAERESIS        ÿ   CP437,CP850
5114/* 99 */   0x00D6,   // LATIN CAPITAL LETTER O WITH DIAERESIS      Ö   CP437,CP850
5115/* 9A */   0x00DC,   // LATIN CAPITAL LETTER U WITH DIAERESIS      Ü   CP437,CP850
5116/* 9B */   0x00A2,   // CENT SIGN                                  ¢   CP437
5117/* 9C */   0x00A3,   // POUND SIGN                                 £   CP437,CP850
5118/* 9D */   0x00A5,   // YEN SIGN                                   ¥   CP437
5119/* 9E */   0x00DF,   // LATIN SMALL LETTER SHARP S                 ß   AtariST
5120/* 9F */   0x0192,   // LATIN SMALL LETTER F WITH HOOK             ƒ   CP437,CP850
5121/* A0 */   0x00E1,   // LATIN SMALL LETTER A WITH ACUTE            á   CP437,CP850
5122/* A1 */   0x00ED,   // LATIN SMALL LETTER I WITH ACUTE            í   CP437,CP850
5123/* A2 */   0x00F3,   // LATIN SMALL LETTER O WITH ACUTE            ó   CP437,CP850
5124/* A3 */   0x00FA,   // LATIN SMALL LETTER U WITH ACUTE            ú   CP437,CP850
5125/* A4 */   0x00F1,   // LATIN SMALL LETTER N WITH TILDE            ñ   CP437,CP850
5126/* A5 */   0x00D1,   // LATIN CAPITAL LETTER N WITH TILDE          Ñ   CP437,CP850
5127/* A6 */   0x00AA,   // FEMININE ORDINAL INDICATOR                 ª   CP437,CP850
5128/* A7 */   0x00BA,   // MASCULINE ORDINAL INDICATOR                º   CP437,CP850
5129/* A8 */   0x00BF,   // INVERTED QUESTION MARK                     ¿   CP437,CP850
5130/* A9 */   0x2310,   // REVERSED NOT SIGN                          ⌐   CP437
5131/* AA */   0x00AC,   // NOT SIGN                                   ¬   CP437,CP850
5132/* AB */   0x00BD,   // VULGAR FRACTION ONE HALF                   ½   CP437,CP850
5133/* AC */   0x00BC,   // VULGAR FRACTION ONE QUARTER                ¼   CP437,CP850
5134/* AD */   0x00A1,   // INVERTED EXCLAMATION MARK                  ¡   CP437,CP850
5135/* AE */   0x00AB,   // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK  «   CP437,CP850
5136/* AF */   0x00BB,   // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK,   // »   CP437,CP850
5137/* B0 */   0x00E3,   // LATIN SMALL LETTER A WITH TILDE            ã   AtariST
5138/* B1 */   0x00F5,   // LATIN SMALL LETTER O WITH TILDE            õ   AtariST
5139/* B2 */   0x00D8,   // LATIN CAPITAL LETTER O WITH STROKE         Ø   AtariST
5140/* B3 */   0x00F8,   // LATIN SMALL LETTER O WITH STROKE           ø   AtariST
5141/* B4 */   0x0153,   // LATIN SMALL LIGATURE OE                    œ   AtariST
5142/* B5 */   0x0152,   // LATIN CAPITAL LIGATURE OE                  Œ   AtariST
5143/* B6 */   0x00C0,   // LATIN CAPITAL LETTER A WITH GRAVE          À   AtariST
5144/* B7 */   0x00C3,   // LATIN CAPITAL LETTER A WITH TILDE          à  AtariST
5145/* B8 */   0x00D5,   // LATIN CAPITAL LETTER O WITH TILDE          Õ   AtariST
5146/* B9 */   0x00A8,   // DIAERESIS                                  ¨   AtariST
5147/* BA */   0x00B4,   // ACUTE ACCENT                               ´   AtariST
5148/* BB */   0x2020,   // DAGGER                                     †   AtariST
5149/* BC */   0x00B6,   // PILCROW SIGN                               ¶   AtariST
5150/* BD */   0x00A9,   // COPYRIGHT SIGN                             ©   AtariST
5151/* BE */   0x00AE,   // REGISTERED SIGN                            ®   AtariST
5152/* BF */   0x2122,   // TRADE MARK SIGN                            ™   AtariST
5153/* C0 */   0x0133,   // LATIN SMALL LIGATURE IJ                    ij   AtariST
5154/* C1 */   0x0132,   // LATIN CAPITAL LIGATURE IJ                  IJ   AtariST
5155/* C2 */   0x05D0,   // HEBREW LETTER ALEF                         א   AtariST
5156/* C3 */   0x05D1,   // HEBREW LETTER BET                          ב   AtariST
5157/* C4 */   0x05D2,   // HEBREW LETTER GIMEL                        ג   AtariST
5158/* C5 */   0x05D3,   // HEBREW LETTER DALET                        ד   AtariST
5159/* C6 */   0x05D4,   // HEBREW LETTER HE                           ה   AtariST
5160/* C7 */   0x05D5,   // HEBREW LETTER VAV                          ו   AtariST
5161/* C8 */   0x05D6,   // HEBREW LETTER ZAYIN                        ז   AtariST
5162/* C9 */   0x05D7,   // HEBREW LETTER HET                          ח   AtariST
5163/* CA */   0x05D8,   // HEBREW LETTER TET                          ט   AtariST
5164/* CB */   0x05D9,   // HEBREW LETTER YOD                          י   AtariST
5165/* CC */   0x05DB,   // HEBREW LETTER KAF                          כ   AtariST
5166/* CD */   0x05DC,   // HEBREW LETTER LAMED                        ל   AtariST
5167/* CE */   0x05DE,   // HEBREW LETTER MEM                          מ   AtariST
5168/* CF */   0x05E0,   // HEBREW LETTER NUN                          נ   AtariST
5169/* D0 */   0x05E1,   // HEBREW LETTER SAMEKH                       ס   AtariST
5170/* D1 */   0x05E2,   // HEBREW LETTER AYIN                         ע   AtariST
5171/* D2 */   0x05E4,   // HEBREW LETTER PE                           פ   AtariST
5172/* D3 */   0x05E6,   // HEBREW LETTER TSADI                        צ   AtariST
5173/* D4 */   0x05E7,   // HEBREW LETTER QOF                          ק   AtariST
5174/* D5 */   0x05E8,   // HEBREW LETTER RESH                         ר   AtariST
5175/* D6 */   0x05E9,   // HEBREW LETTER SHIN                         ש   AtariST
5176/* D7 */   0x05EA,   // HEBREW LETTER TAV                          ת   AtariST
5177/* D8 */   0x05DF,   // HEBREW LETTER FINAL NUN                    ן   AtariST
5178/* D9 */   0x05DA,   // HEBREW LETTER FINAL KAF                    ך   AtariST
5179/* DA */   0x05DD,   // HEBREW LETTER FINAL MEM                    ם   AtariST
5180/* DB */   0x05E3,   // HEBREW LETTER FINAL PE                     ף   AtariST
5181/* DC */   0x05E5,   // HEBREW LETTER FINAL TSADI                  ץ   AtariST
5182/* DD */   0x00A7,   // SECTION SIGN                               §   AtariST
5183/* DE */   0x2227,   // LOGICAL AND                                ∧   AtariST
5184/* DF */   0x221E,   // INFINITY                                   ∞   AtariST
5185/* E0 */   0x03B1,   // GREEK SMALL LETTER ALPHA                   α   CP437,CP850
5186/* E1 */   0x03B2,   // GREEK SMALL LETTER BETA                    ß   AtariST
5187/* E2 */   0x0393,   // GREEK CAPITAL LETTER GAMMA                 Γ   CP437,CP850
5188/* E3 */   0x03C0,   // GREEK SMALL LETTER PI                      π   CP437,CP850
5189/* E4 */   0x03A3,   // GREEK CAPITAL LETTER SIGMA                 Σ   CP437,CP850
5190/* E5 */   0x03C3,   // GREEK SMALL LETTER SIGMA                   σ   CP437,CP850
5191/* E6 */   0x00B5,   // MICRO SIGN                                 µ   CP437,CP850
5192/* E7 */   0x03C4,   // GREEK SMALL LETTER TAU                     τ   CP437,CP850
5193/* E8 */   0x03A6,   // GREEK CAPITAL LETTER PHI                   Φ   CP437,CP850
5194/* E9 */   0x0398,   // GREEK CAPITAL LETTER THETA                 Θ   CP437,CP850
5195/* EA */   0x03A9,   // GREEK CAPITAL LETTER OMEGA                 Ω   CP437,CP850
5196/* EB */   0x03B4,   // GREEK SMALL LETTER DELTA                   δ   CP437,CP850
5197/* EC */   0x222E,   // CONTOUR INTEGRAL                           ∮   AtariST
5198/* ED */   0x03C6,   // GREEK SMALL LETTER PHI                     φ   CP437,CP850
5199/* EE */   0x2208,   // ELEMENT OF SIGN                            ∈   AtariST
5200/* EF */   0x2229,   // INTERSECTION                               ∩   CP437,CP850
5201/* F0 */   0x2261,   // IDENTICAL TO                               ≡   CP437,CP850
5202/* F1 */   0x00B1,   // PLUS-MINUS SIGN                            ±   CP437,CP850
5203/* F2 */   0x2265,   // GREATER-THAN OR EQUAL TO                   ≥   CP437,CP850
5204/* F3 */   0x2264,   // LESS-THAN OR EQUAL TO                      ≤   CP437,CP850
5205/* F4 */   0x2320,   // TOP HALF INTEGRAL                          ⌠   CP437,CP850
5206/* F5 */   0x2321,   // BOTTOM HALF INTEGRAL                       ⌡   CP437,CP850
5207/* F6 */   0x00F7,   // DIVISION SIGN                              ÷   CP437,CP850
5208/* F7 */   0x2248,   // ALMOST EQUAL TO                            ≈   CP437,CP850
5209/* F8 */   0x00B0,   // DEGREE SIGN                                °   CP437,CP850
5210/* F9 */   0x2219,   // BULLET OPERATOR                            ∙   CP437,CP850
5211/* FA */   0x00B7,   // MIDDLE DOT                                 ·   CP437,CP850
5212/* FB */   0x221A,   // SQUARE ROOT                                √   CP437,CP850
5213/* FC */   0x207F,   // SUPERSCRIPT LATIN SMALL LETTER N           ⁿ   CP437,CP850
5214/* FD */   0x00B2,   // SUPERSCRIPT TWO                            ²   CP437,CP850
5215/* FE */   0x00B3,   // SUPERSCRIPT THREE                          ³   AtariST
5216/* FF */   0x00AF   // MACRON                                     ¯   AtariST
5217};
5218
5219/***************************************************************************
5220# File encoding:    UTF-8
5221# Name:             ZX-81 to Unicode
5222# Date:             2013 November 12
5223# Authors:          Jürgen Buchmüller <pullmoll AT t-online.de>
5224#
5225# Copyright (c) 2013 The MAME team
5226#
5227# General notes:
5228# This table contains the data the Unicode values for
5229# ZX-81 characters map into Unicode.
5230#
5231***************************************************************************/
5232static const unicode_char lookup_zx81[256] = {
5233/* 00 */   0x0020,   // SPACE
5234/* 01 */   0x2598,   // TOP, LEFT BLOCK
5235/* 02 */   0x259d,   // TOP, RIGHT BLOCK
5236/* 03 */   0x2580,   // TOP TWO BLOCKS
5237/* 04 */   0x2596,   // BOTTOM LEFT BLOCK
5238/* 05 */   0x258c,   // LEFT TWO BLOCKS
5239/* 06 */   0x259e,   // BOTTOM LEFT and TOP RIGHT BLOCK
5240/* 07 */   0x259b,   // ALL BLOCKS, EXCEPT BOTTOM RIGHT
5241/* 08 */   0xfffd,   // CHECKERED
5242/* 09 */   0xfffd,   // CHECKERED BOTTOM HALF
5243/* 0a */   0xfffd,   // CHECKERED TOP HALF
5244/* 0b */   0x0022,   // QUOTATION MARK
5245/* 0c */   0x00a3,   // POUND SIGN
5246/* 0d */   0x0024,   // DOLLAR SIGN
5247/* 0e */   0x002a,   // COLON
5248/* 0f */   0x003f,   // QUESTION MARK
5249/* 10 */   0x0028,   // LEFT PARENTHESIS
5250/* 11 */   0x0029,   // RIGHT PARENTHESIS
5251/* 12 */   0x003e,   // GREATER-THAN SIGN
5252/* 13 */   0x003c,   // LESS-THAN SIGN
5253/* 14 */   0x003d,   // EQUALS SIGN
5254/* 15 */   0x002b,   // PLUS SIGN
5255/* 16 */   0x002d,   // MINUS SIGN
5256/* 17 */   0x002a,   // ASTERISK
5257/* 18 */   0x002f,   // SLASH
5258/* 19 */   0x003b,   // SEMICOLON
5259/* 1a */   0x002c,   // COMMA
5260/* 1b */   0x002e,   // PERIOD
5261/* 1c */   0x0030,   // DIGIT ZERO
5262/* 1d */   0x0031,   // DIGIT ONE
5263/* 1e */   0x0032,   // DIGIT TWO
5264/* 1f */   0x0033,   // DIGIT THREE
5265/* 20 */   0x0034,   // DIGIT FOUR
5266/* 21 */   0x0035,   // DIGIT FIVE
5267/* 22 */   0x0036,   // DIGIT SIX
5268/* 23 */   0x0037,   // DIGIT SEVEN
5269/* 24 */   0x0038,   // DIGIT EIGHT
5270/* 25 */   0x0039,   // DIGIT NINE
5271/* 26 */   0x0041,   // LATIN CAPITAL LETTER A
5272/* 27 */   0x0042,   // LATIN CAPITAL LETTER B
5273/* 28 */   0x0043,   // LATIN CAPITAL LETTER C
5274/* 29 */   0x0044,   // LATIN CAPITAL LETTER D
5275/* 2a */   0x0045,   // LATIN CAPITAL LETTER E
5276/* 2b */   0x0046,   // LATIN CAPITAL LETTER F
5277/* 2c */   0x0047,   // LATIN CAPITAL LETTER G
5278/* 2d */   0x0048,   // LATIN CAPITAL LETTER H
5279/* 2e */   0x0049,   // LATIN CAPITAL LETTER I
5280/* 2f */   0x004a,   // LATIN CAPITAL LETTER J
5281/* 30 */   0x004b,   // LATIN CAPITAL LETTER K
5282/* 31 */   0x004c,   // LATIN CAPITAL LETTER L
5283/* 32 */   0x004d,   // LATIN CAPITAL LETTER M
5284/* 33 */   0x004e,   // LATIN CAPITAL LETTER N
5285/* 34 */   0x004f,   // LATIN CAPITAL LETTER O
5286/* 35 */   0x0050,   // LATIN CAPITAL LETTER P
5287/* 36 */   0x0051,   // LATIN CAPITAL LETTER Q
5288/* 37 */   0x0052,   // LATIN CAPITAL LETTER R
5289/* 38 */   0x0053,   // LATIN CAPITAL LETTER S
5290/* 39 */   0x0054,   // LATIN CAPITAL LETTER T
5291/* 3a */   0x0055,   // LATIN CAPITAL LETTER U
5292/* 3b */   0x0056,   // LATIN CAPITAL LETTER V
5293/* 3c */   0x0057,   // LATIN CAPITAL LETTER W
5294/* 3d */   0x0058,   // LATIN CAPITAL LETTER X
5295/* 3e */   0x0059,   // LATIN CAPITAL LETTER Y
5296/* 3f */   0x005a,   // LATIN CAPITAL LETTER Z
5297/* 40 */   0xfffd,   // INVALID
5298/* 41 */   0xfffd,   // INVALID
5299/* 42 */   0xfffd,   // INVALID
5300/* 43 */   0xfffd,   // INVALID
5301/* 44 */   0xfffd,   // INVALID
5302/* 45 */   0xfffd,   // INVALID
5303/* 46 */   0xfffd,   // INVALID
5304/* 47 */   0xfffd,   // INVALID
5305/* 48 */   0xfffd,   // INVALID
5306/* 49 */   0xfffd,   // INVALID
5307/* 4a */   0xfffd,   // INVALID
5308/* 4b */   0xfffd,   // INVALID
5309/* 4c */   0xfffd,   // INVALID
5310/* 4d */   0xfffd,   // INVALID
5311/* 4e */   0xfffd,   // INVALID
5312/* 4f */   0xfffd,   // INVALID
5313/* 50 */   0xfffd,   // INVALID
5314/* 51 */   0xfffd,   // INVALID
5315/* 52 */   0xfffd,   // INVALID
5316/* 53 */   0xfffd,   // INVALID
5317/* 54 */   0xfffd,   // INVALID
5318/* 55 */   0xfffd,   // INVALID
5319/* 56 */   0xfffd,   // INVALID
5320/* 57 */   0xfffd,   // INVALID
5321/* 58 */   0xfffd,   // INVALID
5322/* 59 */   0xfffd,   // INVALID
5323/* 5a */   0xfffd,   // INVALID
5324/* 5b */   0xfffd,   // INVALID
5325/* 5c */   0xfffd,   // INVALID
5326/* 5d */   0xfffd,   // INVALID
5327/* 5e */   0xfffd,   // INVALID
5328/* 5f */   0xfffd,   // INVALID
5329/* 60 */   0xfffd,   // INVALID
5330/* 61 */   0xfffd,   // INVALID
5331/* 62 */   0xfffd,   // INVALID
5332/* 63 */   0xfffd,   // INVALID
5333/* 64 */   0xfffd,   // INVALID
5334/* 65 */   0xfffd,   // INVALID
5335/* 66 */   0xfffd,   // INVALID
5336/* 67 */   0xfffd,   // INVALID
5337/* 68 */   0xfffd,   // INVALID
5338/* 69 */   0xfffd,   // INVALID
5339/* 6a */   0xfffd,   // INVALID
5340/* 6b */   0xfffd,   // INVALID
5341/* 6c */   0xfffd,   // INVALID
5342/* 6d */   0xfffd,   // INVALID
5343/* 6e */   0xfffd,   // INVALID
5344/* 6f */   0xfffd,   // INVALID
5345/* 70 */   0xfffd,   // INVALID
5346/* 71 */   0xfffd,   // INVALID
5347/* 72 */   0xfffd,   // INVALID
5348/* 73 */   0xfffd,   // INVALID
5349/* 74 */   0xfffd,   // INVALID
5350/* 75 */   0xfffd,   // INVALID
5351/* 76 */   0xfffd,   // INVALID
5352/* 77 */   0xfffd,   // INVALID
5353/* 78 */   0xfffd,   // INVALID
5354/* 79 */   0xfffd,   // INVALID
5355/* 7a */   0xfffd,   // INVALID
5356/* 7b */   0xfffd,   // INVALID
5357/* 7c */   0xfffd,   // INVALID
5358/* 7d */   0xfffd,   // INVALID
5359/* 7e */   0xfffd,   // INVALID
5360/* 7f */   0xfffd,   // INVALID
5361/* 80 */   0x2588,   // [INVERSE] SPACE
5362/* 81 */   0x259f,   // ALL, EXCEPT TOP LEFT BLOCK
5363/* 82 */   0x2599,   // ALL, EXCEPT TOP RIGHT BLOCK
5364/* 83 */   0x2584,   // BOTTOM TWO BLOCKS
5365/* 84 */   0x259c,   // ALL, EXCEPT BOTTOM LEFT BLOCK
5366/* 85 */   0x2590,   // RIGHT TWO BLOCKS
5367/* 86 */   0x259a,   // TOP LEFT and BOTTOM RIGHT BLOCK
5368/* 87 */   0x2597,   // BOTTOM RIGHT BLOCK
5369/* 88 */   0xfffd,   // [INVERSE] CHECKERED
5370/* 89 */   0xfffd,   // CHECKERED TOP HALF, BLOCK BOTTOM
5371/* 8a */   0xfffd,   // CHECKERED BOTTOM HALF, BLOCK TOP
5372/* 8b */   0x0022,   // [INVERSE] QUOTATION MARK
5373/* 8c */   0x00a3,   // [INVERSE] POUND SIGN
5374/* 8d */   0x0024,   // [INVERSE] DOLLAR SIGN
5375/* 8e */   0x002a,   // [INVERSE] COLON
5376/* 8f */   0x003f,   // [INVERSE] QUESTION MARK
5377/* 90 */   0x0028,   // [INVERSE] LEFT PARENTHESIS
5378/* 91 */   0x0029,   // [INVERSE] RIGHT PARENTHESIS
5379/* 92 */   0x003e,   // [INVERSE] GREATER THAN
5380/* 93 */   0x003c,   // [INVERSE] LESS THAN
5381/* 94 */   0x003d,   // [INVERSE] EQUALS SIGN
5382/* 95 */   0x002b,   // [INVERSE] PLUS SIGN
5383/* 96 */   0x002d,   // [INVERSE] MINUS SIGN
5384/* 97 */   0x002a,   // [INVERSE] ASTERISK
5385/* 98 */   0x002f,   // [INVERSE] SLASH
5386/* 99 */   0x003b,   // [INVERSE] SEMICOLON
5387/* 9a */   0x002c,   // [INVERSE] COMMA
5388/* 9b */   0x002e,   // [INVERSE] PERIOD
5389/* 9c */   0x0030,   // [INVERSE] DIGIT ZERO
5390/* 9d */   0x0031,   // [INVERSE] DIGIT ONE
5391/* 9e */   0x0032,   // [INVERSE] DIGIT TWO
5392/* 9f */   0x0033,   // [INVERSE] DIGIT THREE
5393/* a0 */   0x0034,   // [INVERSE] DIGIT FOUR
5394/* a1 */   0x0035,   // [INVERSE] DIGIT FIVE
5395/* a2 */   0x0036,   // [INVERSE] DIGIT SIX
5396/* a3 */   0x0037,   // [INVERSE] DIGIT SEVEN
5397/* a4 */   0x0038,   // [INVERSE] DIGIT EIGHT
5398/* a5 */   0x0039,   // [INVERSE] DIGIT NINE
5399/* a6 */   0x0041,   // [INVERSE] LATIN CAPITAL LETTER A
5400/* a7 */   0x0042,   // [INVERSE] LATIN CAPITAL LETTER B
5401/* a8 */   0x0043,   // [INVERSE] LATIN CAPITAL LETTER C
5402/* a9 */   0x0044,   // [INVERSE] LATIN CAPITAL LETTER D
5403/* aa */   0x0045,   // [INVERSE] LATIN CAPITAL LETTER E
5404/* ab */   0x0046,   // [INVERSE] LATIN CAPITAL LETTER F
5405/* ac */   0x0047,   // [INVERSE] LATIN CAPITAL LETTER G
5406/* ad */   0x0048,   // [INVERSE] LATIN CAPITAL LETTER H
5407/* ae */   0x0049,   // [INVERSE] LATIN CAPITAL LETTER I
5408/* af */   0x004a,   // [INVERSE] LATIN CAPITAL LETTER J
5409/* b0 */   0x004b,   // [INVERSE] LATIN CAPITAL LETTER K
5410/* b1 */   0x004c,   // [INVERSE] LATIN CAPITAL LETTER L
5411/* b2 */   0x004d,   // [INVERSE] LATIN CAPITAL LETTER M
5412/* b3 */   0x004e,   // [INVERSE] LATIN CAPITAL LETTER N
5413/* b4 */   0x004f,   // [INVERSE] LATIN CAPITAL LETTER O
5414/* b5 */   0x0050,   // [INVERSE] LATIN CAPITAL LETTER P
5415/* b6 */   0x0051,   // [INVERSE] LATIN CAPITAL LETTER Q
5416/* b7 */   0x0052,   // [INVERSE] LATIN CAPITAL LETTER R
5417/* b8 */   0x0053,   // [INVERSE] LATIN CAPITAL LETTER S
5418/* b9 */   0x0054,   // [INVERSE] LATIN CAPITAL LETTER T
5419/* ba */   0x0055,   // [INVERSE] LATIN CAPITAL LETTER U
5420/* bb */   0x0056,   // [INVERSE] LATIN CAPITAL LETTER V
5421/* bc */   0x0057,   // [INVERSE] LATIN CAPITAL LETTER W
5422/* bd */   0x0058,   // [INVERSE] LATIN CAPITAL LETTER X
5423/* be */   0x0059,   // [INVERSE] LATIN CAPITAL LETTER Y
5424/* bf */   0x005a,   // [INVERSE] LATIN CAPITAL LETTER Z
5425/* c0 */   0xfffd,   // INVALID
5426/* c1 */   0xfffd,   // INVALID
5427/* c2 */   0xfffd,   // INVALID
5428/* c3 */   0xfffd,   // INVALID
5429/* c4 */   0xfffd,   // INVALID
5430/* c5 */   0xfffd,   // INVALID
5431/* c6 */   0xfffd,   // INVALID
5432/* c7 */   0xfffd,   // INVALID
5433/* c8 */   0xfffd,   // INVALID
5434/* c9 */   0xfffd,   // INVALID
5435/* ca */   0xfffd,   // INVALID
5436/* cb */   0xfffd,   // INVALID
5437/* cc */   0xfffd,   // INVALID
5438/* cd */   0xfffd,   // INVALID
5439/* ce */   0xfffd,   // INVALID
5440/* cf */   0xfffd,   // INVALID
5441/* d0 */   0xfffd,   // INVALID
5442/* d1 */   0xfffd,   // INVALID
5443/* d2 */   0xfffd,   // INVALID
5444/* d3 */   0xfffd,   // INVALID
5445/* d4 */   0xfffd,   // INVALID
5446/* d5 */   0xfffd,   // INVALID
5447/* d6 */   0xfffd,   // INVALID
5448/* d7 */   0xfffd,   // INVALID
5449/* d8 */   0xfffd,   // INVALID
5450/* d9 */   0xfffd,   // INVALID
5451/* da */   0xfffd,   // INVALID
5452/* db */   0xfffd,   // INVALID
5453/* dc */   0xfffd,   // INVALID
5454/* dd */   0xfffd,   // INVALID
5455/* de */   0xfffd,   // INVALID
5456/* df */   0xfffd,   // INVALID
5457/* e0 */   0xfffd,   // INVALID
5458/* e1 */   0xfffd,   // INVALID
5459/* e2 */   0xfffd,   // INVALID
5460/* e3 */   0xfffd,   // INVALID
5461/* e4 */   0xfffd,   // INVALID
5462/* e5 */   0xfffd,   // INVALID
5463/* e6 */   0xfffd,   // INVALID
5464/* e7 */   0xfffd,   // INVALID
5465/* e8 */   0xfffd,   // INVALID
5466/* e9 */   0xfffd,   // INVALID
5467/* ea */   0xfffd,   // INVALID
5468/* eb */   0xfffd,   // INVALID
5469/* ec */   0xfffd,   // INVALID
5470/* ed */   0xfffd,   // INVALID
5471/* ee */   0xfffd,   // INVALID
5472/* ef */   0xfffd,   // INVALID
5473/* f0 */   0xfffd,   // INVALID
5474/* f1 */   0xfffd,   // INVALID
5475/* f2 */   0xfffd,   // INVALID
5476/* f3 */   0xfffd,   // INVALID
5477/* f4 */   0xfffd,   // INVALID
5478/* f5 */   0xfffd,   // INVALID
5479/* f6 */   0xfffd,   // INVALID
5480/* f7 */   0xfffd,   // INVALID
5481/* f8 */   0xfffd,   // INVALID
5482/* f9 */   0xfffd,   // INVALID
5483/* fa */   0xfffd,   // INVALID
5484/* fb */   0xfffd,   // INVALID
5485/* fc */   0xfffd,   // INVALID
5486/* fd */   0xfffd,   // INVALID
5487/* fe */   0xfffd,   // INVALID
5488/* ff */   0xfffd   // INVALID
5489};
5490
5491/***************************************************************************
5492#
5493#   Name:             KOI8-R (RFC1489) to Unicode
5494#   Unicode version:  3.0
5495#   Table version:    1.0
5496#   Table format:     Format A
5497#   Date:             18 August 1999
5498#   Authors:          Helmut Richter <richter@lrz.de>
5499#
5500#   Copyright (c) 1991-1999 Unicode, Inc.  All Rights reserved.
5501#
5502#   This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
5503#   No claims are made as to fitness for any particular purpose.  No
5504#   warranties of any kind are expressed or implied.  The recipient
5505#   agrees to determine applicability of information provided.  If this
5506#   file has been provided on optical media by Unicode, Inc., the sole
5507#   remedy for any claim will be exchange of defective media within 90
5508#   days of receipt.
5509#
5510#   Unicode, Inc. hereby grants the right to freely use the information
5511#   supplied in this file in the creation of products supporting the
5512#   Unicode Standard, and to make copies of this file in any form for
5513#   internal or external distribution as long as this notice remains
5514#   attached.
5515#
5516#   General notes:
5517#
5518#   This table contains the data the Unicode Consortium has on how
5519#       KOI8-R characters map into Unicode. The underlying document is the
5520#   mapping described in RFC 1489. No statements are made as to whether
5521#   this mapping is the same as the mapping defined as "Code Page 878"
5522#   with some vendors.
5523#
5524#   Format:  Three tab-separated columns
5525#       Column #1 is the KOI8-R code (in hex as 0xXX)
5526#       Column #2 is the Unicode (in hex as 0xXXXX)
5527#       Column #3 the Unicode name (follows a comment sign, '#')
5528#
5529#   The entries are in KOI8-R order.
5530#
5531#   Version history
5532#   1.0 version: created.
5533#
5534#   Any comments or problems, contact <errata@unicode.org>
5535#   Please note that <errata@unicode.org> is an archival address;
5536#   notices will be checked, but do not expect an immediate response.
5537#
5538***************************************************************************/
5539static const unicode_char lookup_koi8_r[256] = {
5540/* 00 */   0x0000,   //   NULL
5541/* 01 */   0x0001,   //   START OF HEADING
5542/* 02 */   0x0002,   //   START OF TEXT
5543/* 03 */   0x0003,   //   END OF TEXT
5544/* 04 */   0x0004,   //   END OF TRANSMISSION
5545/* 05 */   0x0005,   //   ENQUIRY
5546/* 06 */   0x0006,   //   ACKNOWLEDGE
5547/* 07 */   0x0007,   //   BELL
5548/* 08 */   0x0008,   //   BACKSPACE
5549/* 09 */   0x0009,   //   HORIZONTAL TABULATION
5550/* 0A */   0x000A,   //   LINE FEED
5551/* 0B */   0x000B,   //   VERTICAL TABULATION
5552/* 0C */   0x000C,   //   FORM FEED
5553/* 0D */   0x000D,   //   CARRIAGE RETURN
5554/* 0E */   0x000E,   //   SHIFT OUT
5555/* 0F */   0x000F,   //   SHIFT IN
5556/* 10 */   0x0010,   //   DATA LINK ESCAPE
5557/* 11 */   0x0011,   //   DEVICE CONTROL ONE
5558/* 12 */   0x0012,   //   DEVICE CONTROL TWO
5559/* 13 */   0x0013,   //   DEVICE CONTROL THREE
5560/* 14 */   0x0014,   //   DEVICE CONTROL FOUR
5561/* 15 */   0x0015,   //   NEGATIVE ACKNOWLEDGE
5562/* 16 */   0x0016,   //   SYNCHRONOUS IDLE
5563/* 17 */   0x0017,   //   END OF TRANSMISSION BLOCK
5564/* 18 */   0x0018,   //   CANCEL
5565/* 19 */   0x0019,   //   END OF MEDIUM
5566/* 1A */   0x001A,   //   SUBSTITUTE
5567/* 1B */   0x001B,   //   ESCAPE
5568/* 1C */   0x001C,   //   FILE SEPARATOR
5569/* 1D */   0x001D,   //   GROUP SEPARATOR
5570/* 1E */   0x001E,   //   RECORD SEPARATOR
5571/* 1F */   0x001F,   //   UNIT SEPARATOR
5572/* 20 */   0x0020,   //   SPACE
5573/* 21 */   0x0021,   //   EXCLAMATION MARK
5574/* 22 */   0x0022,   //   QUOTATION MARK
5575/* 23 */   0x0023,   //   NUMBER SIGN
5576/* 24 */   0x0024,   //   DOLLAR SIGN
5577/* 25 */   0x0025,   //   PERCENT SIGN
5578/* 26 */   0x0026,   //   AMPERSAND
5579/* 27 */   0x0027,   //   APOSTROPHE
5580/* 28 */   0x0028,   //   LEFT PARENTHESIS
5581/* 29 */   0x0029,   //   RIGHT PARENTHESIS
5582/* 2A */   0x002A,   //   ASTERISK
5583/* 2B */   0x002B,   //   PLUS SIGN
5584/* 2C */   0x002C,   //   COMMA
5585/* 2D */   0x002D,   //   HYPHEN-MINUS
5586/* 2E */   0x002E,   //   FULL STOP
5587/* 2F */   0x002F,   //   SOLIDUS
5588/* 30 */   0x0030,   //   DIGIT ZERO
5589/* 31 */   0x0031,   //   DIGIT ONE
5590/* 32 */   0x0032,   //   DIGIT TWO
5591/* 33 */   0x0033,   //   DIGIT THREE
5592/* 34 */   0x0034,   //   DIGIT FOUR
5593/* 35 */   0x0035,   //   DIGIT FIVE
5594/* 36 */   0x0036,   //   DIGIT SIX
5595/* 37 */   0x0037,   //   DIGIT SEVEN
5596/* 38 */   0x0038,   //   DIGIT EIGHT
5597/* 39 */   0x0039,   //   DIGIT NINE
5598/* 3A */   0x003A,   //   COLON
5599/* 3B */   0x003B,   //   SEMICOLON
5600/* 3C */   0x003C,   //   LESS-THAN SIGN
5601/* 3D */   0x003D,   //   EQUALS SIGN
5602/* 3E */   0x003E,   //   GREATER-THAN SIGN
5603/* 3F */   0x003F,   //   QUESTION MARK
5604/* 40 */   0x0040,   //   COMMERCIAL AT
5605/* 41 */   0x0041,   //   LATIN CAPITAL LETTER A
5606/* 42 */   0x0042,   //   LATIN CAPITAL LETTER B
5607/* 43 */   0x0043,   //   LATIN CAPITAL LETTER C
5608/* 44 */   0x0044,   //   LATIN CAPITAL LETTER D
5609/* 45 */   0x0045,   //   LATIN CAPITAL LETTER E
5610/* 46 */   0x0046,   //   LATIN CAPITAL LETTER F
5611/* 47 */   0x0047,   //   LATIN CAPITAL LETTER G
5612/* 48 */   0x0048,   //   LATIN CAPITAL LETTER H
5613/* 49 */   0x0049,   //   LATIN CAPITAL LETTER I
5614/* 4A */   0x004A,   //   LATIN CAPITAL LETTER J
5615/* 4B */   0x004B,   //   LATIN CAPITAL LETTER K
5616/* 4C */   0x004C,   //   LATIN CAPITAL LETTER L
5617/* 4D */   0x004D,   //   LATIN CAPITAL LETTER M
5618/* 4E */   0x004E,   //   LATIN CAPITAL LETTER N
5619/* 4F */   0x004F,   //   LATIN CAPITAL LETTER O
5620/* 50 */   0x0050,   //   LATIN CAPITAL LETTER P
5621/* 51 */   0x0051,   //   LATIN CAPITAL LETTER Q
5622/* 52 */   0x0052,   //   LATIN CAPITAL LETTER R
5623/* 53 */   0x0053,   //   LATIN CAPITAL LETTER S
5624/* 54 */   0x0054,   //   LATIN CAPITAL LETTER T
5625/* 55 */   0x0055,   //   LATIN CAPITAL LETTER U
5626/* 56 */   0x0056,   //   LATIN CAPITAL LETTER V
5627/* 57 */   0x0057,   //   LATIN CAPITAL LETTER W
5628/* 58 */   0x0058,   //   LATIN CAPITAL LETTER X
5629/* 59 */   0x0059,   //   LATIN CAPITAL LETTER Y
5630/* 5A */   0x005A,   //   LATIN CAPITAL LETTER Z
5631/* 5B */   0x005B,   //   LEFT SQUARE BRACKET
5632/* 5C */   0x005C,   //   REVERSE SOLIDUS
5633/* 5D */   0x005D,   //   RIGHT SQUARE BRACKET
5634/* 5E */   0x005E,   //   CIRCUMFLEX ACCENT
5635/* 5F */   0x005F,   //   LOW LINE
5636/* 60 */   0x0060,   //   GRAVE ACCENT
5637/* 61 */   0x0061,   //   LATIN SMALL LETTER A
5638/* 62 */   0x0062,   //   LATIN SMALL LETTER B
5639/* 63 */   0x0063,   //   LATIN SMALL LETTER C
5640/* 64 */   0x0064,   //   LATIN SMALL LETTER D
5641/* 65 */   0x0065,   //   LATIN SMALL LETTER E
5642/* 66 */   0x0066,   //   LATIN SMALL LETTER F
5643/* 67 */   0x0067,   //   LATIN SMALL LETTER G
5644/* 68 */   0x0068,   //   LATIN SMALL LETTER H
5645/* 69 */   0x0069,   //   LATIN SMALL LETTER I
5646/* 6A */   0x006A,   //   LATIN SMALL LETTER J
5647/* 6B */   0x006B,   //   LATIN SMALL LETTER K
5648/* 6C */   0x006C,   //   LATIN SMALL LETTER L
5649/* 6D */   0x006D,   //   LATIN SMALL LETTER M
5650/* 6E */   0x006E,   //   LATIN SMALL LETTER N
5651/* 6F */   0x006F,   //   LATIN SMALL LETTER O
5652/* 70 */   0x0070,   //   LATIN SMALL LETTER P
5653/* 71 */   0x0071,   //   LATIN SMALL LETTER Q
5654/* 72 */   0x0072,   //   LATIN SMALL LETTER R
5655/* 73 */   0x0073,   //   LATIN SMALL LETTER S
5656/* 74 */   0x0074,   //   LATIN SMALL LETTER T
5657/* 75 */   0x0075,   //   LATIN SMALL LETTER U
5658/* 76 */   0x0076,   //   LATIN SMALL LETTER V
5659/* 77 */   0x0077,   //   LATIN SMALL LETTER W
5660/* 78 */   0x0078,   //   LATIN SMALL LETTER X
5661/* 79 */   0x0079,   //   LATIN SMALL LETTER Y
5662/* 7A */   0x007A,   //   LATIN SMALL LETTER Z
5663/* 7B */   0x007B,   //   LEFT CURLY BRACKET
5664/* 7C */   0x007C,   //   VERTICAL LINE
5665/* 7D */   0x007D,   //   RIGHT CURLY BRACKET
5666/* 7E */   0x007E,   //   TILDE
5667/* 7F */   0x007F,   //   DELETE
5668/* 80 */   0x2500,   //   BOX DRAWINGS LIGHT HORIZONTAL
5669/* 81 */   0x2502,   //   BOX DRAWINGS LIGHT VERTICAL
5670/* 82 */   0x250C,   //   BOX DRAWINGS LIGHT DOWN AND RIGHT
5671/* 83 */   0x2510,   //   BOX DRAWINGS LIGHT DOWN AND LEFT
5672/* 84 */   0x2514,   //   BOX DRAWINGS LIGHT UP AND RIGHT
5673/* 85 */   0x2518,   //   BOX DRAWINGS LIGHT UP AND LEFT
5674/* 86 */   0x251C,   //   BOX DRAWINGS LIGHT VERTICAL AND RIGHT
5675/* 87 */   0x2524,   //   BOX DRAWINGS LIGHT VERTICAL AND LEFT
5676/* 88 */   0x252C,   //   BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
5677/* 89 */   0x2534,   //   BOX DRAWINGS LIGHT UP AND HORIZONTAL
5678/* 8A */   0x253C,   //   BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
5679/* 8B */   0x2580,   //   UPPER HALF BLOCK
5680/* 8C */   0x2584,   //   LOWER HALF BLOCK
5681/* 8D */   0x2588,   //   FULL BLOCK
5682/* 8E */   0x258C,   //   LEFT HALF BLOCK
5683/* 8F */   0x2590,   //   RIGHT HALF BLOCK
5684/* 90 */   0x2591,   //   LIGHT SHADE
5685/* 91 */   0x2592,   //   MEDIUM SHADE
5686/* 92 */   0x2593,   //   DARK SHADE
5687/* 93 */   0x2320,   //   TOP HALF INTEGRAL
5688/* 94 */   0x25A0,   //   BLACK SQUARE
5689/* 95 */   0x2219,   //   BULLET OPERATOR
5690/* 96 */   0x221A,   //   SQUARE ROOT
5691/* 97 */   0x2248,   //   ALMOST EQUAL TO
5692/* 98 */   0x2264,   //   LESS-THAN OR EQUAL TO
5693/* 99 */   0x2265,   //   GREATER-THAN OR EQUAL TO
5694/* 9A */   0x00A0,   //   NO-BREAK SPACE
5695/* 9B */   0x2321,   //   BOTTOM HALF INTEGRAL
5696/* 9C */   0x00B0,   //   DEGREE SIGN
5697/* 9D */   0x00B2,   //   SUPERSCRIPT TWO
5698/* 9E */   0x00B7,   //   MIDDLE DOT
5699/* 9F */   0x00F7,   //   DIVISION SIGN
5700/* A0 */   0x2550,   //   BOX DRAWINGS DOUBLE HORIZONTAL
5701/* A1 */   0x2551,   //   BOX DRAWINGS DOUBLE VERTICAL
5702/* A2 */   0x2552,   //   BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
5703/* A3 */   0x0451,   //   CYRILLIC SMALL LETTER IO
5704/* A4 */   0x2553,   //   BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
5705/* A5 */   0x2554,   //   BOX DRAWINGS DOUBLE DOWN AND RIGHT
5706/* A6 */   0x2555,   //   BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
5707/* A7 */   0x2556,   //   BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
5708/* A8 */   0x2557,   //   BOX DRAWINGS DOUBLE DOWN AND LEFT
5709/* A9 */   0x2558,   //   BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
5710/* AA */   0x2559,   //   BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
5711/* AB */   0x255A,   //   BOX DRAWINGS DOUBLE UP AND RIGHT
5712/* AC */   0x255B,   //   BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
5713/* AD */   0x255C,   //   BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
5714/* AE */   0x255D,   //   BOX DRAWINGS DOUBLE UP AND LEFT
5715/* AF */   0x255E,   //   BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
5716/* B0 */   0x255F,   //   BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
5717/* B1 */   0x2560,   //   BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
5718/* B2 */   0x2561,   //   BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
5719/* B3 */   0x0401,   //   CYRILLIC CAPITAL LETTER IO
5720/* B4 */   0x2562,   //   BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
5721/* B5 */   0x2563,   //   BOX DRAWINGS DOUBLE VERTICAL AND LEFT
5722/* B6 */   0x2564,   //   BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
5723/* B7 */   0x2565,   //   BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
5724/* B8 */   0x2566,   //   BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
5725/* B9 */   0x2567,   //   BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
5726/* BA */   0x2568,   //   BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
5727/* BB */   0x2569,   //   BOX DRAWINGS DOUBLE UP AND HORIZONTAL
5728/* BC */   0x256A,   //   BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
5729/* BD */   0x256B,   //   BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
5730/* BE */   0x256C,   //   BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
5731/* BF */   0x00A9,   //   COPYRIGHT SIGN
5732/* C0 */   0x044E,   //   CYRILLIC SMALL LETTER YU
5733/* C1 */   0x0430,   //   CYRILLIC SMALL LETTER A
5734/* C2 */   0x0431,   //   CYRILLIC SMALL LETTER BE
5735/* C3 */   0x0446,   //   CYRILLIC SMALL LETTER TSE
5736/* C4 */   0x0434,   //   CYRILLIC SMALL LETTER DE
5737/* C5 */   0x0435,   //   CYRILLIC SMALL LETTER IE
5738/* C6 */   0x0444,   //   CYRILLIC SMALL LETTER EF
5739/* C7 */   0x0433,   //   CYRILLIC SMALL LETTER GHE
5740/* C8 */   0x0445,   //   CYRILLIC SMALL LETTER HA
5741/* C9 */   0x0438,   //   CYRILLIC SMALL LETTER I
5742/* CA */   0x0439,   //   CYRILLIC SMALL LETTER SHORT I
5743/* CB */   0x043A,   //   CYRILLIC SMALL LETTER KA
5744/* CC */   0x043B,   //   CYRILLIC SMALL LETTER EL
5745/* CD */   0x043C,   //   CYRILLIC SMALL LETTER EM
5746/* CE */   0x043D,   //   CYRILLIC SMALL LETTER EN
5747/* CF */   0x043E,   //   CYRILLIC SMALL LETTER O
5748/* D0 */   0x043F,   //   CYRILLIC SMALL LETTER PE
5749/* D1 */   0x044F,   //   CYRILLIC SMALL LETTER YA
5750/* D2 */   0x0440,   //   CYRILLIC SMALL LETTER ER
5751/* D3 */   0x0441,   //   CYRILLIC SMALL LETTER ES
5752/* D4 */   0x0442,   //   CYRILLIC SMALL LETTER TE
5753/* D5 */   0x0443,   //   CYRILLIC SMALL LETTER U
5754/* D6 */   0x0436,   //   CYRILLIC SMALL LETTER ZHE
5755/* D7 */   0x0432,   //   CYRILLIC SMALL LETTER VE
5756/* D8 */   0x044C,   //   CYRILLIC SMALL LETTER SOFT SIGN
5757/* D9 */   0x044B,   //   CYRILLIC SMALL LETTER YERU
5758/* DA */   0x0437,   //   CYRILLIC SMALL LETTER ZE
5759/* DB */   0x0448,   //   CYRILLIC SMALL LETTER SHA
5760/* DC */   0x044D,   //   CYRILLIC SMALL LETTER E
5761/* DD */   0x0449,   //   CYRILLIC SMALL LETTER SHCHA
5762/* DE */   0x0447,   //   CYRILLIC SMALL LETTER CHE
5763/* DF */   0x044A,   //   CYRILLIC SMALL LETTER HARD SIGN
5764/* E0 */   0x042E,   //   CYRILLIC CAPITAL LETTER YU
5765/* E1 */   0x0410,   //   CYRILLIC CAPITAL LETTER A
5766/* E2 */   0x0411,   //   CYRILLIC CAPITAL LETTER BE
5767/* E3 */   0x0426,   //   CYRILLIC CAPITAL LETTER TSE
5768/* E4 */   0x0414,   //   CYRILLIC CAPITAL LETTER DE
5769/* E5 */   0x0415,   //   CYRILLIC CAPITAL LETTER IE
5770/* E6 */   0x0424,   //   CYRILLIC CAPITAL LETTER EF
5771/* E7 */   0x0413,   //   CYRILLIC CAPITAL LETTER GHE
5772/* E8 */   0x0425,   //   CYRILLIC CAPITAL LETTER HA
5773/* E9 */   0x0418,   //   CYRILLIC CAPITAL LETTER I
5774/* EA */   0x0419,   //   CYRILLIC CAPITAL LETTER SHORT I
5775/* EB */   0x041A,   //   CYRILLIC CAPITAL LETTER KA
5776/* EC */   0x041B,   //   CYRILLIC CAPITAL LETTER EL
5777/* ED */   0x041C,   //   CYRILLIC CAPITAL LETTER EM
5778/* EE */   0x041D,   //   CYRILLIC CAPITAL LETTER EN
5779/* EF */   0x041E,   //   CYRILLIC CAPITAL LETTER O
5780/* F0 */   0x041F,   //   CYRILLIC CAPITAL LETTER PE
5781/* F1 */   0x042F,   //   CYRILLIC CAPITAL LETTER YA
5782/* F2 */   0x0420,   //   CYRILLIC CAPITAL LETTER ER
5783/* F3 */   0x0421,   //   CYRILLIC CAPITAL LETTER ES
5784/* F4 */   0x0422,   //   CYRILLIC CAPITAL LETTER TE
5785/* F5 */   0x0423,   //   CYRILLIC CAPITAL LETTER U
5786/* F6 */   0x0416,   //   CYRILLIC CAPITAL LETTER ZHE
5787/* F7 */   0x0412,   //   CYRILLIC CAPITAL LETTER VE
5788/* F8 */   0x042C,   //   CYRILLIC CAPITAL LETTER SOFT SIGN
5789/* F9 */   0x042B,   //   CYRILLIC CAPITAL LETTER YERU
5790/* FA */   0x0417,   //   CYRILLIC CAPITAL LETTER ZE
5791/* FB */   0x0428,   //   CYRILLIC CAPITAL LETTER SHA
5792/* FC */   0x042D,   //   CYRILLIC CAPITAL LETTER E
5793/* FD */   0x0429,   //   CYRILLIC CAPITAL LETTER SHCHA
5794/* FE */   0x0427,   //   CYRILLIC CAPITAL LETTER CHE
5795/* FF */   0x042A   //   CYRILLIC CAPITAL LETTER HARD SIGN
5796};
5797
5798/***************************************************************************
5799#
5800#   Name:             KOI8-U (RFC2319) to Unicode
5801#   Unicode version:  5.1
5802#   Table version:    1.0
5803#   Table format:     Format A
5804#   Date:             13 October 2008
5805#   Authors:          Philippe Verdy <verdy_p AT wanadoo.fr>,
5806#                     Helmut Richter <richter@lrz.de>
5807#
5808#   Copyright (c) 1991-2008 Unicode, Inc.  All Rights reserved.
5809#
5810#   This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
5811#   No claims are made as to fitness for any particular purpose.  No
5812#   warranties of any kind are expressed or implied.  The recipient
5813#   agrees to determine applicability of information provided.  If this
5814#   file has been provided on optical media by Unicode, Inc., the sole
5815#   remedy for any claim will be exchange of defective media within 90
5816#   days of receipt.
5817#
5818#   Unicode, Inc. hereby grants the right to freely use the information
5819#   supplied in this file in the creation of products supporting the
5820#   Unicode Standard, and to make copies of this file in any form for
5821#   internal or external distribution as long as this notice remains
5822#   attached.
5823#
5824#   General notes:
5825#
5826#   This table contains the data the Unicode Consortium has on how
5827#   KOI8-U characters map into Unicode. The underlying document is the
5828#   mapping described in RFC 2319. No statements are made as to whether
5829#   this mapping is the same as the mapping defined as "Code Page 878"
5830#   with some vendors.
5831#
5832#   The KOI8-U (RFC2319) encoding is a variant based on KOI8-R (RFC1489),
5833#   where the support for four additional Cyrillic letters was added (both small
5834#   and capital letters), replacing 8 box-drawing characters. It is still widely
5835#   used to encode texts in Ukrainian, Byelorussian and Bulgarian.
5836#
5837#   Format:  Three tab-separated columns
5838#       Column #1 is the KOI8-U code (in hex as 0xXX)
5839#       Column #2 is the Unicode (in hex as 0xXXXX)
5840#       Column #3 the Unicode name (follows a comment sign, '#')
5841#
5842#   The entries are in KOI8-U order.
5843#
5844#   Version history
5845#   1.0 version: created.
5846#
5847#   Updated versions of this file may be found in:
5848#      <http://www.unicode.org/Public/MAPPINGS/>
5849#
5850#   Any comments or problems, contact the Unicode Consortium at:
5851#           <http://www.unicode.org/reporting.html>
5852#
5853***************************************************************************/
5854static const unicode_char lookup_koi8_u[256] = {
5855/* 00 */   0x0000,   //   NULL
5856/* 01 */   0x0001,   //   START OF HEADING
5857/* 02 */   0x0002,   //   START OF TEXT
5858/* 03 */   0x0003,   //   END OF TEXT
5859/* 04 */   0x0004,   //   END OF TRANSMISSION
5860/* 05 */   0x0005,   //   ENQUIRY
5861/* 06 */   0x0006,   //   ACKNOWLEDGE
5862/* 07 */   0x0007,   //   BELL
5863/* 08 */   0x0008,   //   BACKSPACE
5864/* 09 */   0x0009,   //   HORIZONTAL TABULATION
5865/* 0A */   0x000A,   //   LINE FEED
5866/* 0B */   0x000B,   //   VERTICAL TABULATION
5867/* 0C */   0x000C,   //   FORM FEED
5868/* 0D */   0x000D,   //   CARRIAGE RETURN
5869/* 0E */   0x000E,   //   SHIFT OUT
5870/* 0F */   0x000F,   //   SHIFT IN
5871/* 10 */   0x0010,   //   DATA LINK ESCAPE
5872/* 11 */   0x0011,   //   DEVICE CONTROL ONE
5873/* 12 */   0x0012,   //   DEVICE CONTROL TWO
5874/* 13 */   0x0013,   //   DEVICE CONTROL THREE
5875/* 14 */   0x0014,   //   DEVICE CONTROL FOUR
5876/* 15 */   0x0015,   //   NEGATIVE ACKNOWLEDGE
5877/* 16 */   0x0016,   //   SYNCHRONOUS IDLE
5878/* 17 */   0x0017,   //   END OF TRANSMISSION BLOCK
5879/* 18 */   0x0018,   //   CANCEL
5880/* 19 */   0x0019,   //   END OF MEDIUM
5881/* 1A */   0x001A,   //   SUBSTITUTE
5882/* 1B */   0x001B,   //   ESCAPE
5883/* 1C */   0x001C,   //   FILE SEPARATOR
5884/* 1D */   0x001D,   //   GROUP SEPARATOR
5885/* 1E */   0x001E,   //   RECORD SEPARATOR
5886/* 1F */   0x001F,   //   UNIT SEPARATOR
5887/* 20 */   0x0020,   //   SPACE
5888/* 21 */   0x0021,   //   EXCLAMATION MARK
5889/* 22 */   0x0022,   //   QUOTATION MARK
5890/* 23 */   0x0023,   //   NUMBER SIGN
5891/* 24 */   0x0024,   //   DOLLAR SIGN
5892/* 25 */   0x0025,   //   PERCENT SIGN
5893/* 26 */   0x0026,   //   AMPERSAND
5894/* 27 */   0x0027,   //   APOSTROPHE
5895/* 28 */   0x0028,   //   LEFT PARENTHESIS
5896/* 29 */   0x0029,   //   RIGHT PARENTHESIS
5897/* 2A */   0x002A,   //   ASTERISK
5898/* 2B */   0x002B,   //   PLUS SIGN
5899/* 2C */   0x002C,   //   COMMA
5900/* 2D */   0x002D,   //   HYPHEN-MINUS
5901/* 2E */   0x002E,   //   FULL STOP
5902/* 2F */   0x002F,   //   SOLIDUS
5903/* 30 */   0x0030,   //   DIGIT ZERO
5904/* 31 */   0x0031,   //   DIGIT ONE
5905/* 32 */   0x0032,   //   DIGIT TWO
5906/* 33 */   0x0033,   //   DIGIT THREE
5907/* 34 */   0x0034,   //   DIGIT FOUR
5908/* 35 */   0x0035,   //   DIGIT FIVE
5909/* 36 */   0x0036,   //   DIGIT SIX
5910/* 37 */   0x0037,   //   DIGIT SEVEN
5911/* 38 */   0x0038,   //   DIGIT EIGHT
5912/* 39 */   0x0039,   //   DIGIT NINE
5913/* 3A */   0x003A,   //   COLON
5914/* 3B */   0x003B,   //   SEMICOLON
5915/* 3C */   0x003C,   //   LESS-THAN SIGN
5916/* 3D */   0x003D,   //   EQUALS SIGN
5917/* 3E */   0x003E,   //   GREATER-THAN SIGN
5918/* 3F */   0x003F,   //   QUESTION MARK
5919/* 40 */   0x0040,   //   COMMERCIAL AT
5920/* 41 */   0x0041,   //   LATIN CAPITAL LETTER A
5921/* 42 */   0x0042,   //   LATIN CAPITAL LETTER B
5922/* 43 */   0x0043,   //   LATIN CAPITAL LETTER C
5923/* 44 */   0x0044,   //   LATIN CAPITAL LETTER D
5924/* 45 */   0x0045,   //   LATIN CAPITAL LETTER E
5925/* 46 */   0x0046,   //   LATIN CAPITAL LETTER F
5926/* 47 */   0x0047,   //   LATIN CAPITAL LETTER G
5927/* 48 */   0x0048,   //   LATIN CAPITAL LETTER H
5928/* 49 */   0x0049,   //   LATIN CAPITAL LETTER I
5929/* 4A */   0x004A,   //   LATIN CAPITAL LETTER J
5930/* 4B */   0x004B,   //   LATIN CAPITAL LETTER K
5931/* 4C */   0x004C,   //   LATIN CAPITAL LETTER L
5932/* 4D */   0x004D,   //   LATIN CAPITAL LETTER M
5933/* 4E */   0x004E,   //   LATIN CAPITAL LETTER N
5934/* 4F */   0x004F,   //   LATIN CAPITAL LETTER O
5935/* 50 */   0x0050,   //   LATIN CAPITAL LETTER P
5936/* 51 */   0x0051,   //   LATIN CAPITAL LETTER Q
5937/* 52 */   0x0052,   //   LATIN CAPITAL LETTER R
5938/* 53 */   0x0053,   //   LATIN CAPITAL LETTER S
5939/* 54 */   0x0054,   //   LATIN CAPITAL LETTER T
5940/* 55 */   0x0055,   //   LATIN CAPITAL LETTER U
5941/* 56 */   0x0056,   //   LATIN CAPITAL LETTER V
5942/* 57 */   0x0057,   //   LATIN CAPITAL LETTER W
5943/* 58 */   0x0058,   //   LATIN CAPITAL LETTER X
5944/* 59 */   0x0059,   //   LATIN CAPITAL LETTER Y
5945/* 5A */   0x005A,   //   LATIN CAPITAL LETTER Z
5946/* 5B */   0x005B,   //   LEFT SQUARE BRACKET
5947/* 5C */   0x005C,   //   REVERSE SOLIDUS
5948/* 5D */   0x005D,   //   RIGHT SQUARE BRACKET
5949/* 5E */   0x005E,   //   CIRCUMFLEX ACCENT
5950/* 5F */   0x005F,   //   LOW LINE
5951/* 60 */   0x0060,   //   GRAVE ACCENT
5952/* 61 */   0x0061,   //   LATIN SMALL LETTER A
5953/* 62 */   0x0062,   //   LATIN SMALL LETTER B
5954/* 63 */   0x0063,   //   LATIN SMALL LETTER C
5955/* 64 */   0x0064,   //   LATIN SMALL LETTER D
5956/* 65 */   0x0065,   //   LATIN SMALL LETTER E
5957/* 66 */   0x0066,   //   LATIN SMALL LETTER F
5958/* 67 */   0x0067,   //   LATIN SMALL LETTER G
5959/* 68 */   0x0068,   //   LATIN SMALL LETTER H
5960/* 69 */   0x0069,   //   LATIN SMALL LETTER I
5961/* 6A */   0x006A,   //   LATIN SMALL LETTER J
5962/* 6B */   0x006B,   //   LATIN SMALL LETTER K
5963/* 6C */   0x006C,   //   LATIN SMALL LETTER L
5964/* 6D */   0x006D,   //   LATIN SMALL LETTER M
5965/* 6E */   0x006E,   //   LATIN SMALL LETTER N
5966/* 6F */   0x006F,   //   LATIN SMALL LETTER O
5967/* 70 */   0x0070,   //   LATIN SMALL LETTER P
5968/* 71 */   0x0071,   //   LATIN SMALL LETTER Q
5969/* 72 */   0x0072,   //   LATIN SMALL LETTER R
5970/* 73 */   0x0073,   //   LATIN SMALL LETTER S
5971/* 74 */   0x0074,   //   LATIN SMALL LETTER T
5972/* 75 */   0x0075,   //   LATIN SMALL LETTER U
5973/* 76 */   0x0076,   //   LATIN SMALL LETTER V
5974/* 77 */   0x0077,   //   LATIN SMALL LETTER W
5975/* 78 */   0x0078,   //   LATIN SMALL LETTER X
5976/* 79 */   0x0079,   //   LATIN SMALL LETTER Y
5977/* 7A */   0x007A,   //   LATIN SMALL LETTER Z
5978/* 7B */   0x007B,   //   LEFT CURLY BRACKET
5979/* 7C */   0x007C,   //   VERTICAL LINE
5980/* 7D */   0x007D,   //   RIGHT CURLY BRACKET
5981/* 7E */   0x007E,   //   TILDE
5982/* 7F */   0x007F,   //   DELETE
5983/* 80 */   0x2500,   //   BOX DRAWINGS LIGHT HORIZONTAL
5984/* 81 */   0x2502,   //   BOX DRAWINGS LIGHT VERTICAL
5985/* 82 */   0x250C,   //   BOX DRAWINGS LIGHT DOWN AND RIGHT
5986/* 83 */   0x2510,   //   BOX DRAWINGS LIGHT DOWN AND LEFT
5987/* 84 */   0x2514,   //   BOX DRAWINGS LIGHT UP AND RIGHT
5988/* 85 */   0x2518,   //   BOX DRAWINGS LIGHT UP AND LEFT
5989/* 86 */   0x251C,   //   BOX DRAWINGS LIGHT VERTICAL AND RIGHT
5990/* 87 */   0x2524,   //   BOX DRAWINGS LIGHT VERTICAL AND LEFT
5991/* 88 */   0x252C,   //   BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
5992/* 89 */   0x2534,   //   BOX DRAWINGS LIGHT UP AND HORIZONTAL
5993/* 8A */   0x253C,   //   BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
5994/* 8B */   0x2580,   //   UPPER HALF BLOCK
5995/* 8C */   0x2584,   //   LOWER HALF BLOCK
5996/* 8D */   0x2588,   //   FULL BLOCK
5997/* 8E */   0x258C,   //   LEFT HALF BLOCK
5998/* 8F */   0x2590,   //   RIGHT HALF BLOCK
5999/* 90 */   0x2591,   //   LIGHT SHADE
6000/* 91 */   0x2592,   //   MEDIUM SHADE
6001/* 92 */   0x2593,   //   DARK SHADE
6002/* 93 */   0x2320,   //   TOP HALF INTEGRAL
6003/* 94 */   0x25A0,   //   BLACK SQUARE
6004/* 95 */   0x2219,   //   BULLET OPERATOR
6005/* 96 */   0x221A,   //   SQUARE ROOT
6006/* 97 */   0x2248,   //   ALMOST EQUAL TO
6007/* 98 */   0x2264,   //   LESS-THAN OR EQUAL TO
6008/* 99 */   0x2265,   //   GREATER-THAN OR EQUAL TO
6009/* 9A */   0x00A0,   //   NO-BREAK SPACE
6010/* 9B */   0x2321,   //   BOTTOM HALF INTEGRAL
6011/* 9C */   0x00B0,   //   DEGREE SIGN
6012/* 9D */   0x00B2,   //   SUPERSCRIPT TWO
6013/* 9E */   0x00B7,   //   MIDDLE DOT
6014/* 9F */   0x00F7,   //   DIVISION SIGN
6015/* A0 */   0x2550,   //   BOX DRAWINGS DOUBLE HORIZONTAL
6016/* A1 */   0x2551,   //   BOX DRAWINGS DOUBLE VERTICAL
6017/* A2 */   0x2552,   //   BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
6018/* A3 */   0x0451,   //   CYRILLIC SMALL LETTER IO
6019/* A4 */   0x0454,   //   CYRILLIC SMALL LETTER UKRAINIAN IE
6020/* A5 */   0x2554,   //   BOX DRAWINGS DOUBLE DOWN AND RIGHT
6021/* A6 */   0x0456,   //   CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
6022/* A7 */   0x0457,   //   CYRILLIC SMALL LETTER YI (UKRAINIAN)
6023/* A8 */   0x2557,   //   BOX DRAWINGS DOUBLE DOWN AND LEFT
6024/* A9 */   0x2558,   //   BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
6025/* AA */   0x2559,   //   BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
6026/* AB */   0x255A,   //   BOX DRAWINGS DOUBLE UP AND RIGHT
6027/* AC */   0x255B,   //   BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
6028/* AD */   0x0491,   //   CYRILLIC SMALL LETTER GHE WITH UPTURN
6029/* AE */   0x255D,   //   BOX DRAWINGS DOUBLE UP AND LEFT
6030/* AF */   0x255E,   //   BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
6031/* B0 */   0x255F,   //   BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
6032/* B1 */   0x2560,   //   BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
6033/* B2 */   0x2561,   //   BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
6034/* B3 */   0x0401,   //   CYRILLIC CAPITAL LETTER IO
6035/* B4 */   0x0404,   //   CYRILLIC CAPITAL LETTER UKRAINIAN IE
6036/* B5 */   0x2563,   //   BOX DRAWINGS DOUBLE VERTICAL AND LEFT
6037/* B6 */   0x0406,   //   CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
6038/* B7 */   0x0407,   //   CYRILLIC CAPITAL LETTER YI (UKRAINIAN)
6039/* B8 */   0x2566,   //   BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
6040/* B9 */   0x2567,   //   BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
6041/* BA */   0x2568,   //   BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
6042/* BB */   0x2569,   //   BOX DRAWINGS DOUBLE UP AND HORIZONTAL
6043/* BC */   0x256A,   //   BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
6044/* BD */   0x0490,   //   CYRILLIC CAPITAL LETTER GHE WITH UPTURN
6045/* BE */   0x256C,   //   BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
6046/* BF */   0x00A9,   //   COPYRIGHT SIGN
6047/* C0 */   0x044E,   //   CYRILLIC SMALL LETTER YU
6048/* C1 */   0x0430,   //   CYRILLIC SMALL LETTER A
6049/* C2 */   0x0431,   //   CYRILLIC SMALL LETTER BE
6050/* C3 */   0x0446,   //   CYRILLIC SMALL LETTER TSE
6051/* C4 */   0x0434,   //   CYRILLIC SMALL LETTER DE
6052/* C5 */   0x0435,   //   CYRILLIC SMALL LETTER IE
6053/* C6 */   0x0444,   //   CYRILLIC SMALL LETTER EF
6054/* C7 */   0x0433,   //   CYRILLIC SMALL LETTER GHE
6055/* C8 */   0x0445,   //   CYRILLIC SMALL LETTER HA
6056/* C9 */   0x0438,   //   CYRILLIC SMALL LETTER I
6057/* CA */   0x0439,   //   CYRILLIC SMALL LETTER SHORT I
6058/* CB */   0x043A,   //   CYRILLIC SMALL LETTER KA
6059/* CC */   0x043B,   //   CYRILLIC SMALL LETTER EL
6060/* CD */   0x043C,   //   CYRILLIC SMALL LETTER EM
6061/* CE */   0x043D,   //   CYRILLIC SMALL LETTER EN
6062/* CF */   0x043E,   //   CYRILLIC SMALL LETTER O
6063/* D0 */   0x043F,   //   CYRILLIC SMALL LETTER PE
6064/* D1 */   0x044F,   //   CYRILLIC SMALL LETTER YA
6065/* D2 */   0x0440,   //   CYRILLIC SMALL LETTER ER
6066/* D3 */   0x0441,   //   CYRILLIC SMALL LETTER ES
6067/* D4 */   0x0442,   //   CYRILLIC SMALL LETTER TE
6068/* D5 */   0x0443,   //   CYRILLIC SMALL LETTER U
6069/* D6 */   0x0436,   //   CYRILLIC SMALL LETTER ZHE
6070/* D7 */   0x0432,   //   CYRILLIC SMALL LETTER VE
6071/* D8 */   0x044C,   //   CYRILLIC SMALL LETTER SOFT SIGN
6072/* D9 */   0x044B,   //   CYRILLIC SMALL LETTER YERU
6073/* DA */   0x0437,   //   CYRILLIC SMALL LETTER ZE
6074/* DB */   0x0448,   //   CYRILLIC SMALL LETTER SHA
6075/* DC */   0x044D,   //   CYRILLIC SMALL LETTER E
6076/* DD */   0x0449,   //   CYRILLIC SMALL LETTER SHCHA
6077/* DE */   0x0447,   //   CYRILLIC SMALL LETTER CHE
6078/* DF */   0x044A,   //   CYRILLIC SMALL LETTER HARD SIGN
6079/* E0 */   0x042E,   //   CYRILLIC CAPITAL LETTER YU
6080/* E1 */   0x0410,   //   CYRILLIC CAPITAL LETTER A
6081/* E2 */   0x0411,   //   CYRILLIC CAPITAL LETTER BE
6082/* E3 */   0x0426,   //   CYRILLIC CAPITAL LETTER TSE
6083/* E4 */   0x0414,   //   CYRILLIC CAPITAL LETTER DE
6084/* E5 */   0x0415,   //   CYRILLIC CAPITAL LETTER IE
6085/* E6 */   0x0424,   //   CYRILLIC CAPITAL LETTER EF
6086/* E7 */   0x0413,   //   CYRILLIC CAPITAL LETTER GHE
6087/* E8 */   0x0425,   //   CYRILLIC CAPITAL LETTER HA
6088/* E9 */   0x0418,   //   CYRILLIC CAPITAL LETTER I
6089/* EA */   0x0419,   //   CYRILLIC CAPITAL LETTER SHORT I
6090/* EB */   0x041A,   //   CYRILLIC CAPITAL LETTER KA
6091/* EC */   0x041B,   //   CYRILLIC CAPITAL LETTER EL
6092/* ED */   0x041C,   //   CYRILLIC CAPITAL LETTER EM
6093/* EE */   0x041D,   //   CYRILLIC CAPITAL LETTER EN
6094/* EF */   0x041E,   //   CYRILLIC CAPITAL LETTER O
6095/* F0 */   0x041F,   //   CYRILLIC CAPITAL LETTER PE
6096/* F1 */   0x042F,   //   CYRILLIC CAPITAL LETTER YA
6097/* F2 */   0x0420,   //   CYRILLIC CAPITAL LETTER ER
6098/* F3 */   0x0421,   //   CYRILLIC CAPITAL LETTER ES
6099/* F4 */   0x0422,   //   CYRILLIC CAPITAL LETTER TE
6100/* F5 */   0x0423,   //   CYRILLIC CAPITAL LETTER U
6101/* F6 */   0x0416,   //   CYRILLIC CAPITAL LETTER ZHE
6102/* F7 */   0x0412,   //   CYRILLIC CAPITAL LETTER VE
6103/* F8 */   0x042C,   //   CYRILLIC CAPITAL LETTER SOFT SIGN
6104/* F9 */   0x042B,   //   CYRILLIC CAPITAL LETTER YERU
6105/* FA */   0x0417,   //   CYRILLIC CAPITAL LETTER ZE
6106/* FB */   0x0428,   //   CYRILLIC CAPITAL LETTER SHA
6107/* FC */   0x042D,   //   CYRILLIC CAPITAL LETTER E
6108/* FD */   0x0429,   //   CYRILLIC CAPITAL LETTER SHCHA
6109/* FE */   0x0427,   //   CYRILLIC CAPITAL LETTER CHE
6110/* FF */   0x042A   //   CYRILLIC CAPITAL LETTER HARD SIGN
6111};
6112
6113//**************************************************************************
6114//  Unicode lookup table accessors
6115//**************************************************************************
6116
6117/*-------------------------------------------------
6118   unicode_iso8859 - return a pointer to a lookup
6119   table for the specified ISO-8859 code,
6120   where code is 1-11, 13-16
6121-------------------------------------------------*/
6122
6123const unicode_char* unicode_iso8859(int code)
6124{
6125   switch (code) {
6126   case  1: return lookup_iso8859_1;
6127   case  2: return lookup_iso8859_2;
6128   case  3: return lookup_iso8859_3;
6129   case  4: return lookup_iso8859_4;
6130   case  5: return lookup_iso8859_5;
6131   case  6: return lookup_iso8859_6;
6132   case  7: return lookup_iso8859_7;
6133   case  8: return lookup_iso8859_8;
6134   case  9: return lookup_iso8859_9;
6135   case 10: return lookup_iso8859_10;
6136   case 11: return lookup_iso8859_11;
6137   case 13: return lookup_iso8859_13;
6138   case 14: return lookup_iso8859_14;
6139   case 15: return lookup_iso8859_15;
6140   case 16: return lookup_iso8859_16;
6141   }
6142   return NULL;
6143}
6144
6145/*-------------------------------------------------
6146   unicode_atari_st - return a pointer to a lookup
6147   table for the Atari ST character codes
6148-------------------------------------------------*/
6149const unicode_char* unicode_atari_st()
6150{
6151   return lookup_atari_st;
6152}
6153
6154/*-------------------------------------------------
6155   unicode_zx81 - return a pointer to a lookup
6156   table for the ZX-81 character codes
6157-------------------------------------------------*/
6158const unicode_char* unicode_zx81()
6159{
6160   return lookup_zx81;
6161}
6162
6163/*-------------------------------------------------
6164   unicode_koi8_r - return a pointer to a lookup
6165   table for the KOI8-R (RFC1489) character codes
6166-------------------------------------------------*/
6167const unicode_char* unicode_koi8_r()
6168{
6169   return lookup_koi8_r;
6170}
6171
6172/*-------------------------------------------------
6173   unicode_koi8_u - return a pointer to a lookup
6174   table for the KOI8-U (RFC2319) character codes
6175-------------------------------------------------*/
6176const unicode_char* unicode_koi8_u()
6177{
6178   return lookup_koi8_u;
6179}
branches/alto2/src/lib/util/unicode.h
r26116r26117
22// copyright-holders:Aaron Giles
33/*********************************************************************
44
5    unicode.h
5   unicode.h
66
7    Unicode related functions
7   Unicode related functions
88
9    This code is for converting between UTF-8, UTF-16, and 32-bit
10    Unicode strings.  These functions roughly parallel C runtime
11    library functions like mbtowc() and similar functions, but are
12    specific for these Unicode encodings.  Specifically, there are
13    functions that convert UTF-8 and UTF-16 char clusters to and from
14    singular 32-bit Unicode chars.
9   This code is for converting between UTF-8, UTF-16, and 32-bit
10   Unicode strings.  These functions roughly parallel C runtime
11   library functions like mbtowc() and similar functions, but are
12   specific for these Unicode encodings.  Specifically, there are
13   functions that convert UTF-8 and UTF-16 char clusters to and from
14   singular 32-bit Unicode chars.
1515
1616***************************************************************************/
1717
r26116r26117
2626
2727
2828/***************************************************************************
29    CONSTANTS
29   CONSTANTS
3030***************************************************************************/
3131
3232/* these defines specify the maximum size of different types of Unicode
r26116r26117
5959
6060
6161/***************************************************************************
62    TYPE DEFINITIONS
62   TYPE DEFINITIONS
6363***************************************************************************/
6464
6565typedef UINT16 utf16_char;
r26116r26117
6868
6969
7070/***************************************************************************
71    FUNCTION PROTOTYPES
71   FUNCTION PROTOTYPES
7272***************************************************************************/
7373
7474/* tests to see if a unicode char is a valid code point */
r26116r26117
8888const char *utf8_previous_char(const char *utf8string);
8989int utf8_is_valid_string(const char *utf8string);
9090
91/***************************************************************************
92   8BIT CODE LOOKUP TABLES
93***************************************************************************/
9194
95/* ISO-8859 page to Unicode lookup tables */
96const unicode_char* unicode_iso8859(int code);
9297
98/* Atari ST to Unicode lookup table */
99const unicode_char* unicode_atari_st();
100
101/* ZX-81 to Unicode lookup table */
102const unicode_char* unicode_zx81();
103
104/* KOI8-R to Unicode lookup table */
105const unicode_char* unicode_koi8_r();
106
107/* KOI8-U to Unicode lookup table */
108const unicode_char* unicode_koi8_u();
109
93110/***************************************************************************
94    MACROS
111   MACROS
95112***************************************************************************/
96113
97114#ifdef LSB_FIRST

Previous 199869 Revisions Next


© 1997-2024 The MAME Team