reference common overview table
'],
stylesheet => [qw'light'],
- data => [qw'charset-unicode.inc.pl charset-utf8.inc.pl'],
+ data => [qw'charset-unicode.inc.pl charset-ucplanes.inc.pl charset-utf8.inc.pl'],
});
my @tablist = split m{/+}, $Request || 'default';
hebrew => [qw( iso-8859-8 cp1255 MacHebrew cp862 U59-5F )],
thai => [qw( iso-8859-11 cp874 MacThai )],
vietnamese => [qw( viscii cp1258 MacVietnamese )],
- symbols => [qw( symbol dingbats MacDingbats )],
+ symbols => [qw( symbol dingbats MacDingbats wingdings wingdings2 wingdings3 webdings )],
# iso-code shorthand
1 => 'westeur',
'AdobeZdingbat'=> ['MacDingbats' => '128-159'], # should be identical but maps to private use
'symbol' => ['' => '32-127+160'],
'AdobeSymbol' => ['symbol' => '32-127+160', '' => '32-127+160'], # minor differences, irrelevant except for different '€'
+ 'wingdings' => ['' => '32'],
+ 'wingdings2' => ['' => '32'],
+ 'wingdings3' => ['' => '32'],
+ 'webdings' => ['' => '32'],
'iso-8859-2' => ['iso-8859-1' => '160'],
'iso-8859-3' => ['iso-8859-1' => '160'], #TODO: also apply to iso-8859-9
}
}
+ if ($input =~ m{ \A (?:wing|web)dings \d* \z }ix) {
+ eval "require Encode::\u$input";
+ }
+
if ($input =~ m{ \A u ([0-9a-f]+) (?:-([0-9a-f]+))? \z }ix) {
my $start = hex($1) << ($2 ? 4 : 8);
my $end = $2 ? (hex($2) << 4) + $row{cols} - 1 : $start + 255;
# substr strings is twice as fast as splitting to an array
$row{table} = Encode::decode($row{set}, pack 'C*', $row{offset} .. $row{endpoint});
}
- $row{endpoint} -= $row{offset};
if ($row{set} eq 'cp437') {
- if ($row{offset} <= 0xED and $row{endpoint} >= 0xED - $row{offset}) {
+ if ($row{offset} <= 0xED and $row{endpoint} >= 0xED) {
# replace phi glyph
substr($row{table}, 0xED - $row{offset}, 1) = 'ϕ';
}
}
}
elsif ($row{set} eq 'symbol') {
- if ($row{offset} <= 0x60 and $row{endpoint} >= 0x60 - $row{offset}) {
+ if ($row{offset} <= 0x60 and $row{endpoint} >= 0x60) {
# replace radical extender by closest unicode equivalent
substr($row{table}, 0x60 - $row{offset}, 1) = '│';
}
- if ($row{offset} <= 0xBD and $row{endpoint} >= 0xFF - $row{offset}) {
+ if ($row{offset} <= 0xBD and $row{endpoint} >= 0xFF) {
substr($row{table}, 0xBD - $row{offset}, 2) = '⏐⎯'; # arrow extenders
substr($row{table}, 0xD2 - $row{offset}, 3) = '®©™'; # serif variants
substr($row{table}, 0xE0 - $row{offset}, 1) = '◊'; # replace lookalike, should match AdobeSymbol
}
}
+ $row{endpoint} -= $row{offset};
+
$visible->{ascii} = # assume common base
$visible->{ $row{set} } = 1;
}