ebcdic => [qw( cp37 cp500 cp1047 posix-bc cp1026 cp875 )],
iso => [map {"iso-8859-$_"} 1 .. 11, 13 .. 16],
dos => [qw( cp437 cp865 cp861 cp860 cp863 cp850 cp857 cp852 cp775
- cp737 cp869 cp866 cp855 cp862 cp864 )],
+ cp737 cp869 cp866 MIK cp855 cp862 cp864 )],
aix => [qw( cp1006 )],
win => [qw( cp1252 cp1250 cp1254 cp1257 cp1258 cp1253 cp1251 cp1255 cp1256 cp874 )],
mac => [qw( MacRoman MacRomanian MacRumanian MacCroatian MacCentralEurRoman MacTurkish MacIcelandic MacSami
norteur => [qw( baltic nordic )],
baltic => [qw( iso-8859-4 iso-8859-13 cp1257 cp775 )],
nordic => [qw( iso-8859-10 cp865 cp861 MacIcelandic MacSami )],
- cyrillic => [qw( koi8-r koi8-u koi8-f iso-8859-5 cp1251 MacCyrillic cp866 cp855
+ cyrillic => [qw( koi8-r koi8-u koi8-f iso-8859-5 cp1251 MacCyrillic cp866 MIK cp855
+400 +2DE0 +A640-A69F +500-52F )], # MacUkrainian is broken
arabic => [qw( iso-8859-6 cp1256 MacArabic cp864 cp1006 MacFarsi
+600 +8A0-8BF+8E0 +750-77F )],
},
},
'adobesymbol' => {inherit => ['symbol' => '20-7F+A0', '' => '20-7F+A0']}, # minor differences, irrelevant except for different 'โฌ'
- 'wingdings' => {inherit => ['' => '20'], setup => sub {
- $_[0]->{table} = [(map {chr} 0 .. 0x20), qw(
+ 'wingdings' => {
+ inherit => ['' => '20'],
+ table => [(map {chr} 0 .. 0x20), qw(
๐ โ โ ๐ ๐ญ ๐ฎ ๐ฏ ๐ฟ โ ๐ ๐ ๐ช ๐ซ ๐ฌ ๐ญ ๐ ๐ ๐ ๐ ๐ ๐ โ ๐ฎ ๐ฐ ๐ฒ ๐ณ ๐ด ๐ซ ๐ฌ โ โ
๐ โ ๐ ๐ ๐ โ โ โ โ ๐ โบ ๐ โน ๐ฃ โ ๐ณ ๐ฑ โ โผ ๐ง โ ๐ โ ๐ โ โก โช โฏ เฅ โธ โ โ
โ โ โ โ โ โ โ โ โ โ ๐ฐ ๐ต โ ๐พ โ โก ๐ โ โ โฌง โงซ โ โ โฌฅ โง โฎน โ ๐ต ๐ถ ๐ถ ๐ท \7f
โช โช ๐ ๐ โ โ ๐ฟ โช โป ๐ โฆ โ
โถ โด โน โต โฏ โ โก โ โฏ โช โฐ ๐ ๐ ๐ ๐ ๐ ๐ ๐ ๐ ๐
๐ ๐ ๐ โฎฐ โฎฑ โฎฒ โฎณ โฎด โฎต โฎถ โฎท ๐ช ๐ซ ๐ ๐ ๐ ๐ ๐ ๐ ๐ ๐ โซ โฆ โฎ โฎ โฎ โฎ โฎ โฎ โฎ โฎ ๐กจ
๐กช ๐กฉ ๐กซ ๐กฌ ๐กญ ๐กฏ ๐กฎ ๐กธ ๐กบ ๐กน ๐กป ๐กผ ๐กฝ ๐กฟ ๐กพ โฆ โจ โง โฉ โฌ โณ โฌ โฌ โฌ โฌ ๐ขฌ ๐ขญ ๐ถ โ ๐ท ๐น ๏ฃฟ
- )];
- }},
- 'wingdings2' => {inherit => ['' => '20'], setup => sub {
- $_[0]->{table} = [(map {chr} 0 .. 0x20), qw(
+ )],
+ },
+ 'wingdings2' => {
+ inherit => ['' => '20'],
+ table => [(map {chr} 0 .. 0x20), qw(
๐ ๐ ๐ ๐ โ โ ๐พ ๐ฝ ๐
๐ ๐ ๐ ๐ ๐ ๐ ๐ ๐ ๐ ๐ ๐ ๐ต ๐ถ ๐ท ๐ธ ๐ญ ๐ฏ ๐ฑ ๐ ๐ ๐ ๐
๐ ๐ ๐ ๐ ๐ ๐ ๐ ๐ ๐ ๐ก ๐ ๐ ๐ข ๐ฃ ๐ ๐ด โ ๐ต โ โ โ โฎพ โฎฟ โฆธ โฆธ ๐ฑ ๐ด ๐ฒ ๐ณ โฝ ๐น ๐บ
๐ป ๐ฆ ๐ค ๐ฅ ๐ง ๐ ๐ ๐ ๐ โช โ โก โข โฃ โค โฅ โฆ โง โจ โฉ โฟ โถ โท โธ โน โบ โป โผ โฝ โพ โฟ \7f
โ โผ โฌ โฌ ๐ ๐ ๐ ๐ โฃ ๐ ๐ ๐ โฌฉ โฌฅ โ โ ๐ โ ๐ ๐ ๐ โฌช โฌง โงซ โ ๐ โ โ โฏ โฏ โผ โฌฅ
โฌ โฏ โฌฃ โฌข โฏ โฏ ๐ก ๐ข ๐ฃ ๐ค ๐ฅ ๐ฆ ๐ง ๐จ ๐ฉ ๐ช ๐ซ ๐ฌ ๐ญ ๐ฎ ๐ฏ ๐ฐ ๐ฑ ๐ฒ ๐ณ ๐ด ๐ต ๐ถ ๐ท ๐ธ ๐น ๐บ
๐ป ๐ผ ๐ฝ ๐พ ๐ฟ ๐ ๐ ๐ โฆ ๐ โ
โถ ๐ โท ๐ ๐ โน ๐ ๐ โฏ ๐ ๐ โฏ โฏ โป โ
- )];
- }},
- 'wingdings3' => {inherit => ['' => '20'], setup => sub {
- $_[0]->{table} = [(map {chr} 0 .. 0x20), qw(
+ )],
+ },
+ 'wingdings3' => {
+ inherit => ['' => '20'],
+ table => [(map {chr} 0 .. 0x20), qw(
โญ โญข โญก โญฃ โญฆ โญง โญฉ โญจ โญฐ โญฒ โญฑ โญณ โญถ โญธ โญป โญฝ โญค โญฅ โญช โญฌ โญซ โญญ โญ โฎ โฎก โฎข โฎฃ โฎค โฎฅ โฎฆ โฎง
โฎ โฎ โฎ โฎ โฎ โฎ โญพ โญฟ โฎ โฎ โฎ
โฎ โฎ โฎ โฎ โฎ โญฎ โญฏ โ โค โ โฅ โต โก โช โฎธ ๐ข ๐ขก ๐ขข ๐ขฃ ๐ขค ๐ขฅ
๐ขฆ ๐ขง ๐ขจ ๐ขฉ ๐ขช ๐ขซ โ โ โ โ โ โ โ โ ๐ก ๐ก โฒ โผ โณ โฝ โ โบ โ โท โฃ โข โค โฅ ๐ ๐ ๐ \7f
๐ ๐ ๐ ๐ ๐ ๐ ๐ ข ๐ ค ๐ ฆ ๐ จ ๐ จ ๐ ช ๐ข ๐ข ๐ข ๐ข ๐ ฎ ๐ ฐ ๐ ฒ ๐ ด ๐ ถ ๐ ธ ๐ บ ๐ น ๐ ป ๐ข ๐ข ๐ข ๐ข ๐ ผ ๐ พ ๐ ฝ
๐ ฟ ๐ก ๐ก ๐ก ๐ก ๐ก ๐ก ๐ก
๐ก โฎจ โฎฉ โฎช โฎซ โฎฌ โฎญ โฎฎ โฎฏ ๐ก ๐กข ๐กก ๐กฃ ๐กค ๐กฅ ๐กง ๐กฆ ๐กฐ ๐กฒ ๐กฑ ๐กณ ๐กด ๐กต ๐กท
๐กถ ๐ข ๐ข ๐ข ๐ข ๐ข ๐ข
๐ข ๐ข ๐ข ๐ข ๐ข ๐ข ๐ข ๐ข ๐ข ๐ข
- )];
- }},
- 'webdings' => {inherit => ['' => '20'], setup => sub {
- $_[0]->{table} = [(map {chr} 0 .. 0x20), qw(
+ )],
+ },
+ 'webdings' => {
+ inherit => ['' => '20'],
+ table => [(map {chr} 0 .. 0x20), qw(
๐ท ๐ธ ๐ฒ ๐ถ ๐ ๐ ๐ ๐จ ๐ฉ ๐ฐ ๐ฑ ๐ถ ๐ โ ๐ผ ๐ ๐ ๐ โด โต โถ โท โช โฉ โฎ โญ โธ โน โบ ๐ ๐ณ
๐ ๐ ๐ ๐ ๐ ๐ ๐ญ ๐ ๐ ๐ ๐ ๐ฃ ๐ ๐ ๐ ๐ ๐ ๐ ๐ค ๐ ๐ณ ๐ฌ ๐ซ ๐จ ๐ ๐ ๐ ๐ฌ ๐ฝ ๐ญ ๐ช ๐ซ
โฎ โ ๐ฒ โก ๐ก ๐ฆ ๐ฑ โ ๐ ๐ ๐ฉ ๐ฐ ๐ ๐ด โซ ๐ฅ ๐ ๐ ๐ โ ๐ฒ ๐ ๐ โณ ๐ โ ๐ญ ๐ฎ | ๐ฏ ๐ฒ \7f
๐ต ๐ฐ ๐ฝ ๐พ ๐ ๐ ๐ ๐ ๐ ๐ ๐ ๐ ๐ ๐ผ ๐ญ ๐ ๐ ๐ ๐ง ๐ฟ ๐ ๐ท ๐ ๐ฌ ๐ฝ ๐น ๐พ ๐ป ๐ ๐ ๐บ ๐ป
๐ฅ ๐ฆ ๐ง ๐น ๐ฎ ๐ป ๐ผ ๐ ๐ ๐ ๐จ ๐ฉ ๐ฟ ๐ช ๐ ๐ ๐ ๐ ๐ฅ ๐ค ๐ณ ๐ฃ ๐ค ๐ฅ ๐ฆ โ ๐ง ๐จ ๐ฉ ๐ช ๐ฌ ๐ซ
๐ ๐ก ๐ ๐ ๐ฝ ๐ธ ๐ ๐ โ
โฟ ๐ ๐ ๐ ๐ค ๐ฅ ๐ฆ ๐ง ๐ช ๐ฟ ๐ฆ ๐ ๐ ๐ ๐ฌ ๐ฎ ๐ญ ๐ฏ ๐บ ๐ ๐ ๐ ๐
- )];
- }},
+ )],
+ },
'iso-8859-2' => {inherit => ['iso-8859-1' => 'A0']},
'iso-8859-3' => {inherit => ['iso-8859-1' => 'A0']}, #TODO: also apply to iso-8859-9
'koi8-u' => {inherit => ['koi8-r' => '90-BF']},
'koi8-f' => {inherit => ['koi8-u' => '90-BF']},
+ 'mik' => {
+ inherit => ['cp437' => '80-D8', 'cp866' => 'B0'],
+ table => [(map {chr} 0 .. 0x7F), qw(
+ ะ ะ ะ ะ ะ ะ ะ ะ ะ ะ ะ ะ ะ ะ ะ ะ
+ ะ ะก ะข ะฃ ะค ะฅ ะฆ ะง ะจ ะฉ ะช ะซ ะฌ ะญ ะฎ ะฏ
+ ะฐ ะฑ ะฒ ะณ ะด ะต ะถ ะท ะธ ะน ะบ ะป ะผ ะฝ ะพ ะฟ
+ ั ั ั ั ั ั
ั ั ั ั ั ั ั ั ั ั
+ โ โด โฌ โ โ โผ โฃ โ โ โ โฉ โฆ โ โ โฌ โ
+ โ โ โ โ โค โ ยง โ โ โ โ โ โ โ โ โ
+ ฮฑ ร ฮ ฯ ฮฃ ฯ ยต ฯ ฮฆ ฮ ฮฉ ฮด โ ฯ ฮต โฉ
+ โก ยฑ โฅ โค โ โก รท โ ยฐ โ ยท โ โฟ ยฒ โ
+ ), "\xA0"],
+ },
'macromanian' => {inherit => ['MacRoman' => 'A0-BF+D0-DF']},
'macrumanian' => {inherit => ['MacRomanian' => 'A0-BF+D0-DF', 'MacRoman' => 'A0-BF+D0-DF']},
'cp1026' => {inherit => ['cp37' => '40']},
'cp875' => {inherit => ['cp37' => '30']},
- '' => {setup => sub {
- my $row = shift;
- $row->{offset} = delete $row->{startpoint};
- $row->{set} = 'Unicode characters';
- my $block = $row->{offset} >> 8;
- $row->{endpoint} ||= ($block + 1 << 8) - 1;
- $block == ($row->{endpoint} >> 8) or undef $block;
-
- $row->{table} = join '', map { chr } $row->{offset} .. $row->{endpoint};
- utf8::upgrade($row->{table}); # prevent latin1 output
-
- $row->{endpoint} -= $row->{offset};
-
- if (defined $block) {
- $row->{set} = sprintf 'Unicode block U+%02Xxx', $block;
- $row->{offset} %= 0x100;
- }
-
- return $row;
- }},
- u => {setup => sub {
- my $row = shift;
- state $celldata = do 'charset-unicode.inc.pl'
- or Alert('Table data could not be read', $@ || $!);
- $row->{cell} = $celldata;
-
- $row->{endpoint} ||= 0x1FFF;
- $row->{set} = 'Unicode ' . (
- $row->{startpoint} < 0x1000 && $row->{endpoint} < 0x1000 ? 'BMP' :
- $row->{startpoint} >= 0x1000 && $row->{endpoint} < 0x2000 ? 'SMP' :
- 'allocations'
- );
- return $row;
- }},
- uu => {setup => sub {
- my $row = shift;
- $row->{cell} = do 'charset-ucplanes.inc.pl'
- or Alert('Table data could not be read', $@ || $!);
- $row->{endpoint} ||= 0x3FF;
- $row->{set} = 'Unicode planes';
- return $row;
- }},
- utf8 => {setup => sub {
- my $row = shift;
- $row->{set} = 'UTF-8';
- $row->{cell} = do 'charset-utf8.inc.pl'
- or Alert('Table data could not be read', $@ || $!);
- return $row;
- }},
- 'utf-8' => 'utf8',
+ legacy => [qw( cp437 ATASCII PETSCII MSX ZX-Spectrum ANSEL )],
+ 'petscii' => {
+ inherit => ['' => '40-7F+A0-BF'],
+ table => [(map {chr} 0 .. 0x3F), qw(
+ @ a b c d e f g h i j k l m n o p q r s t u v w x y z [ ยฃ ] โ โ
+ ๐ญน A B C D E F G H I J K L M N O P Q R S T U V W X Y Z โผ ๐ฎ โ ๐ฎ ๐ฎ
+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
+ ย โ โ โ โ โ โ โ ๐ฎ ๐ฎ ๐ฎ โ โ โ โ โ โ โด โฌ โค โ โ ๐ฎ ๐ฎ ๐ฎ โ โ โ โ โ โ โ
+ )],
+ },
+ 'atascii' => {
+ inherit => ['' => '0-1F+60-7F'],
+ table => [qw(
+ โฅ โ ๐ฎ โ โค โ โฑ โฒ โข โ โฃ โ โ ๐ฎ โ โ โฃ โ โ โผ โข โ โ โฌ โด โ โ โ โ โ โ โ
+ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
+ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
+ โฆ a b c d e f g h i j k l m n o p q r s t u v w x y z โ | ๐ขฐ โ โถ
+ )],
+ },
+ 'zx-spectrum' => {
+ inherit => ['' => '50-8F'],
+ set => 'ascii',
+ replace => {
+ ord('^') => 'โ',
+ ord('`') => 'ยฃ',
+ 0x7F => 'ยฉโโโโโโโโโโโโโโโโ',
+ },
+ },
+ 'msx' => {
+ inherit => ['cp437' => '80-FF'],
+ table => [(map {chr} 0 .. 0x7F), qw(
+ ร รผ รฉ รข รค ร รฅ รง รช รซ รจ รฏ รฎ รฌ ร ร
ร รฆ ร รด รถ รฒ รป รน รฟ ร ร ยข ยฃ ยฅ โง ฦ
+ รก รญ รณ รบ รฑ ร ยช ยบ ยฟ โ ยฌ ยฝ ยผ ยก ยซ ยป ร รฃ ฤจ ฤฉ ร รต ลจ ลฉ ฤฒ ฤณ ยพ โฝ โ โฐ ยถ ยง
+ โ โ โ ๐ฎ โฌ ๐ฎ
โ โ โ ๐ฎ ๐ฎ ๐ฎ ๐ฎ ๐ญญ ๐ญฏ ๐ญฌ ๐ญฎ ๐ฎ ๐ฎ โ โ โ โ ๐ฎ ฮ โก ฯ โ โ โ โ โ
+ ฮฑ ร ฮ ฯ ฮฃ ฯ ยต ฯ ฮฆ ฮ ฮฉ ฮด โ โ โ โฉ โก ยฑ โฅ โค โ โก รท โ ยฐ โ ยท โ โฟ ยฒ โ
+ )],
+ },
+ 'brascii' => {
+ inherit => ['' => 'D0-DF+F0-FF'],
+ table => [(map {chr} 0 .. 0xFF)],
+ replace => {
+ 0xD7 => 'ล',
+ 0xF7 => 'ล',
+ },
+ },
+ 'ansel' => {
+ note => '+GEDCOM',
+ inherit => ['' => 'A0-CF+E0-FE'],
+ table => [
+ (undef) x 0xA0,
+ undef, qw( ล ร ฤ ร ร ล สน ยท โญ ยฎ ยฑ ฦ ฦฏ สพ ), undef,
+ qw( สฟ ล รธ ฤ รพ รฆ ล สบ ฤฑ ยฃ รฐ ), undef, qw( ฦก ฦฐ ), undef, undef,
+ qw( ยฐ โ โ ยฉ โฏ ยฟ ยก ), (undef) x 0x19,
+ (map {$_ && chr}
+ 0x309, 0x300, 0x0301, 0x0302, 0x0303, 0x304, 0x306, 0x307,
+ 0x308, 0x30C, 0x030A, 0xFE20, 0xFE21, 0x315, 0x30B, 0x310,
+ 0x327, 0x328, 0x0323, 0x0324, 0x0325, 0x333, 0x332, 0x326,
+ 0x31C, 0x32E, 0xFE22, 0xFE23, undef, undef, 0x313, undef,
+ ),
+ ],
+ replace => {
+ # GEDCOM extensions
+ 0xBE => 'โก',
+ 0xBF => 'โ ',
+ 0xCD => 'e', # endowment?
+ 0xCE => 'o', # ordinance?
+ 0xCF => 'ร',
+ 0xFC => "\x{338}",
+ # MARC21 extensions
+ 0xC7 => 'ร',
+ 0xC8 => 'โฌ',
+ },
+ },
+ 'ti86' => {
+ note => 'similar to TI85',
+ inherit => ['', => '0-1F+80-EC'],
+ table => [
+ undef, qw(
+ ๐ ๐จ ๐ ๐ก โถ โฌ โฌ โซ ร ๐ ๐ ๐ ๐ ๐ ๐
+ โ โปยน ยฒ โ ยฐ สณ แต โค โ โฅ โป แด โ โจ โ โ
+ ),
+ (undef) x 0x60,
+ qw(
+ โ โ โ โ โ โ
โ โ โ โ ร ร ร ร รก ร
+ รข รค ร ร ร ร รฉ รจ รช รซ ร ร ร ร รญ รฌ
+ รฎ รฏ ร ร ร ร รณ รฒ รด รถ ร ร ร ร รบ รน
+ รป รผ ร รง ร รฑ ยด ` ยจ ยฟ ยก ฮฑ ฮฒ ฮณ ฮ ฮด
+ ฯต ฮธ ฮป ฮผ ฯ ฯ ฮฃ ฯ ฯ ฯ ฮฉ xฬ
yฬ
ห โฆ โ
+ โ โ โ ยฒ ยฐ ยณ :โ โง โงต ๐ฝ โฅ โฃ โธ โ โฑ โ
+ โง Aโ aโ _ โงฬฒ Aฬฒ aฬฒ โ โฌ ห ยท โด ๏นฆ
+ ),
+ ],
+ },
+ 'ti89' => {
+ note => 'also TI92(+)',
+ inherit => ['', => '0-1F+7F-BE'],
+ table => [
+ qw(
+ โ โ โ โ โ โ
โ ๐ โซ โฅ ), chr(0xA), qw( โฌ โค โต ๐ โ
+ โ โ โธ โด โพ โ โ โ โ โ โถ โฌ โช โฉ โ โ
+ ),
+ (map {chr} 0x20 .. 0x7E), 'โ',
+ qw(
+ ฮฑ ฮฒ ฮ ฮณ ฮ ฮด ฮต ฮถ ฮธ ฮป ฮพ โ ฯ ฯ โ ฯ
+ ฯ ฯ ฯ ฮฉ ฯ แด โฏ ๐ข สณ แต xฬ
yฬ
โค โ โฅ โ
+ โฆ ยก ยข ยฃ ยค ยฅ ยฆ ยง โ ยฉ ยช ยซ ยฌ โป ยฎ ยฏ
+ ยฐ ยฑ ยฒ ยณ โปยน ยต ยถ ยท โบ ยน ยบ ยป ๐ โซ โ ยฟ
+ ),
+ ],
+ },
};