miniwi

tiny 4x8 bitmapped font
Log | Files | Refs | README | LICENSE

commit fe7459a8eb2f8fe0a5480e6ffcf1b30a35ce287d
parent 4df65f9433bd0bfdf56af2f628c9c148bbe3d67d
Author: Josuah Demangeon <josuah.demangeon>
Date:   Wed, 24 Feb 2016 22:33:49 +0100

Added back the conversion script

Diffstat:
Abdf-to-psf/bdf-to-psf | 777+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Abdf-to-psf/box-blocks.set | 46++++++++++++++++++++++++++++++++++++++++++++++
Abdf-to-psf/equivalents | 1158+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Abdf-to-psf/uni-2.set | 1870+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 3851 insertions(+), 0 deletions(-)

diff --git a/bdf-to-psf/bdf-to-psf b/bdf-to-psf/bdf-to-psf @@ -0,0 +1,777 @@ +#!/usr/bin/perl + +# bdf2psf -- convert unicode BDF fonts to Linux console fonts +# Copyright © 2005 Anton Zinoviev <anton@lml.bas.bg> +# Contains code from the bdftopsf.pl utility (Terminus font suite) +# Copyright © 2004 Dimitar Toshkov Zhekov + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# If you have not received a copy of the GNU General Public License +# along with this program, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +use warnings 'all'; +use strict; + +##################################################################### + +# The following positions are used by the mouse driver of FreeBSD. +# They should not be used for any important symbols in the raw fonts. +# Notice: these depend on the way the kernel has been compiled and +# correspond to the option "SC_MOUSE_CHAR=0x03" in the configuration file. +my %freebsd_mouse = (0x03 => 1, 0x04 => 1, 0x05 => 1, 0x06 => 1); + +my $embeded_sfm = 1; # 1 = make font with sfm table, 0 = do not embed sfm table + +sub debug { + if (1) { + print STDERR "@_"; + } +} + +########### ARGUMENTS ############################################### + +if ($ARGV[0] eq "--help" || $ARGV[0] eq "-h") { + print STDERR <<EOT; +Usage: +bdf2psf [--fb|--raw][--log LOG] BDF{+BDF} EQUIV{+EQUIV} SYMB{+[:]SYMB} SIZE PSF [SFM] + +--fb Create font for framebuffer. +--raw Create a raw font (SIZE*8 bytes) +--log A log file for warnings. +BDF{+BDF} A list of BDF fonts. The fonts listed first take precedence + when several fonts define glyphs for same unicode. +EQUIV{+EQUIV} A list of equivalents files. Each non-empty line in these files + contains a list of unicodes to be considered equal (for all of + them only one position number in the PSF will be reserved). +SYMB{+SYMB} Files containing lists of symbols to include in the PSF font. + Unicodes listed first take precedence. When a file name is + preceeded by a colon, no warnings about missing symbols in + the BDF fonts will be issued. +SIZE Create PSF font with how many character positions + (usually 256 or 512). +PSF The new font. If a file with this name already exists, + it will be overwritten +SFM The SFM table of the PSF font. If a file with this name already + exists, it will be overwritten. Optional. +EOT + exit 0 +} + +my $font_type; # 0=framebuffer, 1=text video mode, 2=raw +if ($ARGV[0] eq "--fb") { + $font_type = 0; + shift @ARGV; +} elsif ($ARGV[0] eq "--raw") { + $font_type = 2; + shift @ARGV; +} else { + $font_type = 1; +} + +my $log; # the log file for issued warnings +if ($ARGV[0] eq "--log") { + shift @ARGV; + $ARGV[0] ne "" or die "$0: --log requires a non-empty argument\n"; + $log = $ARGV[0]; + shift @ARGV; +} else { + $log = ""; +} + +open LOG, ">$log" or die "$0: $log: $!\n" if ($log); + +my @bdfs = split /\+/, $ARGV[0]; +my @equivalents = split /\+/, $ARGV[1]; +my @symbols = split /\+/, $ARGV[2]; +my $font_size = $ARGV[3]; +my $psf = $ARGV[4]; +my $sfm = $#ARGV >= 5 ? $ARGV[5] : ""; + +if ($font_size <= 256) { + $font_size = 256; +} elsif ($font_size <= 512) { + $font_size = 512; +} + +$font_size > 0 && $font_size <= 2048 + or die ("$0: zero or too many characters in the PSF font ($font_size)\n"); + +if ($font_type == 1 && $font_size > 512) { + die ("$0: too many characters in " + ."non-framebuffer PSF font ($font_size)\n"); +} + +if ($font_type == 2 && $font_size > 256) { + die ("$0: too many characters in in a raw font ($font_size)\n"); +} + + +########### GLOBAL VARIABLES ######################################### + +my $current_line; # when reading input files (used for error messages) + +my $width; # The width of the font in pixels +my $height; # The height of the font in pixels + +my %glyphs; # unicode -> [the bytes of the glyph matrix] + +my $copy_8th = 1; # copy the 8th column on the 9th +my $dont_copy_8th = 2; # do not copy the 8th column on the 9th +my $doesnt_matter_8th = 3; # it doesn't matter + +my @position_type; # font position -> one of $copy_8th or $dont_copy_8th or 0 + # remembers whether the the graphics adapter copies the + # 8th column to the 9th. 0 means the position is ocupied + +my %types; # unicode -> the type of the glyph (one of $copy_8th, + # $dont_copy_8th or $doesnt_matter_8th) + # Defined only for unicodes in the BDF fonts + +my %broken_pixels; # unicode -> how many pixels in the font matrix of the PSF + # font will not correspond to the original font + +my %equiv; # $u:unicode -> [ the equivalence class containing $u ] + # Used only through &equivalence_class + +my @sfm_table; # $c:font positon -> [ the equivalence class at $c ] + +my @unicode; # position in the PSF font -> unicode in the BDF fonts + +# cp437 -> unicode +my @ascii2u = ( 0xfffd, 0x263a, 0x263b, 0x2665, 0x2666, 0x2663, 0x2660, 0x2022, + 0x25d8, 0x25cb, 0x25d9, 0x2642, 0x2640, 0x266a, 0x266b, 0x263c, + 0x25ba, 0x25c4, 0x2195, 0x203c, 0x00b6, 0x00a7, 0x25ac, 0x21a8, + 0x2191, 0x2193, 0x2192, 0x2190, 0x221f, 0x2194, 0x25b2, 0x25bc, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F, + 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7, + 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5, + 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9, + 0x00FF, 0x00D6, 0x00DC, 0x00A2, 0x00A3, 0x00A5, 0x20A7, 0x0192, + 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA, + 0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, + 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, + 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, + 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567, + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B, + 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, + 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4, + 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229, + 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, + 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0 + ); + +# unicode -> cp437 +my %u2ascii; +for my $i (0..255) { + $u2ascii{$ascii2u[$i]} = $i; +} + +########### FUNCTIONS ############################################### + +sub warning { + print STDERR "WARNING: @_"; + print LOG "WARNING: @_" if ("$log"); +} + +# How many bytes takes one row of the font matrix +sub matrix_row_size { + return ($width + 7) >> 3; +} + +# How many bytes takes the whole matrix of one glyph +sub matrix_size { + return matrix_row_size() * $height; +} + +# $u:unicode -> $u is printable symbol +sub printable { + my $u = $_[0]; + return (($u >= 0x20 && $u <= 0x7e) + || $u >= 0xa0); +} + +# $u:unicode -> [ the equivalence class containing $u ] +# If $u doesn't belong to any class yet create a singleton class +sub equivalence_class { + my $u = $_[0]; + if (! defined $equiv{$u}) { + $equiv{$u} = [ $u ]; + } + return $equiv{$u}; +} + +# $u:unicode -> $u (or equivalent to $u symbol) belongs to the BOX +# DRAWINGS area (hence it probably requires to duplicate the pixels +# from the 8-th column to the 9-th one) +sub is_box_drawings { + my $u = $_[0]; + foreach my $v (@{equivalence_class ($u)}) { + if (($v >= 0x2500 && $v <= 0x2590) || ($v >= 0x2594 && $v <= 0x259f)) { + return 1; + } + } + return 0; +} + +# $u:unicode -> the CP437 code if $u or equivalent to $u symbol is +# a CP437 symbol; 0 otherwise +sub ascii { + my $u = $_[0]; + foreach my $v (@{equivalence_class ($u)}) { + if ($u2ascii{$v}) { + return $u2ascii{$v}; + } + } + return 0; +} + +for my $c (0 ... $font_size - 1) { + $position_type[$c] = $dont_copy_8th; +} +for my $c (0xc0 ... 0xdf) { + $position_type[$c] = $copy_8th; +} +for my $c (0x1c0 ... 0x1df) { + $position_type[$c] = $copy_8th; +} + +# returns a position in the PSF font for a "$dont_copy_8th"-glyph +sub dont_copy_8th_position { + my $u = $_[0]; + if ($broken_pixels{$u}) { + warning sprintf ("U+%04X: %u broken pixel(s)\n", + $u, $broken_pixels{$u}); + } + my $a = ascii($u); + if ($a && $position_type[$a] != 0) { + $position_type[$a] = 0; + return $a; + } + for my $c (0 ... $font_size - 1) { + next if ($font_type == 2 && defined $freebsd_mouse{$c}); + if ($position_type[$c] == $dont_copy_8th) { + $position_type[$c] = 0; + return $c; + } + } + warning sprintf ("U+%04X: can not be positioned properly\n", $u); + for my $c (0 ... $font_size - 1) { + next if ($font_type == 2 && defined $freebsd_mouse{$c}); + if ($position_type[$c] != 0) { + $position_type[$c] = 0; + return $c; + } + } + for my $c (0 ... $font_size - 1) { + if ($position_type[$c] != 0) { + $position_type[$c] = 0; + return $c; + } + } + die "Internal error\n"; +} + +# returns a position in the PSF font for a "$copy_8th"-glyph +sub copy_8th_position { + my $u = $_[0]; + if ($broken_pixels{$u}) { + warning sprintf ("U+%04X: %u broken pixel(s)\n", + $u, $broken_pixels{$u}); + } + my $a = ascii($u); + if ($a && $position_type[$a] != 0) { + $position_type[$a] = 0; + return $a; + } + for my $c (0 ... $font_size - 1) { + next if ($font_type == 2 && defined $freebsd_mouse{$c}); + if ($position_type[$c] == $copy_8th) { + $position_type[$c] = 0; + return $c; + } + } + warning sprintf ("U+%04X: can not be positioned properly\n", $u); + for my $c (0 ... $font_size - 1) { + next if ($font_type == 2 && defined $freebsd_mouse{$c}); + if ($position_type[$c] != 0) { + $position_type[$c] = 0; + return $c; + } + } + for my $c (0 ... $font_size - 1) { + if ($position_type[$c] != 0) { + $position_type[$c] = 0; + return $c; + } + } + die "Internal error\n"; +} + +# returns a position in the PSF font for a "$doesnt_matter_8th"-glyph +sub doesnt_matter_8th_position { + my $u = $_[0]; + if ($broken_pixels{$u}) { + warning sprintf ("U+%04X: %u broken pixel(s)\n", + $u, $broken_pixels{$u}); + } + my $a = ascii($u); + if ($a && $position_type[$a] != 0) { + $position_type[$a] = 0; + return $a; + } + for my $c (0 ... $font_size - 1) { + next if ($font_type == 2 && defined $freebsd_mouse{$c}); + if ($position_type[$c] != 0) { + $position_type[$c] = 0; + return $c; + } + } + for my $c (0 ... $font_size - 1) { + if ($position_type[$c] != 0) { + $position_type[$c] = 0; + return $c; + } + } + die "Internal error\n"; +} + +# how many free positions are left the PSF font +sub free_positions { + my $free = 0; + for my $c (0 ... $font_size - 1) { + if ($position_type[$c] != 0) { + $free++; + } + } + return $free; +} + +# which version of the PSF font format to use +sub version { + return ($width != 8 + || $height >= 256 + || ($font_size != 256 && $font_size != 512)); +} + +########### READ BDFs ################################################ + +for my $bdf (@bdfs) { + my $ascent = 0; + my $descent = 0; + my $averagewidth = 0; + + $current_line = 0; + open (BDF, "$bdf") or die "$0: $bdf: $!\n"; + while (<BDF>) { + $current_line++; + s/^\s*//; + s/\s*$//; + if (/^FONT_ASCENT\s+\"?([0-9]+)\"?$/) { + $ascent = $1; + } + if (/^FONT_DESCENT\s+\"?([0-9]+)\"?$/) { + $descent = $1; + } + if (/^AVERAGE_WIDTH\s+\"?([0-9]+)\"?$/) { + $averagewidth = $1; + } + if (/^CHARS\s+\"?([0-9]+)\"?$/) { + last; + } + } + + if ($height) { + $height == $ascent + $descent + or die ("$0: $bdf: the height is not the same " + ."as in the previous font.\n"); + } else { + $height = $ascent + $descent; + $height > 0 && $height <= 2400 + or die ("$0: $bdf: height $height zero or too big\n"); + } + + $width = 4; + + my @glyph_bytes; + my $u; + my $rows; + my $bbx; + my $beforebox; + my $afterbox; + my $shiftbits; + while (<BDF>) { + $current_line++; + s/^\s*//; + s/\s*$//; + if (/^STARTCHAR/) { + @glyph_bytes = (); + $u = -123456; + $rows = 0; + $bbx = 0; + next; + } + if (/^BBX\s+(-?[0-9]+)\s+(-?[0-9]+)\s+(-?[0-9]+)\s+(-?[0-9]+)$/) { + $beforebox = ($ascent - $4 - $2) * matrix_row_size (); + $afterbox = ($descent + $4) * matrix_row_size (); + $shiftbits = (matrix_row_size () - (($1 + 7) >> 3) ) * 8 - $3; + $bbx = 1; + next; + } + if (/^ENCODING +(.*)/) { + $u = $1; + next; + } + + if (/^(([0-9a-fA-F]{2})+)$/) { + $bbx or die "$0: $bdf: no BBX at line $current_line\n"; + if (length($1) <= 2 * matrix_row_size ()) { + my $row = hex ($1); + if ($shiftbits > 0) { + $row <<= $shiftbits; + } else { + $row >>= -$shiftbits; + } + for my $i (1 ... matrix_row_size ()) { + push (@glyph_bytes, + ($row >> 8 * (matrix_row_size () - $i)) & 0xff); + } + $rows++; + } else { + $rows = -123456; + } + next; + } + if (/^ENDCHAR/) { + if ($rows >= 0) { + $rows == $height - ($beforebox + $afterbox) / matrix_row_size () + or die ("$0: $bdf: invalid number of rows $rows " + ."at line $current_line\n"); + if ($u == -123456) { + die ("$0: $bdf: missing ENCODING before ENDCHAR " + ."at line $current_line\n"); + } + if (! defined $glyphs{$u}) { + if ($beforebox < 0) { + @glyph_bytes = @glyph_bytes[-$beforebox..$#glyph_bytes]; + } + if ($afterbox < 0) { + @glyph_bytes = @glyph_bytes[0 .. $#glyph_bytes+$afterbox]; + } + $glyphs{$u} = [ (0) x $beforebox, + @glyph_bytes, + (0) x $afterbox]; + } + } + } + if (/^ENDFONT$/) { + last; + } + } + + close BDF; +} + +########### COMPUTE THE TYPE OF EACH GLYPH ########################## + +if ($font_type == 0) { + foreach my $u (keys %glyphs) { + $types{$u} = $doesnt_matter_8th; + } +} elsif ($font_type == 2) { + foreach my $u (keys %glyphs) { + # not the best possible assignment + $types{$u} = $dont_copy_8th; + } +} elsif ($width == 7) { + foreach my $u (keys %glyphs) { + $types{$u} = $doesnt_matter_8th; + if (is_box_drawings ($u)) { + for my $i (0 ... $height - 1) { + if ($glyphs{$u}[$i] & 0x02) { + $glyphs{$u}[$i] = $glyphs{$u}[$i] | 0x01; + $types{$u} = $copy_8th; + } + } + } + } + $width = 8; +} elsif ($width == 8) { + foreach my $u (keys %glyphs) { + $types{$u} = $doesnt_matter_8th; + for my $i (0 ... $height - 1) { + if ($glyphs{$u}[$i] & 0x01) { + if (is_box_drawings ($u)) { + $types{$u} = $copy_8th; + } else { + $types{$u} = $dont_copy_8th; + } + } + } + } +} elsif ($width == 9) { + foreach my $u (keys %glyphs) { + my $pixels9 = 0; + my $copyed = 0; + my $different = 0; + for my $i (0 ... $height - 1) { + if (($glyphs{$u}[2 * $i] & 0x01) + && ! ($glyphs{$u}[2 * $i + 1] & 0x80)) { + $different++; + } + if ($glyphs{$u}[2 * $i + 1] & 0x80) { + $pixels9++; + if (! ($glyphs{$u}[2 * $i] & 0x01)) { + $glyphs{$u}[2 * $i] = $glyphs{$u}[2 * $i] | 0x01; + $copyed++; + } + } + } + if ($different < $pixels9) { + $types{$u} = $copy_8th; + $broken_pixels{$u} = $different + $copyed; + } elsif ($different > $pixels9) { + $types{$u} = $dont_copy_8th; + $broken_pixels{$u} = $pixels9 + $copyed; + } else { + $types{$u} = $doesnt_matter_8th; + $broken_pixels{$u} = $pixels9 + $copyed; + } + for my $i (0 ... $height - 1) { + $glyphs{$u}[$i] = $glyphs{$u}[2 * $i]; + } + } + $width = 8; +} else { + die "$0: Bad symbols width for non-framebuffer font: $width\n"; +} + +########### COMPUTE EQUIVALENCE CLASSES ################################### + +for my $equivalent (@equivalents) { + $current_line = 0; + open EQUIVALENT, $equivalent or die "$0: $equivalent: $!\n"; + while (<EQUIVALENT>) { + $current_line++; + s/#.*//; + s/^[[:space:]]*//; + next if /^$/; + my $u = 0; + while (/^U\+([0-9a-fA-F]{1,4})[[:space:]]+(.*)/) { + if (printable (hex($1))) { + $u = hex ($1); + $_ = $2; + last; + } + $_ = $2; + } + next if $u == 0; + + if (! defined $equiv{$u}) { + $equiv{$u} = [ $u ]; + } + while (/^U\+([0-9a-fA-F]+)[[:space:]]*(.*)/) { + my $v = hex ($1); + next if (! printable ($v)); + if (! defined $equiv{$v}) { + unshift @{$equiv{$u}}, $v; + $equiv{$v} = $equiv{$u}; + } elsif ($equiv{$u} != $equiv{$v}) { + my @vv = @{$equiv{$v}}; + while (my $w = shift @vv) { + unshift @{$equiv{$u}}, $w; + $equiv{$w} = $equiv{$u}; + } + } else { + unshift @{$equiv{$u}}, $v; + } + $_ = $2; + } + if (/./) { + die "$0: $equivalent: syntax error on line $current_line: $_\n"; + } + } + close EQUIVALENT; +} + +########### COMPUTE SFM ################################################ + +my @requested; +my %issue_warnings; +my @delayed; +my %positioned; + +for my $symbolfile (@symbols) { + my $warnings = ! ($symbolfile =~ s/^://); + $current_line = 0; + open SYMBOLS, $symbolfile or die "$0: $symbolfile: $!\n"; + while (<SYMBOLS>) { + $current_line++; + s/#.*//; + s/^[[:space:]]*//; + next if /^$/; + /^U\+([0-9a-fA-F]+)[[:space:]]*$/ + or die "$0: $symbolfile: syntax error on line $current_line: $_\n"; + my $u = hex ($1); + push @requested, $u; + $issue_warnings{$u} = 1 if ($warnings); + } + close SYMBOLS; +} + +for my $u (@requested) { + next if ($positioned{$u}); + next if (! printable ($u)); + my $defined_glyph = 0; + if (@delayed < free_positions ()) { + foreach my $v (@{equivalence_class ($u)}) { + next if ! defined $glyphs{$v}; + $defined_glyph = 1; + if ($types{$v} == $dont_copy_8th) { + my $position = dont_copy_8th_position ($v); + $sfm_table[$position] = equivalence_class ($v); + } elsif ($types{$v} == $copy_8th) { + my $position = copy_8th_position ($v); + $sfm_table[$position] = equivalence_class ($v); + } elsif (ascii($v)) { + my $position = doesnt_matter_8th_position ($v); + $sfm_table[$position] = equivalence_class ($v); + } else { + push @delayed, $v; + } + foreach my $w (@{equivalence_class ($u)}) { + $positioned{$w} = 1; + } + last; + } + if (! $defined_glyph && $font_type == 2) { + my $position = dont_copy_8th_position ($u); + $sfm_table[$position] = equivalence_class ($u); + foreach my $w (@{equivalence_class ($u)}) { + $positioned{$w} = 1; + } + } + } + if (defined $issue_warnings{$u} && ! $positioned{$u}) { + if ($defined_glyph) { + warning sprintf ("U+%04X: no space in the font\n", $u); + } else { + warning sprintf ("U+%04X: no glyph defined\n", $u); + } + } +} + +foreach my $u (@delayed) { + my $position = doesnt_matter_8th_position ($u); + $sfm_table[$position] = equivalence_class ($u); +} + +if ($sfm) { + open SFM, ">$sfm" or die "$0: $sfm: $!\n"; + for my $c (0 ... $font_size - 1) { + printf SFM "0x%02x ", $c; + foreach my $u (@{$sfm_table[$c]}) { + printf SFM " U+%04x", $u; + } + print SFM "\n"; + } + close SFM; +} + +######### WRITE PSF ############################################## + +for my $c (0 ... $font_size - 1) { + foreach my $u (@{$sfm_table[$c]}) { + if (! defined $unicode[$c] && defined $glyphs{$u}) { + $unicode[$c] = $u; + last; + } + } +} + +open (PSF, ">$psf") || die ("$0: $psf: $!\n"); +binmode (PSF) || die ("$0: $psf: $!\n"); + +if ($font_type != 2) { + if (version () == 0) { + printf PSF "%c%c", 0x36, 0x04; + printf PSF "%c%c", ($font_size == 512) + $embeded_sfm * 2, $height; + } else { + printf PSF "%c%c%c%c", 0x72, 0xB5, 0x4A, 0x86; + printf PSF "%c%c%c%c", 0x00, 0x00, 0x00, 0x00; + printf PSF "%c%c%c%c", 0x20, 0x00, 0x00, 0x00; + printf PSF "%c", $embeded_sfm; + printf PSF "%c%c%c", 0x00, 0x00, 0x00; + printf PSF "%c%c", $font_size & 0xFF, $font_size >> 8; + printf PSF "%c%c", 0x00, 0x00; + printf PSF "%c%c%c", matrix_size () & 0xFF, + (matrix_size () >> 8) + & 0xFF, matrix_size () >> 16; + printf PSF "%c", 0x00; + printf PSF "%c%c", $height & 0xFF, $height >> 8; + printf PSF "%c%c", 0x00, 0x00; + printf PSF "%c%c", $width & 0xFF, $width >> 8; + printf PSF "%c%c", 0x00, 0x00; + } +} + +for my $c (0 ... $font_size - 1) { + for my $i (0 ... matrix_size () - 1) { + if (defined $unicode[$c]) { + printf PSF "%c", $glyphs{$unicode[$c]}[$i]; + } else { + printf PSF "%c", int(rand(256)); + } + } +} + +if ($font_type != 2 && $embeded_sfm) { + for my $c (0 ... $font_size - 1) { + if (defined $sfm_table[$c]) { + foreach (@{$sfm_table[$c]}) { + if (version () == 0) { + printf PSF "%c%c", $_ & 0xFF, $_ >> 8; + } elsif ($_ <= 0x7F) { + printf PSF "%c", $_; + } else { + if ($_ <= 0x7FF) { + printf PSF "%c", 0xC0 + ($_ >> 6); + } else { + printf PSF "%c", 0xE0 + ($_ >> 12); + printf PSF "%c", 0x80 + (($_ >> 6) & 0x3F); + } + printf PSF "%c", 0x80 + ($_ & 0x3F); + } + } + } + printf PSF "%c", 0xFF; + if (version () == 0) { + printf PSF "%c", 0xFF; + } + } +} + +close PSF; + +close LOG; diff --git a/bdf-to-psf/box-blocks.set b/bdf-to-psf/box-blocks.set @@ -0,0 +1,46 @@ +U+2500 # BOX DRAWINGS LIGHT HORIZONTAL +U+2502 # BOX DRAWINGS LIGHT VERTICAL +U+250C # BOX DRAWINGS LIGHT DOWN AND RIGHT +U+2510 # BOX DRAWINGS LIGHT DOWN AND LEFT +U+2514 # BOX DRAWINGS LIGHT UP AND RIGHT +U+2518 # BOX DRAWINGS LIGHT UP AND LEFT +U+251C # BOX DRAWINGS LIGHT VERTICAL AND RIGHT +U+2524 # BOX DRAWINGS LIGHT VERTICAL AND LEFT +U+252C # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL +U+2534 # BOX DRAWINGS LIGHT UP AND HORIZONTAL +U+253C # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL +U+2571 # BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT +U+2572 # BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT +U+2573 # BOX DRAWINGS LIGHT DIAGONAL CROSS +U+2591 # LIGHT SHADE +U+2592 # MEDIUM SHADE +U+2593 # DARK SHADE +U+2580 # UPPER HALF BLOCK +U+2584 # LOWER HALF BLOCK +U+258C # LEFT HALF BLOCK +U+2590 # RIGHT HALF BLOCK +U+2596 # QUADRANT LOWER LEFT +U+2597 # QUADRANT LOWER RIGHT +U+2598 # QUADRANT UPPER LEFT +U+2599 # QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT +U+259A # QUADRANT UPPER LEFT AND LOWER RIGHT +U+259B # QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT +U+259C # QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT +U+259D # QUADRANT UPPER RIGHT +U+259E # QUADRANT UPPER RIGHT AND LOWER LEFT +U+259F # QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT +U+2581 # LOWER ONE EIGHTH BLOCK +U+2582 # LOWER ONE QUARTER BLOCK +U+2583 # LOWER THREE EIGHTHS BLOCK +U+2585 # LOWER FIVE EIGHTHS BLOCK +U+2586 # LOWER THREE QUARTERS BLOCK +U+2587 # LOWER SEVEN EIGHTHS BLOCK +U+2588 # FULL BLOCK +U+2589 # LEFT SEVEN EIGHTHS BLOCK +U+258A # LEFT THREE QUARTERS BLOCK +U+258B # LEFT FIVE EIGHTHS BLOCK +U+258D # LEFT THREE EIGHTHS BLOCK +U+258E # LEFT ONE QUARTER BLOCK +U+258F # LEFT ONE EIGHTH BLOCK +U+2594 # UPPER ONE EIGHTH BLOCK +U+2595 # RIGHT ONE EIGHTH BLOCK diff --git a/bdf-to-psf/equivalents b/bdf-to-psf/equivalents @@ -0,0 +1,1158 @@ +# Personnal equivalents (Josuah "sshbio" Demangeon) +#------------------------------------------------------------------------------- + + +# BOX DRAWINGS HEAVY + +U+2574 U+2578 U+2576 U+257A U+257C U+257E U+2504 U+2505 U+2508 U+2509 U+254C U+254D U+2509 U+2508 U+2550 U+2501 U+2500 +# U+2574: BOX DRAWINGS LIGHT LEFT +# U+2578: BOX DRAWINGS HEAVY LEFT +# U+2576: BOX DRAWINGS LIGHT RIGHT +# U+257A: BOX DRAWINGS HEAVY RIGHT +# U+257C: BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT +# U+257E: BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT +# U+254C: BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL +# U+254D: BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL +# U+2504: BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL +# U+2505: BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL +# U+2508: BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL +# U+2509: BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL +# U+2550: BOX DRAWINGS DOUBLE HORIZONTAL +# U+2501: BOX DRAWINGS HEAVY HORIZONTAL +# U+2500: BOX DRAWINGS LIGHT HORIZONTAL +U+2575 U+2579 U+2577 U+257B U+257D U+257F U+2506 U+2507 U+250A U+250B U+2551 U+254F U+254E U+2503 U+2502 +# U+2575: BOX DRAWINGS LIGHT UP +# U+2579: BOX DRAWINGS HEAVY UP +# U+2577: BOX DRAWINGS LIGHT DOWN +# U+257B: BOX DRAWINGS HEAVY DOWN +# U+257D: BOX DRAWINGS LIGHT UP AND HEAVY DOWN +# U+257F: BOX DRAWINGS HEAVY UP AND LIGHT DOWN +# U+254F: BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL +# U+254E: BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL +# U+2507: BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL +# U+2506: BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL +# U+250B: BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL +# U+250A: BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL +# U+2551: BOX DRAWINGS DOUBLE VERTICAL +# U+2503: BOX DRAWINGS HEAVY VERTICAL +# U+2502: BOX DRAWINGS LIGHT VERTICAL +U+250D U+250E U+2552 U+2553 U+2554 U+256D U+250F U+250C +# U+250D: BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY +# U+250E: BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT +# U+2552: BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE +# U+2553: BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE +# U+2554: BOX DRAWINGS DOUBLE DOWN AND RIGHT +# U+256D: BOX DRAWINGS LIGHT ARC DOWN AND RIGHT +# U+250F: BOX DRAWINGS HEAVY DOWN AND RIGHT +# U+250C: BOX DRAWINGS LIGHT DOWN AND RIGHT +U+2511 U+2512 U+2555 U+2556 U+2557 U+256E U+2513 U+2510 +# U+2511: BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY +# U+2512: BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT +# U+2555: BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE +# U+2556: BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE +# U+2557: BOX DRAWINGS DOUBLE DOWN AND LEFT +# U+256E: BOX DRAWINGS LIGHT ARC DOWN AND LEFT +# U+2513: BOX DRAWINGS HEAVY DOWN AND LEFT +# U+2510: BOX DRAWINGS LIGHT DOWN AND LEFT +U+2515 U+2516 U+2558 U+2559 U+255A U+2570 U+2517 U+2514 +# U+2515: BOX DRAWINGS UP LIGHT AND RIGHT HEAVY +# U+2516: BOX DRAWINGS UP HEAVY AND RIGHT LIGHT +# U+2558: BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE +# U+2559: BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE +# U+255A: BOX DRAWINGS DOUBLE UP AND RIGHT +# U+2570: BOX DRAWINGS LIGHT ARC UP AND RIGHT +# U+2517: BOX DRAWINGS HEAVY UP AND RIGHT +# U+2514: BOX DRAWINGS LIGHT UP AND RIGHT +U+2519 U+251A U+255B U+255C U+255D U+256F U+251B U+2518 +# U+2519: BOX DRAWINGS UP LIGHT AND LEFT HEAVY +# U+251A: BOX DRAWINGS UP HEAVY AND LEFT LIGHT +# U+255B: BOX DRAWINGS UP SINGLE AND LEFT DOUBLE +# U+255C: BOX DRAWINGS UP DOUBLE AND LEFT SINGLE +# U+255D: BOX DRAWINGS DOUBLE UP AND LEFT +# U+256F: BOX DRAWINGS LIGHT ARC UP AND LEFT +# U+251B: BOX DRAWINGS HEAVY UP AND LEFT +# U+2518: BOX DRAWINGS LIGHT UP AND LEFT +U+251D U+251E U+251F U+2520 U+2521 U+2522 U+255E U+255F U+2560 U+2523 U+251C +# U+251D: BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY +# U+251E: BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT +# U+251F: BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT +# U+2520: BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT +# U+2521: BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY +# U+2522: BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY +# U+255E: BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE +# U+255F: BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE +# U+2560: BOX DRAWINGS DOUBLE VERTICAL AND RIGHT +# U+2523: BOX DRAWINGS HEAVY VERTICAL AND RIGHT +# U+251C: BOX DRAWINGS LIGHT VERTICAL AND RIGHT +U+2525 U+2526 U+2527 U+2528 U+2529 U+252A U+2561 U+2562 U+2563 U+252B U+2524 +# U+2525: BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY +# U+2526: BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT +# U+2527: BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT +# U+2528: BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT +# U+2529: BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY +# U+252A: BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY +# U+2561: BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE +# U+2562: BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE +# U+2563: BOX DRAWINGS DOUBLE VERTICAL AND LEFT +# U+252B: BOX DRAWINGS HEAVY VERTICAL AND LEFT +# U+2524: BOX DRAWINGS LIGHT VERTICAL AND LEFT +U+252D U+252E U+252F U+2530 U+2531 U+2532 U+2564 U+2565 U+2566 U+2533 U+252C +# U+252D: BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT +# U+252E: BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT +# U+252F: BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY +# U+2530: BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT +# U+2531: BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY +# U+2532: BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY +# U+2564: BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE +# U+2565: BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE +# U+2566: BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL +# U+2533: BOX DRAWINGS HEAVY DOWN AND HORIZONTAL +# U+252C: BOX DRAWINGS LIGHT DOWN AND HORIZONTAL +U+2535 U+2536 U+2537 U+2538 U+2539 U+253A U+2567 U+2568 U+2569 U+253B U+2534 +# U+2535: BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT +# U+2536: BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT +# U+2537: BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY +# U+2538: BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT +# U+2539: BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY +# U+253A: BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY +# U+2567: BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE +# U+2568: BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE +# U+2569: BOX DRAWINGS DOUBLE UP AND HORIZONTAL +# U+253B: BOX DRAWINGS HEAVY UP AND HORIZONTAL +# U+2534: BOX DRAWINGS LIGHT UP AND HORIZONTAL +U+253D U+253E U+253F U+2540 U+2541 U+2542 U+2543 U+2544 U+2545 U+2546 U+2547 U+2548 U+2549 U+254A U+256A U+256B U+256C U+254B U+253C +# U+253D: BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT +# U+253E: BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT +# U+253F: BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY +# U+2540: BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT +# U+2541: BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT +# U+2542: BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT +# U+2543: BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT +# U+2544: BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT +# U+2545: BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT +# U+2546: BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT +# U+2547: BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY +# U+2548: BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY +# U+2549: BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY +# U+254A: BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY +# U+256A: BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE +# U+256B: BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE +# U+256C: BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL +# U+254B: BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL +# U+253C: BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL + + +# Standard equivalents from bdf2psf debian package +#------------------------------------------------------------------------------- + +# When the source font supports several symbols from a class, the last +# supported symbol is used. +# +# History: +# +# 2005-07-04 Initial version based on xos4-2.dup file from the suite +# of the Terminus font - © Dimitar Toshkov Zhekov (GPL) +# with changes. +# 2005-07-08 Add Kelvin sign = K +# 2005-07-12 1. Use U+003F (QUESTION MARK) as U+FFFD (REPLACEMENT CHARACTER) +# 2. Approximate the Kelvin sign by the letter K, +# not the letter K by the Kelvin sign +# 3. Add Angstrom sign (U+212B) = A with dot above (U+00C5) +# 2006-01-14 Use U+2666 (BLACK DIAMOND SUIT) instead of the question mark +# as U+FFFD (REPLACEMENT CHARACTER). It seems that all +# current fonts support the diamond suit. +# 2006-10-20 1. Add some capital Greek letters +# 2. Approximate U+2501 (BOX DRAWINGS HEAVY HORIZONTAL) by +# U+2500 (BOX DRAWINGS LIGHT HORIZONTAL) +# 2006-10-26 Approximate some symbols used by popular applications: +# 1. Use the black square (U+25A0, required symbol) as +# approximation for the black vertical rectangle +# (U+25AE) +# 2. Use the bullet (U+2022) to approximate the black +# circle (U+25CF). It seems all current fonts support +# the bullet. +# 3. Use the up-, down-, right- and leftwards arrows +# (U+2190-U+2193) as approximations for the triangles +# (U+25B2, U+25B6, U+25BC and U+25C0). +# 4. Use the light horizontal line (U+2500, a required +# symbol) as approximation for the heavy horizontal +# line (U+2501) +# 5. Use the left- and right-pointing double angle +# quotation marks as approximation for the signs much +# less-than and much greater-than. All current fonts +# support these quotation marks. +# 2009-07-07 U+0F0B (TIBETAN MARK INTERSYLLABIC TSHEG) = +# = U+0F0C (TIBETAN MARK DELIMITER TSHEG BSTAR) +# 2009-11-20 Add approximations for rudimentary support of toilet-fonts: +# 1. Cyrcled symbols. +# 2. Box drawings heavy. +# 2009-12-7 Add approximations for some symbols, required by mc +# (white diamond, containing black small diamond and black +# small triangles) + +# SOME EXPERIMENTAL NOT VERY ACURATE APPROXIMATIONS +# For symbols used by some popular slang, dialog, whiptail, and +# curses-based applications. + +U+25CF U+2022 +# U+25CF: BLACK CIRCLE +# U+2022: BULLET +U+25AE U+25A0 +# U+25AE: BLACK VERTICAL RECTANGLE +# U+25A0: BLACK SQUARE +U+25B4 U+25B2 U+2191 +# U+25B4: BLACK UP-POINTING SMALL TRIANGLE +# U+25B2: BLACK UP-POINTING TRIANGLE +# U+2191: UPWARDS ARROW +U+25BE U+25BC U+2193 +# U+25BE: BLACK DOWN-POINTING SMALL TRIANGLE +# U+25BC: BLACK DOWN-POINTING TRIANGLE +# U+2193: DOWNWARDS ARROW +U+25C2 U+25C0 U+2190 +# U+25C2: BLACK LEFT-POINTING SMALL TRIANGLE +# U+25C0: BLACK LEFT-POINTING TRIANGLE +# U+2190: LEFTWARDS ARROW +U+25B8 U+25B6 U+2192 +# U+25B8: BLACK RIGHT-POINTING SMALL TRIANGLE +# U+25B6: BLACK RIGHT-POINTING TRIANGLE +# U+2192: RIGHTWARDS ARROW +U+226A U+00AB +# U+226A: MUCH LESS-THAN +# U+00AB: LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +U+226B U+00BB +# U+226B: MUCH GREATER-THAN +# U+00BB: RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK + + +# CYRCLED SYMBOLS + +U+2295 U+0025 +# U+2295: CIRCLED PLUS +# U+0025: PERCENT SIGN +U+2298 U+002F +# U+2298: CIRCLED DIVISION SLASH +# U+002F: SOLIDUS +U+2299 U+002E +# U+2299: CIRCLED DOT OPERATOR +# U+002E: FULL STOP +U+229B U+002A +# U+229B: CIRCLED ASTERISK OPERATOR +# U+002A: ASTERISK +U+229C U+003D +# U+229C: CIRCLED EQUALS +# U+003D: EQUALS SIGN +U+24EA U+0030 +# U+24EA: CIRCLED DIGIT ZERO +# U+0030: DIGIT ZERO +U+2460 U+0031 +# U+2460: CIRCLED DIGIT ONE +# U+0031: DIGIT ONE +U+2461 U+0032 +# U+2461: CIRCLED DIGIT TWO +# U+0032: DIGIT TWO +U+2462 U+0033 +# U+2462: CIRCLED DIGIT THREE +# U+0033: DIGIT THREE +U+2463 U+0034 +# U+2463: CIRCLED DIGIT FOUR +# U+0034: DIGIT FOUR +U+2464 U+0035 +# U+2464: CIRCLED DIGIT FIVE +# U+0035: DIGIT FIVE +U+2465 U+0036 +# U+2465: CIRCLED DIGIT SIX +# U+0036: DIGIT SIX +U+2466 U+0037 +# U+2466: CIRCLED DIGIT SEVEN +# U+0037: DIGIT SEVEN +U+2467 U+0038 +# U+2467: CIRCLED DIGIT EIGHT +# U+0038: DIGIT EIGHT +U+2468 U+0039 +# U+2468: CIRCLED DIGIT NINE +# U+0039: DIGIT NINE +U+24B9 U+0044 +# U+24B9: CIRCLED LATIN CAPITAL LETTER D +# U+0044: LATIN CAPITAL LETTER D +U+24BB U+0046 +# U+24BB: CIRCLED LATIN CAPITAL LETTER F +# U+0046: LATIN CAPITAL LETTER F +U+24BC U+0047 +# U+24BC: CIRCLED LATIN CAPITAL LETTER G +# U+0047: LATIN CAPITAL LETTER G +U+24C1 U+004C +# U+24C1: CIRCLED LATIN CAPITAL LETTER L +# U+004C: LATIN CAPITAL LETTER L +U+24C6 U+0051 +# U+24C6: CIRCLED LATIN CAPITAL LETTER Q +# U+0051: LATIN CAPITAL LETTER Q +U+24C7 U+0052 +# U+24C7: CIRCLED LATIN CAPITAL LETTER R +# U+0052: LATIN CAPITAL LETTER R +U+24CA U+0055 +# U+24CA: CIRCLED LATIN CAPITAL LETTER U +# U+0055: LATIN CAPITAL LETTER U +U+24CB U+0056 +# U+24CB: CIRCLED LATIN CAPITAL LETTER V +# U+0056: LATIN CAPITAL LETTER V +U+24CC U+0057 +# U+24CC: CIRCLED LATIN CAPITAL LETTER W +# U+0057: LATIN CAPITAL LETTER W +U+24D1 U+0062 +# U+24D1: CIRCLED LATIN SMALL LETTER B +# U+0062: LATIN SMALL LETTER B +U+24D3 U+0064 +# U+24D3: CIRCLED LATIN SMALL LETTER D +# U+0064: LATIN SMALL LETTER D +U+24D5 U+0066 +# U+24D5: CIRCLED LATIN SMALL LETTER F +# U+0066: LATIN SMALL LETTER F +U+24D6 U+0067 +# U+24D6: CIRCLED LATIN SMALL LETTER G +# U+0067: LATIN SMALL LETTER G +U+24D7 U+0068 +# U+24D7: CIRCLED LATIN SMALL LETTER H +# U+0068: LATIN SMALL LETTER H +U+24DA U+006B +# U+24DA: CIRCLED LATIN SMALL LETTER K +# U+006B: LATIN SMALL LETTER K +U+24DB U+006C +# U+24DB: CIRCLED LATIN SMALL LETTER L +# U+006C: LATIN SMALL LETTER L +U+24DC U+006D +# U+24DC: CIRCLED LATIN SMALL LETTER M +# U+006D: LATIN SMALL LETTER M +U+24DD U+006E +# U+24DD: CIRCLED LATIN SMALL LETTER N +# U+006E: LATIN SMALL LETTER N +U+24E0 U+0071 +# U+24E0: CIRCLED LATIN SMALL LETTER Q +# U+0071: LATIN SMALL LETTER Q +U+24E1 U+0072 +# U+24E1: CIRCLED LATIN SMALL LETTER R +# U+0072: LATIN SMALL LETTER R +U+24E2 U+0073 +# U+24E2: CIRCLED LATIN SMALL LETTER S +# U+0073: LATIN SMALL LETTER S +U+24E3 U+0074 +# U+24E3: CIRCLED LATIN SMALL LETTER T +# U+0074: LATIN SMALL LETTER T +U+24E4 U+0075 +# U+24E4: CIRCLED LATIN SMALL LETTER U +# U+0075: LATIN SMALL LETTER U +U+24E5 U+0076 +# U+24E5: CIRCLED LATIN SMALL LETTER V +# U+0076: LATIN SMALL LETTER V +U+24E6 U+0077 +# U+24E6: CIRCLED LATIN SMALL LETTER W +# U+0077: LATIN SMALL LETTER W +U+24E9 U+007A +# U+24E9: CIRCLED LATIN SMALL LETTER Z +# U+007A: LATIN SMALL LETTER Z + + +# STANDARD APPROXIMATIONS + +U+FFFD U+25C8 U+2666 +# U+FFFD: REPLACEMENT CHARACTER +# U+25C8: WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND +# U+2666: BLACK DIAMOND SUIT +U+200A U+2009 U+2008 U+2007 U+2006 U+2005 U+2004 U+2003 U+2002 U+2001 U+2000 U+00A0 U+0020 +# U+200A: HAIR SPACE +# U+2009: THIN SPACE +# U+2008: PUNCTUATION SPACE +# U+2007: FIGURE SPACE +# U+2006: SIX-PER-EM SPACE +# U+2005: FOUR-PER-EM SPACE +# U+2004: THREE-PER-EM SPACE +# U+2003: EM SPACE +# U+2002: EN SPACE +# U+2001: EM QUAD +# U+2000: EN QUAD +# U+00A0: NO-BREAK SPACE +# U+0020: SPACE +U+2296 U+2011 U+2010 U+00AD U+2212 U+2013 U+2012 U+002D +# U+2296: CIRCLED MINUS +# U+2011: NON-BREAKING HYPHEN +# U+2010: HYPHEN +# U+00AD: SOFT HYPHEN +# U+2212: MINUS SIGN +# U+2013: EN DASH +# U+2012: FIGURE DASH +# U+002D: HYPHEN-MINUS +U+2015 U+2014 +# U+2015: HORIZONTAL BAR +# U+2014: EM DASH +U+02C9 U+00AF +# U+02C9: MODIFIER LETTER MACRON +# U+00AF: MACRON +U+03BC U+00B5 +# U+03BC: GREEK SMALL LETTER MU +# U+00B5: MICRO SIGN +U+2126 U+03A9 +# U+2126: OHM SIGN +# U+03A9: GREEK CAPITAL LETTER OMEGA +U+041F U+03A0 +# U+041F: CYRILLIC CAPITAL LETTER PE +# U+03A0: GREEK CAPITAL LETTER PI +U+0424 U+03A6 +# U+0424: CYRILLIC CAPITAL LETTER EF +# U+03A6: GREEK CAPITAL LETTER PHI +U+212B U+00C5 +# U+212B: ANGSTROM SIGN +# U+00C5: LATIN CAPITAL LETTER A WITH RING ABOVE +U+0110 U+00D0 # ??? +# U+0110: LATIN CAPITAL LETTER D WITH STROKE +# U+00D0: LATIN CAPITAL LETTER ETH +U+0394 U+2206 +# U+0394: GREEK CAPITAL LETTER DELTA +# U+2206: INCREMENT +U+0413 U+0393 +# U+0413: CYRILLIC CAPITAL LETTER GHE +# U+0393: GREEK CAPITAL LETTER GAMMA +U+24B6 U+0391 U+0410 U+0041 +# U+24B6: CIRCLED LATIN CAPITAL LETTER A +# U+0391: GREEK CAPITAL LETTER ALPHA +# U+0410: CYRILLIC CAPITAL LETTER A +# U+0041: LATIN CAPITAL LETTER A +U+24B7 U+0392 U+0412 U+0042 +# U+24B7: CIRCLED LATIN CAPITAL LETTER B +# U+0392: GREEK CAPITAL LETTER BETA +# U+0412: CYRILLIC CAPITAL LETTER VE +# U+0042: LATIN CAPITAL LETTER B +U+24B8 U+0421 U+0043 +# U+24B8: CIRCLED LATIN CAPITAL LETTER C +# U+0421: CYRILLIC CAPITAL LETTER ES +# U+0043: LATIN CAPITAL LETTER C +U+24BA U+0395 U+0415 U+0045 +# U+24BA: CIRCLED LATIN CAPITAL LETTER E +# U+0395: GREEK CAPITAL LETTER EPSILON +# U+0415: CYRILLIC CAPITAL LETTER IE +# U+0045: LATIN CAPITAL LETTER E +U+24BD U+0397 U+041D U+0048 +# U+24BD: CIRCLED LATIN CAPITAL LETTER H +# U+0397: GREEK CAPITAL LETTER ETA +# U+041D: CYRILLIC CAPITAL LETTER EN +# U+0048: LATIN CAPITAL LETTER H +U+24BE U+0399 U+0406 U+0049 +# U+24BE: CIRCLED LATIN CAPITAL LETTER I +# U+0399: GREEK CAPITAL LETTER IOTA +# U+0406: CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I +# U+0049: LATIN CAPITAL LETTER I +U+24BF U+0408 U+004A +# U+24BF: CIRCLED LATIN CAPITAL LETTER J +# U+0408: CYRILLIC CAPITAL LETTER JE +# U+004A: LATIN CAPITAL LETTER J +U+24C0 U+212A U+039A U+041A U+004B +# U+24C0: CIRCLED LATIN CAPITAL LETTER K +# U+212A: KELVIN SIGN +# U+039A: GREEK CAPITAL LETTER KAPPA +# U+041A: CYRILLIC CAPITAL LETTER KA +# U+004B: LATIN CAPITAL LETTER K +U+24C2 U+039C U+041C U+004D +# U+24C2: CIRCLED LATIN CAPITAL LETTER M +# U+039C: GREEK CAPITAL LETTER MU +# U+041C: CYRILLIC CAPITAL LETTER EM +# U+004D: LATIN CAPITAL LETTER M +U+24C3 U+039D U+004E +# U+24C3: CIRCLED LATIN CAPITAL LETTER N +# U+039D: GREEK CAPITAL LETTER NU +# U+004E: LATIN CAPITAL LETTER N +U+24C4 U+039F U+041E U+004F +# U+24C4: CIRCLED LATIN CAPITAL LETTER O +# U+039F: GREEK CAPITAL LETTER OMICRON +# U+041E: CYRILLIC CAPITAL LETTER O +# U+004F: LATIN CAPITAL LETTER O +U+24C5 U+03A1 U+0420 U+0050 +# U+24C5: CIRCLED LATIN CAPITAL LETTER P +# U+03A1: GREEK CAPITAL LETTER RHO +# U+0420: CYRILLIC CAPITAL LETTER ER +# U+0050: LATIN CAPITAL LETTER P +U+24C8 U+0405 U+0053 +# U+24C8: CIRCLED LATIN CAPITAL LETTER S +# U+0405: CYRILLIC CAPITAL LETTER DZE +# U+0053: LATIN CAPITAL LETTER S +U+24C9 U+03A4 U+0422 U+0054 +# U+24C9: CIRCLED LATIN CAPITAL LETTER T +# U+03A4: GREEK CAPITAL LETTER TAU +# U+0422: CYRILLIC CAPITAL LETTER TE +# U+0054: LATIN CAPITAL LETTER T +U+24CD U+03A7 U+0425 U+0058 +# U+24CD: CIRCLED LATIN CAPITAL LETTER X +# U+03A7: GREEK CAPITAL LETTER CHI +# U+0425: CYRILLIC CAPITAL LETTER HA +# U+0058: LATIN CAPITAL LETTER X +U+24CE U+04AE U+0059 +# U+24CE: CIRCLED LATIN CAPITAL LETTER Y +# U+04AE: CYRILLIC CAPITAL LETTER STRAIGHT U +# U+0059: LATIN CAPITAL LETTER Y +U+24CF U+0396 U+005A +# U+24CF: CIRCLED LATIN CAPITAL LETTER Z +# U+0396: GREEK CAPITAL LETTER ZETA +# U+005A: LATIN CAPITAL LETTER Z +U+24D0 U+0430 U+0061 +# U+24D0: CIRCLED LATIN SMALL LETTER A +# U+0430: CYRILLIC SMALL LETTER A +# U+0061: LATIN SMALL LETTER A +U+24D2 U+0441 U+0063 +# U+24D2: CIRCLED LATIN SMALL LETTER C +# U+0441: CYRILLIC SMALL LETTER ES +# U+0063: LATIN SMALL LETTER C +U+24D4 U+0435 U+0065 +# U+24D4: CIRCLED LATIN SMALL LETTER E +# U+0435: CYRILLIC SMALL LETTER IE +# U+0065: LATIN SMALL LETTER E +U+24D8 U+0456 U+0069 +# U+24D8: CIRCLED LATIN SMALL LETTER I +# U+0456: CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I +# U+0069: LATIN SMALL LETTER I +U+24D9 U+0458 U+006A +# U+24D9: CIRCLED LATIN SMALL LETTER J +# U+0458: CYRILLIC SMALL LETTER JE +# U+006A: LATIN SMALL LETTER J +U+24DE U+043E U+006F +# U+24DE: CIRCLED LATIN SMALL LETTER O +# U+043E: CYRILLIC SMALL LETTER O +# U+006F: LATIN SMALL LETTER O +U+24DF U+0440 U+0070 +# U+24DF: CIRCLED LATIN SMALL LETTER P +# U+0440: CYRILLIC SMALL LETTER ER +# U+0070: LATIN SMALL LETTER P +U+24E2 U+0455 U+0073 +# U+24E2: CIRCLED LATIN SMALL LETTER S +# U+0455: CYRILLIC SMALL LETTER DZE +# U+0073: LATIN SMALL LETTER S +U+24E7 U+0445 U+0078 +# U+24E7: CIRCLED LATIN SMALL LETTER X +# U+0445: CYRILLIC SMALL LETTER HA +# U+0078: LATIN SMALL LETTER X +U+24E8 U+0443 U+0079 +# U+24E8: CIRCLED LATIN SMALL LETTER Y +# U+0443: CYRILLIC SMALL LETTER U +# U+0079: LATIN SMALL LETTER Y +U+0401 U+00CB +# U+0401: CYRILLIC CAPITAL LETTER IO +# U+00CB: LATIN CAPITAL LETTER E WITH DIAERESIS +U+0407 U+00CF +# U+0407: CYRILLIC CAPITAL LETTER YI +# U+00CF: LATIN CAPITAL LETTER I WITH DIAERESIS +U+0451 U+00EB +# U+0451: CYRILLIC SMALL LETTER IO +# U+00EB: LATIN SMALL LETTER E WITH DIAERESIS +U+0457 U+00EF +# U+0457: CYRILLIC SMALL LETTER YI +# U+00EF: LATIN SMALL LETTER I WITH DIAERESIS +U+04D0 U+0102 +# U+04D0: CYRILLIC CAPITAL LETTER A WITH BREVE +# U+0102: LATIN CAPITAL LETTER A WITH BREVE +U+04D1 U+0103 +# U+04D1: CYRILLIC SMALL LETTER A WITH BREVE +# U+0103: LATIN SMALL LETTER A WITH BREVE +U+0F0C U+0F0B +# U+0F0C: TIBETAN MARK DELIMITER TSHEG BSTAR +# U+0F0B: TIBETAN MARK INTERSYLLABIC TSHEG + +# Arabic equivalents from bdf2psf debian package +#------------------------------------------------------------------------------- + +# History: +# +# 2005-07-04 Initial version based on arabic_forms.fallback + + +U+FEF4 U+064A +# U+FEF4: ARABIC LETTER YEH MEDIAL FORM +# U+064A: ARABIC LETTER YEH +U+FEF3 U+064A +# U+FEF3: ARABIC LETTER YEH INITIAL FORM +# U+064A: ARABIC LETTER YEH +U+FEF2 U+064A +# U+FEF2: ARABIC LETTER YEH FINAL FORM +# U+064A: ARABIC LETTER YEH +U+FEF1 U+064A +# U+FEF1: ARABIC LETTER YEH ISOLATED FORM +# U+064A: ARABIC LETTER YEH +U+FEEE U+0648 +# U+FEEE: ARABIC LETTER WAW FINAL FORM +# U+0648: ARABIC LETTER WAW +U+FEED U+0648 +# U+FEED: ARABIC LETTER WAW ISOLATED FORM +# U+0648: ARABIC LETTER WAW +U+FEEC U+0647 +# U+FEEC: ARABIC LETTER HEH MEDIAL FORM +# U+0647: ARABIC LETTER HEH +U+FEEB U+0647 +# U+FEEB: ARABIC LETTER HEH INITIAL FORM +# U+0647: ARABIC LETTER HEH +U+FEEA U+0647 +# U+FEEA: ARABIC LETTER HEH FINAL FORM +# U+0647: ARABIC LETTER HEH +U+FEE9 U+0647 +# U+FEE9: ARABIC LETTER HEH ISOLATED FORM +# U+0647: ARABIC LETTER HEH +U+FEE8 U+0646 +# U+FEE8: ARABIC LETTER NOON MEDIAL FORM +# U+0646: ARABIC LETTER NOON +U+FEE7 U+0646 +# U+FEE7: ARABIC LETTER NOON INITIAL FORM +# U+0646: ARABIC LETTER NOON +U+FEE6 U+0646 +# U+FEE6: ARABIC LETTER NOON FINAL FORM +# U+0646: ARABIC LETTER NOON +U+FEE5 U+0646 +# U+FEE5: ARABIC LETTER NOON ISOLATED FORM +# U+0646: ARABIC LETTER NOON +U+FEE4 U+0645 +# U+FEE4: ARABIC LETTER MEEM MEDIAL FORM +# U+0645: ARABIC LETTER MEEM +U+FEE3 U+0645 +# U+FEE3: ARABIC LETTER MEEM INITIAL FORM +# U+0645: ARABIC LETTER MEEM +U+FEE2 U+0645 +# U+FEE2: ARABIC LETTER MEEM FINAL FORM +# U+0645: ARABIC LETTER MEEM +U+FEE1 U+0645 +# U+FEE1: ARABIC LETTER MEEM ISOLATED FORM +# U+0645: ARABIC LETTER MEEM +U+FEE0 U+0644 +# U+FEE0: ARABIC LETTER LAM MEDIAL FORM +# U+0644: ARABIC LETTER LAM +U+FEDF U+0644 +# U+FEDF: ARABIC LETTER LAM INITIAL FORM +# U+0644: ARABIC LETTER LAM +U+FEDE U+0644 +# U+FEDE: ARABIC LETTER LAM FINAL FORM +# U+0644: ARABIC LETTER LAM +U+FEDD U+0644 +# U+FEDD: ARABIC LETTER LAM ISOLATED FORM +# U+0644: ARABIC LETTER LAM +U+FEDC U+0643 +# U+FEDC: ARABIC LETTER KAF MEDIAL FORM +# U+0643: ARABIC LETTER KAF +U+FEDB U+0643 +# U+FEDB: ARABIC LETTER KAF INITIAL FORM +# U+0643: ARABIC LETTER KAF +U+FEDA U+0643 +# U+FEDA: ARABIC LETTER KAF FINAL FORM +# U+0643: ARABIC LETTER KAF +U+FED9 U+0643 +# U+FED9: ARABIC LETTER KAF ISOLATED FORM +# U+0643: ARABIC LETTER KAF +U+FED8 U+0642 +# U+FED8: ARABIC LETTER QAF MEDIAL FORM +# U+0642: ARABIC LETTER QAF +U+FED7 U+0642 +# U+FED7: ARABIC LETTER QAF INITIAL FORM +# U+0642: ARABIC LETTER QAF +U+FED6 U+0642 +# U+FED6: ARABIC LETTER QAF FINAL FORM +# U+0642: ARABIC LETTER QAF +U+FED5 U+0642 +# U+FED5: ARABIC LETTER QAF ISOLATED FORM +# U+0642: ARABIC LETTER QAF +U+FED4 U+0641 +# U+FED4: ARABIC LETTER FEH MEDIAL FORM +# U+0641: ARABIC LETTER FEH +U+FED3 U+0641 +# U+FED3: ARABIC LETTER FEH INITIAL FORM +# U+0641: ARABIC LETTER FEH +U+FED2 U+0641 +# U+FED2: ARABIC LETTER FEH FINAL FORM +# U+0641: ARABIC LETTER FEH +U+FED1 U+0641 +# U+FED1: ARABIC LETTER FEH ISOLATED FORM +# U+0641: ARABIC LETTER FEH +U+FED0 U+063A +# U+FED0: ARABIC LETTER GHAIN MEDIAL FORM +# U+063A: ARABIC LETTER GHAIN +U+FECF U+063A +# U+FECF: ARABIC LETTER GHAIN INITIAL FORM +# U+063A: ARABIC LETTER GHAIN +U+FECE U+063A +# U+FECE: ARABIC LETTER GHAIN FINAL FORM +# U+063A: ARABIC LETTER GHAIN +U+FECD U+063A +# U+FECD: ARABIC LETTER GHAIN ISOLATED FORM +# U+063A: ARABIC LETTER GHAIN +U+FECC U+0639 +# U+FECC: ARABIC LETTER AIN MEDIAL FORM +# U+0639: ARABIC LETTER AIN +U+FECB U+0639 +# U+FECB: ARABIC LETTER AIN INITIAL FORM +# U+0639: ARABIC LETTER AIN +U+FECA U+0639 +# U+FECA: ARABIC LETTER AIN FINAL FORM +# U+0639: ARABIC LETTER AIN +U+FEC9 U+0639 +# U+FEC9: ARABIC LETTER AIN ISOLATED FORM +# U+0639: ARABIC LETTER AIN +U+FEC8 U+0638 +# U+FEC8: ARABIC LETTER ZAH MEDIAL FORM +# U+0638: ARABIC LETTER ZAH +U+FEC7 U+0638 +# U+FEC7: ARABIC LETTER ZAH INITIAL FORM +# U+0638: ARABIC LETTER ZAH +U+FEC6 U+0638 +# U+FEC6: ARABIC LETTER ZAH FINAL FORM +# U+0638: ARABIC LETTER ZAH +U+FEC5 U+0638 +# U+FEC5: ARABIC LETTER ZAH ISOLATED FORM +# U+0638: ARABIC LETTER ZAH +U+FEC4 U+0637 +# U+FEC4: ARABIC LETTER TAH MEDIAL FORM +# U+0637: ARABIC LETTER TAH +U+FEC3 U+0637 +# U+FEC3: ARABIC LETTER TAH INITIAL FORM +# U+0637: ARABIC LETTER TAH +U+FEC2 U+0637 +# U+FEC2: ARABIC LETTER TAH FINAL FORM +# U+0637: ARABIC LETTER TAH +U+FEC1 U+0637 +# U+FEC1: ARABIC LETTER TAH ISOLATED FORM +# U+0637: ARABIC LETTER TAH +U+FEC0 U+0636 +# U+FEC0: ARABIC LETTER DAD MEDIAL FORM +# U+0636: ARABIC LETTER DAD +U+FEBF U+0636 +# U+FEBF: ARABIC LETTER DAD INITIAL FORM +# U+0636: ARABIC LETTER DAD +U+FEBE U+0636 +# U+FEBE: ARABIC LETTER DAD FINAL FORM +# U+0636: ARABIC LETTER DAD +U+FEBD U+0636 +# U+FEBD: ARABIC LETTER DAD ISOLATED FORM +# U+0636: ARABIC LETTER DAD +U+FEBC U+0635 +# U+FEBC: ARABIC LETTER SAD MEDIAL FORM +# U+0635: ARABIC LETTER SAD +U+FEBB U+0635 +# U+FEBB: ARABIC LETTER SAD INITIAL FORM +# U+0635: ARABIC LETTER SAD +U+FEBA U+0635 +# U+FEBA: ARABIC LETTER SAD FINAL FORM +# U+0635: ARABIC LETTER SAD +U+FEB9 U+0635 +# U+FEB9: ARABIC LETTER SAD ISOLATED FORM +# U+0635: ARABIC LETTER SAD +U+FEB8 U+0634 +# U+FEB8: ARABIC LETTER SHEEN MEDIAL FORM +# U+0634: ARABIC LETTER SHEEN +U+FEB7 U+0634 +# U+FEB7: ARABIC LETTER SHEEN INITIAL FORM +# U+0634: ARABIC LETTER SHEEN +U+FEB6 U+0634 +# U+FEB6: ARABIC LETTER SHEEN FINAL FORM +# U+0634: ARABIC LETTER SHEEN +U+FEB5 U+0634 +# U+FEB5: ARABIC LETTER SHEEN ISOLATED FORM +# U+0634: ARABIC LETTER SHEEN +U+FEB4 U+0633 +# U+FEB4: ARABIC LETTER SEEN MEDIAL FORM +# U+0633: ARABIC LETTER SEEN +U+FEB3 U+0633 +# U+FEB3: ARABIC LETTER SEEN INITIAL FORM +# U+0633: ARABIC LETTER SEEN +U+FEB2 U+0633 +# U+FEB2: ARABIC LETTER SEEN FINAL FORM +# U+0633: ARABIC LETTER SEEN +U+FEB1 U+0633 +# U+FEB1: ARABIC LETTER SEEN ISOLATED FORM +# U+0633: ARABIC LETTER SEEN +U+FEB0 U+0632 +# U+FEB0: ARABIC LETTER ZAIN FINAL FORM +# U+0632: ARABIC LETTER ZAIN +U+FEAF U+0632 +# U+FEAF: ARABIC LETTER ZAIN ISOLATED FORM +# U+0632: ARABIC LETTER ZAIN +U+FEAE U+0631 +# U+FEAE: ARABIC LETTER REH FINAL FORM +# U+0631: ARABIC LETTER REH +U+FEAD U+0631 +# U+FEAD: ARABIC LETTER REH ISOLATED FORM +# U+0631: ARABIC LETTER REH +U+FEAC U+0630 +# U+FEAC: ARABIC LETTER THAL FINAL FORM +# U+0630: ARABIC LETTER THAL +U+FEAB U+0630 +# U+FEAB: ARABIC LETTER THAL ISOLATED FORM +# U+0630: ARABIC LETTER THAL +U+FEAA U+062F +# U+FEAA: ARABIC LETTER DAL FINAL FORM +# U+062F: ARABIC LETTER DAL +U+FEA9 U+062F +# U+FEA9: ARABIC LETTER DAL ISOLATED FORM +# U+062F: ARABIC LETTER DAL +U+FEA8 U+062E +# U+FEA8: ARABIC LETTER KHAH MEDIAL FORM +# U+062E: ARABIC LETTER KHAH +U+FEA7 U+062E +# U+FEA7: ARABIC LETTER KHAH INITIAL FORM +# U+062E: ARABIC LETTER KHAH +U+FEA6 U+062E +# U+FEA6: ARABIC LETTER KHAH FINAL FORM +# U+062E: ARABIC LETTER KHAH +U+FEA5 U+062E +# U+FEA5: ARABIC LETTER KHAH ISOLATED FORM +# U+062E: ARABIC LETTER KHAH +U+FEA4 U+062D +# U+FEA4: ARABIC LETTER HAH MEDIAL FORM +# U+062D: ARABIC LETTER HAH +U+FEA3 U+062D +# U+FEA3: ARABIC LETTER HAH INITIAL FORM +# U+062D: ARABIC LETTER HAH +U+FEA2 U+062D +# U+FEA2: ARABIC LETTER HAH FINAL FORM +# U+062D: ARABIC LETTER HAH +U+FEA1 U+062D +# U+FEA1: ARABIC LETTER HAH ISOLATED FORM +# U+062D: ARABIC LETTER HAH +U+FEA0 U+062C +# U+FEA0: ARABIC LETTER JEEM MEDIAL FORM +# U+062C: ARABIC LETTER JEEM +U+FE9F U+062C +# U+FE9F: ARABIC LETTER JEEM INITIAL FORM +# U+062C: ARABIC LETTER JEEM +U+FE9E U+062C +# U+FE9E: ARABIC LETTER JEEM FINAL FORM +# U+062C: ARABIC LETTER JEEM +U+FE9D U+062C +# U+FE9D: ARABIC LETTER JEEM ISOLATED FORM +# U+062C: ARABIC LETTER JEEM +U+FE9C U+062B +# U+FE9C: ARABIC LETTER THEH MEDIAL FORM +# U+062B: ARABIC LETTER THEH +U+FE9B U+062B +# U+FE9B: ARABIC LETTER THEH INITIAL FORM +# U+062B: ARABIC LETTER THEH +U+FE9A U+062B +# U+FE9A: ARABIC LETTER THEH FINAL FORM +# U+062B: ARABIC LETTER THEH +U+FE99 U+062B +# U+FE99: ARABIC LETTER THEH ISOLATED FORM +# U+062B: ARABIC LETTER THEH +U+FE98 U+062A +# U+FE98: ARABIC LETTER TEH MEDIAL FORM +# U+062A: ARABIC LETTER TEH +U+FE97 U+062A +# U+FE97: ARABIC LETTER TEH INITIAL FORM +# U+062A: ARABIC LETTER TEH +U+FE96 U+062A +# U+FE96: ARABIC LETTER TEH FINAL FORM +# U+062A: ARABIC LETTER TEH +U+FE95 U+062A +# U+FE95: ARABIC LETTER TEH ISOLATED FORM +# U+062A: ARABIC LETTER TEH +U+FE92 U+0628 +# U+FE92: ARABIC LETTER BEH MEDIAL FORM +# U+0628: ARABIC LETTER BEH +U+FE91 U+0628 +# U+FE91: ARABIC LETTER BEH INITIAL FORM +# U+0628: ARABIC LETTER BEH +U+FE90 U+0628 +# U+FE90: ARABIC LETTER BEH FINAL FORM +# U+0628: ARABIC LETTER BEH +U+FE8F U+0628 +# U+FE8F: ARABIC LETTER BEH ISOLATED FORM +# U+0628: ARABIC LETTER BEH +U+FE8E U+0627 +# U+FE8E: ARABIC LETTER ALEF FINAL FORM +# U+0627: ARABIC LETTER ALEF +U+FE8D U+0627 +# U+FE8D: ARABIC LETTER ALEF ISOLATED FORM +# U+0627: ARABIC LETTER ALEF +U+FE80 U+0621 +# U+FE80: ARABIC LETTER HAMZA ISOLATED FORM +# U+0621: ARABIC LETTER HAMZA +U+FBE7 U+06D0 +# U+FBE7: ARABIC LETTER E MEDIAL FORM +# U+06D0: ARABIC LETTER E +U+FBE6 U+06D0 +# U+FBE6: ARABIC LETTER E INITIAL FORM +# U+06D0: ARABIC LETTER E +U+FBE5 U+06D0 +# U+FBE5: ARABIC LETTER E FINAL FORM +# U+06D0: ARABIC LETTER E +U+FBE4 U+06D0 +# U+FBE4: ARABIC LETTER E ISOLATED FORM +# U+06D0: ARABIC LETTER E +U+FBDF U+06CB +# U+FBDF: ARABIC LETTER VE FINAL FORM +# U+06CB: ARABIC LETTER VE +U+FBDE U+06CB +# U+FBDE: ARABIC LETTER VE ISOLATED FORM +# U+06CB: ARABIC LETTER VE +U+FBDC U+06C8 +# U+FBDC: ARABIC LETTER YU FINAL FORM +# U+06C8: ARABIC LETTER YU +U+FBDB U+06C8 +# U+FBDB: ARABIC LETTER YU ISOLATED FORM +# U+06C8: ARABIC LETTER YU +U+FBDA U+06C6 +# U+FBDA: ARABIC LETTER OE FINAL FORM +# U+06C6: ARABIC LETTER OE +U+FBD9 U+06C6 +# U+FBD9: ARABIC LETTER OE ISOLATED FORM +# U+06C6: ARABIC LETTER OE +U+FBD8 U+06C7 +# U+FBD8: ARABIC LETTER U FINAL FORM +# U+06C7: ARABIC LETTER U +U+FBD7 U+06C7 +# U+FBD7: ARABIC LETTER U ISOLATED FORM +# U+06C7: ARABIC LETTER U +U+FBD6 U+06AD +# U+FBD6: ARABIC LETTER NG MEDIAL FORM +# U+06AD: ARABIC LETTER NG +U+FBD5 U+06AD +# U+FBD5: ARABIC LETTER NG INITIAL FORM +# U+06AD: ARABIC LETTER NG +U+FBD4 U+06AD +# U+FBD4: ARABIC LETTER NG FINAL FORM +# U+06AD: ARABIC LETTER NG +U+FBD3 U+06AD +# U+FBD3: ARABIC LETTER NG ISOLATED FORM +# U+06AD: ARABIC LETTER NG +U+FBA3 U+06BB +# U+FBA3: ARABIC LETTER RNOON MEDIAL FORM +# U+06BB: ARABIC LETTER RNOON +U+FBA2 U+06BB +# U+FBA2: ARABIC LETTER RNOON INITIAL FORM +# U+06BB: ARABIC LETTER RNOON +U+FBA1 U+06BB +# U+FBA1: ARABIC LETTER RNOON FINAL FORM +# U+06BB: ARABIC LETTER RNOON +U+FBA0 U+06BB +# U+FBA0: ARABIC LETTER RNOON ISOLATED FORM +# U+06BB: ARABIC LETTER RNOON +U+FB9D U+06B1 +# U+FB9D: ARABIC LETTER NGOEH MEDIAL FORM +# U+06B1: ARABIC LETTER NGOEH +U+FB9C U+06B1 +# U+FB9C: ARABIC LETTER NGOEH INITIAL FORM +# U+06B1: ARABIC LETTER NGOEH +U+FB9B U+06B1 +# U+FB9B: ARABIC LETTER NGOEH FINAL FORM +# U+06B1: ARABIC LETTER NGOEH +U+FB9A U+06B1 +# U+FB9A: ARABIC LETTER NGOEH ISOLATED FORM +# U+06B1: ARABIC LETTER NGOEH +U+FB99 U+06B3 +# U+FB99: ARABIC LETTER GUEH MEDIAL FORM +# U+06B3: ARABIC LETTER GUEH +U+FB98 U+06B3 +# U+FB98: ARABIC LETTER GUEH INITIAL FORM +# U+06B3: ARABIC LETTER GUEH +U+FB97 U+06B3 +# U+FB97: ARABIC LETTER GUEH FINAL FORM +# U+06B3: ARABIC LETTER GUEH +U+FB96 U+06B3 +# U+FB96: ARABIC LETTER GUEH ISOLATED FORM +# U+06B3: ARABIC LETTER GUEH +U+FB95 U+06AF +# U+FB95: ARABIC LETTER GAF MEDIAL FORM +# U+06AF: ARABIC LETTER GAF +U+FB94 U+06AF +# U+FB94: ARABIC LETTER GAF INITIAL FORM +# U+06AF: ARABIC LETTER GAF +U+FB93 U+06AF +# U+FB93: ARABIC LETTER GAF FINAL FORM +# U+06AF: ARABIC LETTER GAF +U+FB92 U+06AF +# U+FB92: ARABIC LETTER GAF ISOLATED FORM +# U+06AF: ARABIC LETTER GAF +U+FB91 U+06A9 +# U+FB91: ARABIC LETTER KEHEH MEDIAL FORM +# U+06A9: ARABIC LETTER KEHEH +U+FB90 U+06A9 +# U+FB90: ARABIC LETTER KEHEH INITIAL FORM +# U+06A9: ARABIC LETTER KEHEH +U+FB8F U+06A9 +# U+FB8F: ARABIC LETTER KEHEH FINAL FORM +# U+06A9: ARABIC LETTER KEHEH +U+FB8E U+06A9 +# U+FB8E: ARABIC LETTER KEHEH ISOLATED FORM +# U+06A9: ARABIC LETTER KEHEH +U+FB8D U+0691 +# U+FB8D: ARABIC LETTER RREH FINAL FORM +# U+0691: ARABIC LETTER RREH +U+FB8C U+0691 +# U+FB8C: ARABIC LETTER RREH ISOLATED FORM +# U+0691: ARABIC LETTER RREH +U+FB8B U+0698 +# U+FB8B: ARABIC LETTER JEH FINAL FORM +# U+0698: ARABIC LETTER JEH +U+FB8A U+0698 +# U+FB8A: ARABIC LETTER JEH ISOLATED FORM +# U+0698: ARABIC LETTER JEH +U+FB89 U+0688 +# U+FB89: ARABIC LETTER DDAL FINAL FORM +# U+0688: ARABIC LETTER DDAL +U+FB88 U+0688 +# U+FB88: ARABIC LETTER DDAL ISOLATED FORM +# U+0688: ARABIC LETTER DDAL +U+FB87 U+068E +# U+FB87: ARABIC LETTER DUL FINAL FORM +# U+068E: ARABIC LETTER DUL +U+FB86 U+068E +# U+FB86: ARABIC LETTER DUL ISOLATED FORM +# U+068E: ARABIC LETTER DUL +U+FB85 U+068C +# U+FB85: ARABIC LETTER DAHAL FINAL FORM +# U+068C: ARABIC LETTER DAHAL +U+FB84 U+068C +# U+FB84: ARABIC LETTER DAHAL ISOLATED FORM +# U+068C: ARABIC LETTER DAHAL +U+FB83 U+068D +# U+FB83: ARABIC LETTER DDAHAL FINAL FORM +# U+068D: ARABIC LETTER DDAHAL +U+FB82 U+068D +# U+FB82: ARABIC LETTER DDAHAL ISOLATED FORM +# U+068D: ARABIC LETTER DDAHAL +U+FB81 U+0687 +# U+FB81: ARABIC LETTER TCHEHEH MEDIAL FORM +# U+0687: ARABIC LETTER TCHEHEH +U+FB80 U+0687 +# U+FB80: ARABIC LETTER TCHEHEH INITIAL FORM +# U+0687: ARABIC LETTER TCHEHEH +U+FB7F U+0687 +# U+FB7F: ARABIC LETTER TCHEHEH FINAL FORM +# U+0687: ARABIC LETTER TCHEHEH +U+FB7E U+0687 +# U+FB7E: ARABIC LETTER TCHEHEH ISOLATED FORM +# U+0687: ARABIC LETTER TCHEHEH +U+FB7D U+0686 +# U+FB7D: ARABIC LETTER TCHEH MEDIAL FORM +# U+0686: ARABIC LETTER TCHEH +U+FB7C U+0686 +# U+FB7C: ARABIC LETTER TCHEH INITIAL FORM +# U+0686: ARABIC LETTER TCHEH +U+FB7B U+0686 +# U+FB7B: ARABIC LETTER TCHEH FINAL FORM +# U+0686: ARABIC LETTER TCHEH +U+FB7A U+0686 +# U+FB7A: ARABIC LETTER TCHEH ISOLATED FORM +# U+0686: ARABIC LETTER TCHEH +U+FB79 U+0683 +# U+FB79: ARABIC LETTER NYEH MEDIAL FORM +# U+0683: ARABIC LETTER NYEH +U+FB78 U+0683 +# U+FB78: ARABIC LETTER NYEH INITIAL FORM +# U+0683: ARABIC LETTER NYEH +U+FB77 U+0683 +# U+FB77: ARABIC LETTER NYEH FINAL FORM +# U+0683: ARABIC LETTER NYEH +U+FB76 U+0683 +# U+FB76: ARABIC LETTER NYEH ISOLATED FORM +# U+0683: ARABIC LETTER NYEH +U+FB75 U+0684 +# U+FB75: ARABIC LETTER DYEH MEDIAL FORM +# U+0684: ARABIC LETTER DYEH +U+FB74 U+0684 +# U+FB74: ARABIC LETTER DYEH INITIAL FORM +# U+0684: ARABIC LETTER DYEH +U+FB73 U+0684 +# U+FB73: ARABIC LETTER DYEH FINAL FORM +# U+0684: ARABIC LETTER DYEH +U+FB72 U+0684 +# U+FB72: ARABIC LETTER DYEH ISOLATED FORM +# U+0684: ARABIC LETTER DYEH +U+FB71 U+06A6 +# U+FB71: ARABIC LETTER PEHEH MEDIAL FORM +# U+06A6: ARABIC LETTER PEHEH +U+FB70 U+06A6 +# U+FB70: ARABIC LETTER PEHEH INITIAL FORM +# U+06A6: ARABIC LETTER PEHEH +U+FB6F U+06A6 +# U+FB6F: ARABIC LETTER PEHEH FINAL FORM +# U+06A6: ARABIC LETTER PEHEH +U+FB6E U+06A6 +# U+FB6E: ARABIC LETTER PEHEH ISOLATED FORM +# U+06A6: ARABIC LETTER PEHEH +U+FB6D U+06A4 +# U+FB6D: ARABIC LETTER VEH MEDIAL FORM +# U+06A4: ARABIC LETTER VEH +U+FB6C U+06A4 +# U+FB6C: ARABIC LETTER VEH INITIAL FORM +# U+06A4: ARABIC LETTER VEH +U+FB6B U+06A4 +# U+FB6B: ARABIC LETTER VEH FINAL FORM +# U+06A4: ARABIC LETTER VEH +U+FB6A U+06A4 +# U+FB6A: ARABIC LETTER VEH ISOLATED FORM +# U+06A4: ARABIC LETTER VEH +U+FB69 U+0679 +# U+FB69: ARABIC LETTER TTEH MEDIAL FORM +# U+0679: ARABIC LETTER TTEH +U+FB68 U+0679 +# U+FB68: ARABIC LETTER TTEH INITIAL FORM +# U+0679: ARABIC LETTER TTEH +U+FB67 U+0679 +# U+FB67: ARABIC LETTER TTEH FINAL FORM +# U+0679: ARABIC LETTER TTEH +U+FB66 U+0679 +# U+FB66: ARABIC LETTER TTEH ISOLATED FORM +# U+0679: ARABIC LETTER TTEH +U+FB65 U+067F +# U+FB65: ARABIC LETTER TEHEH MEDIAL FORM +# U+067F: ARABIC LETTER TEHEH +U+FB64 U+067F +# U+FB64: ARABIC LETTER TEHEH INITIAL FORM +# U+067F: ARABIC LETTER TEHEH +U+FB63 U+067F +# U+FB63: ARABIC LETTER TEHEH FINAL FORM +# U+067F: ARABIC LETTER TEHEH +U+FB62 U+067F +# U+FB62: ARABIC LETTER TEHEH ISOLATED FORM +# U+067F: ARABIC LETTER TEHEH +U+FB61 U+067A +# U+FB61: ARABIC LETTER TTEHEH MEDIAL FORM +# U+067A: ARABIC LETTER TTEHEH +U+FB60 U+067A +# U+FB60: ARABIC LETTER TTEHEH INITIAL FORM +# U+067A: ARABIC LETTER TTEHEH +U+FB5F U+067A +# U+FB5F: ARABIC LETTER TTEHEH FINAL FORM +# U+067A: ARABIC LETTER TTEHEH +U+FB5E U+067A +# U+FB5E: ARABIC LETTER TTEHEH ISOLATED FORM +# U+067A: ARABIC LETTER TTEHEH +U+FB5D U+0680 +# U+FB5D: ARABIC LETTER BEHEH MEDIAL FORM +# U+0680: ARABIC LETTER BEHEH +U+FB5C U+0680 +# U+FB5C: ARABIC LETTER BEHEH INITIAL FORM +# U+0680: ARABIC LETTER BEHEH +U+FB5B U+0680 +# U+FB5B: ARABIC LETTER BEHEH FINAL FORM +# U+0680: ARABIC LETTER BEHEH +U+FB5A U+0680 +# U+FB5A: ARABIC LETTER BEHEH ISOLATED FORM +# U+0680: ARABIC LETTER BEHEH +U+FB59 U+067E +# U+FB59: ARABIC LETTER PEH MEDIAL FORM +# U+067E: ARABIC LETTER PEH +U+FB58 U+067E +# U+FB58: ARABIC LETTER PEH INITIAL FORM +# U+067E: ARABIC LETTER PEH +U+FB57 U+067E +# U+FB57: ARABIC LETTER PEH FINAL FORM +# U+067E: ARABIC LETTER PEH +U+FB56 U+067E +# U+FB56: ARABIC LETTER PEH ISOLATED FORM +# U+067E: ARABIC LETTER PEH +U+FB55 U+067B +# U+FB55: ARABIC LETTER BEEH MEDIAL FORM +# U+067B: ARABIC LETTER BEEH +U+FB54 U+067B +# U+FB54: ARABIC LETTER BEEH INITIAL FORM +# U+067B: ARABIC LETTER BEEH +U+FB53 U+067B +# U+FB53: ARABIC LETTER BEEH FINAL FORM +# U+067B: ARABIC LETTER BEEH +U+FB52 U+067B +# U+FB52: ARABIC LETTER BEEH ISOLATED FORM +# U+067B: ARABIC LETTER BEEH + +# Equivalents from Terminus font gzip +#------------------------------------------------------------------------------- + + diff --git a/bdf-to-psf/uni-2.set b/bdf-to-psf/uni-2.set @@ -0,0 +1,1870 @@ +U+0000 +U+0001 +U+0002 +U+0003 +U+0004 +U+0005 +U+0006 +U+0007 +U+0008 +U+0009 +U+000A +U+000B +U+000C +U+000D +U+000E +U+000F +U+0010 +U+0011 +U+0012 +U+0013 +U+0014 +U+0015 +U+0016 +U+0017 +U+0018 +U+0019 +U+001A +U+001B +U+001C +U+001D +U+001E +U+001F +U+0020 +U+0021 +U+0022 +U+0023 +U+0024 +U+0025 +U+0026 +U+0027 +U+0028 +U+0029 +U+002A +U+002B +U+002C +U+002D +U+002E +U+002F +U+0030 +U+0031 +U+0032 +U+0033 +U+0034 +U+0035 +U+0036 +U+0037 +U+0038 +U+0039 +U+003A +U+003B +U+003C +U+003D +U+003E +U+003F +U+0040 +U+0041 +U+0042 +U+0043 +U+0044 +U+0045 +U+0046 +U+0047 +U+0048 +U+0049 +U+004A +U+004B +U+004C +U+004D +U+004E +U+004F +U+0050 +U+0051 +U+0052 +U+0053 +U+0054 +U+0055 +U+0056 +U+0057 +U+0058 +U+0059 +U+005A +U+005B +U+005C +U+005D +U+005E +U+005F +U+0060 +U+0061 +U+0062 +U+0063 +U+0064 +U+0065 +U+0066 +U+0067 +U+0068 +U+0069 +U+006A +U+006B +U+006C +U+006D +U+006E +U+006F +U+0070 +U+0071 +U+0072 +U+0073 +U+0074 +U+0075 +U+0076 +U+0077 +U+0078 +U+0079 +U+007A +U+007B +U+007C +U+007D +U+007E +U+007F +U+0080 +U+0081 +U+0082 +U+0083 +U+0084 +U+0085 +U+0086 +U+0087 +U+0088 +U+0089 +U+008A +U+008B +U+008C +U+008D +U+008E +U+008F +U+0090 +U+0091 +U+0092 +U+0093 +U+0094 +U+0095 +U+0096 +U+0097 +U+0098 +U+0099 +U+009A +U+009B +U+009C +U+009D +U+009E +U+009F +U+00A0 +U+00A1 +U+00A2 +U+00A3 +U+00A4 +U+00A5 +U+00A6 +U+00A7 +U+00A8 +U+00A9 +U+00AA +U+00AB +U+00AC +U+00AD +U+00AE +U+00AF +U+00B0 +U+00B1 +U+00B2 +U+00B3 +U+00B4 +U+00B5 +U+00B6 +U+00B7 +U+00B8 +U+00B9 +U+00BA +U+00BB +U+00BC +U+00BD +U+00BE +U+00BF +U+00C0 +U+00C1 +U+00C2 +U+00C3 +U+00C4 +U+00C5 +U+00C6 +U+00C7 +U+00C8 +U+00C9 +U+00CA +U+00CB +U+00CC +U+00CD +U+00CE +U+00CF +U+00D0 +U+00D1 +U+00D2 +U+00D3 +U+00D4 +U+00D5 +U+00D6 +U+00D7 +U+00D8 +U+00D9 +U+00DA +U+00DB +U+00DC +U+00DD +U+00DE +U+00DF +U+00E0 +U+00E1 +U+00E2 +U+00E3 +U+00E4 +U+00E5 +U+00E6 +U+00E7 +U+00E8 +U+00E9 +U+00EA +U+00EB +U+00EC +U+00ED +U+00EE +U+00EF +U+00F0 +U+00F1 +U+00F2 +U+00F3 +U+00F4 +U+00F5 +U+00F6 +U+00F7 +U+00F8 +U+00F9 +U+00FA +U+00FB +U+00FC +U+00FD +U+00FE +U+00FF +U+011E +U+011F +U+0130 +U+0131 +U+0152 +U+0153 +U+015E +U+015F +U+0160 +U+0161 +U+0178 +U+017D +U+017E +U+0192 +U+02C6 +U+02DC +U+03C0 +U+2013 +U+2014 +U+2018 +U+2019 +U+201A +U+201C +U+201D +U+201E +U+2020 +U+2021 +U+2022 +U+2026 +U+2030 +U+2039 +U+203A +U+20AC +U+2122 +U+2191 +U+2193 +U+2264 +U+2265 +U+2500 +U+2502 +U+250C +U+2510 +U+2514 +U+2518 +U+251C +U+2524 +U+252C +U+2534 +U+253C +U+256A +U+256C +U+2588 +U+2591 +U+2592 +U+25A0 +U+25B6 +U+25C0 +U+2666 +U+0000 +U+0001 +U+0002 +U+0003 +U+0004 +U+0005 +U+0006 +U+0007 +U+0008 +U+0009 +U+000A +U+000B +U+000C +U+000D +U+000E +U+000F +U+0010 +U+0011 +U+0012 +U+0013 +U+0014 +U+0015 +U+0016 +U+0017 +U+0018 +U+0019 +U+001A +U+001B +U+001C +U+001D +U+001E +U+001F +U+0020 +U+0021 +U+0022 +U+0023 +U+0024 +U+0025 +U+0026 +U+0027 +U+0028 +U+0029 +U+002A +U+002B +U+002C +U+002D +U+002E +U+002F +U+0030 +U+0031 +U+0032 +U+0033 +U+0034 +U+0035 +U+0036 +U+0037 +U+0038 +U+0039 +U+003A +U+003B +U+003C +U+003D +U+003E +U+003F +U+0040 +U+0041 +U+0042 +U+0043 +U+0044 +U+0045 +U+0046 +U+0047 +U+0048 +U+0049 +U+004A +U+004B +U+004C +U+004D +U+004E +U+004F +U+0050 +U+0051 +U+0052 +U+0053 +U+0054 +U+0055 +U+0056 +U+0057 +U+0058 +U+0059 +U+005A +U+005B +U+005C +U+005D +U+005E +U+005F +U+0060 +U+0061 +U+0062 +U+0063 +U+0064 +U+0065 +U+0066 +U+0067 +U+0068 +U+0069 +U+006A +U+006B +U+006C +U+006D +U+006E +U+006F +U+0070 +U+0071 +U+0072 +U+0073 +U+0074 +U+0075 +U+0076 +U+0077 +U+0078 +U+0079 +U+007A +U+007B +U+007C +U+007D +U+007E +U+007F +U+0080 +U+0081 +U+0082 +U+0083 +U+0084 +U+0085 +U+0086 +U+0087 +U+0088 +U+0089 +U+008A +U+008B +U+008C +U+008D +U+008E +U+008F +U+0090 +U+0091 +U+0092 +U+0093 +U+0094 +U+0095 +U+0096 +U+0097 +U+0098 +U+0099 +U+009A +U+009B +U+009C +U+009D +U+009E +U+009F +U+00A0 +U+00A3 +U+00A4 +U+00A6 +U+00A7 +U+00A8 +U+00A9 +U+00AB +U+00AC +U+00AD +U+00AE +U+00B0 +U+00B1 +U+00B4 +U+00B5 +U+00B6 +U+00B7 +U+00B8 +U+00BB +U+00C1 +U+00C2 +U+00C4 +U+00C7 +U+00C9 +U+00CB +U+00CD +U+00CE +U+00D3 +U+00D4 +U+00D6 +U+00D7 +U+00DA +U+00DC +U+00DD +U+00DF +U+00E1 +U+00E2 +U+00E4 +U+00E7 +U+00E9 +U+00EB +U+00ED +U+00EE +U+00F3 +U+00F4 +U+00F6 +U+00F7 +U+00FA +U+00FC +U+00FD +U+0102 +U+0103 +U+0104 +U+0105 +U+0106 +U+0107 +U+010C +U+010D +U+010E +U+010F +U+0110 +U+0111 +U+0118 +U+0119 +U+011A +U+011B +U+0139 +U+013A +U+013D +U+013E +U+0141 +U+0142 +U+0143 +U+0144 +U+0147 +U+0148 +U+0150 +U+0151 +U+0154 +U+0155 +U+0158 +U+0159 +U+015A +U+015B +U+015E +U+015F +U+0160 +U+0161 +U+0162 +U+0163 +U+0164 +U+0165 +U+016E +U+016F +U+0170 +U+0171 +U+0179 +U+017A +U+017B +U+017C +U+017D +U+017E +U+0218 +U+0219 +U+021A +U+021B +U+02C7 +U+02D8 +U+02D9 +U+02DB +U+02DD +U+03C0 +U+2013 +U+2014 +U+2018 +U+2019 +U+201A +U+201C +U+201D +U+201E +U+2020 +U+2021 +U+2022 +U+2026 +U+2030 +U+2039 +U+203A +U+20AC +U+2122 +U+2191 +U+2193 +U+2264 +U+2265 +U+2500 +U+2502 +U+250C +U+2510 +U+2514 +U+2518 +U+251C +U+2524 +U+252C +U+2534 +U+253C +U+256A +U+256C +U+2588 +U+2591 +U+2592 +U+25A0 +U+25B6 +U+25C0 +U+2666 +U+0000 +U+0001 +U+0002 +U+0003 +U+0004 +U+0005 +U+0006 +U+0007 +U+0008 +U+0009 +U+000A +U+000B +U+000C +U+000D +U+000E +U+000F +U+0010 +U+0011 +U+0012 +U+0013 +U+0014 +U+0015 +U+0016 +U+0017 +U+0018 +U+0019 +U+001A +U+001B +U+001C +U+001D +U+001E +U+001F +U+0020 +U+0021 +U+0022 +U+0023 +U+0024 +U+0025 +U+0026 +U+0027 +U+0028 +U+0029 +U+002A +U+002B +U+002C +U+002D +U+002E +U+002F +U+0030 +U+0031 +U+0032 +U+0033 +U+0034 +U+0035 +U+0036 +U+0037 +U+0038 +U+0039 +U+003A +U+003B +U+003C +U+003D +U+003E +U+003F +U+0040 +U+0041 +U+0042 +U+0043 +U+0044 +U+0045 +U+0046 +U+0047 +U+0048 +U+0049 +U+004A +U+004B +U+004C +U+004D +U+004E +U+004F +U+0050 +U+0051 +U+0052 +U+0053 +U+0054 +U+0055 +U+0056 +U+0057 +U+0058 +U+0059 +U+005A +U+005B +U+005C +U+005D +U+005E +U+005F +U+0060 +U+0061 +U+0062 +U+0063 +U+0064 +U+0065 +U+0066 +U+0067 +U+0068 +U+0069 +U+006A +U+006B +U+006C +U+006D +U+006E +U+006F +U+0070 +U+0071 +U+0072 +U+0073 +U+0074 +U+0075 +U+0076 +U+0077 +U+0078 +U+0079 +U+007A +U+007B +U+007C +U+007D +U+007E +U+007F +U+0080 +U+0081 +U+0082 +U+0083 +U+0084 +U+0085 +U+0086 +U+0087 +U+0088 +U+0089 +U+008A +U+008B +U+008C +U+008D +U+008E +U+008F +U+0090 +U+0091 +U+0092 +U+0093 +U+0094 +U+0095 +U+0096 +U+0097 +U+0098 +U+0099 +U+009A +U+009B +U+009C +U+009D +U+009E +U+009F +U+00A0 +U+00A3 +U+00A4 +U+00A7 +U+00A8 +U+00A9 +U+00AD +U+00AE +U+00B0 +U+00B1 +U+00B2 +U+00B3 +U+00B4 +U+00B5 +U+00B6 +U+00B7 +U+00B8 +U+00BD +U+00C0 +U+00C1 +U+00C2 +U+00C3 +U+00C4 +U+00C5 +U+00C6 +U+00C7 +U+00C8 +U+00C9 +U+00CA +U+00CB +U+00CC +U+00CD +U+00CE +U+00CF +U+00D1 +U+00D2 +U+00D3 +U+00D4 +U+00D5 +U+00D6 +U+00D7 +U+00D8 +U+00D9 +U+00DA +U+00DB +U+00DC +U+00DD +U+00DF +U+00E0 +U+00E1 +U+00E2 +U+00E3 +U+00E4 +U+00E5 +U+00E6 +U+00E7 +U+00E8 +U+00E9 +U+00EA +U+00EB +U+00EC +U+00ED +U+00EE +U+00EF +U+00F1 +U+00F2 +U+00F3 +U+00F4 +U+00F5 +U+00F6 +U+00F7 +U+00F8 +U+00F9 +U+00FA +U+00FB +U+00FC +U+00FD +U+00FF +U+0108 +U+0109 +U+010A +U+010B +U+011C +U+011D +U+011E +U+011F +U+0120 +U+0121 +U+0124 +U+0125 +U+0126 +U+0127 +U+0130 +U+0131 +U+0134 +U+0135 +U+015C +U+015D +U+015E +U+015F +U+016C +U+016D +U+0174 +U+0175 +U+0176 +U+0177 +U+0178 +U+017B +U+017C +U+02D8 +U+02D9 +U+03C0 +U+1E02 +U+1E03 +U+1E0A +U+1E0B +U+1E1E +U+1E1F +U+1E40 +U+1E41 +U+1E56 +U+1E57 +U+1E60 +U+1E61 +U+1E6A +U+1E6B +U+1E80 +U+1E81 +U+1E82 +U+1E83 +U+1E84 +U+1E85 +U+1EF2 +U+1EF3 +U+2191 +U+2193 +U+2264 +U+2265 +U+2500 +U+2502 +U+250C +U+2510 +U+2514 +U+2518 +U+251C +U+2524 +U+252C +U+2534 +U+253C +U+256A +U+256C +U+2588 +U+2591 +U+2592 +U+25A0 +U+25B6 +U+25C0 +U+2666 +U+0000 +U+0001 +U+0002 +U+0003 +U+0004 +U+0005 +U+0006 +U+0007 +U+0008 +U+0009 +U+000A +U+000B +U+000C +U+000D +U+000E +U+000F +U+0010 +U+0011 +U+0012 +U+0013 +U+0014 +U+0015 +U+0016 +U+0017 +U+0018 +U+0019 +U+001A +U+001B +U+001C +U+001D +U+001E +U+001F +U+0020 +U+0021 +U+0022 +U+0023 +U+0024 +U+0025 +U+0026 +U+0027 +U+0028 +U+0029 +U+002A +U+002B +U+002C +U+002D +U+002E +U+002F +U+0030 +U+0031 +U+0032 +U+0033 +U+0034 +U+0035 +U+0036 +U+0037 +U+0038 +U+0039 +U+003A +U+003B +U+003C +U+003D +U+003E +U+003F +U+0040 +U+0041 +U+0042 +U+0043 +U+0044 +U+0045 +U+0046 +U+0047 +U+0048 +U+0049 +U+004A +U+004B +U+004C +U+004D +U+004E +U+004F +U+0050 +U+0051 +U+0052 +U+0053 +U+0054 +U+0055 +U+0056 +U+0057 +U+0058 +U+0059 +U+005A +U+005B +U+005C +U+005D +U+005E +U+005F +U+0060 +U+0061 +U+0062 +U+0063 +U+0064 +U+0065 +U+0066 +U+0067 +U+0068 +U+0069 +U+006A +U+006B +U+006C +U+006D +U+006E +U+006F +U+0070 +U+0071 +U+0072 +U+0073 +U+0074 +U+0075 +U+0076 +U+0077 +U+0078 +U+0079 +U+007A +U+007B +U+007C +U+007D +U+007E +U+007F +U+0080 +U+0081 +U+0082 +U+0083 +U+0084 +U+0085 +U+0086 +U+0087 +U+0088 +U+0089 +U+008A +U+008B +U+008C +U+008D +U+008E +U+008F +U+0090 +U+0091 +U+0092 +U+0093 +U+0094 +U+0095 +U+0096 +U+0097 +U+0098 +U+0099 +U+009A +U+009B +U+009C +U+009D +U+009E +U+009F +U+00A0 +U+00A2 +U+00A3 +U+00A4 +U+00A6 +U+00A7 +U+00A8 +U+00A9 +U+00AB +U+00AC +U+00AD +U+00AE +U+00AF +U+00B0 +U+00B1 +U+00B2 +U+00B3 +U+00B4 +U+00B5 +U+00B6 +U+00B7 +U+00B8 +U+00B9 +U+00BB +U+00BC +U+00BD +U+00BE +U+00C4 +U+00C5 +U+00C6 +U+00C9 +U+00D3 +U+00D5 +U+00D6 +U+00D7 +U+00D8 +U+00DC +U+00DF +U+00E4 +U+00E5 +U+00E6 +U+00E9 +U+00F3 +U+00F5 +U+00F6 +U+00F7 +U+00F8 +U+00FC +U+0100 +U+0101 +U+0104 +U+0105 +U+0106 +U+0107 +U+010C +U+010D +U+0112 +U+0113 +U+0116 +U+0117 +U+0118 +U+0119 +U+0122 +U+0123 +U+012A +U+012B +U+012E +U+012F +U+0136 +U+0137 +U+013B +U+013C +U+0141 +U+0142 +U+0143 +U+0144 +U+0145 +U+0146 +U+014C +U+014D +U+0156 +U+0157 +U+015A +U+015B +U+0160 +U+0161 +U+016A +U+016B +U+0172 +U+0173 +U+0179 +U+017A +U+017B +U+017C +U+017D +U+017E +U+02C7 +U+02D9 +U+02DB +U+03C0 +U+2013 +U+2014 +U+2018 +U+2019 +U+201A +U+201C +U+201D +U+201E +U+2020 +U+2021 +U+2022 +U+2026 +U+2030 +U+2039 +U+203A +U+20AC +U+2122 +U+2191 +U+2193 +U+2264 +U+2265 +U+2500 +U+2502 +U+250C +U+2510 +U+2514 +U+2518 +U+251C +U+2524 +U+252C +U+2534 +U+253C +U+256A +U+256C +U+2588 +U+2591 +U+2592 +U+25A0 +U+25B6 +U+25C0 +U+2666 +U+0000 +U+0001 +U+0002 +U+0003 +U+0004 +U+0005 +U+0006 +U+0007 +U+0008 +U+0009 +U+000A +U+000B +U+000C +U+000D +U+000E +U+000F +U+0010 +U+0011 +U+0012 +U+0013 +U+0014 +U+0015 +U+0016 +U+0017 +U+0018 +U+0019 +U+001A +U+001B +U+001C +U+001D +U+001E +U+001F +U+0020 +U+0021 +U+0022 +U+0023 +U+0024 +U+0025 +U+0026 +U+0027 +U+0028 +U+0029 +U+002A +U+002B +U+002C +U+002D +U+002E +U+002F +U+0030 +U+0031 +U+0032 +U+0033 +U+0034 +U+0035 +U+0036 +U+0037 +U+0038 +U+0039 +U+003A +U+003B +U+003C +U+003D +U+003E +U+003F +U+0040 +U+0041 +U+0042 +U+0043 +U+0044 +U+0045 +U+0046 +U+0047 +U+0048 +U+0049 +U+004A +U+004B +U+004C +U+004D +U+004E +U+004F +U+0050 +U+0051 +U+0052 +U+0053 +U+0054 +U+0055 +U+0056 +U+0057 +U+0058 +U+0059 +U+005A +U+005B +U+005C +U+005D +U+005E +U+005F +U+0060 +U+0061 +U+0062 +U+0063 +U+0064 +U+0065 +U+0066 +U+0067 +U+0068 +U+0069 +U+006A +U+006B +U+006C +U+006D +U+006E +U+006F +U+0070 +U+0071 +U+0072 +U+0073 +U+0074 +U+0075 +U+0076 +U+0077 +U+0078 +U+0079 +U+007A +U+007B +U+007C +U+007D +U+007E +U+007F +U+0080 +U+0081 +U+0082 +U+0083 +U+0084 +U+0085 +U+0086 +U+0087 +U+0088 +U+0089 +U+008A +U+008B +U+008C +U+008D +U+008E +U+008F +U+0090 +U+0091 +U+0092 +U+0093 +U+0094 +U+0095 +U+0096 +U+0097 +U+0098 +U+0099 +U+009A +U+009B +U+009C +U+009D +U+009E +U+009F +U+00A0 +U+00A3 +U+00A4 +U+00A6 +U+00A7 +U+00A9 +U+00AB +U+00AC +U+00AD +U+00AE +U+00B0 +U+00B1 +U+00B5 +U+00B6 +U+00B7 +U+00BB +U+0106 +U+0107 +U+010C +U+010D +U+0110 +U+0111 +U+0160 +U+0161 +U+017D +U+017E +U+03C0 +U+0400 +U+0401 +U+0402 +U+0403 +U+0404 +U+0405 +U+0406 +U+0407 +U+0408 +U+0409 +U+040A +U+040B +U+040C +U+040D +U+040E +U+040F +U+0410 +U+0411 +U+0412 +U+0413 +U+0414 +U+0415 +U+0416 +U+0417 +U+0418 +U+0419 +U+041A +U+041B +U+041C +U+041D +U+041E +U+041F +U+0420 +U+0421 +U+0422 +U+0423 +U+0424 +U+0425 +U+0426 +U+0427 +U+0428 +U+0429 +U+042A +U+042B +U+042C +U+042D +U+042E +U+042F +U+0430 +U+0431 +U+0432 +U+0433 +U+0434 +U+0435 +U+0436 +U+0437 +U+0438 +U+0439 +U+043A +U+043B +U+043C +U+043D +U+043E +U+043F +U+0440 +U+0441 +U+0442 +U+0443 +U+0444 +U+0445 +U+0446 +U+0447 +U+0448 +U+0449 +U+044A +U+044B +U+044C +U+044D +U+044E +U+044F +U+0450 +U+0451 +U+0452 +U+0453 +U+0454 +U+0455 +U+0456 +U+0457 +U+0458 +U+0459 +U+045A +U+045B +U+045C +U+045D +U+045E +U+045F +U+0490 +U+0491 +U+2013 +U+2014 +U+2018 +U+2019 +U+201A +U+201C +U+201D +U+201E +U+2020 +U+2021 +U+2022 +U+2026 +U+2030 +U+2039 +U+203A +U+20AC +U+2116 +U+2122 +U+2191 +U+2193 +U+2264 +U+2265 +U+2500 +U+2502 +U+250C +U+2510 +U+2514 +U+2518 +U+251C +U+2524 +U+252C +U+2534 +U+253C +U+256A +U+256C +U+2588 +U+2591 +U+2592 +U+25A0 +U+25B6 +U+25C0 +U+2666 +U+0000 +U+0001 +U+0002 +U+0003 +U+0004 +U+0005 +U+0006 +U+0007 +U+0008 +U+0009 +U+000A +U+000B +U+000C +U+000D +U+000E +U+000F +U+0010 +U+0011 +U+0012 +U+0013 +U+0014 +U+0015 +U+0016 +U+0017 +U+0018 +U+0019 +U+001A +U+001B +U+001C +U+001D +U+001E +U+001F +U+0020 +U+0021 +U+0022 +U+0023 +U+0024 +U+0025 +U+0026 +U+0027 +U+0028 +U+0029 +U+002A +U+002B +U+002C +U+002D +U+002E +U+002F +U+0030 +U+0031 +U+0032 +U+0033 +U+0034 +U+0035 +U+0036 +U+0037 +U+0038 +U+0039 +U+003A +U+003B +U+003C +U+003D +U+003E +U+003F +U+0040 +U+0041 +U+0042 +U+0043 +U+0044 +U+0045 +U+0046 +U+0047 +U+0048 +U+0049 +U+004A +U+004B +U+004C +U+004D +U+004E +U+004F +U+0050 +U+0051 +U+0052 +U+0053 +U+0054 +U+0055 +U+0056 +U+0057 +U+0058 +U+0059 +U+005A +U+005B +U+005C +U+005D +U+005E +U+005F +U+0060 +U+0061 +U+0062 +U+0063 +U+0064 +U+0065 +U+0066 +U+0067 +U+0068 +U+0069 +U+006A +U+006B +U+006C +U+006D +U+006E +U+006F +U+0070 +U+0071 +U+0072 +U+0073 +U+0074 +U+0075 +U+0076 +U+0077 +U+0078 +U+0079 +U+007A +U+007B +U+007C +U+007D +U+007E +U+007F +U+0080 +U+0081 +U+0082 +U+0083 +U+0084 +U+0085 +U+0086 +U+0087 +U+0088 +U+0089 +U+008A +U+008B +U+008C +U+008D +U+008E +U+008F +U+0090 +U+0091 +U+0092 +U+0093 +U+0094 +U+0095 +U+0096 +U+0097 +U+0098 +U+0099 +U+009A +U+009B +U+009C +U+009D +U+009E +U+009F +U+00A0 +U+00A3 +U+00A4 +U+00A5 +U+00A6 +U+00A7 +U+00A8 +U+00A9 +U+00AB +U+00AC +U+00AD +U+00AE +U+00B0 +U+00B1 +U+00B2 +U+00B3 +U+00B5 +U+00B6 +U+00B7 +U+00BB +U+00BD +U+0192 +U+0384 +U+0385 +U+0386 +U+0388 +U+0389 +U+038A +U+038C +U+038E +U+038F +U+0390 +U+0391 +U+0392 +U+0393 +U+0394 +U+0395 +U+0396 +U+0397 +U+0398 +U+0399 +U+039A +U+039B +U+039C +U+039D +U+039E +U+039F +U+03A0 +U+03A1 +U+03A3 +U+03A4 +U+03A5 +U+03A6 +U+03A7 +U+03A8 +U+03A9 +U+03AA +U+03AB +U+03AC +U+03AD +U+03AE +U+03AF +U+03B0 +U+03B1 +U+03B2 +U+03B3 +U+03B4 +U+03B5 +U+03B6 +U+03B7 +U+03B8 +U+03B9 +U+03BA +U+03BB +U+03BC +U+03BD +U+03BE +U+03BF +U+03C0 +U+03C1 +U+03C2 +U+03C3 +U+03C4 +U+03C5 +U+03C6 +U+03C7 +U+03C8 +U+03C9 +U+03CA +U+03CB +U+03CC +U+03CD +U+03CE +U+03F3 +U+03F4 +U+2013 +U+2014 +U+2015 +U+2018 +U+2019 +U+201A +U+201C +U+201D +U+201E +U+2020 +U+2021 +U+2022 +U+2026 +U+2030 +U+2039 +U+203A +U+20AC +U+2122 +U+2191 +U+2193 +U+2264 +U+2265 +U+2500 +U+2502 +U+250C +U+2510 +U+2514 +U+2518 +U+251C +U+2524 +U+252C +U+2534 +U+253C +U+256A +U+256C +U+2588 +U+2591 +U+2592 +U+25A0 +U+25B6 +U+25C0 +U+2666