Expand to twelve single-byte encodings via codegen; match msdos-encodings API
Rework the crate on the msdos-encodings design: vendored Unicode Consortium VENDORS/APPLE mapping files in data/apple/, a tools/gen_tables.py generator (PEP 723 / uv run / rustfmt) emitting full [Option<char>; 256] tables, and a fallible decode / decode_lossy / encode API with non_exhaustive thiserror errors. Encodings: Roman, Greek, Cyrillic, Central European Roman, Turkish, Croatian, Icelandic, Romanian, Celtic, Gaelic, Ukrainian (pre-9.0 Cyrillic variant), Inuit. The eight encodings Apple revised for the Euro carry a Revision payload (Classic = pre-8.5/9.0/9.2.2), generated from per-encoding deltas with invariant checks that fail regeneration if the vendored data drifts. Apple-specific API points beyond the msdos shape: from_text_encoding (kTextEncodingMac… base values, the HFS+ hint), from_script_code plus from_fd_script (bit-7 validity flag on the raw Finder Info byte), and decode_pstr for length-prefixed Str27/Str31 name fields with a TruncatedPascalString error for corrupt lengths. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,2 +1,5 @@
|
||||
/target
|
||||
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
|
||||
it stays small, self-contained, and cross-compiles cleanly.
|
||||
|
||||
```rust
|
||||
use apple_encodings::{AppleEncoding, MacRomanRevision};
|
||||
These are strictly **Apple's** mappings as published by the Unicode Consortium
|
||||
(`VENDORS/APPLE/`), vendored in `data/apple/`.
|
||||
|
||||
let enc = AppleEncoding::default(); // Mac OS Roman, post-8.5
|
||||
assert_eq!(enc.decode(b"Caf\x8e"), "Café");
|
||||
```rust
|
||||
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");
|
||||
|
||||
// Pick by the Finder Info `fdScript` byte:
|
||||
let enc = AppleEncoding::from_script_code(apple_encodings::SCRIPT_ROMAN).unwrap();
|
||||
// Pick by the HFS+ `textEncoding` hint (kTextEncodingMac… base values):
|
||||
let enc = AppleEncoding::from_text_encoding(7).unwrap();
|
||||
assert_eq!(enc.decode(&[0x80]).unwrap(), "А"); // Mac OS Cyrillic
|
||||
|
||||
// Revision matters for exactly one byte (0xDB):
|
||||
let classic = AppleEncoding::MacRoman(MacRomanRevision::Classic);
|
||||
assert_eq!(classic.decode(&[0xDB]), "¤"); // pre-8.5 currency sign, not €
|
||||
// Or by the raw HFS Finder Info `fdScript` byte (bit 7 flags validity;
|
||||
// a Cyrillic system writes 0x87). Script system, not table — the Roman
|
||||
// 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
|
||||
|
||||
- **Mac OS Roman** — implemented, both pre- and post-8.5 revisions, decode + encode.
|
||||
- **Regional single-byte** (Cyrillic, Greek, Turkish, …) and **CJK double-byte**
|
||||
(Japanese, Big5, GB, Korean) — planned, to be codegen'd from the Unicode
|
||||
Consortium `VENDORS/APPLE/*.TXT` tables. The double-byte tables will be
|
||||
feature-gated.
|
||||
- **Twelve single-byte encodings** — implemented, decode + encode: Roman,
|
||||
Greek, Cyrillic, Central European Roman, Turkish, Croatian, Icelandic,
|
||||
Romanian, Celtic, Gaelic, Ukrainian (the pre-9.0 Cyrillic variant), and
|
||||
Inuit.
|
||||
- **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
|
||||
|
||||
|
||||
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.
|
||||
//!
|
||||
//! 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
|
||||
//! by a *script code*. This crate converts those bytes to and from Unicode with
|
||||
//! emulator-grade fidelity: it owns the canonical tables rather than linking ICU,
|
||||
//! so it stays small, self-contained, and cross-compiles cleanly.
|
||||
//! of script encodings — Mac OS Roman and its regional relatives — selected by
|
||||
//! a *script code* (HFS) or a *text encoding* value (HFS+). This crate converts
|
||||
//! those bytes to and from Unicode with emulator-grade fidelity: it owns the
|
||||
//! canonical tables rather than linking ICU, so it stays small, self-contained,
|
||||
//! and cross-compiles cleanly.
|
||||
//!
|
||||
//! Today it implements **Mac OS Roman** (both the pre- and post-8.5 revisions).
|
||||
//! The [`AppleEncoding`] enum and [`AppleEncoding::from_script_code`] are the
|
||||
//! growth points for the remaining single-byte scripts and the (table-heavy,
|
||||
//! codegen'd) double-byte CJK encodings.
|
||||
//! The tables are **Apple's** mappings as published by the Unicode Consortium
|
||||
//! (`VENDORS/APPLE/`), vendored in `data/apple/` and generated by
|
||||
//! `tools/gen_tables.py`. Twelve single-byte encodings are implemented; the
|
||||
//! (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;
|
||||
//!
|
||||
//! let enc = AppleEncoding::default(); // Mac OS Roman, post-8.5
|
||||
//! assert_eq!(enc.decode(b"Caf\x8e"), "Café");
|
||||
//! 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");
|
||||
//! ```
|
||||
#![forbid(unsafe_code)]
|
||||
@@ -23,64 +36,278 @@
|
||||
|
||||
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
|
||||
/// [`AppleEncoding::from_script_code`] to pick the matching encoding.
|
||||
pub const SCRIPT_ROMAN: u8 = 0;
|
||||
/// The Euro rollout (Mac OS 8.5 for the Roman regional family, 9.0 for
|
||||
/// Cyrillic, 9.2.2 for Greek) changed a handful of byte slots per encoding.
|
||||
/// 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.
|
||||
///
|
||||
/// 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)]
|
||||
/// Variants carry a [`Revision`] where Apple revised the table for the Euro
|
||||
/// rollout; the rest never changed. Mac OS Ukrainian is the pre-9.0 variant
|
||||
/// 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]
|
||||
pub enum AppleEncoding {
|
||||
/// Mac OS Roman, at the given table revision.
|
||||
MacRoman(MacRomanRevision),
|
||||
/// Mac OS Roman — the base Latin-script encoding.
|
||||
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 {
|
||||
/// 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 {
|
||||
Self::MacRoman(MacRomanRevision::Modern)
|
||||
Self::MacRoman(Revision::Modern)
|
||||
}
|
||||
}
|
||||
|
||||
impl AppleEncoding {
|
||||
/// Select an encoding from a Mac `fdScript` script code, or `None` if this
|
||||
/// crate does not yet implement it.
|
||||
/// Every encoding this crate implements, at the default
|
||||
/// ([`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
|
||||
/// construct [`AppleEncoding::MacRoman`] with [`MacRomanRevision::Classic`].
|
||||
/// A script code names a script *system*, not a table: the Roman regional
|
||||
/// 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]
|
||||
pub fn from_script_code(code: u8) -> Option<Self> {
|
||||
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,
|
||||
}
|
||||
}
|
||||
|
||||
/// 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.
|
||||
/// Select an encoding from a raw Finder Info `fdScript` byte.
|
||||
///
|
||||
/// 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]
|
||||
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 {
|
||||
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
|
||||
/// classic fixed-width name fields.
|
||||
/// The Mac script code (`smRoman` = 0, …) this encoding serves. Not
|
||||
/// injective: every Roman regional variant reports 0, and Ukrainian
|
||||
/// shares `smCyrillic` (7). Inuit occupies script 28 per `TextCommon.h`.
|
||||
#[must_use]
|
||||
pub fn decode_cstr(self, bytes: &[u8]) -> String {
|
||||
let end = bytes.iter().position(|&b| b == 0).unwrap_or(bytes.len());
|
||||
self.decode(&bytes[..end])
|
||||
pub fn script_code(self) -> u8 {
|
||||
match self {
|
||||
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.
|
||||
@@ -89,27 +316,117 @@ impl AppleEncoding {
|
||||
///
|
||||
/// Returns [`EncodeError::Unmappable`] for the first character with no
|
||||
/// 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> {
|
||||
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 {
|
||||
Self::MacRoman(revision) => {
|
||||
encode_single_byte(text, &mac_roman::high_table(revision), self)
|
||||
}
|
||||
Self::MacRoman(Modern) => &mac::MAC_ROMAN,
|
||||
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 {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
match self {
|
||||
Self::MacRoman(MacRomanRevision::Modern) => f.write_str("Mac OS Roman (post-8.5)"),
|
||||
Self::MacRoman(MacRomanRevision::Classic) => f.write_str("Mac OS Roman (pre-8.5)"),
|
||||
match self.classic_qualifier() {
|
||||
Some(qualifier) => write!(f, "{} ({qualifier})", self.name()),
|
||||
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)]
|
||||
#[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 {
|
||||
/// `ch` has no representation 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)]
|
||||
mod tests {
|
||||
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 {
|
||||
AppleEncoding::default()
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn ascii_passthrough() {
|
||||
assert_eq!(roman().decode(b"Macintosh HD"), "Macintosh HD");
|
||||
assert_eq!(roman().encode("Macintosh HD").unwrap(), b"Macintosh HD");
|
||||
for &enc in AppleEncoding::ALL {
|
||||
assert_eq!(enc.decode(b"Macintosh HD").unwrap(), "Macintosh HD");
|
||||
assert_eq!(enc.encode("Macintosh HD").unwrap(), b"Macintosh HD");
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn known_high_mappings() {
|
||||
// Same golden cases the fsinspect table was validated against.
|
||||
assert_eq!(roman().decode(&[0x80]), "Ä");
|
||||
assert_eq!(roman().decode(&[0x8E]), "é");
|
||||
assert_eq!(roman().decode(&[0xA9]), "©");
|
||||
assert_eq!(roman().decode(&[0xAA]), "™");
|
||||
assert_eq!(roman().decode(&[0xF0]), "\u{F8FF}"); // Apple logo (PUA)
|
||||
}
|
||||
// Golden values straight from the Apple tables.
|
||||
assert_eq!(roman().decode(&[0x80]).unwrap(), "Ä");
|
||||
assert_eq!(roman().decode(&[0x8E]).unwrap(), "é");
|
||||
assert_eq!(roman().decode(&[0xA9]).unwrap(), "©");
|
||||
assert_eq!(roman().decode(&[0xAA]).unwrap(), "™");
|
||||
assert_eq!(roman().decode(&[0xF0]).unwrap(), "\u{F8FF}"); // Apple logo (PUA)
|
||||
|
||||
#[test]
|
||||
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");
|
||||
let modern = Revision::Modern;
|
||||
assert_eq!(
|
||||
roman().decode(b"Test\x00garbage").len(),
|
||||
"Test garbage".len()
|
||||
AppleEncoding::MacCyrillic(modern).decode(&[0x80]).unwrap(),
|
||||
"А"
|
||||
);
|
||||
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]
|
||||
fn high_bytes_round_trip_both_revisions() {
|
||||
for revision in [MacRomanRevision::Modern, MacRomanRevision::Classic] {
|
||||
let enc = AppleEncoding::MacRoman(revision);
|
||||
for byte in 0x80u8..=0xFF {
|
||||
let decoded = enc.decode(&[byte]);
|
||||
assert_eq!(
|
||||
enc.encode(&decoded).unwrap(),
|
||||
vec![byte],
|
||||
"byte {byte:#04x} failed to round-trip under {enc}"
|
||||
);
|
||||
fn euro_revision_split_roman_family() {
|
||||
for classic in [
|
||||
AppleEncoding::MacRoman(Revision::Classic),
|
||||
AppleEncoding::MacCroatian(Revision::Classic),
|
||||
AppleEncoding::MacIcelandic(Revision::Classic),
|
||||
AppleEncoding::MacRomanian(Revision::Classic),
|
||||
AppleEncoding::MacCeltic(Revision::Classic),
|
||||
AppleEncoding::MacGaelic(Revision::Classic),
|
||||
] {
|
||||
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]
|
||||
fn high_table_is_a_bijection() {
|
||||
// No duplicate glyphs, else encode would be ambiguous.
|
||||
let table = mac_roman::high_table(MacRomanRevision::Modern);
|
||||
for i in 0..table.len() {
|
||||
for j in (i + 1)..table.len() {
|
||||
assert_ne!(table[i], table[j], "duplicate glyph at {i} and {j}");
|
||||
fn every_table_is_a_bijection() {
|
||||
// No duplicate scalars, else encode would be ambiguous.
|
||||
for enc in every_encoding() {
|
||||
let mut seen = std::collections::HashSet::new();
|
||||
for slot in enc.table().iter().flatten() {
|
||||
assert!(seen.insert(*slot), "duplicate scalar {slot:?} in {enc}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn 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]
|
||||
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();
|
||||
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]
|
||||
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!(
|
||||
AppleEncoding::from_script_code(SCRIPT_ROMAN),
|
||||
Some(AppleEncoding::MacRoman(MacRomanRevision::Modern))
|
||||
roman().decode(b"Test\x00garbage").unwrap().len(),
|
||||
"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