├── src
└── FontLib
│ ├── Exception
│ └── FontNotFoundException.php
│ ├── OpenType
│ ├── File.php
│ └── TableDirectoryEntry.php
│ ├── Table
│ ├── Type
│ │ ├── cvt.php
│ │ ├── fpgm.php
│ │ ├── prep.php
│ │ ├── hhea.php
│ │ ├── maxp.php
│ │ ├── nameRecord.php
│ │ ├── head.php
│ │ ├── os2.php
│ │ ├── hmtx.php
│ │ ├── loca.php
│ │ ├── kern.php
│ │ ├── post.php
│ │ ├── glyf.php
│ │ └── name.php
│ ├── Table.php
│ └── DirectoryEntry.php
│ ├── Glyph
│ ├── OutlineComponent.php
│ ├── Outline.php
│ ├── OutlineComposite.php
│ └── OutlineSimple.php
│ ├── Header.php
│ ├── TrueType
│ ├── Header.php
│ ├── TableDirectoryEntry.php
│ └── Collection.php
│ ├── WOFF
│ ├── TableDirectoryEntry.php
│ ├── Header.php
│ └── File.php
│ ├── EncodingMap.php
│ ├── Font.php
│ ├── EOT
│ ├── Header.php
│ └── File.php
│ └── AdobeFontMetrics.php
├── AUTHORS.md
├── phpunit.xml
├── composer.json
├── README.md
└── maps
├── cp874.map
├── cp1253.map
├── cp1255.map
├── cp1257.map
├── iso-8859-7.map
├── cp1258.map
├── cp1254.map
├── cp1252.map
├── cp1250.map
├── iso-8859-2.map
├── iso-8859-15.map
├── iso-8859-4.map
├── iso-8859-1.map
├── iso-8859-9.map
├── iso-8859-16.map
├── iso-8859-11.map
├── iso-8859-5.map
├── koi8-r.map
├── koi8-u.map
├── cp1251.map
└── adobe-standard-encoding.map
/src/FontLib/Exception/FontNotFoundException.php:
--------------------------------------------------------------------------------
1 | message = 'Font not found in: ' . $fontPath;
10 | }
11 | }
--------------------------------------------------------------------------------
/AUTHORS.md:
--------------------------------------------------------------------------------
1 | FontLib was designed and developed by Fabien Ménager.
2 |
3 | ### Current Team
4 |
5 | * **Brian Sweeney** (maintainer)
6 |
7 | ### Alumni
8 |
9 | * **Fabien Ménager** (creator)
10 |
11 | ### Contributors
12 | * **mondrake**
13 | * [and many more...](https://github.com/dompdf/php-font-lib/graphs/contributors)
14 |
15 | ### Thanks
16 |
17 | FontLib would not have been possible without strong community support.
18 |
--------------------------------------------------------------------------------
/src/FontLib/OpenType/File.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
12 |
13 |
14 | ./tests/FontLib/
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/FontLib/Table/Type/cvt.php:
--------------------------------------------------------------------------------
1 | getFont();
20 | $font->seek($this->entry->offset);
21 | $this->rawData = $font->read($this->entry->length);
22 | }
23 | function _encode() {
24 | return $this->getFont()->write($this->rawData, $this->entry->length);
25 | }
26 | }
--------------------------------------------------------------------------------
/src/FontLib/Table/Type/fpgm.php:
--------------------------------------------------------------------------------
1 | getFont();
20 | $font->seek($this->entry->offset);
21 | $this->rawData = $font->read($this->entry->length);
22 | }
23 | function _encode() {
24 | return $this->getFont()->write($this->rawData, $this->entry->length);
25 | }
26 | }
--------------------------------------------------------------------------------
/src/FontLib/Table/Type/prep.php:
--------------------------------------------------------------------------------
1 | getFont();
23 | $font->seek($this->entry->offset);
24 | $this->rawData = $font->read($this->entry->length);
25 | }
26 | function _encode() {
27 | return $this->getFont()->write($this->rawData, $this->entry->length);
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/FontLib/Glyph/OutlineComponent.php:
--------------------------------------------------------------------------------
1 | a, $this->b,
26 | $this->c, $this->d,
27 | $this->e, $this->f,
28 | );
29 | }
30 | }
--------------------------------------------------------------------------------
/src/FontLib/Header.php:
--------------------------------------------------------------------------------
1 | font = $font;
27 | }
28 |
29 | public function encode() {
30 | return $this->font->pack($this->def, $this->data);
31 | }
32 |
33 | public function parse() {
34 | $this->data = $this->font->unpack($this->def);
35 | }
36 | }
--------------------------------------------------------------------------------
/src/FontLib/TrueType/Header.php:
--------------------------------------------------------------------------------
1 | self::uint32,
18 | "numTables" => self::uint16,
19 | "searchRange" => self::uint16,
20 | "entrySelector" => self::uint16,
21 | "rangeShift" => self::uint16,
22 | );
23 |
24 | public function parse() {
25 | parent::parse();
26 |
27 | $format = $this->data["format"];
28 | $this->data["formatText"] = $this->convertUInt32ToStr($format);
29 | }
30 | }
--------------------------------------------------------------------------------
/src/FontLib/TrueType/TableDirectoryEntry.php:
--------------------------------------------------------------------------------
1 | font;
26 | $this->checksum = $font->readUInt32();
27 | $this->offset = $font->readUInt32();
28 | $this->length = $font->readUInt32();
29 | $this->entryLength += 12;
30 | }
31 | }
32 |
33 |
--------------------------------------------------------------------------------
/src/FontLib/WOFF/TableDirectoryEntry.php:
--------------------------------------------------------------------------------
1 | font;
28 | $this->offset = $font->readUInt32();
29 | $this->length = $font->readUInt32();
30 | $this->origLength = $font->readUInt32();
31 | $this->checksum = $font->readUInt32();
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "dompdf/php-font-lib",
3 | "type": "library",
4 | "description": "A library to read, parse, export and make subsets of different types of font files.",
5 | "homepage": "https://github.com/dompdf/php-font-lib",
6 | "license": "LGPL-2.1-or-later",
7 | "authors": [
8 | {
9 | "name": "The FontLib Community",
10 | "homepage": "https://github.com/dompdf/php-font-lib/blob/master/AUTHORS.md"
11 | }
12 | ],
13 | "autoload": {
14 | "psr-4": {
15 | "FontLib\\": "src/FontLib"
16 | }
17 | },
18 | "autoload-dev": {
19 | "psr-4": {
20 | "FontLib\\Tests\\": "tests/FontLib"
21 | }
22 | },
23 | "require": {
24 | "php": "^7.1 || ^8.0",
25 | "ext-mbstring": "*"
26 | },
27 | "require-dev": {
28 | "phpunit/phpunit": "^7.5 || ^8 || ^9 || ^10 || ^11"
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/FontLib/EncodingMap.php:
--------------------------------------------------------------------------------
1 | f = fopen($file, "r");
20 | }
21 |
22 | function parse() {
23 | $map = array();
24 |
25 | while ($line = fgets($this->f)) {
26 | if (preg_match('/^[\!\=]([0-9A-F]{2,})\s+U\+([0-9A-F]{2})([0-9A-F]{2})\s+([^\s]+)/', $line, $matches)) {
27 | $unicode = (hexdec($matches[2]) << 8) + hexdec($matches[3]);
28 | $map[hexdec($matches[1])] = array($unicode, $matches[4]);
29 | }
30 | }
31 |
32 | ksort($map);
33 |
34 | return $map;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/FontLib/WOFF/Header.php:
--------------------------------------------------------------------------------
1 | self::uint32,
18 | "flavor" => self::uint32,
19 | "length" => self::uint32,
20 | "numTables" => self::uint16,
21 | self::uint16,
22 | "totalSfntSize" => self::uint32,
23 | "majorVersion" => self::uint16,
24 | "minorVersion" => self::uint16,
25 | "metaOffset" => self::uint32,
26 | "metaLength" => self::uint32,
27 | "metaOrigLength" => self::uint32,
28 | "privOffset" => self::uint32,
29 | "privLength" => self::uint32,
30 | );
31 | }
--------------------------------------------------------------------------------
/src/FontLib/Table/Type/hhea.php:
--------------------------------------------------------------------------------
1 | self::Fixed,
19 | "ascent" => self::FWord,
20 | "descent" => self::FWord,
21 | "lineGap" => self::FWord,
22 | "advanceWidthMax" => self::uFWord,
23 | "minLeftSideBearing" => self::FWord,
24 | "minRightSideBearing" => self::FWord,
25 | "xMaxExtent" => self::FWord,
26 | "caretSlopeRise" => self::int16,
27 | "caretSlopeRun" => self::int16,
28 | "caretOffset" => self::FWord,
29 | self::int16,
30 | self::int16,
31 | self::int16,
32 | self::int16,
33 | "metricDataFormat" => self::int16,
34 | "numOfLongHorMetrics" => self::uint16,
35 | );
36 |
37 | function _encode() {
38 | $font = $this->getFont();
39 | $this->data["numOfLongHorMetrics"] = count($font->getSubset());
40 |
41 | return parent::_encode();
42 | }
43 | }
--------------------------------------------------------------------------------
/src/FontLib/Table/Type/maxp.php:
--------------------------------------------------------------------------------
1 | self::Fixed,
19 | "numGlyphs" => self::uint16,
20 | "maxPoints" => self::uint16,
21 | "maxContours" => self::uint16,
22 | "maxComponentPoints" => self::uint16,
23 | "maxComponentContours" => self::uint16,
24 | "maxZones" => self::uint16,
25 | "maxTwilightPoints" => self::uint16,
26 | "maxStorage" => self::uint16,
27 | "maxFunctionDefs" => self::uint16,
28 | "maxInstructionDefs" => self::uint16,
29 | "maxStackElements" => self::uint16,
30 | "maxSizeOfInstructions" => self::uint16,
31 | "maxComponentElements" => self::uint16,
32 | "maxComponentDepth" => self::uint16,
33 | );
34 |
35 | function _encode() {
36 | $font = $this->getFont();
37 | $this->data["numGlyphs"] = count($font->getSubset());
38 |
39 | return parent::_encode();
40 | }
41 | }
--------------------------------------------------------------------------------
/src/FontLib/Table/Type/nameRecord.php:
--------------------------------------------------------------------------------
1 | self::uint16,
29 | "platformSpecificID" => self::uint16,
30 | "languageID" => self::uint16,
31 | "nameID" => self::uint16,
32 | "length" => self::uint16,
33 | "offset" => self::uint16,
34 | );
35 |
36 | public function map($data) {
37 | foreach ($data as $key => $value) {
38 | $this->$key = $value;
39 | }
40 | }
41 |
42 | public function getUTF8() {
43 | return $this->string;
44 | }
45 |
46 | public function getUTF16() {
47 | return Font::UTF8ToUTF16($this->string);
48 | }
49 |
50 | function __toString() {
51 | return $this->string;
52 | }
53 | }
--------------------------------------------------------------------------------
/src/FontLib/Table/Type/head.php:
--------------------------------------------------------------------------------
1 | self::Fixed,
20 | "fontRevision" => self::Fixed,
21 | "checkSumAdjustment" => self::uint32,
22 | "magicNumber" => self::uint32,
23 | "flags" => self::uint16,
24 | "unitsPerEm" => self::uint16,
25 | "created" => self::longDateTime,
26 | "modified" => self::longDateTime,
27 | "xMin" => self::FWord,
28 | "yMin" => self::FWord,
29 | "xMax" => self::FWord,
30 | "yMax" => self::FWord,
31 | "macStyle" => self::uint16,
32 | "lowestRecPPEM" => self::uint16,
33 | "fontDirectionHint" => self::int16,
34 | "indexToLocFormat" => self::int16,
35 | "glyphDataFormat" => self::int16,
36 | );
37 |
38 | protected function _parse() {
39 | parent::_parse();
40 |
41 | if ($this->data["magicNumber"] != 0x5F0F3CF5) {
42 | throw new Exception("Incorrect magic number (" . dechex($this->data["magicNumber"]) . ")");
43 | }
44 | }
45 |
46 | function _encode() {
47 | $this->data["checkSumAdjustment"] = 0;
48 | return parent::_encode();
49 | }
50 | }
--------------------------------------------------------------------------------
/src/FontLib/Table/Type/os2.php:
--------------------------------------------------------------------------------
1 | self::uint16,
19 | "xAvgCharWidth" => self::int16,
20 | "usWeightClass" => self::uint16,
21 | "usWidthClass" => self::uint16,
22 | "fsType" => self::int16,
23 | "ySubscriptXSize" => self::int16,
24 | "ySubscriptYSize" => self::int16,
25 | "ySubscriptXOffset" => self::int16,
26 | "ySubscriptYOffset" => self::int16,
27 | "ySuperscriptXSize" => self::int16,
28 | "ySuperscriptYSize" => self::int16,
29 | "ySuperscriptXOffset" => self::int16,
30 | "ySuperscriptYOffset" => self::int16,
31 | "yStrikeoutSize" => self::int16,
32 | "yStrikeoutPosition" => self::int16,
33 | "sFamilyClass" => self::int16,
34 | "panose" => array(self::uint8, 10),
35 | "ulCharRange" => array(self::uint32, 4),
36 | "achVendID" => array(self::char, 4),
37 | "fsSelection" => self::uint16,
38 | "fsFirstCharIndex" => self::uint16,
39 | "fsLastCharIndex" => self::uint16,
40 | "typoAscender" => self::int16,
41 | "typoDescender" => self::int16,
42 | "typoLineGap" => self::int16,
43 | "winAscent" => self::int16,
44 | "winDescent" => self::int16,
45 | );
46 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | [](https://github.com/dompdf/php-font-lib/actions/workflows/phpunit.yml)
2 |
3 | # PHP Font Lib
4 |
5 | This library can be used to:
6 | * Read TrueType, OpenType (with TrueType glyphs), WOFF font files
7 | * Extract basic info (name, style, etc)
8 | * Extract advanced info (horizontal metrics, glyph names, glyph shapes, etc)
9 | * Make an Adobe Font Metrics (AFM) file from a font
10 |
11 | This project was initiated by the need to read font files in the [DOMPDF project](https://github.com/dompdf/dompdf).
12 |
13 | Usage Example
14 | -------------
15 |
16 | ### Base font information
17 |
18 | ```php
19 | $font = \FontLib\Font::load('fontfile.ttf');
20 | $font->parse(); // for getFontWeight() to work this call must be done first!
21 | echo $font->getFontName() .'
';
22 | echo $font->getFontSubfamily() .'
';
23 | echo $font->getFontSubfamilyID() .'
';
24 | echo $font->getFontFullName() .'
';
25 | echo $font->getFontVersion() .'
';
26 | echo $font->getFontWeight() .'
';
27 | echo $font->getFontPostscriptName() .'
';
28 | $font->close();
29 | ```
30 |
31 | ### Font Metrics Generation
32 |
33 | ```php
34 | $font = FontLib\Font::load('fontfile.ttf');
35 | $font->parse();
36 | $font->saveAdobeFontMetrics('fontfile.ufm');
37 | ```
38 |
39 | ### Create a font subset
40 |
41 | ```php
42 | $font = FontLib\Font::load('fontfile.ttf');
43 | $font->parse();
44 | $font->setSubset("abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ.:,;' (!?)+-*/== 1234567890"); // characters to include
45 | $font->reduce();
46 | touch('fontfile.subset.ttf');
47 | $font->open('fontfile.subset.ttf', FontLib\BinaryStream::modeReadWrite);
48 | $font->encode(array("OS/2"));
49 | $font->close();
50 | ```
51 |
--------------------------------------------------------------------------------
/src/FontLib/Table/Type/hmtx.php:
--------------------------------------------------------------------------------
1 | getFont();
19 | $offset = $font->pos();
20 |
21 | $numOfLongHorMetrics = $font->getData("hhea", "numOfLongHorMetrics");
22 | $numGlyphs = $font->getData("maxp", "numGlyphs");
23 |
24 | $font->seek($offset);
25 |
26 | $data = array();
27 | $metrics = $font->readUInt16Many($numOfLongHorMetrics * 2);
28 | for ($gid = 0, $mid = 0; $gid < $numOfLongHorMetrics; $gid++) {
29 | $advanceWidth = isset($metrics[$mid]) ? $metrics[$mid] : 0;
30 | $mid += 1;
31 | $leftSideBearing = isset($metrics[$mid]) ? $metrics[$mid] : 0;
32 | $mid += 1;
33 | $data[$gid] = array($advanceWidth, $leftSideBearing);
34 | }
35 |
36 | if ($numOfLongHorMetrics < $numGlyphs) {
37 | $lastWidth = end($data)[0];
38 | $numLeft = $numGlyphs - $numOfLongHorMetrics;
39 | $metrics = $font->readUInt16Many($numLeft);
40 | for($i = 0; $i < $numLeft; $i++) {
41 | $gid = $numOfLongHorMetrics + $i;
42 | $leftSideBearing = isset($metrics[$i]) ? $metrics[$i] : 0;
43 | $data[$gid] = array($lastWidth, $leftSideBearing);
44 | }
45 | }
46 |
47 | $this->data = $data;
48 | }
49 |
50 | protected function _encode() {
51 | $font = $this->getFont();
52 | $subset = $font->getSubset();
53 | $data = $this->data;
54 |
55 | $length = 0;
56 |
57 | foreach ($subset as $gid) {
58 | $length += $font->writeUInt16($data[$gid][0]);
59 | $length += $font->writeUInt16($data[$gid][1]);
60 | }
61 |
62 | return $length;
63 | }
64 | }
--------------------------------------------------------------------------------
/src/FontLib/Font.php:
--------------------------------------------------------------------------------
1 | load($file);
67 |
68 | return $obj;
69 | }
70 |
71 | return null;
72 | }
73 |
74 | static function d($str) {
75 | if (!self::$debug) {
76 | return;
77 | }
78 | echo "$str\n";
79 | }
80 |
81 | static function UTF16ToUTF8($str) {
82 | return mb_convert_encoding($str, "utf-8", "utf-16");
83 | }
84 |
85 | static function UTF8ToUTF16($str) {
86 | return mb_convert_encoding($str, "utf-16", "utf-8");
87 | }
88 | }
89 |
--------------------------------------------------------------------------------
/src/FontLib/Table/Type/loca.php:
--------------------------------------------------------------------------------
1 | getFont();
19 | $offset = $font->pos();
20 |
21 | $indexToLocFormat = $font->getData("head", "indexToLocFormat");
22 | $numGlyphs = $font->getData("maxp", "numGlyphs");
23 |
24 | $font->seek($offset);
25 |
26 | $data = array();
27 |
28 | // 2 bytes
29 | if ($indexToLocFormat == 0) {
30 | $d = $font->read(($numGlyphs + 1) * 2);
31 | $loc = unpack("n*", $d);
32 |
33 | for ($i = 0; $i <= $numGlyphs; $i++) {
34 | $data[] = isset($loc[$i + 1]) ? $loc[$i + 1] * 2 : 0;
35 | }
36 | }
37 |
38 | // 4 bytes
39 | else {
40 | if ($indexToLocFormat == 1) {
41 | $d = $font->read(($numGlyphs + 1) * 4);
42 | $loc = unpack("N*", $d);
43 |
44 | for ($i = 0; $i <= $numGlyphs; $i++) {
45 | $data[] = isset($loc[$i + 1]) ? $loc[$i + 1] : 0;
46 | }
47 | }
48 | }
49 |
50 | $this->data = $data;
51 | }
52 |
53 | function _encode() {
54 | $font = $this->getFont();
55 | $data = $this->data;
56 |
57 | $indexToLocFormat = $font->getData("head", "indexToLocFormat");
58 | $numGlyphs = $font->getData("maxp", "numGlyphs");
59 | $length = 0;
60 |
61 | // 2 bytes
62 | if ($indexToLocFormat == 0) {
63 | for ($i = 0; $i <= $numGlyphs; $i++) {
64 | $length += $font->writeUInt16($data[$i] / 2);
65 | }
66 | }
67 |
68 | // 4 bytes
69 | else {
70 | if ($indexToLocFormat == 1) {
71 | for ($i = 0; $i <= $numGlyphs; $i++) {
72 | $length += $font->writeUInt32($data[$i]);
73 | }
74 | }
75 | }
76 |
77 | return $length;
78 | }
79 | }
--------------------------------------------------------------------------------
/src/FontLib/Table/Type/kern.php:
--------------------------------------------------------------------------------
1 | getFont();
19 |
20 | $data = $font->unpack(array(
21 | "version" => self::uint16,
22 | "nTables" => self::uint16,
23 |
24 | // only the first subtable will be parsed
25 | "subtableVersion" => self::uint16,
26 | "length" => self::uint16,
27 | "coverage" => self::uint16,
28 | ));
29 |
30 | $data["format"] = ($data["coverage"] >> 8);
31 |
32 | $subtable = array();
33 |
34 | switch ($data["format"]) {
35 | case 0:
36 | $subtable = $font->unpack(array(
37 | "nPairs" => self::uint16,
38 | "searchRange" => self::uint16,
39 | "entrySelector" => self::uint16,
40 | "rangeShift" => self::uint16,
41 | ));
42 |
43 | $pairs = array();
44 | $tree = array();
45 |
46 | $values = $font->readUInt16Many($subtable["nPairs"] * 3);
47 | for ($i = 0, $idx = 0; $i < $subtable["nPairs"]; $i++) {
48 | $left = $values[$idx++];
49 | $right = $values[$idx++];
50 | $value = $values[$idx++];
51 |
52 | if ($value >= 0x8000) {
53 | $value -= 0x10000;
54 | }
55 |
56 | $pairs[] = array(
57 | "left" => $left,
58 | "right" => $right,
59 | "value" => $value,
60 | );
61 |
62 | $tree[$left][$right] = $value;
63 | }
64 |
65 | //$subtable["pairs"] = $pairs;
66 | $subtable["tree"] = $tree;
67 | break;
68 |
69 | case 1:
70 | case 2:
71 | case 3:
72 | break;
73 | }
74 |
75 | $data["subtable"] = $subtable;
76 |
77 | $this->data = $data;
78 | }
79 | }
--------------------------------------------------------------------------------
/src/FontLib/Table/Table.php:
--------------------------------------------------------------------------------
1 | entry = $entry;
29 | $entry->setTable($this);
30 | }
31 |
32 | /**
33 | * @return File
34 | */
35 | public function getFont() {
36 | return $this->entry->getFont();
37 | }
38 |
39 | protected function _encode() {
40 | if (empty($this->data)) {
41 | Font::d(" >> Table is empty");
42 |
43 | return 0;
44 | }
45 |
46 | return $this->getFont()->pack($this->def, $this->data);
47 | }
48 |
49 | protected function _parse() {
50 | $this->data = $this->getFont()->unpack($this->def);
51 | }
52 |
53 | protected function _parseRaw() {
54 | $this->data = $this->getFont()->read($this->entry->length);
55 | }
56 |
57 | protected function _encodeRaw() {
58 | return $this->getFont()->write($this->data, $this->entry->length);
59 | }
60 |
61 | public function toHTML() {
62 | return "
" . var_export($this->data, true) . "
";
63 | }
64 |
65 | final public function encode() {
66 | $this->entry->startWrite();
67 |
68 | if (false && empty($this->def)) {
69 | $length = $this->_encodeRaw();
70 | }
71 | else {
72 | $length = $this->_encode();
73 | }
74 |
75 | $this->entry->endWrite();
76 |
77 | return $length;
78 | }
79 |
80 | final public function parse() {
81 | $this->entry->startRead();
82 |
83 | if (false && empty($this->def)) {
84 | $this->_parseRaw();
85 | }
86 | else {
87 | $this->_parse();
88 | }
89 |
90 | $this->entry->endRead();
91 | }
92 | }
--------------------------------------------------------------------------------
/src/FontLib/WOFF/File.php:
--------------------------------------------------------------------------------
1 | header)) {
22 | return;
23 | }
24 |
25 | $this->header = new Header($this);
26 | $this->header->parse();
27 | }
28 |
29 | public function load($file) {
30 | parent::load($file);
31 |
32 | $this->parseTableEntries();
33 | $dataOffset = $this->pos() + count($this->directory) * 20;
34 |
35 | $fw = $this->getTempFile(false);
36 | $fr = $this->f;
37 |
38 | $this->f = $fw;
39 | $offset = $this->header->encode();
40 |
41 | foreach ($this->directory as $entry) {
42 | // Read ...
43 | $this->f = $fr;
44 | $this->seek($entry->offset);
45 | $data = $this->read($entry->length);
46 |
47 | if ($entry->length < $entry->origLength) {
48 | $data = (string) gzuncompress($data);
49 | }
50 |
51 | // Prepare data ...
52 | $length = mb_strlen($data, '8bit');
53 | $entry->length = $entry->origLength = $length;
54 | $entry->offset = $dataOffset;
55 |
56 | // Write ...
57 | $this->f = $fw;
58 |
59 | // Woff Entry
60 | $this->seek($offset);
61 | $offset += $this->write($entry->tag, 4); // tag
62 | $offset += $this->writeUInt32($dataOffset); // offset
63 | $offset += $this->writeUInt32($length); // length
64 | $offset += $this->writeUInt32($length); // origLength
65 | $offset += $this->writeUInt32(DirectoryEntry::computeChecksum($data)); // checksum
66 |
67 | // Data
68 | $this->seek($dataOffset);
69 | $dataOffset += $this->write($data, $length);
70 | }
71 |
72 | $this->f = $fw;
73 | $this->seek(0);
74 |
75 | // Need to re-parse this, don't know why
76 | $this->header = null;
77 | $this->directory = array();
78 | $this->parseTableEntries();
79 | }
80 | }
81 |
--------------------------------------------------------------------------------
/src/FontLib/TrueType/Collection.php:
--------------------------------------------------------------------------------
1 | numFonts)) {
35 | return;
36 | }
37 |
38 | $this->read(4); // tag name
39 |
40 | $this->version = $this->readFixed();
41 | $this->numFonts = $this->readUInt32();
42 |
43 | for ($i = 0; $i < $this->numFonts; $i++) {
44 | $this->collectionOffsets[] = $this->readUInt32();
45 | }
46 | }
47 |
48 | /**
49 | * @param int $fontId
50 | *
51 | * @throws OutOfBoundsException
52 | * @return File
53 | */
54 | function getFont($fontId) {
55 | $this->parse();
56 |
57 | if (!isset($this->collectionOffsets[$fontId])) {
58 | throw new OutOfBoundsException();
59 | }
60 |
61 | if (isset($this->collection[$fontId])) {
62 | return $this->collection[$fontId];
63 | }
64 |
65 | $font = new File();
66 | $font->f = $this->f;
67 | $font->setTableOffset($this->collectionOffsets[$fontId]);
68 |
69 | return $this->collection[$fontId] = $font;
70 | }
71 |
72 | function current() {
73 | return $this->getFont($this->position);
74 | }
75 |
76 | function key() {
77 | return $this->position;
78 | }
79 |
80 | function next() {
81 | return ++$this->position;
82 | }
83 |
84 | function rewind() {
85 | $this->position = 0;
86 | }
87 |
88 | function valid() {
89 | $this->parse();
90 |
91 | return isset($this->collectionOffsets[$this->position]);
92 | }
93 |
94 | function count() {
95 | $this->parse();
96 |
97 | return $this->numFonts;
98 | }
99 | }
100 |
--------------------------------------------------------------------------------
/src/FontLib/Glyph/Outline.php:
--------------------------------------------------------------------------------
1 | seek($offset);
49 |
50 | if ($size === 0 || $font->readInt16() > -1) {
51 | /** @var OutlineSimple $glyph */
52 | $glyph = new OutlineSimple($table, $offset, $size);
53 | }
54 | else {
55 | /** @var OutlineComposite $glyph */
56 | $glyph = new OutlineComposite($table, $offset, $size);
57 | }
58 |
59 | $glyph->parse($font);
60 |
61 | return $glyph;
62 | }
63 |
64 | /**
65 | * @return File
66 | */
67 | function getFont() {
68 | return $this->table->getFont();
69 | }
70 |
71 | function __construct(glyf $table, $offset = null, $size = null) {
72 | $this->table = $table;
73 | $this->offset = $offset;
74 | $this->size = $size;
75 | }
76 |
77 | function parse(BinaryStream $font) {
78 | $font->seek($this->offset);
79 |
80 | $this->raw = $font->read($this->size);
81 | }
82 |
83 | function parseData() {
84 | $font = $this->getFont();
85 | $font->seek($this->offset);
86 |
87 | $this->numberOfContours = $font->readInt16();
88 | $this->xMin = $font->readFWord();
89 | $this->yMin = $font->readFWord();
90 | $this->xMax = $font->readFWord();
91 | $this->yMax = $font->readFWord();
92 | }
93 |
94 | function encode() {
95 | $font = $this->getFont();
96 |
97 | return $font->write($this->raw, mb_strlen((string) $this->raw, '8bit'));
98 | }
99 |
100 | function getSVGContours() {
101 | // Inherit
102 | }
103 |
104 | function getGlyphIDs() {
105 | return array();
106 | }
107 | }
108 |
109 |
--------------------------------------------------------------------------------
/src/FontLib/Table/DirectoryEntry.php:
--------------------------------------------------------------------------------
1 | font = $font;
57 | $this->f = $font->f;
58 | }
59 |
60 | function parse() {
61 | $this->tag = $this->font->read(4);
62 | }
63 |
64 | function open($filename, $mode = self::modeRead) {
65 | // void
66 | }
67 |
68 | function setTable(Table $font_table) {
69 | $this->font_table = $font_table;
70 | }
71 |
72 | function encode($entry_offset) {
73 | Font::d("\n==== $this->tag ====");
74 | //Font::d("Entry offset = $entry_offset");
75 |
76 | $data = $this->font_table;
77 | $font = $this->font;
78 |
79 | $table_offset = $font->pos();
80 | $this->offset = $table_offset;
81 | $table_length = $data->encode();
82 |
83 | $font->seek($table_offset + $table_length);
84 | $pad = 0;
85 | $mod = $table_length % 4;
86 | if ($mod != 0) {
87 | $pad = 4 - $mod;
88 | $font->write(str_pad("", $pad, "\0"), $pad);
89 | }
90 |
91 | $font->seek($table_offset);
92 | $table_data = $font->read($table_length);
93 |
94 | $font->seek($entry_offset);
95 |
96 | $font->write($this->tag, 4);
97 | $font->writeUInt32(self::computeChecksum($table_data));
98 | $font->writeUInt32($table_offset);
99 | $font->writeUInt32($table_length);
100 |
101 | Font::d("Bytes written = $table_length");
102 |
103 | $font->seek($table_offset + $table_length + $pad);
104 | }
105 |
106 | /**
107 | * @return File
108 | */
109 | function getFont() {
110 | return $this->font;
111 | }
112 |
113 | function startRead() {
114 | $this->font->seek($this->offset);
115 | }
116 |
117 | function endRead() {
118 | //
119 | }
120 |
121 | function startWrite() {
122 | $this->font->seek($this->offset);
123 | }
124 |
125 | function endWrite() {
126 | //
127 | }
128 | }
129 |
130 |
--------------------------------------------------------------------------------
/src/FontLib/EOT/Header.php:
--------------------------------------------------------------------------------
1 | self::uint32,
23 | "numTables" => self::uint16,
24 | "searchRange" => self::uint16,
25 | "entrySelector" => self::uint16,
26 | "rangeShift" => self::uint16,
27 | );
28 |
29 | public function parse() {
30 | $font = $this->font;
31 |
32 | $this->data = $font->unpack(array(
33 | "EOTSize" => self::uint32,
34 | "FontDataSize" => self::uint32,
35 | "Version" => self::uint32,
36 | "Flags" => self::uint32,
37 | "FontPANOSE" => array(self::uint8, 10),
38 | "Charset" => self::uint8,
39 | "Italic" => self::uint8,
40 | "Weight" => self::uint32,
41 | "fsType" => self::uint16,
42 | "MagicNumber" => self::uint16,
43 | "UnicodeRange1" => self::uint32,
44 | "UnicodeRange2" => self::uint32,
45 | "UnicodeRange3" => self::uint32,
46 | "UnicodeRange4" => self::uint32,
47 | "CodePageRange1" => self::uint32,
48 | "CodePageRange2" => self::uint32,
49 | "CheckSumAdjustment" => self::uint32,
50 | "Reserved1" => self::uint32,
51 | "Reserved2" => self::uint32,
52 | "Reserved3" => self::uint32,
53 | "Reserved4" => self::uint32,
54 | ));
55 |
56 | $this->data["Padding1"] = $font->readUInt16();
57 | $this->readString("FamilyName");
58 |
59 | $this->data["Padding2"] = $font->readUInt16();
60 | $this->readString("StyleName");
61 |
62 | $this->data["Padding3"] = $font->readUInt16();
63 | $this->readString("VersionName");
64 |
65 | $this->data["Padding4"] = $font->readUInt16();
66 | $this->readString("FullName");
67 |
68 | switch ($this->data["Version"]) {
69 | default:
70 | throw new Exception("Unknown EOT version " . $this->data["Version"]);
71 |
72 | case 0x00010000:
73 | // Nothing to do more
74 | break;
75 |
76 | case 0x00020001:
77 | $this->data["Padding5"] = $font->readUInt16();
78 | $this->readString("RootString");
79 | break;
80 |
81 | case 0x00020002:
82 | $this->data["Padding5"] = $font->readUInt16();
83 | $this->readString("RootString");
84 |
85 | $this->data["RootStringCheckSum"] = $font->readUInt32();
86 | $this->data["EUDCCodePage"] = $font->readUInt32();
87 |
88 | $this->data["Padding6"] = $font->readUInt16();
89 | $this->readString("Signature");
90 |
91 | $this->data["EUDCFlags"] = $font->readUInt32();
92 | $this->data["EUDCFontSize"] = $font->readUInt32();
93 | break;
94 | }
95 |
96 | if (!empty($this->data["RootString"])) {
97 | $this->data["RootString"] = explode("\0", $this->data["RootString"]);
98 | }
99 | }
100 |
101 | private function readString($name) {
102 | $font = $this->font;
103 | $size = $font->readUInt16();
104 |
105 | $this->data["{$name}Size"] = $size;
106 | $this->data[$name] = Font::UTF16ToUTF8($font->read($size));
107 | }
108 |
109 | public function encode() {
110 | //return $this->font->pack($this->def, $this->data);
111 | }
112 | }
--------------------------------------------------------------------------------
/src/FontLib/Table/Type/post.php:
--------------------------------------------------------------------------------
1 | self::Fixed,
20 | "italicAngle" => self::Fixed,
21 | "underlinePosition" => self::FWord,
22 | "underlineThickness" => self::FWord,
23 | "isFixedPitch" => self::uint32,
24 | "minMemType42" => self::uint32,
25 | "maxMemType42" => self::uint32,
26 | "minMemType1" => self::uint32,
27 | "maxMemType1" => self::uint32,
28 | );
29 |
30 | protected function _parse() {
31 | $font = $this->getFont();
32 | $data = $font->unpack($this->def);
33 |
34 | $names = array();
35 |
36 | switch ($data["format"]) {
37 | case 1:
38 | $names = File::$macCharNames;
39 | break;
40 |
41 | case 2:
42 | $data["numberOfGlyphs"] = $font->readUInt16();
43 |
44 | $glyphNameIndex = $font->readUInt16Many($data["numberOfGlyphs"]);
45 |
46 | $data["glyphNameIndex"] = $glyphNameIndex;
47 |
48 | $namesPascal = array();
49 | for ($i = 0; $i < $data["numberOfGlyphs"]; $i++) {
50 | $len = $font->readUInt8();
51 | $namesPascal[] = $font->read($len);
52 | }
53 |
54 | foreach ($glyphNameIndex as $g => $index) {
55 | if ($index < 258) {
56 | $names[$g] = File::$macCharNames[$index];
57 | }
58 | else {
59 | if (array_key_exists($index - 258, $namesPascal)) {
60 | $names[$g] = $namesPascal[$index - 258];
61 | }
62 | }
63 | }
64 |
65 | break;
66 |
67 | case 2.5:
68 | // TODO
69 | break;
70 |
71 | case 3:
72 | // nothing
73 | break;
74 |
75 | case 4:
76 | // TODO
77 | break;
78 | }
79 |
80 | $data["names"] = $names;
81 |
82 | $this->data = $data;
83 | }
84 |
85 | function _encode() {
86 | $font = $this->getFont();
87 | $data = $this->data;
88 | $data["format"] = 3;
89 |
90 | $length = $font->pack($this->def, $data);
91 |
92 | return $length;
93 | /*
94 | $subset = $font->getSubset();
95 |
96 | switch($data["format"]) {
97 | case 1:
98 | // nothing to do
99 | break;
100 |
101 | case 2:
102 | $old_names = $data["names"];
103 |
104 | $glyphNameIndex = range(0, count($subset));
105 |
106 | $names = array();
107 | foreach($subset as $gid) {
108 | $names[] = $data["names"][$data["glyphNameIndex"][$gid]];
109 | }
110 |
111 | $numberOfGlyphs = count($names);
112 | $length += $font->writeUInt16($numberOfGlyphs);
113 |
114 | foreach($glyphNameIndex as $gni) {
115 | $length += $font->writeUInt16($gni);
116 | }
117 |
118 | //$names = array_slice($names, 257);
119 | foreach($names as $name) {
120 | $len = strlen($name);
121 | $length += $font->writeUInt8($len);
122 | $length += $font->write($name, $len);
123 | }
124 |
125 | break;
126 |
127 | case 2.5:
128 | // TODO
129 | break;
130 |
131 | case 3:
132 | // nothing
133 | break;
134 |
135 | case 4:
136 | // TODO
137 | break;
138 | }
139 |
140 | return $length;*/
141 | }
142 | }
--------------------------------------------------------------------------------
/src/FontLib/EOT/File.php:
--------------------------------------------------------------------------------
1 | header)) {
31 | return;
32 | }
33 |
34 | $this->header = new Header($this);
35 | $this->header->parse();
36 | }
37 |
38 | function parse() {
39 | $this->parseHeader();
40 |
41 | $flags = $this->header->data["Flags"];
42 |
43 | if ($flags & self::TTEMBED_TTCOMPRESSED) {
44 | $mtx_version = $this->readUInt8();
45 | $mtx_copy_limit = $this->readUInt8() << 16 | $this->readUInt8() << 8 | $this->readUInt8();
46 | $mtx_offset_1 = $this->readUInt8() << 16 | $this->readUInt8() << 8 | $this->readUInt8();
47 | $mtx_offset_2 = $this->readUInt8() << 16 | $this->readUInt8() << 8 | $this->readUInt8();
48 | /*
49 | var_dump("$mtx_version $mtx_copy_limit $mtx_offset_1 $mtx_offset_2");
50 |
51 | $pos = $this->pos();
52 | $size = $mtx_offset_1 - $pos;
53 | var_dump("pos: $pos");
54 | var_dump("size: $size");*/
55 | }
56 |
57 | if ($flags & self::TTEMBED_XORENCRYPTDATA) {
58 | // Process XOR
59 | }
60 | // TODO Read font data ...
61 | }
62 |
63 | /**
64 | * Little endian version of the read method
65 | *
66 | * @param int $n The number of bytes to read
67 | *
68 | * @return string
69 | */
70 | public function read($n) {
71 | if ($n < 1) {
72 | return "";
73 | }
74 |
75 | $string = (string) fread($this->f, $n);
76 | $chunks = mb_str_split($string, 2, '8bit');
77 | $chunks = array_map("strrev", $chunks);
78 | return implode("", $chunks);
79 | }
80 |
81 | public function readUInt32() {
82 | $uint32 = parent::readUInt32();
83 |
84 | return $uint32 >> 16 & 0x0000FFFF | $uint32 << 16 & 0xFFFF0000;
85 | }
86 |
87 | /**
88 | * Get font copyright
89 | *
90 | * @return string|null
91 | */
92 | function getFontCopyright() {
93 | return null;
94 | }
95 |
96 | /**
97 | * Get font name
98 | *
99 | * @return string|null
100 | */
101 | function getFontName() {
102 | return $this->header->data["FamilyName"];
103 | }
104 |
105 | /**
106 | * Get font subfamily
107 | *
108 | * @return string|null
109 | */
110 | function getFontSubfamily() {
111 | return $this->header->data["StyleName"];
112 | }
113 |
114 | /**
115 | * Get font subfamily ID
116 | *
117 | * @return string|null
118 | */
119 | function getFontSubfamilyID() {
120 | return $this->header->data["StyleName"];
121 | }
122 |
123 | /**
124 | * Get font full name
125 | *
126 | * @return string|null
127 | */
128 | function getFontFullName() {
129 | return $this->header->data["FullName"];
130 | }
131 |
132 | /**
133 | * Get font version
134 | *
135 | * @return string|null
136 | */
137 | function getFontVersion() {
138 | return $this->header->data["VersionName"];
139 | }
140 |
141 | /**
142 | * Get font weight
143 | *
144 | * @return string|null
145 | */
146 | function getFontWeight() {
147 | return $this->header->data["Weight"];
148 | }
149 |
150 | /**
151 | * Get font Postscript name
152 | *
153 | * @return string|null
154 | */
155 | function getFontPostscriptName() {
156 | return null;
157 | }
158 | }
159 |
--------------------------------------------------------------------------------
/src/FontLib/Table/Type/glyf.php:
--------------------------------------------------------------------------------
1 | getFont();
23 | $offset = $font->pos();
24 |
25 | $loca = $font->getData("loca");
26 | $real_loca = array_slice($loca, 0, -1); // Not the last dummy loca entry
27 |
28 | $data = array();
29 |
30 | foreach ($real_loca as $gid => $location) {
31 | $_offset = $offset + $loca[$gid];
32 | $_size = $loca[$gid + 1] - $loca[$gid];
33 | $data[$gid] = Outline::init($this, $_offset, $_size, $font);
34 | }
35 |
36 | $this->data = $data;
37 | }
38 |
39 | public function getGlyphIDs($gids = array()) {
40 | $glyphIDs = array();
41 |
42 | foreach ($gids as $_gid) {
43 | $_glyph = $this->data[$_gid];
44 | $glyphIDs = array_merge($glyphIDs, $_glyph->getGlyphIDs());
45 | }
46 |
47 | return array_unique(array_merge($gids, $glyphIDs));
48 | }
49 |
50 | public function toHTML($n = 500) {
51 | $max = 160;
52 | $font = $this->getFont();
53 |
54 | $head = $font->getData("head");
55 | $head_json = json_encode($head);
56 |
57 | $os2 = $font->getData("OS/2");
58 | $os2_json = json_encode($os2);
59 |
60 | $hmtx = $font->getData("hmtx");
61 | $hmtx_json = json_encode($hmtx);
62 |
63 | $names = $font->getData("post", "names");
64 | $glyphIndexArray = array_flip($font->getUnicodeCharMap());
65 |
66 | $width = (abs($head["xMin"]) + $head["xMax"]);
67 | $height = (abs($head["yMin"]) + $head["yMax"]);
68 |
69 | $ratio = 1;
70 | if ($width > $max || $height > $max) {
71 | $ratio = max($width, $height) / $max;
72 | $width = round($width / $ratio);
73 | $height = round($height / $ratio);
74 | }
75 |
76 | $s = "" . "Only the first $n simple glyphs are shown (" . count($this->data) . " total)
77 |
Simple glyph
78 | Composite glyph
79 | Zoom:
80 |
81 | ";
89 |
90 | foreach ($this->data as $g => $glyph) {
91 | if ($n-- <= 0) {
92 | break;
93 | }
94 |
95 | $glyph->parseData();
96 |
97 | $shape = array(
98 | "SVGContours" => $glyph->getSVGContours(),
99 | "xMin" => $glyph->xMin,
100 | "yMin" => $glyph->yMin,
101 | "xMax" => $glyph->xMax,
102 | "yMax" => $glyph->yMax,
103 | );
104 | $shape_json = json_encode($shape);
105 |
106 | $type = ($glyph instanceof OutlineSimple ? "simple" : "composite");
107 | $char = isset($glyphIndexArray[$g]) ? $glyphIndexArray[$g] : 0;
108 | $name = isset($names[$g]) ? $names[$g] : sprintf("uni%04x", $char);
109 | $char = $char ? "{$glyphIndexArray[$g]};" : "";
110 |
111 | if ($char === "" && empty($shape["SVGContours"])) {
112 | $n++;
113 | continue;
114 | }
115 |
116 | $s .= "
117 |
$g
118 |
$char
119 |
$name
120 | ";
121 |
122 | if ($type == "composite") {
123 | foreach ($glyph->getGlyphIDs() as $_id) {
124 | $s .= "
$_id ";
125 | }
126 | }
127 |
128 | $s .= "
129 |
130 |
131 | ";
132 | }
133 |
134 | return $s;
135 | }
136 |
137 |
138 | protected function _encode() {
139 | $font = $this->getFont();
140 | $subset = $font->getSubset();
141 | $data = $this->data;
142 |
143 | $loca = array();
144 |
145 | $length = 0;
146 | foreach ($subset as $gid) {
147 | $loca[] = $length;
148 |
149 | $bytes = $data[$gid]->encode();
150 |
151 | $pad = 0;
152 | $mod = $bytes % 4;
153 | if ($mod != 0) {
154 | $pad = 4 - $mod;
155 | $font->write(str_pad("", $pad, "\0"), $pad);
156 | }
157 | $length += $bytes + $pad;
158 | }
159 |
160 | $loca[] = $length; // dummy loca
161 | $font->getTableObject("loca")->data = $loca;
162 |
163 | return $length;
164 | }
165 | }
--------------------------------------------------------------------------------
/maps/cp874.map:
--------------------------------------------------------------------------------
1 | !00 U+0000 .notdef
2 | !01 U+0001 .notdef
3 | !02 U+0002 .notdef
4 | !03 U+0003 .notdef
5 | !04 U+0004 .notdef
6 | !05 U+0005 .notdef
7 | !06 U+0006 .notdef
8 | !07 U+0007 .notdef
9 | !08 U+0008 .notdef
10 | !09 U+0009 .notdef
11 | !0A U+000A .notdef
12 | !0B U+000B .notdef
13 | !0C U+000C .notdef
14 | !0D U+000D .notdef
15 | !0E U+000E .notdef
16 | !0F U+000F .notdef
17 | !10 U+0010 .notdef
18 | !11 U+0011 .notdef
19 | !12 U+0012 .notdef
20 | !13 U+0013 .notdef
21 | !14 U+0014 .notdef
22 | !15 U+0015 .notdef
23 | !16 U+0016 .notdef
24 | !17 U+0017 .notdef
25 | !18 U+0018 .notdef
26 | !19 U+0019 .notdef
27 | !1A U+001A .notdef
28 | !1B U+001B .notdef
29 | !1C U+001C .notdef
30 | !1D U+001D .notdef
31 | !1E U+001E .notdef
32 | !1F U+001F .notdef
33 | !20 U+0020 space
34 | !21 U+0021 exclam
35 | !22 U+0022 quotedbl
36 | !23 U+0023 numbersign
37 | !24 U+0024 dollar
38 | !25 U+0025 percent
39 | !26 U+0026 ampersand
40 | !27 U+0027 quotesingle
41 | !28 U+0028 parenleft
42 | !29 U+0029 parenright
43 | !2A U+002A asterisk
44 | !2B U+002B plus
45 | !2C U+002C comma
46 | !2D U+002D hyphen
47 | !2E U+002E period
48 | !2F U+002F slash
49 | !30 U+0030 zero
50 | !31 U+0031 one
51 | !32 U+0032 two
52 | !33 U+0033 three
53 | !34 U+0034 four
54 | !35 U+0035 five
55 | !36 U+0036 six
56 | !37 U+0037 seven
57 | !38 U+0038 eight
58 | !39 U+0039 nine
59 | !3A U+003A colon
60 | !3B U+003B semicolon
61 | !3C U+003C less
62 | !3D U+003D equal
63 | !3E U+003E greater
64 | !3F U+003F question
65 | !40 U+0040 at
66 | !41 U+0041 A
67 | !42 U+0042 B
68 | !43 U+0043 C
69 | !44 U+0044 D
70 | !45 U+0045 E
71 | !46 U+0046 F
72 | !47 U+0047 G
73 | !48 U+0048 H
74 | !49 U+0049 I
75 | !4A U+004A J
76 | !4B U+004B K
77 | !4C U+004C L
78 | !4D U+004D M
79 | !4E U+004E N
80 | !4F U+004F O
81 | !50 U+0050 P
82 | !51 U+0051 Q
83 | !52 U+0052 R
84 | !53 U+0053 S
85 | !54 U+0054 T
86 | !55 U+0055 U
87 | !56 U+0056 V
88 | !57 U+0057 W
89 | !58 U+0058 X
90 | !59 U+0059 Y
91 | !5A U+005A Z
92 | !5B U+005B bracketleft
93 | !5C U+005C backslash
94 | !5D U+005D bracketright
95 | !5E U+005E asciicircum
96 | !5F U+005F underscore
97 | !60 U+0060 grave
98 | !61 U+0061 a
99 | !62 U+0062 b
100 | !63 U+0063 c
101 | !64 U+0064 d
102 | !65 U+0065 e
103 | !66 U+0066 f
104 | !67 U+0067 g
105 | !68 U+0068 h
106 | !69 U+0069 i
107 | !6A U+006A j
108 | !6B U+006B k
109 | !6C U+006C l
110 | !6D U+006D m
111 | !6E U+006E n
112 | !6F U+006F o
113 | !70 U+0070 p
114 | !71 U+0071 q
115 | !72 U+0072 r
116 | !73 U+0073 s
117 | !74 U+0074 t
118 | !75 U+0075 u
119 | !76 U+0076 v
120 | !77 U+0077 w
121 | !78 U+0078 x
122 | !79 U+0079 y
123 | !7A U+007A z
124 | !7B U+007B braceleft
125 | !7C U+007C bar
126 | !7D U+007D braceright
127 | !7E U+007E asciitilde
128 | !7F U+007F .notdef
129 | !80 U+20AC Euro
130 | !85 U+2026 ellipsis
131 | !91 U+2018 quoteleft
132 | !92 U+2019 quoteright
133 | !93 U+201C quotedblleft
134 | !94 U+201D quotedblright
135 | !95 U+2022 bullet
136 | !96 U+2013 endash
137 | !97 U+2014 emdash
138 | !A0 U+00A0 space
139 | !A1 U+0E01 kokaithai
140 | !A2 U+0E02 khokhaithai
141 | !A3 U+0E03 khokhuatthai
142 | !A4 U+0E04 khokhwaithai
143 | !A5 U+0E05 khokhonthai
144 | !A6 U+0E06 khorakhangthai
145 | !A7 U+0E07 ngonguthai
146 | !A8 U+0E08 chochanthai
147 | !A9 U+0E09 chochingthai
148 | !AA U+0E0A chochangthai
149 | !AB U+0E0B sosothai
150 | !AC U+0E0C chochoethai
151 | !AD U+0E0D yoyingthai
152 | !AE U+0E0E dochadathai
153 | !AF U+0E0F topatakthai
154 | !B0 U+0E10 thothanthai
155 | !B1 U+0E11 thonangmonthothai
156 | !B2 U+0E12 thophuthaothai
157 | !B3 U+0E13 nonenthai
158 | !B4 U+0E14 dodekthai
159 | !B5 U+0E15 totaothai
160 | !B6 U+0E16 thothungthai
161 | !B7 U+0E17 thothahanthai
162 | !B8 U+0E18 thothongthai
163 | !B9 U+0E19 nonuthai
164 | !BA U+0E1A bobaimaithai
165 | !BB U+0E1B poplathai
166 | !BC U+0E1C phophungthai
167 | !BD U+0E1D fofathai
168 | !BE U+0E1E phophanthai
169 | !BF U+0E1F fofanthai
170 | !C0 U+0E20 phosamphaothai
171 | !C1 U+0E21 momathai
172 | !C2 U+0E22 yoyakthai
173 | !C3 U+0E23 roruathai
174 | !C4 U+0E24 ruthai
175 | !C5 U+0E25 lolingthai
176 | !C6 U+0E26 luthai
177 | !C7 U+0E27 wowaenthai
178 | !C8 U+0E28 sosalathai
179 | !C9 U+0E29 sorusithai
180 | !CA U+0E2A sosuathai
181 | !CB U+0E2B hohipthai
182 | !CC U+0E2C lochulathai
183 | !CD U+0E2D oangthai
184 | !CE U+0E2E honokhukthai
185 | !CF U+0E2F paiyannoithai
186 | !D0 U+0E30 saraathai
187 | !D1 U+0E31 maihanakatthai
188 | !D2 U+0E32 saraaathai
189 | !D3 U+0E33 saraamthai
190 | !D4 U+0E34 saraithai
191 | !D5 U+0E35 saraiithai
192 | !D6 U+0E36 sarauethai
193 | !D7 U+0E37 saraueethai
194 | !D8 U+0E38 sarauthai
195 | !D9 U+0E39 sarauuthai
196 | !DA U+0E3A phinthuthai
197 | !DF U+0E3F bahtthai
198 | !E0 U+0E40 saraethai
199 | !E1 U+0E41 saraaethai
200 | !E2 U+0E42 saraothai
201 | !E3 U+0E43 saraaimaimuanthai
202 | !E4 U+0E44 saraaimaimalaithai
203 | !E5 U+0E45 lakkhangyaothai
204 | !E6 U+0E46 maiyamokthai
205 | !E7 U+0E47 maitaikhuthai
206 | !E8 U+0E48 maiekthai
207 | !E9 U+0E49 maithothai
208 | !EA U+0E4A maitrithai
209 | !EB U+0E4B maichattawathai
210 | !EC U+0E4C thanthakhatthai
211 | !ED U+0E4D nikhahitthai
212 | !EE U+0E4E yamakkanthai
213 | !EF U+0E4F fongmanthai
214 | !F0 U+0E50 zerothai
215 | !F1 U+0E51 onethai
216 | !F2 U+0E52 twothai
217 | !F3 U+0E53 threethai
218 | !F4 U+0E54 fourthai
219 | !F5 U+0E55 fivethai
220 | !F6 U+0E56 sixthai
221 | !F7 U+0E57 seventhai
222 | !F8 U+0E58 eightthai
223 | !F9 U+0E59 ninethai
224 | !FA U+0E5A angkhankhuthai
225 | !FB U+0E5B khomutthai
226 |
--------------------------------------------------------------------------------
/maps/cp1253.map:
--------------------------------------------------------------------------------
1 | !00 U+0000 .notdef
2 | !01 U+0001 .notdef
3 | !02 U+0002 .notdef
4 | !03 U+0003 .notdef
5 | !04 U+0004 .notdef
6 | !05 U+0005 .notdef
7 | !06 U+0006 .notdef
8 | !07 U+0007 .notdef
9 | !08 U+0008 .notdef
10 | !09 U+0009 .notdef
11 | !0A U+000A .notdef
12 | !0B U+000B .notdef
13 | !0C U+000C .notdef
14 | !0D U+000D .notdef
15 | !0E U+000E .notdef
16 | !0F U+000F .notdef
17 | !10 U+0010 .notdef
18 | !11 U+0011 .notdef
19 | !12 U+0012 .notdef
20 | !13 U+0013 .notdef
21 | !14 U+0014 .notdef
22 | !15 U+0015 .notdef
23 | !16 U+0016 .notdef
24 | !17 U+0017 .notdef
25 | !18 U+0018 .notdef
26 | !19 U+0019 .notdef
27 | !1A U+001A .notdef
28 | !1B U+001B .notdef
29 | !1C U+001C .notdef
30 | !1D U+001D .notdef
31 | !1E U+001E .notdef
32 | !1F U+001F .notdef
33 | !20 U+0020 space
34 | !21 U+0021 exclam
35 | !22 U+0022 quotedbl
36 | !23 U+0023 numbersign
37 | !24 U+0024 dollar
38 | !25 U+0025 percent
39 | !26 U+0026 ampersand
40 | !27 U+0027 quotesingle
41 | !28 U+0028 parenleft
42 | !29 U+0029 parenright
43 | !2A U+002A asterisk
44 | !2B U+002B plus
45 | !2C U+002C comma
46 | !2D U+002D hyphen
47 | !2E U+002E period
48 | !2F U+002F slash
49 | !30 U+0030 zero
50 | !31 U+0031 one
51 | !32 U+0032 two
52 | !33 U+0033 three
53 | !34 U+0034 four
54 | !35 U+0035 five
55 | !36 U+0036 six
56 | !37 U+0037 seven
57 | !38 U+0038 eight
58 | !39 U+0039 nine
59 | !3A U+003A colon
60 | !3B U+003B semicolon
61 | !3C U+003C less
62 | !3D U+003D equal
63 | !3E U+003E greater
64 | !3F U+003F question
65 | !40 U+0040 at
66 | !41 U+0041 A
67 | !42 U+0042 B
68 | !43 U+0043 C
69 | !44 U+0044 D
70 | !45 U+0045 E
71 | !46 U+0046 F
72 | !47 U+0047 G
73 | !48 U+0048 H
74 | !49 U+0049 I
75 | !4A U+004A J
76 | !4B U+004B K
77 | !4C U+004C L
78 | !4D U+004D M
79 | !4E U+004E N
80 | !4F U+004F O
81 | !50 U+0050 P
82 | !51 U+0051 Q
83 | !52 U+0052 R
84 | !53 U+0053 S
85 | !54 U+0054 T
86 | !55 U+0055 U
87 | !56 U+0056 V
88 | !57 U+0057 W
89 | !58 U+0058 X
90 | !59 U+0059 Y
91 | !5A U+005A Z
92 | !5B U+005B bracketleft
93 | !5C U+005C backslash
94 | !5D U+005D bracketright
95 | !5E U+005E asciicircum
96 | !5F U+005F underscore
97 | !60 U+0060 grave
98 | !61 U+0061 a
99 | !62 U+0062 b
100 | !63 U+0063 c
101 | !64 U+0064 d
102 | !65 U+0065 e
103 | !66 U+0066 f
104 | !67 U+0067 g
105 | !68 U+0068 h
106 | !69 U+0069 i
107 | !6A U+006A j
108 | !6B U+006B k
109 | !6C U+006C l
110 | !6D U+006D m
111 | !6E U+006E n
112 | !6F U+006F o
113 | !70 U+0070 p
114 | !71 U+0071 q
115 | !72 U+0072 r
116 | !73 U+0073 s
117 | !74 U+0074 t
118 | !75 U+0075 u
119 | !76 U+0076 v
120 | !77 U+0077 w
121 | !78 U+0078 x
122 | !79 U+0079 y
123 | !7A U+007A z
124 | !7B U+007B braceleft
125 | !7C U+007C bar
126 | !7D U+007D braceright
127 | !7E U+007E asciitilde
128 | !7F U+007F .notdef
129 | !80 U+20AC Euro
130 | !82 U+201A quotesinglbase
131 | !83 U+0192 florin
132 | !84 U+201E quotedblbase
133 | !85 U+2026 ellipsis
134 | !86 U+2020 dagger
135 | !87 U+2021 daggerdbl
136 | !89 U+2030 perthousand
137 | !8B U+2039 guilsinglleft
138 | !91 U+2018 quoteleft
139 | !92 U+2019 quoteright
140 | !93 U+201C quotedblleft
141 | !94 U+201D quotedblright
142 | !95 U+2022 bullet
143 | !96 U+2013 endash
144 | !97 U+2014 emdash
145 | !99 U+2122 trademark
146 | !9B U+203A guilsinglright
147 | !A0 U+00A0 space
148 | !A1 U+0385 dieresistonos
149 | !A2 U+0386 Alphatonos
150 | !A3 U+00A3 sterling
151 | !A4 U+00A4 currency
152 | !A5 U+00A5 yen
153 | !A6 U+00A6 brokenbar
154 | !A7 U+00A7 section
155 | !A8 U+00A8 dieresis
156 | !A9 U+00A9 copyright
157 | !AB U+00AB guillemotleft
158 | !AC U+00AC logicalnot
159 | !AD U+00AD hyphen
160 | !AE U+00AE registered
161 | !AF U+2015 afii00208
162 | !B0 U+00B0 degree
163 | !B1 U+00B1 plusminus
164 | !B2 U+00B2 twosuperior
165 | !B3 U+00B3 threesuperior
166 | !B4 U+0384 tonos
167 | !B5 U+00B5 mu
168 | !B6 U+00B6 paragraph
169 | !B7 U+00B7 periodcentered
170 | !B8 U+0388 Epsilontonos
171 | !B9 U+0389 Etatonos
172 | !BA U+038A Iotatonos
173 | !BB U+00BB guillemotright
174 | !BC U+038C Omicrontonos
175 | !BD U+00BD onehalf
176 | !BE U+038E Upsilontonos
177 | !BF U+038F Omegatonos
178 | !C0 U+0390 iotadieresistonos
179 | !C1 U+0391 Alpha
180 | !C2 U+0392 Beta
181 | !C3 U+0393 Gamma
182 | !C4 U+0394 Delta
183 | !C5 U+0395 Epsilon
184 | !C6 U+0396 Zeta
185 | !C7 U+0397 Eta
186 | !C8 U+0398 Theta
187 | !C9 U+0399 Iota
188 | !CA U+039A Kappa
189 | !CB U+039B Lambda
190 | !CC U+039C Mu
191 | !CD U+039D Nu
192 | !CE U+039E Xi
193 | !CF U+039F Omicron
194 | !D0 U+03A0 Pi
195 | !D1 U+03A1 Rho
196 | !D3 U+03A3 Sigma
197 | !D4 U+03A4 Tau
198 | !D5 U+03A5 Upsilon
199 | !D6 U+03A6 Phi
200 | !D7 U+03A7 Chi
201 | !D8 U+03A8 Psi
202 | !D9 U+03A9 Omega
203 | !DA U+03AA Iotadieresis
204 | !DB U+03AB Upsilondieresis
205 | !DC U+03AC alphatonos
206 | !DD U+03AD epsilontonos
207 | !DE U+03AE etatonos
208 | !DF U+03AF iotatonos
209 | !E0 U+03B0 upsilondieresistonos
210 | !E1 U+03B1 alpha
211 | !E2 U+03B2 beta
212 | !E3 U+03B3 gamma
213 | !E4 U+03B4 delta
214 | !E5 U+03B5 epsilon
215 | !E6 U+03B6 zeta
216 | !E7 U+03B7 eta
217 | !E8 U+03B8 theta
218 | !E9 U+03B9 iota
219 | !EA U+03BA kappa
220 | !EB U+03BB lambda
221 | !EC U+03BC mu
222 | !ED U+03BD nu
223 | !EE U+03BE xi
224 | !EF U+03BF omicron
225 | !F0 U+03C0 pi
226 | !F1 U+03C1 rho
227 | !F2 U+03C2 sigma1
228 | !F3 U+03C3 sigma
229 | !F4 U+03C4 tau
230 | !F5 U+03C5 upsilon
231 | !F6 U+03C6 phi
232 | !F7 U+03C7 chi
233 | !F8 U+03C8 psi
234 | !F9 U+03C9 omega
235 | !FA U+03CA iotadieresis
236 | !FB U+03CB upsilondieresis
237 | !FC U+03CC omicrontonos
238 | !FD U+03CD upsilontonos
239 | !FE U+03CE omegatonos
240 |
--------------------------------------------------------------------------------
/maps/cp1255.map:
--------------------------------------------------------------------------------
1 | !00 U+0000 .notdef
2 | !01 U+0001 .notdef
3 | !02 U+0002 .notdef
4 | !03 U+0003 .notdef
5 | !04 U+0004 .notdef
6 | !05 U+0005 .notdef
7 | !06 U+0006 .notdef
8 | !07 U+0007 .notdef
9 | !08 U+0008 .notdef
10 | !09 U+0009 .notdef
11 | !0A U+000A .notdef
12 | !0B U+000B .notdef
13 | !0C U+000C .notdef
14 | !0D U+000D .notdef
15 | !0E U+000E .notdef
16 | !0F U+000F .notdef
17 | !10 U+0010 .notdef
18 | !11 U+0011 .notdef
19 | !12 U+0012 .notdef
20 | !13 U+0013 .notdef
21 | !14 U+0014 .notdef
22 | !15 U+0015 .notdef
23 | !16 U+0016 .notdef
24 | !17 U+0017 .notdef
25 | !18 U+0018 .notdef
26 | !19 U+0019 .notdef
27 | !1A U+001A .notdef
28 | !1B U+001B .notdef
29 | !1C U+001C .notdef
30 | !1D U+001D .notdef
31 | !1E U+001E .notdef
32 | !1F U+001F .notdef
33 | !20 U+0020 space
34 | !21 U+0021 exclam
35 | !22 U+0022 quotedbl
36 | !23 U+0023 numbersign
37 | !24 U+0024 dollar
38 | !25 U+0025 percent
39 | !26 U+0026 ampersand
40 | !27 U+0027 quotesingle
41 | !28 U+0028 parenleft
42 | !29 U+0029 parenright
43 | !2A U+002A asterisk
44 | !2B U+002B plus
45 | !2C U+002C comma
46 | !2D U+002D hyphen
47 | !2E U+002E period
48 | !2F U+002F slash
49 | !30 U+0030 zero
50 | !31 U+0031 one
51 | !32 U+0032 two
52 | !33 U+0033 three
53 | !34 U+0034 four
54 | !35 U+0035 five
55 | !36 U+0036 six
56 | !37 U+0037 seven
57 | !38 U+0038 eight
58 | !39 U+0039 nine
59 | !3A U+003A colon
60 | !3B U+003B semicolon
61 | !3C U+003C less
62 | !3D U+003D equal
63 | !3E U+003E greater
64 | !3F U+003F question
65 | !40 U+0040 at
66 | !41 U+0041 A
67 | !42 U+0042 B
68 | !43 U+0043 C
69 | !44 U+0044 D
70 | !45 U+0045 E
71 | !46 U+0046 F
72 | !47 U+0047 G
73 | !48 U+0048 H
74 | !49 U+0049 I
75 | !4A U+004A J
76 | !4B U+004B K
77 | !4C U+004C L
78 | !4D U+004D M
79 | !4E U+004E N
80 | !4F U+004F O
81 | !50 U+0050 P
82 | !51 U+0051 Q
83 | !52 U+0052 R
84 | !53 U+0053 S
85 | !54 U+0054 T
86 | !55 U+0055 U
87 | !56 U+0056 V
88 | !57 U+0057 W
89 | !58 U+0058 X
90 | !59 U+0059 Y
91 | !5A U+005A Z
92 | !5B U+005B bracketleft
93 | !5C U+005C backslash
94 | !5D U+005D bracketright
95 | !5E U+005E asciicircum
96 | !5F U+005F underscore
97 | !60 U+0060 grave
98 | !61 U+0061 a
99 | !62 U+0062 b
100 | !63 U+0063 c
101 | !64 U+0064 d
102 | !65 U+0065 e
103 | !66 U+0066 f
104 | !67 U+0067 g
105 | !68 U+0068 h
106 | !69 U+0069 i
107 | !6A U+006A j
108 | !6B U+006B k
109 | !6C U+006C l
110 | !6D U+006D m
111 | !6E U+006E n
112 | !6F U+006F o
113 | !70 U+0070 p
114 | !71 U+0071 q
115 | !72 U+0072 r
116 | !73 U+0073 s
117 | !74 U+0074 t
118 | !75 U+0075 u
119 | !76 U+0076 v
120 | !77 U+0077 w
121 | !78 U+0078 x
122 | !79 U+0079 y
123 | !7A U+007A z
124 | !7B U+007B braceleft
125 | !7C U+007C bar
126 | !7D U+007D braceright
127 | !7E U+007E asciitilde
128 | !7F U+007F .notdef
129 | !80 U+20AC Euro
130 | !82 U+201A quotesinglbase
131 | !83 U+0192 florin
132 | !84 U+201E quotedblbase
133 | !85 U+2026 ellipsis
134 | !86 U+2020 dagger
135 | !87 U+2021 daggerdbl
136 | !88 U+02C6 circumflex
137 | !89 U+2030 perthousand
138 | !8B U+2039 guilsinglleft
139 | !91 U+2018 quoteleft
140 | !92 U+2019 quoteright
141 | !93 U+201C quotedblleft
142 | !94 U+201D quotedblright
143 | !95 U+2022 bullet
144 | !96 U+2013 endash
145 | !97 U+2014 emdash
146 | !98 U+02DC tilde
147 | !99 U+2122 trademark
148 | !9B U+203A guilsinglright
149 | !A0 U+00A0 space
150 | !A1 U+00A1 exclamdown
151 | !A2 U+00A2 cent
152 | !A3 U+00A3 sterling
153 | !A4 U+20AA afii57636
154 | !A5 U+00A5 yen
155 | !A6 U+00A6 brokenbar
156 | !A7 U+00A7 section
157 | !A8 U+00A8 dieresis
158 | !A9 U+00A9 copyright
159 | !AA U+00D7 multiply
160 | !AB U+00AB guillemotleft
161 | !AC U+00AC logicalnot
162 | !AD U+00AD sfthyphen
163 | !AE U+00AE registered
164 | !AF U+00AF macron
165 | !B0 U+00B0 degree
166 | !B1 U+00B1 plusminus
167 | !B2 U+00B2 twosuperior
168 | !B3 U+00B3 threesuperior
169 | !B4 U+00B4 acute
170 | !B5 U+00B5 mu
171 | !B6 U+00B6 paragraph
172 | !B7 U+00B7 middot
173 | !B8 U+00B8 cedilla
174 | !B9 U+00B9 onesuperior
175 | !BA U+00F7 divide
176 | !BB U+00BB guillemotright
177 | !BC U+00BC onequarter
178 | !BD U+00BD onehalf
179 | !BE U+00BE threequarters
180 | !BF U+00BF questiondown
181 | !C0 U+05B0 afii57799
182 | !C1 U+05B1 afii57801
183 | !C2 U+05B2 afii57800
184 | !C3 U+05B3 afii57802
185 | !C4 U+05B4 afii57793
186 | !C5 U+05B5 afii57794
187 | !C6 U+05B6 afii57795
188 | !C7 U+05B7 afii57798
189 | !C8 U+05B8 afii57797
190 | !C9 U+05B9 afii57806
191 | !CB U+05BB afii57796
192 | !CC U+05BC afii57807
193 | !CD U+05BD afii57839
194 | !CE U+05BE afii57645
195 | !CF U+05BF afii57841
196 | !D0 U+05C0 afii57842
197 | !D1 U+05C1 afii57804
198 | !D2 U+05C2 afii57803
199 | !D3 U+05C3 afii57658
200 | !D4 U+05F0 afii57716
201 | !D5 U+05F1 afii57717
202 | !D6 U+05F2 afii57718
203 | !D7 U+05F3 gereshhebrew
204 | !D8 U+05F4 gershayimhebrew
205 | !E0 U+05D0 afii57664
206 | !E1 U+05D1 afii57665
207 | !E2 U+05D2 afii57666
208 | !E3 U+05D3 afii57667
209 | !E4 U+05D4 afii57668
210 | !E5 U+05D5 afii57669
211 | !E6 U+05D6 afii57670
212 | !E7 U+05D7 afii57671
213 | !E8 U+05D8 afii57672
214 | !E9 U+05D9 afii57673
215 | !EA U+05DA afii57674
216 | !EB U+05DB afii57675
217 | !EC U+05DC afii57676
218 | !ED U+05DD afii57677
219 | !EE U+05DE afii57678
220 | !EF U+05DF afii57679
221 | !F0 U+05E0 afii57680
222 | !F1 U+05E1 afii57681
223 | !F2 U+05E2 afii57682
224 | !F3 U+05E3 afii57683
225 | !F4 U+05E4 afii57684
226 | !F5 U+05E5 afii57685
227 | !F6 U+05E6 afii57686
228 | !F7 U+05E7 afii57687
229 | !F8 U+05E8 afii57688
230 | !F9 U+05E9 afii57689
231 | !FA U+05EA afii57690
232 | !FD U+200E afii299
233 | !FE U+200F afii300
234 |
--------------------------------------------------------------------------------
/maps/cp1257.map:
--------------------------------------------------------------------------------
1 | !00 U+0000 .notdef
2 | !01 U+0001 .notdef
3 | !02 U+0002 .notdef
4 | !03 U+0003 .notdef
5 | !04 U+0004 .notdef
6 | !05 U+0005 .notdef
7 | !06 U+0006 .notdef
8 | !07 U+0007 .notdef
9 | !08 U+0008 .notdef
10 | !09 U+0009 .notdef
11 | !0A U+000A .notdef
12 | !0B U+000B .notdef
13 | !0C U+000C .notdef
14 | !0D U+000D .notdef
15 | !0E U+000E .notdef
16 | !0F U+000F .notdef
17 | !10 U+0010 .notdef
18 | !11 U+0011 .notdef
19 | !12 U+0012 .notdef
20 | !13 U+0013 .notdef
21 | !14 U+0014 .notdef
22 | !15 U+0015 .notdef
23 | !16 U+0016 .notdef
24 | !17 U+0017 .notdef
25 | !18 U+0018 .notdef
26 | !19 U+0019 .notdef
27 | !1A U+001A .notdef
28 | !1B U+001B .notdef
29 | !1C U+001C .notdef
30 | !1D U+001D .notdef
31 | !1E U+001E .notdef
32 | !1F U+001F .notdef
33 | !20 U+0020 space
34 | !21 U+0021 exclam
35 | !22 U+0022 quotedbl
36 | !23 U+0023 numbersign
37 | !24 U+0024 dollar
38 | !25 U+0025 percent
39 | !26 U+0026 ampersand
40 | !27 U+0027 quotesingle
41 | !28 U+0028 parenleft
42 | !29 U+0029 parenright
43 | !2A U+002A asterisk
44 | !2B U+002B plus
45 | !2C U+002C comma
46 | !2D U+002D hyphen
47 | !2E U+002E period
48 | !2F U+002F slash
49 | !30 U+0030 zero
50 | !31 U+0031 one
51 | !32 U+0032 two
52 | !33 U+0033 three
53 | !34 U+0034 four
54 | !35 U+0035 five
55 | !36 U+0036 six
56 | !37 U+0037 seven
57 | !38 U+0038 eight
58 | !39 U+0039 nine
59 | !3A U+003A colon
60 | !3B U+003B semicolon
61 | !3C U+003C less
62 | !3D U+003D equal
63 | !3E U+003E greater
64 | !3F U+003F question
65 | !40 U+0040 at
66 | !41 U+0041 A
67 | !42 U+0042 B
68 | !43 U+0043 C
69 | !44 U+0044 D
70 | !45 U+0045 E
71 | !46 U+0046 F
72 | !47 U+0047 G
73 | !48 U+0048 H
74 | !49 U+0049 I
75 | !4A U+004A J
76 | !4B U+004B K
77 | !4C U+004C L
78 | !4D U+004D M
79 | !4E U+004E N
80 | !4F U+004F O
81 | !50 U+0050 P
82 | !51 U+0051 Q
83 | !52 U+0052 R
84 | !53 U+0053 S
85 | !54 U+0054 T
86 | !55 U+0055 U
87 | !56 U+0056 V
88 | !57 U+0057 W
89 | !58 U+0058 X
90 | !59 U+0059 Y
91 | !5A U+005A Z
92 | !5B U+005B bracketleft
93 | !5C U+005C backslash
94 | !5D U+005D bracketright
95 | !5E U+005E asciicircum
96 | !5F U+005F underscore
97 | !60 U+0060 grave
98 | !61 U+0061 a
99 | !62 U+0062 b
100 | !63 U+0063 c
101 | !64 U+0064 d
102 | !65 U+0065 e
103 | !66 U+0066 f
104 | !67 U+0067 g
105 | !68 U+0068 h
106 | !69 U+0069 i
107 | !6A U+006A j
108 | !6B U+006B k
109 | !6C U+006C l
110 | !6D U+006D m
111 | !6E U+006E n
112 | !6F U+006F o
113 | !70 U+0070 p
114 | !71 U+0071 q
115 | !72 U+0072 r
116 | !73 U+0073 s
117 | !74 U+0074 t
118 | !75 U+0075 u
119 | !76 U+0076 v
120 | !77 U+0077 w
121 | !78 U+0078 x
122 | !79 U+0079 y
123 | !7A U+007A z
124 | !7B U+007B braceleft
125 | !7C U+007C bar
126 | !7D U+007D braceright
127 | !7E U+007E asciitilde
128 | !7F U+007F .notdef
129 | !80 U+20AC Euro
130 | !82 U+201A quotesinglbase
131 | !84 U+201E quotedblbase
132 | !85 U+2026 ellipsis
133 | !86 U+2020 dagger
134 | !87 U+2021 daggerdbl
135 | !89 U+2030 perthousand
136 | !8B U+2039 guilsinglleft
137 | !8D U+00A8 dieresis
138 | !8E U+02C7 caron
139 | !8F U+00B8 cedilla
140 | !91 U+2018 quoteleft
141 | !92 U+2019 quoteright
142 | !93 U+201C quotedblleft
143 | !94 U+201D quotedblright
144 | !95 U+2022 bullet
145 | !96 U+2013 endash
146 | !97 U+2014 emdash
147 | !99 U+2122 trademark
148 | !9B U+203A guilsinglright
149 | !9D U+00AF macron
150 | !9E U+02DB ogonek
151 | !A0 U+00A0 space
152 | !A2 U+00A2 cent
153 | !A3 U+00A3 sterling
154 | !A4 U+00A4 currency
155 | !A6 U+00A6 brokenbar
156 | !A7 U+00A7 section
157 | !A8 U+00D8 Oslash
158 | !A9 U+00A9 copyright
159 | !AA U+0156 Rcommaaccent
160 | !AB U+00AB guillemotleft
161 | !AC U+00AC logicalnot
162 | !AD U+00AD hyphen
163 | !AE U+00AE registered
164 | !AF U+00C6 AE
165 | !B0 U+00B0 degree
166 | !B1 U+00B1 plusminus
167 | !B2 U+00B2 twosuperior
168 | !B3 U+00B3 threesuperior
169 | !B4 U+00B4 acute
170 | !B5 U+00B5 mu
171 | !B6 U+00B6 paragraph
172 | !B7 U+00B7 periodcentered
173 | !B8 U+00F8 oslash
174 | !B9 U+00B9 onesuperior
175 | !BA U+0157 rcommaaccent
176 | !BB U+00BB guillemotright
177 | !BC U+00BC onequarter
178 | !BD U+00BD onehalf
179 | !BE U+00BE threequarters
180 | !BF U+00E6 ae
181 | !C0 U+0104 Aogonek
182 | !C1 U+012E Iogonek
183 | !C2 U+0100 Amacron
184 | !C3 U+0106 Cacute
185 | !C4 U+00C4 Adieresis
186 | !C5 U+00C5 Aring
187 | !C6 U+0118 Eogonek
188 | !C7 U+0112 Emacron
189 | !C8 U+010C Ccaron
190 | !C9 U+00C9 Eacute
191 | !CA U+0179 Zacute
192 | !CB U+0116 Edotaccent
193 | !CC U+0122 Gcommaaccent
194 | !CD U+0136 Kcommaaccent
195 | !CE U+012A Imacron
196 | !CF U+013B Lcommaaccent
197 | !D0 U+0160 Scaron
198 | !D1 U+0143 Nacute
199 | !D2 U+0145 Ncommaaccent
200 | !D3 U+00D3 Oacute
201 | !D4 U+014C Omacron
202 | !D5 U+00D5 Otilde
203 | !D6 U+00D6 Odieresis
204 | !D7 U+00D7 multiply
205 | !D8 U+0172 Uogonek
206 | !D9 U+0141 Lslash
207 | !DA U+015A Sacute
208 | !DB U+016A Umacron
209 | !DC U+00DC Udieresis
210 | !DD U+017B Zdotaccent
211 | !DE U+017D Zcaron
212 | !DF U+00DF germandbls
213 | !E0 U+0105 aogonek
214 | !E1 U+012F iogonek
215 | !E2 U+0101 amacron
216 | !E3 U+0107 cacute
217 | !E4 U+00E4 adieresis
218 | !E5 U+00E5 aring
219 | !E6 U+0119 eogonek
220 | !E7 U+0113 emacron
221 | !E8 U+010D ccaron
222 | !E9 U+00E9 eacute
223 | !EA U+017A zacute
224 | !EB U+0117 edotaccent
225 | !EC U+0123 gcommaaccent
226 | !ED U+0137 kcommaaccent
227 | !EE U+012B imacron
228 | !EF U+013C lcommaaccent
229 | !F0 U+0161 scaron
230 | !F1 U+0144 nacute
231 | !F2 U+0146 ncommaaccent
232 | !F3 U+00F3 oacute
233 | !F4 U+014D omacron
234 | !F5 U+00F5 otilde
235 | !F6 U+00F6 odieresis
236 | !F7 U+00F7 divide
237 | !F8 U+0173 uogonek
238 | !F9 U+0142 lslash
239 | !FA U+015B sacute
240 | !FB U+016B umacron
241 | !FC U+00FC udieresis
242 | !FD U+017C zdotaccent
243 | !FE U+017E zcaron
244 | !FF U+02D9 dotaccent
245 |
--------------------------------------------------------------------------------
/maps/iso-8859-7.map:
--------------------------------------------------------------------------------
1 | !00 U+0000 .notdef
2 | !01 U+0001 .notdef
3 | !02 U+0002 .notdef
4 | !03 U+0003 .notdef
5 | !04 U+0004 .notdef
6 | !05 U+0005 .notdef
7 | !06 U+0006 .notdef
8 | !07 U+0007 .notdef
9 | !08 U+0008 .notdef
10 | !09 U+0009 .notdef
11 | !0A U+000A .notdef
12 | !0B U+000B .notdef
13 | !0C U+000C .notdef
14 | !0D U+000D .notdef
15 | !0E U+000E .notdef
16 | !0F U+000F .notdef
17 | !10 U+0010 .notdef
18 | !11 U+0011 .notdef
19 | !12 U+0012 .notdef
20 | !13 U+0013 .notdef
21 | !14 U+0014 .notdef
22 | !15 U+0015 .notdef
23 | !16 U+0016 .notdef
24 | !17 U+0017 .notdef
25 | !18 U+0018 .notdef
26 | !19 U+0019 .notdef
27 | !1A U+001A .notdef
28 | !1B U+001B .notdef
29 | !1C U+001C .notdef
30 | !1D U+001D .notdef
31 | !1E U+001E .notdef
32 | !1F U+001F .notdef
33 | !20 U+0020 space
34 | !21 U+0021 exclam
35 | !22 U+0022 quotedbl
36 | !23 U+0023 numbersign
37 | !24 U+0024 dollar
38 | !25 U+0025 percent
39 | !26 U+0026 ampersand
40 | !27 U+0027 quotesingle
41 | !28 U+0028 parenleft
42 | !29 U+0029 parenright
43 | !2A U+002A asterisk
44 | !2B U+002B plus
45 | !2C U+002C comma
46 | !2D U+002D hyphen
47 | !2E U+002E period
48 | !2F U+002F slash
49 | !30 U+0030 zero
50 | !31 U+0031 one
51 | !32 U+0032 two
52 | !33 U+0033 three
53 | !34 U+0034 four
54 | !35 U+0035 five
55 | !36 U+0036 six
56 | !37 U+0037 seven
57 | !38 U+0038 eight
58 | !39 U+0039 nine
59 | !3A U+003A colon
60 | !3B U+003B semicolon
61 | !3C U+003C less
62 | !3D U+003D equal
63 | !3E U+003E greater
64 | !3F U+003F question
65 | !40 U+0040 at
66 | !41 U+0041 A
67 | !42 U+0042 B
68 | !43 U+0043 C
69 | !44 U+0044 D
70 | !45 U+0045 E
71 | !46 U+0046 F
72 | !47 U+0047 G
73 | !48 U+0048 H
74 | !49 U+0049 I
75 | !4A U+004A J
76 | !4B U+004B K
77 | !4C U+004C L
78 | !4D U+004D M
79 | !4E U+004E N
80 | !4F U+004F O
81 | !50 U+0050 P
82 | !51 U+0051 Q
83 | !52 U+0052 R
84 | !53 U+0053 S
85 | !54 U+0054 T
86 | !55 U+0055 U
87 | !56 U+0056 V
88 | !57 U+0057 W
89 | !58 U+0058 X
90 | !59 U+0059 Y
91 | !5A U+005A Z
92 | !5B U+005B bracketleft
93 | !5C U+005C backslash
94 | !5D U+005D bracketright
95 | !5E U+005E asciicircum
96 | !5F U+005F underscore
97 | !60 U+0060 grave
98 | !61 U+0061 a
99 | !62 U+0062 b
100 | !63 U+0063 c
101 | !64 U+0064 d
102 | !65 U+0065 e
103 | !66 U+0066 f
104 | !67 U+0067 g
105 | !68 U+0068 h
106 | !69 U+0069 i
107 | !6A U+006A j
108 | !6B U+006B k
109 | !6C U+006C l
110 | !6D U+006D m
111 | !6E U+006E n
112 | !6F U+006F o
113 | !70 U+0070 p
114 | !71 U+0071 q
115 | !72 U+0072 r
116 | !73 U+0073 s
117 | !74 U+0074 t
118 | !75 U+0075 u
119 | !76 U+0076 v
120 | !77 U+0077 w
121 | !78 U+0078 x
122 | !79 U+0079 y
123 | !7A U+007A z
124 | !7B U+007B braceleft
125 | !7C U+007C bar
126 | !7D U+007D braceright
127 | !7E U+007E asciitilde
128 | !7F U+007F .notdef
129 | !80 U+0080 .notdef
130 | !81 U+0081 .notdef
131 | !82 U+0082 .notdef
132 | !83 U+0083 .notdef
133 | !84 U+0084 .notdef
134 | !85 U+0085 .notdef
135 | !86 U+0086 .notdef
136 | !87 U+0087 .notdef
137 | !88 U+0088 .notdef
138 | !89 U+0089 .notdef
139 | !8A U+008A .notdef
140 | !8B U+008B .notdef
141 | !8C U+008C .notdef
142 | !8D U+008D .notdef
143 | !8E U+008E .notdef
144 | !8F U+008F .notdef
145 | !90 U+0090 .notdef
146 | !91 U+0091 .notdef
147 | !92 U+0092 .notdef
148 | !93 U+0093 .notdef
149 | !94 U+0094 .notdef
150 | !95 U+0095 .notdef
151 | !96 U+0096 .notdef
152 | !97 U+0097 .notdef
153 | !98 U+0098 .notdef
154 | !99 U+0099 .notdef
155 | !9A U+009A .notdef
156 | !9B U+009B .notdef
157 | !9C U+009C .notdef
158 | !9D U+009D .notdef
159 | !9E U+009E .notdef
160 | !9F U+009F .notdef
161 | !A0 U+00A0 space
162 | !A1 U+2018 quoteleft
163 | !A2 U+2019 quoteright
164 | !A3 U+00A3 sterling
165 | !A6 U+00A6 brokenbar
166 | !A7 U+00A7 section
167 | !A8 U+00A8 dieresis
168 | !A9 U+00A9 copyright
169 | !AB U+00AB guillemotleft
170 | !AC U+00AC logicalnot
171 | !AD U+00AD hyphen
172 | !AF U+2015 afii00208
173 | !B0 U+00B0 degree
174 | !B1 U+00B1 plusminus
175 | !B2 U+00B2 twosuperior
176 | !B3 U+00B3 threesuperior
177 | !B4 U+0384 tonos
178 | !B5 U+0385 dieresistonos
179 | !B6 U+0386 Alphatonos
180 | !B7 U+00B7 periodcentered
181 | !B8 U+0388 Epsilontonos
182 | !B9 U+0389 Etatonos
183 | !BA U+038A Iotatonos
184 | !BB U+00BB guillemotright
185 | !BC U+038C Omicrontonos
186 | !BD U+00BD onehalf
187 | !BE U+038E Upsilontonos
188 | !BF U+038F Omegatonos
189 | !C0 U+0390 iotadieresistonos
190 | !C1 U+0391 Alpha
191 | !C2 U+0392 Beta
192 | !C3 U+0393 Gamma
193 | !C4 U+0394 Delta
194 | !C5 U+0395 Epsilon
195 | !C6 U+0396 Zeta
196 | !C7 U+0397 Eta
197 | !C8 U+0398 Theta
198 | !C9 U+0399 Iota
199 | !CA U+039A Kappa
200 | !CB U+039B Lambda
201 | !CC U+039C Mu
202 | !CD U+039D Nu
203 | !CE U+039E Xi
204 | !CF U+039F Omicron
205 | !D0 U+03A0 Pi
206 | !D1 U+03A1 Rho
207 | !D3 U+03A3 Sigma
208 | !D4 U+03A4 Tau
209 | !D5 U+03A5 Upsilon
210 | !D6 U+03A6 Phi
211 | !D7 U+03A7 Chi
212 | !D8 U+03A8 Psi
213 | !D9 U+03A9 Omega
214 | !DA U+03AA Iotadieresis
215 | !DB U+03AB Upsilondieresis
216 | !DC U+03AC alphatonos
217 | !DD U+03AD epsilontonos
218 | !DE U+03AE etatonos
219 | !DF U+03AF iotatonos
220 | !E0 U+03B0 upsilondieresistonos
221 | !E1 U+03B1 alpha
222 | !E2 U+03B2 beta
223 | !E3 U+03B3 gamma
224 | !E4 U+03B4 delta
225 | !E5 U+03B5 epsilon
226 | !E6 U+03B6 zeta
227 | !E7 U+03B7 eta
228 | !E8 U+03B8 theta
229 | !E9 U+03B9 iota
230 | !EA U+03BA kappa
231 | !EB U+03BB lambda
232 | !EC U+03BC mu
233 | !ED U+03BD nu
234 | !EE U+03BE xi
235 | !EF U+03BF omicron
236 | !F0 U+03C0 pi
237 | !F1 U+03C1 rho
238 | !F2 U+03C2 sigma1
239 | !F3 U+03C3 sigma
240 | !F4 U+03C4 tau
241 | !F5 U+03C5 upsilon
242 | !F6 U+03C6 phi
243 | !F7 U+03C7 chi
244 | !F8 U+03C8 psi
245 | !F9 U+03C9 omega
246 | !FA U+03CA iotadieresis
247 | !FB U+03CB upsilondieresis
248 | !FC U+03CC omicrontonos
249 | !FD U+03CD upsilontonos
250 | !FE U+03CE omegatonos
251 |
--------------------------------------------------------------------------------
/maps/cp1258.map:
--------------------------------------------------------------------------------
1 | !00 U+0000 .notdef
2 | !01 U+0001 .notdef
3 | !02 U+0002 .notdef
4 | !03 U+0003 .notdef
5 | !04 U+0004 .notdef
6 | !05 U+0005 .notdef
7 | !06 U+0006 .notdef
8 | !07 U+0007 .notdef
9 | !08 U+0008 .notdef
10 | !09 U+0009 .notdef
11 | !0A U+000A .notdef
12 | !0B U+000B .notdef
13 | !0C U+000C .notdef
14 | !0D U+000D .notdef
15 | !0E U+000E .notdef
16 | !0F U+000F .notdef
17 | !10 U+0010 .notdef
18 | !11 U+0011 .notdef
19 | !12 U+0012 .notdef
20 | !13 U+0013 .notdef
21 | !14 U+0014 .notdef
22 | !15 U+0015 .notdef
23 | !16 U+0016 .notdef
24 | !17 U+0017 .notdef
25 | !18 U+0018 .notdef
26 | !19 U+0019 .notdef
27 | !1A U+001A .notdef
28 | !1B U+001B .notdef
29 | !1C U+001C .notdef
30 | !1D U+001D .notdef
31 | !1E U+001E .notdef
32 | !1F U+001F .notdef
33 | !20 U+0020 space
34 | !21 U+0021 exclam
35 | !22 U+0022 quotedbl
36 | !23 U+0023 numbersign
37 | !24 U+0024 dollar
38 | !25 U+0025 percent
39 | !26 U+0026 ampersand
40 | !27 U+0027 quotesingle
41 | !28 U+0028 parenleft
42 | !29 U+0029 parenright
43 | !2A U+002A asterisk
44 | !2B U+002B plus
45 | !2C U+002C comma
46 | !2D U+002D hyphen
47 | !2E U+002E period
48 | !2F U+002F slash
49 | !30 U+0030 zero
50 | !31 U+0031 one
51 | !32 U+0032 two
52 | !33 U+0033 three
53 | !34 U+0034 four
54 | !35 U+0035 five
55 | !36 U+0036 six
56 | !37 U+0037 seven
57 | !38 U+0038 eight
58 | !39 U+0039 nine
59 | !3A U+003A colon
60 | !3B U+003B semicolon
61 | !3C U+003C less
62 | !3D U+003D equal
63 | !3E U+003E greater
64 | !3F U+003F question
65 | !40 U+0040 at
66 | !41 U+0041 A
67 | !42 U+0042 B
68 | !43 U+0043 C
69 | !44 U+0044 D
70 | !45 U+0045 E
71 | !46 U+0046 F
72 | !47 U+0047 G
73 | !48 U+0048 H
74 | !49 U+0049 I
75 | !4A U+004A J
76 | !4B U+004B K
77 | !4C U+004C L
78 | !4D U+004D M
79 | !4E U+004E N
80 | !4F U+004F O
81 | !50 U+0050 P
82 | !51 U+0051 Q
83 | !52 U+0052 R
84 | !53 U+0053 S
85 | !54 U+0054 T
86 | !55 U+0055 U
87 | !56 U+0056 V
88 | !57 U+0057 W
89 | !58 U+0058 X
90 | !59 U+0059 Y
91 | !5A U+005A Z
92 | !5B U+005B bracketleft
93 | !5C U+005C backslash
94 | !5D U+005D bracketright
95 | !5E U+005E asciicircum
96 | !5F U+005F underscore
97 | !60 U+0060 grave
98 | !61 U+0061 a
99 | !62 U+0062 b
100 | !63 U+0063 c
101 | !64 U+0064 d
102 | !65 U+0065 e
103 | !66 U+0066 f
104 | !67 U+0067 g
105 | !68 U+0068 h
106 | !69 U+0069 i
107 | !6A U+006A j
108 | !6B U+006B k
109 | !6C U+006C l
110 | !6D U+006D m
111 | !6E U+006E n
112 | !6F U+006F o
113 | !70 U+0070 p
114 | !71 U+0071 q
115 | !72 U+0072 r
116 | !73 U+0073 s
117 | !74 U+0074 t
118 | !75 U+0075 u
119 | !76 U+0076 v
120 | !77 U+0077 w
121 | !78 U+0078 x
122 | !79 U+0079 y
123 | !7A U+007A z
124 | !7B U+007B braceleft
125 | !7C U+007C bar
126 | !7D U+007D braceright
127 | !7E U+007E asciitilde
128 | !7F U+007F .notdef
129 | !80 U+20AC Euro
130 | !82 U+201A quotesinglbase
131 | !83 U+0192 florin
132 | !84 U+201E quotedblbase
133 | !85 U+2026 ellipsis
134 | !86 U+2020 dagger
135 | !87 U+2021 daggerdbl
136 | !88 U+02C6 circumflex
137 | !89 U+2030 perthousand
138 | !8B U+2039 guilsinglleft
139 | !8C U+0152 OE
140 | !91 U+2018 quoteleft
141 | !92 U+2019 quoteright
142 | !93 U+201C quotedblleft
143 | !94 U+201D quotedblright
144 | !95 U+2022 bullet
145 | !96 U+2013 endash
146 | !97 U+2014 emdash
147 | !98 U+02DC tilde
148 | !99 U+2122 trademark
149 | !9B U+203A guilsinglright
150 | !9C U+0153 oe
151 | !9F U+0178 Ydieresis
152 | !A0 U+00A0 space
153 | !A1 U+00A1 exclamdown
154 | !A2 U+00A2 cent
155 | !A3 U+00A3 sterling
156 | !A4 U+00A4 currency
157 | !A5 U+00A5 yen
158 | !A6 U+00A6 brokenbar
159 | !A7 U+00A7 section
160 | !A8 U+00A8 dieresis
161 | !A9 U+00A9 copyright
162 | !AA U+00AA ordfeminine
163 | !AB U+00AB guillemotleft
164 | !AC U+00AC logicalnot
165 | !AD U+00AD hyphen
166 | !AE U+00AE registered
167 | !AF U+00AF macron
168 | !B0 U+00B0 degree
169 | !B1 U+00B1 plusminus
170 | !B2 U+00B2 twosuperior
171 | !B3 U+00B3 threesuperior
172 | !B4 U+00B4 acute
173 | !B5 U+00B5 mu
174 | !B6 U+00B6 paragraph
175 | !B7 U+00B7 periodcentered
176 | !B8 U+00B8 cedilla
177 | !B9 U+00B9 onesuperior
178 | !BA U+00BA ordmasculine
179 | !BB U+00BB guillemotright
180 | !BC U+00BC onequarter
181 | !BD U+00BD onehalf
182 | !BE U+00BE threequarters
183 | !BF U+00BF questiondown
184 | !C0 U+00C0 Agrave
185 | !C1 U+00C1 Aacute
186 | !C2 U+00C2 Acircumflex
187 | !C3 U+0102 Abreve
188 | !C4 U+00C4 Adieresis
189 | !C5 U+00C5 Aring
190 | !C6 U+00C6 AE
191 | !C7 U+00C7 Ccedilla
192 | !C8 U+00C8 Egrave
193 | !C9 U+00C9 Eacute
194 | !CA U+00CA Ecircumflex
195 | !CB U+00CB Edieresis
196 | !CC U+0300 gravecomb
197 | !CD U+00CD Iacute
198 | !CE U+00CE Icircumflex
199 | !CF U+00CF Idieresis
200 | !D0 U+0110 Dcroat
201 | !D1 U+00D1 Ntilde
202 | !D2 U+0309 hookabovecomb
203 | !D3 U+00D3 Oacute
204 | !D4 U+00D4 Ocircumflex
205 | !D5 U+01A0 Ohorn
206 | !D6 U+00D6 Odieresis
207 | !D7 U+00D7 multiply
208 | !D8 U+00D8 Oslash
209 | !D9 U+00D9 Ugrave
210 | !DA U+00DA Uacute
211 | !DB U+00DB Ucircumflex
212 | !DC U+00DC Udieresis
213 | !DD U+01AF Uhorn
214 | !DE U+0303 tildecomb
215 | !DF U+00DF germandbls
216 | !E0 U+00E0 agrave
217 | !E1 U+00E1 aacute
218 | !E2 U+00E2 acircumflex
219 | !E3 U+0103 abreve
220 | !E4 U+00E4 adieresis
221 | !E5 U+00E5 aring
222 | !E6 U+00E6 ae
223 | !E7 U+00E7 ccedilla
224 | !E8 U+00E8 egrave
225 | !E9 U+00E9 eacute
226 | !EA U+00EA ecircumflex
227 | !EB U+00EB edieresis
228 | !EC U+0301 acutecomb
229 | !ED U+00ED iacute
230 | !EE U+00EE icircumflex
231 | !EF U+00EF idieresis
232 | !F0 U+0111 dcroat
233 | !F1 U+00F1 ntilde
234 | !F2 U+0323 dotbelowcomb
235 | !F3 U+00F3 oacute
236 | !F4 U+00F4 ocircumflex
237 | !F5 U+01A1 ohorn
238 | !F6 U+00F6 odieresis
239 | !F7 U+00F7 divide
240 | !F8 U+00F8 oslash
241 | !F9 U+00F9 ugrave
242 | !FA U+00FA uacute
243 | !FB U+00FB ucircumflex
244 | !FC U+00FC udieresis
245 | !FD U+01B0 uhorn
246 | !FE U+20AB dong
247 | !FF U+00FF ydieresis
248 |
--------------------------------------------------------------------------------
/maps/cp1254.map:
--------------------------------------------------------------------------------
1 | !00 U+0000 .notdef
2 | !01 U+0001 .notdef
3 | !02 U+0002 .notdef
4 | !03 U+0003 .notdef
5 | !04 U+0004 .notdef
6 | !05 U+0005 .notdef
7 | !06 U+0006 .notdef
8 | !07 U+0007 .notdef
9 | !08 U+0008 .notdef
10 | !09 U+0009 .notdef
11 | !0A U+000A .notdef
12 | !0B U+000B .notdef
13 | !0C U+000C .notdef
14 | !0D U+000D .notdef
15 | !0E U+000E .notdef
16 | !0F U+000F .notdef
17 | !10 U+0010 .notdef
18 | !11 U+0011 .notdef
19 | !12 U+0012 .notdef
20 | !13 U+0013 .notdef
21 | !14 U+0014 .notdef
22 | !15 U+0015 .notdef
23 | !16 U+0016 .notdef
24 | !17 U+0017 .notdef
25 | !18 U+0018 .notdef
26 | !19 U+0019 .notdef
27 | !1A U+001A .notdef
28 | !1B U+001B .notdef
29 | !1C U+001C .notdef
30 | !1D U+001D .notdef
31 | !1E U+001E .notdef
32 | !1F U+001F .notdef
33 | !20 U+0020 space
34 | !21 U+0021 exclam
35 | !22 U+0022 quotedbl
36 | !23 U+0023 numbersign
37 | !24 U+0024 dollar
38 | !25 U+0025 percent
39 | !26 U+0026 ampersand
40 | !27 U+0027 quotesingle
41 | !28 U+0028 parenleft
42 | !29 U+0029 parenright
43 | !2A U+002A asterisk
44 | !2B U+002B plus
45 | !2C U+002C comma
46 | !2D U+002D hyphen
47 | !2E U+002E period
48 | !2F U+002F slash
49 | !30 U+0030 zero
50 | !31 U+0031 one
51 | !32 U+0032 two
52 | !33 U+0033 three
53 | !34 U+0034 four
54 | !35 U+0035 five
55 | !36 U+0036 six
56 | !37 U+0037 seven
57 | !38 U+0038 eight
58 | !39 U+0039 nine
59 | !3A U+003A colon
60 | !3B U+003B semicolon
61 | !3C U+003C less
62 | !3D U+003D equal
63 | !3E U+003E greater
64 | !3F U+003F question
65 | !40 U+0040 at
66 | !41 U+0041 A
67 | !42 U+0042 B
68 | !43 U+0043 C
69 | !44 U+0044 D
70 | !45 U+0045 E
71 | !46 U+0046 F
72 | !47 U+0047 G
73 | !48 U+0048 H
74 | !49 U+0049 I
75 | !4A U+004A J
76 | !4B U+004B K
77 | !4C U+004C L
78 | !4D U+004D M
79 | !4E U+004E N
80 | !4F U+004F O
81 | !50 U+0050 P
82 | !51 U+0051 Q
83 | !52 U+0052 R
84 | !53 U+0053 S
85 | !54 U+0054 T
86 | !55 U+0055 U
87 | !56 U+0056 V
88 | !57 U+0057 W
89 | !58 U+0058 X
90 | !59 U+0059 Y
91 | !5A U+005A Z
92 | !5B U+005B bracketleft
93 | !5C U+005C backslash
94 | !5D U+005D bracketright
95 | !5E U+005E asciicircum
96 | !5F U+005F underscore
97 | !60 U+0060 grave
98 | !61 U+0061 a
99 | !62 U+0062 b
100 | !63 U+0063 c
101 | !64 U+0064 d
102 | !65 U+0065 e
103 | !66 U+0066 f
104 | !67 U+0067 g
105 | !68 U+0068 h
106 | !69 U+0069 i
107 | !6A U+006A j
108 | !6B U+006B k
109 | !6C U+006C l
110 | !6D U+006D m
111 | !6E U+006E n
112 | !6F U+006F o
113 | !70 U+0070 p
114 | !71 U+0071 q
115 | !72 U+0072 r
116 | !73 U+0073 s
117 | !74 U+0074 t
118 | !75 U+0075 u
119 | !76 U+0076 v
120 | !77 U+0077 w
121 | !78 U+0078 x
122 | !79 U+0079 y
123 | !7A U+007A z
124 | !7B U+007B braceleft
125 | !7C U+007C bar
126 | !7D U+007D braceright
127 | !7E U+007E asciitilde
128 | !7F U+007F .notdef
129 | !80 U+20AC Euro
130 | !82 U+201A quotesinglbase
131 | !83 U+0192 florin
132 | !84 U+201E quotedblbase
133 | !85 U+2026 ellipsis
134 | !86 U+2020 dagger
135 | !87 U+2021 daggerdbl
136 | !88 U+02C6 circumflex
137 | !89 U+2030 perthousand
138 | !8A U+0160 Scaron
139 | !8B U+2039 guilsinglleft
140 | !8C U+0152 OE
141 | !91 U+2018 quoteleft
142 | !92 U+2019 quoteright
143 | !93 U+201C quotedblleft
144 | !94 U+201D quotedblright
145 | !95 U+2022 bullet
146 | !96 U+2013 endash
147 | !97 U+2014 emdash
148 | !98 U+02DC tilde
149 | !99 U+2122 trademark
150 | !9A U+0161 scaron
151 | !9B U+203A guilsinglright
152 | !9C U+0153 oe
153 | !9F U+0178 Ydieresis
154 | !A0 U+00A0 space
155 | !A1 U+00A1 exclamdown
156 | !A2 U+00A2 cent
157 | !A3 U+00A3 sterling
158 | !A4 U+00A4 currency
159 | !A5 U+00A5 yen
160 | !A6 U+00A6 brokenbar
161 | !A7 U+00A7 section
162 | !A8 U+00A8 dieresis
163 | !A9 U+00A9 copyright
164 | !AA U+00AA ordfeminine
165 | !AB U+00AB guillemotleft
166 | !AC U+00AC logicalnot
167 | !AD U+00AD hyphen
168 | !AE U+00AE registered
169 | !AF U+00AF macron
170 | !B0 U+00B0 degree
171 | !B1 U+00B1 plusminus
172 | !B2 U+00B2 twosuperior
173 | !B3 U+00B3 threesuperior
174 | !B4 U+00B4 acute
175 | !B5 U+00B5 mu
176 | !B6 U+00B6 paragraph
177 | !B7 U+00B7 periodcentered
178 | !B8 U+00B8 cedilla
179 | !B9 U+00B9 onesuperior
180 | !BA U+00BA ordmasculine
181 | !BB U+00BB guillemotright
182 | !BC U+00BC onequarter
183 | !BD U+00BD onehalf
184 | !BE U+00BE threequarters
185 | !BF U+00BF questiondown
186 | !C0 U+00C0 Agrave
187 | !C1 U+00C1 Aacute
188 | !C2 U+00C2 Acircumflex
189 | !C3 U+00C3 Atilde
190 | !C4 U+00C4 Adieresis
191 | !C5 U+00C5 Aring
192 | !C6 U+00C6 AE
193 | !C7 U+00C7 Ccedilla
194 | !C8 U+00C8 Egrave
195 | !C9 U+00C9 Eacute
196 | !CA U+00CA Ecircumflex
197 | !CB U+00CB Edieresis
198 | !CC U+00CC Igrave
199 | !CD U+00CD Iacute
200 | !CE U+00CE Icircumflex
201 | !CF U+00CF Idieresis
202 | !D0 U+011E Gbreve
203 | !D1 U+00D1 Ntilde
204 | !D2 U+00D2 Ograve
205 | !D3 U+00D3 Oacute
206 | !D4 U+00D4 Ocircumflex
207 | !D5 U+00D5 Otilde
208 | !D6 U+00D6 Odieresis
209 | !D7 U+00D7 multiply
210 | !D8 U+00D8 Oslash
211 | !D9 U+00D9 Ugrave
212 | !DA U+00DA Uacute
213 | !DB U+00DB Ucircumflex
214 | !DC U+00DC Udieresis
215 | !DD U+0130 Idotaccent
216 | !DE U+015E Scedilla
217 | !DF U+00DF germandbls
218 | !E0 U+00E0 agrave
219 | !E1 U+00E1 aacute
220 | !E2 U+00E2 acircumflex
221 | !E3 U+00E3 atilde
222 | !E4 U+00E4 adieresis
223 | !E5 U+00E5 aring
224 | !E6 U+00E6 ae
225 | !E7 U+00E7 ccedilla
226 | !E8 U+00E8 egrave
227 | !E9 U+00E9 eacute
228 | !EA U+00EA ecircumflex
229 | !EB U+00EB edieresis
230 | !EC U+00EC igrave
231 | !ED U+00ED iacute
232 | !EE U+00EE icircumflex
233 | !EF U+00EF idieresis
234 | !F0 U+011F gbreve
235 | !F1 U+00F1 ntilde
236 | !F2 U+00F2 ograve
237 | !F3 U+00F3 oacute
238 | !F4 U+00F4 ocircumflex
239 | !F5 U+00F5 otilde
240 | !F6 U+00F6 odieresis
241 | !F7 U+00F7 divide
242 | !F8 U+00F8 oslash
243 | !F9 U+00F9 ugrave
244 | !FA U+00FA uacute
245 | !FB U+00FB ucircumflex
246 | !FC U+00FC udieresis
247 | !FD U+0131 dotlessi
248 | !FE U+015F scedilla
249 | !FF U+00FF ydieresis
250 |
--------------------------------------------------------------------------------
/maps/cp1252.map:
--------------------------------------------------------------------------------
1 | !00 U+0000 .notdef
2 | !01 U+0001 .notdef
3 | !02 U+0002 .notdef
4 | !03 U+0003 .notdef
5 | !04 U+0004 .notdef
6 | !05 U+0005 .notdef
7 | !06 U+0006 .notdef
8 | !07 U+0007 .notdef
9 | !08 U+0008 .notdef
10 | !09 U+0009 .notdef
11 | !0A U+000A .notdef
12 | !0B U+000B .notdef
13 | !0C U+000C .notdef
14 | !0D U+000D .notdef
15 | !0E U+000E .notdef
16 | !0F U+000F .notdef
17 | !10 U+0010 .notdef
18 | !11 U+0011 .notdef
19 | !12 U+0012 .notdef
20 | !13 U+0013 .notdef
21 | !14 U+0014 .notdef
22 | !15 U+0015 .notdef
23 | !16 U+0016 .notdef
24 | !17 U+0017 .notdef
25 | !18 U+0018 .notdef
26 | !19 U+0019 .notdef
27 | !1A U+001A .notdef
28 | !1B U+001B .notdef
29 | !1C U+001C .notdef
30 | !1D U+001D .notdef
31 | !1E U+001E .notdef
32 | !1F U+001F .notdef
33 | !20 U+0020 space
34 | !21 U+0021 exclam
35 | !22 U+0022 quotedbl
36 | !23 U+0023 numbersign
37 | !24 U+0024 dollar
38 | !25 U+0025 percent
39 | !26 U+0026 ampersand
40 | !27 U+0027 quotesingle
41 | !28 U+0028 parenleft
42 | !29 U+0029 parenright
43 | !2A U+002A asterisk
44 | !2B U+002B plus
45 | !2C U+002C comma
46 | !2D U+002D hyphen
47 | !2E U+002E period
48 | !2F U+002F slash
49 | !30 U+0030 zero
50 | !31 U+0031 one
51 | !32 U+0032 two
52 | !33 U+0033 three
53 | !34 U+0034 four
54 | !35 U+0035 five
55 | !36 U+0036 six
56 | !37 U+0037 seven
57 | !38 U+0038 eight
58 | !39 U+0039 nine
59 | !3A U+003A colon
60 | !3B U+003B semicolon
61 | !3C U+003C less
62 | !3D U+003D equal
63 | !3E U+003E greater
64 | !3F U+003F question
65 | !40 U+0040 at
66 | !41 U+0041 A
67 | !42 U+0042 B
68 | !43 U+0043 C
69 | !44 U+0044 D
70 | !45 U+0045 E
71 | !46 U+0046 F
72 | !47 U+0047 G
73 | !48 U+0048 H
74 | !49 U+0049 I
75 | !4A U+004A J
76 | !4B U+004B K
77 | !4C U+004C L
78 | !4D U+004D M
79 | !4E U+004E N
80 | !4F U+004F O
81 | !50 U+0050 P
82 | !51 U+0051 Q
83 | !52 U+0052 R
84 | !53 U+0053 S
85 | !54 U+0054 T
86 | !55 U+0055 U
87 | !56 U+0056 V
88 | !57 U+0057 W
89 | !58 U+0058 X
90 | !59 U+0059 Y
91 | !5A U+005A Z
92 | !5B U+005B bracketleft
93 | !5C U+005C backslash
94 | !5D U+005D bracketright
95 | !5E U+005E asciicircum
96 | !5F U+005F underscore
97 | !60 U+0060 grave
98 | !61 U+0061 a
99 | !62 U+0062 b
100 | !63 U+0063 c
101 | !64 U+0064 d
102 | !65 U+0065 e
103 | !66 U+0066 f
104 | !67 U+0067 g
105 | !68 U+0068 h
106 | !69 U+0069 i
107 | !6A U+006A j
108 | !6B U+006B k
109 | !6C U+006C l
110 | !6D U+006D m
111 | !6E U+006E n
112 | !6F U+006F o
113 | !70 U+0070 p
114 | !71 U+0071 q
115 | !72 U+0072 r
116 | !73 U+0073 s
117 | !74 U+0074 t
118 | !75 U+0075 u
119 | !76 U+0076 v
120 | !77 U+0077 w
121 | !78 U+0078 x
122 | !79 U+0079 y
123 | !7A U+007A z
124 | !7B U+007B braceleft
125 | !7C U+007C bar
126 | !7D U+007D braceright
127 | !7E U+007E asciitilde
128 | !7F U+007F .notdef
129 | !80 U+20AC Euro
130 | !82 U+201A quotesinglbase
131 | !83 U+0192 florin
132 | !84 U+201E quotedblbase
133 | !85 U+2026 ellipsis
134 | !86 U+2020 dagger
135 | !87 U+2021 daggerdbl
136 | !88 U+02C6 circumflex
137 | !89 U+2030 perthousand
138 | !8A U+0160 Scaron
139 | !8B U+2039 guilsinglleft
140 | !8C U+0152 OE
141 | !8E U+017D Zcaron
142 | !91 U+2018 quoteleft
143 | !92 U+2019 quoteright
144 | !93 U+201C quotedblleft
145 | !94 U+201D quotedblright
146 | !95 U+2022 bullet
147 | !96 U+2013 endash
148 | !97 U+2014 emdash
149 | !98 U+02DC tilde
150 | !99 U+2122 trademark
151 | !9A U+0161 scaron
152 | !9B U+203A guilsinglright
153 | !9C U+0153 oe
154 | !9E U+017E zcaron
155 | !9F U+0178 Ydieresis
156 | !A0 U+00A0 space
157 | !A1 U+00A1 exclamdown
158 | !A2 U+00A2 cent
159 | !A3 U+00A3 sterling
160 | !A4 U+00A4 currency
161 | !A5 U+00A5 yen
162 | !A6 U+00A6 brokenbar
163 | !A7 U+00A7 section
164 | !A8 U+00A8 dieresis
165 | !A9 U+00A9 copyright
166 | !AA U+00AA ordfeminine
167 | !AB U+00AB guillemotleft
168 | !AC U+00AC logicalnot
169 | !AD U+00AD hyphen
170 | !AE U+00AE registered
171 | !AF U+00AF macron
172 | !B0 U+00B0 degree
173 | !B1 U+00B1 plusminus
174 | !B2 U+00B2 twosuperior
175 | !B3 U+00B3 threesuperior
176 | !B4 U+00B4 acute
177 | !B5 U+00B5 mu
178 | !B6 U+00B6 paragraph
179 | !B7 U+00B7 periodcentered
180 | !B8 U+00B8 cedilla
181 | !B9 U+00B9 onesuperior
182 | !BA U+00BA ordmasculine
183 | !BB U+00BB guillemotright
184 | !BC U+00BC onequarter
185 | !BD U+00BD onehalf
186 | !BE U+00BE threequarters
187 | !BF U+00BF questiondown
188 | !C0 U+00C0 Agrave
189 | !C1 U+00C1 Aacute
190 | !C2 U+00C2 Acircumflex
191 | !C3 U+00C3 Atilde
192 | !C4 U+00C4 Adieresis
193 | !C5 U+00C5 Aring
194 | !C6 U+00C6 AE
195 | !C7 U+00C7 Ccedilla
196 | !C8 U+00C8 Egrave
197 | !C9 U+00C9 Eacute
198 | !CA U+00CA Ecircumflex
199 | !CB U+00CB Edieresis
200 | !CC U+00CC Igrave
201 | !CD U+00CD Iacute
202 | !CE U+00CE Icircumflex
203 | !CF U+00CF Idieresis
204 | !D0 U+00D0 Eth
205 | !D1 U+00D1 Ntilde
206 | !D2 U+00D2 Ograve
207 | !D3 U+00D3 Oacute
208 | !D4 U+00D4 Ocircumflex
209 | !D5 U+00D5 Otilde
210 | !D6 U+00D6 Odieresis
211 | !D7 U+00D7 multiply
212 | !D8 U+00D8 Oslash
213 | !D9 U+00D9 Ugrave
214 | !DA U+00DA Uacute
215 | !DB U+00DB Ucircumflex
216 | !DC U+00DC Udieresis
217 | !DD U+00DD Yacute
218 | !DE U+00DE Thorn
219 | !DF U+00DF germandbls
220 | !E0 U+00E0 agrave
221 | !E1 U+00E1 aacute
222 | !E2 U+00E2 acircumflex
223 | !E3 U+00E3 atilde
224 | !E4 U+00E4 adieresis
225 | !E5 U+00E5 aring
226 | !E6 U+00E6 ae
227 | !E7 U+00E7 ccedilla
228 | !E8 U+00E8 egrave
229 | !E9 U+00E9 eacute
230 | !EA U+00EA ecircumflex
231 | !EB U+00EB edieresis
232 | !EC U+00EC igrave
233 | !ED U+00ED iacute
234 | !EE U+00EE icircumflex
235 | !EF U+00EF idieresis
236 | !F0 U+00F0 eth
237 | !F1 U+00F1 ntilde
238 | !F2 U+00F2 ograve
239 | !F3 U+00F3 oacute
240 | !F4 U+00F4 ocircumflex
241 | !F5 U+00F5 otilde
242 | !F6 U+00F6 odieresis
243 | !F7 U+00F7 divide
244 | !F8 U+00F8 oslash
245 | !F9 U+00F9 ugrave
246 | !FA U+00FA uacute
247 | !FB U+00FB ucircumflex
248 | !FC U+00FC udieresis
249 | !FD U+00FD yacute
250 | !FE U+00FE thorn
251 | !FF U+00FF ydieresis
252 |
--------------------------------------------------------------------------------
/maps/cp1250.map:
--------------------------------------------------------------------------------
1 | !00 U+0000 .notdef
2 | !01 U+0001 .notdef
3 | !02 U+0002 .notdef
4 | !03 U+0003 .notdef
5 | !04 U+0004 .notdef
6 | !05 U+0005 .notdef
7 | !06 U+0006 .notdef
8 | !07 U+0007 .notdef
9 | !08 U+0008 .notdef
10 | !09 U+0009 .notdef
11 | !0A U+000A .notdef
12 | !0B U+000B .notdef
13 | !0C U+000C .notdef
14 | !0D U+000D .notdef
15 | !0E U+000E .notdef
16 | !0F U+000F .notdef
17 | !10 U+0010 .notdef
18 | !11 U+0011 .notdef
19 | !12 U+0012 .notdef
20 | !13 U+0013 .notdef
21 | !14 U+0014 .notdef
22 | !15 U+0015 .notdef
23 | !16 U+0016 .notdef
24 | !17 U+0017 .notdef
25 | !18 U+0018 .notdef
26 | !19 U+0019 .notdef
27 | !1A U+001A .notdef
28 | !1B U+001B .notdef
29 | !1C U+001C .notdef
30 | !1D U+001D .notdef
31 | !1E U+001E .notdef
32 | !1F U+001F .notdef
33 | !20 U+0020 space
34 | !21 U+0021 exclam
35 | !22 U+0022 quotedbl
36 | !23 U+0023 numbersign
37 | !24 U+0024 dollar
38 | !25 U+0025 percent
39 | !26 U+0026 ampersand
40 | !27 U+0027 quotesingle
41 | !28 U+0028 parenleft
42 | !29 U+0029 parenright
43 | !2A U+002A asterisk
44 | !2B U+002B plus
45 | !2C U+002C comma
46 | !2D U+002D hyphen
47 | !2E U+002E period
48 | !2F U+002F slash
49 | !30 U+0030 zero
50 | !31 U+0031 one
51 | !32 U+0032 two
52 | !33 U+0033 three
53 | !34 U+0034 four
54 | !35 U+0035 five
55 | !36 U+0036 six
56 | !37 U+0037 seven
57 | !38 U+0038 eight
58 | !39 U+0039 nine
59 | !3A U+003A colon
60 | !3B U+003B semicolon
61 | !3C U+003C less
62 | !3D U+003D equal
63 | !3E U+003E greater
64 | !3F U+003F question
65 | !40 U+0040 at
66 | !41 U+0041 A
67 | !42 U+0042 B
68 | !43 U+0043 C
69 | !44 U+0044 D
70 | !45 U+0045 E
71 | !46 U+0046 F
72 | !47 U+0047 G
73 | !48 U+0048 H
74 | !49 U+0049 I
75 | !4A U+004A J
76 | !4B U+004B K
77 | !4C U+004C L
78 | !4D U+004D M
79 | !4E U+004E N
80 | !4F U+004F O
81 | !50 U+0050 P
82 | !51 U+0051 Q
83 | !52 U+0052 R
84 | !53 U+0053 S
85 | !54 U+0054 T
86 | !55 U+0055 U
87 | !56 U+0056 V
88 | !57 U+0057 W
89 | !58 U+0058 X
90 | !59 U+0059 Y
91 | !5A U+005A Z
92 | !5B U+005B bracketleft
93 | !5C U+005C backslash
94 | !5D U+005D bracketright
95 | !5E U+005E asciicircum
96 | !5F U+005F underscore
97 | !60 U+0060 grave
98 | !61 U+0061 a
99 | !62 U+0062 b
100 | !63 U+0063 c
101 | !64 U+0064 d
102 | !65 U+0065 e
103 | !66 U+0066 f
104 | !67 U+0067 g
105 | !68 U+0068 h
106 | !69 U+0069 i
107 | !6A U+006A j
108 | !6B U+006B k
109 | !6C U+006C l
110 | !6D U+006D m
111 | !6E U+006E n
112 | !6F U+006F o
113 | !70 U+0070 p
114 | !71 U+0071 q
115 | !72 U+0072 r
116 | !73 U+0073 s
117 | !74 U+0074 t
118 | !75 U+0075 u
119 | !76 U+0076 v
120 | !77 U+0077 w
121 | !78 U+0078 x
122 | !79 U+0079 y
123 | !7A U+007A z
124 | !7B U+007B braceleft
125 | !7C U+007C bar
126 | !7D U+007D braceright
127 | !7E U+007E asciitilde
128 | !7F U+007F .notdef
129 | !80 U+20AC Euro
130 | !82 U+201A quotesinglbase
131 | !84 U+201E quotedblbase
132 | !85 U+2026 ellipsis
133 | !86 U+2020 dagger
134 | !87 U+2021 daggerdbl
135 | !89 U+2030 perthousand
136 | !8A U+0160 Scaron
137 | !8B U+2039 guilsinglleft
138 | !8C U+015A Sacute
139 | !8D U+0164 Tcaron
140 | !8E U+017D Zcaron
141 | !8F U+0179 Zacute
142 | !91 U+2018 quoteleft
143 | !92 U+2019 quoteright
144 | !93 U+201C quotedblleft
145 | !94 U+201D quotedblright
146 | !95 U+2022 bullet
147 | !96 U+2013 endash
148 | !97 U+2014 emdash
149 | !99 U+2122 trademark
150 | !9A U+0161 scaron
151 | !9B U+203A guilsinglright
152 | !9C U+015B sacute
153 | !9D U+0165 tcaron
154 | !9E U+017E zcaron
155 | !9F U+017A zacute
156 | !A0 U+00A0 space
157 | !A1 U+02C7 caron
158 | !A2 U+02D8 breve
159 | !A3 U+0141 Lslash
160 | !A4 U+00A4 currency
161 | !A5 U+0104 Aogonek
162 | !A6 U+00A6 brokenbar
163 | !A7 U+00A7 section
164 | !A8 U+00A8 dieresis
165 | !A9 U+00A9 copyright
166 | !AA U+015E Scedilla
167 | !AB U+00AB guillemotleft
168 | !AC U+00AC logicalnot
169 | !AD U+00AD hyphen
170 | !AE U+00AE registered
171 | !AF U+017B Zdotaccent
172 | !B0 U+00B0 degree
173 | !B1 U+00B1 plusminus
174 | !B2 U+02DB ogonek
175 | !B3 U+0142 lslash
176 | !B4 U+00B4 acute
177 | !B5 U+00B5 mu
178 | !B6 U+00B6 paragraph
179 | !B7 U+00B7 periodcentered
180 | !B8 U+00B8 cedilla
181 | !B9 U+0105 aogonek
182 | !BA U+015F scedilla
183 | !BB U+00BB guillemotright
184 | !BC U+013D Lcaron
185 | !BD U+02DD hungarumlaut
186 | !BE U+013E lcaron
187 | !BF U+017C zdotaccent
188 | !C0 U+0154 Racute
189 | !C1 U+00C1 Aacute
190 | !C2 U+00C2 Acircumflex
191 | !C3 U+0102 Abreve
192 | !C4 U+00C4 Adieresis
193 | !C5 U+0139 Lacute
194 | !C6 U+0106 Cacute
195 | !C7 U+00C7 Ccedilla
196 | !C8 U+010C Ccaron
197 | !C9 U+00C9 Eacute
198 | !CA U+0118 Eogonek
199 | !CB U+00CB Edieresis
200 | !CC U+011A Ecaron
201 | !CD U+00CD Iacute
202 | !CE U+00CE Icircumflex
203 | !CF U+010E Dcaron
204 | !D0 U+0110 Dcroat
205 | !D1 U+0143 Nacute
206 | !D2 U+0147 Ncaron
207 | !D3 U+00D3 Oacute
208 | !D4 U+00D4 Ocircumflex
209 | !D5 U+0150 Ohungarumlaut
210 | !D6 U+00D6 Odieresis
211 | !D7 U+00D7 multiply
212 | !D8 U+0158 Rcaron
213 | !D9 U+016E Uring
214 | !DA U+00DA Uacute
215 | !DB U+0170 Uhungarumlaut
216 | !DC U+00DC Udieresis
217 | !DD U+00DD Yacute
218 | !DE U+0162 Tcommaaccent
219 | !DF U+00DF germandbls
220 | !E0 U+0155 racute
221 | !E1 U+00E1 aacute
222 | !E2 U+00E2 acircumflex
223 | !E3 U+0103 abreve
224 | !E4 U+00E4 adieresis
225 | !E5 U+013A lacute
226 | !E6 U+0107 cacute
227 | !E7 U+00E7 ccedilla
228 | !E8 U+010D ccaron
229 | !E9 U+00E9 eacute
230 | !EA U+0119 eogonek
231 | !EB U+00EB edieresis
232 | !EC U+011B ecaron
233 | !ED U+00ED iacute
234 | !EE U+00EE icircumflex
235 | !EF U+010F dcaron
236 | !F0 U+0111 dcroat
237 | !F1 U+0144 nacute
238 | !F2 U+0148 ncaron
239 | !F3 U+00F3 oacute
240 | !F4 U+00F4 ocircumflex
241 | !F5 U+0151 ohungarumlaut
242 | !F6 U+00F6 odieresis
243 | !F7 U+00F7 divide
244 | !F8 U+0159 rcaron
245 | !F9 U+016F uring
246 | !FA U+00FA uacute
247 | !FB U+0171 uhungarumlaut
248 | !FC U+00FC udieresis
249 | !FD U+00FD yacute
250 | !FE U+0163 tcommaaccent
251 | !FF U+02D9 dotaccent
252 |
--------------------------------------------------------------------------------
/maps/iso-8859-2.map:
--------------------------------------------------------------------------------
1 | !00 U+0000 .notdef
2 | !01 U+0001 .notdef
3 | !02 U+0002 .notdef
4 | !03 U+0003 .notdef
5 | !04 U+0004 .notdef
6 | !05 U+0005 .notdef
7 | !06 U+0006 .notdef
8 | !07 U+0007 .notdef
9 | !08 U+0008 .notdef
10 | !09 U+0009 .notdef
11 | !0A U+000A .notdef
12 | !0B U+000B .notdef
13 | !0C U+000C .notdef
14 | !0D U+000D .notdef
15 | !0E U+000E .notdef
16 | !0F U+000F .notdef
17 | !10 U+0010 .notdef
18 | !11 U+0011 .notdef
19 | !12 U+0012 .notdef
20 | !13 U+0013 .notdef
21 | !14 U+0014 .notdef
22 | !15 U+0015 .notdef
23 | !16 U+0016 .notdef
24 | !17 U+0017 .notdef
25 | !18 U+0018 .notdef
26 | !19 U+0019 .notdef
27 | !1A U+001A .notdef
28 | !1B U+001B .notdef
29 | !1C U+001C .notdef
30 | !1D U+001D .notdef
31 | !1E U+001E .notdef
32 | !1F U+001F .notdef
33 | !20 U+0020 space
34 | !21 U+0021 exclam
35 | !22 U+0022 quotedbl
36 | !23 U+0023 numbersign
37 | !24 U+0024 dollar
38 | !25 U+0025 percent
39 | !26 U+0026 ampersand
40 | !27 U+0027 quotesingle
41 | !28 U+0028 parenleft
42 | !29 U+0029 parenright
43 | !2A U+002A asterisk
44 | !2B U+002B plus
45 | !2C U+002C comma
46 | !2D U+002D hyphen
47 | !2E U+002E period
48 | !2F U+002F slash
49 | !30 U+0030 zero
50 | !31 U+0031 one
51 | !32 U+0032 two
52 | !33 U+0033 three
53 | !34 U+0034 four
54 | !35 U+0035 five
55 | !36 U+0036 six
56 | !37 U+0037 seven
57 | !38 U+0038 eight
58 | !39 U+0039 nine
59 | !3A U+003A colon
60 | !3B U+003B semicolon
61 | !3C U+003C less
62 | !3D U+003D equal
63 | !3E U+003E greater
64 | !3F U+003F question
65 | !40 U+0040 at
66 | !41 U+0041 A
67 | !42 U+0042 B
68 | !43 U+0043 C
69 | !44 U+0044 D
70 | !45 U+0045 E
71 | !46 U+0046 F
72 | !47 U+0047 G
73 | !48 U+0048 H
74 | !49 U+0049 I
75 | !4A U+004A J
76 | !4B U+004B K
77 | !4C U+004C L
78 | !4D U+004D M
79 | !4E U+004E N
80 | !4F U+004F O
81 | !50 U+0050 P
82 | !51 U+0051 Q
83 | !52 U+0052 R
84 | !53 U+0053 S
85 | !54 U+0054 T
86 | !55 U+0055 U
87 | !56 U+0056 V
88 | !57 U+0057 W
89 | !58 U+0058 X
90 | !59 U+0059 Y
91 | !5A U+005A Z
92 | !5B U+005B bracketleft
93 | !5C U+005C backslash
94 | !5D U+005D bracketright
95 | !5E U+005E asciicircum
96 | !5F U+005F underscore
97 | !60 U+0060 grave
98 | !61 U+0061 a
99 | !62 U+0062 b
100 | !63 U+0063 c
101 | !64 U+0064 d
102 | !65 U+0065 e
103 | !66 U+0066 f
104 | !67 U+0067 g
105 | !68 U+0068 h
106 | !69 U+0069 i
107 | !6A U+006A j
108 | !6B U+006B k
109 | !6C U+006C l
110 | !6D U+006D m
111 | !6E U+006E n
112 | !6F U+006F o
113 | !70 U+0070 p
114 | !71 U+0071 q
115 | !72 U+0072 r
116 | !73 U+0073 s
117 | !74 U+0074 t
118 | !75 U+0075 u
119 | !76 U+0076 v
120 | !77 U+0077 w
121 | !78 U+0078 x
122 | !79 U+0079 y
123 | !7A U+007A z
124 | !7B U+007B braceleft
125 | !7C U+007C bar
126 | !7D U+007D braceright
127 | !7E U+007E asciitilde
128 | !7F U+007F .notdef
129 | !80 U+0080 .notdef
130 | !81 U+0081 .notdef
131 | !82 U+0082 .notdef
132 | !83 U+0083 .notdef
133 | !84 U+0084 .notdef
134 | !85 U+0085 .notdef
135 | !86 U+0086 .notdef
136 | !87 U+0087 .notdef
137 | !88 U+0088 .notdef
138 | !89 U+0089 .notdef
139 | !8A U+008A .notdef
140 | !8B U+008B .notdef
141 | !8C U+008C .notdef
142 | !8D U+008D .notdef
143 | !8E U+008E .notdef
144 | !8F U+008F .notdef
145 | !90 U+0090 .notdef
146 | !91 U+0091 .notdef
147 | !92 U+0092 .notdef
148 | !93 U+0093 .notdef
149 | !94 U+0094 .notdef
150 | !95 U+0095 .notdef
151 | !96 U+0096 .notdef
152 | !97 U+0097 .notdef
153 | !98 U+0098 .notdef
154 | !99 U+0099 .notdef
155 | !9A U+009A .notdef
156 | !9B U+009B .notdef
157 | !9C U+009C .notdef
158 | !9D U+009D .notdef
159 | !9E U+009E .notdef
160 | !9F U+009F .notdef
161 | !A0 U+00A0 space
162 | !A1 U+0104 Aogonek
163 | !A2 U+02D8 breve
164 | !A3 U+0141 Lslash
165 | !A4 U+00A4 currency
166 | !A5 U+013D Lcaron
167 | !A6 U+015A Sacute
168 | !A7 U+00A7 section
169 | !A8 U+00A8 dieresis
170 | !A9 U+0160 Scaron
171 | !AA U+015E Scedilla
172 | !AB U+0164 Tcaron
173 | !AC U+0179 Zacute
174 | !AD U+00AD hyphen
175 | !AE U+017D Zcaron
176 | !AF U+017B Zdotaccent
177 | !B0 U+00B0 degree
178 | !B1 U+0105 aogonek
179 | !B2 U+02DB ogonek
180 | !B3 U+0142 lslash
181 | !B4 U+00B4 acute
182 | !B5 U+013E lcaron
183 | !B6 U+015B sacute
184 | !B7 U+02C7 caron
185 | !B8 U+00B8 cedilla
186 | !B9 U+0161 scaron
187 | !BA U+015F scedilla
188 | !BB U+0165 tcaron
189 | !BC U+017A zacute
190 | !BD U+02DD hungarumlaut
191 | !BE U+017E zcaron
192 | !BF U+017C zdotaccent
193 | !C0 U+0154 Racute
194 | !C1 U+00C1 Aacute
195 | !C2 U+00C2 Acircumflex
196 | !C3 U+0102 Abreve
197 | !C4 U+00C4 Adieresis
198 | !C5 U+0139 Lacute
199 | !C6 U+0106 Cacute
200 | !C7 U+00C7 Ccedilla
201 | !C8 U+010C Ccaron
202 | !C9 U+00C9 Eacute
203 | !CA U+0118 Eogonek
204 | !CB U+00CB Edieresis
205 | !CC U+011A Ecaron
206 | !CD U+00CD Iacute
207 | !CE U+00CE Icircumflex
208 | !CF U+010E Dcaron
209 | !D0 U+0110 Dcroat
210 | !D1 U+0143 Nacute
211 | !D2 U+0147 Ncaron
212 | !D3 U+00D3 Oacute
213 | !D4 U+00D4 Ocircumflex
214 | !D5 U+0150 Ohungarumlaut
215 | !D6 U+00D6 Odieresis
216 | !D7 U+00D7 multiply
217 | !D8 U+0158 Rcaron
218 | !D9 U+016E Uring
219 | !DA U+00DA Uacute
220 | !DB U+0170 Uhungarumlaut
221 | !DC U+00DC Udieresis
222 | !DD U+00DD Yacute
223 | !DE U+0162 Tcommaaccent
224 | !DF U+00DF germandbls
225 | !E0 U+0155 racute
226 | !E1 U+00E1 aacute
227 | !E2 U+00E2 acircumflex
228 | !E3 U+0103 abreve
229 | !E4 U+00E4 adieresis
230 | !E5 U+013A lacute
231 | !E6 U+0107 cacute
232 | !E7 U+00E7 ccedilla
233 | !E8 U+010D ccaron
234 | !E9 U+00E9 eacute
235 | !EA U+0119 eogonek
236 | !EB U+00EB edieresis
237 | !EC U+011B ecaron
238 | !ED U+00ED iacute
239 | !EE U+00EE icircumflex
240 | !EF U+010F dcaron
241 | !F0 U+0111 dcroat
242 | !F1 U+0144 nacute
243 | !F2 U+0148 ncaron
244 | !F3 U+00F3 oacute
245 | !F4 U+00F4 ocircumflex
246 | !F5 U+0151 ohungarumlaut
247 | !F6 U+00F6 odieresis
248 | !F7 U+00F7 divide
249 | !F8 U+0159 rcaron
250 | !F9 U+016F uring
251 | !FA U+00FA uacute
252 | !FB U+0171 uhungarumlaut
253 | !FC U+00FC udieresis
254 | !FD U+00FD yacute
255 | !FE U+0163 tcommaaccent
256 | !FF U+02D9 dotaccent
257 |
--------------------------------------------------------------------------------
/maps/iso-8859-15.map:
--------------------------------------------------------------------------------
1 | !00 U+0000 .notdef
2 | !01 U+0001 .notdef
3 | !02 U+0002 .notdef
4 | !03 U+0003 .notdef
5 | !04 U+0004 .notdef
6 | !05 U+0005 .notdef
7 | !06 U+0006 .notdef
8 | !07 U+0007 .notdef
9 | !08 U+0008 .notdef
10 | !09 U+0009 .notdef
11 | !0A U+000A .notdef
12 | !0B U+000B .notdef
13 | !0C U+000C .notdef
14 | !0D U+000D .notdef
15 | !0E U+000E .notdef
16 | !0F U+000F .notdef
17 | !10 U+0010 .notdef
18 | !11 U+0011 .notdef
19 | !12 U+0012 .notdef
20 | !13 U+0013 .notdef
21 | !14 U+0014 .notdef
22 | !15 U+0015 .notdef
23 | !16 U+0016 .notdef
24 | !17 U+0017 .notdef
25 | !18 U+0018 .notdef
26 | !19 U+0019 .notdef
27 | !1A U+001A .notdef
28 | !1B U+001B .notdef
29 | !1C U+001C .notdef
30 | !1D U+001D .notdef
31 | !1E U+001E .notdef
32 | !1F U+001F .notdef
33 | !20 U+0020 space
34 | !21 U+0021 exclam
35 | !22 U+0022 quotedbl
36 | !23 U+0023 numbersign
37 | !24 U+0024 dollar
38 | !25 U+0025 percent
39 | !26 U+0026 ampersand
40 | !27 U+0027 quotesingle
41 | !28 U+0028 parenleft
42 | !29 U+0029 parenright
43 | !2A U+002A asterisk
44 | !2B U+002B plus
45 | !2C U+002C comma
46 | !2D U+002D hyphen
47 | !2E U+002E period
48 | !2F U+002F slash
49 | !30 U+0030 zero
50 | !31 U+0031 one
51 | !32 U+0032 two
52 | !33 U+0033 three
53 | !34 U+0034 four
54 | !35 U+0035 five
55 | !36 U+0036 six
56 | !37 U+0037 seven
57 | !38 U+0038 eight
58 | !39 U+0039 nine
59 | !3A U+003A colon
60 | !3B U+003B semicolon
61 | !3C U+003C less
62 | !3D U+003D equal
63 | !3E U+003E greater
64 | !3F U+003F question
65 | !40 U+0040 at
66 | !41 U+0041 A
67 | !42 U+0042 B
68 | !43 U+0043 C
69 | !44 U+0044 D
70 | !45 U+0045 E
71 | !46 U+0046 F
72 | !47 U+0047 G
73 | !48 U+0048 H
74 | !49 U+0049 I
75 | !4A U+004A J
76 | !4B U+004B K
77 | !4C U+004C L
78 | !4D U+004D M
79 | !4E U+004E N
80 | !4F U+004F O
81 | !50 U+0050 P
82 | !51 U+0051 Q
83 | !52 U+0052 R
84 | !53 U+0053 S
85 | !54 U+0054 T
86 | !55 U+0055 U
87 | !56 U+0056 V
88 | !57 U+0057 W
89 | !58 U+0058 X
90 | !59 U+0059 Y
91 | !5A U+005A Z
92 | !5B U+005B bracketleft
93 | !5C U+005C backslash
94 | !5D U+005D bracketright
95 | !5E U+005E asciicircum
96 | !5F U+005F underscore
97 | !60 U+0060 grave
98 | !61 U+0061 a
99 | !62 U+0062 b
100 | !63 U+0063 c
101 | !64 U+0064 d
102 | !65 U+0065 e
103 | !66 U+0066 f
104 | !67 U+0067 g
105 | !68 U+0068 h
106 | !69 U+0069 i
107 | !6A U+006A j
108 | !6B U+006B k
109 | !6C U+006C l
110 | !6D U+006D m
111 | !6E U+006E n
112 | !6F U+006F o
113 | !70 U+0070 p
114 | !71 U+0071 q
115 | !72 U+0072 r
116 | !73 U+0073 s
117 | !74 U+0074 t
118 | !75 U+0075 u
119 | !76 U+0076 v
120 | !77 U+0077 w
121 | !78 U+0078 x
122 | !79 U+0079 y
123 | !7A U+007A z
124 | !7B U+007B braceleft
125 | !7C U+007C bar
126 | !7D U+007D braceright
127 | !7E U+007E asciitilde
128 | !7F U+007F .notdef
129 | !80 U+0080 .notdef
130 | !81 U+0081 .notdef
131 | !82 U+0082 .notdef
132 | !83 U+0083 .notdef
133 | !84 U+0084 .notdef
134 | !85 U+0085 .notdef
135 | !86 U+0086 .notdef
136 | !87 U+0087 .notdef
137 | !88 U+0088 .notdef
138 | !89 U+0089 .notdef
139 | !8A U+008A .notdef
140 | !8B U+008B .notdef
141 | !8C U+008C .notdef
142 | !8D U+008D .notdef
143 | !8E U+008E .notdef
144 | !8F U+008F .notdef
145 | !90 U+0090 .notdef
146 | !91 U+0091 .notdef
147 | !92 U+0092 .notdef
148 | !93 U+0093 .notdef
149 | !94 U+0094 .notdef
150 | !95 U+0095 .notdef
151 | !96 U+0096 .notdef
152 | !97 U+0097 .notdef
153 | !98 U+0098 .notdef
154 | !99 U+0099 .notdef
155 | !9A U+009A .notdef
156 | !9B U+009B .notdef
157 | !9C U+009C .notdef
158 | !9D U+009D .notdef
159 | !9E U+009E .notdef
160 | !9F U+009F .notdef
161 | !A0 U+00A0 space
162 | !A1 U+00A1 exclamdown
163 | !A2 U+00A2 cent
164 | !A3 U+00A3 sterling
165 | !A4 U+20AC Euro
166 | !A5 U+00A5 yen
167 | !A6 U+0160 Scaron
168 | !A7 U+00A7 section
169 | !A8 U+0161 scaron
170 | !A9 U+00A9 copyright
171 | !AA U+00AA ordfeminine
172 | !AB U+00AB guillemotleft
173 | !AC U+00AC logicalnot
174 | !AD U+00AD hyphen
175 | !AE U+00AE registered
176 | !AF U+00AF macron
177 | !B0 U+00B0 degree
178 | !B1 U+00B1 plusminus
179 | !B2 U+00B2 twosuperior
180 | !B3 U+00B3 threesuperior
181 | !B4 U+017D Zcaron
182 | !B5 U+00B5 mu
183 | !B6 U+00B6 paragraph
184 | !B7 U+00B7 periodcentered
185 | !B8 U+017E zcaron
186 | !B9 U+00B9 onesuperior
187 | !BA U+00BA ordmasculine
188 | !BB U+00BB guillemotright
189 | !BC U+0152 OE
190 | !BD U+0153 oe
191 | !BE U+0178 Ydieresis
192 | !BF U+00BF questiondown
193 | !C0 U+00C0 Agrave
194 | !C1 U+00C1 Aacute
195 | !C2 U+00C2 Acircumflex
196 | !C3 U+00C3 Atilde
197 | !C4 U+00C4 Adieresis
198 | !C5 U+00C5 Aring
199 | !C6 U+00C6 AE
200 | !C7 U+00C7 Ccedilla
201 | !C8 U+00C8 Egrave
202 | !C9 U+00C9 Eacute
203 | !CA U+00CA Ecircumflex
204 | !CB U+00CB Edieresis
205 | !CC U+00CC Igrave
206 | !CD U+00CD Iacute
207 | !CE U+00CE Icircumflex
208 | !CF U+00CF Idieresis
209 | !D0 U+00D0 Eth
210 | !D1 U+00D1 Ntilde
211 | !D2 U+00D2 Ograve
212 | !D3 U+00D3 Oacute
213 | !D4 U+00D4 Ocircumflex
214 | !D5 U+00D5 Otilde
215 | !D6 U+00D6 Odieresis
216 | !D7 U+00D7 multiply
217 | !D8 U+00D8 Oslash
218 | !D9 U+00D9 Ugrave
219 | !DA U+00DA Uacute
220 | !DB U+00DB Ucircumflex
221 | !DC U+00DC Udieresis
222 | !DD U+00DD Yacute
223 | !DE U+00DE Thorn
224 | !DF U+00DF germandbls
225 | !E0 U+00E0 agrave
226 | !E1 U+00E1 aacute
227 | !E2 U+00E2 acircumflex
228 | !E3 U+00E3 atilde
229 | !E4 U+00E4 adieresis
230 | !E5 U+00E5 aring
231 | !E6 U+00E6 ae
232 | !E7 U+00E7 ccedilla
233 | !E8 U+00E8 egrave
234 | !E9 U+00E9 eacute
235 | !EA U+00EA ecircumflex
236 | !EB U+00EB edieresis
237 | !EC U+00EC igrave
238 | !ED U+00ED iacute
239 | !EE U+00EE icircumflex
240 | !EF U+00EF idieresis
241 | !F0 U+00F0 eth
242 | !F1 U+00F1 ntilde
243 | !F2 U+00F2 ograve
244 | !F3 U+00F3 oacute
245 | !F4 U+00F4 ocircumflex
246 | !F5 U+00F5 otilde
247 | !F6 U+00F6 odieresis
248 | !F7 U+00F7 divide
249 | !F8 U+00F8 oslash
250 | !F9 U+00F9 ugrave
251 | !FA U+00FA uacute
252 | !FB U+00FB ucircumflex
253 | !FC U+00FC udieresis
254 | !FD U+00FD yacute
255 | !FE U+00FE thorn
256 | !FF U+00FF ydieresis
257 |
--------------------------------------------------------------------------------
/maps/iso-8859-4.map:
--------------------------------------------------------------------------------
1 | !00 U+0000 .notdef
2 | !01 U+0001 .notdef
3 | !02 U+0002 .notdef
4 | !03 U+0003 .notdef
5 | !04 U+0004 .notdef
6 | !05 U+0005 .notdef
7 | !06 U+0006 .notdef
8 | !07 U+0007 .notdef
9 | !08 U+0008 .notdef
10 | !09 U+0009 .notdef
11 | !0A U+000A .notdef
12 | !0B U+000B .notdef
13 | !0C U+000C .notdef
14 | !0D U+000D .notdef
15 | !0E U+000E .notdef
16 | !0F U+000F .notdef
17 | !10 U+0010 .notdef
18 | !11 U+0011 .notdef
19 | !12 U+0012 .notdef
20 | !13 U+0013 .notdef
21 | !14 U+0014 .notdef
22 | !15 U+0015 .notdef
23 | !16 U+0016 .notdef
24 | !17 U+0017 .notdef
25 | !18 U+0018 .notdef
26 | !19 U+0019 .notdef
27 | !1A U+001A .notdef
28 | !1B U+001B .notdef
29 | !1C U+001C .notdef
30 | !1D U+001D .notdef
31 | !1E U+001E .notdef
32 | !1F U+001F .notdef
33 | !20 U+0020 space
34 | !21 U+0021 exclam
35 | !22 U+0022 quotedbl
36 | !23 U+0023 numbersign
37 | !24 U+0024 dollar
38 | !25 U+0025 percent
39 | !26 U+0026 ampersand
40 | !27 U+0027 quotesingle
41 | !28 U+0028 parenleft
42 | !29 U+0029 parenright
43 | !2A U+002A asterisk
44 | !2B U+002B plus
45 | !2C U+002C comma
46 | !2D U+002D hyphen
47 | !2E U+002E period
48 | !2F U+002F slash
49 | !30 U+0030 zero
50 | !31 U+0031 one
51 | !32 U+0032 two
52 | !33 U+0033 three
53 | !34 U+0034 four
54 | !35 U+0035 five
55 | !36 U+0036 six
56 | !37 U+0037 seven
57 | !38 U+0038 eight
58 | !39 U+0039 nine
59 | !3A U+003A colon
60 | !3B U+003B semicolon
61 | !3C U+003C less
62 | !3D U+003D equal
63 | !3E U+003E greater
64 | !3F U+003F question
65 | !40 U+0040 at
66 | !41 U+0041 A
67 | !42 U+0042 B
68 | !43 U+0043 C
69 | !44 U+0044 D
70 | !45 U+0045 E
71 | !46 U+0046 F
72 | !47 U+0047 G
73 | !48 U+0048 H
74 | !49 U+0049 I
75 | !4A U+004A J
76 | !4B U+004B K
77 | !4C U+004C L
78 | !4D U+004D M
79 | !4E U+004E N
80 | !4F U+004F O
81 | !50 U+0050 P
82 | !51 U+0051 Q
83 | !52 U+0052 R
84 | !53 U+0053 S
85 | !54 U+0054 T
86 | !55 U+0055 U
87 | !56 U+0056 V
88 | !57 U+0057 W
89 | !58 U+0058 X
90 | !59 U+0059 Y
91 | !5A U+005A Z
92 | !5B U+005B bracketleft
93 | !5C U+005C backslash
94 | !5D U+005D bracketright
95 | !5E U+005E asciicircum
96 | !5F U+005F underscore
97 | !60 U+0060 grave
98 | !61 U+0061 a
99 | !62 U+0062 b
100 | !63 U+0063 c
101 | !64 U+0064 d
102 | !65 U+0065 e
103 | !66 U+0066 f
104 | !67 U+0067 g
105 | !68 U+0068 h
106 | !69 U+0069 i
107 | !6A U+006A j
108 | !6B U+006B k
109 | !6C U+006C l
110 | !6D U+006D m
111 | !6E U+006E n
112 | !6F U+006F o
113 | !70 U+0070 p
114 | !71 U+0071 q
115 | !72 U+0072 r
116 | !73 U+0073 s
117 | !74 U+0074 t
118 | !75 U+0075 u
119 | !76 U+0076 v
120 | !77 U+0077 w
121 | !78 U+0078 x
122 | !79 U+0079 y
123 | !7A U+007A z
124 | !7B U+007B braceleft
125 | !7C U+007C bar
126 | !7D U+007D braceright
127 | !7E U+007E asciitilde
128 | !7F U+007F .notdef
129 | !80 U+0080 .notdef
130 | !81 U+0081 .notdef
131 | !82 U+0082 .notdef
132 | !83 U+0083 .notdef
133 | !84 U+0084 .notdef
134 | !85 U+0085 .notdef
135 | !86 U+0086 .notdef
136 | !87 U+0087 .notdef
137 | !88 U+0088 .notdef
138 | !89 U+0089 .notdef
139 | !8A U+008A .notdef
140 | !8B U+008B .notdef
141 | !8C U+008C .notdef
142 | !8D U+008D .notdef
143 | !8E U+008E .notdef
144 | !8F U+008F .notdef
145 | !90 U+0090 .notdef
146 | !91 U+0091 .notdef
147 | !92 U+0092 .notdef
148 | !93 U+0093 .notdef
149 | !94 U+0094 .notdef
150 | !95 U+0095 .notdef
151 | !96 U+0096 .notdef
152 | !97 U+0097 .notdef
153 | !98 U+0098 .notdef
154 | !99 U+0099 .notdef
155 | !9A U+009A .notdef
156 | !9B U+009B .notdef
157 | !9C U+009C .notdef
158 | !9D U+009D .notdef
159 | !9E U+009E .notdef
160 | !9F U+009F .notdef
161 | !A0 U+00A0 space
162 | !A1 U+0104 Aogonek
163 | !A2 U+0138 kgreenlandic
164 | !A3 U+0156 Rcommaaccent
165 | !A4 U+00A4 currency
166 | !A5 U+0128 Itilde
167 | !A6 U+013B Lcommaaccent
168 | !A7 U+00A7 section
169 | !A8 U+00A8 dieresis
170 | !A9 U+0160 Scaron
171 | !AA U+0112 Emacron
172 | !AB U+0122 Gcommaaccent
173 | !AC U+0166 Tbar
174 | !AD U+00AD hyphen
175 | !AE U+017D Zcaron
176 | !AF U+00AF macron
177 | !B0 U+00B0 degree
178 | !B1 U+0105 aogonek
179 | !B2 U+02DB ogonek
180 | !B3 U+0157 rcommaaccent
181 | !B4 U+00B4 acute
182 | !B5 U+0129 itilde
183 | !B6 U+013C lcommaaccent
184 | !B7 U+02C7 caron
185 | !B8 U+00B8 cedilla
186 | !B9 U+0161 scaron
187 | !BA U+0113 emacron
188 | !BB U+0123 gcommaaccent
189 | !BC U+0167 tbar
190 | !BD U+014A Eng
191 | !BE U+017E zcaron
192 | !BF U+014B eng
193 | !C0 U+0100 Amacron
194 | !C1 U+00C1 Aacute
195 | !C2 U+00C2 Acircumflex
196 | !C3 U+00C3 Atilde
197 | !C4 U+00C4 Adieresis
198 | !C5 U+00C5 Aring
199 | !C6 U+00C6 AE
200 | !C7 U+012E Iogonek
201 | !C8 U+010C Ccaron
202 | !C9 U+00C9 Eacute
203 | !CA U+0118 Eogonek
204 | !CB U+00CB Edieresis
205 | !CC U+0116 Edotaccent
206 | !CD U+00CD Iacute
207 | !CE U+00CE Icircumflex
208 | !CF U+012A Imacron
209 | !D0 U+0110 Dcroat
210 | !D1 U+0145 Ncommaaccent
211 | !D2 U+014C Omacron
212 | !D3 U+0136 Kcommaaccent
213 | !D4 U+00D4 Ocircumflex
214 | !D5 U+00D5 Otilde
215 | !D6 U+00D6 Odieresis
216 | !D7 U+00D7 multiply
217 | !D8 U+00D8 Oslash
218 | !D9 U+0172 Uogonek
219 | !DA U+00DA Uacute
220 | !DB U+00DB Ucircumflex
221 | !DC U+00DC Udieresis
222 | !DD U+0168 Utilde
223 | !DE U+016A Umacron
224 | !DF U+00DF germandbls
225 | !E0 U+0101 amacron
226 | !E1 U+00E1 aacute
227 | !E2 U+00E2 acircumflex
228 | !E3 U+00E3 atilde
229 | !E4 U+00E4 adieresis
230 | !E5 U+00E5 aring
231 | !E6 U+00E6 ae
232 | !E7 U+012F iogonek
233 | !E8 U+010D ccaron
234 | !E9 U+00E9 eacute
235 | !EA U+0119 eogonek
236 | !EB U+00EB edieresis
237 | !EC U+0117 edotaccent
238 | !ED U+00ED iacute
239 | !EE U+00EE icircumflex
240 | !EF U+012B imacron
241 | !F0 U+0111 dcroat
242 | !F1 U+0146 ncommaaccent
243 | !F2 U+014D omacron
244 | !F3 U+0137 kcommaaccent
245 | !F4 U+00F4 ocircumflex
246 | !F5 U+00F5 otilde
247 | !F6 U+00F6 odieresis
248 | !F7 U+00F7 divide
249 | !F8 U+00F8 oslash
250 | !F9 U+0173 uogonek
251 | !FA U+00FA uacute
252 | !FB U+00FB ucircumflex
253 | !FC U+00FC udieresis
254 | !FD U+0169 utilde
255 | !FE U+016B umacron
256 | !FF U+02D9 dotaccent
257 |
--------------------------------------------------------------------------------
/maps/iso-8859-1.map:
--------------------------------------------------------------------------------
1 | !00 U+0000 .notdef
2 | !01 U+0001 .notdef
3 | !02 U+0002 .notdef
4 | !03 U+0003 .notdef
5 | !04 U+0004 .notdef
6 | !05 U+0005 .notdef
7 | !06 U+0006 .notdef
8 | !07 U+0007 .notdef
9 | !08 U+0008 .notdef
10 | !09 U+0009 .notdef
11 | !0A U+000A .notdef
12 | !0B U+000B .notdef
13 | !0C U+000C .notdef
14 | !0D U+000D .notdef
15 | !0E U+000E .notdef
16 | !0F U+000F .notdef
17 | !10 U+0010 .notdef
18 | !11 U+0011 .notdef
19 | !12 U+0012 .notdef
20 | !13 U+0013 .notdef
21 | !14 U+0014 .notdef
22 | !15 U+0015 .notdef
23 | !16 U+0016 .notdef
24 | !17 U+0017 .notdef
25 | !18 U+0018 .notdef
26 | !19 U+0019 .notdef
27 | !1A U+001A .notdef
28 | !1B U+001B .notdef
29 | !1C U+001C .notdef
30 | !1D U+001D .notdef
31 | !1E U+001E .notdef
32 | !1F U+001F .notdef
33 | !20 U+0020 space
34 | !21 U+0021 exclam
35 | !22 U+0022 quotedbl
36 | !23 U+0023 numbersign
37 | !24 U+0024 dollar
38 | !25 U+0025 percent
39 | !26 U+0026 ampersand
40 | !27 U+0027 quotesingle
41 | !28 U+0028 parenleft
42 | !29 U+0029 parenright
43 | !2A U+002A asterisk
44 | !2B U+002B plus
45 | !2C U+002C comma
46 | !2D U+002D hyphen
47 | !2E U+002E period
48 | !2F U+002F slash
49 | !30 U+0030 zero
50 | !31 U+0031 one
51 | !32 U+0032 two
52 | !33 U+0033 three
53 | !34 U+0034 four
54 | !35 U+0035 five
55 | !36 U+0036 six
56 | !37 U+0037 seven
57 | !38 U+0038 eight
58 | !39 U+0039 nine
59 | !3A U+003A colon
60 | !3B U+003B semicolon
61 | !3C U+003C less
62 | !3D U+003D equal
63 | !3E U+003E greater
64 | !3F U+003F question
65 | !40 U+0040 at
66 | !41 U+0041 A
67 | !42 U+0042 B
68 | !43 U+0043 C
69 | !44 U+0044 D
70 | !45 U+0045 E
71 | !46 U+0046 F
72 | !47 U+0047 G
73 | !48 U+0048 H
74 | !49 U+0049 I
75 | !4A U+004A J
76 | !4B U+004B K
77 | !4C U+004C L
78 | !4D U+004D M
79 | !4E U+004E N
80 | !4F U+004F O
81 | !50 U+0050 P
82 | !51 U+0051 Q
83 | !52 U+0052 R
84 | !53 U+0053 S
85 | !54 U+0054 T
86 | !55 U+0055 U
87 | !56 U+0056 V
88 | !57 U+0057 W
89 | !58 U+0058 X
90 | !59 U+0059 Y
91 | !5A U+005A Z
92 | !5B U+005B bracketleft
93 | !5C U+005C backslash
94 | !5D U+005D bracketright
95 | !5E U+005E asciicircum
96 | !5F U+005F underscore
97 | !60 U+0060 grave
98 | !61 U+0061 a
99 | !62 U+0062 b
100 | !63 U+0063 c
101 | !64 U+0064 d
102 | !65 U+0065 e
103 | !66 U+0066 f
104 | !67 U+0067 g
105 | !68 U+0068 h
106 | !69 U+0069 i
107 | !6A U+006A j
108 | !6B U+006B k
109 | !6C U+006C l
110 | !6D U+006D m
111 | !6E U+006E n
112 | !6F U+006F o
113 | !70 U+0070 p
114 | !71 U+0071 q
115 | !72 U+0072 r
116 | !73 U+0073 s
117 | !74 U+0074 t
118 | !75 U+0075 u
119 | !76 U+0076 v
120 | !77 U+0077 w
121 | !78 U+0078 x
122 | !79 U+0079 y
123 | !7A U+007A z
124 | !7B U+007B braceleft
125 | !7C U+007C bar
126 | !7D U+007D braceright
127 | !7E U+007E asciitilde
128 | !7F U+007F .notdef
129 | !80 U+0080 .notdef
130 | !81 U+0081 .notdef
131 | !82 U+0082 .notdef
132 | !83 U+0083 .notdef
133 | !84 U+0084 .notdef
134 | !85 U+0085 .notdef
135 | !86 U+0086 .notdef
136 | !87 U+0087 .notdef
137 | !88 U+0088 .notdef
138 | !89 U+0089 .notdef
139 | !8A U+008A .notdef
140 | !8B U+008B .notdef
141 | !8C U+008C .notdef
142 | !8D U+008D .notdef
143 | !8E U+008E .notdef
144 | !8F U+008F .notdef
145 | !90 U+0090 .notdef
146 | !91 U+0091 .notdef
147 | !92 U+0092 .notdef
148 | !93 U+0093 .notdef
149 | !94 U+0094 .notdef
150 | !95 U+0095 .notdef
151 | !96 U+0096 .notdef
152 | !97 U+0097 .notdef
153 | !98 U+0098 .notdef
154 | !99 U+0099 .notdef
155 | !9A U+009A .notdef
156 | !9B U+009B .notdef
157 | !9C U+009C .notdef
158 | !9D U+009D .notdef
159 | !9E U+009E .notdef
160 | !9F U+009F .notdef
161 | !A0 U+00A0 space
162 | !A1 U+00A1 exclamdown
163 | !A2 U+00A2 cent
164 | !A3 U+00A3 sterling
165 | !A4 U+00A4 currency
166 | !A5 U+00A5 yen
167 | !A6 U+00A6 brokenbar
168 | !A7 U+00A7 section
169 | !A8 U+00A8 dieresis
170 | !A9 U+00A9 copyright
171 | !AA U+00AA ordfeminine
172 | !AB U+00AB guillemotleft
173 | !AC U+00AC logicalnot
174 | !AD U+00AD hyphen
175 | !AE U+00AE registered
176 | !AF U+00AF macron
177 | !B0 U+00B0 degree
178 | !B1 U+00B1 plusminus
179 | !B2 U+00B2 twosuperior
180 | !B3 U+00B3 threesuperior
181 | !B4 U+00B4 acute
182 | !B5 U+00B5 mu
183 | !B6 U+00B6 paragraph
184 | !B7 U+00B7 periodcentered
185 | !B8 U+00B8 cedilla
186 | !B9 U+00B9 onesuperior
187 | !BA U+00BA ordmasculine
188 | !BB U+00BB guillemotright
189 | !BC U+00BC onequarter
190 | !BD U+00BD onehalf
191 | !BE U+00BE threequarters
192 | !BF U+00BF questiondown
193 | !C0 U+00C0 Agrave
194 | !C1 U+00C1 Aacute
195 | !C2 U+00C2 Acircumflex
196 | !C3 U+00C3 Atilde
197 | !C4 U+00C4 Adieresis
198 | !C5 U+00C5 Aring
199 | !C6 U+00C6 AE
200 | !C7 U+00C7 Ccedilla
201 | !C8 U+00C8 Egrave
202 | !C9 U+00C9 Eacute
203 | !CA U+00CA Ecircumflex
204 | !CB U+00CB Edieresis
205 | !CC U+00CC Igrave
206 | !CD U+00CD Iacute
207 | !CE U+00CE Icircumflex
208 | !CF U+00CF Idieresis
209 | !D0 U+00D0 Eth
210 | !D1 U+00D1 Ntilde
211 | !D2 U+00D2 Ograve
212 | !D3 U+00D3 Oacute
213 | !D4 U+00D4 Ocircumflex
214 | !D5 U+00D5 Otilde
215 | !D6 U+00D6 Odieresis
216 | !D7 U+00D7 multiply
217 | !D8 U+00D8 Oslash
218 | !D9 U+00D9 Ugrave
219 | !DA U+00DA Uacute
220 | !DB U+00DB Ucircumflex
221 | !DC U+00DC Udieresis
222 | !DD U+00DD Yacute
223 | !DE U+00DE Thorn
224 | !DF U+00DF germandbls
225 | !E0 U+00E0 agrave
226 | !E1 U+00E1 aacute
227 | !E2 U+00E2 acircumflex
228 | !E3 U+00E3 atilde
229 | !E4 U+00E4 adieresis
230 | !E5 U+00E5 aring
231 | !E6 U+00E6 ae
232 | !E7 U+00E7 ccedilla
233 | !E8 U+00E8 egrave
234 | !E9 U+00E9 eacute
235 | !EA U+00EA ecircumflex
236 | !EB U+00EB edieresis
237 | !EC U+00EC igrave
238 | !ED U+00ED iacute
239 | !EE U+00EE icircumflex
240 | !EF U+00EF idieresis
241 | !F0 U+00F0 eth
242 | !F1 U+00F1 ntilde
243 | !F2 U+00F2 ograve
244 | !F3 U+00F3 oacute
245 | !F4 U+00F4 ocircumflex
246 | !F5 U+00F5 otilde
247 | !F6 U+00F6 odieresis
248 | !F7 U+00F7 divide
249 | !F8 U+00F8 oslash
250 | !F9 U+00F9 ugrave
251 | !FA U+00FA uacute
252 | !FB U+00FB ucircumflex
253 | !FC U+00FC udieresis
254 | !FD U+00FD yacute
255 | !FE U+00FE thorn
256 | !FF U+00FF ydieresis
257 |
--------------------------------------------------------------------------------
/maps/iso-8859-9.map:
--------------------------------------------------------------------------------
1 | !00 U+0000 .notdef
2 | !01 U+0001 .notdef
3 | !02 U+0002 .notdef
4 | !03 U+0003 .notdef
5 | !04 U+0004 .notdef
6 | !05 U+0005 .notdef
7 | !06 U+0006 .notdef
8 | !07 U+0007 .notdef
9 | !08 U+0008 .notdef
10 | !09 U+0009 .notdef
11 | !0A U+000A .notdef
12 | !0B U+000B .notdef
13 | !0C U+000C .notdef
14 | !0D U+000D .notdef
15 | !0E U+000E .notdef
16 | !0F U+000F .notdef
17 | !10 U+0010 .notdef
18 | !11 U+0011 .notdef
19 | !12 U+0012 .notdef
20 | !13 U+0013 .notdef
21 | !14 U+0014 .notdef
22 | !15 U+0015 .notdef
23 | !16 U+0016 .notdef
24 | !17 U+0017 .notdef
25 | !18 U+0018 .notdef
26 | !19 U+0019 .notdef
27 | !1A U+001A .notdef
28 | !1B U+001B .notdef
29 | !1C U+001C .notdef
30 | !1D U+001D .notdef
31 | !1E U+001E .notdef
32 | !1F U+001F .notdef
33 | !20 U+0020 space
34 | !21 U+0021 exclam
35 | !22 U+0022 quotedbl
36 | !23 U+0023 numbersign
37 | !24 U+0024 dollar
38 | !25 U+0025 percent
39 | !26 U+0026 ampersand
40 | !27 U+0027 quotesingle
41 | !28 U+0028 parenleft
42 | !29 U+0029 parenright
43 | !2A U+002A asterisk
44 | !2B U+002B plus
45 | !2C U+002C comma
46 | !2D U+002D hyphen
47 | !2E U+002E period
48 | !2F U+002F slash
49 | !30 U+0030 zero
50 | !31 U+0031 one
51 | !32 U+0032 two
52 | !33 U+0033 three
53 | !34 U+0034 four
54 | !35 U+0035 five
55 | !36 U+0036 six
56 | !37 U+0037 seven
57 | !38 U+0038 eight
58 | !39 U+0039 nine
59 | !3A U+003A colon
60 | !3B U+003B semicolon
61 | !3C U+003C less
62 | !3D U+003D equal
63 | !3E U+003E greater
64 | !3F U+003F question
65 | !40 U+0040 at
66 | !41 U+0041 A
67 | !42 U+0042 B
68 | !43 U+0043 C
69 | !44 U+0044 D
70 | !45 U+0045 E
71 | !46 U+0046 F
72 | !47 U+0047 G
73 | !48 U+0048 H
74 | !49 U+0049 I
75 | !4A U+004A J
76 | !4B U+004B K
77 | !4C U+004C L
78 | !4D U+004D M
79 | !4E U+004E N
80 | !4F U+004F O
81 | !50 U+0050 P
82 | !51 U+0051 Q
83 | !52 U+0052 R
84 | !53 U+0053 S
85 | !54 U+0054 T
86 | !55 U+0055 U
87 | !56 U+0056 V
88 | !57 U+0057 W
89 | !58 U+0058 X
90 | !59 U+0059 Y
91 | !5A U+005A Z
92 | !5B U+005B bracketleft
93 | !5C U+005C backslash
94 | !5D U+005D bracketright
95 | !5E U+005E asciicircum
96 | !5F U+005F underscore
97 | !60 U+0060 grave
98 | !61 U+0061 a
99 | !62 U+0062 b
100 | !63 U+0063 c
101 | !64 U+0064 d
102 | !65 U+0065 e
103 | !66 U+0066 f
104 | !67 U+0067 g
105 | !68 U+0068 h
106 | !69 U+0069 i
107 | !6A U+006A j
108 | !6B U+006B k
109 | !6C U+006C l
110 | !6D U+006D m
111 | !6E U+006E n
112 | !6F U+006F o
113 | !70 U+0070 p
114 | !71 U+0071 q
115 | !72 U+0072 r
116 | !73 U+0073 s
117 | !74 U+0074 t
118 | !75 U+0075 u
119 | !76 U+0076 v
120 | !77 U+0077 w
121 | !78 U+0078 x
122 | !79 U+0079 y
123 | !7A U+007A z
124 | !7B U+007B braceleft
125 | !7C U+007C bar
126 | !7D U+007D braceright
127 | !7E U+007E asciitilde
128 | !7F U+007F .notdef
129 | !80 U+0080 .notdef
130 | !81 U+0081 .notdef
131 | !82 U+0082 .notdef
132 | !83 U+0083 .notdef
133 | !84 U+0084 .notdef
134 | !85 U+0085 .notdef
135 | !86 U+0086 .notdef
136 | !87 U+0087 .notdef
137 | !88 U+0088 .notdef
138 | !89 U+0089 .notdef
139 | !8A U+008A .notdef
140 | !8B U+008B .notdef
141 | !8C U+008C .notdef
142 | !8D U+008D .notdef
143 | !8E U+008E .notdef
144 | !8F U+008F .notdef
145 | !90 U+0090 .notdef
146 | !91 U+0091 .notdef
147 | !92 U+0092 .notdef
148 | !93 U+0093 .notdef
149 | !94 U+0094 .notdef
150 | !95 U+0095 .notdef
151 | !96 U+0096 .notdef
152 | !97 U+0097 .notdef
153 | !98 U+0098 .notdef
154 | !99 U+0099 .notdef
155 | !9A U+009A .notdef
156 | !9B U+009B .notdef
157 | !9C U+009C .notdef
158 | !9D U+009D .notdef
159 | !9E U+009E .notdef
160 | !9F U+009F .notdef
161 | !A0 U+00A0 space
162 | !A1 U+00A1 exclamdown
163 | !A2 U+00A2 cent
164 | !A3 U+00A3 sterling
165 | !A4 U+00A4 currency
166 | !A5 U+00A5 yen
167 | !A6 U+00A6 brokenbar
168 | !A7 U+00A7 section
169 | !A8 U+00A8 dieresis
170 | !A9 U+00A9 copyright
171 | !AA U+00AA ordfeminine
172 | !AB U+00AB guillemotleft
173 | !AC U+00AC logicalnot
174 | !AD U+00AD hyphen
175 | !AE U+00AE registered
176 | !AF U+00AF macron
177 | !B0 U+00B0 degree
178 | !B1 U+00B1 plusminus
179 | !B2 U+00B2 twosuperior
180 | !B3 U+00B3 threesuperior
181 | !B4 U+00B4 acute
182 | !B5 U+00B5 mu
183 | !B6 U+00B6 paragraph
184 | !B7 U+00B7 periodcentered
185 | !B8 U+00B8 cedilla
186 | !B9 U+00B9 onesuperior
187 | !BA U+00BA ordmasculine
188 | !BB U+00BB guillemotright
189 | !BC U+00BC onequarter
190 | !BD U+00BD onehalf
191 | !BE U+00BE threequarters
192 | !BF U+00BF questiondown
193 | !C0 U+00C0 Agrave
194 | !C1 U+00C1 Aacute
195 | !C2 U+00C2 Acircumflex
196 | !C3 U+00C3 Atilde
197 | !C4 U+00C4 Adieresis
198 | !C5 U+00C5 Aring
199 | !C6 U+00C6 AE
200 | !C7 U+00C7 Ccedilla
201 | !C8 U+00C8 Egrave
202 | !C9 U+00C9 Eacute
203 | !CA U+00CA Ecircumflex
204 | !CB U+00CB Edieresis
205 | !CC U+00CC Igrave
206 | !CD U+00CD Iacute
207 | !CE U+00CE Icircumflex
208 | !CF U+00CF Idieresis
209 | !D0 U+011E Gbreve
210 | !D1 U+00D1 Ntilde
211 | !D2 U+00D2 Ograve
212 | !D3 U+00D3 Oacute
213 | !D4 U+00D4 Ocircumflex
214 | !D5 U+00D5 Otilde
215 | !D6 U+00D6 Odieresis
216 | !D7 U+00D7 multiply
217 | !D8 U+00D8 Oslash
218 | !D9 U+00D9 Ugrave
219 | !DA U+00DA Uacute
220 | !DB U+00DB Ucircumflex
221 | !DC U+00DC Udieresis
222 | !DD U+0130 Idotaccent
223 | !DE U+015E Scedilla
224 | !DF U+00DF germandbls
225 | !E0 U+00E0 agrave
226 | !E1 U+00E1 aacute
227 | !E2 U+00E2 acircumflex
228 | !E3 U+00E3 atilde
229 | !E4 U+00E4 adieresis
230 | !E5 U+00E5 aring
231 | !E6 U+00E6 ae
232 | !E7 U+00E7 ccedilla
233 | !E8 U+00E8 egrave
234 | !E9 U+00E9 eacute
235 | !EA U+00EA ecircumflex
236 | !EB U+00EB edieresis
237 | !EC U+00EC igrave
238 | !ED U+00ED iacute
239 | !EE U+00EE icircumflex
240 | !EF U+00EF idieresis
241 | !F0 U+011F gbreve
242 | !F1 U+00F1 ntilde
243 | !F2 U+00F2 ograve
244 | !F3 U+00F3 oacute
245 | !F4 U+00F4 ocircumflex
246 | !F5 U+00F5 otilde
247 | !F6 U+00F6 odieresis
248 | !F7 U+00F7 divide
249 | !F8 U+00F8 oslash
250 | !F9 U+00F9 ugrave
251 | !FA U+00FA uacute
252 | !FB U+00FB ucircumflex
253 | !FC U+00FC udieresis
254 | !FD U+0131 dotlessi
255 | !FE U+015F scedilla
256 | !FF U+00FF ydieresis
257 |
--------------------------------------------------------------------------------
/maps/iso-8859-16.map:
--------------------------------------------------------------------------------
1 | !00 U+0000 .notdef
2 | !01 U+0001 .notdef
3 | !02 U+0002 .notdef
4 | !03 U+0003 .notdef
5 | !04 U+0004 .notdef
6 | !05 U+0005 .notdef
7 | !06 U+0006 .notdef
8 | !07 U+0007 .notdef
9 | !08 U+0008 .notdef
10 | !09 U+0009 .notdef
11 | !0A U+000A .notdef
12 | !0B U+000B .notdef
13 | !0C U+000C .notdef
14 | !0D U+000D .notdef
15 | !0E U+000E .notdef
16 | !0F U+000F .notdef
17 | !10 U+0010 .notdef
18 | !11 U+0011 .notdef
19 | !12 U+0012 .notdef
20 | !13 U+0013 .notdef
21 | !14 U+0014 .notdef
22 | !15 U+0015 .notdef
23 | !16 U+0016 .notdef
24 | !17 U+0017 .notdef
25 | !18 U+0018 .notdef
26 | !19 U+0019 .notdef
27 | !1A U+001A .notdef
28 | !1B U+001B .notdef
29 | !1C U+001C .notdef
30 | !1D U+001D .notdef
31 | !1E U+001E .notdef
32 | !1F U+001F .notdef
33 | !20 U+0020 space
34 | !21 U+0021 exclam
35 | !22 U+0022 quotedbl
36 | !23 U+0023 numbersign
37 | !24 U+0024 dollar
38 | !25 U+0025 percent
39 | !26 U+0026 ampersand
40 | !27 U+0027 quotesingle
41 | !28 U+0028 parenleft
42 | !29 U+0029 parenright
43 | !2A U+002A asterisk
44 | !2B U+002B plus
45 | !2C U+002C comma
46 | !2D U+002D hyphen
47 | !2E U+002E period
48 | !2F U+002F slash
49 | !30 U+0030 zero
50 | !31 U+0031 one
51 | !32 U+0032 two
52 | !33 U+0033 three
53 | !34 U+0034 four
54 | !35 U+0035 five
55 | !36 U+0036 six
56 | !37 U+0037 seven
57 | !38 U+0038 eight
58 | !39 U+0039 nine
59 | !3A U+003A colon
60 | !3B U+003B semicolon
61 | !3C U+003C less
62 | !3D U+003D equal
63 | !3E U+003E greater
64 | !3F U+003F question
65 | !40 U+0040 at
66 | !41 U+0041 A
67 | !42 U+0042 B
68 | !43 U+0043 C
69 | !44 U+0044 D
70 | !45 U+0045 E
71 | !46 U+0046 F
72 | !47 U+0047 G
73 | !48 U+0048 H
74 | !49 U+0049 I
75 | !4A U+004A J
76 | !4B U+004B K
77 | !4C U+004C L
78 | !4D U+004D M
79 | !4E U+004E N
80 | !4F U+004F O
81 | !50 U+0050 P
82 | !51 U+0051 Q
83 | !52 U+0052 R
84 | !53 U+0053 S
85 | !54 U+0054 T
86 | !55 U+0055 U
87 | !56 U+0056 V
88 | !57 U+0057 W
89 | !58 U+0058 X
90 | !59 U+0059 Y
91 | !5A U+005A Z
92 | !5B U+005B bracketleft
93 | !5C U+005C backslash
94 | !5D U+005D bracketright
95 | !5E U+005E asciicircum
96 | !5F U+005F underscore
97 | !60 U+0060 grave
98 | !61 U+0061 a
99 | !62 U+0062 b
100 | !63 U+0063 c
101 | !64 U+0064 d
102 | !65 U+0065 e
103 | !66 U+0066 f
104 | !67 U+0067 g
105 | !68 U+0068 h
106 | !69 U+0069 i
107 | !6A U+006A j
108 | !6B U+006B k
109 | !6C U+006C l
110 | !6D U+006D m
111 | !6E U+006E n
112 | !6F U+006F o
113 | !70 U+0070 p
114 | !71 U+0071 q
115 | !72 U+0072 r
116 | !73 U+0073 s
117 | !74 U+0074 t
118 | !75 U+0075 u
119 | !76 U+0076 v
120 | !77 U+0077 w
121 | !78 U+0078 x
122 | !79 U+0079 y
123 | !7A U+007A z
124 | !7B U+007B braceleft
125 | !7C U+007C bar
126 | !7D U+007D braceright
127 | !7E U+007E asciitilde
128 | !7F U+007F .notdef
129 | !80 U+0080 .notdef
130 | !81 U+0081 .notdef
131 | !82 U+0082 .notdef
132 | !83 U+0083 .notdef
133 | !84 U+0084 .notdef
134 | !85 U+0085 .notdef
135 | !86 U+0086 .notdef
136 | !87 U+0087 .notdef
137 | !88 U+0088 .notdef
138 | !89 U+0089 .notdef
139 | !8A U+008A .notdef
140 | !8B U+008B .notdef
141 | !8C U+008C .notdef
142 | !8D U+008D .notdef
143 | !8E U+008E .notdef
144 | !8F U+008F .notdef
145 | !90 U+0090 .notdef
146 | !91 U+0091 .notdef
147 | !92 U+0092 .notdef
148 | !93 U+0093 .notdef
149 | !94 U+0094 .notdef
150 | !95 U+0095 .notdef
151 | !96 U+0096 .notdef
152 | !97 U+0097 .notdef
153 | !98 U+0098 .notdef
154 | !99 U+0099 .notdef
155 | !9A U+009A .notdef
156 | !9B U+009B .notdef
157 | !9C U+009C .notdef
158 | !9D U+009D .notdef
159 | !9E U+009E .notdef
160 | !9F U+009F .notdef
161 | !A0 U+00A0 space
162 | !A1 U+0104 Aogonek
163 | !A2 U+0105 aogonek
164 | !A3 U+0141 Lslash
165 | !A4 U+20AC Euro
166 | !A5 U+201E quotedblbase
167 | !A6 U+0160 Scaron
168 | !A7 U+00A7 section
169 | !A8 U+0161 scaron
170 | !A9 U+00A9 copyright
171 | !AA U+0218 Scommaaccent
172 | !AB U+00AB guillemotleft
173 | !AC U+0179 Zacute
174 | !AD U+00AD hyphen
175 | !AE U+017A zacute
176 | !AF U+017B Zdotaccent
177 | !B0 U+00B0 degree
178 | !B1 U+00B1 plusminus
179 | !B2 U+010C Ccaron
180 | !B3 U+0142 lslash
181 | !B4 U+017D Zcaron
182 | !B5 U+201D quotedblright
183 | !B6 U+00B6 paragraph
184 | !B7 U+00B7 periodcentered
185 | !B8 U+017E zcaron
186 | !B9 U+010D ccaron
187 | !BA U+0219 scommaaccent
188 | !BB U+00BB guillemotright
189 | !BC U+0152 OE
190 | !BD U+0153 oe
191 | !BE U+0178 Ydieresis
192 | !BF U+017C zdotaccent
193 | !C0 U+00C0 Agrave
194 | !C1 U+00C1 Aacute
195 | !C2 U+00C2 Acircumflex
196 | !C3 U+0102 Abreve
197 | !C4 U+00C4 Adieresis
198 | !C5 U+0106 Cacute
199 | !C6 U+00C6 AE
200 | !C7 U+00C7 Ccedilla
201 | !C8 U+00C8 Egrave
202 | !C9 U+00C9 Eacute
203 | !CA U+00CA Ecircumflex
204 | !CB U+00CB Edieresis
205 | !CC U+00CC Igrave
206 | !CD U+00CD Iacute
207 | !CE U+00CE Icircumflex
208 | !CF U+00CF Idieresis
209 | !D0 U+0110 Dcroat
210 | !D1 U+0143 Nacute
211 | !D2 U+00D2 Ograve
212 | !D3 U+00D3 Oacute
213 | !D4 U+00D4 Ocircumflex
214 | !D5 U+0150 Ohungarumlaut
215 | !D6 U+00D6 Odieresis
216 | !D7 U+015A Sacute
217 | !D8 U+0170 Uhungarumlaut
218 | !D9 U+00D9 Ugrave
219 | !DA U+00DA Uacute
220 | !DB U+00DB Ucircumflex
221 | !DC U+00DC Udieresis
222 | !DD U+0118 Eogonek
223 | !DE U+021A Tcommaaccent
224 | !DF U+00DF germandbls
225 | !E0 U+00E0 agrave
226 | !E1 U+00E1 aacute
227 | !E2 U+00E2 acircumflex
228 | !E3 U+0103 abreve
229 | !E4 U+00E4 adieresis
230 | !E5 U+0107 cacute
231 | !E6 U+00E6 ae
232 | !E7 U+00E7 ccedilla
233 | !E8 U+00E8 egrave
234 | !E9 U+00E9 eacute
235 | !EA U+00EA ecircumflex
236 | !EB U+00EB edieresis
237 | !EC U+00EC igrave
238 | !ED U+00ED iacute
239 | !EE U+00EE icircumflex
240 | !EF U+00EF idieresis
241 | !F0 U+0111 dcroat
242 | !F1 U+0144 nacute
243 | !F2 U+00F2 ograve
244 | !F3 U+00F3 oacute
245 | !F4 U+00F4 ocircumflex
246 | !F5 U+0151 ohungarumlaut
247 | !F6 U+00F6 odieresis
248 | !F7 U+015B sacute
249 | !F8 U+0171 uhungarumlaut
250 | !F9 U+00F9 ugrave
251 | !FA U+00FA uacute
252 | !FB U+00FB ucircumflex
253 | !FC U+00FC udieresis
254 | !FD U+0119 eogonek
255 | !FE U+021B tcommaaccent
256 | !FF U+00FF ydieresis
257 |
--------------------------------------------------------------------------------
/maps/iso-8859-11.map:
--------------------------------------------------------------------------------
1 | !00 U+0000 .notdef
2 | !01 U+0001 .notdef
3 | !02 U+0002 .notdef
4 | !03 U+0003 .notdef
5 | !04 U+0004 .notdef
6 | !05 U+0005 .notdef
7 | !06 U+0006 .notdef
8 | !07 U+0007 .notdef
9 | !08 U+0008 .notdef
10 | !09 U+0009 .notdef
11 | !0A U+000A .notdef
12 | !0B U+000B .notdef
13 | !0C U+000C .notdef
14 | !0D U+000D .notdef
15 | !0E U+000E .notdef
16 | !0F U+000F .notdef
17 | !10 U+0010 .notdef
18 | !11 U+0011 .notdef
19 | !12 U+0012 .notdef
20 | !13 U+0013 .notdef
21 | !14 U+0014 .notdef
22 | !15 U+0015 .notdef
23 | !16 U+0016 .notdef
24 | !17 U+0017 .notdef
25 | !18 U+0018 .notdef
26 | !19 U+0019 .notdef
27 | !1A U+001A .notdef
28 | !1B U+001B .notdef
29 | !1C U+001C .notdef
30 | !1D U+001D .notdef
31 | !1E U+001E .notdef
32 | !1F U+001F .notdef
33 | !20 U+0020 space
34 | !21 U+0021 exclam
35 | !22 U+0022 quotedbl
36 | !23 U+0023 numbersign
37 | !24 U+0024 dollar
38 | !25 U+0025 percent
39 | !26 U+0026 ampersand
40 | !27 U+0027 quotesingle
41 | !28 U+0028 parenleft
42 | !29 U+0029 parenright
43 | !2A U+002A asterisk
44 | !2B U+002B plus
45 | !2C U+002C comma
46 | !2D U+002D hyphen
47 | !2E U+002E period
48 | !2F U+002F slash
49 | !30 U+0030 zero
50 | !31 U+0031 one
51 | !32 U+0032 two
52 | !33 U+0033 three
53 | !34 U+0034 four
54 | !35 U+0035 five
55 | !36 U+0036 six
56 | !37 U+0037 seven
57 | !38 U+0038 eight
58 | !39 U+0039 nine
59 | !3A U+003A colon
60 | !3B U+003B semicolon
61 | !3C U+003C less
62 | !3D U+003D equal
63 | !3E U+003E greater
64 | !3F U+003F question
65 | !40 U+0040 at
66 | !41 U+0041 A
67 | !42 U+0042 B
68 | !43 U+0043 C
69 | !44 U+0044 D
70 | !45 U+0045 E
71 | !46 U+0046 F
72 | !47 U+0047 G
73 | !48 U+0048 H
74 | !49 U+0049 I
75 | !4A U+004A J
76 | !4B U+004B K
77 | !4C U+004C L
78 | !4D U+004D M
79 | !4E U+004E N
80 | !4F U+004F O
81 | !50 U+0050 P
82 | !51 U+0051 Q
83 | !52 U+0052 R
84 | !53 U+0053 S
85 | !54 U+0054 T
86 | !55 U+0055 U
87 | !56 U+0056 V
88 | !57 U+0057 W
89 | !58 U+0058 X
90 | !59 U+0059 Y
91 | !5A U+005A Z
92 | !5B U+005B bracketleft
93 | !5C U+005C backslash
94 | !5D U+005D bracketright
95 | !5E U+005E asciicircum
96 | !5F U+005F underscore
97 | !60 U+0060 grave
98 | !61 U+0061 a
99 | !62 U+0062 b
100 | !63 U+0063 c
101 | !64 U+0064 d
102 | !65 U+0065 e
103 | !66 U+0066 f
104 | !67 U+0067 g
105 | !68 U+0068 h
106 | !69 U+0069 i
107 | !6A U+006A j
108 | !6B U+006B k
109 | !6C U+006C l
110 | !6D U+006D m
111 | !6E U+006E n
112 | !6F U+006F o
113 | !70 U+0070 p
114 | !71 U+0071 q
115 | !72 U+0072 r
116 | !73 U+0073 s
117 | !74 U+0074 t
118 | !75 U+0075 u
119 | !76 U+0076 v
120 | !77 U+0077 w
121 | !78 U+0078 x
122 | !79 U+0079 y
123 | !7A U+007A z
124 | !7B U+007B braceleft
125 | !7C U+007C bar
126 | !7D U+007D braceright
127 | !7E U+007E asciitilde
128 | !7F U+007F .notdef
129 | !80 U+0080 .notdef
130 | !81 U+0081 .notdef
131 | !82 U+0082 .notdef
132 | !83 U+0083 .notdef
133 | !84 U+0084 .notdef
134 | !85 U+0085 .notdef
135 | !86 U+0086 .notdef
136 | !87 U+0087 .notdef
137 | !88 U+0088 .notdef
138 | !89 U+0089 .notdef
139 | !8A U+008A .notdef
140 | !8B U+008B .notdef
141 | !8C U+008C .notdef
142 | !8D U+008D .notdef
143 | !8E U+008E .notdef
144 | !8F U+008F .notdef
145 | !90 U+0090 .notdef
146 | !91 U+0091 .notdef
147 | !92 U+0092 .notdef
148 | !93 U+0093 .notdef
149 | !94 U+0094 .notdef
150 | !95 U+0095 .notdef
151 | !96 U+0096 .notdef
152 | !97 U+0097 .notdef
153 | !98 U+0098 .notdef
154 | !99 U+0099 .notdef
155 | !9A U+009A .notdef
156 | !9B U+009B .notdef
157 | !9C U+009C .notdef
158 | !9D U+009D .notdef
159 | !9E U+009E .notdef
160 | !9F U+009F .notdef
161 | !A0 U+00A0 space
162 | !A1 U+0E01 kokaithai
163 | !A2 U+0E02 khokhaithai
164 | !A3 U+0E03 khokhuatthai
165 | !A4 U+0E04 khokhwaithai
166 | !A5 U+0E05 khokhonthai
167 | !A6 U+0E06 khorakhangthai
168 | !A7 U+0E07 ngonguthai
169 | !A8 U+0E08 chochanthai
170 | !A9 U+0E09 chochingthai
171 | !AA U+0E0A chochangthai
172 | !AB U+0E0B sosothai
173 | !AC U+0E0C chochoethai
174 | !AD U+0E0D yoyingthai
175 | !AE U+0E0E dochadathai
176 | !AF U+0E0F topatakthai
177 | !B0 U+0E10 thothanthai
178 | !B1 U+0E11 thonangmonthothai
179 | !B2 U+0E12 thophuthaothai
180 | !B3 U+0E13 nonenthai
181 | !B4 U+0E14 dodekthai
182 | !B5 U+0E15 totaothai
183 | !B6 U+0E16 thothungthai
184 | !B7 U+0E17 thothahanthai
185 | !B8 U+0E18 thothongthai
186 | !B9 U+0E19 nonuthai
187 | !BA U+0E1A bobaimaithai
188 | !BB U+0E1B poplathai
189 | !BC U+0E1C phophungthai
190 | !BD U+0E1D fofathai
191 | !BE U+0E1E phophanthai
192 | !BF U+0E1F fofanthai
193 | !C0 U+0E20 phosamphaothai
194 | !C1 U+0E21 momathai
195 | !C2 U+0E22 yoyakthai
196 | !C3 U+0E23 roruathai
197 | !C4 U+0E24 ruthai
198 | !C5 U+0E25 lolingthai
199 | !C6 U+0E26 luthai
200 | !C7 U+0E27 wowaenthai
201 | !C8 U+0E28 sosalathai
202 | !C9 U+0E29 sorusithai
203 | !CA U+0E2A sosuathai
204 | !CB U+0E2B hohipthai
205 | !CC U+0E2C lochulathai
206 | !CD U+0E2D oangthai
207 | !CE U+0E2E honokhukthai
208 | !CF U+0E2F paiyannoithai
209 | !D0 U+0E30 saraathai
210 | !D1 U+0E31 maihanakatthai
211 | !D2 U+0E32 saraaathai
212 | !D3 U+0E33 saraamthai
213 | !D4 U+0E34 saraithai
214 | !D5 U+0E35 saraiithai
215 | !D6 U+0E36 sarauethai
216 | !D7 U+0E37 saraueethai
217 | !D8 U+0E38 sarauthai
218 | !D9 U+0E39 sarauuthai
219 | !DA U+0E3A phinthuthai
220 | !DF U+0E3F bahtthai
221 | !E0 U+0E40 saraethai
222 | !E1 U+0E41 saraaethai
223 | !E2 U+0E42 saraothai
224 | !E3 U+0E43 saraaimaimuanthai
225 | !E4 U+0E44 saraaimaimalaithai
226 | !E5 U+0E45 lakkhangyaothai
227 | !E6 U+0E46 maiyamokthai
228 | !E7 U+0E47 maitaikhuthai
229 | !E8 U+0E48 maiekthai
230 | !E9 U+0E49 maithothai
231 | !EA U+0E4A maitrithai
232 | !EB U+0E4B maichattawathai
233 | !EC U+0E4C thanthakhatthai
234 | !ED U+0E4D nikhahitthai
235 | !EE U+0E4E yamakkanthai
236 | !EF U+0E4F fongmanthai
237 | !F0 U+0E50 zerothai
238 | !F1 U+0E51 onethai
239 | !F2 U+0E52 twothai
240 | !F3 U+0E53 threethai
241 | !F4 U+0E54 fourthai
242 | !F5 U+0E55 fivethai
243 | !F6 U+0E56 sixthai
244 | !F7 U+0E57 seventhai
245 | !F8 U+0E58 eightthai
246 | !F9 U+0E59 ninethai
247 | !FA U+0E5A angkhankhuthai
248 | !FB U+0E5B khomutthai
249 |
--------------------------------------------------------------------------------
/maps/iso-8859-5.map:
--------------------------------------------------------------------------------
1 | !00 U+0000 .notdef
2 | !01 U+0001 .notdef
3 | !02 U+0002 .notdef
4 | !03 U+0003 .notdef
5 | !04 U+0004 .notdef
6 | !05 U+0005 .notdef
7 | !06 U+0006 .notdef
8 | !07 U+0007 .notdef
9 | !08 U+0008 .notdef
10 | !09 U+0009 .notdef
11 | !0A U+000A .notdef
12 | !0B U+000B .notdef
13 | !0C U+000C .notdef
14 | !0D U+000D .notdef
15 | !0E U+000E .notdef
16 | !0F U+000F .notdef
17 | !10 U+0010 .notdef
18 | !11 U+0011 .notdef
19 | !12 U+0012 .notdef
20 | !13 U+0013 .notdef
21 | !14 U+0014 .notdef
22 | !15 U+0015 .notdef
23 | !16 U+0016 .notdef
24 | !17 U+0017 .notdef
25 | !18 U+0018 .notdef
26 | !19 U+0019 .notdef
27 | !1A U+001A .notdef
28 | !1B U+001B .notdef
29 | !1C U+001C .notdef
30 | !1D U+001D .notdef
31 | !1E U+001E .notdef
32 | !1F U+001F .notdef
33 | !20 U+0020 space
34 | !21 U+0021 exclam
35 | !22 U+0022 quotedbl
36 | !23 U+0023 numbersign
37 | !24 U+0024 dollar
38 | !25 U+0025 percent
39 | !26 U+0026 ampersand
40 | !27 U+0027 quotesingle
41 | !28 U+0028 parenleft
42 | !29 U+0029 parenright
43 | !2A U+002A asterisk
44 | !2B U+002B plus
45 | !2C U+002C comma
46 | !2D U+002D hyphen
47 | !2E U+002E period
48 | !2F U+002F slash
49 | !30 U+0030 zero
50 | !31 U+0031 one
51 | !32 U+0032 two
52 | !33 U+0033 three
53 | !34 U+0034 four
54 | !35 U+0035 five
55 | !36 U+0036 six
56 | !37 U+0037 seven
57 | !38 U+0038 eight
58 | !39 U+0039 nine
59 | !3A U+003A colon
60 | !3B U+003B semicolon
61 | !3C U+003C less
62 | !3D U+003D equal
63 | !3E U+003E greater
64 | !3F U+003F question
65 | !40 U+0040 at
66 | !41 U+0041 A
67 | !42 U+0042 B
68 | !43 U+0043 C
69 | !44 U+0044 D
70 | !45 U+0045 E
71 | !46 U+0046 F
72 | !47 U+0047 G
73 | !48 U+0048 H
74 | !49 U+0049 I
75 | !4A U+004A J
76 | !4B U+004B K
77 | !4C U+004C L
78 | !4D U+004D M
79 | !4E U+004E N
80 | !4F U+004F O
81 | !50 U+0050 P
82 | !51 U+0051 Q
83 | !52 U+0052 R
84 | !53 U+0053 S
85 | !54 U+0054 T
86 | !55 U+0055 U
87 | !56 U+0056 V
88 | !57 U+0057 W
89 | !58 U+0058 X
90 | !59 U+0059 Y
91 | !5A U+005A Z
92 | !5B U+005B bracketleft
93 | !5C U+005C backslash
94 | !5D U+005D bracketright
95 | !5E U+005E asciicircum
96 | !5F U+005F underscore
97 | !60 U+0060 grave
98 | !61 U+0061 a
99 | !62 U+0062 b
100 | !63 U+0063 c
101 | !64 U+0064 d
102 | !65 U+0065 e
103 | !66 U+0066 f
104 | !67 U+0067 g
105 | !68 U+0068 h
106 | !69 U+0069 i
107 | !6A U+006A j
108 | !6B U+006B k
109 | !6C U+006C l
110 | !6D U+006D m
111 | !6E U+006E n
112 | !6F U+006F o
113 | !70 U+0070 p
114 | !71 U+0071 q
115 | !72 U+0072 r
116 | !73 U+0073 s
117 | !74 U+0074 t
118 | !75 U+0075 u
119 | !76 U+0076 v
120 | !77 U+0077 w
121 | !78 U+0078 x
122 | !79 U+0079 y
123 | !7A U+007A z
124 | !7B U+007B braceleft
125 | !7C U+007C bar
126 | !7D U+007D braceright
127 | !7E U+007E asciitilde
128 | !7F U+007F .notdef
129 | !80 U+0080 .notdef
130 | !81 U+0081 .notdef
131 | !82 U+0082 .notdef
132 | !83 U+0083 .notdef
133 | !84 U+0084 .notdef
134 | !85 U+0085 .notdef
135 | !86 U+0086 .notdef
136 | !87 U+0087 .notdef
137 | !88 U+0088 .notdef
138 | !89 U+0089 .notdef
139 | !8A U+008A .notdef
140 | !8B U+008B .notdef
141 | !8C U+008C .notdef
142 | !8D U+008D .notdef
143 | !8E U+008E .notdef
144 | !8F U+008F .notdef
145 | !90 U+0090 .notdef
146 | !91 U+0091 .notdef
147 | !92 U+0092 .notdef
148 | !93 U+0093 .notdef
149 | !94 U+0094 .notdef
150 | !95 U+0095 .notdef
151 | !96 U+0096 .notdef
152 | !97 U+0097 .notdef
153 | !98 U+0098 .notdef
154 | !99 U+0099 .notdef
155 | !9A U+009A .notdef
156 | !9B U+009B .notdef
157 | !9C U+009C .notdef
158 | !9D U+009D .notdef
159 | !9E U+009E .notdef
160 | !9F U+009F .notdef
161 | !A0 U+00A0 space
162 | !A1 U+0401 afii10023
163 | !A2 U+0402 afii10051
164 | !A3 U+0403 afii10052
165 | !A4 U+0404 afii10053
166 | !A5 U+0405 afii10054
167 | !A6 U+0406 afii10055
168 | !A7 U+0407 afii10056
169 | !A8 U+0408 afii10057
170 | !A9 U+0409 afii10058
171 | !AA U+040A afii10059
172 | !AB U+040B afii10060
173 | !AC U+040C afii10061
174 | !AD U+00AD hyphen
175 | !AE U+040E afii10062
176 | !AF U+040F afii10145
177 | !B0 U+0410 afii10017
178 | !B1 U+0411 afii10018
179 | !B2 U+0412 afii10019
180 | !B3 U+0413 afii10020
181 | !B4 U+0414 afii10021
182 | !B5 U+0415 afii10022
183 | !B6 U+0416 afii10024
184 | !B7 U+0417 afii10025
185 | !B8 U+0418 afii10026
186 | !B9 U+0419 afii10027
187 | !BA U+041A afii10028
188 | !BB U+041B afii10029
189 | !BC U+041C afii10030
190 | !BD U+041D afii10031
191 | !BE U+041E afii10032
192 | !BF U+041F afii10033
193 | !C0 U+0420 afii10034
194 | !C1 U+0421 afii10035
195 | !C2 U+0422 afii10036
196 | !C3 U+0423 afii10037
197 | !C4 U+0424 afii10038
198 | !C5 U+0425 afii10039
199 | !C6 U+0426 afii10040
200 | !C7 U+0427 afii10041
201 | !C8 U+0428 afii10042
202 | !C9 U+0429 afii10043
203 | !CA U+042A afii10044
204 | !CB U+042B afii10045
205 | !CC U+042C afii10046
206 | !CD U+042D afii10047
207 | !CE U+042E afii10048
208 | !CF U+042F afii10049
209 | !D0 U+0430 afii10065
210 | !D1 U+0431 afii10066
211 | !D2 U+0432 afii10067
212 | !D3 U+0433 afii10068
213 | !D4 U+0434 afii10069
214 | !D5 U+0435 afii10070
215 | !D6 U+0436 afii10072
216 | !D7 U+0437 afii10073
217 | !D8 U+0438 afii10074
218 | !D9 U+0439 afii10075
219 | !DA U+043A afii10076
220 | !DB U+043B afii10077
221 | !DC U+043C afii10078
222 | !DD U+043D afii10079
223 | !DE U+043E afii10080
224 | !DF U+043F afii10081
225 | !E0 U+0440 afii10082
226 | !E1 U+0441 afii10083
227 | !E2 U+0442 afii10084
228 | !E3 U+0443 afii10085
229 | !E4 U+0444 afii10086
230 | !E5 U+0445 afii10087
231 | !E6 U+0446 afii10088
232 | !E7 U+0447 afii10089
233 | !E8 U+0448 afii10090
234 | !E9 U+0449 afii10091
235 | !EA U+044A afii10092
236 | !EB U+044B afii10093
237 | !EC U+044C afii10094
238 | !ED U+044D afii10095
239 | !EE U+044E afii10096
240 | !EF U+044F afii10097
241 | !F0 U+2116 afii61352
242 | !F1 U+0451 afii10071
243 | !F2 U+0452 afii10099
244 | !F3 U+0453 afii10100
245 | !F4 U+0454 afii10101
246 | !F5 U+0455 afii10102
247 | !F6 U+0456 afii10103
248 | !F7 U+0457 afii10104
249 | !F8 U+0458 afii10105
250 | !F9 U+0459 afii10106
251 | !FA U+045A afii10107
252 | !FB U+045B afii10108
253 | !FC U+045C afii10109
254 | !FD U+00A7 section
255 | !FE U+045E afii10110
256 | !FF U+045F afii10193
257 |
--------------------------------------------------------------------------------
/maps/koi8-r.map:
--------------------------------------------------------------------------------
1 | !00 U+0000 .notdef
2 | !01 U+0001 .notdef
3 | !02 U+0002 .notdef
4 | !03 U+0003 .notdef
5 | !04 U+0004 .notdef
6 | !05 U+0005 .notdef
7 | !06 U+0006 .notdef
8 | !07 U+0007 .notdef
9 | !08 U+0008 .notdef
10 | !09 U+0009 .notdef
11 | !0A U+000A .notdef
12 | !0B U+000B .notdef
13 | !0C U+000C .notdef
14 | !0D U+000D .notdef
15 | !0E U+000E .notdef
16 | !0F U+000F .notdef
17 | !10 U+0010 .notdef
18 | !11 U+0011 .notdef
19 | !12 U+0012 .notdef
20 | !13 U+0013 .notdef
21 | !14 U+0014 .notdef
22 | !15 U+0015 .notdef
23 | !16 U+0016 .notdef
24 | !17 U+0017 .notdef
25 | !18 U+0018 .notdef
26 | !19 U+0019 .notdef
27 | !1A U+001A .notdef
28 | !1B U+001B .notdef
29 | !1C U+001C .notdef
30 | !1D U+001D .notdef
31 | !1E U+001E .notdef
32 | !1F U+001F .notdef
33 | !20 U+0020 space
34 | !21 U+0021 exclam
35 | !22 U+0022 quotedbl
36 | !23 U+0023 numbersign
37 | !24 U+0024 dollar
38 | !25 U+0025 percent
39 | !26 U+0026 ampersand
40 | !27 U+0027 quotesingle
41 | !28 U+0028 parenleft
42 | !29 U+0029 parenright
43 | !2A U+002A asterisk
44 | !2B U+002B plus
45 | !2C U+002C comma
46 | !2D U+002D hyphen
47 | !2E U+002E period
48 | !2F U+002F slash
49 | !30 U+0030 zero
50 | !31 U+0031 one
51 | !32 U+0032 two
52 | !33 U+0033 three
53 | !34 U+0034 four
54 | !35 U+0035 five
55 | !36 U+0036 six
56 | !37 U+0037 seven
57 | !38 U+0038 eight
58 | !39 U+0039 nine
59 | !3A U+003A colon
60 | !3B U+003B semicolon
61 | !3C U+003C less
62 | !3D U+003D equal
63 | !3E U+003E greater
64 | !3F U+003F question
65 | !40 U+0040 at
66 | !41 U+0041 A
67 | !42 U+0042 B
68 | !43 U+0043 C
69 | !44 U+0044 D
70 | !45 U+0045 E
71 | !46 U+0046 F
72 | !47 U+0047 G
73 | !48 U+0048 H
74 | !49 U+0049 I
75 | !4A U+004A J
76 | !4B U+004B K
77 | !4C U+004C L
78 | !4D U+004D M
79 | !4E U+004E N
80 | !4F U+004F O
81 | !50 U+0050 P
82 | !51 U+0051 Q
83 | !52 U+0052 R
84 | !53 U+0053 S
85 | !54 U+0054 T
86 | !55 U+0055 U
87 | !56 U+0056 V
88 | !57 U+0057 W
89 | !58 U+0058 X
90 | !59 U+0059 Y
91 | !5A U+005A Z
92 | !5B U+005B bracketleft
93 | !5C U+005C backslash
94 | !5D U+005D bracketright
95 | !5E U+005E asciicircum
96 | !5F U+005F underscore
97 | !60 U+0060 grave
98 | !61 U+0061 a
99 | !62 U+0062 b
100 | !63 U+0063 c
101 | !64 U+0064 d
102 | !65 U+0065 e
103 | !66 U+0066 f
104 | !67 U+0067 g
105 | !68 U+0068 h
106 | !69 U+0069 i
107 | !6A U+006A j
108 | !6B U+006B k
109 | !6C U+006C l
110 | !6D U+006D m
111 | !6E U+006E n
112 | !6F U+006F o
113 | !70 U+0070 p
114 | !71 U+0071 q
115 | !72 U+0072 r
116 | !73 U+0073 s
117 | !74 U+0074 t
118 | !75 U+0075 u
119 | !76 U+0076 v
120 | !77 U+0077 w
121 | !78 U+0078 x
122 | !79 U+0079 y
123 | !7A U+007A z
124 | !7B U+007B braceleft
125 | !7C U+007C bar
126 | !7D U+007D braceright
127 | !7E U+007E asciitilde
128 | !7F U+007F .notdef
129 | !80 U+2500 SF100000
130 | !81 U+2502 SF110000
131 | !82 U+250C SF010000
132 | !83 U+2510 SF030000
133 | !84 U+2514 SF020000
134 | !85 U+2518 SF040000
135 | !86 U+251C SF080000
136 | !87 U+2524 SF090000
137 | !88 U+252C SF060000
138 | !89 U+2534 SF070000
139 | !8A U+253C SF050000
140 | !8B U+2580 upblock
141 | !8C U+2584 dnblock
142 | !8D U+2588 block
143 | !8E U+258C lfblock
144 | !8F U+2590 rtblock
145 | !90 U+2591 ltshade
146 | !91 U+2592 shade
147 | !92 U+2593 dkshade
148 | !93 U+2320 integraltp
149 | !94 U+25A0 filledbox
150 | !95 U+2219 periodcentered
151 | !96 U+221A radical
152 | !97 U+2248 approxequal
153 | !98 U+2264 lessequal
154 | !99 U+2265 greaterequal
155 | !9A U+00A0 space
156 | !9B U+2321 integralbt
157 | !9C U+00B0 degree
158 | !9D U+00B2 twosuperior
159 | !9E U+00B7 periodcentered
160 | !9F U+00F7 divide
161 | !A0 U+2550 SF430000
162 | !A1 U+2551 SF240000
163 | !A2 U+2552 SF510000
164 | !A3 U+0451 afii10071
165 | !A4 U+2553 SF520000
166 | !A5 U+2554 SF390000
167 | !A6 U+2555 SF220000
168 | !A7 U+2556 SF210000
169 | !A8 U+2557 SF250000
170 | !A9 U+2558 SF500000
171 | !AA U+2559 SF490000
172 | !AB U+255A SF380000
173 | !AC U+255B SF280000
174 | !AD U+255C SF270000
175 | !AE U+255D SF260000
176 | !AF U+255E SF360000
177 | !B0 U+255F SF370000
178 | !B1 U+2560 SF420000
179 | !B2 U+2561 SF190000
180 | !B3 U+0401 afii10023
181 | !B4 U+2562 SF200000
182 | !B5 U+2563 SF230000
183 | !B6 U+2564 SF470000
184 | !B7 U+2565 SF480000
185 | !B8 U+2566 SF410000
186 | !B9 U+2567 SF450000
187 | !BA U+2568 SF460000
188 | !BB U+2569 SF400000
189 | !BC U+256A SF540000
190 | !BD U+256B SF530000
191 | !BE U+256C SF440000
192 | !BF U+00A9 copyright
193 | !C0 U+044E afii10096
194 | !C1 U+0430 afii10065
195 | !C2 U+0431 afii10066
196 | !C3 U+0446 afii10088
197 | !C4 U+0434 afii10069
198 | !C5 U+0435 afii10070
199 | !C6 U+0444 afii10086
200 | !C7 U+0433 afii10068
201 | !C8 U+0445 afii10087
202 | !C9 U+0438 afii10074
203 | !CA U+0439 afii10075
204 | !CB U+043A afii10076
205 | !CC U+043B afii10077
206 | !CD U+043C afii10078
207 | !CE U+043D afii10079
208 | !CF U+043E afii10080
209 | !D0 U+043F afii10081
210 | !D1 U+044F afii10097
211 | !D2 U+0440 afii10082
212 | !D3 U+0441 afii10083
213 | !D4 U+0442 afii10084
214 | !D5 U+0443 afii10085
215 | !D6 U+0436 afii10072
216 | !D7 U+0432 afii10067
217 | !D8 U+044C afii10094
218 | !D9 U+044B afii10093
219 | !DA U+0437 afii10073
220 | !DB U+0448 afii10090
221 | !DC U+044D afii10095
222 | !DD U+0449 afii10091
223 | !DE U+0447 afii10089
224 | !DF U+044A afii10092
225 | !E0 U+042E afii10048
226 | !E1 U+0410 afii10017
227 | !E2 U+0411 afii10018
228 | !E3 U+0426 afii10040
229 | !E4 U+0414 afii10021
230 | !E5 U+0415 afii10022
231 | !E6 U+0424 afii10038
232 | !E7 U+0413 afii10020
233 | !E8 U+0425 afii10039
234 | !E9 U+0418 afii10026
235 | !EA U+0419 afii10027
236 | !EB U+041A afii10028
237 | !EC U+041B afii10029
238 | !ED U+041C afii10030
239 | !EE U+041D afii10031
240 | !EF U+041E afii10032
241 | !F0 U+041F afii10033
242 | !F1 U+042F afii10049
243 | !F2 U+0420 afii10034
244 | !F3 U+0421 afii10035
245 | !F4 U+0422 afii10036
246 | !F5 U+0423 afii10037
247 | !F6 U+0416 afii10024
248 | !F7 U+0412 afii10019
249 | !F8 U+042C afii10046
250 | !F9 U+042B afii10045
251 | !FA U+0417 afii10025
252 | !FB U+0428 afii10042
253 | !FC U+042D afii10047
254 | !FD U+0429 afii10043
255 | !FE U+0427 afii10041
256 | !FF U+042A afii10044
257 |
--------------------------------------------------------------------------------
/maps/koi8-u.map:
--------------------------------------------------------------------------------
1 | !00 U+0000 .notdef
2 | !01 U+0001 .notdef
3 | !02 U+0002 .notdef
4 | !03 U+0003 .notdef
5 | !04 U+0004 .notdef
6 | !05 U+0005 .notdef
7 | !06 U+0006 .notdef
8 | !07 U+0007 .notdef
9 | !08 U+0008 .notdef
10 | !09 U+0009 .notdef
11 | !0A U+000A .notdef
12 | !0B U+000B .notdef
13 | !0C U+000C .notdef
14 | !0D U+000D .notdef
15 | !0E U+000E .notdef
16 | !0F U+000F .notdef
17 | !10 U+0010 .notdef
18 | !11 U+0011 .notdef
19 | !12 U+0012 .notdef
20 | !13 U+0013 .notdef
21 | !14 U+0014 .notdef
22 | !15 U+0015 .notdef
23 | !16 U+0016 .notdef
24 | !17 U+0017 .notdef
25 | !18 U+0018 .notdef
26 | !19 U+0019 .notdef
27 | !1A U+001A .notdef
28 | !1B U+001B .notdef
29 | !1C U+001C .notdef
30 | !1D U+001D .notdef
31 | !1E U+001E .notdef
32 | !1F U+001F .notdef
33 | !20 U+0020 space
34 | !21 U+0021 exclam
35 | !22 U+0022 quotedbl
36 | !23 U+0023 numbersign
37 | !24 U+0024 dollar
38 | !25 U+0025 percent
39 | !26 U+0026 ampersand
40 | !27 U+0027 quotesingle
41 | !28 U+0028 parenleft
42 | !29 U+0029 parenright
43 | !2A U+002A asterisk
44 | !2B U+002B plus
45 | !2C U+002C comma
46 | !2D U+002D hyphen
47 | !2E U+002E period
48 | !2F U+002F slash
49 | !30 U+0030 zero
50 | !31 U+0031 one
51 | !32 U+0032 two
52 | !33 U+0033 three
53 | !34 U+0034 four
54 | !35 U+0035 five
55 | !36 U+0036 six
56 | !37 U+0037 seven
57 | !38 U+0038 eight
58 | !39 U+0039 nine
59 | !3A U+003A colon
60 | !3B U+003B semicolon
61 | !3C U+003C less
62 | !3D U+003D equal
63 | !3E U+003E greater
64 | !3F U+003F question
65 | !40 U+0040 at
66 | !41 U+0041 A
67 | !42 U+0042 B
68 | !43 U+0043 C
69 | !44 U+0044 D
70 | !45 U+0045 E
71 | !46 U+0046 F
72 | !47 U+0047 G
73 | !48 U+0048 H
74 | !49 U+0049 I
75 | !4A U+004A J
76 | !4B U+004B K
77 | !4C U+004C L
78 | !4D U+004D M
79 | !4E U+004E N
80 | !4F U+004F O
81 | !50 U+0050 P
82 | !51 U+0051 Q
83 | !52 U+0052 R
84 | !53 U+0053 S
85 | !54 U+0054 T
86 | !55 U+0055 U
87 | !56 U+0056 V
88 | !57 U+0057 W
89 | !58 U+0058 X
90 | !59 U+0059 Y
91 | !5A U+005A Z
92 | !5B U+005B bracketleft
93 | !5C U+005C backslash
94 | !5D U+005D bracketright
95 | !5E U+005E asciicircum
96 | !5F U+005F underscore
97 | !60 U+0060 grave
98 | !61 U+0061 a
99 | !62 U+0062 b
100 | !63 U+0063 c
101 | !64 U+0064 d
102 | !65 U+0065 e
103 | !66 U+0066 f
104 | !67 U+0067 g
105 | !68 U+0068 h
106 | !69 U+0069 i
107 | !6A U+006A j
108 | !6B U+006B k
109 | !6C U+006C l
110 | !6D U+006D m
111 | !6E U+006E n
112 | !6F U+006F o
113 | !70 U+0070 p
114 | !71 U+0071 q
115 | !72 U+0072 r
116 | !73 U+0073 s
117 | !74 U+0074 t
118 | !75 U+0075 u
119 | !76 U+0076 v
120 | !77 U+0077 w
121 | !78 U+0078 x
122 | !79 U+0079 y
123 | !7A U+007A z
124 | !7B U+007B braceleft
125 | !7C U+007C bar
126 | !7D U+007D braceright
127 | !7E U+007E asciitilde
128 | !7F U+007F .notdef
129 | !80 U+2500 SF100000
130 | !81 U+2502 SF110000
131 | !82 U+250C SF010000
132 | !83 U+2510 SF030000
133 | !84 U+2514 SF020000
134 | !85 U+2518 SF040000
135 | !86 U+251C SF080000
136 | !87 U+2524 SF090000
137 | !88 U+252C SF060000
138 | !89 U+2534 SF070000
139 | !8A U+253C SF050000
140 | !8B U+2580 upblock
141 | !8C U+2584 dnblock
142 | !8D U+2588 block
143 | !8E U+258C lfblock
144 | !8F U+2590 rtblock
145 | !90 U+2591 ltshade
146 | !91 U+2592 shade
147 | !92 U+2593 dkshade
148 | !93 U+2320 integraltp
149 | !94 U+25A0 filledbox
150 | !95 U+2022 bullet
151 | !96 U+221A radical
152 | !97 U+2248 approxequal
153 | !98 U+2264 lessequal
154 | !99 U+2265 greaterequal
155 | !9A U+00A0 space
156 | !9B U+2321 integralbt
157 | !9C U+00B0 degree
158 | !9D U+00B2 twosuperior
159 | !9E U+00B7 periodcentered
160 | !9F U+00F7 divide
161 | !A0 U+2550 SF430000
162 | !A1 U+2551 SF240000
163 | !A2 U+2552 SF510000
164 | !A3 U+0451 afii10071
165 | !A4 U+0454 afii10101
166 | !A5 U+2554 SF390000
167 | !A6 U+0456 afii10103
168 | !A7 U+0457 afii10104
169 | !A8 U+2557 SF250000
170 | !A9 U+2558 SF500000
171 | !AA U+2559 SF490000
172 | !AB U+255A SF380000
173 | !AC U+255B SF280000
174 | !AD U+0491 afii10098
175 | !AE U+255D SF260000
176 | !AF U+255E SF360000
177 | !B0 U+255F SF370000
178 | !B1 U+2560 SF420000
179 | !B2 U+2561 SF190000
180 | !B3 U+0401 afii10023
181 | !B4 U+0404 afii10053
182 | !B5 U+2563 SF230000
183 | !B6 U+0406 afii10055
184 | !B7 U+0407 afii10056
185 | !B8 U+2566 SF410000
186 | !B9 U+2567 SF450000
187 | !BA U+2568 SF460000
188 | !BB U+2569 SF400000
189 | !BC U+256A SF540000
190 | !BD U+0490 afii10050
191 | !BE U+256C SF440000
192 | !BF U+00A9 copyright
193 | !C0 U+044E afii10096
194 | !C1 U+0430 afii10065
195 | !C2 U+0431 afii10066
196 | !C3 U+0446 afii10088
197 | !C4 U+0434 afii10069
198 | !C5 U+0435 afii10070
199 | !C6 U+0444 afii10086
200 | !C7 U+0433 afii10068
201 | !C8 U+0445 afii10087
202 | !C9 U+0438 afii10074
203 | !CA U+0439 afii10075
204 | !CB U+043A afii10076
205 | !CC U+043B afii10077
206 | !CD U+043C afii10078
207 | !CE U+043D afii10079
208 | !CF U+043E afii10080
209 | !D0 U+043F afii10081
210 | !D1 U+044F afii10097
211 | !D2 U+0440 afii10082
212 | !D3 U+0441 afii10083
213 | !D4 U+0442 afii10084
214 | !D5 U+0443 afii10085
215 | !D6 U+0436 afii10072
216 | !D7 U+0432 afii10067
217 | !D8 U+044C afii10094
218 | !D9 U+044B afii10093
219 | !DA U+0437 afii10073
220 | !DB U+0448 afii10090
221 | !DC U+044D afii10095
222 | !DD U+0449 afii10091
223 | !DE U+0447 afii10089
224 | !DF U+044A afii10092
225 | !E0 U+042E afii10048
226 | !E1 U+0410 afii10017
227 | !E2 U+0411 afii10018
228 | !E3 U+0426 afii10040
229 | !E4 U+0414 afii10021
230 | !E5 U+0415 afii10022
231 | !E6 U+0424 afii10038
232 | !E7 U+0413 afii10020
233 | !E8 U+0425 afii10039
234 | !E9 U+0418 afii10026
235 | !EA U+0419 afii10027
236 | !EB U+041A afii10028
237 | !EC U+041B afii10029
238 | !ED U+041C afii10030
239 | !EE U+041D afii10031
240 | !EF U+041E afii10032
241 | !F0 U+041F afii10033
242 | !F1 U+042F afii10049
243 | !F2 U+0420 afii10034
244 | !F3 U+0421 afii10035
245 | !F4 U+0422 afii10036
246 | !F5 U+0423 afii10037
247 | !F6 U+0416 afii10024
248 | !F7 U+0412 afii10019
249 | !F8 U+042C afii10046
250 | !F9 U+042B afii10045
251 | !FA U+0417 afii10025
252 | !FB U+0428 afii10042
253 | !FC U+042D afii10047
254 | !FD U+0429 afii10043
255 | !FE U+0427 afii10041
256 | !FF U+042A afii10044
257 |
--------------------------------------------------------------------------------
/maps/cp1251.map:
--------------------------------------------------------------------------------
1 | !00 U+0000 .notdef
2 | !01 U+0001 .notdef
3 | !02 U+0002 .notdef
4 | !03 U+0003 .notdef
5 | !04 U+0004 .notdef
6 | !05 U+0005 .notdef
7 | !06 U+0006 .notdef
8 | !07 U+0007 .notdef
9 | !08 U+0008 .notdef
10 | !09 U+0009 .notdef
11 | !0A U+000A .notdef
12 | !0B U+000B .notdef
13 | !0C U+000C .notdef
14 | !0D U+000D .notdef
15 | !0E U+000E .notdef
16 | !0F U+000F .notdef
17 | !10 U+0010 .notdef
18 | !11 U+0011 .notdef
19 | !12 U+0012 .notdef
20 | !13 U+0013 .notdef
21 | !14 U+0014 .notdef
22 | !15 U+0015 .notdef
23 | !16 U+0016 .notdef
24 | !17 U+0017 .notdef
25 | !18 U+0018 .notdef
26 | !19 U+0019 .notdef
27 | !1A U+001A .notdef
28 | !1B U+001B .notdef
29 | !1C U+001C .notdef
30 | !1D U+001D .notdef
31 | !1E U+001E .notdef
32 | !1F U+001F .notdef
33 | !20 U+0020 space
34 | !21 U+0021 exclam
35 | !22 U+0022 quotedbl
36 | !23 U+0023 numbersign
37 | !24 U+0024 dollar
38 | !25 U+0025 percent
39 | !26 U+0026 ampersand
40 | !27 U+0027 quotesingle
41 | !28 U+0028 parenleft
42 | !29 U+0029 parenright
43 | !2A U+002A asterisk
44 | !2B U+002B plus
45 | !2C U+002C comma
46 | !2D U+002D hyphen
47 | !2E U+002E period
48 | !2F U+002F slash
49 | !30 U+0030 zero
50 | !31 U+0031 one
51 | !32 U+0032 two
52 | !33 U+0033 three
53 | !34 U+0034 four
54 | !35 U+0035 five
55 | !36 U+0036 six
56 | !37 U+0037 seven
57 | !38 U+0038 eight
58 | !39 U+0039 nine
59 | !3A U+003A colon
60 | !3B U+003B semicolon
61 | !3C U+003C less
62 | !3D U+003D equal
63 | !3E U+003E greater
64 | !3F U+003F question
65 | !40 U+0040 at
66 | !41 U+0041 A
67 | !42 U+0042 B
68 | !43 U+0043 C
69 | !44 U+0044 D
70 | !45 U+0045 E
71 | !46 U+0046 F
72 | !47 U+0047 G
73 | !48 U+0048 H
74 | !49 U+0049 I
75 | !4A U+004A J
76 | !4B U+004B K
77 | !4C U+004C L
78 | !4D U+004D M
79 | !4E U+004E N
80 | !4F U+004F O
81 | !50 U+0050 P
82 | !51 U+0051 Q
83 | !52 U+0052 R
84 | !53 U+0053 S
85 | !54 U+0054 T
86 | !55 U+0055 U
87 | !56 U+0056 V
88 | !57 U+0057 W
89 | !58 U+0058 X
90 | !59 U+0059 Y
91 | !5A U+005A Z
92 | !5B U+005B bracketleft
93 | !5C U+005C backslash
94 | !5D U+005D bracketright
95 | !5E U+005E asciicircum
96 | !5F U+005F underscore
97 | !60 U+0060 grave
98 | !61 U+0061 a
99 | !62 U+0062 b
100 | !63 U+0063 c
101 | !64 U+0064 d
102 | !65 U+0065 e
103 | !66 U+0066 f
104 | !67 U+0067 g
105 | !68 U+0068 h
106 | !69 U+0069 i
107 | !6A U+006A j
108 | !6B U+006B k
109 | !6C U+006C l
110 | !6D U+006D m
111 | !6E U+006E n
112 | !6F U+006F o
113 | !70 U+0070 p
114 | !71 U+0071 q
115 | !72 U+0072 r
116 | !73 U+0073 s
117 | !74 U+0074 t
118 | !75 U+0075 u
119 | !76 U+0076 v
120 | !77 U+0077 w
121 | !78 U+0078 x
122 | !79 U+0079 y
123 | !7A U+007A z
124 | !7B U+007B braceleft
125 | !7C U+007C bar
126 | !7D U+007D braceright
127 | !7E U+007E asciitilde
128 | !7F U+007F .notdef
129 | !80 U+0402 afii10051
130 | !81 U+0403 afii10052
131 | !82 U+201A quotesinglbase
132 | !83 U+0453 afii10100
133 | !84 U+201E quotedblbase
134 | !85 U+2026 ellipsis
135 | !86 U+2020 dagger
136 | !87 U+2021 daggerdbl
137 | !88 U+20AC Euro
138 | !89 U+2030 perthousand
139 | !8A U+0409 afii10058
140 | !8B U+2039 guilsinglleft
141 | !8C U+040A afii10059
142 | !8D U+040C afii10061
143 | !8E U+040B afii10060
144 | !8F U+040F afii10145
145 | !90 U+0452 afii10099
146 | !91 U+2018 quoteleft
147 | !92 U+2019 quoteright
148 | !93 U+201C quotedblleft
149 | !94 U+201D quotedblright
150 | !95 U+2022 bullet
151 | !96 U+2013 endash
152 | !97 U+2014 emdash
153 | !99 U+2122 trademark
154 | !9A U+0459 afii10106
155 | !9B U+203A guilsinglright
156 | !9C U+045A afii10107
157 | !9D U+045C afii10109
158 | !9E U+045B afii10108
159 | !9F U+045F afii10193
160 | !A0 U+00A0 space
161 | !A1 U+040E afii10062
162 | !A2 U+045E afii10110
163 | !A3 U+0408 afii10057
164 | !A4 U+00A4 currency
165 | !A5 U+0490 afii10050
166 | !A6 U+00A6 brokenbar
167 | !A7 U+00A7 section
168 | !A8 U+0401 afii10023
169 | !A9 U+00A9 copyright
170 | !AA U+0404 afii10053
171 | !AB U+00AB guillemotleft
172 | !AC U+00AC logicalnot
173 | !AD U+00AD hyphen
174 | !AE U+00AE registered
175 | !AF U+0407 afii10056
176 | !B0 U+00B0 degree
177 | !B1 U+00B1 plusminus
178 | !B2 U+0406 afii10055
179 | !B3 U+0456 afii10103
180 | !B4 U+0491 afii10098
181 | !B5 U+00B5 mu
182 | !B6 U+00B6 paragraph
183 | !B7 U+00B7 periodcentered
184 | !B8 U+0451 afii10071
185 | !B9 U+2116 afii61352
186 | !BA U+0454 afii10101
187 | !BB U+00BB guillemotright
188 | !BC U+0458 afii10105
189 | !BD U+0405 afii10054
190 | !BE U+0455 afii10102
191 | !BF U+0457 afii10104
192 | !C0 U+0410 afii10017
193 | !C1 U+0411 afii10018
194 | !C2 U+0412 afii10019
195 | !C3 U+0413 afii10020
196 | !C4 U+0414 afii10021
197 | !C5 U+0415 afii10022
198 | !C6 U+0416 afii10024
199 | !C7 U+0417 afii10025
200 | !C8 U+0418 afii10026
201 | !C9 U+0419 afii10027
202 | !CA U+041A afii10028
203 | !CB U+041B afii10029
204 | !CC U+041C afii10030
205 | !CD U+041D afii10031
206 | !CE U+041E afii10032
207 | !CF U+041F afii10033
208 | !D0 U+0420 afii10034
209 | !D1 U+0421 afii10035
210 | !D2 U+0422 afii10036
211 | !D3 U+0423 afii10037
212 | !D4 U+0424 afii10038
213 | !D5 U+0425 afii10039
214 | !D6 U+0426 afii10040
215 | !D7 U+0427 afii10041
216 | !D8 U+0428 afii10042
217 | !D9 U+0429 afii10043
218 | !DA U+042A afii10044
219 | !DB U+042B afii10045
220 | !DC U+042C afii10046
221 | !DD U+042D afii10047
222 | !DE U+042E afii10048
223 | !DF U+042F afii10049
224 | !E0 U+0430 afii10065
225 | !E1 U+0431 afii10066
226 | !E2 U+0432 afii10067
227 | !E3 U+0433 afii10068
228 | !E4 U+0434 afii10069
229 | !E5 U+0435 afii10070
230 | !E6 U+0436 afii10072
231 | !E7 U+0437 afii10073
232 | !E8 U+0438 afii10074
233 | !E9 U+0439 afii10075
234 | !EA U+043A afii10076
235 | !EB U+043B afii10077
236 | !EC U+043C afii10078
237 | !ED U+043D afii10079
238 | !EE U+043E afii10080
239 | !EF U+043F afii10081
240 | !F0 U+0440 afii10082
241 | !F1 U+0441 afii10083
242 | !F2 U+0442 afii10084
243 | !F3 U+0443 afii10085
244 | !F4 U+0444 afii10086
245 | !F5 U+0445 afii10087
246 | !F6 U+0446 afii10088
247 | !F7 U+0447 afii10089
248 | !F8 U+0448 afii10090
249 | !F9 U+0449 afii10091
250 | !FA U+044A afii10092
251 | !FB U+044B afii10093
252 | !FC U+044C afii10094
253 | !FD U+044D afii10095
254 | !FE U+044E afii10096
255 | !FF U+044F afii10097
256 |
--------------------------------------------------------------------------------
/src/FontLib/Table/Type/name.php:
--------------------------------------------------------------------------------
1 | self::uint16,
21 | "count" => self::uint16,
22 | "stringOffset" => self::uint16,
23 | );
24 |
25 | const NAME_COPYRIGHT = 0;
26 | const NAME_NAME = 1;
27 | const NAME_SUBFAMILY = 2;
28 | const NAME_SUBFAMILY_ID = 3;
29 | const NAME_FULL_NAME = 4;
30 | const NAME_VERSION = 5;
31 | const NAME_POSTSCRIPT_NAME = 6;
32 | const NAME_TRADEMARK = 7;
33 | const NAME_MANUFACTURER = 8;
34 | const NAME_DESIGNER = 9;
35 | const NAME_DESCRIPTION = 10;
36 | const NAME_VENDOR_URL = 11;
37 | const NAME_DESIGNER_URL = 12;
38 | const NAME_LICENSE = 13;
39 | const NAME_LICENSE_URL = 14;
40 | const NAME_PREFERRE_FAMILY = 16;
41 | const NAME_PREFERRE_SUBFAMILY = 17;
42 | const NAME_COMPAT_FULL_NAME = 18;
43 | const NAME_SAMPLE_TEXT = 19;
44 |
45 | static $nameIdCodes = array(
46 | 0 => "Copyright",
47 | 1 => "FontName",
48 | 2 => "FontSubfamily",
49 | 3 => "UniqueID",
50 | 4 => "FullName",
51 | 5 => "Version",
52 | 6 => "PostScriptName",
53 | 7 => "Trademark",
54 | 8 => "Manufacturer",
55 | 9 => "Designer",
56 | 10 => "Description",
57 | 11 => "FontVendorURL",
58 | 12 => "FontDesignerURL",
59 | 13 => "LicenseDescription",
60 | 14 => "LicenseURL",
61 | // 15
62 | 16 => "PreferredFamily",
63 | 17 => "PreferredSubfamily",
64 | 18 => "CompatibleFullName",
65 | 19 => "SampleText",
66 | );
67 |
68 | static $platforms = array(
69 | 0 => "Unicode",
70 | 1 => "Macintosh",
71 | // 2 => Reserved
72 | 3 => "Microsoft",
73 | );
74 |
75 | static $platformSpecific = array(
76 | // Unicode
77 | 0 => array(
78 | 0 => "Default semantics",
79 | 1 => "Version 1.1 semantics",
80 | 2 => "ISO 10646 1993 semantics (deprecated)",
81 | 3 => "Unicode 2.0 or later semantics",
82 | ),
83 |
84 | // Macintosh
85 | 1 => array(
86 | 0 => "Roman",
87 | 1 => "Japanese",
88 | 2 => "Traditional Chinese",
89 | 3 => "Korean",
90 | 4 => "Arabic",
91 | 5 => "Hebrew",
92 | 6 => "Greek",
93 | 7 => "Russian",
94 | 8 => "RSymbol",
95 | 9 => "Devanagari",
96 | 10 => "Gurmukhi",
97 | 11 => "Gujarati",
98 | 12 => "Oriya",
99 | 13 => "Bengali",
100 | 14 => "Tamil",
101 | 15 => "Telugu",
102 | 16 => "Kannada",
103 | 17 => "Malayalam",
104 | 18 => "Sinhalese",
105 | 19 => "Burmese",
106 | 20 => "Khmer",
107 | 21 => "Thai",
108 | 22 => "Laotian",
109 | 23 => "Georgian",
110 | 24 => "Armenian",
111 | 25 => "Simplified Chinese",
112 | 26 => "Tibetan",
113 | 27 => "Mongolian",
114 | 28 => "Geez",
115 | 29 => "Slavic",
116 | 30 => "Vietnamese",
117 | 31 => "Sindhi",
118 | ),
119 |
120 | // Microsoft
121 | 3 => array(
122 | 0 => "Symbol",
123 | 1 => "Unicode BMP (UCS-2)",
124 | 2 => "ShiftJIS",
125 | 3 => "PRC",
126 | 4 => "Big5",
127 | 5 => "Wansung",
128 | 6 => "Johab",
129 | // 7 => Reserved
130 | // 8 => Reserved
131 | // 9 => Reserved
132 | 10 => "Unicode UCS-4",
133 | ),
134 | );
135 |
136 | protected function _parse() {
137 | $font = $this->getFont();
138 |
139 | $tableOffset = $font->pos();
140 |
141 | $data = $font->unpack(self::$header_format);
142 |
143 | $records = array();
144 | for ($i = 0; $i < $data["count"]; $i++) {
145 | $record = new nameRecord();
146 | $record_data = $font->unpack(nameRecord::$format);
147 | $record->map($record_data);
148 |
149 | $records[] = $record;
150 | }
151 |
152 | $system_encodings = mb_list_encodings();
153 | $system_encodings = array_change_key_case(array_fill_keys($system_encodings, true), CASE_UPPER);
154 |
155 | $names = array();
156 | foreach ($records as $record) {
157 | $font->seek($tableOffset + $data["stringOffset"] + $record->offset);
158 | $record->stringRaw = $font->read($record->length);
159 |
160 | $encoding = null;
161 | switch ($record->platformID) {
162 | case 3:
163 | switch ($record->platformSpecificID) {
164 | case 2:
165 | if (\array_key_exists("SJIS", $system_encodings)) {
166 | $encoding = "SJIS";
167 | }
168 | break;
169 | case 3:
170 | if (\array_key_exists("GB18030", $system_encodings)) {
171 | $encoding = "GB18030";
172 | }
173 | break;
174 | case 4:
175 | if (\array_key_exists("BIG-5", $system_encodings)) {
176 | $encoding = "BIG-5";
177 | }
178 | break;
179 | case 5:
180 | if (\array_key_exists("UHC", $system_encodings)) {
181 | $encoding = "UHC";
182 | }
183 | break;
184 | }
185 | break;
186 | }
187 | if ($encoding === null) {
188 | $encoding = "UTF-16";
189 | }
190 |
191 | $record->string = mb_convert_encoding($record->stringRaw, "UTF-8", $encoding);
192 | if (strpos($record->string, "\0") !== false) {
193 | $record->string = str_replace("\0", "", $record->string);
194 | }
195 | $names[$record->nameID] = $record;
196 | }
197 |
198 | $data["records"] = $names;
199 |
200 | $this->data = $data;
201 | }
202 |
203 | protected function _encode() {
204 | $font = $this->getFont();
205 |
206 | /** @var nameRecord[] $records */
207 | $records = $this->data["records"];
208 | $count_records = \count($records);
209 |
210 | $this->data["count"] = $count_records;
211 | $this->data["stringOffset"] = 6 + ($count_records * 12); // 6 => uint16 * 3, 12 => sizeof self::$record_format
212 |
213 | $length = $font->pack(self::$header_format, $this->data);
214 |
215 | $offset = 0;
216 |
217 | /** @var nameRecord[] $records_to_encode */
218 | $records_to_encode = array();
219 | foreach ($records as $record) {
220 | $encoded_record = new nameRecord();
221 | $encoded_record->platformID = 3;
222 | $encoded_record->platformSpecificID = 1;
223 | $encoded_record->languageID = $record->languageID;
224 | $encoded_record->nameID = $record->nameID;
225 | $encoded_record->offset = $offset;
226 | $encoded_record->string = $record->string;
227 | $encoded_record->length = mb_strlen($encoded_record->getUTF16(), "8bit");
228 | $records_to_encode[] = $encoded_record;
229 |
230 | $offset += $encoded_record->length;
231 | $length += $font->pack(nameRecord::$format, (array)$encoded_record);
232 | }
233 |
234 | foreach ($records_to_encode as $record) {
235 | $str = $record->getUTF16();
236 | $length += $font->write($str, mb_strlen($str, "8bit"));
237 | }
238 |
239 | return $length;
240 | }
241 | }
242 |
--------------------------------------------------------------------------------
/src/FontLib/AdobeFontMetrics.php:
--------------------------------------------------------------------------------
1 | font = $font;
28 | }
29 |
30 | function write($file, $encoding = null) {
31 | $map_data = array();
32 |
33 | if ($encoding) {
34 | $encoding = preg_replace("/[^a-z0-9-_]/", "", $encoding);
35 | $map_file = dirname(__FILE__) . "/../../maps/$encoding.map";
36 | if (!file_exists($map_file)) {
37 | throw new \Exception("Unknown encoding ($encoding)");
38 | }
39 |
40 | $map = new EncodingMap($map_file);
41 | $map_data = $map->parse();
42 | }
43 |
44 | $this->f = fopen($file, "w+");
45 |
46 | $font = $this->font;
47 |
48 | $this->startSection("FontMetrics", 4.1);
49 | $this->addPair("Notice", "Converted by PHP-font-lib");
50 | $this->addPair("Comment", "https://github.com/dompdf/php-font-lib");
51 |
52 | $encoding_scheme = ($encoding ? $encoding : "FontSpecific");
53 | $this->addPair("EncodingScheme", $encoding_scheme);
54 |
55 | $records = $font->getData("name", "records");
56 | foreach ($records as $id => $record) {
57 | if (!isset(name::$nameIdCodes[$id]) || preg_match("/[\r\n]/", $record->string)) {
58 | continue;
59 | }
60 |
61 | $this->addPair(name::$nameIdCodes[$id], $record->string);
62 | }
63 |
64 | $os2 = $font->getData("OS/2");
65 | $this->addPair("Weight", ($os2["usWeightClass"] > 400 ? "Bold" : "Medium"));
66 |
67 | $post = $font->getData("post");
68 | $this->addPair("ItalicAngle", $post["italicAngle"]);
69 | $this->addPair("IsFixedPitch", ($post["isFixedPitch"] ? "true" : "false"));
70 | $this->addPair("UnderlineThickness", $font->normalizeFUnit($post["underlineThickness"]));
71 | $this->addPair("UnderlinePosition", $font->normalizeFUnit($post["underlinePosition"]));
72 |
73 | $hhea = $font->getData("hhea");
74 |
75 | if (isset($hhea["ascent"])) {
76 | $this->addPair("FontHeightOffset", $font->normalizeFUnit($hhea["lineGap"]));
77 | }
78 | else {
79 | $this->addPair("FontHeightOffset", $font->normalizeFUnit($os2["typoLineGap"]));
80 | }
81 |
82 | $glyf = $font->getData("glyf");
83 | $glyphIndexArray = $font->getUnicodeCharMap();
84 | $hasGlyphs = $glyf instanceof glyf && is_array($glyphIndexArray);
85 |
86 | // capHeight is based on capital H
87 | if ($hasGlyphs && \array_key_exists(72, $glyphIndexArray)) {
88 | $upperH = $glyf[$glyphIndexArray[72]];
89 | $upperH->parseData();
90 | $this->addPair("CapHeight", $font->normalizeFUnit($upperH->yMax));
91 | }
92 |
93 | // xHeight is based on lowercase x
94 | if ($hasGlyphs && \array_key_exists(120, $glyphIndexArray)) {
95 | $lowerX = $glyf[$glyphIndexArray[120]];
96 | $lowerX->parseData();
97 | $this->addPair("XHeight", $font->normalizeFUnit($lowerX->yMax));
98 | }
99 |
100 | // ascender is based on lowercase d
101 | if ($hasGlyphs && \array_key_exists(100, $glyphIndexArray)) {
102 | $lowerD = $glyf[$glyphIndexArray[100]];
103 | $lowerD->parseData();
104 | $this->addPair("Ascender", $font->normalizeFUnit($lowerD->yMax));
105 | } elseif (isset($hhea["ascent"])) {
106 | $this->addPair("Ascender", $font->normalizeFUnit($hhea["ascent"]));
107 | }
108 | else {
109 | $this->addPair("Ascender", $font->normalizeFUnit($os2["typoAscender"]));
110 | }
111 |
112 | // descender is based on lowercase p
113 | if ($hasGlyphs && \array_key_exists(112, $glyphIndexArray)) {
114 | $lowerP = $glyf[$glyphIndexArray[112]];
115 | $lowerP->parseData();
116 | $this->addPair("Descender", $font->normalizeFUnit($lowerP->yMin));
117 | } elseif (isset($hhea["descent"])) {
118 | $this->addPair("Descender", $font->normalizeFUnit($hhea["descent"]));
119 | }
120 | else {
121 | $this->addPair("Descender", -abs($font->normalizeFUnit($os2["typoDescender"])));
122 | }
123 |
124 | $head = $font->getData("head");
125 | $this->addArray("FontBBox", array(
126 | $font->normalizeFUnit($head["xMin"]),
127 | $font->normalizeFUnit($head["yMin"]),
128 | $font->normalizeFUnit($head["xMax"]),
129 | $font->normalizeFUnit($head["yMax"]),
130 | ));
131 |
132 | if ($glyphIndexArray) {
133 | $hmtx = $font->getData("hmtx");
134 | $names = $font->getData("post", "names");
135 |
136 | $this->startSection("CharMetrics", count($hmtx));
137 |
138 | if ($encoding) {
139 | foreach ($map_data as $code => $value) {
140 | list($c, $name) = $value;
141 |
142 | if (!isset($glyphIndexArray[$c])) {
143 | continue;
144 | }
145 |
146 | $g = $glyphIndexArray[$c];
147 |
148 | if (!isset($hmtx[$g])) {
149 | $hmtx[$g] = $hmtx[0];
150 | }
151 |
152 | $this->addMetric(array(
153 | "C" => ($code > 255 ? -1 : $code),
154 | "WX" => $font->normalizeFUnit($hmtx[$g][0]),
155 | "N" => $name,
156 | ));
157 | }
158 | }
159 | else {
160 | foreach ($glyphIndexArray as $c => $g) {
161 | if (!isset($hmtx[$g])) {
162 | $hmtx[$g] = $hmtx[0];
163 | }
164 |
165 | $this->addMetric(array(
166 | "U" => $c,
167 | "WX" => $font->normalizeFUnit($hmtx[$g][0]),
168 | "N" => (isset($names[$g]) ? $names[$g] : sprintf("uni%04x", $c)),
169 | "G" => $g,
170 | ));
171 | }
172 | }
173 |
174 | $this->endSection("CharMetrics");
175 |
176 | $kern = $font->getData("kern", "subtable");
177 | $tree = is_array($kern) ? $kern["tree"] : null;
178 |
179 | if (!$encoding && is_array($tree)) {
180 | $this->startSection("KernData");
181 | $this->startSection("KernPairs", count($tree, COUNT_RECURSIVE) - count($tree));
182 |
183 | foreach ($tree as $left => $values) {
184 | if (!is_array($values)) {
185 | continue;
186 | }
187 | if (!isset($glyphIndexArray[$left])) {
188 | continue;
189 | }
190 |
191 | $left_gid = $glyphIndexArray[$left];
192 |
193 | if (!isset($names[$left_gid])) {
194 | continue;
195 | }
196 |
197 | $left_name = $names[$left_gid];
198 |
199 | $this->addLine("");
200 |
201 | foreach ($values as $right => $value) {
202 | if (!isset($glyphIndexArray[$right])) {
203 | continue;
204 | }
205 |
206 | $right_gid = $glyphIndexArray[$right];
207 |
208 | if (!isset($names[$right_gid])) {
209 | continue;
210 | }
211 |
212 | $right_name = $names[$right_gid];
213 | $this->addPair("KPX", "$left_name $right_name $value");
214 | }
215 | }
216 |
217 | $this->endSection("KernPairs");
218 | $this->endSection("KernData");
219 | }
220 | }
221 |
222 | $this->endSection("FontMetrics");
223 | }
224 |
225 | function addLine($line) {
226 | fwrite($this->f, "$line\n");
227 | }
228 |
229 | function addPair($key, $value) {
230 | $this->addLine("$key $value");
231 | }
232 |
233 | function addArray($key, $array) {
234 | $this->addLine("$key " . implode(" ", $array));
235 | }
236 |
237 | function addMetric($data) {
238 | $array = array();
239 | foreach ($data as $key => $value) {
240 | $array[] = "$key $value";
241 | }
242 | $this->addLine(implode(" ; ", $array));
243 | }
244 |
245 | function startSection($name, $value = "") {
246 | $this->addLine("Start$name $value");
247 | }
248 |
249 | function endSection($name) {
250 | $this->addLine("End$name");
251 | }
252 | }
253 |
--------------------------------------------------------------------------------
/src/FontLib/Glyph/OutlineComposite.php:
--------------------------------------------------------------------------------
1 | components)) {
35 | $this->parseData();
36 | }
37 |
38 | $glyphIDs = array();
39 | foreach ($this->components as $_component) {
40 | $glyphIDs[] = $_component->glyphIndex;
41 |
42 | $_glyph = $this->table->data[$_component->glyphIndex];
43 |
44 | if ($_glyph !== $this) {
45 | $glyphIDs = array_merge($glyphIDs, $_glyph->getGlyphIDs());
46 | }
47 | }
48 |
49 | return $glyphIDs;
50 | }
51 |
52 | /*function parse() {
53 | //$this->parseData();
54 | }*/
55 |
56 | function parseData() {
57 | parent::parseData();
58 |
59 | $font = $this->getFont();
60 |
61 | do {
62 | $flags = $font->readUInt16();
63 | $glyphIndex = $font->readUInt16();
64 |
65 | $a = 1.0;
66 | $b = 0.0;
67 | $c = 0.0;
68 | $d = 1.0;
69 | $e = 0.0;
70 | $f = 0.0;
71 |
72 | $point_compound = null;
73 | $point_component = null;
74 |
75 | $instructions = null;
76 |
77 | if ($flags & self::ARG_1_AND_2_ARE_WORDS) {
78 | if ($flags & self::ARGS_ARE_XY_VALUES) {
79 | $e = $font->readInt16();
80 | $f = $font->readInt16();
81 | }
82 | else {
83 | $point_compound = $font->readUInt16();
84 | $point_component = $font->readUInt16();
85 | }
86 | }
87 | else {
88 | if ($flags & self::ARGS_ARE_XY_VALUES) {
89 | $e = $font->readInt8();
90 | $f = $font->readInt8();
91 | }
92 | else {
93 | $point_compound = $font->readUInt8();
94 | $point_component = $font->readUInt8();
95 | }
96 | }
97 |
98 | if ($flags & self::WE_HAVE_A_SCALE) {
99 | $a = $d = $font->readInt16();
100 | }
101 | elseif ($flags & self::WE_HAVE_AN_X_AND_Y_SCALE) {
102 | $a = $font->readInt16();
103 | $d = $font->readInt16();
104 | }
105 | elseif ($flags & self::WE_HAVE_A_TWO_BY_TWO) {
106 | $a = $font->readInt16();
107 | $b = $font->readInt16();
108 | $c = $font->readInt16();
109 | $d = $font->readInt16();
110 | }
111 |
112 | //if ($flags & self::WE_HAVE_INSTRUCTIONS) {
113 | //
114 | //}
115 |
116 | $component = new OutlineComponent();
117 | $component->flags = $flags;
118 | $component->glyphIndex = $glyphIndex;
119 | $component->a = $a;
120 | $component->b = $b;
121 | $component->c = $c;
122 | $component->d = $d;
123 | $component->e = $e;
124 | $component->f = $f;
125 | $component->point_compound = $point_compound;
126 | $component->point_component = $point_component;
127 | $component->instructions = $instructions;
128 |
129 | $this->components[] = $component;
130 | } while ($flags & self::MORE_COMPONENTS);
131 | if ($flags & self::WE_HAVE_INSTRUCTIONS) {
132 | $numInstr = $font->readUInt16();
133 | $instr = $font->read($numInstr);
134 | $this->components[count($this->components) - 1]->instructions = pack('n', $numInstr) . $instr;
135 | }
136 | }
137 |
138 | function encode() {
139 | $font = $this->getFont();
140 |
141 | $gids = $font->getSubset();
142 |
143 | $size = $font->writeInt16(-1);
144 | $size += $font->writeFWord($this->xMin);
145 | $size += $font->writeFWord($this->yMin);
146 | $size += $font->writeFWord($this->xMax);
147 | $size += $font->writeFWord($this->yMax);
148 |
149 | foreach ($this->components as $_i => $_component) {
150 | $flags = 0;
151 | if ($_component->point_component === null && $_component->point_compound === null) {
152 | $flags |= self::ARGS_ARE_XY_VALUES;
153 |
154 | if (abs($_component->e) > 0x7F || abs($_component->f) > 0x7F) {
155 | $flags |= self::ARG_1_AND_2_ARE_WORDS;
156 | }
157 | }
158 | elseif ($_component->point_component > 0xFF || $_component->point_compound > 0xFF) {
159 | $flags |= self::ARG_1_AND_2_ARE_WORDS;
160 | }
161 |
162 | if ($_component->b == 0 && $_component->c == 0) {
163 | if ($_component->a == $_component->d) {
164 | if ($_component->a != 1.0) {
165 | $flags |= self::WE_HAVE_A_SCALE;
166 | }
167 | }
168 | else {
169 | $flags |= self::WE_HAVE_AN_X_AND_Y_SCALE;
170 | }
171 | }
172 | else {
173 | $flags |= self::WE_HAVE_A_TWO_BY_TWO;
174 | }
175 |
176 | if ($_i < count($this->components) - 1) {
177 | $flags |= self::MORE_COMPONENTS;
178 | } elseif($_component->instructions !== null) {
179 | $flags |= self::WE_HAVE_INSTRUCTIONS;
180 | }
181 |
182 | $size += $font->writeUInt16($flags);
183 |
184 | $new_gid = array_search($_component->glyphIndex, $gids);
185 | $size += $font->writeUInt16($new_gid);
186 |
187 | if ($flags & self::ARG_1_AND_2_ARE_WORDS) {
188 | if ($flags & self::ARGS_ARE_XY_VALUES) {
189 | $size += $font->writeInt16($_component->e);
190 | $size += $font->writeInt16($_component->f);
191 | }
192 | else {
193 | $size += $font->writeUInt16($_component->point_compound);
194 | $size += $font->writeUInt16($_component->point_component);
195 | }
196 | }
197 | else {
198 | if ($flags & self::ARGS_ARE_XY_VALUES) {
199 | $size += $font->writeInt8($_component->e);
200 | $size += $font->writeInt8($_component->f);
201 | }
202 | else {
203 | $size += $font->writeUInt8($_component->point_compound);
204 | $size += $font->writeUInt8($_component->point_component);
205 | }
206 | }
207 |
208 | if ($flags & self::WE_HAVE_A_SCALE) {
209 | $size += $font->writeInt16($_component->a);
210 | }
211 | elseif ($flags & self::WE_HAVE_AN_X_AND_Y_SCALE) {
212 | $size += $font->writeInt16($_component->a);
213 | $size += $font->writeInt16($_component->d);
214 | }
215 | elseif ($flags & self::WE_HAVE_A_TWO_BY_TWO) {
216 | $size += $font->writeInt16($_component->a);
217 | $size += $font->writeInt16($_component->b);
218 | $size += $font->writeInt16($_component->c);
219 | $size += $font->writeInt16($_component->d);
220 | }
221 | }
222 |
223 | if($_component->instructions !== null) {
224 | $size += $font->write($_component->instructions, strlen($_component->instructions));
225 | }
226 |
227 | return $size;
228 | }
229 |
230 | public function getSVGContours() {
231 | $contours = array();
232 |
233 | /** @var \FontLib\Table\Type\glyf $glyph_data */
234 | $glyph_data = $this->getFont()->getTableObject("glyf");
235 |
236 | /** @var Outline[] $glyphs */
237 | $glyphs = $glyph_data->data;
238 |
239 | foreach ($this->components as $component) {
240 | $_glyph = $glyphs[$component->glyphIndex];
241 |
242 | if ($_glyph !== $this) {
243 | $contours[] = array(
244 | "contours" => $_glyph->getSVGContours(),
245 | "transform" => $component->getMatrix(),
246 | );
247 | }
248 | }
249 |
250 | return $contours;
251 | }
252 | }
--------------------------------------------------------------------------------
/maps/adobe-standard-encoding.map:
--------------------------------------------------------------------------------
1 | // Adobe Standard Encoding table for ttf2pt1
2 | // Thomas Henlich
3 |
4 | =20 U+0020 SPACE
5 | =21 U+0021 EXCLAMATION MARK
6 | =22 U+0022 QUOTATION MARK
7 | =23 U+0023 NUMBER SIGN
8 | =24 U+0024 DOLLAR SIGN
9 | =25 U+0025 PERCENT SIGN
10 | =26 U+0026 AMPERSAND
11 | =27 U+2019 RIGHT SINGLE QUOTATION MARK
12 | =28 U+0028 LEFT PARENTHESIS
13 | =29 U+0029 RIGHT PARENTHESIS
14 | =2A U+002A ASTERISK
15 | =2B U+002B PLUS SIGN
16 | =2C U+002C COMMA
17 | =2D U+002D HYPHEN-MINUS
18 | =2E U+002E FULL STOP
19 | =2F U+002F SOLIDUS
20 | =30 U+0030 DIGIT ZERO
21 | =31 U+0031 DIGIT ONE
22 | =32 U+0032 DIGIT TWO
23 | =33 U+0033 DIGIT THREE
24 | =34 U+0034 DIGIT FOUR
25 | =35 U+0035 DIGIT FIVE
26 | =36 U+0036 DIGIT SIX
27 | =37 U+0037 DIGIT SEVEN
28 | =38 U+0038 DIGIT EIGHT
29 | =39 U+0039 DIGIT NINE
30 | =3A U+003A COLON
31 | =3B U+003B SEMICOLON
32 | =3C U+003C LESS-THAN SIGN
33 | =3D U+003D EQUALS SIGN
34 | =3E U+003E GREATER-THAN SIGN
35 | =3F U+003F QUESTION MARK
36 | =40 U+0040 COMMERCIAL AT
37 | =41 U+0041 LATIN CAPITAL LETTER A
38 | =42 U+0042 LATIN CAPITAL LETTER B
39 | =43 U+0043 LATIN CAPITAL LETTER C
40 | =44 U+0044 LATIN CAPITAL LETTER D
41 | =45 U+0045 LATIN CAPITAL LETTER E
42 | =46 U+0046 LATIN CAPITAL LETTER F
43 | =47 U+0047 LATIN CAPITAL LETTER G
44 | =48 U+0048 LATIN CAPITAL LETTER H
45 | =49 U+0049 LATIN CAPITAL LETTER I
46 | =4A U+004A LATIN CAPITAL LETTER J
47 | =4B U+004B LATIN CAPITAL LETTER K
48 | =4C U+004C LATIN CAPITAL LETTER L
49 | =4D U+004D LATIN CAPITAL LETTER M
50 | =4E U+004E LATIN CAPITAL LETTER N
51 | =4F U+004F LATIN CAPITAL LETTER O
52 | =50 U+0050 LATIN CAPITAL LETTER P
53 | =51 U+0051 LATIN CAPITAL LETTER Q
54 | =52 U+0052 LATIN CAPITAL LETTER R
55 | =53 U+0053 LATIN CAPITAL LETTER S
56 | =54 U+0054 LATIN CAPITAL LETTER T
57 | =55 U+0055 LATIN CAPITAL LETTER U
58 | =56 U+0056 LATIN CAPITAL LETTER V
59 | =57 U+0057 LATIN CAPITAL LETTER W
60 | =58 U+0058 LATIN CAPITAL LETTER X
61 | =59 U+0059 LATIN CAPITAL LETTER Y
62 | =5A U+005A LATIN CAPITAL LETTER Z
63 | =5B U+005B LEFT SQUARE BRACKET
64 | =5C U+005C REVERSE SOLIDUS
65 | =5D U+005D RIGHT SQUARE BRACKET
66 | =5E U+005E CIRCUMFLEX ACCENT
67 | =5F U+005F LOW LINE
68 | =60 U+2018 LEFT SINGLE QUOTATION MARK
69 | =61 U+0061 LATIN SMALL LETTER A
70 | =62 U+0062 LATIN SMALL LETTER B
71 | =63 U+0063 LATIN SMALL LETTER C
72 | =64 U+0064 LATIN SMALL LETTER D
73 | =65 U+0065 LATIN SMALL LETTER E
74 | =66 U+0066 LATIN SMALL LETTER F
75 | =67 U+0067 LATIN SMALL LETTER G
76 | =68 U+0068 LATIN SMALL LETTER H
77 | =69 U+0069 LATIN SMALL LETTER I
78 | =6A U+006A LATIN SMALL LETTER J
79 | =6B U+006B LATIN SMALL LETTER K
80 | =6C U+006C LATIN SMALL LETTER L
81 | =6D U+006D LATIN SMALL LETTER M
82 | =6E U+006E LATIN SMALL LETTER N
83 | =6F U+006F LATIN SMALL LETTER O
84 | =70 U+0070 LATIN SMALL LETTER P
85 | =71 U+0071 LATIN SMALL LETTER Q
86 | =72 U+0072 LATIN SMALL LETTER R
87 | =73 U+0073 LATIN SMALL LETTER S
88 | =74 U+0074 LATIN SMALL LETTER T
89 | =75 U+0075 LATIN SMALL LETTER U
90 | =76 U+0076 LATIN SMALL LETTER V
91 | =77 U+0077 LATIN SMALL LETTER W
92 | =78 U+0078 LATIN SMALL LETTER X
93 | =79 U+0079 LATIN SMALL LETTER Y
94 | =7A U+007A LATIN SMALL LETTER Z
95 | =7B U+007B LEFT CURLY BRACKET
96 | =7C U+007C VERTICAL LINE
97 | =7D U+007D RIGHT CURLY BRACKET
98 | =7E U+007E TILDE
99 | =A1 U+00A1 INVERTED EXCLAMATION MARK
100 | =A2 U+00A2 CENT SIGN
101 | =A3 U+00A3 POUND SIGN
102 | =A4 U+2044 FRACTION SLASH
103 | =A5 U+00A5 YEN SIGN
104 | =A6 U+0192 LATIN SMALL LETTER F WITH HOOK
105 | =A7 U+00A7 SECTION SIGN
106 | =A8 U+00A4 CURRENCY SIGN
107 | =A9 U+0027 APOSTROPHE
108 | =AA U+201C LEFT DOUBLE QUOTATION MARK
109 | =AB U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
110 | =AC U+2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK
111 | =AD U+203A SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
112 | =AE U+FB01 LATIN SMALL LIGATURE FI
113 | =AF U+FB02 LATIN SMALL LIGATURE FL
114 | =B1 U+2013 EN DASH
115 | =B2 U+2020 DAGGER
116 | =B3 U+2021 DOUBLE DAGGER
117 | =B4 U+00B7 MIDDLE DOT
118 | =B6 U+00B6 PILCROW SIGN
119 | =B7 U+2022 BULLET
120 | =B8 U+201A SINGLE LOW-9 QUOTATION MARK
121 | =B9 U+201E DOUBLE LOW-9 QUOTATION MARK
122 | =BA U+201D RIGHT DOUBLE QUOTATION MARK
123 | =BB U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
124 | =BC U+2026 HORIZONTAL ELLIPSIS
125 | =BD U+2030 PER MILLE SIGN
126 | =BF U+00BF INVERTED QUESTION MARK
127 | =C1 U+0060 GRAVE ACCENT
128 | =C2 U+00B4 ACUTE ACCENT
129 | =C3 U+02C6 MODIFIER LETTER CIRCUMFLEX ACCENT
130 | =C4 U+02DC SMALL TILDE
131 | =C5 U+00AF MACRON
132 | =C6 U+02D8 BREVE
133 | =C7 U+02D9 DOT ABOVE
134 | =C8 U+00A8 DIAERESIS
135 | =CA U+02DA RING ABOVE
136 | =CB U+00B8 CEDILLA
137 | =CD U+02DD DOUBLE ACUTE ACCENT
138 | =CE U+02DB OGONEK
139 | =CF U+02C7 CARON
140 | =D0 U+2014 EM DASH
141 | =E1 U+00C6 LATIN CAPITAL LETTER AE
142 | =E3 U+00AA FEMININE ORDINAL INDICATOR
143 | =E8 U+0141 LATIN CAPITAL LETTER L WITH STROKE
144 | =E9 U+00D8 LATIN CAPITAL LETTER O WITH STROKE
145 | =EA U+0152 LATIN CAPITAL LIGATURE OE
146 | =EB U+00BA MASCULINE ORDINAL INDICATOR
147 | =F1 U+00E6 LATIN SMALL LETTER AE
148 | =F5 U+0131 LATIN SMALL LETTER DOTLESS I
149 | =F8 U+0142 LATIN SMALL LETTER L WITH STROKE
150 | =F9 U+00F8 LATIN SMALL LETTER O WITH STROKE
151 | =FA U+0153 LATIN SMALL LIGATURE OE
152 | =FB U+00DF LATIN SMALL LETTER SHARP S
153 |
154 | // unencoded characters:
155 | =100 U+00E7 LATIN SMALL LETTER C WITH CEDILLA
156 | =101 U+00FF LATIN SMALL LETTER Y WITH DIAERESIS
157 | =102 U+00E3 LATIN SMALL LETTER A WITH TILDE
158 | =103 U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX
159 | =104 U+00B3 SUPERSCRIPT THREE
160 | =105 U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX
161 | =106 U+00FE LATIN SMALL LETTER THORN
162 | =107 U+00E8 LATIN SMALL LETTER E WITH GRAVE
163 | =108 U+00B2 SUPERSCRIPT TWO
164 | =109 U+00E9 LATIN SMALL LETTER E WITH ACUTE
165 | =10A U+00F5 LATIN SMALL LETTER O WITH TILDE
166 | =10B U+00C1 LATIN CAPITAL LETTER A WITH ACUTE
167 | =10C U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX
168 | =10D U+00FD LATIN SMALL LETTER Y WITH ACUTE
169 | =10E U+00FC LATIN SMALL LETTER U WITH DIAERESIS
170 | =10F U+00BE VULGAR FRACTION THREE QUARTERS
171 | =110 U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX
172 | =111 U+00D0 LATIN CAPITAL LETTER ETH
173 | =112 U+00EB LATIN SMALL LETTER E WITH DIAERESIS
174 | =113 U+00F9 LATIN SMALL LETTER U WITH GRAVE
175 | =114 U+2122 TRADE MARK SIGN
176 | =115 U+00F2 LATIN SMALL LETTER O WITH GRAVE
177 | =116 U+0161 LATIN SMALL LETTER S WITH CARON
178 | =117 U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS
179 | =118 U+00FA LATIN SMALL LETTER U WITH ACUTE
180 | =119 U+00E0 LATIN SMALL LETTER A WITH GRAVE
181 | =11A U+00F1 LATIN SMALL LETTER N WITH TILDE
182 | =11B U+00E5 LATIN SMALL LETTER A WITH RING ABOVE
183 | =11C U+017E LATIN SMALL LETTER Z WITH CARON
184 | =11D U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX
185 | =11E U+00D1 LATIN CAPITAL LETTER N WITH TILDE
186 | =11F U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX
187 | =120 U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX
188 | =121 U+00CD LATIN CAPITAL LETTER I WITH ACUTE
189 | =122 U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA
190 | =123 U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS
191 | =124 U+0160 LATIN CAPITAL LETTER S WITH CARON
192 | =125 U+00CC LATIN CAPITAL LETTER I WITH GRAVE
193 | =126 U+00E4 LATIN SMALL LETTER A WITH DIAERESIS
194 | =127 U+00D2 LATIN CAPITAL LETTER O WITH GRAVE
195 | =128 U+00C8 LATIN CAPITAL LETTER E WITH GRAVE
196 | =129 U+0178 LATIN CAPITAL LETTER Y WITH DIAERESIS
197 | =12A U+00AE REGISTERED SIGN
198 | =12B U+00D5 LATIN CAPITAL LETTER O WITH TILDE
199 | =12C U+00BC VULGAR FRACTION ONE QUARTER
200 | =12D U+00D9 LATIN CAPITAL LETTER U WITH GRAVE
201 | =12E U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX
202 | =12F U+00DE LATIN CAPITAL LETTER THORN
203 | =130 U+00F7 DIVISION SIGN
204 | =131 U+00C3 LATIN CAPITAL LETTER A WITH TILDE
205 | =132 U+00DA LATIN CAPITAL LETTER U WITH ACUTE
206 | =133 U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX
207 | =134 U+00AC NOT SIGN
208 | =135 U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE
209 | =136 U+00EF LATIN SMALL LETTER I WITH DIAERESIS
210 | =137 U+00ED LATIN SMALL LETTER I WITH ACUTE
211 | =138 U+00E1 LATIN SMALL LETTER A WITH ACUTE
212 | =139 U+00B1 PLUS-MINUS SIGN
213 | =13A U+00D7 MULTIPLICATION SIGN
214 | =13B U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS
215 | =13C U+2212 MINUS SIGN
216 | =13D U+00B9 SUPERSCRIPT ONE
217 | =13E U+00C9 LATIN CAPITAL LETTER E WITH ACUTE
218 | =13F U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX
219 | =140 U+00A9 COPYRIGHT SIGN
220 | =141 U+00C0 LATIN CAPITAL LETTER A WITH GRAVE
221 | =142 U+00F6 LATIN SMALL LETTER O WITH DIAERESIS
222 | =143 U+00F3 LATIN SMALL LETTER O WITH ACUTE
223 | =144 U+00B0 DEGREE SIGN
224 | =145 U+00EC LATIN SMALL LETTER I WITH GRAVE
225 | =146 U+00B5 MICRO SIGN
226 | =147 U+00D3 LATIN CAPITAL LETTER O WITH ACUTE
227 | =148 U+00F0 LATIN SMALL LETTER ETH
228 | =149 U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS
229 | =14A U+00DD LATIN CAPITAL LETTER Y WITH ACUTE
230 | =14B U+00A6 BROKEN BAR
231 | =14C U+00BD VULGAR FRACTION ONE HALF
232 |
--------------------------------------------------------------------------------
/src/FontLib/Glyph/OutlineSimple.php:
--------------------------------------------------------------------------------
1 | size) {
31 | return;
32 | }
33 |
34 | $font = $this->getFont();
35 |
36 | $noc = $this->numberOfContours;
37 |
38 | if ($noc == 0) {
39 | return;
40 | }
41 |
42 | $endPtsOfContours = $font->r(array(self::uint16, $noc));
43 |
44 | $instructionLength = $font->readUInt16();
45 | $this->instructions = $font->r(array(self::uint8, $instructionLength));
46 |
47 | $count = $endPtsOfContours[$noc - 1] + 1;
48 |
49 | // Flags
50 | $flags = array();
51 | for ($index = 0; $index < $count; $index++) {
52 | $flags[$index] = $font->readUInt8();
53 |
54 | if ($flags[$index] & self::REPEAT) {
55 | $repeats = $font->readUInt8();
56 |
57 | for ($i = 1; $i <= $repeats; $i++) {
58 | $flags[$index + $i] = $flags[$index];
59 | }
60 |
61 | $index += $repeats;
62 | }
63 | }
64 |
65 | $points = array();
66 | foreach ($flags as $i => $flag) {
67 | $points[$i]["onCurve"] = $flag & self::ON_CURVE;
68 | $points[$i]["endOfContour"] = in_array($i, $endPtsOfContours);
69 | }
70 |
71 | // X Coords
72 | $x = 0;
73 | for ($i = 0; $i < $count; $i++) {
74 | $flag = $flags[$i];
75 |
76 | if ($flag & self::THIS_X_IS_SAME) {
77 | if ($flag & self::X_SHORT_VECTOR) {
78 | $x += $font->readUInt8();
79 | }
80 | }
81 | else {
82 | if ($flag & self::X_SHORT_VECTOR) {
83 | $x -= $font->readUInt8();
84 | }
85 | else {
86 | $x += $font->readInt16();
87 | }
88 | }
89 |
90 | $points[$i]["x"] = $x;
91 | }
92 |
93 | // Y Coords
94 | $y = 0;
95 | for ($i = 0; $i < $count; $i++) {
96 | $flag = $flags[$i];
97 |
98 | if ($flag & self::THIS_Y_IS_SAME) {
99 | if ($flag & self::Y_SHORT_VECTOR) {
100 | $y += $font->readUInt8();
101 | }
102 | }
103 | else {
104 | if ($flag & self::Y_SHORT_VECTOR) {
105 | $y -= $font->readUInt8();
106 | }
107 | else {
108 | $y += $font->readInt16();
109 | }
110 | }
111 |
112 | $points[$i]["y"] = $y;
113 | }
114 |
115 | $this->points = $points;
116 | }
117 |
118 | public function splitSVGPath($path) {
119 | preg_match_all('/([a-z])|(-?\d+(?:\.\d+)?)/i', $path, $matches, PREG_PATTERN_ORDER);
120 |
121 | return $matches[0];
122 | }
123 |
124 | public function makePoints($path) {
125 | $path = $this->splitSVGPath($path);
126 | $l = count($path);
127 | $i = 0;
128 |
129 | $points = array();
130 |
131 | while ($i < $l) {
132 | switch ($path[$i]) {
133 | // moveTo
134 | case "M":
135 | $points[] = array(
136 | "onCurve" => true,
137 | "x" => $path[++$i],
138 | "y" => $path[++$i],
139 | "endOfContour" => false,
140 | );
141 | break;
142 |
143 | // lineTo
144 | case "L":
145 | $points[] = array(
146 | "onCurve" => true,
147 | "x" => $path[++$i],
148 | "y" => $path[++$i],
149 | "endOfContour" => false,
150 | );
151 | break;
152 |
153 | // quadraticCurveTo
154 | case "Q":
155 | $points[] = array(
156 | "onCurve" => false,
157 | "x" => $path[++$i],
158 | "y" => $path[++$i],
159 | "endOfContour" => false,
160 | );
161 | $points[] = array(
162 | "onCurve" => true,
163 | "x" => $path[++$i],
164 | "y" => $path[++$i],
165 | "endOfContour" => false,
166 | );
167 | break;
168 |
169 | // closePath
170 | /** @noinspection PhpMissingBreakStatementInspection */
171 | case "z":
172 | $points[count($points) - 1]["endOfContour"] = true;
173 |
174 | default:
175 | $i++;
176 | break;
177 | }
178 | }
179 |
180 | return $points;
181 | }
182 |
183 | function encode() {
184 | if (empty($this->points)) {
185 | return parent::encode();
186 | }
187 |
188 | return $this->size = $this->encodePoints($this->points);
189 | }
190 |
191 | public function encodePoints($points) {
192 | $endPtsOfContours = array();
193 | $flags = array();
194 | $coords_x = array();
195 | $coords_y = array();
196 |
197 | $last_x = 0;
198 | $last_y = 0;
199 | $xMin = $yMin = 0xFFFF;
200 | $xMax = $yMax = -0xFFFF;
201 | foreach ($points as $i => $point) {
202 | $flag = 0;
203 | if ($point["onCurve"]) {
204 | $flag |= self::ON_CURVE;
205 | }
206 |
207 | if ($point["endOfContour"]) {
208 | $endPtsOfContours[] = $i;
209 | }
210 |
211 | // Simplified, we could do some optimizations
212 | if ($point["x"] == $last_x) {
213 | $flag |= self::THIS_X_IS_SAME;
214 | }
215 | else {
216 | $x = intval($point["x"]);
217 | $xMin = min($x, $xMin);
218 | $xMax = max($x, $xMax);
219 | $coords_x[] = $x - $last_x; // int16
220 | }
221 |
222 | // Simplified, we could do some optimizations
223 | if ($point["y"] == $last_y) {
224 | $flag |= self::THIS_Y_IS_SAME;
225 | }
226 | else {
227 | $y = intval($point["y"]);
228 | $yMin = min($y, $yMin);
229 | $yMax = max($y, $yMax);
230 | $coords_y[] = $y - $last_y; // int16
231 | }
232 |
233 | $flags[] = $flag;
234 | $last_x = $point["x"];
235 | $last_y = $point["y"];
236 | }
237 |
238 | $font = $this->getFont();
239 |
240 | $l = 0;
241 | $l += $font->writeInt16(count($endPtsOfContours)); // endPtsOfContours
242 | $l += $font->writeFWord(isset($this->xMin) ? $this->xMin : $xMin); // xMin
243 | $l += $font->writeFWord(isset($this->yMin) ? $this->yMin : $yMin); // yMin
244 | $l += $font->writeFWord(isset($this->xMax) ? $this->xMax : $xMax); // xMax
245 | $l += $font->writeFWord(isset($this->yMax) ? $this->yMax : $yMax); // yMax
246 |
247 | // Simple glyf
248 | $l += $font->w(array(self::uint16, count($endPtsOfContours)), $endPtsOfContours); // endPtsOfContours
249 | $l += $font->writeUInt16(0); // instructionLength
250 | $l += $font->w(array(self::uint8, count($flags)), $flags); // flags
251 | $l += $font->w(array(self::int16, count($coords_x)), $coords_x); // xCoordinates
252 | $l += $font->w(array(self::int16, count($coords_y)), $coords_y); // yCoordinates
253 | return $l;
254 | }
255 |
256 | public function getSVGContours($points = null) {
257 | $path = "";
258 |
259 | if (!$points) {
260 | if (empty($this->points)) {
261 | $this->parseData();
262 | }
263 |
264 | $points = $this->points;
265 | }
266 |
267 | $length = (empty($points) ? 0 : count($points));
268 | $firstIndex = 0;
269 | $count = 0;
270 |
271 | for ($i = 0; $i < $length; $i++) {
272 | $count++;
273 |
274 | if ($points[$i]["endOfContour"]) {
275 | $path .= $this->getSVGPath($points, $firstIndex, $count);
276 | $firstIndex = $i + 1;
277 | $count = 0;
278 | }
279 | }
280 |
281 | return $path;
282 | }
283 |
284 | protected function getSVGPath($points, $startIndex, $count) {
285 | $offset = 0;
286 | $path = "";
287 |
288 | while ($offset < $count) {
289 | $point = $points[$startIndex + $offset % $count];
290 | $point_p1 = $points[$startIndex + ($offset + 1) % $count];
291 |
292 | if ($offset == 0) {
293 | $path .= "M{$point['x']},{$point['y']} ";
294 | }
295 |
296 | if ($point["onCurve"]) {
297 | if ($point_p1["onCurve"]) {
298 | $path .= "L{$point_p1['x']},{$point_p1['y']} ";
299 | $offset++;
300 | }
301 | else {
302 | $point_p2 = $points[$startIndex + ($offset + 2) % $count];
303 |
304 | if ($point_p2["onCurve"]) {
305 | $path .= "Q{$point_p1['x']},{$point_p1['y']},{$point_p2['x']},{$point_p2['y']} ";
306 | }
307 | else {
308 | $path .= "Q{$point_p1['x']},{$point_p1['y']}," . $this->midValue($point_p1['x'], $point_p2['x']) . "," . $this->midValue($point_p1['y'], $point_p2['y']) . " ";
309 | }
310 |
311 | $offset += 2;
312 | }
313 | }
314 | else {
315 | if ($point_p1["onCurve"]) {
316 | $path .= "Q{$point['x']},{$point['y']},{$point_p1['x']},{$point_p1['y']} ";
317 | }
318 | else {
319 | $path .= "Q{$point['x']},{$point['y']}," . $this->midValue($point['x'], $point_p1['x']) . "," . $this->midValue($point['y'], $point_p1['y']) . " ";
320 | }
321 |
322 | $offset++;
323 | }
324 | }
325 |
326 | $path .= "z ";
327 |
328 | return $path;
329 | }
330 |
331 | function midValue($a, $b) {
332 | return $a + ($b - $a) / 2;
333 | }
334 | }
335 |
--------------------------------------------------------------------------------