Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bbf6d6b2b9 |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,2 +1,5 @@
|
|||||||
/target
|
/target
|
||||||
Cargo.lock
|
Cargo.lock
|
||||||
|
__pycache__/
|
||||||
|
.mypy_cache/
|
||||||
|
.ruff_cache/
|
||||||
|
|||||||
84
README.md
84
README.md
@@ -4,28 +4,84 @@ Bidirectional, emulator-grade conversion between classic Mac OS text encodings
|
|||||||
and Unicode — without linking ICU. The crate owns the canonical Apple tables, so
|
and Unicode — without linking ICU. The crate owns the canonical Apple tables, so
|
||||||
it stays small, self-contained, and cross-compiles cleanly.
|
it stays small, self-contained, and cross-compiles cleanly.
|
||||||
|
|
||||||
```rust
|
These are strictly **Apple's** mappings as published by the Unicode Consortium
|
||||||
use apple_encodings::{AppleEncoding, MacRomanRevision};
|
(`VENDORS/APPLE/`), vendored in `data/apple/`.
|
||||||
|
|
||||||
let enc = AppleEncoding::default(); // Mac OS Roman, post-8.5
|
```rust
|
||||||
assert_eq!(enc.decode(b"Caf\x8e"), "Café");
|
use apple_encodings::{AppleEncoding, Revision};
|
||||||
|
|
||||||
|
let enc = AppleEncoding::default(); // Mac OS Roman, modern revision
|
||||||
|
assert_eq!(enc.decode(b"Caf\x8e").unwrap(), "Café");
|
||||||
assert_eq!(enc.encode("Café").unwrap(), b"Caf\x8e");
|
assert_eq!(enc.encode("Café").unwrap(), b"Caf\x8e");
|
||||||
|
|
||||||
// Pick by the Finder Info `fdScript` byte:
|
// Pick by the HFS+ `textEncoding` hint (kTextEncodingMac… base values):
|
||||||
let enc = AppleEncoding::from_script_code(apple_encodings::SCRIPT_ROMAN).unwrap();
|
let enc = AppleEncoding::from_text_encoding(7).unwrap();
|
||||||
|
assert_eq!(enc.decode(&[0x80]).unwrap(), "А"); // Mac OS Cyrillic
|
||||||
|
|
||||||
// Revision matters for exactly one byte (0xDB):
|
// Or by the raw HFS Finder Info `fdScript` byte (bit 7 flags validity;
|
||||||
let classic = AppleEncoding::MacRoman(MacRomanRevision::Classic);
|
// a Cyrillic system writes 0x87). Script system, not table — the Roman
|
||||||
assert_eq!(classic.decode(&[0xDB]), "¤"); // pre-8.5 currency sign, not €
|
// regional variants all report script 0:
|
||||||
|
let enc = AppleEncoding::from_fd_script(0x87).unwrap();
|
||||||
|
assert_eq!(enc.name(), "Mac OS Cyrillic");
|
||||||
|
|
||||||
|
// Classic Mac name fields are Pascal strings (Str27/Str31):
|
||||||
|
let name = enc.decode_pstr(b"\x08\x84\xEE\xEA\xF3\xEC\xE5\xED\xF2").unwrap();
|
||||||
|
assert_eq!(name, "Документ");
|
||||||
|
|
||||||
|
// The Euro rollout revised several tables, at different bytes per encoding;
|
||||||
|
// pick the pre-Euro table for older-system fidelity:
|
||||||
|
let classic = AppleEncoding::MacRoman(Revision::Classic);
|
||||||
|
assert_eq!(classic.decode(&[0xDB]).unwrap(), "¤"); // pre-8.5, not €
|
||||||
|
|
||||||
|
// Decode is fallible for API uniformity (Greek pre-9.2.2 leaves 0xFF
|
||||||
|
// undefined), or go lossy:
|
||||||
|
let greek = AppleEncoding::MacGreek(Revision::Classic);
|
||||||
|
assert!(greek.decode(&[0xFF]).is_err());
|
||||||
|
assert_eq!(greek.decode_lossy(&[0xFF]), "\u{FFFD}");
|
||||||
```
|
```
|
||||||
|
|
||||||
## Status
|
## Status
|
||||||
|
|
||||||
- **Mac OS Roman** — implemented, both pre- and post-8.5 revisions, decode + encode.
|
- **Twelve single-byte encodings** — implemented, decode + encode: Roman,
|
||||||
- **Regional single-byte** (Cyrillic, Greek, Turkish, …) and **CJK double-byte**
|
Greek, Cyrillic, Central European Roman, Turkish, Croatian, Icelandic,
|
||||||
(Japanese, Big5, GB, Korean) — planned, to be codegen'd from the Unicode
|
Romanian, Celtic, Gaelic, Ukrainian (the pre-9.0 Cyrillic variant), and
|
||||||
Consortium `VENDORS/APPLE/*.TXT` tables. The double-byte tables will be
|
Inuit.
|
||||||
feature-gated.
|
- **Pre-Euro revisions** — implemented for the eight encodings Apple revised:
|
||||||
|
Roman/Croatian/Icelandic/Romanian/Celtic/Gaelic (`0xDB`, Mac OS 8.5),
|
||||||
|
Cyrillic (`0xA2`/`0xB6`/`0xFF`, Mac OS 9.0), Greek (`0x9C`/`0xFF`,
|
||||||
|
Mac OS 9.2.2).
|
||||||
|
- **CJK double-byte** (Japanese, Chinese, Korean) and the
|
||||||
|
**bidirectional/complex scripts** (Arabic, Hebrew, Thai, Indic — which need
|
||||||
|
multi-scalar decode) — planned, behind the same API; the double-byte tables
|
||||||
|
will be feature-gated.
|
||||||
|
|
||||||
|
## Fidelity notes
|
||||||
|
|
||||||
|
- Every table is a verified bijection: anything an encoding decodes re-encodes
|
||||||
|
to the identical bytes.
|
||||||
|
- Every table is total except Mac OS Greek at `Revision::Classic`, whose
|
||||||
|
`0xFF` was undefined before Mac OS 9.2.2 — so `decode` returns a `Result`
|
||||||
|
and `decode_lossy` substitutes U+FFFD, matching the `msdos-encodings`
|
||||||
|
sister crate.
|
||||||
|
- Apple's corporate Private Use Area mappings are preserved, not normalized:
|
||||||
|
the Apple logo (`0xF0` → `U+F8FF` in Roman) and Mac OS Turkish's explicit
|
||||||
|
"undefined character" slot (`0xF5` → `U+F8A0`) round-trip exactly.
|
||||||
|
- The pre-Euro revision tables are generated from per-encoding deltas taken
|
||||||
|
from each mapping file's own change history, with invariant checks that
|
||||||
|
fail regeneration loudly if the vendored data ever disagrees — the Euro
|
||||||
|
landed at different bytes per encoding, so nothing is hand-placed.
|
||||||
|
- Mac OS Ukrainian is derived from `CYRILLIC.TXT` plus its documented delta
|
||||||
|
(`UKRAINE.TXT` upstream is a notes-only stub: Mac OS 9.0 retired the
|
||||||
|
separate Ukrainian character set).
|
||||||
|
|
||||||
|
## Regenerating tables
|
||||||
|
|
||||||
|
Everything in `src/tables/` except `mod.rs` is generated from the vendored
|
||||||
|
mapping files in `data/apple/` (needs Python ≥ 3.10 and `rustfmt` on `PATH`):
|
||||||
|
|
||||||
|
```sh
|
||||||
|
uv run tools/gen_tables.py
|
||||||
|
```
|
||||||
|
|
||||||
## Scope
|
## Scope
|
||||||
|
|
||||||
|
|||||||
328
data/apple/CELTIC.TXT
Normal file
328
data/apple/CELTIC.TXT
Normal file
@@ -0,0 +1,328 @@
|
|||||||
|
#=======================================================================
|
||||||
|
# File name: CELTIC.TXT
|
||||||
|
#
|
||||||
|
# Contents: Map (external version) from Mac OS Celtic
|
||||||
|
# character set to Unicode 2.1 and later
|
||||||
|
#
|
||||||
|
# Contacts: charsets@apple.com, everson@evertype.com
|
||||||
|
#
|
||||||
|
# Changes:
|
||||||
|
#
|
||||||
|
# c01 2005-Apr-01 First posted version. Matches internal xml
|
||||||
|
# <c1.1> and Text Encoding Converter 2.0.
|
||||||
|
#
|
||||||
|
# Standard header:
|
||||||
|
# ----------------
|
||||||
|
#
|
||||||
|
# Apple, the Apple logo, and Macintosh are trademarks of Apple
|
||||||
|
# Computer, Inc., registered in the United States and other countries.
|
||||||
|
# Unicode is a trademark of Unicode Inc. For the sake of brevity,
|
||||||
|
# throughout this document, "Macintosh" can be used to refer to
|
||||||
|
# Macintosh computers and "Unicode" can be used to refer to the
|
||||||
|
# Unicode standard.
|
||||||
|
#
|
||||||
|
# Apple Computer, Inc. ("Apple") makes no warranty or representation,
|
||||||
|
# either express or implied, with respect to this document and the
|
||||||
|
# included data, its quality, accuracy, or fitness for a particular
|
||||||
|
# purpose. In no event will Apple be liable for direct, indirect,
|
||||||
|
# special, incidental, or consequential damages resulting from any
|
||||||
|
# defect or inaccuracy in this document or the included data.
|
||||||
|
#
|
||||||
|
# These mapping tables and character lists are subject to change.
|
||||||
|
# The latest tables should be available from the following:
|
||||||
|
#
|
||||||
|
# <http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/>
|
||||||
|
#
|
||||||
|
# For general information about Mac OS encodings and these mapping
|
||||||
|
# tables, see the file "README.TXT".
|
||||||
|
#
|
||||||
|
# Format:
|
||||||
|
# -------
|
||||||
|
#
|
||||||
|
# Three tab-separated columns;
|
||||||
|
# '#' begins a comment which continues to the end of the line.
|
||||||
|
# Column #1 is the Mac OS Celtic code (in hex as 0xNN)
|
||||||
|
# Column #2 is the corresponding Unicode (in hex as 0xNNNN)
|
||||||
|
# Column #3 is a comment containing the Unicode name
|
||||||
|
#
|
||||||
|
# The entries are in Mac OS Celtic code order.
|
||||||
|
#
|
||||||
|
# Control character mappings are not shown in this table, following
|
||||||
|
# the conventions of the standard UTC mapping tables. However, the
|
||||||
|
# Mac OS Celtic character set uses the standard control characters
|
||||||
|
# at 0x00-0x1F and 0x7F.
|
||||||
|
#
|
||||||
|
# Notes on Mac OS Celtic (partly from Michael Everson):
|
||||||
|
# -----------------------------------------------------
|
||||||
|
#
|
||||||
|
# This is a legacy Mac OS encoding; in the Mac OS X Carbon and Cocoa
|
||||||
|
# environments, it is only supported via transcoding to and from
|
||||||
|
# Unicode.
|
||||||
|
#
|
||||||
|
# This character set was developed by Michael Everson of Everson
|
||||||
|
# Typography (everson@evertype.com) and was used for the Irish
|
||||||
|
# localizations of Mac OS 6.0.8 and 7.1, for the Welsh localization of
|
||||||
|
# Mac OS 7.1, and for several fonts that can be used on any version of
|
||||||
|
# Mac OS 7.1 or later. Note that while Apple authorized
|
||||||
|
# the Irish and Welsh localizations mentioned above, they were not
|
||||||
|
# systems which shipped with Apple hardware, and were not otherwise
|
||||||
|
# supported by Apple. Fonts conforming to the Mac OS Celtic character
|
||||||
|
# set are available from Everson Typography (http://www.evertype.com)
|
||||||
|
# and MEU Cymru (http://www.meucymru.co.uk). Information about the use
|
||||||
|
# of this character set is available at
|
||||||
|
# http://www.evertype.com/celtscript/celtcode.html.
|
||||||
|
#
|
||||||
|
# The Mac OS Celtic encoding shares the script code smRoman (0) with
|
||||||
|
# the standard Mac OS Roman encoding. To determine if the Celtic
|
||||||
|
# encoding is being used in Mac OS 7-9, you should also check if the
|
||||||
|
# system region code is 50, verIreland, or 79, verWales. Otherwise,
|
||||||
|
# you can check for particular fonts that conform to this encoding.
|
||||||
|
#
|
||||||
|
# This character set is a variant of standard Mac OS Roman, adding
|
||||||
|
# capital and small y with acute, grave, and circumflex, and capital
|
||||||
|
# and small w with acute, grave, circumflex and diaeresis. It has 14
|
||||||
|
# code point differences from standard Mac OS Roman (0xDE, 0xDF, 0xE2,
|
||||||
|
# 0xE3, 0xF6-0xFF).
|
||||||
|
#
|
||||||
|
# Before Mac OS 8.5, code point 0xDB was CURRENCY SIGN, and was
|
||||||
|
# mapped to U+00A4. In Mac OS 8.5 and later versions, code point
|
||||||
|
# 0xDB is changed to EURO SIGN and maps to U+20AC; the standard
|
||||||
|
# Apple fonts were updated for Mac OS 8.5 to reflect this. There is
|
||||||
|
# a "currency sign" variant of the Mac OS Celtic encoding that still
|
||||||
|
# maps 0xDB to U+00A4; this can be used for older fonts.
|
||||||
|
# Note: U+20AC is new with Unicode 2.1; for earlier Unicode
|
||||||
|
# versions, Mac OS Celtic 0xDB may be mapped to private-use
|
||||||
|
# character U+F8A0.
|
||||||
|
#
|
||||||
|
# Unicode mapping issues and notes:
|
||||||
|
# ---------------------------------
|
||||||
|
#
|
||||||
|
# Details of mapping changes in each version:
|
||||||
|
# -------------------------------------------
|
||||||
|
#
|
||||||
|
##################
|
||||||
|
|
||||||
|
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
|
||||||
|
#
|
||||||
|
0x80 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||||
|
0x81 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||||
|
0x82 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||||
|
0x83 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
|
||||||
|
0x84 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
|
||||||
|
0x85 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||||
|
0x86 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||||
|
0x87 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
|
||||||
|
0x88 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
|
||||||
|
0x89 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||||
|
0x8A 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
|
||||||
|
0x8B 0x00E3 # LATIN SMALL LETTER A WITH TILDE
|
||||||
|
0x8C 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
|
||||||
|
0x8D 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
|
||||||
|
0x8E 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
|
||||||
|
0x8F 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
|
||||||
|
0x90 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||||
|
0x91 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
|
||||||
|
0x92 0x00ED # LATIN SMALL LETTER I WITH ACUTE
|
||||||
|
0x93 0x00EC # LATIN SMALL LETTER I WITH GRAVE
|
||||||
|
0x94 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||||
|
0x95 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
|
||||||
|
0x96 0x00F1 # LATIN SMALL LETTER N WITH TILDE
|
||||||
|
0x97 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
|
||||||
|
0x98 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
|
||||||
|
0x99 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||||
|
0x9A 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
|
||||||
|
0x9B 0x00F5 # LATIN SMALL LETTER O WITH TILDE
|
||||||
|
0x9C 0x00FA # LATIN SMALL LETTER U WITH ACUTE
|
||||||
|
0x9D 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
|
||||||
|
0x9E 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||||
|
0x9F 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
|
||||||
|
0xA0 0x2020 # DAGGER
|
||||||
|
0xA1 0x00B0 # DEGREE SIGN
|
||||||
|
0xA2 0x00A2 # CENT SIGN
|
||||||
|
0xA3 0x00A3 # POUND SIGN
|
||||||
|
0xA4 0x00A7 # SECTION SIGN
|
||||||
|
0xA5 0x2022 # BULLET
|
||||||
|
0xA6 0x00B6 # PILCROW SIGN
|
||||||
|
0xA7 0x00DF # LATIN SMALL LETTER SHARP S
|
||||||
|
0xA8 0x00AE # REGISTERED SIGN
|
||||||
|
0xA9 0x00A9 # COPYRIGHT SIGN
|
||||||
|
0xAA 0x2122 # TRADE MARK SIGN
|
||||||
|
0xAB 0x00B4 # ACUTE ACCENT
|
||||||
|
0xAC 0x00A8 # DIAERESIS
|
||||||
|
0xAD 0x2260 # NOT EQUAL TO
|
||||||
|
0xAE 0x00C6 # LATIN CAPITAL LETTER AE
|
||||||
|
0xAF 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
|
||||||
|
0xB0 0x221E # INFINITY
|
||||||
|
0xB1 0x00B1 # PLUS-MINUS SIGN
|
||||||
|
0xB2 0x2264 # LESS-THAN OR EQUAL TO
|
||||||
|
0xB3 0x2265 # GREATER-THAN OR EQUAL TO
|
||||||
|
0xB4 0x00A5 # YEN SIGN
|
||||||
|
0xB5 0x00B5 # MICRO SIGN
|
||||||
|
0xB6 0x2202 # PARTIAL DIFFERENTIAL
|
||||||
|
0xB7 0x2211 # N-ARY SUMMATION
|
||||||
|
0xB8 0x220F # N-ARY PRODUCT
|
||||||
|
0xB9 0x03C0 # GREEK SMALL LETTER PI
|
||||||
|
0xBA 0x222B # INTEGRAL
|
||||||
|
0xBB 0x00AA # FEMININE ORDINAL INDICATOR
|
||||||
|
0xBC 0x00BA # MASCULINE ORDINAL INDICATOR
|
||||||
|
0xBD 0x03A9 # GREEK CAPITAL LETTER OMEGA
|
||||||
|
0xBE 0x00E6 # LATIN SMALL LETTER AE
|
||||||
|
0xBF 0x00F8 # LATIN SMALL LETTER O WITH STROKE
|
||||||
|
0xC0 0x00BF # INVERTED QUESTION MARK
|
||||||
|
0xC1 0x00A1 # INVERTED EXCLAMATION MARK
|
||||||
|
0xC2 0x00AC # NOT SIGN
|
||||||
|
0xC3 0x221A # SQUARE ROOT
|
||||||
|
0xC4 0x0192 # LATIN SMALL LETTER F WITH HOOK
|
||||||
|
0xC5 0x2248 # ALMOST EQUAL TO
|
||||||
|
0xC6 0x2206 # INCREMENT
|
||||||
|
0xC7 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||||
|
0xC8 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||||
|
0xC9 0x2026 # HORIZONTAL ELLIPSIS
|
||||||
|
0xCA 0x00A0 # NO-BREAK SPACE
|
||||||
|
0xCB 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
|
||||||
|
0xCC 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
|
||||||
|
0xCD 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
|
||||||
|
0xCE 0x0152 # LATIN CAPITAL LIGATURE OE
|
||||||
|
0xCF 0x0153 # LATIN SMALL LIGATURE OE
|
||||||
|
0xD0 0x2013 # EN DASH
|
||||||
|
0xD1 0x2014 # EM DASH
|
||||||
|
0xD2 0x201C # LEFT DOUBLE QUOTATION MARK
|
||||||
|
0xD3 0x201D # RIGHT DOUBLE QUOTATION MARK
|
||||||
|
0xD4 0x2018 # LEFT SINGLE QUOTATION MARK
|
||||||
|
0xD5 0x2019 # RIGHT SINGLE QUOTATION MARK
|
||||||
|
0xD6 0x00F7 # DIVISION SIGN
|
||||||
|
0xD7 0x25CA # LOZENGE
|
||||||
|
0xD8 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
|
||||||
|
0xD9 0x0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
|
||||||
|
0xDA 0x2044 # FRACTION SLASH
|
||||||
|
0xDB 0x20AC # EURO SIGN # before Mac OS 8.5 this was U+00A4 CURRENCY SIGN
|
||||||
|
0xDC 0x2039 # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||||
|
0xDD 0x203A # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||||
|
0xDE 0x0176 # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
|
||||||
|
0xDF 0x0177 # LATIN SMALL LETTER Y WITH CIRCUMFLEX
|
||||||
|
0xE0 0x2021 # DOUBLE DAGGER
|
||||||
|
0xE1 0x00B7 # MIDDLE DOT
|
||||||
|
0xE2 0x1EF2 # LATIN CAPITAL LETTER Y WITH GRAVE
|
||||||
|
0xE3 0x1EF3 # LATIN SMALL LETTER Y WITH GRAVE
|
||||||
|
0xE4 0x2030 # PER MILLE SIGN
|
||||||
|
0xE5 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||||
|
0xE6 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||||
|
0xE7 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
|
||||||
|
0xE8 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||||
|
0xE9 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
|
||||||
|
0xEA 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
|
||||||
|
0xEB 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||||
|
0xEC 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||||
|
0xED 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
|
||||||
|
0xEE 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
|
||||||
|
0xEF 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||||
|
0xF0 0x2663 # BLACK CLUB SUIT = shamrock # future mapping U+2618 SHAMROCK
|
||||||
|
0xF1 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
|
||||||
|
0xF2 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
|
||||||
|
0xF3 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||||
|
0xF4 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
|
||||||
|
0xF5 0x0131 # LATIN SMALL LETTER DOTLESS I
|
||||||
|
0xF6 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
|
||||||
|
0xF7 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
|
||||||
|
0xF8 0x0174 # LATIN CAPITAL LETTER W WITH CIRCUMFLEX
|
||||||
|
0xF9 0x0175 # LATIN SMALL LETTER W WITH CIRCUMFLEX
|
||||||
|
0xFA 0x1E84 # LATIN CAPITAL LETTER W WITH DIAERESIS
|
||||||
|
0xFB 0x1E85 # LATIN SMALL LETTER W WITH DIAERESIS
|
||||||
|
0xFC 0x1E80 # LATIN CAPITAL LETTER W WITH GRAVE
|
||||||
|
0xFD 0x1E81 # LATIN SMALL LETTER W WITH GRAVE
|
||||||
|
0xFE 0x1E82 # LATIN CAPITAL LETTER W WITH ACUTE
|
||||||
|
0xFF 0x1E83 # LATIN SMALL LETTER W WITH ACUTE
|
||||||
327
data/apple/CENTEURO.TXT
Normal file
327
data/apple/CENTEURO.TXT
Normal file
@@ -0,0 +1,327 @@
|
|||||||
|
#=======================================================================
|
||||||
|
# File name: CENTEURO.TXT
|
||||||
|
#
|
||||||
|
# Contents: Map (external version) from Mac OS Central European
|
||||||
|
# character set to Unicode 2.1 and later.
|
||||||
|
#
|
||||||
|
# Copyright: (c) 1995-2002, 2005 by Apple Computer, Inc., all rights
|
||||||
|
# reserved.
|
||||||
|
#
|
||||||
|
# Contact: charsets@apple.com
|
||||||
|
#
|
||||||
|
# Changes:
|
||||||
|
#
|
||||||
|
# c02 2005-Apr-04 Update header comments. Matches internal xml
|
||||||
|
# <c1.1> and Text Encoding Converter 2.0.
|
||||||
|
# b3,c1 2002-Dec-19 Update URLs. Matches internal utom<b1>.
|
||||||
|
# b02 1999-Sep-22 Update contact e-mail address. Matches
|
||||||
|
# internal utom<b1>, ufrm<b1>, and Text
|
||||||
|
# Encoding Converter version 1.5.
|
||||||
|
# n05 1998-Feb-05 Update header comments to new format; no
|
||||||
|
# mapping changes. Matches internal utom<n3>,
|
||||||
|
# ufrm<n13>, and Text Encoding Converter
|
||||||
|
# version 1.3.
|
||||||
|
# n03 1995-Apr-15 First version (after fixing some typos).
|
||||||
|
# Matches internal ufrm<n5>.
|
||||||
|
#
|
||||||
|
# Standard header:
|
||||||
|
# ----------------
|
||||||
|
#
|
||||||
|
# Apple, the Apple logo, and Macintosh are trademarks of Apple
|
||||||
|
# Computer, Inc., registered in the United States and other countries.
|
||||||
|
# Unicode is a trademark of Unicode Inc. For the sake of brevity,
|
||||||
|
# throughout this document, "Macintosh" can be used to refer to
|
||||||
|
# Macintosh computers and "Unicode" can be used to refer to the
|
||||||
|
# Unicode standard.
|
||||||
|
#
|
||||||
|
# Apple Computer, Inc. ("Apple") makes no warranty or representation,
|
||||||
|
# either express or implied, with respect to this document and the
|
||||||
|
# included data, its quality, accuracy, or fitness for a particular
|
||||||
|
# purpose. In no event will Apple be liable for direct, indirect,
|
||||||
|
# special, incidental, or consequential damages resulting from any
|
||||||
|
# defect or inaccuracy in this document or the included data.
|
||||||
|
#
|
||||||
|
# These mapping tables and character lists are subject to change.
|
||||||
|
# The latest tables should be available from the following:
|
||||||
|
#
|
||||||
|
# <http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/>
|
||||||
|
#
|
||||||
|
# For general information about Mac OS encodings and these mapping
|
||||||
|
# tables, see the file "README.TXT".
|
||||||
|
#
|
||||||
|
# Format:
|
||||||
|
# -------
|
||||||
|
#
|
||||||
|
# Three tab-separated columns;
|
||||||
|
# '#' begins a comment which continues to the end of the line.
|
||||||
|
# Column #1 is the Mac OS Central European code (in hex as 0xNN)
|
||||||
|
# Column #2 is the corresponding Unicode (in hex as 0xNNNN)
|
||||||
|
# Column #3 is a comment containing the Unicode name
|
||||||
|
#
|
||||||
|
# The entries are in Mac OS Central European code order.
|
||||||
|
#
|
||||||
|
# Control character mappings are not shown in this table, following
|
||||||
|
# the conventions of the standard UTC mapping tables. However, the
|
||||||
|
# Mac OS Central European character set uses the standard control
|
||||||
|
# characters at 0x00-0x1F and 0x7F.
|
||||||
|
#
|
||||||
|
# Notes on Mac OS Central European:
|
||||||
|
# ---------------------------------
|
||||||
|
#
|
||||||
|
# This is a legacy Mac OS encoding; in the Mac OS X Carbon and Cocoa
|
||||||
|
# environments, it is only supported directly in programming
|
||||||
|
# interfaces for QuickDraw Text, the Script Manager, and related
|
||||||
|
# Text Utilities. For other purposes it is supported via transcoding
|
||||||
|
# to and from Unicode.
|
||||||
|
#
|
||||||
|
# This character set is intended to cover the following languages:
|
||||||
|
#
|
||||||
|
# Polish, Czech, Slovak, Hungarian, Estonian, Latvian, Lithuanian
|
||||||
|
#
|
||||||
|
# These are written in Latin script, but using a different set of
|
||||||
|
# of accented characters than Mac OS Roman. The Mac OS Central
|
||||||
|
# European character set also includes a number of characters
|
||||||
|
# needed for the Mac OS user interface and localization (e.g.
|
||||||
|
# ellipsis, bullet, copyright sign), several typographic
|
||||||
|
# punctuation symbols, math symbols, etc. However, it has a
|
||||||
|
# smaller set of punctuation and symbols than Mac OS Roman. All of
|
||||||
|
# the characters in Mac OS Central European that are also in the
|
||||||
|
# Mac OS Roman character set are at the same code point in both
|
||||||
|
# character sets; this improves application compatibility.
|
||||||
|
#
|
||||||
|
# Note: This does not have the same letter repertoire as ISO
|
||||||
|
# 8859-2 (Latin-2); each has some accented letters that the other
|
||||||
|
# does not have.
|
||||||
|
#
|
||||||
|
# Unicode mapping issues and notes:
|
||||||
|
# ---------------------------------
|
||||||
|
#
|
||||||
|
# Details of mapping changes in each version:
|
||||||
|
# -------------------------------------------
|
||||||
|
#
|
||||||
|
##################
|
||||||
|
|
||||||
|
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
|
||||||
|
#
|
||||||
|
0x80 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||||
|
0x81 0x0100 # LATIN CAPITAL LETTER A WITH MACRON
|
||||||
|
0x82 0x0101 # LATIN SMALL LETTER A WITH MACRON
|
||||||
|
0x83 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
|
||||||
|
0x84 0x0104 # LATIN CAPITAL LETTER A WITH OGONEK
|
||||||
|
0x85 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||||
|
0x86 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||||
|
0x87 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
|
||||||
|
0x88 0x0105 # LATIN SMALL LETTER A WITH OGONEK
|
||||||
|
0x89 0x010C # LATIN CAPITAL LETTER C WITH CARON
|
||||||
|
0x8A 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
|
||||||
|
0x8B 0x010D # LATIN SMALL LETTER C WITH CARON
|
||||||
|
0x8C 0x0106 # LATIN CAPITAL LETTER C WITH ACUTE
|
||||||
|
0x8D 0x0107 # LATIN SMALL LETTER C WITH ACUTE
|
||||||
|
0x8E 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
|
||||||
|
0x8F 0x0179 # LATIN CAPITAL LETTER Z WITH ACUTE
|
||||||
|
0x90 0x017A # LATIN SMALL LETTER Z WITH ACUTE
|
||||||
|
0x91 0x010E # LATIN CAPITAL LETTER D WITH CARON
|
||||||
|
0x92 0x00ED # LATIN SMALL LETTER I WITH ACUTE
|
||||||
|
0x93 0x010F # LATIN SMALL LETTER D WITH CARON
|
||||||
|
0x94 0x0112 # LATIN CAPITAL LETTER E WITH MACRON
|
||||||
|
0x95 0x0113 # LATIN SMALL LETTER E WITH MACRON
|
||||||
|
0x96 0x0116 # LATIN CAPITAL LETTER E WITH DOT ABOVE
|
||||||
|
0x97 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
|
||||||
|
0x98 0x0117 # LATIN SMALL LETTER E WITH DOT ABOVE
|
||||||
|
0x99 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||||
|
0x9A 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
|
||||||
|
0x9B 0x00F5 # LATIN SMALL LETTER O WITH TILDE
|
||||||
|
0x9C 0x00FA # LATIN SMALL LETTER U WITH ACUTE
|
||||||
|
0x9D 0x011A # LATIN CAPITAL LETTER E WITH CARON
|
||||||
|
0x9E 0x011B # LATIN SMALL LETTER E WITH CARON
|
||||||
|
0x9F 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
|
||||||
|
0xA0 0x2020 # DAGGER
|
||||||
|
0xA1 0x00B0 # DEGREE SIGN
|
||||||
|
0xA2 0x0118 # LATIN CAPITAL LETTER E WITH OGONEK
|
||||||
|
0xA3 0x00A3 # POUND SIGN
|
||||||
|
0xA4 0x00A7 # SECTION SIGN
|
||||||
|
0xA5 0x2022 # BULLET
|
||||||
|
0xA6 0x00B6 # PILCROW SIGN
|
||||||
|
0xA7 0x00DF # LATIN SMALL LETTER SHARP S
|
||||||
|
0xA8 0x00AE # REGISTERED SIGN
|
||||||
|
0xA9 0x00A9 # COPYRIGHT SIGN
|
||||||
|
0xAA 0x2122 # TRADE MARK SIGN
|
||||||
|
0xAB 0x0119 # LATIN SMALL LETTER E WITH OGONEK
|
||||||
|
0xAC 0x00A8 # DIAERESIS
|
||||||
|
0xAD 0x2260 # NOT EQUAL TO
|
||||||
|
0xAE 0x0123 # LATIN SMALL LETTER G WITH CEDILLA
|
||||||
|
0xAF 0x012E # LATIN CAPITAL LETTER I WITH OGONEK
|
||||||
|
0xB0 0x012F # LATIN SMALL LETTER I WITH OGONEK
|
||||||
|
0xB1 0x012A # LATIN CAPITAL LETTER I WITH MACRON
|
||||||
|
0xB2 0x2264 # LESS-THAN OR EQUAL TO
|
||||||
|
0xB3 0x2265 # GREATER-THAN OR EQUAL TO
|
||||||
|
0xB4 0x012B # LATIN SMALL LETTER I WITH MACRON
|
||||||
|
0xB5 0x0136 # LATIN CAPITAL LETTER K WITH CEDILLA
|
||||||
|
0xB6 0x2202 # PARTIAL DIFFERENTIAL
|
||||||
|
0xB7 0x2211 # N-ARY SUMMATION
|
||||||
|
0xB8 0x0142 # LATIN SMALL LETTER L WITH STROKE
|
||||||
|
0xB9 0x013B # LATIN CAPITAL LETTER L WITH CEDILLA
|
||||||
|
0xBA 0x013C # LATIN SMALL LETTER L WITH CEDILLA
|
||||||
|
0xBB 0x013D # LATIN CAPITAL LETTER L WITH CARON
|
||||||
|
0xBC 0x013E # LATIN SMALL LETTER L WITH CARON
|
||||||
|
0xBD 0x0139 # LATIN CAPITAL LETTER L WITH ACUTE
|
||||||
|
0xBE 0x013A # LATIN SMALL LETTER L WITH ACUTE
|
||||||
|
0xBF 0x0145 # LATIN CAPITAL LETTER N WITH CEDILLA
|
||||||
|
0xC0 0x0146 # LATIN SMALL LETTER N WITH CEDILLA
|
||||||
|
0xC1 0x0143 # LATIN CAPITAL LETTER N WITH ACUTE
|
||||||
|
0xC2 0x00AC # NOT SIGN
|
||||||
|
0xC3 0x221A # SQUARE ROOT
|
||||||
|
0xC4 0x0144 # LATIN SMALL LETTER N WITH ACUTE
|
||||||
|
0xC5 0x0147 # LATIN CAPITAL LETTER N WITH CARON
|
||||||
|
0xC6 0x2206 # INCREMENT
|
||||||
|
0xC7 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||||
|
0xC8 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||||
|
0xC9 0x2026 # HORIZONTAL ELLIPSIS
|
||||||
|
0xCA 0x00A0 # NO-BREAK SPACE
|
||||||
|
0xCB 0x0148 # LATIN SMALL LETTER N WITH CARON
|
||||||
|
0xCC 0x0150 # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
|
||||||
|
0xCD 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
|
||||||
|
0xCE 0x0151 # LATIN SMALL LETTER O WITH DOUBLE ACUTE
|
||||||
|
0xCF 0x014C # LATIN CAPITAL LETTER O WITH MACRON
|
||||||
|
0xD0 0x2013 # EN DASH
|
||||||
|
0xD1 0x2014 # EM DASH
|
||||||
|
0xD2 0x201C # LEFT DOUBLE QUOTATION MARK
|
||||||
|
0xD3 0x201D # RIGHT DOUBLE QUOTATION MARK
|
||||||
|
0xD4 0x2018 # LEFT SINGLE QUOTATION MARK
|
||||||
|
0xD5 0x2019 # RIGHT SINGLE QUOTATION MARK
|
||||||
|
0xD6 0x00F7 # DIVISION SIGN
|
||||||
|
0xD7 0x25CA # LOZENGE
|
||||||
|
0xD8 0x014D # LATIN SMALL LETTER O WITH MACRON
|
||||||
|
0xD9 0x0154 # LATIN CAPITAL LETTER R WITH ACUTE
|
||||||
|
0xDA 0x0155 # LATIN SMALL LETTER R WITH ACUTE
|
||||||
|
0xDB 0x0158 # LATIN CAPITAL LETTER R WITH CARON
|
||||||
|
0xDC 0x2039 # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||||
|
0xDD 0x203A # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||||
|
0xDE 0x0159 # LATIN SMALL LETTER R WITH CARON
|
||||||
|
0xDF 0x0156 # LATIN CAPITAL LETTER R WITH CEDILLA
|
||||||
|
0xE0 0x0157 # LATIN SMALL LETTER R WITH CEDILLA
|
||||||
|
0xE1 0x0160 # LATIN CAPITAL LETTER S WITH CARON
|
||||||
|
0xE2 0x201A # SINGLE LOW-9 QUOTATION MARK
|
||||||
|
0xE3 0x201E # DOUBLE LOW-9 QUOTATION MARK
|
||||||
|
0xE4 0x0161 # LATIN SMALL LETTER S WITH CARON
|
||||||
|
0xE5 0x015A # LATIN CAPITAL LETTER S WITH ACUTE
|
||||||
|
0xE6 0x015B # LATIN SMALL LETTER S WITH ACUTE
|
||||||
|
0xE7 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
|
||||||
|
0xE8 0x0164 # LATIN CAPITAL LETTER T WITH CARON
|
||||||
|
0xE9 0x0165 # LATIN SMALL LETTER T WITH CARON
|
||||||
|
0xEA 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
|
||||||
|
0xEB 0x017D # LATIN CAPITAL LETTER Z WITH CARON
|
||||||
|
0xEC 0x017E # LATIN SMALL LETTER Z WITH CARON
|
||||||
|
0xED 0x016A # LATIN CAPITAL LETTER U WITH MACRON
|
||||||
|
0xEE 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
|
||||||
|
0xEF 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||||
|
0xF0 0x016B # LATIN SMALL LETTER U WITH MACRON
|
||||||
|
0xF1 0x016E # LATIN CAPITAL LETTER U WITH RING ABOVE
|
||||||
|
0xF2 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
|
||||||
|
0xF3 0x016F # LATIN SMALL LETTER U WITH RING ABOVE
|
||||||
|
0xF4 0x0170 # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
|
||||||
|
0xF5 0x0171 # LATIN SMALL LETTER U WITH DOUBLE ACUTE
|
||||||
|
0xF6 0x0172 # LATIN CAPITAL LETTER U WITH OGONEK
|
||||||
|
0xF7 0x0173 # LATIN SMALL LETTER U WITH OGONEK
|
||||||
|
0xF8 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
|
||||||
|
0xF9 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
|
||||||
|
0xFA 0x0137 # LATIN SMALL LETTER K WITH CEDILLA
|
||||||
|
0xFB 0x017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE
|
||||||
|
0xFC 0x0141 # LATIN CAPITAL LETTER L WITH STROKE
|
||||||
|
0xFD 0x017C # LATIN SMALL LETTER Z WITH DOT ABOVE
|
||||||
|
0xFE 0x0122 # LATIN CAPITAL LETTER G WITH CEDILLA
|
||||||
|
0xFF 0x02C7 # CARON
|
||||||
351
data/apple/CROATIAN.TXT
Normal file
351
data/apple/CROATIAN.TXT
Normal file
@@ -0,0 +1,351 @@
|
|||||||
|
#=======================================================================
|
||||||
|
# File name: CROATIAN.TXT
|
||||||
|
#
|
||||||
|
# Contents: Map (external version) from Mac OS Croatian
|
||||||
|
# character set to Unicode 2.1 and later.
|
||||||
|
#
|
||||||
|
# Copyright: (c) 1995-2002, 2005 by Apple Computer, Inc., all rights
|
||||||
|
# reserved.
|
||||||
|
#
|
||||||
|
# Contact: charsets@apple.com
|
||||||
|
#
|
||||||
|
# Changes:
|
||||||
|
#
|
||||||
|
# c02 2005-Apr-04 Update header comments. Matches internal xml
|
||||||
|
# <c1.1> and Text Encoding Converter 2.0.
|
||||||
|
# b3,c1 2002-Dec-19 Update URLs, notes. Matches internal
|
||||||
|
# utom<b3>.
|
||||||
|
# b02 1999-Sep-22 Encoding changed for Mac OS 8.5; change
|
||||||
|
# mapping of 0xDB from CURRENCY SIGN to EURO
|
||||||
|
# SIGN. Update contact e-mail address. Matches
|
||||||
|
# internal utom<b2>, ufrm<b2>, and Text
|
||||||
|
# Encoding Converter version 1.5.
|
||||||
|
# n07 1998-Feb-05 Minor update to header comments
|
||||||
|
# n05 1997-Dec-14 Update to match internal utom<5>, ufrm<16>:
|
||||||
|
# Change standard mapping for 0xBD from U+2126
|
||||||
|
# to its canonical decomposition, U+03A9.
|
||||||
|
# n03 1995-Apr-15 First version (after fixing some typos).
|
||||||
|
# Matches internal ufrm<6>.
|
||||||
|
#
|
||||||
|
# Standard header:
|
||||||
|
# ----------------
|
||||||
|
#
|
||||||
|
# Apple, the Apple logo, and Macintosh are trademarks of Apple
|
||||||
|
# Computer, Inc., registered in the United States and other countries.
|
||||||
|
# Unicode is a trademark of Unicode Inc. For the sake of brevity,
|
||||||
|
# throughout this document, "Macintosh" can be used to refer to
|
||||||
|
# Macintosh computers and "Unicode" can be used to refer to the
|
||||||
|
# Unicode standard.
|
||||||
|
#
|
||||||
|
# Apple Computer, Inc. ("Apple") makes no warranty or representation,
|
||||||
|
# either express or implied, with respect to this document and the
|
||||||
|
# included data, its quality, accuracy, or fitness for a particular
|
||||||
|
# purpose. In no event will Apple be liable for direct, indirect,
|
||||||
|
# special, incidental, or consequential damages resulting from any
|
||||||
|
# defect or inaccuracy in this document or the included data.
|
||||||
|
#
|
||||||
|
# These mapping tables and character lists are subject to change.
|
||||||
|
# The latest tables should be available from the following:
|
||||||
|
#
|
||||||
|
# <http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/>
|
||||||
|
#
|
||||||
|
# For general information about Mac OS encodings and these mapping
|
||||||
|
# tables, see the file "README.TXT".
|
||||||
|
#
|
||||||
|
# Format:
|
||||||
|
# -------
|
||||||
|
#
|
||||||
|
# Three tab-separated columns;
|
||||||
|
# '#' begins a comment which continues to the end of the line.
|
||||||
|
# Column #1 is the Mac OS Croatian code (in hex as 0xNN)
|
||||||
|
# Column #2 is the corresponding Unicode (in hex as 0xNNNN)
|
||||||
|
# Column #3 is a comment containing the Unicode name
|
||||||
|
#
|
||||||
|
# The entries are in Mac OS Croatian code order.
|
||||||
|
#
|
||||||
|
# One of these mappings requires the use of a corporate character.
|
||||||
|
# See the file "CORPCHAR.TXT" and notes below.
|
||||||
|
#
|
||||||
|
# Control character mappings are not shown in this table, following
|
||||||
|
# the conventions of the standard UTC mapping tables. However, the
|
||||||
|
# Mac OS Croatian character set uses the standard control characters
|
||||||
|
# at 0x00-0x1F and 0x7F.
|
||||||
|
#
|
||||||
|
# Notes on Mac OS Croatian:
|
||||||
|
# -------------------------
|
||||||
|
#
|
||||||
|
# This is a legacy Mac OS encoding; in the Mac OS X Carbon and Cocoa
|
||||||
|
# environments, it is only supported via transcoding to and from
|
||||||
|
# Unicode.
|
||||||
|
#
|
||||||
|
# Mac OS Croatian is used for Croatian and Slovene.
|
||||||
|
#
|
||||||
|
# The Mac OS Croatian encoding shares the script code smRoman
|
||||||
|
# (0) with the standard Mac OS Roman encoding. To determine if
|
||||||
|
# the Croatian encoding is being used, you must check if the
|
||||||
|
# system region code is 68, verCroatia (or 25, verYugoCroatian,
|
||||||
|
# only used in older systems).
|
||||||
|
#
|
||||||
|
# This character set is a variant of standard Mac OS Roman
|
||||||
|
# encoding, adding five accented letter case pairs to handle
|
||||||
|
# Croatian. It has 20 code point differences from standard
|
||||||
|
# Mac OS Roman, but only 10 differences in repertoire.
|
||||||
|
#
|
||||||
|
# Before Mac OS 8.5, code point 0xDB was CURRENCY SIGN, and was
|
||||||
|
# mapped to U+00A4. In Mac OS 8.5 and later versions, code point
|
||||||
|
# 0xDB is changed to EURO SIGN and maps to U+20AC; the standard
|
||||||
|
# Apple fonts are updated for Mac OS 8.5 to reflect this. There is
|
||||||
|
# a "currency sign" variant of the Mac OS Croatian encoding that
|
||||||
|
# still maps 0xDB to U+00A4; this can be used for older fonts.
|
||||||
|
#
|
||||||
|
# Unicode mapping issues and notes:
|
||||||
|
# ---------------------------------
|
||||||
|
#
|
||||||
|
# The following corporate zone Unicode character is used in this
|
||||||
|
# mapping:
|
||||||
|
#
|
||||||
|
# 0xF8FF Apple logo
|
||||||
|
#
|
||||||
|
# NOTE: The graphic image associated with the Apple logo character
|
||||||
|
# is not authorized for use without permission of Apple, and
|
||||||
|
# unauthorized use might constitute trademark infringement.
|
||||||
|
#
|
||||||
|
# Details of mapping changes in each version:
|
||||||
|
# -------------------------------------------
|
||||||
|
#
|
||||||
|
# Changes from version n07 to version b02:
|
||||||
|
#
|
||||||
|
# - Encoding changed for Mac OS 8.5; change mapping of 0xDB from
|
||||||
|
# CURRENCY SIGN (U+00A4) to EURO SIGN (U+20AC).
|
||||||
|
#
|
||||||
|
# Changes from version n03 to version n05:
|
||||||
|
#
|
||||||
|
# - Change mapping of 0xBD from U+2126 to its canonical
|
||||||
|
# decomposition, U+03A9.
|
||||||
|
#
|
||||||
|
##################
|
||||||
|
|
||||||
|
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
|
||||||
|
#
|
||||||
|
0x80 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||||
|
0x81 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||||
|
0x82 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||||
|
0x83 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
|
||||||
|
0x84 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
|
||||||
|
0x85 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||||
|
0x86 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||||
|
0x87 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
|
||||||
|
0x88 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
|
||||||
|
0x89 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||||
|
0x8A 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
|
||||||
|
0x8B 0x00E3 # LATIN SMALL LETTER A WITH TILDE
|
||||||
|
0x8C 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
|
||||||
|
0x8D 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
|
||||||
|
0x8E 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
|
||||||
|
0x8F 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
|
||||||
|
0x90 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||||
|
0x91 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
|
||||||
|
0x92 0x00ED # LATIN SMALL LETTER I WITH ACUTE
|
||||||
|
0x93 0x00EC # LATIN SMALL LETTER I WITH GRAVE
|
||||||
|
0x94 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||||
|
0x95 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
|
||||||
|
0x96 0x00F1 # LATIN SMALL LETTER N WITH TILDE
|
||||||
|
0x97 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
|
||||||
|
0x98 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
|
||||||
|
0x99 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||||
|
0x9A 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
|
||||||
|
0x9B 0x00F5 # LATIN SMALL LETTER O WITH TILDE
|
||||||
|
0x9C 0x00FA # LATIN SMALL LETTER U WITH ACUTE
|
||||||
|
0x9D 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
|
||||||
|
0x9E 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||||
|
0x9F 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
|
||||||
|
0xA0 0x2020 # DAGGER
|
||||||
|
0xA1 0x00B0 # DEGREE SIGN
|
||||||
|
0xA2 0x00A2 # CENT SIGN
|
||||||
|
0xA3 0x00A3 # POUND SIGN
|
||||||
|
0xA4 0x00A7 # SECTION SIGN
|
||||||
|
0xA5 0x2022 # BULLET
|
||||||
|
0xA6 0x00B6 # PILCROW SIGN
|
||||||
|
0xA7 0x00DF # LATIN SMALL LETTER SHARP S
|
||||||
|
0xA8 0x00AE # REGISTERED SIGN
|
||||||
|
0xA9 0x0160 # LATIN CAPITAL LETTER S WITH CARON
|
||||||
|
0xAA 0x2122 # TRADE MARK SIGN
|
||||||
|
0xAB 0x00B4 # ACUTE ACCENT
|
||||||
|
0xAC 0x00A8 # DIAERESIS
|
||||||
|
0xAD 0x2260 # NOT EQUAL TO
|
||||||
|
0xAE 0x017D # LATIN CAPITAL LETTER Z WITH CARON
|
||||||
|
0xAF 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
|
||||||
|
0xB0 0x221E # INFINITY
|
||||||
|
0xB1 0x00B1 # PLUS-MINUS SIGN
|
||||||
|
0xB2 0x2264 # LESS-THAN OR EQUAL TO
|
||||||
|
0xB3 0x2265 # GREATER-THAN OR EQUAL TO
|
||||||
|
0xB4 0x2206 # INCREMENT
|
||||||
|
0xB5 0x00B5 # MICRO SIGN
|
||||||
|
0xB6 0x2202 # PARTIAL DIFFERENTIAL
|
||||||
|
0xB7 0x2211 # N-ARY SUMMATION
|
||||||
|
0xB8 0x220F # N-ARY PRODUCT
|
||||||
|
0xB9 0x0161 # LATIN SMALL LETTER S WITH CARON
|
||||||
|
0xBA 0x222B # INTEGRAL
|
||||||
|
0xBB 0x00AA # FEMININE ORDINAL INDICATOR
|
||||||
|
0xBC 0x00BA # MASCULINE ORDINAL INDICATOR
|
||||||
|
0xBD 0x03A9 # GREEK CAPITAL LETTER OMEGA
|
||||||
|
0xBE 0x017E # LATIN SMALL LETTER Z WITH CARON
|
||||||
|
0xBF 0x00F8 # LATIN SMALL LETTER O WITH STROKE
|
||||||
|
0xC0 0x00BF # INVERTED QUESTION MARK
|
||||||
|
0xC1 0x00A1 # INVERTED EXCLAMATION MARK
|
||||||
|
0xC2 0x00AC # NOT SIGN
|
||||||
|
0xC3 0x221A # SQUARE ROOT
|
||||||
|
0xC4 0x0192 # LATIN SMALL LETTER F WITH HOOK
|
||||||
|
0xC5 0x2248 # ALMOST EQUAL TO
|
||||||
|
0xC6 0x0106 # LATIN CAPITAL LETTER C WITH ACUTE
|
||||||
|
0xC7 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||||
|
0xC8 0x010C # LATIN CAPITAL LETTER C WITH CARON
|
||||||
|
0xC9 0x2026 # HORIZONTAL ELLIPSIS
|
||||||
|
0xCA 0x00A0 # NO-BREAK SPACE
|
||||||
|
0xCB 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
|
||||||
|
0xCC 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
|
||||||
|
0xCD 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
|
||||||
|
0xCE 0x0152 # LATIN CAPITAL LIGATURE OE
|
||||||
|
0xCF 0x0153 # LATIN SMALL LIGATURE OE
|
||||||
|
0xD0 0x0110 # LATIN CAPITAL LETTER D WITH STROKE
|
||||||
|
0xD1 0x2014 # EM DASH
|
||||||
|
0xD2 0x201C # LEFT DOUBLE QUOTATION MARK
|
||||||
|
0xD3 0x201D # RIGHT DOUBLE QUOTATION MARK
|
||||||
|
0xD4 0x2018 # LEFT SINGLE QUOTATION MARK
|
||||||
|
0xD5 0x2019 # RIGHT SINGLE QUOTATION MARK
|
||||||
|
0xD6 0x00F7 # DIVISION SIGN
|
||||||
|
0xD7 0x25CA # LOZENGE
|
||||||
|
0xD8 0xF8FF # Apple logo
|
||||||
|
0xD9 0x00A9 # COPYRIGHT SIGN
|
||||||
|
0xDA 0x2044 # FRACTION SLASH
|
||||||
|
0xDB 0x20AC # EURO SIGN
|
||||||
|
0xDC 0x2039 # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||||
|
0xDD 0x203A # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||||
|
0xDE 0x00C6 # LATIN CAPITAL LETTER AE
|
||||||
|
0xDF 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||||
|
0xE0 0x2013 # EN DASH
|
||||||
|
0xE1 0x00B7 # MIDDLE DOT
|
||||||
|
0xE2 0x201A # SINGLE LOW-9 QUOTATION MARK
|
||||||
|
0xE3 0x201E # DOUBLE LOW-9 QUOTATION MARK
|
||||||
|
0xE4 0x2030 # PER MILLE SIGN
|
||||||
|
0xE5 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||||
|
0xE6 0x0107 # LATIN SMALL LETTER C WITH ACUTE
|
||||||
|
0xE7 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
|
||||||
|
0xE8 0x010D # LATIN SMALL LETTER C WITH CARON
|
||||||
|
0xE9 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
|
||||||
|
0xEA 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
|
||||||
|
0xEB 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||||
|
0xEC 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||||
|
0xED 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
|
||||||
|
0xEE 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
|
||||||
|
0xEF 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||||
|
0xF0 0x0111 # LATIN SMALL LETTER D WITH STROKE
|
||||||
|
0xF1 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
|
||||||
|
0xF2 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
|
||||||
|
0xF3 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||||
|
0xF4 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
|
||||||
|
0xF5 0x0131 # LATIN SMALL LETTER DOTLESS I
|
||||||
|
0xF6 0x02C6 # MODIFIER LETTER CIRCUMFLEX ACCENT
|
||||||
|
0xF7 0x02DC # SMALL TILDE
|
||||||
|
0xF8 0x00AF # MACRON
|
||||||
|
0xF9 0x03C0 # GREEK SMALL LETTER PI
|
||||||
|
0xFA 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||||
|
0xFB 0x02DA # RING ABOVE
|
||||||
|
0xFC 0x00B8 # CEDILLA
|
||||||
|
0xFD 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||||
|
0xFE 0x00E6 # LATIN SMALL LETTER AE
|
||||||
|
0xFF 0x02C7 # CARON
|
||||||
352
data/apple/CYRILLIC.TXT
Normal file
352
data/apple/CYRILLIC.TXT
Normal file
@@ -0,0 +1,352 @@
|
|||||||
|
#=======================================================================
|
||||||
|
# File name: CYRILLIC.TXT
|
||||||
|
#
|
||||||
|
# Contents: Map (external version) from Mac OS Cyrillic
|
||||||
|
# character set to Unicode 2.1 and later.
|
||||||
|
#
|
||||||
|
# Copyright: (c) 1995-2002, 2005 by Apple Computer, Inc., all rights
|
||||||
|
# reserved.
|
||||||
|
#
|
||||||
|
# Contact: charsets@apple.com
|
||||||
|
#
|
||||||
|
# Changes:
|
||||||
|
#
|
||||||
|
# c03 2005-Apr-05 Update header comments. Matches internal xml
|
||||||
|
# <c1.1> and Text Encoding Converter 2.0.
|
||||||
|
# b3,c1 2002-Dec-19 Update URLs, notes. Matches internal
|
||||||
|
# utom<b2>.
|
||||||
|
# b02 1999-Sep-22 Encoding changed for Mac OS 9.0 to merge
|
||||||
|
# with Mac OS Ukrainian and support EURO SIGN;
|
||||||
|
# Change mappings for 0xA2, 0xB6, and 0xFF.
|
||||||
|
# Update contact e-mail address. Matches
|
||||||
|
# internal utom<b2>, ufrm<b2>, and Text
|
||||||
|
# Encoding Converter version 1.5.
|
||||||
|
# n05 1998-Feb-05 Update header comments to new format; no
|
||||||
|
# mapping changes. Matches internal utom<n3>,
|
||||||
|
# ufrm<n13>, and Text Encoding Converter
|
||||||
|
# version 1.3.
|
||||||
|
# n03 1995-Apr-15 First version (after fixing some typos).
|
||||||
|
# Matches internal ufrm<n5>.
|
||||||
|
#
|
||||||
|
# Standard header:
|
||||||
|
# ----------------
|
||||||
|
#
|
||||||
|
# Apple, the Apple logo, and Macintosh are trademarks of Apple
|
||||||
|
# Computer, Inc., registered in the United States and other countries.
|
||||||
|
# Unicode is a trademark of Unicode Inc. For the sake of brevity,
|
||||||
|
# throughout this document, "Macintosh" can be used to refer to
|
||||||
|
# Macintosh computers and "Unicode" can be used to refer to the
|
||||||
|
# Unicode standard.
|
||||||
|
#
|
||||||
|
# Apple Computer, Inc. ("Apple") makes no warranty or representation,
|
||||||
|
# either express or implied, with respect to this document and the
|
||||||
|
# included data, its quality, accuracy, or fitness for a particular
|
||||||
|
# purpose. In no event will Apple be liable for direct, indirect,
|
||||||
|
# special, incidental, or consequential damages resulting from any
|
||||||
|
# defect or inaccuracy in this document or the included data.
|
||||||
|
#
|
||||||
|
# These mapping tables and character lists are subject to change.
|
||||||
|
# The latest tables should be available from the following:
|
||||||
|
#
|
||||||
|
# <http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/>
|
||||||
|
#
|
||||||
|
# For general information about Mac OS encodings and these mapping
|
||||||
|
# tables, see the file "README.TXT".
|
||||||
|
#
|
||||||
|
# Format:
|
||||||
|
# -------
|
||||||
|
#
|
||||||
|
# Three tab-separated columns;
|
||||||
|
# '#' begins a comment which continues to the end of the line.
|
||||||
|
# Column #1 is the Mac OS Cyrillic code (in hex as 0xNN)
|
||||||
|
# Column #2 is the corresponding Unicode (in hex as 0xNNNN)
|
||||||
|
# Column #3 is a comment containing the Unicode name
|
||||||
|
#
|
||||||
|
# The entries are in Mac OS Cyrillic code order.
|
||||||
|
#
|
||||||
|
# Control character mappings are not shown in this table, following
|
||||||
|
# the conventions of the standard UTC mapping tables. However, the
|
||||||
|
# Mac OS Cyrillic character set uses the standard control characters
|
||||||
|
# at 0x00-0x1F and 0x7F.
|
||||||
|
#
|
||||||
|
# Notes on Mac OS Cyrillic:
|
||||||
|
# -------------------------
|
||||||
|
#
|
||||||
|
# This is a legacy Mac OS encoding; in the Mac OS X Carbon and Cocoa
|
||||||
|
# environments, it is only supported directly in programming
|
||||||
|
# interfaces for QuickDraw Text, the Script Manager, and related
|
||||||
|
# Text Utilities. For other purposes it is supported via transcoding
|
||||||
|
# to and from Unicode.
|
||||||
|
#
|
||||||
|
# This is the "Euro sign" version of Mac Cyrillic for Mac OS 9.0 and
|
||||||
|
# later. Before Mac OS 9.0, there were two separate Slavic Cyrillic
|
||||||
|
# encodings:
|
||||||
|
#
|
||||||
|
# 1. The Cyrillic currency sign variant (used for localized Russian
|
||||||
|
# and Bulgarian systems), which had the following:
|
||||||
|
# 0xA2 U+00A2 CENT SIGN
|
||||||
|
# 0xB6 U+2202 PARTIAL DIFFERENTIAL
|
||||||
|
# 0xFF U+00A4 CURRENCY SIGN
|
||||||
|
#
|
||||||
|
# 2. The Ukrainian currency sign variant (used for localized Ukrainian
|
||||||
|
# systems and the pre-9.0 Cyrillic Language Kit), which had the
|
||||||
|
# following:
|
||||||
|
# 0xA2 U+0490 CYRILLIC CAPITAL LETTER GHE WITH UPTURN
|
||||||
|
# 0xB6 U+0491 CYRILLIC SMALL LETTER GHE WITH UPTURN
|
||||||
|
# 0xFF U+00A4 CURRENCY SIGN
|
||||||
|
#
|
||||||
|
# This new Cyrillic Euro sign version is based on the old Ukrainian
|
||||||
|
# currency sign variant, with 0xFF changed to be EURO SIGN.
|
||||||
|
#
|
||||||
|
# The Mac OS Cyrillic encoding includes the Cyrillic letter repertoire
|
||||||
|
# of ISO 8859-5 (although not at the same code points). This covers
|
||||||
|
# most of the Slavic languages written in Cyrillic script.
|
||||||
|
#
|
||||||
|
# The Mac OS Cyrillic encoding also includes a number of characters
|
||||||
|
# needed for the Mac OS user interface and localization (e.g.
|
||||||
|
# ellipsis, bullet, copyright sign). All of the characters in Mac OS
|
||||||
|
# Cyrillic that are also in the Mac OS Roman encoding are at the
|
||||||
|
# same code point in both; this improves application compatibility.
|
||||||
|
#
|
||||||
|
# Note: There is a common Ukrainian glyph variation in which the glyph
|
||||||
|
# for CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I may or may not
|
||||||
|
# have a dot above.
|
||||||
|
#
|
||||||
|
# Unicode mapping issues and notes:
|
||||||
|
# ---------------------------------
|
||||||
|
#
|
||||||
|
# Details of mapping changes in each version:
|
||||||
|
# -------------------------------------------
|
||||||
|
#
|
||||||
|
# Changes from version n05 to version b02:
|
||||||
|
#
|
||||||
|
# - Encoding changed for Mac OS 9.0 to merge with Mac OS Ukrainian and
|
||||||
|
# support EURO SIGN. 0xA2 changed from U+00A2 to U+0490; 0xB6 changed
|
||||||
|
# from U+2202 to U+0491; 0xFF changed from U+00A4 to U+20AC.
|
||||||
|
#
|
||||||
|
##################
|
||||||
|
|
||||||
|
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
|
||||||
|
#
|
||||||
|
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 0x2020 # DAGGER
|
||||||
|
0xA1 0x00B0 # DEGREE SIGN
|
||||||
|
0xA2 0x0490 # CYRILLIC CAPITAL LETTER GHE WITH UPTURN
|
||||||
|
0xA3 0x00A3 # POUND SIGN
|
||||||
|
0xA4 0x00A7 # SECTION SIGN
|
||||||
|
0xA5 0x2022 # BULLET
|
||||||
|
0xA6 0x00B6 # PILCROW SIGN
|
||||||
|
0xA7 0x0406 # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||||
|
0xA8 0x00AE # REGISTERED SIGN
|
||||||
|
0xA9 0x00A9 # COPYRIGHT SIGN
|
||||||
|
0xAA 0x2122 # TRADE MARK SIGN
|
||||||
|
0xAB 0x0402 # CYRILLIC CAPITAL LETTER DJE
|
||||||
|
0xAC 0x0452 # CYRILLIC SMALL LETTER DJE
|
||||||
|
0xAD 0x2260 # NOT EQUAL TO
|
||||||
|
0xAE 0x0403 # CYRILLIC CAPITAL LETTER GJE
|
||||||
|
0xAF 0x0453 # CYRILLIC SMALL LETTER GJE
|
||||||
|
0xB0 0x221E # INFINITY
|
||||||
|
0xB1 0x00B1 # PLUS-MINUS SIGN
|
||||||
|
0xB2 0x2264 # LESS-THAN OR EQUAL TO
|
||||||
|
0xB3 0x2265 # GREATER-THAN OR EQUAL TO
|
||||||
|
0xB4 0x0456 # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
|
||||||
|
0xB5 0x00B5 # MICRO SIGN
|
||||||
|
0xB6 0x0491 # CYRILLIC SMALL LETTER GHE WITH UPTURN
|
||||||
|
0xB7 0x0408 # CYRILLIC CAPITAL LETTER JE
|
||||||
|
0xB8 0x0404 # CYRILLIC CAPITAL LETTER UKRAINIAN IE
|
||||||
|
0xB9 0x0454 # CYRILLIC SMALL LETTER UKRAINIAN IE
|
||||||
|
0xBA 0x0407 # CYRILLIC CAPITAL LETTER YI
|
||||||
|
0xBB 0x0457 # CYRILLIC SMALL LETTER YI
|
||||||
|
0xBC 0x0409 # CYRILLIC CAPITAL LETTER LJE
|
||||||
|
0xBD 0x0459 # CYRILLIC SMALL LETTER LJE
|
||||||
|
0xBE 0x040A # CYRILLIC CAPITAL LETTER NJE
|
||||||
|
0xBF 0x045A # CYRILLIC SMALL LETTER NJE
|
||||||
|
0xC0 0x0458 # CYRILLIC SMALL LETTER JE
|
||||||
|
0xC1 0x0405 # CYRILLIC CAPITAL LETTER DZE
|
||||||
|
0xC2 0x00AC # NOT SIGN
|
||||||
|
0xC3 0x221A # SQUARE ROOT
|
||||||
|
0xC4 0x0192 # LATIN SMALL LETTER F WITH HOOK
|
||||||
|
0xC5 0x2248 # ALMOST EQUAL TO
|
||||||
|
0xC6 0x2206 # INCREMENT
|
||||||
|
0xC7 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||||
|
0xC8 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||||
|
0xC9 0x2026 # HORIZONTAL ELLIPSIS
|
||||||
|
0xCA 0x00A0 # NO-BREAK SPACE
|
||||||
|
0xCB 0x040B # CYRILLIC CAPITAL LETTER TSHE
|
||||||
|
0xCC 0x045B # CYRILLIC SMALL LETTER TSHE
|
||||||
|
0xCD 0x040C # CYRILLIC CAPITAL LETTER KJE
|
||||||
|
0xCE 0x045C # CYRILLIC SMALL LETTER KJE
|
||||||
|
0xCF 0x0455 # CYRILLIC SMALL LETTER DZE
|
||||||
|
0xD0 0x2013 # EN DASH
|
||||||
|
0xD1 0x2014 # EM DASH
|
||||||
|
0xD2 0x201C # LEFT DOUBLE QUOTATION MARK
|
||||||
|
0xD3 0x201D # RIGHT DOUBLE QUOTATION MARK
|
||||||
|
0xD4 0x2018 # LEFT SINGLE QUOTATION MARK
|
||||||
|
0xD5 0x2019 # RIGHT SINGLE QUOTATION MARK
|
||||||
|
0xD6 0x00F7 # DIVISION SIGN
|
||||||
|
0xD7 0x201E # DOUBLE LOW-9 QUOTATION MARK
|
||||||
|
0xD8 0x040E # CYRILLIC CAPITAL LETTER SHORT U
|
||||||
|
0xD9 0x045E # CYRILLIC SMALL LETTER SHORT U
|
||||||
|
0xDA 0x040F # CYRILLIC CAPITAL LETTER DZHE
|
||||||
|
0xDB 0x045F # CYRILLIC SMALL LETTER DZHE
|
||||||
|
0xDC 0x2116 # NUMERO SIGN
|
||||||
|
0xDD 0x0401 # CYRILLIC CAPITAL LETTER IO
|
||||||
|
0xDE 0x0451 # CYRILLIC SMALL LETTER IO
|
||||||
|
0xDF 0x044F # CYRILLIC SMALL LETTER YA
|
||||||
|
0xE0 0x0430 # CYRILLIC SMALL LETTER A
|
||||||
|
0xE1 0x0431 # CYRILLIC SMALL LETTER BE
|
||||||
|
0xE2 0x0432 # CYRILLIC SMALL LETTER VE
|
||||||
|
0xE3 0x0433 # CYRILLIC SMALL LETTER GHE
|
||||||
|
0xE4 0x0434 # CYRILLIC SMALL LETTER DE
|
||||||
|
0xE5 0x0435 # CYRILLIC SMALL LETTER IE
|
||||||
|
0xE6 0x0436 # CYRILLIC SMALL LETTER ZHE
|
||||||
|
0xE7 0x0437 # CYRILLIC SMALL LETTER ZE
|
||||||
|
0xE8 0x0438 # CYRILLIC SMALL LETTER I
|
||||||
|
0xE9 0x0439 # CYRILLIC SMALL LETTER SHORT I
|
||||||
|
0xEA 0x043A # CYRILLIC SMALL LETTER KA
|
||||||
|
0xEB 0x043B # CYRILLIC SMALL LETTER EL
|
||||||
|
0xEC 0x043C # CYRILLIC SMALL LETTER EM
|
||||||
|
0xED 0x043D # CYRILLIC SMALL LETTER EN
|
||||||
|
0xEE 0x043E # CYRILLIC SMALL LETTER O
|
||||||
|
0xEF 0x043F # CYRILLIC SMALL LETTER PE
|
||||||
|
0xF0 0x0440 # CYRILLIC SMALL LETTER ER
|
||||||
|
0xF1 0x0441 # CYRILLIC SMALL LETTER ES
|
||||||
|
0xF2 0x0442 # CYRILLIC SMALL LETTER TE
|
||||||
|
0xF3 0x0443 # CYRILLIC SMALL LETTER U
|
||||||
|
0xF4 0x0444 # CYRILLIC SMALL LETTER EF
|
||||||
|
0xF5 0x0445 # CYRILLIC SMALL LETTER HA
|
||||||
|
0xF6 0x0446 # CYRILLIC SMALL LETTER TSE
|
||||||
|
0xF7 0x0447 # CYRILLIC SMALL LETTER CHE
|
||||||
|
0xF8 0x0448 # CYRILLIC SMALL LETTER SHA
|
||||||
|
0xF9 0x0449 # CYRILLIC SMALL LETTER SHCHA
|
||||||
|
0xFA 0x044A # CYRILLIC SMALL LETTER HARD SIGN
|
||||||
|
0xFB 0x044B # CYRILLIC SMALL LETTER YERU
|
||||||
|
0xFC 0x044C # CYRILLIC SMALL LETTER SOFT SIGN
|
||||||
|
0xFD 0x044D # CYRILLIC SMALL LETTER E
|
||||||
|
0xFE 0x044E # CYRILLIC SMALL LETTER YU
|
||||||
|
0xFF 0x20AC # EURO SIGN
|
||||||
337
data/apple/GAELIC.TXT
Normal file
337
data/apple/GAELIC.TXT
Normal file
@@ -0,0 +1,337 @@
|
|||||||
|
#=======================================================================
|
||||||
|
# File name: GAELIC.TXT
|
||||||
|
#
|
||||||
|
# Contents: Map (external version) from Mac OS Celtic
|
||||||
|
# character set to Unicode 3.0 and later
|
||||||
|
#
|
||||||
|
# Contacts: charsets@apple.com, everson@evertype.com
|
||||||
|
#
|
||||||
|
# Changes:
|
||||||
|
#
|
||||||
|
# c01 2005-Apr-01 First posted version. Matches internal xml
|
||||||
|
# <c1.1> and Text Encoding Converter 2.0.
|
||||||
|
#
|
||||||
|
# Standard header:
|
||||||
|
# ----------------
|
||||||
|
#
|
||||||
|
# Apple, the Apple logo, and Macintosh are trademarks of Apple
|
||||||
|
# Computer, Inc., registered in the United States and other countries.
|
||||||
|
# Unicode is a trademark of Unicode Inc. For the sake of brevity,
|
||||||
|
# throughout this document, "Macintosh" can be used to refer to
|
||||||
|
# Macintosh computers and "Unicode" can be used to refer to the
|
||||||
|
# Unicode standard.
|
||||||
|
#
|
||||||
|
# Apple Computer, Inc. ("Apple") makes no warranty or representation,
|
||||||
|
# either express or implied, with respect to this document and the
|
||||||
|
# included data, its quality, accuracy, or fitness for a particular
|
||||||
|
# purpose. In no event will Apple be liable for direct, indirect,
|
||||||
|
# special, incidental, or consequential damages resulting from any
|
||||||
|
# defect or inaccuracy in this document or the included data.
|
||||||
|
#
|
||||||
|
# These mapping tables and character lists are subject to change.
|
||||||
|
# The latest tables should be available from the following:
|
||||||
|
#
|
||||||
|
# <http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/>
|
||||||
|
#
|
||||||
|
# For general information about Mac OS encodings and these mapping
|
||||||
|
# tables, see the file "README.TXT".
|
||||||
|
#
|
||||||
|
# Format:
|
||||||
|
# -------
|
||||||
|
#
|
||||||
|
# Three tab-separated columns;
|
||||||
|
# '#' begins a comment which continues to the end of the line.
|
||||||
|
# Column #1 is the Mac OS Gaelic code (in hex as 0xNN)
|
||||||
|
# Column #2 is the corresponding Unicode (in hex as 0xNNNN)
|
||||||
|
# Column #3 is a comment containing the Unicode name
|
||||||
|
#
|
||||||
|
# The entries are in Mac OS Gaelic code order.
|
||||||
|
#
|
||||||
|
# Control character mappings are not shown in this table, following
|
||||||
|
# the conventions of the standard UTC mapping tables. However, the
|
||||||
|
# Mac OS Gaelic character set uses the standard control characters
|
||||||
|
# at 0x00-0x1F and 0x7F.
|
||||||
|
#
|
||||||
|
# Notes on Mac OS Gaelic (partly from Michael Everson):
|
||||||
|
# -----------------------------------------------------
|
||||||
|
#
|
||||||
|
# This is a legacy Mac OS encoding; in the Mac OS X Carbon and Cocoa
|
||||||
|
# environments, it is only supported via transcoding to and from
|
||||||
|
# Unicode.
|
||||||
|
#
|
||||||
|
# This character set was developed by Michael Everson of Everson
|
||||||
|
# Typography (everson@evertype.com) and was used for fonts in his
|
||||||
|
# Celtic Utilities and CeltScript font packages for the Mac, as well
|
||||||
|
# as some fonts included with the Irish localizations of Mac OS 6.0.8
|
||||||
|
# and 7.1. Note that while Apple authorized this Irish localization,
|
||||||
|
# it was not a system which shipped with Apple hardware, and was not
|
||||||
|
# otherwise supported by Apple. Fonts conforming to the Mac OS Gaelic
|
||||||
|
# character set are available from Everson Typography
|
||||||
|
# (http://www.evertype.com/celtscript/). Information about the use of
|
||||||
|
# this character set is available at
|
||||||
|
# http://www.evertype.com/celtscript/celtcode.html.
|
||||||
|
#
|
||||||
|
# The Mac OS Gaelic encoding shares the script code smRoman (0) with
|
||||||
|
# the standard Mac OS Roman encoding. To determine if the Gaelic
|
||||||
|
# encoding is being used in Mac OS 7-9, you should also check if the
|
||||||
|
# system region code is 81. Otherwise, you can check for particular
|
||||||
|
# fonts that conform to this encoding (since in practice Gaelic fonts
|
||||||
|
# are used with the ordinary US or UK system versions).
|
||||||
|
#
|
||||||
|
# This character set is a variant of standard Mac OS Roman, adding
|
||||||
|
# capital and small y with acute, grave, and circumflex; capital and
|
||||||
|
# small w with acute, grave, circumflex and diaeresis; capital and
|
||||||
|
# small b, c, d, f, g, m, p, s, t with dot above; tironian et; small
|
||||||
|
# long r, small long s, and small long s with dot above. It has 36
|
||||||
|
# code point differences from standard Mac OS Roman.
|
||||||
|
#
|
||||||
|
# Before Mac OS 8.5, code point 0xDB was CURRENCY SIGN, and was
|
||||||
|
# mapped to U+00A4. In Mac OS 8.5 and later versions, code point
|
||||||
|
# 0xDB is changed to EURO SIGN and maps to U+20AC; the standard
|
||||||
|
# Apple fonts are updated for Mac OS 8.5 to reflect this. There is
|
||||||
|
# a "currency sign" variant of the Latin 8 Extended encoding that still
|
||||||
|
# maps 0xDB to U+00A4; this can be used for older fonts.
|
||||||
|
# Note: U+20AC is new with Unicode 2.1; for earlier Unicode
|
||||||
|
# versions, Latin 8 Extended 0xDB may be mapped to private-use
|
||||||
|
# character U+F8A0.
|
||||||
|
#
|
||||||
|
# Before Unicode 3.0, code point 0xE4 was PER MILLE SIGN, and was
|
||||||
|
# mapped to U+2030. Since August 1998, code point 0xE4 is changed
|
||||||
|
# to TIRONIAN SIGN ET and maps to U+204A. There is a "per mille
|
||||||
|
# sign" variant of the Mac OS Gaelic encoding that still
|
||||||
|
# maps 0xE4 to U+2030; this can be used for older fonts.
|
||||||
|
# Note: U+204A is new with Unicode 3.0; for earlier Unicode
|
||||||
|
# versions, Mac OS Gaelic was unified with AMPERSAND.
|
||||||
|
#
|
||||||
|
# Unicode mapping issues and notes:
|
||||||
|
# ---------------------------------
|
||||||
|
#
|
||||||
|
# Details of mapping changes in each version:
|
||||||
|
# -------------------------------------------
|
||||||
|
#
|
||||||
|
##################
|
||||||
|
|
||||||
|
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
|
||||||
|
#
|
||||||
|
0x80 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||||
|
0x81 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||||
|
0x82 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||||
|
0x83 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
|
||||||
|
0x84 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
|
||||||
|
0x85 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||||
|
0x86 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||||
|
0x87 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
|
||||||
|
0x88 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
|
||||||
|
0x89 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||||
|
0x8A 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
|
||||||
|
0x8B 0x00E3 # LATIN SMALL LETTER A WITH TILDE
|
||||||
|
0x8C 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
|
||||||
|
0x8D 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
|
||||||
|
0x8E 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
|
||||||
|
0x8F 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
|
||||||
|
0x90 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||||
|
0x91 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
|
||||||
|
0x92 0x00ED # LATIN SMALL LETTER I WITH ACUTE
|
||||||
|
0x93 0x00EC # LATIN SMALL LETTER I WITH GRAVE
|
||||||
|
0x94 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||||
|
0x95 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
|
||||||
|
0x96 0x00F1 # LATIN SMALL LETTER N WITH TILDE
|
||||||
|
0x97 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
|
||||||
|
0x98 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
|
||||||
|
0x99 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||||
|
0x9A 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
|
||||||
|
0x9B 0x00F5 # LATIN SMALL LETTER O WITH TILDE
|
||||||
|
0x9C 0x00FA # LATIN SMALL LETTER U WITH ACUTE
|
||||||
|
0x9D 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
|
||||||
|
0x9E 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||||
|
0x9F 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
|
||||||
|
0xA0 0x2020 # DAGGER
|
||||||
|
0xA1 0x00B0 # DEGREE SIGN
|
||||||
|
0xA2 0x00A2 # CENT SIGN
|
||||||
|
0xA3 0x00A3 # POUND SIGN
|
||||||
|
0xA4 0x00A7 # SECTION SIGN
|
||||||
|
0xA5 0x2022 # BULLET
|
||||||
|
0xA6 0x00B6 # PILCROW SIGN
|
||||||
|
0xA7 0x00DF # LATIN SMALL LETTER SHARP S
|
||||||
|
0xA8 0x00AE # REGISTERED SIGN
|
||||||
|
0xA9 0x00A9 # COPYRIGHT SIGN
|
||||||
|
0xAA 0x2122 # TRADE MARK SIGN
|
||||||
|
0xAB 0x00B4 # ACUTE ACCENT
|
||||||
|
0xAC 0x00A8 # DIAERESIS
|
||||||
|
0xAD 0x2260 # NOT EQUAL TO
|
||||||
|
0xAE 0x00C6 # LATIN CAPITAL LETTER AE
|
||||||
|
0xAF 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
|
||||||
|
0xB0 0x1E02 # LATIN CAPITAL LETTER B WITH DOT ABOVE
|
||||||
|
0xB1 0x00B1 # PLUS-MINUS SIGN
|
||||||
|
0xB2 0x2264 # LESS-THAN OR EQUAL TO
|
||||||
|
0xB3 0x2265 # GREATER-THAN OR EQUAL TO
|
||||||
|
0xB4 0x1E03 # LATIN SMALL LETTER B WITH DOT ABOVE
|
||||||
|
0xB5 0x010A # LATIN CAPITAL LETTER C WITH DOT ABOVE
|
||||||
|
0xB6 0x010B # LATIN SMALL LETTER C WITH DOT ABOVE
|
||||||
|
0xB7 0x1E0A # LATIN CAPITAL LETTER D WITH DOT ABOVE
|
||||||
|
0xB8 0x1E0B # LATIN SMALL LETTER D WITH DOT ABOVE
|
||||||
|
0xB9 0x1E1E # LATIN CAPITAL LETTER F WITH DOT ABOVE
|
||||||
|
0xBA 0x1E1F # LATIN SMALL LETTER F WITH DOT ABOVE
|
||||||
|
0xBB 0x0120 # LATIN CAPITAL LETTER G WITH DOT ABOVE
|
||||||
|
0xBC 0x0121 # LATIN SMALL LETTER G WITH DOT ABOVE
|
||||||
|
0xBD 0x1E40 # LATIN CAPITAL LETTER M WITH DOT ABOVE
|
||||||
|
0xBE 0x00E6 # LATIN SMALL LETTER AE
|
||||||
|
0xBF 0x00F8 # LATIN SMALL LETTER O WITH STROKE
|
||||||
|
0xC0 0x1E41 # LATIN SMALL LETTER M WITH DOT ABOVE
|
||||||
|
0xC1 0x1E56 # LATIN CAPITAL LETTER P WITH DOT ABOVE
|
||||||
|
0xC2 0x1E57 # LATIN SMALL LETTER P WITH DOT ABOVE
|
||||||
|
0xC3 0x027C # LATIN SMALL LETTER R WITH LONG LEG
|
||||||
|
0xC4 0x0192 # LATIN SMALL LETTER F WITH HOOK
|
||||||
|
0xC5 0x017F # LATIN SMALL LETTER LONG S
|
||||||
|
0xC6 0x1E60 # LATIN CAPITAL LETTER S WITH DOT ABOVE
|
||||||
|
0xC7 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||||
|
0xC8 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||||
|
0xC9 0x2026 # HORIZONTAL ELLIPSIS
|
||||||
|
0xCA 0x00A0 # NO-BREAK SPACE
|
||||||
|
0xCB 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
|
||||||
|
0xCC 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
|
||||||
|
0xCD 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
|
||||||
|
0xCE 0x0152 # LATIN CAPITAL LIGATURE OE
|
||||||
|
0xCF 0x0153 # LATIN SMALL LIGATURE OE
|
||||||
|
0xD0 0x2013 # EN DASH
|
||||||
|
0xD1 0x2014 # EM DASH
|
||||||
|
0xD2 0x201C # LEFT DOUBLE QUOTATION MARK
|
||||||
|
0xD3 0x201D # RIGHT DOUBLE QUOTATION MARK
|
||||||
|
0xD4 0x2018 # LEFT SINGLE QUOTATION MARK
|
||||||
|
0xD5 0x2019 # RIGHT SINGLE QUOTATION MARK
|
||||||
|
0xD6 0x1E61 # LATIN SMALL LETTER S WITH DOT ABOVE
|
||||||
|
0xD7 0x1E9B # LATIN SMALL LETTER LONG S WITH DOT ABOVE
|
||||||
|
0xD8 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
|
||||||
|
0xD9 0x0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
|
||||||
|
0xDA 0x1E6A # LATIN CAPITAL LETTER T WITH DOT ABOVE
|
||||||
|
0xDB 0x20AC # EURO SIGN # before Mac OS 8.5 this was U+00A4 CURRENCY SIGN
|
||||||
|
0xDC 0x2039 # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||||
|
0xDD 0x203A # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||||
|
0xDE 0x0176 # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
|
||||||
|
0xDF 0x0177 # LATIN SMALL LETTER Y WITH CIRCUMFLEX
|
||||||
|
0xE0 0x1E6B # LATIN SMALL LETTER T WITH DOT ABOVE
|
||||||
|
0xE1 0x00B7 # MIDDLE DOT
|
||||||
|
0xE2 0x1EF2 # LATIN CAPITAL LETTER Y WITH GRAVE
|
||||||
|
0xE3 0x1EF3 # LATIN SMALL LETTER Y WITH GRAVE
|
||||||
|
0xE4 0x204A # TIRONIAN SIGN ET # change from MacCeltic for Unicode 3.0; before Aug. 1998 this was U+2030 PER MILLE SIGN
|
||||||
|
0xE5 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||||
|
0xE6 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||||
|
0xE7 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
|
||||||
|
0xE8 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||||
|
0xE9 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
|
||||||
|
0xEA 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
|
||||||
|
0xEB 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||||
|
0xEC 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||||
|
0xED 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
|
||||||
|
0xEE 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
|
||||||
|
0xEF 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||||
|
0xF0 0x2663 # BLACK CLUB SUIT = shamrock # future mapping U+2618 SHAMROCK
|
||||||
|
0xF1 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
|
||||||
|
0xF2 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
|
||||||
|
0xF3 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||||
|
0xF4 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
|
||||||
|
0xF5 0x0131 # LATIN SMALL LETTER DOTLESS I
|
||||||
|
0xF6 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
|
||||||
|
0xF7 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
|
||||||
|
0xF8 0x0174 # LATIN CAPITAL LETTER W WITH CIRCUMFLEX
|
||||||
|
0xF9 0x0175 # LATIN SMALL LETTER W WITH CIRCUMFLEX
|
||||||
|
0xFA 0x1E84 # LATIN CAPITAL LETTER W WITH DIAERESIS
|
||||||
|
0xFB 0x1E85 # LATIN SMALL LETTER W WITH DIAERESIS
|
||||||
|
0xFC 0x1E80 # LATIN CAPITAL LETTER W WITH GRAVE
|
||||||
|
0xFD 0x1E81 # LATIN SMALL LETTER W WITH GRAVE
|
||||||
|
0xFE 0x1E82 # LATIN CAPITAL LETTER W WITH ACUTE
|
||||||
|
0xFF 0x1E83 # LATIN SMALL LETTER W WITH ACUTE
|
||||||
355
data/apple/GREEK.TXT
Normal file
355
data/apple/GREEK.TXT
Normal file
@@ -0,0 +1,355 @@
|
|||||||
|
#=======================================================================
|
||||||
|
# File name: GREEK.TXT
|
||||||
|
#
|
||||||
|
# Contents: Map (external version) from Mac OS Greek
|
||||||
|
# character set to Unicode 2.1 and later.
|
||||||
|
#
|
||||||
|
# Copyright: (c) 1995-2002, 2005 by Apple Computer, Inc., all rights
|
||||||
|
# reserved.
|
||||||
|
#
|
||||||
|
# Contact: charsets@apple.com
|
||||||
|
#
|
||||||
|
# Changes:
|
||||||
|
#
|
||||||
|
# c02 2005-Apr-05 Update header comments. Matches internal xml
|
||||||
|
# <c1.1> and Text Encoding Converter 2.0.
|
||||||
|
# b3,c1 2002-Dec-19 Update to match changes in Mac OS Greek
|
||||||
|
# encoding for Mac OS 9.2.2 and later.
|
||||||
|
# Update URLs, notes. Matches internal
|
||||||
|
# utom<b3>.
|
||||||
|
# b02 1999-Sep-22 Update contact e-mail address. Matches
|
||||||
|
# internal utom<b1>, ufrm<b1>, and Text
|
||||||
|
# Encoding Converter version 1.5.
|
||||||
|
# n06 1998-Feb-05 Update to match internal utom<n4>, ufrm<n17>,
|
||||||
|
# and Text Encoding Converter versions 1.3:
|
||||||
|
# Change mapping for 0xAF from U+0387 to its
|
||||||
|
# canonical decomposition, U+00B7. Also
|
||||||
|
# update header comments to new format.
|
||||||
|
# n04 1995-Apr-15 First version (after fixing some typos).
|
||||||
|
# Matches internal ufrm<n7>.
|
||||||
|
#
|
||||||
|
# Standard header:
|
||||||
|
# ----------------
|
||||||
|
#
|
||||||
|
# Apple, the Apple logo, and Macintosh are trademarks of Apple
|
||||||
|
# Computer, Inc., registered in the United States and other countries.
|
||||||
|
# Unicode is a trademark of Unicode Inc. For the sake of brevity,
|
||||||
|
# throughout this document, "Macintosh" can be used to refer to
|
||||||
|
# Macintosh computers and "Unicode" can be used to refer to the
|
||||||
|
# Unicode standard.
|
||||||
|
#
|
||||||
|
# Apple Computer, Inc. ("Apple") makes no warranty or representation,
|
||||||
|
# either express or implied, with respect to this document and the
|
||||||
|
# included data, its quality, accuracy, or fitness for a particular
|
||||||
|
# purpose. In no event will Apple be liable for direct, indirect,
|
||||||
|
# special, incidental, or consequential damages resulting from any
|
||||||
|
# defect or inaccuracy in this document or the included data.
|
||||||
|
#
|
||||||
|
# These mapping tables and character lists are subject to change.
|
||||||
|
# The latest tables should be available from the following:
|
||||||
|
#
|
||||||
|
# <http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/>
|
||||||
|
#
|
||||||
|
# For general information about Mac OS encodings and these mapping
|
||||||
|
# tables, see the file "README.TXT".
|
||||||
|
#
|
||||||
|
# Format:
|
||||||
|
# -------
|
||||||
|
#
|
||||||
|
# Three tab-separated columns;
|
||||||
|
# '#' begins a comment which continues to the end of the line.
|
||||||
|
# Column #1 is the Mac OS Greek code (in hex as 0xNN)
|
||||||
|
# Column #2 is the corresponding Unicode (in hex as 0xNNNN)
|
||||||
|
# Column #3 is a comment containing the Unicode name
|
||||||
|
#
|
||||||
|
# The entries are in Mac OS Greek code order.
|
||||||
|
#
|
||||||
|
# One of these mappings requires the use of a corporate character.
|
||||||
|
# See the file "CORPCHAR.TXT" and notes below.
|
||||||
|
#
|
||||||
|
# Control character mappings are not shown in this table, following
|
||||||
|
# the conventions of the standard UTC mapping tables. However, the
|
||||||
|
# Mac OS Greek character set uses the standard control characters at
|
||||||
|
# 0x00-0x1F and 0x7F.
|
||||||
|
#
|
||||||
|
# Notes on Mac OS Greek:
|
||||||
|
# ----------------------
|
||||||
|
#
|
||||||
|
# This is a legacy Mac OS encoding; in the Mac OS X Carbon and Cocoa
|
||||||
|
# environments, it is only supported via transcoding to and from
|
||||||
|
# Unicode.
|
||||||
|
#
|
||||||
|
# Although a Mac OS script code is defined for Greek (smGreek = 6),
|
||||||
|
# the Greek localized system does not currently use it (the font
|
||||||
|
# family IDs are in the Mac OS Roman range). To determine if the
|
||||||
|
# Greek encoding is being used when the script code is smRoman (0),
|
||||||
|
# you must check if the system region code is 20, verGreece.
|
||||||
|
#
|
||||||
|
# The Mac OS Greek encoding is a superset of the repertoire of
|
||||||
|
# ISO 8859-7 (although characters are not at the same code points),
|
||||||
|
# except that LEFT & RIGHT SINGLE QUOTATION MARK replace the
|
||||||
|
# MODIFIER LETTER REVERSED COMMA & APOSTROPHE (spacing versions of
|
||||||
|
# Greek rough & smooth breathing marks) that are in ISO 8859-7.
|
||||||
|
# The added characters in Mac OS Greek include more punctuation and
|
||||||
|
# symbols and several accented Latin letters.
|
||||||
|
#
|
||||||
|
# Before Mac OS 9.2.2, code point 0x9C was SOFT HYPHEN (U+00AD), and
|
||||||
|
# code point 0xFF was undefined. In Mac OS 9.2.2 and later versions,
|
||||||
|
# SOFT HYPHEN was moved to 0xFF, and code point 0x9C was changed to be
|
||||||
|
# EURO SIGN (U+20AC); the standard Apple fonts are updated for Mac OS
|
||||||
|
# 9.2.2 to reflect this. There is a "no Euro sign" variant of the Mac
|
||||||
|
# OS Greek encoding that uses the older mapping; this can be used for
|
||||||
|
# older fonts.
|
||||||
|
#
|
||||||
|
# This "no Euro sign" variant of Mac OS Greek was the character set
|
||||||
|
# used by Mac OS Greek systems before 9.2.2 except for system 6.0.7,
|
||||||
|
# which used a variant character set but was quickly replaced with
|
||||||
|
# Greek system 6.0.7.1 using the no Euro sign" character set
|
||||||
|
# documented here. Greek system 4.1 used a variant Greek set that had
|
||||||
|
# ISO 8859-7 in 0xA0-0xFF (with some holes filled in with DTP
|
||||||
|
# characters), and Mac OS Roman accented Roman letters in 0x80-0x9F.
|
||||||
|
#
|
||||||
|
# Unicode mapping issues and notes:
|
||||||
|
# ---------------------------------
|
||||||
|
#
|
||||||
|
# Details of mapping changes in each version:
|
||||||
|
# -------------------------------------------
|
||||||
|
#
|
||||||
|
# Changes from version b02 to version b03/c01:
|
||||||
|
#
|
||||||
|
# - The Mac OS Greek encoding changed for Mac OS 9.2.2 and later
|
||||||
|
# as follows:
|
||||||
|
# 0x9C, changed from 0x00AD SOFT HYPHEN to 0x20AC EURO SIGN
|
||||||
|
# 0xFF, changed from undefined to 0x00AD SOFT HYPHEN
|
||||||
|
#
|
||||||
|
# Changes from version n04 to version n06:
|
||||||
|
#
|
||||||
|
# - Change mapping of 0xAF from U+0387 to its canonical
|
||||||
|
# decomposition, U+00B7.
|
||||||
|
#
|
||||||
|
##################
|
||||||
|
|
||||||
|
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
|
||||||
|
#
|
||||||
|
0x80 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||||
|
0x81 0x00B9 # SUPERSCRIPT ONE
|
||||||
|
0x82 0x00B2 # SUPERSCRIPT TWO
|
||||||
|
0x83 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
|
||||||
|
0x84 0x00B3 # SUPERSCRIPT THREE
|
||||||
|
0x85 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||||
|
0x86 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||||
|
0x87 0x0385 # GREEK DIALYTIKA TONOS
|
||||||
|
0x88 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
|
||||||
|
0x89 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||||
|
0x8A 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
|
||||||
|
0x8B 0x0384 # GREEK TONOS
|
||||||
|
0x8C 0x00A8 # DIAERESIS
|
||||||
|
0x8D 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
|
||||||
|
0x8E 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
|
||||||
|
0x8F 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
|
||||||
|
0x90 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||||
|
0x91 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
|
||||||
|
0x92 0x00A3 # POUND SIGN
|
||||||
|
0x93 0x2122 # TRADE MARK SIGN
|
||||||
|
0x94 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||||
|
0x95 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
|
||||||
|
0x96 0x2022 # BULLET
|
||||||
|
0x97 0x00BD # VULGAR FRACTION ONE HALF
|
||||||
|
0x98 0x2030 # PER MILLE SIGN
|
||||||
|
0x99 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||||
|
0x9A 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
|
||||||
|
0x9B 0x00A6 # BROKEN BAR
|
||||||
|
0x9C 0x20AC # EURO SIGN # before Mac OS 9.2.2, was SOFT HYPHEN
|
||||||
|
0x9D 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
|
||||||
|
0x9E 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||||
|
0x9F 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
|
||||||
|
0xA0 0x2020 # DAGGER
|
||||||
|
0xA1 0x0393 # GREEK CAPITAL LETTER GAMMA
|
||||||
|
0xA2 0x0394 # GREEK CAPITAL LETTER DELTA
|
||||||
|
0xA3 0x0398 # GREEK CAPITAL LETTER THETA
|
||||||
|
0xA4 0x039B # GREEK CAPITAL LETTER LAMDA
|
||||||
|
0xA5 0x039E # GREEK CAPITAL LETTER XI
|
||||||
|
0xA6 0x03A0 # GREEK CAPITAL LETTER PI
|
||||||
|
0xA7 0x00DF # LATIN SMALL LETTER SHARP S
|
||||||
|
0xA8 0x00AE # REGISTERED SIGN
|
||||||
|
0xA9 0x00A9 # COPYRIGHT SIGN
|
||||||
|
0xAA 0x03A3 # GREEK CAPITAL LETTER SIGMA
|
||||||
|
0xAB 0x03AA # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
|
||||||
|
0xAC 0x00A7 # SECTION SIGN
|
||||||
|
0xAD 0x2260 # NOT EQUAL TO
|
||||||
|
0xAE 0x00B0 # DEGREE SIGN
|
||||||
|
0xAF 0x00B7 # MIDDLE DOT
|
||||||
|
0xB0 0x0391 # GREEK CAPITAL LETTER ALPHA
|
||||||
|
0xB1 0x00B1 # PLUS-MINUS SIGN
|
||||||
|
0xB2 0x2264 # LESS-THAN OR EQUAL TO
|
||||||
|
0xB3 0x2265 # GREATER-THAN OR EQUAL TO
|
||||||
|
0xB4 0x00A5 # YEN SIGN
|
||||||
|
0xB5 0x0392 # GREEK CAPITAL LETTER BETA
|
||||||
|
0xB6 0x0395 # GREEK CAPITAL LETTER EPSILON
|
||||||
|
0xB7 0x0396 # GREEK CAPITAL LETTER ZETA
|
||||||
|
0xB8 0x0397 # GREEK CAPITAL LETTER ETA
|
||||||
|
0xB9 0x0399 # GREEK CAPITAL LETTER IOTA
|
||||||
|
0xBA 0x039A # GREEK CAPITAL LETTER KAPPA
|
||||||
|
0xBB 0x039C # GREEK CAPITAL LETTER MU
|
||||||
|
0xBC 0x03A6 # GREEK CAPITAL LETTER PHI
|
||||||
|
0xBD 0x03AB # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
|
||||||
|
0xBE 0x03A8 # GREEK CAPITAL LETTER PSI
|
||||||
|
0xBF 0x03A9 # GREEK CAPITAL LETTER OMEGA
|
||||||
|
0xC0 0x03AC # GREEK SMALL LETTER ALPHA WITH TONOS
|
||||||
|
0xC1 0x039D # GREEK CAPITAL LETTER NU
|
||||||
|
0xC2 0x00AC # NOT SIGN
|
||||||
|
0xC3 0x039F # GREEK CAPITAL LETTER OMICRON
|
||||||
|
0xC4 0x03A1 # GREEK CAPITAL LETTER RHO
|
||||||
|
0xC5 0x2248 # ALMOST EQUAL TO
|
||||||
|
0xC6 0x03A4 # GREEK CAPITAL LETTER TAU
|
||||||
|
0xC7 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||||
|
0xC8 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||||
|
0xC9 0x2026 # HORIZONTAL ELLIPSIS
|
||||||
|
0xCA 0x00A0 # NO-BREAK SPACE
|
||||||
|
0xCB 0x03A5 # GREEK CAPITAL LETTER UPSILON
|
||||||
|
0xCC 0x03A7 # GREEK CAPITAL LETTER CHI
|
||||||
|
0xCD 0x0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS
|
||||||
|
0xCE 0x0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS
|
||||||
|
0xCF 0x0153 # LATIN SMALL LIGATURE OE
|
||||||
|
0xD0 0x2013 # EN DASH
|
||||||
|
0xD1 0x2015 # HORIZONTAL BAR
|
||||||
|
0xD2 0x201C # LEFT DOUBLE QUOTATION MARK
|
||||||
|
0xD3 0x201D # RIGHT DOUBLE QUOTATION MARK
|
||||||
|
0xD4 0x2018 # LEFT SINGLE QUOTATION MARK
|
||||||
|
0xD5 0x2019 # RIGHT SINGLE QUOTATION MARK
|
||||||
|
0xD6 0x00F7 # DIVISION SIGN
|
||||||
|
0xD7 0x0389 # GREEK CAPITAL LETTER ETA WITH TONOS
|
||||||
|
0xD8 0x038A # GREEK CAPITAL LETTER IOTA WITH TONOS
|
||||||
|
0xD9 0x038C # GREEK CAPITAL LETTER OMICRON WITH TONOS
|
||||||
|
0xDA 0x038E # GREEK CAPITAL LETTER UPSILON WITH TONOS
|
||||||
|
0xDB 0x03AD # GREEK SMALL LETTER EPSILON WITH TONOS
|
||||||
|
0xDC 0x03AE # GREEK SMALL LETTER ETA WITH TONOS
|
||||||
|
0xDD 0x03AF # GREEK SMALL LETTER IOTA WITH TONOS
|
||||||
|
0xDE 0x03CC # GREEK SMALL LETTER OMICRON WITH TONOS
|
||||||
|
0xDF 0x038F # GREEK CAPITAL LETTER OMEGA WITH TONOS
|
||||||
|
0xE0 0x03CD # GREEK SMALL LETTER UPSILON WITH TONOS
|
||||||
|
0xE1 0x03B1 # GREEK SMALL LETTER ALPHA
|
||||||
|
0xE2 0x03B2 # GREEK SMALL LETTER BETA
|
||||||
|
0xE3 0x03C8 # GREEK SMALL LETTER PSI
|
||||||
|
0xE4 0x03B4 # GREEK SMALL LETTER DELTA
|
||||||
|
0xE5 0x03B5 # GREEK SMALL LETTER EPSILON
|
||||||
|
0xE6 0x03C6 # GREEK SMALL LETTER PHI
|
||||||
|
0xE7 0x03B3 # GREEK SMALL LETTER GAMMA
|
||||||
|
0xE8 0x03B7 # GREEK SMALL LETTER ETA
|
||||||
|
0xE9 0x03B9 # GREEK SMALL LETTER IOTA
|
||||||
|
0xEA 0x03BE # GREEK SMALL LETTER XI
|
||||||
|
0xEB 0x03BA # GREEK SMALL LETTER KAPPA
|
||||||
|
0xEC 0x03BB # GREEK SMALL LETTER LAMDA
|
||||||
|
0xED 0x03BC # GREEK SMALL LETTER MU
|
||||||
|
0xEE 0x03BD # GREEK SMALL LETTER NU
|
||||||
|
0xEF 0x03BF # GREEK SMALL LETTER OMICRON
|
||||||
|
0xF0 0x03C0 # GREEK SMALL LETTER PI
|
||||||
|
0xF1 0x03CE # GREEK SMALL LETTER OMEGA WITH TONOS
|
||||||
|
0xF2 0x03C1 # GREEK SMALL LETTER RHO
|
||||||
|
0xF3 0x03C3 # GREEK SMALL LETTER SIGMA
|
||||||
|
0xF4 0x03C4 # GREEK SMALL LETTER TAU
|
||||||
|
0xF5 0x03B8 # GREEK SMALL LETTER THETA
|
||||||
|
0xF6 0x03C9 # GREEK SMALL LETTER OMEGA
|
||||||
|
0xF7 0x03C2 # GREEK SMALL LETTER FINAL SIGMA
|
||||||
|
0xF8 0x03C7 # GREEK SMALL LETTER CHI
|
||||||
|
0xF9 0x03C5 # GREEK SMALL LETTER UPSILON
|
||||||
|
0xFA 0x03B6 # GREEK SMALL LETTER ZETA
|
||||||
|
0xFB 0x03CA # GREEK SMALL LETTER IOTA WITH DIALYTIKA
|
||||||
|
0xFC 0x03CB # GREEK SMALL LETTER UPSILON WITH DIALYTIKA
|
||||||
|
0xFD 0x0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
|
||||||
|
0xFE 0x03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
|
||||||
|
0xFF 0x00AD # SOFT HYPHEN # before Mac OS 9.2.2, was undefined
|
||||||
369
data/apple/ICELAND.TXT
Normal file
369
data/apple/ICELAND.TXT
Normal file
@@ -0,0 +1,369 @@
|
|||||||
|
#=======================================================================
|
||||||
|
# File name: ICELAND.TXT
|
||||||
|
#
|
||||||
|
# Contents: Map (external version) from Mac OS Icelandic
|
||||||
|
# character set to Unicode 2.1 and later.
|
||||||
|
#
|
||||||
|
# Copyright: (c) 1995-2002, 2005 by Apple Computer, Inc., all rights
|
||||||
|
# reserved.
|
||||||
|
#
|
||||||
|
# Contact: charsets@apple.com
|
||||||
|
#
|
||||||
|
# Changes:
|
||||||
|
#
|
||||||
|
# c02 2005-Apr-05 Update header comments. Matches internal xml
|
||||||
|
# <c1.1> and Text Encoding Converter 2.0.
|
||||||
|
# b3,c1 2002-Dec-19 Update URLs, notes. Matches internal
|
||||||
|
# utom<b3>.
|
||||||
|
# b02 1999-Sep-22 Encoding changed for Mac OS 8.5; change
|
||||||
|
# mapping of 0xDB from CURRENCY SIGN to EURO
|
||||||
|
# SIGN. Update contact e-mail address. Matches
|
||||||
|
# internal utom<b2>, ufrm<b2>, and Text
|
||||||
|
# Encoding Converter version 1.5.
|
||||||
|
# n06 1998-Feb-05 Minor update to header comments, add
|
||||||
|
# information on font variants
|
||||||
|
# n03 1997-Dec-14 Update to match internal utom<n4>, ufrm<n16>:
|
||||||
|
# Change standard mapping for 0xBD from U+2126
|
||||||
|
# to its canonical decomposition, U+03A9.
|
||||||
|
# n02 1995-Apr-15 First version (after fixing some typos).
|
||||||
|
# Matches internal ufrm<n5>.
|
||||||
|
#
|
||||||
|
# Standard header:
|
||||||
|
# ----------------
|
||||||
|
#
|
||||||
|
# Apple, the Apple logo, and Macintosh are trademarks of Apple
|
||||||
|
# Computer, Inc., registered in the United States and other countries.
|
||||||
|
# Unicode is a trademark of Unicode Inc. For the sake of brevity,
|
||||||
|
# throughout this document, "Macintosh" can be used to refer to
|
||||||
|
# Macintosh computers and "Unicode" can be used to refer to the
|
||||||
|
# Unicode standard.
|
||||||
|
#
|
||||||
|
# Apple Computer, Inc. ("Apple") makes no warranty or representation,
|
||||||
|
# either express or implied, with respect to this document and the
|
||||||
|
# included data, its quality, accuracy, or fitness for a particular
|
||||||
|
# purpose. In no event will Apple be liable for direct, indirect,
|
||||||
|
# special, incidental, or consequential damages resulting from any
|
||||||
|
# defect or inaccuracy in this document or the included data.
|
||||||
|
#
|
||||||
|
# These mapping tables and character lists are subject to change.
|
||||||
|
# The latest tables should be available from the following:
|
||||||
|
#
|
||||||
|
# <http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/>
|
||||||
|
#
|
||||||
|
# For general information about Mac OS encodings and these mapping
|
||||||
|
# tables, see the file "README.TXT".
|
||||||
|
#
|
||||||
|
# Format:
|
||||||
|
# -------
|
||||||
|
#
|
||||||
|
# Three tab-separated columns;
|
||||||
|
# '#' begins a comment which continues to the end of the line.
|
||||||
|
# Column #1 is the Mac OS Icelandic code (in hex as 0xNN)
|
||||||
|
# Column #2 is the corresponding Unicode (in hex as 0xNNNN)
|
||||||
|
# Column #3 is a comment containing the Unicode name
|
||||||
|
#
|
||||||
|
# The entries are in Mac OS Icelandic code order.
|
||||||
|
#
|
||||||
|
# One of these mappings requires the use of a corporate character.
|
||||||
|
# See the file "CORPCHAR.TXT" and notes below.
|
||||||
|
#
|
||||||
|
# Control character mappings are not shown in this table, following
|
||||||
|
# the conventions of the standard UTC mapping tables. However, the
|
||||||
|
# Mac OS Icelandic character set uses the standard control characters
|
||||||
|
# at 0x00-0x1F and 0x7F.
|
||||||
|
#
|
||||||
|
# Notes on Mac OS Icelandic:
|
||||||
|
# --------------------------
|
||||||
|
#
|
||||||
|
# This is a legacy Mac OS encoding; in the Mac OS X Carbon and Cocoa
|
||||||
|
# environments, it is only supported via transcoding to and from
|
||||||
|
# Unicode.
|
||||||
|
#
|
||||||
|
# 1. General
|
||||||
|
#
|
||||||
|
# Mac OS Icelandic is used for Icelandic and Faroese.
|
||||||
|
#
|
||||||
|
# The Mac OS Icelandic encoding shares the script code smRoman
|
||||||
|
# (0) with the standard Mac OS Roman encoding. To determine if
|
||||||
|
# the Icelandic encoding is being used, you must also check if
|
||||||
|
# the system region code is 21, verIceland.
|
||||||
|
#
|
||||||
|
# This character set is a variant of standard Mac OS Roman,
|
||||||
|
# adding upper and lower eth, thorn, and Y acute. It has 6 code
|
||||||
|
# point differences from standard Mac OS Roman.
|
||||||
|
#
|
||||||
|
# Before Mac OS 8.5, code point 0xDB was CURRENCY SIGN, and was
|
||||||
|
# mapped to U+00A4. In Mac OS 8.5 and later versions, code point
|
||||||
|
# 0xDB is changed to EURO SIGN and maps to U+20AC; the standard
|
||||||
|
# Apple fonts are updated for Mac OS 8.5 to reflect this. There are
|
||||||
|
# "currency sign" variants of the Mac OS Icelandic encoding that
|
||||||
|
# still map 0xDB to U+00A4; these can be used for older fonts.
|
||||||
|
#
|
||||||
|
# 2. Font variants
|
||||||
|
#
|
||||||
|
# The table in this file gives the Unicode mappings for the standard
|
||||||
|
# Mac OS Icelandic encoding. This encoding is supported by the
|
||||||
|
# Icelandic versions of the fonts Chicago, Geneva, Monaco, and New
|
||||||
|
# York, and is the encoding supported by the text processing
|
||||||
|
# utilities. However, other TrueType fonts implement a slightly
|
||||||
|
# different encoding; the difference is only in two code points.
|
||||||
|
# For the standard variant, these are:
|
||||||
|
# 0xBB -> 0x00AA FEMININE ORDINAL INDICATOR
|
||||||
|
# 0xBC -> 0x00BA MASCULINE ORDINAL INDICATOR
|
||||||
|
#
|
||||||
|
# For the TrueType variant (used by the Icelandic versions of the
|
||||||
|
# fonts Courier, Helvetica, Palatino, and Times), these are:
|
||||||
|
# 0xBB -> 0xFB01 LATIN SMALL LIGATURE FI
|
||||||
|
# 0xBC -> 0xFB02 LATIN SMALL LIGATURE FL
|
||||||
|
#
|
||||||
|
# Unicode mapping issues and notes:
|
||||||
|
# ---------------------------------
|
||||||
|
#
|
||||||
|
# The following corporate zone Unicode character is used in this
|
||||||
|
# mapping:
|
||||||
|
#
|
||||||
|
# 0xF8FF Apple logo
|
||||||
|
#
|
||||||
|
# NOTE: The graphic image associated with the Apple logo character
|
||||||
|
# is not authorized for use without permission of Apple, and
|
||||||
|
# unauthorized use might constitute trademark infringement.
|
||||||
|
#
|
||||||
|
# Details of mapping changes in each version:
|
||||||
|
# -------------------------------------------
|
||||||
|
#
|
||||||
|
# Changes from version n06 to version b02:
|
||||||
|
#
|
||||||
|
# - Encoding changed for Mac OS 8.5; change mapping of 0xDB from
|
||||||
|
# CURRENCY SIGN (U+00A4) to EURO SIGN (U+20AC).
|
||||||
|
#
|
||||||
|
# Changes from version n02 to version n03:
|
||||||
|
#
|
||||||
|
# - Change mapping of 0xBD from U+2126 to its canonical
|
||||||
|
# decomposition, U+03A9.
|
||||||
|
#
|
||||||
|
##################
|
||||||
|
|
||||||
|
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
|
||||||
|
#
|
||||||
|
0x80 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||||
|
0x81 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||||
|
0x82 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||||
|
0x83 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
|
||||||
|
0x84 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
|
||||||
|
0x85 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||||
|
0x86 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||||
|
0x87 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
|
||||||
|
0x88 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
|
||||||
|
0x89 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||||
|
0x8A 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
|
||||||
|
0x8B 0x00E3 # LATIN SMALL LETTER A WITH TILDE
|
||||||
|
0x8C 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
|
||||||
|
0x8D 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
|
||||||
|
0x8E 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
|
||||||
|
0x8F 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
|
||||||
|
0x90 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||||
|
0x91 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
|
||||||
|
0x92 0x00ED # LATIN SMALL LETTER I WITH ACUTE
|
||||||
|
0x93 0x00EC # LATIN SMALL LETTER I WITH GRAVE
|
||||||
|
0x94 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||||
|
0x95 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
|
||||||
|
0x96 0x00F1 # LATIN SMALL LETTER N WITH TILDE
|
||||||
|
0x97 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
|
||||||
|
0x98 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
|
||||||
|
0x99 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||||
|
0x9A 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
|
||||||
|
0x9B 0x00F5 # LATIN SMALL LETTER O WITH TILDE
|
||||||
|
0x9C 0x00FA # LATIN SMALL LETTER U WITH ACUTE
|
||||||
|
0x9D 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
|
||||||
|
0x9E 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||||
|
0x9F 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
|
||||||
|
0xA0 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
|
||||||
|
0xA1 0x00B0 # DEGREE SIGN
|
||||||
|
0xA2 0x00A2 # CENT SIGN
|
||||||
|
0xA3 0x00A3 # POUND SIGN
|
||||||
|
0xA4 0x00A7 # SECTION SIGN
|
||||||
|
0xA5 0x2022 # BULLET
|
||||||
|
0xA6 0x00B6 # PILCROW SIGN
|
||||||
|
0xA7 0x00DF # LATIN SMALL LETTER SHARP S
|
||||||
|
0xA8 0x00AE # REGISTERED SIGN
|
||||||
|
0xA9 0x00A9 # COPYRIGHT SIGN
|
||||||
|
0xAA 0x2122 # TRADE MARK SIGN
|
||||||
|
0xAB 0x00B4 # ACUTE ACCENT
|
||||||
|
0xAC 0x00A8 # DIAERESIS
|
||||||
|
0xAD 0x2260 # NOT EQUAL TO
|
||||||
|
0xAE 0x00C6 # LATIN CAPITAL LETTER AE
|
||||||
|
0xAF 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
|
||||||
|
0xB0 0x221E # INFINITY
|
||||||
|
0xB1 0x00B1 # PLUS-MINUS SIGN
|
||||||
|
0xB2 0x2264 # LESS-THAN OR EQUAL TO
|
||||||
|
0xB3 0x2265 # GREATER-THAN OR EQUAL TO
|
||||||
|
0xB4 0x00A5 # YEN SIGN
|
||||||
|
0xB5 0x00B5 # MICRO SIGN
|
||||||
|
0xB6 0x2202 # PARTIAL DIFFERENTIAL
|
||||||
|
0xB7 0x2211 # N-ARY SUMMATION
|
||||||
|
0xB8 0x220F # N-ARY PRODUCT
|
||||||
|
0xB9 0x03C0 # GREEK SMALL LETTER PI
|
||||||
|
0xBA 0x222B # INTEGRAL
|
||||||
|
0xBB 0x00AA # FEMININE ORDINAL INDICATOR
|
||||||
|
0xBC 0x00BA # MASCULINE ORDINAL INDICATOR
|
||||||
|
0xBD 0x03A9 # GREEK CAPITAL LETTER OMEGA
|
||||||
|
0xBE 0x00E6 # LATIN SMALL LETTER AE
|
||||||
|
0xBF 0x00F8 # LATIN SMALL LETTER O WITH STROKE
|
||||||
|
0xC0 0x00BF # INVERTED QUESTION MARK
|
||||||
|
0xC1 0x00A1 # INVERTED EXCLAMATION MARK
|
||||||
|
0xC2 0x00AC # NOT SIGN
|
||||||
|
0xC3 0x221A # SQUARE ROOT
|
||||||
|
0xC4 0x0192 # LATIN SMALL LETTER F WITH HOOK
|
||||||
|
0xC5 0x2248 # ALMOST EQUAL TO
|
||||||
|
0xC6 0x2206 # INCREMENT
|
||||||
|
0xC7 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||||
|
0xC8 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||||
|
0xC9 0x2026 # HORIZONTAL ELLIPSIS
|
||||||
|
0xCA 0x00A0 # NO-BREAK SPACE
|
||||||
|
0xCB 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
|
||||||
|
0xCC 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
|
||||||
|
0xCD 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
|
||||||
|
0xCE 0x0152 # LATIN CAPITAL LIGATURE OE
|
||||||
|
0xCF 0x0153 # LATIN SMALL LIGATURE OE
|
||||||
|
0xD0 0x2013 # EN DASH
|
||||||
|
0xD1 0x2014 # EM DASH
|
||||||
|
0xD2 0x201C # LEFT DOUBLE QUOTATION MARK
|
||||||
|
0xD3 0x201D # RIGHT DOUBLE QUOTATION MARK
|
||||||
|
0xD4 0x2018 # LEFT SINGLE QUOTATION MARK
|
||||||
|
0xD5 0x2019 # RIGHT SINGLE QUOTATION MARK
|
||||||
|
0xD6 0x00F7 # DIVISION SIGN
|
||||||
|
0xD7 0x25CA # LOZENGE
|
||||||
|
0xD8 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
|
||||||
|
0xD9 0x0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
|
||||||
|
0xDA 0x2044 # FRACTION SLASH
|
||||||
|
0xDB 0x20AC # EURO SIGN
|
||||||
|
0xDC 0x00D0 # LATIN CAPITAL LETTER ETH
|
||||||
|
0xDD 0x00F0 # LATIN SMALL LETTER ETH
|
||||||
|
0xDE 0x00DE # LATIN CAPITAL LETTER THORN
|
||||||
|
0xDF 0x00FE # LATIN SMALL LETTER THORN
|
||||||
|
0xE0 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
|
||||||
|
0xE1 0x00B7 # MIDDLE DOT
|
||||||
|
0xE2 0x201A # SINGLE LOW-9 QUOTATION MARK
|
||||||
|
0xE3 0x201E # DOUBLE LOW-9 QUOTATION MARK
|
||||||
|
0xE4 0x2030 # PER MILLE SIGN
|
||||||
|
0xE5 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||||
|
0xE6 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||||
|
0xE7 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
|
||||||
|
0xE8 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||||
|
0xE9 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
|
||||||
|
0xEA 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
|
||||||
|
0xEB 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||||
|
0xEC 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||||
|
0xED 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
|
||||||
|
0xEE 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
|
||||||
|
0xEF 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||||
|
0xF0 0xF8FF # Apple logo
|
||||||
|
0xF1 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
|
||||||
|
0xF2 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
|
||||||
|
0xF3 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||||
|
0xF4 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
|
||||||
|
0xF5 0x0131 # LATIN SMALL LETTER DOTLESS I
|
||||||
|
0xF6 0x02C6 # MODIFIER LETTER CIRCUMFLEX ACCENT
|
||||||
|
0xF7 0x02DC # SMALL TILDE
|
||||||
|
0xF8 0x00AF # MACRON
|
||||||
|
0xF9 0x02D8 # BREVE
|
||||||
|
0xFA 0x02D9 # DOT ABOVE
|
||||||
|
0xFB 0x02DA # RING ABOVE
|
||||||
|
0xFC 0x00B8 # CEDILLA
|
||||||
|
0xFD 0x02DD # DOUBLE ACUTE ACCENT
|
||||||
|
0xFE 0x02DB # OGONEK
|
||||||
|
0xFF 0x02C7 # CARON
|
||||||
322
data/apple/INUIT.TXT
Normal file
322
data/apple/INUIT.TXT
Normal file
@@ -0,0 +1,322 @@
|
|||||||
|
#=======================================================================
|
||||||
|
# File name: INUIT.TXT
|
||||||
|
#
|
||||||
|
# Contents: Map (external version) from Mac OS Inuit
|
||||||
|
# character set to Unicode 3.0 and later
|
||||||
|
#
|
||||||
|
# Contacts: charsets@apple.com, everson@evertype.com
|
||||||
|
#
|
||||||
|
# Changes:
|
||||||
|
#
|
||||||
|
# c01 2005-Apr-01 First posted version. Matches internal xml
|
||||||
|
# <c1.1> and Text Encoding Converter 2.0.
|
||||||
|
#
|
||||||
|
# Standard header:
|
||||||
|
# ----------------
|
||||||
|
#
|
||||||
|
# Apple, the Apple logo, and Macintosh are trademarks of Apple
|
||||||
|
# Computer, Inc., registered in the United States and other countries.
|
||||||
|
# Unicode is a trademark of Unicode Inc. For the sake of brevity,
|
||||||
|
# throughout this document, "Macintosh" can be used to refer to
|
||||||
|
# Macintosh computers and "Unicode" can be used to refer to the
|
||||||
|
# Unicode standard.
|
||||||
|
#
|
||||||
|
# Apple Computer, Inc. ("Apple") makes no warranty or representation,
|
||||||
|
# either express or implied, with respect to this document and the
|
||||||
|
# included data, its quality, accuracy, or fitness for a particular
|
||||||
|
# purpose. In no event will Apple be liable for direct, indirect,
|
||||||
|
# special, incidental, or consequential damages resulting from any
|
||||||
|
# defect or inaccuracy in this document or the included data.
|
||||||
|
#
|
||||||
|
# These mapping tables and character lists are subject to change.
|
||||||
|
# The latest tables should be available from the following:
|
||||||
|
#
|
||||||
|
# <http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/>
|
||||||
|
#
|
||||||
|
# For general information about Mac OS encodings and these mapping
|
||||||
|
# tables, see the file "README.TXT".
|
||||||
|
#
|
||||||
|
# Format:
|
||||||
|
# -------
|
||||||
|
#
|
||||||
|
# Three tab-separated columns;
|
||||||
|
# '#' begins a comment which continues to the end of the line.
|
||||||
|
# Column #1 is the Mac OS Inuit code (in hex as 0xNN)
|
||||||
|
# Column #2 is the corresponding Unicode (in hex as 0xNNNN)
|
||||||
|
# Column #3 is a comment containing the Unicode name
|
||||||
|
#
|
||||||
|
# The entries are in Mac OS Inuit code order.
|
||||||
|
#
|
||||||
|
# Control character mappings are not shown in this table, following
|
||||||
|
# the conventions of the standard UTC mapping tables. However, the
|
||||||
|
# Mac OS Inuit character set uses the standard control characters
|
||||||
|
# at 0x00-0x1F and 0x7F.
|
||||||
|
#
|
||||||
|
# Notes on Mac OS Inuit (partly from Michael Everson):
|
||||||
|
# ----------------------------------------------------
|
||||||
|
#
|
||||||
|
# This is a legacy Mac OS encoding; in the Mac OS X Carbon and Cocoa
|
||||||
|
# environments, it is only supported via transcoding to and from
|
||||||
|
# Unicode.
|
||||||
|
#
|
||||||
|
# This character set was developed by Michael Everson of Everson
|
||||||
|
# Typography (everson@evertype.com) and was used for the Inuktitut
|
||||||
|
# localizations of Mac OS, as well as for the Inuktitut utilities
|
||||||
|
# package from Everson Typography. Note that while Apple authorized
|
||||||
|
# the Inuktitut localization mentioned above, it was not shipped with
|
||||||
|
# Apple hardware, and was not otherwise supported by Apple. Fonts
|
||||||
|
# conforming to the Mac OS Inuit character set are available from
|
||||||
|
# Everson Typography (http://www.evertype.com/software/apple/).
|
||||||
|
# Information about the use of this character set is available at
|
||||||
|
# http://www.evertype.com/standards/iu/.
|
||||||
|
#
|
||||||
|
# The Mac OS Inuit character set shares the script code smEthiopic
|
||||||
|
# (28) with the Ethiopic encoding. To determine if the Inuktitut
|
||||||
|
# encoding is being used, you must also check if the system region
|
||||||
|
# code is 78, verNunavut.
|
||||||
|
#
|
||||||
|
# The Mac OS Inuit character set includes the full syllabic letter
|
||||||
|
# repertoire required for Inuktitut; it is a subset of the Unified
|
||||||
|
# Canadian Aboriginal Syllabics set encoded in Unicode. The encoding
|
||||||
|
# is InuitSCII, designed by Doug Hitch for the Government of the
|
||||||
|
# Northwest Territories.
|
||||||
|
#
|
||||||
|
# The Mac OS Inuit character set also includes a number of characters
|
||||||
|
# that were needed for the classic Mac OS user interface and
|
||||||
|
# localization (e.g. ellipsis, bullet, copyright sign). All of the
|
||||||
|
# characters in Mac OS Inuit that are also in the Mac OS Roman
|
||||||
|
# encoding are at the same code point in both; this improves
|
||||||
|
# application compatibility.
|
||||||
|
#
|
||||||
|
# Unicode mapping issues and notes:
|
||||||
|
# ---------------------------------
|
||||||
|
#
|
||||||
|
# Details of mapping changes in each version:
|
||||||
|
# -------------------------------------------
|
||||||
|
#
|
||||||
|
##################
|
||||||
|
|
||||||
|
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
|
||||||
|
#
|
||||||
|
0x80 0x1403 # CANADIAN SYLLABICS I
|
||||||
|
0x81 0x1404 # CANADIAN SYLLABICS II
|
||||||
|
0x82 0x1405 # CANADIAN SYLLABICS O
|
||||||
|
0x83 0x1406 # CANADIAN SYLLABICS OO
|
||||||
|
0x84 0x140A # CANADIAN SYLLABICS A
|
||||||
|
0x85 0x140B # CANADIAN SYLLABICS AA
|
||||||
|
0x86 0x1431 # CANADIAN SYLLABICS PI
|
||||||
|
0x87 0x1432 # CANADIAN SYLLABICS PII
|
||||||
|
0x88 0x1433 # CANADIAN SYLLABICS PO
|
||||||
|
0x89 0x1434 # CANADIAN SYLLABICS POO
|
||||||
|
0x8A 0x1438 # CANADIAN SYLLABICS PA
|
||||||
|
0x8B 0x1439 # CANADIAN SYLLABICS PAA
|
||||||
|
0x8C 0x1449 # CANADIAN SYLLABICS P
|
||||||
|
0x8D 0x144E # CANADIAN SYLLABICS TI
|
||||||
|
0x8E 0x144F # CANADIAN SYLLABICS TII
|
||||||
|
0x8F 0x1450 # CANADIAN SYLLABICS TO
|
||||||
|
0x90 0x1451 # CANADIAN SYLLABICS TOO
|
||||||
|
0x91 0x1455 # CANADIAN SYLLABICS TA
|
||||||
|
0x92 0x1456 # CANADIAN SYLLABICS TAA
|
||||||
|
0x93 0x1466 # CANADIAN SYLLABICS T
|
||||||
|
0x94 0x146D # CANADIAN SYLLABICS KI
|
||||||
|
0x95 0x146E # CANADIAN SYLLABICS KII
|
||||||
|
0x96 0x146F # CANADIAN SYLLABICS KO
|
||||||
|
0x97 0x1470 # CANADIAN SYLLABICS KOO
|
||||||
|
0x98 0x1472 # CANADIAN SYLLABICS KA
|
||||||
|
0x99 0x1473 # CANADIAN SYLLABICS KAA
|
||||||
|
0x9A 0x1483 # CANADIAN SYLLABICS K
|
||||||
|
0x9B 0x148B # CANADIAN SYLLABICS CI
|
||||||
|
0x9C 0x148C # CANADIAN SYLLABICS CII
|
||||||
|
0x9D 0x148D # CANADIAN SYLLABICS CO
|
||||||
|
0x9E 0x148E # CANADIAN SYLLABICS COO
|
||||||
|
0x9F 0x1490 # CANADIAN SYLLABICS CA
|
||||||
|
0xA0 0x1491 # CANADIAN SYLLABICS CAA
|
||||||
|
0xA1 0x00B0 # DEGREE SIGN
|
||||||
|
0xA2 0x14A1 # CANADIAN SYLLABICS C
|
||||||
|
0xA3 0x14A5 # CANADIAN SYLLABICS MI
|
||||||
|
0xA4 0x14A6 # CANADIAN SYLLABICS MII
|
||||||
|
0xA5 0x2022 # BULLET
|
||||||
|
0xA6 0x00B6 # PILCROW SIGN
|
||||||
|
0xA7 0x14A7 # CANADIAN SYLLABICS MO
|
||||||
|
0xA8 0x00AE # REGISTERED SIGN
|
||||||
|
0xA9 0x00A9 # COPYRIGHT SIGN
|
||||||
|
0xAA 0x2122 # TRADE MARK SIGN
|
||||||
|
0xAB 0x14A8 # CANADIAN SYLLABICS MOO
|
||||||
|
0xAC 0x14AA # CANADIAN SYLLABICS MA
|
||||||
|
0xAD 0x14AB # CANADIAN SYLLABICS MAA
|
||||||
|
0xAE 0x14BB # CANADIAN SYLLABICS M
|
||||||
|
0xAF 0x14C2 # CANADIAN SYLLABICS NI
|
||||||
|
0xB0 0x14C3 # CANADIAN SYLLABICS NII
|
||||||
|
0xB1 0x14C4 # CANADIAN SYLLABICS NO
|
||||||
|
0xB2 0x14C5 # CANADIAN SYLLABICS NOO
|
||||||
|
0xB3 0x14C7 # CANADIAN SYLLABICS NA
|
||||||
|
0xB4 0x14C8 # CANADIAN SYLLABICS NAA
|
||||||
|
0xB5 0x14D0 # CANADIAN SYLLABICS N
|
||||||
|
0xB6 0x14EF # CANADIAN SYLLABICS SI
|
||||||
|
0xB7 0x14F0 # CANADIAN SYLLABICS SII
|
||||||
|
0xB8 0x14F1 # CANADIAN SYLLABICS SO
|
||||||
|
0xB9 0x14F2 # CANADIAN SYLLABICS SOO
|
||||||
|
0xBA 0x14F4 # CANADIAN SYLLABICS SA
|
||||||
|
0xBB 0x14F5 # CANADIAN SYLLABICS SAA
|
||||||
|
0xBC 0x1505 # CANADIAN SYLLABICS S
|
||||||
|
0xBD 0x14D5 # CANADIAN SYLLABICS LI
|
||||||
|
0xBE 0x14D6 # CANADIAN SYLLABICS LII
|
||||||
|
0xBF 0x14D7 # CANADIAN SYLLABICS LO
|
||||||
|
0xC0 0x14D8 # CANADIAN SYLLABICS LOO
|
||||||
|
0xC1 0x14DA # CANADIAN SYLLABICS LA
|
||||||
|
0xC2 0x14DB # CANADIAN SYLLABICS LAA
|
||||||
|
0xC3 0x14EA # CANADIAN SYLLABICS L
|
||||||
|
0xC4 0x1528 # CANADIAN SYLLABICS YI
|
||||||
|
0xC5 0x1529 # CANADIAN SYLLABICS YII
|
||||||
|
0xC6 0x152A # CANADIAN SYLLABICS YO
|
||||||
|
0xC7 0x152B # CANADIAN SYLLABICS YOO
|
||||||
|
0xC8 0x152D # CANADIAN SYLLABICS YA
|
||||||
|
0xC9 0x2026 # HORIZONTAL ELLIPSIS
|
||||||
|
0xCA 0x00A0 # NO-BREAK SPACE
|
||||||
|
0xCB 0x152E # CANADIAN SYLLABICS YAA
|
||||||
|
0xCC 0x153E # CANADIAN SYLLABICS Y
|
||||||
|
0xCD 0x1555 # CANADIAN SYLLABICS FI
|
||||||
|
0xCE 0x1556 # CANADIAN SYLLABICS FII
|
||||||
|
0xCF 0x1557 # CANADIAN SYLLABICS FO
|
||||||
|
0xD0 0x2013 # EN DASH
|
||||||
|
0xD1 0x2014 # EM DASH
|
||||||
|
0xD2 0x201C # LEFT DOUBLE QUOTATION MARK
|
||||||
|
0xD3 0x201D # RIGHT DOUBLE QUOTATION MARK
|
||||||
|
0xD4 0x2018 # LEFT SINGLE QUOTATION MARK
|
||||||
|
0xD5 0x2019 # RIGHT SINGLE QUOTATION MARK
|
||||||
|
0xD6 0x1558 # CANADIAN SYLLABICS FOO
|
||||||
|
0xD7 0x1559 # CANADIAN SYLLABICS FA
|
||||||
|
0xD8 0x155A # CANADIAN SYLLABICS FAA
|
||||||
|
0xD9 0x155D # CANADIAN SYLLABICS F
|
||||||
|
0xDA 0x1546 # CANADIAN SYLLABICS RI
|
||||||
|
0xDB 0x1547 # CANADIAN SYLLABICS RII
|
||||||
|
0xDC 0x1548 # CANADIAN SYLLABICS RO
|
||||||
|
0xDD 0x1549 # CANADIAN SYLLABICS ROO
|
||||||
|
0xDE 0x154B # CANADIAN SYLLABICS RA
|
||||||
|
0xDF 0x154C # CANADIAN SYLLABICS RAA
|
||||||
|
0xE0 0x1550 # CANADIAN SYLLABICS R
|
||||||
|
0xE1 0x157F # CANADIAN SYLLABICS QI
|
||||||
|
0xE2 0x1580 # CANADIAN SYLLABICS QII
|
||||||
|
0xE3 0x1581 # CANADIAN SYLLABICS QO
|
||||||
|
0xE4 0x1582 # CANADIAN SYLLABICS QOO
|
||||||
|
0xE5 0x1583 # CANADIAN SYLLABICS QA
|
||||||
|
0xE6 0x1584 # CANADIAN SYLLABICS QAA
|
||||||
|
0xE7 0x1585 # CANADIAN SYLLABICS Q
|
||||||
|
0xE8 0x158F # CANADIAN SYLLABICS NGI
|
||||||
|
0xE9 0x1590 # CANADIAN SYLLABICS NGII
|
||||||
|
0xEA 0x1591 # CANADIAN SYLLABICS NGO
|
||||||
|
0xEB 0x1592 # CANADIAN SYLLABICS NGOO
|
||||||
|
0xEC 0x1593 # CANADIAN SYLLABICS NGA
|
||||||
|
0xED 0x1594 # CANADIAN SYLLABICS NGAA
|
||||||
|
0xEE 0x1595 # CANADIAN SYLLABICS NG
|
||||||
|
0xEF 0x1671 # CANADIAN SYLLABICS NNGI
|
||||||
|
0xF0 0x1672 # CANADIAN SYLLABICS NNGII
|
||||||
|
0xF1 0x1673 # CANADIAN SYLLABICS NNGO
|
||||||
|
0xF2 0x1674 # CANADIAN SYLLABICS NNGOO
|
||||||
|
0xF3 0x1675 # CANADIAN SYLLABICS NNGA
|
||||||
|
0xF4 0x1676 # CANADIAN SYLLABICS NNGAA
|
||||||
|
0xF5 0x1596 # CANADIAN SYLLABICS NNG
|
||||||
|
0xF6 0x15A0 # CANADIAN SYLLABICS LHI
|
||||||
|
0xF7 0x15A1 # CANADIAN SYLLABICS LHII
|
||||||
|
0xF8 0x15A2 # CANADIAN SYLLABICS LHO
|
||||||
|
0xF9 0x15A3 # CANADIAN SYLLABICS LHOO
|
||||||
|
0xFA 0x15A4 # CANADIAN SYLLABICS LHA
|
||||||
|
0xFB 0x15A5 # CANADIAN SYLLABICS LHAA
|
||||||
|
0xFC 0x15A6 # CANADIAN SYLLABICS LH
|
||||||
|
0xFD 0x157C # CANADIAN SYLLABICS NUNAVUT H
|
||||||
|
0xFE 0x0141 # LATIN CAPITAL LETTER L WITH STROKE
|
||||||
|
0xFF 0x0142 # LATIN SMALL LETTER L WITH STROKE
|
||||||
370
data/apple/ROMAN.TXT
Normal file
370
data/apple/ROMAN.TXT
Normal file
@@ -0,0 +1,370 @@
|
|||||||
|
#=======================================================================
|
||||||
|
# File name: ROMAN.TXT
|
||||||
|
#
|
||||||
|
# Contents: Map (external version) from Mac OS Roman
|
||||||
|
# character set to Unicode 2.1 and later.
|
||||||
|
#
|
||||||
|
# Copyright: (c) 1994-2002, 2005 by Apple Computer, Inc., all rights
|
||||||
|
# reserved.
|
||||||
|
#
|
||||||
|
# Contact: charsets@apple.com
|
||||||
|
#
|
||||||
|
# Changes:
|
||||||
|
#
|
||||||
|
# c02 2005-Apr-05 Update header comments. Matches internal xml
|
||||||
|
# <c1.1> and Text Encoding Converter 2.0.
|
||||||
|
# b4,c1 2002-Dec-19 Update URLs, notes. Matches internal
|
||||||
|
# utom<b5>.
|
||||||
|
# b03 1999-Sep-22 Update contact e-mail address. Matches
|
||||||
|
# internal utom<b4>, ufrm<b3>, and Text
|
||||||
|
# Encoding Converter version 1.5.
|
||||||
|
# b02 1998-Aug-18 Encoding changed for Mac OS 8.5; change
|
||||||
|
# mapping of 0xDB from CURRENCY SIGN to
|
||||||
|
# EURO SIGN. Matches internal utom<b3>,
|
||||||
|
# ufrm<b3>.
|
||||||
|
# n08 1998-Feb-05 Minor update to header comments
|
||||||
|
# n06 1997-Dec-14 Add warning about future changes to 0xDB
|
||||||
|
# from CURRENCY SIGN to EURO SIGN. Clarify
|
||||||
|
# some header information
|
||||||
|
# n04 1997-Dec-01 Update to match internal utom<n3>, ufrm<n22>:
|
||||||
|
# Change standard mapping for 0xBD from U+2126
|
||||||
|
# to its canonical decomposition, U+03A9.
|
||||||
|
# n03 1995-Apr-15 First version (after fixing some typos).
|
||||||
|
# Matches internal ufrm<n9>.
|
||||||
|
#
|
||||||
|
# Standard header:
|
||||||
|
# ----------------
|
||||||
|
#
|
||||||
|
# Apple, the Apple logo, and Macintosh are trademarks of Apple
|
||||||
|
# Computer, Inc., registered in the United States and other countries.
|
||||||
|
# Unicode is a trademark of Unicode Inc. For the sake of brevity,
|
||||||
|
# throughout this document, "Macintosh" can be used to refer to
|
||||||
|
# Macintosh computers and "Unicode" can be used to refer to the
|
||||||
|
# Unicode standard.
|
||||||
|
#
|
||||||
|
# Apple Computer, Inc. ("Apple") makes no warranty or representation,
|
||||||
|
# either express or implied, with respect to this document and the
|
||||||
|
# included data, its quality, accuracy, or fitness for a particular
|
||||||
|
# purpose. In no event will Apple be liable for direct, indirect,
|
||||||
|
# special, incidental, or consequential damages resulting from any
|
||||||
|
# defect or inaccuracy in this document or the included data.
|
||||||
|
#
|
||||||
|
# These mapping tables and character lists are subject to change.
|
||||||
|
# The latest tables should be available from the following:
|
||||||
|
#
|
||||||
|
# <http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/>
|
||||||
|
#
|
||||||
|
# For general information about Mac OS encodings and these mapping
|
||||||
|
# tables, see the file "README.TXT".
|
||||||
|
#
|
||||||
|
# Format:
|
||||||
|
# -------
|
||||||
|
#
|
||||||
|
# Three tab-separated columns;
|
||||||
|
# '#' begins a comment which continues to the end of the line.
|
||||||
|
# Column #1 is the Mac OS Roman code (in hex as 0xNN)
|
||||||
|
# Column #2 is the corresponding Unicode (in hex as 0xNNNN)
|
||||||
|
# Column #3 is a comment containing the Unicode name
|
||||||
|
#
|
||||||
|
# The entries are in Mac OS Roman code order.
|
||||||
|
#
|
||||||
|
# One of these mappings requires the use of a corporate character.
|
||||||
|
# See the file "CORPCHAR.TXT" and notes below.
|
||||||
|
#
|
||||||
|
# Control character mappings are not shown in this table, following
|
||||||
|
# the conventions of the standard UTC mapping tables. However, the
|
||||||
|
# Mac OS Roman character set uses the standard control characters at
|
||||||
|
# 0x00-0x1F and 0x7F.
|
||||||
|
#
|
||||||
|
# Notes on Mac OS Roman:
|
||||||
|
# ----------------------
|
||||||
|
#
|
||||||
|
# This is a legacy Mac OS encoding; in the Mac OS X Carbon and Cocoa
|
||||||
|
# environments, it is only supported directly in programming
|
||||||
|
# interfaces for QuickDraw Text, the Script Manager, and related
|
||||||
|
# Text Utilities. For other purposes it is supported via transcoding
|
||||||
|
# to and from Unicode.
|
||||||
|
#
|
||||||
|
# This character set is used for at least the following Mac OS
|
||||||
|
# localizations: U.S., British, Canadian French, French, Swiss
|
||||||
|
# French, German, Swiss German, Italian, Swiss Italian, Dutch,
|
||||||
|
# Swedish, Norwegian, Danish, Finnish, Spanish, Catalan,
|
||||||
|
# Portuguese, Brazilian, and the default International system.
|
||||||
|
#
|
||||||
|
# Variants of Mac OS Roman are used for Croatian, Icelandic,
|
||||||
|
# Turkish, Romanian, and other encodings. Separate mapping tables
|
||||||
|
# are available for these encodings.
|
||||||
|
#
|
||||||
|
# Before Mac OS 8.5, code point 0xDB was CURRENCY SIGN, and was
|
||||||
|
# mapped to U+00A4. In Mac OS 8.5 and later versions, code point
|
||||||
|
# 0xDB is changed to EURO SIGN and maps to U+20AC; the standard
|
||||||
|
# Apple fonts are updated for Mac OS 8.5 to reflect this. There is
|
||||||
|
# a "currency sign" variant of the Mac OS Roman encoding that still
|
||||||
|
# maps 0xDB to U+00A4; this can be used for older fonts.
|
||||||
|
#
|
||||||
|
# Before Mac OS 8.5, the ROM bitmap versions of the fonts Chicago,
|
||||||
|
# New York, Geneva, and Monaco did not implement the full Mac OS
|
||||||
|
# Roman character set; they only supported character codes up to
|
||||||
|
# 0xD8. The TrueType versions of these fonts have always implemented
|
||||||
|
# the full character set, as with the bitmap and TrueType versions
|
||||||
|
# of the other standard Roman fonts.
|
||||||
|
#
|
||||||
|
# In all Mac OS encodings, fonts such as Chicago which are used
|
||||||
|
# as "system" fonts (for menus, dialogs, etc.) have four glyphs
|
||||||
|
# at code points 0x11-0x14 for transient use by the Menu Manager.
|
||||||
|
# These glyphs are not intended as characters for use in normal
|
||||||
|
# text, and the associated code points are not generally
|
||||||
|
# interpreted as associated with these glyphs; they are usually
|
||||||
|
# interpreted (if at all) as the control codes DC1-DC4.
|
||||||
|
#
|
||||||
|
# Unicode mapping issues and notes:
|
||||||
|
# ---------------------------------
|
||||||
|
#
|
||||||
|
# The following corporate zone Unicode character is used in this
|
||||||
|
# mapping:
|
||||||
|
#
|
||||||
|
# 0xF8FF Apple logo
|
||||||
|
#
|
||||||
|
# NOTE: The graphic image associated with the Apple logo character
|
||||||
|
# is not authorized for use without permission of Apple, and
|
||||||
|
# unauthorized use might constitute trademark infringement.
|
||||||
|
#
|
||||||
|
# Details of mapping changes in each version:
|
||||||
|
# -------------------------------------------
|
||||||
|
#
|
||||||
|
# Changes from version n08 to version b02:
|
||||||
|
#
|
||||||
|
# - Encoding changed for Mac OS 8.5; change mapping of 0xDB from
|
||||||
|
# CURRENCY SIGN (U+00A4) to EURO SIGN (U+20AC).
|
||||||
|
#
|
||||||
|
# Changes from version n03 to version n04:
|
||||||
|
#
|
||||||
|
# - Change mapping of 0xBD from U+2126 to its canonical
|
||||||
|
# decomposition, U+03A9.
|
||||||
|
#
|
||||||
|
##################
|
||||||
|
|
||||||
|
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
|
||||||
|
#
|
||||||
|
0x80 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||||
|
0x81 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||||
|
0x82 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||||
|
0x83 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
|
||||||
|
0x84 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
|
||||||
|
0x85 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||||
|
0x86 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||||
|
0x87 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
|
||||||
|
0x88 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
|
||||||
|
0x89 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||||
|
0x8A 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
|
||||||
|
0x8B 0x00E3 # LATIN SMALL LETTER A WITH TILDE
|
||||||
|
0x8C 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
|
||||||
|
0x8D 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
|
||||||
|
0x8E 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
|
||||||
|
0x8F 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
|
||||||
|
0x90 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||||
|
0x91 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
|
||||||
|
0x92 0x00ED # LATIN SMALL LETTER I WITH ACUTE
|
||||||
|
0x93 0x00EC # LATIN SMALL LETTER I WITH GRAVE
|
||||||
|
0x94 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||||
|
0x95 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
|
||||||
|
0x96 0x00F1 # LATIN SMALL LETTER N WITH TILDE
|
||||||
|
0x97 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
|
||||||
|
0x98 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
|
||||||
|
0x99 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||||
|
0x9A 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
|
||||||
|
0x9B 0x00F5 # LATIN SMALL LETTER O WITH TILDE
|
||||||
|
0x9C 0x00FA # LATIN SMALL LETTER U WITH ACUTE
|
||||||
|
0x9D 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
|
||||||
|
0x9E 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||||
|
0x9F 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
|
||||||
|
0xA0 0x2020 # DAGGER
|
||||||
|
0xA1 0x00B0 # DEGREE SIGN
|
||||||
|
0xA2 0x00A2 # CENT SIGN
|
||||||
|
0xA3 0x00A3 # POUND SIGN
|
||||||
|
0xA4 0x00A7 # SECTION SIGN
|
||||||
|
0xA5 0x2022 # BULLET
|
||||||
|
0xA6 0x00B6 # PILCROW SIGN
|
||||||
|
0xA7 0x00DF # LATIN SMALL LETTER SHARP S
|
||||||
|
0xA8 0x00AE # REGISTERED SIGN
|
||||||
|
0xA9 0x00A9 # COPYRIGHT SIGN
|
||||||
|
0xAA 0x2122 # TRADE MARK SIGN
|
||||||
|
0xAB 0x00B4 # ACUTE ACCENT
|
||||||
|
0xAC 0x00A8 # DIAERESIS
|
||||||
|
0xAD 0x2260 # NOT EQUAL TO
|
||||||
|
0xAE 0x00C6 # LATIN CAPITAL LETTER AE
|
||||||
|
0xAF 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
|
||||||
|
0xB0 0x221E # INFINITY
|
||||||
|
0xB1 0x00B1 # PLUS-MINUS SIGN
|
||||||
|
0xB2 0x2264 # LESS-THAN OR EQUAL TO
|
||||||
|
0xB3 0x2265 # GREATER-THAN OR EQUAL TO
|
||||||
|
0xB4 0x00A5 # YEN SIGN
|
||||||
|
0xB5 0x00B5 # MICRO SIGN
|
||||||
|
0xB6 0x2202 # PARTIAL DIFFERENTIAL
|
||||||
|
0xB7 0x2211 # N-ARY SUMMATION
|
||||||
|
0xB8 0x220F # N-ARY PRODUCT
|
||||||
|
0xB9 0x03C0 # GREEK SMALL LETTER PI
|
||||||
|
0xBA 0x222B # INTEGRAL
|
||||||
|
0xBB 0x00AA # FEMININE ORDINAL INDICATOR
|
||||||
|
0xBC 0x00BA # MASCULINE ORDINAL INDICATOR
|
||||||
|
0xBD 0x03A9 # GREEK CAPITAL LETTER OMEGA
|
||||||
|
0xBE 0x00E6 # LATIN SMALL LETTER AE
|
||||||
|
0xBF 0x00F8 # LATIN SMALL LETTER O WITH STROKE
|
||||||
|
0xC0 0x00BF # INVERTED QUESTION MARK
|
||||||
|
0xC1 0x00A1 # INVERTED EXCLAMATION MARK
|
||||||
|
0xC2 0x00AC # NOT SIGN
|
||||||
|
0xC3 0x221A # SQUARE ROOT
|
||||||
|
0xC4 0x0192 # LATIN SMALL LETTER F WITH HOOK
|
||||||
|
0xC5 0x2248 # ALMOST EQUAL TO
|
||||||
|
0xC6 0x2206 # INCREMENT
|
||||||
|
0xC7 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||||
|
0xC8 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||||
|
0xC9 0x2026 # HORIZONTAL ELLIPSIS
|
||||||
|
0xCA 0x00A0 # NO-BREAK SPACE
|
||||||
|
0xCB 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
|
||||||
|
0xCC 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
|
||||||
|
0xCD 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
|
||||||
|
0xCE 0x0152 # LATIN CAPITAL LIGATURE OE
|
||||||
|
0xCF 0x0153 # LATIN SMALL LIGATURE OE
|
||||||
|
0xD0 0x2013 # EN DASH
|
||||||
|
0xD1 0x2014 # EM DASH
|
||||||
|
0xD2 0x201C # LEFT DOUBLE QUOTATION MARK
|
||||||
|
0xD3 0x201D # RIGHT DOUBLE QUOTATION MARK
|
||||||
|
0xD4 0x2018 # LEFT SINGLE QUOTATION MARK
|
||||||
|
0xD5 0x2019 # RIGHT SINGLE QUOTATION MARK
|
||||||
|
0xD6 0x00F7 # DIVISION SIGN
|
||||||
|
0xD7 0x25CA # LOZENGE
|
||||||
|
0xD8 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
|
||||||
|
0xD9 0x0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
|
||||||
|
0xDA 0x2044 # FRACTION SLASH
|
||||||
|
0xDB 0x20AC # EURO SIGN
|
||||||
|
0xDC 0x2039 # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||||
|
0xDD 0x203A # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||||
|
0xDE 0xFB01 # LATIN SMALL LIGATURE FI
|
||||||
|
0xDF 0xFB02 # LATIN SMALL LIGATURE FL
|
||||||
|
0xE0 0x2021 # DOUBLE DAGGER
|
||||||
|
0xE1 0x00B7 # MIDDLE DOT
|
||||||
|
0xE2 0x201A # SINGLE LOW-9 QUOTATION MARK
|
||||||
|
0xE3 0x201E # DOUBLE LOW-9 QUOTATION MARK
|
||||||
|
0xE4 0x2030 # PER MILLE SIGN
|
||||||
|
0xE5 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||||
|
0xE6 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||||
|
0xE7 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
|
||||||
|
0xE8 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||||
|
0xE9 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
|
||||||
|
0xEA 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
|
||||||
|
0xEB 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||||
|
0xEC 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||||
|
0xED 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
|
||||||
|
0xEE 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
|
||||||
|
0xEF 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||||
|
0xF0 0xF8FF # Apple logo
|
||||||
|
0xF1 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
|
||||||
|
0xF2 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
|
||||||
|
0xF3 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||||
|
0xF4 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
|
||||||
|
0xF5 0x0131 # LATIN SMALL LETTER DOTLESS I
|
||||||
|
0xF6 0x02C6 # MODIFIER LETTER CIRCUMFLEX ACCENT
|
||||||
|
0xF7 0x02DC # SMALL TILDE
|
||||||
|
0xF8 0x00AF # MACRON
|
||||||
|
0xF9 0x02D8 # BREVE
|
||||||
|
0xFA 0x02D9 # DOT ABOVE
|
||||||
|
0xFB 0x02DA # RING ABOVE
|
||||||
|
0xFC 0x00B8 # CEDILLA
|
||||||
|
0xFD 0x02DD # DOUBLE ACUTE ACCENT
|
||||||
|
0xFE 0x02DB # OGONEK
|
||||||
|
0xFF 0x02C7 # CARON
|
||||||
365
data/apple/ROMANIAN.TXT
Normal file
365
data/apple/ROMANIAN.TXT
Normal file
@@ -0,0 +1,365 @@
|
|||||||
|
#=======================================================================
|
||||||
|
# File name: ROMANIAN.TXT
|
||||||
|
#
|
||||||
|
# Contents: Map (external version) from Mac OS Romanian
|
||||||
|
# character set to Unicode 3.0 and later.
|
||||||
|
#
|
||||||
|
# Copyright: (c) 1995-2002, 2005 by Apple Computer, Inc., all rights
|
||||||
|
# reserved.
|
||||||
|
#
|
||||||
|
# Contact: charsets@apple.com
|
||||||
|
#
|
||||||
|
# Changes:
|
||||||
|
#
|
||||||
|
# c02 2005-Apr-05 Update header comments. Matches internal xml
|
||||||
|
# <c1.2> and Text Encoding Converter 2.0.
|
||||||
|
# b3,c1 2002-Dec-19 Update mappings for 0xAF, 0xBF, 0xDE, 0xDF
|
||||||
|
# to use new composed characters added in
|
||||||
|
# Unicode 3.0. Update URLs, notes. Matches
|
||||||
|
# internal utom<b3>.
|
||||||
|
# b02 1999-Sep-22 Encoding changed for Mac OS 8.5; change
|
||||||
|
# mapping of 0xDB from CURRENCY SIGN to EURO
|
||||||
|
# SIGN. Update contact e-mail address. Matches
|
||||||
|
# internal utom<b2>, ufrm<b2>, and Text
|
||||||
|
# Encoding Converter version 1.5.
|
||||||
|
# n05 1998-Feb-05 Minor update to header comments
|
||||||
|
# n03 1997-Dec-14 Update to match internal utom<n5>, ufrm<n16>:
|
||||||
|
# Change standard mapping for 0xBD from U+2126
|
||||||
|
# to its canonical decomposition, U+03A9.
|
||||||
|
# Change mapping of 0xAF,0xBF,0xDE,0xDF from
|
||||||
|
# composed S/T WITH CEDILLA to S/T with
|
||||||
|
# COMBINING COMMA BELOW (to match our
|
||||||
|
# decomposition mappings).
|
||||||
|
# n02 1995-Apr-15 First version (after fixing some typos).
|
||||||
|
# Matches internal ufrm<n4>.
|
||||||
|
#
|
||||||
|
# Standard header:
|
||||||
|
# ----------------
|
||||||
|
#
|
||||||
|
# Apple, the Apple logo, and Macintosh are trademarks of Apple
|
||||||
|
# Computer, Inc., registered in the United States and other countries.
|
||||||
|
# Unicode is a trademark of Unicode Inc. For the sake of brevity,
|
||||||
|
# throughout this document, "Macintosh" can be used to refer to
|
||||||
|
# Macintosh computers and "Unicode" can be used to refer to the
|
||||||
|
# Unicode standard.
|
||||||
|
#
|
||||||
|
# Apple Computer, Inc. ("Apple") makes no warranty or representation,
|
||||||
|
# either express or implied, with respect to this document and the
|
||||||
|
# included data, its quality, accuracy, or fitness for a particular
|
||||||
|
# purpose. In no event will Apple be liable for direct, indirect,
|
||||||
|
# special, incidental, or consequential damages resulting from any
|
||||||
|
# defect or inaccuracy in this document or the included data.
|
||||||
|
#
|
||||||
|
# These mapping tables and character lists are subject to change.
|
||||||
|
# The latest tables should be available from the following:
|
||||||
|
#
|
||||||
|
# <http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/>
|
||||||
|
#
|
||||||
|
# For general information about Mac OS encodings and these mapping
|
||||||
|
# tables, see the file "README.TXT".
|
||||||
|
#
|
||||||
|
# Format:
|
||||||
|
# -------
|
||||||
|
#
|
||||||
|
# Three tab-separated columns;
|
||||||
|
# '#' begins a comment which continues to the end of the line.
|
||||||
|
# Column #1 is the Mac OS Romanian code (in hex as 0xNN)
|
||||||
|
# Column #2 is the corresponding Unicode (in hex as 0xNNNN)
|
||||||
|
# Column #3 is a comment containing the Unicode name
|
||||||
|
#
|
||||||
|
# The entries are in Mac OS Romanian code order.
|
||||||
|
#
|
||||||
|
# One of these mappings requires the use of a corporate character.
|
||||||
|
# See the file "CORPCHAR.TXT" and notes below.
|
||||||
|
#
|
||||||
|
# Control character mappings are not shown in this table, following
|
||||||
|
# the conventions of the standard UTC mapping tables. However, the
|
||||||
|
# Mac OS Romanian character set uses the standard control characters at
|
||||||
|
# 0x00-0x1F and 0x7F.
|
||||||
|
#
|
||||||
|
# Notes on Mac OS Romanian:
|
||||||
|
# -------------------------
|
||||||
|
#
|
||||||
|
# This is a legacy Mac OS encoding; in the Mac OS X Carbon and Cocoa
|
||||||
|
# environments, it is only supported via transcoding to and from
|
||||||
|
# Unicode.
|
||||||
|
#
|
||||||
|
# Mac OS Romanian is used only for Romanian.
|
||||||
|
#
|
||||||
|
# The Mac OS Romanian encoding shares the script code smRoman
|
||||||
|
# (0) with the standard Mac OS Roman encoding. To determine if
|
||||||
|
# the Romanian encoding is being used, you must also check if the
|
||||||
|
# system region code is 39, verRomania.
|
||||||
|
#
|
||||||
|
# This character set is a variant of standard Mac OS Roman, adding
|
||||||
|
# upper and lower A breve, S comma below, and T comma below. It
|
||||||
|
# has 6 code point differences from standard Mac OS Roman.
|
||||||
|
#
|
||||||
|
# Before Mac OS 8.5, code point 0xDB was CURRENCY SIGN, and was
|
||||||
|
# mapped to U+00A4. In Mac OS 8.5 and later versions, code point
|
||||||
|
# 0xDB is changed to EURO SIGN and maps to U+20AC; the standard
|
||||||
|
# Apple fonts are updated for Mac OS 8.5 to reflect this. There is
|
||||||
|
# a "currency sign" variant of the Mac OS Romanian encoding that
|
||||||
|
# still maps 0xDB to U+00A4; this can be used for older fonts.
|
||||||
|
#
|
||||||
|
# Unicode mapping issues and notes:
|
||||||
|
# ---------------------------------
|
||||||
|
#
|
||||||
|
# The following corporate zone Unicode character is used in this
|
||||||
|
# mapping:
|
||||||
|
#
|
||||||
|
# 0xF8FF Apple logo
|
||||||
|
#
|
||||||
|
# NOTE: The graphic image associated with the Apple logo character
|
||||||
|
# is not authorized for use without permission of Apple, and
|
||||||
|
# unauthorized use might constitute trademark infringement.
|
||||||
|
#
|
||||||
|
# Details of mapping changes in each version:
|
||||||
|
# -------------------------------------------
|
||||||
|
#
|
||||||
|
# Changes from version b02 to version b03/c01:
|
||||||
|
#
|
||||||
|
# - Update the mappings for 0xAF, 0xBF, 0xDE, 0xDF to use new
|
||||||
|
# composed Unicode characters 0x0218-0x021B added in Unicode 3.0;
|
||||||
|
# the previous mappings were to the equivalent decomposition
|
||||||
|
# sequences.
|
||||||
|
#
|
||||||
|
# Changes from version n05 to version b02:
|
||||||
|
#
|
||||||
|
# - Encoding changed for Mac OS 8.5; change mapping of 0xDB from
|
||||||
|
# CURRENCY SIGN (U+00A4) to EURO SIGN (U+20AC).
|
||||||
|
#
|
||||||
|
# Changes from version n02 to version n03:
|
||||||
|
#
|
||||||
|
# - Change mapping of 0xBD from U+2126 to its canonical
|
||||||
|
# decomposition, U+03A9.
|
||||||
|
# - Change mapping of 0xAF,0xBF,0xDE,0xDF from composed S or T
|
||||||
|
# WITH CEDILLA to S or T with COMBINING COMMA BELOW (to match
|
||||||
|
# our decomposition mappings).
|
||||||
|
#
|
||||||
|
##################
|
||||||
|
|
||||||
|
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
|
||||||
|
#
|
||||||
|
0x80 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||||
|
0x81 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||||
|
0x82 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||||
|
0x83 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
|
||||||
|
0x84 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
|
||||||
|
0x85 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||||
|
0x86 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||||
|
0x87 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
|
||||||
|
0x88 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
|
||||||
|
0x89 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||||
|
0x8A 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
|
||||||
|
0x8B 0x00E3 # LATIN SMALL LETTER A WITH TILDE
|
||||||
|
0x8C 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
|
||||||
|
0x8D 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
|
||||||
|
0x8E 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
|
||||||
|
0x8F 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
|
||||||
|
0x90 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||||
|
0x91 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
|
||||||
|
0x92 0x00ED # LATIN SMALL LETTER I WITH ACUTE
|
||||||
|
0x93 0x00EC # LATIN SMALL LETTER I WITH GRAVE
|
||||||
|
0x94 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||||
|
0x95 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
|
||||||
|
0x96 0x00F1 # LATIN SMALL LETTER N WITH TILDE
|
||||||
|
0x97 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
|
||||||
|
0x98 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
|
||||||
|
0x99 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||||
|
0x9A 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
|
||||||
|
0x9B 0x00F5 # LATIN SMALL LETTER O WITH TILDE
|
||||||
|
0x9C 0x00FA # LATIN SMALL LETTER U WITH ACUTE
|
||||||
|
0x9D 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
|
||||||
|
0x9E 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||||
|
0x9F 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
|
||||||
|
0xA0 0x2020 # DAGGER
|
||||||
|
0xA1 0x00B0 # DEGREE SIGN
|
||||||
|
0xA2 0x00A2 # CENT SIGN
|
||||||
|
0xA3 0x00A3 # POUND SIGN
|
||||||
|
0xA4 0x00A7 # SECTION SIGN
|
||||||
|
0xA5 0x2022 # BULLET
|
||||||
|
0xA6 0x00B6 # PILCROW SIGN
|
||||||
|
0xA7 0x00DF # LATIN SMALL LETTER SHARP S
|
||||||
|
0xA8 0x00AE # REGISTERED SIGN
|
||||||
|
0xA9 0x00A9 # COPYRIGHT SIGN
|
||||||
|
0xAA 0x2122 # TRADE MARK SIGN
|
||||||
|
0xAB 0x00B4 # ACUTE ACCENT
|
||||||
|
0xAC 0x00A8 # DIAERESIS
|
||||||
|
0xAD 0x2260 # NOT EQUAL TO
|
||||||
|
0xAE 0x0102 # LATIN CAPITAL LETTER A WITH BREVE
|
||||||
|
0xAF 0x0218 # LATIN CAPITAL LETTER S WITH COMMA BELOW # for Unicode 3.0 and later
|
||||||
|
0xB0 0x221E # INFINITY
|
||||||
|
0xB1 0x00B1 # PLUS-MINUS SIGN
|
||||||
|
0xB2 0x2264 # LESS-THAN OR EQUAL TO
|
||||||
|
0xB3 0x2265 # GREATER-THAN OR EQUAL TO
|
||||||
|
0xB4 0x00A5 # YEN SIGN
|
||||||
|
0xB5 0x00B5 # MICRO SIGN
|
||||||
|
0xB6 0x2202 # PARTIAL DIFFERENTIAL
|
||||||
|
0xB7 0x2211 # N-ARY SUMMATION
|
||||||
|
0xB8 0x220F # N-ARY PRODUCT
|
||||||
|
0xB9 0x03C0 # GREEK SMALL LETTER PI
|
||||||
|
0xBA 0x222B # INTEGRAL
|
||||||
|
0xBB 0x00AA # FEMININE ORDINAL INDICATOR
|
||||||
|
0xBC 0x00BA # MASCULINE ORDINAL INDICATOR
|
||||||
|
0xBD 0x03A9 # GREEK CAPITAL LETTER OMEGA
|
||||||
|
0xBE 0x0103 # LATIN SMALL LETTER A WITH BREVE
|
||||||
|
0xBF 0x0219 # LATIN SMALL LETTER S WITH COMMA BELOW # for Unicode 3.0 and later
|
||||||
|
0xC0 0x00BF # INVERTED QUESTION MARK
|
||||||
|
0xC1 0x00A1 # INVERTED EXCLAMATION MARK
|
||||||
|
0xC2 0x00AC # NOT SIGN
|
||||||
|
0xC3 0x221A # SQUARE ROOT
|
||||||
|
0xC4 0x0192 # LATIN SMALL LETTER F WITH HOOK
|
||||||
|
0xC5 0x2248 # ALMOST EQUAL TO
|
||||||
|
0xC6 0x2206 # INCREMENT
|
||||||
|
0xC7 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||||
|
0xC8 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||||
|
0xC9 0x2026 # HORIZONTAL ELLIPSIS
|
||||||
|
0xCA 0x00A0 # NO-BREAK SPACE
|
||||||
|
0xCB 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
|
||||||
|
0xCC 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
|
||||||
|
0xCD 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
|
||||||
|
0xCE 0x0152 # LATIN CAPITAL LIGATURE OE
|
||||||
|
0xCF 0x0153 # LATIN SMALL LIGATURE OE
|
||||||
|
0xD0 0x2013 # EN DASH
|
||||||
|
0xD1 0x2014 # EM DASH
|
||||||
|
0xD2 0x201C # LEFT DOUBLE QUOTATION MARK
|
||||||
|
0xD3 0x201D # RIGHT DOUBLE QUOTATION MARK
|
||||||
|
0xD4 0x2018 # LEFT SINGLE QUOTATION MARK
|
||||||
|
0xD5 0x2019 # RIGHT SINGLE QUOTATION MARK
|
||||||
|
0xD6 0x00F7 # DIVISION SIGN
|
||||||
|
0xD7 0x25CA # LOZENGE
|
||||||
|
0xD8 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
|
||||||
|
0xD9 0x0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
|
||||||
|
0xDA 0x2044 # FRACTION SLASH
|
||||||
|
0xDB 0x20AC # EURO SIGN
|
||||||
|
0xDC 0x2039 # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||||
|
0xDD 0x203A # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||||
|
0xDE 0x021A # LATIN CAPITAL LETTER T WITH COMMA BELOW # for Unicode 3.0 and later
|
||||||
|
0xDF 0x021B # LATIN SMALL LETTER T WITH COMMA BELOW # for Unicode 3.0 and later
|
||||||
|
0xE0 0x2021 # DOUBLE DAGGER
|
||||||
|
0xE1 0x00B7 # MIDDLE DOT
|
||||||
|
0xE2 0x201A # SINGLE LOW-9 QUOTATION MARK
|
||||||
|
0xE3 0x201E # DOUBLE LOW-9 QUOTATION MARK
|
||||||
|
0xE4 0x2030 # PER MILLE SIGN
|
||||||
|
0xE5 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||||
|
0xE6 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||||
|
0xE7 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
|
||||||
|
0xE8 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||||
|
0xE9 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
|
||||||
|
0xEA 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
|
||||||
|
0xEB 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||||
|
0xEC 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||||
|
0xED 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
|
||||||
|
0xEE 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
|
||||||
|
0xEF 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||||
|
0xF0 0xF8FF # Apple logo
|
||||||
|
0xF1 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
|
||||||
|
0xF2 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
|
||||||
|
0xF3 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||||
|
0xF4 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
|
||||||
|
0xF5 0x0131 # LATIN SMALL LETTER DOTLESS I
|
||||||
|
0xF6 0x02C6 # MODIFIER LETTER CIRCUMFLEX ACCENT
|
||||||
|
0xF7 0x02DC # SMALL TILDE
|
||||||
|
0xF8 0x00AF # MACRON
|
||||||
|
0xF9 0x02D8 # BREVE
|
||||||
|
0xFA 0x02D9 # DOT ABOVE
|
||||||
|
0xFB 0x02DA # RING ABOVE
|
||||||
|
0xFC 0x00B8 # CEDILLA
|
||||||
|
0xFD 0x02DD # DOUBLE ACUTE ACCENT
|
||||||
|
0xFE 0x02DB # OGONEK
|
||||||
|
0xFF 0x02C7 # CARON
|
||||||
341
data/apple/TURKISH.TXT
Normal file
341
data/apple/TURKISH.TXT
Normal file
@@ -0,0 +1,341 @@
|
|||||||
|
#=======================================================================
|
||||||
|
# File name: TURKISH.TXT
|
||||||
|
#
|
||||||
|
# Contents: Map (external version) from Mac OS Turkish
|
||||||
|
# character set to Unicode 2.1 and later.
|
||||||
|
#
|
||||||
|
# Copyright: (c) 1995-2002, 2005 by Apple Computer, Inc., all rights
|
||||||
|
# reserved.
|
||||||
|
#
|
||||||
|
# Contact: charsets@apple.com
|
||||||
|
#
|
||||||
|
# Changes:
|
||||||
|
#
|
||||||
|
# c02 2005-Apr-05 Update header comments. Matches internal xml
|
||||||
|
# <c1.1> and Text Encoding Converter 2.0.
|
||||||
|
# b3,c1 2002-Dec-19 Update URLs, notes. Matches internal
|
||||||
|
# utom<b1>.
|
||||||
|
# b02 1999-Sep-22 Update contact e-mail address. Matches
|
||||||
|
# internal utom<b1>, ufrm<b1>, and Text
|
||||||
|
# Encoding Converter version 1.5.
|
||||||
|
# n05 1998-Feb-05 Minor update to header comments
|
||||||
|
# n03 1997-Dec-14 Update to match internal utom<n5>, ufrm<n15>:
|
||||||
|
# Change standard mapping for 0xBD from U+2126
|
||||||
|
# to its canonical decomposition, U+03A9.
|
||||||
|
# n02 1995-Apr-15 First version (after fixing some typos).
|
||||||
|
# Matches internal ufrm<n4>.
|
||||||
|
#
|
||||||
|
# Standard header:
|
||||||
|
# ----------------
|
||||||
|
#
|
||||||
|
# Apple, the Apple logo, and Macintosh are trademarks of Apple
|
||||||
|
# Computer, Inc., registered in the United States and other countries.
|
||||||
|
# Unicode is a trademark of Unicode Inc. For the sake of brevity,
|
||||||
|
# throughout this document, "Macintosh" can be used to refer to
|
||||||
|
# Macintosh computers and "Unicode" can be used to refer to the
|
||||||
|
# Unicode standard.
|
||||||
|
#
|
||||||
|
# Apple Computer, Inc. ("Apple") makes no warranty or representation,
|
||||||
|
# either express or implied, with respect to this document and the
|
||||||
|
# included data, its quality, accuracy, or fitness for a particular
|
||||||
|
# purpose. In no event will Apple be liable for direct, indirect,
|
||||||
|
# special, incidental, or consequential damages resulting from any
|
||||||
|
# defect or inaccuracy in this document or the included data.
|
||||||
|
#
|
||||||
|
# These mapping tables and character lists are subject to change.
|
||||||
|
# The latest tables should be available from the following:
|
||||||
|
#
|
||||||
|
# <http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/>
|
||||||
|
#
|
||||||
|
# For general information about Mac OS encodings and these mapping
|
||||||
|
# tables, see the file "README.TXT".
|
||||||
|
#
|
||||||
|
# Format:
|
||||||
|
# -------
|
||||||
|
#
|
||||||
|
# Three tab-separated columns;
|
||||||
|
# '#' begins a comment which continues to the end of the line.
|
||||||
|
# Column #1 is the Mac OS Turkish code (in hex as 0xNN)
|
||||||
|
# Column #2 is the corresponding Unicode (in hex as 0xNNNN)
|
||||||
|
# Column #3 is a comment containing the Unicode name
|
||||||
|
#
|
||||||
|
# The entries are in Mac OS Turkish code order.
|
||||||
|
#
|
||||||
|
# Two of these mappings requires the use of a corporate character.
|
||||||
|
# See the file "CORPCHAR.TXT" and notes below.
|
||||||
|
#
|
||||||
|
# Control character mappings are not shown in this table, following
|
||||||
|
# the conventions of the standard UTC mapping tables. However, the
|
||||||
|
# Mac OS Turkish character set uses the standard control characters at
|
||||||
|
# 0x00-0x1F and 0x7F.
|
||||||
|
#
|
||||||
|
# Notes on Mac OS Turkish:
|
||||||
|
# ------------------------
|
||||||
|
#
|
||||||
|
# This is a legacy Mac OS encoding; in the Mac OS X Carbon and Cocoa
|
||||||
|
# environments, it is only supported via transcoding to and from
|
||||||
|
# Unicode.
|
||||||
|
#
|
||||||
|
# Mac OS Turkish is used for Turkish.
|
||||||
|
#
|
||||||
|
# The Mac OS Turkish encoding shares the script code smRoman
|
||||||
|
# (0) with the Mac OS Roman encoding. To determine if the Turkish
|
||||||
|
# encoding is being used, you must also check if the system region
|
||||||
|
# code is 24, verTurkey.
|
||||||
|
#
|
||||||
|
# This character set is a variant of standard Mac OS Roman. It adds
|
||||||
|
# upper & lower G with breve, upper & lower S with cedilla, upper I
|
||||||
|
# with dot, and moves the dotless lower i from its position at 0xF5
|
||||||
|
# in standard Mac OS Roman to a position at 0xDD here (leaving the
|
||||||
|
# 0xF5 code point undefined in Mac OS Turkish). This gives a total
|
||||||
|
# of 7 code point differences from standard Mac OS Roman.
|
||||||
|
#
|
||||||
|
# Unicode mapping issues and notes:
|
||||||
|
# ---------------------------------
|
||||||
|
#
|
||||||
|
# The following corporate zone Unicode characters are used in this
|
||||||
|
# mapping:
|
||||||
|
#
|
||||||
|
# 0xF8A0 undefined1, used to map the single undefined code point
|
||||||
|
# in Mac OS Turkish (to obtain roundtrip fidelity for all
|
||||||
|
# code points).
|
||||||
|
# 0xF8FF Apple logo
|
||||||
|
#
|
||||||
|
# NOTE: The graphic image associated with the Apple logo character
|
||||||
|
# is not authorized for use without permission of Apple, and
|
||||||
|
# unauthorized use might constitute trademark infringement.
|
||||||
|
#
|
||||||
|
# Details of mapping changes in each version:
|
||||||
|
# -------------------------------------------
|
||||||
|
#
|
||||||
|
# Changes from version n02 to version n03:
|
||||||
|
#
|
||||||
|
# - Change mapping of 0xBD from U+2126 to its canonical
|
||||||
|
# decomposition, U+03A9.
|
||||||
|
#
|
||||||
|
##################
|
||||||
|
|
||||||
|
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
|
||||||
|
#
|
||||||
|
0x80 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||||
|
0x81 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||||
|
0x82 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
|
||||||
|
0x83 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
|
||||||
|
0x84 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
|
||||||
|
0x85 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||||
|
0x86 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||||
|
0x87 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
|
||||||
|
0x88 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
|
||||||
|
0x89 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||||
|
0x8A 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
|
||||||
|
0x8B 0x00E3 # LATIN SMALL LETTER A WITH TILDE
|
||||||
|
0x8C 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
|
||||||
|
0x8D 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
|
||||||
|
0x8E 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
|
||||||
|
0x8F 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
|
||||||
|
0x90 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||||
|
0x91 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
|
||||||
|
0x92 0x00ED # LATIN SMALL LETTER I WITH ACUTE
|
||||||
|
0x93 0x00EC # LATIN SMALL LETTER I WITH GRAVE
|
||||||
|
0x94 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||||
|
0x95 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
|
||||||
|
0x96 0x00F1 # LATIN SMALL LETTER N WITH TILDE
|
||||||
|
0x97 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
|
||||||
|
0x98 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
|
||||||
|
0x99 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||||
|
0x9A 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
|
||||||
|
0x9B 0x00F5 # LATIN SMALL LETTER O WITH TILDE
|
||||||
|
0x9C 0x00FA # LATIN SMALL LETTER U WITH ACUTE
|
||||||
|
0x9D 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
|
||||||
|
0x9E 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||||
|
0x9F 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
|
||||||
|
0xA0 0x2020 # DAGGER
|
||||||
|
0xA1 0x00B0 # DEGREE SIGN
|
||||||
|
0xA2 0x00A2 # CENT SIGN
|
||||||
|
0xA3 0x00A3 # POUND SIGN
|
||||||
|
0xA4 0x00A7 # SECTION SIGN
|
||||||
|
0xA5 0x2022 # BULLET
|
||||||
|
0xA6 0x00B6 # PILCROW SIGN
|
||||||
|
0xA7 0x00DF # LATIN SMALL LETTER SHARP S
|
||||||
|
0xA8 0x00AE # REGISTERED SIGN
|
||||||
|
0xA9 0x00A9 # COPYRIGHT SIGN
|
||||||
|
0xAA 0x2122 # TRADE MARK SIGN
|
||||||
|
0xAB 0x00B4 # ACUTE ACCENT
|
||||||
|
0xAC 0x00A8 # DIAERESIS
|
||||||
|
0xAD 0x2260 # NOT EQUAL TO
|
||||||
|
0xAE 0x00C6 # LATIN CAPITAL LETTER AE
|
||||||
|
0xAF 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
|
||||||
|
0xB0 0x221E # INFINITY
|
||||||
|
0xB1 0x00B1 # PLUS-MINUS SIGN
|
||||||
|
0xB2 0x2264 # LESS-THAN OR EQUAL TO
|
||||||
|
0xB3 0x2265 # GREATER-THAN OR EQUAL TO
|
||||||
|
0xB4 0x00A5 # YEN SIGN
|
||||||
|
0xB5 0x00B5 # MICRO SIGN
|
||||||
|
0xB6 0x2202 # PARTIAL DIFFERENTIAL
|
||||||
|
0xB7 0x2211 # N-ARY SUMMATION
|
||||||
|
0xB8 0x220F # N-ARY PRODUCT
|
||||||
|
0xB9 0x03C0 # GREEK SMALL LETTER PI
|
||||||
|
0xBA 0x222B # INTEGRAL
|
||||||
|
0xBB 0x00AA # FEMININE ORDINAL INDICATOR
|
||||||
|
0xBC 0x00BA # MASCULINE ORDINAL INDICATOR
|
||||||
|
0xBD 0x03A9 # GREEK CAPITAL LETTER OMEGA
|
||||||
|
0xBE 0x00E6 # LATIN SMALL LETTER AE
|
||||||
|
0xBF 0x00F8 # LATIN SMALL LETTER O WITH STROKE
|
||||||
|
0xC0 0x00BF # INVERTED QUESTION MARK
|
||||||
|
0xC1 0x00A1 # INVERTED EXCLAMATION MARK
|
||||||
|
0xC2 0x00AC # NOT SIGN
|
||||||
|
0xC3 0x221A # SQUARE ROOT
|
||||||
|
0xC4 0x0192 # LATIN SMALL LETTER F WITH HOOK
|
||||||
|
0xC5 0x2248 # ALMOST EQUAL TO
|
||||||
|
0xC6 0x2206 # INCREMENT
|
||||||
|
0xC7 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||||
|
0xC8 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||||
|
0xC9 0x2026 # HORIZONTAL ELLIPSIS
|
||||||
|
0xCA 0x00A0 # NO-BREAK SPACE
|
||||||
|
0xCB 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
|
||||||
|
0xCC 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
|
||||||
|
0xCD 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
|
||||||
|
0xCE 0x0152 # LATIN CAPITAL LIGATURE OE
|
||||||
|
0xCF 0x0153 # LATIN SMALL LIGATURE OE
|
||||||
|
0xD0 0x2013 # EN DASH
|
||||||
|
0xD1 0x2014 # EM DASH
|
||||||
|
0xD2 0x201C # LEFT DOUBLE QUOTATION MARK
|
||||||
|
0xD3 0x201D # RIGHT DOUBLE QUOTATION MARK
|
||||||
|
0xD4 0x2018 # LEFT SINGLE QUOTATION MARK
|
||||||
|
0xD5 0x2019 # RIGHT SINGLE QUOTATION MARK
|
||||||
|
0xD6 0x00F7 # DIVISION SIGN
|
||||||
|
0xD7 0x25CA # LOZENGE
|
||||||
|
0xD8 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
|
||||||
|
0xD9 0x0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
|
||||||
|
0xDA 0x011E # LATIN CAPITAL LETTER G WITH BREVE
|
||||||
|
0xDB 0x011F # LATIN SMALL LETTER G WITH BREVE
|
||||||
|
0xDC 0x0130 # LATIN CAPITAL LETTER I WITH DOT ABOVE
|
||||||
|
0xDD 0x0131 # LATIN SMALL LETTER DOTLESS I
|
||||||
|
0xDE 0x015E # LATIN CAPITAL LETTER S WITH CEDILLA
|
||||||
|
0xDF 0x015F # LATIN SMALL LETTER S WITH CEDILLA
|
||||||
|
0xE0 0x2021 # DOUBLE DAGGER
|
||||||
|
0xE1 0x00B7 # MIDDLE DOT
|
||||||
|
0xE2 0x201A # SINGLE LOW-9 QUOTATION MARK
|
||||||
|
0xE3 0x201E # DOUBLE LOW-9 QUOTATION MARK
|
||||||
|
0xE4 0x2030 # PER MILLE SIGN
|
||||||
|
0xE5 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||||
|
0xE6 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||||
|
0xE7 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
|
||||||
|
0xE8 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
|
||||||
|
0xE9 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
|
||||||
|
0xEA 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
|
||||||
|
0xEB 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||||
|
0xEC 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||||
|
0xED 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
|
||||||
|
0xEE 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
|
||||||
|
0xEF 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||||
|
0xF0 0xF8FF # Apple logo
|
||||||
|
0xF1 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
|
||||||
|
0xF2 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
|
||||||
|
0xF3 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||||
|
0xF4 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
|
||||||
|
0xF5 0xF8A0 # undefined1
|
||||||
|
0xF6 0x02C6 # MODIFIER LETTER CIRCUMFLEX ACCENT
|
||||||
|
0xF7 0x02DC # SMALL TILDE
|
||||||
|
0xF8 0x00AF # MACRON
|
||||||
|
0xF9 0x02D8 # BREVE
|
||||||
|
0xFA 0x02D9 # DOT ABOVE
|
||||||
|
0xFB 0x02DA # RING ABOVE
|
||||||
|
0xFC 0x00B8 # CEDILLA
|
||||||
|
0xFD 0x02DD # DOUBLE ACUTE ACCENT
|
||||||
|
0xFE 0x02DB # OGONEK
|
||||||
|
0xFF 0x02C7 # CARON
|
||||||
106
data/apple/UKRAINE.TXT
Normal file
106
data/apple/UKRAINE.TXT
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
#=======================================================================
|
||||||
|
# File name: UKRAINE.TXT
|
||||||
|
#
|
||||||
|
# Contents: Notes on Mac OS Ukrainian character set
|
||||||
|
#
|
||||||
|
# Copyright: (c) 1995-2002, 2005 by Apple Computer, Inc., all rights
|
||||||
|
# reserved.
|
||||||
|
#
|
||||||
|
# Contact: charsets@apple.com
|
||||||
|
#
|
||||||
|
# Changes:
|
||||||
|
#
|
||||||
|
# c02 2005-Apr-05 Update header comments.
|
||||||
|
# b3,c1 2002-Dec-19 Update URLs. Matches internal utom<b1>.
|
||||||
|
# b02 1999-Sep-22 Encoding changed for Mac OS 9.0 to merge
|
||||||
|
# with Mac OS Cyrillic and support EURO SIGN;
|
||||||
|
# change mappings for 0xFF. For Mac OS 9.0
|
||||||
|
# there is no longer a separate Mac OS
|
||||||
|
# Ukrainian character set; the mappings are
|
||||||
|
# in CYRILLIC.TXT. Update contact e-mail
|
||||||
|
# address. Matches internal utom<b1>, ufrm<b1>,
|
||||||
|
# and Text Encoding Converter version 1.5.
|
||||||
|
# n04 1998-Feb-05 Update header comments to new format; no
|
||||||
|
# mapping changes. Matches internal utom<2>,
|
||||||
|
# ufrm<13>, and Text Encoding Converter
|
||||||
|
# version 1.3.
|
||||||
|
# n02 1995-Apr-15 First version (after fixing some typos).
|
||||||
|
# Matches internal ufrm<4>.
|
||||||
|
#
|
||||||
|
# Standard header:
|
||||||
|
# ----------------
|
||||||
|
#
|
||||||
|
# Apple, the Apple logo, and Macintosh are trademarks of Apple
|
||||||
|
# Computer, Inc., registered in the United States and other countries.
|
||||||
|
# Unicode is a trademark of Unicode Inc. For the sake of brevity,
|
||||||
|
# throughout this document, "Macintosh" can be used to refer to
|
||||||
|
# Macintosh computers and "Unicode" can be used to refer to the
|
||||||
|
# Unicode standard.
|
||||||
|
#
|
||||||
|
# Apple Computer, Inc. ("Apple") makes no warranty or representation,
|
||||||
|
# either express or implied, with respect to this document and the
|
||||||
|
# included data, its quality, accuracy, or fitness for a particular
|
||||||
|
# purpose. In no event will Apple be liable for direct, indirect,
|
||||||
|
# special, incidental, or consequential damages resulting from any
|
||||||
|
# defect or inaccuracy in this document or the included data.
|
||||||
|
#
|
||||||
|
# These mapping tables and character lists are subject to change.
|
||||||
|
# The latest tables should be available from the following:
|
||||||
|
#
|
||||||
|
# <http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/>
|
||||||
|
#
|
||||||
|
# For general information about Mac OS encodings and these mapping
|
||||||
|
# tables, see the file "README.TXT".
|
||||||
|
#
|
||||||
|
# Notes on Mac OS Ukrainian and Mac OS Cyrillic:
|
||||||
|
# ----------------------------------------------
|
||||||
|
#
|
||||||
|
# Before Mac OS 9.0, there were two separate Slavic Cyrillic
|
||||||
|
# encodings for the Mac OS:
|
||||||
|
#
|
||||||
|
# 1. The Cyrillic currency sign variant (used for localized Russian
|
||||||
|
# and Bulgarian systems), which had the following:
|
||||||
|
# 0xA2 U+00A2 CENT SIGN
|
||||||
|
# 0xB6 U+2202 PARTIAL DIFFERENTIAL
|
||||||
|
# 0xFF U+00A4 CURRENCY SIGN
|
||||||
|
#
|
||||||
|
# 2. The Ukrainian currency sign variant (used for localized Ukrainian
|
||||||
|
# systems and the pre-9.0 Cyrillic Language Kit), which had the
|
||||||
|
# following:
|
||||||
|
# 0xA2 U+0490 CYRILLIC CAPITAL LETTER GHE WITH UPTURN
|
||||||
|
# 0xB6 U+0491 CYRILLIC SMALL LETTER GHE WITH UPTURN
|
||||||
|
# 0xFF U+00A4 CURRENCY SIGN
|
||||||
|
#
|
||||||
|
# Before Mac OS 9.0, The Ukrainian currency sign variant shared the
|
||||||
|
# script code smCyrillic (7) with the Cyrillic currency sign variant.
|
||||||
|
# The Ukrainian currency sign variant was being used if one of the
|
||||||
|
# following was true:
|
||||||
|
# - The system region code was 62, verUkraine (indicates Ukrainian
|
||||||
|
# localized system), or
|
||||||
|
# - The system script was not 7, smCyrillic (indicates Cyrillic
|
||||||
|
# Language Kit instead of localized system).
|
||||||
|
#
|
||||||
|
# For Mac OS 9.0 and later, both currency sign variants were replaced
|
||||||
|
# with a new Euro sign version of Mac OS Cyrillic, which is similar to
|
||||||
|
# the old Ukrainian currency sign variant but changes 0xFF to EURO
|
||||||
|
# SIGN. Mappings for this are in CYRILLIC.TXT.
|
||||||
|
#
|
||||||
|
# Note: There is a common glyph variation in Ukrainian, in which the
|
||||||
|
# glyph for CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I may or
|
||||||
|
# may not have a dot above.
|
||||||
|
#
|
||||||
|
# Details of mapping changes in each version:
|
||||||
|
# -------------------------------------------
|
||||||
|
#
|
||||||
|
# Changes from version n04 to version b02:
|
||||||
|
#
|
||||||
|
# - Encoding changed for Mac OS 9.0 to merge with Mac OS Cyrillic and
|
||||||
|
# support EURO SIGN; 0xFF changed from U+00A4 to U+20AC. For Mac OS
|
||||||
|
# 9.0 there is no longer a separate Mac OS Ukrainian character set, so
|
||||||
|
# the mappings here are deleted; see the mappings in CYRILLIC.TXT.
|
||||||
|
#
|
||||||
|
##################
|
||||||
|
|
||||||
|
##################
|
||||||
|
# For mappings, see CYRILLIC.TXT
|
||||||
|
##################
|
||||||
842
src/lib.rs
842
src/lib.rs
@@ -1,21 +1,34 @@
|
|||||||
//! Bidirectional conversion between classic Mac OS text encodings and Unicode.
|
//! Bidirectional conversion between classic Mac OS text encodings and Unicode.
|
||||||
//!
|
//!
|
||||||
//! Classic Mac OS named files, volumes, and Finder comments in one of a family
|
//! Classic Mac OS named files, volumes, and Finder comments in one of a family
|
||||||
//! of script encodings — Mac OS Roman and its regional/CJK relatives — selected
|
//! of script encodings — Mac OS Roman and its regional relatives — selected by
|
||||||
//! by a *script code*. This crate converts those bytes to and from Unicode with
|
//! a *script code* (HFS) or a *text encoding* value (HFS+). This crate converts
|
||||||
//! emulator-grade fidelity: it owns the canonical tables rather than linking ICU,
|
//! those bytes to and from Unicode with emulator-grade fidelity: it owns the
|
||||||
//! so it stays small, self-contained, and cross-compiles cleanly.
|
//! canonical tables rather than linking ICU, so it stays small, self-contained,
|
||||||
|
//! and cross-compiles cleanly.
|
||||||
//!
|
//!
|
||||||
//! Today it implements **Mac OS Roman** (both the pre- and post-8.5 revisions).
|
//! The tables are **Apple's** mappings as published by the Unicode Consortium
|
||||||
//! The [`AppleEncoding`] enum and [`AppleEncoding::from_script_code`] are the
|
//! (`VENDORS/APPLE/`), vendored in `data/apple/` and generated by
|
||||||
//! growth points for the remaining single-byte scripts and the (table-heavy,
|
//! `tools/gen_tables.py`. Twelve single-byte encodings are implemented; the
|
||||||
//! codegen'd) double-byte CJK encodings.
|
//! (table-heavy) double-byte CJK encodings and the bidirectional/complex
|
||||||
|
//! scripts are future growth points behind the same API.
|
||||||
|
//!
|
||||||
|
//! Apple revised several tables when the Euro sign rolled out — at different
|
||||||
|
//! byte positions and OS versions per encoding. Each affected encoding carries
|
||||||
|
//! a [`Revision`]: the default [`Modern`](Revision::Modern) is the current
|
||||||
|
//! table, [`Classic`](Revision::Classic) the pre-Euro one for emulator
|
||||||
|
//! fidelity against older systems.
|
||||||
|
//!
|
||||||
|
//! Decoding is fallible for API uniformity, though today only Mac OS Greek at
|
||||||
|
//! the classic revision has an undefined byte (`0xFF`); the `decode_lossy`
|
||||||
|
//! method substitutes U+FFFD instead. Every byte an encoding decodes
|
||||||
|
//! re-encodes to itself.
|
||||||
//!
|
//!
|
||||||
//! ```
|
//! ```
|
||||||
//! use apple_encodings::AppleEncoding;
|
//! use apple_encodings::AppleEncoding;
|
||||||
//!
|
//!
|
||||||
//! let enc = AppleEncoding::default(); // Mac OS Roman, post-8.5
|
//! let enc = AppleEncoding::default(); // Mac OS Roman, modern revision
|
||||||
//! assert_eq!(enc.decode(b"Caf\x8e"), "Café");
|
//! assert_eq!(enc.decode(b"Caf\x8e").unwrap(), "Café");
|
||||||
//! assert_eq!(enc.encode("Café").unwrap(), b"Caf\x8e");
|
//! assert_eq!(enc.encode("Café").unwrap(), b"Caf\x8e");
|
||||||
//! ```
|
//! ```
|
||||||
#![forbid(unsafe_code)]
|
#![forbid(unsafe_code)]
|
||||||
@@ -23,64 +36,278 @@
|
|||||||
|
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
|
||||||
mod mac_roman;
|
mod tables;
|
||||||
|
|
||||||
pub use mac_roman::MacRomanRevision;
|
use tables::mac;
|
||||||
|
|
||||||
/// Mac script code for the Roman script system (`smRoman`).
|
/// Which revision of an encoding's table to use.
|
||||||
///
|
///
|
||||||
/// This is the value carried in the Finder Info `fdScript` byte; pass it to
|
/// The Euro rollout (Mac OS 8.5 for the Roman regional family, 9.0 for
|
||||||
/// [`AppleEncoding::from_script_code`] to pick the matching encoding.
|
/// Cyrillic, 9.2.2 for Greek) changed a handful of byte slots per encoding.
|
||||||
pub const SCRIPT_ROMAN: u8 = 0;
|
/// Defaults to [`Modern`](Revision::Modern); choose
|
||||||
|
/// [`Classic`](Revision::Classic) for pre-Euro / emulator fidelity.
|
||||||
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
|
||||||
|
pub enum Revision {
|
||||||
|
/// The current table: Euro sign present where the encoding gained one.
|
||||||
|
#[default]
|
||||||
|
Modern,
|
||||||
|
/// The pre-Euro table (pre-8.5 / pre-9.0 / pre-9.2.2 per encoding).
|
||||||
|
Classic,
|
||||||
|
}
|
||||||
|
|
||||||
/// A classic Mac OS text encoding.
|
/// A classic Mac OS text encoding.
|
||||||
///
|
///
|
||||||
/// Non-exhaustive: more script systems will be added without it being a breaking
|
/// Variants carry a [`Revision`] where Apple revised the table for the Euro
|
||||||
/// change, so external matches must include a wildcard arm.
|
/// rollout; the rest never changed. Mac OS Ukrainian is the pre-9.0 variant
|
||||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
/// of Cyrillic that Mac OS 9.0 retired (modern Cyrillic *is* its successor),
|
||||||
|
/// so it has no revision of its own.
|
||||||
|
///
|
||||||
|
/// Non-exhaustive: more script systems will be added without it being a
|
||||||
|
/// breaking change, so external matches must include a wildcard arm.
|
||||||
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||||
#[non_exhaustive]
|
#[non_exhaustive]
|
||||||
pub enum AppleEncoding {
|
pub enum AppleEncoding {
|
||||||
/// Mac OS Roman, at the given table revision.
|
/// Mac OS Roman — the base Latin-script encoding.
|
||||||
MacRoman(MacRomanRevision),
|
MacRoman(Revision),
|
||||||
|
/// Mac OS Greek.
|
||||||
|
MacGreek(Revision),
|
||||||
|
/// Mac OS Cyrillic (the Mac OS 9.0 unified table at
|
||||||
|
/// [`Modern`](Revision::Modern); the pre-9.0 Russian/Bulgarian
|
||||||
|
/// currency-sign variant at [`Classic`](Revision::Classic)).
|
||||||
|
MacCyrillic(Revision),
|
||||||
|
/// Mac OS Central European Roman (Czech, Slovak, Polish, Hungarian,
|
||||||
|
/// Baltic).
|
||||||
|
MacCentralEurRoman,
|
||||||
|
/// Mac OS Turkish. Byte `0xF5` is Apple's "undefined character"
|
||||||
|
/// (`U+F8A0`), preserved as mapped for round-trip fidelity.
|
||||||
|
MacTurkish,
|
||||||
|
/// Mac OS Croatian.
|
||||||
|
MacCroatian(Revision),
|
||||||
|
/// Mac OS Icelandic.
|
||||||
|
MacIcelandic(Revision),
|
||||||
|
/// Mac OS Romanian.
|
||||||
|
MacRomanian(Revision),
|
||||||
|
/// Mac OS Celtic.
|
||||||
|
MacCeltic(Revision),
|
||||||
|
/// Mac OS Gaelic.
|
||||||
|
MacGaelic(Revision),
|
||||||
|
/// Mac OS Ukrainian — the pre-9.0 Ukrainian currency-sign variant of
|
||||||
|
/// Cyrillic (identical to modern Cyrillic except `0xFF` is `¤`).
|
||||||
|
MacUkrainian,
|
||||||
|
/// Mac OS Inuit (Inuktitut syllabics).
|
||||||
|
MacInuit,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for AppleEncoding {
|
impl Default for AppleEncoding {
|
||||||
/// Mac OS Roman at the modern (post-8.5) revision — the common default.
|
/// Mac OS Roman at the modern revision — the common default.
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
Self::MacRoman(MacRomanRevision::Modern)
|
Self::MacRoman(Revision::Modern)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl AppleEncoding {
|
impl AppleEncoding {
|
||||||
/// Select an encoding from a Mac `fdScript` script code, or `None` if this
|
/// Every encoding this crate implements, at the default
|
||||||
/// crate does not yet implement it.
|
/// ([`Modern`](Revision::Modern)) revision, in text-encoding order.
|
||||||
|
pub const ALL: &'static [AppleEncoding] = &[
|
||||||
|
Self::MacRoman(Revision::Modern),
|
||||||
|
Self::MacGreek(Revision::Modern),
|
||||||
|
Self::MacCyrillic(Revision::Modern),
|
||||||
|
Self::MacCentralEurRoman,
|
||||||
|
Self::MacTurkish,
|
||||||
|
Self::MacCroatian(Revision::Modern),
|
||||||
|
Self::MacIcelandic(Revision::Modern),
|
||||||
|
Self::MacRomanian(Revision::Modern),
|
||||||
|
Self::MacCeltic(Revision::Modern),
|
||||||
|
Self::MacGaelic(Revision::Modern),
|
||||||
|
Self::MacUkrainian,
|
||||||
|
Self::MacInuit,
|
||||||
|
];
|
||||||
|
|
||||||
|
/// Select an encoding from its Mac `TextEncoding` base value (the
|
||||||
|
/// `kTextEncodingMac…` constants, as carried in the HFS+ `textEncoding`
|
||||||
|
/// hint), or `None` if this crate does not implement it. Resolves to the
|
||||||
|
/// modern revision; callers wanting pre-Euro fidelity construct the
|
||||||
|
/// variant with [`Revision::Classic`] directly.
|
||||||
|
#[must_use]
|
||||||
|
pub fn from_text_encoding(base: u32) -> Option<Self> {
|
||||||
|
Self::ALL
|
||||||
|
.iter()
|
||||||
|
.copied()
|
||||||
|
.find(|enc| enc.text_encoding() == base)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Select an encoding from a Mac script code (`smRoman` = 0, …), or
|
||||||
|
/// `None` if this crate does not implement it. For a raw Finder Info
|
||||||
|
/// `fdScript` byte — which carries a validity flag in bit 7 — use
|
||||||
|
/// [`from_fd_script`](Self::from_fd_script) instead.
|
||||||
///
|
///
|
||||||
/// Roman resolves to the modern revision; callers wanting pre-8.5 fidelity
|
/// A script code names a script *system*, not a table: the Roman regional
|
||||||
/// construct [`AppleEncoding::MacRoman`] with [`MacRomanRevision::Classic`].
|
/// variants (Turkish, Croatian, …) all report script 0 and are selected by
|
||||||
|
/// the system's region code, so script 0 resolves to plain Mac OS Roman —
|
||||||
|
/// use [`from_text_encoding`](Self::from_text_encoding) when the regional
|
||||||
|
/// distinction matters. Script 28 is nominally `smEthiopic`, but Apple
|
||||||
|
/// assigned it to Mac OS Inuit (per `TextCommon.h`), which is what it
|
||||||
|
/// resolves to here. Resolves to the modern revision.
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn from_script_code(code: u8) -> Option<Self> {
|
pub fn from_script_code(code: u8) -> Option<Self> {
|
||||||
match code {
|
match code {
|
||||||
SCRIPT_ROMAN => Some(Self::MacRoman(MacRomanRevision::default())),
|
0 => Some(Self::MacRoman(Revision::Modern)),
|
||||||
|
6 => Some(Self::MacGreek(Revision::Modern)),
|
||||||
|
7 => Some(Self::MacCyrillic(Revision::Modern)),
|
||||||
|
28 => Some(Self::MacInuit),
|
||||||
|
29 => Some(Self::MacCentralEurRoman),
|
||||||
_ => None,
|
_ => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Decode every byte of `bytes` to Unicode, faithfully (control bytes and a
|
/// Select an encoding from a raw Finder Info `fdScript` byte.
|
||||||
/// trailing `NUL` included). Use [`decode_cstr`](Self::decode_cstr) for
|
///
|
||||||
/// `NUL`-terminated fixed-width fields.
|
/// On disk, the byte is a script code only when its high bit is set (the
|
||||||
|
/// low seven bits are then the code — a Cyrillic system writes `0x87`,
|
||||||
|
/// not `0x07`). With the high bit clear the field holds Finder flags
|
||||||
|
/// instead, meaning *no per-file script was recorded*: this returns
|
||||||
|
/// `None` and the caller falls back to its default (conventionally Mac
|
||||||
|
/// OS Roman).
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn decode(self, bytes: &[u8]) -> String {
|
pub fn from_fd_script(byte: u8) -> Option<Self> {
|
||||||
|
(byte & 0x80 != 0)
|
||||||
|
.then_some(byte & 0x7F)
|
||||||
|
.and_then(Self::from_script_code)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// The Mac `TextEncoding` base value (`kTextEncodingMacRoman` = 0, …).
|
||||||
|
/// Revisions share their encoding's base value.
|
||||||
|
#[must_use]
|
||||||
|
pub fn text_encoding(self) -> u32 {
|
||||||
match self {
|
match self {
|
||||||
Self::MacRoman(revision) => decode_single_byte(bytes, &mac_roman::high_table(revision)),
|
Self::MacRoman(_) => 0,
|
||||||
|
Self::MacGreek(_) => 6,
|
||||||
|
Self::MacCyrillic(_) => 7,
|
||||||
|
Self::MacCentralEurRoman => 29,
|
||||||
|
Self::MacTurkish => 35,
|
||||||
|
Self::MacCroatian(_) => 36,
|
||||||
|
Self::MacIcelandic(_) => 37,
|
||||||
|
Self::MacRomanian(_) => 38,
|
||||||
|
Self::MacCeltic(_) => 39,
|
||||||
|
Self::MacGaelic(_) => 40,
|
||||||
|
Self::MacUkrainian => 0x98,
|
||||||
|
Self::MacInuit => 0xEC,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Decode up to (but not including) the first `NUL` byte — the convention for
|
/// The Mac script code (`smRoman` = 0, …) this encoding serves. Not
|
||||||
/// classic fixed-width name fields.
|
/// injective: every Roman regional variant reports 0, and Ukrainian
|
||||||
|
/// shares `smCyrillic` (7). Inuit occupies script 28 per `TextCommon.h`.
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn decode_cstr(self, bytes: &[u8]) -> String {
|
pub fn script_code(self) -> u8 {
|
||||||
let end = bytes.iter().position(|&b| b == 0).unwrap_or(bytes.len());
|
match self {
|
||||||
self.decode(&bytes[..end])
|
Self::MacRoman(_)
|
||||||
|
| Self::MacTurkish
|
||||||
|
| Self::MacCroatian(_)
|
||||||
|
| Self::MacIcelandic(_)
|
||||||
|
| Self::MacRomanian(_)
|
||||||
|
| Self::MacCeltic(_)
|
||||||
|
| Self::MacGaelic(_) => 0,
|
||||||
|
Self::MacGreek(_) => 6,
|
||||||
|
Self::MacCyrillic(_) | Self::MacUkrainian => 7,
|
||||||
|
Self::MacInuit => 28,
|
||||||
|
Self::MacCentralEurRoman => 29,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// A short human-readable name, e.g. "Mac OS Roman". Revision-independent;
|
||||||
|
/// [`Display`](fmt::Display) appends the pre-Euro qualifier.
|
||||||
|
#[must_use]
|
||||||
|
pub fn name(self) -> &'static str {
|
||||||
|
match self {
|
||||||
|
Self::MacRoman(_) => "Mac OS Roman",
|
||||||
|
Self::MacGreek(_) => "Mac OS Greek",
|
||||||
|
Self::MacCyrillic(_) => "Mac OS Cyrillic",
|
||||||
|
Self::MacCentralEurRoman => "Mac OS Central European Roman",
|
||||||
|
Self::MacTurkish => "Mac OS Turkish",
|
||||||
|
Self::MacCroatian(_) => "Mac OS Croatian",
|
||||||
|
Self::MacIcelandic(_) => "Mac OS Icelandic",
|
||||||
|
Self::MacRomanian(_) => "Mac OS Romanian",
|
||||||
|
Self::MacCeltic(_) => "Mac OS Celtic",
|
||||||
|
Self::MacGaelic(_) => "Mac OS Gaelic",
|
||||||
|
Self::MacUkrainian => "Mac OS Ukrainian",
|
||||||
|
Self::MacInuit => "Mac OS Inuit",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// 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 a byte value the encoding
|
||||||
|
/// leaves unmapped. Today that is only `0xFF` under Mac OS Greek at
|
||||||
|
/// [`Revision::Classic`]; every other table is total.
|
||||||
|
pub fn decode(self, bytes: &[u8]) -> Result<String, DecodeError> {
|
||||||
|
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 encoding 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(REPLACEMENT))
|
||||||
|
.collect()
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Decode up to (but not including) the first `NUL` byte, for
|
||||||
|
/// NUL-terminated or NUL-padded fields. Note that classic Mac OS *name*
|
||||||
|
/// fields (`Str27`/`Str31`) are length-prefixed Pascal strings — use
|
||||||
|
/// [`decode_pstr`](Self::decode_pstr) for those.
|
||||||
|
///
|
||||||
|
/// # Errors
|
||||||
|
///
|
||||||
|
/// Returns [`DecodeError`] as [`decode`](Self::decode) does.
|
||||||
|
pub fn decode_cstr(self, bytes: &[u8]) -> Result<String, DecodeError> {
|
||||||
|
self.decode(cstr_prefix(bytes))
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Decode a Pascal string (`Str255`/`Str31`/`Str27`): the first byte is
|
||||||
|
/// the length, the following `length` bytes the text — the convention for
|
||||||
|
/// classic Mac OS name fields. Trailing padding beyond the length is
|
||||||
|
/// ignored.
|
||||||
|
///
|
||||||
|
/// # Errors
|
||||||
|
///
|
||||||
|
/// Returns [`DecodeError::TruncatedPascalString`] if the buffer is empty
|
||||||
|
/// or shorter than the declared length (a corrupt record, not a value to
|
||||||
|
/// silently clamp), and otherwise [`DecodeError`] as
|
||||||
|
/// [`decode`](Self::decode) does.
|
||||||
|
pub fn decode_pstr(self, bytes: &[u8]) -> Result<String, DecodeError> {
|
||||||
|
let [length, rest @ ..] = bytes else {
|
||||||
|
return Err(DecodeError::TruncatedPascalString {
|
||||||
|
declared: 0,
|
||||||
|
available: 0,
|
||||||
|
encoding: self,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
let declared = usize::from(*length);
|
||||||
|
let Some(text) = rest.get(..declared) else {
|
||||||
|
return Err(DecodeError::TruncatedPascalString {
|
||||||
|
declared,
|
||||||
|
available: rest.len(),
|
||||||
|
encoding: self,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
self.decode(text)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Encode `text` back to this encoding's bytes.
|
/// Encode `text` back to this encoding's bytes.
|
||||||
@@ -89,27 +316,117 @@ impl AppleEncoding {
|
|||||||
///
|
///
|
||||||
/// Returns [`EncodeError::Unmappable`] for the first character with no
|
/// Returns [`EncodeError::Unmappable`] for the first character with no
|
||||||
/// representation in this encoding (e.g. a Euro sign under
|
/// representation in this encoding (e.g. a Euro sign under
|
||||||
/// [`MacRomanRevision::Classic`]).
|
/// [`Revision::Classic`], or any character outside the script).
|
||||||
pub fn encode(self, text: &str) -> Result<Vec<u8>, EncodeError> {
|
pub fn encode(self, text: &str) -> Result<Vec<u8>, 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 encoding and revision.
|
||||||
|
fn table(self) -> &'static [Option<char>; 256] {
|
||||||
|
use Revision::{Classic, Modern};
|
||||||
match self {
|
match self {
|
||||||
Self::MacRoman(revision) => {
|
Self::MacRoman(Modern) => &mac::MAC_ROMAN,
|
||||||
encode_single_byte(text, &mac_roman::high_table(revision), self)
|
Self::MacRoman(Classic) => &mac::MAC_ROMAN_CLASSIC,
|
||||||
}
|
Self::MacGreek(Modern) => &mac::MAC_GREEK,
|
||||||
|
Self::MacGreek(Classic) => &mac::MAC_GREEK_CLASSIC,
|
||||||
|
Self::MacCyrillic(Modern) => &mac::MAC_CYRILLIC,
|
||||||
|
Self::MacCyrillic(Classic) => &mac::MAC_CYRILLIC_CLASSIC,
|
||||||
|
Self::MacCentralEurRoman => &mac::MAC_CENTRAL_EUR_ROMAN,
|
||||||
|
Self::MacTurkish => &mac::MAC_TURKISH,
|
||||||
|
Self::MacCroatian(Modern) => &mac::MAC_CROATIAN,
|
||||||
|
Self::MacCroatian(Classic) => &mac::MAC_CROATIAN_CLASSIC,
|
||||||
|
Self::MacIcelandic(Modern) => &mac::MAC_ICELANDIC,
|
||||||
|
Self::MacIcelandic(Classic) => &mac::MAC_ICELANDIC_CLASSIC,
|
||||||
|
Self::MacRomanian(Modern) => &mac::MAC_ROMANIAN,
|
||||||
|
Self::MacRomanian(Classic) => &mac::MAC_ROMANIAN_CLASSIC,
|
||||||
|
Self::MacCeltic(Modern) => &mac::MAC_CELTIC,
|
||||||
|
Self::MacCeltic(Classic) => &mac::MAC_CELTIC_CLASSIC,
|
||||||
|
Self::MacGaelic(Modern) => &mac::MAC_GAELIC,
|
||||||
|
Self::MacGaelic(Classic) => &mac::MAC_GAELIC_CLASSIC,
|
||||||
|
Self::MacUkrainian => &mac::MAC_UKRAINIAN,
|
||||||
|
Self::MacInuit => &mac::MAC_INUIT,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// The Euro-cutover qualifier for the classic revision, or `None` when
|
||||||
|
/// this variant is not a classic revision.
|
||||||
|
fn classic_qualifier(self) -> Option<&'static str> {
|
||||||
|
match self {
|
||||||
|
Self::MacRoman(Revision::Classic)
|
||||||
|
| Self::MacCroatian(Revision::Classic)
|
||||||
|
| Self::MacIcelandic(Revision::Classic)
|
||||||
|
| Self::MacRomanian(Revision::Classic)
|
||||||
|
| Self::MacCeltic(Revision::Classic)
|
||||||
|
| Self::MacGaelic(Revision::Classic) => Some("pre-8.5"),
|
||||||
|
Self::MacCyrillic(Revision::Classic) => Some("pre-9.0"),
|
||||||
|
Self::MacGreek(Revision::Classic) => Some("pre-9.2.2"),
|
||||||
|
_ => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl fmt::Display for AppleEncoding {
|
impl fmt::Display for AppleEncoding {
|
||||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||||
match self {
|
match self.classic_qualifier() {
|
||||||
Self::MacRoman(MacRomanRevision::Modern) => f.write_str("Mac OS Roman (post-8.5)"),
|
Some(qualifier) => write!(f, "{} ({qualifier})", self.name()),
|
||||||
Self::MacRoman(MacRomanRevision::Classic) => f.write_str("Mac OS Roman (pre-8.5)"),
|
None => f.write_str(self.name()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A character could not be encoded into the target Mac encoding.
|
/// U+FFFD REPLACEMENT CHARACTER, used by the lossy decoder.
|
||||||
|
const REPLACEMENT: char = '\u{FFFD}';
|
||||||
|
|
||||||
|
/// Everything before the first `NUL` byte (or all of `bytes` if there is
|
||||||
|
/// none) — the trim behind [`AppleEncoding::decode_cstr`].
|
||||||
|
fn cstr_prefix(bytes: &[u8]) -> &[u8] {
|
||||||
|
let end = bytes.iter().position(|&b| b == 0).unwrap_or(bytes.len());
|
||||||
|
&bytes[..end]
|
||||||
|
}
|
||||||
|
|
||||||
|
/// A byte sequence could not be decoded from the source encoding.
|
||||||
|
///
|
||||||
|
/// Non-exhaustive so future variants are not a breaking change.
|
||||||
#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
|
#[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 encoding that leaves it undefined.
|
||||||
|
encoding: AppleEncoding,
|
||||||
|
},
|
||||||
|
/// A Pascal string's buffer was empty or shorter than its declared
|
||||||
|
/// length.
|
||||||
|
#[error(
|
||||||
|
"Pascal string declares {declared} bytes but only {available} are present ({encoding})"
|
||||||
|
)]
|
||||||
|
TruncatedPascalString {
|
||||||
|
/// The length the leading byte declared (0 if the buffer was empty).
|
||||||
|
declared: usize,
|
||||||
|
/// The bytes actually available after the length byte.
|
||||||
|
available: usize,
|
||||||
|
/// The encoding being decoded.
|
||||||
|
encoding: AppleEncoding,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
/// A character could not be encoded into the target Mac encoding.
|
||||||
|
///
|
||||||
|
/// Non-exhaustive so future variants are not a breaking change.
|
||||||
|
#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
|
||||||
|
#[non_exhaustive]
|
||||||
pub enum EncodeError {
|
pub enum EncodeError {
|
||||||
/// `ch` has no representation in `encoding`.
|
/// `ch` has no representation in `encoding`.
|
||||||
#[error("character {ch:?} has no mapping in {encoding}")]
|
#[error("character {ch:?} has no mapping in {encoding}")]
|
||||||
@@ -121,128 +438,391 @@ pub enum EncodeError {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Decode a single-byte encoding: ASCII passes through, high bytes index `high`.
|
|
||||||
fn decode_single_byte(bytes: &[u8], high: &[char; 128]) -> String {
|
|
||||||
bytes
|
|
||||||
.iter()
|
|
||||||
.map(|&b| {
|
|
||||||
if b < 0x80 {
|
|
||||||
b as char
|
|
||||||
} else {
|
|
||||||
high[(b - 0x80) as usize]
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.collect()
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Encode to a single-byte encoding. ASCII maps to itself; other characters are
|
|
||||||
/// looked up in `high` (a bijection over `0x80..=0xFF`), erroring if absent.
|
|
||||||
fn encode_single_byte(
|
|
||||||
text: &str,
|
|
||||||
high: &[char; 128],
|
|
||||||
encoding: AppleEncoding,
|
|
||||||
) -> Result<Vec<u8>, EncodeError> {
|
|
||||||
text.chars()
|
|
||||||
.map(|ch| {
|
|
||||||
if (ch as u32) < 0x80 {
|
|
||||||
Ok(ch as u8)
|
|
||||||
} else {
|
|
||||||
high.iter()
|
|
||||||
.position(|&c| c == ch)
|
|
||||||
.map(|i| 0x80 + i as u8)
|
|
||||||
.ok_or(EncodeError::Unmappable { ch, encoding })
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.collect()
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
|
/// Every revision-bearing encoding at its classic revision.
|
||||||
|
const ALL_CLASSIC: &[AppleEncoding] = &[
|
||||||
|
AppleEncoding::MacRoman(Revision::Classic),
|
||||||
|
AppleEncoding::MacGreek(Revision::Classic),
|
||||||
|
AppleEncoding::MacCyrillic(Revision::Classic),
|
||||||
|
AppleEncoding::MacCroatian(Revision::Classic),
|
||||||
|
AppleEncoding::MacIcelandic(Revision::Classic),
|
||||||
|
AppleEncoding::MacRomanian(Revision::Classic),
|
||||||
|
AppleEncoding::MacCeltic(Revision::Classic),
|
||||||
|
AppleEncoding::MacGaelic(Revision::Classic),
|
||||||
|
];
|
||||||
|
|
||||||
|
/// Every table the crate ships: modern and classic revisions.
|
||||||
|
fn every_encoding() -> Vec<AppleEncoding> {
|
||||||
|
AppleEncoding::ALL
|
||||||
|
.iter()
|
||||||
|
.chain(ALL_CLASSIC)
|
||||||
|
.copied()
|
||||||
|
.collect()
|
||||||
|
}
|
||||||
|
|
||||||
fn roman() -> AppleEncoding {
|
fn roman() -> AppleEncoding {
|
||||||
AppleEncoding::default()
|
AppleEncoding::default()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn ascii_passthrough() {
|
fn ascii_passthrough() {
|
||||||
assert_eq!(roman().decode(b"Macintosh HD"), "Macintosh HD");
|
for &enc in AppleEncoding::ALL {
|
||||||
assert_eq!(roman().encode("Macintosh HD").unwrap(), b"Macintosh HD");
|
assert_eq!(enc.decode(b"Macintosh HD").unwrap(), "Macintosh HD");
|
||||||
|
assert_eq!(enc.encode("Macintosh HD").unwrap(), b"Macintosh HD");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn known_high_mappings() {
|
fn known_high_mappings() {
|
||||||
// Same golden cases the fsinspect table was validated against.
|
// Golden values straight from the Apple tables.
|
||||||
assert_eq!(roman().decode(&[0x80]), "Ä");
|
assert_eq!(roman().decode(&[0x80]).unwrap(), "Ä");
|
||||||
assert_eq!(roman().decode(&[0x8E]), "é");
|
assert_eq!(roman().decode(&[0x8E]).unwrap(), "é");
|
||||||
assert_eq!(roman().decode(&[0xA9]), "©");
|
assert_eq!(roman().decode(&[0xA9]).unwrap(), "©");
|
||||||
assert_eq!(roman().decode(&[0xAA]), "™");
|
assert_eq!(roman().decode(&[0xAA]).unwrap(), "™");
|
||||||
assert_eq!(roman().decode(&[0xF0]), "\u{F8FF}"); // Apple logo (PUA)
|
assert_eq!(roman().decode(&[0xF0]).unwrap(), "\u{F8FF}"); // Apple logo (PUA)
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
let modern = Revision::Modern;
|
||||||
fn euro_revision_split() {
|
|
||||||
let modern = AppleEncoding::MacRoman(MacRomanRevision::Modern);
|
|
||||||
let classic = AppleEncoding::MacRoman(MacRomanRevision::Classic);
|
|
||||||
assert_eq!(modern.decode(&[0xDB]), "€");
|
|
||||||
assert_eq!(classic.decode(&[0xDB]), "¤");
|
|
||||||
// Euro round-trips only under the modern table.
|
|
||||||
assert_eq!(modern.encode("€").unwrap(), vec![0xDB]);
|
|
||||||
assert_eq!(classic.encode("¤").unwrap(), vec![0xDB]);
|
|
||||||
assert!(matches!(
|
|
||||||
classic.encode("€"),
|
|
||||||
Err(EncodeError::Unmappable { ch: '€', .. })
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn decode_cstr_stops_at_nul() {
|
|
||||||
assert_eq!(roman().decode_cstr(b"Test\x00garbage"), "Test");
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
roman().decode(b"Test\x00garbage").len(),
|
AppleEncoding::MacCyrillic(modern).decode(&[0x80]).unwrap(),
|
||||||
"Test garbage".len()
|
"А"
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
AppleEncoding::MacCyrillic(modern).decode(&[0xDE]).unwrap(),
|
||||||
|
"ё"
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
AppleEncoding::MacGreek(modern).decode(&[0xA1]).unwrap(),
|
||||||
|
"Γ"
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
AppleEncoding::MacGreek(modern).decode(&[0xB0]).unwrap(),
|
||||||
|
"Α"
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
AppleEncoding::MacCentralEurRoman.decode(&[0xDB]).unwrap(),
|
||||||
|
"Ř"
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
AppleEncoding::MacCentralEurRoman.decode(&[0xFF]).unwrap(),
|
||||||
|
"ˇ"
|
||||||
|
);
|
||||||
|
assert_eq!(AppleEncoding::MacTurkish.decode(&[0xDA]).unwrap(), "Ğ");
|
||||||
|
assert_eq!(AppleEncoding::MacTurkish.decode(&[0xDB]).unwrap(), "ğ");
|
||||||
|
assert_eq!(
|
||||||
|
AppleEncoding::MacCeltic(modern).decode(&[0xDE]).unwrap(),
|
||||||
|
"Ŷ"
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
AppleEncoding::MacGaelic(modern).decode(&[0xB0]).unwrap(),
|
||||||
|
"\u{1E02}"
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
AppleEncoding::MacGaelic(modern).decode(&[0xF0]).unwrap(),
|
||||||
|
"♣" // Apple maps the shamrock to BLACK CLUB SUIT
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
AppleEncoding::MacIcelandic(modern).decode(&[0xDE]).unwrap(),
|
||||||
|
"Þ"
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
AppleEncoding::MacCroatian(modern).decode(&[0xDE]).unwrap(),
|
||||||
|
"Æ"
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
AppleEncoding::MacRomanian(modern).decode(&[0xAF]).unwrap(),
|
||||||
|
"\u{0218}" // S WITH COMMA BELOW
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
AppleEncoding::MacInuit.decode(&[0x80]).unwrap(),
|
||||||
|
"\u{1403}" // CANADIAN SYLLABICS I
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn high_bytes_round_trip_both_revisions() {
|
fn euro_revision_split_roman_family() {
|
||||||
for revision in [MacRomanRevision::Modern, MacRomanRevision::Classic] {
|
for classic in [
|
||||||
let enc = AppleEncoding::MacRoman(revision);
|
AppleEncoding::MacRoman(Revision::Classic),
|
||||||
for byte in 0x80u8..=0xFF {
|
AppleEncoding::MacCroatian(Revision::Classic),
|
||||||
let decoded = enc.decode(&[byte]);
|
AppleEncoding::MacIcelandic(Revision::Classic),
|
||||||
assert_eq!(
|
AppleEncoding::MacRomanian(Revision::Classic),
|
||||||
enc.encode(&decoded).unwrap(),
|
AppleEncoding::MacCeltic(Revision::Classic),
|
||||||
vec![byte],
|
AppleEncoding::MacGaelic(Revision::Classic),
|
||||||
"byte {byte:#04x} failed to round-trip under {enc}"
|
] {
|
||||||
);
|
let modern = match classic {
|
||||||
|
AppleEncoding::MacRoman(_) => AppleEncoding::MacRoman(Revision::Modern),
|
||||||
|
AppleEncoding::MacCroatian(_) => AppleEncoding::MacCroatian(Revision::Modern),
|
||||||
|
AppleEncoding::MacIcelandic(_) => AppleEncoding::MacIcelandic(Revision::Modern),
|
||||||
|
AppleEncoding::MacRomanian(_) => AppleEncoding::MacRomanian(Revision::Modern),
|
||||||
|
AppleEncoding::MacCeltic(_) => AppleEncoding::MacCeltic(Revision::Modern),
|
||||||
|
AppleEncoding::MacGaelic(_) => AppleEncoding::MacGaelic(Revision::Modern),
|
||||||
|
other => panic!("unexpected encoding {other}"),
|
||||||
|
};
|
||||||
|
assert_eq!(modern.decode(&[0xDB]).unwrap(), "€", "{modern}");
|
||||||
|
assert_eq!(classic.decode(&[0xDB]).unwrap(), "¤", "{classic}");
|
||||||
|
assert_eq!(modern.encode("€").unwrap(), vec![0xDB]);
|
||||||
|
assert_eq!(classic.encode("¤").unwrap(), vec![0xDB]);
|
||||||
|
assert!(matches!(
|
||||||
|
classic.encode("€"),
|
||||||
|
Err(EncodeError::Unmappable { ch: '€', .. })
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn cyrillic_revision_changed_three_bytes() {
|
||||||
|
let modern = AppleEncoding::MacCyrillic(Revision::Modern);
|
||||||
|
let classic = AppleEncoding::MacCyrillic(Revision::Classic);
|
||||||
|
// Mac OS 9.0: 0xA2/0xB6 became GHE WITH UPTURN, 0xFF became Euro.
|
||||||
|
assert_eq!(modern.decode(&[0xA2]).unwrap(), "\u{0490}");
|
||||||
|
assert_eq!(modern.decode(&[0xB6]).unwrap(), "\u{0491}");
|
||||||
|
assert_eq!(modern.decode(&[0xFF]).unwrap(), "€");
|
||||||
|
assert_eq!(classic.decode(&[0xA2]).unwrap(), "¢");
|
||||||
|
assert_eq!(classic.decode(&[0xB6]).unwrap(), "∂");
|
||||||
|
assert_eq!(classic.decode(&[0xFF]).unwrap(), "¤");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn ukrainian_is_modern_cyrillic_with_currency_sign() {
|
||||||
|
let ukrainian = AppleEncoding::MacUkrainian;
|
||||||
|
let cyrillic = AppleEncoding::MacCyrillic(Revision::Modern);
|
||||||
|
assert_eq!(ukrainian.decode(&[0xA2]).unwrap(), "\u{0490}");
|
||||||
|
assert_eq!(ukrainian.decode(&[0xB6]).unwrap(), "\u{0491}");
|
||||||
|
assert_eq!(ukrainian.decode(&[0xFF]).unwrap(), "¤");
|
||||||
|
for byte in 0x00..=0xFE_u8 {
|
||||||
|
assert_eq!(
|
||||||
|
ukrainian.decode(&[byte]).unwrap(),
|
||||||
|
cyrillic.decode(&[byte]).unwrap(),
|
||||||
|
"byte {byte:#04x}"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn greek_revision_moved_soft_hyphen() {
|
||||||
|
let modern = AppleEncoding::MacGreek(Revision::Modern);
|
||||||
|
let classic = AppleEncoding::MacGreek(Revision::Classic);
|
||||||
|
// Mac OS 9.2.2: soft hyphen moved 0x9C -> 0xFF, Euro landed at 0x9C.
|
||||||
|
assert_eq!(modern.decode(&[0x9C]).unwrap(), "€");
|
||||||
|
assert_eq!(modern.decode(&[0xFF]).unwrap(), "\u{00AD}");
|
||||||
|
assert_eq!(classic.decode(&[0x9C]).unwrap(), "\u{00AD}");
|
||||||
|
assert_eq!(
|
||||||
|
classic.decode(b"a\xFFb"),
|
||||||
|
Err(DecodeError::Undefined {
|
||||||
|
byte: 0xFF,
|
||||||
|
encoding: classic
|
||||||
|
})
|
||||||
|
);
|
||||||
|
assert_eq!(classic.decode_lossy(b"a\xFFb"), "a\u{FFFD}b");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn turkish_undefined_slot_is_pua_and_round_trips() {
|
||||||
|
// Apple maps the undefined 0xF5 to U+F8A0 (corporate PUA) rather
|
||||||
|
// than omitting it; preserving that keeps byte round-trips exact.
|
||||||
|
let enc = AppleEncoding::MacTurkish;
|
||||||
|
assert_eq!(enc.decode(&[0xF5]).unwrap(), "\u{F8A0}");
|
||||||
|
assert_eq!(enc.encode("\u{F8A0}").unwrap(), vec![0xF5]);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn every_encoding_round_trips_every_byte() {
|
||||||
|
for enc in every_encoding() {
|
||||||
|
for byte in 0x00..=0xFF_u8 {
|
||||||
|
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}");
|
||||||
|
}
|
||||||
|
Err(other) => panic!("unexpected error for {byte:#04x}: {other}"),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn high_table_is_a_bijection() {
|
fn every_table_is_a_bijection() {
|
||||||
// No duplicate glyphs, else encode would be ambiguous.
|
// No duplicate scalars, else encode would be ambiguous.
|
||||||
let table = mac_roman::high_table(MacRomanRevision::Modern);
|
for enc in every_encoding() {
|
||||||
for i in 0..table.len() {
|
let mut seen = std::collections::HashSet::new();
|
||||||
for j in (i + 1)..table.len() {
|
for slot in enc.table().iter().flatten() {
|
||||||
assert_ne!(table[i], table[j], "duplicate glyph at {i} and {j}");
|
assert!(seen.insert(*slot), "duplicate scalar {slot:?} in {enc}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn only_classic_greek_has_undefined_slots() {
|
||||||
|
for enc in every_encoding() {
|
||||||
|
let undefined: Vec<usize> = enc
|
||||||
|
.table()
|
||||||
|
.iter()
|
||||||
|
.enumerate()
|
||||||
|
.filter_map(|(i, slot)| slot.is_none().then_some(i))
|
||||||
|
.collect();
|
||||||
|
if enc == AppleEncoding::MacGreek(Revision::Classic) {
|
||||||
|
assert_eq!(undefined, vec![0xFF], "{enc}");
|
||||||
|
} else {
|
||||||
|
assert!(undefined.is_empty(), "{enc} has undefined slots");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn unmappable_character_errors() {
|
fn unmappable_character_errors() {
|
||||||
// A CJK character has no place in Mac OS Roman.
|
// A CJK character has no place in any of these encodings.
|
||||||
let err = roman().encode("空").unwrap_err();
|
let err = roman().encode("空").unwrap_err();
|
||||||
assert!(matches!(err, EncodeError::Unmappable { ch: '空', .. }));
|
assert!(matches!(err, EncodeError::Unmappable { ch: '空', .. }));
|
||||||
|
// ñ exists in Roman but not in Greek (which does keep é and Ä).
|
||||||
|
assert!(AppleEncoding::MacGreek(Revision::Modern)
|
||||||
|
.encode("ñ")
|
||||||
|
.is_err());
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn from_script_code_roman_only() {
|
fn decode_cstr_stops_at_nul() {
|
||||||
|
assert_eq!(roman().decode_cstr(b"Test\x00garbage").unwrap(), "Test");
|
||||||
|
assert_eq!(roman().decode_cstr(b"Test").unwrap(), "Test"); // no NUL at all
|
||||||
|
assert_eq!(roman().decode_cstr(b"\x00Test").unwrap(), "");
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
AppleEncoding::from_script_code(SCRIPT_ROMAN),
|
roman().decode(b"Test\x00garbage").unwrap().len(),
|
||||||
Some(AppleEncoding::MacRoman(MacRomanRevision::Modern))
|
"Test garbage".len()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn decode_pstr_reads_length_prefixed_names() {
|
||||||
|
// Str27 volume-name style: length byte, text, NUL padding.
|
||||||
|
let field = b"\x0AMacintosh\x8E\x00\x00\x00";
|
||||||
|
assert_eq!(roman().decode_pstr(field).unwrap(), "Macintoshé");
|
||||||
|
assert_eq!(roman().decode_pstr(b"\x00junk").unwrap(), "");
|
||||||
|
// A length byte overrunning the buffer is corruption, not a clamp.
|
||||||
|
assert_eq!(
|
||||||
|
roman().decode_pstr(b"\x0Fshort"),
|
||||||
|
Err(DecodeError::TruncatedPascalString {
|
||||||
|
declared: 15,
|
||||||
|
available: 5,
|
||||||
|
encoding: roman()
|
||||||
|
})
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
roman().decode_pstr(b""),
|
||||||
|
Err(DecodeError::TruncatedPascalString {
|
||||||
|
declared: 0,
|
||||||
|
available: 0,
|
||||||
|
encoding: roman()
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn from_fd_script_requires_the_validity_flag() {
|
||||||
|
// Bit 7 set: low seven bits are the script code.
|
||||||
|
assert_eq!(
|
||||||
|
AppleEncoding::from_fd_script(0x87),
|
||||||
|
Some(AppleEncoding::MacCyrillic(Revision::Modern))
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
AppleEncoding::from_fd_script(0x80),
|
||||||
|
Some(AppleEncoding::MacRoman(Revision::Modern))
|
||||||
|
);
|
||||||
|
// Bit 7 clear: the field is Finder flags, not a script.
|
||||||
|
assert_eq!(AppleEncoding::from_fd_script(0x07), None);
|
||||||
|
assert_eq!(AppleEncoding::from_fd_script(0x00), None);
|
||||||
|
// Flagged but unimplemented script.
|
||||||
|
assert_eq!(AppleEncoding::from_fd_script(0x82), None); // smTradChinese
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn empty_input_is_empty_output() {
|
||||||
|
assert_eq!(roman().decode(b"").unwrap(), "");
|
||||||
|
assert_eq!(roman().decode_lossy(b""), "");
|
||||||
|
assert_eq!(roman().encode("").unwrap(), Vec::<u8>::new());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn from_text_encoding_round_trips() {
|
||||||
|
for &enc in AppleEncoding::ALL {
|
||||||
|
assert_eq!(
|
||||||
|
AppleEncoding::from_text_encoding(enc.text_encoding()),
|
||||||
|
Some(enc)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
assert_eq!(AppleEncoding::from_text_encoding(1), None); // MacJapanese, not yet
|
||||||
|
assert_eq!(
|
||||||
|
AppleEncoding::from_text_encoding(0x98),
|
||||||
|
Some(AppleEncoding::MacUkrainian)
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
AppleEncoding::from_text_encoding(0xEC),
|
||||||
|
Some(AppleEncoding::MacInuit)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn from_script_code_resolves_script_systems() {
|
||||||
|
assert_eq!(
|
||||||
|
AppleEncoding::from_script_code(0),
|
||||||
|
Some(AppleEncoding::MacRoman(Revision::Modern))
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
AppleEncoding::from_script_code(6),
|
||||||
|
Some(AppleEncoding::MacGreek(Revision::Modern))
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
AppleEncoding::from_script_code(7),
|
||||||
|
Some(AppleEncoding::MacCyrillic(Revision::Modern))
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
AppleEncoding::from_script_code(28),
|
||||||
|
Some(AppleEncoding::MacInuit) // Apple parked Inuit on smEthiopic's code
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
AppleEncoding::from_script_code(29),
|
||||||
|
Some(AppleEncoding::MacCentralEurRoman)
|
||||||
|
);
|
||||||
|
assert_eq!(AppleEncoding::from_script_code(2), None); // smTradChinese, not yet
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn script_codes_are_consistent_with_lookup() {
|
||||||
|
for &enc in AppleEncoding::ALL {
|
||||||
|
// Whatever script an encoding reports, looking that script up
|
||||||
|
// must yield an encoding of the same script.
|
||||||
|
let resolved = AppleEncoding::from_script_code(enc.script_code())
|
||||||
|
.unwrap_or_else(|| panic!("{enc} reports an unresolvable script"));
|
||||||
|
assert_eq!(resolved.script_code(), enc.script_code());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn display_names() {
|
||||||
|
assert_eq!(roman().to_string(), "Mac OS Roman");
|
||||||
|
assert_eq!(
|
||||||
|
AppleEncoding::MacRoman(Revision::Classic).to_string(),
|
||||||
|
"Mac OS Roman (pre-8.5)"
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
AppleEncoding::MacCyrillic(Revision::Classic).to_string(),
|
||||||
|
"Mac OS Cyrillic (pre-9.0)"
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
AppleEncoding::MacGreek(Revision::Classic).to_string(),
|
||||||
|
"Mac OS Greek (pre-9.2.2)"
|
||||||
|
);
|
||||||
|
assert_eq!(AppleEncoding::MacUkrainian.to_string(), "Mac OS Ukrainian");
|
||||||
|
let err = AppleEncoding::MacGreek(Revision::Modern)
|
||||||
|
.encode("ñ")
|
||||||
|
.unwrap_err();
|
||||||
|
assert_eq!(
|
||||||
|
err.to_string(),
|
||||||
|
"character 'ñ' has no mapping in Mac OS Greek"
|
||||||
);
|
);
|
||||||
assert_eq!(AppleEncoding::from_script_code(2), None); // smJapanese, not yet
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,60 +0,0 @@
|
|||||||
//! Mac OS Roman: the high half of the table and revision handling.
|
|
||||||
//!
|
|
||||||
//! The lower 128 byte values are identical to ASCII; only `0x80..=0xFF` carry
|
|
||||||
//! Mac-specific glyphs. The table below is the **post-Mac OS 8.5** revision
|
|
||||||
//! (byte `0xDB` is the Euro sign); [`MacRomanRevision::Classic`] swaps that one
|
|
||||||
//! slot back to the pre-8.5 currency sign. See `docs` in the consuming projects
|
|
||||||
//! for why revision pinning is per-encoding.
|
|
||||||
//!
|
|
||||||
//! Source: the Unicode Consortium `VENDORS/APPLE/ROMAN.TXT` mapping.
|
|
||||||
|
|
||||||
/// Unicode scalars for Mac OS Roman bytes `0x80..=0xFF` (post-8.5 revision).
|
|
||||||
///
|
|
||||||
/// Index `i` corresponds to byte value `0x80 + i` — e.g. index 0 is `0x80` → 'Ä'.
|
|
||||||
pub(crate) const MAC_ROMAN_HIGH: [char; 128] = [
|
|
||||||
'Ä', 'Å', 'Ç', 'É', 'Ñ', 'Ö', 'Ü', 'á', // 0x80-0x87
|
|
||||||
'à', 'â', 'ä', 'ã', 'å', 'ç', 'é', 'è', // 0x88-0x8F
|
|
||||||
'ê', 'ë', 'í', 'ì', 'î', 'ï', 'ñ', 'ó', // 0x90-0x97
|
|
||||||
'ò', 'ô', 'ö', 'õ', 'ú', 'ù', 'û', 'ü', // 0x98-0x9F
|
|
||||||
'†', '°', '¢', '£', '§', '•', '¶', 'ß', // 0xA0-0xA7
|
|
||||||
'®', '©', '™', '´', '¨', '≠', 'Æ', 'Ø', // 0xA8-0xAF
|
|
||||||
'∞', '±', '≤', '≥', '¥', 'µ', '∂', '∑', // 0xB0-0xB7
|
|
||||||
'∏', 'π', '∫', 'ª', 'º', 'Ω', 'æ', 'ø', // 0xB8-0xBF
|
|
||||||
'¿', '¡', '¬', '√', 'ƒ', '≈', '∆', '«', // 0xC0-0xC7
|
|
||||||
'»', '…', '\u{00A0}', 'À', 'Ã', 'Õ', 'Œ', 'œ', // 0xC8-0xCF
|
|
||||||
'–', '—', '\u{201C}', '\u{201D}', '\u{2018}', '\u{2019}', '÷', '◊', // 0xD0-0xD7
|
|
||||||
'ÿ', 'Ÿ', '⁄', '€', '‹', '›', '\u{FB01}', '\u{FB02}', // 0xD8-0xDF (0xDB € post-8.5)
|
|
||||||
'‡', '·', '‚', '„', '‰', 'Â', 'Ê', 'Á', // 0xE0-0xE7
|
|
||||||
'Ë', 'È', 'Í', 'Î', 'Ï', 'Ì', 'Ó', 'Ô', // 0xE8-0xEF
|
|
||||||
'\u{F8FF}', 'Ò', 'Ú', 'Û', 'Ù', 'ı', 'ˆ', '˜', // 0xF0-0xF7 (0xF0 = Apple logo, PUA)
|
|
||||||
'¯', '˘', '˙', '˚', '¸', '˝', '˛', 'ˇ', // 0xF8-0xFF
|
|
||||||
];
|
|
||||||
|
|
||||||
/// Index of byte `0xDB`, the only slot that differs across the 8.5 revision.
|
|
||||||
const EURO_SLOT: usize = (0xDB - 0x80) as usize;
|
|
||||||
|
|
||||||
/// The pre-8.5 glyph at `0xDB`: CURRENCY SIGN.
|
|
||||||
const CLASSIC_CURRENCY: char = '\u{00A4}';
|
|
||||||
|
|
||||||
/// Which revision of Mac OS Roman to use.
|
|
||||||
///
|
|
||||||
/// The Mac OS 8.5 Euro update changed exactly one byte (`0xDB`). Defaults to
|
|
||||||
/// [`Modern`](MacRomanRevision::Modern); choose [`Classic`](MacRomanRevision::Classic)
|
|
||||||
/// for pre-8.5 / emulator fidelity.
|
|
||||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
|
|
||||||
pub enum MacRomanRevision {
|
|
||||||
/// Mac OS 8.5 and later: `0xDB` is EURO SIGN (`U+20AC`).
|
|
||||||
#[default]
|
|
||||||
Modern,
|
|
||||||
/// Before Mac OS 8.5: `0xDB` is CURRENCY SIGN (`U+00A4`).
|
|
||||||
Classic,
|
|
||||||
}
|
|
||||||
|
|
||||||
/// The effective high-half table for `revision` (a cheap 512-byte stack copy).
|
|
||||||
pub(crate) fn high_table(revision: MacRomanRevision) -> [char; 128] {
|
|
||||||
let mut table = MAC_ROMAN_HIGH;
|
|
||||||
if revision == MacRomanRevision::Classic {
|
|
||||||
table[EURO_SLOT] = CLASSIC_CURRENCY;
|
|
||||||
}
|
|
||||||
table
|
|
||||||
}
|
|
||||||
5205
src/tables/mac.rs
Normal file
5205
src/tables/mac.rs
Normal file
File diff suppressed because it is too large
Load Diff
5
src/tables/mod.rs
Normal file
5
src/tables/mod.rs
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
//! Encoding tables. Everything except this module file is generated by
|
||||||
|
//! `tools/gen_tables.py` from the vendored Apple mapping tables in
|
||||||
|
//! `data/apple/` — regenerate rather than editing by hand.
|
||||||
|
|
||||||
|
pub(crate) mod mac;
|
||||||
276
tools/gen_tables.py
Normal file
276
tools/gen_tables.py
Normal file
@@ -0,0 +1,276 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# /// script
|
||||||
|
# requires-python = ">=3.10"
|
||||||
|
# ///
|
||||||
|
"""Generate src/tables/mac.rs from the Apple mapping tables in data/apple/.
|
||||||
|
|
||||||
|
The inputs are the canonical Apple character set tables published by the
|
||||||
|
Unicode Consortium (https://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/),
|
||||||
|
vendored in ``data/apple/``. Each single-byte encoding becomes a full
|
||||||
|
256-entry ``[Option<char>; 256]`` table.
|
||||||
|
|
||||||
|
The vendored files carry the *modern* (post-Euro) mappings; the pre-Euro
|
||||||
|
revisions are reconstructed from the per-encoding deltas documented in each
|
||||||
|
file's change history (the Mac OS 8.5/9.0/9.2.2 Euro rollout landed at
|
||||||
|
different byte positions per encoding, which is why these are configured
|
||||||
|
data with invariant checks rather than hand-edited tables). Mac OS
|
||||||
|
Ukrainian, retired as a separate character set in Mac OS 9.0, is likewise
|
||||||
|
derived from CYRILLIC.TXT plus its documented delta (UKRAINE.TXT is a
|
||||||
|
notes-only stub).
|
||||||
|
|
||||||
|
Every delta records the scalar the vendored file is expected to hold, so
|
||||||
|
regeneration fails loudly if an upstream file ever changes underneath us.
|
||||||
|
|
||||||
|
Run from the crate root: ``uv run tools/gen_tables.py``
|
||||||
|
(needs ``rustfmt`` on PATH).
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import subprocess
|
||||||
|
from collections.abc import Mapping, Sequence
|
||||||
|
from dataclasses import dataclass, field
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
DATA_DIR = Path(__file__).resolve().parent.parent / "data" / "apple"
|
||||||
|
OUTPUT_PATH = Path(__file__).resolve().parent.parent / "src" / "tables" / "mac.rs"
|
||||||
|
|
||||||
|
GENERATED_NOTE = """\
|
||||||
|
//! Generated by `tools/gen_tables.py` — do not edit by hand.
|
||||||
|
//!
|
||||||
|
//! Source: the Unicode Consortium's Apple mapping tables, vendored in
|
||||||
|
//! `data/apple/`. `*_CLASSIC` tables are the pre-Euro revisions,
|
||||||
|
//! reconstructed from the deltas documented in each file's change history.
|
||||||
|
"""
|
||||||
|
|
||||||
|
SURROGATE_RANGE = range(0xD800, 0xE000)
|
||||||
|
|
||||||
|
# Apple's files list 0x20-0x7E and 0x80-0xFF; the C0 controls and DELETE are
|
||||||
|
# omitted because they map to themselves.
|
||||||
|
CONTROL_BYTES = frozenset(range(0x20)) | {0x7F}
|
||||||
|
LISTED_BYTES = frozenset(range(0x100)) - CONTROL_BYTES
|
||||||
|
|
||||||
|
EURO = 0x20AC
|
||||||
|
CURRENCY_SIGN = 0x00A4
|
||||||
|
SOFT_HYPHEN = 0x00AD
|
||||||
|
|
||||||
|
# The Mac OS 8.5 Euro rollout for the Roman regional family: 0xDB flipped
|
||||||
|
# from CURRENCY SIGN to EURO SIGN.
|
||||||
|
ROMAN_FAMILY_EURO_DELTA: Mapping[int, tuple[int, int | None]] = {
|
||||||
|
0xDB: (EURO, CURRENCY_SIGN),
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class TableError(Exception):
|
||||||
|
"""A mapping table failed to parse or violated an invariant."""
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(frozen=True)
|
||||||
|
class EncodingSpec:
|
||||||
|
"""One generated encoding.
|
||||||
|
|
||||||
|
Attributes:
|
||||||
|
const: Rust constant name for the modern table.
|
||||||
|
file: Mapping file name under ``data/apple/``.
|
||||||
|
base_delta: Byte to ``(expected_modern_scalar, scalar_or_None)``
|
||||||
|
applied to *derive* this encoding from the file (Mac OS
|
||||||
|
Ukrainian is CYRILLIC.TXT with 0xFF back-flipped to CURRENCY
|
||||||
|
SIGN). ``None`` marks the byte undefined.
|
||||||
|
classic_delta: Byte to ``(expected_modern_scalar, scalar_or_None)``
|
||||||
|
producing an additional ``*_CLASSIC`` (pre-Euro) table.
|
||||||
|
doc: Override for the generated table's doc comment (used where the
|
||||||
|
table is not simply the file's contents, e.g. Ukrainian).
|
||||||
|
"""
|
||||||
|
|
||||||
|
const: str
|
||||||
|
file: str
|
||||||
|
base_delta: Mapping[int, tuple[int, int | None]] = field(default_factory=dict)
|
||||||
|
classic_delta: Mapping[int, tuple[int, int | None]] = field(default_factory=dict)
|
||||||
|
doc: str | None = None
|
||||||
|
|
||||||
|
|
||||||
|
SPECS: Sequence[EncodingSpec] = (
|
||||||
|
EncodingSpec("MAC_ROMAN", "ROMAN.TXT", classic_delta=ROMAN_FAMILY_EURO_DELTA),
|
||||||
|
# Mac OS 9.2.2 moved SOFT HYPHEN from 0x9C to the previously undefined
|
||||||
|
# 0xFF and put EURO SIGN at 0x9C.
|
||||||
|
EncodingSpec(
|
||||||
|
"MAC_GREEK",
|
||||||
|
"GREEK.TXT",
|
||||||
|
classic_delta={0x9C: (EURO, SOFT_HYPHEN), 0xFF: (SOFT_HYPHEN, None)},
|
||||||
|
),
|
||||||
|
# Mac OS 9.0 merged Cyrillic with Ukrainian (0xA2/0xB6 became GHE WITH
|
||||||
|
# UPTURN) and put EURO SIGN at 0xFF.
|
||||||
|
EncodingSpec(
|
||||||
|
"MAC_CYRILLIC",
|
||||||
|
"CYRILLIC.TXT",
|
||||||
|
classic_delta={
|
||||||
|
0xA2: (0x0490, 0x00A2),
|
||||||
|
0xB6: (0x0491, 0x2202),
|
||||||
|
0xFF: (EURO, CURRENCY_SIGN),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
EncodingSpec("MAC_CENTRAL_EUR_ROMAN", "CENTEURO.TXT"),
|
||||||
|
EncodingSpec("MAC_TURKISH", "TURKISH.TXT"),
|
||||||
|
EncodingSpec("MAC_CROATIAN", "CROATIAN.TXT", classic_delta=ROMAN_FAMILY_EURO_DELTA),
|
||||||
|
EncodingSpec("MAC_ICELANDIC", "ICELAND.TXT", classic_delta=ROMAN_FAMILY_EURO_DELTA),
|
||||||
|
EncodingSpec("MAC_ROMANIAN", "ROMANIAN.TXT", classic_delta=ROMAN_FAMILY_EURO_DELTA),
|
||||||
|
EncodingSpec("MAC_CELTIC", "CELTIC.TXT", classic_delta=ROMAN_FAMILY_EURO_DELTA),
|
||||||
|
EncodingSpec("MAC_GAELIC", "GAELIC.TXT", classic_delta=ROMAN_FAMILY_EURO_DELTA),
|
||||||
|
# The pre-9.0 Ukrainian currency sign variant: modern Cyrillic except
|
||||||
|
# 0xFF stayed CURRENCY SIGN (per the notes in UKRAINE.TXT).
|
||||||
|
EncodingSpec(
|
||||||
|
"MAC_UKRAINIAN",
|
||||||
|
"CYRILLIC.TXT",
|
||||||
|
base_delta={0xFF: (EURO, CURRENCY_SIGN)},
|
||||||
|
doc="CYRILLIC.TXT with 0xFF flipped back to CURRENCY SIGN — the "
|
||||||
|
"pre-9.0 Ukrainian variant per the notes in UKRAINE.TXT.",
|
||||||
|
),
|
||||||
|
EncodingSpec("MAC_INUIT", "INUIT.TXT"),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def parse_table(path: Path) -> dict[int, int]:
|
||||||
|
"""Parse one Apple mapping file into a full 256-entry byte-to-scalar map.
|
||||||
|
|
||||||
|
The omitted C0 controls and DELETE are filled in as identity mappings.
|
||||||
|
|
||||||
|
Raises:
|
||||||
|
TableError: If the file is unreadable, lists a byte twice or outside
|
||||||
|
the expected set, maps to anything but one BMP scalar, or is not
|
||||||
|
ASCII-transparent over 0x20-0x7E.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
text = path.read_text(encoding="ascii")
|
||||||
|
except (OSError, UnicodeDecodeError) as error:
|
||||||
|
raise TableError(f"{path.name}: unreadable mapping table") from error
|
||||||
|
table = {byte: byte for byte in CONTROL_BYTES}
|
||||||
|
seen: set[int] = set()
|
||||||
|
for line in text.splitlines():
|
||||||
|
line = line.strip()
|
||||||
|
if not line.startswith("0x"):
|
||||||
|
continue
|
||||||
|
columns = line.split("\t")
|
||||||
|
try:
|
||||||
|
byte = int(columns[0], 16)
|
||||||
|
except ValueError as error:
|
||||||
|
raise TableError(f"{path.name}: malformed byte {columns[0]!r}") from error
|
||||||
|
if byte in seen:
|
||||||
|
raise TableError(f"{path.name}: byte {byte:#04x} listed twice")
|
||||||
|
seen.add(byte)
|
||||||
|
if byte not in LISTED_BYTES:
|
||||||
|
raise TableError(f"{path.name}: unexpected byte {byte:#04x}")
|
||||||
|
if len(columns) < 2 or not columns[1].startswith("0x"):
|
||||||
|
raise TableError(f"{path.name}: byte {byte:#04x} has no mapping")
|
||||||
|
scalar_text = columns[1]
|
||||||
|
if "+" in scalar_text:
|
||||||
|
raise TableError(f"{path.name}: byte {byte:#04x} maps to a sequence")
|
||||||
|
try:
|
||||||
|
scalar = int(scalar_text, 16)
|
||||||
|
except ValueError as error:
|
||||||
|
raise TableError(
|
||||||
|
f"{path.name}: malformed scalar {scalar_text!r}"
|
||||||
|
) from error
|
||||||
|
if scalar in SURROGATE_RANGE or scalar > 0xFFFF:
|
||||||
|
raise TableError(f"{path.name}: scalar {scalar:#06x} not a BMP char")
|
||||||
|
if 0x20 <= byte <= 0x7E and scalar != byte:
|
||||||
|
raise TableError(f"{path.name}: byte {byte:#04x} is not ASCII")
|
||||||
|
table[byte] = scalar
|
||||||
|
if seen != LISTED_BYTES:
|
||||||
|
missing = sorted(LISTED_BYTES - seen)
|
||||||
|
raise TableError(f"{path.name}: bytes never listed: {missing}")
|
||||||
|
return table
|
||||||
|
|
||||||
|
|
||||||
|
def apply_delta(
|
||||||
|
name: str, table: Mapping[int, int], delta: Mapping[int, tuple[int, int | None]]
|
||||||
|
) -> dict[int, int | None]:
|
||||||
|
"""Apply a revision delta, verifying the modern scalars it replaces.
|
||||||
|
|
||||||
|
Raises:
|
||||||
|
TableError: If the vendored table does not hold the expected modern
|
||||||
|
scalar at a delta byte — i.e. upstream data changed and the
|
||||||
|
configured delta no longer describes it.
|
||||||
|
"""
|
||||||
|
result: dict[int, int | None] = dict(table)
|
||||||
|
for byte, (expected_modern, replacement) in delta.items():
|
||||||
|
if table.get(byte) != expected_modern:
|
||||||
|
raise TableError(
|
||||||
|
f"{name}: delta expects U+{expected_modern:04X} at {byte:#04x}, "
|
||||||
|
f"file has U+{table[byte]:04X}"
|
||||||
|
)
|
||||||
|
result[byte] = replacement
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def check_bijection(name: str, table: Mapping[int, int | None]) -> None:
|
||||||
|
"""Require every mapped scalar to have exactly one byte.
|
||||||
|
|
||||||
|
Raises:
|
||||||
|
TableError: If two bytes map to the same scalar.
|
||||||
|
"""
|
||||||
|
scalars = [scalar for scalar in table.values() if scalar is not None]
|
||||||
|
if len(scalars) != len(set(scalars)):
|
||||||
|
raise TableError(f"{name}: table is not a bijection")
|
||||||
|
|
||||||
|
|
||||||
|
def rust_char(scalar: int) -> str:
|
||||||
|
"""Render a Unicode scalar as a Rust char literal."""
|
||||||
|
ch = chr(scalar)
|
||||||
|
if ch.isprintable() and ch not in ("'", "\\"):
|
||||||
|
return f"'{ch}'"
|
||||||
|
return f"'\\u{{{scalar:04X}}}'"
|
||||||
|
|
||||||
|
|
||||||
|
def render_table(const: str, doc: str, table: Mapping[int, int | None]) -> str:
|
||||||
|
"""Render one encoding as an ``[Option<char>; 256]``."""
|
||||||
|
lines = [f"/// {doc}", f"pub(crate) const {const}: [Option<char>; 256] = ["]
|
||||||
|
for row_start in range(0, 256, 8):
|
||||||
|
entries = []
|
||||||
|
for byte in range(row_start, row_start + 8):
|
||||||
|
scalar = table[byte]
|
||||||
|
entries.append("None" if scalar is None else f"Some({rust_char(scalar)})")
|
||||||
|
lines.append(
|
||||||
|
f" {', '.join(entries)}, // {row_start:#04x}-{row_start + 7:#04x}"
|
||||||
|
)
|
||||||
|
lines.append("];\n")
|
||||||
|
return "\n".join(lines)
|
||||||
|
|
||||||
|
|
||||||
|
def render_spec(spec: EncodingSpec) -> list[str]:
|
||||||
|
"""Render a spec's modern table, plus its classic table if it has one.
|
||||||
|
|
||||||
|
Raises:
|
||||||
|
TableError: If parsing, a delta, or a bijection check fails.
|
||||||
|
"""
|
||||||
|
file_table = parse_table(DATA_DIR / spec.file)
|
||||||
|
modern = apply_delta(spec.const, file_table, spec.base_delta)
|
||||||
|
check_bijection(spec.const, modern)
|
||||||
|
doc = spec.doc or f"{spec.file}, byte value to Unicode scalar."
|
||||||
|
rendered = [render_table(spec.const, doc, modern)]
|
||||||
|
if spec.classic_delta:
|
||||||
|
if spec.base_delta:
|
||||||
|
raise TableError(f"{spec.const}: base and classic deltas both set")
|
||||||
|
classic = apply_delta(spec.const, file_table, spec.classic_delta)
|
||||||
|
check_bijection(f"{spec.const}_CLASSIC", classic)
|
||||||
|
rendered.append(
|
||||||
|
render_table(
|
||||||
|
f"{spec.const}_CLASSIC",
|
||||||
|
f"{spec.file} at the pre-Euro revision.",
|
||||||
|
classic,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
return rendered
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
"""Regenerate src/tables/mac.rs from every configured encoding."""
|
||||||
|
rendered = [GENERATED_NOTE]
|
||||||
|
for spec in SPECS:
|
||||||
|
rendered.extend(render_spec(spec))
|
||||||
|
OUTPUT_PATH.write_text("\n".join(rendered), encoding="utf-8")
|
||||||
|
subprocess.run(["rustfmt", "--edition", "2021", str(OUTPUT_PATH)], check=True)
|
||||||
|
print(f"wrote {OUTPUT_PATH}")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
Reference in New Issue
Block a user