commit 948135af72343a186635861b6af76b508a215b35 Author: Claude Fable 5 Date: Sun Jul 19 12:09:54 2026 -0500 Initial crate: all 16 single-byte MS-DOS code pages, bidirectional Tables are generated from the Unicode Consortium's Microsoft mappings (VENDORS/MICSFT/PC), vendored in data/ and regenerated by tools/gen_tables.py. Decode is fallible because 857/864/869/874 leave byte values undefined; decode_lossy substitutes U+FFFD. Every table is a verified bijection, so defined bytes round-trip exactly. diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..16d5636 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/target +Cargo.lock +.DS_Store diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..06d836c --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "msdos-encodings" +version = "0.1.0" +edition = "2021" +description = "Bidirectional, emulator-grade conversion between MS-DOS code pages and Unicode" +license = "MIT" + +[dependencies] +thiserror = "2" + +[profile.release] +lto = true diff --git a/README.md b/README.md new file mode 100644 index 0000000..2da719c --- /dev/null +++ b/README.md @@ -0,0 +1,66 @@ +# msdos-encodings + +Bidirectional, emulator-grade conversion between MS-DOS code pages and Unicode — +without linking ICU. The crate owns the canonical Microsoft tables, so it stays +small, self-contained, and cross-compiles cleanly. + +These are strictly **Microsoft's** mappings as published by the Unicode +Consortium (`VENDORS/MICSFT/PC/`) — not the IBM or Oracle variants, which +differ in a handful of slots. + +```rust +use msdos_encodings::DosEncoding; + +let enc = DosEncoding::default(); // code page 437 +assert_eq!(enc.decode(b"Caf\x82").unwrap(), "Café"); +assert_eq!(enc.encode("Café").unwrap(), b"Caf\x82"); + +// Pick by numeric code page (e.g. from CHCP or locale data): +let enc = DosEncoding::from_code_page(866).unwrap(); +assert_eq!(enc.decode(&[0x80]).unwrap(), "А"); // DOS Cyrillic Russian + +// Four pages leave bytes undefined; decode is fallible, or go lossy: +assert!(DosEncoding::Cp874.decode(&[0xFF]).is_err()); +assert_eq!(DosEncoding::Cp874.decode_lossy(&[0xFF]), "\u{FFFD}"); +``` + +## Status + +- **All sixteen single-byte DOS pages** — implemented, decode + encode: + 437, 737, 775, 850, 852, 855, 857, 860, 861, 862, 863, 864, 865, 866, 869, 874. +- **Double-byte CJK pages** (932 Shift-JIS, 936 GBK, 949 Korean, 950 Big5) — + planned, to be codegen'd the same way and feature-gated. + +## Fidelity notes + +- Every table is a verified bijection: anything a page decodes re-encodes to + the identical bytes. +- Code pages 857, 864, 869, and 874 leave some byte values undefined, so + `decode` returns a `Result`; `decode_lossy` substitutes U+FFFD. +- Microsoft's CP864 (DOS Arabic) maps `0x25` to ARABIC PERCENT SIGN — the low + half is *not* pure ASCII, and `%` itself is unmappable. This is faithful to + the source table. + +## Regenerating tables + +`src/tables.rs` is generated from the vendored mapping files in `data/` +(needs Python ≥ 3.10 and `rustfmt` on `PATH`): + +```sh +uv run tools/gen_tables.py +``` + +## Scope + +Text-encoding conversion only. Filename conventions (8.3 space padding, +case folding, the 0x05/0xE5 deleted-entry dance) are deliberately **out of +scope** and left to consumers. + +## Consumers + +Designed to be shared by `fsinspect` and friends via path (and later git) +dependency. + +## License + +MIT diff --git a/data/CP437.TXT b/data/CP437.TXT new file mode 100644 index 0000000..8f74def --- /dev/null +++ b/data/CP437.TXT @@ -0,0 +1,274 @@ +# +# Name: cp437_DOSLatinUS to Unicode table +# Unicode version: 2.0 +# Table version: 2.00 +# Table format: Format A +# Date: 04/24/96 +# Contact: Shawn.Steele@microsoft.com +# +# General notes: none +# +# Format: Three tab-separated columns +# Column #1 is the cp437_DOSLatinUS code (in hex) +# Column #2 is the Unicode (in hex as 0xXXXX) +# Column #3 is the Unicode name (follows a comment sign, '#') +# +# The entries are in cp437_DOSLatinUS order +# +0x00 0x0000 #NULL +0x01 0x0001 #START OF HEADING +0x02 0x0002 #START OF TEXT +0x03 0x0003 #END OF TEXT +0x04 0x0004 #END OF TRANSMISSION +0x05 0x0005 #ENQUIRY +0x06 0x0006 #ACKNOWLEDGE +0x07 0x0007 #BELL +0x08 0x0008 #BACKSPACE +0x09 0x0009 #HORIZONTAL TABULATION +0x0a 0x000a #LINE FEED +0x0b 0x000b #VERTICAL TABULATION +0x0c 0x000c #FORM FEED +0x0d 0x000d #CARRIAGE RETURN +0x0e 0x000e #SHIFT OUT +0x0f 0x000f #SHIFT IN +0x10 0x0010 #DATA LINK ESCAPE +0x11 0x0011 #DEVICE CONTROL ONE +0x12 0x0012 #DEVICE CONTROL TWO +0x13 0x0013 #DEVICE CONTROL THREE +0x14 0x0014 #DEVICE CONTROL FOUR +0x15 0x0015 #NEGATIVE ACKNOWLEDGE +0x16 0x0016 #SYNCHRONOUS IDLE +0x17 0x0017 #END OF TRANSMISSION BLOCK +0x18 0x0018 #CANCEL +0x19 0x0019 #END OF MEDIUM +0x1a 0x001a #SUBSTITUTE +0x1b 0x001b #ESCAPE +0x1c 0x001c #FILE SEPARATOR +0x1d 0x001d #GROUP SEPARATOR +0x1e 0x001e #RECORD SEPARATOR +0x1f 0x001f #UNIT SEPARATOR +0x20 0x0020 #SPACE +0x21 0x0021 #EXCLAMATION MARK +0x22 0x0022 #QUOTATION MARK +0x23 0x0023 #NUMBER SIGN +0x24 0x0024 #DOLLAR SIGN +0x25 0x0025 #PERCENT SIGN +0x26 0x0026 #AMPERSAND +0x27 0x0027 #APOSTROPHE +0x28 0x0028 #LEFT PARENTHESIS +0x29 0x0029 #RIGHT PARENTHESIS +0x2a 0x002a #ASTERISK +0x2b 0x002b #PLUS SIGN +0x2c 0x002c #COMMA +0x2d 0x002d #HYPHEN-MINUS +0x2e 0x002e #FULL STOP +0x2f 0x002f #SOLIDUS +0x30 0x0030 #DIGIT ZERO +0x31 0x0031 #DIGIT ONE +0x32 0x0032 #DIGIT TWO +0x33 0x0033 #DIGIT THREE +0x34 0x0034 #DIGIT FOUR +0x35 0x0035 #DIGIT FIVE +0x36 0x0036 #DIGIT SIX +0x37 0x0037 #DIGIT SEVEN +0x38 0x0038 #DIGIT EIGHT +0x39 0x0039 #DIGIT NINE +0x3a 0x003a #COLON +0x3b 0x003b #SEMICOLON +0x3c 0x003c #LESS-THAN SIGN +0x3d 0x003d #EQUALS SIGN +0x3e 0x003e #GREATER-THAN SIGN +0x3f 0x003f #QUESTION MARK +0x40 0x0040 #COMMERCIAL AT +0x41 0x0041 #LATIN CAPITAL LETTER A +0x42 0x0042 #LATIN CAPITAL LETTER B +0x43 0x0043 #LATIN CAPITAL LETTER C +0x44 0x0044 #LATIN CAPITAL LETTER D +0x45 0x0045 #LATIN CAPITAL LETTER E +0x46 0x0046 #LATIN CAPITAL LETTER F +0x47 0x0047 #LATIN CAPITAL LETTER G +0x48 0x0048 #LATIN CAPITAL LETTER H +0x49 0x0049 #LATIN CAPITAL LETTER I +0x4a 0x004a #LATIN CAPITAL LETTER J +0x4b 0x004b #LATIN CAPITAL LETTER K +0x4c 0x004c #LATIN CAPITAL LETTER L +0x4d 0x004d #LATIN CAPITAL LETTER M +0x4e 0x004e #LATIN CAPITAL LETTER N +0x4f 0x004f #LATIN CAPITAL LETTER O +0x50 0x0050 #LATIN CAPITAL LETTER P +0x51 0x0051 #LATIN CAPITAL LETTER Q +0x52 0x0052 #LATIN CAPITAL LETTER R +0x53 0x0053 #LATIN CAPITAL LETTER S +0x54 0x0054 #LATIN CAPITAL LETTER T +0x55 0x0055 #LATIN CAPITAL LETTER U +0x56 0x0056 #LATIN CAPITAL LETTER V +0x57 0x0057 #LATIN CAPITAL LETTER W +0x58 0x0058 #LATIN CAPITAL LETTER X +0x59 0x0059 #LATIN CAPITAL LETTER Y +0x5a 0x005a #LATIN CAPITAL LETTER Z +0x5b 0x005b #LEFT SQUARE BRACKET +0x5c 0x005c #REVERSE SOLIDUS +0x5d 0x005d #RIGHT SQUARE BRACKET +0x5e 0x005e #CIRCUMFLEX ACCENT +0x5f 0x005f #LOW LINE +0x60 0x0060 #GRAVE ACCENT +0x61 0x0061 #LATIN SMALL LETTER A +0x62 0x0062 #LATIN SMALL LETTER B +0x63 0x0063 #LATIN SMALL LETTER C +0x64 0x0064 #LATIN SMALL LETTER D +0x65 0x0065 #LATIN SMALL LETTER E +0x66 0x0066 #LATIN SMALL LETTER F +0x67 0x0067 #LATIN SMALL LETTER G +0x68 0x0068 #LATIN SMALL LETTER H +0x69 0x0069 #LATIN SMALL LETTER I +0x6a 0x006a #LATIN SMALL LETTER J +0x6b 0x006b #LATIN SMALL LETTER K +0x6c 0x006c #LATIN SMALL LETTER L +0x6d 0x006d #LATIN SMALL LETTER M +0x6e 0x006e #LATIN SMALL LETTER N +0x6f 0x006f #LATIN SMALL LETTER O +0x70 0x0070 #LATIN SMALL LETTER P +0x71 0x0071 #LATIN SMALL LETTER Q +0x72 0x0072 #LATIN SMALL LETTER R +0x73 0x0073 #LATIN SMALL LETTER S +0x74 0x0074 #LATIN SMALL LETTER T +0x75 0x0075 #LATIN SMALL LETTER U +0x76 0x0076 #LATIN SMALL LETTER V +0x77 0x0077 #LATIN SMALL LETTER W +0x78 0x0078 #LATIN SMALL LETTER X +0x79 0x0079 #LATIN SMALL LETTER Y +0x7a 0x007a #LATIN SMALL LETTER Z +0x7b 0x007b #LEFT CURLY BRACKET +0x7c 0x007c #VERTICAL LINE +0x7d 0x007d #RIGHT CURLY BRACKET +0x7e 0x007e #TILDE +0x7f 0x007f #DELETE +0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA +0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS +0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE +0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX +0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS +0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE +0x86 0x00e5 #LATIN SMALL LETTER A WITH RING ABOVE +0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA +0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX +0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS +0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE +0x8b 0x00ef #LATIN SMALL LETTER I WITH DIAERESIS +0x8c 0x00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX +0x8d 0x00ec #LATIN SMALL LETTER I WITH GRAVE +0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS +0x8f 0x00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE +0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE +0x91 0x00e6 #LATIN SMALL LIGATURE AE +0x92 0x00c6 #LATIN CAPITAL LIGATURE AE +0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX +0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS +0x95 0x00f2 #LATIN SMALL LETTER O WITH GRAVE +0x96 0x00fb #LATIN SMALL LETTER U WITH CIRCUMFLEX +0x97 0x00f9 #LATIN SMALL LETTER U WITH GRAVE +0x98 0x00ff #LATIN SMALL LETTER Y WITH DIAERESIS +0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS +0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS +0x9b 0x00a2 #CENT SIGN +0x9c 0x00a3 #POUND SIGN +0x9d 0x00a5 #YEN SIGN +0x9e 0x20a7 #PESETA SIGN +0x9f 0x0192 #LATIN SMALL LETTER F WITH HOOK +0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE +0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE +0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE +0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE +0xa4 0x00f1 #LATIN SMALL LETTER N WITH TILDE +0xa5 0x00d1 #LATIN CAPITAL LETTER N WITH TILDE +0xa6 0x00aa #FEMININE ORDINAL INDICATOR +0xa7 0x00ba #MASCULINE ORDINAL INDICATOR +0xa8 0x00bf #INVERTED QUESTION MARK +0xa9 0x2310 #REVERSED NOT SIGN +0xaa 0x00ac #NOT SIGN +0xab 0x00bd #VULGAR FRACTION ONE HALF +0xac 0x00bc #VULGAR FRACTION ONE QUARTER +0xad 0x00a1 #INVERTED EXCLAMATION MARK +0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +0xb0 0x2591 #LIGHT SHADE +0xb1 0x2592 #MEDIUM SHADE +0xb2 0x2593 #DARK SHADE +0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL +0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT +0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE +0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE +0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE +0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE +0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT +0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL +0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT +0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT +0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE +0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE +0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT +0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT +0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL +0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL +0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT +0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL +0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL +0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE +0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE +0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT +0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT +0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL +0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL +0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT +0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL +0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL +0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE +0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE +0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE +0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE +0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE +0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE +0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE +0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE +0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE +0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE +0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT +0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT +0xdb 0x2588 #FULL BLOCK +0xdc 0x2584 #LOWER HALF BLOCK +0xdd 0x258c #LEFT HALF BLOCK +0xde 0x2590 #RIGHT HALF BLOCK +0xdf 0x2580 #UPPER HALF BLOCK +0xe0 0x03b1 #GREEK SMALL LETTER ALPHA +0xe1 0x00df #LATIN SMALL LETTER SHARP S +0xe2 0x0393 #GREEK CAPITAL LETTER GAMMA +0xe3 0x03c0 #GREEK SMALL LETTER PI +0xe4 0x03a3 #GREEK CAPITAL LETTER SIGMA +0xe5 0x03c3 #GREEK SMALL LETTER SIGMA +0xe6 0x00b5 #MICRO SIGN +0xe7 0x03c4 #GREEK SMALL LETTER TAU +0xe8 0x03a6 #GREEK CAPITAL LETTER PHI +0xe9 0x0398 #GREEK CAPITAL LETTER THETA +0xea 0x03a9 #GREEK CAPITAL LETTER OMEGA +0xeb 0x03b4 #GREEK SMALL LETTER DELTA +0xec 0x221e #INFINITY +0xed 0x03c6 #GREEK SMALL LETTER PHI +0xee 0x03b5 #GREEK SMALL LETTER EPSILON +0xef 0x2229 #INTERSECTION +0xf0 0x2261 #IDENTICAL TO +0xf1 0x00b1 #PLUS-MINUS SIGN +0xf2 0x2265 #GREATER-THAN OR EQUAL TO +0xf3 0x2264 #LESS-THAN OR EQUAL TO +0xf4 0x2320 #TOP HALF INTEGRAL +0xf5 0x2321 #BOTTOM HALF INTEGRAL +0xf6 0x00f7 #DIVISION SIGN +0xf7 0x2248 #ALMOST EQUAL TO +0xf8 0x00b0 #DEGREE SIGN +0xf9 0x2219 #BULLET OPERATOR +0xfa 0x00b7 #MIDDLE DOT +0xfb 0x221a #SQUARE ROOT +0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N +0xfd 0x00b2 #SUPERSCRIPT TWO +0xfe 0x25a0 #BLACK SQUARE +0xff 0x00a0 #NO-BREAK SPACE + \ No newline at end of file diff --git a/data/CP737.TXT b/data/CP737.TXT new file mode 100644 index 0000000..6b8b5cc --- /dev/null +++ b/data/CP737.TXT @@ -0,0 +1,274 @@ +# +# Name: cp737_DOSGreek to Unicode table +# Unicode version: 2.0 +# Table version: 2.00 +# Table format: Format A +# Date: 04/24/96 +# Contact: Shawn.Steele@microsoft.com +# +# General notes: none +# +# Format: Three tab-separated columns +# Column #1 is the cp737_DOSGreek code (in hex) +# Column #2 is the Unicode (in hex as 0xXXXX) +# Column #3 is the Unicode name (follows a comment sign, '#') +# +# The entries are in cp737_DOSGreek order +# +0x00 0x0000 #NULL +0x01 0x0001 #START OF HEADING +0x02 0x0002 #START OF TEXT +0x03 0x0003 #END OF TEXT +0x04 0x0004 #END OF TRANSMISSION +0x05 0x0005 #ENQUIRY +0x06 0x0006 #ACKNOWLEDGE +0x07 0x0007 #BELL +0x08 0x0008 #BACKSPACE +0x09 0x0009 #HORIZONTAL TABULATION +0x0a 0x000a #LINE FEED +0x0b 0x000b #VERTICAL TABULATION +0x0c 0x000c #FORM FEED +0x0d 0x000d #CARRIAGE RETURN +0x0e 0x000e #SHIFT OUT +0x0f 0x000f #SHIFT IN +0x10 0x0010 #DATA LINK ESCAPE +0x11 0x0011 #DEVICE CONTROL ONE +0x12 0x0012 #DEVICE CONTROL TWO +0x13 0x0013 #DEVICE CONTROL THREE +0x14 0x0014 #DEVICE CONTROL FOUR +0x15 0x0015 #NEGATIVE ACKNOWLEDGE +0x16 0x0016 #SYNCHRONOUS IDLE +0x17 0x0017 #END OF TRANSMISSION BLOCK +0x18 0x0018 #CANCEL +0x19 0x0019 #END OF MEDIUM +0x1a 0x001a #SUBSTITUTE +0x1b 0x001b #ESCAPE +0x1c 0x001c #FILE SEPARATOR +0x1d 0x001d #GROUP SEPARATOR +0x1e 0x001e #RECORD SEPARATOR +0x1f 0x001f #UNIT SEPARATOR +0x20 0x0020 #SPACE +0x21 0x0021 #EXCLAMATION MARK +0x22 0x0022 #QUOTATION MARK +0x23 0x0023 #NUMBER SIGN +0x24 0x0024 #DOLLAR SIGN +0x25 0x0025 #PERCENT SIGN +0x26 0x0026 #AMPERSAND +0x27 0x0027 #APOSTROPHE +0x28 0x0028 #LEFT PARENTHESIS +0x29 0x0029 #RIGHT PARENTHESIS +0x2a 0x002a #ASTERISK +0x2b 0x002b #PLUS SIGN +0x2c 0x002c #COMMA +0x2d 0x002d #HYPHEN-MINUS +0x2e 0x002e #FULL STOP +0x2f 0x002f #SOLIDUS +0x30 0x0030 #DIGIT ZERO +0x31 0x0031 #DIGIT ONE +0x32 0x0032 #DIGIT TWO +0x33 0x0033 #DIGIT THREE +0x34 0x0034 #DIGIT FOUR +0x35 0x0035 #DIGIT FIVE +0x36 0x0036 #DIGIT SIX +0x37 0x0037 #DIGIT SEVEN +0x38 0x0038 #DIGIT EIGHT +0x39 0x0039 #DIGIT NINE +0x3a 0x003a #COLON +0x3b 0x003b #SEMICOLON +0x3c 0x003c #LESS-THAN SIGN +0x3d 0x003d #EQUALS SIGN +0x3e 0x003e #GREATER-THAN SIGN +0x3f 0x003f #QUESTION MARK +0x40 0x0040 #COMMERCIAL AT +0x41 0x0041 #LATIN CAPITAL LETTER A +0x42 0x0042 #LATIN CAPITAL LETTER B +0x43 0x0043 #LATIN CAPITAL LETTER C +0x44 0x0044 #LATIN CAPITAL LETTER D +0x45 0x0045 #LATIN CAPITAL LETTER E +0x46 0x0046 #LATIN CAPITAL LETTER F +0x47 0x0047 #LATIN CAPITAL LETTER G +0x48 0x0048 #LATIN CAPITAL LETTER H +0x49 0x0049 #LATIN CAPITAL LETTER I +0x4a 0x004a #LATIN CAPITAL LETTER J +0x4b 0x004b #LATIN CAPITAL LETTER K +0x4c 0x004c #LATIN CAPITAL LETTER L +0x4d 0x004d #LATIN CAPITAL LETTER M +0x4e 0x004e #LATIN CAPITAL LETTER N +0x4f 0x004f #LATIN CAPITAL LETTER O +0x50 0x0050 #LATIN CAPITAL LETTER P +0x51 0x0051 #LATIN CAPITAL LETTER Q +0x52 0x0052 #LATIN CAPITAL LETTER R +0x53 0x0053 #LATIN CAPITAL LETTER S +0x54 0x0054 #LATIN CAPITAL LETTER T +0x55 0x0055 #LATIN CAPITAL LETTER U +0x56 0x0056 #LATIN CAPITAL LETTER V +0x57 0x0057 #LATIN CAPITAL LETTER W +0x58 0x0058 #LATIN CAPITAL LETTER X +0x59 0x0059 #LATIN CAPITAL LETTER Y +0x5a 0x005a #LATIN CAPITAL LETTER Z +0x5b 0x005b #LEFT SQUARE BRACKET +0x5c 0x005c #REVERSE SOLIDUS +0x5d 0x005d #RIGHT SQUARE BRACKET +0x5e 0x005e #CIRCUMFLEX ACCENT +0x5f 0x005f #LOW LINE +0x60 0x0060 #GRAVE ACCENT +0x61 0x0061 #LATIN SMALL LETTER A +0x62 0x0062 #LATIN SMALL LETTER B +0x63 0x0063 #LATIN SMALL LETTER C +0x64 0x0064 #LATIN SMALL LETTER D +0x65 0x0065 #LATIN SMALL LETTER E +0x66 0x0066 #LATIN SMALL LETTER F +0x67 0x0067 #LATIN SMALL LETTER G +0x68 0x0068 #LATIN SMALL LETTER H +0x69 0x0069 #LATIN SMALL LETTER I +0x6a 0x006a #LATIN SMALL LETTER J +0x6b 0x006b #LATIN SMALL LETTER K +0x6c 0x006c #LATIN SMALL LETTER L +0x6d 0x006d #LATIN SMALL LETTER M +0x6e 0x006e #LATIN SMALL LETTER N +0x6f 0x006f #LATIN SMALL LETTER O +0x70 0x0070 #LATIN SMALL LETTER P +0x71 0x0071 #LATIN SMALL LETTER Q +0x72 0x0072 #LATIN SMALL LETTER R +0x73 0x0073 #LATIN SMALL LETTER S +0x74 0x0074 #LATIN SMALL LETTER T +0x75 0x0075 #LATIN SMALL LETTER U +0x76 0x0076 #LATIN SMALL LETTER V +0x77 0x0077 #LATIN SMALL LETTER W +0x78 0x0078 #LATIN SMALL LETTER X +0x79 0x0079 #LATIN SMALL LETTER Y +0x7a 0x007a #LATIN SMALL LETTER Z +0x7b 0x007b #LEFT CURLY BRACKET +0x7c 0x007c #VERTICAL LINE +0x7d 0x007d #RIGHT CURLY BRACKET +0x7e 0x007e #TILDE +0x7f 0x007f #DELETE +0x80 0x0391 #GREEK CAPITAL LETTER ALPHA +0x81 0x0392 #GREEK CAPITAL LETTER BETA +0x82 0x0393 #GREEK CAPITAL LETTER GAMMA +0x83 0x0394 #GREEK CAPITAL LETTER DELTA +0x84 0x0395 #GREEK CAPITAL LETTER EPSILON +0x85 0x0396 #GREEK CAPITAL LETTER ZETA +0x86 0x0397 #GREEK CAPITAL LETTER ETA +0x87 0x0398 #GREEK CAPITAL LETTER THETA +0x88 0x0399 #GREEK CAPITAL LETTER IOTA +0x89 0x039a #GREEK CAPITAL LETTER KAPPA +0x8a 0x039b #GREEK CAPITAL LETTER LAMDA +0x8b 0x039c #GREEK CAPITAL LETTER MU +0x8c 0x039d #GREEK CAPITAL LETTER NU +0x8d 0x039e #GREEK CAPITAL LETTER XI +0x8e 0x039f #GREEK CAPITAL LETTER OMICRON +0x8f 0x03a0 #GREEK CAPITAL LETTER PI +0x90 0x03a1 #GREEK CAPITAL LETTER RHO +0x91 0x03a3 #GREEK CAPITAL LETTER SIGMA +0x92 0x03a4 #GREEK CAPITAL LETTER TAU +0x93 0x03a5 #GREEK CAPITAL LETTER UPSILON +0x94 0x03a6 #GREEK CAPITAL LETTER PHI +0x95 0x03a7 #GREEK CAPITAL LETTER CHI +0x96 0x03a8 #GREEK CAPITAL LETTER PSI +0x97 0x03a9 #GREEK CAPITAL LETTER OMEGA +0x98 0x03b1 #GREEK SMALL LETTER ALPHA +0x99 0x03b2 #GREEK SMALL LETTER BETA +0x9a 0x03b3 #GREEK SMALL LETTER GAMMA +0x9b 0x03b4 #GREEK SMALL LETTER DELTA +0x9c 0x03b5 #GREEK SMALL LETTER EPSILON +0x9d 0x03b6 #GREEK SMALL LETTER ZETA +0x9e 0x03b7 #GREEK SMALL LETTER ETA +0x9f 0x03b8 #GREEK SMALL LETTER THETA +0xa0 0x03b9 #GREEK SMALL LETTER IOTA +0xa1 0x03ba #GREEK SMALL LETTER KAPPA +0xa2 0x03bb #GREEK SMALL LETTER LAMDA +0xa3 0x03bc #GREEK SMALL LETTER MU +0xa4 0x03bd #GREEK SMALL LETTER NU +0xa5 0x03be #GREEK SMALL LETTER XI +0xa6 0x03bf #GREEK SMALL LETTER OMICRON +0xa7 0x03c0 #GREEK SMALL LETTER PI +0xa8 0x03c1 #GREEK SMALL LETTER RHO +0xa9 0x03c3 #GREEK SMALL LETTER SIGMA +0xaa 0x03c2 #GREEK SMALL LETTER FINAL SIGMA +0xab 0x03c4 #GREEK SMALL LETTER TAU +0xac 0x03c5 #GREEK SMALL LETTER UPSILON +0xad 0x03c6 #GREEK SMALL LETTER PHI +0xae 0x03c7 #GREEK SMALL LETTER CHI +0xaf 0x03c8 #GREEK SMALL LETTER PSI +0xb0 0x2591 #LIGHT SHADE +0xb1 0x2592 #MEDIUM SHADE +0xb2 0x2593 #DARK SHADE +0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL +0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT +0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE +0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE +0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE +0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE +0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT +0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL +0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT +0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT +0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE +0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE +0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT +0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT +0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL +0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL +0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT +0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL +0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL +0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE +0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE +0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT +0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT +0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL +0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL +0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT +0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL +0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL +0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE +0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE +0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE +0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE +0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE +0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE +0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE +0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE +0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE +0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE +0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT +0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT +0xdb 0x2588 #FULL BLOCK +0xdc 0x2584 #LOWER HALF BLOCK +0xdd 0x258c #LEFT HALF BLOCK +0xde 0x2590 #RIGHT HALF BLOCK +0xdf 0x2580 #UPPER HALF BLOCK +0xe0 0x03c9 #GREEK SMALL LETTER OMEGA +0xe1 0x03ac #GREEK SMALL LETTER ALPHA WITH TONOS +0xe2 0x03ad #GREEK SMALL LETTER EPSILON WITH TONOS +0xe3 0x03ae #GREEK SMALL LETTER ETA WITH TONOS +0xe4 0x03ca #GREEK SMALL LETTER IOTA WITH DIALYTIKA +0xe5 0x03af #GREEK SMALL LETTER IOTA WITH TONOS +0xe6 0x03cc #GREEK SMALL LETTER OMICRON WITH TONOS +0xe7 0x03cd #GREEK SMALL LETTER UPSILON WITH TONOS +0xe8 0x03cb #GREEK SMALL LETTER UPSILON WITH DIALYTIKA +0xe9 0x03ce #GREEK SMALL LETTER OMEGA WITH TONOS +0xea 0x0386 #GREEK CAPITAL LETTER ALPHA WITH TONOS +0xeb 0x0388 #GREEK CAPITAL LETTER EPSILON WITH TONOS +0xec 0x0389 #GREEK CAPITAL LETTER ETA WITH TONOS +0xed 0x038a #GREEK CAPITAL LETTER IOTA WITH TONOS +0xee 0x038c #GREEK CAPITAL LETTER OMICRON WITH TONOS +0xef 0x038e #GREEK CAPITAL LETTER UPSILON WITH TONOS +0xf0 0x038f #GREEK CAPITAL LETTER OMEGA WITH TONOS +0xf1 0x00b1 #PLUS-MINUS SIGN +0xf2 0x2265 #GREATER-THAN OR EQUAL TO +0xf3 0x2264 #LESS-THAN OR EQUAL TO +0xf4 0x03aa #GREEK CAPITAL LETTER IOTA WITH DIALYTIKA +0xf5 0x03ab #GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA +0xf6 0x00f7 #DIVISION SIGN +0xf7 0x2248 #ALMOST EQUAL TO +0xf8 0x00b0 #DEGREE SIGN +0xf9 0x2219 #BULLET OPERATOR +0xfa 0x00b7 #MIDDLE DOT +0xfb 0x221a #SQUARE ROOT +0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N +0xfd 0x00b2 #SUPERSCRIPT TWO +0xfe 0x25a0 #BLACK SQUARE +0xff 0x00a0 #NO-BREAK SPACE + \ No newline at end of file diff --git a/data/CP775.TXT b/data/CP775.TXT new file mode 100644 index 0000000..49f2cd3 --- /dev/null +++ b/data/CP775.TXT @@ -0,0 +1,275 @@ +# +# Name: cp775_DOSBaltRim to Unicode table +# Unicode version: 2.0 +# Table version: 2.00 +# Table format: Format A +# Date: 04/24/96 +# Contact: Shawn.Steele@microsoft.com +# +# General notes: none +# +# Format: Three tab-separated columns +# Column #1 is the cp775_DOSBaltRim code (in hex) +# Column #2 is the Unicode (in hex as 0xXXXX) +# Column #3 is the Unicode name (follows a comment sign, '#') +# +# The entries are in cp775_DOSBaltRim order +# +0x00 0x0000 #NULL +0x01 0x0001 #START OF HEADING +0x02 0x0002 #START OF TEXT +0x03 0x0003 #END OF TEXT +0x04 0x0004 #END OF TRANSMISSION +0x05 0x0005 #ENQUIRY +0x06 0x0006 #ACKNOWLEDGE +0x07 0x0007 #BELL +0x08 0x0008 #BACKSPACE +0x09 0x0009 #HORIZONTAL TABULATION +0x0a 0x000a #LINE FEED +0x0b 0x000b #VERTICAL TABULATION +0x0c 0x000c #FORM FEED +0x0d 0x000d #CARRIAGE RETURN +0x0e 0x000e #SHIFT OUT +0x0f 0x000f #SHIFT IN +0x10 0x0010 #DATA LINK ESCAPE +0x11 0x0011 #DEVICE CONTROL ONE +0x12 0x0012 #DEVICE CONTROL TWO +0x13 0x0013 #DEVICE CONTROL THREE +0x14 0x0014 #DEVICE CONTROL FOUR +0x15 0x0015 #NEGATIVE ACKNOWLEDGE +0x16 0x0016 #SYNCHRONOUS IDLE +0x17 0x0017 #END OF TRANSMISSION BLOCK +0x18 0x0018 #CANCEL +0x19 0x0019 #END OF MEDIUM +0x1a 0x001a #SUBSTITUTE +0x1b 0x001b #ESCAPE +0x1c 0x001c #FILE SEPARATOR +0x1d 0x001d #GROUP SEPARATOR +0x1e 0x001e #RECORD SEPARATOR +0x1f 0x001f #UNIT SEPARATOR +0x20 0x0020 #SPACE +0x21 0x0021 #EXCLAMATION MARK +0x22 0x0022 #QUOTATION MARK +0x23 0x0023 #NUMBER SIGN +0x24 0x0024 #DOLLAR SIGN +0x25 0x0025 #PERCENT SIGN +0x26 0x0026 #AMPERSAND +0x27 0x0027 #APOSTROPHE +0x28 0x0028 #LEFT PARENTHESIS +0x29 0x0029 #RIGHT PARENTHESIS +0x2a 0x002a #ASTERISK +0x2b 0x002b #PLUS SIGN +0x2c 0x002c #COMMA +0x2d 0x002d #HYPHEN-MINUS +0x2e 0x002e #FULL STOP +0x2f 0x002f #SOLIDUS +0x30 0x0030 #DIGIT ZERO +0x31 0x0031 #DIGIT ONE +0x32 0x0032 #DIGIT TWO +0x33 0x0033 #DIGIT THREE +0x34 0x0034 #DIGIT FOUR +0x35 0x0035 #DIGIT FIVE +0x36 0x0036 #DIGIT SIX +0x37 0x0037 #DIGIT SEVEN +0x38 0x0038 #DIGIT EIGHT +0x39 0x0039 #DIGIT NINE +0x3a 0x003a #COLON +0x3b 0x003b #SEMICOLON +0x3c 0x003c #LESS-THAN SIGN +0x3d 0x003d #EQUALS SIGN +0x3e 0x003e #GREATER-THAN SIGN +0x3f 0x003f #QUESTION MARK +0x40 0x0040 #COMMERCIAL AT +0x41 0x0041 #LATIN CAPITAL LETTER A +0x42 0x0042 #LATIN CAPITAL LETTER B +0x43 0x0043 #LATIN CAPITAL LETTER C +0x44 0x0044 #LATIN CAPITAL LETTER D +0x45 0x0045 #LATIN CAPITAL LETTER E +0x46 0x0046 #LATIN CAPITAL LETTER F +0x47 0x0047 #LATIN CAPITAL LETTER G +0x48 0x0048 #LATIN CAPITAL LETTER H +0x49 0x0049 #LATIN CAPITAL LETTER I +0x4a 0x004a #LATIN CAPITAL LETTER J +0x4b 0x004b #LATIN CAPITAL LETTER K +0x4c 0x004c #LATIN CAPITAL LETTER L +0x4d 0x004d #LATIN CAPITAL LETTER M +0x4e 0x004e #LATIN CAPITAL LETTER N +0x4f 0x004f #LATIN CAPITAL LETTER O +0x50 0x0050 #LATIN CAPITAL LETTER P +0x51 0x0051 #LATIN CAPITAL LETTER Q +0x52 0x0052 #LATIN CAPITAL LETTER R +0x53 0x0053 #LATIN CAPITAL LETTER S +0x54 0x0054 #LATIN CAPITAL LETTER T +0x55 0x0055 #LATIN CAPITAL LETTER U +0x56 0x0056 #LATIN CAPITAL LETTER V +0x57 0x0057 #LATIN CAPITAL LETTER W +0x58 0x0058 #LATIN CAPITAL LETTER X +0x59 0x0059 #LATIN CAPITAL LETTER Y +0x5a 0x005a #LATIN CAPITAL LETTER Z +0x5b 0x005b #LEFT SQUARE BRACKET +0x5c 0x005c #REVERSE SOLIDUS +0x5d 0x005d #RIGHT SQUARE BRACKET +0x5e 0x005e #CIRCUMFLEX ACCENT +0x5f 0x005f #LOW LINE +0x60 0x0060 #GRAVE ACCENT +0x61 0x0061 #LATIN SMALL LETTER A +0x62 0x0062 #LATIN SMALL LETTER B +0x63 0x0063 #LATIN SMALL LETTER C +0x64 0x0064 #LATIN SMALL LETTER D +0x65 0x0065 #LATIN SMALL LETTER E +0x66 0x0066 #LATIN SMALL LETTER F +0x67 0x0067 #LATIN SMALL LETTER G +0x68 0x0068 #LATIN SMALL LETTER H +0x69 0x0069 #LATIN SMALL LETTER I +0x6a 0x006a #LATIN SMALL LETTER J +0x6b 0x006b #LATIN SMALL LETTER K +0x6c 0x006c #LATIN SMALL LETTER L +0x6d 0x006d #LATIN SMALL LETTER M +0x6e 0x006e #LATIN SMALL LETTER N +0x6f 0x006f #LATIN SMALL LETTER O +0x70 0x0070 #LATIN SMALL LETTER P +0x71 0x0071 #LATIN SMALL LETTER Q +0x72 0x0072 #LATIN SMALL LETTER R +0x73 0x0073 #LATIN SMALL LETTER S +0x74 0x0074 #LATIN SMALL LETTER T +0x75 0x0075 #LATIN SMALL LETTER U +0x76 0x0076 #LATIN SMALL LETTER V +0x77 0x0077 #LATIN SMALL LETTER W +0x78 0x0078 #LATIN SMALL LETTER X +0x79 0x0079 #LATIN SMALL LETTER Y +0x7a 0x007a #LATIN SMALL LETTER Z +0x7b 0x007b #LEFT CURLY BRACKET +0x7c 0x007c #VERTICAL LINE +0x7d 0x007d #RIGHT CURLY BRACKET +0x7e 0x007e #TILDE +0x7f 0x007f #DELETE +0x80 0x0106 #LATIN CAPITAL LETTER C WITH ACUTE +0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS +0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE +0x83 0x0101 #LATIN SMALL LETTER A WITH MACRON +0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS +0x85 0x0123 #LATIN SMALL LETTER G WITH CEDILLA +0x86 0x00e5 #LATIN SMALL LETTER A WITH RING ABOVE +0x87 0x0107 #LATIN SMALL LETTER C WITH ACUTE +0x88 0x0142 #LATIN SMALL LETTER L WITH STROKE +0x89 0x0113 #LATIN SMALL LETTER E WITH MACRON +0x8a 0x0156 #LATIN CAPITAL LETTER R WITH CEDILLA +0x8b 0x0157 #LATIN SMALL LETTER R WITH CEDILLA +0x8c 0x012b #LATIN SMALL LETTER I WITH MACRON +0x8d 0x0179 #LATIN CAPITAL LETTER Z WITH ACUTE +0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS +0x8f 0x00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE +0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE +0x91 0x00e6 #LATIN SMALL LIGATURE AE +0x92 0x00c6 #LATIN CAPITAL LIGATURE AE +0x93 0x014d #LATIN SMALL LETTER O WITH MACRON +0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS +0x95 0x0122 #LATIN CAPITAL LETTER G WITH CEDILLA +0x96 0x00a2 #CENT SIGN +0x97 0x015a #LATIN CAPITAL LETTER S WITH ACUTE +0x98 0x015b #LATIN SMALL LETTER S WITH ACUTE +0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS +0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS +0x9b 0x00f8 #LATIN SMALL LETTER O WITH STROKE +0x9c 0x00a3 #POUND SIGN +0x9d 0x00d8 #LATIN CAPITAL LETTER O WITH STROKE +0x9e 0x00d7 #MULTIPLICATION SIGN +0x9f 0x00a4 #CURRENCY SIGN +0xa0 0x0100 #LATIN CAPITAL LETTER A WITH MACRON +0xa1 0x012a #LATIN CAPITAL LETTER I WITH MACRON +0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE +0xa3 0x017b #LATIN CAPITAL LETTER Z WITH DOT ABOVE +0xa4 0x017c #LATIN SMALL LETTER Z WITH DOT ABOVE +0xa5 0x017a #LATIN SMALL LETTER Z WITH ACUTE +0xa6 0x201d #RIGHT DOUBLE QUOTATION MARK +0xa7 0x00a6 #BROKEN BAR +0xa8 0x00a9 #COPYRIGHT SIGN +0xa9 0x00ae #REGISTERED SIGN +0xaa 0x00ac #NOT SIGN +0xab 0x00bd #VULGAR FRACTION ONE HALF +0xac 0x00bc #VULGAR FRACTION ONE QUARTER +0xad 0x0141 #LATIN CAPITAL LETTER L WITH STROKE +0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +0xb0 0x2591 #LIGHT SHADE +0xb1 0x2592 #MEDIUM SHADE +0xb2 0x2593 #DARK SHADE +0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL +0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT +0xb5 0x0104 #LATIN CAPITAL LETTER A WITH OGONEK +0xb6 0x010c #LATIN CAPITAL LETTER C WITH CARON +0xb7 0x0118 #LATIN CAPITAL LETTER E WITH OGONEK +0xb8 0x0116 #LATIN CAPITAL LETTER E WITH DOT ABOVE +0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT +0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL +0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT +0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT +0xbd 0x012e #LATIN CAPITAL LETTER I WITH OGONEK +0xbe 0x0160 #LATIN CAPITAL LETTER S WITH CARON +0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT +0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT +0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL +0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL +0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT +0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL +0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL +0xc6 0x0172 #LATIN CAPITAL LETTER U WITH OGONEK +0xc7 0x016a #LATIN CAPITAL LETTER U WITH MACRON +0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT +0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT +0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL +0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL +0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT +0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL +0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL +0xcf 0x017d #LATIN CAPITAL LETTER Z WITH CARON +0xd0 0x0105 #LATIN SMALL LETTER A WITH OGONEK +0xd1 0x010d #LATIN SMALL LETTER C WITH CARON +0xd2 0x0119 #LATIN SMALL LETTER E WITH OGONEK +0xd3 0x0117 #LATIN SMALL LETTER E WITH DOT ABOVE +0xd4 0x012f #LATIN SMALL LETTER I WITH OGONEK +0xd5 0x0161 #LATIN SMALL LETTER S WITH CARON +0xd6 0x0173 #LATIN SMALL LETTER U WITH OGONEK +0xd7 0x016b #LATIN SMALL LETTER U WITH MACRON +0xd8 0x017e #LATIN SMALL LETTER Z WITH CARON +0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT +0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT +0xdb 0x2588 #FULL BLOCK +0xdc 0x2584 #LOWER HALF BLOCK +0xdd 0x258c #LEFT HALF BLOCK +0xde 0x2590 #RIGHT HALF BLOCK +0xdf 0x2580 #UPPER HALF BLOCK +0xe0 0x00d3 #LATIN CAPITAL LETTER O WITH ACUTE +0xe1 0x00df #LATIN SMALL LETTER SHARP S (GERMAN) +0xe2 0x014c #LATIN CAPITAL LETTER O WITH MACRON +0xe3 0x0143 #LATIN CAPITAL LETTER N WITH ACUTE +0xe4 0x00f5 #LATIN SMALL LETTER O WITH TILDE +0xe5 0x00d5 #LATIN CAPITAL LETTER O WITH TILDE +0xe6 0x00b5 #MICRO SIGN +0xe7 0x0144 #LATIN SMALL LETTER N WITH ACUTE +0xe8 0x0136 #LATIN CAPITAL LETTER K WITH CEDILLA +0xe9 0x0137 #LATIN SMALL LETTER K WITH CEDILLA +0xea 0x013b #LATIN CAPITAL LETTER L WITH CEDILLA +0xeb 0x013c #LATIN SMALL LETTER L WITH CEDILLA +0xec 0x0146 #LATIN SMALL LETTER N WITH CEDILLA +0xed 0x0112 #LATIN CAPITAL LETTER E WITH MACRON +0xee 0x0145 #LATIN CAPITAL LETTER N WITH CEDILLA +0xef 0x2019 #RIGHT SINGLE QUOTATION MARK +0xf0 0x00ad #SOFT HYPHEN +0xf1 0x00b1 #PLUS-MINUS SIGN +0xf2 0x201c #LEFT DOUBLE QUOTATION MARK +0xf3 0x00be #VULGAR FRACTION THREE QUARTERS +0xf4 0x00b6 #PILCROW SIGN +0xf5 0x00a7 #SECTION SIGN +0xf6 0x00f7 #DIVISION SIGN +0xf7 0x201e #DOUBLE LOW-9 QUOTATION MARK +0xf8 0x00b0 #DEGREE SIGN +0xf9 0x2219 #BULLET OPERATOR +0xfa 0x00b7 #MIDDLE DOT +0xfb 0x00b9 #SUPERSCRIPT ONE +0xfc 0x00b3 #SUPERSCRIPT THREE +0xfd 0x00b2 #SUPERSCRIPT TWO +0xfe 0x25a0 #BLACK SQUARE +0xff 0x00a0 #NO-BREAK SPACE + + \ No newline at end of file diff --git a/data/CP850.TXT b/data/CP850.TXT new file mode 100644 index 0000000..ef47b43 --- /dev/null +++ b/data/CP850.TXT @@ -0,0 +1,274 @@ +# +# Name: cp850_DOSLatin1 to Unicode table +# Unicode version: 2.0 +# Table version: 2.00 +# Table format: Format A +# Date: 04/24/96 +# Contact: Shawn.Steele@microsoft.com +# +# General notes: none +# +# Format: Three tab-separated columns +# Column #1 is the cp850_DOSLatin1 code (in hex) +# Column #2 is the Unicode (in hex as 0xXXXX) +# Column #3 is the Unicode name (follows a comment sign, '#') +# +# The entries are in cp850_DOSLatin1 order +# +0x00 0x0000 #NULL +0x01 0x0001 #START OF HEADING +0x02 0x0002 #START OF TEXT +0x03 0x0003 #END OF TEXT +0x04 0x0004 #END OF TRANSMISSION +0x05 0x0005 #ENQUIRY +0x06 0x0006 #ACKNOWLEDGE +0x07 0x0007 #BELL +0x08 0x0008 #BACKSPACE +0x09 0x0009 #HORIZONTAL TABULATION +0x0a 0x000a #LINE FEED +0x0b 0x000b #VERTICAL TABULATION +0x0c 0x000c #FORM FEED +0x0d 0x000d #CARRIAGE RETURN +0x0e 0x000e #SHIFT OUT +0x0f 0x000f #SHIFT IN +0x10 0x0010 #DATA LINK ESCAPE +0x11 0x0011 #DEVICE CONTROL ONE +0x12 0x0012 #DEVICE CONTROL TWO +0x13 0x0013 #DEVICE CONTROL THREE +0x14 0x0014 #DEVICE CONTROL FOUR +0x15 0x0015 #NEGATIVE ACKNOWLEDGE +0x16 0x0016 #SYNCHRONOUS IDLE +0x17 0x0017 #END OF TRANSMISSION BLOCK +0x18 0x0018 #CANCEL +0x19 0x0019 #END OF MEDIUM +0x1a 0x001a #SUBSTITUTE +0x1b 0x001b #ESCAPE +0x1c 0x001c #FILE SEPARATOR +0x1d 0x001d #GROUP SEPARATOR +0x1e 0x001e #RECORD SEPARATOR +0x1f 0x001f #UNIT SEPARATOR +0x20 0x0020 #SPACE +0x21 0x0021 #EXCLAMATION MARK +0x22 0x0022 #QUOTATION MARK +0x23 0x0023 #NUMBER SIGN +0x24 0x0024 #DOLLAR SIGN +0x25 0x0025 #PERCENT SIGN +0x26 0x0026 #AMPERSAND +0x27 0x0027 #APOSTROPHE +0x28 0x0028 #LEFT PARENTHESIS +0x29 0x0029 #RIGHT PARENTHESIS +0x2a 0x002a #ASTERISK +0x2b 0x002b #PLUS SIGN +0x2c 0x002c #COMMA +0x2d 0x002d #HYPHEN-MINUS +0x2e 0x002e #FULL STOP +0x2f 0x002f #SOLIDUS +0x30 0x0030 #DIGIT ZERO +0x31 0x0031 #DIGIT ONE +0x32 0x0032 #DIGIT TWO +0x33 0x0033 #DIGIT THREE +0x34 0x0034 #DIGIT FOUR +0x35 0x0035 #DIGIT FIVE +0x36 0x0036 #DIGIT SIX +0x37 0x0037 #DIGIT SEVEN +0x38 0x0038 #DIGIT EIGHT +0x39 0x0039 #DIGIT NINE +0x3a 0x003a #COLON +0x3b 0x003b #SEMICOLON +0x3c 0x003c #LESS-THAN SIGN +0x3d 0x003d #EQUALS SIGN +0x3e 0x003e #GREATER-THAN SIGN +0x3f 0x003f #QUESTION MARK +0x40 0x0040 #COMMERCIAL AT +0x41 0x0041 #LATIN CAPITAL LETTER A +0x42 0x0042 #LATIN CAPITAL LETTER B +0x43 0x0043 #LATIN CAPITAL LETTER C +0x44 0x0044 #LATIN CAPITAL LETTER D +0x45 0x0045 #LATIN CAPITAL LETTER E +0x46 0x0046 #LATIN CAPITAL LETTER F +0x47 0x0047 #LATIN CAPITAL LETTER G +0x48 0x0048 #LATIN CAPITAL LETTER H +0x49 0x0049 #LATIN CAPITAL LETTER I +0x4a 0x004a #LATIN CAPITAL LETTER J +0x4b 0x004b #LATIN CAPITAL LETTER K +0x4c 0x004c #LATIN CAPITAL LETTER L +0x4d 0x004d #LATIN CAPITAL LETTER M +0x4e 0x004e #LATIN CAPITAL LETTER N +0x4f 0x004f #LATIN CAPITAL LETTER O +0x50 0x0050 #LATIN CAPITAL LETTER P +0x51 0x0051 #LATIN CAPITAL LETTER Q +0x52 0x0052 #LATIN CAPITAL LETTER R +0x53 0x0053 #LATIN CAPITAL LETTER S +0x54 0x0054 #LATIN CAPITAL LETTER T +0x55 0x0055 #LATIN CAPITAL LETTER U +0x56 0x0056 #LATIN CAPITAL LETTER V +0x57 0x0057 #LATIN CAPITAL LETTER W +0x58 0x0058 #LATIN CAPITAL LETTER X +0x59 0x0059 #LATIN CAPITAL LETTER Y +0x5a 0x005a #LATIN CAPITAL LETTER Z +0x5b 0x005b #LEFT SQUARE BRACKET +0x5c 0x005c #REVERSE SOLIDUS +0x5d 0x005d #RIGHT SQUARE BRACKET +0x5e 0x005e #CIRCUMFLEX ACCENT +0x5f 0x005f #LOW LINE +0x60 0x0060 #GRAVE ACCENT +0x61 0x0061 #LATIN SMALL LETTER A +0x62 0x0062 #LATIN SMALL LETTER B +0x63 0x0063 #LATIN SMALL LETTER C +0x64 0x0064 #LATIN SMALL LETTER D +0x65 0x0065 #LATIN SMALL LETTER E +0x66 0x0066 #LATIN SMALL LETTER F +0x67 0x0067 #LATIN SMALL LETTER G +0x68 0x0068 #LATIN SMALL LETTER H +0x69 0x0069 #LATIN SMALL LETTER I +0x6a 0x006a #LATIN SMALL LETTER J +0x6b 0x006b #LATIN SMALL LETTER K +0x6c 0x006c #LATIN SMALL LETTER L +0x6d 0x006d #LATIN SMALL LETTER M +0x6e 0x006e #LATIN SMALL LETTER N +0x6f 0x006f #LATIN SMALL LETTER O +0x70 0x0070 #LATIN SMALL LETTER P +0x71 0x0071 #LATIN SMALL LETTER Q +0x72 0x0072 #LATIN SMALL LETTER R +0x73 0x0073 #LATIN SMALL LETTER S +0x74 0x0074 #LATIN SMALL LETTER T +0x75 0x0075 #LATIN SMALL LETTER U +0x76 0x0076 #LATIN SMALL LETTER V +0x77 0x0077 #LATIN SMALL LETTER W +0x78 0x0078 #LATIN SMALL LETTER X +0x79 0x0079 #LATIN SMALL LETTER Y +0x7a 0x007a #LATIN SMALL LETTER Z +0x7b 0x007b #LEFT CURLY BRACKET +0x7c 0x007c #VERTICAL LINE +0x7d 0x007d #RIGHT CURLY BRACKET +0x7e 0x007e #TILDE +0x7f 0x007f #DELETE +0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA +0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS +0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE +0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX +0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS +0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE +0x86 0x00e5 #LATIN SMALL LETTER A WITH RING ABOVE +0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA +0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX +0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS +0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE +0x8b 0x00ef #LATIN SMALL LETTER I WITH DIAERESIS +0x8c 0x00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX +0x8d 0x00ec #LATIN SMALL LETTER I WITH GRAVE +0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS +0x8f 0x00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE +0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE +0x91 0x00e6 #LATIN SMALL LIGATURE AE +0x92 0x00c6 #LATIN CAPITAL LIGATURE AE +0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX +0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS +0x95 0x00f2 #LATIN SMALL LETTER O WITH GRAVE +0x96 0x00fb #LATIN SMALL LETTER U WITH CIRCUMFLEX +0x97 0x00f9 #LATIN SMALL LETTER U WITH GRAVE +0x98 0x00ff #LATIN SMALL LETTER Y WITH DIAERESIS +0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS +0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS +0x9b 0x00f8 #LATIN SMALL LETTER O WITH STROKE +0x9c 0x00a3 #POUND SIGN +0x9d 0x00d8 #LATIN CAPITAL LETTER O WITH STROKE +0x9e 0x00d7 #MULTIPLICATION SIGN +0x9f 0x0192 #LATIN SMALL LETTER F WITH HOOK +0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE +0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE +0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE +0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE +0xa4 0x00f1 #LATIN SMALL LETTER N WITH TILDE +0xa5 0x00d1 #LATIN CAPITAL LETTER N WITH TILDE +0xa6 0x00aa #FEMININE ORDINAL INDICATOR +0xa7 0x00ba #MASCULINE ORDINAL INDICATOR +0xa8 0x00bf #INVERTED QUESTION MARK +0xa9 0x00ae #REGISTERED SIGN +0xaa 0x00ac #NOT SIGN +0xab 0x00bd #VULGAR FRACTION ONE HALF +0xac 0x00bc #VULGAR FRACTION ONE QUARTER +0xad 0x00a1 #INVERTED EXCLAMATION MARK +0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +0xb0 0x2591 #LIGHT SHADE +0xb1 0x2592 #MEDIUM SHADE +0xb2 0x2593 #DARK SHADE +0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL +0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT +0xb5 0x00c1 #LATIN CAPITAL LETTER A WITH ACUTE +0xb6 0x00c2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX +0xb7 0x00c0 #LATIN CAPITAL LETTER A WITH GRAVE +0xb8 0x00a9 #COPYRIGHT SIGN +0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT +0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL +0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT +0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT +0xbd 0x00a2 #CENT SIGN +0xbe 0x00a5 #YEN SIGN +0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT +0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT +0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL +0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL +0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT +0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL +0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL +0xc6 0x00e3 #LATIN SMALL LETTER A WITH TILDE +0xc7 0x00c3 #LATIN CAPITAL LETTER A WITH TILDE +0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT +0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT +0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL +0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL +0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT +0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL +0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL +0xcf 0x00a4 #CURRENCY SIGN +0xd0 0x00f0 #LATIN SMALL LETTER ETH +0xd1 0x00d0 #LATIN CAPITAL LETTER ETH +0xd2 0x00ca #LATIN CAPITAL LETTER E WITH CIRCUMFLEX +0xd3 0x00cb #LATIN CAPITAL LETTER E WITH DIAERESIS +0xd4 0x00c8 #LATIN CAPITAL LETTER E WITH GRAVE +0xd5 0x0131 #LATIN SMALL LETTER DOTLESS I +0xd6 0x00cd #LATIN CAPITAL LETTER I WITH ACUTE +0xd7 0x00ce #LATIN CAPITAL LETTER I WITH CIRCUMFLEX +0xd8 0x00cf #LATIN CAPITAL LETTER I WITH DIAERESIS +0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT +0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT +0xdb 0x2588 #FULL BLOCK +0xdc 0x2584 #LOWER HALF BLOCK +0xdd 0x00a6 #BROKEN BAR +0xde 0x00cc #LATIN CAPITAL LETTER I WITH GRAVE +0xdf 0x2580 #UPPER HALF BLOCK +0xe0 0x00d3 #LATIN CAPITAL LETTER O WITH ACUTE +0xe1 0x00df #LATIN SMALL LETTER SHARP S +0xe2 0x00d4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX +0xe3 0x00d2 #LATIN CAPITAL LETTER O WITH GRAVE +0xe4 0x00f5 #LATIN SMALL LETTER O WITH TILDE +0xe5 0x00d5 #LATIN CAPITAL LETTER O WITH TILDE +0xe6 0x00b5 #MICRO SIGN +0xe7 0x00fe #LATIN SMALL LETTER THORN +0xe8 0x00de #LATIN CAPITAL LETTER THORN +0xe9 0x00da #LATIN CAPITAL LETTER U WITH ACUTE +0xea 0x00db #LATIN CAPITAL LETTER U WITH CIRCUMFLEX +0xeb 0x00d9 #LATIN CAPITAL LETTER U WITH GRAVE +0xec 0x00fd #LATIN SMALL LETTER Y WITH ACUTE +0xed 0x00dd #LATIN CAPITAL LETTER Y WITH ACUTE +0xee 0x00af #MACRON +0xef 0x00b4 #ACUTE ACCENT +0xf0 0x00ad #SOFT HYPHEN +0xf1 0x00b1 #PLUS-MINUS SIGN +0xf2 0x2017 #DOUBLE LOW LINE +0xf3 0x00be #VULGAR FRACTION THREE QUARTERS +0xf4 0x00b6 #PILCROW SIGN +0xf5 0x00a7 #SECTION SIGN +0xf6 0x00f7 #DIVISION SIGN +0xf7 0x00b8 #CEDILLA +0xf8 0x00b0 #DEGREE SIGN +0xf9 0x00a8 #DIAERESIS +0xfa 0x00b7 #MIDDLE DOT +0xfb 0x00b9 #SUPERSCRIPT ONE +0xfc 0x00b3 #SUPERSCRIPT THREE +0xfd 0x00b2 #SUPERSCRIPT TWO +0xfe 0x25a0 #BLACK SQUARE +0xff 0x00a0 #NO-BREAK SPACE + \ No newline at end of file diff --git a/data/CP852.TXT b/data/CP852.TXT new file mode 100644 index 0000000..c5f3564 --- /dev/null +++ b/data/CP852.TXT @@ -0,0 +1,274 @@ +# +# Name: cp852_DOSLatin2 to Unicode table +# Unicode version: 2.0 +# Table version: 2.00 +# Table format: Format A +# Date: 04/24/96 +# Contact: Shawn.Steele@microsoft.com +# +# General notes: none +# +# Format: Three tab-separated columns +# Column #1 is the cp852_DOSLatin2 code (in hex) +# Column #2 is the Unicode (in hex as 0xXXXX) +# Column #3 is the Unicode name (follows a comment sign, '#') +# +# The entries are in cp852_DOSLatin2 order +# +0x00 0x0000 #NULL +0x01 0x0001 #START OF HEADING +0x02 0x0002 #START OF TEXT +0x03 0x0003 #END OF TEXT +0x04 0x0004 #END OF TRANSMISSION +0x05 0x0005 #ENQUIRY +0x06 0x0006 #ACKNOWLEDGE +0x07 0x0007 #BELL +0x08 0x0008 #BACKSPACE +0x09 0x0009 #HORIZONTAL TABULATION +0x0a 0x000a #LINE FEED +0x0b 0x000b #VERTICAL TABULATION +0x0c 0x000c #FORM FEED +0x0d 0x000d #CARRIAGE RETURN +0x0e 0x000e #SHIFT OUT +0x0f 0x000f #SHIFT IN +0x10 0x0010 #DATA LINK ESCAPE +0x11 0x0011 #DEVICE CONTROL ONE +0x12 0x0012 #DEVICE CONTROL TWO +0x13 0x0013 #DEVICE CONTROL THREE +0x14 0x0014 #DEVICE CONTROL FOUR +0x15 0x0015 #NEGATIVE ACKNOWLEDGE +0x16 0x0016 #SYNCHRONOUS IDLE +0x17 0x0017 #END OF TRANSMISSION BLOCK +0x18 0x0018 #CANCEL +0x19 0x0019 #END OF MEDIUM +0x1a 0x001a #SUBSTITUTE +0x1b 0x001b #ESCAPE +0x1c 0x001c #FILE SEPARATOR +0x1d 0x001d #GROUP SEPARATOR +0x1e 0x001e #RECORD SEPARATOR +0x1f 0x001f #UNIT SEPARATOR +0x20 0x0020 #SPACE +0x21 0x0021 #EXCLAMATION MARK +0x22 0x0022 #QUOTATION MARK +0x23 0x0023 #NUMBER SIGN +0x24 0x0024 #DOLLAR SIGN +0x25 0x0025 #PERCENT SIGN +0x26 0x0026 #AMPERSAND +0x27 0x0027 #APOSTROPHE +0x28 0x0028 #LEFT PARENTHESIS +0x29 0x0029 #RIGHT PARENTHESIS +0x2a 0x002a #ASTERISK +0x2b 0x002b #PLUS SIGN +0x2c 0x002c #COMMA +0x2d 0x002d #HYPHEN-MINUS +0x2e 0x002e #FULL STOP +0x2f 0x002f #SOLIDUS +0x30 0x0030 #DIGIT ZERO +0x31 0x0031 #DIGIT ONE +0x32 0x0032 #DIGIT TWO +0x33 0x0033 #DIGIT THREE +0x34 0x0034 #DIGIT FOUR +0x35 0x0035 #DIGIT FIVE +0x36 0x0036 #DIGIT SIX +0x37 0x0037 #DIGIT SEVEN +0x38 0x0038 #DIGIT EIGHT +0x39 0x0039 #DIGIT NINE +0x3a 0x003a #COLON +0x3b 0x003b #SEMICOLON +0x3c 0x003c #LESS-THAN SIGN +0x3d 0x003d #EQUALS SIGN +0x3e 0x003e #GREATER-THAN SIGN +0x3f 0x003f #QUESTION MARK +0x40 0x0040 #COMMERCIAL AT +0x41 0x0041 #LATIN CAPITAL LETTER A +0x42 0x0042 #LATIN CAPITAL LETTER B +0x43 0x0043 #LATIN CAPITAL LETTER C +0x44 0x0044 #LATIN CAPITAL LETTER D +0x45 0x0045 #LATIN CAPITAL LETTER E +0x46 0x0046 #LATIN CAPITAL LETTER F +0x47 0x0047 #LATIN CAPITAL LETTER G +0x48 0x0048 #LATIN CAPITAL LETTER H +0x49 0x0049 #LATIN CAPITAL LETTER I +0x4a 0x004a #LATIN CAPITAL LETTER J +0x4b 0x004b #LATIN CAPITAL LETTER K +0x4c 0x004c #LATIN CAPITAL LETTER L +0x4d 0x004d #LATIN CAPITAL LETTER M +0x4e 0x004e #LATIN CAPITAL LETTER N +0x4f 0x004f #LATIN CAPITAL LETTER O +0x50 0x0050 #LATIN CAPITAL LETTER P +0x51 0x0051 #LATIN CAPITAL LETTER Q +0x52 0x0052 #LATIN CAPITAL LETTER R +0x53 0x0053 #LATIN CAPITAL LETTER S +0x54 0x0054 #LATIN CAPITAL LETTER T +0x55 0x0055 #LATIN CAPITAL LETTER U +0x56 0x0056 #LATIN CAPITAL LETTER V +0x57 0x0057 #LATIN CAPITAL LETTER W +0x58 0x0058 #LATIN CAPITAL LETTER X +0x59 0x0059 #LATIN CAPITAL LETTER Y +0x5a 0x005a #LATIN CAPITAL LETTER Z +0x5b 0x005b #LEFT SQUARE BRACKET +0x5c 0x005c #REVERSE SOLIDUS +0x5d 0x005d #RIGHT SQUARE BRACKET +0x5e 0x005e #CIRCUMFLEX ACCENT +0x5f 0x005f #LOW LINE +0x60 0x0060 #GRAVE ACCENT +0x61 0x0061 #LATIN SMALL LETTER A +0x62 0x0062 #LATIN SMALL LETTER B +0x63 0x0063 #LATIN SMALL LETTER C +0x64 0x0064 #LATIN SMALL LETTER D +0x65 0x0065 #LATIN SMALL LETTER E +0x66 0x0066 #LATIN SMALL LETTER F +0x67 0x0067 #LATIN SMALL LETTER G +0x68 0x0068 #LATIN SMALL LETTER H +0x69 0x0069 #LATIN SMALL LETTER I +0x6a 0x006a #LATIN SMALL LETTER J +0x6b 0x006b #LATIN SMALL LETTER K +0x6c 0x006c #LATIN SMALL LETTER L +0x6d 0x006d #LATIN SMALL LETTER M +0x6e 0x006e #LATIN SMALL LETTER N +0x6f 0x006f #LATIN SMALL LETTER O +0x70 0x0070 #LATIN SMALL LETTER P +0x71 0x0071 #LATIN SMALL LETTER Q +0x72 0x0072 #LATIN SMALL LETTER R +0x73 0x0073 #LATIN SMALL LETTER S +0x74 0x0074 #LATIN SMALL LETTER T +0x75 0x0075 #LATIN SMALL LETTER U +0x76 0x0076 #LATIN SMALL LETTER V +0x77 0x0077 #LATIN SMALL LETTER W +0x78 0x0078 #LATIN SMALL LETTER X +0x79 0x0079 #LATIN SMALL LETTER Y +0x7a 0x007a #LATIN SMALL LETTER Z +0x7b 0x007b #LEFT CURLY BRACKET +0x7c 0x007c #VERTICAL LINE +0x7d 0x007d #RIGHT CURLY BRACKET +0x7e 0x007e #TILDE +0x7f 0x007f #DELETE +0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA +0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS +0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE +0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX +0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS +0x85 0x016f #LATIN SMALL LETTER U WITH RING ABOVE +0x86 0x0107 #LATIN SMALL LETTER C WITH ACUTE +0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA +0x88 0x0142 #LATIN SMALL LETTER L WITH STROKE +0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS +0x8a 0x0150 #LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +0x8b 0x0151 #LATIN SMALL LETTER O WITH DOUBLE ACUTE +0x8c 0x00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX +0x8d 0x0179 #LATIN CAPITAL LETTER Z WITH ACUTE +0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS +0x8f 0x0106 #LATIN CAPITAL LETTER C WITH ACUTE +0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE +0x91 0x0139 #LATIN CAPITAL LETTER L WITH ACUTE +0x92 0x013a #LATIN SMALL LETTER L WITH ACUTE +0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX +0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS +0x95 0x013d #LATIN CAPITAL LETTER L WITH CARON +0x96 0x013e #LATIN SMALL LETTER L WITH CARON +0x97 0x015a #LATIN CAPITAL LETTER S WITH ACUTE +0x98 0x015b #LATIN SMALL LETTER S WITH ACUTE +0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS +0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS +0x9b 0x0164 #LATIN CAPITAL LETTER T WITH CARON +0x9c 0x0165 #LATIN SMALL LETTER T WITH CARON +0x9d 0x0141 #LATIN CAPITAL LETTER L WITH STROKE +0x9e 0x00d7 #MULTIPLICATION SIGN +0x9f 0x010d #LATIN SMALL LETTER C WITH CARON +0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE +0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE +0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE +0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE +0xa4 0x0104 #LATIN CAPITAL LETTER A WITH OGONEK +0xa5 0x0105 #LATIN SMALL LETTER A WITH OGONEK +0xa6 0x017d #LATIN CAPITAL LETTER Z WITH CARON +0xa7 0x017e #LATIN SMALL LETTER Z WITH CARON +0xa8 0x0118 #LATIN CAPITAL LETTER E WITH OGONEK +0xa9 0x0119 #LATIN SMALL LETTER E WITH OGONEK +0xaa 0x00ac #NOT SIGN +0xab 0x017a #LATIN SMALL LETTER Z WITH ACUTE +0xac 0x010c #LATIN CAPITAL LETTER C WITH CARON +0xad 0x015f #LATIN SMALL LETTER S WITH CEDILLA +0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +0xb0 0x2591 #LIGHT SHADE +0xb1 0x2592 #MEDIUM SHADE +0xb2 0x2593 #DARK SHADE +0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL +0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT +0xb5 0x00c1 #LATIN CAPITAL LETTER A WITH ACUTE +0xb6 0x00c2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX +0xb7 0x011a #LATIN CAPITAL LETTER E WITH CARON +0xb8 0x015e #LATIN CAPITAL LETTER S WITH CEDILLA +0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT +0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL +0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT +0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT +0xbd 0x017b #LATIN CAPITAL LETTER Z WITH DOT ABOVE +0xbe 0x017c #LATIN SMALL LETTER Z WITH DOT ABOVE +0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT +0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT +0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL +0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL +0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT +0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL +0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL +0xc6 0x0102 #LATIN CAPITAL LETTER A WITH BREVE +0xc7 0x0103 #LATIN SMALL LETTER A WITH BREVE +0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT +0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT +0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL +0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL +0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT +0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL +0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL +0xcf 0x00a4 #CURRENCY SIGN +0xd0 0x0111 #LATIN SMALL LETTER D WITH STROKE +0xd1 0x0110 #LATIN CAPITAL LETTER D WITH STROKE +0xd2 0x010e #LATIN CAPITAL LETTER D WITH CARON +0xd3 0x00cb #LATIN CAPITAL LETTER E WITH DIAERESIS +0xd4 0x010f #LATIN SMALL LETTER D WITH CARON +0xd5 0x0147 #LATIN CAPITAL LETTER N WITH CARON +0xd6 0x00cd #LATIN CAPITAL LETTER I WITH ACUTE +0xd7 0x00ce #LATIN CAPITAL LETTER I WITH CIRCUMFLEX +0xd8 0x011b #LATIN SMALL LETTER E WITH CARON +0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT +0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT +0xdb 0x2588 #FULL BLOCK +0xdc 0x2584 #LOWER HALF BLOCK +0xdd 0x0162 #LATIN CAPITAL LETTER T WITH CEDILLA +0xde 0x016e #LATIN CAPITAL LETTER U WITH RING ABOVE +0xdf 0x2580 #UPPER HALF BLOCK +0xe0 0x00d3 #LATIN CAPITAL LETTER O WITH ACUTE +0xe1 0x00df #LATIN SMALL LETTER SHARP S +0xe2 0x00d4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX +0xe3 0x0143 #LATIN CAPITAL LETTER N WITH ACUTE +0xe4 0x0144 #LATIN SMALL LETTER N WITH ACUTE +0xe5 0x0148 #LATIN SMALL LETTER N WITH CARON +0xe6 0x0160 #LATIN CAPITAL LETTER S WITH CARON +0xe7 0x0161 #LATIN SMALL LETTER S WITH CARON +0xe8 0x0154 #LATIN CAPITAL LETTER R WITH ACUTE +0xe9 0x00da #LATIN CAPITAL LETTER U WITH ACUTE +0xea 0x0155 #LATIN SMALL LETTER R WITH ACUTE +0xeb 0x0170 #LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +0xec 0x00fd #LATIN SMALL LETTER Y WITH ACUTE +0xed 0x00dd #LATIN CAPITAL LETTER Y WITH ACUTE +0xee 0x0163 #LATIN SMALL LETTER T WITH CEDILLA +0xef 0x00b4 #ACUTE ACCENT +0xf0 0x00ad #SOFT HYPHEN +0xf1 0x02dd #DOUBLE ACUTE ACCENT +0xf2 0x02db #OGONEK +0xf3 0x02c7 #CARON +0xf4 0x02d8 #BREVE +0xf5 0x00a7 #SECTION SIGN +0xf6 0x00f7 #DIVISION SIGN +0xf7 0x00b8 #CEDILLA +0xf8 0x00b0 #DEGREE SIGN +0xf9 0x00a8 #DIAERESIS +0xfa 0x02d9 #DOT ABOVE +0xfb 0x0171 #LATIN SMALL LETTER U WITH DOUBLE ACUTE +0xfc 0x0158 #LATIN CAPITAL LETTER R WITH CARON +0xfd 0x0159 #LATIN SMALL LETTER R WITH CARON +0xfe 0x25a0 #BLACK SQUARE +0xff 0x00a0 #NO-BREAK SPACE + \ No newline at end of file diff --git a/data/CP855.TXT b/data/CP855.TXT new file mode 100644 index 0000000..42063d8 --- /dev/null +++ b/data/CP855.TXT @@ -0,0 +1,275 @@ +# +# Name: cp855_DOSCyrillic to Unicode table +# Unicode version: 2.0 +# Table version: 2.00 +# Table format: Format A +# Date: 04/24/96 +# Contact: Shawn.Steele@microsoft.com +# +# General notes: none +# +# Format: Three tab-separated columns +# Column #1 is the cp855_DOSCyrillic code (in hex) +# Column #2 is the Unicode (in hex as 0xXXXX) +# Column #3 is the Unicode name (follows a comment sign, '#') +# +# The entries are in cp855_DOSCyrillic order +# +0x00 0x0000 #NULL +0x01 0x0001 #START OF HEADING +0x02 0x0002 #START OF TEXT +0x03 0x0003 #END OF TEXT +0x04 0x0004 #END OF TRANSMISSION +0x05 0x0005 #ENQUIRY +0x06 0x0006 #ACKNOWLEDGE +0x07 0x0007 #BELL +0x08 0x0008 #BACKSPACE +0x09 0x0009 #HORIZONTAL TABULATION +0x0a 0x000a #LINE FEED +0x0b 0x000b #VERTICAL TABULATION +0x0c 0x000c #FORM FEED +0x0d 0x000d #CARRIAGE RETURN +0x0e 0x000e #SHIFT OUT +0x0f 0x000f #SHIFT IN +0x10 0x0010 #DATA LINK ESCAPE +0x11 0x0011 #DEVICE CONTROL ONE +0x12 0x0012 #DEVICE CONTROL TWO +0x13 0x0013 #DEVICE CONTROL THREE +0x14 0x0014 #DEVICE CONTROL FOUR +0x15 0x0015 #NEGATIVE ACKNOWLEDGE +0x16 0x0016 #SYNCHRONOUS IDLE +0x17 0x0017 #END OF TRANSMISSION BLOCK +0x18 0x0018 #CANCEL +0x19 0x0019 #END OF MEDIUM +0x1a 0x001a #SUBSTITUTE +0x1b 0x001b #ESCAPE +0x1c 0x001c #FILE SEPARATOR +0x1d 0x001d #GROUP SEPARATOR +0x1e 0x001e #RECORD SEPARATOR +0x1f 0x001f #UNIT SEPARATOR +0x20 0x0020 #SPACE +0x21 0x0021 #EXCLAMATION MARK +0x22 0x0022 #QUOTATION MARK +0x23 0x0023 #NUMBER SIGN +0x24 0x0024 #DOLLAR SIGN +0x25 0x0025 #PERCENT SIGN +0x26 0x0026 #AMPERSAND +0x27 0x0027 #APOSTROPHE +0x28 0x0028 #LEFT PARENTHESIS +0x29 0x0029 #RIGHT PARENTHESIS +0x2a 0x002a #ASTERISK +0x2b 0x002b #PLUS SIGN +0x2c 0x002c #COMMA +0x2d 0x002d #HYPHEN-MINUS +0x2e 0x002e #FULL STOP +0x2f 0x002f #SOLIDUS +0x30 0x0030 #DIGIT ZERO +0x31 0x0031 #DIGIT ONE +0x32 0x0032 #DIGIT TWO +0x33 0x0033 #DIGIT THREE +0x34 0x0034 #DIGIT FOUR +0x35 0x0035 #DIGIT FIVE +0x36 0x0036 #DIGIT SIX +0x37 0x0037 #DIGIT SEVEN +0x38 0x0038 #DIGIT EIGHT +0x39 0x0039 #DIGIT NINE +0x3a 0x003a #COLON +0x3b 0x003b #SEMICOLON +0x3c 0x003c #LESS-THAN SIGN +0x3d 0x003d #EQUALS SIGN +0x3e 0x003e #GREATER-THAN SIGN +0x3f 0x003f #QUESTION MARK +0x40 0x0040 #COMMERCIAL AT +0x41 0x0041 #LATIN CAPITAL LETTER A +0x42 0x0042 #LATIN CAPITAL LETTER B +0x43 0x0043 #LATIN CAPITAL LETTER C +0x44 0x0044 #LATIN CAPITAL LETTER D +0x45 0x0045 #LATIN CAPITAL LETTER E +0x46 0x0046 #LATIN CAPITAL LETTER F +0x47 0x0047 #LATIN CAPITAL LETTER G +0x48 0x0048 #LATIN CAPITAL LETTER H +0x49 0x0049 #LATIN CAPITAL LETTER I +0x4a 0x004a #LATIN CAPITAL LETTER J +0x4b 0x004b #LATIN CAPITAL LETTER K +0x4c 0x004c #LATIN CAPITAL LETTER L +0x4d 0x004d #LATIN CAPITAL LETTER M +0x4e 0x004e #LATIN CAPITAL LETTER N +0x4f 0x004f #LATIN CAPITAL LETTER O +0x50 0x0050 #LATIN CAPITAL LETTER P +0x51 0x0051 #LATIN CAPITAL LETTER Q +0x52 0x0052 #LATIN CAPITAL LETTER R +0x53 0x0053 #LATIN CAPITAL LETTER S +0x54 0x0054 #LATIN CAPITAL LETTER T +0x55 0x0055 #LATIN CAPITAL LETTER U +0x56 0x0056 #LATIN CAPITAL LETTER V +0x57 0x0057 #LATIN CAPITAL LETTER W +0x58 0x0058 #LATIN CAPITAL LETTER X +0x59 0x0059 #LATIN CAPITAL LETTER Y +0x5a 0x005a #LATIN CAPITAL LETTER Z +0x5b 0x005b #LEFT SQUARE BRACKET +0x5c 0x005c #REVERSE SOLIDUS +0x5d 0x005d #RIGHT SQUARE BRACKET +0x5e 0x005e #CIRCUMFLEX ACCENT +0x5f 0x005f #LOW LINE +0x60 0x0060 #GRAVE ACCENT +0x61 0x0061 #LATIN SMALL LETTER A +0x62 0x0062 #LATIN SMALL LETTER B +0x63 0x0063 #LATIN SMALL LETTER C +0x64 0x0064 #LATIN SMALL LETTER D +0x65 0x0065 #LATIN SMALL LETTER E +0x66 0x0066 #LATIN SMALL LETTER F +0x67 0x0067 #LATIN SMALL LETTER G +0x68 0x0068 #LATIN SMALL LETTER H +0x69 0x0069 #LATIN SMALL LETTER I +0x6a 0x006a #LATIN SMALL LETTER J +0x6b 0x006b #LATIN SMALL LETTER K +0x6c 0x006c #LATIN SMALL LETTER L +0x6d 0x006d #LATIN SMALL LETTER M +0x6e 0x006e #LATIN SMALL LETTER N +0x6f 0x006f #LATIN SMALL LETTER O +0x70 0x0070 #LATIN SMALL LETTER P +0x71 0x0071 #LATIN SMALL LETTER Q +0x72 0x0072 #LATIN SMALL LETTER R +0x73 0x0073 #LATIN SMALL LETTER S +0x74 0x0074 #LATIN SMALL LETTER T +0x75 0x0075 #LATIN SMALL LETTER U +0x76 0x0076 #LATIN SMALL LETTER V +0x77 0x0077 #LATIN SMALL LETTER W +0x78 0x0078 #LATIN SMALL LETTER X +0x79 0x0079 #LATIN SMALL LETTER Y +0x7a 0x007a #LATIN SMALL LETTER Z +0x7b 0x007b #LEFT CURLY BRACKET +0x7c 0x007c #VERTICAL LINE +0x7d 0x007d #RIGHT CURLY BRACKET +0x7e 0x007e #TILDE +0x7f 0x007f #DELETE +0x80 0x0452 #CYRILLIC SMALL LETTER DJE +0x81 0x0402 #CYRILLIC CAPITAL LETTER DJE +0x82 0x0453 #CYRILLIC SMALL LETTER GJE +0x83 0x0403 #CYRILLIC CAPITAL LETTER GJE +0x84 0x0451 #CYRILLIC SMALL LETTER IO +0x85 0x0401 #CYRILLIC CAPITAL LETTER IO +0x86 0x0454 #CYRILLIC SMALL LETTER UKRAINIAN IE +0x87 0x0404 #CYRILLIC CAPITAL LETTER UKRAINIAN IE +0x88 0x0455 #CYRILLIC SMALL LETTER DZE +0x89 0x0405 #CYRILLIC CAPITAL LETTER DZE +0x8a 0x0456 #CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I +0x8b 0x0406 #CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I +0x8c 0x0457 #CYRILLIC SMALL LETTER YI +0x8d 0x0407 #CYRILLIC CAPITAL LETTER YI +0x8e 0x0458 #CYRILLIC SMALL LETTER JE +0x8f 0x0408 #CYRILLIC CAPITAL LETTER JE +0x90 0x0459 #CYRILLIC SMALL LETTER LJE +0x91 0x0409 #CYRILLIC CAPITAL LETTER LJE +0x92 0x045a #CYRILLIC SMALL LETTER NJE +0x93 0x040a #CYRILLIC CAPITAL LETTER NJE +0x94 0x045b #CYRILLIC SMALL LETTER TSHE +0x95 0x040b #CYRILLIC CAPITAL LETTER TSHE +0x96 0x045c #CYRILLIC SMALL LETTER KJE +0x97 0x040c #CYRILLIC CAPITAL LETTER KJE +0x98 0x045e #CYRILLIC SMALL LETTER SHORT U +0x99 0x040e #CYRILLIC CAPITAL LETTER SHORT U +0x9a 0x045f #CYRILLIC SMALL LETTER DZHE +0x9b 0x040f #CYRILLIC CAPITAL LETTER DZHE +0x9c 0x044e #CYRILLIC SMALL LETTER YU +0x9d 0x042e #CYRILLIC CAPITAL LETTER YU +0x9e 0x044a #CYRILLIC SMALL LETTER HARD SIGN +0x9f 0x042a #CYRILLIC CAPITAL LETTER HARD SIGN +0xa0 0x0430 #CYRILLIC SMALL LETTER A +0xa1 0x0410 #CYRILLIC CAPITAL LETTER A +0xa2 0x0431 #CYRILLIC SMALL LETTER BE +0xa3 0x0411 #CYRILLIC CAPITAL LETTER BE +0xa4 0x0446 #CYRILLIC SMALL LETTER TSE +0xa5 0x0426 #CYRILLIC CAPITAL LETTER TSE +0xa6 0x0434 #CYRILLIC SMALL LETTER DE +0xa7 0x0414 #CYRILLIC CAPITAL LETTER DE +0xa8 0x0435 #CYRILLIC SMALL LETTER IE +0xa9 0x0415 #CYRILLIC CAPITAL LETTER IE +0xaa 0x0444 #CYRILLIC SMALL LETTER EF +0xab 0x0424 #CYRILLIC CAPITAL LETTER EF +0xac 0x0433 #CYRILLIC SMALL LETTER GHE +0xad 0x0413 #CYRILLIC CAPITAL LETTER GHE +0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +0xb0 0x2591 #LIGHT SHADE +0xb1 0x2592 #MEDIUM SHADE +0xb2 0x2593 #DARK SHADE +0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL +0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT +0xb5 0x0445 #CYRILLIC SMALL LETTER HA +0xb6 0x0425 #CYRILLIC CAPITAL LETTER HA +0xb7 0x0438 #CYRILLIC SMALL LETTER I +0xb8 0x0418 #CYRILLIC CAPITAL LETTER I +0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT +0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL +0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT +0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT +0xbd 0x0439 #CYRILLIC SMALL LETTER SHORT I +0xbe 0x0419 #CYRILLIC CAPITAL LETTER SHORT I +0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT +0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT +0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL +0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL +0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT +0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL +0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL +0xc6 0x043a #CYRILLIC SMALL LETTER KA +0xc7 0x041a #CYRILLIC CAPITAL LETTER KA +0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT +0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT +0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL +0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL +0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT +0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL +0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL +0xcf 0x00a4 #CURRENCY SIGN +0xd0 0x043b #CYRILLIC SMALL LETTER EL +0xd1 0x041b #CYRILLIC CAPITAL LETTER EL +0xd2 0x043c #CYRILLIC SMALL LETTER EM +0xd3 0x041c #CYRILLIC CAPITAL LETTER EM +0xd4 0x043d #CYRILLIC SMALL LETTER EN +0xd5 0x041d #CYRILLIC CAPITAL LETTER EN +0xd6 0x043e #CYRILLIC SMALL LETTER O +0xd7 0x041e #CYRILLIC CAPITAL LETTER O +0xd8 0x043f #CYRILLIC SMALL LETTER PE +0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT +0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT +0xdb 0x2588 #FULL BLOCK +0xdc 0x2584 #LOWER HALF BLOCK +0xdd 0x041f #CYRILLIC CAPITAL LETTER PE +0xde 0x044f #CYRILLIC SMALL LETTER YA +0xdf 0x2580 #UPPER HALF BLOCK +0xe0 0x042f #CYRILLIC CAPITAL LETTER YA +0xe1 0x0440 #CYRILLIC SMALL LETTER ER +0xe2 0x0420 #CYRILLIC CAPITAL LETTER ER +0xe3 0x0441 #CYRILLIC SMALL LETTER ES +0xe4 0x0421 #CYRILLIC CAPITAL LETTER ES +0xe5 0x0442 #CYRILLIC SMALL LETTER TE +0xe6 0x0422 #CYRILLIC CAPITAL LETTER TE +0xe7 0x0443 #CYRILLIC SMALL LETTER U +0xe8 0x0423 #CYRILLIC CAPITAL LETTER U +0xe9 0x0436 #CYRILLIC SMALL LETTER ZHE +0xea 0x0416 #CYRILLIC CAPITAL LETTER ZHE +0xeb 0x0432 #CYRILLIC SMALL LETTER VE +0xec 0x0412 #CYRILLIC CAPITAL LETTER VE +0xed 0x044c #CYRILLIC SMALL LETTER SOFT SIGN +0xee 0x042c #CYRILLIC CAPITAL LETTER SOFT SIGN +0xef 0x2116 #NUMERO SIGN +0xf0 0x00ad #SOFT HYPHEN +0xf1 0x044b #CYRILLIC SMALL LETTER YERU +0xf2 0x042b #CYRILLIC CAPITAL LETTER YERU +0xf3 0x0437 #CYRILLIC SMALL LETTER ZE +0xf4 0x0417 #CYRILLIC CAPITAL LETTER ZE +0xf5 0x0448 #CYRILLIC SMALL LETTER SHA +0xf6 0x0428 #CYRILLIC CAPITAL LETTER SHA +0xf7 0x044d #CYRILLIC SMALL LETTER E +0xf8 0x042d #CYRILLIC CAPITAL LETTER E +0xf9 0x0449 #CYRILLIC SMALL LETTER SHCHA +0xfa 0x0429 #CYRILLIC CAPITAL LETTER SHCHA +0xfb 0x0447 #CYRILLIC SMALL LETTER CHE +0xfc 0x0427 #CYRILLIC CAPITAL LETTER CHE +0xfd 0x00a7 #SECTION SIGN +0xfe 0x25a0 #BLACK SQUARE +0xff 0x00a0 #NO-BREAK SPACE + + \ No newline at end of file diff --git a/data/CP857.TXT b/data/CP857.TXT new file mode 100644 index 0000000..5995085 --- /dev/null +++ b/data/CP857.TXT @@ -0,0 +1,275 @@ +# +# Name: cp857_DOSTurkish to Unicode table +# Unicode version: 2.0 +# Table version: 2.00 +# Table format: Format A +# Date: 04/24/96 +# Contact: Shawn.Steele@microsoft.com +# +# General notes: none +# +# Format: Three tab-separated columns +# Column #1 is the cp857_DOSTurkish code (in hex) +# Column #2 is the Unicode (in hex as 0xXXXX) +# Column #3 is the Unicode name (follows a comment sign, '#') +# +# The entries are in cp857_DOSTurkish order +# +0x00 0x0000 #NULL +0x01 0x0001 #START OF HEADING +0x02 0x0002 #START OF TEXT +0x03 0x0003 #END OF TEXT +0x04 0x0004 #END OF TRANSMISSION +0x05 0x0005 #ENQUIRY +0x06 0x0006 #ACKNOWLEDGE +0x07 0x0007 #BELL +0x08 0x0008 #BACKSPACE +0x09 0x0009 #HORIZONTAL TABULATION +0x0a 0x000a #LINE FEED +0x0b 0x000b #VERTICAL TABULATION +0x0c 0x000c #FORM FEED +0x0d 0x000d #CARRIAGE RETURN +0x0e 0x000e #SHIFT OUT +0x0f 0x000f #SHIFT IN +0x10 0x0010 #DATA LINK ESCAPE +0x11 0x0011 #DEVICE CONTROL ONE +0x12 0x0012 #DEVICE CONTROL TWO +0x13 0x0013 #DEVICE CONTROL THREE +0x14 0x0014 #DEVICE CONTROL FOUR +0x15 0x0015 #NEGATIVE ACKNOWLEDGE +0x16 0x0016 #SYNCHRONOUS IDLE +0x17 0x0017 #END OF TRANSMISSION BLOCK +0x18 0x0018 #CANCEL +0x19 0x0019 #END OF MEDIUM +0x1a 0x001a #SUBSTITUTE +0x1b 0x001b #ESCAPE +0x1c 0x001c #FILE SEPARATOR +0x1d 0x001d #GROUP SEPARATOR +0x1e 0x001e #RECORD SEPARATOR +0x1f 0x001f #UNIT SEPARATOR +0x20 0x0020 #SPACE +0x21 0x0021 #EXCLAMATION MARK +0x22 0x0022 #QUOTATION MARK +0x23 0x0023 #NUMBER SIGN +0x24 0x0024 #DOLLAR SIGN +0x25 0x0025 #PERCENT SIGN +0x26 0x0026 #AMPERSAND +0x27 0x0027 #APOSTROPHE +0x28 0x0028 #LEFT PARENTHESIS +0x29 0x0029 #RIGHT PARENTHESIS +0x2a 0x002a #ASTERISK +0x2b 0x002b #PLUS SIGN +0x2c 0x002c #COMMA +0x2d 0x002d #HYPHEN-MINUS +0x2e 0x002e #FULL STOP +0x2f 0x002f #SOLIDUS +0x30 0x0030 #DIGIT ZERO +0x31 0x0031 #DIGIT ONE +0x32 0x0032 #DIGIT TWO +0x33 0x0033 #DIGIT THREE +0x34 0x0034 #DIGIT FOUR +0x35 0x0035 #DIGIT FIVE +0x36 0x0036 #DIGIT SIX +0x37 0x0037 #DIGIT SEVEN +0x38 0x0038 #DIGIT EIGHT +0x39 0x0039 #DIGIT NINE +0x3a 0x003a #COLON +0x3b 0x003b #SEMICOLON +0x3c 0x003c #LESS-THAN SIGN +0x3d 0x003d #EQUALS SIGN +0x3e 0x003e #GREATER-THAN SIGN +0x3f 0x003f #QUESTION MARK +0x40 0x0040 #COMMERCIAL AT +0x41 0x0041 #LATIN CAPITAL LETTER A +0x42 0x0042 #LATIN CAPITAL LETTER B +0x43 0x0043 #LATIN CAPITAL LETTER C +0x44 0x0044 #LATIN CAPITAL LETTER D +0x45 0x0045 #LATIN CAPITAL LETTER E +0x46 0x0046 #LATIN CAPITAL LETTER F +0x47 0x0047 #LATIN CAPITAL LETTER G +0x48 0x0048 #LATIN CAPITAL LETTER H +0x49 0x0049 #LATIN CAPITAL LETTER I +0x4a 0x004a #LATIN CAPITAL LETTER J +0x4b 0x004b #LATIN CAPITAL LETTER K +0x4c 0x004c #LATIN CAPITAL LETTER L +0x4d 0x004d #LATIN CAPITAL LETTER M +0x4e 0x004e #LATIN CAPITAL LETTER N +0x4f 0x004f #LATIN CAPITAL LETTER O +0x50 0x0050 #LATIN CAPITAL LETTER P +0x51 0x0051 #LATIN CAPITAL LETTER Q +0x52 0x0052 #LATIN CAPITAL LETTER R +0x53 0x0053 #LATIN CAPITAL LETTER S +0x54 0x0054 #LATIN CAPITAL LETTER T +0x55 0x0055 #LATIN CAPITAL LETTER U +0x56 0x0056 #LATIN CAPITAL LETTER V +0x57 0x0057 #LATIN CAPITAL LETTER W +0x58 0x0058 #LATIN CAPITAL LETTER X +0x59 0x0059 #LATIN CAPITAL LETTER Y +0x5a 0x005a #LATIN CAPITAL LETTER Z +0x5b 0x005b #LEFT SQUARE BRACKET +0x5c 0x005c #REVERSE SOLIDUS +0x5d 0x005d #RIGHT SQUARE BRACKET +0x5e 0x005e #CIRCUMFLEX ACCENT +0x5f 0x005f #LOW LINE +0x60 0x0060 #GRAVE ACCENT +0x61 0x0061 #LATIN SMALL LETTER A +0x62 0x0062 #LATIN SMALL LETTER B +0x63 0x0063 #LATIN SMALL LETTER C +0x64 0x0064 #LATIN SMALL LETTER D +0x65 0x0065 #LATIN SMALL LETTER E +0x66 0x0066 #LATIN SMALL LETTER F +0x67 0x0067 #LATIN SMALL LETTER G +0x68 0x0068 #LATIN SMALL LETTER H +0x69 0x0069 #LATIN SMALL LETTER I +0x6a 0x006a #LATIN SMALL LETTER J +0x6b 0x006b #LATIN SMALL LETTER K +0x6c 0x006c #LATIN SMALL LETTER L +0x6d 0x006d #LATIN SMALL LETTER M +0x6e 0x006e #LATIN SMALL LETTER N +0x6f 0x006f #LATIN SMALL LETTER O +0x70 0x0070 #LATIN SMALL LETTER P +0x71 0x0071 #LATIN SMALL LETTER Q +0x72 0x0072 #LATIN SMALL LETTER R +0x73 0x0073 #LATIN SMALL LETTER S +0x74 0x0074 #LATIN SMALL LETTER T +0x75 0x0075 #LATIN SMALL LETTER U +0x76 0x0076 #LATIN SMALL LETTER V +0x77 0x0077 #LATIN SMALL LETTER W +0x78 0x0078 #LATIN SMALL LETTER X +0x79 0x0079 #LATIN SMALL LETTER Y +0x7a 0x007a #LATIN SMALL LETTER Z +0x7b 0x007b #LEFT CURLY BRACKET +0x7c 0x007c #VERTICAL LINE +0x7d 0x007d #RIGHT CURLY BRACKET +0x7e 0x007e #TILDE +0x7f 0x007f #DELETE +0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA +0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS +0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE +0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX +0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS +0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE +0x86 0x00e5 #LATIN SMALL LETTER A WITH RING ABOVE +0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA +0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX +0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS +0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE +0x8b 0x00ef #LATIN SMALL LETTER I WITH DIAERESIS +0x8c 0x00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX +0x8d 0x0131 #LATIN SMALL LETTER DOTLESS I +0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS +0x8f 0x00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE +0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE +0x91 0x00e6 #LATIN SMALL LIGATURE AE +0x92 0x00c6 #LATIN CAPITAL LIGATURE AE +0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX +0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS +0x95 0x00f2 #LATIN SMALL LETTER O WITH GRAVE +0x96 0x00fb #LATIN SMALL LETTER U WITH CIRCUMFLEX +0x97 0x00f9 #LATIN SMALL LETTER U WITH GRAVE +0x98 0x0130 #LATIN CAPITAL LETTER I WITH DOT ABOVE +0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS +0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS +0x9b 0x00f8 #LATIN SMALL LETTER O WITH STROKE +0x9c 0x00a3 #POUND SIGN +0x9d 0x00d8 #LATIN CAPITAL LETTER O WITH STROKE +0x9e 0x015e #LATIN CAPITAL LETTER S WITH CEDILLA +0x9f 0x015f #LATIN SMALL LETTER S WITH CEDILLA +0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE +0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE +0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE +0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE +0xa4 0x00f1 #LATIN SMALL LETTER N WITH TILDE +0xa5 0x00d1 #LATIN CAPITAL LETTER N WITH TILDE +0xa6 0x011e #LATIN CAPITAL LETTER G WITH BREVE +0xa7 0x011f #LATIN SMALL LETTER G WITH BREVE +0xa8 0x00bf #INVERTED QUESTION MARK +0xa9 0x00ae #REGISTERED SIGN +0xaa 0x00ac #NOT SIGN +0xab 0x00bd #VULGAR FRACTION ONE HALF +0xac 0x00bc #VULGAR FRACTION ONE QUARTER +0xad 0x00a1 #INVERTED EXCLAMATION MARK +0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +0xb0 0x2591 #LIGHT SHADE +0xb1 0x2592 #MEDIUM SHADE +0xb2 0x2593 #DARK SHADE +0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL +0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT +0xb5 0x00c1 #LATIN CAPITAL LETTER A WITH ACUTE +0xb6 0x00c2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX +0xb7 0x00c0 #LATIN CAPITAL LETTER A WITH GRAVE +0xb8 0x00a9 #COPYRIGHT SIGN +0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT +0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL +0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT +0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT +0xbd 0x00a2 #CENT SIGN +0xbe 0x00a5 #YEN SIGN +0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT +0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT +0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL +0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL +0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT +0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL +0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL +0xc6 0x00e3 #LATIN SMALL LETTER A WITH TILDE +0xc7 0x00c3 #LATIN CAPITAL LETTER A WITH TILDE +0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT +0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT +0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL +0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL +0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT +0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL +0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL +0xcf 0x00a4 #CURRENCY SIGN +0xd0 0x00ba #MASCULINE ORDINAL INDICATOR +0xd1 0x00aa #FEMININE ORDINAL INDICATOR +0xd2 0x00ca #LATIN CAPITAL LETTER E WITH CIRCUMFLEX +0xd3 0x00cb #LATIN CAPITAL LETTER E WITH DIAERESIS +0xd4 0x00c8 #LATIN CAPITAL LETTER E WITH GRAVE +0xd5 #UNDEFINED +0xd6 0x00cd #LATIN CAPITAL LETTER I WITH ACUTE +0xd7 0x00ce #LATIN CAPITAL LETTER I WITH CIRCUMFLEX +0xd8 0x00cf #LATIN CAPITAL LETTER I WITH DIAERESIS +0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT +0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT +0xdb 0x2588 #FULL BLOCK +0xdc 0x2584 #LOWER HALF BLOCK +0xdd 0x00a6 #BROKEN BAR +0xde 0x00cc #LATIN CAPITAL LETTER I WITH GRAVE +0xdf 0x2580 #UPPER HALF BLOCK +0xe0 0x00d3 #LATIN CAPITAL LETTER O WITH ACUTE +0xe1 0x00df #LATIN SMALL LETTER SHARP S +0xe2 0x00d4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX +0xe3 0x00d2 #LATIN CAPITAL LETTER O WITH GRAVE +0xe4 0x00f5 #LATIN SMALL LETTER O WITH TILDE +0xe5 0x00d5 #LATIN CAPITAL LETTER O WITH TILDE +0xe6 0x00b5 #MICRO SIGN +0xe7 #UNDEFINED +0xe8 0x00d7 #MULTIPLICATION SIGN +0xe9 0x00da #LATIN CAPITAL LETTER U WITH ACUTE +0xea 0x00db #LATIN CAPITAL LETTER U WITH CIRCUMFLEX +0xeb 0x00d9 #LATIN CAPITAL LETTER U WITH GRAVE +0xec 0x00ec #LATIN SMALL LETTER I WITH GRAVE +0xed 0x00ff #LATIN SMALL LETTER Y WITH DIAERESIS +0xee 0x00af #MACRON +0xef 0x00b4 #ACUTE ACCENT +0xf0 0x00ad #SOFT HYPHEN +0xf1 0x00b1 #PLUS-MINUS SIGN +0xf2 #UNDEFINED +0xf3 0x00be #VULGAR FRACTION THREE QUARTERS +0xf4 0x00b6 #PILCROW SIGN +0xf5 0x00a7 #SECTION SIGN +0xf6 0x00f7 #DIVISION SIGN +0xf7 0x00b8 #CEDILLA +0xf8 0x00b0 #DEGREE SIGN +0xf9 0x00a8 #DIAERESIS +0xfa 0x00b7 #MIDDLE DOT +0xfb 0x00b9 #SUPERSCRIPT ONE +0xfc 0x00b3 #SUPERSCRIPT THREE +0xfd 0x00b2 #SUPERSCRIPT TWO +0xfe 0x25a0 #BLACK SQUARE +0xff 0x00a0 #NO-BREAK SPACE + + \ No newline at end of file diff --git a/data/CP860.TXT b/data/CP860.TXT new file mode 100644 index 0000000..64e9378 --- /dev/null +++ b/data/CP860.TXT @@ -0,0 +1,275 @@ +# +# Name: cp860_DOSPortuguese to Unicode table +# Unicode version: 2.0 +# Table version: 2.00 +# Table format: Format A +# Date: 04/24/96 +# Contact: Shawn.Steele@microsoft.com +# +# General notes: none +# +# Format: Three tab-separated columns +# Column #1 is the cp860_DOSPortuguese code (in hex) +# Column #2 is the Unicode (in hex as 0xXXXX) +# Column #3 is the Unicode name (follows a comment sign, '#') +# +# The entries are in cp860_DOSPortuguese order +# +0x00 0x0000 #NULL +0x01 0x0001 #START OF HEADING +0x02 0x0002 #START OF TEXT +0x03 0x0003 #END OF TEXT +0x04 0x0004 #END OF TRANSMISSION +0x05 0x0005 #ENQUIRY +0x06 0x0006 #ACKNOWLEDGE +0x07 0x0007 #BELL +0x08 0x0008 #BACKSPACE +0x09 0x0009 #HORIZONTAL TABULATION +0x0a 0x000a #LINE FEED +0x0b 0x000b #VERTICAL TABULATION +0x0c 0x000c #FORM FEED +0x0d 0x000d #CARRIAGE RETURN +0x0e 0x000e #SHIFT OUT +0x0f 0x000f #SHIFT IN +0x10 0x0010 #DATA LINK ESCAPE +0x11 0x0011 #DEVICE CONTROL ONE +0x12 0x0012 #DEVICE CONTROL TWO +0x13 0x0013 #DEVICE CONTROL THREE +0x14 0x0014 #DEVICE CONTROL FOUR +0x15 0x0015 #NEGATIVE ACKNOWLEDGE +0x16 0x0016 #SYNCHRONOUS IDLE +0x17 0x0017 #END OF TRANSMISSION BLOCK +0x18 0x0018 #CANCEL +0x19 0x0019 #END OF MEDIUM +0x1a 0x001a #SUBSTITUTE +0x1b 0x001b #ESCAPE +0x1c 0x001c #FILE SEPARATOR +0x1d 0x001d #GROUP SEPARATOR +0x1e 0x001e #RECORD SEPARATOR +0x1f 0x001f #UNIT SEPARATOR +0x20 0x0020 #SPACE +0x21 0x0021 #EXCLAMATION MARK +0x22 0x0022 #QUOTATION MARK +0x23 0x0023 #NUMBER SIGN +0x24 0x0024 #DOLLAR SIGN +0x25 0x0025 #PERCENT SIGN +0x26 0x0026 #AMPERSAND +0x27 0x0027 #APOSTROPHE +0x28 0x0028 #LEFT PARENTHESIS +0x29 0x0029 #RIGHT PARENTHESIS +0x2a 0x002a #ASTERISK +0x2b 0x002b #PLUS SIGN +0x2c 0x002c #COMMA +0x2d 0x002d #HYPHEN-MINUS +0x2e 0x002e #FULL STOP +0x2f 0x002f #SOLIDUS +0x30 0x0030 #DIGIT ZERO +0x31 0x0031 #DIGIT ONE +0x32 0x0032 #DIGIT TWO +0x33 0x0033 #DIGIT THREE +0x34 0x0034 #DIGIT FOUR +0x35 0x0035 #DIGIT FIVE +0x36 0x0036 #DIGIT SIX +0x37 0x0037 #DIGIT SEVEN +0x38 0x0038 #DIGIT EIGHT +0x39 0x0039 #DIGIT NINE +0x3a 0x003a #COLON +0x3b 0x003b #SEMICOLON +0x3c 0x003c #LESS-THAN SIGN +0x3d 0x003d #EQUALS SIGN +0x3e 0x003e #GREATER-THAN SIGN +0x3f 0x003f #QUESTION MARK +0x40 0x0040 #COMMERCIAL AT +0x41 0x0041 #LATIN CAPITAL LETTER A +0x42 0x0042 #LATIN CAPITAL LETTER B +0x43 0x0043 #LATIN CAPITAL LETTER C +0x44 0x0044 #LATIN CAPITAL LETTER D +0x45 0x0045 #LATIN CAPITAL LETTER E +0x46 0x0046 #LATIN CAPITAL LETTER F +0x47 0x0047 #LATIN CAPITAL LETTER G +0x48 0x0048 #LATIN CAPITAL LETTER H +0x49 0x0049 #LATIN CAPITAL LETTER I +0x4a 0x004a #LATIN CAPITAL LETTER J +0x4b 0x004b #LATIN CAPITAL LETTER K +0x4c 0x004c #LATIN CAPITAL LETTER L +0x4d 0x004d #LATIN CAPITAL LETTER M +0x4e 0x004e #LATIN CAPITAL LETTER N +0x4f 0x004f #LATIN CAPITAL LETTER O +0x50 0x0050 #LATIN CAPITAL LETTER P +0x51 0x0051 #LATIN CAPITAL LETTER Q +0x52 0x0052 #LATIN CAPITAL LETTER R +0x53 0x0053 #LATIN CAPITAL LETTER S +0x54 0x0054 #LATIN CAPITAL LETTER T +0x55 0x0055 #LATIN CAPITAL LETTER U +0x56 0x0056 #LATIN CAPITAL LETTER V +0x57 0x0057 #LATIN CAPITAL LETTER W +0x58 0x0058 #LATIN CAPITAL LETTER X +0x59 0x0059 #LATIN CAPITAL LETTER Y +0x5a 0x005a #LATIN CAPITAL LETTER Z +0x5b 0x005b #LEFT SQUARE BRACKET +0x5c 0x005c #REVERSE SOLIDUS +0x5d 0x005d #RIGHT SQUARE BRACKET +0x5e 0x005e #CIRCUMFLEX ACCENT +0x5f 0x005f #LOW LINE +0x60 0x0060 #GRAVE ACCENT +0x61 0x0061 #LATIN SMALL LETTER A +0x62 0x0062 #LATIN SMALL LETTER B +0x63 0x0063 #LATIN SMALL LETTER C +0x64 0x0064 #LATIN SMALL LETTER D +0x65 0x0065 #LATIN SMALL LETTER E +0x66 0x0066 #LATIN SMALL LETTER F +0x67 0x0067 #LATIN SMALL LETTER G +0x68 0x0068 #LATIN SMALL LETTER H +0x69 0x0069 #LATIN SMALL LETTER I +0x6a 0x006a #LATIN SMALL LETTER J +0x6b 0x006b #LATIN SMALL LETTER K +0x6c 0x006c #LATIN SMALL LETTER L +0x6d 0x006d #LATIN SMALL LETTER M +0x6e 0x006e #LATIN SMALL LETTER N +0x6f 0x006f #LATIN SMALL LETTER O +0x70 0x0070 #LATIN SMALL LETTER P +0x71 0x0071 #LATIN SMALL LETTER Q +0x72 0x0072 #LATIN SMALL LETTER R +0x73 0x0073 #LATIN SMALL LETTER S +0x74 0x0074 #LATIN SMALL LETTER T +0x75 0x0075 #LATIN SMALL LETTER U +0x76 0x0076 #LATIN SMALL LETTER V +0x77 0x0077 #LATIN SMALL LETTER W +0x78 0x0078 #LATIN SMALL LETTER X +0x79 0x0079 #LATIN SMALL LETTER Y +0x7a 0x007a #LATIN SMALL LETTER Z +0x7b 0x007b #LEFT CURLY BRACKET +0x7c 0x007c #VERTICAL LINE +0x7d 0x007d #RIGHT CURLY BRACKET +0x7e 0x007e #TILDE +0x7f 0x007f #DELETE +0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA +0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS +0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE +0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX +0x84 0x00e3 #LATIN SMALL LETTER A WITH TILDE +0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE +0x86 0x00c1 #LATIN CAPITAL LETTER A WITH ACUTE +0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA +0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX +0x89 0x00ca #LATIN CAPITAL LETTER E WITH CIRCUMFLEX +0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE +0x8b 0x00cd #LATIN CAPITAL LETTER I WITH ACUTE +0x8c 0x00d4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX +0x8d 0x00ec #LATIN SMALL LETTER I WITH GRAVE +0x8e 0x00c3 #LATIN CAPITAL LETTER A WITH TILDE +0x8f 0x00c2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX +0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE +0x91 0x00c0 #LATIN CAPITAL LETTER A WITH GRAVE +0x92 0x00c8 #LATIN CAPITAL LETTER E WITH GRAVE +0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX +0x94 0x00f5 #LATIN SMALL LETTER O WITH TILDE +0x95 0x00f2 #LATIN SMALL LETTER O WITH GRAVE +0x96 0x00da #LATIN CAPITAL LETTER U WITH ACUTE +0x97 0x00f9 #LATIN SMALL LETTER U WITH GRAVE +0x98 0x00cc #LATIN CAPITAL LETTER I WITH GRAVE +0x99 0x00d5 #LATIN CAPITAL LETTER O WITH TILDE +0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS +0x9b 0x00a2 #CENT SIGN +0x9c 0x00a3 #POUND SIGN +0x9d 0x00d9 #LATIN CAPITAL LETTER U WITH GRAVE +0x9e 0x20a7 #PESETA SIGN +0x9f 0x00d3 #LATIN CAPITAL LETTER O WITH ACUTE +0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE +0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE +0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE +0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE +0xa4 0x00f1 #LATIN SMALL LETTER N WITH TILDE +0xa5 0x00d1 #LATIN CAPITAL LETTER N WITH TILDE +0xa6 0x00aa #FEMININE ORDINAL INDICATOR +0xa7 0x00ba #MASCULINE ORDINAL INDICATOR +0xa8 0x00bf #INVERTED QUESTION MARK +0xa9 0x00d2 #LATIN CAPITAL LETTER O WITH GRAVE +0xaa 0x00ac #NOT SIGN +0xab 0x00bd #VULGAR FRACTION ONE HALF +0xac 0x00bc #VULGAR FRACTION ONE QUARTER +0xad 0x00a1 #INVERTED EXCLAMATION MARK +0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +0xb0 0x2591 #LIGHT SHADE +0xb1 0x2592 #MEDIUM SHADE +0xb2 0x2593 #DARK SHADE +0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL +0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT +0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE +0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE +0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE +0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE +0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT +0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL +0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT +0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT +0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE +0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE +0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT +0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT +0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL +0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL +0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT +0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL +0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL +0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE +0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE +0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT +0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT +0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL +0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL +0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT +0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL +0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL +0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE +0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE +0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE +0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE +0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE +0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE +0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE +0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE +0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE +0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE +0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT +0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT +0xdb 0x2588 #FULL BLOCK +0xdc 0x2584 #LOWER HALF BLOCK +0xdd 0x258c #LEFT HALF BLOCK +0xde 0x2590 #RIGHT HALF BLOCK +0xdf 0x2580 #UPPER HALF BLOCK +0xe0 0x03b1 #GREEK SMALL LETTER ALPHA +0xe1 0x00df #LATIN SMALL LETTER SHARP S +0xe2 0x0393 #GREEK CAPITAL LETTER GAMMA +0xe3 0x03c0 #GREEK SMALL LETTER PI +0xe4 0x03a3 #GREEK CAPITAL LETTER SIGMA +0xe5 0x03c3 #GREEK SMALL LETTER SIGMA +0xe6 0x00b5 #MICRO SIGN +0xe7 0x03c4 #GREEK SMALL LETTER TAU +0xe8 0x03a6 #GREEK CAPITAL LETTER PHI +0xe9 0x0398 #GREEK CAPITAL LETTER THETA +0xea 0x03a9 #GREEK CAPITAL LETTER OMEGA +0xeb 0x03b4 #GREEK SMALL LETTER DELTA +0xec 0x221e #INFINITY +0xed 0x03c6 #GREEK SMALL LETTER PHI +0xee 0x03b5 #GREEK SMALL LETTER EPSILON +0xef 0x2229 #INTERSECTION +0xf0 0x2261 #IDENTICAL TO +0xf1 0x00b1 #PLUS-MINUS SIGN +0xf2 0x2265 #GREATER-THAN OR EQUAL TO +0xf3 0x2264 #LESS-THAN OR EQUAL TO +0xf4 0x2320 #TOP HALF INTEGRAL +0xf5 0x2321 #BOTTOM HALF INTEGRAL +0xf6 0x00f7 #DIVISION SIGN +0xf7 0x2248 #ALMOST EQUAL TO +0xf8 0x00b0 #DEGREE SIGN +0xf9 0x2219 #BULLET OPERATOR +0xfa 0x00b7 #MIDDLE DOT +0xfb 0x221a #SQUARE ROOT +0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N +0xfd 0x00b2 #SUPERSCRIPT TWO +0xfe 0x25a0 #BLACK SQUARE +0xff 0x00a0 #NO-BREAK SPACE + + \ No newline at end of file diff --git a/data/CP861.TXT b/data/CP861.TXT new file mode 100644 index 0000000..163b0b1 --- /dev/null +++ b/data/CP861.TXT @@ -0,0 +1,275 @@ +# +# Name: cp861_DOSIcelandic to Unicode table +# Unicode version: 2.0 +# Table version: 2.00 +# Table format: Format A +# Date: 04/24/96 +# Contact: Shawn.Steele@microsoft.com +# +# General notes: none +# +# Format: Three tab-separated columns +# Column #1 is the cp861_DOSIcelandic code (in hex) +# Column #2 is the Unicode (in hex as 0xXXXX) +# Column #3 is the Unicode name (follows a comment sign, '#') +# +# The entries are in cp861_DOSIcelandic order +# +0x00 0x0000 #NULL +0x01 0x0001 #START OF HEADING +0x02 0x0002 #START OF TEXT +0x03 0x0003 #END OF TEXT +0x04 0x0004 #END OF TRANSMISSION +0x05 0x0005 #ENQUIRY +0x06 0x0006 #ACKNOWLEDGE +0x07 0x0007 #BELL +0x08 0x0008 #BACKSPACE +0x09 0x0009 #HORIZONTAL TABULATION +0x0a 0x000a #LINE FEED +0x0b 0x000b #VERTICAL TABULATION +0x0c 0x000c #FORM FEED +0x0d 0x000d #CARRIAGE RETURN +0x0e 0x000e #SHIFT OUT +0x0f 0x000f #SHIFT IN +0x10 0x0010 #DATA LINK ESCAPE +0x11 0x0011 #DEVICE CONTROL ONE +0x12 0x0012 #DEVICE CONTROL TWO +0x13 0x0013 #DEVICE CONTROL THREE +0x14 0x0014 #DEVICE CONTROL FOUR +0x15 0x0015 #NEGATIVE ACKNOWLEDGE +0x16 0x0016 #SYNCHRONOUS IDLE +0x17 0x0017 #END OF TRANSMISSION BLOCK +0x18 0x0018 #CANCEL +0x19 0x0019 #END OF MEDIUM +0x1a 0x001a #SUBSTITUTE +0x1b 0x001b #ESCAPE +0x1c 0x001c #FILE SEPARATOR +0x1d 0x001d #GROUP SEPARATOR +0x1e 0x001e #RECORD SEPARATOR +0x1f 0x001f #UNIT SEPARATOR +0x20 0x0020 #SPACE +0x21 0x0021 #EXCLAMATION MARK +0x22 0x0022 #QUOTATION MARK +0x23 0x0023 #NUMBER SIGN +0x24 0x0024 #DOLLAR SIGN +0x25 0x0025 #PERCENT SIGN +0x26 0x0026 #AMPERSAND +0x27 0x0027 #APOSTROPHE +0x28 0x0028 #LEFT PARENTHESIS +0x29 0x0029 #RIGHT PARENTHESIS +0x2a 0x002a #ASTERISK +0x2b 0x002b #PLUS SIGN +0x2c 0x002c #COMMA +0x2d 0x002d #HYPHEN-MINUS +0x2e 0x002e #FULL STOP +0x2f 0x002f #SOLIDUS +0x30 0x0030 #DIGIT ZERO +0x31 0x0031 #DIGIT ONE +0x32 0x0032 #DIGIT TWO +0x33 0x0033 #DIGIT THREE +0x34 0x0034 #DIGIT FOUR +0x35 0x0035 #DIGIT FIVE +0x36 0x0036 #DIGIT SIX +0x37 0x0037 #DIGIT SEVEN +0x38 0x0038 #DIGIT EIGHT +0x39 0x0039 #DIGIT NINE +0x3a 0x003a #COLON +0x3b 0x003b #SEMICOLON +0x3c 0x003c #LESS-THAN SIGN +0x3d 0x003d #EQUALS SIGN +0x3e 0x003e #GREATER-THAN SIGN +0x3f 0x003f #QUESTION MARK +0x40 0x0040 #COMMERCIAL AT +0x41 0x0041 #LATIN CAPITAL LETTER A +0x42 0x0042 #LATIN CAPITAL LETTER B +0x43 0x0043 #LATIN CAPITAL LETTER C +0x44 0x0044 #LATIN CAPITAL LETTER D +0x45 0x0045 #LATIN CAPITAL LETTER E +0x46 0x0046 #LATIN CAPITAL LETTER F +0x47 0x0047 #LATIN CAPITAL LETTER G +0x48 0x0048 #LATIN CAPITAL LETTER H +0x49 0x0049 #LATIN CAPITAL LETTER I +0x4a 0x004a #LATIN CAPITAL LETTER J +0x4b 0x004b #LATIN CAPITAL LETTER K +0x4c 0x004c #LATIN CAPITAL LETTER L +0x4d 0x004d #LATIN CAPITAL LETTER M +0x4e 0x004e #LATIN CAPITAL LETTER N +0x4f 0x004f #LATIN CAPITAL LETTER O +0x50 0x0050 #LATIN CAPITAL LETTER P +0x51 0x0051 #LATIN CAPITAL LETTER Q +0x52 0x0052 #LATIN CAPITAL LETTER R +0x53 0x0053 #LATIN CAPITAL LETTER S +0x54 0x0054 #LATIN CAPITAL LETTER T +0x55 0x0055 #LATIN CAPITAL LETTER U +0x56 0x0056 #LATIN CAPITAL LETTER V +0x57 0x0057 #LATIN CAPITAL LETTER W +0x58 0x0058 #LATIN CAPITAL LETTER X +0x59 0x0059 #LATIN CAPITAL LETTER Y +0x5a 0x005a #LATIN CAPITAL LETTER Z +0x5b 0x005b #LEFT SQUARE BRACKET +0x5c 0x005c #REVERSE SOLIDUS +0x5d 0x005d #RIGHT SQUARE BRACKET +0x5e 0x005e #CIRCUMFLEX ACCENT +0x5f 0x005f #LOW LINE +0x60 0x0060 #GRAVE ACCENT +0x61 0x0061 #LATIN SMALL LETTER A +0x62 0x0062 #LATIN SMALL LETTER B +0x63 0x0063 #LATIN SMALL LETTER C +0x64 0x0064 #LATIN SMALL LETTER D +0x65 0x0065 #LATIN SMALL LETTER E +0x66 0x0066 #LATIN SMALL LETTER F +0x67 0x0067 #LATIN SMALL LETTER G +0x68 0x0068 #LATIN SMALL LETTER H +0x69 0x0069 #LATIN SMALL LETTER I +0x6a 0x006a #LATIN SMALL LETTER J +0x6b 0x006b #LATIN SMALL LETTER K +0x6c 0x006c #LATIN SMALL LETTER L +0x6d 0x006d #LATIN SMALL LETTER M +0x6e 0x006e #LATIN SMALL LETTER N +0x6f 0x006f #LATIN SMALL LETTER O +0x70 0x0070 #LATIN SMALL LETTER P +0x71 0x0071 #LATIN SMALL LETTER Q +0x72 0x0072 #LATIN SMALL LETTER R +0x73 0x0073 #LATIN SMALL LETTER S +0x74 0x0074 #LATIN SMALL LETTER T +0x75 0x0075 #LATIN SMALL LETTER U +0x76 0x0076 #LATIN SMALL LETTER V +0x77 0x0077 #LATIN SMALL LETTER W +0x78 0x0078 #LATIN SMALL LETTER X +0x79 0x0079 #LATIN SMALL LETTER Y +0x7a 0x007a #LATIN SMALL LETTER Z +0x7b 0x007b #LEFT CURLY BRACKET +0x7c 0x007c #VERTICAL LINE +0x7d 0x007d #RIGHT CURLY BRACKET +0x7e 0x007e #TILDE +0x7f 0x007f #DELETE +0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA +0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS +0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE +0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX +0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS +0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE +0x86 0x00e5 #LATIN SMALL LETTER A WITH RING ABOVE +0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA +0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX +0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS +0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE +0x8b 0x00d0 #LATIN CAPITAL LETTER ETH +0x8c 0x00f0 #LATIN SMALL LETTER ETH +0x8d 0x00de #LATIN CAPITAL LETTER THORN +0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS +0x8f 0x00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE +0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE +0x91 0x00e6 #LATIN SMALL LIGATURE AE +0x92 0x00c6 #LATIN CAPITAL LIGATURE AE +0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX +0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS +0x95 0x00fe #LATIN SMALL LETTER THORN +0x96 0x00fb #LATIN SMALL LETTER U WITH CIRCUMFLEX +0x97 0x00dd #LATIN CAPITAL LETTER Y WITH ACUTE +0x98 0x00fd #LATIN SMALL LETTER Y WITH ACUTE +0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS +0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS +0x9b 0x00f8 #LATIN SMALL LETTER O WITH STROKE +0x9c 0x00a3 #POUND SIGN +0x9d 0x00d8 #LATIN CAPITAL LETTER O WITH STROKE +0x9e 0x20a7 #PESETA SIGN +0x9f 0x0192 #LATIN SMALL LETTER F WITH HOOK +0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE +0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE +0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE +0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE +0xa4 0x00c1 #LATIN CAPITAL LETTER A WITH ACUTE +0xa5 0x00cd #LATIN CAPITAL LETTER I WITH ACUTE +0xa6 0x00d3 #LATIN CAPITAL LETTER O WITH ACUTE +0xa7 0x00da #LATIN CAPITAL LETTER U WITH ACUTE +0xa8 0x00bf #INVERTED QUESTION MARK +0xa9 0x2310 #REVERSED NOT SIGN +0xaa 0x00ac #NOT SIGN +0xab 0x00bd #VULGAR FRACTION ONE HALF +0xac 0x00bc #VULGAR FRACTION ONE QUARTER +0xad 0x00a1 #INVERTED EXCLAMATION MARK +0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +0xb0 0x2591 #LIGHT SHADE +0xb1 0x2592 #MEDIUM SHADE +0xb2 0x2593 #DARK SHADE +0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL +0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT +0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE +0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE +0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE +0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE +0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT +0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL +0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT +0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT +0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE +0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE +0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT +0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT +0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL +0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL +0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT +0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL +0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL +0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE +0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE +0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT +0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT +0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL +0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL +0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT +0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL +0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL +0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE +0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE +0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE +0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE +0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE +0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE +0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE +0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE +0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE +0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE +0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT +0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT +0xdb 0x2588 #FULL BLOCK +0xdc 0x2584 #LOWER HALF BLOCK +0xdd 0x258c #LEFT HALF BLOCK +0xde 0x2590 #RIGHT HALF BLOCK +0xdf 0x2580 #UPPER HALF BLOCK +0xe0 0x03b1 #GREEK SMALL LETTER ALPHA +0xe1 0x00df #LATIN SMALL LETTER SHARP S +0xe2 0x0393 #GREEK CAPITAL LETTER GAMMA +0xe3 0x03c0 #GREEK SMALL LETTER PI +0xe4 0x03a3 #GREEK CAPITAL LETTER SIGMA +0xe5 0x03c3 #GREEK SMALL LETTER SIGMA +0xe6 0x00b5 #MICRO SIGN +0xe7 0x03c4 #GREEK SMALL LETTER TAU +0xe8 0x03a6 #GREEK CAPITAL LETTER PHI +0xe9 0x0398 #GREEK CAPITAL LETTER THETA +0xea 0x03a9 #GREEK CAPITAL LETTER OMEGA +0xeb 0x03b4 #GREEK SMALL LETTER DELTA +0xec 0x221e #INFINITY +0xed 0x03c6 #GREEK SMALL LETTER PHI +0xee 0x03b5 #GREEK SMALL LETTER EPSILON +0xef 0x2229 #INTERSECTION +0xf0 0x2261 #IDENTICAL TO +0xf1 0x00b1 #PLUS-MINUS SIGN +0xf2 0x2265 #GREATER-THAN OR EQUAL TO +0xf3 0x2264 #LESS-THAN OR EQUAL TO +0xf4 0x2320 #TOP HALF INTEGRAL +0xf5 0x2321 #BOTTOM HALF INTEGRAL +0xf6 0x00f7 #DIVISION SIGN +0xf7 0x2248 #ALMOST EQUAL TO +0xf8 0x00b0 #DEGREE SIGN +0xf9 0x2219 #BULLET OPERATOR +0xfa 0x00b7 #MIDDLE DOT +0xfb 0x221a #SQUARE ROOT +0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N +0xfd 0x00b2 #SUPERSCRIPT TWO +0xfe 0x25a0 #BLACK SQUARE +0xff 0x00a0 #NO-BREAK SPACE + + \ No newline at end of file diff --git a/data/CP862.TXT b/data/CP862.TXT new file mode 100644 index 0000000..d33547a --- /dev/null +++ b/data/CP862.TXT @@ -0,0 +1,275 @@ +# +# Name: cp862_DOSHebrew to Unicode table +# Unicode version: 2.0 +# Table version: 2.00 +# Table format: Format A +# Date: 04/24/96 +# Contact: Shawn.Steele@microsoft.com +# +# General notes: none +# +# Format: Three tab-separated columns +# Column #1 is the cp862_DOSHebrew code (in hex) +# Column #2 is the Unicode (in hex as 0xXXXX) +# Column #3 is the Unicode name (follows a comment sign, '#') +# +# The entries are in cp862_DOSHebrew order +# +0x00 0x0000 #NULL +0x01 0x0001 #START OF HEADING +0x02 0x0002 #START OF TEXT +0x03 0x0003 #END OF TEXT +0x04 0x0004 #END OF TRANSMISSION +0x05 0x0005 #ENQUIRY +0x06 0x0006 #ACKNOWLEDGE +0x07 0x0007 #BELL +0x08 0x0008 #BACKSPACE +0x09 0x0009 #HORIZONTAL TABULATION +0x0a 0x000a #LINE FEED +0x0b 0x000b #VERTICAL TABULATION +0x0c 0x000c #FORM FEED +0x0d 0x000d #CARRIAGE RETURN +0x0e 0x000e #SHIFT OUT +0x0f 0x000f #SHIFT IN +0x10 0x0010 #DATA LINK ESCAPE +0x11 0x0011 #DEVICE CONTROL ONE +0x12 0x0012 #DEVICE CONTROL TWO +0x13 0x0013 #DEVICE CONTROL THREE +0x14 0x0014 #DEVICE CONTROL FOUR +0x15 0x0015 #NEGATIVE ACKNOWLEDGE +0x16 0x0016 #SYNCHRONOUS IDLE +0x17 0x0017 #END OF TRANSMISSION BLOCK +0x18 0x0018 #CANCEL +0x19 0x0019 #END OF MEDIUM +0x1a 0x001a #SUBSTITUTE +0x1b 0x001b #ESCAPE +0x1c 0x001c #FILE SEPARATOR +0x1d 0x001d #GROUP SEPARATOR +0x1e 0x001e #RECORD SEPARATOR +0x1f 0x001f #UNIT SEPARATOR +0x20 0x0020 #SPACE +0x21 0x0021 #EXCLAMATION MARK +0x22 0x0022 #QUOTATION MARK +0x23 0x0023 #NUMBER SIGN +0x24 0x0024 #DOLLAR SIGN +0x25 0x0025 #PERCENT SIGN +0x26 0x0026 #AMPERSAND +0x27 0x0027 #APOSTROPHE +0x28 0x0028 #LEFT PARENTHESIS +0x29 0x0029 #RIGHT PARENTHESIS +0x2a 0x002a #ASTERISK +0x2b 0x002b #PLUS SIGN +0x2c 0x002c #COMMA +0x2d 0x002d #HYPHEN-MINUS +0x2e 0x002e #FULL STOP +0x2f 0x002f #SOLIDUS +0x30 0x0030 #DIGIT ZERO +0x31 0x0031 #DIGIT ONE +0x32 0x0032 #DIGIT TWO +0x33 0x0033 #DIGIT THREE +0x34 0x0034 #DIGIT FOUR +0x35 0x0035 #DIGIT FIVE +0x36 0x0036 #DIGIT SIX +0x37 0x0037 #DIGIT SEVEN +0x38 0x0038 #DIGIT EIGHT +0x39 0x0039 #DIGIT NINE +0x3a 0x003a #COLON +0x3b 0x003b #SEMICOLON +0x3c 0x003c #LESS-THAN SIGN +0x3d 0x003d #EQUALS SIGN +0x3e 0x003e #GREATER-THAN SIGN +0x3f 0x003f #QUESTION MARK +0x40 0x0040 #COMMERCIAL AT +0x41 0x0041 #LATIN CAPITAL LETTER A +0x42 0x0042 #LATIN CAPITAL LETTER B +0x43 0x0043 #LATIN CAPITAL LETTER C +0x44 0x0044 #LATIN CAPITAL LETTER D +0x45 0x0045 #LATIN CAPITAL LETTER E +0x46 0x0046 #LATIN CAPITAL LETTER F +0x47 0x0047 #LATIN CAPITAL LETTER G +0x48 0x0048 #LATIN CAPITAL LETTER H +0x49 0x0049 #LATIN CAPITAL LETTER I +0x4a 0x004a #LATIN CAPITAL LETTER J +0x4b 0x004b #LATIN CAPITAL LETTER K +0x4c 0x004c #LATIN CAPITAL LETTER L +0x4d 0x004d #LATIN CAPITAL LETTER M +0x4e 0x004e #LATIN CAPITAL LETTER N +0x4f 0x004f #LATIN CAPITAL LETTER O +0x50 0x0050 #LATIN CAPITAL LETTER P +0x51 0x0051 #LATIN CAPITAL LETTER Q +0x52 0x0052 #LATIN CAPITAL LETTER R +0x53 0x0053 #LATIN CAPITAL LETTER S +0x54 0x0054 #LATIN CAPITAL LETTER T +0x55 0x0055 #LATIN CAPITAL LETTER U +0x56 0x0056 #LATIN CAPITAL LETTER V +0x57 0x0057 #LATIN CAPITAL LETTER W +0x58 0x0058 #LATIN CAPITAL LETTER X +0x59 0x0059 #LATIN CAPITAL LETTER Y +0x5a 0x005a #LATIN CAPITAL LETTER Z +0x5b 0x005b #LEFT SQUARE BRACKET +0x5c 0x005c #REVERSE SOLIDUS +0x5d 0x005d #RIGHT SQUARE BRACKET +0x5e 0x005e #CIRCUMFLEX ACCENT +0x5f 0x005f #LOW LINE +0x60 0x0060 #GRAVE ACCENT +0x61 0x0061 #LATIN SMALL LETTER A +0x62 0x0062 #LATIN SMALL LETTER B +0x63 0x0063 #LATIN SMALL LETTER C +0x64 0x0064 #LATIN SMALL LETTER D +0x65 0x0065 #LATIN SMALL LETTER E +0x66 0x0066 #LATIN SMALL LETTER F +0x67 0x0067 #LATIN SMALL LETTER G +0x68 0x0068 #LATIN SMALL LETTER H +0x69 0x0069 #LATIN SMALL LETTER I +0x6a 0x006a #LATIN SMALL LETTER J +0x6b 0x006b #LATIN SMALL LETTER K +0x6c 0x006c #LATIN SMALL LETTER L +0x6d 0x006d #LATIN SMALL LETTER M +0x6e 0x006e #LATIN SMALL LETTER N +0x6f 0x006f #LATIN SMALL LETTER O +0x70 0x0070 #LATIN SMALL LETTER P +0x71 0x0071 #LATIN SMALL LETTER Q +0x72 0x0072 #LATIN SMALL LETTER R +0x73 0x0073 #LATIN SMALL LETTER S +0x74 0x0074 #LATIN SMALL LETTER T +0x75 0x0075 #LATIN SMALL LETTER U +0x76 0x0076 #LATIN SMALL LETTER V +0x77 0x0077 #LATIN SMALL LETTER W +0x78 0x0078 #LATIN SMALL LETTER X +0x79 0x0079 #LATIN SMALL LETTER Y +0x7a 0x007a #LATIN SMALL LETTER Z +0x7b 0x007b #LEFT CURLY BRACKET +0x7c 0x007c #VERTICAL LINE +0x7d 0x007d #RIGHT CURLY BRACKET +0x7e 0x007e #TILDE +0x7f 0x007f #DELETE +0x80 0x05d0 #HEBREW LETTER ALEF +0x81 0x05d1 #HEBREW LETTER BET +0x82 0x05d2 #HEBREW LETTER GIMEL +0x83 0x05d3 #HEBREW LETTER DALET +0x84 0x05d4 #HEBREW LETTER HE +0x85 0x05d5 #HEBREW LETTER VAV +0x86 0x05d6 #HEBREW LETTER ZAYIN +0x87 0x05d7 #HEBREW LETTER HET +0x88 0x05d8 #HEBREW LETTER TET +0x89 0x05d9 #HEBREW LETTER YOD +0x8a 0x05da #HEBREW LETTER FINAL KAF +0x8b 0x05db #HEBREW LETTER KAF +0x8c 0x05dc #HEBREW LETTER LAMED +0x8d 0x05dd #HEBREW LETTER FINAL MEM +0x8e 0x05de #HEBREW LETTER MEM +0x8f 0x05df #HEBREW LETTER FINAL NUN +0x90 0x05e0 #HEBREW LETTER NUN +0x91 0x05e1 #HEBREW LETTER SAMEKH +0x92 0x05e2 #HEBREW LETTER AYIN +0x93 0x05e3 #HEBREW LETTER FINAL PE +0x94 0x05e4 #HEBREW LETTER PE +0x95 0x05e5 #HEBREW LETTER FINAL TSADI +0x96 0x05e6 #HEBREW LETTER TSADI +0x97 0x05e7 #HEBREW LETTER QOF +0x98 0x05e8 #HEBREW LETTER RESH +0x99 0x05e9 #HEBREW LETTER SHIN +0x9a 0x05ea #HEBREW LETTER TAV +0x9b 0x00a2 #CENT SIGN +0x9c 0x00a3 #POUND SIGN +0x9d 0x00a5 #YEN SIGN +0x9e 0x20a7 #PESETA SIGN +0x9f 0x0192 #LATIN SMALL LETTER F WITH HOOK +0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE +0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE +0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE +0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE +0xa4 0x00f1 #LATIN SMALL LETTER N WITH TILDE +0xa5 0x00d1 #LATIN CAPITAL LETTER N WITH TILDE +0xa6 0x00aa #FEMININE ORDINAL INDICATOR +0xa7 0x00ba #MASCULINE ORDINAL INDICATOR +0xa8 0x00bf #INVERTED QUESTION MARK +0xa9 0x2310 #REVERSED NOT SIGN +0xaa 0x00ac #NOT SIGN +0xab 0x00bd #VULGAR FRACTION ONE HALF +0xac 0x00bc #VULGAR FRACTION ONE QUARTER +0xad 0x00a1 #INVERTED EXCLAMATION MARK +0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +0xb0 0x2591 #LIGHT SHADE +0xb1 0x2592 #MEDIUM SHADE +0xb2 0x2593 #DARK SHADE +0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL +0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT +0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE +0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE +0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE +0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE +0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT +0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL +0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT +0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT +0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE +0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE +0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT +0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT +0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL +0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL +0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT +0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL +0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL +0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE +0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE +0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT +0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT +0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL +0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL +0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT +0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL +0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL +0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE +0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE +0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE +0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE +0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE +0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE +0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE +0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE +0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE +0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE +0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT +0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT +0xdb 0x2588 #FULL BLOCK +0xdc 0x2584 #LOWER HALF BLOCK +0xdd 0x258c #LEFT HALF BLOCK +0xde 0x2590 #RIGHT HALF BLOCK +0xdf 0x2580 #UPPER HALF BLOCK +0xe0 0x03b1 #GREEK SMALL LETTER ALPHA +0xe1 0x00df #LATIN SMALL LETTER SHARP S (GERMAN) +0xe2 0x0393 #GREEK CAPITAL LETTER GAMMA +0xe3 0x03c0 #GREEK SMALL LETTER PI +0xe4 0x03a3 #GREEK CAPITAL LETTER SIGMA +0xe5 0x03c3 #GREEK SMALL LETTER SIGMA +0xe6 0x00b5 #MICRO SIGN +0xe7 0x03c4 #GREEK SMALL LETTER TAU +0xe8 0x03a6 #GREEK CAPITAL LETTER PHI +0xe9 0x0398 #GREEK CAPITAL LETTER THETA +0xea 0x03a9 #GREEK CAPITAL LETTER OMEGA +0xeb 0x03b4 #GREEK SMALL LETTER DELTA +0xec 0x221e #INFINITY +0xed 0x03c6 #GREEK SMALL LETTER PHI +0xee 0x03b5 #GREEK SMALL LETTER EPSILON +0xef 0x2229 #INTERSECTION +0xf0 0x2261 #IDENTICAL TO +0xf1 0x00b1 #PLUS-MINUS SIGN +0xf2 0x2265 #GREATER-THAN OR EQUAL TO +0xf3 0x2264 #LESS-THAN OR EQUAL TO +0xf4 0x2320 #TOP HALF INTEGRAL +0xf5 0x2321 #BOTTOM HALF INTEGRAL +0xf6 0x00f7 #DIVISION SIGN +0xf7 0x2248 #ALMOST EQUAL TO +0xf8 0x00b0 #DEGREE SIGN +0xf9 0x2219 #BULLET OPERATOR +0xfa 0x00b7 #MIDDLE DOT +0xfb 0x221a #SQUARE ROOT +0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N +0xfd 0x00b2 #SUPERSCRIPT TWO +0xfe 0x25a0 #BLACK SQUARE +0xff 0x00a0 #NO-BREAK SPACE + + \ No newline at end of file diff --git a/data/CP863.TXT b/data/CP863.TXT new file mode 100644 index 0000000..19f3e8b --- /dev/null +++ b/data/CP863.TXT @@ -0,0 +1,275 @@ +# +# Name: cp863_DOSCanadaF to Unicode table +# Unicode version: 2.0 +# Table version: 2.00 +# Table format: Format A +# Date: 04/24/96 +# Contact: Shawn.Steele@microsoft.com +# +# General notes: none +# +# Format: Three tab-separated columns +# Column #1 is the cp863_DOSCanadaF code (in hex) +# Column #2 is the Unicode (in hex as 0xXXXX) +# Column #3 is the Unicode name (follows a comment sign, '#') +# +# The entries are in cp863_DOSCanadaF order +# +0x00 0x0000 #NULL +0x01 0x0001 #START OF HEADING +0x02 0x0002 #START OF TEXT +0x03 0x0003 #END OF TEXT +0x04 0x0004 #END OF TRANSMISSION +0x05 0x0005 #ENQUIRY +0x06 0x0006 #ACKNOWLEDGE +0x07 0x0007 #BELL +0x08 0x0008 #BACKSPACE +0x09 0x0009 #HORIZONTAL TABULATION +0x0a 0x000a #LINE FEED +0x0b 0x000b #VERTICAL TABULATION +0x0c 0x000c #FORM FEED +0x0d 0x000d #CARRIAGE RETURN +0x0e 0x000e #SHIFT OUT +0x0f 0x000f #SHIFT IN +0x10 0x0010 #DATA LINK ESCAPE +0x11 0x0011 #DEVICE CONTROL ONE +0x12 0x0012 #DEVICE CONTROL TWO +0x13 0x0013 #DEVICE CONTROL THREE +0x14 0x0014 #DEVICE CONTROL FOUR +0x15 0x0015 #NEGATIVE ACKNOWLEDGE +0x16 0x0016 #SYNCHRONOUS IDLE +0x17 0x0017 #END OF TRANSMISSION BLOCK +0x18 0x0018 #CANCEL +0x19 0x0019 #END OF MEDIUM +0x1a 0x001a #SUBSTITUTE +0x1b 0x001b #ESCAPE +0x1c 0x001c #FILE SEPARATOR +0x1d 0x001d #GROUP SEPARATOR +0x1e 0x001e #RECORD SEPARATOR +0x1f 0x001f #UNIT SEPARATOR +0x20 0x0020 #SPACE +0x21 0x0021 #EXCLAMATION MARK +0x22 0x0022 #QUOTATION MARK +0x23 0x0023 #NUMBER SIGN +0x24 0x0024 #DOLLAR SIGN +0x25 0x0025 #PERCENT SIGN +0x26 0x0026 #AMPERSAND +0x27 0x0027 #APOSTROPHE +0x28 0x0028 #LEFT PARENTHESIS +0x29 0x0029 #RIGHT PARENTHESIS +0x2a 0x002a #ASTERISK +0x2b 0x002b #PLUS SIGN +0x2c 0x002c #COMMA +0x2d 0x002d #HYPHEN-MINUS +0x2e 0x002e #FULL STOP +0x2f 0x002f #SOLIDUS +0x30 0x0030 #DIGIT ZERO +0x31 0x0031 #DIGIT ONE +0x32 0x0032 #DIGIT TWO +0x33 0x0033 #DIGIT THREE +0x34 0x0034 #DIGIT FOUR +0x35 0x0035 #DIGIT FIVE +0x36 0x0036 #DIGIT SIX +0x37 0x0037 #DIGIT SEVEN +0x38 0x0038 #DIGIT EIGHT +0x39 0x0039 #DIGIT NINE +0x3a 0x003a #COLON +0x3b 0x003b #SEMICOLON +0x3c 0x003c #LESS-THAN SIGN +0x3d 0x003d #EQUALS SIGN +0x3e 0x003e #GREATER-THAN SIGN +0x3f 0x003f #QUESTION MARK +0x40 0x0040 #COMMERCIAL AT +0x41 0x0041 #LATIN CAPITAL LETTER A +0x42 0x0042 #LATIN CAPITAL LETTER B +0x43 0x0043 #LATIN CAPITAL LETTER C +0x44 0x0044 #LATIN CAPITAL LETTER D +0x45 0x0045 #LATIN CAPITAL LETTER E +0x46 0x0046 #LATIN CAPITAL LETTER F +0x47 0x0047 #LATIN CAPITAL LETTER G +0x48 0x0048 #LATIN CAPITAL LETTER H +0x49 0x0049 #LATIN CAPITAL LETTER I +0x4a 0x004a #LATIN CAPITAL LETTER J +0x4b 0x004b #LATIN CAPITAL LETTER K +0x4c 0x004c #LATIN CAPITAL LETTER L +0x4d 0x004d #LATIN CAPITAL LETTER M +0x4e 0x004e #LATIN CAPITAL LETTER N +0x4f 0x004f #LATIN CAPITAL LETTER O +0x50 0x0050 #LATIN CAPITAL LETTER P +0x51 0x0051 #LATIN CAPITAL LETTER Q +0x52 0x0052 #LATIN CAPITAL LETTER R +0x53 0x0053 #LATIN CAPITAL LETTER S +0x54 0x0054 #LATIN CAPITAL LETTER T +0x55 0x0055 #LATIN CAPITAL LETTER U +0x56 0x0056 #LATIN CAPITAL LETTER V +0x57 0x0057 #LATIN CAPITAL LETTER W +0x58 0x0058 #LATIN CAPITAL LETTER X +0x59 0x0059 #LATIN CAPITAL LETTER Y +0x5a 0x005a #LATIN CAPITAL LETTER Z +0x5b 0x005b #LEFT SQUARE BRACKET +0x5c 0x005c #REVERSE SOLIDUS +0x5d 0x005d #RIGHT SQUARE BRACKET +0x5e 0x005e #CIRCUMFLEX ACCENT +0x5f 0x005f #LOW LINE +0x60 0x0060 #GRAVE ACCENT +0x61 0x0061 #LATIN SMALL LETTER A +0x62 0x0062 #LATIN SMALL LETTER B +0x63 0x0063 #LATIN SMALL LETTER C +0x64 0x0064 #LATIN SMALL LETTER D +0x65 0x0065 #LATIN SMALL LETTER E +0x66 0x0066 #LATIN SMALL LETTER F +0x67 0x0067 #LATIN SMALL LETTER G +0x68 0x0068 #LATIN SMALL LETTER H +0x69 0x0069 #LATIN SMALL LETTER I +0x6a 0x006a #LATIN SMALL LETTER J +0x6b 0x006b #LATIN SMALL LETTER K +0x6c 0x006c #LATIN SMALL LETTER L +0x6d 0x006d #LATIN SMALL LETTER M +0x6e 0x006e #LATIN SMALL LETTER N +0x6f 0x006f #LATIN SMALL LETTER O +0x70 0x0070 #LATIN SMALL LETTER P +0x71 0x0071 #LATIN SMALL LETTER Q +0x72 0x0072 #LATIN SMALL LETTER R +0x73 0x0073 #LATIN SMALL LETTER S +0x74 0x0074 #LATIN SMALL LETTER T +0x75 0x0075 #LATIN SMALL LETTER U +0x76 0x0076 #LATIN SMALL LETTER V +0x77 0x0077 #LATIN SMALL LETTER W +0x78 0x0078 #LATIN SMALL LETTER X +0x79 0x0079 #LATIN SMALL LETTER Y +0x7a 0x007a #LATIN SMALL LETTER Z +0x7b 0x007b #LEFT CURLY BRACKET +0x7c 0x007c #VERTICAL LINE +0x7d 0x007d #RIGHT CURLY BRACKET +0x7e 0x007e #TILDE +0x7f 0x007f #DELETE +0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA +0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS +0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE +0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX +0x84 0x00c2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX +0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE +0x86 0x00b6 #PILCROW SIGN +0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA +0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX +0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS +0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE +0x8b 0x00ef #LATIN SMALL LETTER I WITH DIAERESIS +0x8c 0x00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX +0x8d 0x2017 #DOUBLE LOW LINE +0x8e 0x00c0 #LATIN CAPITAL LETTER A WITH GRAVE +0x8f 0x00a7 #SECTION SIGN +0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE +0x91 0x00c8 #LATIN CAPITAL LETTER E WITH GRAVE +0x92 0x00ca #LATIN CAPITAL LETTER E WITH CIRCUMFLEX +0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX +0x94 0x00cb #LATIN CAPITAL LETTER E WITH DIAERESIS +0x95 0x00cf #LATIN CAPITAL LETTER I WITH DIAERESIS +0x96 0x00fb #LATIN SMALL LETTER U WITH CIRCUMFLEX +0x97 0x00f9 #LATIN SMALL LETTER U WITH GRAVE +0x98 0x00a4 #CURRENCY SIGN +0x99 0x00d4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX +0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS +0x9b 0x00a2 #CENT SIGN +0x9c 0x00a3 #POUND SIGN +0x9d 0x00d9 #LATIN CAPITAL LETTER U WITH GRAVE +0x9e 0x00db #LATIN CAPITAL LETTER U WITH CIRCUMFLEX +0x9f 0x0192 #LATIN SMALL LETTER F WITH HOOK +0xa0 0x00a6 #BROKEN BAR +0xa1 0x00b4 #ACUTE ACCENT +0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE +0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE +0xa4 0x00a8 #DIAERESIS +0xa5 0x00b8 #CEDILLA +0xa6 0x00b3 #SUPERSCRIPT THREE +0xa7 0x00af #MACRON +0xa8 0x00ce #LATIN CAPITAL LETTER I WITH CIRCUMFLEX +0xa9 0x2310 #REVERSED NOT SIGN +0xaa 0x00ac #NOT SIGN +0xab 0x00bd #VULGAR FRACTION ONE HALF +0xac 0x00bc #VULGAR FRACTION ONE QUARTER +0xad 0x00be #VULGAR FRACTION THREE QUARTERS +0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +0xb0 0x2591 #LIGHT SHADE +0xb1 0x2592 #MEDIUM SHADE +0xb2 0x2593 #DARK SHADE +0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL +0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT +0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE +0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE +0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE +0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE +0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT +0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL +0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT +0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT +0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE +0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE +0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT +0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT +0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL +0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL +0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT +0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL +0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL +0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE +0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE +0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT +0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT +0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL +0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL +0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT +0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL +0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL +0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE +0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE +0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE +0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE +0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE +0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE +0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE +0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE +0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE +0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE +0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT +0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT +0xdb 0x2588 #FULL BLOCK +0xdc 0x2584 #LOWER HALF BLOCK +0xdd 0x258c #LEFT HALF BLOCK +0xde 0x2590 #RIGHT HALF BLOCK +0xdf 0x2580 #UPPER HALF BLOCK +0xe0 0x03b1 #GREEK SMALL LETTER ALPHA +0xe1 0x00df #LATIN SMALL LETTER SHARP S +0xe2 0x0393 #GREEK CAPITAL LETTER GAMMA +0xe3 0x03c0 #GREEK SMALL LETTER PI +0xe4 0x03a3 #GREEK CAPITAL LETTER SIGMA +0xe5 0x03c3 #GREEK SMALL LETTER SIGMA +0xe6 0x00b5 #MICRO SIGN +0xe7 0x03c4 #GREEK SMALL LETTER TAU +0xe8 0x03a6 #GREEK CAPITAL LETTER PHI +0xe9 0x0398 #GREEK CAPITAL LETTER THETA +0xea 0x03a9 #GREEK CAPITAL LETTER OMEGA +0xeb 0x03b4 #GREEK SMALL LETTER DELTA +0xec 0x221e #INFINITY +0xed 0x03c6 #GREEK SMALL LETTER PHI +0xee 0x03b5 #GREEK SMALL LETTER EPSILON +0xef 0x2229 #INTERSECTION +0xf0 0x2261 #IDENTICAL TO +0xf1 0x00b1 #PLUS-MINUS SIGN +0xf2 0x2265 #GREATER-THAN OR EQUAL TO +0xf3 0x2264 #LESS-THAN OR EQUAL TO +0xf4 0x2320 #TOP HALF INTEGRAL +0xf5 0x2321 #BOTTOM HALF INTEGRAL +0xf6 0x00f7 #DIVISION SIGN +0xf7 0x2248 #ALMOST EQUAL TO +0xf8 0x00b0 #DEGREE SIGN +0xf9 0x2219 #BULLET OPERATOR +0xfa 0x00b7 #MIDDLE DOT +0xfb 0x221a #SQUARE ROOT +0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N +0xfd 0x00b2 #SUPERSCRIPT TWO +0xfe 0x25a0 #BLACK SQUARE +0xff 0x00a0 #NO-BREAK SPACE + + \ No newline at end of file diff --git a/data/CP864.TXT b/data/CP864.TXT new file mode 100644 index 0000000..d0079b0 --- /dev/null +++ b/data/CP864.TXT @@ -0,0 +1,275 @@ +# +# Name: cp864_DOSArabic to Unicode table +# Unicode version: 2.0 +# Table version: 2.00 +# Table format: Format A +# Date: 04/24/96 +# Contact: Shawn.Steele@microsoft.com +# +# General notes: none +# +# Format: Three tab-separated columns +# Column #1 is the cp864_DOSArabic code (in hex) +# Column #2 is the Unicode (in hex as 0xXXXX) +# Column #3 is the Unicode name (follows a comment sign, '#') +# +# The entries are in cp864_DOSArabic order +# +0x00 0x0000 #NULL +0x01 0x0001 #START OF HEADING +0x02 0x0002 #START OF TEXT +0x03 0x0003 #END OF TEXT +0x04 0x0004 #END OF TRANSMISSION +0x05 0x0005 #ENQUIRY +0x06 0x0006 #ACKNOWLEDGE +0x07 0x0007 #BELL +0x08 0x0008 #BACKSPACE +0x09 0x0009 #HORIZONTAL TABULATION +0x0a 0x000a #LINE FEED +0x0b 0x000b #VERTICAL TABULATION +0x0c 0x000c #FORM FEED +0x0d 0x000d #CARRIAGE RETURN +0x0e 0x000e #SHIFT OUT +0x0f 0x000f #SHIFT IN +0x10 0x0010 #DATA LINK ESCAPE +0x11 0x0011 #DEVICE CONTROL ONE +0x12 0x0012 #DEVICE CONTROL TWO +0x13 0x0013 #DEVICE CONTROL THREE +0x14 0x0014 #DEVICE CONTROL FOUR +0x15 0x0015 #NEGATIVE ACKNOWLEDGE +0x16 0x0016 #SYNCHRONOUS IDLE +0x17 0x0017 #END OF TRANSMISSION BLOCK +0x18 0x0018 #CANCEL +0x19 0x0019 #END OF MEDIUM +0x1a 0x001a #SUBSTITUTE +0x1b 0x001b #ESCAPE +0x1c 0x001c #FILE SEPARATOR +0x1d 0x001d #GROUP SEPARATOR +0x1e 0x001e #RECORD SEPARATOR +0x1f 0x001f #UNIT SEPARATOR +0x20 0x0020 #SPACE +0x21 0x0021 #EXCLAMATION MARK +0x22 0x0022 #QUOTATION MARK +0x23 0x0023 #NUMBER SIGN +0x24 0x0024 #DOLLAR SIGN +0x25 0x066a #ARABIC PERCENT SIGN +0x26 0x0026 #AMPERSAND +0x27 0x0027 #APOSTROPHE +0x28 0x0028 #LEFT PARENTHESIS +0x29 0x0029 #RIGHT PARENTHESIS +0x2a 0x002a #ASTERISK +0x2b 0x002b #PLUS SIGN +0x2c 0x002c #COMMA +0x2d 0x002d #HYPHEN-MINUS +0x2e 0x002e #FULL STOP +0x2f 0x002f #SOLIDUS +0x30 0x0030 #DIGIT ZERO +0x31 0x0031 #DIGIT ONE +0x32 0x0032 #DIGIT TWO +0x33 0x0033 #DIGIT THREE +0x34 0x0034 #DIGIT FOUR +0x35 0x0035 #DIGIT FIVE +0x36 0x0036 #DIGIT SIX +0x37 0x0037 #DIGIT SEVEN +0x38 0x0038 #DIGIT EIGHT +0x39 0x0039 #DIGIT NINE +0x3a 0x003a #COLON +0x3b 0x003b #SEMICOLON +0x3c 0x003c #LESS-THAN SIGN +0x3d 0x003d #EQUALS SIGN +0x3e 0x003e #GREATER-THAN SIGN +0x3f 0x003f #QUESTION MARK +0x40 0x0040 #COMMERCIAL AT +0x41 0x0041 #LATIN CAPITAL LETTER A +0x42 0x0042 #LATIN CAPITAL LETTER B +0x43 0x0043 #LATIN CAPITAL LETTER C +0x44 0x0044 #LATIN CAPITAL LETTER D +0x45 0x0045 #LATIN CAPITAL LETTER E +0x46 0x0046 #LATIN CAPITAL LETTER F +0x47 0x0047 #LATIN CAPITAL LETTER G +0x48 0x0048 #LATIN CAPITAL LETTER H +0x49 0x0049 #LATIN CAPITAL LETTER I +0x4a 0x004a #LATIN CAPITAL LETTER J +0x4b 0x004b #LATIN CAPITAL LETTER K +0x4c 0x004c #LATIN CAPITAL LETTER L +0x4d 0x004d #LATIN CAPITAL LETTER M +0x4e 0x004e #LATIN CAPITAL LETTER N +0x4f 0x004f #LATIN CAPITAL LETTER O +0x50 0x0050 #LATIN CAPITAL LETTER P +0x51 0x0051 #LATIN CAPITAL LETTER Q +0x52 0x0052 #LATIN CAPITAL LETTER R +0x53 0x0053 #LATIN CAPITAL LETTER S +0x54 0x0054 #LATIN CAPITAL LETTER T +0x55 0x0055 #LATIN CAPITAL LETTER U +0x56 0x0056 #LATIN CAPITAL LETTER V +0x57 0x0057 #LATIN CAPITAL LETTER W +0x58 0x0058 #LATIN CAPITAL LETTER X +0x59 0x0059 #LATIN CAPITAL LETTER Y +0x5a 0x005a #LATIN CAPITAL LETTER Z +0x5b 0x005b #LEFT SQUARE BRACKET +0x5c 0x005c #REVERSE SOLIDUS +0x5d 0x005d #RIGHT SQUARE BRACKET +0x5e 0x005e #CIRCUMFLEX ACCENT +0x5f 0x005f #LOW LINE +0x60 0x0060 #GRAVE ACCENT +0x61 0x0061 #LATIN SMALL LETTER A +0x62 0x0062 #LATIN SMALL LETTER B +0x63 0x0063 #LATIN SMALL LETTER C +0x64 0x0064 #LATIN SMALL LETTER D +0x65 0x0065 #LATIN SMALL LETTER E +0x66 0x0066 #LATIN SMALL LETTER F +0x67 0x0067 #LATIN SMALL LETTER G +0x68 0x0068 #LATIN SMALL LETTER H +0x69 0x0069 #LATIN SMALL LETTER I +0x6a 0x006a #LATIN SMALL LETTER J +0x6b 0x006b #LATIN SMALL LETTER K +0x6c 0x006c #LATIN SMALL LETTER L +0x6d 0x006d #LATIN SMALL LETTER M +0x6e 0x006e #LATIN SMALL LETTER N +0x6f 0x006f #LATIN SMALL LETTER O +0x70 0x0070 #LATIN SMALL LETTER P +0x71 0x0071 #LATIN SMALL LETTER Q +0x72 0x0072 #LATIN SMALL LETTER R +0x73 0x0073 #LATIN SMALL LETTER S +0x74 0x0074 #LATIN SMALL LETTER T +0x75 0x0075 #LATIN SMALL LETTER U +0x76 0x0076 #LATIN SMALL LETTER V +0x77 0x0077 #LATIN SMALL LETTER W +0x78 0x0078 #LATIN SMALL LETTER X +0x79 0x0079 #LATIN SMALL LETTER Y +0x7a 0x007a #LATIN SMALL LETTER Z +0x7b 0x007b #LEFT CURLY BRACKET +0x7c 0x007c #VERTICAL LINE +0x7d 0x007d #RIGHT CURLY BRACKET +0x7e 0x007e #TILDE +0x7f 0x007f #DELETE +0x80 0x00b0 #DEGREE SIGN +0x81 0x00b7 #MIDDLE DOT +0x82 0x2219 #BULLET OPERATOR +0x83 0x221a #SQUARE ROOT +0x84 0x2592 #MEDIUM SHADE +0x85 0x2500 #FORMS LIGHT HORIZONTAL +0x86 0x2502 #FORMS LIGHT VERTICAL +0x87 0x253c #FORMS LIGHT VERTICAL AND HORIZONTAL +0x88 0x2524 #FORMS LIGHT VERTICAL AND LEFT +0x89 0x252c #FORMS LIGHT DOWN AND HORIZONTAL +0x8a 0x251c #FORMS LIGHT VERTICAL AND RIGHT +0x8b 0x2534 #FORMS LIGHT UP AND HORIZONTAL +0x8c 0x2510 #FORMS LIGHT DOWN AND LEFT +0x8d 0x250c #FORMS LIGHT DOWN AND RIGHT +0x8e 0x2514 #FORMS LIGHT UP AND RIGHT +0x8f 0x2518 #FORMS LIGHT UP AND LEFT +0x90 0x03b2 #GREEK SMALL BETA +0x91 0x221e #INFINITY +0x92 0x03c6 #GREEK SMALL PHI +0x93 0x00b1 #PLUS-OR-MINUS SIGN +0x94 0x00bd #FRACTION 1/2 +0x95 0x00bc #FRACTION 1/4 +0x96 0x2248 #ALMOST EQUAL TO +0x97 0x00ab #LEFT POINTING GUILLEMET +0x98 0x00bb #RIGHT POINTING GUILLEMET +0x99 0xfef7 #ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM +0x9a 0xfef8 #ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM +0x9b #UNDEFINED +0x9c #UNDEFINED +0x9d 0xfefb #ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM +0x9e 0xfefc #ARABIC LIGATURE LAM WITH ALEF FINAL FORM +0x9f #UNDEFINED +0xa0 0x00a0 #NON-BREAKING SPACE +0xa1 0x00ad #SOFT HYPHEN +0xa2 0xfe82 #ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM +0xa3 0x00a3 #POUND SIGN +0xa4 0x00a4 #CURRENCY SIGN +0xa5 0xfe84 #ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM +0xa6 #UNDEFINED +0xa7 #UNDEFINED +0xa8 0xfe8e #ARABIC LETTER ALEF FINAL FORM +0xa9 0xfe8f #ARABIC LETTER BEH ISOLATED FORM +0xaa 0xfe95 #ARABIC LETTER TEH ISOLATED FORM +0xab 0xfe99 #ARABIC LETTER THEH ISOLATED FORM +0xac 0x060c #ARABIC COMMA +0xad 0xfe9d #ARABIC LETTER JEEM ISOLATED FORM +0xae 0xfea1 #ARABIC LETTER HAH ISOLATED FORM +0xaf 0xfea5 #ARABIC LETTER KHAH ISOLATED FORM +0xb0 0x0660 #ARABIC-INDIC DIGIT ZERO +0xb1 0x0661 #ARABIC-INDIC DIGIT ONE +0xb2 0x0662 #ARABIC-INDIC DIGIT TWO +0xb3 0x0663 #ARABIC-INDIC DIGIT THREE +0xb4 0x0664 #ARABIC-INDIC DIGIT FOUR +0xb5 0x0665 #ARABIC-INDIC DIGIT FIVE +0xb6 0x0666 #ARABIC-INDIC DIGIT SIX +0xb7 0x0667 #ARABIC-INDIC DIGIT SEVEN +0xb8 0x0668 #ARABIC-INDIC DIGIT EIGHT +0xb9 0x0669 #ARABIC-INDIC DIGIT NINE +0xba 0xfed1 #ARABIC LETTER FEH ISOLATED FORM +0xbb 0x061b #ARABIC SEMICOLON +0xbc 0xfeb1 #ARABIC LETTER SEEN ISOLATED FORM +0xbd 0xfeb5 #ARABIC LETTER SHEEN ISOLATED FORM +0xbe 0xfeb9 #ARABIC LETTER SAD ISOLATED FORM +0xbf 0x061f #ARABIC QUESTION MARK +0xc0 0x00a2 #CENT SIGN +0xc1 0xfe80 #ARABIC LETTER HAMZA ISOLATED FORM +0xc2 0xfe81 #ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM +0xc3 0xfe83 #ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM +0xc4 0xfe85 #ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM +0xc5 0xfeca #ARABIC LETTER AIN FINAL FORM +0xc6 0xfe8b #ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM +0xc7 0xfe8d #ARABIC LETTER ALEF ISOLATED FORM +0xc8 0xfe91 #ARABIC LETTER BEH INITIAL FORM +0xc9 0xfe93 #ARABIC LETTER TEH MARBUTA ISOLATED FORM +0xca 0xfe97 #ARABIC LETTER TEH INITIAL FORM +0xcb 0xfe9b #ARABIC LETTER THEH INITIAL FORM +0xcc 0xfe9f #ARABIC LETTER JEEM INITIAL FORM +0xcd 0xfea3 #ARABIC LETTER HAH INITIAL FORM +0xce 0xfea7 #ARABIC LETTER KHAH INITIAL FORM +0xcf 0xfea9 #ARABIC LETTER DAL ISOLATED FORM +0xd0 0xfeab #ARABIC LETTER THAL ISOLATED FORM +0xd1 0xfead #ARABIC LETTER REH ISOLATED FORM +0xd2 0xfeaf #ARABIC LETTER ZAIN ISOLATED FORM +0xd3 0xfeb3 #ARABIC LETTER SEEN INITIAL FORM +0xd4 0xfeb7 #ARABIC LETTER SHEEN INITIAL FORM +0xd5 0xfebb #ARABIC LETTER SAD INITIAL FORM +0xd6 0xfebf #ARABIC LETTER DAD INITIAL FORM +0xd7 0xfec1 #ARABIC LETTER TAH ISOLATED FORM +0xd8 0xfec5 #ARABIC LETTER ZAH ISOLATED FORM +0xd9 0xfecb #ARABIC LETTER AIN INITIAL FORM +0xda 0xfecf #ARABIC LETTER GHAIN INITIAL FORM +0xdb 0x00a6 #BROKEN VERTICAL BAR +0xdc 0x00ac #NOT SIGN +0xdd 0x00f7 #DIVISION SIGN +0xde 0x00d7 #MULTIPLICATION SIGN +0xdf 0xfec9 #ARABIC LETTER AIN ISOLATED FORM +0xe0 0x0640 #ARABIC TATWEEL +0xe1 0xfed3 #ARABIC LETTER FEH INITIAL FORM +0xe2 0xfed7 #ARABIC LETTER QAF INITIAL FORM +0xe3 0xfedb #ARABIC LETTER KAF INITIAL FORM +0xe4 0xfedf #ARABIC LETTER LAM INITIAL FORM +0xe5 0xfee3 #ARABIC LETTER MEEM INITIAL FORM +0xe6 0xfee7 #ARABIC LETTER NOON INITIAL FORM +0xe7 0xfeeb #ARABIC LETTER HEH INITIAL FORM +0xe8 0xfeed #ARABIC LETTER WAW ISOLATED FORM +0xe9 0xfeef #ARABIC LETTER ALEF MAKSURA ISOLATED FORM +0xea 0xfef3 #ARABIC LETTER YEH INITIAL FORM +0xeb 0xfebd #ARABIC LETTER DAD ISOLATED FORM +0xec 0xfecc #ARABIC LETTER AIN MEDIAL FORM +0xed 0xfece #ARABIC LETTER GHAIN FINAL FORM +0xee 0xfecd #ARABIC LETTER GHAIN ISOLATED FORM +0xef 0xfee1 #ARABIC LETTER MEEM ISOLATED FORM +0xf0 0xfe7d #ARABIC SHADDA MEDIAL FORM +0xf1 0x0651 #ARABIC SHADDAH +0xf2 0xfee5 #ARABIC LETTER NOON ISOLATED FORM +0xf3 0xfee9 #ARABIC LETTER HEH ISOLATED FORM +0xf4 0xfeec #ARABIC LETTER HEH MEDIAL FORM +0xf5 0xfef0 #ARABIC LETTER ALEF MAKSURA FINAL FORM +0xf6 0xfef2 #ARABIC LETTER YEH FINAL FORM +0xf7 0xfed0 #ARABIC LETTER GHAIN MEDIAL FORM +0xf8 0xfed5 #ARABIC LETTER QAF ISOLATED FORM +0xf9 0xfef5 #ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM +0xfa 0xfef6 #ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM +0xfb 0xfedd #ARABIC LETTER LAM ISOLATED FORM +0xfc 0xfed9 #ARABIC LETTER KAF ISOLATED FORM +0xfd 0xfef1 #ARABIC LETTER YEH ISOLATED FORM +0xfe 0x25a0 #BLACK SQUARE +0xff #UNDEFINED + + \ No newline at end of file diff --git a/data/CP865.TXT b/data/CP865.TXT new file mode 100644 index 0000000..41d73da --- /dev/null +++ b/data/CP865.TXT @@ -0,0 +1,275 @@ +# +# Name: cp865_DOSNordic to Unicode table +# Unicode version: 2.0 +# Table version: 2.00 +# Table format: Format A +# Date: 04/24/96 +# Contact: Shawn.Steele@microsoft.com +# +# General notes: none +# +# Format: Three tab-separated columns +# Column #1 is the cp865_DOSNordic code (in hex) +# Column #2 is the Unicode (in hex as 0xXXXX) +# Column #3 is the Unicode name (follows a comment sign, '#') +# +# The entries are in cp865_DOSNordic order +# +0x00 0x0000 #NULL +0x01 0x0001 #START OF HEADING +0x02 0x0002 #START OF TEXT +0x03 0x0003 #END OF TEXT +0x04 0x0004 #END OF TRANSMISSION +0x05 0x0005 #ENQUIRY +0x06 0x0006 #ACKNOWLEDGE +0x07 0x0007 #BELL +0x08 0x0008 #BACKSPACE +0x09 0x0009 #HORIZONTAL TABULATION +0x0a 0x000a #LINE FEED +0x0b 0x000b #VERTICAL TABULATION +0x0c 0x000c #FORM FEED +0x0d 0x000d #CARRIAGE RETURN +0x0e 0x000e #SHIFT OUT +0x0f 0x000f #SHIFT IN +0x10 0x0010 #DATA LINK ESCAPE +0x11 0x0011 #DEVICE CONTROL ONE +0x12 0x0012 #DEVICE CONTROL TWO +0x13 0x0013 #DEVICE CONTROL THREE +0x14 0x0014 #DEVICE CONTROL FOUR +0x15 0x0015 #NEGATIVE ACKNOWLEDGE +0x16 0x0016 #SYNCHRONOUS IDLE +0x17 0x0017 #END OF TRANSMISSION BLOCK +0x18 0x0018 #CANCEL +0x19 0x0019 #END OF MEDIUM +0x1a 0x001a #SUBSTITUTE +0x1b 0x001b #ESCAPE +0x1c 0x001c #FILE SEPARATOR +0x1d 0x001d #GROUP SEPARATOR +0x1e 0x001e #RECORD SEPARATOR +0x1f 0x001f #UNIT SEPARATOR +0x20 0x0020 #SPACE +0x21 0x0021 #EXCLAMATION MARK +0x22 0x0022 #QUOTATION MARK +0x23 0x0023 #NUMBER SIGN +0x24 0x0024 #DOLLAR SIGN +0x25 0x0025 #PERCENT SIGN +0x26 0x0026 #AMPERSAND +0x27 0x0027 #APOSTROPHE +0x28 0x0028 #LEFT PARENTHESIS +0x29 0x0029 #RIGHT PARENTHESIS +0x2a 0x002a #ASTERISK +0x2b 0x002b #PLUS SIGN +0x2c 0x002c #COMMA +0x2d 0x002d #HYPHEN-MINUS +0x2e 0x002e #FULL STOP +0x2f 0x002f #SOLIDUS +0x30 0x0030 #DIGIT ZERO +0x31 0x0031 #DIGIT ONE +0x32 0x0032 #DIGIT TWO +0x33 0x0033 #DIGIT THREE +0x34 0x0034 #DIGIT FOUR +0x35 0x0035 #DIGIT FIVE +0x36 0x0036 #DIGIT SIX +0x37 0x0037 #DIGIT SEVEN +0x38 0x0038 #DIGIT EIGHT +0x39 0x0039 #DIGIT NINE +0x3a 0x003a #COLON +0x3b 0x003b #SEMICOLON +0x3c 0x003c #LESS-THAN SIGN +0x3d 0x003d #EQUALS SIGN +0x3e 0x003e #GREATER-THAN SIGN +0x3f 0x003f #QUESTION MARK +0x40 0x0040 #COMMERCIAL AT +0x41 0x0041 #LATIN CAPITAL LETTER A +0x42 0x0042 #LATIN CAPITAL LETTER B +0x43 0x0043 #LATIN CAPITAL LETTER C +0x44 0x0044 #LATIN CAPITAL LETTER D +0x45 0x0045 #LATIN CAPITAL LETTER E +0x46 0x0046 #LATIN CAPITAL LETTER F +0x47 0x0047 #LATIN CAPITAL LETTER G +0x48 0x0048 #LATIN CAPITAL LETTER H +0x49 0x0049 #LATIN CAPITAL LETTER I +0x4a 0x004a #LATIN CAPITAL LETTER J +0x4b 0x004b #LATIN CAPITAL LETTER K +0x4c 0x004c #LATIN CAPITAL LETTER L +0x4d 0x004d #LATIN CAPITAL LETTER M +0x4e 0x004e #LATIN CAPITAL LETTER N +0x4f 0x004f #LATIN CAPITAL LETTER O +0x50 0x0050 #LATIN CAPITAL LETTER P +0x51 0x0051 #LATIN CAPITAL LETTER Q +0x52 0x0052 #LATIN CAPITAL LETTER R +0x53 0x0053 #LATIN CAPITAL LETTER S +0x54 0x0054 #LATIN CAPITAL LETTER T +0x55 0x0055 #LATIN CAPITAL LETTER U +0x56 0x0056 #LATIN CAPITAL LETTER V +0x57 0x0057 #LATIN CAPITAL LETTER W +0x58 0x0058 #LATIN CAPITAL LETTER X +0x59 0x0059 #LATIN CAPITAL LETTER Y +0x5a 0x005a #LATIN CAPITAL LETTER Z +0x5b 0x005b #LEFT SQUARE BRACKET +0x5c 0x005c #REVERSE SOLIDUS +0x5d 0x005d #RIGHT SQUARE BRACKET +0x5e 0x005e #CIRCUMFLEX ACCENT +0x5f 0x005f #LOW LINE +0x60 0x0060 #GRAVE ACCENT +0x61 0x0061 #LATIN SMALL LETTER A +0x62 0x0062 #LATIN SMALL LETTER B +0x63 0x0063 #LATIN SMALL LETTER C +0x64 0x0064 #LATIN SMALL LETTER D +0x65 0x0065 #LATIN SMALL LETTER E +0x66 0x0066 #LATIN SMALL LETTER F +0x67 0x0067 #LATIN SMALL LETTER G +0x68 0x0068 #LATIN SMALL LETTER H +0x69 0x0069 #LATIN SMALL LETTER I +0x6a 0x006a #LATIN SMALL LETTER J +0x6b 0x006b #LATIN SMALL LETTER K +0x6c 0x006c #LATIN SMALL LETTER L +0x6d 0x006d #LATIN SMALL LETTER M +0x6e 0x006e #LATIN SMALL LETTER N +0x6f 0x006f #LATIN SMALL LETTER O +0x70 0x0070 #LATIN SMALL LETTER P +0x71 0x0071 #LATIN SMALL LETTER Q +0x72 0x0072 #LATIN SMALL LETTER R +0x73 0x0073 #LATIN SMALL LETTER S +0x74 0x0074 #LATIN SMALL LETTER T +0x75 0x0075 #LATIN SMALL LETTER U +0x76 0x0076 #LATIN SMALL LETTER V +0x77 0x0077 #LATIN SMALL LETTER W +0x78 0x0078 #LATIN SMALL LETTER X +0x79 0x0079 #LATIN SMALL LETTER Y +0x7a 0x007a #LATIN SMALL LETTER Z +0x7b 0x007b #LEFT CURLY BRACKET +0x7c 0x007c #VERTICAL LINE +0x7d 0x007d #RIGHT CURLY BRACKET +0x7e 0x007e #TILDE +0x7f 0x007f #DELETE +0x80 0x00c7 #LATIN CAPITAL LETTER C WITH CEDILLA +0x81 0x00fc #LATIN SMALL LETTER U WITH DIAERESIS +0x82 0x00e9 #LATIN SMALL LETTER E WITH ACUTE +0x83 0x00e2 #LATIN SMALL LETTER A WITH CIRCUMFLEX +0x84 0x00e4 #LATIN SMALL LETTER A WITH DIAERESIS +0x85 0x00e0 #LATIN SMALL LETTER A WITH GRAVE +0x86 0x00e5 #LATIN SMALL LETTER A WITH RING ABOVE +0x87 0x00e7 #LATIN SMALL LETTER C WITH CEDILLA +0x88 0x00ea #LATIN SMALL LETTER E WITH CIRCUMFLEX +0x89 0x00eb #LATIN SMALL LETTER E WITH DIAERESIS +0x8a 0x00e8 #LATIN SMALL LETTER E WITH GRAVE +0x8b 0x00ef #LATIN SMALL LETTER I WITH DIAERESIS +0x8c 0x00ee #LATIN SMALL LETTER I WITH CIRCUMFLEX +0x8d 0x00ec #LATIN SMALL LETTER I WITH GRAVE +0x8e 0x00c4 #LATIN CAPITAL LETTER A WITH DIAERESIS +0x8f 0x00c5 #LATIN CAPITAL LETTER A WITH RING ABOVE +0x90 0x00c9 #LATIN CAPITAL LETTER E WITH ACUTE +0x91 0x00e6 #LATIN SMALL LIGATURE AE +0x92 0x00c6 #LATIN CAPITAL LIGATURE AE +0x93 0x00f4 #LATIN SMALL LETTER O WITH CIRCUMFLEX +0x94 0x00f6 #LATIN SMALL LETTER O WITH DIAERESIS +0x95 0x00f2 #LATIN SMALL LETTER O WITH GRAVE +0x96 0x00fb #LATIN SMALL LETTER U WITH CIRCUMFLEX +0x97 0x00f9 #LATIN SMALL LETTER U WITH GRAVE +0x98 0x00ff #LATIN SMALL LETTER Y WITH DIAERESIS +0x99 0x00d6 #LATIN CAPITAL LETTER O WITH DIAERESIS +0x9a 0x00dc #LATIN CAPITAL LETTER U WITH DIAERESIS +0x9b 0x00f8 #LATIN SMALL LETTER O WITH STROKE +0x9c 0x00a3 #POUND SIGN +0x9d 0x00d8 #LATIN CAPITAL LETTER O WITH STROKE +0x9e 0x20a7 #PESETA SIGN +0x9f 0x0192 #LATIN SMALL LETTER F WITH HOOK +0xa0 0x00e1 #LATIN SMALL LETTER A WITH ACUTE +0xa1 0x00ed #LATIN SMALL LETTER I WITH ACUTE +0xa2 0x00f3 #LATIN SMALL LETTER O WITH ACUTE +0xa3 0x00fa #LATIN SMALL LETTER U WITH ACUTE +0xa4 0x00f1 #LATIN SMALL LETTER N WITH TILDE +0xa5 0x00d1 #LATIN CAPITAL LETTER N WITH TILDE +0xa6 0x00aa #FEMININE ORDINAL INDICATOR +0xa7 0x00ba #MASCULINE ORDINAL INDICATOR +0xa8 0x00bf #INVERTED QUESTION MARK +0xa9 0x2310 #REVERSED NOT SIGN +0xaa 0x00ac #NOT SIGN +0xab 0x00bd #VULGAR FRACTION ONE HALF +0xac 0x00bc #VULGAR FRACTION ONE QUARTER +0xad 0x00a1 #INVERTED EXCLAMATION MARK +0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +0xaf 0x00a4 #CURRENCY SIGN +0xb0 0x2591 #LIGHT SHADE +0xb1 0x2592 #MEDIUM SHADE +0xb2 0x2593 #DARK SHADE +0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL +0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT +0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE +0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE +0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE +0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE +0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT +0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL +0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT +0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT +0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE +0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE +0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT +0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT +0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL +0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL +0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT +0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL +0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL +0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE +0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE +0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT +0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT +0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL +0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL +0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT +0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL +0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL +0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE +0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE +0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE +0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE +0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE +0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE +0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE +0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE +0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE +0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE +0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT +0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT +0xdb 0x2588 #FULL BLOCK +0xdc 0x2584 #LOWER HALF BLOCK +0xdd 0x258c #LEFT HALF BLOCK +0xde 0x2590 #RIGHT HALF BLOCK +0xdf 0x2580 #UPPER HALF BLOCK +0xe0 0x03b1 #GREEK SMALL LETTER ALPHA +0xe1 0x00df #LATIN SMALL LETTER SHARP S +0xe2 0x0393 #GREEK CAPITAL LETTER GAMMA +0xe3 0x03c0 #GREEK SMALL LETTER PI +0xe4 0x03a3 #GREEK CAPITAL LETTER SIGMA +0xe5 0x03c3 #GREEK SMALL LETTER SIGMA +0xe6 0x00b5 #MICRO SIGN +0xe7 0x03c4 #GREEK SMALL LETTER TAU +0xe8 0x03a6 #GREEK CAPITAL LETTER PHI +0xe9 0x0398 #GREEK CAPITAL LETTER THETA +0xea 0x03a9 #GREEK CAPITAL LETTER OMEGA +0xeb 0x03b4 #GREEK SMALL LETTER DELTA +0xec 0x221e #INFINITY +0xed 0x03c6 #GREEK SMALL LETTER PHI +0xee 0x03b5 #GREEK SMALL LETTER EPSILON +0xef 0x2229 #INTERSECTION +0xf0 0x2261 #IDENTICAL TO +0xf1 0x00b1 #PLUS-MINUS SIGN +0xf2 0x2265 #GREATER-THAN OR EQUAL TO +0xf3 0x2264 #LESS-THAN OR EQUAL TO +0xf4 0x2320 #TOP HALF INTEGRAL +0xf5 0x2321 #BOTTOM HALF INTEGRAL +0xf6 0x00f7 #DIVISION SIGN +0xf7 0x2248 #ALMOST EQUAL TO +0xf8 0x00b0 #DEGREE SIGN +0xf9 0x2219 #BULLET OPERATOR +0xfa 0x00b7 #MIDDLE DOT +0xfb 0x221a #SQUARE ROOT +0xfc 0x207f #SUPERSCRIPT LATIN SMALL LETTER N +0xfd 0x00b2 #SUPERSCRIPT TWO +0xfe 0x25a0 #BLACK SQUARE +0xff 0x00a0 #NO-BREAK SPACE + + \ No newline at end of file diff --git a/data/CP866.TXT b/data/CP866.TXT new file mode 100644 index 0000000..b0213a1 --- /dev/null +++ b/data/CP866.TXT @@ -0,0 +1,275 @@ +# +# Name: cp866_DOSCyrillicRussian to Unicode table +# Unicode version: 2.0 +# Table version: 2.00 +# Table format: Format A +# Date: 04/24/96 +# Contact: Shawn.Steele@microsoft.com +# +# General notes: none +# +# Format: Three tab-separated columns +# Column #1 is the cp866_DOSCyrillicRussian code (in hex) +# Column #2 is the Unicode (in hex as 0xXXXX) +# Column #3 is the Unicode name (follows a comment sign, '#') +# +# The entries are in cp866_DOSCyrillicRussian order +# +0x00 0x0000 #NULL +0x01 0x0001 #START OF HEADING +0x02 0x0002 #START OF TEXT +0x03 0x0003 #END OF TEXT +0x04 0x0004 #END OF TRANSMISSION +0x05 0x0005 #ENQUIRY +0x06 0x0006 #ACKNOWLEDGE +0x07 0x0007 #BELL +0x08 0x0008 #BACKSPACE +0x09 0x0009 #HORIZONTAL TABULATION +0x0a 0x000a #LINE FEED +0x0b 0x000b #VERTICAL TABULATION +0x0c 0x000c #FORM FEED +0x0d 0x000d #CARRIAGE RETURN +0x0e 0x000e #SHIFT OUT +0x0f 0x000f #SHIFT IN +0x10 0x0010 #DATA LINK ESCAPE +0x11 0x0011 #DEVICE CONTROL ONE +0x12 0x0012 #DEVICE CONTROL TWO +0x13 0x0013 #DEVICE CONTROL THREE +0x14 0x0014 #DEVICE CONTROL FOUR +0x15 0x0015 #NEGATIVE ACKNOWLEDGE +0x16 0x0016 #SYNCHRONOUS IDLE +0x17 0x0017 #END OF TRANSMISSION BLOCK +0x18 0x0018 #CANCEL +0x19 0x0019 #END OF MEDIUM +0x1a 0x001a #SUBSTITUTE +0x1b 0x001b #ESCAPE +0x1c 0x001c #FILE SEPARATOR +0x1d 0x001d #GROUP SEPARATOR +0x1e 0x001e #RECORD SEPARATOR +0x1f 0x001f #UNIT SEPARATOR +0x20 0x0020 #SPACE +0x21 0x0021 #EXCLAMATION MARK +0x22 0x0022 #QUOTATION MARK +0x23 0x0023 #NUMBER SIGN +0x24 0x0024 #DOLLAR SIGN +0x25 0x0025 #PERCENT SIGN +0x26 0x0026 #AMPERSAND +0x27 0x0027 #APOSTROPHE +0x28 0x0028 #LEFT PARENTHESIS +0x29 0x0029 #RIGHT PARENTHESIS +0x2a 0x002a #ASTERISK +0x2b 0x002b #PLUS SIGN +0x2c 0x002c #COMMA +0x2d 0x002d #HYPHEN-MINUS +0x2e 0x002e #FULL STOP +0x2f 0x002f #SOLIDUS +0x30 0x0030 #DIGIT ZERO +0x31 0x0031 #DIGIT ONE +0x32 0x0032 #DIGIT TWO +0x33 0x0033 #DIGIT THREE +0x34 0x0034 #DIGIT FOUR +0x35 0x0035 #DIGIT FIVE +0x36 0x0036 #DIGIT SIX +0x37 0x0037 #DIGIT SEVEN +0x38 0x0038 #DIGIT EIGHT +0x39 0x0039 #DIGIT NINE +0x3a 0x003a #COLON +0x3b 0x003b #SEMICOLON +0x3c 0x003c #LESS-THAN SIGN +0x3d 0x003d #EQUALS SIGN +0x3e 0x003e #GREATER-THAN SIGN +0x3f 0x003f #QUESTION MARK +0x40 0x0040 #COMMERCIAL AT +0x41 0x0041 #LATIN CAPITAL LETTER A +0x42 0x0042 #LATIN CAPITAL LETTER B +0x43 0x0043 #LATIN CAPITAL LETTER C +0x44 0x0044 #LATIN CAPITAL LETTER D +0x45 0x0045 #LATIN CAPITAL LETTER E +0x46 0x0046 #LATIN CAPITAL LETTER F +0x47 0x0047 #LATIN CAPITAL LETTER G +0x48 0x0048 #LATIN CAPITAL LETTER H +0x49 0x0049 #LATIN CAPITAL LETTER I +0x4a 0x004a #LATIN CAPITAL LETTER J +0x4b 0x004b #LATIN CAPITAL LETTER K +0x4c 0x004c #LATIN CAPITAL LETTER L +0x4d 0x004d #LATIN CAPITAL LETTER M +0x4e 0x004e #LATIN CAPITAL LETTER N +0x4f 0x004f #LATIN CAPITAL LETTER O +0x50 0x0050 #LATIN CAPITAL LETTER P +0x51 0x0051 #LATIN CAPITAL LETTER Q +0x52 0x0052 #LATIN CAPITAL LETTER R +0x53 0x0053 #LATIN CAPITAL LETTER S +0x54 0x0054 #LATIN CAPITAL LETTER T +0x55 0x0055 #LATIN CAPITAL LETTER U +0x56 0x0056 #LATIN CAPITAL LETTER V +0x57 0x0057 #LATIN CAPITAL LETTER W +0x58 0x0058 #LATIN CAPITAL LETTER X +0x59 0x0059 #LATIN CAPITAL LETTER Y +0x5a 0x005a #LATIN CAPITAL LETTER Z +0x5b 0x005b #LEFT SQUARE BRACKET +0x5c 0x005c #REVERSE SOLIDUS +0x5d 0x005d #RIGHT SQUARE BRACKET +0x5e 0x005e #CIRCUMFLEX ACCENT +0x5f 0x005f #LOW LINE +0x60 0x0060 #GRAVE ACCENT +0x61 0x0061 #LATIN SMALL LETTER A +0x62 0x0062 #LATIN SMALL LETTER B +0x63 0x0063 #LATIN SMALL LETTER C +0x64 0x0064 #LATIN SMALL LETTER D +0x65 0x0065 #LATIN SMALL LETTER E +0x66 0x0066 #LATIN SMALL LETTER F +0x67 0x0067 #LATIN SMALL LETTER G +0x68 0x0068 #LATIN SMALL LETTER H +0x69 0x0069 #LATIN SMALL LETTER I +0x6a 0x006a #LATIN SMALL LETTER J +0x6b 0x006b #LATIN SMALL LETTER K +0x6c 0x006c #LATIN SMALL LETTER L +0x6d 0x006d #LATIN SMALL LETTER M +0x6e 0x006e #LATIN SMALL LETTER N +0x6f 0x006f #LATIN SMALL LETTER O +0x70 0x0070 #LATIN SMALL LETTER P +0x71 0x0071 #LATIN SMALL LETTER Q +0x72 0x0072 #LATIN SMALL LETTER R +0x73 0x0073 #LATIN SMALL LETTER S +0x74 0x0074 #LATIN SMALL LETTER T +0x75 0x0075 #LATIN SMALL LETTER U +0x76 0x0076 #LATIN SMALL LETTER V +0x77 0x0077 #LATIN SMALL LETTER W +0x78 0x0078 #LATIN SMALL LETTER X +0x79 0x0079 #LATIN SMALL LETTER Y +0x7a 0x007a #LATIN SMALL LETTER Z +0x7b 0x007b #LEFT CURLY BRACKET +0x7c 0x007c #VERTICAL LINE +0x7d 0x007d #RIGHT CURLY BRACKET +0x7e 0x007e #TILDE +0x7f 0x007f #DELETE +0x80 0x0410 #CYRILLIC CAPITAL LETTER A +0x81 0x0411 #CYRILLIC CAPITAL LETTER BE +0x82 0x0412 #CYRILLIC CAPITAL LETTER VE +0x83 0x0413 #CYRILLIC CAPITAL LETTER GHE +0x84 0x0414 #CYRILLIC CAPITAL LETTER DE +0x85 0x0415 #CYRILLIC CAPITAL LETTER IE +0x86 0x0416 #CYRILLIC CAPITAL LETTER ZHE +0x87 0x0417 #CYRILLIC CAPITAL LETTER ZE +0x88 0x0418 #CYRILLIC CAPITAL LETTER I +0x89 0x0419 #CYRILLIC CAPITAL LETTER SHORT I +0x8a 0x041a #CYRILLIC CAPITAL LETTER KA +0x8b 0x041b #CYRILLIC CAPITAL LETTER EL +0x8c 0x041c #CYRILLIC CAPITAL LETTER EM +0x8d 0x041d #CYRILLIC CAPITAL LETTER EN +0x8e 0x041e #CYRILLIC CAPITAL LETTER O +0x8f 0x041f #CYRILLIC CAPITAL LETTER PE +0x90 0x0420 #CYRILLIC CAPITAL LETTER ER +0x91 0x0421 #CYRILLIC CAPITAL LETTER ES +0x92 0x0422 #CYRILLIC CAPITAL LETTER TE +0x93 0x0423 #CYRILLIC CAPITAL LETTER U +0x94 0x0424 #CYRILLIC CAPITAL LETTER EF +0x95 0x0425 #CYRILLIC CAPITAL LETTER HA +0x96 0x0426 #CYRILLIC CAPITAL LETTER TSE +0x97 0x0427 #CYRILLIC CAPITAL LETTER CHE +0x98 0x0428 #CYRILLIC CAPITAL LETTER SHA +0x99 0x0429 #CYRILLIC CAPITAL LETTER SHCHA +0x9a 0x042a #CYRILLIC CAPITAL LETTER HARD SIGN +0x9b 0x042b #CYRILLIC CAPITAL LETTER YERU +0x9c 0x042c #CYRILLIC CAPITAL LETTER SOFT SIGN +0x9d 0x042d #CYRILLIC CAPITAL LETTER E +0x9e 0x042e #CYRILLIC CAPITAL LETTER YU +0x9f 0x042f #CYRILLIC CAPITAL LETTER YA +0xa0 0x0430 #CYRILLIC SMALL LETTER A +0xa1 0x0431 #CYRILLIC SMALL LETTER BE +0xa2 0x0432 #CYRILLIC SMALL LETTER VE +0xa3 0x0433 #CYRILLIC SMALL LETTER GHE +0xa4 0x0434 #CYRILLIC SMALL LETTER DE +0xa5 0x0435 #CYRILLIC SMALL LETTER IE +0xa6 0x0436 #CYRILLIC SMALL LETTER ZHE +0xa7 0x0437 #CYRILLIC SMALL LETTER ZE +0xa8 0x0438 #CYRILLIC SMALL LETTER I +0xa9 0x0439 #CYRILLIC SMALL LETTER SHORT I +0xaa 0x043a #CYRILLIC SMALL LETTER KA +0xab 0x043b #CYRILLIC SMALL LETTER EL +0xac 0x043c #CYRILLIC SMALL LETTER EM +0xad 0x043d #CYRILLIC SMALL LETTER EN +0xae 0x043e #CYRILLIC SMALL LETTER O +0xaf 0x043f #CYRILLIC SMALL LETTER PE +0xb0 0x2591 #LIGHT SHADE +0xb1 0x2592 #MEDIUM SHADE +0xb2 0x2593 #DARK SHADE +0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL +0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT +0xb5 0x2561 #BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE +0xb6 0x2562 #BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE +0xb7 0x2556 #BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE +0xb8 0x2555 #BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE +0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT +0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL +0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT +0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT +0xbd 0x255c #BOX DRAWINGS UP DOUBLE AND LEFT SINGLE +0xbe 0x255b #BOX DRAWINGS UP SINGLE AND LEFT DOUBLE +0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT +0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT +0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL +0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL +0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT +0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL +0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL +0xc6 0x255e #BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE +0xc7 0x255f #BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE +0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT +0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT +0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL +0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL +0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT +0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL +0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL +0xcf 0x2567 #BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE +0xd0 0x2568 #BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE +0xd1 0x2564 #BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE +0xd2 0x2565 #BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE +0xd3 0x2559 #BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE +0xd4 0x2558 #BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE +0xd5 0x2552 #BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE +0xd6 0x2553 #BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE +0xd7 0x256b #BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE +0xd8 0x256a #BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE +0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT +0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT +0xdb 0x2588 #FULL BLOCK +0xdc 0x2584 #LOWER HALF BLOCK +0xdd 0x258c #LEFT HALF BLOCK +0xde 0x2590 #RIGHT HALF BLOCK +0xdf 0x2580 #UPPER HALF BLOCK +0xe0 0x0440 #CYRILLIC SMALL LETTER ER +0xe1 0x0441 #CYRILLIC SMALL LETTER ES +0xe2 0x0442 #CYRILLIC SMALL LETTER TE +0xe3 0x0443 #CYRILLIC SMALL LETTER U +0xe4 0x0444 #CYRILLIC SMALL LETTER EF +0xe5 0x0445 #CYRILLIC SMALL LETTER HA +0xe6 0x0446 #CYRILLIC SMALL LETTER TSE +0xe7 0x0447 #CYRILLIC SMALL LETTER CHE +0xe8 0x0448 #CYRILLIC SMALL LETTER SHA +0xe9 0x0449 #CYRILLIC SMALL LETTER SHCHA +0xea 0x044a #CYRILLIC SMALL LETTER HARD SIGN +0xeb 0x044b #CYRILLIC SMALL LETTER YERU +0xec 0x044c #CYRILLIC SMALL LETTER SOFT SIGN +0xed 0x044d #CYRILLIC SMALL LETTER E +0xee 0x044e #CYRILLIC SMALL LETTER YU +0xef 0x044f #CYRILLIC SMALL LETTER YA +0xf0 0x0401 #CYRILLIC CAPITAL LETTER IO +0xf1 0x0451 #CYRILLIC SMALL LETTER IO +0xf2 0x0404 #CYRILLIC CAPITAL LETTER UKRAINIAN IE +0xf3 0x0454 #CYRILLIC SMALL LETTER UKRAINIAN IE +0xf4 0x0407 #CYRILLIC CAPITAL LETTER YI +0xf5 0x0457 #CYRILLIC SMALL LETTER YI +0xf6 0x040e #CYRILLIC CAPITAL LETTER SHORT U +0xf7 0x045e #CYRILLIC SMALL LETTER SHORT U +0xf8 0x00b0 #DEGREE SIGN +0xf9 0x2219 #BULLET OPERATOR +0xfa 0x00b7 #MIDDLE DOT +0xfb 0x221a #SQUARE ROOT +0xfc 0x2116 #NUMERO SIGN +0xfd 0x00a4 #CURRENCY SIGN +0xfe 0x25a0 #BLACK SQUARE +0xff 0x00a0 #NO-BREAK SPACE + + \ No newline at end of file diff --git a/data/CP869.TXT b/data/CP869.TXT new file mode 100644 index 0000000..3cd3f77 --- /dev/null +++ b/data/CP869.TXT @@ -0,0 +1,275 @@ +# +# Name: cp869_DOSGreek2 to Unicode table +# Unicode version: 2.0 +# Table version: 2.00 +# Table format: Format A +# Date: 04/24/96 +# Contact: Shawn.Steele@microsoft.com +# +# General notes: none +# +# Format: Three tab-separated columns +# Column #1 is the cp869_DOSGreek2 code (in hex) +# Column #2 is the Unicode (in hex as 0xXXXX) +# Column #3 is the Unicode name (follows a comment sign, '#') +# +# The entries are in cp869_DOSGreek2 order +# +0x00 0x0000 #NULL +0x01 0x0001 #START OF HEADING +0x02 0x0002 #START OF TEXT +0x03 0x0003 #END OF TEXT +0x04 0x0004 #END OF TRANSMISSION +0x05 0x0005 #ENQUIRY +0x06 0x0006 #ACKNOWLEDGE +0x07 0x0007 #BELL +0x08 0x0008 #BACKSPACE +0x09 0x0009 #HORIZONTAL TABULATION +0x0a 0x000a #LINE FEED +0x0b 0x000b #VERTICAL TABULATION +0x0c 0x000c #FORM FEED +0x0d 0x000d #CARRIAGE RETURN +0x0e 0x000e #SHIFT OUT +0x0f 0x000f #SHIFT IN +0x10 0x0010 #DATA LINK ESCAPE +0x11 0x0011 #DEVICE CONTROL ONE +0x12 0x0012 #DEVICE CONTROL TWO +0x13 0x0013 #DEVICE CONTROL THREE +0x14 0x0014 #DEVICE CONTROL FOUR +0x15 0x0015 #NEGATIVE ACKNOWLEDGE +0x16 0x0016 #SYNCHRONOUS IDLE +0x17 0x0017 #END OF TRANSMISSION BLOCK +0x18 0x0018 #CANCEL +0x19 0x0019 #END OF MEDIUM +0x1a 0x001a #SUBSTITUTE +0x1b 0x001b #ESCAPE +0x1c 0x001c #FILE SEPARATOR +0x1d 0x001d #GROUP SEPARATOR +0x1e 0x001e #RECORD SEPARATOR +0x1f 0x001f #UNIT SEPARATOR +0x20 0x0020 #SPACE +0x21 0x0021 #EXCLAMATION MARK +0x22 0x0022 #QUOTATION MARK +0x23 0x0023 #NUMBER SIGN +0x24 0x0024 #DOLLAR SIGN +0x25 0x0025 #PERCENT SIGN +0x26 0x0026 #AMPERSAND +0x27 0x0027 #APOSTROPHE +0x28 0x0028 #LEFT PARENTHESIS +0x29 0x0029 #RIGHT PARENTHESIS +0x2a 0x002a #ASTERISK +0x2b 0x002b #PLUS SIGN +0x2c 0x002c #COMMA +0x2d 0x002d #HYPHEN-MINUS +0x2e 0x002e #FULL STOP +0x2f 0x002f #SOLIDUS +0x30 0x0030 #DIGIT ZERO +0x31 0x0031 #DIGIT ONE +0x32 0x0032 #DIGIT TWO +0x33 0x0033 #DIGIT THREE +0x34 0x0034 #DIGIT FOUR +0x35 0x0035 #DIGIT FIVE +0x36 0x0036 #DIGIT SIX +0x37 0x0037 #DIGIT SEVEN +0x38 0x0038 #DIGIT EIGHT +0x39 0x0039 #DIGIT NINE +0x3a 0x003a #COLON +0x3b 0x003b #SEMICOLON +0x3c 0x003c #LESS-THAN SIGN +0x3d 0x003d #EQUALS SIGN +0x3e 0x003e #GREATER-THAN SIGN +0x3f 0x003f #QUESTION MARK +0x40 0x0040 #COMMERCIAL AT +0x41 0x0041 #LATIN CAPITAL LETTER A +0x42 0x0042 #LATIN CAPITAL LETTER B +0x43 0x0043 #LATIN CAPITAL LETTER C +0x44 0x0044 #LATIN CAPITAL LETTER D +0x45 0x0045 #LATIN CAPITAL LETTER E +0x46 0x0046 #LATIN CAPITAL LETTER F +0x47 0x0047 #LATIN CAPITAL LETTER G +0x48 0x0048 #LATIN CAPITAL LETTER H +0x49 0x0049 #LATIN CAPITAL LETTER I +0x4a 0x004a #LATIN CAPITAL LETTER J +0x4b 0x004b #LATIN CAPITAL LETTER K +0x4c 0x004c #LATIN CAPITAL LETTER L +0x4d 0x004d #LATIN CAPITAL LETTER M +0x4e 0x004e #LATIN CAPITAL LETTER N +0x4f 0x004f #LATIN CAPITAL LETTER O +0x50 0x0050 #LATIN CAPITAL LETTER P +0x51 0x0051 #LATIN CAPITAL LETTER Q +0x52 0x0052 #LATIN CAPITAL LETTER R +0x53 0x0053 #LATIN CAPITAL LETTER S +0x54 0x0054 #LATIN CAPITAL LETTER T +0x55 0x0055 #LATIN CAPITAL LETTER U +0x56 0x0056 #LATIN CAPITAL LETTER V +0x57 0x0057 #LATIN CAPITAL LETTER W +0x58 0x0058 #LATIN CAPITAL LETTER X +0x59 0x0059 #LATIN CAPITAL LETTER Y +0x5a 0x005a #LATIN CAPITAL LETTER Z +0x5b 0x005b #LEFT SQUARE BRACKET +0x5c 0x005c #REVERSE SOLIDUS +0x5d 0x005d #RIGHT SQUARE BRACKET +0x5e 0x005e #CIRCUMFLEX ACCENT +0x5f 0x005f #LOW LINE +0x60 0x0060 #GRAVE ACCENT +0x61 0x0061 #LATIN SMALL LETTER A +0x62 0x0062 #LATIN SMALL LETTER B +0x63 0x0063 #LATIN SMALL LETTER C +0x64 0x0064 #LATIN SMALL LETTER D +0x65 0x0065 #LATIN SMALL LETTER E +0x66 0x0066 #LATIN SMALL LETTER F +0x67 0x0067 #LATIN SMALL LETTER G +0x68 0x0068 #LATIN SMALL LETTER H +0x69 0x0069 #LATIN SMALL LETTER I +0x6a 0x006a #LATIN SMALL LETTER J +0x6b 0x006b #LATIN SMALL LETTER K +0x6c 0x006c #LATIN SMALL LETTER L +0x6d 0x006d #LATIN SMALL LETTER M +0x6e 0x006e #LATIN SMALL LETTER N +0x6f 0x006f #LATIN SMALL LETTER O +0x70 0x0070 #LATIN SMALL LETTER P +0x71 0x0071 #LATIN SMALL LETTER Q +0x72 0x0072 #LATIN SMALL LETTER R +0x73 0x0073 #LATIN SMALL LETTER S +0x74 0x0074 #LATIN SMALL LETTER T +0x75 0x0075 #LATIN SMALL LETTER U +0x76 0x0076 #LATIN SMALL LETTER V +0x77 0x0077 #LATIN SMALL LETTER W +0x78 0x0078 #LATIN SMALL LETTER X +0x79 0x0079 #LATIN SMALL LETTER Y +0x7a 0x007a #LATIN SMALL LETTER Z +0x7b 0x007b #LEFT CURLY BRACKET +0x7c 0x007c #VERTICAL LINE +0x7d 0x007d #RIGHT CURLY BRACKET +0x7e 0x007e #TILDE +0x7f 0x007f #DELETE +0x80 #UNDEFINED +0x81 #UNDEFINED +0x82 #UNDEFINED +0x83 #UNDEFINED +0x84 #UNDEFINED +0x85 #UNDEFINED +0x86 0x0386 #GREEK CAPITAL LETTER ALPHA WITH TONOS +0x87 #UNDEFINED +0x88 0x00b7 #MIDDLE DOT +0x89 0x00ac #NOT SIGN +0x8a 0x00a6 #BROKEN BAR +0x8b 0x2018 #LEFT SINGLE QUOTATION MARK +0x8c 0x2019 #RIGHT SINGLE QUOTATION MARK +0x8d 0x0388 #GREEK CAPITAL LETTER EPSILON WITH TONOS +0x8e 0x2015 #HORIZONTAL BAR +0x8f 0x0389 #GREEK CAPITAL LETTER ETA WITH TONOS +0x90 0x038a #GREEK CAPITAL LETTER IOTA WITH TONOS +0x91 0x03aa #GREEK CAPITAL LETTER IOTA WITH DIALYTIKA +0x92 0x038c #GREEK CAPITAL LETTER OMICRON WITH TONOS +0x93 #UNDEFINED +0x94 #UNDEFINED +0x95 0x038e #GREEK CAPITAL LETTER UPSILON WITH TONOS +0x96 0x03ab #GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA +0x97 0x00a9 #COPYRIGHT SIGN +0x98 0x038f #GREEK CAPITAL LETTER OMEGA WITH TONOS +0x99 0x00b2 #SUPERSCRIPT TWO +0x9a 0x00b3 #SUPERSCRIPT THREE +0x9b 0x03ac #GREEK SMALL LETTER ALPHA WITH TONOS +0x9c 0x00a3 #POUND SIGN +0x9d 0x03ad #GREEK SMALL LETTER EPSILON WITH TONOS +0x9e 0x03ae #GREEK SMALL LETTER ETA WITH TONOS +0x9f 0x03af #GREEK SMALL LETTER IOTA WITH TONOS +0xa0 0x03ca #GREEK SMALL LETTER IOTA WITH DIALYTIKA +0xa1 0x0390 #GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS +0xa2 0x03cc #GREEK SMALL LETTER OMICRON WITH TONOS +0xa3 0x03cd #GREEK SMALL LETTER UPSILON WITH TONOS +0xa4 0x0391 #GREEK CAPITAL LETTER ALPHA +0xa5 0x0392 #GREEK CAPITAL LETTER BETA +0xa6 0x0393 #GREEK CAPITAL LETTER GAMMA +0xa7 0x0394 #GREEK CAPITAL LETTER DELTA +0xa8 0x0395 #GREEK CAPITAL LETTER EPSILON +0xa9 0x0396 #GREEK CAPITAL LETTER ZETA +0xaa 0x0397 #GREEK CAPITAL LETTER ETA +0xab 0x00bd #VULGAR FRACTION ONE HALF +0xac 0x0398 #GREEK CAPITAL LETTER THETA +0xad 0x0399 #GREEK CAPITAL LETTER IOTA +0xae 0x00ab #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +0xaf 0x00bb #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +0xb0 0x2591 #LIGHT SHADE +0xb1 0x2592 #MEDIUM SHADE +0xb2 0x2593 #DARK SHADE +0xb3 0x2502 #BOX DRAWINGS LIGHT VERTICAL +0xb4 0x2524 #BOX DRAWINGS LIGHT VERTICAL AND LEFT +0xb5 0x039a #GREEK CAPITAL LETTER KAPPA +0xb6 0x039b #GREEK CAPITAL LETTER LAMDA +0xb7 0x039c #GREEK CAPITAL LETTER MU +0xb8 0x039d #GREEK CAPITAL LETTER NU +0xb9 0x2563 #BOX DRAWINGS DOUBLE VERTICAL AND LEFT +0xba 0x2551 #BOX DRAWINGS DOUBLE VERTICAL +0xbb 0x2557 #BOX DRAWINGS DOUBLE DOWN AND LEFT +0xbc 0x255d #BOX DRAWINGS DOUBLE UP AND LEFT +0xbd 0x039e #GREEK CAPITAL LETTER XI +0xbe 0x039f #GREEK CAPITAL LETTER OMICRON +0xbf 0x2510 #BOX DRAWINGS LIGHT DOWN AND LEFT +0xc0 0x2514 #BOX DRAWINGS LIGHT UP AND RIGHT +0xc1 0x2534 #BOX DRAWINGS LIGHT UP AND HORIZONTAL +0xc2 0x252c #BOX DRAWINGS LIGHT DOWN AND HORIZONTAL +0xc3 0x251c #BOX DRAWINGS LIGHT VERTICAL AND RIGHT +0xc4 0x2500 #BOX DRAWINGS LIGHT HORIZONTAL +0xc5 0x253c #BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL +0xc6 0x03a0 #GREEK CAPITAL LETTER PI +0xc7 0x03a1 #GREEK CAPITAL LETTER RHO +0xc8 0x255a #BOX DRAWINGS DOUBLE UP AND RIGHT +0xc9 0x2554 #BOX DRAWINGS DOUBLE DOWN AND RIGHT +0xca 0x2569 #BOX DRAWINGS DOUBLE UP AND HORIZONTAL +0xcb 0x2566 #BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL +0xcc 0x2560 #BOX DRAWINGS DOUBLE VERTICAL AND RIGHT +0xcd 0x2550 #BOX DRAWINGS DOUBLE HORIZONTAL +0xce 0x256c #BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL +0xcf 0x03a3 #GREEK CAPITAL LETTER SIGMA +0xd0 0x03a4 #GREEK CAPITAL LETTER TAU +0xd1 0x03a5 #GREEK CAPITAL LETTER UPSILON +0xd2 0x03a6 #GREEK CAPITAL LETTER PHI +0xd3 0x03a7 #GREEK CAPITAL LETTER CHI +0xd4 0x03a8 #GREEK CAPITAL LETTER PSI +0xd5 0x03a9 #GREEK CAPITAL LETTER OMEGA +0xd6 0x03b1 #GREEK SMALL LETTER ALPHA +0xd7 0x03b2 #GREEK SMALL LETTER BETA +0xd8 0x03b3 #GREEK SMALL LETTER GAMMA +0xd9 0x2518 #BOX DRAWINGS LIGHT UP AND LEFT +0xda 0x250c #BOX DRAWINGS LIGHT DOWN AND RIGHT +0xdb 0x2588 #FULL BLOCK +0xdc 0x2584 #LOWER HALF BLOCK +0xdd 0x03b4 #GREEK SMALL LETTER DELTA +0xde 0x03b5 #GREEK SMALL LETTER EPSILON +0xdf 0x2580 #UPPER HALF BLOCK +0xe0 0x03b6 #GREEK SMALL LETTER ZETA +0xe1 0x03b7 #GREEK SMALL LETTER ETA +0xe2 0x03b8 #GREEK SMALL LETTER THETA +0xe3 0x03b9 #GREEK SMALL LETTER IOTA +0xe4 0x03ba #GREEK SMALL LETTER KAPPA +0xe5 0x03bb #GREEK SMALL LETTER LAMDA +0xe6 0x03bc #GREEK SMALL LETTER MU +0xe7 0x03bd #GREEK SMALL LETTER NU +0xe8 0x03be #GREEK SMALL LETTER XI +0xe9 0x03bf #GREEK SMALL LETTER OMICRON +0xea 0x03c0 #GREEK SMALL LETTER PI +0xeb 0x03c1 #GREEK SMALL LETTER RHO +0xec 0x03c3 #GREEK SMALL LETTER SIGMA +0xed 0x03c2 #GREEK SMALL LETTER FINAL SIGMA +0xee 0x03c4 #GREEK SMALL LETTER TAU +0xef 0x0384 #GREEK TONOS +0xf0 0x00ad #SOFT HYPHEN +0xf1 0x00b1 #PLUS-MINUS SIGN +0xf2 0x03c5 #GREEK SMALL LETTER UPSILON +0xf3 0x03c6 #GREEK SMALL LETTER PHI +0xf4 0x03c7 #GREEK SMALL LETTER CHI +0xf5 0x00a7 #SECTION SIGN +0xf6 0x03c8 #GREEK SMALL LETTER PSI +0xf7 0x0385 #GREEK DIALYTIKA TONOS +0xf8 0x00b0 #DEGREE SIGN +0xf9 0x00a8 #DIAERESIS +0xfa 0x03c9 #GREEK SMALL LETTER OMEGA +0xfb 0x03cb #GREEK SMALL LETTER UPSILON WITH DIALYTIKA +0xfc 0x03b0 #GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS +0xfd 0x03ce #GREEK SMALL LETTER OMEGA WITH TONOS +0xfe 0x25a0 #BLACK SQUARE +0xff 0x00a0 #NO-BREAK SPACE + + \ No newline at end of file diff --git a/data/CP874.TXT b/data/CP874.TXT new file mode 100644 index 0000000..cbd0cdd --- /dev/null +++ b/data/CP874.TXT @@ -0,0 +1,274 @@ +# +# Name: cp874 to Unicode table +# Unicode version: 2.0 +# Table version: 2.00 +# Table format: Format A +# Date: 04/15/98 +# +# Contact: Shawn.Steele@microsoft.com +# +# General notes: none +# +# Format: Three tab-separated columns +# Column #1 is the cp874 code (in hex) +# Column #2 is the Unicode (in hex as 0xXXXX) +# Column #3 is the Unicode name (follows a comment sign, '#') +# +# The entries are in cp874 order +# +0x00 0x0000 #NULL +0x01 0x0001 #START OF HEADING +0x02 0x0002 #START OF TEXT +0x03 0x0003 #END OF TEXT +0x04 0x0004 #END OF TRANSMISSION +0x05 0x0005 #ENQUIRY +0x06 0x0006 #ACKNOWLEDGE +0x07 0x0007 #BELL +0x08 0x0008 #BACKSPACE +0x09 0x0009 #HORIZONTAL TABULATION +0x0A 0x000A #LINE FEED +0x0B 0x000B #VERTICAL TABULATION +0x0C 0x000C #FORM FEED +0x0D 0x000D #CARRIAGE RETURN +0x0E 0x000E #SHIFT OUT +0x0F 0x000F #SHIFT IN +0x10 0x0010 #DATA LINK ESCAPE +0x11 0x0011 #DEVICE CONTROL ONE +0x12 0x0012 #DEVICE CONTROL TWO +0x13 0x0013 #DEVICE CONTROL THREE +0x14 0x0014 #DEVICE CONTROL FOUR +0x15 0x0015 #NEGATIVE ACKNOWLEDGE +0x16 0x0016 #SYNCHRONOUS IDLE +0x17 0x0017 #END OF TRANSMISSION BLOCK +0x18 0x0018 #CANCEL +0x19 0x0019 #END OF MEDIUM +0x1A 0x001A #SUBSTITUTE +0x1B 0x001B #ESCAPE +0x1C 0x001C #FILE SEPARATOR +0x1D 0x001D #GROUP SEPARATOR +0x1E 0x001E #RECORD SEPARATOR +0x1F 0x001F #UNIT SEPARATOR +0x20 0x0020 #SPACE +0x21 0x0021 #EXCLAMATION MARK +0x22 0x0022 #QUOTATION MARK +0x23 0x0023 #NUMBER SIGN +0x24 0x0024 #DOLLAR SIGN +0x25 0x0025 #PERCENT SIGN +0x26 0x0026 #AMPERSAND +0x27 0x0027 #APOSTROPHE +0x28 0x0028 #LEFT PARENTHESIS +0x29 0x0029 #RIGHT PARENTHESIS +0x2A 0x002A #ASTERISK +0x2B 0x002B #PLUS SIGN +0x2C 0x002C #COMMA +0x2D 0x002D #HYPHEN-MINUS +0x2E 0x002E #FULL STOP +0x2F 0x002F #SOLIDUS +0x30 0x0030 #DIGIT ZERO +0x31 0x0031 #DIGIT ONE +0x32 0x0032 #DIGIT TWO +0x33 0x0033 #DIGIT THREE +0x34 0x0034 #DIGIT FOUR +0x35 0x0035 #DIGIT FIVE +0x36 0x0036 #DIGIT SIX +0x37 0x0037 #DIGIT SEVEN +0x38 0x0038 #DIGIT EIGHT +0x39 0x0039 #DIGIT NINE +0x3A 0x003A #COLON +0x3B 0x003B #SEMICOLON +0x3C 0x003C #LESS-THAN SIGN +0x3D 0x003D #EQUALS SIGN +0x3E 0x003E #GREATER-THAN SIGN +0x3F 0x003F #QUESTION MARK +0x40 0x0040 #COMMERCIAL AT +0x41 0x0041 #LATIN CAPITAL LETTER A +0x42 0x0042 #LATIN CAPITAL LETTER B +0x43 0x0043 #LATIN CAPITAL LETTER C +0x44 0x0044 #LATIN CAPITAL LETTER D +0x45 0x0045 #LATIN CAPITAL LETTER E +0x46 0x0046 #LATIN CAPITAL LETTER F +0x47 0x0047 #LATIN CAPITAL LETTER G +0x48 0x0048 #LATIN CAPITAL LETTER H +0x49 0x0049 #LATIN CAPITAL LETTER I +0x4A 0x004A #LATIN CAPITAL LETTER J +0x4B 0x004B #LATIN CAPITAL LETTER K +0x4C 0x004C #LATIN CAPITAL LETTER L +0x4D 0x004D #LATIN CAPITAL LETTER M +0x4E 0x004E #LATIN CAPITAL LETTER N +0x4F 0x004F #LATIN CAPITAL LETTER O +0x50 0x0050 #LATIN CAPITAL LETTER P +0x51 0x0051 #LATIN CAPITAL LETTER Q +0x52 0x0052 #LATIN CAPITAL LETTER R +0x53 0x0053 #LATIN CAPITAL LETTER S +0x54 0x0054 #LATIN CAPITAL LETTER T +0x55 0x0055 #LATIN CAPITAL LETTER U +0x56 0x0056 #LATIN CAPITAL LETTER V +0x57 0x0057 #LATIN CAPITAL LETTER W +0x58 0x0058 #LATIN CAPITAL LETTER X +0x59 0x0059 #LATIN CAPITAL LETTER Y +0x5A 0x005A #LATIN CAPITAL LETTER Z +0x5B 0x005B #LEFT SQUARE BRACKET +0x5C 0x005C #REVERSE SOLIDUS +0x5D 0x005D #RIGHT SQUARE BRACKET +0x5E 0x005E #CIRCUMFLEX ACCENT +0x5F 0x005F #LOW LINE +0x60 0x0060 #GRAVE ACCENT +0x61 0x0061 #LATIN SMALL LETTER A +0x62 0x0062 #LATIN SMALL LETTER B +0x63 0x0063 #LATIN SMALL LETTER C +0x64 0x0064 #LATIN SMALL LETTER D +0x65 0x0065 #LATIN SMALL LETTER E +0x66 0x0066 #LATIN SMALL LETTER F +0x67 0x0067 #LATIN SMALL LETTER G +0x68 0x0068 #LATIN SMALL LETTER H +0x69 0x0069 #LATIN SMALL LETTER I +0x6A 0x006A #LATIN SMALL LETTER J +0x6B 0x006B #LATIN SMALL LETTER K +0x6C 0x006C #LATIN SMALL LETTER L +0x6D 0x006D #LATIN SMALL LETTER M +0x6E 0x006E #LATIN SMALL LETTER N +0x6F 0x006F #LATIN SMALL LETTER O +0x70 0x0070 #LATIN SMALL LETTER P +0x71 0x0071 #LATIN SMALL LETTER Q +0x72 0x0072 #LATIN SMALL LETTER R +0x73 0x0073 #LATIN SMALL LETTER S +0x74 0x0074 #LATIN SMALL LETTER T +0x75 0x0075 #LATIN SMALL LETTER U +0x76 0x0076 #LATIN SMALL LETTER V +0x77 0x0077 #LATIN SMALL LETTER W +0x78 0x0078 #LATIN SMALL LETTER X +0x79 0x0079 #LATIN SMALL LETTER Y +0x7A 0x007A #LATIN SMALL LETTER Z +0x7B 0x007B #LEFT CURLY BRACKET +0x7C 0x007C #VERTICAL LINE +0x7D 0x007D #RIGHT CURLY BRACKET +0x7E 0x007E #TILDE +0x7F 0x007F #DELETE +0x80 0x20AC #EURO SIGN +0x81 #UNDEFINED +0x82 #UNDEFINED +0x83 #UNDEFINED +0x84 #UNDEFINED +0x85 0x2026 #HORIZONTAL ELLIPSIS +0x86 #UNDEFINED +0x87 #UNDEFINED +0x88 #UNDEFINED +0x89 #UNDEFINED +0x8A #UNDEFINED +0x8B #UNDEFINED +0x8C #UNDEFINED +0x8D #UNDEFINED +0x8E #UNDEFINED +0x8F #UNDEFINED +0x90 #UNDEFINED +0x91 0x2018 #LEFT SINGLE QUOTATION MARK +0x92 0x2019 #RIGHT SINGLE QUOTATION MARK +0x93 0x201C #LEFT DOUBLE QUOTATION MARK +0x94 0x201D #RIGHT DOUBLE QUOTATION MARK +0x95 0x2022 #BULLET +0x96 0x2013 #EN DASH +0x97 0x2014 #EM DASH +0x98 #UNDEFINED +0x99 #UNDEFINED +0x9A #UNDEFINED +0x9B #UNDEFINED +0x9C #UNDEFINED +0x9D #UNDEFINED +0x9E #UNDEFINED +0x9F #UNDEFINED +0xA0 0x00A0 #NO-BREAK SPACE +0xA1 0x0E01 #THAI CHARACTER KO KAI +0xA2 0x0E02 #THAI CHARACTER KHO KHAI +0xA3 0x0E03 #THAI CHARACTER KHO KHUAT +0xA4 0x0E04 #THAI CHARACTER KHO KHWAI +0xA5 0x0E05 #THAI CHARACTER KHO KHON +0xA6 0x0E06 #THAI CHARACTER KHO RAKHANG +0xA7 0x0E07 #THAI CHARACTER NGO NGU +0xA8 0x0E08 #THAI CHARACTER CHO CHAN +0xA9 0x0E09 #THAI CHARACTER CHO CHING +0xAA 0x0E0A #THAI CHARACTER CHO CHANG +0xAB 0x0E0B #THAI CHARACTER SO SO +0xAC 0x0E0C #THAI CHARACTER CHO CHOE +0xAD 0x0E0D #THAI CHARACTER YO YING +0xAE 0x0E0E #THAI CHARACTER DO CHADA +0xAF 0x0E0F #THAI CHARACTER TO PATAK +0xB0 0x0E10 #THAI CHARACTER THO THAN +0xB1 0x0E11 #THAI CHARACTER THO NANGMONTHO +0xB2 0x0E12 #THAI CHARACTER THO PHUTHAO +0xB3 0x0E13 #THAI CHARACTER NO NEN +0xB4 0x0E14 #THAI CHARACTER DO DEK +0xB5 0x0E15 #THAI CHARACTER TO TAO +0xB6 0x0E16 #THAI CHARACTER THO THUNG +0xB7 0x0E17 #THAI CHARACTER THO THAHAN +0xB8 0x0E18 #THAI CHARACTER THO THONG +0xB9 0x0E19 #THAI CHARACTER NO NU +0xBA 0x0E1A #THAI CHARACTER BO BAIMAI +0xBB 0x0E1B #THAI CHARACTER PO PLA +0xBC 0x0E1C #THAI CHARACTER PHO PHUNG +0xBD 0x0E1D #THAI CHARACTER FO FA +0xBE 0x0E1E #THAI CHARACTER PHO PHAN +0xBF 0x0E1F #THAI CHARACTER FO FAN +0xC0 0x0E20 #THAI CHARACTER PHO SAMPHAO +0xC1 0x0E21 #THAI CHARACTER MO MA +0xC2 0x0E22 #THAI CHARACTER YO YAK +0xC3 0x0E23 #THAI CHARACTER RO RUA +0xC4 0x0E24 #THAI CHARACTER RU +0xC5 0x0E25 #THAI CHARACTER LO LING +0xC6 0x0E26 #THAI CHARACTER LU +0xC7 0x0E27 #THAI CHARACTER WO WAEN +0xC8 0x0E28 #THAI CHARACTER SO SALA +0xC9 0x0E29 #THAI CHARACTER SO RUSI +0xCA 0x0E2A #THAI CHARACTER SO SUA +0xCB 0x0E2B #THAI CHARACTER HO HIP +0xCC 0x0E2C #THAI CHARACTER LO CHULA +0xCD 0x0E2D #THAI CHARACTER O ANG +0xCE 0x0E2E #THAI CHARACTER HO NOKHUK +0xCF 0x0E2F #THAI CHARACTER PAIYANNOI +0xD0 0x0E30 #THAI CHARACTER SARA A +0xD1 0x0E31 #THAI CHARACTER MAI HAN-AKAT +0xD2 0x0E32 #THAI CHARACTER SARA AA +0xD3 0x0E33 #THAI CHARACTER SARA AM +0xD4 0x0E34 #THAI CHARACTER SARA I +0xD5 0x0E35 #THAI CHARACTER SARA II +0xD6 0x0E36 #THAI CHARACTER SARA UE +0xD7 0x0E37 #THAI CHARACTER SARA UEE +0xD8 0x0E38 #THAI CHARACTER SARA U +0xD9 0x0E39 #THAI CHARACTER SARA UU +0xDA 0x0E3A #THAI CHARACTER PHINTHU +0xDB #UNDEFINED +0xDC #UNDEFINED +0xDD #UNDEFINED +0xDE #UNDEFINED +0xDF 0x0E3F #THAI CURRENCY SYMBOL BAHT +0xE0 0x0E40 #THAI CHARACTER SARA E +0xE1 0x0E41 #THAI CHARACTER SARA AE +0xE2 0x0E42 #THAI CHARACTER SARA O +0xE3 0x0E43 #THAI CHARACTER SARA AI MAIMUAN +0xE4 0x0E44 #THAI CHARACTER SARA AI MAIMALAI +0xE5 0x0E45 #THAI CHARACTER LAKKHANGYAO +0xE6 0x0E46 #THAI CHARACTER MAIYAMOK +0xE7 0x0E47 #THAI CHARACTER MAITAIKHU +0xE8 0x0E48 #THAI CHARACTER MAI EK +0xE9 0x0E49 #THAI CHARACTER MAI THO +0xEA 0x0E4A #THAI CHARACTER MAI TRI +0xEB 0x0E4B #THAI CHARACTER MAI CHATTAWA +0xEC 0x0E4C #THAI CHARACTER THANTHAKHAT +0xED 0x0E4D #THAI CHARACTER NIKHAHIT +0xEE 0x0E4E #THAI CHARACTER YAMAKKAN +0xEF 0x0E4F #THAI CHARACTER FONGMAN +0xF0 0x0E50 #THAI DIGIT ZERO +0xF1 0x0E51 #THAI DIGIT ONE +0xF2 0x0E52 #THAI DIGIT TWO +0xF3 0x0E53 #THAI DIGIT THREE +0xF4 0x0E54 #THAI DIGIT FOUR +0xF5 0x0E55 #THAI DIGIT FIVE +0xF6 0x0E56 #THAI DIGIT SIX +0xF7 0x0E57 #THAI DIGIT SEVEN +0xF8 0x0E58 #THAI DIGIT EIGHT +0xF9 0x0E59 #THAI DIGIT NINE +0xFA 0x0E5A #THAI CHARACTER ANGKHANKHU +0xFB 0x0E5B #THAI CHARACTER KHOMUT +0xFC #UNDEFINED +0xFD #UNDEFINED +0xFE #UNDEFINED +0xFF #UNDEFINED diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..868037f --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,425 @@ +//! Bidirectional conversion between MS-DOS code pages and Unicode. +//! +//! MS-DOS and the FAT family of filesystems stored text in one of a family of +//! single-byte OEM code pages selected by country/locale. This crate converts +//! those bytes to and from Unicode with emulator-grade fidelity: it owns the +//! canonical tables rather than linking ICU, so it stays small, self-contained, +//! and cross-compiles cleanly. +//! +//! The tables are **Microsoft's** mappings as published by the Unicode +//! Consortium (`VENDORS/MICSFT/PC/`) — not the IBM or Oracle variants, which +//! differ in a handful of slots. All sixteen single-byte DOS pages are +//! implemented; the double-byte CJK pages (932/936/949/950) are future work. +//! +//! Decoding is fallible because four pages (857, 864, 869, 874) leave some +//! byte values undefined; [`DosEncoding::decode_lossy`] substitutes U+FFFD +//! instead. Every implemented table is a bijection, so any string a page can +//! decode re-encodes to the identical bytes. +//! +//! ``` +//! use msdos_encodings::DosEncoding; +//! +//! let enc = DosEncoding::default(); // code page 437 +//! assert_eq!(enc.decode(b"Caf\x82").unwrap(), "Café"); +//! assert_eq!(enc.encode("Café").unwrap(), b"Caf\x82"); +//! ``` +#![forbid(unsafe_code)] +#![warn(missing_docs)] + +use std::fmt; + +mod tables; + +/// An MS-DOS (OEM) code page. +/// +/// Non-exhaustive: more code pages (the double-byte CJK family) will be added +/// without it being a breaking change, so external matches must include a +/// wildcard arm. +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default)] +#[non_exhaustive] +pub enum DosEncoding { + /// Code page 437 — DOS Latin US, the original IBM PC page. + #[default] + Cp437, + /// Code page 737 — DOS Greek. + Cp737, + /// Code page 775 — DOS Baltic Rim. + Cp775, + /// Code page 850 — DOS Latin 1 (Western European "multilingual"). + Cp850, + /// Code page 852 — DOS Latin 2 (Central European). + Cp852, + /// Code page 855 — DOS Cyrillic. + Cp855, + /// Code page 857 — DOS Turkish. + Cp857, + /// Code page 860 — DOS Portuguese. + Cp860, + /// Code page 861 — DOS Icelandic. + Cp861, + /// Code page 862 — DOS Hebrew. + Cp862, + /// Code page 863 — DOS French Canada. + Cp863, + /// Code page 864 — DOS Arabic. Note `0x25` is ARABIC PERCENT SIGN, not `%`. + Cp864, + /// Code page 865 — DOS Nordic. + Cp865, + /// Code page 866 — DOS Cyrillic Russian. + Cp866, + /// Code page 869 — DOS Greek 2. + Cp869, + /// Code page 874 — DOS Thai. + Cp874, +} + +impl DosEncoding { + /// Every code page this crate implements, in numeric order. + pub const ALL: [DosEncoding; 16] = [ + Self::Cp437, + Self::Cp737, + Self::Cp775, + Self::Cp850, + Self::Cp852, + Self::Cp855, + Self::Cp857, + Self::Cp860, + Self::Cp861, + Self::Cp862, + Self::Cp863, + Self::Cp864, + Self::Cp865, + Self::Cp866, + Self::Cp869, + Self::Cp874, + ]; + + /// Select an encoding from its numeric code page identifier (as found in + /// e.g. the DOS `CHCP` command or BPB/registry locale data), or `None` if + /// this crate does not implement it. + #[must_use] + pub fn from_code_page(code_page: u16) -> Option { + Self::ALL + .into_iter() + .find(|enc| enc.code_page() == code_page) + } + + /// The numeric code page identifier (437, 850, …). + #[must_use] + pub fn code_page(self) -> u16 { + match self { + Self::Cp437 => 437, + Self::Cp737 => 737, + Self::Cp775 => 775, + Self::Cp850 => 850, + Self::Cp852 => 852, + Self::Cp855 => 855, + Self::Cp857 => 857, + Self::Cp860 => 860, + Self::Cp861 => 861, + Self::Cp862 => 862, + Self::Cp863 => 863, + Self::Cp864 => 864, + Self::Cp865 => 865, + Self::Cp866 => 866, + Self::Cp869 => 869, + Self::Cp874 => 874, + } + } + + /// A short human-readable name, e.g. "DOS Latin US". + #[must_use] + pub fn name(self) -> &'static str { + match self { + Self::Cp437 => "DOS Latin US", + Self::Cp737 => "DOS Greek", + Self::Cp775 => "DOS Baltic Rim", + Self::Cp850 => "DOS Latin 1", + Self::Cp852 => "DOS Latin 2", + Self::Cp855 => "DOS Cyrillic", + Self::Cp857 => "DOS Turkish", + Self::Cp860 => "DOS Portuguese", + Self::Cp861 => "DOS Icelandic", + Self::Cp862 => "DOS Hebrew", + Self::Cp863 => "DOS French Canada", + Self::Cp864 => "DOS Arabic", + Self::Cp865 => "DOS Nordic", + Self::Cp866 => "DOS Cyrillic Russian", + Self::Cp869 => "DOS Greek 2", + Self::Cp874 => "DOS Thai", + } + } + + /// Decode every byte of `bytes` to Unicode, faithfully (control bytes and + /// a trailing `NUL` included). Use [`decode_cstr`](Self::decode_cstr) for + /// `NUL`-terminated fixed-width fields. + /// + /// # Errors + /// + /// Returns [`DecodeError::Undefined`] for the first byte value this code + /// page leaves unmapped (possible only under 857, 864, 869, and 874). + pub fn decode(self, bytes: &[u8]) -> Result { + let table = self.table(); + bytes + .iter() + .map(|&byte| { + table[usize::from(byte)].ok_or(DecodeError::Undefined { + byte, + encoding: self, + }) + }) + .collect() + } + + /// Decode like [`decode`](Self::decode), substituting U+FFFD REPLACEMENT + /// CHARACTER for any byte the code page leaves undefined. + #[must_use] + pub fn decode_lossy(self, bytes: &[u8]) -> String { + let table = self.table(); + bytes + .iter() + .map(|&byte| table[usize::from(byte)].unwrap_or('\u{FFFD}')) + .collect() + } + + /// Decode up to (but not including) the first `NUL` byte — the convention + /// for fixed-width name fields in DOS-era structures. + /// + /// # Errors + /// + /// Returns [`DecodeError::Undefined`] as [`decode`](Self::decode) does. + pub fn decode_cstr(self, bytes: &[u8]) -> Result { + let end = bytes.iter().position(|&b| b == 0).unwrap_or(bytes.len()); + self.decode(&bytes[..end]) + } + + /// Encode `text` back to this code page's bytes. + /// + /// # Errors + /// + /// Returns [`EncodeError::Unmappable`] for the first character with no + /// representation in this code page (e.g. `é` under DOS Greek, or `%` + /// under DOS Arabic, whose `0x25` is ARABIC PERCENT SIGN). + pub fn encode(self, text: &str) -> Result, EncodeError> { + let table = self.table(); + text.chars() + .map(|ch| { + table + .iter() + .position(|&slot| slot == Some(ch)) + .map(|i| i as u8) + .ok_or(EncodeError::Unmappable { ch, encoding: self }) + }) + .collect() + } + + /// The full byte-to-scalar table for this code page. + fn table(self) -> &'static [Option; 256] { + match self { + Self::Cp437 => &tables::CP437, + Self::Cp737 => &tables::CP737, + Self::Cp775 => &tables::CP775, + Self::Cp850 => &tables::CP850, + Self::Cp852 => &tables::CP852, + Self::Cp855 => &tables::CP855, + Self::Cp857 => &tables::CP857, + Self::Cp860 => &tables::CP860, + Self::Cp861 => &tables::CP861, + Self::Cp862 => &tables::CP862, + Self::Cp863 => &tables::CP863, + Self::Cp864 => &tables::CP864, + Self::Cp865 => &tables::CP865, + Self::Cp866 => &tables::CP866, + Self::Cp869 => &tables::CP869, + Self::Cp874 => &tables::CP874, + } + } +} + +impl fmt::Display for DosEncoding { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "code page {} ({})", self.code_page(), self.name()) + } +} + +/// A byte could not be decoded from the source code page. +/// +/// Non-exhaustive: the future double-byte pages will add failure modes +/// (truncated pair, invalid lead byte) without a breaking change. +#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)] +#[non_exhaustive] +pub enum DecodeError { + /// `byte` has no mapping in `encoding`. + #[error("byte {byte:#04x} is undefined in {encoding}")] + Undefined { + /// The offending byte value. + byte: u8, + /// The code page that leaves it undefined. + encoding: DosEncoding, + }, +} + +/// A character could not be encoded into the target code page. +/// +/// Non-exhaustive so future variants are not a breaking change. +#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)] +#[non_exhaustive] +pub enum EncodeError { + /// `ch` has no representation in `encoding`. + #[error("character {ch:?} has no mapping in {encoding}")] + Unmappable { + /// The offending character. + ch: char, + /// The code page that lacks a mapping for it. + encoding: DosEncoding, + }, +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn ascii_passthrough_cp437() { + let enc = DosEncoding::Cp437; + assert_eq!(enc.decode(b"AUTOEXEC.BAT").unwrap(), "AUTOEXEC.BAT"); + assert_eq!(enc.encode("AUTOEXEC.BAT").unwrap(), b"AUTOEXEC.BAT"); + } + + #[test] + fn known_high_mappings() { + // Golden values straight from the Microsoft tables. + assert_eq!(DosEncoding::Cp437.decode(&[0x82]).unwrap(), "é"); + assert_eq!(DosEncoding::Cp437.decode(&[0xB0]).unwrap(), "░"); + assert_eq!(DosEncoding::Cp437.decode(&[0xE1]).unwrap(), "ß"); + assert_eq!(DosEncoding::Cp850.decode(&[0xD5]).unwrap(), "ı"); + assert_eq!(DosEncoding::Cp862.decode(&[0x80]).unwrap(), "א"); + assert_eq!(DosEncoding::Cp866.decode(&[0x80]).unwrap(), "А"); + assert_eq!(DosEncoding::Cp866.decode(&[0xF0]).unwrap(), "Ё"); + } + + #[test] + fn cp864_percent_is_arabic() { + // Microsoft's CP864 maps 0x25 to ARABIC PERCENT SIGN, so the low half + // is not pure ASCII and '%' itself is unmappable. + let enc = DosEncoding::Cp864; + assert_eq!(enc.decode(&[0x25]).unwrap(), "\u{066A}"); + assert_eq!(enc.encode("\u{066A}").unwrap(), vec![0x25]); + assert!(matches!( + enc.encode("100%"), + Err(EncodeError::Unmappable { ch: '%', .. }) + )); + } + + #[test] + fn undefined_bytes_error_and_lossy_substitutes() { + // 0xFF is undefined in CP874 (DOS Thai). + let enc = DosEncoding::Cp874; + assert_eq!( + enc.decode(b"a\xFFb"), + Err(DecodeError::Undefined { + byte: 0xFF, + encoding: enc + }) + ); + assert_eq!(enc.decode_lossy(b"a\xFFb"), "a\u{FFFD}b"); + } + + #[test] + fn every_defined_byte_round_trips_on_every_page() { + for enc in DosEncoding::ALL { + for byte in 0..=0xFFu8 { + match enc.decode(&[byte]) { + Ok(decoded) => assert_eq!( + enc.encode(&decoded).unwrap(), + vec![byte], + "byte {byte:#04x} failed to round-trip under {enc}" + ), + Err(DecodeError::Undefined { .. }) => { + assert_eq!(enc.decode_lossy(&[byte]), "\u{FFFD}"); + } + } + } + } + } + + #[test] + fn every_table_is_a_bijection() { + // No duplicate scalars, else encode would be ambiguous. + for enc in DosEncoding::ALL { + let mut seen = std::collections::HashSet::new(); + for slot in enc.table().iter().flatten() { + assert!(seen.insert(*slot), "duplicate scalar {slot:?} in {enc}"); + } + } + } + + #[test] + fn fully_defined_pages_have_no_undefined_slots() { + let partial = [ + DosEncoding::Cp857, + DosEncoding::Cp864, + DosEncoding::Cp869, + DosEncoding::Cp874, + ]; + for enc in DosEncoding::ALL { + let undefined = enc.table().iter().filter(|slot| slot.is_none()).count(); + if partial.contains(&enc) { + assert!(undefined > 0, "{enc} expected undefined slots"); + } else { + assert_eq!(undefined, 0, "{enc} unexpectedly has undefined slots"); + } + } + } + + #[test] + fn unmappable_character_errors() { + let err = DosEncoding::Cp437.encode("空").unwrap_err(); + assert!(matches!(err, EncodeError::Unmappable { ch: '空', .. })); + // é exists in 437 but not in Greek 737. + assert!(DosEncoding::Cp737.encode("é").is_err()); + } + + #[test] + fn decode_cstr_stops_at_nul() { + let enc = DosEncoding::Cp437; + assert_eq!(enc.decode_cstr(b"GAME\x00garbage").unwrap(), "GAME"); + assert_eq!(enc.decode_cstr(b"GAME").unwrap(), "GAME"); // no NUL at all + assert_eq!(enc.decode_cstr(b"\x00GAME").unwrap(), ""); + assert_eq!(enc.decode(b"GAME\x00").unwrap().len(), "GAME".len() + 1); + } + + #[test] + fn empty_input_is_empty_output() { + let enc = DosEncoding::Cp437; + assert_eq!(enc.decode(b"").unwrap(), ""); + assert_eq!(enc.decode_lossy(b""), ""); + assert_eq!(enc.encode("").unwrap(), Vec::::new()); + } + + #[test] + fn from_code_page_round_trips() { + for enc in DosEncoding::ALL { + assert_eq!(DosEncoding::from_code_page(enc.code_page()), Some(enc)); + } + assert_eq!(DosEncoding::from_code_page(1252), None); // Windows, not DOS + assert_eq!(DosEncoding::from_code_page(932), None); // CJK, not yet + } + + #[test] + fn display_names() { + assert_eq!( + DosEncoding::Cp437.to_string(), + "code page 437 (DOS Latin US)" + ); + assert_eq!(DosEncoding::Cp874.to_string(), "code page 874 (DOS Thai)"); + } + + #[test] + fn box_drawing_survives_round_trip() { + // The DOS aesthetic: single/double box drawing in CP437. + let art = "╔══╗\n║░▒║\n╚══╝"; + let bytes = DosEncoding::Cp437.encode(art).unwrap(); + assert_eq!(DosEncoding::Cp437.decode(&bytes).unwrap(), art); + } +} diff --git a/src/tables.rs b/src/tables.rs new file mode 100644 index 0000000..4c4ac5e --- /dev/null +++ b/src/tables.rs @@ -0,0 +1,4167 @@ +//! Generated code page tables — do not edit by hand. +//! +//! Source: the Unicode Consortium's Microsoft mapping tables +//! (`VENDORS/MICSFT/PC/CP*.TXT`), vendored in `data/` and regenerated with +//! `tools/gen_tables.py`. Each table maps every byte value `0x00..=0xFF` to +//! its Unicode scalar, or `None` where the code page leaves the byte +//! undefined. + +/// Code page 437, byte value to Unicode scalar. +pub(crate) const CP437: [Option; 256] = [ + Some('\u{0000}'), + Some('\u{0001}'), + Some('\u{0002}'), + Some('\u{0003}'), + Some('\u{0004}'), + Some('\u{0005}'), + Some('\u{0006}'), + Some('\u{0007}'), // 0x00-0x07 + Some('\u{0008}'), + Some('\u{0009}'), + Some('\u{000A}'), + Some('\u{000B}'), + Some('\u{000C}'), + Some('\u{000D}'), + Some('\u{000E}'), + Some('\u{000F}'), // 0x08-0x0f + Some('\u{0010}'), + Some('\u{0011}'), + Some('\u{0012}'), + Some('\u{0013}'), + Some('\u{0014}'), + Some('\u{0015}'), + Some('\u{0016}'), + Some('\u{0017}'), // 0x10-0x17 + Some('\u{0018}'), + Some('\u{0019}'), + Some('\u{001A}'), + Some('\u{001B}'), + Some('\u{001C}'), + Some('\u{001D}'), + Some('\u{001E}'), + Some('\u{001F}'), // 0x18-0x1f + Some(' '), + Some('!'), + Some('"'), + Some('#'), + Some('$'), + Some('%'), + Some('&'), + Some('\u{0027}'), // 0x20-0x27 + Some('('), + Some(')'), + Some('*'), + Some('+'), + Some(','), + Some('-'), + Some('.'), + Some('/'), // 0x28-0x2f + Some('0'), + Some('1'), + Some('2'), + Some('3'), + Some('4'), + Some('5'), + Some('6'), + Some('7'), // 0x30-0x37 + Some('8'), + Some('9'), + Some(':'), + Some(';'), + Some('<'), + Some('='), + Some('>'), + Some('?'), // 0x38-0x3f + Some('@'), + Some('A'), + Some('B'), + Some('C'), + Some('D'), + Some('E'), + Some('F'), + Some('G'), // 0x40-0x47 + Some('H'), + Some('I'), + Some('J'), + Some('K'), + Some('L'), + Some('M'), + Some('N'), + Some('O'), // 0x48-0x4f + Some('P'), + Some('Q'), + Some('R'), + Some('S'), + Some('T'), + Some('U'), + Some('V'), + Some('W'), // 0x50-0x57 + Some('X'), + Some('Y'), + Some('Z'), + Some('['), + Some('\u{005C}'), + Some(']'), + Some('^'), + Some('_'), // 0x58-0x5f + Some('`'), + Some('a'), + Some('b'), + Some('c'), + Some('d'), + Some('e'), + Some('f'), + Some('g'), // 0x60-0x67 + Some('h'), + Some('i'), + Some('j'), + Some('k'), + Some('l'), + Some('m'), + Some('n'), + Some('o'), // 0x68-0x6f + Some('p'), + Some('q'), + Some('r'), + Some('s'), + Some('t'), + Some('u'), + Some('v'), + Some('w'), // 0x70-0x77 + Some('x'), + Some('y'), + Some('z'), + Some('{'), + Some('|'), + Some('}'), + Some('~'), + Some('\u{007F}'), // 0x78-0x7f + Some('Ç'), + Some('ü'), + Some('é'), + Some('â'), + Some('ä'), + Some('à'), + Some('å'), + Some('ç'), // 0x80-0x87 + Some('ê'), + Some('ë'), + Some('è'), + Some('ï'), + Some('î'), + Some('ì'), + Some('Ä'), + Some('Å'), // 0x88-0x8f + Some('É'), + Some('æ'), + Some('Æ'), + Some('ô'), + Some('ö'), + Some('ò'), + Some('û'), + Some('ù'), // 0x90-0x97 + Some('ÿ'), + Some('Ö'), + Some('Ü'), + Some('¢'), + Some('£'), + Some('¥'), + Some('₧'), + Some('ƒ'), // 0x98-0x9f + Some('á'), + Some('í'), + Some('ó'), + Some('ú'), + Some('ñ'), + Some('Ñ'), + Some('ª'), + Some('º'), // 0xa0-0xa7 + Some('¿'), + Some('⌐'), + Some('¬'), + Some('½'), + Some('¼'), + Some('¡'), + Some('«'), + Some('»'), // 0xa8-0xaf + Some('░'), + Some('▒'), + Some('▓'), + Some('│'), + Some('┤'), + Some('╡'), + Some('╢'), + Some('╖'), // 0xb0-0xb7 + Some('╕'), + Some('╣'), + Some('║'), + Some('╗'), + Some('╝'), + Some('╜'), + Some('╛'), + Some('┐'), // 0xb8-0xbf + Some('└'), + Some('┴'), + Some('┬'), + Some('├'), + Some('─'), + Some('┼'), + Some('╞'), + Some('╟'), // 0xc0-0xc7 + Some('╚'), + Some('╔'), + Some('╩'), + Some('╦'), + Some('╠'), + Some('═'), + Some('╬'), + Some('╧'), // 0xc8-0xcf + Some('╨'), + Some('╤'), + Some('╥'), + Some('╙'), + Some('╘'), + Some('╒'), + Some('╓'), + Some('╫'), // 0xd0-0xd7 + Some('╪'), + Some('┘'), + Some('┌'), + Some('█'), + Some('▄'), + Some('▌'), + Some('▐'), + Some('▀'), // 0xd8-0xdf + Some('α'), + Some('ß'), + Some('Γ'), + Some('π'), + Some('Σ'), + Some('σ'), + Some('µ'), + Some('τ'), // 0xe0-0xe7 + Some('Φ'), + Some('Θ'), + Some('Ω'), + Some('δ'), + Some('∞'), + Some('φ'), + Some('ε'), + Some('∩'), // 0xe8-0xef + Some('≡'), + Some('±'), + Some('≥'), + Some('≤'), + Some('⌠'), + Some('⌡'), + Some('÷'), + Some('≈'), // 0xf0-0xf7 + Some('°'), + Some('∙'), + Some('·'), + Some('√'), + Some('ⁿ'), + Some('²'), + Some('■'), + Some('\u{00A0}'), // 0xf8-0xff +]; + +/// Code page 737, byte value to Unicode scalar. +pub(crate) const CP737: [Option; 256] = [ + Some('\u{0000}'), + Some('\u{0001}'), + Some('\u{0002}'), + Some('\u{0003}'), + Some('\u{0004}'), + Some('\u{0005}'), + Some('\u{0006}'), + Some('\u{0007}'), // 0x00-0x07 + Some('\u{0008}'), + Some('\u{0009}'), + Some('\u{000A}'), + Some('\u{000B}'), + Some('\u{000C}'), + Some('\u{000D}'), + Some('\u{000E}'), + Some('\u{000F}'), // 0x08-0x0f + Some('\u{0010}'), + Some('\u{0011}'), + Some('\u{0012}'), + Some('\u{0013}'), + Some('\u{0014}'), + Some('\u{0015}'), + Some('\u{0016}'), + Some('\u{0017}'), // 0x10-0x17 + Some('\u{0018}'), + Some('\u{0019}'), + Some('\u{001A}'), + Some('\u{001B}'), + Some('\u{001C}'), + Some('\u{001D}'), + Some('\u{001E}'), + Some('\u{001F}'), // 0x18-0x1f + Some(' '), + Some('!'), + Some('"'), + Some('#'), + Some('$'), + Some('%'), + Some('&'), + Some('\u{0027}'), // 0x20-0x27 + Some('('), + Some(')'), + Some('*'), + Some('+'), + Some(','), + Some('-'), + Some('.'), + Some('/'), // 0x28-0x2f + Some('0'), + Some('1'), + Some('2'), + Some('3'), + Some('4'), + Some('5'), + Some('6'), + Some('7'), // 0x30-0x37 + Some('8'), + Some('9'), + Some(':'), + Some(';'), + Some('<'), + Some('='), + Some('>'), + Some('?'), // 0x38-0x3f + Some('@'), + Some('A'), + Some('B'), + Some('C'), + Some('D'), + Some('E'), + Some('F'), + Some('G'), // 0x40-0x47 + Some('H'), + Some('I'), + Some('J'), + Some('K'), + Some('L'), + Some('M'), + Some('N'), + Some('O'), // 0x48-0x4f + Some('P'), + Some('Q'), + Some('R'), + Some('S'), + Some('T'), + Some('U'), + Some('V'), + Some('W'), // 0x50-0x57 + Some('X'), + Some('Y'), + Some('Z'), + Some('['), + Some('\u{005C}'), + Some(']'), + Some('^'), + Some('_'), // 0x58-0x5f + Some('`'), + Some('a'), + Some('b'), + Some('c'), + Some('d'), + Some('e'), + Some('f'), + Some('g'), // 0x60-0x67 + Some('h'), + Some('i'), + Some('j'), + Some('k'), + Some('l'), + Some('m'), + Some('n'), + Some('o'), // 0x68-0x6f + Some('p'), + Some('q'), + Some('r'), + Some('s'), + Some('t'), + Some('u'), + Some('v'), + Some('w'), // 0x70-0x77 + Some('x'), + Some('y'), + Some('z'), + Some('{'), + Some('|'), + Some('}'), + Some('~'), + Some('\u{007F}'), // 0x78-0x7f + Some('Α'), + Some('Β'), + Some('Γ'), + Some('Δ'), + Some('Ε'), + Some('Ζ'), + Some('Η'), + Some('Θ'), // 0x80-0x87 + Some('Ι'), + Some('Κ'), + Some('Λ'), + Some('Μ'), + Some('Ν'), + Some('Ξ'), + Some('Ο'), + Some('Π'), // 0x88-0x8f + Some('Ρ'), + Some('Σ'), + Some('Τ'), + Some('Υ'), + Some('Φ'), + Some('Χ'), + Some('Ψ'), + Some('Ω'), // 0x90-0x97 + Some('α'), + Some('β'), + Some('γ'), + Some('δ'), + Some('ε'), + Some('ζ'), + Some('η'), + Some('θ'), // 0x98-0x9f + Some('ι'), + Some('κ'), + Some('λ'), + Some('μ'), + Some('ν'), + Some('ξ'), + Some('ο'), + Some('π'), // 0xa0-0xa7 + Some('ρ'), + Some('σ'), + Some('ς'), + Some('τ'), + Some('υ'), + Some('φ'), + Some('χ'), + Some('ψ'), // 0xa8-0xaf + Some('░'), + Some('▒'), + Some('▓'), + Some('│'), + Some('┤'), + Some('╡'), + Some('╢'), + Some('╖'), // 0xb0-0xb7 + Some('╕'), + Some('╣'), + Some('║'), + Some('╗'), + Some('╝'), + Some('╜'), + Some('╛'), + Some('┐'), // 0xb8-0xbf + Some('└'), + Some('┴'), + Some('┬'), + Some('├'), + Some('─'), + Some('┼'), + Some('╞'), + Some('╟'), // 0xc0-0xc7 + Some('╚'), + Some('╔'), + Some('╩'), + Some('╦'), + Some('╠'), + Some('═'), + Some('╬'), + Some('╧'), // 0xc8-0xcf + Some('╨'), + Some('╤'), + Some('╥'), + Some('╙'), + Some('╘'), + Some('╒'), + Some('╓'), + Some('╫'), // 0xd0-0xd7 + Some('╪'), + Some('┘'), + Some('┌'), + Some('█'), + Some('▄'), + Some('▌'), + Some('▐'), + Some('▀'), // 0xd8-0xdf + Some('ω'), + Some('ά'), + Some('έ'), + Some('ή'), + Some('ϊ'), + Some('ί'), + Some('ό'), + Some('ύ'), // 0xe0-0xe7 + Some('ϋ'), + Some('ώ'), + Some('Ά'), + Some('Έ'), + Some('Ή'), + Some('Ί'), + Some('Ό'), + Some('Ύ'), // 0xe8-0xef + Some('Ώ'), + Some('±'), + Some('≥'), + Some('≤'), + Some('Ϊ'), + Some('Ϋ'), + Some('÷'), + Some('≈'), // 0xf0-0xf7 + Some('°'), + Some('∙'), + Some('·'), + Some('√'), + Some('ⁿ'), + Some('²'), + Some('■'), + Some('\u{00A0}'), // 0xf8-0xff +]; + +/// Code page 775, byte value to Unicode scalar. +pub(crate) const CP775: [Option; 256] = [ + Some('\u{0000}'), + Some('\u{0001}'), + Some('\u{0002}'), + Some('\u{0003}'), + Some('\u{0004}'), + Some('\u{0005}'), + Some('\u{0006}'), + Some('\u{0007}'), // 0x00-0x07 + Some('\u{0008}'), + Some('\u{0009}'), + Some('\u{000A}'), + Some('\u{000B}'), + Some('\u{000C}'), + Some('\u{000D}'), + Some('\u{000E}'), + Some('\u{000F}'), // 0x08-0x0f + Some('\u{0010}'), + Some('\u{0011}'), + Some('\u{0012}'), + Some('\u{0013}'), + Some('\u{0014}'), + Some('\u{0015}'), + Some('\u{0016}'), + Some('\u{0017}'), // 0x10-0x17 + Some('\u{0018}'), + Some('\u{0019}'), + Some('\u{001A}'), + Some('\u{001B}'), + Some('\u{001C}'), + Some('\u{001D}'), + Some('\u{001E}'), + Some('\u{001F}'), // 0x18-0x1f + Some(' '), + Some('!'), + Some('"'), + Some('#'), + Some('$'), + Some('%'), + Some('&'), + Some('\u{0027}'), // 0x20-0x27 + Some('('), + Some(')'), + Some('*'), + Some('+'), + Some(','), + Some('-'), + Some('.'), + Some('/'), // 0x28-0x2f + Some('0'), + Some('1'), + Some('2'), + Some('3'), + Some('4'), + Some('5'), + Some('6'), + Some('7'), // 0x30-0x37 + Some('8'), + Some('9'), + Some(':'), + Some(';'), + Some('<'), + Some('='), + Some('>'), + Some('?'), // 0x38-0x3f + Some('@'), + Some('A'), + Some('B'), + Some('C'), + Some('D'), + Some('E'), + Some('F'), + Some('G'), // 0x40-0x47 + Some('H'), + Some('I'), + Some('J'), + Some('K'), + Some('L'), + Some('M'), + Some('N'), + Some('O'), // 0x48-0x4f + Some('P'), + Some('Q'), + Some('R'), + Some('S'), + Some('T'), + Some('U'), + Some('V'), + Some('W'), // 0x50-0x57 + Some('X'), + Some('Y'), + Some('Z'), + Some('['), + Some('\u{005C}'), + Some(']'), + Some('^'), + Some('_'), // 0x58-0x5f + Some('`'), + Some('a'), + Some('b'), + Some('c'), + Some('d'), + Some('e'), + Some('f'), + Some('g'), // 0x60-0x67 + Some('h'), + Some('i'), + Some('j'), + Some('k'), + Some('l'), + Some('m'), + Some('n'), + Some('o'), // 0x68-0x6f + Some('p'), + Some('q'), + Some('r'), + Some('s'), + Some('t'), + Some('u'), + Some('v'), + Some('w'), // 0x70-0x77 + Some('x'), + Some('y'), + Some('z'), + Some('{'), + Some('|'), + Some('}'), + Some('~'), + Some('\u{007F}'), // 0x78-0x7f + Some('Ć'), + Some('ü'), + Some('é'), + Some('ā'), + Some('ä'), + Some('ģ'), + Some('å'), + Some('ć'), // 0x80-0x87 + Some('ł'), + Some('ē'), + Some('Ŗ'), + Some('ŗ'), + Some('ī'), + Some('Ź'), + Some('Ä'), + Some('Å'), // 0x88-0x8f + Some('É'), + Some('æ'), + Some('Æ'), + Some('ō'), + Some('ö'), + Some('Ģ'), + Some('¢'), + Some('Ś'), // 0x90-0x97 + Some('ś'), + Some('Ö'), + Some('Ü'), + Some('ø'), + Some('£'), + Some('Ø'), + Some('×'), + Some('¤'), // 0x98-0x9f + Some('Ā'), + Some('Ī'), + Some('ó'), + Some('Ż'), + Some('ż'), + Some('ź'), + Some('”'), + Some('¦'), // 0xa0-0xa7 + Some('©'), + Some('®'), + Some('¬'), + Some('½'), + Some('¼'), + Some('Ł'), + Some('«'), + Some('»'), // 0xa8-0xaf + Some('░'), + Some('▒'), + Some('▓'), + Some('│'), + Some('┤'), + Some('Ą'), + Some('Č'), + Some('Ę'), // 0xb0-0xb7 + Some('Ė'), + Some('╣'), + Some('║'), + Some('╗'), + Some('╝'), + Some('Į'), + Some('Š'), + Some('┐'), // 0xb8-0xbf + Some('└'), + Some('┴'), + Some('┬'), + Some('├'), + Some('─'), + Some('┼'), + Some('Ų'), + Some('Ū'), // 0xc0-0xc7 + Some('╚'), + Some('╔'), + Some('╩'), + Some('╦'), + Some('╠'), + Some('═'), + Some('╬'), + Some('Ž'), // 0xc8-0xcf + Some('ą'), + Some('č'), + Some('ę'), + Some('ė'), + Some('į'), + Some('š'), + Some('ų'), + Some('ū'), // 0xd0-0xd7 + Some('ž'), + Some('┘'), + Some('┌'), + Some('█'), + Some('▄'), + Some('▌'), + Some('▐'), + Some('▀'), // 0xd8-0xdf + Some('Ó'), + Some('ß'), + Some('Ō'), + Some('Ń'), + Some('õ'), + Some('Õ'), + Some('µ'), + Some('ń'), // 0xe0-0xe7 + Some('Ķ'), + Some('ķ'), + Some('Ļ'), + Some('ļ'), + Some('ņ'), + Some('Ē'), + Some('Ņ'), + Some('’'), // 0xe8-0xef + Some('\u{00AD}'), + Some('±'), + Some('“'), + Some('¾'), + Some('¶'), + Some('§'), + Some('÷'), + Some('„'), // 0xf0-0xf7 + Some('°'), + Some('∙'), + Some('·'), + Some('¹'), + Some('³'), + Some('²'), + Some('■'), + Some('\u{00A0}'), // 0xf8-0xff +]; + +/// Code page 850, byte value to Unicode scalar. +pub(crate) const CP850: [Option; 256] = [ + Some('\u{0000}'), + Some('\u{0001}'), + Some('\u{0002}'), + Some('\u{0003}'), + Some('\u{0004}'), + Some('\u{0005}'), + Some('\u{0006}'), + Some('\u{0007}'), // 0x00-0x07 + Some('\u{0008}'), + Some('\u{0009}'), + Some('\u{000A}'), + Some('\u{000B}'), + Some('\u{000C}'), + Some('\u{000D}'), + Some('\u{000E}'), + Some('\u{000F}'), // 0x08-0x0f + Some('\u{0010}'), + Some('\u{0011}'), + Some('\u{0012}'), + Some('\u{0013}'), + Some('\u{0014}'), + Some('\u{0015}'), + Some('\u{0016}'), + Some('\u{0017}'), // 0x10-0x17 + Some('\u{0018}'), + Some('\u{0019}'), + Some('\u{001A}'), + Some('\u{001B}'), + Some('\u{001C}'), + Some('\u{001D}'), + Some('\u{001E}'), + Some('\u{001F}'), // 0x18-0x1f + Some(' '), + Some('!'), + Some('"'), + Some('#'), + Some('$'), + Some('%'), + Some('&'), + Some('\u{0027}'), // 0x20-0x27 + Some('('), + Some(')'), + Some('*'), + Some('+'), + Some(','), + Some('-'), + Some('.'), + Some('/'), // 0x28-0x2f + Some('0'), + Some('1'), + Some('2'), + Some('3'), + Some('4'), + Some('5'), + Some('6'), + Some('7'), // 0x30-0x37 + Some('8'), + Some('9'), + Some(':'), + Some(';'), + Some('<'), + Some('='), + Some('>'), + Some('?'), // 0x38-0x3f + Some('@'), + Some('A'), + Some('B'), + Some('C'), + Some('D'), + Some('E'), + Some('F'), + Some('G'), // 0x40-0x47 + Some('H'), + Some('I'), + Some('J'), + Some('K'), + Some('L'), + Some('M'), + Some('N'), + Some('O'), // 0x48-0x4f + Some('P'), + Some('Q'), + Some('R'), + Some('S'), + Some('T'), + Some('U'), + Some('V'), + Some('W'), // 0x50-0x57 + Some('X'), + Some('Y'), + Some('Z'), + Some('['), + Some('\u{005C}'), + Some(']'), + Some('^'), + Some('_'), // 0x58-0x5f + Some('`'), + Some('a'), + Some('b'), + Some('c'), + Some('d'), + Some('e'), + Some('f'), + Some('g'), // 0x60-0x67 + Some('h'), + Some('i'), + Some('j'), + Some('k'), + Some('l'), + Some('m'), + Some('n'), + Some('o'), // 0x68-0x6f + Some('p'), + Some('q'), + Some('r'), + Some('s'), + Some('t'), + Some('u'), + Some('v'), + Some('w'), // 0x70-0x77 + Some('x'), + Some('y'), + Some('z'), + Some('{'), + Some('|'), + Some('}'), + Some('~'), + Some('\u{007F}'), // 0x78-0x7f + Some('Ç'), + Some('ü'), + Some('é'), + Some('â'), + Some('ä'), + Some('à'), + Some('å'), + Some('ç'), // 0x80-0x87 + Some('ê'), + Some('ë'), + Some('è'), + Some('ï'), + Some('î'), + Some('ì'), + Some('Ä'), + Some('Å'), // 0x88-0x8f + Some('É'), + Some('æ'), + Some('Æ'), + Some('ô'), + Some('ö'), + Some('ò'), + Some('û'), + Some('ù'), // 0x90-0x97 + Some('ÿ'), + Some('Ö'), + Some('Ü'), + Some('ø'), + Some('£'), + Some('Ø'), + Some('×'), + Some('ƒ'), // 0x98-0x9f + Some('á'), + Some('í'), + Some('ó'), + Some('ú'), + Some('ñ'), + Some('Ñ'), + Some('ª'), + Some('º'), // 0xa0-0xa7 + Some('¿'), + Some('®'), + Some('¬'), + Some('½'), + Some('¼'), + Some('¡'), + Some('«'), + Some('»'), // 0xa8-0xaf + Some('░'), + Some('▒'), + Some('▓'), + Some('│'), + Some('┤'), + Some('Á'), + Some('Â'), + Some('À'), // 0xb0-0xb7 + Some('©'), + Some('╣'), + Some('║'), + Some('╗'), + Some('╝'), + Some('¢'), + Some('¥'), + Some('┐'), // 0xb8-0xbf + Some('└'), + Some('┴'), + Some('┬'), + Some('├'), + Some('─'), + Some('┼'), + Some('ã'), + Some('Ã'), // 0xc0-0xc7 + Some('╚'), + Some('╔'), + Some('╩'), + Some('╦'), + Some('╠'), + Some('═'), + Some('╬'), + Some('¤'), // 0xc8-0xcf + Some('ð'), + Some('Ð'), + Some('Ê'), + Some('Ë'), + Some('È'), + Some('ı'), + Some('Í'), + Some('Î'), // 0xd0-0xd7 + Some('Ï'), + Some('┘'), + Some('┌'), + Some('█'), + Some('▄'), + Some('¦'), + Some('Ì'), + Some('▀'), // 0xd8-0xdf + Some('Ó'), + Some('ß'), + Some('Ô'), + Some('Ò'), + Some('õ'), + Some('Õ'), + Some('µ'), + Some('þ'), // 0xe0-0xe7 + Some('Þ'), + Some('Ú'), + Some('Û'), + Some('Ù'), + Some('ý'), + Some('Ý'), + Some('¯'), + Some('´'), // 0xe8-0xef + Some('\u{00AD}'), + Some('±'), + Some('‗'), + Some('¾'), + Some('¶'), + Some('§'), + Some('÷'), + Some('¸'), // 0xf0-0xf7 + Some('°'), + Some('¨'), + Some('·'), + Some('¹'), + Some('³'), + Some('²'), + Some('■'), + Some('\u{00A0}'), // 0xf8-0xff +]; + +/// Code page 852, byte value to Unicode scalar. +pub(crate) const CP852: [Option; 256] = [ + Some('\u{0000}'), + Some('\u{0001}'), + Some('\u{0002}'), + Some('\u{0003}'), + Some('\u{0004}'), + Some('\u{0005}'), + Some('\u{0006}'), + Some('\u{0007}'), // 0x00-0x07 + Some('\u{0008}'), + Some('\u{0009}'), + Some('\u{000A}'), + Some('\u{000B}'), + Some('\u{000C}'), + Some('\u{000D}'), + Some('\u{000E}'), + Some('\u{000F}'), // 0x08-0x0f + Some('\u{0010}'), + Some('\u{0011}'), + Some('\u{0012}'), + Some('\u{0013}'), + Some('\u{0014}'), + Some('\u{0015}'), + Some('\u{0016}'), + Some('\u{0017}'), // 0x10-0x17 + Some('\u{0018}'), + Some('\u{0019}'), + Some('\u{001A}'), + Some('\u{001B}'), + Some('\u{001C}'), + Some('\u{001D}'), + Some('\u{001E}'), + Some('\u{001F}'), // 0x18-0x1f + Some(' '), + Some('!'), + Some('"'), + Some('#'), + Some('$'), + Some('%'), + Some('&'), + Some('\u{0027}'), // 0x20-0x27 + Some('('), + Some(')'), + Some('*'), + Some('+'), + Some(','), + Some('-'), + Some('.'), + Some('/'), // 0x28-0x2f + Some('0'), + Some('1'), + Some('2'), + Some('3'), + Some('4'), + Some('5'), + Some('6'), + Some('7'), // 0x30-0x37 + Some('8'), + Some('9'), + Some(':'), + Some(';'), + Some('<'), + Some('='), + Some('>'), + Some('?'), // 0x38-0x3f + Some('@'), + Some('A'), + Some('B'), + Some('C'), + Some('D'), + Some('E'), + Some('F'), + Some('G'), // 0x40-0x47 + Some('H'), + Some('I'), + Some('J'), + Some('K'), + Some('L'), + Some('M'), + Some('N'), + Some('O'), // 0x48-0x4f + Some('P'), + Some('Q'), + Some('R'), + Some('S'), + Some('T'), + Some('U'), + Some('V'), + Some('W'), // 0x50-0x57 + Some('X'), + Some('Y'), + Some('Z'), + Some('['), + Some('\u{005C}'), + Some(']'), + Some('^'), + Some('_'), // 0x58-0x5f + Some('`'), + Some('a'), + Some('b'), + Some('c'), + Some('d'), + Some('e'), + Some('f'), + Some('g'), // 0x60-0x67 + Some('h'), + Some('i'), + Some('j'), + Some('k'), + Some('l'), + Some('m'), + Some('n'), + Some('o'), // 0x68-0x6f + Some('p'), + Some('q'), + Some('r'), + Some('s'), + Some('t'), + Some('u'), + Some('v'), + Some('w'), // 0x70-0x77 + Some('x'), + Some('y'), + Some('z'), + Some('{'), + Some('|'), + Some('}'), + Some('~'), + Some('\u{007F}'), // 0x78-0x7f + Some('Ç'), + Some('ü'), + Some('é'), + Some('â'), + Some('ä'), + Some('ů'), + Some('ć'), + Some('ç'), // 0x80-0x87 + Some('ł'), + Some('ë'), + Some('Ő'), + Some('ő'), + Some('î'), + Some('Ź'), + Some('Ä'), + Some('Ć'), // 0x88-0x8f + Some('É'), + Some('Ĺ'), + Some('ĺ'), + Some('ô'), + Some('ö'), + Some('Ľ'), + Some('ľ'), + Some('Ś'), // 0x90-0x97 + Some('ś'), + Some('Ö'), + Some('Ü'), + Some('Ť'), + Some('ť'), + Some('Ł'), + Some('×'), + Some('č'), // 0x98-0x9f + Some('á'), + Some('í'), + Some('ó'), + Some('ú'), + Some('Ą'), + Some('ą'), + Some('Ž'), + Some('ž'), // 0xa0-0xa7 + Some('Ę'), + Some('ę'), + Some('¬'), + Some('ź'), + Some('Č'), + Some('ş'), + Some('«'), + Some('»'), // 0xa8-0xaf + Some('░'), + Some('▒'), + Some('▓'), + Some('│'), + Some('┤'), + Some('Á'), + Some('Â'), + Some('Ě'), // 0xb0-0xb7 + Some('Ş'), + Some('╣'), + Some('║'), + Some('╗'), + Some('╝'), + Some('Ż'), + Some('ż'), + Some('┐'), // 0xb8-0xbf + Some('└'), + Some('┴'), + Some('┬'), + Some('├'), + Some('─'), + Some('┼'), + Some('Ă'), + Some('ă'), // 0xc0-0xc7 + Some('╚'), + Some('╔'), + Some('╩'), + Some('╦'), + Some('╠'), + Some('═'), + Some('╬'), + Some('¤'), // 0xc8-0xcf + Some('đ'), + Some('Đ'), + Some('Ď'), + Some('Ë'), + Some('ď'), + Some('Ň'), + Some('Í'), + Some('Î'), // 0xd0-0xd7 + Some('ě'), + Some('┘'), + Some('┌'), + Some('█'), + Some('▄'), + Some('Ţ'), + Some('Ů'), + Some('▀'), // 0xd8-0xdf + Some('Ó'), + Some('ß'), + Some('Ô'), + Some('Ń'), + Some('ń'), + Some('ň'), + Some('Š'), + Some('š'), // 0xe0-0xe7 + Some('Ŕ'), + Some('Ú'), + Some('ŕ'), + Some('Ű'), + Some('ý'), + Some('Ý'), + Some('ţ'), + Some('´'), // 0xe8-0xef + Some('\u{00AD}'), + Some('˝'), + Some('˛'), + Some('ˇ'), + Some('˘'), + Some('§'), + Some('÷'), + Some('¸'), // 0xf0-0xf7 + Some('°'), + Some('¨'), + Some('˙'), + Some('ű'), + Some('Ř'), + Some('ř'), + Some('■'), + Some('\u{00A0}'), // 0xf8-0xff +]; + +/// Code page 855, byte value to Unicode scalar. +pub(crate) const CP855: [Option; 256] = [ + Some('\u{0000}'), + Some('\u{0001}'), + Some('\u{0002}'), + Some('\u{0003}'), + Some('\u{0004}'), + Some('\u{0005}'), + Some('\u{0006}'), + Some('\u{0007}'), // 0x00-0x07 + Some('\u{0008}'), + Some('\u{0009}'), + Some('\u{000A}'), + Some('\u{000B}'), + Some('\u{000C}'), + Some('\u{000D}'), + Some('\u{000E}'), + Some('\u{000F}'), // 0x08-0x0f + Some('\u{0010}'), + Some('\u{0011}'), + Some('\u{0012}'), + Some('\u{0013}'), + Some('\u{0014}'), + Some('\u{0015}'), + Some('\u{0016}'), + Some('\u{0017}'), // 0x10-0x17 + Some('\u{0018}'), + Some('\u{0019}'), + Some('\u{001A}'), + Some('\u{001B}'), + Some('\u{001C}'), + Some('\u{001D}'), + Some('\u{001E}'), + Some('\u{001F}'), // 0x18-0x1f + Some(' '), + Some('!'), + Some('"'), + Some('#'), + Some('$'), + Some('%'), + Some('&'), + Some('\u{0027}'), // 0x20-0x27 + Some('('), + Some(')'), + Some('*'), + Some('+'), + Some(','), + Some('-'), + Some('.'), + Some('/'), // 0x28-0x2f + Some('0'), + Some('1'), + Some('2'), + Some('3'), + Some('4'), + Some('5'), + Some('6'), + Some('7'), // 0x30-0x37 + Some('8'), + Some('9'), + Some(':'), + Some(';'), + Some('<'), + Some('='), + Some('>'), + Some('?'), // 0x38-0x3f + Some('@'), + Some('A'), + Some('B'), + Some('C'), + Some('D'), + Some('E'), + Some('F'), + Some('G'), // 0x40-0x47 + Some('H'), + Some('I'), + Some('J'), + Some('K'), + Some('L'), + Some('M'), + Some('N'), + Some('O'), // 0x48-0x4f + Some('P'), + Some('Q'), + Some('R'), + Some('S'), + Some('T'), + Some('U'), + Some('V'), + Some('W'), // 0x50-0x57 + Some('X'), + Some('Y'), + Some('Z'), + Some('['), + Some('\u{005C}'), + Some(']'), + Some('^'), + Some('_'), // 0x58-0x5f + Some('`'), + Some('a'), + Some('b'), + Some('c'), + Some('d'), + Some('e'), + Some('f'), + Some('g'), // 0x60-0x67 + Some('h'), + Some('i'), + Some('j'), + Some('k'), + Some('l'), + Some('m'), + Some('n'), + Some('o'), // 0x68-0x6f + Some('p'), + Some('q'), + Some('r'), + Some('s'), + Some('t'), + Some('u'), + Some('v'), + Some('w'), // 0x70-0x77 + Some('x'), + Some('y'), + Some('z'), + Some('{'), + Some('|'), + Some('}'), + Some('~'), + Some('\u{007F}'), // 0x78-0x7f + Some('ђ'), + Some('Ђ'), + Some('ѓ'), + Some('Ѓ'), + Some('ё'), + Some('Ё'), + Some('є'), + Some('Є'), // 0x80-0x87 + Some('ѕ'), + Some('Ѕ'), + Some('і'), + Some('І'), + Some('ї'), + Some('Ї'), + Some('ј'), + Some('Ј'), // 0x88-0x8f + Some('љ'), + Some('Љ'), + Some('њ'), + Some('Њ'), + Some('ћ'), + Some('Ћ'), + Some('ќ'), + Some('Ќ'), // 0x90-0x97 + Some('ў'), + Some('Ў'), + Some('џ'), + Some('Џ'), + Some('ю'), + Some('Ю'), + Some('ъ'), + Some('Ъ'), // 0x98-0x9f + Some('а'), + Some('А'), + Some('б'), + Some('Б'), + Some('ц'), + Some('Ц'), + Some('д'), + Some('Д'), // 0xa0-0xa7 + Some('е'), + Some('Е'), + Some('ф'), + Some('Ф'), + Some('г'), + Some('Г'), + Some('«'), + Some('»'), // 0xa8-0xaf + Some('░'), + Some('▒'), + Some('▓'), + Some('│'), + Some('┤'), + Some('х'), + Some('Х'), + Some('и'), // 0xb0-0xb7 + Some('И'), + Some('╣'), + Some('║'), + Some('╗'), + Some('╝'), + Some('й'), + Some('Й'), + Some('┐'), // 0xb8-0xbf + Some('└'), + Some('┴'), + Some('┬'), + Some('├'), + Some('─'), + Some('┼'), + Some('к'), + Some('К'), // 0xc0-0xc7 + Some('╚'), + Some('╔'), + Some('╩'), + Some('╦'), + Some('╠'), + Some('═'), + Some('╬'), + Some('¤'), // 0xc8-0xcf + Some('л'), + Some('Л'), + Some('м'), + Some('М'), + Some('н'), + Some('Н'), + Some('о'), + Some('О'), // 0xd0-0xd7 + Some('п'), + Some('┘'), + Some('┌'), + Some('█'), + Some('▄'), + Some('П'), + Some('я'), + Some('▀'), // 0xd8-0xdf + Some('Я'), + Some('р'), + Some('Р'), + Some('с'), + Some('С'), + Some('т'), + Some('Т'), + Some('у'), // 0xe0-0xe7 + Some('У'), + Some('ж'), + Some('Ж'), + Some('в'), + Some('В'), + Some('ь'), + Some('Ь'), + Some('№'), // 0xe8-0xef + Some('\u{00AD}'), + Some('ы'), + Some('Ы'), + Some('з'), + Some('З'), + Some('ш'), + Some('Ш'), + Some('э'), // 0xf0-0xf7 + Some('Э'), + Some('щ'), + Some('Щ'), + Some('ч'), + Some('Ч'), + Some('§'), + Some('■'), + Some('\u{00A0}'), // 0xf8-0xff +]; + +/// Code page 857, byte value to Unicode scalar. +pub(crate) const CP857: [Option; 256] = [ + Some('\u{0000}'), + Some('\u{0001}'), + Some('\u{0002}'), + Some('\u{0003}'), + Some('\u{0004}'), + Some('\u{0005}'), + Some('\u{0006}'), + Some('\u{0007}'), // 0x00-0x07 + Some('\u{0008}'), + Some('\u{0009}'), + Some('\u{000A}'), + Some('\u{000B}'), + Some('\u{000C}'), + Some('\u{000D}'), + Some('\u{000E}'), + Some('\u{000F}'), // 0x08-0x0f + Some('\u{0010}'), + Some('\u{0011}'), + Some('\u{0012}'), + Some('\u{0013}'), + Some('\u{0014}'), + Some('\u{0015}'), + Some('\u{0016}'), + Some('\u{0017}'), // 0x10-0x17 + Some('\u{0018}'), + Some('\u{0019}'), + Some('\u{001A}'), + Some('\u{001B}'), + Some('\u{001C}'), + Some('\u{001D}'), + Some('\u{001E}'), + Some('\u{001F}'), // 0x18-0x1f + Some(' '), + Some('!'), + Some('"'), + Some('#'), + Some('$'), + Some('%'), + Some('&'), + Some('\u{0027}'), // 0x20-0x27 + Some('('), + Some(')'), + Some('*'), + Some('+'), + Some(','), + Some('-'), + Some('.'), + Some('/'), // 0x28-0x2f + Some('0'), + Some('1'), + Some('2'), + Some('3'), + Some('4'), + Some('5'), + Some('6'), + Some('7'), // 0x30-0x37 + Some('8'), + Some('9'), + Some(':'), + Some(';'), + Some('<'), + Some('='), + Some('>'), + Some('?'), // 0x38-0x3f + Some('@'), + Some('A'), + Some('B'), + Some('C'), + Some('D'), + Some('E'), + Some('F'), + Some('G'), // 0x40-0x47 + Some('H'), + Some('I'), + Some('J'), + Some('K'), + Some('L'), + Some('M'), + Some('N'), + Some('O'), // 0x48-0x4f + Some('P'), + Some('Q'), + Some('R'), + Some('S'), + Some('T'), + Some('U'), + Some('V'), + Some('W'), // 0x50-0x57 + Some('X'), + Some('Y'), + Some('Z'), + Some('['), + Some('\u{005C}'), + Some(']'), + Some('^'), + Some('_'), // 0x58-0x5f + Some('`'), + Some('a'), + Some('b'), + Some('c'), + Some('d'), + Some('e'), + Some('f'), + Some('g'), // 0x60-0x67 + Some('h'), + Some('i'), + Some('j'), + Some('k'), + Some('l'), + Some('m'), + Some('n'), + Some('o'), // 0x68-0x6f + Some('p'), + Some('q'), + Some('r'), + Some('s'), + Some('t'), + Some('u'), + Some('v'), + Some('w'), // 0x70-0x77 + Some('x'), + Some('y'), + Some('z'), + Some('{'), + Some('|'), + Some('}'), + Some('~'), + Some('\u{007F}'), // 0x78-0x7f + Some('Ç'), + Some('ü'), + Some('é'), + Some('â'), + Some('ä'), + Some('à'), + Some('å'), + Some('ç'), // 0x80-0x87 + Some('ê'), + Some('ë'), + Some('è'), + Some('ï'), + Some('î'), + Some('ı'), + Some('Ä'), + Some('Å'), // 0x88-0x8f + Some('É'), + Some('æ'), + Some('Æ'), + Some('ô'), + Some('ö'), + Some('ò'), + Some('û'), + Some('ù'), // 0x90-0x97 + Some('İ'), + Some('Ö'), + Some('Ü'), + Some('ø'), + Some('£'), + Some('Ø'), + Some('Ş'), + Some('ş'), // 0x98-0x9f + Some('á'), + Some('í'), + Some('ó'), + Some('ú'), + Some('ñ'), + Some('Ñ'), + Some('Ğ'), + Some('ğ'), // 0xa0-0xa7 + Some('¿'), + Some('®'), + Some('¬'), + Some('½'), + Some('¼'), + Some('¡'), + Some('«'), + Some('»'), // 0xa8-0xaf + Some('░'), + Some('▒'), + Some('▓'), + Some('│'), + Some('┤'), + Some('Á'), + Some('Â'), + Some('À'), // 0xb0-0xb7 + Some('©'), + Some('╣'), + Some('║'), + Some('╗'), + Some('╝'), + Some('¢'), + Some('¥'), + Some('┐'), // 0xb8-0xbf + Some('└'), + Some('┴'), + Some('┬'), + Some('├'), + Some('─'), + Some('┼'), + Some('ã'), + Some('Ã'), // 0xc0-0xc7 + Some('╚'), + Some('╔'), + Some('╩'), + Some('╦'), + Some('╠'), + Some('═'), + Some('╬'), + Some('¤'), // 0xc8-0xcf + Some('º'), + Some('ª'), + Some('Ê'), + Some('Ë'), + Some('È'), + None, + Some('Í'), + Some('Î'), // 0xd0-0xd7 + Some('Ï'), + Some('┘'), + Some('┌'), + Some('█'), + Some('▄'), + Some('¦'), + Some('Ì'), + Some('▀'), // 0xd8-0xdf + Some('Ó'), + Some('ß'), + Some('Ô'), + Some('Ò'), + Some('õ'), + Some('Õ'), + Some('µ'), + None, // 0xe0-0xe7 + Some('×'), + Some('Ú'), + Some('Û'), + Some('Ù'), + Some('ì'), + Some('ÿ'), + Some('¯'), + Some('´'), // 0xe8-0xef + Some('\u{00AD}'), + Some('±'), + None, + Some('¾'), + Some('¶'), + Some('§'), + Some('÷'), + Some('¸'), // 0xf0-0xf7 + Some('°'), + Some('¨'), + Some('·'), + Some('¹'), + Some('³'), + Some('²'), + Some('■'), + Some('\u{00A0}'), // 0xf8-0xff +]; + +/// Code page 860, byte value to Unicode scalar. +pub(crate) const CP860: [Option; 256] = [ + Some('\u{0000}'), + Some('\u{0001}'), + Some('\u{0002}'), + Some('\u{0003}'), + Some('\u{0004}'), + Some('\u{0005}'), + Some('\u{0006}'), + Some('\u{0007}'), // 0x00-0x07 + Some('\u{0008}'), + Some('\u{0009}'), + Some('\u{000A}'), + Some('\u{000B}'), + Some('\u{000C}'), + Some('\u{000D}'), + Some('\u{000E}'), + Some('\u{000F}'), // 0x08-0x0f + Some('\u{0010}'), + Some('\u{0011}'), + Some('\u{0012}'), + Some('\u{0013}'), + Some('\u{0014}'), + Some('\u{0015}'), + Some('\u{0016}'), + Some('\u{0017}'), // 0x10-0x17 + Some('\u{0018}'), + Some('\u{0019}'), + Some('\u{001A}'), + Some('\u{001B}'), + Some('\u{001C}'), + Some('\u{001D}'), + Some('\u{001E}'), + Some('\u{001F}'), // 0x18-0x1f + Some(' '), + Some('!'), + Some('"'), + Some('#'), + Some('$'), + Some('%'), + Some('&'), + Some('\u{0027}'), // 0x20-0x27 + Some('('), + Some(')'), + Some('*'), + Some('+'), + Some(','), + Some('-'), + Some('.'), + Some('/'), // 0x28-0x2f + Some('0'), + Some('1'), + Some('2'), + Some('3'), + Some('4'), + Some('5'), + Some('6'), + Some('7'), // 0x30-0x37 + Some('8'), + Some('9'), + Some(':'), + Some(';'), + Some('<'), + Some('='), + Some('>'), + Some('?'), // 0x38-0x3f + Some('@'), + Some('A'), + Some('B'), + Some('C'), + Some('D'), + Some('E'), + Some('F'), + Some('G'), // 0x40-0x47 + Some('H'), + Some('I'), + Some('J'), + Some('K'), + Some('L'), + Some('M'), + Some('N'), + Some('O'), // 0x48-0x4f + Some('P'), + Some('Q'), + Some('R'), + Some('S'), + Some('T'), + Some('U'), + Some('V'), + Some('W'), // 0x50-0x57 + Some('X'), + Some('Y'), + Some('Z'), + Some('['), + Some('\u{005C}'), + Some(']'), + Some('^'), + Some('_'), // 0x58-0x5f + Some('`'), + Some('a'), + Some('b'), + Some('c'), + Some('d'), + Some('e'), + Some('f'), + Some('g'), // 0x60-0x67 + Some('h'), + Some('i'), + Some('j'), + Some('k'), + Some('l'), + Some('m'), + Some('n'), + Some('o'), // 0x68-0x6f + Some('p'), + Some('q'), + Some('r'), + Some('s'), + Some('t'), + Some('u'), + Some('v'), + Some('w'), // 0x70-0x77 + Some('x'), + Some('y'), + Some('z'), + Some('{'), + Some('|'), + Some('}'), + Some('~'), + Some('\u{007F}'), // 0x78-0x7f + Some('Ç'), + Some('ü'), + Some('é'), + Some('â'), + Some('ã'), + Some('à'), + Some('Á'), + Some('ç'), // 0x80-0x87 + Some('ê'), + Some('Ê'), + Some('è'), + Some('Í'), + Some('Ô'), + Some('ì'), + Some('Ã'), + Some('Â'), // 0x88-0x8f + Some('É'), + Some('À'), + Some('È'), + Some('ô'), + Some('õ'), + Some('ò'), + Some('Ú'), + Some('ù'), // 0x90-0x97 + Some('Ì'), + Some('Õ'), + Some('Ü'), + Some('¢'), + Some('£'), + Some('Ù'), + Some('₧'), + Some('Ó'), // 0x98-0x9f + Some('á'), + Some('í'), + Some('ó'), + Some('ú'), + Some('ñ'), + Some('Ñ'), + Some('ª'), + Some('º'), // 0xa0-0xa7 + Some('¿'), + Some('Ò'), + Some('¬'), + Some('½'), + Some('¼'), + Some('¡'), + Some('«'), + Some('»'), // 0xa8-0xaf + Some('░'), + Some('▒'), + Some('▓'), + Some('│'), + Some('┤'), + Some('╡'), + Some('╢'), + Some('╖'), // 0xb0-0xb7 + Some('╕'), + Some('╣'), + Some('║'), + Some('╗'), + Some('╝'), + Some('╜'), + Some('╛'), + Some('┐'), // 0xb8-0xbf + Some('└'), + Some('┴'), + Some('┬'), + Some('├'), + Some('─'), + Some('┼'), + Some('╞'), + Some('╟'), // 0xc0-0xc7 + Some('╚'), + Some('╔'), + Some('╩'), + Some('╦'), + Some('╠'), + Some('═'), + Some('╬'), + Some('╧'), // 0xc8-0xcf + Some('╨'), + Some('╤'), + Some('╥'), + Some('╙'), + Some('╘'), + Some('╒'), + Some('╓'), + Some('╫'), // 0xd0-0xd7 + Some('╪'), + Some('┘'), + Some('┌'), + Some('█'), + Some('▄'), + Some('▌'), + Some('▐'), + Some('▀'), // 0xd8-0xdf + Some('α'), + Some('ß'), + Some('Γ'), + Some('π'), + Some('Σ'), + Some('σ'), + Some('µ'), + Some('τ'), // 0xe0-0xe7 + Some('Φ'), + Some('Θ'), + Some('Ω'), + Some('δ'), + Some('∞'), + Some('φ'), + Some('ε'), + Some('∩'), // 0xe8-0xef + Some('≡'), + Some('±'), + Some('≥'), + Some('≤'), + Some('⌠'), + Some('⌡'), + Some('÷'), + Some('≈'), // 0xf0-0xf7 + Some('°'), + Some('∙'), + Some('·'), + Some('√'), + Some('ⁿ'), + Some('²'), + Some('■'), + Some('\u{00A0}'), // 0xf8-0xff +]; + +/// Code page 861, byte value to Unicode scalar. +pub(crate) const CP861: [Option; 256] = [ + Some('\u{0000}'), + Some('\u{0001}'), + Some('\u{0002}'), + Some('\u{0003}'), + Some('\u{0004}'), + Some('\u{0005}'), + Some('\u{0006}'), + Some('\u{0007}'), // 0x00-0x07 + Some('\u{0008}'), + Some('\u{0009}'), + Some('\u{000A}'), + Some('\u{000B}'), + Some('\u{000C}'), + Some('\u{000D}'), + Some('\u{000E}'), + Some('\u{000F}'), // 0x08-0x0f + Some('\u{0010}'), + Some('\u{0011}'), + Some('\u{0012}'), + Some('\u{0013}'), + Some('\u{0014}'), + Some('\u{0015}'), + Some('\u{0016}'), + Some('\u{0017}'), // 0x10-0x17 + Some('\u{0018}'), + Some('\u{0019}'), + Some('\u{001A}'), + Some('\u{001B}'), + Some('\u{001C}'), + Some('\u{001D}'), + Some('\u{001E}'), + Some('\u{001F}'), // 0x18-0x1f + Some(' '), + Some('!'), + Some('"'), + Some('#'), + Some('$'), + Some('%'), + Some('&'), + Some('\u{0027}'), // 0x20-0x27 + Some('('), + Some(')'), + Some('*'), + Some('+'), + Some(','), + Some('-'), + Some('.'), + Some('/'), // 0x28-0x2f + Some('0'), + Some('1'), + Some('2'), + Some('3'), + Some('4'), + Some('5'), + Some('6'), + Some('7'), // 0x30-0x37 + Some('8'), + Some('9'), + Some(':'), + Some(';'), + Some('<'), + Some('='), + Some('>'), + Some('?'), // 0x38-0x3f + Some('@'), + Some('A'), + Some('B'), + Some('C'), + Some('D'), + Some('E'), + Some('F'), + Some('G'), // 0x40-0x47 + Some('H'), + Some('I'), + Some('J'), + Some('K'), + Some('L'), + Some('M'), + Some('N'), + Some('O'), // 0x48-0x4f + Some('P'), + Some('Q'), + Some('R'), + Some('S'), + Some('T'), + Some('U'), + Some('V'), + Some('W'), // 0x50-0x57 + Some('X'), + Some('Y'), + Some('Z'), + Some('['), + Some('\u{005C}'), + Some(']'), + Some('^'), + Some('_'), // 0x58-0x5f + Some('`'), + Some('a'), + Some('b'), + Some('c'), + Some('d'), + Some('e'), + Some('f'), + Some('g'), // 0x60-0x67 + Some('h'), + Some('i'), + Some('j'), + Some('k'), + Some('l'), + Some('m'), + Some('n'), + Some('o'), // 0x68-0x6f + Some('p'), + Some('q'), + Some('r'), + Some('s'), + Some('t'), + Some('u'), + Some('v'), + Some('w'), // 0x70-0x77 + Some('x'), + Some('y'), + Some('z'), + Some('{'), + Some('|'), + Some('}'), + Some('~'), + Some('\u{007F}'), // 0x78-0x7f + Some('Ç'), + Some('ü'), + Some('é'), + Some('â'), + Some('ä'), + Some('à'), + Some('å'), + Some('ç'), // 0x80-0x87 + Some('ê'), + Some('ë'), + Some('è'), + Some('Ð'), + Some('ð'), + Some('Þ'), + Some('Ä'), + Some('Å'), // 0x88-0x8f + Some('É'), + Some('æ'), + Some('Æ'), + Some('ô'), + Some('ö'), + Some('þ'), + Some('û'), + Some('Ý'), // 0x90-0x97 + Some('ý'), + Some('Ö'), + Some('Ü'), + Some('ø'), + Some('£'), + Some('Ø'), + Some('₧'), + Some('ƒ'), // 0x98-0x9f + Some('á'), + Some('í'), + Some('ó'), + Some('ú'), + Some('Á'), + Some('Í'), + Some('Ó'), + Some('Ú'), // 0xa0-0xa7 + Some('¿'), + Some('⌐'), + Some('¬'), + Some('½'), + Some('¼'), + Some('¡'), + Some('«'), + Some('»'), // 0xa8-0xaf + Some('░'), + Some('▒'), + Some('▓'), + Some('│'), + Some('┤'), + Some('╡'), + Some('╢'), + Some('╖'), // 0xb0-0xb7 + Some('╕'), + Some('╣'), + Some('║'), + Some('╗'), + Some('╝'), + Some('╜'), + Some('╛'), + Some('┐'), // 0xb8-0xbf + Some('└'), + Some('┴'), + Some('┬'), + Some('├'), + Some('─'), + Some('┼'), + Some('╞'), + Some('╟'), // 0xc0-0xc7 + Some('╚'), + Some('╔'), + Some('╩'), + Some('╦'), + Some('╠'), + Some('═'), + Some('╬'), + Some('╧'), // 0xc8-0xcf + Some('╨'), + Some('╤'), + Some('╥'), + Some('╙'), + Some('╘'), + Some('╒'), + Some('╓'), + Some('╫'), // 0xd0-0xd7 + Some('╪'), + Some('┘'), + Some('┌'), + Some('█'), + Some('▄'), + Some('▌'), + Some('▐'), + Some('▀'), // 0xd8-0xdf + Some('α'), + Some('ß'), + Some('Γ'), + Some('π'), + Some('Σ'), + Some('σ'), + Some('µ'), + Some('τ'), // 0xe0-0xe7 + Some('Φ'), + Some('Θ'), + Some('Ω'), + Some('δ'), + Some('∞'), + Some('φ'), + Some('ε'), + Some('∩'), // 0xe8-0xef + Some('≡'), + Some('±'), + Some('≥'), + Some('≤'), + Some('⌠'), + Some('⌡'), + Some('÷'), + Some('≈'), // 0xf0-0xf7 + Some('°'), + Some('∙'), + Some('·'), + Some('√'), + Some('ⁿ'), + Some('²'), + Some('■'), + Some('\u{00A0}'), // 0xf8-0xff +]; + +/// Code page 862, byte value to Unicode scalar. +pub(crate) const CP862: [Option; 256] = [ + Some('\u{0000}'), + Some('\u{0001}'), + Some('\u{0002}'), + Some('\u{0003}'), + Some('\u{0004}'), + Some('\u{0005}'), + Some('\u{0006}'), + Some('\u{0007}'), // 0x00-0x07 + Some('\u{0008}'), + Some('\u{0009}'), + Some('\u{000A}'), + Some('\u{000B}'), + Some('\u{000C}'), + Some('\u{000D}'), + Some('\u{000E}'), + Some('\u{000F}'), // 0x08-0x0f + Some('\u{0010}'), + Some('\u{0011}'), + Some('\u{0012}'), + Some('\u{0013}'), + Some('\u{0014}'), + Some('\u{0015}'), + Some('\u{0016}'), + Some('\u{0017}'), // 0x10-0x17 + Some('\u{0018}'), + Some('\u{0019}'), + Some('\u{001A}'), + Some('\u{001B}'), + Some('\u{001C}'), + Some('\u{001D}'), + Some('\u{001E}'), + Some('\u{001F}'), // 0x18-0x1f + Some(' '), + Some('!'), + Some('"'), + Some('#'), + Some('$'), + Some('%'), + Some('&'), + Some('\u{0027}'), // 0x20-0x27 + Some('('), + Some(')'), + Some('*'), + Some('+'), + Some(','), + Some('-'), + Some('.'), + Some('/'), // 0x28-0x2f + Some('0'), + Some('1'), + Some('2'), + Some('3'), + Some('4'), + Some('5'), + Some('6'), + Some('7'), // 0x30-0x37 + Some('8'), + Some('9'), + Some(':'), + Some(';'), + Some('<'), + Some('='), + Some('>'), + Some('?'), // 0x38-0x3f + Some('@'), + Some('A'), + Some('B'), + Some('C'), + Some('D'), + Some('E'), + Some('F'), + Some('G'), // 0x40-0x47 + Some('H'), + Some('I'), + Some('J'), + Some('K'), + Some('L'), + Some('M'), + Some('N'), + Some('O'), // 0x48-0x4f + Some('P'), + Some('Q'), + Some('R'), + Some('S'), + Some('T'), + Some('U'), + Some('V'), + Some('W'), // 0x50-0x57 + Some('X'), + Some('Y'), + Some('Z'), + Some('['), + Some('\u{005C}'), + Some(']'), + Some('^'), + Some('_'), // 0x58-0x5f + Some('`'), + Some('a'), + Some('b'), + Some('c'), + Some('d'), + Some('e'), + Some('f'), + Some('g'), // 0x60-0x67 + Some('h'), + Some('i'), + Some('j'), + Some('k'), + Some('l'), + Some('m'), + Some('n'), + Some('o'), // 0x68-0x6f + Some('p'), + Some('q'), + Some('r'), + Some('s'), + Some('t'), + Some('u'), + Some('v'), + Some('w'), // 0x70-0x77 + Some('x'), + Some('y'), + Some('z'), + Some('{'), + Some('|'), + Some('}'), + Some('~'), + Some('\u{007F}'), // 0x78-0x7f + Some('א'), + Some('ב'), + Some('ג'), + Some('ד'), + Some('ה'), + Some('ו'), + Some('ז'), + Some('ח'), // 0x80-0x87 + Some('ט'), + Some('י'), + Some('ך'), + Some('כ'), + Some('ל'), + Some('ם'), + Some('מ'), + Some('ן'), // 0x88-0x8f + Some('נ'), + Some('ס'), + Some('ע'), + Some('ף'), + Some('פ'), + Some('ץ'), + Some('צ'), + Some('ק'), // 0x90-0x97 + Some('ר'), + Some('ש'), + Some('ת'), + Some('¢'), + Some('£'), + Some('¥'), + Some('₧'), + Some('ƒ'), // 0x98-0x9f + Some('á'), + Some('í'), + Some('ó'), + Some('ú'), + Some('ñ'), + Some('Ñ'), + Some('ª'), + Some('º'), // 0xa0-0xa7 + Some('¿'), + Some('⌐'), + Some('¬'), + Some('½'), + Some('¼'), + Some('¡'), + Some('«'), + Some('»'), // 0xa8-0xaf + Some('░'), + Some('▒'), + Some('▓'), + Some('│'), + Some('┤'), + Some('╡'), + Some('╢'), + Some('╖'), // 0xb0-0xb7 + Some('╕'), + Some('╣'), + Some('║'), + Some('╗'), + Some('╝'), + Some('╜'), + Some('╛'), + Some('┐'), // 0xb8-0xbf + Some('└'), + Some('┴'), + Some('┬'), + Some('├'), + Some('─'), + Some('┼'), + Some('╞'), + Some('╟'), // 0xc0-0xc7 + Some('╚'), + Some('╔'), + Some('╩'), + Some('╦'), + Some('╠'), + Some('═'), + Some('╬'), + Some('╧'), // 0xc8-0xcf + Some('╨'), + Some('╤'), + Some('╥'), + Some('╙'), + Some('╘'), + Some('╒'), + Some('╓'), + Some('╫'), // 0xd0-0xd7 + Some('╪'), + Some('┘'), + Some('┌'), + Some('█'), + Some('▄'), + Some('▌'), + Some('▐'), + Some('▀'), // 0xd8-0xdf + Some('α'), + Some('ß'), + Some('Γ'), + Some('π'), + Some('Σ'), + Some('σ'), + Some('µ'), + Some('τ'), // 0xe0-0xe7 + Some('Φ'), + Some('Θ'), + Some('Ω'), + Some('δ'), + Some('∞'), + Some('φ'), + Some('ε'), + Some('∩'), // 0xe8-0xef + Some('≡'), + Some('±'), + Some('≥'), + Some('≤'), + Some('⌠'), + Some('⌡'), + Some('÷'), + Some('≈'), // 0xf0-0xf7 + Some('°'), + Some('∙'), + Some('·'), + Some('√'), + Some('ⁿ'), + Some('²'), + Some('■'), + Some('\u{00A0}'), // 0xf8-0xff +]; + +/// Code page 863, byte value to Unicode scalar. +pub(crate) const CP863: [Option; 256] = [ + Some('\u{0000}'), + Some('\u{0001}'), + Some('\u{0002}'), + Some('\u{0003}'), + Some('\u{0004}'), + Some('\u{0005}'), + Some('\u{0006}'), + Some('\u{0007}'), // 0x00-0x07 + Some('\u{0008}'), + Some('\u{0009}'), + Some('\u{000A}'), + Some('\u{000B}'), + Some('\u{000C}'), + Some('\u{000D}'), + Some('\u{000E}'), + Some('\u{000F}'), // 0x08-0x0f + Some('\u{0010}'), + Some('\u{0011}'), + Some('\u{0012}'), + Some('\u{0013}'), + Some('\u{0014}'), + Some('\u{0015}'), + Some('\u{0016}'), + Some('\u{0017}'), // 0x10-0x17 + Some('\u{0018}'), + Some('\u{0019}'), + Some('\u{001A}'), + Some('\u{001B}'), + Some('\u{001C}'), + Some('\u{001D}'), + Some('\u{001E}'), + Some('\u{001F}'), // 0x18-0x1f + Some(' '), + Some('!'), + Some('"'), + Some('#'), + Some('$'), + Some('%'), + Some('&'), + Some('\u{0027}'), // 0x20-0x27 + Some('('), + Some(')'), + Some('*'), + Some('+'), + Some(','), + Some('-'), + Some('.'), + Some('/'), // 0x28-0x2f + Some('0'), + Some('1'), + Some('2'), + Some('3'), + Some('4'), + Some('5'), + Some('6'), + Some('7'), // 0x30-0x37 + Some('8'), + Some('9'), + Some(':'), + Some(';'), + Some('<'), + Some('='), + Some('>'), + Some('?'), // 0x38-0x3f + Some('@'), + Some('A'), + Some('B'), + Some('C'), + Some('D'), + Some('E'), + Some('F'), + Some('G'), // 0x40-0x47 + Some('H'), + Some('I'), + Some('J'), + Some('K'), + Some('L'), + Some('M'), + Some('N'), + Some('O'), // 0x48-0x4f + Some('P'), + Some('Q'), + Some('R'), + Some('S'), + Some('T'), + Some('U'), + Some('V'), + Some('W'), // 0x50-0x57 + Some('X'), + Some('Y'), + Some('Z'), + Some('['), + Some('\u{005C}'), + Some(']'), + Some('^'), + Some('_'), // 0x58-0x5f + Some('`'), + Some('a'), + Some('b'), + Some('c'), + Some('d'), + Some('e'), + Some('f'), + Some('g'), // 0x60-0x67 + Some('h'), + Some('i'), + Some('j'), + Some('k'), + Some('l'), + Some('m'), + Some('n'), + Some('o'), // 0x68-0x6f + Some('p'), + Some('q'), + Some('r'), + Some('s'), + Some('t'), + Some('u'), + Some('v'), + Some('w'), // 0x70-0x77 + Some('x'), + Some('y'), + Some('z'), + Some('{'), + Some('|'), + Some('}'), + Some('~'), + Some('\u{007F}'), // 0x78-0x7f + Some('Ç'), + Some('ü'), + Some('é'), + Some('â'), + Some('Â'), + Some('à'), + Some('¶'), + Some('ç'), // 0x80-0x87 + Some('ê'), + Some('ë'), + Some('è'), + Some('ï'), + Some('î'), + Some('‗'), + Some('À'), + Some('§'), // 0x88-0x8f + Some('É'), + Some('È'), + Some('Ê'), + Some('ô'), + Some('Ë'), + Some('Ï'), + Some('û'), + Some('ù'), // 0x90-0x97 + Some('¤'), + Some('Ô'), + Some('Ü'), + Some('¢'), + Some('£'), + Some('Ù'), + Some('Û'), + Some('ƒ'), // 0x98-0x9f + Some('¦'), + Some('´'), + Some('ó'), + Some('ú'), + Some('¨'), + Some('¸'), + Some('³'), + Some('¯'), // 0xa0-0xa7 + Some('Î'), + Some('⌐'), + Some('¬'), + Some('½'), + Some('¼'), + Some('¾'), + Some('«'), + Some('»'), // 0xa8-0xaf + Some('░'), + Some('▒'), + Some('▓'), + Some('│'), + Some('┤'), + Some('╡'), + Some('╢'), + Some('╖'), // 0xb0-0xb7 + Some('╕'), + Some('╣'), + Some('║'), + Some('╗'), + Some('╝'), + Some('╜'), + Some('╛'), + Some('┐'), // 0xb8-0xbf + Some('└'), + Some('┴'), + Some('┬'), + Some('├'), + Some('─'), + Some('┼'), + Some('╞'), + Some('╟'), // 0xc0-0xc7 + Some('╚'), + Some('╔'), + Some('╩'), + Some('╦'), + Some('╠'), + Some('═'), + Some('╬'), + Some('╧'), // 0xc8-0xcf + Some('╨'), + Some('╤'), + Some('╥'), + Some('╙'), + Some('╘'), + Some('╒'), + Some('╓'), + Some('╫'), // 0xd0-0xd7 + Some('╪'), + Some('┘'), + Some('┌'), + Some('█'), + Some('▄'), + Some('▌'), + Some('▐'), + Some('▀'), // 0xd8-0xdf + Some('α'), + Some('ß'), + Some('Γ'), + Some('π'), + Some('Σ'), + Some('σ'), + Some('µ'), + Some('τ'), // 0xe0-0xe7 + Some('Φ'), + Some('Θ'), + Some('Ω'), + Some('δ'), + Some('∞'), + Some('φ'), + Some('ε'), + Some('∩'), // 0xe8-0xef + Some('≡'), + Some('±'), + Some('≥'), + Some('≤'), + Some('⌠'), + Some('⌡'), + Some('÷'), + Some('≈'), // 0xf0-0xf7 + Some('°'), + Some('∙'), + Some('·'), + Some('√'), + Some('ⁿ'), + Some('²'), + Some('■'), + Some('\u{00A0}'), // 0xf8-0xff +]; + +/// Code page 864, byte value to Unicode scalar. +pub(crate) const CP864: [Option; 256] = [ + Some('\u{0000}'), + Some('\u{0001}'), + Some('\u{0002}'), + Some('\u{0003}'), + Some('\u{0004}'), + Some('\u{0005}'), + Some('\u{0006}'), + Some('\u{0007}'), // 0x00-0x07 + Some('\u{0008}'), + Some('\u{0009}'), + Some('\u{000A}'), + Some('\u{000B}'), + Some('\u{000C}'), + Some('\u{000D}'), + Some('\u{000E}'), + Some('\u{000F}'), // 0x08-0x0f + Some('\u{0010}'), + Some('\u{0011}'), + Some('\u{0012}'), + Some('\u{0013}'), + Some('\u{0014}'), + Some('\u{0015}'), + Some('\u{0016}'), + Some('\u{0017}'), // 0x10-0x17 + Some('\u{0018}'), + Some('\u{0019}'), + Some('\u{001A}'), + Some('\u{001B}'), + Some('\u{001C}'), + Some('\u{001D}'), + Some('\u{001E}'), + Some('\u{001F}'), // 0x18-0x1f + Some(' '), + Some('!'), + Some('"'), + Some('#'), + Some('$'), + Some('٪'), + Some('&'), + Some('\u{0027}'), // 0x20-0x27 + Some('('), + Some(')'), + Some('*'), + Some('+'), + Some(','), + Some('-'), + Some('.'), + Some('/'), // 0x28-0x2f + Some('0'), + Some('1'), + Some('2'), + Some('3'), + Some('4'), + Some('5'), + Some('6'), + Some('7'), // 0x30-0x37 + Some('8'), + Some('9'), + Some(':'), + Some(';'), + Some('<'), + Some('='), + Some('>'), + Some('?'), // 0x38-0x3f + Some('@'), + Some('A'), + Some('B'), + Some('C'), + Some('D'), + Some('E'), + Some('F'), + Some('G'), // 0x40-0x47 + Some('H'), + Some('I'), + Some('J'), + Some('K'), + Some('L'), + Some('M'), + Some('N'), + Some('O'), // 0x48-0x4f + Some('P'), + Some('Q'), + Some('R'), + Some('S'), + Some('T'), + Some('U'), + Some('V'), + Some('W'), // 0x50-0x57 + Some('X'), + Some('Y'), + Some('Z'), + Some('['), + Some('\u{005C}'), + Some(']'), + Some('^'), + Some('_'), // 0x58-0x5f + Some('`'), + Some('a'), + Some('b'), + Some('c'), + Some('d'), + Some('e'), + Some('f'), + Some('g'), // 0x60-0x67 + Some('h'), + Some('i'), + Some('j'), + Some('k'), + Some('l'), + Some('m'), + Some('n'), + Some('o'), // 0x68-0x6f + Some('p'), + Some('q'), + Some('r'), + Some('s'), + Some('t'), + Some('u'), + Some('v'), + Some('w'), // 0x70-0x77 + Some('x'), + Some('y'), + Some('z'), + Some('{'), + Some('|'), + Some('}'), + Some('~'), + Some('\u{007F}'), // 0x78-0x7f + Some('°'), + Some('·'), + Some('∙'), + Some('√'), + Some('▒'), + Some('─'), + Some('│'), + Some('┼'), // 0x80-0x87 + Some('┤'), + Some('┬'), + Some('├'), + Some('┴'), + Some('┐'), + Some('┌'), + Some('└'), + Some('┘'), // 0x88-0x8f + Some('β'), + Some('∞'), + Some('φ'), + Some('±'), + Some('½'), + Some('¼'), + Some('≈'), + Some('«'), // 0x90-0x97 + Some('»'), + Some('ﻷ'), + Some('ﻸ'), + None, + None, + Some('ﻻ'), + Some('ﻼ'), + None, // 0x98-0x9f + Some('\u{00A0}'), + Some('\u{00AD}'), + Some('ﺂ'), + Some('£'), + Some('¤'), + Some('ﺄ'), + None, + None, // 0xa0-0xa7 + Some('ﺎ'), + Some('ﺏ'), + Some('ﺕ'), + Some('ﺙ'), + Some('،'), + Some('ﺝ'), + Some('ﺡ'), + Some('ﺥ'), // 0xa8-0xaf + Some('٠'), + Some('١'), + Some('٢'), + Some('٣'), + Some('٤'), + Some('٥'), + Some('٦'), + Some('٧'), // 0xb0-0xb7 + Some('٨'), + Some('٩'), + Some('ﻑ'), + Some('؛'), + Some('ﺱ'), + Some('ﺵ'), + Some('ﺹ'), + Some('؟'), // 0xb8-0xbf + Some('¢'), + Some('ﺀ'), + Some('ﺁ'), + Some('ﺃ'), + Some('ﺅ'), + Some('ﻊ'), + Some('ﺋ'), + Some('ﺍ'), // 0xc0-0xc7 + Some('ﺑ'), + Some('ﺓ'), + Some('ﺗ'), + Some('ﺛ'), + Some('ﺟ'), + Some('ﺣ'), + Some('ﺧ'), + Some('ﺩ'), // 0xc8-0xcf + Some('ﺫ'), + Some('ﺭ'), + Some('ﺯ'), + Some('ﺳ'), + Some('ﺷ'), + Some('ﺻ'), + Some('ﺿ'), + Some('ﻁ'), // 0xd0-0xd7 + Some('ﻅ'), + Some('ﻋ'), + Some('ﻏ'), + Some('¦'), + Some('¬'), + Some('÷'), + Some('×'), + Some('ﻉ'), // 0xd8-0xdf + Some('ـ'), + Some('ﻓ'), + Some('ﻗ'), + Some('ﻛ'), + Some('ﻟ'), + Some('ﻣ'), + Some('ﻧ'), + Some('ﻫ'), // 0xe0-0xe7 + Some('ﻭ'), + Some('ﻯ'), + Some('ﻳ'), + Some('ﺽ'), + Some('ﻌ'), + Some('ﻎ'), + Some('ﻍ'), + Some('ﻡ'), // 0xe8-0xef + Some('ﹽ'), + Some('ّ'), + Some('ﻥ'), + Some('ﻩ'), + Some('ﻬ'), + Some('ﻰ'), + Some('ﻲ'), + Some('ﻐ'), // 0xf0-0xf7 + Some('ﻕ'), + Some('ﻵ'), + Some('ﻶ'), + Some('ﻝ'), + Some('ﻙ'), + Some('ﻱ'), + Some('■'), + None, // 0xf8-0xff +]; + +/// Code page 865, byte value to Unicode scalar. +pub(crate) const CP865: [Option; 256] = [ + Some('\u{0000}'), + Some('\u{0001}'), + Some('\u{0002}'), + Some('\u{0003}'), + Some('\u{0004}'), + Some('\u{0005}'), + Some('\u{0006}'), + Some('\u{0007}'), // 0x00-0x07 + Some('\u{0008}'), + Some('\u{0009}'), + Some('\u{000A}'), + Some('\u{000B}'), + Some('\u{000C}'), + Some('\u{000D}'), + Some('\u{000E}'), + Some('\u{000F}'), // 0x08-0x0f + Some('\u{0010}'), + Some('\u{0011}'), + Some('\u{0012}'), + Some('\u{0013}'), + Some('\u{0014}'), + Some('\u{0015}'), + Some('\u{0016}'), + Some('\u{0017}'), // 0x10-0x17 + Some('\u{0018}'), + Some('\u{0019}'), + Some('\u{001A}'), + Some('\u{001B}'), + Some('\u{001C}'), + Some('\u{001D}'), + Some('\u{001E}'), + Some('\u{001F}'), // 0x18-0x1f + Some(' '), + Some('!'), + Some('"'), + Some('#'), + Some('$'), + Some('%'), + Some('&'), + Some('\u{0027}'), // 0x20-0x27 + Some('('), + Some(')'), + Some('*'), + Some('+'), + Some(','), + Some('-'), + Some('.'), + Some('/'), // 0x28-0x2f + Some('0'), + Some('1'), + Some('2'), + Some('3'), + Some('4'), + Some('5'), + Some('6'), + Some('7'), // 0x30-0x37 + Some('8'), + Some('9'), + Some(':'), + Some(';'), + Some('<'), + Some('='), + Some('>'), + Some('?'), // 0x38-0x3f + Some('@'), + Some('A'), + Some('B'), + Some('C'), + Some('D'), + Some('E'), + Some('F'), + Some('G'), // 0x40-0x47 + Some('H'), + Some('I'), + Some('J'), + Some('K'), + Some('L'), + Some('M'), + Some('N'), + Some('O'), // 0x48-0x4f + Some('P'), + Some('Q'), + Some('R'), + Some('S'), + Some('T'), + Some('U'), + Some('V'), + Some('W'), // 0x50-0x57 + Some('X'), + Some('Y'), + Some('Z'), + Some('['), + Some('\u{005C}'), + Some(']'), + Some('^'), + Some('_'), // 0x58-0x5f + Some('`'), + Some('a'), + Some('b'), + Some('c'), + Some('d'), + Some('e'), + Some('f'), + Some('g'), // 0x60-0x67 + Some('h'), + Some('i'), + Some('j'), + Some('k'), + Some('l'), + Some('m'), + Some('n'), + Some('o'), // 0x68-0x6f + Some('p'), + Some('q'), + Some('r'), + Some('s'), + Some('t'), + Some('u'), + Some('v'), + Some('w'), // 0x70-0x77 + Some('x'), + Some('y'), + Some('z'), + Some('{'), + Some('|'), + Some('}'), + Some('~'), + Some('\u{007F}'), // 0x78-0x7f + Some('Ç'), + Some('ü'), + Some('é'), + Some('â'), + Some('ä'), + Some('à'), + Some('å'), + Some('ç'), // 0x80-0x87 + Some('ê'), + Some('ë'), + Some('è'), + Some('ï'), + Some('î'), + Some('ì'), + Some('Ä'), + Some('Å'), // 0x88-0x8f + Some('É'), + Some('æ'), + Some('Æ'), + Some('ô'), + Some('ö'), + Some('ò'), + Some('û'), + Some('ù'), // 0x90-0x97 + Some('ÿ'), + Some('Ö'), + Some('Ü'), + Some('ø'), + Some('£'), + Some('Ø'), + Some('₧'), + Some('ƒ'), // 0x98-0x9f + Some('á'), + Some('í'), + Some('ó'), + Some('ú'), + Some('ñ'), + Some('Ñ'), + Some('ª'), + Some('º'), // 0xa0-0xa7 + Some('¿'), + Some('⌐'), + Some('¬'), + Some('½'), + Some('¼'), + Some('¡'), + Some('«'), + Some('¤'), // 0xa8-0xaf + Some('░'), + Some('▒'), + Some('▓'), + Some('│'), + Some('┤'), + Some('╡'), + Some('╢'), + Some('╖'), // 0xb0-0xb7 + Some('╕'), + Some('╣'), + Some('║'), + Some('╗'), + Some('╝'), + Some('╜'), + Some('╛'), + Some('┐'), // 0xb8-0xbf + Some('└'), + Some('┴'), + Some('┬'), + Some('├'), + Some('─'), + Some('┼'), + Some('╞'), + Some('╟'), // 0xc0-0xc7 + Some('╚'), + Some('╔'), + Some('╩'), + Some('╦'), + Some('╠'), + Some('═'), + Some('╬'), + Some('╧'), // 0xc8-0xcf + Some('╨'), + Some('╤'), + Some('╥'), + Some('╙'), + Some('╘'), + Some('╒'), + Some('╓'), + Some('╫'), // 0xd0-0xd7 + Some('╪'), + Some('┘'), + Some('┌'), + Some('█'), + Some('▄'), + Some('▌'), + Some('▐'), + Some('▀'), // 0xd8-0xdf + Some('α'), + Some('ß'), + Some('Γ'), + Some('π'), + Some('Σ'), + Some('σ'), + Some('µ'), + Some('τ'), // 0xe0-0xe7 + Some('Φ'), + Some('Θ'), + Some('Ω'), + Some('δ'), + Some('∞'), + Some('φ'), + Some('ε'), + Some('∩'), // 0xe8-0xef + Some('≡'), + Some('±'), + Some('≥'), + Some('≤'), + Some('⌠'), + Some('⌡'), + Some('÷'), + Some('≈'), // 0xf0-0xf7 + Some('°'), + Some('∙'), + Some('·'), + Some('√'), + Some('ⁿ'), + Some('²'), + Some('■'), + Some('\u{00A0}'), // 0xf8-0xff +]; + +/// Code page 866, byte value to Unicode scalar. +pub(crate) const CP866: [Option; 256] = [ + Some('\u{0000}'), + Some('\u{0001}'), + Some('\u{0002}'), + Some('\u{0003}'), + Some('\u{0004}'), + Some('\u{0005}'), + Some('\u{0006}'), + Some('\u{0007}'), // 0x00-0x07 + Some('\u{0008}'), + Some('\u{0009}'), + Some('\u{000A}'), + Some('\u{000B}'), + Some('\u{000C}'), + Some('\u{000D}'), + Some('\u{000E}'), + Some('\u{000F}'), // 0x08-0x0f + Some('\u{0010}'), + Some('\u{0011}'), + Some('\u{0012}'), + Some('\u{0013}'), + Some('\u{0014}'), + Some('\u{0015}'), + Some('\u{0016}'), + Some('\u{0017}'), // 0x10-0x17 + Some('\u{0018}'), + Some('\u{0019}'), + Some('\u{001A}'), + Some('\u{001B}'), + Some('\u{001C}'), + Some('\u{001D}'), + Some('\u{001E}'), + Some('\u{001F}'), // 0x18-0x1f + Some(' '), + Some('!'), + Some('"'), + Some('#'), + Some('$'), + Some('%'), + Some('&'), + Some('\u{0027}'), // 0x20-0x27 + Some('('), + Some(')'), + Some('*'), + Some('+'), + Some(','), + Some('-'), + Some('.'), + Some('/'), // 0x28-0x2f + Some('0'), + Some('1'), + Some('2'), + Some('3'), + Some('4'), + Some('5'), + Some('6'), + Some('7'), // 0x30-0x37 + Some('8'), + Some('9'), + Some(':'), + Some(';'), + Some('<'), + Some('='), + Some('>'), + Some('?'), // 0x38-0x3f + Some('@'), + Some('A'), + Some('B'), + Some('C'), + Some('D'), + Some('E'), + Some('F'), + Some('G'), // 0x40-0x47 + Some('H'), + Some('I'), + Some('J'), + Some('K'), + Some('L'), + Some('M'), + Some('N'), + Some('O'), // 0x48-0x4f + Some('P'), + Some('Q'), + Some('R'), + Some('S'), + Some('T'), + Some('U'), + Some('V'), + Some('W'), // 0x50-0x57 + Some('X'), + Some('Y'), + Some('Z'), + Some('['), + Some('\u{005C}'), + Some(']'), + Some('^'), + Some('_'), // 0x58-0x5f + Some('`'), + Some('a'), + Some('b'), + Some('c'), + Some('d'), + Some('e'), + Some('f'), + Some('g'), // 0x60-0x67 + Some('h'), + Some('i'), + Some('j'), + Some('k'), + Some('l'), + Some('m'), + Some('n'), + Some('o'), // 0x68-0x6f + Some('p'), + Some('q'), + Some('r'), + Some('s'), + Some('t'), + Some('u'), + Some('v'), + Some('w'), // 0x70-0x77 + Some('x'), + Some('y'), + Some('z'), + Some('{'), + Some('|'), + Some('}'), + Some('~'), + Some('\u{007F}'), // 0x78-0x7f + Some('А'), + Some('Б'), + Some('В'), + Some('Г'), + Some('Д'), + Some('Е'), + Some('Ж'), + Some('З'), // 0x80-0x87 + Some('И'), + Some('Й'), + Some('К'), + Some('Л'), + Some('М'), + Some('Н'), + Some('О'), + Some('П'), // 0x88-0x8f + Some('Р'), + Some('С'), + Some('Т'), + Some('У'), + Some('Ф'), + Some('Х'), + Some('Ц'), + Some('Ч'), // 0x90-0x97 + Some('Ш'), + Some('Щ'), + Some('Ъ'), + Some('Ы'), + Some('Ь'), + Some('Э'), + Some('Ю'), + Some('Я'), // 0x98-0x9f + Some('а'), + Some('б'), + Some('в'), + Some('г'), + Some('д'), + Some('е'), + Some('ж'), + Some('з'), // 0xa0-0xa7 + Some('и'), + Some('й'), + Some('к'), + Some('л'), + Some('м'), + Some('н'), + Some('о'), + Some('п'), // 0xa8-0xaf + Some('░'), + Some('▒'), + Some('▓'), + Some('│'), + Some('┤'), + Some('╡'), + Some('╢'), + Some('╖'), // 0xb0-0xb7 + Some('╕'), + Some('╣'), + Some('║'), + Some('╗'), + Some('╝'), + Some('╜'), + Some('╛'), + Some('┐'), // 0xb8-0xbf + Some('└'), + Some('┴'), + Some('┬'), + Some('├'), + Some('─'), + Some('┼'), + Some('╞'), + Some('╟'), // 0xc0-0xc7 + Some('╚'), + Some('╔'), + Some('╩'), + Some('╦'), + Some('╠'), + Some('═'), + Some('╬'), + Some('╧'), // 0xc8-0xcf + Some('╨'), + Some('╤'), + Some('╥'), + Some('╙'), + Some('╘'), + Some('╒'), + Some('╓'), + Some('╫'), // 0xd0-0xd7 + Some('╪'), + Some('┘'), + Some('┌'), + Some('█'), + Some('▄'), + Some('▌'), + Some('▐'), + Some('▀'), // 0xd8-0xdf + Some('р'), + Some('с'), + Some('т'), + Some('у'), + Some('ф'), + Some('х'), + Some('ц'), + Some('ч'), // 0xe0-0xe7 + Some('ш'), + Some('щ'), + Some('ъ'), + Some('ы'), + Some('ь'), + Some('э'), + Some('ю'), + Some('я'), // 0xe8-0xef + Some('Ё'), + Some('ё'), + Some('Є'), + Some('є'), + Some('Ї'), + Some('ї'), + Some('Ў'), + Some('ў'), // 0xf0-0xf7 + Some('°'), + Some('∙'), + Some('·'), + Some('√'), + Some('№'), + Some('¤'), + Some('■'), + Some('\u{00A0}'), // 0xf8-0xff +]; + +/// Code page 869, byte value to Unicode scalar. +pub(crate) const CP869: [Option; 256] = [ + Some('\u{0000}'), + Some('\u{0001}'), + Some('\u{0002}'), + Some('\u{0003}'), + Some('\u{0004}'), + Some('\u{0005}'), + Some('\u{0006}'), + Some('\u{0007}'), // 0x00-0x07 + Some('\u{0008}'), + Some('\u{0009}'), + Some('\u{000A}'), + Some('\u{000B}'), + Some('\u{000C}'), + Some('\u{000D}'), + Some('\u{000E}'), + Some('\u{000F}'), // 0x08-0x0f + Some('\u{0010}'), + Some('\u{0011}'), + Some('\u{0012}'), + Some('\u{0013}'), + Some('\u{0014}'), + Some('\u{0015}'), + Some('\u{0016}'), + Some('\u{0017}'), // 0x10-0x17 + Some('\u{0018}'), + Some('\u{0019}'), + Some('\u{001A}'), + Some('\u{001B}'), + Some('\u{001C}'), + Some('\u{001D}'), + Some('\u{001E}'), + Some('\u{001F}'), // 0x18-0x1f + Some(' '), + Some('!'), + Some('"'), + Some('#'), + Some('$'), + Some('%'), + Some('&'), + Some('\u{0027}'), // 0x20-0x27 + Some('('), + Some(')'), + Some('*'), + Some('+'), + Some(','), + Some('-'), + Some('.'), + Some('/'), // 0x28-0x2f + Some('0'), + Some('1'), + Some('2'), + Some('3'), + Some('4'), + Some('5'), + Some('6'), + Some('7'), // 0x30-0x37 + Some('8'), + Some('9'), + Some(':'), + Some(';'), + Some('<'), + Some('='), + Some('>'), + Some('?'), // 0x38-0x3f + Some('@'), + Some('A'), + Some('B'), + Some('C'), + Some('D'), + Some('E'), + Some('F'), + Some('G'), // 0x40-0x47 + Some('H'), + Some('I'), + Some('J'), + Some('K'), + Some('L'), + Some('M'), + Some('N'), + Some('O'), // 0x48-0x4f + Some('P'), + Some('Q'), + Some('R'), + Some('S'), + Some('T'), + Some('U'), + Some('V'), + Some('W'), // 0x50-0x57 + Some('X'), + Some('Y'), + Some('Z'), + Some('['), + Some('\u{005C}'), + Some(']'), + Some('^'), + Some('_'), // 0x58-0x5f + Some('`'), + Some('a'), + Some('b'), + Some('c'), + Some('d'), + Some('e'), + Some('f'), + Some('g'), // 0x60-0x67 + Some('h'), + Some('i'), + Some('j'), + Some('k'), + Some('l'), + Some('m'), + Some('n'), + Some('o'), // 0x68-0x6f + Some('p'), + Some('q'), + Some('r'), + Some('s'), + Some('t'), + Some('u'), + Some('v'), + Some('w'), // 0x70-0x77 + Some('x'), + Some('y'), + Some('z'), + Some('{'), + Some('|'), + Some('}'), + Some('~'), + Some('\u{007F}'), // 0x78-0x7f + None, + None, + None, + None, + None, + None, + Some('Ά'), + None, // 0x80-0x87 + Some('·'), + Some('¬'), + Some('¦'), + Some('‘'), + Some('’'), + Some('Έ'), + Some('―'), + Some('Ή'), // 0x88-0x8f + Some('Ί'), + Some('Ϊ'), + Some('Ό'), + None, + None, + Some('Ύ'), + Some('Ϋ'), + Some('©'), // 0x90-0x97 + Some('Ώ'), + Some('²'), + Some('³'), + Some('ά'), + Some('£'), + Some('έ'), + Some('ή'), + Some('ί'), // 0x98-0x9f + Some('ϊ'), + Some('ΐ'), + Some('ό'), + Some('ύ'), + Some('Α'), + Some('Β'), + Some('Γ'), + Some('Δ'), // 0xa0-0xa7 + Some('Ε'), + Some('Ζ'), + Some('Η'), + Some('½'), + Some('Θ'), + Some('Ι'), + Some('«'), + Some('»'), // 0xa8-0xaf + Some('░'), + Some('▒'), + Some('▓'), + Some('│'), + Some('┤'), + Some('Κ'), + Some('Λ'), + Some('Μ'), // 0xb0-0xb7 + Some('Ν'), + Some('╣'), + Some('║'), + Some('╗'), + Some('╝'), + Some('Ξ'), + Some('Ο'), + Some('┐'), // 0xb8-0xbf + Some('└'), + Some('┴'), + Some('┬'), + Some('├'), + Some('─'), + Some('┼'), + Some('Π'), + Some('Ρ'), // 0xc0-0xc7 + Some('╚'), + Some('╔'), + Some('╩'), + Some('╦'), + Some('╠'), + Some('═'), + Some('╬'), + Some('Σ'), // 0xc8-0xcf + Some('Τ'), + Some('Υ'), + Some('Φ'), + Some('Χ'), + Some('Ψ'), + Some('Ω'), + Some('α'), + Some('β'), // 0xd0-0xd7 + Some('γ'), + Some('┘'), + Some('┌'), + Some('█'), + Some('▄'), + Some('δ'), + Some('ε'), + Some('▀'), // 0xd8-0xdf + Some('ζ'), + Some('η'), + Some('θ'), + Some('ι'), + Some('κ'), + Some('λ'), + Some('μ'), + Some('ν'), // 0xe0-0xe7 + Some('ξ'), + Some('ο'), + Some('π'), + Some('ρ'), + Some('σ'), + Some('ς'), + Some('τ'), + Some('΄'), // 0xe8-0xef + Some('\u{00AD}'), + Some('±'), + Some('υ'), + Some('φ'), + Some('χ'), + Some('§'), + Some('ψ'), + Some('΅'), // 0xf0-0xf7 + Some('°'), + Some('¨'), + Some('ω'), + Some('ϋ'), + Some('ΰ'), + Some('ώ'), + Some('■'), + Some('\u{00A0}'), // 0xf8-0xff +]; + +/// Code page 874, byte value to Unicode scalar. +pub(crate) const CP874: [Option; 256] = [ + Some('\u{0000}'), + Some('\u{0001}'), + Some('\u{0002}'), + Some('\u{0003}'), + Some('\u{0004}'), + Some('\u{0005}'), + Some('\u{0006}'), + Some('\u{0007}'), // 0x00-0x07 + Some('\u{0008}'), + Some('\u{0009}'), + Some('\u{000A}'), + Some('\u{000B}'), + Some('\u{000C}'), + Some('\u{000D}'), + Some('\u{000E}'), + Some('\u{000F}'), // 0x08-0x0f + Some('\u{0010}'), + Some('\u{0011}'), + Some('\u{0012}'), + Some('\u{0013}'), + Some('\u{0014}'), + Some('\u{0015}'), + Some('\u{0016}'), + Some('\u{0017}'), // 0x10-0x17 + Some('\u{0018}'), + Some('\u{0019}'), + Some('\u{001A}'), + Some('\u{001B}'), + Some('\u{001C}'), + Some('\u{001D}'), + Some('\u{001E}'), + Some('\u{001F}'), // 0x18-0x1f + Some(' '), + Some('!'), + Some('"'), + Some('#'), + Some('$'), + Some('%'), + Some('&'), + Some('\u{0027}'), // 0x20-0x27 + Some('('), + Some(')'), + Some('*'), + Some('+'), + Some(','), + Some('-'), + Some('.'), + Some('/'), // 0x28-0x2f + Some('0'), + Some('1'), + Some('2'), + Some('3'), + Some('4'), + Some('5'), + Some('6'), + Some('7'), // 0x30-0x37 + Some('8'), + Some('9'), + Some(':'), + Some(';'), + Some('<'), + Some('='), + Some('>'), + Some('?'), // 0x38-0x3f + Some('@'), + Some('A'), + Some('B'), + Some('C'), + Some('D'), + Some('E'), + Some('F'), + Some('G'), // 0x40-0x47 + Some('H'), + Some('I'), + Some('J'), + Some('K'), + Some('L'), + Some('M'), + Some('N'), + Some('O'), // 0x48-0x4f + Some('P'), + Some('Q'), + Some('R'), + Some('S'), + Some('T'), + Some('U'), + Some('V'), + Some('W'), // 0x50-0x57 + Some('X'), + Some('Y'), + Some('Z'), + Some('['), + Some('\u{005C}'), + Some(']'), + Some('^'), + Some('_'), // 0x58-0x5f + Some('`'), + Some('a'), + Some('b'), + Some('c'), + Some('d'), + Some('e'), + Some('f'), + Some('g'), // 0x60-0x67 + Some('h'), + Some('i'), + Some('j'), + Some('k'), + Some('l'), + Some('m'), + Some('n'), + Some('o'), // 0x68-0x6f + Some('p'), + Some('q'), + Some('r'), + Some('s'), + Some('t'), + Some('u'), + Some('v'), + Some('w'), // 0x70-0x77 + Some('x'), + Some('y'), + Some('z'), + Some('{'), + Some('|'), + Some('}'), + Some('~'), + Some('\u{007F}'), // 0x78-0x7f + Some('€'), + None, + None, + None, + None, + Some('…'), + None, + None, // 0x80-0x87 + None, + None, + None, + None, + None, + None, + None, + None, // 0x88-0x8f + None, + Some('‘'), + Some('’'), + Some('“'), + Some('”'), + Some('•'), + Some('–'), + Some('—'), // 0x90-0x97 + None, + None, + None, + None, + None, + None, + None, + None, // 0x98-0x9f + Some('\u{00A0}'), + Some('ก'), + Some('ข'), + Some('ฃ'), + Some('ค'), + Some('ฅ'), + Some('ฆ'), + Some('ง'), // 0xa0-0xa7 + Some('จ'), + Some('ฉ'), + Some('ช'), + Some('ซ'), + Some('ฌ'), + Some('ญ'), + Some('ฎ'), + Some('ฏ'), // 0xa8-0xaf + Some('ฐ'), + Some('ฑ'), + Some('ฒ'), + Some('ณ'), + Some('ด'), + Some('ต'), + Some('ถ'), + Some('ท'), // 0xb0-0xb7 + Some('ธ'), + Some('น'), + Some('บ'), + Some('ป'), + Some('ผ'), + Some('ฝ'), + Some('พ'), + Some('ฟ'), // 0xb8-0xbf + Some('ภ'), + Some('ม'), + Some('ย'), + Some('ร'), + Some('ฤ'), + Some('ล'), + Some('ฦ'), + Some('ว'), // 0xc0-0xc7 + Some('ศ'), + Some('ษ'), + Some('ส'), + Some('ห'), + Some('ฬ'), + Some('อ'), + Some('ฮ'), + Some('ฯ'), // 0xc8-0xcf + Some('ะ'), + Some('ั'), + Some('า'), + Some('ำ'), + Some('ิ'), + Some('ี'), + Some('ึ'), + Some('ื'), // 0xd0-0xd7 + Some('ุ'), + Some('ู'), + Some('ฺ'), + None, + None, + None, + None, + Some('฿'), // 0xd8-0xdf + Some('เ'), + Some('แ'), + Some('โ'), + Some('ใ'), + Some('ไ'), + Some('ๅ'), + Some('ๆ'), + Some('็'), // 0xe0-0xe7 + Some('่'), + Some('้'), + Some('๊'), + Some('๋'), + Some('์'), + Some('ํ'), + Some('๎'), + Some('๏'), // 0xe8-0xef + Some('๐'), + Some('๑'), + Some('๒'), + Some('๓'), + Some('๔'), + Some('๕'), + Some('๖'), + Some('๗'), // 0xf0-0xf7 + Some('๘'), + Some('๙'), + Some('๚'), + Some('๛'), + None, + None, + None, + None, // 0xf8-0xff +]; diff --git a/tools/gen_tables.py b/tools/gen_tables.py new file mode 100644 index 0000000..28bcdba --- /dev/null +++ b/tools/gen_tables.py @@ -0,0 +1,125 @@ +#!/usr/bin/env python3 +# /// script +# requires-python = ">=3.10" +# /// +"""Generate src/tables.rs from the Microsoft mapping tables in data/. + +The inputs are the canonical Microsoft code page tables published by the +Unicode Consortium (https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/). +Each output table is a full 256-entry ``[Option; 256]``: MS-DOS pages are +not uniformly ASCII in the low half (CP864 maps 0x25 to ARABIC PERCENT SIGN) +and several pages leave byte values undefined (CP857/864/869/874). + +Run from the crate root: ``uv run tools/gen_tables.py`` +""" + +from __future__ import annotations + +import subprocess +from collections.abc import Sequence +from pathlib import Path + +CODE_PAGES: Sequence[int] = ( + 437, 737, 775, 850, 852, 855, 857, 860, + 861, 862, 863, 864, 865, 866, 869, 874, +) + +DATA_DIR = Path(__file__).resolve().parent.parent / "data" +OUTPUT = Path(__file__).resolve().parent.parent / "src" / "tables.rs" + +HEADER = """\ +//! Generated code page tables — do not edit by hand. +//! +//! Source: the Unicode Consortium's Microsoft mapping tables +//! (`VENDORS/MICSFT/PC/CP*.TXT`), vendored in `data/` and regenerated with +//! `tools/gen_tables.py`. Each table maps every byte value `0x00..=0xFF` to +//! its Unicode scalar, or `None` where the code page leaves the byte +//! undefined. + +""" + + +class TableError(Exception): + """A mapping table failed to parse or violated an invariant.""" + + +def parse_table(path: Path) -> list[int | None]: + """Parse one CP*.TXT into a 256-entry byte-to-scalar table. + + Args: + path: The mapping table file. + + Returns: + A list indexed by byte value; ``None`` marks an undefined byte. + + Raises: + TableError: If the file is missing or non-ASCII, a byte is out of + range or listed twice, a byte is never listed, or two bytes map + to the same scalar (the encoder requires a bijection). + """ + try: + # The lone stray byte in canonical data is a DOS EOF marker (0x1A), + # which is still ASCII; anything else should fail loudly. + text = path.read_text(encoding="ascii") + except (OSError, UnicodeDecodeError) as error: + raise TableError(f"{path.name}: unreadable mapping table") from error + table: list[int | None] = [None] * 256 + seen: set[int] = set() + for raw_line in text.splitlines(): + line = raw_line.strip() + if not line.startswith("0x"): + continue + columns = line.split("\t") + byte = int(columns[0], 16) + if byte > 0xFF: + raise TableError(f"{path.name}: byte {byte:#x} out of range") + if byte in seen: + raise TableError(f"{path.name}: byte {byte:#04x} listed twice") + seen.add(byte) + if len(columns) >= 2 and columns[1].strip().startswith("0x"): + table[byte] = int(columns[1], 16) + if len(seen) != 256: + missing = sorted(set(range(256)) - seen) + raise TableError(f"{path.name}: bytes never listed: {missing}") + defined = [scalar for scalar in table if scalar is not None] + if len(defined) != len(set(defined)): + raise TableError(f"{path.name}: table is not a bijection") + return table + + +def rust_entry(scalar: int | None) -> str: + """Render one table slot as a Rust ``Option`` literal.""" + if scalar is None: + return "None" + ch = chr(scalar) + if ch.isprintable() and ch not in ("'", "\\"): + return f"Some('{ch}')" + return f"Some('\\u{{{scalar:04X}}}')" + + +def render_table(code_page: int, table: Sequence[int | None]) -> str: + """Render one code page as a Rust constant, eight entries per line.""" + lines = [ + f"/// Code page {code_page}, byte value to Unicode scalar.", + f"pub(crate) const CP{code_page}: [Option; 256] = [", + ] + for row_start in range(0, 256, 8): + row = ", ".join(rust_entry(table[i]) for i in range(row_start, row_start + 8)) + lines.append(f" {row}, // {row_start:#04x}-{row_start + 7:#04x}") + lines.append("];\n") + return "\n".join(lines) + + +def main() -> None: + """Regenerate src/tables.rs from every table in CODE_PAGES.""" + rendered = [HEADER] + for code_page in CODE_PAGES: + table = parse_table(DATA_DIR / f"CP{code_page}.TXT") + rendered.append(render_table(code_page, table)) + OUTPUT.write_text("\n".join(rendered), encoding="utf-8") + subprocess.run(["rustfmt", "--edition", "2021", str(OUTPUT)], check=True) + print(f"wrote {OUTPUT} ({len(CODE_PAGES)} tables)") + + +if __name__ == "__main__": + main()