diff options
author | ru <ru@FreeBSD.org> | 2005-10-20 10:45:19 +0000 |
---|---|---|
committer | ru <ru@FreeBSD.org> | 2005-10-20 10:45:19 +0000 |
commit | 353ac0b339df3493d1950b6527988b77b76bd197 (patch) | |
tree | 8a188846a3f5bd2f2b8cb869cba64e3c470a2b26 /contrib/groff/src/utils | |
parent | c40093b1f1b43dc237b9d272697cdd0842ec64ec (diff) | |
download | FreeBSD-src-353ac0b339df3493d1950b6527988b77b76bd197.zip FreeBSD-src-353ac0b339df3493d1950b6527988b77b76bd197.tar.gz |
Virgin import of FSF groff v1.19.2
Diffstat (limited to 'contrib/groff/src/utils')
25 files changed, 8727 insertions, 6506 deletions
diff --git a/contrib/groff/src/utils/addftinfo/addftinfo.cpp b/contrib/groff/src/utils/addftinfo/addftinfo.cpp index 931d836..b2fd15d 100644 --- a/contrib/groff/src/utils/addftinfo/addftinfo.cpp +++ b/contrib/groff/src/utils/addftinfo/addftinfo.cpp @@ -16,7 +16,7 @@ for more details. You should have received a copy of the GNU General Public License along with groff; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. */ #include "lib.h" diff --git a/contrib/groff/src/utils/addftinfo/guess.cpp b/contrib/groff/src/utils/addftinfo/guess.cpp index dcfd4c9..7ae36dc 100644 --- a/contrib/groff/src/utils/addftinfo/guess.cpp +++ b/contrib/groff/src/utils/addftinfo/guess.cpp @@ -16,7 +16,7 @@ for more details. You should have received a copy of the GNU General Public License along with groff; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. */ #include "guess.h" diff --git a/contrib/groff/src/utils/addftinfo/guess.h b/contrib/groff/src/utils/addftinfo/guess.h index 4471dda..26f0883 100644 --- a/contrib/groff/src/utils/addftinfo/guess.h +++ b/contrib/groff/src/utils/addftinfo/guess.h @@ -16,7 +16,7 @@ for more details. You should have received a copy of the GNU General Public License along with groff; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. */ struct font_params { int italic; diff --git a/contrib/groff/src/utils/afmtodit/Makefile.sub b/contrib/groff/src/utils/afmtodit/Makefile.sub index c1de91b..53afc74 100644 --- a/contrib/groff/src/utils/afmtodit/Makefile.sub +++ b/contrib/groff/src/utils/afmtodit/Makefile.sub @@ -12,7 +12,7 @@ afmtodit: afmtodit.pl else \ sed -e "s|@VERSION@|$(version)$(revision)|" \ -e "s|@FONTDIR@|$(fontdir)|" \ - $(srcdir)/afmtodit.pl afmtodit; \ + $(srcdir)/afmtodit.pl >afmtodit; \ fi chmod +x afmtodit diff --git a/contrib/groff/src/utils/afmtodit/afmtodit.man b/contrib/groff/src/utils/afmtodit/afmtodit.man index 88198c9..978de34 100644 --- a/contrib/groff/src/utils/afmtodit/afmtodit.man +++ b/contrib/groff/src/utils/afmtodit/afmtodit.man @@ -1,5 +1,5 @@ .ig -Copyright (C) 1989-2000, 2001, 2002, 2003 Free Software Foundation, Inc. +Copyright (C) 1989-2000, 2001, 2002, 2003, 2005 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice @@ -21,8 +21,13 @@ the original English. .\" Like TP, but if specified indent is more than half .\" the current line-length - indent, use the default indent. .de Tp -.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP -.el .TP "\\$1" +. ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP +. el .TP "\\$1" +.. +. +.de OP +. ie \\n(.$-1 .RI "[\ \fB\\$1\fP\ " "\\$2" "\ ]" +. el .RB "[\ " "\\$1" "\ ]" .. . . @@ -40,12 +45,7 @@ afmtodit \- create font files for use with groff \-Tps .in +\w'\fBafmtodit 'u .ti \niu .B afmtodit -.de OP -.ie \\n(.$-1 .RI "[\ \fB\\$1\fP\ " "\\$2" "\ ]" -.el .RB "[\ " "\\$1" "\ ]" -.. -. -.OP \-mnsv +.OP \-mnsvx .OP \-a n .OP \-d desc_file .OP \-e enc_file @@ -66,7 +66,7 @@ creates a font file for use with groff and . .B afmtodit is written in perl; -you must have perl version 3 or newer installed in order to run +you must have perl version 5.004 or newer installed in order to run .BR afmtodit . . .LP @@ -104,24 +104,26 @@ If the file isn't found in the current directory, it is searched in the `devps/generate' subdirectory of the default font directory. . .LP -If a PostScript character is in the encoding to be used for the font -but is not mentioned in +If a PostScript character is not named as +.BI uni XXXX +.RI ( XXXX +are four uppercase hexadecimal digits), and is not mentioned in .IR map_file , -or if a generic groff glyph name can't be deduced using the Adobe Glyph -List (built into -.BR afmtodit ) +and a generic groff glyph name can't be deduced using the +Adobe Glyph List (AGL, built into +.BR afmtodit ), then .B afmtodit -will put it in the groff font file as an unnamed character, -which can be accessed by the +puts the PostScript character into the groff font file as an unnamed +character which can only be accessed by the .B \eN escape sequence in .BR troff . . If option .B \-e -is not specified, the encoding defined in the AFM file (i.e., entries with -non-negative character codes) is used. +is not specified, the encoding defined in the AFM file (i.e., entries +with non-negative character codes) is used. . Please refer to section `Using Symbols' in the groff info file which describes how groff glyph names are constructed. @@ -293,6 +295,10 @@ command to the font file. .B \-v Print version. . +.TP +.B \-x +Don't use the built-in Adobe Glyph List. +. . .SH FILES .Tp \w'\fB@FONTDIR@/devps/download'u+2n diff --git a/contrib/groff/src/utils/afmtodit/afmtodit.pl b/contrib/groff/src/utils/afmtodit/afmtodit.pl index 72a486b..0ff85de 100644 --- a/contrib/groff/src/utils/afmtodit/afmtodit.pl +++ b/contrib/groff/src/utils/afmtodit/afmtodit.pl @@ -1,6 +1,7 @@ -#! /usr/bin/perl +#! /usr/bin/perl -w # -*- Perl -*- -# Copyright (C) 1989-2000, 2001, 2002, 2003 Free Software Foundation, Inc. +# Copyright (C) 1989-2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. # Written by James Clark (jjc@jclark.com) # # This file is part of groff. @@ -17,6036 +18,6041 @@ # # You should have received a copy of the GNU General Public License along # with groff; see the file COPYING. If not, write to the Free Software -# Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. -%unicode_decomposed = ( - "u00C0", "u0041_0300", - "u00C1", "u0041_0301", - "u00C2", "u0041_0302", - "u00C3", "u0041_0303", - "u00C4", "u0041_0308", - "u00C5", "u0041_030A", - "u00C7", "u0043_0327", - "u00C8", "u0045_0300", - "u00C9", "u0045_0301", - "u00CA", "u0045_0302", - "u00CB", "u0045_0308", - "u00CC", "u0049_0300", - "u00CD", "u0049_0301", - "u00CE", "u0049_0302", - "u00CF", "u0049_0308", - "u00D1", "u004E_0303", - "u00D2", "u004F_0300", - "u00D3", "u004F_0301", - "u00D4", "u004F_0302", - "u00D5", "u004F_0303", - "u00D6", "u004F_0308", - "u00D9", "u0055_0300", - "u00DA", "u0055_0301", - "u00DB", "u0055_0302", - "u00DC", "u0055_0308", - "u00DD", "u0059_0301", - "u00E0", "u0061_0300", - "u00E1", "u0061_0301", - "u00E2", "u0061_0302", - "u00E3", "u0061_0303", - "u00E4", "u0061_0308", - "u00E5", "u0061_030A", - "u00E7", "u0063_0327", - "u00E8", "u0065_0300", - "u00E9", "u0065_0301", - "u00EA", "u0065_0302", - "u00EB", "u0065_0308", - "u00EC", "u0069_0300", - "u00ED", "u0069_0301", - "u00EE", "u0069_0302", - "u00EF", "u0069_0308", - "u00F1", "u006E_0303", - "u00F2", "u006F_0300", - "u00F3", "u006F_0301", - "u00F4", "u006F_0302", - "u00F5", "u006F_0303", - "u00F6", "u006F_0308", - "u00F9", "u0075_0300", - "u00FA", "u0075_0301", - "u00FB", "u0075_0302", - "u00FC", "u0075_0308", - "u00FD", "u0079_0301", - "u00FF", "u0079_0308", - "u0100", "u0041_0304", - "u0101", "u0061_0304", - "u0102", "u0041_0306", - "u0103", "u0061_0306", - "u0104", "u0041_0328", - "u0105", "u0061_0328", - "u0106", "u0043_0301", - "u0107", "u0063_0301", - "u0108", "u0043_0302", - "u0109", "u0063_0302", - "u010A", "u0043_0307", - "u010B", "u0063_0307", - "u010C", "u0043_030C", - "u010D", "u0063_030C", - "u010E", "u0044_030C", - "u010F", "u0064_030C", - "u0112", "u0045_0304", - "u0113", "u0065_0304", - "u0114", "u0045_0306", - "u0115", "u0065_0306", - "u0116", "u0045_0307", - "u0117", "u0065_0307", - "u0118", "u0045_0328", - "u0119", "u0065_0328", - "u011A", "u0045_030C", - "u011B", "u0065_030C", - "u011C", "u0047_0302", - "u011D", "u0067_0302", - "u011E", "u0047_0306", - "u011F", "u0067_0306", - "u0120", "u0047_0307", - "u0121", "u0067_0307", - "u0122", "u0047_0327", - "u0123", "u0067_0327", - "u0124", "u0048_0302", - "u0125", "u0068_0302", - "u0128", "u0049_0303", - "u0129", "u0069_0303", - "u012A", "u0049_0304", - "u012B", "u0069_0304", - "u012C", "u0049_0306", - "u012D", "u0069_0306", - "u012E", "u0049_0328", - "u012F", "u0069_0328", - "u0130", "u0049_0307", - "u0134", "u004A_0302", - "u0135", "u006A_0302", - "u0136", "u004B_0327", - "u0137", "u006B_0327", - "u0139", "u004C_0301", - "u013A", "u006C_0301", - "u013B", "u004C_0327", - "u013C", "u006C_0327", - "u013D", "u004C_030C", - "u013E", "u006C_030C", - "u0143", "u004E_0301", - "u0144", "u006E_0301", - "u0145", "u004E_0327", - "u0146", "u006E_0327", - "u0147", "u004E_030C", - "u0148", "u006E_030C", - "u014C", "u004F_0304", - "u014D", "u006F_0304", - "u014E", "u004F_0306", - "u014F", "u006F_0306", - "u0150", "u004F_030B", - "u0151", "u006F_030B", - "u0154", "u0052_0301", - "u0155", "u0072_0301", - "u0156", "u0052_0327", - "u0157", "u0072_0327", - "u0158", "u0052_030C", - "u0159", "u0072_030C", - "u015A", "u0053_0301", - "u015B", "u0073_0301", - "u015C", "u0053_0302", - "u015D", "u0073_0302", - "u015E", "u0053_0327", - "u015F", "u0073_0327", - "u0160", "u0053_030C", - "u0161", "u0073_030C", - "u0162", "u0054_0327", - "u0163", "u0074_0327", - "u0164", "u0054_030C", - "u0165", "u0074_030C", - "u0168", "u0055_0303", - "u0169", "u0075_0303", - "u016A", "u0055_0304", - "u016B", "u0075_0304", - "u016C", "u0055_0306", - "u016D", "u0075_0306", - "u016E", "u0055_030A", - "u016F", "u0075_030A", - "u0170", "u0055_030B", - "u0171", "u0075_030B", - "u0172", "u0055_0328", - "u0173", "u0075_0328", - "u0174", "u0057_0302", - "u0175", "u0077_0302", - "u0176", "u0059_0302", - "u0177", "u0079_0302", - "u0178", "u0059_0308", - "u0179", "u005A_0301", - "u017A", "u007A_0301", - "u017B", "u005A_0307", - "u017C", "u007A_0307", - "u017D", "u005A_030C", - "u017E", "u007A_030C", - "u01A0", "u004F_031B", - "u01A1", "u006F_031B", - "u01AF", "u0055_031B", - "u01B0", "u0075_031B", - "u01CD", "u0041_030C", - "u01CE", "u0061_030C", - "u01CF", "u0049_030C", - "u01D0", "u0069_030C", - "u01D1", "u004F_030C", - "u01D2", "u006F_030C", - "u01D3", "u0055_030C", - "u01D4", "u0075_030C", - "u01D5", "u0055_0308_0304", - "u01D6", "u0075_0308_0304", - "u01D7", "u0055_0308_0301", - "u01D8", "u0075_0308_0301", - "u01D9", "u0055_0308_030C", - "u01DA", "u0075_0308_030C", - "u01DB", "u0055_0308_0300", - "u01DC", "u0075_0308_0300", - "u01DE", "u0041_0308_0304", - "u01DF", "u0061_0308_0304", - "u01E0", "u0041_0307_0304", - "u01E1", "u0061_0307_0304", - "u01E2", "u00C6_0304", - "u01E3", "u00E6_0304", - "u01E6", "u0047_030C", - "u01E7", "u0067_030C", - "u01E8", "u004B_030C", - "u01E9", "u006B_030C", - "u01EA", "u004F_0328", - "u01EB", "u006F_0328", - "u01EC", "u004F_0328_0304", - "u01ED", "u006F_0328_0304", - "u01EE", "u01B7_030C", - "u01EF", "u0292_030C", - "u01F0", "u006A_030C", - "u01F4", "u0047_0301", - "u01F5", "u0067_0301", - "u01F8", "u004E_0300", - "u01F9", "u006E_0300", - "u01FA", "u0041_030A_0301", - "u01FB", "u0061_030A_0301", - "u01FC", "u00C6_0301", - "u01FD", "u00E6_0301", - "u01FE", "u00D8_0301", - "u01FF", "u00F8_0301", - "u0200", "u0041_030F", - "u0201", "u0061_030F", - "u0202", "u0041_0311", - "u0203", "u0061_0311", - "u0204", "u0045_030F", - "u0205", "u0065_030F", - "u0206", "u0045_0311", - "u0207", "u0065_0311", - "u0208", "u0049_030F", - "u0209", "u0069_030F", - "u020A", "u0049_0311", - "u020B", "u0069_0311", - "u020C", "u004F_030F", - "u020D", "u006F_030F", - "u020E", "u004F_0311", - "u020F", "u006F_0311", - "u0210", "u0052_030F", - "u0211", "u0072_030F", - "u0212", "u0052_0311", - "u0213", "u0072_0311", - "u0214", "u0055_030F", - "u0215", "u0075_030F", - "u0216", "u0055_0311", - "u0217", "u0075_0311", - "u0218", "u0053_0326", - "u0219", "u0073_0326", - "u021A", "u0054_0326", - "u021B", "u0074_0326", - "u021E", "u0048_030C", - "u021F", "u0068_030C", - "u0226", "u0041_0307", - "u0227", "u0061_0307", - "u0228", "u0045_0327", - "u0229", "u0065_0327", - "u022A", "u004F_0308_0304", - "u022B", "u006F_0308_0304", - "u022C", "u004F_0303_0304", - "u022D", "u006F_0303_0304", - "u022E", "u004F_0307", - "u022F", "u006F_0307", - "u0230", "u004F_0307_0304", - "u0231", "u006F_0307_0304", - "u0232", "u0059_0304", - "u0233", "u0079_0304", - "u0340", "u0300", - "u0341", "u0301", - "u0343", "u0313", - "u0344", "u0308_0301", - "u0374", "u02B9", - "u037E", "u003B", - "u0385", "u00A8_0301", - "u0386", "u0391_0301", - "u0387", "u00B7", - "u0388", "u0395_0301", - "u0389", "u0397_0301", - "u038A", "u0399_0301", - "u038C", "u039F_0301", - "u038E", "u03A5_0301", - "u038F", "u03A9_0301", - "u0390", "u03B9_0308_0301", - "u03AA", "u0399_0308", - "u03AB", "u03A5_0308", - "u03AC", "u03B1_0301", - "u03AD", "u03B5_0301", - "u03AE", "u03B7_0301", - "u03AF", "u03B9_0301", - "u03B0", "u03C5_0308_0301", - "u03CA", "u03B9_0308", - "u03CB", "u03C5_0308", - "u03CC", "u03BF_0301", - "u03CD", "u03C5_0301", - "u03CE", "u03C9_0301", - "u03D3", "u03D2_0301", - "u03D4", "u03D2_0308", - "u0400", "u0415_0300", - "u0401", "u0415_0308", - "u0403", "u0413_0301", - "u0407", "u0406_0308", - "u040C", "u041A_0301", - "u040D", "u0418_0300", - "u040E", "u0423_0306", - "u0419", "u0418_0306", - "u0439", "u0438_0306", - "u0450", "u0435_0300", - "u0451", "u0435_0308", - "u0453", "u0433_0301", - "u0457", "u0456_0308", - "u045C", "u043A_0301", - "u045D", "u0438_0300", - "u045E", "u0443_0306", - "u0476", "u0474_030F", - "u0477", "u0475_030F", - "u04C1", "u0416_0306", - "u04C2", "u0436_0306", - "u04D0", "u0410_0306", - "u04D1", "u0430_0306", - "u04D2", "u0410_0308", - "u04D3", "u0430_0308", - "u04D6", "u0415_0306", - "u04D7", "u0435_0306", - "u04DA", "u04D8_0308", - "u04DB", "u04D9_0308", - "u04DC", "u0416_0308", - "u04DD", "u0436_0308", - "u04DE", "u0417_0308", - "u04DF", "u0437_0308", - "u04E2", "u0418_0304", - "u04E3", "u0438_0304", - "u04E4", "u0418_0308", - "u04E5", "u0438_0308", - "u04E6", "u041E_0308", - "u04E7", "u043E_0308", - "u04EA", "u04E8_0308", - "u04EB", "u04E9_0308", - "u04EC", "u042D_0308", - "u04ED", "u044D_0308", - "u04EE", "u0423_0304", - "u04EF", "u0443_0304", - "u04F0", "u0423_0308", - "u04F1", "u0443_0308", - "u04F2", "u0423_030B", - "u04F3", "u0443_030B", - "u04F4", "u0427_0308", - "u04F5", "u0447_0308", - "u04F8", "u042B_0308", - "u04F9", "u044B_0308", - "u0622", "u0627_0653", - "u0623", "u0627_0654", - "u0624", "u0648_0654", - "u0625", "u0627_0655", - "u0626", "u064A_0654", - "u06C0", "u06D5_0654", - "u06C2", "u06C1_0654", - "u06D3", "u06D2_0654", - "u0929", "u0928_093C", - "u0931", "u0930_093C", - "u0934", "u0933_093C", - "u0958", "u0915_093C", - "u0959", "u0916_093C", - "u095A", "u0917_093C", - "u095B", "u091C_093C", - "u095C", "u0921_093C", - "u095D", "u0922_093C", - "u095E", "u092B_093C", - "u095F", "u092F_093C", - "u09CB", "u09C7_09BE", - "u09CC", "u09C7_09D7", - "u09DC", "u09A1_09BC", - "u09DD", "u09A2_09BC", - "u09DF", "u09AF_09BC", - "u0A33", "u0A32_0A3C", - "u0A36", "u0A38_0A3C", - "u0A59", "u0A16_0A3C", - "u0A5A", "u0A17_0A3C", - "u0A5B", "u0A1C_0A3C", - "u0A5E", "u0A2B_0A3C", - "u0B48", "u0B47_0B56", - "u0B4B", "u0B47_0B3E", - "u0B4C", "u0B47_0B57", - "u0B5C", "u0B21_0B3C", - "u0B5D", "u0B22_0B3C", - "u0B94", "u0B92_0BD7", - "u0BCA", "u0BC6_0BBE", - "u0BCB", "u0BC7_0BBE", - "u0BCC", "u0BC6_0BD7", - "u0C48", "u0C46_0C56", - "u0CC0", "u0CBF_0CD5", - "u0CC7", "u0CC6_0CD5", - "u0CC8", "u0CC6_0CD6", - "u0CCA", "u0CC6_0CC2", - "u0CCB", "u0CC6_0CC2_0CD5", - "u0D4A", "u0D46_0D3E", - "u0D4B", "u0D47_0D3E", - "u0D4C", "u0D46_0D57", - "u0DDA", "u0DD9_0DCA", - "u0DDC", "u0DD9_0DCF", - "u0DDD", "u0DD9_0DCF_0DCA", - "u0DDE", "u0DD9_0DDF", - "u0F43", "u0F42_0FB7", - "u0F4D", "u0F4C_0FB7", - "u0F52", "u0F51_0FB7", - "u0F57", "u0F56_0FB7", - "u0F5C", "u0F5B_0FB7", - "u0F69", "u0F40_0FB5", - "u0F73", "u0F71_0F72", - "u0F75", "u0F71_0F74", - "u0F76", "u0FB2_0F80", - "u0F78", "u0FB3_0F80", - "u0F81", "u0F71_0F80", - "u0F93", "u0F92_0FB7", - "u0F9D", "u0F9C_0FB7", - "u0FA2", "u0FA1_0FB7", - "u0FA7", "u0FA6_0FB7", - "u0FAC", "u0FAB_0FB7", - "u0FB9", "u0F90_0FB5", - "u1026", "u1025_102E", - "u1E00", "u0041_0325", - "u1E01", "u0061_0325", - "u1E02", "u0042_0307", - "u1E03", "u0062_0307", - "u1E04", "u0042_0323", - "u1E05", "u0062_0323", - "u1E06", "u0042_0331", - "u1E07", "u0062_0331", - "u1E08", "u0043_0327_0301", - "u1E09", "u0063_0327_0301", - "u1E0A", "u0044_0307", - "u1E0B", "u0064_0307", - "u1E0C", "u0044_0323", - "u1E0D", "u0064_0323", - "u1E0E", "u0044_0331", - "u1E0F", "u0064_0331", - "u1E10", "u0044_0327", - "u1E11", "u0064_0327", - "u1E12", "u0044_032D", - "u1E13", "u0064_032D", - "u1E14", "u0045_0304_0300", - "u1E15", "u0065_0304_0300", - "u1E16", "u0045_0304_0301", - "u1E17", "u0065_0304_0301", - "u1E18", "u0045_032D", - "u1E19", "u0065_032D", - "u1E1A", "u0045_0330", - "u1E1B", "u0065_0330", - "u1E1C", "u0045_0327_0306", - "u1E1D", "u0065_0327_0306", - "u1E1E", "u0046_0307", - "u1E1F", "u0066_0307", - "u1E20", "u0047_0304", - "u1E21", "u0067_0304", - "u1E22", "u0048_0307", - "u1E23", "u0068_0307", - "u1E24", "u0048_0323", - "u1E25", "u0068_0323", - "u1E26", "u0048_0308", - "u1E27", "u0068_0308", - "u1E28", "u0048_0327", - "u1E29", "u0068_0327", - "u1E2A", "u0048_032E", - "u1E2B", "u0068_032E", - "u1E2C", "u0049_0330", - "u1E2D", "u0069_0330", - "u1E2E", "u0049_0308_0301", - "u1E2F", "u0069_0308_0301", - "u1E30", "u004B_0301", - "u1E31", "u006B_0301", - "u1E32", "u004B_0323", - "u1E33", "u006B_0323", - "u1E34", "u004B_0331", - "u1E35", "u006B_0331", - "u1E36", "u004C_0323", - "u1E37", "u006C_0323", - "u1E38", "u004C_0323_0304", - "u1E39", "u006C_0323_0304", - "u1E3A", "u004C_0331", - "u1E3B", "u006C_0331", - "u1E3C", "u004C_032D", - "u1E3D", "u006C_032D", - "u1E3E", "u004D_0301", - "u1E3F", "u006D_0301", - "u1E40", "u004D_0307", - "u1E41", "u006D_0307", - "u1E42", "u004D_0323", - "u1E43", "u006D_0323", - "u1E44", "u004E_0307", - "u1E45", "u006E_0307", - "u1E46", "u004E_0323", - "u1E47", "u006E_0323", - "u1E48", "u004E_0331", - "u1E49", "u006E_0331", - "u1E4A", "u004E_032D", - "u1E4B", "u006E_032D", - "u1E4C", "u004F_0303_0301", - "u1E4D", "u006F_0303_0301", - "u1E4E", "u004F_0303_0308", - "u1E4F", "u006F_0303_0308", - "u1E50", "u004F_0304_0300", - "u1E51", "u006F_0304_0300", - "u1E52", "u004F_0304_0301", - "u1E53", "u006F_0304_0301", - "u1E54", "u0050_0301", - "u1E55", "u0070_0301", - "u1E56", "u0050_0307", - "u1E57", "u0070_0307", - "u1E58", "u0052_0307", - "u1E59", "u0072_0307", - "u1E5A", "u0052_0323", - "u1E5B", "u0072_0323", - "u1E5C", "u0052_0323_0304", - "u1E5D", "u0072_0323_0304", - "u1E5E", "u0052_0331", - "u1E5F", "u0072_0331", - "u1E60", "u0053_0307", - "u1E61", "u0073_0307", - "u1E62", "u0053_0323", - "u1E63", "u0073_0323", - "u1E64", "u0053_0301_0307", - "u1E65", "u0073_0301_0307", - "u1E66", "u0053_030C_0307", - "u1E67", "u0073_030C_0307", - "u1E68", "u0053_0323_0307", - "u1E69", "u0073_0323_0307", - "u1E6A", "u0054_0307", - "u1E6B", "u0074_0307", - "u1E6C", "u0054_0323", - "u1E6D", "u0074_0323", - "u1E6E", "u0054_0331", - "u1E6F", "u0074_0331", - "u1E70", "u0054_032D", - "u1E71", "u0074_032D", - "u1E72", "u0055_0324", - "u1E73", "u0075_0324", - "u1E74", "u0055_0330", - "u1E75", "u0075_0330", - "u1E76", "u0055_032D", - "u1E77", "u0075_032D", - "u1E78", "u0055_0303_0301", - "u1E79", "u0075_0303_0301", - "u1E7A", "u0055_0304_0308", - "u1E7B", "u0075_0304_0308", - "u1E7C", "u0056_0303", - "u1E7D", "u0076_0303", - "u1E7E", "u0056_0323", - "u1E7F", "u0076_0323", - "u1E80", "u0057_0300", - "u1E81", "u0077_0300", - "u1E82", "u0057_0301", - "u1E83", "u0077_0301", - "u1E84", "u0057_0308", - "u1E85", "u0077_0308", - "u1E86", "u0057_0307", - "u1E87", "u0077_0307", - "u1E88", "u0057_0323", - "u1E89", "u0077_0323", - "u1E8A", "u0058_0307", - "u1E8B", "u0078_0307", - "u1E8C", "u0058_0308", - "u1E8D", "u0078_0308", - "u1E8E", "u0059_0307", - "u1E8F", "u0079_0307", - "u1E90", "u005A_0302", - "u1E91", "u007A_0302", - "u1E92", "u005A_0323", - "u1E93", "u007A_0323", - "u1E94", "u005A_0331", - "u1E95", "u007A_0331", - "u1E96", "u0068_0331", - "u1E97", "u0074_0308", - "u1E98", "u0077_030A", - "u1E99", "u0079_030A", - "u1E9B", "u017F_0307", - "u1EA0", "u0041_0323", - "u1EA1", "u0061_0323", - "u1EA2", "u0041_0309", - "u1EA3", "u0061_0309", - "u1EA4", "u0041_0302_0301", - "u1EA5", "u0061_0302_0301", - "u1EA6", "u0041_0302_0300", - "u1EA7", "u0061_0302_0300", - "u1EA8", "u0041_0302_0309", - "u1EA9", "u0061_0302_0309", - "u1EAA", "u0041_0302_0303", - "u1EAB", "u0061_0302_0303", - "u1EAC", "u0041_0323_0302", - "u1EAD", "u0061_0323_0302", - "u1EAE", "u0041_0306_0301", - "u1EAF", "u0061_0306_0301", - "u1EB0", "u0041_0306_0300", - "u1EB1", "u0061_0306_0300", - "u1EB2", "u0041_0306_0309", - "u1EB3", "u0061_0306_0309", - "u1EB4", "u0041_0306_0303", - "u1EB5", "u0061_0306_0303", - "u1EB6", "u0041_0323_0306", - "u1EB7", "u0061_0323_0306", - "u1EB8", "u0045_0323", - "u1EB9", "u0065_0323", - "u1EBA", "u0045_0309", - "u1EBB", "u0065_0309", - "u1EBC", "u0045_0303", - "u1EBD", "u0065_0303", - "u1EBE", "u0045_0302_0301", - "u1EBF", "u0065_0302_0301", - "u1EC0", "u0045_0302_0300", - "u1EC1", "u0065_0302_0300", - "u1EC2", "u0045_0302_0309", - "u1EC3", "u0065_0302_0309", - "u1EC4", "u0045_0302_0303", - "u1EC5", "u0065_0302_0303", - "u1EC6", "u0045_0323_0302", - "u1EC7", "u0065_0323_0302", - "u1EC8", "u0049_0309", - "u1EC9", "u0069_0309", - "u1ECA", "u0049_0323", - "u1ECB", "u0069_0323", - "u1ECC", "u004F_0323", - "u1ECD", "u006F_0323", - "u1ECE", "u004F_0309", - "u1ECF", "u006F_0309", - "u1ED0", "u004F_0302_0301", - "u1ED1", "u006F_0302_0301", - "u1ED2", "u004F_0302_0300", - "u1ED3", "u006F_0302_0300", - "u1ED4", "u004F_0302_0309", - "u1ED5", "u006F_0302_0309", - "u1ED6", "u004F_0302_0303", - "u1ED7", "u006F_0302_0303", - "u1ED8", "u004F_0323_0302", - "u1ED9", "u006F_0323_0302", - "u1EDA", "u004F_031B_0301", - "u1EDB", "u006F_031B_0301", - "u1EDC", "u004F_031B_0300", - "u1EDD", "u006F_031B_0300", - "u1EDE", "u004F_031B_0309", - "u1EDF", "u006F_031B_0309", - "u1EE0", "u004F_031B_0303", - "u1EE1", "u006F_031B_0303", - "u1EE2", "u004F_031B_0323", - "u1EE3", "u006F_031B_0323", - "u1EE4", "u0055_0323", - "u1EE5", "u0075_0323", - "u1EE6", "u0055_0309", - "u1EE7", "u0075_0309", - "u1EE8", "u0055_031B_0301", - "u1EE9", "u0075_031B_0301", - "u1EEA", "u0055_031B_0300", - "u1EEB", "u0075_031B_0300", - "u1EEC", "u0055_031B_0309", - "u1EED", "u0075_031B_0309", - "u1EEE", "u0055_031B_0303", - "u1EEF", "u0075_031B_0303", - "u1EF0", "u0055_031B_0323", - "u1EF1", "u0075_031B_0323", - "u1EF2", "u0059_0300", - "u1EF3", "u0079_0300", - "u1EF4", "u0059_0323", - "u1EF5", "u0079_0323", - "u1EF6", "u0059_0309", - "u1EF7", "u0079_0309", - "u1EF8", "u0059_0303", - "u1EF9", "u0079_0303", - "u1F00", "u03B1_0313", - "u1F01", "u03B1_0314", - "u1F02", "u03B1_0313_0300", - "u1F03", "u03B1_0314_0300", - "u1F04", "u03B1_0313_0301", - "u1F05", "u03B1_0314_0301", - "u1F06", "u03B1_0313_0342", - "u1F07", "u03B1_0314_0342", - "u1F08", "u0391_0313", - "u1F09", "u0391_0314", - "u1F0A", "u0391_0313_0300", - "u1F0B", "u0391_0314_0300", - "u1F0C", "u0391_0313_0301", - "u1F0D", "u0391_0314_0301", - "u1F0E", "u0391_0313_0342", - "u1F0F", "u0391_0314_0342", - "u1F10", "u03B5_0313", - "u1F11", "u03B5_0314", - "u1F12", "u03B5_0313_0300", - "u1F13", "u03B5_0314_0300", - "u1F14", "u03B5_0313_0301", - "u1F15", "u03B5_0314_0301", - "u1F18", "u0395_0313", - "u1F19", "u0395_0314", - "u1F1A", "u0395_0313_0300", - "u1F1B", "u0395_0314_0300", - "u1F1C", "u0395_0313_0301", - "u1F1D", "u0395_0314_0301", - "u1F20", "u03B7_0313", - "u1F21", "u03B7_0314", - "u1F22", "u03B7_0313_0300", - "u1F23", "u03B7_0314_0300", - "u1F24", "u03B7_0313_0301", - "u1F25", "u03B7_0314_0301", - "u1F26", "u03B7_0313_0342", - "u1F27", "u03B7_0314_0342", - "u1F28", "u0397_0313", - "u1F29", "u0397_0314", - "u1F2A", "u0397_0313_0300", - "u1F2B", "u0397_0314_0300", - "u1F2C", "u0397_0313_0301", - "u1F2D", "u0397_0314_0301", - "u1F2E", "u0397_0313_0342", - "u1F2F", "u0397_0314_0342", - "u1F30", "u03B9_0313", - "u1F31", "u03B9_0314", - "u1F32", "u03B9_0313_0300", - "u1F33", "u03B9_0314_0300", - "u1F34", "u03B9_0313_0301", - "u1F35", "u03B9_0314_0301", - "u1F36", "u03B9_0313_0342", - "u1F37", "u03B9_0314_0342", - "u1F38", "u0399_0313", - "u1F39", "u0399_0314", - "u1F3A", "u0399_0313_0300", - "u1F3B", "u0399_0314_0300", - "u1F3C", "u0399_0313_0301", - "u1F3D", "u0399_0314_0301", - "u1F3E", "u0399_0313_0342", - "u1F3F", "u0399_0314_0342", - "u1F40", "u03BF_0313", - "u1F41", "u03BF_0314", - "u1F42", "u03BF_0313_0300", - "u1F43", "u03BF_0314_0300", - "u1F44", "u03BF_0313_0301", - "u1F45", "u03BF_0314_0301", - "u1F48", "u039F_0313", - "u1F49", "u039F_0314", - "u1F4A", "u039F_0313_0300", - "u1F4B", "u039F_0314_0300", - "u1F4C", "u039F_0313_0301", - "u1F4D", "u039F_0314_0301", - "u1F50", "u03C5_0313", - "u1F51", "u03C5_0314", - "u1F52", "u03C5_0313_0300", - "u1F53", "u03C5_0314_0300", - "u1F54", "u03C5_0313_0301", - "u1F55", "u03C5_0314_0301", - "u1F56", "u03C5_0313_0342", - "u1F57", "u03C5_0314_0342", - "u1F59", "u03A5_0314", - "u1F5B", "u03A5_0314_0300", - "u1F5D", "u03A5_0314_0301", - "u1F5F", "u03A5_0314_0342", - "u1F60", "u03C9_0313", - "u1F61", "u03C9_0314", - "u1F62", "u03C9_0313_0300", - "u1F63", "u03C9_0314_0300", - "u1F64", "u03C9_0313_0301", - "u1F65", "u03C9_0314_0301", - "u1F66", "u03C9_0313_0342", - "u1F67", "u03C9_0314_0342", - "u1F68", "u03A9_0313", - "u1F69", "u03A9_0314", - "u1F6A", "u03A9_0313_0300", - "u1F6B", "u03A9_0314_0300", - "u1F6C", "u03A9_0313_0301", - "u1F6D", "u03A9_0314_0301", - "u1F6E", "u03A9_0313_0342", - "u1F6F", "u03A9_0314_0342", - "u1F70", "u03B1_0300", - "u1F71", "u03B1_0301", - "u1F72", "u03B5_0300", - "u1F73", "u03B5_0301", - "u1F74", "u03B7_0300", - "u1F75", "u03B7_0301", - "u1F76", "u03B9_0300", - "u1F77", "u03B9_0301", - "u1F78", "u03BF_0300", - "u1F79", "u03BF_0301", - "u1F7A", "u03C5_0300", - "u1F7B", "u03C5_0301", - "u1F7C", "u03C9_0300", - "u1F7D", "u03C9_0301", - "u1F80", "u03B1_0313_0345", - "u1F81", "u03B1_0314_0345", - "u1F82", "u03B1_0313_0300_0345", - "u1F83", "u03B1_0314_0300_0345", - "u1F84", "u03B1_0313_0301_0345", - "u1F85", "u03B1_0314_0301_0345", - "u1F86", "u03B1_0313_0342_0345", - "u1F87", "u03B1_0314_0342_0345", - "u1F88", "u0391_0313_0345", - "u1F89", "u0391_0314_0345", - "u1F8A", "u0391_0313_0300_0345", - "u1F8B", "u0391_0314_0300_0345", - "u1F8C", "u0391_0313_0301_0345", - "u1F8D", "u0391_0314_0301_0345", - "u1F8E", "u0391_0313_0342_0345", - "u1F8F", "u0391_0314_0342_0345", - "u1F90", "u03B7_0313_0345", - "u1F91", "u03B7_0314_0345", - "u1F92", "u03B7_0313_0300_0345", - "u1F93", "u03B7_0314_0300_0345", - "u1F94", "u03B7_0313_0301_0345", - "u1F95", "u03B7_0314_0301_0345", - "u1F96", "u03B7_0313_0342_0345", - "u1F97", "u03B7_0314_0342_0345", - "u1F98", "u0397_0313_0345", - "u1F99", "u0397_0314_0345", - "u1F9A", "u0397_0313_0300_0345", - "u1F9B", "u0397_0314_0300_0345", - "u1F9C", "u0397_0313_0301_0345", - "u1F9D", "u0397_0314_0301_0345", - "u1F9E", "u0397_0313_0342_0345", - "u1F9F", "u0397_0314_0342_0345", - "u1FA0", "u03C9_0313_0345", - "u1FA1", "u03C9_0314_0345", - "u1FA2", "u03C9_0313_0300_0345", - "u1FA3", "u03C9_0314_0300_0345", - "u1FA4", "u03C9_0313_0301_0345", - "u1FA5", "u03C9_0314_0301_0345", - "u1FA6", "u03C9_0313_0342_0345", - "u1FA7", "u03C9_0314_0342_0345", - "u1FA8", "u03A9_0313_0345", - "u1FA9", "u03A9_0314_0345", - "u1FAA", "u03A9_0313_0300_0345", - "u1FAB", "u03A9_0314_0300_0345", - "u1FAC", "u03A9_0313_0301_0345", - "u1FAD", "u03A9_0314_0301_0345", - "u1FAE", "u03A9_0313_0342_0345", - "u1FAF", "u03A9_0314_0342_0345", - "u1FB0", "u03B1_0306", - "u1FB1", "u03B1_0304", - "u1FB2", "u03B1_0300_0345", - "u1FB3", "u03B1_0345", - "u1FB4", "u03B1_0301_0345", - "u1FB6", "u03B1_0342", - "u1FB7", "u03B1_0342_0345", - "u1FB8", "u0391_0306", - "u1FB9", "u0391_0304", - "u1FBA", "u0391_0300", - "u1FBB", "u0391_0301", - "u1FBC", "u0391_0345", - "u1FBE", "u03B9", - "u1FC1", "u00A8_0342", - "u1FC2", "u03B7_0300_0345", - "u1FC3", "u03B7_0345", - "u1FC4", "u03B7_0301_0345", - "u1FC6", "u03B7_0342", - "u1FC7", "u03B7_0342_0345", - "u1FC8", "u0395_0300", - "u1FC9", "u0395_0301", - "u1FCA", "u0397_0300", - "u1FCB", "u0397_0301", - "u1FCC", "u0397_0345", - "u1FCD", "u1FBF_0300", - "u1FCE", "u1FBF_0301", - "u1FCF", "u1FBF_0342", - "u1FD0", "u03B9_0306", - "u1FD1", "u03B9_0304", - "u1FD2", "u03B9_0308_0300", - "u1FD3", "u03B9_0308_0301", - "u1FD6", "u03B9_0342", - "u1FD7", "u03B9_0308_0342", - "u1FD8", "u0399_0306", - "u1FD9", "u0399_0304", - "u1FDA", "u0399_0300", - "u1FDB", "u0399_0301", - "u1FDD", "u1FFE_0300", - "u1FDE", "u1FFE_0301", - "u1FDF", "u1FFE_0342", - "u1FE0", "u03C5_0306", - "u1FE1", "u03C5_0304", - "u1FE2", "u03C5_0308_0300", - "u1FE3", "u03C5_0308_0301", - "u1FE4", "u03C1_0313", - "u1FE5", "u03C1_0314", - "u1FE6", "u03C5_0342", - "u1FE7", "u03C5_0308_0342", - "u1FE8", "u03A5_0306", - "u1FE9", "u03A5_0304", - "u1FEA", "u03A5_0300", - "u1FEB", "u03A5_0301", - "u1FEC", "u03A1_0314", - "u1FED", "u00A8_0300", - "u1FEE", "u00A8_0301", - "u1FEF", "u0060", - "u1FF2", "u03C9_0300_0345", - "u1FF3", "u03C9_0345", - "u1FF4", "u03C9_0301_0345", - "u1FF6", "u03C9_0342", - "u1FF7", "u03C9_0342_0345", - "u1FF8", "u039F_0300", - "u1FF9", "u039F_0301", - "u1FFA", "u03A9_0300", - "u1FFB", "u03A9_0301", - "u1FFC", "u03A9_0345", - "u1FFD", "u00B4", - "u2000", "u2002", - "u2001", "u2003", - "u2126", "u03A9", - "u212A", "u004B", - "u212B", "u0041_030A", - "u219A", "u2190_0338", - "u219B", "u2192_0338", - "u21AE", "u2194_0338", - "u21CD", "u21D0_0338", - "u21CE", "u21D4_0338", - "u21CF", "u21D2_0338", - "u2204", "u2203_0338", - "u2209", "u2208_0338", - "u220C", "u220B_0338", - "u2224", "u2223_0338", - "u2226", "u2225_0338", - "u2241", "u223C_0338", - "u2244", "u2243_0338", - "u2247", "u2245_0338", - "u2249", "u2248_0338", - "u2260", "u003D_0338", - "u2262", "u2261_0338", - "u226D", "u224D_0338", - "u226E", "u003C_0338", - "u226F", "u003E_0338", - "u2270", "u2264_0338", - "u2271", "u2265_0338", - "u2274", "u2272_0338", - "u2275", "u2273_0338", - "u2278", "u2276_0338", - "u2279", "u2277_0338", - "u2280", "u227A_0338", - "u2281", "u227B_0338", - "u2284", "u2282_0338", - "u2285", "u2283_0338", - "u2288", "u2286_0338", - "u2289", "u2287_0338", - "u22AC", "u22A2_0338", - "u22AD", "u22A8_0338", - "u22AE", "u22A9_0338", - "u22AF", "u22AB_0338", - "u22E0", "u227C_0338", - "u22E1", "u227D_0338", - "u22E2", "u2291_0338", - "u22E3", "u2292_0338", - "u22EA", "u22B2_0338", - "u22EB", "u22B3_0338", - "u22EC", "u22B4_0338", - "u22ED", "u22B5_0338", - "u2329", "u3008", - "u232A", "u3009", - "u2ADC", "u2ADD_0338", - "u304C", "u304B_3099", - "u304E", "u304D_3099", - "u3050", "u304F_3099", - "u3052", "u3051_3099", - "u3054", "u3053_3099", - "u3056", "u3055_3099", - "u3058", "u3057_3099", - "u305A", "u3059_3099", - "u305C", "u305B_3099", - "u305E", "u305D_3099", - "u3060", "u305F_3099", - "u3062", "u3061_3099", - "u3065", "u3064_3099", - "u3067", "u3066_3099", - "u3069", "u3068_3099", - "u3070", "u306F_3099", - "u3071", "u306F_309A", - "u3073", "u3072_3099", - "u3074", "u3072_309A", - "u3076", "u3075_3099", - "u3077", "u3075_309A", - "u3079", "u3078_3099", - "u307A", "u3078_309A", - "u307C", "u307B_3099", - "u307D", "u307B_309A", - "u3094", "u3046_3099", - "u309E", "u309D_3099", - "u30AC", "u30AB_3099", - "u30AE", "u30AD_3099", - "u30B0", "u30AF_3099", - "u30B2", "u30B1_3099", - "u30B4", "u30B3_3099", - "u30B6", "u30B5_3099", - "u30B8", "u30B7_3099", - "u30BA", "u30B9_3099", - "u30BC", "u30BB_3099", - "u30BE", "u30BD_3099", - "u30C0", "u30BF_3099", - "u30C2", "u30C1_3099", - "u30C5", "u30C4_3099", - "u30C7", "u30C6_3099", - "u30C9", "u30C8_3099", - "u30D0", "u30CF_3099", - "u30D1", "u30CF_309A", - "u30D3", "u30D2_3099", - "u30D4", "u30D2_309A", - "u30D6", "u30D5_3099", - "u30D7", "u30D5_309A", - "u30D9", "u30D8_3099", - "u30DA", "u30D8_309A", - "u30DC", "u30DB_3099", - "u30DD", "u30DB_309A", - "u30F4", "u30A6_3099", - "u30F7", "u30EF_3099", - "u30F8", "u30F0_3099", - "u30F9", "u30F1_3099", - "u30FA", "u30F2_3099", - "u30FE", "u30FD_3099", - "uF900", "u8C48", - "uF901", "u66F4", - "uF902", "u8ECA", - "uF903", "u8CC8", - "uF904", "u6ED1", - "uF905", "u4E32", - "uF906", "u53E5", - "uF907", "u9F9C", - "uF908", "u9F9C", - "uF909", "u5951", - "uF90A", "u91D1", - "uF90B", "u5587", - "uF90C", "u5948", - "uF90D", "u61F6", - "uF90E", "u7669", - "uF90F", "u7F85", - "uF910", "u863F", - "uF911", "u87BA", - "uF912", "u88F8", - "uF913", "u908F", - "uF914", "u6A02", - "uF915", "u6D1B", - "uF916", "u70D9", - "uF917", "u73DE", - "uF918", "u843D", - "uF919", "u916A", - "uF91A", "u99F1", - "uF91B", "u4E82", - "uF91C", "u5375", - "uF91D", "u6B04", - "uF91E", "u721B", - "uF91F", "u862D", - "uF920", "u9E1E", - "uF921", "u5D50", - "uF922", "u6FEB", - "uF923", "u85CD", - "uF924", "u8964", - "uF925", "u62C9", - "uF926", "u81D8", - "uF927", "u881F", - "uF928", "u5ECA", - "uF929", "u6717", - "uF92A", "u6D6A", - "uF92B", "u72FC", - "uF92C", "u90CE", - "uF92D", "u4F86", - "uF92E", "u51B7", - "uF92F", "u52DE", - "uF930", "u64C4", - "uF931", "u6AD3", - "uF932", "u7210", - "uF933", "u76E7", - "uF934", "u8001", - "uF935", "u8606", - "uF936", "u865C", - "uF937", "u8DEF", - "uF938", "u9732", - "uF939", "u9B6F", - "uF93A", "u9DFA", - "uF93B", "u788C", - "uF93C", "u797F", - "uF93D", "u7DA0", - "uF93E", "u83C9", - "uF93F", "u9304", - "uF940", "u9E7F", - "uF941", "u8AD6", - "uF942", "u58DF", - "uF943", "u5F04", - "uF944", "u7C60", - "uF945", "u807E", - "uF946", "u7262", - "uF947", "u78CA", - "uF948", "u8CC2", - "uF949", "u96F7", - "uF94A", "u58D8", - "uF94B", "u5C62", - "uF94C", "u6A13", - "uF94D", "u6DDA", - "uF94E", "u6F0F", - "uF94F", "u7D2F", - "uF950", "u7E37", - "uF951", "u964B", - "uF952", "u52D2", - "uF953", "u808B", - "uF954", "u51DC", - "uF955", "u51CC", - "uF956", "u7A1C", - "uF957", "u7DBE", - "uF958", "u83F1", - "uF959", "u9675", - "uF95A", "u8B80", - "uF95B", "u62CF", - "uF95C", "u6A02", - "uF95D", "u8AFE", - "uF95E", "u4E39", - "uF95F", "u5BE7", - "uF960", "u6012", - "uF961", "u7387", - "uF962", "u7570", - "uF963", "u5317", - "uF964", "u78FB", - "uF965", "u4FBF", - "uF966", "u5FA9", - "uF967", "u4E0D", - "uF968", "u6CCC", - "uF969", "u6578", - "uF96A", "u7D22", - "uF96B", "u53C3", - "uF96C", "u585E", - "uF96D", "u7701", - "uF96E", "u8449", - "uF96F", "u8AAA", - "uF970", "u6BBA", - "uF971", "u8FB0", - "uF972", "u6C88", - "uF973", "u62FE", - "uF974", "u82E5", - "uF975", "u63A0", - "uF976", "u7565", - "uF977", "u4EAE", - "uF978", "u5169", - "uF979", "u51C9", - "uF97A", "u6881", - "uF97B", "u7CE7", - "uF97C", "u826F", - "uF97D", "u8AD2", - "uF97E", "u91CF", - "uF97F", "u52F5", - "uF980", "u5442", - "uF981", "u5973", - "uF982", "u5EEC", - "uF983", "u65C5", - "uF984", "u6FFE", - "uF985", "u792A", - "uF986", "u95AD", - "uF987", "u9A6A", - "uF988", "u9E97", - "uF989", "u9ECE", - "uF98A", "u529B", - "uF98B", "u66C6", - "uF98C", "u6B77", - "uF98D", "u8F62", - "uF98E", "u5E74", - "uF98F", "u6190", - "uF990", "u6200", - "uF991", "u649A", - "uF992", "u6F23", - "uF993", "u7149", - "uF994", "u7489", - "uF995", "u79CA", - "uF996", "u7DF4", - "uF997", "u806F", - "uF998", "u8F26", - "uF999", "u84EE", - "uF99A", "u9023", - "uF99B", "u934A", - "uF99C", "u5217", - "uF99D", "u52A3", - "uF99E", "u54BD", - "uF99F", "u70C8", - "uF9A0", "u88C2", - "uF9A1", "u8AAA", - "uF9A2", "u5EC9", - "uF9A3", "u5FF5", - "uF9A4", "u637B", - "uF9A5", "u6BAE", - "uF9A6", "u7C3E", - "uF9A7", "u7375", - "uF9A8", "u4EE4", - "uF9A9", "u56F9", - "uF9AA", "u5BE7", - "uF9AB", "u5DBA", - "uF9AC", "u601C", - "uF9AD", "u73B2", - "uF9AE", "u7469", - "uF9AF", "u7F9A", - "uF9B0", "u8046", - "uF9B1", "u9234", - "uF9B2", "u96F6", - "uF9B3", "u9748", - "uF9B4", "u9818", - "uF9B5", "u4F8B", - "uF9B6", "u79AE", - "uF9B7", "u91B4", - "uF9B8", "u96B8", - "uF9B9", "u60E1", - "uF9BA", "u4E86", - "uF9BB", "u50DA", - "uF9BC", "u5BEE", - "uF9BD", "u5C3F", - "uF9BE", "u6599", - "uF9BF", "u6A02", - "uF9C0", "u71CE", - "uF9C1", "u7642", - "uF9C2", "u84FC", - "uF9C3", "u907C", - "uF9C4", "u9F8D", - "uF9C5", "u6688", - "uF9C6", "u962E", - "uF9C7", "u5289", - "uF9C8", "u677B", - "uF9C9", "u67F3", - "uF9CA", "u6D41", - "uF9CB", "u6E9C", - "uF9CC", "u7409", - "uF9CD", "u7559", - "uF9CE", "u786B", - "uF9CF", "u7D10", - "uF9D0", "u985E", - "uF9D1", "u516D", - "uF9D2", "u622E", - "uF9D3", "u9678", - "uF9D4", "u502B", - "uF9D5", "u5D19", - "uF9D6", "u6DEA", - "uF9D7", "u8F2A", - "uF9D8", "u5F8B", - "uF9D9", "u6144", - "uF9DA", "u6817", - "uF9DB", "u7387", - "uF9DC", "u9686", - "uF9DD", "u5229", - "uF9DE", "u540F", - "uF9DF", "u5C65", - "uF9E0", "u6613", - "uF9E1", "u674E", - "uF9E2", "u68A8", - "uF9E3", "u6CE5", - "uF9E4", "u7406", - "uF9E5", "u75E2", - "uF9E6", "u7F79", - "uF9E7", "u88CF", - "uF9E8", "u88E1", - "uF9E9", "u91CC", - "uF9EA", "u96E2", - "uF9EB", "u533F", - "uF9EC", "u6EBA", - "uF9ED", "u541D", - "uF9EE", "u71D0", - "uF9EF", "u7498", - "uF9F0", "u85FA", - "uF9F1", "u96A3", - "uF9F2", "u9C57", - "uF9F3", "u9E9F", - "uF9F4", "u6797", - "uF9F5", "u6DCB", - "uF9F6", "u81E8", - "uF9F7", "u7ACB", - "uF9F8", "u7B20", - "uF9F9", "u7C92", - "uF9FA", "u72C0", - "uF9FB", "u7099", - "uF9FC", "u8B58", - "uF9FD", "u4EC0", - "uF9FE", "u8336", - "uF9FF", "u523A", - "uFA00", "u5207", - "uFA01", "u5EA6", - "uFA02", "u62D3", - "uFA03", "u7CD6", - "uFA04", "u5B85", - "uFA05", "u6D1E", - "uFA06", "u66B4", - "uFA07", "u8F3B", - "uFA08", "u884C", - "uFA09", "u964D", - "uFA0A", "u898B", - "uFA0B", "u5ED3", - "uFA0C", "u5140", - "uFA0D", "u55C0", - "uFA10", "u585A", - "uFA12", "u6674", - "uFA15", "u51DE", - "uFA16", "u732A", - "uFA17", "u76CA", - "uFA18", "u793C", - "uFA19", "u795E", - "uFA1A", "u7965", - "uFA1B", "u798F", - "uFA1C", "u9756", - "uFA1D", "u7CBE", - "uFA1E", "u7FBD", - "uFA20", "u8612", - "uFA22", "u8AF8", - "uFA25", "u9038", - "uFA26", "u90FD", - "uFA2A", "u98EF", - "uFA2B", "u98FC", - "uFA2C", "u9928", - "uFA2D", "u9DB4", - "uFA30", "u4FAE", - "uFA31", "u50E7", - "uFA32", "u514D", - "uFA33", "u52C9", - "uFA34", "u52E4", - "uFA35", "u5351", - "uFA36", "u559D", - "uFA37", "u5606", - "uFA38", "u5668", - "uFA39", "u5840", - "uFA3A", "u58A8", - "uFA3B", "u5C64", - "uFA3C", "u5C6E", - "uFA3D", "u6094", - "uFA3E", "u6168", - "uFA3F", "u618E", - "uFA40", "u61F2", - "uFA41", "u654F", - "uFA42", "u65E2", - "uFA43", "u6691", - "uFA44", "u6885", - "uFA45", "u6D77", - "uFA46", "u6E1A", - "uFA47", "u6F22", - "uFA48", "u716E", - "uFA49", "u722B", - "uFA4A", "u7422", - "uFA4B", "u7891", - "uFA4C", "u793E", - "uFA4D", "u7949", - "uFA4E", "u7948", - "uFA4F", "u7950", - "uFA50", "u7956", - "uFA51", "u795D", - "uFA52", "u798D", - "uFA53", "u798E", - "uFA54", "u7A40", - "uFA55", "u7A81", - "uFA56", "u7BC0", - "uFA57", "u7DF4", - "uFA58", "u7E09", - "uFA59", "u7E41", - "uFA5A", "u7F72", - "uFA5B", "u8005", - "uFA5C", "u81ED", - "uFA5D", "u8279", - "uFA5E", "u8279", - "uFA5F", "u8457", - "uFA60", "u8910", - "uFA61", "u8996", - "uFA62", "u8B01", - "uFA63", "u8B39", - "uFA64", "u8CD3", - "uFA65", "u8D08", - "uFA66", "u8FB6", - "uFA67", "u9038", - "uFA68", "u96E3", - "uFA69", "u97FF", - "uFA6A", "u983B", - "uFB1D", "u05D9_05B4", - "uFB1F", "u05F2_05B7", - "uFB2A", "u05E9_05C1", - "uFB2B", "u05E9_05C2", - "uFB2C", "u05E9_05BC_05C1", - "uFB2D", "u05E9_05BC_05C2", - "uFB2E", "u05D0_05B7", - "uFB2F", "u05D0_05B8", - "uFB30", "u05D0_05BC", - "uFB31", "u05D1_05BC", - "uFB32", "u05D2_05BC", - "uFB33", "u05D3_05BC", - "uFB34", "u05D4_05BC", - "uFB35", "u05D5_05BC", - "uFB36", "u05D6_05BC", - "uFB38", "u05D8_05BC", - "uFB39", "u05D9_05BC", - "uFB3A", "u05DA_05BC", - "uFB3B", "u05DB_05BC", - "uFB3C", "u05DC_05BC", - "uFB3E", "u05DE_05BC", - "uFB40", "u05E0_05BC", - "uFB41", "u05E1_05BC", - "uFB43", "u05E3_05BC", - "uFB44", "u05E4_05BC", - "uFB46", "u05E6_05BC", - "uFB47", "u05E7_05BC", - "uFB48", "u05E8_05BC", - "uFB49", "u05E9_05BC", - "uFB4A", "u05EA_05BC", - "uFB4B", "u05D5_05B9", - "uFB4C", "u05D1_05BF", - "uFB4D", "u05DB_05BF", - "uFB4E", "u05E4_05BF", - "u1D15E", "u1D157_1D165", - "u1D15F", "u1D158_1D165", - "u1D160", "u1D158_1D165_1D16E", - "u1D161", "u1D158_1D165_1D16F", - "u1D162", "u1D158_1D165_1D170", - "u1D163", "u1D158_1D165_1D171", - "u1D164", "u1D158_1D165_1D172", - "u1D1BB", "u1D1B9_1D165", - "u1D1BC", "u1D1BA_1D165", - "u1D1BD", "u1D1B9_1D165_1D16E", - "u1D1BE", "u1D1BA_1D165_1D16E", - "u1D1BF", "u1D1B9_1D165_1D16F", - "u1D1C0", "u1D1BA_1D165_1D16F", - "u2F800", "u4E3D", - "u2F801", "u4E38", - "u2F802", "u4E41", - "u2F803", "u20122", - "u2F804", "u4F60", - "u2F805", "u4FAE", - "u2F806", "u4FBB", - "u2F807", "u5002", - "u2F808", "u507A", - "u2F809", "u5099", - "u2F80A", "u50E7", - "u2F80B", "u50CF", - "u2F80C", "u349E", - "u2F80D", "u2063A", - "u2F80E", "u514D", - "u2F80F", "u5154", - "u2F810", "u5164", - "u2F811", "u5177", - "u2F812", "u2051C", - "u2F813", "u34B9", - "u2F814", "u5167", - "u2F815", "u518D", - "u2F816", "u2054B", - "u2F817", "u5197", - "u2F818", "u51A4", - "u2F819", "u4ECC", - "u2F81A", "u51AC", - "u2F81B", "u51B5", - "u2F81C", "u291DF", - "u2F81D", "u51F5", - "u2F81E", "u5203", - "u2F81F", "u34DF", - "u2F820", "u523B", - "u2F821", "u5246", - "u2F822", "u5272", - "u2F823", "u5277", - "u2F824", "u3515", - "u2F825", "u52C7", - "u2F826", "u52C9", - "u2F827", "u52E4", - "u2F828", "u52FA", - "u2F829", "u5305", - "u2F82A", "u5306", - "u2F82B", "u5317", - "u2F82C", "u5349", - "u2F82D", "u5351", - "u2F82E", "u535A", - "u2F82F", "u5373", - "u2F830", "u537D", - "u2F831", "u537F", - "u2F832", "u537F", - "u2F833", "u537F", - "u2F834", "u20A2C", - "u2F835", "u7070", - "u2F836", "u53CA", - "u2F837", "u53DF", - "u2F838", "u20B63", - "u2F839", "u53EB", - "u2F83A", "u53F1", - "u2F83B", "u5406", - "u2F83C", "u549E", - "u2F83D", "u5438", - "u2F83E", "u5448", - "u2F83F", "u5468", - "u2F840", "u54A2", - "u2F841", "u54F6", - "u2F842", "u5510", - "u2F843", "u5553", - "u2F844", "u5563", - "u2F845", "u5584", - "u2F846", "u5584", - "u2F847", "u5599", - "u2F848", "u55AB", - "u2F849", "u55B3", - "u2F84A", "u55C2", - "u2F84B", "u5716", - "u2F84C", "u5606", - "u2F84D", "u5717", - "u2F84E", "u5651", - "u2F84F", "u5674", - "u2F850", "u5207", - "u2F851", "u58EE", - "u2F852", "u57CE", - "u2F853", "u57F4", - "u2F854", "u580D", - "u2F855", "u578B", - "u2F856", "u5832", - "u2F857", "u5831", - "u2F858", "u58AC", - "u2F859", "u214E4", - "u2F85A", "u58F2", - "u2F85B", "u58F7", - "u2F85C", "u5906", - "u2F85D", "u591A", - "u2F85E", "u5922", - "u2F85F", "u5962", - "u2F860", "u216A8", - "u2F861", "u216EA", - "u2F862", "u59EC", - "u2F863", "u5A1B", - "u2F864", "u5A27", - "u2F865", "u59D8", - "u2F866", "u5A66", - "u2F867", "u36EE", - "u2F868", "u2136A", - "u2F869", "u5B08", - "u2F86A", "u5B3E", - "u2F86B", "u5B3E", - "u2F86C", "u219C8", - "u2F86D", "u5BC3", - "u2F86E", "u5BD8", - "u2F86F", "u5BE7", - "u2F870", "u5BF3", - "u2F871", "u21B18", - "u2F872", "u5BFF", - "u2F873", "u5C06", - "u2F874", "u5F33", - "u2F875", "u5C22", - "u2F876", "u3781", - "u2F877", "u5C60", - "u2F878", "u5C6E", - "u2F879", "u5CC0", - "u2F87A", "u5C8D", - "u2F87B", "u21DE4", - "u2F87C", "u5D43", - "u2F87D", "u21DE6", - "u2F87E", "u5D6E", - "u2F87F", "u5D6B", - "u2F880", "u5D7C", - "u2F881", "u5DE1", - "u2F882", "u5DE2", - "u2F883", "u382F", - "u2F884", "u5DFD", - "u2F885", "u5E28", - "u2F886", "u5E3D", - "u2F887", "u5E69", - "u2F888", "u3862", - "u2F889", "u22183", - "u2F88A", "u387C", - "u2F88B", "u5EB0", - "u2F88C", "u5EB3", - "u2F88D", "u5EB6", - "u2F88E", "u5ECA", - "u2F88F", "u2A392", - "u2F890", "u5EFE", - "u2F891", "u22331", - "u2F892", "u22331", - "u2F893", "u8201", - "u2F894", "u5F22", - "u2F895", "u5F22", - "u2F896", "u38C7", - "u2F897", "u232B8", - "u2F898", "u261DA", - "u2F899", "u5F62", - "u2F89A", "u5F6B", - "u2F89B", "u38E3", - "u2F89C", "u5F9A", - "u2F89D", "u5FCD", - "u2F89E", "u5FD7", - "u2F89F", "u5FF9", - "u2F8A0", "u6081", - "u2F8A1", "u393A", - "u2F8A2", "u391C", - "u2F8A3", "u6094", - "u2F8A4", "u226D4", - "u2F8A5", "u60C7", - "u2F8A6", "u6148", - "u2F8A7", "u614C", - "u2F8A8", "u614E", - "u2F8A9", "u614C", - "u2F8AA", "u617A", - "u2F8AB", "u618E", - "u2F8AC", "u61B2", - "u2F8AD", "u61A4", - "u2F8AE", "u61AF", - "u2F8AF", "u61DE", - "u2F8B0", "u61F2", - "u2F8B1", "u61F6", - "u2F8B2", "u6210", - "u2F8B3", "u621B", - "u2F8B4", "u625D", - "u2F8B5", "u62B1", - "u2F8B6", "u62D4", - "u2F8B7", "u6350", - "u2F8B8", "u22B0C", - "u2F8B9", "u633D", - "u2F8BA", "u62FC", - "u2F8BB", "u6368", - "u2F8BC", "u6383", - "u2F8BD", "u63E4", - "u2F8BE", "u22BF1", - "u2F8BF", "u6422", - "u2F8C0", "u63C5", - "u2F8C1", "u63A9", - "u2F8C2", "u3A2E", - "u2F8C3", "u6469", - "u2F8C4", "u647E", - "u2F8C5", "u649D", - "u2F8C6", "u6477", - "u2F8C7", "u3A6C", - "u2F8C8", "u654F", - "u2F8C9", "u656C", - "u2F8CA", "u2300A", - "u2F8CB", "u65E3", - "u2F8CC", "u66F8", - "u2F8CD", "u6649", - "u2F8CE", "u3B19", - "u2F8CF", "u6691", - "u2F8D0", "u3B08", - "u2F8D1", "u3AE4", - "u2F8D2", "u5192", - "u2F8D3", "u5195", - "u2F8D4", "u6700", - "u2F8D5", "u669C", - "u2F8D6", "u80AD", - "u2F8D7", "u43D9", - "u2F8D8", "u6717", - "u2F8D9", "u671B", - "u2F8DA", "u6721", - "u2F8DB", "u675E", - "u2F8DC", "u6753", - "u2F8DD", "u233C3", - "u2F8DE", "u3B49", - "u2F8DF", "u67FA", - "u2F8E0", "u6785", - "u2F8E1", "u6852", - "u2F8E2", "u6885", - "u2F8E3", "u2346D", - "u2F8E4", "u688E", - "u2F8E5", "u681F", - "u2F8E6", "u6914", - "u2F8E7", "u3B9D", - "u2F8E8", "u6942", - "u2F8E9", "u69A3", - "u2F8EA", "u69EA", - "u2F8EB", "u6AA8", - "u2F8EC", "u236A3", - "u2F8ED", "u6ADB", - "u2F8EE", "u3C18", - "u2F8EF", "u6B21", - "u2F8F0", "u238A7", - "u2F8F1", "u6B54", - "u2F8F2", "u3C4E", - "u2F8F3", "u6B72", - "u2F8F4", "u6B9F", - "u2F8F5", "u6BBA", - "u2F8F6", "u6BBB", - "u2F8F7", "u23A8D", - "u2F8F8", "u21D0B", - "u2F8F9", "u23AFA", - "u2F8FA", "u6C4E", - "u2F8FB", "u23CBC", - "u2F8FC", "u6CBF", - "u2F8FD", "u6CCD", - "u2F8FE", "u6C67", - "u2F8FF", "u6D16", - "u2F900", "u6D3E", - "u2F901", "u6D77", - "u2F902", "u6D41", - "u2F903", "u6D69", - "u2F904", "u6D78", - "u2F905", "u6D85", - "u2F906", "u23D1E", - "u2F907", "u6D34", - "u2F908", "u6E2F", - "u2F909", "u6E6E", - "u2F90A", "u3D33", - "u2F90B", "u6ECB", - "u2F90C", "u6EC7", - "u2F90D", "u23ED1", - "u2F90E", "u6DF9", - "u2F90F", "u6F6E", - "u2F910", "u23F5E", - "u2F911", "u23F8E", - "u2F912", "u6FC6", - "u2F913", "u7039", - "u2F914", "u701E", - "u2F915", "u701B", - "u2F916", "u3D96", - "u2F917", "u704A", - "u2F918", "u707D", - "u2F919", "u7077", - "u2F91A", "u70AD", - "u2F91B", "u20525", - "u2F91C", "u7145", - "u2F91D", "u24263", - "u2F91E", "u719C", - "u2F91F", "u43AB", - "u2F920", "u7228", - "u2F921", "u7235", - "u2F922", "u7250", - "u2F923", "u24608", - "u2F924", "u7280", - "u2F925", "u7295", - "u2F926", "u24735", - "u2F927", "u24814", - "u2F928", "u737A", - "u2F929", "u738B", - "u2F92A", "u3EAC", - "u2F92B", "u73A5", - "u2F92C", "u3EB8", - "u2F92D", "u3EB8", - "u2F92E", "u7447", - "u2F92F", "u745C", - "u2F930", "u7471", - "u2F931", "u7485", - "u2F932", "u74CA", - "u2F933", "u3F1B", - "u2F934", "u7524", - "u2F935", "u24C36", - "u2F936", "u753E", - "u2F937", "u24C92", - "u2F938", "u7570", - "u2F939", "u2219F", - "u2F93A", "u7610", - "u2F93B", "u24FA1", - "u2F93C", "u24FB8", - "u2F93D", "u25044", - "u2F93E", "u3FFC", - "u2F93F", "u4008", - "u2F940", "u76F4", - "u2F941", "u250F3", - "u2F942", "u250F2", - "u2F943", "u25119", - "u2F944", "u25133", - "u2F945", "u771E", - "u2F946", "u771F", - "u2F947", "u771F", - "u2F948", "u774A", - "u2F949", "u4039", - "u2F94A", "u778B", - "u2F94B", "u4046", - "u2F94C", "u4096", - "u2F94D", "u2541D", - "u2F94E", "u784E", - "u2F94F", "u788C", - "u2F950", "u78CC", - "u2F951", "u40E3", - "u2F952", "u25626", - "u2F953", "u7956", - "u2F954", "u2569A", - "u2F955", "u256C5", - "u2F956", "u798F", - "u2F957", "u79EB", - "u2F958", "u412F", - "u2F959", "u7A40", - "u2F95A", "u7A4A", - "u2F95B", "u7A4F", - "u2F95C", "u2597C", - "u2F95D", "u25AA7", - "u2F95E", "u25AA7", - "u2F95F", "u7AAE", - "u2F960", "u4202", - "u2F961", "u25BAB", - "u2F962", "u7BC6", - "u2F963", "u7BC9", - "u2F964", "u4227", - "u2F965", "u25C80", - "u2F966", "u7CD2", - "u2F967", "u42A0", - "u2F968", "u7CE8", - "u2F969", "u7CE3", - "u2F96A", "u7D00", - "u2F96B", "u25F86", - "u2F96C", "u7D63", - "u2F96D", "u4301", - "u2F96E", "u7DC7", - "u2F96F", "u7E02", - "u2F970", "u7E45", - "u2F971", "u4334", - "u2F972", "u26228", - "u2F973", "u26247", - "u2F974", "u4359", - "u2F975", "u262D9", - "u2F976", "u7F7A", - "u2F977", "u2633E", - "u2F978", "u7F95", - "u2F979", "u7FFA", - "u2F97A", "u8005", - "u2F97B", "u264DA", - "u2F97C", "u26523", - "u2F97D", "u8060", - "u2F97E", "u265A8", - "u2F97F", "u8070", - "u2F980", "u2335F", - "u2F981", "u43D5", - "u2F982", "u80B2", - "u2F983", "u8103", - "u2F984", "u440B", - "u2F985", "u813E", - "u2F986", "u5AB5", - "u2F987", "u267A7", - "u2F988", "u267B5", - "u2F989", "u23393", - "u2F98A", "u2339C", - "u2F98B", "u8201", - "u2F98C", "u8204", - "u2F98D", "u8F9E", - "u2F98E", "u446B", - "u2F98F", "u8291", - "u2F990", "u828B", - "u2F991", "u829D", - "u2F992", "u52B3", - "u2F993", "u82B1", - "u2F994", "u82B3", - "u2F995", "u82BD", - "u2F996", "u82E6", - "u2F997", "u26B3C", - "u2F998", "u82E5", - "u2F999", "u831D", - "u2F99A", "u8363", - "u2F99B", "u83AD", - "u2F99C", "u8323", - "u2F99D", "u83BD", - "u2F99E", "u83E7", - "u2F99F", "u8457", - "u2F9A0", "u8353", - "u2F9A1", "u83CA", - "u2F9A2", "u83CC", - "u2F9A3", "u83DC", - "u2F9A4", "u26C36", - "u2F9A5", "u26D6B", - "u2F9A6", "u26CD5", - "u2F9A7", "u452B", - "u2F9A8", "u84F1", - "u2F9A9", "u84F3", - "u2F9AA", "u8516", - "u2F9AB", "u273CA", - "u2F9AC", "u8564", - "u2F9AD", "u26F2C", - "u2F9AE", "u455D", - "u2F9AF", "u4561", - "u2F9B0", "u26FB1", - "u2F9B1", "u270D2", - "u2F9B2", "u456B", - "u2F9B3", "u8650", - "u2F9B4", "u865C", - "u2F9B5", "u8667", - "u2F9B6", "u8669", - "u2F9B7", "u86A9", - "u2F9B8", "u8688", - "u2F9B9", "u870E", - "u2F9BA", "u86E2", - "u2F9BB", "u8779", - "u2F9BC", "u8728", - "u2F9BD", "u876B", - "u2F9BE", "u8786", - "u2F9BF", "u4D57", - "u2F9C0", "u87E1", - "u2F9C1", "u8801", - "u2F9C2", "u45F9", - "u2F9C3", "u8860", - "u2F9C4", "u8863", - "u2F9C5", "u27667", - "u2F9C6", "u88D7", - "u2F9C7", "u88DE", - "u2F9C8", "u4635", - "u2F9C9", "u88FA", - "u2F9CA", "u34BB", - "u2F9CB", "u278AE", - "u2F9CC", "u27966", - "u2F9CD", "u46BE", - "u2F9CE", "u46C7", - "u2F9CF", "u8AA0", - "u2F9D0", "u8AED", - "u2F9D1", "u8B8A", - "u2F9D2", "u8C55", - "u2F9D3", "u27CA8", - "u2F9D4", "u8CAB", - "u2F9D5", "u8CC1", - "u2F9D6", "u8D1B", - "u2F9D7", "u8D77", - "u2F9D8", "u27F2F", - "u2F9D9", "u20804", - "u2F9DA", "u8DCB", - "u2F9DB", "u8DBC", - "u2F9DC", "u8DF0", - "u2F9DD", "u208DE", - "u2F9DE", "u8ED4", - "u2F9DF", "u8F38", - "u2F9E0", "u285D2", - "u2F9E1", "u285ED", - "u2F9E2", "u9094", - "u2F9E3", "u90F1", - "u2F9E4", "u9111", - "u2F9E5", "u2872E", - "u2F9E6", "u911B", - "u2F9E7", "u9238", - "u2F9E8", "u92D7", - "u2F9E9", "u92D8", - "u2F9EA", "u927C", - "u2F9EB", "u93F9", - "u2F9EC", "u9415", - "u2F9ED", "u28BFA", - "u2F9EE", "u958B", - "u2F9EF", "u4995", - "u2F9F0", "u95B7", - "u2F9F1", "u28D77", - "u2F9F2", "u49E6", - "u2F9F3", "u96C3", - "u2F9F4", "u5DB2", - "u2F9F5", "u9723", - "u2F9F6", "u29145", - "u2F9F7", "u2921A", - "u2F9F8", "u4A6E", - "u2F9F9", "u4A76", - "u2F9FA", "u97E0", - "u2F9FB", "u2940A", - "u2F9FC", "u4AB2", - "u2F9FD", "u29496", - "u2F9FE", "u980B", - "u2F9FF", "u980B", - "u2FA00", "u9829", - "u2FA01", "u295B6", - "u2FA02", "u98E2", - "u2FA03", "u4B33", - "u2FA04", "u9929", - "u2FA05", "u99A7", - "u2FA06", "u99C2", - "u2FA07", "u99FE", - "u2FA08", "u4BCE", - "u2FA09", "u29B30", - "u2FA0A", "u9B12", - "u2FA0B", "u9C40", - "u2FA0C", "u9CFD", - "u2FA0D", "u4CCE", - "u2FA0E", "u4CED", - "u2FA0F", "u9D67", - "u2FA10", "u2A0CE", - "u2FA11", "u4CF8", - "u2FA12", "u2A105", - "u2FA13", "u2A20E", - "u2FA14", "u2A291", - "u2FA15", "u9EBB", - "u2FA16", "u4D56", - "u2FA17", "u9EF9", - "u2FA18", "u9EFE", - "u2FA19", "u9F05", - "u2FA1A", "u9F0F", - "u2FA1B", "u9F16", - "u2FA1C", "u9F3B", - "u2FA1D", "u2A600", +use strict; + +my %unicode_decomposed = ( + "00C0", "0041_0300", + "00C1", "0041_0301", + "00C2", "0041_0302", + "00C3", "0041_0303", + "00C4", "0041_0308", + "00C5", "0041_030A", + "00C7", "0043_0327", + "00C8", "0045_0300", + "00C9", "0045_0301", + "00CA", "0045_0302", + "00CB", "0045_0308", + "00CC", "0049_0300", + "00CD", "0049_0301", + "00CE", "0049_0302", + "00CF", "0049_0308", + "00D1", "004E_0303", + "00D2", "004F_0300", + "00D3", "004F_0301", + "00D4", "004F_0302", + "00D5", "004F_0303", + "00D6", "004F_0308", + "00D9", "0055_0300", + "00DA", "0055_0301", + "00DB", "0055_0302", + "00DC", "0055_0308", + "00DD", "0059_0301", + "00E0", "0061_0300", + "00E1", "0061_0301", + "00E2", "0061_0302", + "00E3", "0061_0303", + "00E4", "0061_0308", + "00E5", "0061_030A", + "00E7", "0063_0327", + "00E8", "0065_0300", + "00E9", "0065_0301", + "00EA", "0065_0302", + "00EB", "0065_0308", + "00EC", "0069_0300", + "00ED", "0069_0301", + "00EE", "0069_0302", + "00EF", "0069_0308", + "00F1", "006E_0303", + "00F2", "006F_0300", + "00F3", "006F_0301", + "00F4", "006F_0302", + "00F5", "006F_0303", + "00F6", "006F_0308", + "00F9", "0075_0300", + "00FA", "0075_0301", + "00FB", "0075_0302", + "00FC", "0075_0308", + "00FD", "0079_0301", + "00FF", "0079_0308", + "0100", "0041_0304", + "0101", "0061_0304", + "0102", "0041_0306", + "0103", "0061_0306", + "0104", "0041_0328", + "0105", "0061_0328", + "0106", "0043_0301", + "0107", "0063_0301", + "0108", "0043_0302", + "0109", "0063_0302", + "010A", "0043_0307", + "010B", "0063_0307", + "010C", "0043_030C", + "010D", "0063_030C", + "010E", "0044_030C", + "010F", "0064_030C", + "0112", "0045_0304", + "0113", "0065_0304", + "0114", "0045_0306", + "0115", "0065_0306", + "0116", "0045_0307", + "0117", "0065_0307", + "0118", "0045_0328", + "0119", "0065_0328", + "011A", "0045_030C", + "011B", "0065_030C", + "011C", "0047_0302", + "011D", "0067_0302", + "011E", "0047_0306", + "011F", "0067_0306", + "0120", "0047_0307", + "0121", "0067_0307", + "0122", "0047_0327", + "0123", "0067_0327", + "0124", "0048_0302", + "0125", "0068_0302", + "0128", "0049_0303", + "0129", "0069_0303", + "012A", "0049_0304", + "012B", "0069_0304", + "012C", "0049_0306", + "012D", "0069_0306", + "012E", "0049_0328", + "012F", "0069_0328", + "0130", "0049_0307", + "0134", "004A_0302", + "0135", "006A_0302", + "0136", "004B_0327", + "0137", "006B_0327", + "0139", "004C_0301", + "013A", "006C_0301", + "013B", "004C_0327", + "013C", "006C_0327", + "013D", "004C_030C", + "013E", "006C_030C", + "0143", "004E_0301", + "0144", "006E_0301", + "0145", "004E_0327", + "0146", "006E_0327", + "0147", "004E_030C", + "0148", "006E_030C", + "014C", "004F_0304", + "014D", "006F_0304", + "014E", "004F_0306", + "014F", "006F_0306", + "0150", "004F_030B", + "0151", "006F_030B", + "0154", "0052_0301", + "0155", "0072_0301", + "0156", "0052_0327", + "0157", "0072_0327", + "0158", "0052_030C", + "0159", "0072_030C", + "015A", "0053_0301", + "015B", "0073_0301", + "015C", "0053_0302", + "015D", "0073_0302", + "015E", "0053_0327", + "015F", "0073_0327", + "0160", "0053_030C", + "0161", "0073_030C", + "0162", "0054_0327", + "0163", "0074_0327", + "0164", "0054_030C", + "0165", "0074_030C", + "0168", "0055_0303", + "0169", "0075_0303", + "016A", "0055_0304", + "016B", "0075_0304", + "016C", "0055_0306", + "016D", "0075_0306", + "016E", "0055_030A", + "016F", "0075_030A", + "0170", "0055_030B", + "0171", "0075_030B", + "0172", "0055_0328", + "0173", "0075_0328", + "0174", "0057_0302", + "0175", "0077_0302", + "0176", "0059_0302", + "0177", "0079_0302", + "0178", "0059_0308", + "0179", "005A_0301", + "017A", "007A_0301", + "017B", "005A_0307", + "017C", "007A_0307", + "017D", "005A_030C", + "017E", "007A_030C", + "01A0", "004F_031B", + "01A1", "006F_031B", + "01AF", "0055_031B", + "01B0", "0075_031B", + "01CD", "0041_030C", + "01CE", "0061_030C", + "01CF", "0049_030C", + "01D0", "0069_030C", + "01D1", "004F_030C", + "01D2", "006F_030C", + "01D3", "0055_030C", + "01D4", "0075_030C", + "01D5", "0055_0308_0304", + "01D6", "0075_0308_0304", + "01D7", "0055_0308_0301", + "01D8", "0075_0308_0301", + "01D9", "0055_0308_030C", + "01DA", "0075_0308_030C", + "01DB", "0055_0308_0300", + "01DC", "0075_0308_0300", + "01DE", "0041_0308_0304", + "01DF", "0061_0308_0304", + "01E0", "0041_0307_0304", + "01E1", "0061_0307_0304", + "01E2", "00C6_0304", + "01E3", "00E6_0304", + "01E6", "0047_030C", + "01E7", "0067_030C", + "01E8", "004B_030C", + "01E9", "006B_030C", + "01EA", "004F_0328", + "01EB", "006F_0328", + "01EC", "004F_0328_0304", + "01ED", "006F_0328_0304", + "01EE", "01B7_030C", + "01EF", "0292_030C", + "01F0", "006A_030C", + "01F4", "0047_0301", + "01F5", "0067_0301", + "01F8", "004E_0300", + "01F9", "006E_0300", + "01FA", "0041_030A_0301", + "01FB", "0061_030A_0301", + "01FC", "00C6_0301", + "01FD", "00E6_0301", + "01FE", "00D8_0301", + "01FF", "00F8_0301", + "0200", "0041_030F", + "0201", "0061_030F", + "0202", "0041_0311", + "0203", "0061_0311", + "0204", "0045_030F", + "0205", "0065_030F", + "0206", "0045_0311", + "0207", "0065_0311", + "0208", "0049_030F", + "0209", "0069_030F", + "020A", "0049_0311", + "020B", "0069_0311", + "020C", "004F_030F", + "020D", "006F_030F", + "020E", "004F_0311", + "020F", "006F_0311", + "0210", "0052_030F", + "0211", "0072_030F", + "0212", "0052_0311", + "0213", "0072_0311", + "0214", "0055_030F", + "0215", "0075_030F", + "0216", "0055_0311", + "0217", "0075_0311", + "0218", "0053_0326", + "0219", "0073_0326", + "021A", "0054_0326", + "021B", "0074_0326", + "021E", "0048_030C", + "021F", "0068_030C", + "0226", "0041_0307", + "0227", "0061_0307", + "0228", "0045_0327", + "0229", "0065_0327", + "022A", "004F_0308_0304", + "022B", "006F_0308_0304", + "022C", "004F_0303_0304", + "022D", "006F_0303_0304", + "022E", "004F_0307", + "022F", "006F_0307", + "0230", "004F_0307_0304", + "0231", "006F_0307_0304", + "0232", "0059_0304", + "0233", "0079_0304", + "0340", "0300", + "0341", "0301", + "0343", "0313", + "0344", "0308_0301", + "0374", "02B9", + "037E", "003B", + "0385", "00A8_0301", + "0386", "0391_0301", + "0387", "00B7", + "0388", "0395_0301", + "0389", "0397_0301", + "038A", "0399_0301", + "038C", "039F_0301", + "038E", "03A5_0301", + "038F", "03A9_0301", + "0390", "03B9_0308_0301", + "03AA", "0399_0308", + "03AB", "03A5_0308", + "03AC", "03B1_0301", + "03AD", "03B5_0301", + "03AE", "03B7_0301", + "03AF", "03B9_0301", + "03B0", "03C5_0308_0301", + "03CA", "03B9_0308", + "03CB", "03C5_0308", + "03CC", "03BF_0301", + "03CD", "03C5_0301", + "03CE", "03C9_0301", + "03D3", "03D2_0301", + "03D4", "03D2_0308", + "0400", "0415_0300", + "0401", "0415_0308", + "0403", "0413_0301", + "0407", "0406_0308", + "040C", "041A_0301", + "040D", "0418_0300", + "040E", "0423_0306", + "0419", "0418_0306", + "0439", "0438_0306", + "0450", "0435_0300", + "0451", "0435_0308", + "0453", "0433_0301", + "0457", "0456_0308", + "045C", "043A_0301", + "045D", "0438_0300", + "045E", "0443_0306", + "0476", "0474_030F", + "0477", "0475_030F", + "04C1", "0416_0306", + "04C2", "0436_0306", + "04D0", "0410_0306", + "04D1", "0430_0306", + "04D2", "0410_0308", + "04D3", "0430_0308", + "04D6", "0415_0306", + "04D7", "0435_0306", + "04DA", "04D8_0308", + "04DB", "04D9_0308", + "04DC", "0416_0308", + "04DD", "0436_0308", + "04DE", "0417_0308", + "04DF", "0437_0308", + "04E2", "0418_0304", + "04E3", "0438_0304", + "04E4", "0418_0308", + "04E5", "0438_0308", + "04E6", "041E_0308", + "04E7", "043E_0308", + "04EA", "04E8_0308", + "04EB", "04E9_0308", + "04EC", "042D_0308", + "04ED", "044D_0308", + "04EE", "0423_0304", + "04EF", "0443_0304", + "04F0", "0423_0308", + "04F1", "0443_0308", + "04F2", "0423_030B", + "04F3", "0443_030B", + "04F4", "0427_0308", + "04F5", "0447_0308", + "04F8", "042B_0308", + "04F9", "044B_0308", + "0622", "0627_0653", + "0623", "0627_0654", + "0624", "0648_0654", + "0625", "0627_0655", + "0626", "064A_0654", + "06C0", "06D5_0654", + "06C2", "06C1_0654", + "06D3", "06D2_0654", + "0929", "0928_093C", + "0931", "0930_093C", + "0934", "0933_093C", + "0958", "0915_093C", + "0959", "0916_093C", + "095A", "0917_093C", + "095B", "091C_093C", + "095C", "0921_093C", + "095D", "0922_093C", + "095E", "092B_093C", + "095F", "092F_093C", + "09CB", "09C7_09BE", + "09CC", "09C7_09D7", + "09DC", "09A1_09BC", + "09DD", "09A2_09BC", + "09DF", "09AF_09BC", + "0A33", "0A32_0A3C", + "0A36", "0A38_0A3C", + "0A59", "0A16_0A3C", + "0A5A", "0A17_0A3C", + "0A5B", "0A1C_0A3C", + "0A5E", "0A2B_0A3C", + "0B48", "0B47_0B56", + "0B4B", "0B47_0B3E", + "0B4C", "0B47_0B57", + "0B5C", "0B21_0B3C", + "0B5D", "0B22_0B3C", + "0B94", "0B92_0BD7", + "0BCA", "0BC6_0BBE", + "0BCB", "0BC7_0BBE", + "0BCC", "0BC6_0BD7", + "0C48", "0C46_0C56", + "0CC0", "0CBF_0CD5", + "0CC7", "0CC6_0CD5", + "0CC8", "0CC6_0CD6", + "0CCA", "0CC6_0CC2", + "0CCB", "0CC6_0CC2_0CD5", + "0D4A", "0D46_0D3E", + "0D4B", "0D47_0D3E", + "0D4C", "0D46_0D57", + "0DDA", "0DD9_0DCA", + "0DDC", "0DD9_0DCF", + "0DDD", "0DD9_0DCF_0DCA", + "0DDE", "0DD9_0DDF", + "0F43", "0F42_0FB7", + "0F4D", "0F4C_0FB7", + "0F52", "0F51_0FB7", + "0F57", "0F56_0FB7", + "0F5C", "0F5B_0FB7", + "0F69", "0F40_0FB5", + "0F73", "0F71_0F72", + "0F75", "0F71_0F74", + "0F76", "0FB2_0F80", + "0F78", "0FB3_0F80", + "0F81", "0F71_0F80", + "0F93", "0F92_0FB7", + "0F9D", "0F9C_0FB7", + "0FA2", "0FA1_0FB7", + "0FA7", "0FA6_0FB7", + "0FAC", "0FAB_0FB7", + "0FB9", "0F90_0FB5", + "1026", "1025_102E", + "1E00", "0041_0325", + "1E01", "0061_0325", + "1E02", "0042_0307", + "1E03", "0062_0307", + "1E04", "0042_0323", + "1E05", "0062_0323", + "1E06", "0042_0331", + "1E07", "0062_0331", + "1E08", "0043_0327_0301", + "1E09", "0063_0327_0301", + "1E0A", "0044_0307", + "1E0B", "0064_0307", + "1E0C", "0044_0323", + "1E0D", "0064_0323", + "1E0E", "0044_0331", + "1E0F", "0064_0331", + "1E10", "0044_0327", + "1E11", "0064_0327", + "1E12", "0044_032D", + "1E13", "0064_032D", + "1E14", "0045_0304_0300", + "1E15", "0065_0304_0300", + "1E16", "0045_0304_0301", + "1E17", "0065_0304_0301", + "1E18", "0045_032D", + "1E19", "0065_032D", + "1E1A", "0045_0330", + "1E1B", "0065_0330", + "1E1C", "0045_0327_0306", + "1E1D", "0065_0327_0306", + "1E1E", "0046_0307", + "1E1F", "0066_0307", + "1E20", "0047_0304", + "1E21", "0067_0304", + "1E22", "0048_0307", + "1E23", "0068_0307", + "1E24", "0048_0323", + "1E25", "0068_0323", + "1E26", "0048_0308", + "1E27", "0068_0308", + "1E28", "0048_0327", + "1E29", "0068_0327", + "1E2A", "0048_032E", + "1E2B", "0068_032E", + "1E2C", "0049_0330", + "1E2D", "0069_0330", + "1E2E", "0049_0308_0301", + "1E2F", "0069_0308_0301", + "1E30", "004B_0301", + "1E31", "006B_0301", + "1E32", "004B_0323", + "1E33", "006B_0323", + "1E34", "004B_0331", + "1E35", "006B_0331", + "1E36", "004C_0323", + "1E37", "006C_0323", + "1E38", "004C_0323_0304", + "1E39", "006C_0323_0304", + "1E3A", "004C_0331", + "1E3B", "006C_0331", + "1E3C", "004C_032D", + "1E3D", "006C_032D", + "1E3E", "004D_0301", + "1E3F", "006D_0301", + "1E40", "004D_0307", + "1E41", "006D_0307", + "1E42", "004D_0323", + "1E43", "006D_0323", + "1E44", "004E_0307", + "1E45", "006E_0307", + "1E46", "004E_0323", + "1E47", "006E_0323", + "1E48", "004E_0331", + "1E49", "006E_0331", + "1E4A", "004E_032D", + "1E4B", "006E_032D", + "1E4C", "004F_0303_0301", + "1E4D", "006F_0303_0301", + "1E4E", "004F_0303_0308", + "1E4F", "006F_0303_0308", + "1E50", "004F_0304_0300", + "1E51", "006F_0304_0300", + "1E52", "004F_0304_0301", + "1E53", "006F_0304_0301", + "1E54", "0050_0301", + "1E55", "0070_0301", + "1E56", "0050_0307", + "1E57", "0070_0307", + "1E58", "0052_0307", + "1E59", "0072_0307", + "1E5A", "0052_0323", + "1E5B", "0072_0323", + "1E5C", "0052_0323_0304", + "1E5D", "0072_0323_0304", + "1E5E", "0052_0331", + "1E5F", "0072_0331", + "1E60", "0053_0307", + "1E61", "0073_0307", + "1E62", "0053_0323", + "1E63", "0073_0323", + "1E64", "0053_0301_0307", + "1E65", "0073_0301_0307", + "1E66", "0053_030C_0307", + "1E67", "0073_030C_0307", + "1E68", "0053_0323_0307", + "1E69", "0073_0323_0307", + "1E6A", "0054_0307", + "1E6B", "0074_0307", + "1E6C", "0054_0323", + "1E6D", "0074_0323", + "1E6E", "0054_0331", + "1E6F", "0074_0331", + "1E70", "0054_032D", + "1E71", "0074_032D", + "1E72", "0055_0324", + "1E73", "0075_0324", + "1E74", "0055_0330", + "1E75", "0075_0330", + "1E76", "0055_032D", + "1E77", "0075_032D", + "1E78", "0055_0303_0301", + "1E79", "0075_0303_0301", + "1E7A", "0055_0304_0308", + "1E7B", "0075_0304_0308", + "1E7C", "0056_0303", + "1E7D", "0076_0303", + "1E7E", "0056_0323", + "1E7F", "0076_0323", + "1E80", "0057_0300", + "1E81", "0077_0300", + "1E82", "0057_0301", + "1E83", "0077_0301", + "1E84", "0057_0308", + "1E85", "0077_0308", + "1E86", "0057_0307", + "1E87", "0077_0307", + "1E88", "0057_0323", + "1E89", "0077_0323", + "1E8A", "0058_0307", + "1E8B", "0078_0307", + "1E8C", "0058_0308", + "1E8D", "0078_0308", + "1E8E", "0059_0307", + "1E8F", "0079_0307", + "1E90", "005A_0302", + "1E91", "007A_0302", + "1E92", "005A_0323", + "1E93", "007A_0323", + "1E94", "005A_0331", + "1E95", "007A_0331", + "1E96", "0068_0331", + "1E97", "0074_0308", + "1E98", "0077_030A", + "1E99", "0079_030A", + "1E9B", "017F_0307", + "1EA0", "0041_0323", + "1EA1", "0061_0323", + "1EA2", "0041_0309", + "1EA3", "0061_0309", + "1EA4", "0041_0302_0301", + "1EA5", "0061_0302_0301", + "1EA6", "0041_0302_0300", + "1EA7", "0061_0302_0300", + "1EA8", "0041_0302_0309", + "1EA9", "0061_0302_0309", + "1EAA", "0041_0302_0303", + "1EAB", "0061_0302_0303", + "1EAC", "0041_0323_0302", + "1EAD", "0061_0323_0302", + "1EAE", "0041_0306_0301", + "1EAF", "0061_0306_0301", + "1EB0", "0041_0306_0300", + "1EB1", "0061_0306_0300", + "1EB2", "0041_0306_0309", + "1EB3", "0061_0306_0309", + "1EB4", "0041_0306_0303", + "1EB5", "0061_0306_0303", + "1EB6", "0041_0323_0306", + "1EB7", "0061_0323_0306", + "1EB8", "0045_0323", + "1EB9", "0065_0323", + "1EBA", "0045_0309", + "1EBB", "0065_0309", + "1EBC", "0045_0303", + "1EBD", "0065_0303", + "1EBE", "0045_0302_0301", + "1EBF", "0065_0302_0301", + "1EC0", "0045_0302_0300", + "1EC1", "0065_0302_0300", + "1EC2", "0045_0302_0309", + "1EC3", "0065_0302_0309", + "1EC4", "0045_0302_0303", + "1EC5", "0065_0302_0303", + "1EC6", "0045_0323_0302", + "1EC7", "0065_0323_0302", + "1EC8", "0049_0309", + "1EC9", "0069_0309", + "1ECA", "0049_0323", + "1ECB", "0069_0323", + "1ECC", "004F_0323", + "1ECD", "006F_0323", + "1ECE", "004F_0309", + "1ECF", "006F_0309", + "1ED0", "004F_0302_0301", + "1ED1", "006F_0302_0301", + "1ED2", "004F_0302_0300", + "1ED3", "006F_0302_0300", + "1ED4", "004F_0302_0309", + "1ED5", "006F_0302_0309", + "1ED6", "004F_0302_0303", + "1ED7", "006F_0302_0303", + "1ED8", "004F_0323_0302", + "1ED9", "006F_0323_0302", + "1EDA", "004F_031B_0301", + "1EDB", "006F_031B_0301", + "1EDC", "004F_031B_0300", + "1EDD", "006F_031B_0300", + "1EDE", "004F_031B_0309", + "1EDF", "006F_031B_0309", + "1EE0", "004F_031B_0303", + "1EE1", "006F_031B_0303", + "1EE2", "004F_031B_0323", + "1EE3", "006F_031B_0323", + "1EE4", "0055_0323", + "1EE5", "0075_0323", + "1EE6", "0055_0309", + "1EE7", "0075_0309", + "1EE8", "0055_031B_0301", + "1EE9", "0075_031B_0301", + "1EEA", "0055_031B_0300", + "1EEB", "0075_031B_0300", + "1EEC", "0055_031B_0309", + "1EED", "0075_031B_0309", + "1EEE", "0055_031B_0303", + "1EEF", "0075_031B_0303", + "1EF0", "0055_031B_0323", + "1EF1", "0075_031B_0323", + "1EF2", "0059_0300", + "1EF3", "0079_0300", + "1EF4", "0059_0323", + "1EF5", "0079_0323", + "1EF6", "0059_0309", + "1EF7", "0079_0309", + "1EF8", "0059_0303", + "1EF9", "0079_0303", + "1F00", "03B1_0313", + "1F01", "03B1_0314", + "1F02", "03B1_0313_0300", + "1F03", "03B1_0314_0300", + "1F04", "03B1_0313_0301", + "1F05", "03B1_0314_0301", + "1F06", "03B1_0313_0342", + "1F07", "03B1_0314_0342", + "1F08", "0391_0313", + "1F09", "0391_0314", + "1F0A", "0391_0313_0300", + "1F0B", "0391_0314_0300", + "1F0C", "0391_0313_0301", + "1F0D", "0391_0314_0301", + "1F0E", "0391_0313_0342", + "1F0F", "0391_0314_0342", + "1F10", "03B5_0313", + "1F11", "03B5_0314", + "1F12", "03B5_0313_0300", + "1F13", "03B5_0314_0300", + "1F14", "03B5_0313_0301", + "1F15", "03B5_0314_0301", + "1F18", "0395_0313", + "1F19", "0395_0314", + "1F1A", "0395_0313_0300", + "1F1B", "0395_0314_0300", + "1F1C", "0395_0313_0301", + "1F1D", "0395_0314_0301", + "1F20", "03B7_0313", + "1F21", "03B7_0314", + "1F22", "03B7_0313_0300", + "1F23", "03B7_0314_0300", + "1F24", "03B7_0313_0301", + "1F25", "03B7_0314_0301", + "1F26", "03B7_0313_0342", + "1F27", "03B7_0314_0342", + "1F28", "0397_0313", + "1F29", "0397_0314", + "1F2A", "0397_0313_0300", + "1F2B", "0397_0314_0300", + "1F2C", "0397_0313_0301", + "1F2D", "0397_0314_0301", + "1F2E", "0397_0313_0342", + "1F2F", "0397_0314_0342", + "1F30", "03B9_0313", + "1F31", "03B9_0314", + "1F32", "03B9_0313_0300", + "1F33", "03B9_0314_0300", + "1F34", "03B9_0313_0301", + "1F35", "03B9_0314_0301", + "1F36", "03B9_0313_0342", + "1F37", "03B9_0314_0342", + "1F38", "0399_0313", + "1F39", "0399_0314", + "1F3A", "0399_0313_0300", + "1F3B", "0399_0314_0300", + "1F3C", "0399_0313_0301", + "1F3D", "0399_0314_0301", + "1F3E", "0399_0313_0342", + "1F3F", "0399_0314_0342", + "1F40", "03BF_0313", + "1F41", "03BF_0314", + "1F42", "03BF_0313_0300", + "1F43", "03BF_0314_0300", + "1F44", "03BF_0313_0301", + "1F45", "03BF_0314_0301", + "1F48", "039F_0313", + "1F49", "039F_0314", + "1F4A", "039F_0313_0300", + "1F4B", "039F_0314_0300", + "1F4C", "039F_0313_0301", + "1F4D", "039F_0314_0301", + "1F50", "03C5_0313", + "1F51", "03C5_0314", + "1F52", "03C5_0313_0300", + "1F53", "03C5_0314_0300", + "1F54", "03C5_0313_0301", + "1F55", "03C5_0314_0301", + "1F56", "03C5_0313_0342", + "1F57", "03C5_0314_0342", + "1F59", "03A5_0314", + "1F5B", "03A5_0314_0300", + "1F5D", "03A5_0314_0301", + "1F5F", "03A5_0314_0342", + "1F60", "03C9_0313", + "1F61", "03C9_0314", + "1F62", "03C9_0313_0300", + "1F63", "03C9_0314_0300", + "1F64", "03C9_0313_0301", + "1F65", "03C9_0314_0301", + "1F66", "03C9_0313_0342", + "1F67", "03C9_0314_0342", + "1F68", "03A9_0313", + "1F69", "03A9_0314", + "1F6A", "03A9_0313_0300", + "1F6B", "03A9_0314_0300", + "1F6C", "03A9_0313_0301", + "1F6D", "03A9_0314_0301", + "1F6E", "03A9_0313_0342", + "1F6F", "03A9_0314_0342", + "1F70", "03B1_0300", + "1F71", "03B1_0301", + "1F72", "03B5_0300", + "1F73", "03B5_0301", + "1F74", "03B7_0300", + "1F75", "03B7_0301", + "1F76", "03B9_0300", + "1F77", "03B9_0301", + "1F78", "03BF_0300", + "1F79", "03BF_0301", + "1F7A", "03C5_0300", + "1F7B", "03C5_0301", + "1F7C", "03C9_0300", + "1F7D", "03C9_0301", + "1F80", "03B1_0313_0345", + "1F81", "03B1_0314_0345", + "1F82", "03B1_0313_0300_0345", + "1F83", "03B1_0314_0300_0345", + "1F84", "03B1_0313_0301_0345", + "1F85", "03B1_0314_0301_0345", + "1F86", "03B1_0313_0342_0345", + "1F87", "03B1_0314_0342_0345", + "1F88", "0391_0313_0345", + "1F89", "0391_0314_0345", + "1F8A", "0391_0313_0300_0345", + "1F8B", "0391_0314_0300_0345", + "1F8C", "0391_0313_0301_0345", + "1F8D", "0391_0314_0301_0345", + "1F8E", "0391_0313_0342_0345", + "1F8F", "0391_0314_0342_0345", + "1F90", "03B7_0313_0345", + "1F91", "03B7_0314_0345", + "1F92", "03B7_0313_0300_0345", + "1F93", "03B7_0314_0300_0345", + "1F94", "03B7_0313_0301_0345", + "1F95", "03B7_0314_0301_0345", + "1F96", "03B7_0313_0342_0345", + "1F97", "03B7_0314_0342_0345", + "1F98", "0397_0313_0345", + "1F99", "0397_0314_0345", + "1F9A", "0397_0313_0300_0345", + "1F9B", "0397_0314_0300_0345", + "1F9C", "0397_0313_0301_0345", + "1F9D", "0397_0314_0301_0345", + "1F9E", "0397_0313_0342_0345", + "1F9F", "0397_0314_0342_0345", + "1FA0", "03C9_0313_0345", + "1FA1", "03C9_0314_0345", + "1FA2", "03C9_0313_0300_0345", + "1FA3", "03C9_0314_0300_0345", + "1FA4", "03C9_0313_0301_0345", + "1FA5", "03C9_0314_0301_0345", + "1FA6", "03C9_0313_0342_0345", + "1FA7", "03C9_0314_0342_0345", + "1FA8", "03A9_0313_0345", + "1FA9", "03A9_0314_0345", + "1FAA", "03A9_0313_0300_0345", + "1FAB", "03A9_0314_0300_0345", + "1FAC", "03A9_0313_0301_0345", + "1FAD", "03A9_0314_0301_0345", + "1FAE", "03A9_0313_0342_0345", + "1FAF", "03A9_0314_0342_0345", + "1FB0", "03B1_0306", + "1FB1", "03B1_0304", + "1FB2", "03B1_0300_0345", + "1FB3", "03B1_0345", + "1FB4", "03B1_0301_0345", + "1FB6", "03B1_0342", + "1FB7", "03B1_0342_0345", + "1FB8", "0391_0306", + "1FB9", "0391_0304", + "1FBA", "0391_0300", + "1FBB", "0391_0301", + "1FBC", "0391_0345", + "1FBE", "03B9", + "1FC1", "00A8_0342", + "1FC2", "03B7_0300_0345", + "1FC3", "03B7_0345", + "1FC4", "03B7_0301_0345", + "1FC6", "03B7_0342", + "1FC7", "03B7_0342_0345", + "1FC8", "0395_0300", + "1FC9", "0395_0301", + "1FCA", "0397_0300", + "1FCB", "0397_0301", + "1FCC", "0397_0345", + "1FCD", "1FBF_0300", + "1FCE", "1FBF_0301", + "1FCF", "1FBF_0342", + "1FD0", "03B9_0306", + "1FD1", "03B9_0304", + "1FD2", "03B9_0308_0300", + "1FD3", "03B9_0308_0301", + "1FD6", "03B9_0342", + "1FD7", "03B9_0308_0342", + "1FD8", "0399_0306", + "1FD9", "0399_0304", + "1FDA", "0399_0300", + "1FDB", "0399_0301", + "1FDD", "1FFE_0300", + "1FDE", "1FFE_0301", + "1FDF", "1FFE_0342", + "1FE0", "03C5_0306", + "1FE1", "03C5_0304", + "1FE2", "03C5_0308_0300", + "1FE3", "03C5_0308_0301", + "1FE4", "03C1_0313", + "1FE5", "03C1_0314", + "1FE6", "03C5_0342", + "1FE7", "03C5_0308_0342", + "1FE8", "03A5_0306", + "1FE9", "03A5_0304", + "1FEA", "03A5_0300", + "1FEB", "03A5_0301", + "1FEC", "03A1_0314", + "1FED", "00A8_0300", + "1FEE", "00A8_0301", + "1FEF", "0060", + "1FF2", "03C9_0300_0345", + "1FF3", "03C9_0345", + "1FF4", "03C9_0301_0345", + "1FF6", "03C9_0342", + "1FF7", "03C9_0342_0345", + "1FF8", "039F_0300", + "1FF9", "039F_0301", + "1FFA", "03A9_0300", + "1FFB", "03A9_0301", + "1FFC", "03A9_0345", + "1FFD", "00B4", + "2000", "2002", + "2001", "2003", + "2126", "03A9", + "212A", "004B", + "212B", "0041_030A", + "219A", "2190_0338", + "219B", "2192_0338", + "21AE", "2194_0338", + "21CD", "21D0_0338", + "21CE", "21D4_0338", + "21CF", "21D2_0338", + "2204", "2203_0338", + "2209", "2208_0338", + "220C", "220B_0338", + "2224", "2223_0338", + "2226", "2225_0338", + "2241", "223C_0338", + "2244", "2243_0338", + "2247", "2245_0338", + "2249", "2248_0338", + "2260", "003D_0338", + "2262", "2261_0338", + "226D", "224D_0338", + "226E", "003C_0338", + "226F", "003E_0338", + "2270", "2264_0338", + "2271", "2265_0338", + "2274", "2272_0338", + "2275", "2273_0338", + "2278", "2276_0338", + "2279", "2277_0338", + "2280", "227A_0338", + "2281", "227B_0338", + "2284", "2282_0338", + "2285", "2283_0338", + "2288", "2286_0338", + "2289", "2287_0338", + "22AC", "22A2_0338", + "22AD", "22A8_0338", + "22AE", "22A9_0338", + "22AF", "22AB_0338", + "22E0", "227C_0338", + "22E1", "227D_0338", + "22E2", "2291_0338", + "22E3", "2292_0338", + "22EA", "22B2_0338", + "22EB", "22B3_0338", + "22EC", "22B4_0338", + "22ED", "22B5_0338", + "2329", "3008", + "232A", "3009", + "2ADC", "2ADD_0338", + "304C", "304B_3099", + "304E", "304D_3099", + "3050", "304F_3099", + "3052", "3051_3099", + "3054", "3053_3099", + "3056", "3055_3099", + "3058", "3057_3099", + "305A", "3059_3099", + "305C", "305B_3099", + "305E", "305D_3099", + "3060", "305F_3099", + "3062", "3061_3099", + "3065", "3064_3099", + "3067", "3066_3099", + "3069", "3068_3099", + "3070", "306F_3099", + "3071", "306F_309A", + "3073", "3072_3099", + "3074", "3072_309A", + "3076", "3075_3099", + "3077", "3075_309A", + "3079", "3078_3099", + "307A", "3078_309A", + "307C", "307B_3099", + "307D", "307B_309A", + "3094", "3046_3099", + "309E", "309D_3099", + "30AC", "30AB_3099", + "30AE", "30AD_3099", + "30B0", "30AF_3099", + "30B2", "30B1_3099", + "30B4", "30B3_3099", + "30B6", "30B5_3099", + "30B8", "30B7_3099", + "30BA", "30B9_3099", + "30BC", "30BB_3099", + "30BE", "30BD_3099", + "30C0", "30BF_3099", + "30C2", "30C1_3099", + "30C5", "30C4_3099", + "30C7", "30C6_3099", + "30C9", "30C8_3099", + "30D0", "30CF_3099", + "30D1", "30CF_309A", + "30D3", "30D2_3099", + "30D4", "30D2_309A", + "30D6", "30D5_3099", + "30D7", "30D5_309A", + "30D9", "30D8_3099", + "30DA", "30D8_309A", + "30DC", "30DB_3099", + "30DD", "30DB_309A", + "30F4", "30A6_3099", + "30F7", "30EF_3099", + "30F8", "30F0_3099", + "30F9", "30F1_3099", + "30FA", "30F2_3099", + "30FE", "30FD_3099", + "F900", "8C48", + "F901", "66F4", + "F902", "8ECA", + "F903", "8CC8", + "F904", "6ED1", + "F905", "4E32", + "F906", "53E5", + "F907", "9F9C", + "F908", "9F9C", + "F909", "5951", + "F90A", "91D1", + "F90B", "5587", + "F90C", "5948", + "F90D", "61F6", + "F90E", "7669", + "F90F", "7F85", + "F910", "863F", + "F911", "87BA", + "F912", "88F8", + "F913", "908F", + "F914", "6A02", + "F915", "6D1B", + "F916", "70D9", + "F917", "73DE", + "F918", "843D", + "F919", "916A", + "F91A", "99F1", + "F91B", "4E82", + "F91C", "5375", + "F91D", "6B04", + "F91E", "721B", + "F91F", "862D", + "F920", "9E1E", + "F921", "5D50", + "F922", "6FEB", + "F923", "85CD", + "F924", "8964", + "F925", "62C9", + "F926", "81D8", + "F927", "881F", + "F928", "5ECA", + "F929", "6717", + "F92A", "6D6A", + "F92B", "72FC", + "F92C", "90CE", + "F92D", "4F86", + "F92E", "51B7", + "F92F", "52DE", + "F930", "64C4", + "F931", "6AD3", + "F932", "7210", + "F933", "76E7", + "F934", "8001", + "F935", "8606", + "F936", "865C", + "F937", "8DEF", + "F938", "9732", + "F939", "9B6F", + "F93A", "9DFA", + "F93B", "788C", + "F93C", "797F", + "F93D", "7DA0", + "F93E", "83C9", + "F93F", "9304", + "F940", "9E7F", + "F941", "8AD6", + "F942", "58DF", + "F943", "5F04", + "F944", "7C60", + "F945", "807E", + "F946", "7262", + "F947", "78CA", + "F948", "8CC2", + "F949", "96F7", + "F94A", "58D8", + "F94B", "5C62", + "F94C", "6A13", + "F94D", "6DDA", + "F94E", "6F0F", + "F94F", "7D2F", + "F950", "7E37", + "F951", "964B", + "F952", "52D2", + "F953", "808B", + "F954", "51DC", + "F955", "51CC", + "F956", "7A1C", + "F957", "7DBE", + "F958", "83F1", + "F959", "9675", + "F95A", "8B80", + "F95B", "62CF", + "F95C", "6A02", + "F95D", "8AFE", + "F95E", "4E39", + "F95F", "5BE7", + "F960", "6012", + "F961", "7387", + "F962", "7570", + "F963", "5317", + "F964", "78FB", + "F965", "4FBF", + "F966", "5FA9", + "F967", "4E0D", + "F968", "6CCC", + "F969", "6578", + "F96A", "7D22", + "F96B", "53C3", + "F96C", "585E", + "F96D", "7701", + "F96E", "8449", + "F96F", "8AAA", + "F970", "6BBA", + "F971", "8FB0", + "F972", "6C88", + "F973", "62FE", + "F974", "82E5", + "F975", "63A0", + "F976", "7565", + "F977", "4EAE", + "F978", "5169", + "F979", "51C9", + "F97A", "6881", + "F97B", "7CE7", + "F97C", "826F", + "F97D", "8AD2", + "F97E", "91CF", + "F97F", "52F5", + "F980", "5442", + "F981", "5973", + "F982", "5EEC", + "F983", "65C5", + "F984", "6FFE", + "F985", "792A", + "F986", "95AD", + "F987", "9A6A", + "F988", "9E97", + "F989", "9ECE", + "F98A", "529B", + "F98B", "66C6", + "F98C", "6B77", + "F98D", "8F62", + "F98E", "5E74", + "F98F", "6190", + "F990", "6200", + "F991", "649A", + "F992", "6F23", + "F993", "7149", + "F994", "7489", + "F995", "79CA", + "F996", "7DF4", + "F997", "806F", + "F998", "8F26", + "F999", "84EE", + "F99A", "9023", + "F99B", "934A", + "F99C", "5217", + "F99D", "52A3", + "F99E", "54BD", + "F99F", "70C8", + "F9A0", "88C2", + "F9A1", "8AAA", + "F9A2", "5EC9", + "F9A3", "5FF5", + "F9A4", "637B", + "F9A5", "6BAE", + "F9A6", "7C3E", + "F9A7", "7375", + "F9A8", "4EE4", + "F9A9", "56F9", + "F9AA", "5BE7", + "F9AB", "5DBA", + "F9AC", "601C", + "F9AD", "73B2", + "F9AE", "7469", + "F9AF", "7F9A", + "F9B0", "8046", + "F9B1", "9234", + "F9B2", "96F6", + "F9B3", "9748", + "F9B4", "9818", + "F9B5", "4F8B", + "F9B6", "79AE", + "F9B7", "91B4", + "F9B8", "96B8", + "F9B9", "60E1", + "F9BA", "4E86", + "F9BB", "50DA", + "F9BC", "5BEE", + "F9BD", "5C3F", + "F9BE", "6599", + "F9BF", "6A02", + "F9C0", "71CE", + "F9C1", "7642", + "F9C2", "84FC", + "F9C3", "907C", + "F9C4", "9F8D", + "F9C5", "6688", + "F9C6", "962E", + "F9C7", "5289", + "F9C8", "677B", + "F9C9", "67F3", + "F9CA", "6D41", + "F9CB", "6E9C", + "F9CC", "7409", + "F9CD", "7559", + "F9CE", "786B", + "F9CF", "7D10", + "F9D0", "985E", + "F9D1", "516D", + "F9D2", "622E", + "F9D3", "9678", + "F9D4", "502B", + "F9D5", "5D19", + "F9D6", "6DEA", + "F9D7", "8F2A", + "F9D8", "5F8B", + "F9D9", "6144", + "F9DA", "6817", + "F9DB", "7387", + "F9DC", "9686", + "F9DD", "5229", + "F9DE", "540F", + "F9DF", "5C65", + "F9E0", "6613", + "F9E1", "674E", + "F9E2", "68A8", + "F9E3", "6CE5", + "F9E4", "7406", + "F9E5", "75E2", + "F9E6", "7F79", + "F9E7", "88CF", + "F9E8", "88E1", + "F9E9", "91CC", + "F9EA", "96E2", + "F9EB", "533F", + "F9EC", "6EBA", + "F9ED", "541D", + "F9EE", "71D0", + "F9EF", "7498", + "F9F0", "85FA", + "F9F1", "96A3", + "F9F2", "9C57", + "F9F3", "9E9F", + "F9F4", "6797", + "F9F5", "6DCB", + "F9F6", "81E8", + "F9F7", "7ACB", + "F9F8", "7B20", + "F9F9", "7C92", + "F9FA", "72C0", + "F9FB", "7099", + "F9FC", "8B58", + "F9FD", "4EC0", + "F9FE", "8336", + "F9FF", "523A", + "FA00", "5207", + "FA01", "5EA6", + "FA02", "62D3", + "FA03", "7CD6", + "FA04", "5B85", + "FA05", "6D1E", + "FA06", "66B4", + "FA07", "8F3B", + "FA08", "884C", + "FA09", "964D", + "FA0A", "898B", + "FA0B", "5ED3", + "FA0C", "5140", + "FA0D", "55C0", + "FA10", "585A", + "FA12", "6674", + "FA15", "51DE", + "FA16", "732A", + "FA17", "76CA", + "FA18", "793C", + "FA19", "795E", + "FA1A", "7965", + "FA1B", "798F", + "FA1C", "9756", + "FA1D", "7CBE", + "FA1E", "7FBD", + "FA20", "8612", + "FA22", "8AF8", + "FA25", "9038", + "FA26", "90FD", + "FA2A", "98EF", + "FA2B", "98FC", + "FA2C", "9928", + "FA2D", "9DB4", + "FA30", "4FAE", + "FA31", "50E7", + "FA32", "514D", + "FA33", "52C9", + "FA34", "52E4", + "FA35", "5351", + "FA36", "559D", + "FA37", "5606", + "FA38", "5668", + "FA39", "5840", + "FA3A", "58A8", + "FA3B", "5C64", + "FA3C", "5C6E", + "FA3D", "6094", + "FA3E", "6168", + "FA3F", "618E", + "FA40", "61F2", + "FA41", "654F", + "FA42", "65E2", + "FA43", "6691", + "FA44", "6885", + "FA45", "6D77", + "FA46", "6E1A", + "FA47", "6F22", + "FA48", "716E", + "FA49", "722B", + "FA4A", "7422", + "FA4B", "7891", + "FA4C", "793E", + "FA4D", "7949", + "FA4E", "7948", + "FA4F", "7950", + "FA50", "7956", + "FA51", "795D", + "FA52", "798D", + "FA53", "798E", + "FA54", "7A40", + "FA55", "7A81", + "FA56", "7BC0", + "FA57", "7DF4", + "FA58", "7E09", + "FA59", "7E41", + "FA5A", "7F72", + "FA5B", "8005", + "FA5C", "81ED", + "FA5D", "8279", + "FA5E", "8279", + "FA5F", "8457", + "FA60", "8910", + "FA61", "8996", + "FA62", "8B01", + "FA63", "8B39", + "FA64", "8CD3", + "FA65", "8D08", + "FA66", "8FB6", + "FA67", "9038", + "FA68", "96E3", + "FA69", "97FF", + "FA6A", "983B", + "FB1D", "05D9_05B4", + "FB1F", "05F2_05B7", + "FB2A", "05E9_05C1", + "FB2B", "05E9_05C2", + "FB2C", "05E9_05BC_05C1", + "FB2D", "05E9_05BC_05C2", + "FB2E", "05D0_05B7", + "FB2F", "05D0_05B8", + "FB30", "05D0_05BC", + "FB31", "05D1_05BC", + "FB32", "05D2_05BC", + "FB33", "05D3_05BC", + "FB34", "05D4_05BC", + "FB35", "05D5_05BC", + "FB36", "05D6_05BC", + "FB38", "05D8_05BC", + "FB39", "05D9_05BC", + "FB3A", "05DA_05BC", + "FB3B", "05DB_05BC", + "FB3C", "05DC_05BC", + "FB3E", "05DE_05BC", + "FB40", "05E0_05BC", + "FB41", "05E1_05BC", + "FB43", "05E3_05BC", + "FB44", "05E4_05BC", + "FB46", "05E6_05BC", + "FB47", "05E7_05BC", + "FB48", "05E8_05BC", + "FB49", "05E9_05BC", + "FB4A", "05EA_05BC", + "FB4B", "05D5_05B9", + "FB4C", "05D1_05BF", + "FB4D", "05DB_05BF", + "FB4E", "05E4_05BF", + "1D15E", "1D157_1D165", + "1D15F", "1D158_1D165", + "1D160", "1D158_1D165_1D16E", + "1D161", "1D158_1D165_1D16F", + "1D162", "1D158_1D165_1D170", + "1D163", "1D158_1D165_1D171", + "1D164", "1D158_1D165_1D172", + "1D1BB", "1D1B9_1D165", + "1D1BC", "1D1BA_1D165", + "1D1BD", "1D1B9_1D165_1D16E", + "1D1BE", "1D1BA_1D165_1D16E", + "1D1BF", "1D1B9_1D165_1D16F", + "1D1C0", "1D1BA_1D165_1D16F", + "2F800", "4E3D", + "2F801", "4E38", + "2F802", "4E41", + "2F803", "20122", + "2F804", "4F60", + "2F805", "4FAE", + "2F806", "4FBB", + "2F807", "5002", + "2F808", "507A", + "2F809", "5099", + "2F80A", "50E7", + "2F80B", "50CF", + "2F80C", "349E", + "2F80D", "2063A", + "2F80E", "514D", + "2F80F", "5154", + "2F810", "5164", + "2F811", "5177", + "2F812", "2051C", + "2F813", "34B9", + "2F814", "5167", + "2F815", "518D", + "2F816", "2054B", + "2F817", "5197", + "2F818", "51A4", + "2F819", "4ECC", + "2F81A", "51AC", + "2F81B", "51B5", + "2F81C", "291DF", + "2F81D", "51F5", + "2F81E", "5203", + "2F81F", "34DF", + "2F820", "523B", + "2F821", "5246", + "2F822", "5272", + "2F823", "5277", + "2F824", "3515", + "2F825", "52C7", + "2F826", "52C9", + "2F827", "52E4", + "2F828", "52FA", + "2F829", "5305", + "2F82A", "5306", + "2F82B", "5317", + "2F82C", "5349", + "2F82D", "5351", + "2F82E", "535A", + "2F82F", "5373", + "2F830", "537D", + "2F831", "537F", + "2F832", "537F", + "2F833", "537F", + "2F834", "20A2C", + "2F835", "7070", + "2F836", "53CA", + "2F837", "53DF", + "2F838", "20B63", + "2F839", "53EB", + "2F83A", "53F1", + "2F83B", "5406", + "2F83C", "549E", + "2F83D", "5438", + "2F83E", "5448", + "2F83F", "5468", + "2F840", "54A2", + "2F841", "54F6", + "2F842", "5510", + "2F843", "5553", + "2F844", "5563", + "2F845", "5584", + "2F846", "5584", + "2F847", "5599", + "2F848", "55AB", + "2F849", "55B3", + "2F84A", "55C2", + "2F84B", "5716", + "2F84C", "5606", + "2F84D", "5717", + "2F84E", "5651", + "2F84F", "5674", + "2F850", "5207", + "2F851", "58EE", + "2F852", "57CE", + "2F853", "57F4", + "2F854", "580D", + "2F855", "578B", + "2F856", "5832", + "2F857", "5831", + "2F858", "58AC", + "2F859", "214E4", + "2F85A", "58F2", + "2F85B", "58F7", + "2F85C", "5906", + "2F85D", "591A", + "2F85E", "5922", + "2F85F", "5962", + "2F860", "216A8", + "2F861", "216EA", + "2F862", "59EC", + "2F863", "5A1B", + "2F864", "5A27", + "2F865", "59D8", + "2F866", "5A66", + "2F867", "36EE", + "2F868", "2136A", + "2F869", "5B08", + "2F86A", "5B3E", + "2F86B", "5B3E", + "2F86C", "219C8", + "2F86D", "5BC3", + "2F86E", "5BD8", + "2F86F", "5BE7", + "2F870", "5BF3", + "2F871", "21B18", + "2F872", "5BFF", + "2F873", "5C06", + "2F874", "5F33", + "2F875", "5C22", + "2F876", "3781", + "2F877", "5C60", + "2F878", "5C6E", + "2F879", "5CC0", + "2F87A", "5C8D", + "2F87B", "21DE4", + "2F87C", "5D43", + "2F87D", "21DE6", + "2F87E", "5D6E", + "2F87F", "5D6B", + "2F880", "5D7C", + "2F881", "5DE1", + "2F882", "5DE2", + "2F883", "382F", + "2F884", "5DFD", + "2F885", "5E28", + "2F886", "5E3D", + "2F887", "5E69", + "2F888", "3862", + "2F889", "22183", + "2F88A", "387C", + "2F88B", "5EB0", + "2F88C", "5EB3", + "2F88D", "5EB6", + "2F88E", "5ECA", + "2F88F", "2A392", + "2F890", "5EFE", + "2F891", "22331", + "2F892", "22331", + "2F893", "8201", + "2F894", "5F22", + "2F895", "5F22", + "2F896", "38C7", + "2F897", "232B8", + "2F898", "261DA", + "2F899", "5F62", + "2F89A", "5F6B", + "2F89B", "38E3", + "2F89C", "5F9A", + "2F89D", "5FCD", + "2F89E", "5FD7", + "2F89F", "5FF9", + "2F8A0", "6081", + "2F8A1", "393A", + "2F8A2", "391C", + "2F8A3", "6094", + "2F8A4", "226D4", + "2F8A5", "60C7", + "2F8A6", "6148", + "2F8A7", "614C", + "2F8A8", "614E", + "2F8A9", "614C", + "2F8AA", "617A", + "2F8AB", "618E", + "2F8AC", "61B2", + "2F8AD", "61A4", + "2F8AE", "61AF", + "2F8AF", "61DE", + "2F8B0", "61F2", + "2F8B1", "61F6", + "2F8B2", "6210", + "2F8B3", "621B", + "2F8B4", "625D", + "2F8B5", "62B1", + "2F8B6", "62D4", + "2F8B7", "6350", + "2F8B8", "22B0C", + "2F8B9", "633D", + "2F8BA", "62FC", + "2F8BB", "6368", + "2F8BC", "6383", + "2F8BD", "63E4", + "2F8BE", "22BF1", + "2F8BF", "6422", + "2F8C0", "63C5", + "2F8C1", "63A9", + "2F8C2", "3A2E", + "2F8C3", "6469", + "2F8C4", "647E", + "2F8C5", "649D", + "2F8C6", "6477", + "2F8C7", "3A6C", + "2F8C8", "654F", + "2F8C9", "656C", + "2F8CA", "2300A", + "2F8CB", "65E3", + "2F8CC", "66F8", + "2F8CD", "6649", + "2F8CE", "3B19", + "2F8CF", "6691", + "2F8D0", "3B08", + "2F8D1", "3AE4", + "2F8D2", "5192", + "2F8D3", "5195", + "2F8D4", "6700", + "2F8D5", "669C", + "2F8D6", "80AD", + "2F8D7", "43D9", + "2F8D8", "6717", + "2F8D9", "671B", + "2F8DA", "6721", + "2F8DB", "675E", + "2F8DC", "6753", + "2F8DD", "233C3", + "2F8DE", "3B49", + "2F8DF", "67FA", + "2F8E0", "6785", + "2F8E1", "6852", + "2F8E2", "6885", + "2F8E3", "2346D", + "2F8E4", "688E", + "2F8E5", "681F", + "2F8E6", "6914", + "2F8E7", "3B9D", + "2F8E8", "6942", + "2F8E9", "69A3", + "2F8EA", "69EA", + "2F8EB", "6AA8", + "2F8EC", "236A3", + "2F8ED", "6ADB", + "2F8EE", "3C18", + "2F8EF", "6B21", + "2F8F0", "238A7", + "2F8F1", "6B54", + "2F8F2", "3C4E", + "2F8F3", "6B72", + "2F8F4", "6B9F", + "2F8F5", "6BBA", + "2F8F6", "6BBB", + "2F8F7", "23A8D", + "2F8F8", "21D0B", + "2F8F9", "23AFA", + "2F8FA", "6C4E", + "2F8FB", "23CBC", + "2F8FC", "6CBF", + "2F8FD", "6CCD", + "2F8FE", "6C67", + "2F8FF", "6D16", + "2F900", "6D3E", + "2F901", "6D77", + "2F902", "6D41", + "2F903", "6D69", + "2F904", "6D78", + "2F905", "6D85", + "2F906", "23D1E", + "2F907", "6D34", + "2F908", "6E2F", + "2F909", "6E6E", + "2F90A", "3D33", + "2F90B", "6ECB", + "2F90C", "6EC7", + "2F90D", "23ED1", + "2F90E", "6DF9", + "2F90F", "6F6E", + "2F910", "23F5E", + "2F911", "23F8E", + "2F912", "6FC6", + "2F913", "7039", + "2F914", "701E", + "2F915", "701B", + "2F916", "3D96", + "2F917", "704A", + "2F918", "707D", + "2F919", "7077", + "2F91A", "70AD", + "2F91B", "20525", + "2F91C", "7145", + "2F91D", "24263", + "2F91E", "719C", + "2F91F", "43AB", + "2F920", "7228", + "2F921", "7235", + "2F922", "7250", + "2F923", "24608", + "2F924", "7280", + "2F925", "7295", + "2F926", "24735", + "2F927", "24814", + "2F928", "737A", + "2F929", "738B", + "2F92A", "3EAC", + "2F92B", "73A5", + "2F92C", "3EB8", + "2F92D", "3EB8", + "2F92E", "7447", + "2F92F", "745C", + "2F930", "7471", + "2F931", "7485", + "2F932", "74CA", + "2F933", "3F1B", + "2F934", "7524", + "2F935", "24C36", + "2F936", "753E", + "2F937", "24C92", + "2F938", "7570", + "2F939", "2219F", + "2F93A", "7610", + "2F93B", "24FA1", + "2F93C", "24FB8", + "2F93D", "25044", + "2F93E", "3FFC", + "2F93F", "4008", + "2F940", "76F4", + "2F941", "250F3", + "2F942", "250F2", + "2F943", "25119", + "2F944", "25133", + "2F945", "771E", + "2F946", "771F", + "2F947", "771F", + "2F948", "774A", + "2F949", "4039", + "2F94A", "778B", + "2F94B", "4046", + "2F94C", "4096", + "2F94D", "2541D", + "2F94E", "784E", + "2F94F", "788C", + "2F950", "78CC", + "2F951", "40E3", + "2F952", "25626", + "2F953", "7956", + "2F954", "2569A", + "2F955", "256C5", + "2F956", "798F", + "2F957", "79EB", + "2F958", "412F", + "2F959", "7A40", + "2F95A", "7A4A", + "2F95B", "7A4F", + "2F95C", "2597C", + "2F95D", "25AA7", + "2F95E", "25AA7", + "2F95F", "7AAE", + "2F960", "4202", + "2F961", "25BAB", + "2F962", "7BC6", + "2F963", "7BC9", + "2F964", "4227", + "2F965", "25C80", + "2F966", "7CD2", + "2F967", "42A0", + "2F968", "7CE8", + "2F969", "7CE3", + "2F96A", "7D00", + "2F96B", "25F86", + "2F96C", "7D63", + "2F96D", "4301", + "2F96E", "7DC7", + "2F96F", "7E02", + "2F970", "7E45", + "2F971", "4334", + "2F972", "26228", + "2F973", "26247", + "2F974", "4359", + "2F975", "262D9", + "2F976", "7F7A", + "2F977", "2633E", + "2F978", "7F95", + "2F979", "7FFA", + "2F97A", "8005", + "2F97B", "264DA", + "2F97C", "26523", + "2F97D", "8060", + "2F97E", "265A8", + "2F97F", "8070", + "2F980", "2335F", + "2F981", "43D5", + "2F982", "80B2", + "2F983", "8103", + "2F984", "440B", + "2F985", "813E", + "2F986", "5AB5", + "2F987", "267A7", + "2F988", "267B5", + "2F989", "23393", + "2F98A", "2339C", + "2F98B", "8201", + "2F98C", "8204", + "2F98D", "8F9E", + "2F98E", "446B", + "2F98F", "8291", + "2F990", "828B", + "2F991", "829D", + "2F992", "52B3", + "2F993", "82B1", + "2F994", "82B3", + "2F995", "82BD", + "2F996", "82E6", + "2F997", "26B3C", + "2F998", "82E5", + "2F999", "831D", + "2F99A", "8363", + "2F99B", "83AD", + "2F99C", "8323", + "2F99D", "83BD", + "2F99E", "83E7", + "2F99F", "8457", + "2F9A0", "8353", + "2F9A1", "83CA", + "2F9A2", "83CC", + "2F9A3", "83DC", + "2F9A4", "26C36", + "2F9A5", "26D6B", + "2F9A6", "26CD5", + "2F9A7", "452B", + "2F9A8", "84F1", + "2F9A9", "84F3", + "2F9AA", "8516", + "2F9AB", "273CA", + "2F9AC", "8564", + "2F9AD", "26F2C", + "2F9AE", "455D", + "2F9AF", "4561", + "2F9B0", "26FB1", + "2F9B1", "270D2", + "2F9B2", "456B", + "2F9B3", "8650", + "2F9B4", "865C", + "2F9B5", "8667", + "2F9B6", "8669", + "2F9B7", "86A9", + "2F9B8", "8688", + "2F9B9", "870E", + "2F9BA", "86E2", + "2F9BB", "8779", + "2F9BC", "8728", + "2F9BD", "876B", + "2F9BE", "8786", + "2F9BF", "4D57", + "2F9C0", "87E1", + "2F9C1", "8801", + "2F9C2", "45F9", + "2F9C3", "8860", + "2F9C4", "8863", + "2F9C5", "27667", + "2F9C6", "88D7", + "2F9C7", "88DE", + "2F9C8", "4635", + "2F9C9", "88FA", + "2F9CA", "34BB", + "2F9CB", "278AE", + "2F9CC", "27966", + "2F9CD", "46BE", + "2F9CE", "46C7", + "2F9CF", "8AA0", + "2F9D0", "8AED", + "2F9D1", "8B8A", + "2F9D2", "8C55", + "2F9D3", "27CA8", + "2F9D4", "8CAB", + "2F9D5", "8CC1", + "2F9D6", "8D1B", + "2F9D7", "8D77", + "2F9D8", "27F2F", + "2F9D9", "20804", + "2F9DA", "8DCB", + "2F9DB", "8DBC", + "2F9DC", "8DF0", + "2F9DD", "208DE", + "2F9DE", "8ED4", + "2F9DF", "8F38", + "2F9E0", "285D2", + "2F9E1", "285ED", + "2F9E2", "9094", + "2F9E3", "90F1", + "2F9E4", "9111", + "2F9E5", "2872E", + "2F9E6", "911B", + "2F9E7", "9238", + "2F9E8", "92D7", + "2F9E9", "92D8", + "2F9EA", "927C", + "2F9EB", "93F9", + "2F9EC", "9415", + "2F9ED", "28BFA", + "2F9EE", "958B", + "2F9EF", "4995", + "2F9F0", "95B7", + "2F9F1", "28D77", + "2F9F2", "49E6", + "2F9F3", "96C3", + "2F9F4", "5DB2", + "2F9F5", "9723", + "2F9F6", "29145", + "2F9F7", "2921A", + "2F9F8", "4A6E", + "2F9F9", "4A76", + "2F9FA", "97E0", + "2F9FB", "2940A", + "2F9FC", "4AB2", + "2F9FD", "29496", + "2F9FE", "980B", + "2F9FF", "980B", + "2FA00", "9829", + "2FA01", "295B6", + "2FA02", "98E2", + "2FA03", "4B33", + "2FA04", "9929", + "2FA05", "99A7", + "2FA06", "99C2", + "2FA07", "99FE", + "2FA08", "4BCE", + "2FA09", "29B30", + "2FA0A", "9B12", + "2FA0B", "9C40", + "2FA0C", "9CFD", + "2FA0D", "4CCE", + "2FA0E", "4CED", + "2FA0F", "9D67", + "2FA10", "2A0CE", + "2FA11", "4CF8", + "2FA12", "2A105", + "2FA13", "2A20E", + "2FA14", "2A291", + "2FA15", "9EBB", + "2FA16", "4D56", + "2FA17", "9EF9", + "2FA18", "9EFE", + "2FA19", "9F05", + "2FA1A", "9F0F", + "2FA1B", "9F16", + "2FA1C", "9F3B", + "2FA1D", "2A600", ); -%AGL_to_unicode = ( - "A", "u0041", - "AE", "u00C6", - "AEacute", "u01FC", - "AEmacron", "u01E2", - "Aacute", "u00C1", - "Abreve", "u0102", - "Abreveacute", "u1EAE", - "Abrevecyrillic", "u04D0", - "Abrevedotbelow", "u1EB6", - "Abrevegrave", "u1EB0", - "Abrevehookabove", "u1EB2", - "Abrevetilde", "u1EB4", - "Acaron", "u01CD", - "Acircle", "u24B6", - "Acircumflex", "u00C2", - "Acircumflexacute", "u1EA4", - "Acircumflexdotbelow", "u1EAC", - "Acircumflexgrave", "u1EA6", - "Acircumflexhookabove", "u1EA8", - "Acircumflextilde", "u1EAA", - "Acyrillic", "u0410", - "Adblgrave", "u0200", - "Adieresis", "u00C4", - "Adieresiscyrillic", "u04D2", - "Adieresismacron", "u01DE", - "Adotbelow", "u1EA0", - "Adotmacron", "u01E0", - "Agrave", "u00C0", - "Ahookabove", "u1EA2", - "Aiecyrillic", "u04D4", - "Ainvertedbreve", "u0202", - "Alpha", "u0391", - "Alphatonos", "u0386", - "Amacron", "u0100", - "Amonospace", "uFF21", - "Aogonek", "u0104", - "Aring", "u00C5", - "Aringacute", "u01FA", - "Aringbelow", "u1E00", - "Atilde", "u00C3", - "Aybarmenian", "u0531", - "B", "u0042", - "Bcircle", "u24B7", - "Bdotaccent", "u1E02", - "Bdotbelow", "u1E04", - "Becyrillic", "u0411", - "Benarmenian", "u0532", - "Beta", "u0392", - "Bhook", "u0181", - "Blinebelow", "u1E06", - "Bmonospace", "uFF22", - "Btopbar", "u0182", - "C", "u0043", - "Caarmenian", "u053E", - "Cacute", "u0106", - "Ccaron", "u010C", - "Ccedilla", "u00C7", - "Ccedillaacute", "u1E08", - "Ccircle", "u24B8", - "Ccircumflex", "u0108", - "Cdot", "u010A", - "Cdotaccent", "u010A", - "Chaarmenian", "u0549", - "Cheabkhasiancyrillic", "u04BC", - "Checyrillic", "u0427", - "Chedescenderabkhasiancyrillic", "u04BE", - "Chedescendercyrillic", "u04B6", - "Chedieresiscyrillic", "u04F4", - "Cheharmenian", "u0543", - "Chekhakassiancyrillic", "u04CB", - "Cheverticalstrokecyrillic", "u04B8", - "Chi", "u03A7", - "Chook", "u0187", - "Cmonospace", "uFF23", - "Coarmenian", "u0551", - "D", "u0044", - "DZ", "u01F1", - "DZcaron", "u01C4", - "Daarmenian", "u0534", - "Dafrican", "u0189", - "Dcaron", "u010E", - "Dcedilla", "u1E10", - "Dcircle", "u24B9", - "Dcircumflexbelow", "u1E12", - "Dcroat", "u0110", - "Ddotaccent", "u1E0A", - "Ddotbelow", "u1E0C", - "Decyrillic", "u0414", - "Deicoptic", "u03EE", - "Delta", "u2206", - "Deltagreek", "u0394", - "Dhook", "u018A", - "Digammagreek", "u03DC", - "Djecyrillic", "u0402", - "Dlinebelow", "u1E0E", - "Dmonospace", "uFF24", - "Dslash", "u0110", - "Dtopbar", "u018B", - "Dz", "u01F2", - "Dzcaron", "u01C5", - "Dzeabkhasiancyrillic", "u04E0", - "Dzecyrillic", "u0405", - "Dzhecyrillic", "u040F", - "E", "u0045", - "Eacute", "u00C9", - "Ebreve", "u0114", - "Ecaron", "u011A", - "Ecedillabreve", "u1E1C", - "Echarmenian", "u0535", - "Ecircle", "u24BA", - "Ecircumflex", "u00CA", - "Ecircumflexacute", "u1EBE", - "Ecircumflexbelow", "u1E18", - "Ecircumflexdotbelow", "u1EC6", - "Ecircumflexgrave", "u1EC0", - "Ecircumflexhookabove", "u1EC2", - "Ecircumflextilde", "u1EC4", - "Ecyrillic", "u0404", - "Edblgrave", "u0204", - "Edieresis", "u00CB", - "Edot", "u0116", - "Edotaccent", "u0116", - "Edotbelow", "u1EB8", - "Efcyrillic", "u0424", - "Egrave", "u00C8", - "Eharmenian", "u0537", - "Ehookabove", "u1EBA", - "Eightroman", "u2167", - "Einvertedbreve", "u0206", - "Eiotifiedcyrillic", "u0464", - "Elcyrillic", "u041B", - "Elevenroman", "u216A", - "Emacron", "u0112", - "Emacronacute", "u1E16", - "Emacrongrave", "u1E14", - "Emcyrillic", "u041C", - "Emonospace", "uFF25", - "Encyrillic", "u041D", - "Endescendercyrillic", "u04A2", - "Eng", "u014A", - "Enghecyrillic", "u04A4", - "Enhookcyrillic", "u04C7", - "Eogonek", "u0118", - "Eopen", "u0190", - "Epsilon", "u0395", - "Epsilontonos", "u0388", - "Ercyrillic", "u0420", - "Ereversed", "u018E", - "Ereversedcyrillic", "u042D", - "Escyrillic", "u0421", - "Esdescendercyrillic", "u04AA", - "Esh", "u01A9", - "Eta", "u0397", - "Etarmenian", "u0538", - "Etatonos", "u0389", - "Eth", "u00D0", - "Etilde", "u1EBC", - "Etildebelow", "u1E1A", - "Euro", "u20AC", - "Ezh", "u01B7", - "Ezhcaron", "u01EE", - "Ezhreversed", "u01B8", - "F", "u0046", - "Fcircle", "u24BB", - "Fdotaccent", "u1E1E", - "Feharmenian", "u0556", - "Feicoptic", "u03E4", - "Fhook", "u0191", - "Fitacyrillic", "u0472", - "Fiveroman", "u2164", - "Fmonospace", "uFF26", - "Fourroman", "u2163", - "G", "u0047", - "GBsquare", "u3387", - "Gacute", "u01F4", - "Gamma", "u0393", - "Gammaafrican", "u0194", - "Gangiacoptic", "u03EA", - "Gbreve", "u011E", - "Gcaron", "u01E6", - "Gcedilla", "u0122", - "Gcircle", "u24BC", - "Gcircumflex", "u011C", - "Gcommaaccent", "u0122", - "Gdot", "u0120", - "Gdotaccent", "u0120", - "Gecyrillic", "u0413", - "Ghadarmenian", "u0542", - "Ghemiddlehookcyrillic", "u0494", - "Ghestrokecyrillic", "u0492", - "Gheupturncyrillic", "u0490", - "Ghook", "u0193", - "Gimarmenian", "u0533", - "Gjecyrillic", "u0403", - "Gmacron", "u1E20", - "Gmonospace", "uFF27", - "Gsmallhook", "u029B", - "Gstroke", "u01E4", - "H", "u0048", - "H18533", "u25CF", - "H18543", "u25AA", - "H18551", "u25AB", - "H22073", "u25A1", - "HPsquare", "u33CB", - "Haabkhasiancyrillic", "u04A8", - "Hadescendercyrillic", "u04B2", - "Hardsigncyrillic", "u042A", - "Hbar", "u0126", - "Hbrevebelow", "u1E2A", - "Hcedilla", "u1E28", - "Hcircle", "u24BD", - "Hcircumflex", "u0124", - "Hdieresis", "u1E26", - "Hdotaccent", "u1E22", - "Hdotbelow", "u1E24", - "Hmonospace", "uFF28", - "Hoarmenian", "u0540", - "Horicoptic", "u03E8", - "Hzsquare", "u3390", - "I", "u0049", - "IAcyrillic", "u042F", - "IJ", "u0132", - "IUcyrillic", "u042E", - "Iacute", "u00CD", - "Ibreve", "u012C", - "Icaron", "u01CF", - "Icircle", "u24BE", - "Icircumflex", "u00CE", - "Icyrillic", "u0406", - "Idblgrave", "u0208", - "Idieresis", "u00CF", - "Idieresisacute", "u1E2E", - "Idieresiscyrillic", "u04E4", - "Idot", "u0130", - "Idotaccent", "u0130", - "Idotbelow", "u1ECA", - "Iebrevecyrillic", "u04D6", - "Iecyrillic", "u0415", - "Ifraktur", "u2111", - "Igrave", "u00CC", - "Ihookabove", "u1EC8", - "Iicyrillic", "u0418", - "Iinvertedbreve", "u020A", - "Iishortcyrillic", "u0419", - "Imacron", "u012A", - "Imacroncyrillic", "u04E2", - "Imonospace", "uFF29", - "Iniarmenian", "u053B", - "Iocyrillic", "u0401", - "Iogonek", "u012E", - "Iota", "u0399", - "Iotaafrican", "u0196", - "Iotadieresis", "u03AA", - "Iotatonos", "u038A", - "Istroke", "u0197", - "Itilde", "u0128", - "Itildebelow", "u1E2C", - "Izhitsacyrillic", "u0474", - "Izhitsadblgravecyrillic", "u0476", - "J", "u004A", - "Jaarmenian", "u0541", - "Jcircle", "u24BF", - "Jcircumflex", "u0134", - "Jecyrillic", "u0408", - "Jheharmenian", "u054B", - "Jmonospace", "uFF2A", - "K", "u004B", - "KBsquare", "u3385", - "KKsquare", "u33CD", - "Kabashkircyrillic", "u04A0", - "Kacute", "u1E30", - "Kacyrillic", "u041A", - "Kadescendercyrillic", "u049A", - "Kahookcyrillic", "u04C3", - "Kappa", "u039A", - "Kastrokecyrillic", "u049E", - "Kaverticalstrokecyrillic", "u049C", - "Kcaron", "u01E8", - "Kcedilla", "u0136", - "Kcircle", "u24C0", - "Kcommaaccent", "u0136", - "Kdotbelow", "u1E32", - "Keharmenian", "u0554", - "Kenarmenian", "u053F", - "Khacyrillic", "u0425", - "Kheicoptic", "u03E6", - "Khook", "u0198", - "Kjecyrillic", "u040C", - "Klinebelow", "u1E34", - "Kmonospace", "uFF2B", - "Koppacyrillic", "u0480", - "Koppagreek", "u03DE", - "Ksicyrillic", "u046E", - "L", "u004C", - "LJ", "u01C7", - "Lacute", "u0139", - "Lambda", "u039B", - "Lcaron", "u013D", - "Lcedilla", "u013B", - "Lcircle", "u24C1", - "Lcircumflexbelow", "u1E3C", - "Lcommaaccent", "u013B", - "Ldot", "u013F", - "Ldotaccent", "u013F", - "Ldotbelow", "u1E36", - "Ldotbelowmacron", "u1E38", - "Liwnarmenian", "u053C", - "Lj", "u01C8", - "Ljecyrillic", "u0409", - "Llinebelow", "u1E3A", - "Lmonospace", "uFF2C", - "Lslash", "u0141", - "M", "u004D", - "MBsquare", "u3386", - "Macute", "u1E3E", - "Mcircle", "u24C2", - "Mdotaccent", "u1E40", - "Mdotbelow", "u1E42", - "Menarmenian", "u0544", - "Mmonospace", "uFF2D", - "Mturned", "u019C", - "Mu", "u039C", - "N", "u004E", - "NJ", "u01CA", - "Nacute", "u0143", - "Ncaron", "u0147", - "Ncedilla", "u0145", - "Ncircle", "u24C3", - "Ncircumflexbelow", "u1E4A", - "Ncommaaccent", "u0145", - "Ndotaccent", "u1E44", - "Ndotbelow", "u1E46", - "Nhookleft", "u019D", - "Nineroman", "u2168", - "Nj", "u01CB", - "Njecyrillic", "u040A", - "Nlinebelow", "u1E48", - "Nmonospace", "uFF2E", - "Nowarmenian", "u0546", - "Ntilde", "u00D1", - "Nu", "u039D", - "O", "u004F", - "OE", "u0152", - "Oacute", "u00D3", - "Obarredcyrillic", "u04E8", - "Obarreddieresiscyrillic", "u04EA", - "Obreve", "u014E", - "Ocaron", "u01D1", - "Ocenteredtilde", "u019F", - "Ocircle", "u24C4", - "Ocircumflex", "u00D4", - "Ocircumflexacute", "u1ED0", - "Ocircumflexdotbelow", "u1ED8", - "Ocircumflexgrave", "u1ED2", - "Ocircumflexhookabove", "u1ED4", - "Ocircumflextilde", "u1ED6", - "Ocyrillic", "u041E", - "Odblacute", "u0150", - "Odblgrave", "u020C", - "Odieresis", "u00D6", - "Odieresiscyrillic", "u04E6", - "Odotbelow", "u1ECC", - "Ograve", "u00D2", - "Oharmenian", "u0555", - "Ohm", "u2126", - "Ohookabove", "u1ECE", - "Ohorn", "u01A0", - "Ohornacute", "u1EDA", - "Ohorndotbelow", "u1EE2", - "Ohorngrave", "u1EDC", - "Ohornhookabove", "u1EDE", - "Ohorntilde", "u1EE0", - "Ohungarumlaut", "u0150", - "Oi", "u01A2", - "Oinvertedbreve", "u020E", - "Omacron", "u014C", - "Omacronacute", "u1E52", - "Omacrongrave", "u1E50", - "Omega", "u2126", - "Omegacyrillic", "u0460", - "Omegagreek", "u03A9", - "Omegaroundcyrillic", "u047A", - "Omegatitlocyrillic", "u047C", - "Omegatonos", "u038F", - "Omicron", "u039F", - "Omicrontonos", "u038C", - "Omonospace", "uFF2F", - "Oneroman", "u2160", - "Oogonek", "u01EA", - "Oogonekmacron", "u01EC", - "Oopen", "u0186", - "Oslash", "u00D8", - "Oslashacute", "u01FE", - "Ostrokeacute", "u01FE", - "Otcyrillic", "u047E", - "Otilde", "u00D5", - "Otildeacute", "u1E4C", - "Otildedieresis", "u1E4E", - "P", "u0050", - "Pacute", "u1E54", - "Pcircle", "u24C5", - "Pdotaccent", "u1E56", - "Pecyrillic", "u041F", - "Peharmenian", "u054A", - "Pemiddlehookcyrillic", "u04A6", - "Phi", "u03A6", - "Phook", "u01A4", - "Pi", "u03A0", - "Piwrarmenian", "u0553", - "Pmonospace", "uFF30", - "Psi", "u03A8", - "Psicyrillic", "u0470", - "Q", "u0051", - "Qcircle", "u24C6", - "Qmonospace", "uFF31", - "R", "u0052", - "Raarmenian", "u054C", - "Racute", "u0154", - "Rcaron", "u0158", - "Rcedilla", "u0156", - "Rcircle", "u24C7", - "Rcommaaccent", "u0156", - "Rdblgrave", "u0210", - "Rdotaccent", "u1E58", - "Rdotbelow", "u1E5A", - "Rdotbelowmacron", "u1E5C", - "Reharmenian", "u0550", - "Rfraktur", "u211C", - "Rho", "u03A1", - "Rinvertedbreve", "u0212", - "Rlinebelow", "u1E5E", - "Rmonospace", "uFF32", - "Rsmallinverted", "u0281", - "Rsmallinvertedsuperior", "u02B6", - "S", "u0053", - "SF010000", "u250C", - "SF020000", "u2514", - "SF030000", "u2510", - "SF040000", "u2518", - "SF050000", "u253C", - "SF060000", "u252C", - "SF070000", "u2534", - "SF080000", "u251C", - "SF090000", "u2524", - "SF100000", "u2500", - "SF110000", "u2502", - "SF190000", "u2561", - "SF200000", "u2562", - "SF210000", "u2556", - "SF220000", "u2555", - "SF230000", "u2563", - "SF240000", "u2551", - "SF250000", "u2557", - "SF260000", "u255D", - "SF270000", "u255C", - "SF280000", "u255B", - "SF360000", "u255E", - "SF370000", "u255F", - "SF380000", "u255A", - "SF390000", "u2554", - "SF400000", "u2569", - "SF410000", "u2566", - "SF420000", "u2560", - "SF430000", "u2550", - "SF440000", "u256C", - "SF450000", "u2567", - "SF460000", "u2568", - "SF470000", "u2564", - "SF480000", "u2565", - "SF490000", "u2559", - "SF500000", "u2558", - "SF510000", "u2552", - "SF520000", "u2553", - "SF530000", "u256B", - "SF540000", "u256A", - "Sacute", "u015A", - "Sacutedotaccent", "u1E64", - "Sampigreek", "u03E0", - "Scaron", "u0160", - "Scarondotaccent", "u1E66", - "Scedilla", "u015E", - "Schwa", "u018F", - "Schwacyrillic", "u04D8", - "Schwadieresiscyrillic", "u04DA", - "Scircle", "u24C8", - "Scircumflex", "u015C", - "Scommaaccent", "u0218", - "Sdotaccent", "u1E60", - "Sdotbelow", "u1E62", - "Sdotbelowdotaccent", "u1E68", - "Seharmenian", "u054D", - "Sevenroman", "u2166", - "Shaarmenian", "u0547", - "Shacyrillic", "u0428", - "Shchacyrillic", "u0429", - "Sheicoptic", "u03E2", - "Shhacyrillic", "u04BA", - "Shimacoptic", "u03EC", - "Sigma", "u03A3", - "Sixroman", "u2165", - "Smonospace", "uFF33", - "Softsigncyrillic", "u042C", - "Stigmagreek", "u03DA", - "T", "u0054", - "Tau", "u03A4", - "Tbar", "u0166", - "Tcaron", "u0164", - "Tcedilla", "u0162", - "Tcircle", "u24C9", - "Tcircumflexbelow", "u1E70", - "Tcommaaccent", "u0162", - "Tdotaccent", "u1E6A", - "Tdotbelow", "u1E6C", - "Tecyrillic", "u0422", - "Tedescendercyrillic", "u04AC", - "Tenroman", "u2169", - "Tetsecyrillic", "u04B4", - "Theta", "u0398", - "Thook", "u01AC", - "Thorn", "u00DE", - "Threeroman", "u2162", - "Tiwnarmenian", "u054F", - "Tlinebelow", "u1E6E", - "Tmonospace", "uFF34", - "Toarmenian", "u0539", - "Tonefive", "u01BC", - "Tonesix", "u0184", - "Tonetwo", "u01A7", - "Tretroflexhook", "u01AE", - "Tsecyrillic", "u0426", - "Tshecyrillic", "u040B", - "Twelveroman", "u216B", - "Tworoman", "u2161", - "U", "u0055", - "Uacute", "u00DA", - "Ubreve", "u016C", - "Ucaron", "u01D3", - "Ucircle", "u24CA", - "Ucircumflex", "u00DB", - "Ucircumflexbelow", "u1E76", - "Ucyrillic", "u0423", - "Udblacute", "u0170", - "Udblgrave", "u0214", - "Udieresis", "u00DC", - "Udieresisacute", "u01D7", - "Udieresisbelow", "u1E72", - "Udieresiscaron", "u01D9", - "Udieresiscyrillic", "u04F0", - "Udieresisgrave", "u01DB", - "Udieresismacron", "u01D5", - "Udotbelow", "u1EE4", - "Ugrave", "u00D9", - "Uhookabove", "u1EE6", - "Uhorn", "u01AF", - "Uhornacute", "u1EE8", - "Uhorndotbelow", "u1EF0", - "Uhorngrave", "u1EEA", - "Uhornhookabove", "u1EEC", - "Uhorntilde", "u1EEE", - "Uhungarumlaut", "u0170", - "Uhungarumlautcyrillic", "u04F2", - "Uinvertedbreve", "u0216", - "Ukcyrillic", "u0478", - "Umacron", "u016A", - "Umacroncyrillic", "u04EE", - "Umacrondieresis", "u1E7A", - "Umonospace", "uFF35", - "Uogonek", "u0172", - "Upsilon", "u03A5", - "Upsilon1", "u03D2", - "Upsilonacutehooksymbolgreek", "u03D3", - "Upsilonafrican", "u01B1", - "Upsilondieresis", "u03AB", - "Upsilondieresishooksymbolgreek", "u03D4", - "Upsilonhooksymbol", "u03D2", - "Upsilontonos", "u038E", - "Uring", "u016E", - "Ushortcyrillic", "u040E", - "Ustraightcyrillic", "u04AE", - "Ustraightstrokecyrillic", "u04B0", - "Utilde", "u0168", - "Utildeacute", "u1E78", - "Utildebelow", "u1E74", - "V", "u0056", - "Vcircle", "u24CB", - "Vdotbelow", "u1E7E", - "Vecyrillic", "u0412", - "Vewarmenian", "u054E", - "Vhook", "u01B2", - "Vmonospace", "uFF36", - "Voarmenian", "u0548", - "Vtilde", "u1E7C", - "W", "u0057", - "Wacute", "u1E82", - "Wcircle", "u24CC", - "Wcircumflex", "u0174", - "Wdieresis", "u1E84", - "Wdotaccent", "u1E86", - "Wdotbelow", "u1E88", - "Wgrave", "u1E80", - "Wmonospace", "uFF37", - "X", "u0058", - "Xcircle", "u24CD", - "Xdieresis", "u1E8C", - "Xdotaccent", "u1E8A", - "Xeharmenian", "u053D", - "Xi", "u039E", - "Xmonospace", "uFF38", - "Y", "u0059", - "Yacute", "u00DD", - "Yatcyrillic", "u0462", - "Ycircle", "u24CE", - "Ycircumflex", "u0176", - "Ydieresis", "u0178", - "Ydotaccent", "u1E8E", - "Ydotbelow", "u1EF4", - "Yericyrillic", "u042B", - "Yerudieresiscyrillic", "u04F8", - "Ygrave", "u1EF2", - "Yhook", "u01B3", - "Yhookabove", "u1EF6", - "Yiarmenian", "u0545", - "Yicyrillic", "u0407", - "Yiwnarmenian", "u0552", - "Ymonospace", "uFF39", - "Ytilde", "u1EF8", - "Yusbigcyrillic", "u046A", - "Yusbigiotifiedcyrillic", "u046C", - "Yuslittlecyrillic", "u0466", - "Yuslittleiotifiedcyrillic", "u0468", - "Z", "u005A", - "Zaarmenian", "u0536", - "Zacute", "u0179", - "Zcaron", "u017D", - "Zcircle", "u24CF", - "Zcircumflex", "u1E90", - "Zdot", "u017B", - "Zdotaccent", "u017B", - "Zdotbelow", "u1E92", - "Zecyrillic", "u0417", - "Zedescendercyrillic", "u0498", - "Zedieresiscyrillic", "u04DE", - "Zeta", "u0396", - "Zhearmenian", "u053A", - "Zhebrevecyrillic", "u04C1", - "Zhecyrillic", "u0416", - "Zhedescendercyrillic", "u0496", - "Zhedieresiscyrillic", "u04DC", - "Zlinebelow", "u1E94", - "Zmonospace", "uFF3A", - "Zstroke", "u01B5", - "a", "u0061", - "aabengali", "u0986", - "aacute", "u00E1", - "aadeva", "u0906", - "aagujarati", "u0A86", - "aagurmukhi", "u0A06", - "aamatragurmukhi", "u0A3E", - "aarusquare", "u3303", - "aavowelsignbengali", "u09BE", - "aavowelsigndeva", "u093E", - "aavowelsigngujarati", "u0ABE", - "abbreviationmarkarmenian", "u055F", - "abbreviationsigndeva", "u0970", - "abengali", "u0985", - "abopomofo", "u311A", - "abreve", "u0103", - "abreveacute", "u1EAF", - "abrevecyrillic", "u04D1", - "abrevedotbelow", "u1EB7", - "abrevegrave", "u1EB1", - "abrevehookabove", "u1EB3", - "abrevetilde", "u1EB5", - "acaron", "u01CE", - "acircle", "u24D0", - "acircumflex", "u00E2", - "acircumflexacute", "u1EA5", - "acircumflexdotbelow", "u1EAD", - "acircumflexgrave", "u1EA7", - "acircumflexhookabove", "u1EA9", - "acircumflextilde", "u1EAB", - "acute", "u00B4", - "acutebelowcmb", "u0317", - "acutecmb", "u0301", - "acutecomb", "u0301", - "acutedeva", "u0954", - "acutelowmod", "u02CF", - "acutetonecmb", "u0341", - "acyrillic", "u0430", - "adblgrave", "u0201", - "addakgurmukhi", "u0A71", - "adeva", "u0905", - "adieresis", "u00E4", - "adieresiscyrillic", "u04D3", - "adieresismacron", "u01DF", - "adotbelow", "u1EA1", - "adotmacron", "u01E1", - "ae", "u00E6", - "aeacute", "u01FD", - "aekorean", "u3150", - "aemacron", "u01E3", - "afii00208", "u2015", - "afii08941", "u20A4", - "afii10017", "u0410", - "afii10018", "u0411", - "afii10019", "u0412", - "afii10020", "u0413", - "afii10021", "u0414", - "afii10022", "u0415", - "afii10023", "u0401", - "afii10024", "u0416", - "afii10025", "u0417", - "afii10026", "u0418", - "afii10027", "u0419", - "afii10028", "u041A", - "afii10029", "u041B", - "afii10030", "u041C", - "afii10031", "u041D", - "afii10032", "u041E", - "afii10033", "u041F", - "afii10034", "u0420", - "afii10035", "u0421", - "afii10036", "u0422", - "afii10037", "u0423", - "afii10038", "u0424", - "afii10039", "u0425", - "afii10040", "u0426", - "afii10041", "u0427", - "afii10042", "u0428", - "afii10043", "u0429", - "afii10044", "u042A", - "afii10045", "u042B", - "afii10046", "u042C", - "afii10047", "u042D", - "afii10048", "u042E", - "afii10049", "u042F", - "afii10050", "u0490", - "afii10051", "u0402", - "afii10052", "u0403", - "afii10053", "u0404", - "afii10054", "u0405", - "afii10055", "u0406", - "afii10056", "u0407", - "afii10057", "u0408", - "afii10058", "u0409", - "afii10059", "u040A", - "afii10060", "u040B", - "afii10061", "u040C", - "afii10062", "u040E", - "afii10065", "u0430", - "afii10066", "u0431", - "afii10067", "u0432", - "afii10068", "u0433", - "afii10069", "u0434", - "afii10070", "u0435", - "afii10071", "u0451", - "afii10072", "u0436", - "afii10073", "u0437", - "afii10074", "u0438", - "afii10075", "u0439", - "afii10076", "u043A", - "afii10077", "u043B", - "afii10078", "u043C", - "afii10079", "u043D", - "afii10080", "u043E", - "afii10081", "u043F", - "afii10082", "u0440", - "afii10083", "u0441", - "afii10084", "u0442", - "afii10085", "u0443", - "afii10086", "u0444", - "afii10087", "u0445", - "afii10088", "u0446", - "afii10089", "u0447", - "afii10090", "u0448", - "afii10091", "u0449", - "afii10092", "u044A", - "afii10093", "u044B", - "afii10094", "u044C", - "afii10095", "u044D", - "afii10096", "u044E", - "afii10097", "u044F", - "afii10098", "u0491", - "afii10099", "u0452", - "afii10100", "u0453", - "afii10101", "u0454", - "afii10102", "u0455", - "afii10103", "u0456", - "afii10104", "u0457", - "afii10105", "u0458", - "afii10106", "u0459", - "afii10107", "u045A", - "afii10108", "u045B", - "afii10109", "u045C", - "afii10110", "u045E", - "afii10145", "u040F", - "afii10146", "u0462", - "afii10147", "u0472", - "afii10148", "u0474", - "afii10193", "u045F", - "afii10194", "u0463", - "afii10195", "u0473", - "afii10196", "u0475", - "afii10846", "u04D9", - "afii299", "u200E", - "afii300", "u200F", - "afii301", "u200D", - "afii57381", "u066A", - "afii57388", "u060C", - "afii57392", "u0660", - "afii57393", "u0661", - "afii57394", "u0662", - "afii57395", "u0663", - "afii57396", "u0664", - "afii57397", "u0665", - "afii57398", "u0666", - "afii57399", "u0667", - "afii57400", "u0668", - "afii57401", "u0669", - "afii57403", "u061B", - "afii57407", "u061F", - "afii57409", "u0621", - "afii57410", "u0622", - "afii57411", "u0623", - "afii57412", "u0624", - "afii57413", "u0625", - "afii57414", "u0626", - "afii57415", "u0627", - "afii57416", "u0628", - "afii57417", "u0629", - "afii57418", "u062A", - "afii57419", "u062B", - "afii57420", "u062C", - "afii57421", "u062D", - "afii57422", "u062E", - "afii57423", "u062F", - "afii57424", "u0630", - "afii57425", "u0631", - "afii57426", "u0632", - "afii57427", "u0633", - "afii57428", "u0634", - "afii57429", "u0635", - "afii57430", "u0636", - "afii57431", "u0637", - "afii57432", "u0638", - "afii57433", "u0639", - "afii57434", "u063A", - "afii57440", "u0640", - "afii57441", "u0641", - "afii57442", "u0642", - "afii57443", "u0643", - "afii57444", "u0644", - "afii57445", "u0645", - "afii57446", "u0646", - "afii57448", "u0648", - "afii57449", "u0649", - "afii57450", "u064A", - "afii57451", "u064B", - "afii57452", "u064C", - "afii57453", "u064D", - "afii57454", "u064E", - "afii57455", "u064F", - "afii57456", "u0650", - "afii57457", "u0651", - "afii57458", "u0652", - "afii57470", "u0647", - "afii57505", "u06A4", - "afii57506", "u067E", - "afii57507", "u0686", - "afii57508", "u0698", - "afii57509", "u06AF", - "afii57511", "u0679", - "afii57512", "u0688", - "afii57513", "u0691", - "afii57514", "u06BA", - "afii57519", "u06D2", - "afii57534", "u06D5", - "afii57636", "u20AA", - "afii57645", "u05BE", - "afii57658", "u05C3", - "afii57664", "u05D0", - "afii57665", "u05D1", - "afii57666", "u05D2", - "afii57667", "u05D3", - "afii57668", "u05D4", - "afii57669", "u05D5", - "afii57670", "u05D6", - "afii57671", "u05D7", - "afii57672", "u05D8", - "afii57673", "u05D9", - "afii57674", "u05DA", - "afii57675", "u05DB", - "afii57676", "u05DC", - "afii57677", "u05DD", - "afii57678", "u05DE", - "afii57679", "u05DF", - "afii57680", "u05E0", - "afii57681", "u05E1", - "afii57682", "u05E2", - "afii57683", "u05E3", - "afii57684", "u05E4", - "afii57685", "u05E5", - "afii57686", "u05E6", - "afii57687", "u05E7", - "afii57688", "u05E8", - "afii57689", "u05E9", - "afii57690", "u05EA", - "afii57694", "uFB2A", - "afii57695", "uFB2B", - "afii57700", "uFB4B", - "afii57705", "uFB1F", - "afii57716", "u05F0", - "afii57717", "u05F1", - "afii57718", "u05F2", - "afii57723", "uFB35", - "afii57793", "u05B4", - "afii57794", "u05B5", - "afii57795", "u05B6", - "afii57796", "u05BB", - "afii57797", "u05B8", - "afii57798", "u05B7", - "afii57799", "u05B0", - "afii57800", "u05B2", - "afii57801", "u05B1", - "afii57802", "u05B3", - "afii57803", "u05C2", - "afii57804", "u05C1", - "afii57806", "u05B9", - "afii57807", "u05BC", - "afii57839", "u05BD", - "afii57841", "u05BF", - "afii57842", "u05C0", - "afii57929", "u02BC", - "afii61248", "u2105", - "afii61289", "u2113", - "afii61352", "u2116", - "afii61573", "u202C", - "afii61574", "u202D", - "afii61575", "u202E", - "afii61664", "u200C", - "afii63167", "u066D", - "afii64937", "u02BD", - "agrave", "u00E0", - "agujarati", "u0A85", - "agurmukhi", "u0A05", - "ahiragana", "u3042", - "ahookabove", "u1EA3", - "aibengali", "u0990", - "aibopomofo", "u311E", - "aideva", "u0910", - "aiecyrillic", "u04D5", - "aigujarati", "u0A90", - "aigurmukhi", "u0A10", - "aimatragurmukhi", "u0A48", - "ainarabic", "u0639", - "ainfinalarabic", "uFECA", - "aininitialarabic", "uFECB", - "ainmedialarabic", "uFECC", - "ainvertedbreve", "u0203", - "aivowelsignbengali", "u09C8", - "aivowelsigndeva", "u0948", - "aivowelsigngujarati", "u0AC8", - "akatakana", "u30A2", - "akatakanahalfwidth", "uFF71", - "akorean", "u314F", - "alef", "u05D0", - "alefarabic", "u0627", - "alefdageshhebrew", "uFB30", - "aleffinalarabic", "uFE8E", - "alefhamzaabovearabic", "u0623", - "alefhamzaabovefinalarabic", "uFE84", - "alefhamzabelowarabic", "u0625", - "alefhamzabelowfinalarabic", "uFE88", - "alefhebrew", "u05D0", - "aleflamedhebrew", "uFB4F", - "alefmaddaabovearabic", "u0622", - "alefmaddaabovefinalarabic", "uFE82", - "alefmaksuraarabic", "u0649", - "alefmaksurafinalarabic", "uFEF0", - "alefmaksurainitialarabic", "uFEF3", - "alefmaksuramedialarabic", "uFEF4", - "alefpatahhebrew", "uFB2E", - "alefqamatshebrew", "uFB2F", - "aleph", "u2135", - "allequal", "u224C", - "alpha", "u03B1", - "alphatonos", "u03AC", - "amacron", "u0101", - "amonospace", "uFF41", - "ampersand", "u0026", - "ampersandmonospace", "uFF06", - "amsquare", "u33C2", - "anbopomofo", "u3122", - "angbopomofo", "u3124", - "angkhankhuthai", "u0E5A", - "angle", "u2220", - "anglebracketleft", "u3008", - "anglebracketleftvertical", "uFE3F", - "anglebracketright", "u3009", - "anglebracketrightvertical", "uFE40", - "angleleft", "u2329", - "angleright", "u232A", - "angstrom", "u212B", - "anoteleia", "u0387", - "anudattadeva", "u0952", - "anusvarabengali", "u0982", - "anusvaradeva", "u0902", - "anusvaragujarati", "u0A82", - "aogonek", "u0105", - "apaatosquare", "u3300", - "aparen", "u249C", - "apostrophearmenian", "u055A", - "apostrophemod", "u02BC", - "approaches", "u2250", - "approxequal", "u2248", - "approxequalorimage", "u2252", - "approximatelyequal", "u2245", - "araeaekorean", "u318E", - "araeakorean", "u318D", - "arc", "u2312", - "arighthalfring", "u1E9A", - "aring", "u00E5", - "aringacute", "u01FB", - "aringbelow", "u1E01", - "arrowboth", "u2194", - "arrowdashdown", "u21E3", - "arrowdashleft", "u21E0", - "arrowdashright", "u21E2", - "arrowdashup", "u21E1", - "arrowdblboth", "u21D4", - "arrowdbldown", "u21D3", - "arrowdblleft", "u21D0", - "arrowdblright", "u21D2", - "arrowdblup", "u21D1", - "arrowdown", "u2193", - "arrowdownleft", "u2199", - "arrowdownright", "u2198", - "arrowdownwhite", "u21E9", - "arrowheaddownmod", "u02C5", - "arrowheadleftmod", "u02C2", - "arrowheadrightmod", "u02C3", - "arrowheadupmod", "u02C4", - "arrowleft", "u2190", - "arrowleftdbl", "u21D0", - "arrowleftdblstroke", "u21CD", - "arrowleftoverright", "u21C6", - "arrowleftwhite", "u21E6", - "arrowright", "u2192", - "arrowrightdblstroke", "u21CF", - "arrowrightheavy", "u279E", - "arrowrightoverleft", "u21C4", - "arrowrightwhite", "u21E8", - "arrowtableft", "u21E4", - "arrowtabright", "u21E5", - "arrowup", "u2191", - "arrowupdn", "u2195", - "arrowupdnbse", "u21A8", - "arrowupdownbase", "u21A8", - "arrowupleft", "u2196", - "arrowupleftofdown", "u21C5", - "arrowupright", "u2197", - "arrowupwhite", "u21E7", - "asciicircum", "u005E", - "asciicircummonospace", "uFF3E", - "asciitilde", "u007E", - "asciitildemonospace", "uFF5E", - "ascript", "u0251", - "ascriptturned", "u0252", - "asmallhiragana", "u3041", - "asmallkatakana", "u30A1", - "asmallkatakanahalfwidth", "uFF67", - "asterisk", "u002A", - "asteriskaltonearabic", "u066D", - "asteriskarabic", "u066D", - "asteriskmath", "u2217", - "asteriskmonospace", "uFF0A", - "asterisksmall", "uFE61", - "asterism", "u2042", - "asymptoticallyequal", "u2243", - "at", "u0040", - "atilde", "u00E3", - "atmonospace", "uFF20", - "atsmall", "uFE6B", - "aturned", "u0250", - "aubengali", "u0994", - "aubopomofo", "u3120", - "audeva", "u0914", - "augujarati", "u0A94", - "augurmukhi", "u0A14", - "aulengthmarkbengali", "u09D7", - "aumatragurmukhi", "u0A4C", - "auvowelsignbengali", "u09CC", - "auvowelsigndeva", "u094C", - "auvowelsigngujarati", "u0ACC", - "avagrahadeva", "u093D", - "aybarmenian", "u0561", - "ayin", "u05E2", - "ayinaltonehebrew", "uFB20", - "ayinhebrew", "u05E2", - "b", "u0062", - "babengali", "u09AC", - "backslash", "u005C", - "backslashmonospace", "uFF3C", - "badeva", "u092C", - "bagujarati", "u0AAC", - "bagurmukhi", "u0A2C", - "bahiragana", "u3070", - "bahtthai", "u0E3F", - "bakatakana", "u30D0", - "bar", "u007C", - "barmonospace", "uFF5C", - "bbopomofo", "u3105", - "bcircle", "u24D1", - "bdotaccent", "u1E03", - "bdotbelow", "u1E05", - "beamedsixteenthnotes", "u266C", - "because", "u2235", - "becyrillic", "u0431", - "beharabic", "u0628", - "behfinalarabic", "uFE90", - "behinitialarabic", "uFE91", - "behiragana", "u3079", - "behmedialarabic", "uFE92", - "behmeeminitialarabic", "uFC9F", - "behmeemisolatedarabic", "uFC08", - "behnoonfinalarabic", "uFC6D", - "bekatakana", "u30D9", - "benarmenian", "u0562", - "bet", "u05D1", - "beta", "u03B2", - "betasymbolgreek", "u03D0", - "betdagesh", "uFB31", - "betdageshhebrew", "uFB31", - "bethebrew", "u05D1", - "betrafehebrew", "uFB4C", - "bhabengali", "u09AD", - "bhadeva", "u092D", - "bhagujarati", "u0AAD", - "bhagurmukhi", "u0A2D", - "bhook", "u0253", - "bihiragana", "u3073", - "bikatakana", "u30D3", - "bilabialclick", "u0298", - "bindigurmukhi", "u0A02", - "birusquare", "u3331", - "blackcircle", "u25CF", - "blackdiamond", "u25C6", - "blackdownpointingtriangle", "u25BC", - "blackleftpointingpointer", "u25C4", - "blackleftpointingtriangle", "u25C0", - "blacklenticularbracketleft", "u3010", - "blacklenticularbracketleftvertical", "uFE3B", - "blacklenticularbracketright", "u3011", - "blacklenticularbracketrightvertical", "uFE3C", - "blacklowerlefttriangle", "u25E3", - "blacklowerrighttriangle", "u25E2", - "blackrectangle", "u25AC", - "blackrightpointingpointer", "u25BA", - "blackrightpointingtriangle", "u25B6", - "blacksmallsquare", "u25AA", - "blacksmilingface", "u263B", - "blacksquare", "u25A0", - "blackstar", "u2605", - "blackupperlefttriangle", "u25E4", - "blackupperrighttriangle", "u25E5", - "blackuppointingsmalltriangle", "u25B4", - "blackuppointingtriangle", "u25B2", - "blank", "u2423", - "blinebelow", "u1E07", - "block", "u2588", - "bmonospace", "uFF42", - "bobaimaithai", "u0E1A", - "bohiragana", "u307C", - "bokatakana", "u30DC", - "bparen", "u249D", - "bqsquare", "u33C3", - "braceleft", "u007B", - "braceleftmonospace", "uFF5B", - "braceleftsmall", "uFE5B", - "braceleftvertical", "uFE37", - "braceright", "u007D", - "bracerightmonospace", "uFF5D", - "bracerightsmall", "uFE5C", - "bracerightvertical", "uFE38", - "bracketleft", "u005B", - "bracketleftmonospace", "uFF3B", - "bracketright", "u005D", - "bracketrightmonospace", "uFF3D", - "breve", "u02D8", - "brevebelowcmb", "u032E", - "brevecmb", "u0306", - "breveinvertedbelowcmb", "u032F", - "breveinvertedcmb", "u0311", - "breveinverteddoublecmb", "u0361", - "bridgebelowcmb", "u032A", - "bridgeinvertedbelowcmb", "u033A", - "brokenbar", "u00A6", - "bstroke", "u0180", - "btopbar", "u0183", - "buhiragana", "u3076", - "bukatakana", "u30D6", - "bullet", "u2022", - "bulletinverse", "u25D8", - "bulletoperator", "u2219", - "bullseye", "u25CE", - "c", "u0063", - "caarmenian", "u056E", - "cabengali", "u099A", - "cacute", "u0107", - "cadeva", "u091A", - "cagujarati", "u0A9A", - "cagurmukhi", "u0A1A", - "calsquare", "u3388", - "candrabindubengali", "u0981", - "candrabinducmb", "u0310", - "candrabindudeva", "u0901", - "candrabindugujarati", "u0A81", - "capslock", "u21EA", - "careof", "u2105", - "caron", "u02C7", - "caronbelowcmb", "u032C", - "caroncmb", "u030C", - "carriagereturn", "u21B5", - "cbopomofo", "u3118", - "ccaron", "u010D", - "ccedilla", "u00E7", - "ccedillaacute", "u1E09", - "ccircle", "u24D2", - "ccircumflex", "u0109", - "ccurl", "u0255", - "cdot", "u010B", - "cdotaccent", "u010B", - "cdsquare", "u33C5", - "cedilla", "u00B8", - "cedillacmb", "u0327", - "cent", "u00A2", - "centigrade", "u2103", - "centmonospace", "uFFE0", - "chaarmenian", "u0579", - "chabengali", "u099B", - "chadeva", "u091B", - "chagujarati", "u0A9B", - "chagurmukhi", "u0A1B", - "chbopomofo", "u3114", - "cheabkhasiancyrillic", "u04BD", - "checkmark", "u2713", - "checyrillic", "u0447", - "chedescenderabkhasiancyrillic", "u04BF", - "chedescendercyrillic", "u04B7", - "chedieresiscyrillic", "u04F5", - "cheharmenian", "u0573", - "chekhakassiancyrillic", "u04CC", - "cheverticalstrokecyrillic", "u04B9", - "chi", "u03C7", - "chieuchacirclekorean", "u3277", - "chieuchaparenkorean", "u3217", - "chieuchcirclekorean", "u3269", - "chieuchkorean", "u314A", - "chieuchparenkorean", "u3209", - "chochangthai", "u0E0A", - "chochanthai", "u0E08", - "chochingthai", "u0E09", - "chochoethai", "u0E0C", - "chook", "u0188", - "cieucacirclekorean", "u3276", - "cieucaparenkorean", "u3216", - "cieuccirclekorean", "u3268", - "cieuckorean", "u3148", - "cieucparenkorean", "u3208", - "cieucuparenkorean", "u321C", - "circle", "u25CB", - "circlemultiply", "u2297", - "circleot", "u2299", - "circleplus", "u2295", - "circlepostalmark", "u3036", - "circlewithlefthalfblack", "u25D0", - "circlewithrighthalfblack", "u25D1", - "circumflex", "u02C6", - "circumflexbelowcmb", "u032D", - "circumflexcmb", "u0302", - "clear", "u2327", - "clickalveolar", "u01C2", - "clickdental", "u01C0", - "clicklateral", "u01C1", - "clickretroflex", "u01C3", - "club", "u2663", - "clubsuitblack", "u2663", - "clubsuitwhite", "u2667", - "cmcubedsquare", "u33A4", - "cmonospace", "uFF43", - "cmsquaredsquare", "u33A0", - "coarmenian", "u0581", - "colon", "u003A", - "colonmonetary", "u20A1", - "colonmonospace", "uFF1A", - "colonsign", "u20A1", - "colonsmall", "uFE55", - "colontriangularhalfmod", "u02D1", - "colontriangularmod", "u02D0", - "comma", "u002C", - "commaabovecmb", "u0313", - "commaaboverightcmb", "u0315", - "commaarabic", "u060C", - "commaarmenian", "u055D", - "commamonospace", "uFF0C", - "commareversedabovecmb", "u0314", - "commareversedmod", "u02BD", - "commasmall", "uFE50", - "commaturnedabovecmb", "u0312", - "commaturnedmod", "u02BB", - "compass", "u263C", - "congruent", "u2245", - "contourintegral", "u222E", - "control", "u2303", - "controlACK", "u0006", - "controlBEL", "u0007", - "controlBS", "u0008", - "controlCAN", "u0018", - "controlCR", "u000D", - "controlDC1", "u0011", - "controlDC2", "u0012", - "controlDC3", "u0013", - "controlDC4", "u0014", - "controlDEL", "u007F", - "controlDLE", "u0010", - "controlEM", "u0019", - "controlENQ", "u0005", - "controlEOT", "u0004", - "controlESC", "u001B", - "controlETB", "u0017", - "controlETX", "u0003", - "controlFF", "u000C", - "controlFS", "u001C", - "controlGS", "u001D", - "controlHT", "u0009", - "controlLF", "u000A", - "controlNAK", "u0015", - "controlRS", "u001E", - "controlSI", "u000F", - "controlSO", "u000E", - "controlSOT", "u0002", - "controlSTX", "u0001", - "controlSUB", "u001A", - "controlSYN", "u0016", - "controlUS", "u001F", - "controlVT", "u000B", - "copyright", "u00A9", - "cornerbracketleft", "u300C", - "cornerbracketlefthalfwidth", "uFF62", - "cornerbracketleftvertical", "uFE41", - "cornerbracketright", "u300D", - "cornerbracketrighthalfwidth", "uFF63", - "cornerbracketrightvertical", "uFE42", - "corporationsquare", "u337F", - "cosquare", "u33C7", - "coverkgsquare", "u33C6", - "cparen", "u249E", - "cruzeiro", "u20A2", - "cstretched", "u0297", - "curlyand", "u22CF", - "curlyor", "u22CE", - "currency", "u00A4", - "d", "u0064", - "daarmenian", "u0564", - "dabengali", "u09A6", - "dadarabic", "u0636", - "dadeva", "u0926", - "dadfinalarabic", "uFEBE", - "dadinitialarabic", "uFEBF", - "dadmedialarabic", "uFEC0", - "dagesh", "u05BC", - "dageshhebrew", "u05BC", - "dagger", "u2020", - "daggerdbl", "u2021", - "dagujarati", "u0AA6", - "dagurmukhi", "u0A26", - "dahiragana", "u3060", - "dakatakana", "u30C0", - "dalarabic", "u062F", - "dalet", "u05D3", - "daletdagesh", "uFB33", - "daletdageshhebrew", "uFB33", - "dalethatafpatah", "u05D3_05B2", - "dalethatafpatahhebrew", "u05D3_05B2", - "dalethatafsegol", "u05D3_05B1", - "dalethatafsegolhebrew", "u05D3_05B1", - "dalethebrew", "u05D3", - "dalethiriq", "u05D3_05B4", - "dalethiriqhebrew", "u05D3_05B4", - "daletholam", "u05D3_05B9", - "daletholamhebrew", "u05D3_05B9", - "daletpatah", "u05D3_05B7", - "daletpatahhebrew", "u05D3_05B7", - "daletqamats", "u05D3_05B8", - "daletqamatshebrew", "u05D3_05B8", - "daletqubuts", "u05D3_05BB", - "daletqubutshebrew", "u05D3_05BB", - "daletsegol", "u05D3_05B6", - "daletsegolhebrew", "u05D3_05B6", - "daletsheva", "u05D3_05B0", - "daletshevahebrew", "u05D3_05B0", - "dalettsere", "u05D3_05B5", - "dalettserehebrew", "u05D3_05B5", - "dalfinalarabic", "uFEAA", - "dammaarabic", "u064F", - "dammalowarabic", "u064F", - "dammatanaltonearabic", "u064C", - "dammatanarabic", "u064C", - "danda", "u0964", - "dargahebrew", "u05A7", - "dargalefthebrew", "u05A7", - "dasiapneumatacyrilliccmb", "u0485", - "dblanglebracketleft", "u300A", - "dblanglebracketleftvertical", "uFE3D", - "dblanglebracketright", "u300B", - "dblanglebracketrightvertical", "uFE3E", - "dblarchinvertedbelowcmb", "u032B", - "dblarrowleft", "u21D4", - "dblarrowright", "u21D2", - "dbldanda", "u0965", - "dblgravecmb", "u030F", - "dblintegral", "u222C", - "dbllowline", "u2017", - "dbllowlinecmb", "u0333", - "dbloverlinecmb", "u033F", - "dblprimemod", "u02BA", - "dblverticalbar", "u2016", - "dblverticallineabovecmb", "u030E", - "dbopomofo", "u3109", - "dbsquare", "u33C8", - "dcaron", "u010F", - "dcedilla", "u1E11", - "dcircle", "u24D3", - "dcircumflexbelow", "u1E13", - "dcroat", "u0111", - "ddabengali", "u09A1", - "ddadeva", "u0921", - "ddagujarati", "u0AA1", - "ddagurmukhi", "u0A21", - "ddalarabic", "u0688", - "ddalfinalarabic", "uFB89", - "dddhadeva", "u095C", - "ddhabengali", "u09A2", - "ddhadeva", "u0922", - "ddhagujarati", "u0AA2", - "ddhagurmukhi", "u0A22", - "ddotaccent", "u1E0B", - "ddotbelow", "u1E0D", - "decimalseparatorarabic", "u066B", - "decimalseparatorpersian", "u066B", - "decyrillic", "u0434", - "degree", "u00B0", - "dehihebrew", "u05AD", - "dehiragana", "u3067", - "deicoptic", "u03EF", - "dekatakana", "u30C7", - "deleteleft", "u232B", - "deleteright", "u2326", - "delta", "u03B4", - "deltaturned", "u018D", - "denominatorminusonenumeratorbengali", "u09F8", - "dezh", "u02A4", - "dhabengali", "u09A7", - "dhadeva", "u0927", - "dhagujarati", "u0AA7", - "dhagurmukhi", "u0A27", - "dhook", "u0257", - "dialytikatonos", "u0385", - "dialytikatonoscmb", "u0344", - "diamond", "u2666", - "diamondsuitwhite", "u2662", - "dieresis", "u00A8", - "dieresisbelowcmb", "u0324", - "dieresiscmb", "u0308", - "dieresistonos", "u0385", - "dihiragana", "u3062", - "dikatakana", "u30C2", - "dittomark", "u3003", - "divide", "u00F7", - "divides", "u2223", - "divisionslash", "u2215", - "djecyrillic", "u0452", - "dkshade", "u2593", - "dlinebelow", "u1E0F", - "dlsquare", "u3397", - "dmacron", "u0111", - "dmonospace", "uFF44", - "dnblock", "u2584", - "dochadathai", "u0E0E", - "dodekthai", "u0E14", - "dohiragana", "u3069", - "dokatakana", "u30C9", - "dollar", "u0024", - "dollarmonospace", "uFF04", - "dollarsmall", "uFE69", - "dong", "u20AB", - "dorusquare", "u3326", - "dotaccent", "u02D9", - "dotaccentcmb", "u0307", - "dotbelowcmb", "u0323", - "dotbelowcomb", "u0323", - "dotkatakana", "u30FB", - "dotlessi", "u0131", - "dotlessjstrokehook", "u0284", - "dotmath", "u22C5", - "dottedcircle", "u25CC", - "doubleyodpatah", "uFB1F", - "doubleyodpatahhebrew", "uFB1F", - "downtackbelowcmb", "u031E", - "downtackmod", "u02D5", - "dparen", "u249F", - "dtail", "u0256", - "dtopbar", "u018C", - "duhiragana", "u3065", - "dukatakana", "u30C5", - "dz", "u01F3", - "dzaltone", "u02A3", - "dzcaron", "u01C6", - "dzcurl", "u02A5", - "dzeabkhasiancyrillic", "u04E1", - "dzecyrillic", "u0455", - "dzhecyrillic", "u045F", - "e", "u0065", - "eacute", "u00E9", - "earth", "u2641", - "ebengali", "u098F", - "ebopomofo", "u311C", - "ebreve", "u0115", - "ecandradeva", "u090D", - "ecandragujarati", "u0A8D", - "ecandravowelsigndeva", "u0945", - "ecandravowelsigngujarati", "u0AC5", - "ecaron", "u011B", - "ecedillabreve", "u1E1D", - "echarmenian", "u0565", - "echyiwnarmenian", "u0587", - "ecircle", "u24D4", - "ecircumflex", "u00EA", - "ecircumflexacute", "u1EBF", - "ecircumflexbelow", "u1E19", - "ecircumflexdotbelow", "u1EC7", - "ecircumflexgrave", "u1EC1", - "ecircumflexhookabove", "u1EC3", - "ecircumflextilde", "u1EC5", - "ecyrillic", "u0454", - "edblgrave", "u0205", - "edeva", "u090F", - "edieresis", "u00EB", - "edot", "u0117", - "edotaccent", "u0117", - "edotbelow", "u1EB9", - "eegurmukhi", "u0A0F", - "eematragurmukhi", "u0A47", - "efcyrillic", "u0444", - "egrave", "u00E8", - "egujarati", "u0A8F", - "eharmenian", "u0567", - "ehbopomofo", "u311D", - "ehiragana", "u3048", - "ehookabove", "u1EBB", - "eibopomofo", "u311F", - "eight", "u0038", - "eightarabic", "u0668", - "eightbengali", "u09EE", - "eightcircle", "u2467", - "eightcircleinversesansserif", "u2791", - "eightdeva", "u096E", - "eighteencircle", "u2471", - "eighteenparen", "u2485", - "eighteenperiod", "u2499", - "eightgujarati", "u0AEE", - "eightgurmukhi", "u0A6E", - "eighthackarabic", "u0668", - "eighthangzhou", "u3028", - "eighthnotebeamed", "u266B", - "eightideographicparen", "u3227", - "eightinferior", "u2088", - "eightmonospace", "uFF18", - "eightparen", "u247B", - "eightperiod", "u248F", - "eightpersian", "u06F8", - "eightroman", "u2177", - "eightsuperior", "u2078", - "eightthai", "u0E58", - "einvertedbreve", "u0207", - "eiotifiedcyrillic", "u0465", - "ekatakana", "u30A8", - "ekatakanahalfwidth", "uFF74", - "ekonkargurmukhi", "u0A74", - "ekorean", "u3154", - "elcyrillic", "u043B", - "element", "u2208", - "elevencircle", "u246A", - "elevenparen", "u247E", - "elevenperiod", "u2492", - "elevenroman", "u217A", - "ellipsis", "u2026", - "ellipsisvertical", "u22EE", - "emacron", "u0113", - "emacronacute", "u1E17", - "emacrongrave", "u1E15", - "emcyrillic", "u043C", - "emdash", "u2014", - "emdashvertical", "uFE31", - "emonospace", "uFF45", - "emphasismarkarmenian", "u055B", - "emptyset", "u2205", - "enbopomofo", "u3123", - "encyrillic", "u043D", - "endash", "u2013", - "endashvertical", "uFE32", - "endescendercyrillic", "u04A3", - "eng", "u014B", - "engbopomofo", "u3125", - "enghecyrillic", "u04A5", - "enhookcyrillic", "u04C8", - "enspace", "u2002", - "eogonek", "u0119", - "eokorean", "u3153", - "eopen", "u025B", - "eopenclosed", "u029A", - "eopenreversed", "u025C", - "eopenreversedclosed", "u025E", - "eopenreversedhook", "u025D", - "eparen", "u24A0", - "epsilon", "u03B5", - "epsilontonos", "u03AD", - "equal", "u003D", - "equalmonospace", "uFF1D", - "equalsmall", "uFE66", - "equalsuperior", "u207C", - "equivalence", "u2261", - "erbopomofo", "u3126", - "ercyrillic", "u0440", - "ereversed", "u0258", - "ereversedcyrillic", "u044D", - "escyrillic", "u0441", - "esdescendercyrillic", "u04AB", - "esh", "u0283", - "eshcurl", "u0286", - "eshortdeva", "u090E", - "eshortvowelsigndeva", "u0946", - "eshreversedloop", "u01AA", - "eshsquatreversed", "u0285", - "esmallhiragana", "u3047", - "esmallkatakana", "u30A7", - "esmallkatakanahalfwidth", "uFF6A", - "estimated", "u212E", - "eta", "u03B7", - "etarmenian", "u0568", - "etatonos", "u03AE", - "eth", "u00F0", - "etilde", "u1EBD", - "etildebelow", "u1E1B", - "etnahtafoukhhebrew", "u0591", - "etnahtafoukhlefthebrew", "u0591", - "etnahtahebrew", "u0591", - "etnahtalefthebrew", "u0591", - "eturned", "u01DD", - "eukorean", "u3161", - "euro", "u20AC", - "evowelsignbengali", "u09C7", - "evowelsigndeva", "u0947", - "evowelsigngujarati", "u0AC7", - "exclam", "u0021", - "exclamarmenian", "u055C", - "exclamdbl", "u203C", - "exclamdown", "u00A1", - "exclammonospace", "uFF01", - "existential", "u2203", - "ezh", "u0292", - "ezhcaron", "u01EF", - "ezhcurl", "u0293", - "ezhreversed", "u01B9", - "ezhtail", "u01BA", - "f", "u0066", - "fadeva", "u095E", - "fagurmukhi", "u0A5E", - "fahrenheit", "u2109", - "fathaarabic", "u064E", - "fathalowarabic", "u064E", - "fathatanarabic", "u064B", - "fbopomofo", "u3108", - "fcircle", "u24D5", - "fdotaccent", "u1E1F", - "feharabic", "u0641", - "feharmenian", "u0586", - "fehfinalarabic", "uFED2", - "fehinitialarabic", "uFED3", - "fehmedialarabic", "uFED4", - "feicoptic", "u03E5", - "female", "u2640", - "ff", "uFB00", - "ffi", "uFB03", - "ffl", "uFB04", - "fi", "uFB01", - "fifteencircle", "u246E", - "fifteenparen", "u2482", - "fifteenperiod", "u2496", - "figuredash", "u2012", - "filledbox", "u25A0", - "filledrect", "u25AC", - "finalkaf", "u05DA", - "finalkafdagesh", "uFB3A", - "finalkafdageshhebrew", "uFB3A", - "finalkafhebrew", "u05DA", - "finalkafqamats", "u05DA_05B8", - "finalkafqamatshebrew", "u05DA_05B8", - "finalkafsheva", "u05DA_05B0", - "finalkafshevahebrew", "u05DA_05B0", - "finalmem", "u05DD", - "finalmemhebrew", "u05DD", - "finalnun", "u05DF", - "finalnunhebrew", "u05DF", - "finalpe", "u05E3", - "finalpehebrew", "u05E3", - "finaltsadi", "u05E5", - "finaltsadihebrew", "u05E5", - "firsttonechinese", "u02C9", - "fisheye", "u25C9", - "fitacyrillic", "u0473", - "five", "u0035", - "fivearabic", "u0665", - "fivebengali", "u09EB", - "fivecircle", "u2464", - "fivecircleinversesansserif", "u278E", - "fivedeva", "u096B", - "fiveeighths", "u215D", - "fivegujarati", "u0AEB", - "fivegurmukhi", "u0A6B", - "fivehackarabic", "u0665", - "fivehangzhou", "u3025", - "fiveideographicparen", "u3224", - "fiveinferior", "u2085", - "fivemonospace", "uFF15", - "fiveparen", "u2478", - "fiveperiod", "u248C", - "fivepersian", "u06F5", - "fiveroman", "u2174", - "fivesuperior", "u2075", - "fivethai", "u0E55", - "fl", "uFB02", - "florin", "u0192", - "fmonospace", "uFF46", - "fmsquare", "u3399", - "fofanthai", "u0E1F", - "fofathai", "u0E1D", - "fongmanthai", "u0E4F", - "forall", "u2200", - "four", "u0034", - "fourarabic", "u0664", - "fourbengali", "u09EA", - "fourcircle", "u2463", - "fourcircleinversesansserif", "u278D", - "fourdeva", "u096A", - "fourgujarati", "u0AEA", - "fourgurmukhi", "u0A6A", - "fourhackarabic", "u0664", - "fourhangzhou", "u3024", - "fourideographicparen", "u3223", - "fourinferior", "u2084", - "fourmonospace", "uFF14", - "fournumeratorbengali", "u09F7", - "fourparen", "u2477", - "fourperiod", "u248B", - "fourpersian", "u06F4", - "fourroman", "u2173", - "foursuperior", "u2074", - "fourteencircle", "u246D", - "fourteenparen", "u2481", - "fourteenperiod", "u2495", - "fourthai", "u0E54", - "fourthtonechinese", "u02CB", - "fparen", "u24A1", - "fraction", "u2044", - "franc", "u20A3", - "g", "u0067", - "gabengali", "u0997", - "gacute", "u01F5", - "gadeva", "u0917", - "gafarabic", "u06AF", - "gaffinalarabic", "uFB93", - "gafinitialarabic", "uFB94", - "gafmedialarabic", "uFB95", - "gagujarati", "u0A97", - "gagurmukhi", "u0A17", - "gahiragana", "u304C", - "gakatakana", "u30AC", - "gamma", "u03B3", - "gammalatinsmall", "u0263", - "gammasuperior", "u02E0", - "gangiacoptic", "u03EB", - "gbopomofo", "u310D", - "gbreve", "u011F", - "gcaron", "u01E7", - "gcedilla", "u0123", - "gcircle", "u24D6", - "gcircumflex", "u011D", - "gcommaaccent", "u0123", - "gdot", "u0121", - "gdotaccent", "u0121", - "gecyrillic", "u0433", - "gehiragana", "u3052", - "gekatakana", "u30B2", - "geometricallyequal", "u2251", - "gereshaccenthebrew", "u059C", - "gereshhebrew", "u05F3", - "gereshmuqdamhebrew", "u059D", - "germandbls", "u00DF", - "gershayimaccenthebrew", "u059E", - "gershayimhebrew", "u05F4", - "getamark", "u3013", - "ghabengali", "u0998", - "ghadarmenian", "u0572", - "ghadeva", "u0918", - "ghagujarati", "u0A98", - "ghagurmukhi", "u0A18", - "ghainarabic", "u063A", - "ghainfinalarabic", "uFECE", - "ghaininitialarabic", "uFECF", - "ghainmedialarabic", "uFED0", - "ghemiddlehookcyrillic", "u0495", - "ghestrokecyrillic", "u0493", - "gheupturncyrillic", "u0491", - "ghhadeva", "u095A", - "ghhagurmukhi", "u0A5A", - "ghook", "u0260", - "ghzsquare", "u3393", - "gihiragana", "u304E", - "gikatakana", "u30AE", - "gimarmenian", "u0563", - "gimel", "u05D2", - "gimeldagesh", "uFB32", - "gimeldageshhebrew", "uFB32", - "gimelhebrew", "u05D2", - "gjecyrillic", "u0453", - "glottalinvertedstroke", "u01BE", - "glottalstop", "u0294", - "glottalstopinverted", "u0296", - "glottalstopmod", "u02C0", - "glottalstopreversed", "u0295", - "glottalstopreversedmod", "u02C1", - "glottalstopreversedsuperior", "u02E4", - "glottalstopstroke", "u02A1", - "glottalstopstrokereversed", "u02A2", - "gmacron", "u1E21", - "gmonospace", "uFF47", - "gohiragana", "u3054", - "gokatakana", "u30B4", - "gparen", "u24A2", - "gpasquare", "u33AC", - "gradient", "u2207", - "grave", "u0060", - "gravebelowcmb", "u0316", - "gravecmb", "u0300", - "gravecomb", "u0300", - "gravedeva", "u0953", - "gravelowmod", "u02CE", - "gravemonospace", "uFF40", - "gravetonecmb", "u0340", - "greater", "u003E", - "greaterequal", "u2265", - "greaterequalorless", "u22DB", - "greatermonospace", "uFF1E", - "greaterorequivalent", "u2273", - "greaterorless", "u2277", - "greateroverequal", "u2267", - "greatersmall", "uFE65", - "gscript", "u0261", - "gstroke", "u01E5", - "guhiragana", "u3050", - "guillemotleft", "u00AB", - "guillemotright", "u00BB", - "guilsinglleft", "u2039", - "guilsinglright", "u203A", - "gukatakana", "u30B0", - "guramusquare", "u3318", - "gysquare", "u33C9", - "h", "u0068", - "haabkhasiancyrillic", "u04A9", - "haaltonearabic", "u06C1", - "habengali", "u09B9", - "hadescendercyrillic", "u04B3", - "hadeva", "u0939", - "hagujarati", "u0AB9", - "hagurmukhi", "u0A39", - "haharabic", "u062D", - "hahfinalarabic", "uFEA2", - "hahinitialarabic", "uFEA3", - "hahiragana", "u306F", - "hahmedialarabic", "uFEA4", - "haitusquare", "u332A", - "hakatakana", "u30CF", - "hakatakanahalfwidth", "uFF8A", - "halantgurmukhi", "u0A4D", - "hamzaarabic", "u0621", - "hamzadammaarabic", "u0621_064F", - "hamzadammatanarabic", "u0621_064C", - "hamzafathaarabic", "u0621_064E", - "hamzafathatanarabic", "u0621_064B", - "hamzalowarabic", "u0621", - "hamzalowkasraarabic", "u0621_0650", - "hamzalowkasratanarabic", "u0621_064D", - "hamzasukunarabic", "u0621_0652", - "hangulfiller", "u3164", - "hardsigncyrillic", "u044A", - "harpoonleftbarbup", "u21BC", - "harpoonrightbarbup", "u21C0", - "hasquare", "u33CA", - "hatafpatah", "u05B2", - "hatafpatah16", "u05B2", - "hatafpatah23", "u05B2", - "hatafpatah2f", "u05B2", - "hatafpatahhebrew", "u05B2", - "hatafpatahnarrowhebrew", "u05B2", - "hatafpatahquarterhebrew", "u05B2", - "hatafpatahwidehebrew", "u05B2", - "hatafqamats", "u05B3", - "hatafqamats1b", "u05B3", - "hatafqamats28", "u05B3", - "hatafqamats34", "u05B3", - "hatafqamatshebrew", "u05B3", - "hatafqamatsnarrowhebrew", "u05B3", - "hatafqamatsquarterhebrew", "u05B3", - "hatafqamatswidehebrew", "u05B3", - "hatafsegol", "u05B1", - "hatafsegol17", "u05B1", - "hatafsegol24", "u05B1", - "hatafsegol30", "u05B1", - "hatafsegolhebrew", "u05B1", - "hatafsegolnarrowhebrew", "u05B1", - "hatafsegolquarterhebrew", "u05B1", - "hatafsegolwidehebrew", "u05B1", - "hbar", "u0127", - "hbopomofo", "u310F", - "hbrevebelow", "u1E2B", - "hcedilla", "u1E29", - "hcircle", "u24D7", - "hcircumflex", "u0125", - "hdieresis", "u1E27", - "hdotaccent", "u1E23", - "hdotbelow", "u1E25", - "he", "u05D4", - "heart", "u2665", - "heartsuitblack", "u2665", - "heartsuitwhite", "u2661", - "hedagesh", "uFB34", - "hedageshhebrew", "uFB34", - "hehaltonearabic", "u06C1", - "heharabic", "u0647", - "hehebrew", "u05D4", - "hehfinalaltonearabic", "uFBA7", - "hehfinalalttwoarabic", "uFEEA", - "hehfinalarabic", "uFEEA", - "hehhamzaabovefinalarabic", "uFBA5", - "hehhamzaaboveisolatedarabic", "uFBA4", - "hehinitialaltonearabic", "uFBA8", - "hehinitialarabic", "uFEEB", - "hehiragana", "u3078", - "hehmedialaltonearabic", "uFBA9", - "hehmedialarabic", "uFEEC", - "heiseierasquare", "u337B", - "hekatakana", "u30D8", - "hekatakanahalfwidth", "uFF8D", - "hekutaarusquare", "u3336", - "henghook", "u0267", - "herutusquare", "u3339", - "het", "u05D7", - "hethebrew", "u05D7", - "hhook", "u0266", - "hhooksuperior", "u02B1", - "hieuhacirclekorean", "u327B", - "hieuhaparenkorean", "u321B", - "hieuhcirclekorean", "u326D", - "hieuhkorean", "u314E", - "hieuhparenkorean", "u320D", - "hihiragana", "u3072", - "hikatakana", "u30D2", - "hikatakanahalfwidth", "uFF8B", - "hiriq", "u05B4", - "hiriq14", "u05B4", - "hiriq21", "u05B4", - "hiriq2d", "u05B4", - "hiriqhebrew", "u05B4", - "hiriqnarrowhebrew", "u05B4", - "hiriqquarterhebrew", "u05B4", - "hiriqwidehebrew", "u05B4", - "hlinebelow", "u1E96", - "hmonospace", "uFF48", - "hoarmenian", "u0570", - "hohipthai", "u0E2B", - "hohiragana", "u307B", - "hokatakana", "u30DB", - "hokatakanahalfwidth", "uFF8E", - "holam", "u05B9", - "holam19", "u05B9", - "holam26", "u05B9", - "holam32", "u05B9", - "holamhebrew", "u05B9", - "holamnarrowhebrew", "u05B9", - "holamquarterhebrew", "u05B9", - "holamwidehebrew", "u05B9", - "honokhukthai", "u0E2E", - "hookabovecomb", "u0309", - "hookcmb", "u0309", - "hookpalatalizedbelowcmb", "u0321", - "hookretroflexbelowcmb", "u0322", - "hoonsquare", "u3342", - "horicoptic", "u03E9", - "horizontalbar", "u2015", - "horncmb", "u031B", - "hotsprings", "u2668", - "house", "u2302", - "hparen", "u24A3", - "hsuperior", "u02B0", - "hturned", "u0265", - "huhiragana", "u3075", - "huiitosquare", "u3333", - "hukatakana", "u30D5", - "hukatakanahalfwidth", "uFF8C", - "hungarumlaut", "u02DD", - "hungarumlautcmb", "u030B", - "hv", "u0195", - "hyphen", "u002D", - "hyphenmonospace", "uFF0D", - "hyphensmall", "uFE63", - "hyphentwo", "u2010", - "i", "u0069", - "iacute", "u00ED", - "iacyrillic", "u044F", - "ibengali", "u0987", - "ibopomofo", "u3127", - "ibreve", "u012D", - "icaron", "u01D0", - "icircle", "u24D8", - "icircumflex", "u00EE", - "icyrillic", "u0456", - "idblgrave", "u0209", - "ideographearthcircle", "u328F", - "ideographfirecircle", "u328B", - "ideographicallianceparen", "u323F", - "ideographiccallparen", "u323A", - "ideographiccentrecircle", "u32A5", - "ideographicclose", "u3006", - "ideographiccomma", "u3001", - "ideographiccommaleft", "uFF64", - "ideographiccongratulationparen", "u3237", - "ideographiccorrectcircle", "u32A3", - "ideographicearthparen", "u322F", - "ideographicenterpriseparen", "u323D", - "ideographicexcellentcircle", "u329D", - "ideographicfestivalparen", "u3240", - "ideographicfinancialcircle", "u3296", - "ideographicfinancialparen", "u3236", - "ideographicfireparen", "u322B", - "ideographichaveparen", "u3232", - "ideographichighcircle", "u32A4", - "ideographiciterationmark", "u3005", - "ideographiclaborcircle", "u3298", - "ideographiclaborparen", "u3238", - "ideographicleftcircle", "u32A7", - "ideographiclowcircle", "u32A6", - "ideographicmedicinecircle", "u32A9", - "ideographicmetalparen", "u322E", - "ideographicmoonparen", "u322A", - "ideographicnameparen", "u3234", - "ideographicperiod", "u3002", - "ideographicprintcircle", "u329E", - "ideographicreachparen", "u3243", - "ideographicrepresentparen", "u3239", - "ideographicresourceparen", "u323E", - "ideographicrightcircle", "u32A8", - "ideographicsecretcircle", "u3299", - "ideographicselfparen", "u3242", - "ideographicsocietyparen", "u3233", - "ideographicspace", "u3000", - "ideographicspecialparen", "u3235", - "ideographicstockparen", "u3231", - "ideographicstudyparen", "u323B", - "ideographicsunparen", "u3230", - "ideographicsuperviseparen", "u323C", - "ideographicwaterparen", "u322C", - "ideographicwoodparen", "u322D", - "ideographiczero", "u3007", - "ideographmetalcircle", "u328E", - "ideographmooncircle", "u328A", - "ideographnamecircle", "u3294", - "ideographsuncircle", "u3290", - "ideographwatercircle", "u328C", - "ideographwoodcircle", "u328D", - "ideva", "u0907", - "idieresis", "u00EF", - "idieresisacute", "u1E2F", - "idieresiscyrillic", "u04E5", - "idotbelow", "u1ECB", - "iebrevecyrillic", "u04D7", - "iecyrillic", "u0435", - "ieungacirclekorean", "u3275", - "ieungaparenkorean", "u3215", - "ieungcirclekorean", "u3267", - "ieungkorean", "u3147", - "ieungparenkorean", "u3207", - "igrave", "u00EC", - "igujarati", "u0A87", - "igurmukhi", "u0A07", - "ihiragana", "u3044", - "ihookabove", "u1EC9", - "iibengali", "u0988", - "iicyrillic", "u0438", - "iideva", "u0908", - "iigujarati", "u0A88", - "iigurmukhi", "u0A08", - "iimatragurmukhi", "u0A40", - "iinvertedbreve", "u020B", - "iishortcyrillic", "u0439", - "iivowelsignbengali", "u09C0", - "iivowelsigndeva", "u0940", - "iivowelsigngujarati", "u0AC0", - "ij", "u0133", - "ikatakana", "u30A4", - "ikatakanahalfwidth", "uFF72", - "ikorean", "u3163", - "ilde", "u02DC", - "iluyhebrew", "u05AC", - "imacron", "u012B", - "imacroncyrillic", "u04E3", - "imageorapproximatelyequal", "u2253", - "imatragurmukhi", "u0A3F", - "imonospace", "uFF49", - "increment", "u2206", - "infinity", "u221E", - "iniarmenian", "u056B", - "integral", "u222B", - "integralbottom", "u2321", - "integralbt", "u2321", - "integraltop", "u2320", - "integraltp", "u2320", - "intersection", "u2229", - "intisquare", "u3305", - "invbullet", "u25D8", - "invcircle", "u25D9", - "invsmileface", "u263B", - "iocyrillic", "u0451", - "iogonek", "u012F", - "iota", "u03B9", - "iotadieresis", "u03CA", - "iotadieresistonos", "u0390", - "iotalatin", "u0269", - "iotatonos", "u03AF", - "iparen", "u24A4", - "irigurmukhi", "u0A72", - "ismallhiragana", "u3043", - "ismallkatakana", "u30A3", - "ismallkatakanahalfwidth", "uFF68", - "issharbengali", "u09FA", - "istroke", "u0268", - "iterationhiragana", "u309D", - "iterationkatakana", "u30FD", - "itilde", "u0129", - "itildebelow", "u1E2D", - "iubopomofo", "u3129", - "iucyrillic", "u044E", - "ivowelsignbengali", "u09BF", - "ivowelsigndeva", "u093F", - "ivowelsigngujarati", "u0ABF", - "izhitsacyrillic", "u0475", - "izhitsadblgravecyrillic", "u0477", - "j", "u006A", - "jaarmenian", "u0571", - "jabengali", "u099C", - "jadeva", "u091C", - "jagujarati", "u0A9C", - "jagurmukhi", "u0A1C", - "jbopomofo", "u3110", - "jcaron", "u01F0", - "jcircle", "u24D9", - "jcircumflex", "u0135", - "jcrossedtail", "u029D", - "jdotlessstroke", "u025F", - "jecyrillic", "u0458", - "jeemarabic", "u062C", - "jeemfinalarabic", "uFE9E", - "jeeminitialarabic", "uFE9F", - "jeemmedialarabic", "uFEA0", - "jeharabic", "u0698", - "jehfinalarabic", "uFB8B", - "jhabengali", "u099D", - "jhadeva", "u091D", - "jhagujarati", "u0A9D", - "jhagurmukhi", "u0A1D", - "jheharmenian", "u057B", - "jis", "u3004", - "jmonospace", "uFF4A", - "jparen", "u24A5", - "jsuperior", "u02B2", - "k", "u006B", - "kabashkircyrillic", "u04A1", - "kabengali", "u0995", - "kacute", "u1E31", - "kacyrillic", "u043A", - "kadescendercyrillic", "u049B", - "kadeva", "u0915", - "kaf", "u05DB", - "kafarabic", "u0643", - "kafdagesh", "uFB3B", - "kafdageshhebrew", "uFB3B", - "kaffinalarabic", "uFEDA", - "kafhebrew", "u05DB", - "kafinitialarabic", "uFEDB", - "kafmedialarabic", "uFEDC", - "kafrafehebrew", "uFB4D", - "kagujarati", "u0A95", - "kagurmukhi", "u0A15", - "kahiragana", "u304B", - "kahookcyrillic", "u04C4", - "kakatakana", "u30AB", - "kakatakanahalfwidth", "uFF76", - "kappa", "u03BA", - "kappasymbolgreek", "u03F0", - "kapyeounmieumkorean", "u3171", - "kapyeounphieuphkorean", "u3184", - "kapyeounpieupkorean", "u3178", - "kapyeounssangpieupkorean", "u3179", - "karoriisquare", "u330D", - "kashidaautoarabic", "u0640", - "kashidaautonosidebearingarabic", "u0640", - "kasmallkatakana", "u30F5", - "kasquare", "u3384", - "kasraarabic", "u0650", - "kasratanarabic", "u064D", - "kastrokecyrillic", "u049F", - "katahiraprolongmarkhalfwidth", "uFF70", - "kaverticalstrokecyrillic", "u049D", - "kbopomofo", "u310E", - "kcalsquare", "u3389", - "kcaron", "u01E9", - "kcedilla", "u0137", - "kcircle", "u24DA", - "kcommaaccent", "u0137", - "kdotbelow", "u1E33", - "keharmenian", "u0584", - "kehiragana", "u3051", - "kekatakana", "u30B1", - "kekatakanahalfwidth", "uFF79", - "kenarmenian", "u056F", - "kesmallkatakana", "u30F6", - "kgreenlandic", "u0138", - "khabengali", "u0996", - "khacyrillic", "u0445", - "khadeva", "u0916", - "khagujarati", "u0A96", - "khagurmukhi", "u0A16", - "khaharabic", "u062E", - "khahfinalarabic", "uFEA6", - "khahinitialarabic", "uFEA7", - "khahmedialarabic", "uFEA8", - "kheicoptic", "u03E7", - "khhadeva", "u0959", - "khhagurmukhi", "u0A59", - "khieukhacirclekorean", "u3278", - "khieukhaparenkorean", "u3218", - "khieukhcirclekorean", "u326A", - "khieukhkorean", "u314B", - "khieukhparenkorean", "u320A", - "khokhaithai", "u0E02", - "khokhonthai", "u0E05", - "khokhuatthai", "u0E03", - "khokhwaithai", "u0E04", - "khomutthai", "u0E5B", - "khook", "u0199", - "khorakhangthai", "u0E06", - "khzsquare", "u3391", - "kihiragana", "u304D", - "kikatakana", "u30AD", - "kikatakanahalfwidth", "uFF77", - "kiroguramusquare", "u3315", - "kiromeetorusquare", "u3316", - "kirosquare", "u3314", - "kiyeokacirclekorean", "u326E", - "kiyeokaparenkorean", "u320E", - "kiyeokcirclekorean", "u3260", - "kiyeokkorean", "u3131", - "kiyeokparenkorean", "u3200", - "kiyeoksioskorean", "u3133", - "kjecyrillic", "u045C", - "klinebelow", "u1E35", - "klsquare", "u3398", - "kmcubedsquare", "u33A6", - "kmonospace", "uFF4B", - "kmsquaredsquare", "u33A2", - "kohiragana", "u3053", - "kohmsquare", "u33C0", - "kokaithai", "u0E01", - "kokatakana", "u30B3", - "kokatakanahalfwidth", "uFF7A", - "kooposquare", "u331E", - "koppacyrillic", "u0481", - "koreanstandardsymbol", "u327F", - "koroniscmb", "u0343", - "kparen", "u24A6", - "kpasquare", "u33AA", - "ksicyrillic", "u046F", - "ktsquare", "u33CF", - "kturned", "u029E", - "kuhiragana", "u304F", - "kukatakana", "u30AF", - "kukatakanahalfwidth", "uFF78", - "kvsquare", "u33B8", - "kwsquare", "u33BE", - "l", "u006C", - "labengali", "u09B2", - "lacute", "u013A", - "ladeva", "u0932", - "lagujarati", "u0AB2", - "lagurmukhi", "u0A32", - "lakkhangyaothai", "u0E45", - "lamaleffinalarabic", "uFEFC", - "lamalefhamzaabovefinalarabic", "uFEF8", - "lamalefhamzaaboveisolatedarabic", "uFEF7", - "lamalefhamzabelowfinalarabic", "uFEFA", - "lamalefhamzabelowisolatedarabic", "uFEF9", - "lamalefisolatedarabic", "uFEFB", - "lamalefmaddaabovefinalarabic", "uFEF6", - "lamalefmaddaaboveisolatedarabic", "uFEF5", - "lamarabic", "u0644", - "lambda", "u03BB", - "lambdastroke", "u019B", - "lamed", "u05DC", - "lameddagesh", "uFB3C", - "lameddageshhebrew", "uFB3C", - "lamedhebrew", "u05DC", - "lamedholam", "u05DC_05B9", - "lamedholamdagesh", "u05DC_05B9_05BC", - "lamedholamdageshhebrew", "u05DC_05B9_05BC", - "lamedholamhebrew", "u05DC_05B9", - "lamfinalarabic", "uFEDE", - "lamhahinitialarabic", "uFCCA", - "laminitialarabic", "uFEDF", - "lamjeeminitialarabic", "uFCC9", - "lamkhahinitialarabic", "uFCCB", - "lamlamhehisolatedarabic", "uFDF2", - "lammedialarabic", "uFEE0", - "lammeemhahinitialarabic", "uFD88", - "lammeeminitialarabic", "uFCCC", - "lammeemjeeminitialarabic", "uFEDF_FEE4_FEA0", - "lammeemkhahinitialarabic", "uFEDF_FEE4_FEA8", - "largecircle", "u25EF", - "lbar", "u019A", - "lbelt", "u026C", - "lbopomofo", "u310C", - "lcaron", "u013E", - "lcedilla", "u013C", - "lcircle", "u24DB", - "lcircumflexbelow", "u1E3D", - "lcommaaccent", "u013C", - "ldot", "u0140", - "ldotaccent", "u0140", - "ldotbelow", "u1E37", - "ldotbelowmacron", "u1E39", - "leftangleabovecmb", "u031A", - "lefttackbelowcmb", "u0318", - "less", "u003C", - "lessequal", "u2264", - "lessequalorgreater", "u22DA", - "lessmonospace", "uFF1C", - "lessorequivalent", "u2272", - "lessorgreater", "u2276", - "lessoverequal", "u2266", - "lesssmall", "uFE64", - "lezh", "u026E", - "lfblock", "u258C", - "lhookretroflex", "u026D", - "lira", "u20A4", - "liwnarmenian", "u056C", - "lj", "u01C9", - "ljecyrillic", "u0459", - "lladeva", "u0933", - "llagujarati", "u0AB3", - "llinebelow", "u1E3B", - "llladeva", "u0934", - "llvocalicbengali", "u09E1", - "llvocalicdeva", "u0961", - "llvocalicvowelsignbengali", "u09E3", - "llvocalicvowelsigndeva", "u0963", - "lmiddletilde", "u026B", - "lmonospace", "uFF4C", - "lmsquare", "u33D0", - "lochulathai", "u0E2C", - "logicaland", "u2227", - "logicalnot", "u00AC", - "logicalnotreversed", "u2310", - "logicalor", "u2228", - "lolingthai", "u0E25", - "longs", "u017F", - "lowlinecenterline", "uFE4E", - "lowlinecmb", "u0332", - "lowlinedashed", "uFE4D", - "lozenge", "u25CA", - "lparen", "u24A7", - "lslash", "u0142", - "lsquare", "u2113", - "ltshade", "u2591", - "luthai", "u0E26", - "lvocalicbengali", "u098C", - "lvocalicdeva", "u090C", - "lvocalicvowelsignbengali", "u09E2", - "lvocalicvowelsigndeva", "u0962", - "lxsquare", "u33D3", - "m", "u006D", - "mabengali", "u09AE", - "macron", "u00AF", - "macronbelowcmb", "u0331", - "macroncmb", "u0304", - "macronlowmod", "u02CD", - "macronmonospace", "uFFE3", - "macute", "u1E3F", - "madeva", "u092E", - "magujarati", "u0AAE", - "magurmukhi", "u0A2E", - "mahapakhhebrew", "u05A4", - "mahapakhlefthebrew", "u05A4", - "mahiragana", "u307E", - "maichattawathai", "u0E4B", - "maiekthai", "u0E48", - "maihanakatthai", "u0E31", - "maitaikhuthai", "u0E47", - "maithothai", "u0E49", - "maitrithai", "u0E4A", - "maiyamokthai", "u0E46", - "makatakana", "u30DE", - "makatakanahalfwidth", "uFF8F", - "male", "u2642", - "mansyonsquare", "u3347", - "maqafhebrew", "u05BE", - "mars", "u2642", - "masoracirclehebrew", "u05AF", - "masquare", "u3383", - "mbopomofo", "u3107", - "mbsquare", "u33D4", - "mcircle", "u24DC", - "mcubedsquare", "u33A5", - "mdotaccent", "u1E41", - "mdotbelow", "u1E43", - "meemarabic", "u0645", - "meemfinalarabic", "uFEE2", - "meeminitialarabic", "uFEE3", - "meemmedialarabic", "uFEE4", - "meemmeeminitialarabic", "uFCD1", - "meemmeemisolatedarabic", "uFC48", - "meetorusquare", "u334D", - "mehiragana", "u3081", - "meizierasquare", "u337E", - "mekatakana", "u30E1", - "mekatakanahalfwidth", "uFF92", - "mem", "u05DE", - "memdagesh", "uFB3E", - "memdageshhebrew", "uFB3E", - "memhebrew", "u05DE", - "menarmenian", "u0574", - "merkhahebrew", "u05A5", - "merkhakefulahebrew", "u05A6", - "merkhakefulalefthebrew", "u05A6", - "merkhalefthebrew", "u05A5", - "mhook", "u0271", - "mhzsquare", "u3392", - "middledotkatakanahalfwidth", "uFF65", - "middot", "u00B7", - "mieumacirclekorean", "u3272", - "mieumaparenkorean", "u3212", - "mieumcirclekorean", "u3264", - "mieumkorean", "u3141", - "mieumpansioskorean", "u3170", - "mieumparenkorean", "u3204", - "mieumpieupkorean", "u316E", - "mieumsioskorean", "u316F", - "mihiragana", "u307F", - "mikatakana", "u30DF", - "mikatakanahalfwidth", "uFF90", - "minus", "u2212", - "minusbelowcmb", "u0320", - "minuscircle", "u2296", - "minusmod", "u02D7", - "minusplus", "u2213", - "minute", "u2032", - "miribaarusquare", "u334A", - "mirisquare", "u3349", - "mlonglegturned", "u0270", - "mlsquare", "u3396", - "mmcubedsquare", "u33A3", - "mmonospace", "uFF4D", - "mmsquaredsquare", "u339F", - "mohiragana", "u3082", - "mohmsquare", "u33C1", - "mokatakana", "u30E2", - "mokatakanahalfwidth", "uFF93", - "molsquare", "u33D6", - "momathai", "u0E21", - "moverssquare", "u33A7", - "moverssquaredsquare", "u33A8", - "mparen", "u24A8", - "mpasquare", "u33AB", - "mssquare", "u33B3", - "mturned", "u026F", - "mu", "u00B5", - "mu1", "u00B5", - "muasquare", "u3382", - "muchgreater", "u226B", - "muchless", "u226A", - "mufsquare", "u338C", - "mugreek", "u03BC", - "mugsquare", "u338D", - "muhiragana", "u3080", - "mukatakana", "u30E0", - "mukatakanahalfwidth", "uFF91", - "mulsquare", "u3395", - "multiply", "u00D7", - "mumsquare", "u339B", - "munahhebrew", "u05A3", - "munahlefthebrew", "u05A3", - "musicalnote", "u266A", - "musicalnotedbl", "u266B", - "musicflatsign", "u266D", - "musicsharpsign", "u266F", - "mussquare", "u33B2", - "muvsquare", "u33B6", - "muwsquare", "u33BC", - "mvmegasquare", "u33B9", - "mvsquare", "u33B7", - "mwmegasquare", "u33BF", - "mwsquare", "u33BD", - "n", "u006E", - "nabengali", "u09A8", - "nabla", "u2207", - "nacute", "u0144", - "nadeva", "u0928", - "nagujarati", "u0AA8", - "nagurmukhi", "u0A28", - "nahiragana", "u306A", - "nakatakana", "u30CA", - "nakatakanahalfwidth", "uFF85", - "napostrophe", "u0149", - "nasquare", "u3381", - "nbopomofo", "u310B", - "nbspace", "u00A0", - "ncaron", "u0148", - "ncedilla", "u0146", - "ncircle", "u24DD", - "ncircumflexbelow", "u1E4B", - "ncommaaccent", "u0146", - "ndotaccent", "u1E45", - "ndotbelow", "u1E47", - "nehiragana", "u306D", - "nekatakana", "u30CD", - "nekatakanahalfwidth", "uFF88", - "newsheqelsign", "u20AA", - "nfsquare", "u338B", - "ngabengali", "u0999", - "ngadeva", "u0919", - "ngagujarati", "u0A99", - "ngagurmukhi", "u0A19", - "ngonguthai", "u0E07", - "nhiragana", "u3093", - "nhookleft", "u0272", - "nhookretroflex", "u0273", - "nieunacirclekorean", "u326F", - "nieunaparenkorean", "u320F", - "nieuncieuckorean", "u3135", - "nieuncirclekorean", "u3261", - "nieunhieuhkorean", "u3136", - "nieunkorean", "u3134", - "nieunpansioskorean", "u3168", - "nieunparenkorean", "u3201", - "nieunsioskorean", "u3167", - "nieuntikeutkorean", "u3166", - "nihiragana", "u306B", - "nikatakana", "u30CB", - "nikatakanahalfwidth", "uFF86", - "nikhahitthai", "u0E4D", - "nine", "u0039", - "ninearabic", "u0669", - "ninebengali", "u09EF", - "ninecircle", "u2468", - "ninecircleinversesansserif", "u2792", - "ninedeva", "u096F", - "ninegujarati", "u0AEF", - "ninegurmukhi", "u0A6F", - "ninehackarabic", "u0669", - "ninehangzhou", "u3029", - "nineideographicparen", "u3228", - "nineinferior", "u2089", - "ninemonospace", "uFF19", - "nineparen", "u247C", - "nineperiod", "u2490", - "ninepersian", "u06F9", - "nineroman", "u2178", - "ninesuperior", "u2079", - "nineteencircle", "u2472", - "nineteenparen", "u2486", - "nineteenperiod", "u249A", - "ninethai", "u0E59", - "nj", "u01CC", - "njecyrillic", "u045A", - "nkatakana", "u30F3", - "nkatakanahalfwidth", "uFF9D", - "nlegrightlong", "u019E", - "nlinebelow", "u1E49", - "nmonospace", "uFF4E", - "nmsquare", "u339A", - "nnabengali", "u09A3", - "nnadeva", "u0923", - "nnagujarati", "u0AA3", - "nnagurmukhi", "u0A23", - "nnnadeva", "u0929", - "nohiragana", "u306E", - "nokatakana", "u30CE", - "nokatakanahalfwidth", "uFF89", - "nonbreakingspace", "u00A0", - "nonenthai", "u0E13", - "nonuthai", "u0E19", - "noonarabic", "u0646", - "noonfinalarabic", "uFEE6", - "noonghunnaarabic", "u06BA", - "noonghunnafinalarabic", "uFB9F", - "noonhehinitialarabic", "uFEE7_FEEC", - "nooninitialarabic", "uFEE7", - "noonjeeminitialarabic", "uFCD2", - "noonjeemisolatedarabic", "uFC4B", - "noonmedialarabic", "uFEE8", - "noonmeeminitialarabic", "uFCD5", - "noonmeemisolatedarabic", "uFC4E", - "noonnoonfinalarabic", "uFC8D", - "notcontains", "u220C", - "notelement", "u2209", - "notelementof", "u2209", - "notequal", "u2260", - "notgreater", "u226F", - "notgreaternorequal", "u2271", - "notgreaternorless", "u2279", - "notidentical", "u2262", - "notless", "u226E", - "notlessnorequal", "u2270", - "notparallel", "u2226", - "notprecedes", "u2280", - "notsubset", "u2284", - "notsucceeds", "u2281", - "notsuperset", "u2285", - "nowarmenian", "u0576", - "nparen", "u24A9", - "nssquare", "u33B1", - "nsuperior", "u207F", - "ntilde", "u00F1", - "nu", "u03BD", - "nuhiragana", "u306C", - "nukatakana", "u30CC", - "nukatakanahalfwidth", "uFF87", - "nuktabengali", "u09BC", - "nuktadeva", "u093C", - "nuktagujarati", "u0ABC", - "nuktagurmukhi", "u0A3C", - "numbersign", "u0023", - "numbersignmonospace", "uFF03", - "numbersignsmall", "uFE5F", - "numeralsigngreek", "u0374", - "numeralsignlowergreek", "u0375", - "numero", "u2116", - "nun", "u05E0", - "nundagesh", "uFB40", - "nundageshhebrew", "uFB40", - "nunhebrew", "u05E0", - "nvsquare", "u33B5", - "nwsquare", "u33BB", - "nyabengali", "u099E", - "nyadeva", "u091E", - "nyagujarati", "u0A9E", - "nyagurmukhi", "u0A1E", - "o", "u006F", - "oacute", "u00F3", - "oangthai", "u0E2D", - "obarred", "u0275", - "obarredcyrillic", "u04E9", - "obarreddieresiscyrillic", "u04EB", - "obengali", "u0993", - "obopomofo", "u311B", - "obreve", "u014F", - "ocandradeva", "u0911", - "ocandragujarati", "u0A91", - "ocandravowelsigndeva", "u0949", - "ocandravowelsigngujarati", "u0AC9", - "ocaron", "u01D2", - "ocircle", "u24DE", - "ocircumflex", "u00F4", - "ocircumflexacute", "u1ED1", - "ocircumflexdotbelow", "u1ED9", - "ocircumflexgrave", "u1ED3", - "ocircumflexhookabove", "u1ED5", - "ocircumflextilde", "u1ED7", - "ocyrillic", "u043E", - "odblacute", "u0151", - "odblgrave", "u020D", - "odeva", "u0913", - "odieresis", "u00F6", - "odieresiscyrillic", "u04E7", - "odotbelow", "u1ECD", - "oe", "u0153", - "oekorean", "u315A", - "ogonek", "u02DB", - "ogonekcmb", "u0328", - "ograve", "u00F2", - "ogujarati", "u0A93", - "oharmenian", "u0585", - "ohiragana", "u304A", - "ohookabove", "u1ECF", - "ohorn", "u01A1", - "ohornacute", "u1EDB", - "ohorndotbelow", "u1EE3", - "ohorngrave", "u1EDD", - "ohornhookabove", "u1EDF", - "ohorntilde", "u1EE1", - "ohungarumlaut", "u0151", - "oi", "u01A3", - "oinvertedbreve", "u020F", - "okatakana", "u30AA", - "okatakanahalfwidth", "uFF75", - "okorean", "u3157", - "olehebrew", "u05AB", - "omacron", "u014D", - "omacronacute", "u1E53", - "omacrongrave", "u1E51", - "omdeva", "u0950", - "omega", "u03C9", - "omega1", "u03D6", - "omegacyrillic", "u0461", - "omegalatinclosed", "u0277", - "omegaroundcyrillic", "u047B", - "omegatitlocyrillic", "u047D", - "omegatonos", "u03CE", - "omgujarati", "u0AD0", - "omicron", "u03BF", - "omicrontonos", "u03CC", - "omonospace", "uFF4F", - "one", "u0031", - "onearabic", "u0661", - "onebengali", "u09E7", - "onecircle", "u2460", - "onecircleinversesansserif", "u278A", - "onedeva", "u0967", - "onedotenleader", "u2024", - "oneeighth", "u215B", - "onegujarati", "u0AE7", - "onegurmukhi", "u0A67", - "onehackarabic", "u0661", - "onehalf", "u00BD", - "onehangzhou", "u3021", - "oneideographicparen", "u3220", - "oneinferior", "u2081", - "onemonospace", "uFF11", - "onenumeratorbengali", "u09F4", - "oneparen", "u2474", - "oneperiod", "u2488", - "onepersian", "u06F1", - "onequarter", "u00BC", - "oneroman", "u2170", - "onesuperior", "u00B9", - "onethai", "u0E51", - "onethird", "u2153", - "oogonek", "u01EB", - "oogonekmacron", "u01ED", - "oogurmukhi", "u0A13", - "oomatragurmukhi", "u0A4B", - "oopen", "u0254", - "oparen", "u24AA", - "openbullet", "u25E6", - "option", "u2325", - "ordfeminine", "u00AA", - "ordmasculine", "u00BA", - "orthogonal", "u221F", - "oshortdeva", "u0912", - "oshortvowelsigndeva", "u094A", - "oslash", "u00F8", - "oslashacute", "u01FF", - "osmallhiragana", "u3049", - "osmallkatakana", "u30A9", - "osmallkatakanahalfwidth", "uFF6B", - "ostrokeacute", "u01FF", - "otcyrillic", "u047F", - "otilde", "u00F5", - "otildeacute", "u1E4D", - "otildedieresis", "u1E4F", - "oubopomofo", "u3121", - "overline", "u203E", - "overlinecenterline", "uFE4A", - "overlinecmb", "u0305", - "overlinedashed", "uFE49", - "overlinedblwavy", "uFE4C", - "overlinewavy", "uFE4B", - "overscore", "u00AF", - "ovowelsignbengali", "u09CB", - "ovowelsigndeva", "u094B", - "ovowelsigngujarati", "u0ACB", - "p", "u0070", - "paampssquare", "u3380", - "paasentosquare", "u332B", - "pabengali", "u09AA", - "pacute", "u1E55", - "padeva", "u092A", - "pagedown", "u21DF", - "pageup", "u21DE", - "pagujarati", "u0AAA", - "pagurmukhi", "u0A2A", - "pahiragana", "u3071", - "paiyannoithai", "u0E2F", - "pakatakana", "u30D1", - "palatalizationcyrilliccmb", "u0484", - "palochkacyrillic", "u04C0", - "pansioskorean", "u317F", - "paragraph", "u00B6", - "parallel", "u2225", - "parenleft", "u0028", - "parenleftaltonearabic", "uFD3E", - "parenleftinferior", "u208D", - "parenleftmonospace", "uFF08", - "parenleftsmall", "uFE59", - "parenleftsuperior", "u207D", - "parenleftvertical", "uFE35", - "parenright", "u0029", - "parenrightaltonearabic", "uFD3F", - "parenrightinferior", "u208E", - "parenrightmonospace", "uFF09", - "parenrightsmall", "uFE5A", - "parenrightsuperior", "u207E", - "parenrightvertical", "uFE36", - "partialdiff", "u2202", - "paseqhebrew", "u05C0", - "pashtahebrew", "u0599", - "pasquare", "u33A9", - "patah", "u05B7", - "patah11", "u05B7", - "patah1d", "u05B7", - "patah2a", "u05B7", - "patahhebrew", "u05B7", - "patahnarrowhebrew", "u05B7", - "patahquarterhebrew", "u05B7", - "patahwidehebrew", "u05B7", - "pazerhebrew", "u05A1", - "pbopomofo", "u3106", - "pcircle", "u24DF", - "pdotaccent", "u1E57", - "pe", "u05E4", - "pecyrillic", "u043F", - "pedagesh", "uFB44", - "pedageshhebrew", "uFB44", - "peezisquare", "u333B", - "pefinaldageshhebrew", "uFB43", - "peharabic", "u067E", - "peharmenian", "u057A", - "pehebrew", "u05E4", - "pehfinalarabic", "uFB57", - "pehinitialarabic", "uFB58", - "pehiragana", "u307A", - "pehmedialarabic", "uFB59", - "pekatakana", "u30DA", - "pemiddlehookcyrillic", "u04A7", - "perafehebrew", "uFB4E", - "percent", "u0025", - "percentarabic", "u066A", - "percentmonospace", "uFF05", - "percentsmall", "uFE6A", - "period", "u002E", - "periodarmenian", "u0589", - "periodcentered", "u00B7", - "periodhalfwidth", "uFF61", - "periodmonospace", "uFF0E", - "periodsmall", "uFE52", - "perispomenigreekcmb", "u0342", - "perpendicular", "u22A5", - "perthousand", "u2030", - "peseta", "u20A7", - "pfsquare", "u338A", - "phabengali", "u09AB", - "phadeva", "u092B", - "phagujarati", "u0AAB", - "phagurmukhi", "u0A2B", - "phi", "u03C6", - "phi1", "u03D5", - "phieuphacirclekorean", "u327A", - "phieuphaparenkorean", "u321A", - "phieuphcirclekorean", "u326C", - "phieuphkorean", "u314D", - "phieuphparenkorean", "u320C", - "philatin", "u0278", - "phinthuthai", "u0E3A", - "phisymbolgreek", "u03D5", - "phook", "u01A5", - "phophanthai", "u0E1E", - "phophungthai", "u0E1C", - "phosamphaothai", "u0E20", - "pi", "u03C0", - "pieupacirclekorean", "u3273", - "pieupaparenkorean", "u3213", - "pieupcieuckorean", "u3176", - "pieupcirclekorean", "u3265", - "pieupkiyeokkorean", "u3172", - "pieupkorean", "u3142", - "pieupparenkorean", "u3205", - "pieupsioskiyeokkorean", "u3174", - "pieupsioskorean", "u3144", - "pieupsiostikeutkorean", "u3175", - "pieupthieuthkorean", "u3177", - "pieuptikeutkorean", "u3173", - "pihiragana", "u3074", - "pikatakana", "u30D4", - "pisymbolgreek", "u03D6", - "piwrarmenian", "u0583", - "plus", "u002B", - "plusbelowcmb", "u031F", - "pluscircle", "u2295", - "plusminus", "u00B1", - "plusmod", "u02D6", - "plusmonospace", "uFF0B", - "plussmall", "uFE62", - "plussuperior", "u207A", - "pmonospace", "uFF50", - "pmsquare", "u33D8", - "pohiragana", "u307D", - "pointingindexdownwhite", "u261F", - "pointingindexleftwhite", "u261C", - "pointingindexrightwhite", "u261E", - "pointingindexupwhite", "u261D", - "pokatakana", "u30DD", - "poplathai", "u0E1B", - "postalmark", "u3012", - "postalmarkface", "u3020", - "pparen", "u24AB", - "precedes", "u227A", - "prescription", "u211E", - "primemod", "u02B9", - "primereversed", "u2035", - "product", "u220F", - "projective", "u2305", - "prolongedkana", "u30FC", - "propellor", "u2318", - "propersubset", "u2282", - "propersuperset", "u2283", - "proportion", "u2237", - "proportional", "u221D", - "psi", "u03C8", - "psicyrillic", "u0471", - "psilipneumatacyrilliccmb", "u0486", - "pssquare", "u33B0", - "puhiragana", "u3077", - "pukatakana", "u30D7", - "pvsquare", "u33B4", - "pwsquare", "u33BA", - "q", "u0071", - "qadeva", "u0958", - "qadmahebrew", "u05A8", - "qafarabic", "u0642", - "qaffinalarabic", "uFED6", - "qafinitialarabic", "uFED7", - "qafmedialarabic", "uFED8", - "qamats", "u05B8", - "qamats10", "u05B8", - "qamats1a", "u05B8", - "qamats1c", "u05B8", - "qamats27", "u05B8", - "qamats29", "u05B8", - "qamats33", "u05B8", - "qamatsde", "u05B8", - "qamatshebrew", "u05B8", - "qamatsnarrowhebrew", "u05B8", - "qamatsqatanhebrew", "u05B8", - "qamatsqatannarrowhebrew", "u05B8", - "qamatsqatanquarterhebrew", "u05B8", - "qamatsqatanwidehebrew", "u05B8", - "qamatsquarterhebrew", "u05B8", - "qamatswidehebrew", "u05B8", - "qarneyparahebrew", "u059F", - "qbopomofo", "u3111", - "qcircle", "u24E0", - "qhook", "u02A0", - "qmonospace", "uFF51", - "qof", "u05E7", - "qofdagesh", "uFB47", - "qofdageshhebrew", "uFB47", - "qofhatafpatah", "u05E7_05B2", - "qofhatafpatahhebrew", "u05E7_05B2", - "qofhatafsegol", "u05E7_05B1", - "qofhatafsegolhebrew", "u05E7_05B1", - "qofhebrew", "u05E7", - "qofhiriq", "u05E7_05B4", - "qofhiriqhebrew", "u05E7_05B4", - "qofholam", "u05E7_05B9", - "qofholamhebrew", "u05E7_05B9", - "qofpatah", "u05E7_05B7", - "qofpatahhebrew", "u05E7_05B7", - "qofqamats", "u05E7_05B8", - "qofqamatshebrew", "u05E7_05B8", - "qofqubuts", "u05E7_05BB", - "qofqubutshebrew", "u05E7_05BB", - "qofsegol", "u05E7_05B6", - "qofsegolhebrew", "u05E7_05B6", - "qofsheva", "u05E7_05B0", - "qofshevahebrew", "u05E7_05B0", - "qoftsere", "u05E7_05B5", - "qoftserehebrew", "u05E7_05B5", - "qparen", "u24AC", - "quarternote", "u2669", - "qubuts", "u05BB", - "qubuts18", "u05BB", - "qubuts25", "u05BB", - "qubuts31", "u05BB", - "qubutshebrew", "u05BB", - "qubutsnarrowhebrew", "u05BB", - "qubutsquarterhebrew", "u05BB", - "qubutswidehebrew", "u05BB", - "question", "u003F", - "questionarabic", "u061F", - "questionarmenian", "u055E", - "questiondown", "u00BF", - "questiongreek", "u037E", - "questionmonospace", "uFF1F", - "quotedbl", "u0022", - "quotedblbase", "u201E", - "quotedblleft", "u201C", - "quotedblmonospace", "uFF02", - "quotedblprime", "u301E", - "quotedblprimereversed", "u301D", - "quotedblright", "u201D", - "quoteleft", "u2018", - "quoteleftreversed", "u201B", - "quotereversed", "u201B", - "quoteright", "u2019", - "quoterightn", "u0149", - "quotesinglbase", "u201A", - "quotesingle", "u0027", - "quotesinglemonospace", "uFF07", - "r", "u0072", - "raarmenian", "u057C", - "rabengali", "u09B0", - "racute", "u0155", - "radeva", "u0930", - "radical", "u221A", - "radoverssquare", "u33AE", - "radoverssquaredsquare", "u33AF", - "radsquare", "u33AD", - "rafe", "u05BF", - "rafehebrew", "u05BF", - "ragujarati", "u0AB0", - "ragurmukhi", "u0A30", - "rahiragana", "u3089", - "rakatakana", "u30E9", - "rakatakanahalfwidth", "uFF97", - "ralowerdiagonalbengali", "u09F1", - "ramiddlediagonalbengali", "u09F0", - "ramshorn", "u0264", - "ratio", "u2236", - "rbopomofo", "u3116", - "rcaron", "u0159", - "rcedilla", "u0157", - "rcircle", "u24E1", - "rcommaaccent", "u0157", - "rdblgrave", "u0211", - "rdotaccent", "u1E59", - "rdotbelow", "u1E5B", - "rdotbelowmacron", "u1E5D", - "referencemark", "u203B", - "reflexsubset", "u2286", - "reflexsuperset", "u2287", - "registered", "u00AE", - "reharabic", "u0631", - "reharmenian", "u0580", - "rehfinalarabic", "uFEAE", - "rehiragana", "u308C", - "rehyehaleflamarabic", "u0631_FEF3_FE8E_0644", - "rekatakana", "u30EC", - "rekatakanahalfwidth", "uFF9A", - "resh", "u05E8", - "reshdageshhebrew", "uFB48", - "reshhatafpatah", "u05E8_05B2", - "reshhatafpatahhebrew", "u05E8_05B2", - "reshhatafsegol", "u05E8_05B1", - "reshhatafsegolhebrew", "u05E8_05B1", - "reshhebrew", "u05E8", - "reshhiriq", "u05E8_05B4", - "reshhiriqhebrew", "u05E8_05B4", - "reshholam", "u05E8_05B9", - "reshholamhebrew", "u05E8_05B9", - "reshpatah", "u05E8_05B7", - "reshpatahhebrew", "u05E8_05B7", - "reshqamats", "u05E8_05B8", - "reshqamatshebrew", "u05E8_05B8", - "reshqubuts", "u05E8_05BB", - "reshqubutshebrew", "u05E8_05BB", - "reshsegol", "u05E8_05B6", - "reshsegolhebrew", "u05E8_05B6", - "reshsheva", "u05E8_05B0", - "reshshevahebrew", "u05E8_05B0", - "reshtsere", "u05E8_05B5", - "reshtserehebrew", "u05E8_05B5", - "reversedtilde", "u223D", - "reviahebrew", "u0597", - "reviamugrashhebrew", "u0597", - "revlogicalnot", "u2310", - "rfishhook", "u027E", - "rfishhookreversed", "u027F", - "rhabengali", "u09DD", - "rhadeva", "u095D", - "rho", "u03C1", - "rhook", "u027D", - "rhookturned", "u027B", - "rhookturnedsuperior", "u02B5", - "rhosymbolgreek", "u03F1", - "rhotichookmod", "u02DE", - "rieulacirclekorean", "u3271", - "rieulaparenkorean", "u3211", - "rieulcirclekorean", "u3263", - "rieulhieuhkorean", "u3140", - "rieulkiyeokkorean", "u313A", - "rieulkiyeoksioskorean", "u3169", - "rieulkorean", "u3139", - "rieulmieumkorean", "u313B", - "rieulpansioskorean", "u316C", - "rieulparenkorean", "u3203", - "rieulphieuphkorean", "u313F", - "rieulpieupkorean", "u313C", - "rieulpieupsioskorean", "u316B", - "rieulsioskorean", "u313D", - "rieulthieuthkorean", "u313E", - "rieultikeutkorean", "u316A", - "rieulyeorinhieuhkorean", "u316D", - "rightangle", "u221F", - "righttackbelowcmb", "u0319", - "righttriangle", "u22BF", - "rihiragana", "u308A", - "rikatakana", "u30EA", - "rikatakanahalfwidth", "uFF98", - "ring", "u02DA", - "ringbelowcmb", "u0325", - "ringcmb", "u030A", - "ringhalfleft", "u02BF", - "ringhalfleftarmenian", "u0559", - "ringhalfleftbelowcmb", "u031C", - "ringhalfleftcentered", "u02D3", - "ringhalfright", "u02BE", - "ringhalfrightbelowcmb", "u0339", - "ringhalfrightcentered", "u02D2", - "rinvertedbreve", "u0213", - "rittorusquare", "u3351", - "rlinebelow", "u1E5F", - "rlongleg", "u027C", - "rlonglegturned", "u027A", - "rmonospace", "uFF52", - "rohiragana", "u308D", - "rokatakana", "u30ED", - "rokatakanahalfwidth", "uFF9B", - "roruathai", "u0E23", - "rparen", "u24AD", - "rrabengali", "u09DC", - "rradeva", "u0931", - "rragurmukhi", "u0A5C", - "rreharabic", "u0691", - "rrehfinalarabic", "uFB8D", - "rrvocalicbengali", "u09E0", - "rrvocalicdeva", "u0960", - "rrvocalicgujarati", "u0AE0", - "rrvocalicvowelsignbengali", "u09C4", - "rrvocalicvowelsigndeva", "u0944", - "rrvocalicvowelsigngujarati", "u0AC4", - "rtblock", "u2590", - "rturned", "u0279", - "rturnedsuperior", "u02B4", - "ruhiragana", "u308B", - "rukatakana", "u30EB", - "rukatakanahalfwidth", "uFF99", - "rupeemarkbengali", "u09F2", - "rupeesignbengali", "u09F3", - "ruthai", "u0E24", - "rvocalicbengali", "u098B", - "rvocalicdeva", "u090B", - "rvocalicgujarati", "u0A8B", - "rvocalicvowelsignbengali", "u09C3", - "rvocalicvowelsigndeva", "u0943", - "rvocalicvowelsigngujarati", "u0AC3", - "s", "u0073", - "sabengali", "u09B8", - "sacute", "u015B", - "sacutedotaccent", "u1E65", - "sadarabic", "u0635", - "sadeva", "u0938", - "sadfinalarabic", "uFEBA", - "sadinitialarabic", "uFEBB", - "sadmedialarabic", "uFEBC", - "sagujarati", "u0AB8", - "sagurmukhi", "u0A38", - "sahiragana", "u3055", - "sakatakana", "u30B5", - "sakatakanahalfwidth", "uFF7B", - "sallallahoualayhewasallamarabic", "uFDFA", - "samekh", "u05E1", - "samekhdagesh", "uFB41", - "samekhdageshhebrew", "uFB41", - "samekhhebrew", "u05E1", - "saraaathai", "u0E32", - "saraaethai", "u0E41", - "saraaimaimalaithai", "u0E44", - "saraaimaimuanthai", "u0E43", - "saraamthai", "u0E33", - "saraathai", "u0E30", - "saraethai", "u0E40", - "saraiithai", "u0E35", - "saraithai", "u0E34", - "saraothai", "u0E42", - "saraueethai", "u0E37", - "sarauethai", "u0E36", - "sarauthai", "u0E38", - "sarauuthai", "u0E39", - "sbopomofo", "u3119", - "scaron", "u0161", - "scarondotaccent", "u1E67", - "scedilla", "u015F", - "schwa", "u0259", - "schwacyrillic", "u04D9", - "schwadieresiscyrillic", "u04DB", - "schwahook", "u025A", - "scircle", "u24E2", - "scircumflex", "u015D", - "scommaaccent", "u0219", - "sdotaccent", "u1E61", - "sdotbelow", "u1E63", - "sdotbelowdotaccent", "u1E69", - "seagullbelowcmb", "u033C", - "second", "u2033", - "secondtonechinese", "u02CA", - "section", "u00A7", - "seenarabic", "u0633", - "seenfinalarabic", "uFEB2", - "seeninitialarabic", "uFEB3", - "seenmedialarabic", "uFEB4", - "segol", "u05B6", - "segol13", "u05B6", - "segol1f", "u05B6", - "segol2c", "u05B6", - "segolhebrew", "u05B6", - "segolnarrowhebrew", "u05B6", - "segolquarterhebrew", "u05B6", - "segoltahebrew", "u0592", - "segolwidehebrew", "u05B6", - "seharmenian", "u057D", - "sehiragana", "u305B", - "sekatakana", "u30BB", - "sekatakanahalfwidth", "uFF7E", - "semicolon", "u003B", - "semicolonarabic", "u061B", - "semicolonmonospace", "uFF1B", - "semicolonsmall", "uFE54", - "semivoicedmarkkana", "u309C", - "semivoicedmarkkanahalfwidth", "uFF9F", - "sentisquare", "u3322", - "sentosquare", "u3323", - "seven", "u0037", - "sevenarabic", "u0667", - "sevenbengali", "u09ED", - "sevencircle", "u2466", - "sevencircleinversesansserif", "u2790", - "sevendeva", "u096D", - "seveneighths", "u215E", - "sevengujarati", "u0AED", - "sevengurmukhi", "u0A6D", - "sevenhackarabic", "u0667", - "sevenhangzhou", "u3027", - "sevenideographicparen", "u3226", - "seveninferior", "u2087", - "sevenmonospace", "uFF17", - "sevenparen", "u247A", - "sevenperiod", "u248E", - "sevenpersian", "u06F7", - "sevenroman", "u2176", - "sevensuperior", "u2077", - "seventeencircle", "u2470", - "seventeenparen", "u2484", - "seventeenperiod", "u2498", - "seventhai", "u0E57", - "sfthyphen", "u00AD", - "shaarmenian", "u0577", - "shabengali", "u09B6", - "shacyrillic", "u0448", - "shaddaarabic", "u0651", - "shaddadammaarabic", "uFC61", - "shaddadammatanarabic", "uFC5E", - "shaddafathaarabic", "uFC60", - "shaddafathatanarabic", "u0651_064B", - "shaddakasraarabic", "uFC62", - "shaddakasratanarabic", "uFC5F", - "shade", "u2592", - "shadedark", "u2593", - "shadelight", "u2591", - "shademedium", "u2592", - "shadeva", "u0936", - "shagujarati", "u0AB6", - "shagurmukhi", "u0A36", - "shalshelethebrew", "u0593", - "shbopomofo", "u3115", - "shchacyrillic", "u0449", - "sheenarabic", "u0634", - "sheenfinalarabic", "uFEB6", - "sheeninitialarabic", "uFEB7", - "sheenmedialarabic", "uFEB8", - "sheicoptic", "u03E3", - "sheqel", "u20AA", - "sheqelhebrew", "u20AA", - "sheva", "u05B0", - "sheva115", "u05B0", - "sheva15", "u05B0", - "sheva22", "u05B0", - "sheva2e", "u05B0", - "shevahebrew", "u05B0", - "shevanarrowhebrew", "u05B0", - "shevaquarterhebrew", "u05B0", - "shevawidehebrew", "u05B0", - "shhacyrillic", "u04BB", - "shimacoptic", "u03ED", - "shin", "u05E9", - "shindagesh", "uFB49", - "shindageshhebrew", "uFB49", - "shindageshshindot", "uFB2C", - "shindageshshindothebrew", "uFB2C", - "shindageshsindot", "uFB2D", - "shindageshsindothebrew", "uFB2D", - "shindothebrew", "u05C1", - "shinhebrew", "u05E9", - "shinshindot", "uFB2A", - "shinshindothebrew", "uFB2A", - "shinsindot", "uFB2B", - "shinsindothebrew", "uFB2B", - "shook", "u0282", - "sigma", "u03C3", - "sigma1", "u03C2", - "sigmafinal", "u03C2", - "sigmalunatesymbolgreek", "u03F2", - "sihiragana", "u3057", - "sikatakana", "u30B7", - "sikatakanahalfwidth", "uFF7C", - "siluqhebrew", "u05BD", - "siluqlefthebrew", "u05BD", - "similar", "u223C", - "sindothebrew", "u05C2", - "siosacirclekorean", "u3274", - "siosaparenkorean", "u3214", - "sioscieuckorean", "u317E", - "sioscirclekorean", "u3266", - "sioskiyeokkorean", "u317A", - "sioskorean", "u3145", - "siosnieunkorean", "u317B", - "siosparenkorean", "u3206", - "siospieupkorean", "u317D", - "siostikeutkorean", "u317C", - "six", "u0036", - "sixarabic", "u0666", - "sixbengali", "u09EC", - "sixcircle", "u2465", - "sixcircleinversesansserif", "u278F", - "sixdeva", "u096C", - "sixgujarati", "u0AEC", - "sixgurmukhi", "u0A6C", - "sixhackarabic", "u0666", - "sixhangzhou", "u3026", - "sixideographicparen", "u3225", - "sixinferior", "u2086", - "sixmonospace", "uFF16", - "sixparen", "u2479", - "sixperiod", "u248D", - "sixpersian", "u06F6", - "sixroman", "u2175", - "sixsuperior", "u2076", - "sixteencircle", "u246F", - "sixteencurrencydenominatorbengali", "u09F9", - "sixteenparen", "u2483", - "sixteenperiod", "u2497", - "sixthai", "u0E56", - "slash", "u002F", - "slashmonospace", "uFF0F", - "slong", "u017F", - "slongdotaccent", "u1E9B", - "smileface", "u263A", - "smonospace", "uFF53", - "sofpasuqhebrew", "u05C3", - "softhyphen", "u00AD", - "softsigncyrillic", "u044C", - "sohiragana", "u305D", - "sokatakana", "u30BD", - "sokatakanahalfwidth", "uFF7F", - "soliduslongoverlaycmb", "u0338", - "solidusshortoverlaycmb", "u0337", - "sorusithai", "u0E29", - "sosalathai", "u0E28", - "sosothai", "u0E0B", - "sosuathai", "u0E2A", - "space", "u0020", - "spacehackarabic", "u0020", - "spade", "u2660", - "spadesuitblack", "u2660", - "spadesuitwhite", "u2664", - "sparen", "u24AE", - "squarebelowcmb", "u033B", - "squarecc", "u33C4", - "squarecm", "u339D", - "squarediagonalcrosshatchfill", "u25A9", - "squarehorizontalfill", "u25A4", - "squarekg", "u338F", - "squarekm", "u339E", - "squarekmcapital", "u33CE", - "squareln", "u33D1", - "squarelog", "u33D2", - "squaremg", "u338E", - "squaremil", "u33D5", - "squaremm", "u339C", - "squaremsquared", "u33A1", - "squareorthogonalcrosshatchfill", "u25A6", - "squareupperlefttolowerrightfill", "u25A7", - "squareupperrighttolowerleftfill", "u25A8", - "squareverticalfill", "u25A5", - "squarewhitewithsmallblack", "u25A3", - "srsquare", "u33DB", - "ssabengali", "u09B7", - "ssadeva", "u0937", - "ssagujarati", "u0AB7", - "ssangcieuckorean", "u3149", - "ssanghieuhkorean", "u3185", - "ssangieungkorean", "u3180", - "ssangkiyeokkorean", "u3132", - "ssangnieunkorean", "u3165", - "ssangpieupkorean", "u3143", - "ssangsioskorean", "u3146", - "ssangtikeutkorean", "u3138", - "sterling", "u00A3", - "sterlingmonospace", "uFFE1", - "strokelongoverlaycmb", "u0336", - "strokeshortoverlaycmb", "u0335", - "subset", "u2282", - "subsetnotequal", "u228A", - "subsetorequal", "u2286", - "succeeds", "u227B", - "suchthat", "u220B", - "suhiragana", "u3059", - "sukatakana", "u30B9", - "sukatakanahalfwidth", "uFF7D", - "sukunarabic", "u0652", - "summation", "u2211", - "sun", "u263C", - "superset", "u2283", - "supersetnotequal", "u228B", - "supersetorequal", "u2287", - "svsquare", "u33DC", - "syouwaerasquare", "u337C", - "t", "u0074", - "tabengali", "u09A4", - "tackdown", "u22A4", - "tackleft", "u22A3", - "tadeva", "u0924", - "tagujarati", "u0AA4", - "tagurmukhi", "u0A24", - "taharabic", "u0637", - "tahfinalarabic", "uFEC2", - "tahinitialarabic", "uFEC3", - "tahiragana", "u305F", - "tahmedialarabic", "uFEC4", - "taisyouerasquare", "u337D", - "takatakana", "u30BF", - "takatakanahalfwidth", "uFF80", - "tatweelarabic", "u0640", - "tau", "u03C4", - "tav", "u05EA", - "tavdages", "uFB4A", - "tavdagesh", "uFB4A", - "tavdageshhebrew", "uFB4A", - "tavhebrew", "u05EA", - "tbar", "u0167", - "tbopomofo", "u310A", - "tcaron", "u0165", - "tccurl", "u02A8", - "tcedilla", "u0163", - "tcheharabic", "u0686", - "tchehfinalarabic", "uFB7B", - "tchehinitialarabic", "uFB7C", - "tchehmedialarabic", "uFB7D", - "tchehmeeminitialarabic", "uFB7C_FEE4", - "tcircle", "u24E3", - "tcircumflexbelow", "u1E71", - "tcommaaccent", "u0163", - "tdieresis", "u1E97", - "tdotaccent", "u1E6B", - "tdotbelow", "u1E6D", - "tecyrillic", "u0442", - "tedescendercyrillic", "u04AD", - "teharabic", "u062A", - "tehfinalarabic", "uFE96", - "tehhahinitialarabic", "uFCA2", - "tehhahisolatedarabic", "uFC0C", - "tehinitialarabic", "uFE97", - "tehiragana", "u3066", - "tehjeeminitialarabic", "uFCA1", - "tehjeemisolatedarabic", "uFC0B", - "tehmarbutaarabic", "u0629", - "tehmarbutafinalarabic", "uFE94", - "tehmedialarabic", "uFE98", - "tehmeeminitialarabic", "uFCA4", - "tehmeemisolatedarabic", "uFC0E", - "tehnoonfinalarabic", "uFC73", - "tekatakana", "u30C6", - "tekatakanahalfwidth", "uFF83", - "telephone", "u2121", - "telephoneblack", "u260E", - "telishagedolahebrew", "u05A0", - "telishaqetanahebrew", "u05A9", - "tencircle", "u2469", - "tenideographicparen", "u3229", - "tenparen", "u247D", - "tenperiod", "u2491", - "tenroman", "u2179", - "tesh", "u02A7", - "tet", "u05D8", - "tetdagesh", "uFB38", - "tetdageshhebrew", "uFB38", - "tethebrew", "u05D8", - "tetsecyrillic", "u04B5", - "tevirhebrew", "u059B", - "tevirlefthebrew", "u059B", - "thabengali", "u09A5", - "thadeva", "u0925", - "thagujarati", "u0AA5", - "thagurmukhi", "u0A25", - "thalarabic", "u0630", - "thalfinalarabic", "uFEAC", - "thanthakhatthai", "u0E4C", - "theharabic", "u062B", - "thehfinalarabic", "uFE9A", - "thehinitialarabic", "uFE9B", - "thehmedialarabic", "uFE9C", - "thereexists", "u2203", - "therefore", "u2234", - "theta", "u03B8", - "theta1", "u03D1", - "thetasymbolgreek", "u03D1", - "thieuthacirclekorean", "u3279", - "thieuthaparenkorean", "u3219", - "thieuthcirclekorean", "u326B", - "thieuthkorean", "u314C", - "thieuthparenkorean", "u320B", - "thirteencircle", "u246C", - "thirteenparen", "u2480", - "thirteenperiod", "u2494", - "thonangmonthothai", "u0E11", - "thook", "u01AD", - "thophuthaothai", "u0E12", - "thorn", "u00FE", - "thothahanthai", "u0E17", - "thothanthai", "u0E10", - "thothongthai", "u0E18", - "thothungthai", "u0E16", - "thousandcyrillic", "u0482", - "thousandsseparatorarabic", "u066C", - "thousandsseparatorpersian", "u066C", - "three", "u0033", - "threearabic", "u0663", - "threebengali", "u09E9", - "threecircle", "u2462", - "threecircleinversesansserif", "u278C", - "threedeva", "u0969", - "threeeighths", "u215C", - "threegujarati", "u0AE9", - "threegurmukhi", "u0A69", - "threehackarabic", "u0663", - "threehangzhou", "u3023", - "threeideographicparen", "u3222", - "threeinferior", "u2083", - "threemonospace", "uFF13", - "threenumeratorbengali", "u09F6", - "threeparen", "u2476", - "threeperiod", "u248A", - "threepersian", "u06F3", - "threequarters", "u00BE", - "threeroman", "u2172", - "threesuperior", "u00B3", - "threethai", "u0E53", - "thzsquare", "u3394", - "tihiragana", "u3061", - "tikatakana", "u30C1", - "tikatakanahalfwidth", "uFF81", - "tikeutacirclekorean", "u3270", - "tikeutaparenkorean", "u3210", - "tikeutcirclekorean", "u3262", - "tikeutkorean", "u3137", - "tikeutparenkorean", "u3202", - "tilde", "u02DC", - "tildebelowcmb", "u0330", - "tildecmb", "u0303", - "tildecomb", "u0303", - "tildedoublecmb", "u0360", - "tildeoperator", "u223C", - "tildeoverlaycmb", "u0334", - "tildeverticalcmb", "u033E", - "timescircle", "u2297", - "tipehahebrew", "u0596", - "tipehalefthebrew", "u0596", - "tippigurmukhi", "u0A70", - "titlocyrilliccmb", "u0483", - "tiwnarmenian", "u057F", - "tlinebelow", "u1E6F", - "tmonospace", "uFF54", - "toarmenian", "u0569", - "tohiragana", "u3068", - "tokatakana", "u30C8", - "tokatakanahalfwidth", "uFF84", - "tonebarextrahighmod", "u02E5", - "tonebarextralowmod", "u02E9", - "tonebarhighmod", "u02E6", - "tonebarlowmod", "u02E8", - "tonebarmidmod", "u02E7", - "tonefive", "u01BD", - "tonesix", "u0185", - "tonetwo", "u01A8", - "tonos", "u0384", - "tonsquare", "u3327", - "topatakthai", "u0E0F", - "tortoiseshellbracketleft", "u3014", - "tortoiseshellbracketleftsmall", "uFE5D", - "tortoiseshellbracketleftvertical", "uFE39", - "tortoiseshellbracketright", "u3015", - "tortoiseshellbracketrightsmall", "uFE5E", - "tortoiseshellbracketrightvertical", "uFE3A", - "totaothai", "u0E15", - "tpalatalhook", "u01AB", - "tparen", "u24AF", - "trademark", "u2122", - "tretroflexhook", "u0288", - "triagdn", "u25BC", - "triaglf", "u25C4", - "triagrt", "u25BA", - "triagup", "u25B2", - "ts", "u02A6", - "tsadi", "u05E6", - "tsadidagesh", "uFB46", - "tsadidageshhebrew", "uFB46", - "tsadihebrew", "u05E6", - "tsecyrillic", "u0446", - "tsere", "u05B5", - "tsere12", "u05B5", - "tsere1e", "u05B5", - "tsere2b", "u05B5", - "tserehebrew", "u05B5", - "tserenarrowhebrew", "u05B5", - "tserequarterhebrew", "u05B5", - "tserewidehebrew", "u05B5", - "tshecyrillic", "u045B", - "ttabengali", "u099F", - "ttadeva", "u091F", - "ttagujarati", "u0A9F", - "ttagurmukhi", "u0A1F", - "tteharabic", "u0679", - "ttehfinalarabic", "uFB67", - "ttehinitialarabic", "uFB68", - "ttehmedialarabic", "uFB69", - "tthabengali", "u09A0", - "tthadeva", "u0920", - "tthagujarati", "u0AA0", - "tthagurmukhi", "u0A20", - "tturned", "u0287", - "tuhiragana", "u3064", - "tukatakana", "u30C4", - "tukatakanahalfwidth", "uFF82", - "tusmallhiragana", "u3063", - "tusmallkatakana", "u30C3", - "tusmallkatakanahalfwidth", "uFF6F", - "twelvecircle", "u246B", - "twelveparen", "u247F", - "twelveperiod", "u2493", - "twelveroman", "u217B", - "twentycircle", "u2473", - "twentyhangzhou", "u5344", - "twentyparen", "u2487", - "twentyperiod", "u249B", - "two", "u0032", - "twoarabic", "u0662", - "twobengali", "u09E8", - "twocircle", "u2461", - "twocircleinversesansserif", "u278B", - "twodeva", "u0968", - "twodotenleader", "u2025", - "twodotleader", "u2025", - "twodotleadervertical", "uFE30", - "twogujarati", "u0AE8", - "twogurmukhi", "u0A68", - "twohackarabic", "u0662", - "twohangzhou", "u3022", - "twoideographicparen", "u3221", - "twoinferior", "u2082", - "twomonospace", "uFF12", - "twonumeratorbengali", "u09F5", - "twoparen", "u2475", - "twoperiod", "u2489", - "twopersian", "u06F2", - "tworoman", "u2171", - "twostroke", "u01BB", - "twosuperior", "u00B2", - "twothai", "u0E52", - "twothirds", "u2154", - "u", "u0075", - "uacute", "u00FA", - "ubar", "u0289", - "ubengali", "u0989", - "ubopomofo", "u3128", - "ubreve", "u016D", - "ucaron", "u01D4", - "ucircle", "u24E4", - "ucircumflex", "u00FB", - "ucircumflexbelow", "u1E77", - "ucyrillic", "u0443", - "udattadeva", "u0951", - "udblacute", "u0171", - "udblgrave", "u0215", - "udeva", "u0909", - "udieresis", "u00FC", - "udieresisacute", "u01D8", - "udieresisbelow", "u1E73", - "udieresiscaron", "u01DA", - "udieresiscyrillic", "u04F1", - "udieresisgrave", "u01DC", - "udieresismacron", "u01D6", - "udotbelow", "u1EE5", - "ugrave", "u00F9", - "ugujarati", "u0A89", - "ugurmukhi", "u0A09", - "uhiragana", "u3046", - "uhookabove", "u1EE7", - "uhorn", "u01B0", - "uhornacute", "u1EE9", - "uhorndotbelow", "u1EF1", - "uhorngrave", "u1EEB", - "uhornhookabove", "u1EED", - "uhorntilde", "u1EEF", - "uhungarumlaut", "u0171", - "uhungarumlautcyrillic", "u04F3", - "uinvertedbreve", "u0217", - "ukatakana", "u30A6", - "ukatakanahalfwidth", "uFF73", - "ukcyrillic", "u0479", - "ukorean", "u315C", - "umacron", "u016B", - "umacroncyrillic", "u04EF", - "umacrondieresis", "u1E7B", - "umatragurmukhi", "u0A41", - "umonospace", "uFF55", - "underscore", "u005F", - "underscoredbl", "u2017", - "underscoremonospace", "uFF3F", - "underscorevertical", "uFE33", - "underscorewavy", "uFE4F", - "union", "u222A", - "universal", "u2200", - "uogonek", "u0173", - "uparen", "u24B0", - "upblock", "u2580", - "upperdothebrew", "u05C4", - "upsilon", "u03C5", - "upsilondieresis", "u03CB", - "upsilondieresistonos", "u03B0", - "upsilonlatin", "u028A", - "upsilontonos", "u03CD", - "uptackbelowcmb", "u031D", - "uptackmod", "u02D4", - "uragurmukhi", "u0A73", - "uring", "u016F", - "ushortcyrillic", "u045E", - "usmallhiragana", "u3045", - "usmallkatakana", "u30A5", - "usmallkatakanahalfwidth", "uFF69", - "ustraightcyrillic", "u04AF", - "ustraightstrokecyrillic", "u04B1", - "utilde", "u0169", - "utildeacute", "u1E79", - "utildebelow", "u1E75", - "uubengali", "u098A", - "uudeva", "u090A", - "uugujarati", "u0A8A", - "uugurmukhi", "u0A0A", - "uumatragurmukhi", "u0A42", - "uuvowelsignbengali", "u09C2", - "uuvowelsigndeva", "u0942", - "uuvowelsigngujarati", "u0AC2", - "uvowelsignbengali", "u09C1", - "uvowelsigndeva", "u0941", - "uvowelsigngujarati", "u0AC1", - "v", "u0076", - "vadeva", "u0935", - "vagujarati", "u0AB5", - "vagurmukhi", "u0A35", - "vakatakana", "u30F7", - "vav", "u05D5", - "vavdagesh", "uFB35", - "vavdagesh65", "uFB35", - "vavdageshhebrew", "uFB35", - "vavhebrew", "u05D5", - "vavholam", "uFB4B", - "vavholamhebrew", "uFB4B", - "vavvavhebrew", "u05F0", - "vavyodhebrew", "u05F1", - "vcircle", "u24E5", - "vdotbelow", "u1E7F", - "vecyrillic", "u0432", - "veharabic", "u06A4", - "vehfinalarabic", "uFB6B", - "vehinitialarabic", "uFB6C", - "vehmedialarabic", "uFB6D", - "vekatakana", "u30F9", - "venus", "u2640", - "verticalbar", "u007C", - "verticallineabovecmb", "u030D", - "verticallinebelowcmb", "u0329", - "verticallinelowmod", "u02CC", - "verticallinemod", "u02C8", - "vewarmenian", "u057E", - "vhook", "u028B", - "vikatakana", "u30F8", - "viramabengali", "u09CD", - "viramadeva", "u094D", - "viramagujarati", "u0ACD", - "visargabengali", "u0983", - "visargadeva", "u0903", - "visargagujarati", "u0A83", - "vmonospace", "uFF56", - "voarmenian", "u0578", - "voicediterationhiragana", "u309E", - "voicediterationkatakana", "u30FE", - "voicedmarkkana", "u309B", - "voicedmarkkanahalfwidth", "uFF9E", - "vokatakana", "u30FA", - "vparen", "u24B1", - "vtilde", "u1E7D", - "vturned", "u028C", - "vuhiragana", "u3094", - "vukatakana", "u30F4", - "w", "u0077", - "wacute", "u1E83", - "waekorean", "u3159", - "wahiragana", "u308F", - "wakatakana", "u30EF", - "wakatakanahalfwidth", "uFF9C", - "wakorean", "u3158", - "wasmallhiragana", "u308E", - "wasmallkatakana", "u30EE", - "wattosquare", "u3357", - "wavedash", "u301C", - "wavyunderscorevertical", "uFE34", - "wawarabic", "u0648", - "wawfinalarabic", "uFEEE", - "wawhamzaabovearabic", "u0624", - "wawhamzaabovefinalarabic", "uFE86", - "wbsquare", "u33DD", - "wcircle", "u24E6", - "wcircumflex", "u0175", - "wdieresis", "u1E85", - "wdotaccent", "u1E87", - "wdotbelow", "u1E89", - "wehiragana", "u3091", - "weierstrass", "u2118", - "wekatakana", "u30F1", - "wekorean", "u315E", - "weokorean", "u315D", - "wgrave", "u1E81", - "whitebullet", "u25E6", - "whitecircle", "u25CB", - "whitecircleinverse", "u25D9", - "whitecornerbracketleft", "u300E", - "whitecornerbracketleftvertical", "uFE43", - "whitecornerbracketright", "u300F", - "whitecornerbracketrightvertical", "uFE44", - "whitediamond", "u25C7", - "whitediamondcontainingblacksmalldiamond", "u25C8", - "whitedownpointingsmalltriangle", "u25BF", - "whitedownpointingtriangle", "u25BD", - "whiteleftpointingsmalltriangle", "u25C3", - "whiteleftpointingtriangle", "u25C1", - "whitelenticularbracketleft", "u3016", - "whitelenticularbracketright", "u3017", - "whiterightpointingsmalltriangle", "u25B9", - "whiterightpointingtriangle", "u25B7", - "whitesmallsquare", "u25AB", - "whitesmilingface", "u263A", - "whitesquare", "u25A1", - "whitestar", "u2606", - "whitetelephone", "u260F", - "whitetortoiseshellbracketleft", "u3018", - "whitetortoiseshellbracketright", "u3019", - "whiteuppointingsmalltriangle", "u25B5", - "whiteuppointingtriangle", "u25B3", - "wihiragana", "u3090", - "wikatakana", "u30F0", - "wikorean", "u315F", - "wmonospace", "uFF57", - "wohiragana", "u3092", - "wokatakana", "u30F2", - "wokatakanahalfwidth", "uFF66", - "won", "u20A9", - "wonmonospace", "uFFE6", - "wowaenthai", "u0E27", - "wparen", "u24B2", - "wring", "u1E98", - "wsuperior", "u02B7", - "wturned", "u028D", - "wynn", "u01BF", - "x", "u0078", - "xabovecmb", "u033D", - "xbopomofo", "u3112", - "xcircle", "u24E7", - "xdieresis", "u1E8D", - "xdotaccent", "u1E8B", - "xeharmenian", "u056D", - "xi", "u03BE", - "xmonospace", "uFF58", - "xparen", "u24B3", - "xsuperior", "u02E3", - "y", "u0079", - "yaadosquare", "u334E", - "yabengali", "u09AF", - "yacute", "u00FD", - "yadeva", "u092F", - "yaekorean", "u3152", - "yagujarati", "u0AAF", - "yagurmukhi", "u0A2F", - "yahiragana", "u3084", - "yakatakana", "u30E4", - "yakatakanahalfwidth", "uFF94", - "yakorean", "u3151", - "yamakkanthai", "u0E4E", - "yasmallhiragana", "u3083", - "yasmallkatakana", "u30E3", - "yasmallkatakanahalfwidth", "uFF6C", - "yatcyrillic", "u0463", - "ycircle", "u24E8", - "ycircumflex", "u0177", - "ydieresis", "u00FF", - "ydotaccent", "u1E8F", - "ydotbelow", "u1EF5", - "yeharabic", "u064A", - "yehbarreearabic", "u06D2", - "yehbarreefinalarabic", "uFBAF", - "yehfinalarabic", "uFEF2", - "yehhamzaabovearabic", "u0626", - "yehhamzaabovefinalarabic", "uFE8A", - "yehhamzaaboveinitialarabic", "uFE8B", - "yehhamzaabovemedialarabic", "uFE8C", - "yehinitialarabic", "uFEF3", - "yehmedialarabic", "uFEF4", - "yehmeeminitialarabic", "uFCDD", - "yehmeemisolatedarabic", "uFC58", - "yehnoonfinalarabic", "uFC94", - "yehthreedotsbelowarabic", "u06D1", - "yekorean", "u3156", - "yen", "u00A5", - "yenmonospace", "uFFE5", - "yeokorean", "u3155", - "yeorinhieuhkorean", "u3186", - "yerahbenyomohebrew", "u05AA", - "yerahbenyomolefthebrew", "u05AA", - "yericyrillic", "u044B", - "yerudieresiscyrillic", "u04F9", - "yesieungkorean", "u3181", - "yesieungpansioskorean", "u3183", - "yesieungsioskorean", "u3182", - "yetivhebrew", "u059A", - "ygrave", "u1EF3", - "yhook", "u01B4", - "yhookabove", "u1EF7", - "yiarmenian", "u0575", - "yicyrillic", "u0457", - "yikorean", "u3162", - "yinyang", "u262F", - "yiwnarmenian", "u0582", - "ymonospace", "uFF59", - "yod", "u05D9", - "yoddagesh", "uFB39", - "yoddageshhebrew", "uFB39", - "yodhebrew", "u05D9", - "yodyodhebrew", "u05F2", - "yodyodpatahhebrew", "uFB1F", - "yohiragana", "u3088", - "yoikorean", "u3189", - "yokatakana", "u30E8", - "yokatakanahalfwidth", "uFF96", - "yokorean", "u315B", - "yosmallhiragana", "u3087", - "yosmallkatakana", "u30E7", - "yosmallkatakanahalfwidth", "uFF6E", - "yotgreek", "u03F3", - "yoyaekorean", "u3188", - "yoyakorean", "u3187", - "yoyakthai", "u0E22", - "yoyingthai", "u0E0D", - "yparen", "u24B4", - "ypogegrammeni", "u037A", - "ypogegrammenigreekcmb", "u0345", - "yr", "u01A6", - "yring", "u1E99", - "ysuperior", "u02B8", - "ytilde", "u1EF9", - "yturned", "u028E", - "yuhiragana", "u3086", - "yuikorean", "u318C", - "yukatakana", "u30E6", - "yukatakanahalfwidth", "uFF95", - "yukorean", "u3160", - "yusbigcyrillic", "u046B", - "yusbigiotifiedcyrillic", "u046D", - "yuslittlecyrillic", "u0467", - "yuslittleiotifiedcyrillic", "u0469", - "yusmallhiragana", "u3085", - "yusmallkatakana", "u30E5", - "yusmallkatakanahalfwidth", "uFF6D", - "yuyekorean", "u318B", - "yuyeokorean", "u318A", - "yyabengali", "u09DF", - "yyadeva", "u095F", - "z", "u007A", - "zaarmenian", "u0566", - "zacute", "u017A", - "zadeva", "u095B", - "zagurmukhi", "u0A5B", - "zaharabic", "u0638", - "zahfinalarabic", "uFEC6", - "zahinitialarabic", "uFEC7", - "zahiragana", "u3056", - "zahmedialarabic", "uFEC8", - "zainarabic", "u0632", - "zainfinalarabic", "uFEB0", - "zakatakana", "u30B6", - "zaqefgadolhebrew", "u0595", - "zaqefqatanhebrew", "u0594", - "zarqahebrew", "u0598", - "zayin", "u05D6", - "zayindagesh", "uFB36", - "zayindageshhebrew", "uFB36", - "zayinhebrew", "u05D6", - "zbopomofo", "u3117", - "zcaron", "u017E", - "zcircle", "u24E9", - "zcircumflex", "u1E91", - "zcurl", "u0291", - "zdot", "u017C", - "zdotaccent", "u017C", - "zdotbelow", "u1E93", - "zecyrillic", "u0437", - "zedescendercyrillic", "u0499", - "zedieresiscyrillic", "u04DF", - "zehiragana", "u305C", - "zekatakana", "u30BC", - "zero", "u0030", - "zeroarabic", "u0660", - "zerobengali", "u09E6", - "zerodeva", "u0966", - "zerogujarati", "u0AE6", - "zerogurmukhi", "u0A66", - "zerohackarabic", "u0660", - "zeroinferior", "u2080", - "zeromonospace", "uFF10", - "zeropersian", "u06F0", - "zerosuperior", "u2070", - "zerothai", "u0E50", - "zerowidthjoiner", "uFEFF", - "zerowidthnonjoiner", "u200C", - "zerowidthspace", "u200B", - "zeta", "u03B6", - "zhbopomofo", "u3113", - "zhearmenian", "u056A", - "zhebrevecyrillic", "u04C2", - "zhecyrillic", "u0436", - "zhedescendercyrillic", "u0497", - "zhedieresiscyrillic", "u04DD", - "zihiragana", "u3058", - "zikatakana", "u30B8", - "zinorhebrew", "u05AE", - "zlinebelow", "u1E95", - "zmonospace", "uFF5A", - "zohiragana", "u305E", - "zokatakana", "u30BE", - "zparen", "u24B5", - "zretroflexhook", "u0290", - "zstroke", "u01B6", - "zuhiragana", "u305A", - "zukatakana", "u30BA", +my %AGL_to_unicode = ( + "A", "0041", + "AE", "00C6", + "AEacute", "01FC", + "AEmacron", "01E2", + "Aacute", "00C1", + "Abreve", "0102", + "Abreveacute", "1EAE", + "Abrevecyrillic", "04D0", + "Abrevedotbelow", "1EB6", + "Abrevegrave", "1EB0", + "Abrevehookabove", "1EB2", + "Abrevetilde", "1EB4", + "Acaron", "01CD", + "Acircle", "24B6", + "Acircumflex", "00C2", + "Acircumflexacute", "1EA4", + "Acircumflexdotbelow", "1EAC", + "Acircumflexgrave", "1EA6", + "Acircumflexhookabove", "1EA8", + "Acircumflextilde", "1EAA", + "Acyrillic", "0410", + "Adblgrave", "0200", + "Adieresis", "00C4", + "Adieresiscyrillic", "04D2", + "Adieresismacron", "01DE", + "Adotbelow", "1EA0", + "Adotmacron", "01E0", + "Agrave", "00C0", + "Ahookabove", "1EA2", + "Aiecyrillic", "04D4", + "Ainvertedbreve", "0202", + "Alpha", "0391", + "Alphatonos", "0386", + "Amacron", "0100", + "Amonospace", "FF21", + "Aogonek", "0104", + "Aring", "00C5", + "Aringacute", "01FA", + "Aringbelow", "1E00", + "Atilde", "00C3", + "Aybarmenian", "0531", + "B", "0042", + "Bcircle", "24B7", + "Bdotaccent", "1E02", + "Bdotbelow", "1E04", + "Becyrillic", "0411", + "Benarmenian", "0532", + "Beta", "0392", + "Bhook", "0181", + "Blinebelow", "1E06", + "Bmonospace", "FF22", + "Btopbar", "0182", + "C", "0043", + "Caarmenian", "053E", + "Cacute", "0106", + "Ccaron", "010C", + "Ccedilla", "00C7", + "Ccedillaacute", "1E08", + "Ccircle", "24B8", + "Ccircumflex", "0108", + "Cdot", "010A", + "Cdotaccent", "010A", + "Chaarmenian", "0549", + "Cheabkhasiancyrillic", "04BC", + "Checyrillic", "0427", + "Chedescenderabkhasiancyrillic", "04BE", + "Chedescendercyrillic", "04B6", + "Chedieresiscyrillic", "04F4", + "Cheharmenian", "0543", + "Chekhakassiancyrillic", "04CB", + "Cheverticalstrokecyrillic", "04B8", + "Chi", "03A7", + "Chook", "0187", + "Cmonospace", "FF23", + "Coarmenian", "0551", + "D", "0044", + "DZ", "01F1", + "DZcaron", "01C4", + "Daarmenian", "0534", + "Dafrican", "0189", + "Dcaron", "010E", + "Dcedilla", "1E10", + "Dcircle", "24B9", + "Dcircumflexbelow", "1E12", + "Dcroat", "0110", + "Ddotaccent", "1E0A", + "Ddotbelow", "1E0C", + "Decyrillic", "0414", + "Deicoptic", "03EE", + "Delta", "2206", + "Deltagreek", "0394", + "Dhook", "018A", + "Digammagreek", "03DC", + "Djecyrillic", "0402", + "Dlinebelow", "1E0E", + "Dmonospace", "FF24", + "Dslash", "0110", + "Dtopbar", "018B", + "Dz", "01F2", + "Dzcaron", "01C5", + "Dzeabkhasiancyrillic", "04E0", + "Dzecyrillic", "0405", + "Dzhecyrillic", "040F", + "E", "0045", + "Eacute", "00C9", + "Ebreve", "0114", + "Ecaron", "011A", + "Ecedillabreve", "1E1C", + "Echarmenian", "0535", + "Ecircle", "24BA", + "Ecircumflex", "00CA", + "Ecircumflexacute", "1EBE", + "Ecircumflexbelow", "1E18", + "Ecircumflexdotbelow", "1EC6", + "Ecircumflexgrave", "1EC0", + "Ecircumflexhookabove", "1EC2", + "Ecircumflextilde", "1EC4", + "Ecyrillic", "0404", + "Edblgrave", "0204", + "Edieresis", "00CB", + "Edot", "0116", + "Edotaccent", "0116", + "Edotbelow", "1EB8", + "Efcyrillic", "0424", + "Egrave", "00C8", + "Eharmenian", "0537", + "Ehookabove", "1EBA", + "Eightroman", "2167", + "Einvertedbreve", "0206", + "Eiotifiedcyrillic", "0464", + "Elcyrillic", "041B", + "Elevenroman", "216A", + "Emacron", "0112", + "Emacronacute", "1E16", + "Emacrongrave", "1E14", + "Emcyrillic", "041C", + "Emonospace", "FF25", + "Encyrillic", "041D", + "Endescendercyrillic", "04A2", + "Eng", "014A", + "Enghecyrillic", "04A4", + "Enhookcyrillic", "04C7", + "Eogonek", "0118", + "Eopen", "0190", + "Epsilon", "0395", + "Epsilontonos", "0388", + "Ercyrillic", "0420", + "Ereversed", "018E", + "Ereversedcyrillic", "042D", + "Escyrillic", "0421", + "Esdescendercyrillic", "04AA", + "Esh", "01A9", + "Eta", "0397", + "Etarmenian", "0538", + "Etatonos", "0389", + "Eth", "00D0", + "Etilde", "1EBC", + "Etildebelow", "1E1A", + "Euro", "20AC", + "Ezh", "01B7", + "Ezhcaron", "01EE", + "Ezhreversed", "01B8", + "F", "0046", + "Fcircle", "24BB", + "Fdotaccent", "1E1E", + "Feharmenian", "0556", + "Feicoptic", "03E4", + "Fhook", "0191", + "Fitacyrillic", "0472", + "Fiveroman", "2164", + "Fmonospace", "FF26", + "Fourroman", "2163", + "G", "0047", + "GBsquare", "3387", + "Gacute", "01F4", + "Gamma", "0393", + "Gammaafrican", "0194", + "Gangiacoptic", "03EA", + "Gbreve", "011E", + "Gcaron", "01E6", + "Gcedilla", "0122", + "Gcircle", "24BC", + "Gcircumflex", "011C", + "Gcommaaccent", "0122", + "Gdot", "0120", + "Gdotaccent", "0120", + "Gecyrillic", "0413", + "Ghadarmenian", "0542", + "Ghemiddlehookcyrillic", "0494", + "Ghestrokecyrillic", "0492", + "Gheupturncyrillic", "0490", + "Ghook", "0193", + "Gimarmenian", "0533", + "Gjecyrillic", "0403", + "Gmacron", "1E20", + "Gmonospace", "FF27", + "Gsmallhook", "029B", + "Gstroke", "01E4", + "H", "0048", + "H18533", "25CF", + "H18543", "25AA", + "H18551", "25AB", + "H22073", "25A1", + "HPsquare", "33CB", + "Haabkhasiancyrillic", "04A8", + "Hadescendercyrillic", "04B2", + "Hardsigncyrillic", "042A", + "Hbar", "0126", + "Hbrevebelow", "1E2A", + "Hcedilla", "1E28", + "Hcircle", "24BD", + "Hcircumflex", "0124", + "Hdieresis", "1E26", + "Hdotaccent", "1E22", + "Hdotbelow", "1E24", + "Hmonospace", "FF28", + "Hoarmenian", "0540", + "Horicoptic", "03E8", + "Hzsquare", "3390", + "I", "0049", + "IAcyrillic", "042F", + "IJ", "0132", + "IUcyrillic", "042E", + "Iacute", "00CD", + "Ibreve", "012C", + "Icaron", "01CF", + "Icircle", "24BE", + "Icircumflex", "00CE", + "Icyrillic", "0406", + "Idblgrave", "0208", + "Idieresis", "00CF", + "Idieresisacute", "1E2E", + "Idieresiscyrillic", "04E4", + "Idot", "0130", + "Idotaccent", "0130", + "Idotbelow", "1ECA", + "Iebrevecyrillic", "04D6", + "Iecyrillic", "0415", + "Ifraktur", "2111", + "Igrave", "00CC", + "Ihookabove", "1EC8", + "Iicyrillic", "0418", + "Iinvertedbreve", "020A", + "Iishortcyrillic", "0419", + "Imacron", "012A", + "Imacroncyrillic", "04E2", + "Imonospace", "FF29", + "Iniarmenian", "053B", + "Iocyrillic", "0401", + "Iogonek", "012E", + "Iota", "0399", + "Iotaafrican", "0196", + "Iotadieresis", "03AA", + "Iotatonos", "038A", + "Istroke", "0197", + "Itilde", "0128", + "Itildebelow", "1E2C", + "Izhitsacyrillic", "0474", + "Izhitsadblgravecyrillic", "0476", + "J", "004A", + "Jaarmenian", "0541", + "Jcircle", "24BF", + "Jcircumflex", "0134", + "Jecyrillic", "0408", + "Jheharmenian", "054B", + "Jmonospace", "FF2A", + "K", "004B", + "KBsquare", "3385", + "KKsquare", "33CD", + "Kabashkircyrillic", "04A0", + "Kacute", "1E30", + "Kacyrillic", "041A", + "Kadescendercyrillic", "049A", + "Kahookcyrillic", "04C3", + "Kappa", "039A", + "Kastrokecyrillic", "049E", + "Kaverticalstrokecyrillic", "049C", + "Kcaron", "01E8", + "Kcedilla", "0136", + "Kcircle", "24C0", + "Kcommaaccent", "0136", + "Kdotbelow", "1E32", + "Keharmenian", "0554", + "Kenarmenian", "053F", + "Khacyrillic", "0425", + "Kheicoptic", "03E6", + "Khook", "0198", + "Kjecyrillic", "040C", + "Klinebelow", "1E34", + "Kmonospace", "FF2B", + "Koppacyrillic", "0480", + "Koppagreek", "03DE", + "Ksicyrillic", "046E", + "L", "004C", + "LJ", "01C7", + "Lacute", "0139", + "Lambda", "039B", + "Lcaron", "013D", + "Lcedilla", "013B", + "Lcircle", "24C1", + "Lcircumflexbelow", "1E3C", + "Lcommaaccent", "013B", + "Ldot", "013F", + "Ldotaccent", "013F", + "Ldotbelow", "1E36", + "Ldotbelowmacron", "1E38", + "Liwnarmenian", "053C", + "Lj", "01C8", + "Ljecyrillic", "0409", + "Llinebelow", "1E3A", + "Lmonospace", "FF2C", + "Lslash", "0141", + "M", "004D", + "MBsquare", "3386", + "Macute", "1E3E", + "Mcircle", "24C2", + "Mdotaccent", "1E40", + "Mdotbelow", "1E42", + "Menarmenian", "0544", + "Mmonospace", "FF2D", + "Mturned", "019C", + "Mu", "039C", + "N", "004E", + "NJ", "01CA", + "Nacute", "0143", + "Ncaron", "0147", + "Ncedilla", "0145", + "Ncircle", "24C3", + "Ncircumflexbelow", "1E4A", + "Ncommaaccent", "0145", + "Ndotaccent", "1E44", + "Ndotbelow", "1E46", + "Nhookleft", "019D", + "Nineroman", "2168", + "Nj", "01CB", + "Njecyrillic", "040A", + "Nlinebelow", "1E48", + "Nmonospace", "FF2E", + "Nowarmenian", "0546", + "Ntilde", "00D1", + "Nu", "039D", + "O", "004F", + "OE", "0152", + "Oacute", "00D3", + "Obarredcyrillic", "04E8", + "Obarreddieresiscyrillic", "04EA", + "Obreve", "014E", + "Ocaron", "01D1", + "Ocenteredtilde", "019F", + "Ocircle", "24C4", + "Ocircumflex", "00D4", + "Ocircumflexacute", "1ED0", + "Ocircumflexdotbelow", "1ED8", + "Ocircumflexgrave", "1ED2", + "Ocircumflexhookabove", "1ED4", + "Ocircumflextilde", "1ED6", + "Ocyrillic", "041E", + "Odblacute", "0150", + "Odblgrave", "020C", + "Odieresis", "00D6", + "Odieresiscyrillic", "04E6", + "Odotbelow", "1ECC", + "Ograve", "00D2", + "Oharmenian", "0555", + "Ohm", "2126", + "Ohookabove", "1ECE", + "Ohorn", "01A0", + "Ohornacute", "1EDA", + "Ohorndotbelow", "1EE2", + "Ohorngrave", "1EDC", + "Ohornhookabove", "1EDE", + "Ohorntilde", "1EE0", + "Ohungarumlaut", "0150", + "Oi", "01A2", + "Oinvertedbreve", "020E", + "Omacron", "014C", + "Omacronacute", "1E52", + "Omacrongrave", "1E50", + "Omega", "2126", + "Omegacyrillic", "0460", + "Omegagreek", "03A9", + "Omegaroundcyrillic", "047A", + "Omegatitlocyrillic", "047C", + "Omegatonos", "038F", + "Omicron", "039F", + "Omicrontonos", "038C", + "Omonospace", "FF2F", + "Oneroman", "2160", + "Oogonek", "01EA", + "Oogonekmacron", "01EC", + "Oopen", "0186", + "Oslash", "00D8", + "Oslashacute", "01FE", + "Ostrokeacute", "01FE", + "Otcyrillic", "047E", + "Otilde", "00D5", + "Otildeacute", "1E4C", + "Otildedieresis", "1E4E", + "P", "0050", + "Pacute", "1E54", + "Pcircle", "24C5", + "Pdotaccent", "1E56", + "Pecyrillic", "041F", + "Peharmenian", "054A", + "Pemiddlehookcyrillic", "04A6", + "Phi", "03A6", + "Phook", "01A4", + "Pi", "03A0", + "Piwrarmenian", "0553", + "Pmonospace", "FF30", + "Psi", "03A8", + "Psicyrillic", "0470", + "Q", "0051", + "Qcircle", "24C6", + "Qmonospace", "FF31", + "R", "0052", + "Raarmenian", "054C", + "Racute", "0154", + "Rcaron", "0158", + "Rcedilla", "0156", + "Rcircle", "24C7", + "Rcommaaccent", "0156", + "Rdblgrave", "0210", + "Rdotaccent", "1E58", + "Rdotbelow", "1E5A", + "Rdotbelowmacron", "1E5C", + "Reharmenian", "0550", + "Rfraktur", "211C", + "Rho", "03A1", + "Rinvertedbreve", "0212", + "Rlinebelow", "1E5E", + "Rmonospace", "FF32", + "Rsmallinverted", "0281", + "Rsmallinvertedsuperior", "02B6", + "S", "0053", + "SF010000", "250C", + "SF020000", "2514", + "SF030000", "2510", + "SF040000", "2518", + "SF050000", "253C", + "SF060000", "252C", + "SF070000", "2534", + "SF080000", "251C", + "SF090000", "2524", + "SF100000", "2500", + "SF110000", "2502", + "SF190000", "2561", + "SF200000", "2562", + "SF210000", "2556", + "SF220000", "2555", + "SF230000", "2563", + "SF240000", "2551", + "SF250000", "2557", + "SF260000", "255D", + "SF270000", "255C", + "SF280000", "255B", + "SF360000", "255E", + "SF370000", "255F", + "SF380000", "255A", + "SF390000", "2554", + "SF400000", "2569", + "SF410000", "2566", + "SF420000", "2560", + "SF430000", "2550", + "SF440000", "256C", + "SF450000", "2567", + "SF460000", "2568", + "SF470000", "2564", + "SF480000", "2565", + "SF490000", "2559", + "SF500000", "2558", + "SF510000", "2552", + "SF520000", "2553", + "SF530000", "256B", + "SF540000", "256A", + "Sacute", "015A", + "Sacutedotaccent", "1E64", + "Sampigreek", "03E0", + "Scaron", "0160", + "Scarondotaccent", "1E66", + "Scedilla", "015E", + "Schwa", "018F", + "Schwacyrillic", "04D8", + "Schwadieresiscyrillic", "04DA", + "Scircle", "24C8", + "Scircumflex", "015C", + "Scommaaccent", "0218", + "Sdotaccent", "1E60", + "Sdotbelow", "1E62", + "Sdotbelowdotaccent", "1E68", + "Seharmenian", "054D", + "Sevenroman", "2166", + "Shaarmenian", "0547", + "Shacyrillic", "0428", + "Shchacyrillic", "0429", + "Sheicoptic", "03E2", + "Shhacyrillic", "04BA", + "Shimacoptic", "03EC", + "Sigma", "03A3", + "Sixroman", "2165", + "Smonospace", "FF33", + "Softsigncyrillic", "042C", + "Stigmagreek", "03DA", + "T", "0054", + "Tau", "03A4", + "Tbar", "0166", + "Tcaron", "0164", + "Tcedilla", "0162", + "Tcircle", "24C9", + "Tcircumflexbelow", "1E70", + "Tcommaaccent", "0162", + "Tdotaccent", "1E6A", + "Tdotbelow", "1E6C", + "Tecyrillic", "0422", + "Tedescendercyrillic", "04AC", + "Tenroman", "2169", + "Tetsecyrillic", "04B4", + "Theta", "0398", + "Thook", "01AC", + "Thorn", "00DE", + "Threeroman", "2162", + "Tiwnarmenian", "054F", + "Tlinebelow", "1E6E", + "Tmonospace", "FF34", + "Toarmenian", "0539", + "Tonefive", "01BC", + "Tonesix", "0184", + "Tonetwo", "01A7", + "Tretroflexhook", "01AE", + "Tsecyrillic", "0426", + "Tshecyrillic", "040B", + "Twelveroman", "216B", + "Tworoman", "2161", + "U", "0055", + "Uacute", "00DA", + "Ubreve", "016C", + "Ucaron", "01D3", + "Ucircle", "24CA", + "Ucircumflex", "00DB", + "Ucircumflexbelow", "1E76", + "Ucyrillic", "0423", + "Udblacute", "0170", + "Udblgrave", "0214", + "Udieresis", "00DC", + "Udieresisacute", "01D7", + "Udieresisbelow", "1E72", + "Udieresiscaron", "01D9", + "Udieresiscyrillic", "04F0", + "Udieresisgrave", "01DB", + "Udieresismacron", "01D5", + "Udotbelow", "1EE4", + "Ugrave", "00D9", + "Uhookabove", "1EE6", + "Uhorn", "01AF", + "Uhornacute", "1EE8", + "Uhorndotbelow", "1EF0", + "Uhorngrave", "1EEA", + "Uhornhookabove", "1EEC", + "Uhorntilde", "1EEE", + "Uhungarumlaut", "0170", + "Uhungarumlautcyrillic", "04F2", + "Uinvertedbreve", "0216", + "Ukcyrillic", "0478", + "Umacron", "016A", + "Umacroncyrillic", "04EE", + "Umacrondieresis", "1E7A", + "Umonospace", "FF35", + "Uogonek", "0172", + "Upsilon", "03A5", + "Upsilon1", "03D2", + "Upsilonacutehooksymbolgreek", "03D3", + "Upsilonafrican", "01B1", + "Upsilondieresis", "03AB", + "Upsilondieresishooksymbolgreek", "03D4", + "Upsilonhooksymbol", "03D2", + "Upsilontonos", "038E", + "Uring", "016E", + "Ushortcyrillic", "040E", + "Ustraightcyrillic", "04AE", + "Ustraightstrokecyrillic", "04B0", + "Utilde", "0168", + "Utildeacute", "1E78", + "Utildebelow", "1E74", + "V", "0056", + "Vcircle", "24CB", + "Vdotbelow", "1E7E", + "Vecyrillic", "0412", + "Vewarmenian", "054E", + "Vhook", "01B2", + "Vmonospace", "FF36", + "Voarmenian", "0548", + "Vtilde", "1E7C", + "W", "0057", + "Wacute", "1E82", + "Wcircle", "24CC", + "Wcircumflex", "0174", + "Wdieresis", "1E84", + "Wdotaccent", "1E86", + "Wdotbelow", "1E88", + "Wgrave", "1E80", + "Wmonospace", "FF37", + "X", "0058", + "Xcircle", "24CD", + "Xdieresis", "1E8C", + "Xdotaccent", "1E8A", + "Xeharmenian", "053D", + "Xi", "039E", + "Xmonospace", "FF38", + "Y", "0059", + "Yacute", "00DD", + "Yatcyrillic", "0462", + "Ycircle", "24CE", + "Ycircumflex", "0176", + "Ydieresis", "0178", + "Ydotaccent", "1E8E", + "Ydotbelow", "1EF4", + "Yericyrillic", "042B", + "Yerudieresiscyrillic", "04F8", + "Ygrave", "1EF2", + "Yhook", "01B3", + "Yhookabove", "1EF6", + "Yiarmenian", "0545", + "Yicyrillic", "0407", + "Yiwnarmenian", "0552", + "Ymonospace", "FF39", + "Ytilde", "1EF8", + "Yusbigcyrillic", "046A", + "Yusbigiotifiedcyrillic", "046C", + "Yuslittlecyrillic", "0466", + "Yuslittleiotifiedcyrillic", "0468", + "Z", "005A", + "Zaarmenian", "0536", + "Zacute", "0179", + "Zcaron", "017D", + "Zcircle", "24CF", + "Zcircumflex", "1E90", + "Zdot", "017B", + "Zdotaccent", "017B", + "Zdotbelow", "1E92", + "Zecyrillic", "0417", + "Zedescendercyrillic", "0498", + "Zedieresiscyrillic", "04DE", + "Zeta", "0396", + "Zhearmenian", "053A", + "Zhebrevecyrillic", "04C1", + "Zhecyrillic", "0416", + "Zhedescendercyrillic", "0496", + "Zhedieresiscyrillic", "04DC", + "Zlinebelow", "1E94", + "Zmonospace", "FF3A", + "Zstroke", "01B5", + "a", "0061", + "aabengali", "0986", + "aacute", "00E1", + "aadeva", "0906", + "aagujarati", "0A86", + "aagurmukhi", "0A06", + "aamatragurmukhi", "0A3E", + "aarusquare", "3303", + "aavowelsignbengali", "09BE", + "aavowelsigndeva", "093E", + "aavowelsigngujarati", "0ABE", + "abbreviationmarkarmenian", "055F", + "abbreviationsigndeva", "0970", + "abengali", "0985", + "abopomofo", "311A", + "abreve", "0103", + "abreveacute", "1EAF", + "abrevecyrillic", "04D1", + "abrevedotbelow", "1EB7", + "abrevegrave", "1EB1", + "abrevehookabove", "1EB3", + "abrevetilde", "1EB5", + "acaron", "01CE", + "acircle", "24D0", + "acircumflex", "00E2", + "acircumflexacute", "1EA5", + "acircumflexdotbelow", "1EAD", + "acircumflexgrave", "1EA7", + "acircumflexhookabove", "1EA9", + "acircumflextilde", "1EAB", + "acute", "00B4", + "acutebelowcmb", "0317", + "acutecmb", "0301", + "acutecomb", "0301", + "acutedeva", "0954", + "acutelowmod", "02CF", + "acutetonecmb", "0341", + "acyrillic", "0430", + "adblgrave", "0201", + "addakgurmukhi", "0A71", + "adeva", "0905", + "adieresis", "00E4", + "adieresiscyrillic", "04D3", + "adieresismacron", "01DF", + "adotbelow", "1EA1", + "adotmacron", "01E1", + "ae", "00E6", + "aeacute", "01FD", + "aekorean", "3150", + "aemacron", "01E3", + "afii00208", "2015", + "afii08941", "20A4", + "afii10017", "0410", + "afii10018", "0411", + "afii10019", "0412", + "afii10020", "0413", + "afii10021", "0414", + "afii10022", "0415", + "afii10023", "0401", + "afii10024", "0416", + "afii10025", "0417", + "afii10026", "0418", + "afii10027", "0419", + "afii10028", "041A", + "afii10029", "041B", + "afii10030", "041C", + "afii10031", "041D", + "afii10032", "041E", + "afii10033", "041F", + "afii10034", "0420", + "afii10035", "0421", + "afii10036", "0422", + "afii10037", "0423", + "afii10038", "0424", + "afii10039", "0425", + "afii10040", "0426", + "afii10041", "0427", + "afii10042", "0428", + "afii10043", "0429", + "afii10044", "042A", + "afii10045", "042B", + "afii10046", "042C", + "afii10047", "042D", + "afii10048", "042E", + "afii10049", "042F", + "afii10050", "0490", + "afii10051", "0402", + "afii10052", "0403", + "afii10053", "0404", + "afii10054", "0405", + "afii10055", "0406", + "afii10056", "0407", + "afii10057", "0408", + "afii10058", "0409", + "afii10059", "040A", + "afii10060", "040B", + "afii10061", "040C", + "afii10062", "040E", + "afii10065", "0430", + "afii10066", "0431", + "afii10067", "0432", + "afii10068", "0433", + "afii10069", "0434", + "afii10070", "0435", + "afii10071", "0451", + "afii10072", "0436", + "afii10073", "0437", + "afii10074", "0438", + "afii10075", "0439", + "afii10076", "043A", + "afii10077", "043B", + "afii10078", "043C", + "afii10079", "043D", + "afii10080", "043E", + "afii10081", "043F", + "afii10082", "0440", + "afii10083", "0441", + "afii10084", "0442", + "afii10085", "0443", + "afii10086", "0444", + "afii10087", "0445", + "afii10088", "0446", + "afii10089", "0447", + "afii10090", "0448", + "afii10091", "0449", + "afii10092", "044A", + "afii10093", "044B", + "afii10094", "044C", + "afii10095", "044D", + "afii10096", "044E", + "afii10097", "044F", + "afii10098", "0491", + "afii10099", "0452", + "afii10100", "0453", + "afii10101", "0454", + "afii10102", "0455", + "afii10103", "0456", + "afii10104", "0457", + "afii10105", "0458", + "afii10106", "0459", + "afii10107", "045A", + "afii10108", "045B", + "afii10109", "045C", + "afii10110", "045E", + "afii10145", "040F", + "afii10146", "0462", + "afii10147", "0472", + "afii10148", "0474", + "afii10193", "045F", + "afii10194", "0463", + "afii10195", "0473", + "afii10196", "0475", + "afii10846", "04D9", + "afii299", "200E", + "afii300", "200F", + "afii301", "200D", + "afii57381", "066A", + "afii57388", "060C", + "afii57392", "0660", + "afii57393", "0661", + "afii57394", "0662", + "afii57395", "0663", + "afii57396", "0664", + "afii57397", "0665", + "afii57398", "0666", + "afii57399", "0667", + "afii57400", "0668", + "afii57401", "0669", + "afii57403", "061B", + "afii57407", "061F", + "afii57409", "0621", + "afii57410", "0622", + "afii57411", "0623", + "afii57412", "0624", + "afii57413", "0625", + "afii57414", "0626", + "afii57415", "0627", + "afii57416", "0628", + "afii57417", "0629", + "afii57418", "062A", + "afii57419", "062B", + "afii57420", "062C", + "afii57421", "062D", + "afii57422", "062E", + "afii57423", "062F", + "afii57424", "0630", + "afii57425", "0631", + "afii57426", "0632", + "afii57427", "0633", + "afii57428", "0634", + "afii57429", "0635", + "afii57430", "0636", + "afii57431", "0637", + "afii57432", "0638", + "afii57433", "0639", + "afii57434", "063A", + "afii57440", "0640", + "afii57441", "0641", + "afii57442", "0642", + "afii57443", "0643", + "afii57444", "0644", + "afii57445", "0645", + "afii57446", "0646", + "afii57448", "0648", + "afii57449", "0649", + "afii57450", "064A", + "afii57451", "064B", + "afii57452", "064C", + "afii57453", "064D", + "afii57454", "064E", + "afii57455", "064F", + "afii57456", "0650", + "afii57457", "0651", + "afii57458", "0652", + "afii57470", "0647", + "afii57505", "06A4", + "afii57506", "067E", + "afii57507", "0686", + "afii57508", "0698", + "afii57509", "06AF", + "afii57511", "0679", + "afii57512", "0688", + "afii57513", "0691", + "afii57514", "06BA", + "afii57519", "06D2", + "afii57534", "06D5", + "afii57636", "20AA", + "afii57645", "05BE", + "afii57658", "05C3", + "afii57664", "05D0", + "afii57665", "05D1", + "afii57666", "05D2", + "afii57667", "05D3", + "afii57668", "05D4", + "afii57669", "05D5", + "afii57670", "05D6", + "afii57671", "05D7", + "afii57672", "05D8", + "afii57673", "05D9", + "afii57674", "05DA", + "afii57675", "05DB", + "afii57676", "05DC", + "afii57677", "05DD", + "afii57678", "05DE", + "afii57679", "05DF", + "afii57680", "05E0", + "afii57681", "05E1", + "afii57682", "05E2", + "afii57683", "05E3", + "afii57684", "05E4", + "afii57685", "05E5", + "afii57686", "05E6", + "afii57687", "05E7", + "afii57688", "05E8", + "afii57689", "05E9", + "afii57690", "05EA", + "afii57694", "FB2A", + "afii57695", "FB2B", + "afii57700", "FB4B", + "afii57705", "FB1F", + "afii57716", "05F0", + "afii57717", "05F1", + "afii57718", "05F2", + "afii57723", "FB35", + "afii57793", "05B4", + "afii57794", "05B5", + "afii57795", "05B6", + "afii57796", "05BB", + "afii57797", "05B8", + "afii57798", "05B7", + "afii57799", "05B0", + "afii57800", "05B2", + "afii57801", "05B1", + "afii57802", "05B3", + "afii57803", "05C2", + "afii57804", "05C1", + "afii57806", "05B9", + "afii57807", "05BC", + "afii57839", "05BD", + "afii57841", "05BF", + "afii57842", "05C0", + "afii57929", "02BC", + "afii61248", "2105", + "afii61289", "2113", + "afii61352", "2116", + "afii61573", "202C", + "afii61574", "202D", + "afii61575", "202E", + "afii61664", "200C", + "afii63167", "066D", + "afii64937", "02BD", + "agrave", "00E0", + "agujarati", "0A85", + "agurmukhi", "0A05", + "ahiragana", "3042", + "ahookabove", "1EA3", + "aibengali", "0990", + "aibopomofo", "311E", + "aideva", "0910", + "aiecyrillic", "04D5", + "aigujarati", "0A90", + "aigurmukhi", "0A10", + "aimatragurmukhi", "0A48", + "ainarabic", "0639", + "ainfinalarabic", "FECA", + "aininitialarabic", "FECB", + "ainmedialarabic", "FECC", + "ainvertedbreve", "0203", + "aivowelsignbengali", "09C8", + "aivowelsigndeva", "0948", + "aivowelsigngujarati", "0AC8", + "akatakana", "30A2", + "akatakanahalfwidth", "FF71", + "akorean", "314F", + "alef", "05D0", + "alefarabic", "0627", + "alefdageshhebrew", "FB30", + "aleffinalarabic", "FE8E", + "alefhamzaabovearabic", "0623", + "alefhamzaabovefinalarabic", "FE84", + "alefhamzabelowarabic", "0625", + "alefhamzabelowfinalarabic", "FE88", + "alefhebrew", "05D0", + "aleflamedhebrew", "FB4F", + "alefmaddaabovearabic", "0622", + "alefmaddaabovefinalarabic", "FE82", + "alefmaksuraarabic", "0649", + "alefmaksurafinalarabic", "FEF0", + "alefmaksurainitialarabic", "FEF3", + "alefmaksuramedialarabic", "FEF4", + "alefpatahhebrew", "FB2E", + "alefqamatshebrew", "FB2F", + "aleph", "2135", + "allequal", "224C", + "alpha", "03B1", + "alphatonos", "03AC", + "amacron", "0101", + "amonospace", "FF41", + "ampersand", "0026", + "ampersandmonospace", "FF06", + "amsquare", "33C2", + "anbopomofo", "3122", + "angbopomofo", "3124", + "angkhankhuthai", "0E5A", + "angle", "2220", + "anglebracketleft", "3008", + "anglebracketleftvertical", "FE3F", + "anglebracketright", "3009", + "anglebracketrightvertical", "FE40", + "angleleft", "2329", + "angleright", "232A", + "angstrom", "212B", + "anoteleia", "0387", + "anudattadeva", "0952", + "anusvarabengali", "0982", + "anusvaradeva", "0902", + "anusvaragujarati", "0A82", + "aogonek", "0105", + "apaatosquare", "3300", + "aparen", "249C", + "apostrophearmenian", "055A", + "apostrophemod", "02BC", + "approaches", "2250", + "approxequal", "2248", + "approxequalorimage", "2252", + "approximatelyequal", "2245", + "araeaekorean", "318E", + "araeakorean", "318D", + "arc", "2312", + "arighthalfring", "1E9A", + "aring", "00E5", + "aringacute", "01FB", + "aringbelow", "1E01", + "arrowboth", "2194", + "arrowdashdown", "21E3", + "arrowdashleft", "21E0", + "arrowdashright", "21E2", + "arrowdashup", "21E1", + "arrowdblboth", "21D4", + "arrowdbldown", "21D3", + "arrowdblleft", "21D0", + "arrowdblright", "21D2", + "arrowdblup", "21D1", + "arrowdown", "2193", + "arrowdownleft", "2199", + "arrowdownright", "2198", + "arrowdownwhite", "21E9", + "arrowheaddownmod", "02C5", + "arrowheadleftmod", "02C2", + "arrowheadrightmod", "02C3", + "arrowheadupmod", "02C4", + "arrowleft", "2190", + "arrowleftdbl", "21D0", + "arrowleftdblstroke", "21CD", + "arrowleftoverright", "21C6", + "arrowleftwhite", "21E6", + "arrowright", "2192", + "arrowrightdblstroke", "21CF", + "arrowrightheavy", "279E", + "arrowrightoverleft", "21C4", + "arrowrightwhite", "21E8", + "arrowtableft", "21E4", + "arrowtabright", "21E5", + "arrowup", "2191", + "arrowupdn", "2195", + "arrowupdnbse", "21A8", + "arrowupdownbase", "21A8", + "arrowupleft", "2196", + "arrowupleftofdown", "21C5", + "arrowupright", "2197", + "arrowupwhite", "21E7", + "asciicircum", "005E", + "asciicircummonospace", "FF3E", + "asciitilde", "007E", + "asciitildemonospace", "FF5E", + "ascript", "0251", + "ascriptturned", "0252", + "asmallhiragana", "3041", + "asmallkatakana", "30A1", + "asmallkatakanahalfwidth", "FF67", + "asterisk", "002A", + "asteriskaltonearabic", "066D", + "asteriskarabic", "066D", + "asteriskmath", "2217", + "asteriskmonospace", "FF0A", + "asterisksmall", "FE61", + "asterism", "2042", + "asymptoticallyequal", "2243", + "at", "0040", + "atilde", "00E3", + "atmonospace", "FF20", + "atsmall", "FE6B", + "aturned", "0250", + "aubengali", "0994", + "aubopomofo", "3120", + "audeva", "0914", + "augujarati", "0A94", + "augurmukhi", "0A14", + "aulengthmarkbengali", "09D7", + "aumatragurmukhi", "0A4C", + "auvowelsignbengali", "09CC", + "auvowelsigndeva", "094C", + "auvowelsigngujarati", "0ACC", + "avagrahadeva", "093D", + "aybarmenian", "0561", + "ayin", "05E2", + "ayinaltonehebrew", "FB20", + "ayinhebrew", "05E2", + "b", "0062", + "babengali", "09AC", + "backslash", "005C", + "backslashmonospace", "FF3C", + "badeva", "092C", + "bagujarati", "0AAC", + "bagurmukhi", "0A2C", + "bahiragana", "3070", + "bahtthai", "0E3F", + "bakatakana", "30D0", + "bar", "007C", + "barmonospace", "FF5C", + "bbopomofo", "3105", + "bcircle", "24D1", + "bdotaccent", "1E03", + "bdotbelow", "1E05", + "beamedsixteenthnotes", "266C", + "because", "2235", + "becyrillic", "0431", + "beharabic", "0628", + "behfinalarabic", "FE90", + "behinitialarabic", "FE91", + "behiragana", "3079", + "behmedialarabic", "FE92", + "behmeeminitialarabic", "FC9F", + "behmeemisolatedarabic", "FC08", + "behnoonfinalarabic", "FC6D", + "bekatakana", "30D9", + "benarmenian", "0562", + "bet", "05D1", + "beta", "03B2", + "betasymbolgreek", "03D0", + "betdagesh", "FB31", + "betdageshhebrew", "FB31", + "bethebrew", "05D1", + "betrafehebrew", "FB4C", + "bhabengali", "09AD", + "bhadeva", "092D", + "bhagujarati", "0AAD", + "bhagurmukhi", "0A2D", + "bhook", "0253", + "bihiragana", "3073", + "bikatakana", "30D3", + "bilabialclick", "0298", + "bindigurmukhi", "0A02", + "birusquare", "3331", + "blackcircle", "25CF", + "blackdiamond", "25C6", + "blackdownpointingtriangle", "25BC", + "blackleftpointingpointer", "25C4", + "blackleftpointingtriangle", "25C0", + "blacklenticularbracketleft", "3010", + "blacklenticularbracketleftvertical", "FE3B", + "blacklenticularbracketright", "3011", + "blacklenticularbracketrightvertical", "FE3C", + "blacklowerlefttriangle", "25E3", + "blacklowerrighttriangle", "25E2", + "blackrectangle", "25AC", + "blackrightpointingpointer", "25BA", + "blackrightpointingtriangle", "25B6", + "blacksmallsquare", "25AA", + "blacksmilingface", "263B", + "blacksquare", "25A0", + "blackstar", "2605", + "blackupperlefttriangle", "25E4", + "blackupperrighttriangle", "25E5", + "blackuppointingsmalltriangle", "25B4", + "blackuppointingtriangle", "25B2", + "blank", "2423", + "blinebelow", "1E07", + "block", "2588", + "bmonospace", "FF42", + "bobaimaithai", "0E1A", + "bohiragana", "307C", + "bokatakana", "30DC", + "bparen", "249D", + "bqsquare", "33C3", + "braceleft", "007B", + "braceleftmonospace", "FF5B", + "braceleftsmall", "FE5B", + "braceleftvertical", "FE37", + "braceright", "007D", + "bracerightmonospace", "FF5D", + "bracerightsmall", "FE5C", + "bracerightvertical", "FE38", + "bracketleft", "005B", + "bracketleftmonospace", "FF3B", + "bracketright", "005D", + "bracketrightmonospace", "FF3D", + "breve", "02D8", + "brevebelowcmb", "032E", + "brevecmb", "0306", + "breveinvertedbelowcmb", "032F", + "breveinvertedcmb", "0311", + "breveinverteddoublecmb", "0361", + "bridgebelowcmb", "032A", + "bridgeinvertedbelowcmb", "033A", + "brokenbar", "00A6", + "bstroke", "0180", + "btopbar", "0183", + "buhiragana", "3076", + "bukatakana", "30D6", + "bullet", "2022", + "bulletinverse", "25D8", + "bulletoperator", "2219", + "bullseye", "25CE", + "c", "0063", + "caarmenian", "056E", + "cabengali", "099A", + "cacute", "0107", + "cadeva", "091A", + "cagujarati", "0A9A", + "cagurmukhi", "0A1A", + "calsquare", "3388", + "candrabindubengali", "0981", + "candrabinducmb", "0310", + "candrabindudeva", "0901", + "candrabindugujarati", "0A81", + "capslock", "21EA", + "careof", "2105", + "caron", "02C7", + "caronbelowcmb", "032C", + "caroncmb", "030C", + "carriagereturn", "21B5", + "cbopomofo", "3118", + "ccaron", "010D", + "ccedilla", "00E7", + "ccedillaacute", "1E09", + "ccircle", "24D2", + "ccircumflex", "0109", + "ccurl", "0255", + "cdot", "010B", + "cdotaccent", "010B", + "cdsquare", "33C5", + "cedilla", "00B8", + "cedillacmb", "0327", + "cent", "00A2", + "centigrade", "2103", + "centmonospace", "FFE0", + "chaarmenian", "0579", + "chabengali", "099B", + "chadeva", "091B", + "chagujarati", "0A9B", + "chagurmukhi", "0A1B", + "chbopomofo", "3114", + "cheabkhasiancyrillic", "04BD", + "checkmark", "2713", + "checyrillic", "0447", + "chedescenderabkhasiancyrillic", "04BF", + "chedescendercyrillic", "04B7", + "chedieresiscyrillic", "04F5", + "cheharmenian", "0573", + "chekhakassiancyrillic", "04CC", + "cheverticalstrokecyrillic", "04B9", + "chi", "03C7", + "chieuchacirclekorean", "3277", + "chieuchaparenkorean", "3217", + "chieuchcirclekorean", "3269", + "chieuchkorean", "314A", + "chieuchparenkorean", "3209", + "chochangthai", "0E0A", + "chochanthai", "0E08", + "chochingthai", "0E09", + "chochoethai", "0E0C", + "chook", "0188", + "cieucacirclekorean", "3276", + "cieucaparenkorean", "3216", + "cieuccirclekorean", "3268", + "cieuckorean", "3148", + "cieucparenkorean", "3208", + "cieucuparenkorean", "321C", + "circle", "25CB", + "circlemultiply", "2297", + "circleot", "2299", + "circleplus", "2295", + "circlepostalmark", "3036", + "circlewithlefthalfblack", "25D0", + "circlewithrighthalfblack", "25D1", + "circumflex", "02C6", + "circumflexbelowcmb", "032D", + "circumflexcmb", "0302", + "clear", "2327", + "clickalveolar", "01C2", + "clickdental", "01C0", + "clicklateral", "01C1", + "clickretroflex", "01C3", + "club", "2663", + "clubsuitblack", "2663", + "clubsuitwhite", "2667", + "cmcubedsquare", "33A4", + "cmonospace", "FF43", + "cmsquaredsquare", "33A0", + "coarmenian", "0581", + "colon", "003A", + "colonmonetary", "20A1", + "colonmonospace", "FF1A", + "colonsign", "20A1", + "colonsmall", "FE55", + "colontriangularhalfmod", "02D1", + "colontriangularmod", "02D0", + "comma", "002C", + "commaabovecmb", "0313", + "commaaboverightcmb", "0315", + "commaarabic", "060C", + "commaarmenian", "055D", + "commamonospace", "FF0C", + "commareversedabovecmb", "0314", + "commareversedmod", "02BD", + "commasmall", "FE50", + "commaturnedabovecmb", "0312", + "commaturnedmod", "02BB", + "compass", "263C", + "congruent", "2245", + "contourintegral", "222E", + "control", "2303", + "controlACK", "0006", + "controlBEL", "0007", + "controlBS", "0008", + "controlCAN", "0018", + "controlCR", "000D", + "controlDC1", "0011", + "controlDC2", "0012", + "controlDC3", "0013", + "controlDC4", "0014", + "controlDEL", "007F", + "controlDLE", "0010", + "controlEM", "0019", + "controlENQ", "0005", + "controlEOT", "0004", + "controlESC", "001B", + "controlETB", "0017", + "controlETX", "0003", + "controlFF", "000C", + "controlFS", "001C", + "controlGS", "001D", + "controlHT", "0009", + "controlLF", "000A", + "controlNAK", "0015", + "controlRS", "001E", + "controlSI", "000F", + "controlSO", "000E", + "controlSOT", "0002", + "controlSTX", "0001", + "controlSUB", "001A", + "controlSYN", "0016", + "controlUS", "001F", + "controlVT", "000B", + "copyright", "00A9", + "cornerbracketleft", "300C", + "cornerbracketlefthalfwidth", "FF62", + "cornerbracketleftvertical", "FE41", + "cornerbracketright", "300D", + "cornerbracketrighthalfwidth", "FF63", + "cornerbracketrightvertical", "FE42", + "corporationsquare", "337F", + "cosquare", "33C7", + "coverkgsquare", "33C6", + "cparen", "249E", + "cruzeiro", "20A2", + "cstretched", "0297", + "curlyand", "22CF", + "curlyor", "22CE", + "currency", "00A4", + "d", "0064", + "daarmenian", "0564", + "dabengali", "09A6", + "dadarabic", "0636", + "dadeva", "0926", + "dadfinalarabic", "FEBE", + "dadinitialarabic", "FEBF", + "dadmedialarabic", "FEC0", + "dagesh", "05BC", + "dageshhebrew", "05BC", + "dagger", "2020", + "daggerdbl", "2021", + "dagujarati", "0AA6", + "dagurmukhi", "0A26", + "dahiragana", "3060", + "dakatakana", "30C0", + "dalarabic", "062F", + "dalet", "05D3", + "daletdagesh", "FB33", + "daletdageshhebrew", "FB33", + "dalethatafpatah", "05D3_05B2", + "dalethatafpatahhebrew", "05D3_05B2", + "dalethatafsegol", "05D3_05B1", + "dalethatafsegolhebrew", "05D3_05B1", + "dalethebrew", "05D3", + "dalethiriq", "05D3_05B4", + "dalethiriqhebrew", "05D3_05B4", + "daletholam", "05D3_05B9", + "daletholamhebrew", "05D3_05B9", + "daletpatah", "05D3_05B7", + "daletpatahhebrew", "05D3_05B7", + "daletqamats", "05D3_05B8", + "daletqamatshebrew", "05D3_05B8", + "daletqubuts", "05D3_05BB", + "daletqubutshebrew", "05D3_05BB", + "daletsegol", "05D3_05B6", + "daletsegolhebrew", "05D3_05B6", + "daletsheva", "05D3_05B0", + "daletshevahebrew", "05D3_05B0", + "dalettsere", "05D3_05B5", + "dalettserehebrew", "05D3_05B5", + "dalfinalarabic", "FEAA", + "dammaarabic", "064F", + "dammalowarabic", "064F", + "dammatanaltonearabic", "064C", + "dammatanarabic", "064C", + "danda", "0964", + "dargahebrew", "05A7", + "dargalefthebrew", "05A7", + "dasiapneumatacyrilliccmb", "0485", + "dblanglebracketleft", "300A", + "dblanglebracketleftvertical", "FE3D", + "dblanglebracketright", "300B", + "dblanglebracketrightvertical", "FE3E", + "dblarchinvertedbelowcmb", "032B", + "dblarrowleft", "21D4", + "dblarrowright", "21D2", + "dbldanda", "0965", + "dblgravecmb", "030F", + "dblintegral", "222C", + "dbllowline", "2017", + "dbllowlinecmb", "0333", + "dbloverlinecmb", "033F", + "dblprimemod", "02BA", + "dblverticalbar", "2016", + "dblverticallineabovecmb", "030E", + "dbopomofo", "3109", + "dbsquare", "33C8", + "dcaron", "010F", + "dcedilla", "1E11", + "dcircle", "24D3", + "dcircumflexbelow", "1E13", + "dcroat", "0111", + "ddabengali", "09A1", + "ddadeva", "0921", + "ddagujarati", "0AA1", + "ddagurmukhi", "0A21", + "ddalarabic", "0688", + "ddalfinalarabic", "FB89", + "dddhadeva", "095C", + "ddhabengali", "09A2", + "ddhadeva", "0922", + "ddhagujarati", "0AA2", + "ddhagurmukhi", "0A22", + "ddotaccent", "1E0B", + "ddotbelow", "1E0D", + "decimalseparatorarabic", "066B", + "decimalseparatorpersian", "066B", + "decyrillic", "0434", + "degree", "00B0", + "dehihebrew", "05AD", + "dehiragana", "3067", + "deicoptic", "03EF", + "dekatakana", "30C7", + "deleteleft", "232B", + "deleteright", "2326", + "delta", "03B4", + "deltaturned", "018D", + "denominatorminusonenumeratorbengali", "09F8", + "dezh", "02A4", + "dhabengali", "09A7", + "dhadeva", "0927", + "dhagujarati", "0AA7", + "dhagurmukhi", "0A27", + "dhook", "0257", + "dialytikatonos", "0385", + "dialytikatonoscmb", "0344", + "diamond", "2666", + "diamondsuitwhite", "2662", + "dieresis", "00A8", + "dieresisbelowcmb", "0324", + "dieresiscmb", "0308", + "dieresistonos", "0385", + "dihiragana", "3062", + "dikatakana", "30C2", + "dittomark", "3003", + "divide", "00F7", + "divides", "2223", + "divisionslash", "2215", + "djecyrillic", "0452", + "dkshade", "2593", + "dlinebelow", "1E0F", + "dlsquare", "3397", + "dmacron", "0111", + "dmonospace", "FF44", + "dnblock", "2584", + "dochadathai", "0E0E", + "dodekthai", "0E14", + "dohiragana", "3069", + "dokatakana", "30C9", + "dollar", "0024", + "dollarmonospace", "FF04", + "dollarsmall", "FE69", + "dong", "20AB", + "dorusquare", "3326", + "dotaccent", "02D9", + "dotaccentcmb", "0307", + "dotbelowcmb", "0323", + "dotbelowcomb", "0323", + "dotkatakana", "30FB", + "dotlessi", "0131", + "dotlessjstrokehook", "0284", + "dotmath", "22C5", + "dottedcircle", "25CC", + "doubleyodpatah", "FB1F", + "doubleyodpatahhebrew", "FB1F", + "downtackbelowcmb", "031E", + "downtackmod", "02D5", + "dparen", "249F", + "dtail", "0256", + "dtopbar", "018C", + "duhiragana", "3065", + "dukatakana", "30C5", + "dz", "01F3", + "dzaltone", "02A3", + "dzcaron", "01C6", + "dzcurl", "02A5", + "dzeabkhasiancyrillic", "04E1", + "dzecyrillic", "0455", + "dzhecyrillic", "045F", + "e", "0065", + "eacute", "00E9", + "earth", "2641", + "ebengali", "098F", + "ebopomofo", "311C", + "ebreve", "0115", + "ecandradeva", "090D", + "ecandragujarati", "0A8D", + "ecandravowelsigndeva", "0945", + "ecandravowelsigngujarati", "0AC5", + "ecaron", "011B", + "ecedillabreve", "1E1D", + "echarmenian", "0565", + "echyiwnarmenian", "0587", + "ecircle", "24D4", + "ecircumflex", "00EA", + "ecircumflexacute", "1EBF", + "ecircumflexbelow", "1E19", + "ecircumflexdotbelow", "1EC7", + "ecircumflexgrave", "1EC1", + "ecircumflexhookabove", "1EC3", + "ecircumflextilde", "1EC5", + "ecyrillic", "0454", + "edblgrave", "0205", + "edeva", "090F", + "edieresis", "00EB", + "edot", "0117", + "edotaccent", "0117", + "edotbelow", "1EB9", + "eegurmukhi", "0A0F", + "eematragurmukhi", "0A47", + "efcyrillic", "0444", + "egrave", "00E8", + "egujarati", "0A8F", + "eharmenian", "0567", + "ehbopomofo", "311D", + "ehiragana", "3048", + "ehookabove", "1EBB", + "eibopomofo", "311F", + "eight", "0038", + "eightarabic", "0668", + "eightbengali", "09EE", + "eightcircle", "2467", + "eightcircleinversesansserif", "2791", + "eightdeva", "096E", + "eighteencircle", "2471", + "eighteenparen", "2485", + "eighteenperiod", "2499", + "eightgujarati", "0AEE", + "eightgurmukhi", "0A6E", + "eighthackarabic", "0668", + "eighthangzhou", "3028", + "eighthnotebeamed", "266B", + "eightideographicparen", "3227", + "eightinferior", "2088", + "eightmonospace", "FF18", + "eightparen", "247B", + "eightperiod", "248F", + "eightpersian", "06F8", + "eightroman", "2177", + "eightsuperior", "2078", + "eightthai", "0E58", + "einvertedbreve", "0207", + "eiotifiedcyrillic", "0465", + "ekatakana", "30A8", + "ekatakanahalfwidth", "FF74", + "ekonkargurmukhi", "0A74", + "ekorean", "3154", + "elcyrillic", "043B", + "element", "2208", + "elevencircle", "246A", + "elevenparen", "247E", + "elevenperiod", "2492", + "elevenroman", "217A", + "ellipsis", "2026", + "ellipsisvertical", "22EE", + "emacron", "0113", + "emacronacute", "1E17", + "emacrongrave", "1E15", + "emcyrillic", "043C", + "emdash", "2014", + "emdashvertical", "FE31", + "emonospace", "FF45", + "emphasismarkarmenian", "055B", + "emptyset", "2205", + "enbopomofo", "3123", + "encyrillic", "043D", + "endash", "2013", + "endashvertical", "FE32", + "endescendercyrillic", "04A3", + "eng", "014B", + "engbopomofo", "3125", + "enghecyrillic", "04A5", + "enhookcyrillic", "04C8", + "enspace", "2002", + "eogonek", "0119", + "eokorean", "3153", + "eopen", "025B", + "eopenclosed", "029A", + "eopenreversed", "025C", + "eopenreversedclosed", "025E", + "eopenreversedhook", "025D", + "eparen", "24A0", + "epsilon", "03B5", + "epsilontonos", "03AD", + "equal", "003D", + "equalmonospace", "FF1D", + "equalsmall", "FE66", + "equalsuperior", "207C", + "equivalence", "2261", + "erbopomofo", "3126", + "ercyrillic", "0440", + "ereversed", "0258", + "ereversedcyrillic", "044D", + "escyrillic", "0441", + "esdescendercyrillic", "04AB", + "esh", "0283", + "eshcurl", "0286", + "eshortdeva", "090E", + "eshortvowelsigndeva", "0946", + "eshreversedloop", "01AA", + "eshsquatreversed", "0285", + "esmallhiragana", "3047", + "esmallkatakana", "30A7", + "esmallkatakanahalfwidth", "FF6A", + "estimated", "212E", + "eta", "03B7", + "etarmenian", "0568", + "etatonos", "03AE", + "eth", "00F0", + "etilde", "1EBD", + "etildebelow", "1E1B", + "etnahtafoukhhebrew", "0591", + "etnahtafoukhlefthebrew", "0591", + "etnahtahebrew", "0591", + "etnahtalefthebrew", "0591", + "eturned", "01DD", + "eukorean", "3161", + "euro", "20AC", + "evowelsignbengali", "09C7", + "evowelsigndeva", "0947", + "evowelsigngujarati", "0AC7", + "exclam", "0021", + "exclamarmenian", "055C", + "exclamdbl", "203C", + "exclamdown", "00A1", + "exclammonospace", "FF01", + "existential", "2203", + "ezh", "0292", + "ezhcaron", "01EF", + "ezhcurl", "0293", + "ezhreversed", "01B9", + "ezhtail", "01BA", + "f", "0066", + "fadeva", "095E", + "fagurmukhi", "0A5E", + "fahrenheit", "2109", + "fathaarabic", "064E", + "fathalowarabic", "064E", + "fathatanarabic", "064B", + "fbopomofo", "3108", + "fcircle", "24D5", + "fdotaccent", "1E1F", + "feharabic", "0641", + "feharmenian", "0586", + "fehfinalarabic", "FED2", + "fehinitialarabic", "FED3", + "fehmedialarabic", "FED4", + "feicoptic", "03E5", + "female", "2640", + "ff", "FB00", + "ffi", "FB03", + "ffl", "FB04", + "fi", "FB01", + "fifteencircle", "246E", + "fifteenparen", "2482", + "fifteenperiod", "2496", + "figuredash", "2012", + "filledbox", "25A0", + "filledrect", "25AC", + "finalkaf", "05DA", + "finalkafdagesh", "FB3A", + "finalkafdageshhebrew", "FB3A", + "finalkafhebrew", "05DA", + "finalkafqamats", "05DA_05B8", + "finalkafqamatshebrew", "05DA_05B8", + "finalkafsheva", "05DA_05B0", + "finalkafshevahebrew", "05DA_05B0", + "finalmem", "05DD", + "finalmemhebrew", "05DD", + "finalnun", "05DF", + "finalnunhebrew", "05DF", + "finalpe", "05E3", + "finalpehebrew", "05E3", + "finaltsadi", "05E5", + "finaltsadihebrew", "05E5", + "firsttonechinese", "02C9", + "fisheye", "25C9", + "fitacyrillic", "0473", + "five", "0035", + "fivearabic", "0665", + "fivebengali", "09EB", + "fivecircle", "2464", + "fivecircleinversesansserif", "278E", + "fivedeva", "096B", + "fiveeighths", "215D", + "fivegujarati", "0AEB", + "fivegurmukhi", "0A6B", + "fivehackarabic", "0665", + "fivehangzhou", "3025", + "fiveideographicparen", "3224", + "fiveinferior", "2085", + "fivemonospace", "FF15", + "fiveparen", "2478", + "fiveperiod", "248C", + "fivepersian", "06F5", + "fiveroman", "2174", + "fivesuperior", "2075", + "fivethai", "0E55", + "fl", "FB02", + "florin", "0192", + "fmonospace", "FF46", + "fmsquare", "3399", + "fofanthai", "0E1F", + "fofathai", "0E1D", + "fongmanthai", "0E4F", + "forall", "2200", + "four", "0034", + "fourarabic", "0664", + "fourbengali", "09EA", + "fourcircle", "2463", + "fourcircleinversesansserif", "278D", + "fourdeva", "096A", + "fourgujarati", "0AEA", + "fourgurmukhi", "0A6A", + "fourhackarabic", "0664", + "fourhangzhou", "3024", + "fourideographicparen", "3223", + "fourinferior", "2084", + "fourmonospace", "FF14", + "fournumeratorbengali", "09F7", + "fourparen", "2477", + "fourperiod", "248B", + "fourpersian", "06F4", + "fourroman", "2173", + "foursuperior", "2074", + "fourteencircle", "246D", + "fourteenparen", "2481", + "fourteenperiod", "2495", + "fourthai", "0E54", + "fourthtonechinese", "02CB", + "fparen", "24A1", + "fraction", "2044", + "franc", "20A3", + "g", "0067", + "gabengali", "0997", + "gacute", "01F5", + "gadeva", "0917", + "gafarabic", "06AF", + "gaffinalarabic", "FB93", + "gafinitialarabic", "FB94", + "gafmedialarabic", "FB95", + "gagujarati", "0A97", + "gagurmukhi", "0A17", + "gahiragana", "304C", + "gakatakana", "30AC", + "gamma", "03B3", + "gammalatinsmall", "0263", + "gammasuperior", "02E0", + "gangiacoptic", "03EB", + "gbopomofo", "310D", + "gbreve", "011F", + "gcaron", "01E7", + "gcedilla", "0123", + "gcircle", "24D6", + "gcircumflex", "011D", + "gcommaaccent", "0123", + "gdot", "0121", + "gdotaccent", "0121", + "gecyrillic", "0433", + "gehiragana", "3052", + "gekatakana", "30B2", + "geometricallyequal", "2251", + "gereshaccenthebrew", "059C", + "gereshhebrew", "05F3", + "gereshmuqdamhebrew", "059D", + "germandbls", "00DF", + "gershayimaccenthebrew", "059E", + "gershayimhebrew", "05F4", + "getamark", "3013", + "ghabengali", "0998", + "ghadarmenian", "0572", + "ghadeva", "0918", + "ghagujarati", "0A98", + "ghagurmukhi", "0A18", + "ghainarabic", "063A", + "ghainfinalarabic", "FECE", + "ghaininitialarabic", "FECF", + "ghainmedialarabic", "FED0", + "ghemiddlehookcyrillic", "0495", + "ghestrokecyrillic", "0493", + "gheupturncyrillic", "0491", + "ghhadeva", "095A", + "ghhagurmukhi", "0A5A", + "ghook", "0260", + "ghzsquare", "3393", + "gihiragana", "304E", + "gikatakana", "30AE", + "gimarmenian", "0563", + "gimel", "05D2", + "gimeldagesh", "FB32", + "gimeldageshhebrew", "FB32", + "gimelhebrew", "05D2", + "gjecyrillic", "0453", + "glottalinvertedstroke", "01BE", + "glottalstop", "0294", + "glottalstopinverted", "0296", + "glottalstopmod", "02C0", + "glottalstopreversed", "0295", + "glottalstopreversedmod", "02C1", + "glottalstopreversedsuperior", "02E4", + "glottalstopstroke", "02A1", + "glottalstopstrokereversed", "02A2", + "gmacron", "1E21", + "gmonospace", "FF47", + "gohiragana", "3054", + "gokatakana", "30B4", + "gparen", "24A2", + "gpasquare", "33AC", + "gradient", "2207", + "grave", "0060", + "gravebelowcmb", "0316", + "gravecmb", "0300", + "gravecomb", "0300", + "gravedeva", "0953", + "gravelowmod", "02CE", + "gravemonospace", "FF40", + "gravetonecmb", "0340", + "greater", "003E", + "greaterequal", "2265", + "greaterequalorless", "22DB", + "greatermonospace", "FF1E", + "greaterorequivalent", "2273", + "greaterorless", "2277", + "greateroverequal", "2267", + "greatersmall", "FE65", + "gscript", "0261", + "gstroke", "01E5", + "guhiragana", "3050", + "guillemotleft", "00AB", + "guillemotright", "00BB", + "guilsinglleft", "2039", + "guilsinglright", "203A", + "gukatakana", "30B0", + "guramusquare", "3318", + "gysquare", "33C9", + "h", "0068", + "haabkhasiancyrillic", "04A9", + "haaltonearabic", "06C1", + "habengali", "09B9", + "hadescendercyrillic", "04B3", + "hadeva", "0939", + "hagujarati", "0AB9", + "hagurmukhi", "0A39", + "haharabic", "062D", + "hahfinalarabic", "FEA2", + "hahinitialarabic", "FEA3", + "hahiragana", "306F", + "hahmedialarabic", "FEA4", + "haitusquare", "332A", + "hakatakana", "30CF", + "hakatakanahalfwidth", "FF8A", + "halantgurmukhi", "0A4D", + "hamzaarabic", "0621", + "hamzadammaarabic", "0621_064F", + "hamzadammatanarabic", "0621_064C", + "hamzafathaarabic", "0621_064E", + "hamzafathatanarabic", "0621_064B", + "hamzalowarabic", "0621", + "hamzalowkasraarabic", "0621_0650", + "hamzalowkasratanarabic", "0621_064D", + "hamzasukunarabic", "0621_0652", + "hangulfiller", "3164", + "hardsigncyrillic", "044A", + "harpoonleftbarbup", "21BC", + "harpoonrightbarbup", "21C0", + "hasquare", "33CA", + "hatafpatah", "05B2", + "hatafpatah16", "05B2", + "hatafpatah23", "05B2", + "hatafpatah2f", "05B2", + "hatafpatahhebrew", "05B2", + "hatafpatahnarrowhebrew", "05B2", + "hatafpatahquarterhebrew", "05B2", + "hatafpatahwidehebrew", "05B2", + "hatafqamats", "05B3", + "hatafqamats1b", "05B3", + "hatafqamats28", "05B3", + "hatafqamats34", "05B3", + "hatafqamatshebrew", "05B3", + "hatafqamatsnarrowhebrew", "05B3", + "hatafqamatsquarterhebrew", "05B3", + "hatafqamatswidehebrew", "05B3", + "hatafsegol", "05B1", + "hatafsegol17", "05B1", + "hatafsegol24", "05B1", + "hatafsegol30", "05B1", + "hatafsegolhebrew", "05B1", + "hatafsegolnarrowhebrew", "05B1", + "hatafsegolquarterhebrew", "05B1", + "hatafsegolwidehebrew", "05B1", + "hbar", "0127", + "hbopomofo", "310F", + "hbrevebelow", "1E2B", + "hcedilla", "1E29", + "hcircle", "24D7", + "hcircumflex", "0125", + "hdieresis", "1E27", + "hdotaccent", "1E23", + "hdotbelow", "1E25", + "he", "05D4", + "heart", "2665", + "heartsuitblack", "2665", + "heartsuitwhite", "2661", + "hedagesh", "FB34", + "hedageshhebrew", "FB34", + "hehaltonearabic", "06C1", + "heharabic", "0647", + "hehebrew", "05D4", + "hehfinalaltonearabic", "FBA7", + "hehfinalalttwoarabic", "FEEA", + "hehfinalarabic", "FEEA", + "hehhamzaabovefinalarabic", "FBA5", + "hehhamzaaboveisolatedarabic", "FBA4", + "hehinitialaltonearabic", "FBA8", + "hehinitialarabic", "FEEB", + "hehiragana", "3078", + "hehmedialaltonearabic", "FBA9", + "hehmedialarabic", "FEEC", + "heiseierasquare", "337B", + "hekatakana", "30D8", + "hekatakanahalfwidth", "FF8D", + "hekutaarusquare", "3336", + "henghook", "0267", + "herutusquare", "3339", + "het", "05D7", + "hethebrew", "05D7", + "hhook", "0266", + "hhooksuperior", "02B1", + "hieuhacirclekorean", "327B", + "hieuhaparenkorean", "321B", + "hieuhcirclekorean", "326D", + "hieuhkorean", "314E", + "hieuhparenkorean", "320D", + "hihiragana", "3072", + "hikatakana", "30D2", + "hikatakanahalfwidth", "FF8B", + "hiriq", "05B4", + "hiriq14", "05B4", + "hiriq21", "05B4", + "hiriq2d", "05B4", + "hiriqhebrew", "05B4", + "hiriqnarrowhebrew", "05B4", + "hiriqquarterhebrew", "05B4", + "hiriqwidehebrew", "05B4", + "hlinebelow", "1E96", + "hmonospace", "FF48", + "hoarmenian", "0570", + "hohipthai", "0E2B", + "hohiragana", "307B", + "hokatakana", "30DB", + "hokatakanahalfwidth", "FF8E", + "holam", "05B9", + "holam19", "05B9", + "holam26", "05B9", + "holam32", "05B9", + "holamhebrew", "05B9", + "holamnarrowhebrew", "05B9", + "holamquarterhebrew", "05B9", + "holamwidehebrew", "05B9", + "honokhukthai", "0E2E", + "hookabovecomb", "0309", + "hookcmb", "0309", + "hookpalatalizedbelowcmb", "0321", + "hookretroflexbelowcmb", "0322", + "hoonsquare", "3342", + "horicoptic", "03E9", + "horizontalbar", "2015", + "horncmb", "031B", + "hotsprings", "2668", + "house", "2302", + "hparen", "24A3", + "hsuperior", "02B0", + "hturned", "0265", + "huhiragana", "3075", + "huiitosquare", "3333", + "hukatakana", "30D5", + "hukatakanahalfwidth", "FF8C", + "hungarumlaut", "02DD", + "hungarumlautcmb", "030B", + "hv", "0195", + "hyphen", "002D", + "hyphenmonospace", "FF0D", + "hyphensmall", "FE63", + "hyphentwo", "2010", + "i", "0069", + "iacute", "00ED", + "iacyrillic", "044F", + "ibengali", "0987", + "ibopomofo", "3127", + "ibreve", "012D", + "icaron", "01D0", + "icircle", "24D8", + "icircumflex", "00EE", + "icyrillic", "0456", + "idblgrave", "0209", + "ideographearthcircle", "328F", + "ideographfirecircle", "328B", + "ideographicallianceparen", "323F", + "ideographiccallparen", "323A", + "ideographiccentrecircle", "32A5", + "ideographicclose", "3006", + "ideographiccomma", "3001", + "ideographiccommaleft", "FF64", + "ideographiccongratulationparen", "3237", + "ideographiccorrectcircle", "32A3", + "ideographicearthparen", "322F", + "ideographicenterpriseparen", "323D", + "ideographicexcellentcircle", "329D", + "ideographicfestivalparen", "3240", + "ideographicfinancialcircle", "3296", + "ideographicfinancialparen", "3236", + "ideographicfireparen", "322B", + "ideographichaveparen", "3232", + "ideographichighcircle", "32A4", + "ideographiciterationmark", "3005", + "ideographiclaborcircle", "3298", + "ideographiclaborparen", "3238", + "ideographicleftcircle", "32A7", + "ideographiclowcircle", "32A6", + "ideographicmedicinecircle", "32A9", + "ideographicmetalparen", "322E", + "ideographicmoonparen", "322A", + "ideographicnameparen", "3234", + "ideographicperiod", "3002", + "ideographicprintcircle", "329E", + "ideographicreachparen", "3243", + "ideographicrepresentparen", "3239", + "ideographicresourceparen", "323E", + "ideographicrightcircle", "32A8", + "ideographicsecretcircle", "3299", + "ideographicselfparen", "3242", + "ideographicsocietyparen", "3233", + "ideographicspace", "3000", + "ideographicspecialparen", "3235", + "ideographicstockparen", "3231", + "ideographicstudyparen", "323B", + "ideographicsunparen", "3230", + "ideographicsuperviseparen", "323C", + "ideographicwaterparen", "322C", + "ideographicwoodparen", "322D", + "ideographiczero", "3007", + "ideographmetalcircle", "328E", + "ideographmooncircle", "328A", + "ideographnamecircle", "3294", + "ideographsuncircle", "3290", + "ideographwatercircle", "328C", + "ideographwoodcircle", "328D", + "ideva", "0907", + "idieresis", "00EF", + "idieresisacute", "1E2F", + "idieresiscyrillic", "04E5", + "idotbelow", "1ECB", + "iebrevecyrillic", "04D7", + "iecyrillic", "0435", + "ieungacirclekorean", "3275", + "ieungaparenkorean", "3215", + "ieungcirclekorean", "3267", + "ieungkorean", "3147", + "ieungparenkorean", "3207", + "igrave", "00EC", + "igujarati", "0A87", + "igurmukhi", "0A07", + "ihiragana", "3044", + "ihookabove", "1EC9", + "iibengali", "0988", + "iicyrillic", "0438", + "iideva", "0908", + "iigujarati", "0A88", + "iigurmukhi", "0A08", + "iimatragurmukhi", "0A40", + "iinvertedbreve", "020B", + "iishortcyrillic", "0439", + "iivowelsignbengali", "09C0", + "iivowelsigndeva", "0940", + "iivowelsigngujarati", "0AC0", + "ij", "0133", + "ikatakana", "30A4", + "ikatakanahalfwidth", "FF72", + "ikorean", "3163", + "ilde", "02DC", + "iluyhebrew", "05AC", + "imacron", "012B", + "imacroncyrillic", "04E3", + "imageorapproximatelyequal", "2253", + "imatragurmukhi", "0A3F", + "imonospace", "FF49", + "increment", "2206", + "infinity", "221E", + "iniarmenian", "056B", + "integral", "222B", + "integralbottom", "2321", + "integralbt", "2321", + "integraltop", "2320", + "integraltp", "2320", + "intersection", "2229", + "intisquare", "3305", + "invbullet", "25D8", + "invcircle", "25D9", + "invsmileface", "263B", + "iocyrillic", "0451", + "iogonek", "012F", + "iota", "03B9", + "iotadieresis", "03CA", + "iotadieresistonos", "0390", + "iotalatin", "0269", + "iotatonos", "03AF", + "iparen", "24A4", + "irigurmukhi", "0A72", + "ismallhiragana", "3043", + "ismallkatakana", "30A3", + "ismallkatakanahalfwidth", "FF68", + "issharbengali", "09FA", + "istroke", "0268", + "iterationhiragana", "309D", + "iterationkatakana", "30FD", + "itilde", "0129", + "itildebelow", "1E2D", + "iubopomofo", "3129", + "iucyrillic", "044E", + "ivowelsignbengali", "09BF", + "ivowelsigndeva", "093F", + "ivowelsigngujarati", "0ABF", + "izhitsacyrillic", "0475", + "izhitsadblgravecyrillic", "0477", + "j", "006A", + "jaarmenian", "0571", + "jabengali", "099C", + "jadeva", "091C", + "jagujarati", "0A9C", + "jagurmukhi", "0A1C", + "jbopomofo", "3110", + "jcaron", "01F0", + "jcircle", "24D9", + "jcircumflex", "0135", + "jcrossedtail", "029D", + "jdotlessstroke", "025F", + "jecyrillic", "0458", + "jeemarabic", "062C", + "jeemfinalarabic", "FE9E", + "jeeminitialarabic", "FE9F", + "jeemmedialarabic", "FEA0", + "jeharabic", "0698", + "jehfinalarabic", "FB8B", + "jhabengali", "099D", + "jhadeva", "091D", + "jhagujarati", "0A9D", + "jhagurmukhi", "0A1D", + "jheharmenian", "057B", + "jis", "3004", + "jmonospace", "FF4A", + "jparen", "24A5", + "jsuperior", "02B2", + "k", "006B", + "kabashkircyrillic", "04A1", + "kabengali", "0995", + "kacute", "1E31", + "kacyrillic", "043A", + "kadescendercyrillic", "049B", + "kadeva", "0915", + "kaf", "05DB", + "kafarabic", "0643", + "kafdagesh", "FB3B", + "kafdageshhebrew", "FB3B", + "kaffinalarabic", "FEDA", + "kafhebrew", "05DB", + "kafinitialarabic", "FEDB", + "kafmedialarabic", "FEDC", + "kafrafehebrew", "FB4D", + "kagujarati", "0A95", + "kagurmukhi", "0A15", + "kahiragana", "304B", + "kahookcyrillic", "04C4", + "kakatakana", "30AB", + "kakatakanahalfwidth", "FF76", + "kappa", "03BA", + "kappasymbolgreek", "03F0", + "kapyeounmieumkorean", "3171", + "kapyeounphieuphkorean", "3184", + "kapyeounpieupkorean", "3178", + "kapyeounssangpieupkorean", "3179", + "karoriisquare", "330D", + "kashidaautoarabic", "0640", + "kashidaautonosidebearingarabic", "0640", + "kasmallkatakana", "30F5", + "kasquare", "3384", + "kasraarabic", "0650", + "kasratanarabic", "064D", + "kastrokecyrillic", "049F", + "katahiraprolongmarkhalfwidth", "FF70", + "kaverticalstrokecyrillic", "049D", + "kbopomofo", "310E", + "kcalsquare", "3389", + "kcaron", "01E9", + "kcedilla", "0137", + "kcircle", "24DA", + "kcommaaccent", "0137", + "kdotbelow", "1E33", + "keharmenian", "0584", + "kehiragana", "3051", + "kekatakana", "30B1", + "kekatakanahalfwidth", "FF79", + "kenarmenian", "056F", + "kesmallkatakana", "30F6", + "kgreenlandic", "0138", + "khabengali", "0996", + "khacyrillic", "0445", + "khadeva", "0916", + "khagujarati", "0A96", + "khagurmukhi", "0A16", + "khaharabic", "062E", + "khahfinalarabic", "FEA6", + "khahinitialarabic", "FEA7", + "khahmedialarabic", "FEA8", + "kheicoptic", "03E7", + "khhadeva", "0959", + "khhagurmukhi", "0A59", + "khieukhacirclekorean", "3278", + "khieukhaparenkorean", "3218", + "khieukhcirclekorean", "326A", + "khieukhkorean", "314B", + "khieukhparenkorean", "320A", + "khokhaithai", "0E02", + "khokhonthai", "0E05", + "khokhuatthai", "0E03", + "khokhwaithai", "0E04", + "khomutthai", "0E5B", + "khook", "0199", + "khorakhangthai", "0E06", + "khzsquare", "3391", + "kihiragana", "304D", + "kikatakana", "30AD", + "kikatakanahalfwidth", "FF77", + "kiroguramusquare", "3315", + "kiromeetorusquare", "3316", + "kirosquare", "3314", + "kiyeokacirclekorean", "326E", + "kiyeokaparenkorean", "320E", + "kiyeokcirclekorean", "3260", + "kiyeokkorean", "3131", + "kiyeokparenkorean", "3200", + "kiyeoksioskorean", "3133", + "kjecyrillic", "045C", + "klinebelow", "1E35", + "klsquare", "3398", + "kmcubedsquare", "33A6", + "kmonospace", "FF4B", + "kmsquaredsquare", "33A2", + "kohiragana", "3053", + "kohmsquare", "33C0", + "kokaithai", "0E01", + "kokatakana", "30B3", + "kokatakanahalfwidth", "FF7A", + "kooposquare", "331E", + "koppacyrillic", "0481", + "koreanstandardsymbol", "327F", + "koroniscmb", "0343", + "kparen", "24A6", + "kpasquare", "33AA", + "ksicyrillic", "046F", + "ktsquare", "33CF", + "kturned", "029E", + "kuhiragana", "304F", + "kukatakana", "30AF", + "kukatakanahalfwidth", "FF78", + "kvsquare", "33B8", + "kwsquare", "33BE", + "l", "006C", + "labengali", "09B2", + "lacute", "013A", + "ladeva", "0932", + "lagujarati", "0AB2", + "lagurmukhi", "0A32", + "lakkhangyaothai", "0E45", + "lamaleffinalarabic", "FEFC", + "lamalefhamzaabovefinalarabic", "FEF8", + "lamalefhamzaaboveisolatedarabic", "FEF7", + "lamalefhamzabelowfinalarabic", "FEFA", + "lamalefhamzabelowisolatedarabic", "FEF9", + "lamalefisolatedarabic", "FEFB", + "lamalefmaddaabovefinalarabic", "FEF6", + "lamalefmaddaaboveisolatedarabic", "FEF5", + "lamarabic", "0644", + "lambda", "03BB", + "lambdastroke", "019B", + "lamed", "05DC", + "lameddagesh", "FB3C", + "lameddageshhebrew", "FB3C", + "lamedhebrew", "05DC", + "lamedholam", "05DC_05B9", + "lamedholamdagesh", "05DC_05B9_05BC", + "lamedholamdageshhebrew", "05DC_05B9_05BC", + "lamedholamhebrew", "05DC_05B9", + "lamfinalarabic", "FEDE", + "lamhahinitialarabic", "FCCA", + "laminitialarabic", "FEDF", + "lamjeeminitialarabic", "FCC9", + "lamkhahinitialarabic", "FCCB", + "lamlamhehisolatedarabic", "FDF2", + "lammedialarabic", "FEE0", + "lammeemhahinitialarabic", "FD88", + "lammeeminitialarabic", "FCCC", + "lammeemjeeminitialarabic", "FEDF_FEE4_FEA0", + "lammeemkhahinitialarabic", "FEDF_FEE4_FEA8", + "largecircle", "25EF", + "lbar", "019A", + "lbelt", "026C", + "lbopomofo", "310C", + "lcaron", "013E", + "lcedilla", "013C", + "lcircle", "24DB", + "lcircumflexbelow", "1E3D", + "lcommaaccent", "013C", + "ldot", "0140", + "ldotaccent", "0140", + "ldotbelow", "1E37", + "ldotbelowmacron", "1E39", + "leftangleabovecmb", "031A", + "lefttackbelowcmb", "0318", + "less", "003C", + "lessequal", "2264", + "lessequalorgreater", "22DA", + "lessmonospace", "FF1C", + "lessorequivalent", "2272", + "lessorgreater", "2276", + "lessoverequal", "2266", + "lesssmall", "FE64", + "lezh", "026E", + "lfblock", "258C", + "lhookretroflex", "026D", + "lira", "20A4", + "liwnarmenian", "056C", + "lj", "01C9", + "ljecyrillic", "0459", + "lladeva", "0933", + "llagujarati", "0AB3", + "llinebelow", "1E3B", + "llladeva", "0934", + "llvocalicbengali", "09E1", + "llvocalicdeva", "0961", + "llvocalicvowelsignbengali", "09E3", + "llvocalicvowelsigndeva", "0963", + "lmiddletilde", "026B", + "lmonospace", "FF4C", + "lmsquare", "33D0", + "lochulathai", "0E2C", + "logicaland", "2227", + "logicalnot", "00AC", + "logicalnotreversed", "2310", + "logicalor", "2228", + "lolingthai", "0E25", + "longs", "017F", + "lowlinecenterline", "FE4E", + "lowlinecmb", "0332", + "lowlinedashed", "FE4D", + "lozenge", "25CA", + "lparen", "24A7", + "lslash", "0142", + "lsquare", "2113", + "ltshade", "2591", + "luthai", "0E26", + "lvocalicbengali", "098C", + "lvocalicdeva", "090C", + "lvocalicvowelsignbengali", "09E2", + "lvocalicvowelsigndeva", "0962", + "lxsquare", "33D3", + "m", "006D", + "mabengali", "09AE", + "macron", "00AF", + "macronbelowcmb", "0331", + "macroncmb", "0304", + "macronlowmod", "02CD", + "macronmonospace", "FFE3", + "macute", "1E3F", + "madeva", "092E", + "magujarati", "0AAE", + "magurmukhi", "0A2E", + "mahapakhhebrew", "05A4", + "mahapakhlefthebrew", "05A4", + "mahiragana", "307E", + "maichattawathai", "0E4B", + "maiekthai", "0E48", + "maihanakatthai", "0E31", + "maitaikhuthai", "0E47", + "maithothai", "0E49", + "maitrithai", "0E4A", + "maiyamokthai", "0E46", + "makatakana", "30DE", + "makatakanahalfwidth", "FF8F", + "male", "2642", + "mansyonsquare", "3347", + "maqafhebrew", "05BE", + "mars", "2642", + "masoracirclehebrew", "05AF", + "masquare", "3383", + "mbopomofo", "3107", + "mbsquare", "33D4", + "mcircle", "24DC", + "mcubedsquare", "33A5", + "mdotaccent", "1E41", + "mdotbelow", "1E43", + "meemarabic", "0645", + "meemfinalarabic", "FEE2", + "meeminitialarabic", "FEE3", + "meemmedialarabic", "FEE4", + "meemmeeminitialarabic", "FCD1", + "meemmeemisolatedarabic", "FC48", + "meetorusquare", "334D", + "mehiragana", "3081", + "meizierasquare", "337E", + "mekatakana", "30E1", + "mekatakanahalfwidth", "FF92", + "mem", "05DE", + "memdagesh", "FB3E", + "memdageshhebrew", "FB3E", + "memhebrew", "05DE", + "menarmenian", "0574", + "merkhahebrew", "05A5", + "merkhakefulahebrew", "05A6", + "merkhakefulalefthebrew", "05A6", + "merkhalefthebrew", "05A5", + "mhook", "0271", + "mhzsquare", "3392", + "middledotkatakanahalfwidth", "FF65", + "middot", "00B7", + "mieumacirclekorean", "3272", + "mieumaparenkorean", "3212", + "mieumcirclekorean", "3264", + "mieumkorean", "3141", + "mieumpansioskorean", "3170", + "mieumparenkorean", "3204", + "mieumpieupkorean", "316E", + "mieumsioskorean", "316F", + "mihiragana", "307F", + "mikatakana", "30DF", + "mikatakanahalfwidth", "FF90", + "minus", "2212", + "minusbelowcmb", "0320", + "minuscircle", "2296", + "minusmod", "02D7", + "minusplus", "2213", + "minute", "2032", + "miribaarusquare", "334A", + "mirisquare", "3349", + "mlonglegturned", "0270", + "mlsquare", "3396", + "mmcubedsquare", "33A3", + "mmonospace", "FF4D", + "mmsquaredsquare", "339F", + "mohiragana", "3082", + "mohmsquare", "33C1", + "mokatakana", "30E2", + "mokatakanahalfwidth", "FF93", + "molsquare", "33D6", + "momathai", "0E21", + "moverssquare", "33A7", + "moverssquaredsquare", "33A8", + "mparen", "24A8", + "mpasquare", "33AB", + "mssquare", "33B3", + "mturned", "026F", + "mu", "00B5", + "mu1", "00B5", + "muasquare", "3382", + "muchgreater", "226B", + "muchless", "226A", + "mufsquare", "338C", + "mugreek", "03BC", + "mugsquare", "338D", + "muhiragana", "3080", + "mukatakana", "30E0", + "mukatakanahalfwidth", "FF91", + "mulsquare", "3395", + "multiply", "00D7", + "mumsquare", "339B", + "munahhebrew", "05A3", + "munahlefthebrew", "05A3", + "musicalnote", "266A", + "musicalnotedbl", "266B", + "musicflatsign", "266D", + "musicsharpsign", "266F", + "mussquare", "33B2", + "muvsquare", "33B6", + "muwsquare", "33BC", + "mvmegasquare", "33B9", + "mvsquare", "33B7", + "mwmegasquare", "33BF", + "mwsquare", "33BD", + "n", "006E", + "nabengali", "09A8", + "nabla", "2207", + "nacute", "0144", + "nadeva", "0928", + "nagujarati", "0AA8", + "nagurmukhi", "0A28", + "nahiragana", "306A", + "nakatakana", "30CA", + "nakatakanahalfwidth", "FF85", + "napostrophe", "0149", + "nasquare", "3381", + "nbopomofo", "310B", + "nbspace", "00A0", + "ncaron", "0148", + "ncedilla", "0146", + "ncircle", "24DD", + "ncircumflexbelow", "1E4B", + "ncommaaccent", "0146", + "ndotaccent", "1E45", + "ndotbelow", "1E47", + "nehiragana", "306D", + "nekatakana", "30CD", + "nekatakanahalfwidth", "FF88", + "newsheqelsign", "20AA", + "nfsquare", "338B", + "ngabengali", "0999", + "ngadeva", "0919", + "ngagujarati", "0A99", + "ngagurmukhi", "0A19", + "ngonguthai", "0E07", + "nhiragana", "3093", + "nhookleft", "0272", + "nhookretroflex", "0273", + "nieunacirclekorean", "326F", + "nieunaparenkorean", "320F", + "nieuncieuckorean", "3135", + "nieuncirclekorean", "3261", + "nieunhieuhkorean", "3136", + "nieunkorean", "3134", + "nieunpansioskorean", "3168", + "nieunparenkorean", "3201", + "nieunsioskorean", "3167", + "nieuntikeutkorean", "3166", + "nihiragana", "306B", + "nikatakana", "30CB", + "nikatakanahalfwidth", "FF86", + "nikhahitthai", "0E4D", + "nine", "0039", + "ninearabic", "0669", + "ninebengali", "09EF", + "ninecircle", "2468", + "ninecircleinversesansserif", "2792", + "ninedeva", "096F", + "ninegujarati", "0AEF", + "ninegurmukhi", "0A6F", + "ninehackarabic", "0669", + "ninehangzhou", "3029", + "nineideographicparen", "3228", + "nineinferior", "2089", + "ninemonospace", "FF19", + "nineparen", "247C", + "nineperiod", "2490", + "ninepersian", "06F9", + "nineroman", "2178", + "ninesuperior", "2079", + "nineteencircle", "2472", + "nineteenparen", "2486", + "nineteenperiod", "249A", + "ninethai", "0E59", + "nj", "01CC", + "njecyrillic", "045A", + "nkatakana", "30F3", + "nkatakanahalfwidth", "FF9D", + "nlegrightlong", "019E", + "nlinebelow", "1E49", + "nmonospace", "FF4E", + "nmsquare", "339A", + "nnabengali", "09A3", + "nnadeva", "0923", + "nnagujarati", "0AA3", + "nnagurmukhi", "0A23", + "nnnadeva", "0929", + "nohiragana", "306E", + "nokatakana", "30CE", + "nokatakanahalfwidth", "FF89", + "nonbreakingspace", "00A0", + "nonenthai", "0E13", + "nonuthai", "0E19", + "noonarabic", "0646", + "noonfinalarabic", "FEE6", + "noonghunnaarabic", "06BA", + "noonghunnafinalarabic", "FB9F", + "noonhehinitialarabic", "FEE7_FEEC", + "nooninitialarabic", "FEE7", + "noonjeeminitialarabic", "FCD2", + "noonjeemisolatedarabic", "FC4B", + "noonmedialarabic", "FEE8", + "noonmeeminitialarabic", "FCD5", + "noonmeemisolatedarabic", "FC4E", + "noonnoonfinalarabic", "FC8D", + "notcontains", "220C", + "notelement", "2209", + "notelementof", "2209", + "notequal", "2260", + "notgreater", "226F", + "notgreaternorequal", "2271", + "notgreaternorless", "2279", + "notidentical", "2262", + "notless", "226E", + "notlessnorequal", "2270", + "notparallel", "2226", + "notprecedes", "2280", + "notsubset", "2284", + "notsucceeds", "2281", + "notsuperset", "2285", + "nowarmenian", "0576", + "nparen", "24A9", + "nssquare", "33B1", + "nsuperior", "207F", + "ntilde", "00F1", + "nu", "03BD", + "nuhiragana", "306C", + "nukatakana", "30CC", + "nukatakanahalfwidth", "FF87", + "nuktabengali", "09BC", + "nuktadeva", "093C", + "nuktagujarati", "0ABC", + "nuktagurmukhi", "0A3C", + "numbersign", "0023", + "numbersignmonospace", "FF03", + "numbersignsmall", "FE5F", + "numeralsigngreek", "0374", + "numeralsignlowergreek", "0375", + "numero", "2116", + "nun", "05E0", + "nundagesh", "FB40", + "nundageshhebrew", "FB40", + "nunhebrew", "05E0", + "nvsquare", "33B5", + "nwsquare", "33BB", + "nyabengali", "099E", + "nyadeva", "091E", + "nyagujarati", "0A9E", + "nyagurmukhi", "0A1E", + "o", "006F", + "oacute", "00F3", + "oangthai", "0E2D", + "obarred", "0275", + "obarredcyrillic", "04E9", + "obarreddieresiscyrillic", "04EB", + "obengali", "0993", + "obopomofo", "311B", + "obreve", "014F", + "ocandradeva", "0911", + "ocandragujarati", "0A91", + "ocandravowelsigndeva", "0949", + "ocandravowelsigngujarati", "0AC9", + "ocaron", "01D2", + "ocircle", "24DE", + "ocircumflex", "00F4", + "ocircumflexacute", "1ED1", + "ocircumflexdotbelow", "1ED9", + "ocircumflexgrave", "1ED3", + "ocircumflexhookabove", "1ED5", + "ocircumflextilde", "1ED7", + "ocyrillic", "043E", + "odblacute", "0151", + "odblgrave", "020D", + "odeva", "0913", + "odieresis", "00F6", + "odieresiscyrillic", "04E7", + "odotbelow", "1ECD", + "oe", "0153", + "oekorean", "315A", + "ogonek", "02DB", + "ogonekcmb", "0328", + "ograve", "00F2", + "ogujarati", "0A93", + "oharmenian", "0585", + "ohiragana", "304A", + "ohookabove", "1ECF", + "ohorn", "01A1", + "ohornacute", "1EDB", + "ohorndotbelow", "1EE3", + "ohorngrave", "1EDD", + "ohornhookabove", "1EDF", + "ohorntilde", "1EE1", + "ohungarumlaut", "0151", + "oi", "01A3", + "oinvertedbreve", "020F", + "okatakana", "30AA", + "okatakanahalfwidth", "FF75", + "okorean", "3157", + "olehebrew", "05AB", + "omacron", "014D", + "omacronacute", "1E53", + "omacrongrave", "1E51", + "omdeva", "0950", + "omega", "03C9", + "omega1", "03D6", + "omegacyrillic", "0461", + "omegalatinclosed", "0277", + "omegaroundcyrillic", "047B", + "omegatitlocyrillic", "047D", + "omegatonos", "03CE", + "omgujarati", "0AD0", + "omicron", "03BF", + "omicrontonos", "03CC", + "omonospace", "FF4F", + "one", "0031", + "onearabic", "0661", + "onebengali", "09E7", + "onecircle", "2460", + "onecircleinversesansserif", "278A", + "onedeva", "0967", + "onedotenleader", "2024", + "oneeighth", "215B", + "onegujarati", "0AE7", + "onegurmukhi", "0A67", + "onehackarabic", "0661", + "onehalf", "00BD", + "onehangzhou", "3021", + "oneideographicparen", "3220", + "oneinferior", "2081", + "onemonospace", "FF11", + "onenumeratorbengali", "09F4", + "oneparen", "2474", + "oneperiod", "2488", + "onepersian", "06F1", + "onequarter", "00BC", + "oneroman", "2170", + "onesuperior", "00B9", + "onethai", "0E51", + "onethird", "2153", + "oogonek", "01EB", + "oogonekmacron", "01ED", + "oogurmukhi", "0A13", + "oomatragurmukhi", "0A4B", + "oopen", "0254", + "oparen", "24AA", + "openbullet", "25E6", + "option", "2325", + "ordfeminine", "00AA", + "ordmasculine", "00BA", + "orthogonal", "221F", + "oshortdeva", "0912", + "oshortvowelsigndeva", "094A", + "oslash", "00F8", + "oslashacute", "01FF", + "osmallhiragana", "3049", + "osmallkatakana", "30A9", + "osmallkatakanahalfwidth", "FF6B", + "ostrokeacute", "01FF", + "otcyrillic", "047F", + "otilde", "00F5", + "otildeacute", "1E4D", + "otildedieresis", "1E4F", + "oubopomofo", "3121", + "overline", "203E", + "overlinecenterline", "FE4A", + "overlinecmb", "0305", + "overlinedashed", "FE49", + "overlinedblwavy", "FE4C", + "overlinewavy", "FE4B", + "overscore", "00AF", + "ovowelsignbengali", "09CB", + "ovowelsigndeva", "094B", + "ovowelsigngujarati", "0ACB", + "p", "0070", + "paampssquare", "3380", + "paasentosquare", "332B", + "pabengali", "09AA", + "pacute", "1E55", + "padeva", "092A", + "pagedown", "21DF", + "pageup", "21DE", + "pagujarati", "0AAA", + "pagurmukhi", "0A2A", + "pahiragana", "3071", + "paiyannoithai", "0E2F", + "pakatakana", "30D1", + "palatalizationcyrilliccmb", "0484", + "palochkacyrillic", "04C0", + "pansioskorean", "317F", + "paragraph", "00B6", + "parallel", "2225", + "parenleft", "0028", + "parenleftaltonearabic", "FD3E", + "parenleftinferior", "208D", + "parenleftmonospace", "FF08", + "parenleftsmall", "FE59", + "parenleftsuperior", "207D", + "parenleftvertical", "FE35", + "parenright", "0029", + "parenrightaltonearabic", "FD3F", + "parenrightinferior", "208E", + "parenrightmonospace", "FF09", + "parenrightsmall", "FE5A", + "parenrightsuperior", "207E", + "parenrightvertical", "FE36", + "partialdiff", "2202", + "paseqhebrew", "05C0", + "pashtahebrew", "0599", + "pasquare", "33A9", + "patah", "05B7", + "patah11", "05B7", + "patah1d", "05B7", + "patah2a", "05B7", + "patahhebrew", "05B7", + "patahnarrowhebrew", "05B7", + "patahquarterhebrew", "05B7", + "patahwidehebrew", "05B7", + "pazerhebrew", "05A1", + "pbopomofo", "3106", + "pcircle", "24DF", + "pdotaccent", "1E57", + "pe", "05E4", + "pecyrillic", "043F", + "pedagesh", "FB44", + "pedageshhebrew", "FB44", + "peezisquare", "333B", + "pefinaldageshhebrew", "FB43", + "peharabic", "067E", + "peharmenian", "057A", + "pehebrew", "05E4", + "pehfinalarabic", "FB57", + "pehinitialarabic", "FB58", + "pehiragana", "307A", + "pehmedialarabic", "FB59", + "pekatakana", "30DA", + "pemiddlehookcyrillic", "04A7", + "perafehebrew", "FB4E", + "percent", "0025", + "percentarabic", "066A", + "percentmonospace", "FF05", + "percentsmall", "FE6A", + "period", "002E", + "periodarmenian", "0589", + "periodcentered", "00B7", + "periodhalfwidth", "FF61", + "periodmonospace", "FF0E", + "periodsmall", "FE52", + "perispomenigreekcmb", "0342", + "perpendicular", "22A5", + "perthousand", "2030", + "peseta", "20A7", + "pfsquare", "338A", + "phabengali", "09AB", + "phadeva", "092B", + "phagujarati", "0AAB", + "phagurmukhi", "0A2B", + "phi", "03C6", + "phi1", "03D5", + "phieuphacirclekorean", "327A", + "phieuphaparenkorean", "321A", + "phieuphcirclekorean", "326C", + "phieuphkorean", "314D", + "phieuphparenkorean", "320C", + "philatin", "0278", + "phinthuthai", "0E3A", + "phisymbolgreek", "03D5", + "phook", "01A5", + "phophanthai", "0E1E", + "phophungthai", "0E1C", + "phosamphaothai", "0E20", + "pi", "03C0", + "pieupacirclekorean", "3273", + "pieupaparenkorean", "3213", + "pieupcieuckorean", "3176", + "pieupcirclekorean", "3265", + "pieupkiyeokkorean", "3172", + "pieupkorean", "3142", + "pieupparenkorean", "3205", + "pieupsioskiyeokkorean", "3174", + "pieupsioskorean", "3144", + "pieupsiostikeutkorean", "3175", + "pieupthieuthkorean", "3177", + "pieuptikeutkorean", "3173", + "pihiragana", "3074", + "pikatakana", "30D4", + "pisymbolgreek", "03D6", + "piwrarmenian", "0583", + "plus", "002B", + "plusbelowcmb", "031F", + "pluscircle", "2295", + "plusminus", "00B1", + "plusmod", "02D6", + "plusmonospace", "FF0B", + "plussmall", "FE62", + "plussuperior", "207A", + "pmonospace", "FF50", + "pmsquare", "33D8", + "pohiragana", "307D", + "pointingindexdownwhite", "261F", + "pointingindexleftwhite", "261C", + "pointingindexrightwhite", "261E", + "pointingindexupwhite", "261D", + "pokatakana", "30DD", + "poplathai", "0E1B", + "postalmark", "3012", + "postalmarkface", "3020", + "pparen", "24AB", + "precedes", "227A", + "prescription", "211E", + "primemod", "02B9", + "primereversed", "2035", + "product", "220F", + "projective", "2305", + "prolongedkana", "30FC", + "propellor", "2318", + "propersubset", "2282", + "propersuperset", "2283", + "proportion", "2237", + "proportional", "221D", + "psi", "03C8", + "psicyrillic", "0471", + "psilipneumatacyrilliccmb", "0486", + "pssquare", "33B0", + "puhiragana", "3077", + "pukatakana", "30D7", + "pvsquare", "33B4", + "pwsquare", "33BA", + "q", "0071", + "qadeva", "0958", + "qadmahebrew", "05A8", + "qafarabic", "0642", + "qaffinalarabic", "FED6", + "qafinitialarabic", "FED7", + "qafmedialarabic", "FED8", + "qamats", "05B8", + "qamats10", "05B8", + "qamats1a", "05B8", + "qamats1c", "05B8", + "qamats27", "05B8", + "qamats29", "05B8", + "qamats33", "05B8", + "qamatsde", "05B8", + "qamatshebrew", "05B8", + "qamatsnarrowhebrew", "05B8", + "qamatsqatanhebrew", "05B8", + "qamatsqatannarrowhebrew", "05B8", + "qamatsqatanquarterhebrew", "05B8", + "qamatsqatanwidehebrew", "05B8", + "qamatsquarterhebrew", "05B8", + "qamatswidehebrew", "05B8", + "qarneyparahebrew", "059F", + "qbopomofo", "3111", + "qcircle", "24E0", + "qhook", "02A0", + "qmonospace", "FF51", + "qof", "05E7", + "qofdagesh", "FB47", + "qofdageshhebrew", "FB47", + "qofhatafpatah", "05E7_05B2", + "qofhatafpatahhebrew", "05E7_05B2", + "qofhatafsegol", "05E7_05B1", + "qofhatafsegolhebrew", "05E7_05B1", + "qofhebrew", "05E7", + "qofhiriq", "05E7_05B4", + "qofhiriqhebrew", "05E7_05B4", + "qofholam", "05E7_05B9", + "qofholamhebrew", "05E7_05B9", + "qofpatah", "05E7_05B7", + "qofpatahhebrew", "05E7_05B7", + "qofqamats", "05E7_05B8", + "qofqamatshebrew", "05E7_05B8", + "qofqubuts", "05E7_05BB", + "qofqubutshebrew", "05E7_05BB", + "qofsegol", "05E7_05B6", + "qofsegolhebrew", "05E7_05B6", + "qofsheva", "05E7_05B0", + "qofshevahebrew", "05E7_05B0", + "qoftsere", "05E7_05B5", + "qoftserehebrew", "05E7_05B5", + "qparen", "24AC", + "quarternote", "2669", + "qubuts", "05BB", + "qubuts18", "05BB", + "qubuts25", "05BB", + "qubuts31", "05BB", + "qubutshebrew", "05BB", + "qubutsnarrowhebrew", "05BB", + "qubutsquarterhebrew", "05BB", + "qubutswidehebrew", "05BB", + "question", "003F", + "questionarabic", "061F", + "questionarmenian", "055E", + "questiondown", "00BF", + "questiongreek", "037E", + "questionmonospace", "FF1F", + "quotedbl", "0022", + "quotedblbase", "201E", + "quotedblleft", "201C", + "quotedblmonospace", "FF02", + "quotedblprime", "301E", + "quotedblprimereversed", "301D", + "quotedblright", "201D", + "quoteleft", "2018", + "quoteleftreversed", "201B", + "quotereversed", "201B", + "quoteright", "2019", + "quoterightn", "0149", + "quotesinglbase", "201A", + "quotesingle", "0027", + "quotesinglemonospace", "FF07", + "r", "0072", + "raarmenian", "057C", + "rabengali", "09B0", + "racute", "0155", + "radeva", "0930", + "radical", "221A", + "radoverssquare", "33AE", + "radoverssquaredsquare", "33AF", + "radsquare", "33AD", + "rafe", "05BF", + "rafehebrew", "05BF", + "ragujarati", "0AB0", + "ragurmukhi", "0A30", + "rahiragana", "3089", + "rakatakana", "30E9", + "rakatakanahalfwidth", "FF97", + "ralowerdiagonalbengali", "09F1", + "ramiddlediagonalbengali", "09F0", + "ramshorn", "0264", + "ratio", "2236", + "rbopomofo", "3116", + "rcaron", "0159", + "rcedilla", "0157", + "rcircle", "24E1", + "rcommaaccent", "0157", + "rdblgrave", "0211", + "rdotaccent", "1E59", + "rdotbelow", "1E5B", + "rdotbelowmacron", "1E5D", + "referencemark", "203B", + "reflexsubset", "2286", + "reflexsuperset", "2287", + "registered", "00AE", + "reharabic", "0631", + "reharmenian", "0580", + "rehfinalarabic", "FEAE", + "rehiragana", "308C", + "rehyehaleflamarabic", "0631_FEF3_FE8E_0644", + "rekatakana", "30EC", + "rekatakanahalfwidth", "FF9A", + "resh", "05E8", + "reshdageshhebrew", "FB48", + "reshhatafpatah", "05E8_05B2", + "reshhatafpatahhebrew", "05E8_05B2", + "reshhatafsegol", "05E8_05B1", + "reshhatafsegolhebrew", "05E8_05B1", + "reshhebrew", "05E8", + "reshhiriq", "05E8_05B4", + "reshhiriqhebrew", "05E8_05B4", + "reshholam", "05E8_05B9", + "reshholamhebrew", "05E8_05B9", + "reshpatah", "05E8_05B7", + "reshpatahhebrew", "05E8_05B7", + "reshqamats", "05E8_05B8", + "reshqamatshebrew", "05E8_05B8", + "reshqubuts", "05E8_05BB", + "reshqubutshebrew", "05E8_05BB", + "reshsegol", "05E8_05B6", + "reshsegolhebrew", "05E8_05B6", + "reshsheva", "05E8_05B0", + "reshshevahebrew", "05E8_05B0", + "reshtsere", "05E8_05B5", + "reshtserehebrew", "05E8_05B5", + "reversedtilde", "223D", + "reviahebrew", "0597", + "reviamugrashhebrew", "0597", + "revlogicalnot", "2310", + "rfishhook", "027E", + "rfishhookreversed", "027F", + "rhabengali", "09DD", + "rhadeva", "095D", + "rho", "03C1", + "rhook", "027D", + "rhookturned", "027B", + "rhookturnedsuperior", "02B5", + "rhosymbolgreek", "03F1", + "rhotichookmod", "02DE", + "rieulacirclekorean", "3271", + "rieulaparenkorean", "3211", + "rieulcirclekorean", "3263", + "rieulhieuhkorean", "3140", + "rieulkiyeokkorean", "313A", + "rieulkiyeoksioskorean", "3169", + "rieulkorean", "3139", + "rieulmieumkorean", "313B", + "rieulpansioskorean", "316C", + "rieulparenkorean", "3203", + "rieulphieuphkorean", "313F", + "rieulpieupkorean", "313C", + "rieulpieupsioskorean", "316B", + "rieulsioskorean", "313D", + "rieulthieuthkorean", "313E", + "rieultikeutkorean", "316A", + "rieulyeorinhieuhkorean", "316D", + "rightangle", "221F", + "righttackbelowcmb", "0319", + "righttriangle", "22BF", + "rihiragana", "308A", + "rikatakana", "30EA", + "rikatakanahalfwidth", "FF98", + "ring", "02DA", + "ringbelowcmb", "0325", + "ringcmb", "030A", + "ringhalfleft", "02BF", + "ringhalfleftarmenian", "0559", + "ringhalfleftbelowcmb", "031C", + "ringhalfleftcentered", "02D3", + "ringhalfright", "02BE", + "ringhalfrightbelowcmb", "0339", + "ringhalfrightcentered", "02D2", + "rinvertedbreve", "0213", + "rittorusquare", "3351", + "rlinebelow", "1E5F", + "rlongleg", "027C", + "rlonglegturned", "027A", + "rmonospace", "FF52", + "rohiragana", "308D", + "rokatakana", "30ED", + "rokatakanahalfwidth", "FF9B", + "roruathai", "0E23", + "rparen", "24AD", + "rrabengali", "09DC", + "rradeva", "0931", + "rragurmukhi", "0A5C", + "rreharabic", "0691", + "rrehfinalarabic", "FB8D", + "rrvocalicbengali", "09E0", + "rrvocalicdeva", "0960", + "rrvocalicgujarati", "0AE0", + "rrvocalicvowelsignbengali", "09C4", + "rrvocalicvowelsigndeva", "0944", + "rrvocalicvowelsigngujarati", "0AC4", + "rtblock", "2590", + "rturned", "0279", + "rturnedsuperior", "02B4", + "ruhiragana", "308B", + "rukatakana", "30EB", + "rukatakanahalfwidth", "FF99", + "rupeemarkbengali", "09F2", + "rupeesignbengali", "09F3", + "ruthai", "0E24", + "rvocalicbengali", "098B", + "rvocalicdeva", "090B", + "rvocalicgujarati", "0A8B", + "rvocalicvowelsignbengali", "09C3", + "rvocalicvowelsigndeva", "0943", + "rvocalicvowelsigngujarati", "0AC3", + "s", "0073", + "sabengali", "09B8", + "sacute", "015B", + "sacutedotaccent", "1E65", + "sadarabic", "0635", + "sadeva", "0938", + "sadfinalarabic", "FEBA", + "sadinitialarabic", "FEBB", + "sadmedialarabic", "FEBC", + "sagujarati", "0AB8", + "sagurmukhi", "0A38", + "sahiragana", "3055", + "sakatakana", "30B5", + "sakatakanahalfwidth", "FF7B", + "sallallahoualayhewasallamarabic", "FDFA", + "samekh", "05E1", + "samekhdagesh", "FB41", + "samekhdageshhebrew", "FB41", + "samekhhebrew", "05E1", + "saraaathai", "0E32", + "saraaethai", "0E41", + "saraaimaimalaithai", "0E44", + "saraaimaimuanthai", "0E43", + "saraamthai", "0E33", + "saraathai", "0E30", + "saraethai", "0E40", + "saraiithai", "0E35", + "saraithai", "0E34", + "saraothai", "0E42", + "saraueethai", "0E37", + "sarauethai", "0E36", + "sarauthai", "0E38", + "sarauuthai", "0E39", + "sbopomofo", "3119", + "scaron", "0161", + "scarondotaccent", "1E67", + "scedilla", "015F", + "schwa", "0259", + "schwacyrillic", "04D9", + "schwadieresiscyrillic", "04DB", + "schwahook", "025A", + "scircle", "24E2", + "scircumflex", "015D", + "scommaaccent", "0219", + "sdotaccent", "1E61", + "sdotbelow", "1E63", + "sdotbelowdotaccent", "1E69", + "seagullbelowcmb", "033C", + "second", "2033", + "secondtonechinese", "02CA", + "section", "00A7", + "seenarabic", "0633", + "seenfinalarabic", "FEB2", + "seeninitialarabic", "FEB3", + "seenmedialarabic", "FEB4", + "segol", "05B6", + "segol13", "05B6", + "segol1f", "05B6", + "segol2c", "05B6", + "segolhebrew", "05B6", + "segolnarrowhebrew", "05B6", + "segolquarterhebrew", "05B6", + "segoltahebrew", "0592", + "segolwidehebrew", "05B6", + "seharmenian", "057D", + "sehiragana", "305B", + "sekatakana", "30BB", + "sekatakanahalfwidth", "FF7E", + "semicolon", "003B", + "semicolonarabic", "061B", + "semicolonmonospace", "FF1B", + "semicolonsmall", "FE54", + "semivoicedmarkkana", "309C", + "semivoicedmarkkanahalfwidth", "FF9F", + "sentisquare", "3322", + "sentosquare", "3323", + "seven", "0037", + "sevenarabic", "0667", + "sevenbengali", "09ED", + "sevencircle", "2466", + "sevencircleinversesansserif", "2790", + "sevendeva", "096D", + "seveneighths", "215E", + "sevengujarati", "0AED", + "sevengurmukhi", "0A6D", + "sevenhackarabic", "0667", + "sevenhangzhou", "3027", + "sevenideographicparen", "3226", + "seveninferior", "2087", + "sevenmonospace", "FF17", + "sevenparen", "247A", + "sevenperiod", "248E", + "sevenpersian", "06F7", + "sevenroman", "2176", + "sevensuperior", "2077", + "seventeencircle", "2470", + "seventeenparen", "2484", + "seventeenperiod", "2498", + "seventhai", "0E57", + "sfthyphen", "00AD", + "shaarmenian", "0577", + "shabengali", "09B6", + "shacyrillic", "0448", + "shaddaarabic", "0651", + "shaddadammaarabic", "FC61", + "shaddadammatanarabic", "FC5E", + "shaddafathaarabic", "FC60", + "shaddafathatanarabic", "0651_064B", + "shaddakasraarabic", "FC62", + "shaddakasratanarabic", "FC5F", + "shade", "2592", + "shadedark", "2593", + "shadelight", "2591", + "shademedium", "2592", + "shadeva", "0936", + "shagujarati", "0AB6", + "shagurmukhi", "0A36", + "shalshelethebrew", "0593", + "shbopomofo", "3115", + "shchacyrillic", "0449", + "sheenarabic", "0634", + "sheenfinalarabic", "FEB6", + "sheeninitialarabic", "FEB7", + "sheenmedialarabic", "FEB8", + "sheicoptic", "03E3", + "sheqel", "20AA", + "sheqelhebrew", "20AA", + "sheva", "05B0", + "sheva115", "05B0", + "sheva15", "05B0", + "sheva22", "05B0", + "sheva2e", "05B0", + "shevahebrew", "05B0", + "shevanarrowhebrew", "05B0", + "shevaquarterhebrew", "05B0", + "shevawidehebrew", "05B0", + "shhacyrillic", "04BB", + "shimacoptic", "03ED", + "shin", "05E9", + "shindagesh", "FB49", + "shindageshhebrew", "FB49", + "shindageshshindot", "FB2C", + "shindageshshindothebrew", "FB2C", + "shindageshsindot", "FB2D", + "shindageshsindothebrew", "FB2D", + "shindothebrew", "05C1", + "shinhebrew", "05E9", + "shinshindot", "FB2A", + "shinshindothebrew", "FB2A", + "shinsindot", "FB2B", + "shinsindothebrew", "FB2B", + "shook", "0282", + "sigma", "03C3", + "sigma1", "03C2", + "sigmafinal", "03C2", + "sigmalunatesymbolgreek", "03F2", + "sihiragana", "3057", + "sikatakana", "30B7", + "sikatakanahalfwidth", "FF7C", + "siluqhebrew", "05BD", + "siluqlefthebrew", "05BD", + "similar", "223C", + "sindothebrew", "05C2", + "siosacirclekorean", "3274", + "siosaparenkorean", "3214", + "sioscieuckorean", "317E", + "sioscirclekorean", "3266", + "sioskiyeokkorean", "317A", + "sioskorean", "3145", + "siosnieunkorean", "317B", + "siosparenkorean", "3206", + "siospieupkorean", "317D", + "siostikeutkorean", "317C", + "six", "0036", + "sixarabic", "0666", + "sixbengali", "09EC", + "sixcircle", "2465", + "sixcircleinversesansserif", "278F", + "sixdeva", "096C", + "sixgujarati", "0AEC", + "sixgurmukhi", "0A6C", + "sixhackarabic", "0666", + "sixhangzhou", "3026", + "sixideographicparen", "3225", + "sixinferior", "2086", + "sixmonospace", "FF16", + "sixparen", "2479", + "sixperiod", "248D", + "sixpersian", "06F6", + "sixroman", "2175", + "sixsuperior", "2076", + "sixteencircle", "246F", + "sixteencurrencydenominatorbengali", "09F9", + "sixteenparen", "2483", + "sixteenperiod", "2497", + "sixthai", "0E56", + "slash", "002F", + "slashmonospace", "FF0F", + "slong", "017F", + "slongdotaccent", "1E9B", + "smileface", "263A", + "smonospace", "FF53", + "sofpasuqhebrew", "05C3", + "softhyphen", "00AD", + "softsigncyrillic", "044C", + "sohiragana", "305D", + "sokatakana", "30BD", + "sokatakanahalfwidth", "FF7F", + "soliduslongoverlaycmb", "0338", + "solidusshortoverlaycmb", "0337", + "sorusithai", "0E29", + "sosalathai", "0E28", + "sosothai", "0E0B", + "sosuathai", "0E2A", + "space", "0020", + "spacehackarabic", "0020", + "spade", "2660", + "spadesuitblack", "2660", + "spadesuitwhite", "2664", + "sparen", "24AE", + "squarebelowcmb", "033B", + "squarecc", "33C4", + "squarecm", "339D", + "squarediagonalcrosshatchfill", "25A9", + "squarehorizontalfill", "25A4", + "squarekg", "338F", + "squarekm", "339E", + "squarekmcapital", "33CE", + "squareln", "33D1", + "squarelog", "33D2", + "squaremg", "338E", + "squaremil", "33D5", + "squaremm", "339C", + "squaremsquared", "33A1", + "squareorthogonalcrosshatchfill", "25A6", + "squareupperlefttolowerrightfill", "25A7", + "squareupperrighttolowerleftfill", "25A8", + "squareverticalfill", "25A5", + "squarewhitewithsmallblack", "25A3", + "srsquare", "33DB", + "ssabengali", "09B7", + "ssadeva", "0937", + "ssagujarati", "0AB7", + "ssangcieuckorean", "3149", + "ssanghieuhkorean", "3185", + "ssangieungkorean", "3180", + "ssangkiyeokkorean", "3132", + "ssangnieunkorean", "3165", + "ssangpieupkorean", "3143", + "ssangsioskorean", "3146", + "ssangtikeutkorean", "3138", + "sterling", "00A3", + "sterlingmonospace", "FFE1", + "strokelongoverlaycmb", "0336", + "strokeshortoverlaycmb", "0335", + "subset", "2282", + "subsetnotequal", "228A", + "subsetorequal", "2286", + "succeeds", "227B", + "suchthat", "220B", + "suhiragana", "3059", + "sukatakana", "30B9", + "sukatakanahalfwidth", "FF7D", + "sukunarabic", "0652", + "summation", "2211", + "sun", "263C", + "superset", "2283", + "supersetnotequal", "228B", + "supersetorequal", "2287", + "svsquare", "33DC", + "syouwaerasquare", "337C", + "t", "0074", + "tabengali", "09A4", + "tackdown", "22A4", + "tackleft", "22A3", + "tadeva", "0924", + "tagujarati", "0AA4", + "tagurmukhi", "0A24", + "taharabic", "0637", + "tahfinalarabic", "FEC2", + "tahinitialarabic", "FEC3", + "tahiragana", "305F", + "tahmedialarabic", "FEC4", + "taisyouerasquare", "337D", + "takatakana", "30BF", + "takatakanahalfwidth", "FF80", + "tatweelarabic", "0640", + "tau", "03C4", + "tav", "05EA", + "tavdages", "FB4A", + "tavdagesh", "FB4A", + "tavdageshhebrew", "FB4A", + "tavhebrew", "05EA", + "tbar", "0167", + "tbopomofo", "310A", + "tcaron", "0165", + "tccurl", "02A8", + "tcedilla", "0163", + "tcheharabic", "0686", + "tchehfinalarabic", "FB7B", + "tchehinitialarabic", "FB7C", + "tchehmedialarabic", "FB7D", + "tchehmeeminitialarabic", "FB7C_FEE4", + "tcircle", "24E3", + "tcircumflexbelow", "1E71", + "tcommaaccent", "0163", + "tdieresis", "1E97", + "tdotaccent", "1E6B", + "tdotbelow", "1E6D", + "tecyrillic", "0442", + "tedescendercyrillic", "04AD", + "teharabic", "062A", + "tehfinalarabic", "FE96", + "tehhahinitialarabic", "FCA2", + "tehhahisolatedarabic", "FC0C", + "tehinitialarabic", "FE97", + "tehiragana", "3066", + "tehjeeminitialarabic", "FCA1", + "tehjeemisolatedarabic", "FC0B", + "tehmarbutaarabic", "0629", + "tehmarbutafinalarabic", "FE94", + "tehmedialarabic", "FE98", + "tehmeeminitialarabic", "FCA4", + "tehmeemisolatedarabic", "FC0E", + "tehnoonfinalarabic", "FC73", + "tekatakana", "30C6", + "tekatakanahalfwidth", "FF83", + "telephone", "2121", + "telephoneblack", "260E", + "telishagedolahebrew", "05A0", + "telishaqetanahebrew", "05A9", + "tencircle", "2469", + "tenideographicparen", "3229", + "tenparen", "247D", + "tenperiod", "2491", + "tenroman", "2179", + "tesh", "02A7", + "tet", "05D8", + "tetdagesh", "FB38", + "tetdageshhebrew", "FB38", + "tethebrew", "05D8", + "tetsecyrillic", "04B5", + "tevirhebrew", "059B", + "tevirlefthebrew", "059B", + "thabengali", "09A5", + "thadeva", "0925", + "thagujarati", "0AA5", + "thagurmukhi", "0A25", + "thalarabic", "0630", + "thalfinalarabic", "FEAC", + "thanthakhatthai", "0E4C", + "theharabic", "062B", + "thehfinalarabic", "FE9A", + "thehinitialarabic", "FE9B", + "thehmedialarabic", "FE9C", + "thereexists", "2203", + "therefore", "2234", + "theta", "03B8", + "theta1", "03D1", + "thetasymbolgreek", "03D1", + "thieuthacirclekorean", "3279", + "thieuthaparenkorean", "3219", + "thieuthcirclekorean", "326B", + "thieuthkorean", "314C", + "thieuthparenkorean", "320B", + "thirteencircle", "246C", + "thirteenparen", "2480", + "thirteenperiod", "2494", + "thonangmonthothai", "0E11", + "thook", "01AD", + "thophuthaothai", "0E12", + "thorn", "00FE", + "thothahanthai", "0E17", + "thothanthai", "0E10", + "thothongthai", "0E18", + "thothungthai", "0E16", + "thousandcyrillic", "0482", + "thousandsseparatorarabic", "066C", + "thousandsseparatorpersian", "066C", + "three", "0033", + "threearabic", "0663", + "threebengali", "09E9", + "threecircle", "2462", + "threecircleinversesansserif", "278C", + "threedeva", "0969", + "threeeighths", "215C", + "threegujarati", "0AE9", + "threegurmukhi", "0A69", + "threehackarabic", "0663", + "threehangzhou", "3023", + "threeideographicparen", "3222", + "threeinferior", "2083", + "threemonospace", "FF13", + "threenumeratorbengali", "09F6", + "threeparen", "2476", + "threeperiod", "248A", + "threepersian", "06F3", + "threequarters", "00BE", + "threeroman", "2172", + "threesuperior", "00B3", + "threethai", "0E53", + "thzsquare", "3394", + "tihiragana", "3061", + "tikatakana", "30C1", + "tikatakanahalfwidth", "FF81", + "tikeutacirclekorean", "3270", + "tikeutaparenkorean", "3210", + "tikeutcirclekorean", "3262", + "tikeutkorean", "3137", + "tikeutparenkorean", "3202", + "tilde", "02DC", + "tildebelowcmb", "0330", + "tildecmb", "0303", + "tildecomb", "0303", + "tildedoublecmb", "0360", + "tildeoperator", "223C", + "tildeoverlaycmb", "0334", + "tildeverticalcmb", "033E", + "timescircle", "2297", + "tipehahebrew", "0596", + "tipehalefthebrew", "0596", + "tippigurmukhi", "0A70", + "titlocyrilliccmb", "0483", + "tiwnarmenian", "057F", + "tlinebelow", "1E6F", + "tmonospace", "FF54", + "toarmenian", "0569", + "tohiragana", "3068", + "tokatakana", "30C8", + "tokatakanahalfwidth", "FF84", + "tonebarextrahighmod", "02E5", + "tonebarextralowmod", "02E9", + "tonebarhighmod", "02E6", + "tonebarlowmod", "02E8", + "tonebarmidmod", "02E7", + "tonefive", "01BD", + "tonesix", "0185", + "tonetwo", "01A8", + "tonos", "0384", + "tonsquare", "3327", + "topatakthai", "0E0F", + "tortoiseshellbracketleft", "3014", + "tortoiseshellbracketleftsmall", "FE5D", + "tortoiseshellbracketleftvertical", "FE39", + "tortoiseshellbracketright", "3015", + "tortoiseshellbracketrightsmall", "FE5E", + "tortoiseshellbracketrightvertical", "FE3A", + "totaothai", "0E15", + "tpalatalhook", "01AB", + "tparen", "24AF", + "trademark", "2122", + "tretroflexhook", "0288", + "triagdn", "25BC", + "triaglf", "25C4", + "triagrt", "25BA", + "triagup", "25B2", + "ts", "02A6", + "tsadi", "05E6", + "tsadidagesh", "FB46", + "tsadidageshhebrew", "FB46", + "tsadihebrew", "05E6", + "tsecyrillic", "0446", + "tsere", "05B5", + "tsere12", "05B5", + "tsere1e", "05B5", + "tsere2b", "05B5", + "tserehebrew", "05B5", + "tserenarrowhebrew", "05B5", + "tserequarterhebrew", "05B5", + "tserewidehebrew", "05B5", + "tshecyrillic", "045B", + "ttabengali", "099F", + "ttadeva", "091F", + "ttagujarati", "0A9F", + "ttagurmukhi", "0A1F", + "tteharabic", "0679", + "ttehfinalarabic", "FB67", + "ttehinitialarabic", "FB68", + "ttehmedialarabic", "FB69", + "tthabengali", "09A0", + "tthadeva", "0920", + "tthagujarati", "0AA0", + "tthagurmukhi", "0A20", + "tturned", "0287", + "tuhiragana", "3064", + "tukatakana", "30C4", + "tukatakanahalfwidth", "FF82", + "tusmallhiragana", "3063", + "tusmallkatakana", "30C3", + "tusmallkatakanahalfwidth", "FF6F", + "twelvecircle", "246B", + "twelveparen", "247F", + "twelveperiod", "2493", + "twelveroman", "217B", + "twentycircle", "2473", + "twentyhangzhou", "5344", + "twentyparen", "2487", + "twentyperiod", "249B", + "two", "0032", + "twoarabic", "0662", + "twobengali", "09E8", + "twocircle", "2461", + "twocircleinversesansserif", "278B", + "twodeva", "0968", + "twodotenleader", "2025", + "twodotleader", "2025", + "twodotleadervertical", "FE30", + "twogujarati", "0AE8", + "twogurmukhi", "0A68", + "twohackarabic", "0662", + "twohangzhou", "3022", + "twoideographicparen", "3221", + "twoinferior", "2082", + "twomonospace", "FF12", + "twonumeratorbengali", "09F5", + "twoparen", "2475", + "twoperiod", "2489", + "twopersian", "06F2", + "tworoman", "2171", + "twostroke", "01BB", + "twosuperior", "00B2", + "twothai", "0E52", + "twothirds", "2154", + "u", "0075", + "uacute", "00FA", + "ubar", "0289", + "ubengali", "0989", + "ubopomofo", "3128", + "ubreve", "016D", + "ucaron", "01D4", + "ucircle", "24E4", + "ucircumflex", "00FB", + "ucircumflexbelow", "1E77", + "ucyrillic", "0443", + "udattadeva", "0951", + "udblacute", "0171", + "udblgrave", "0215", + "udeva", "0909", + "udieresis", "00FC", + "udieresisacute", "01D8", + "udieresisbelow", "1E73", + "udieresiscaron", "01DA", + "udieresiscyrillic", "04F1", + "udieresisgrave", "01DC", + "udieresismacron", "01D6", + "udotbelow", "1EE5", + "ugrave", "00F9", + "ugujarati", "0A89", + "ugurmukhi", "0A09", + "uhiragana", "3046", + "uhookabove", "1EE7", + "uhorn", "01B0", + "uhornacute", "1EE9", + "uhorndotbelow", "1EF1", + "uhorngrave", "1EEB", + "uhornhookabove", "1EED", + "uhorntilde", "1EEF", + "uhungarumlaut", "0171", + "uhungarumlautcyrillic", "04F3", + "uinvertedbreve", "0217", + "ukatakana", "30A6", + "ukatakanahalfwidth", "FF73", + "ukcyrillic", "0479", + "ukorean", "315C", + "umacron", "016B", + "umacroncyrillic", "04EF", + "umacrondieresis", "1E7B", + "umatragurmukhi", "0A41", + "umonospace", "FF55", + "underscore", "005F", + "underscoredbl", "2017", + "underscoremonospace", "FF3F", + "underscorevertical", "FE33", + "underscorewavy", "FE4F", + "union", "222A", + "universal", "2200", + "uogonek", "0173", + "uparen", "24B0", + "upblock", "2580", + "upperdothebrew", "05C4", + "upsilon", "03C5", + "upsilondieresis", "03CB", + "upsilondieresistonos", "03B0", + "upsilonlatin", "028A", + "upsilontonos", "03CD", + "uptackbelowcmb", "031D", + "uptackmod", "02D4", + "uragurmukhi", "0A73", + "uring", "016F", + "ushortcyrillic", "045E", + "usmallhiragana", "3045", + "usmallkatakana", "30A5", + "usmallkatakanahalfwidth", "FF69", + "ustraightcyrillic", "04AF", + "ustraightstrokecyrillic", "04B1", + "utilde", "0169", + "utildeacute", "1E79", + "utildebelow", "1E75", + "uubengali", "098A", + "uudeva", "090A", + "uugujarati", "0A8A", + "uugurmukhi", "0A0A", + "uumatragurmukhi", "0A42", + "uuvowelsignbengali", "09C2", + "uuvowelsigndeva", "0942", + "uuvowelsigngujarati", "0AC2", + "uvowelsignbengali", "09C1", + "uvowelsigndeva", "0941", + "uvowelsigngujarati", "0AC1", + "v", "0076", + "vadeva", "0935", + "vagujarati", "0AB5", + "vagurmukhi", "0A35", + "vakatakana", "30F7", + "vav", "05D5", + "vavdagesh", "FB35", + "vavdagesh65", "FB35", + "vavdageshhebrew", "FB35", + "vavhebrew", "05D5", + "vavholam", "FB4B", + "vavholamhebrew", "FB4B", + "vavvavhebrew", "05F0", + "vavyodhebrew", "05F1", + "vcircle", "24E5", + "vdotbelow", "1E7F", + "vecyrillic", "0432", + "veharabic", "06A4", + "vehfinalarabic", "FB6B", + "vehinitialarabic", "FB6C", + "vehmedialarabic", "FB6D", + "vekatakana", "30F9", + "venus", "2640", + "verticalbar", "007C", + "verticallineabovecmb", "030D", + "verticallinebelowcmb", "0329", + "verticallinelowmod", "02CC", + "verticallinemod", "02C8", + "vewarmenian", "057E", + "vhook", "028B", + "vikatakana", "30F8", + "viramabengali", "09CD", + "viramadeva", "094D", + "viramagujarati", "0ACD", + "visargabengali", "0983", + "visargadeva", "0903", + "visargagujarati", "0A83", + "vmonospace", "FF56", + "voarmenian", "0578", + "voicediterationhiragana", "309E", + "voicediterationkatakana", "30FE", + "voicedmarkkana", "309B", + "voicedmarkkanahalfwidth", "FF9E", + "vokatakana", "30FA", + "vparen", "24B1", + "vtilde", "1E7D", + "vturned", "028C", + "vuhiragana", "3094", + "vukatakana", "30F4", + "w", "0077", + "wacute", "1E83", + "waekorean", "3159", + "wahiragana", "308F", + "wakatakana", "30EF", + "wakatakanahalfwidth", "FF9C", + "wakorean", "3158", + "wasmallhiragana", "308E", + "wasmallkatakana", "30EE", + "wattosquare", "3357", + "wavedash", "301C", + "wavyunderscorevertical", "FE34", + "wawarabic", "0648", + "wawfinalarabic", "FEEE", + "wawhamzaabovearabic", "0624", + "wawhamzaabovefinalarabic", "FE86", + "wbsquare", "33DD", + "wcircle", "24E6", + "wcircumflex", "0175", + "wdieresis", "1E85", + "wdotaccent", "1E87", + "wdotbelow", "1E89", + "wehiragana", "3091", + "weierstrass", "2118", + "wekatakana", "30F1", + "wekorean", "315E", + "weokorean", "315D", + "wgrave", "1E81", + "whitebullet", "25E6", + "whitecircle", "25CB", + "whitecircleinverse", "25D9", + "whitecornerbracketleft", "300E", + "whitecornerbracketleftvertical", "FE43", + "whitecornerbracketright", "300F", + "whitecornerbracketrightvertical", "FE44", + "whitediamond", "25C7", + "whitediamondcontainingblacksmalldiamond", "25C8", + "whitedownpointingsmalltriangle", "25BF", + "whitedownpointingtriangle", "25BD", + "whiteleftpointingsmalltriangle", "25C3", + "whiteleftpointingtriangle", "25C1", + "whitelenticularbracketleft", "3016", + "whitelenticularbracketright", "3017", + "whiterightpointingsmalltriangle", "25B9", + "whiterightpointingtriangle", "25B7", + "whitesmallsquare", "25AB", + "whitesmilingface", "263A", + "whitesquare", "25A1", + "whitestar", "2606", + "whitetelephone", "260F", + "whitetortoiseshellbracketleft", "3018", + "whitetortoiseshellbracketright", "3019", + "whiteuppointingsmalltriangle", "25B5", + "whiteuppointingtriangle", "25B3", + "wihiragana", "3090", + "wikatakana", "30F0", + "wikorean", "315F", + "wmonospace", "FF57", + "wohiragana", "3092", + "wokatakana", "30F2", + "wokatakanahalfwidth", "FF66", + "won", "20A9", + "wonmonospace", "FFE6", + "wowaenthai", "0E27", + "wparen", "24B2", + "wring", "1E98", + "wsuperior", "02B7", + "wturned", "028D", + "wynn", "01BF", + "x", "0078", + "xabovecmb", "033D", + "xbopomofo", "3112", + "xcircle", "24E7", + "xdieresis", "1E8D", + "xdotaccent", "1E8B", + "xeharmenian", "056D", + "xi", "03BE", + "xmonospace", "FF58", + "xparen", "24B3", + "xsuperior", "02E3", + "y", "0079", + "yaadosquare", "334E", + "yabengali", "09AF", + "yacute", "00FD", + "yadeva", "092F", + "yaekorean", "3152", + "yagujarati", "0AAF", + "yagurmukhi", "0A2F", + "yahiragana", "3084", + "yakatakana", "30E4", + "yakatakanahalfwidth", "FF94", + "yakorean", "3151", + "yamakkanthai", "0E4E", + "yasmallhiragana", "3083", + "yasmallkatakana", "30E3", + "yasmallkatakanahalfwidth", "FF6C", + "yatcyrillic", "0463", + "ycircle", "24E8", + "ycircumflex", "0177", + "ydieresis", "00FF", + "ydotaccent", "1E8F", + "ydotbelow", "1EF5", + "yeharabic", "064A", + "yehbarreearabic", "06D2", + "yehbarreefinalarabic", "FBAF", + "yehfinalarabic", "FEF2", + "yehhamzaabovearabic", "0626", + "yehhamzaabovefinalarabic", "FE8A", + "yehhamzaaboveinitialarabic", "FE8B", + "yehhamzaabovemedialarabic", "FE8C", + "yehinitialarabic", "FEF3", + "yehmedialarabic", "FEF4", + "yehmeeminitialarabic", "FCDD", + "yehmeemisolatedarabic", "FC58", + "yehnoonfinalarabic", "FC94", + "yehthreedotsbelowarabic", "06D1", + "yekorean", "3156", + "yen", "00A5", + "yenmonospace", "FFE5", + "yeokorean", "3155", + "yeorinhieuhkorean", "3186", + "yerahbenyomohebrew", "05AA", + "yerahbenyomolefthebrew", "05AA", + "yericyrillic", "044B", + "yerudieresiscyrillic", "04F9", + "yesieungkorean", "3181", + "yesieungpansioskorean", "3183", + "yesieungsioskorean", "3182", + "yetivhebrew", "059A", + "ygrave", "1EF3", + "yhook", "01B4", + "yhookabove", "1EF7", + "yiarmenian", "0575", + "yicyrillic", "0457", + "yikorean", "3162", + "yinyang", "262F", + "yiwnarmenian", "0582", + "ymonospace", "FF59", + "yod", "05D9", + "yoddagesh", "FB39", + "yoddageshhebrew", "FB39", + "yodhebrew", "05D9", + "yodyodhebrew", "05F2", + "yodyodpatahhebrew", "FB1F", + "yohiragana", "3088", + "yoikorean", "3189", + "yokatakana", "30E8", + "yokatakanahalfwidth", "FF96", + "yokorean", "315B", + "yosmallhiragana", "3087", + "yosmallkatakana", "30E7", + "yosmallkatakanahalfwidth", "FF6E", + "yotgreek", "03F3", + "yoyaekorean", "3188", + "yoyakorean", "3187", + "yoyakthai", "0E22", + "yoyingthai", "0E0D", + "yparen", "24B4", + "ypogegrammeni", "037A", + "ypogegrammenigreekcmb", "0345", + "yr", "01A6", + "yring", "1E99", + "ysuperior", "02B8", + "ytilde", "1EF9", + "yturned", "028E", + "yuhiragana", "3086", + "yuikorean", "318C", + "yukatakana", "30E6", + "yukatakanahalfwidth", "FF95", + "yukorean", "3160", + "yusbigcyrillic", "046B", + "yusbigiotifiedcyrillic", "046D", + "yuslittlecyrillic", "0467", + "yuslittleiotifiedcyrillic", "0469", + "yusmallhiragana", "3085", + "yusmallkatakana", "30E5", + "yusmallkatakanahalfwidth", "FF6D", + "yuyekorean", "318B", + "yuyeokorean", "318A", + "yyabengali", "09DF", + "yyadeva", "095F", + "z", "007A", + "zaarmenian", "0566", + "zacute", "017A", + "zadeva", "095B", + "zagurmukhi", "0A5B", + "zaharabic", "0638", + "zahfinalarabic", "FEC6", + "zahinitialarabic", "FEC7", + "zahiragana", "3056", + "zahmedialarabic", "FEC8", + "zainarabic", "0632", + "zainfinalarabic", "FEB0", + "zakatakana", "30B6", + "zaqefgadolhebrew", "0595", + "zaqefqatanhebrew", "0594", + "zarqahebrew", "0598", + "zayin", "05D6", + "zayindagesh", "FB36", + "zayindageshhebrew", "FB36", + "zayinhebrew", "05D6", + "zbopomofo", "3117", + "zcaron", "017E", + "zcircle", "24E9", + "zcircumflex", "1E91", + "zcurl", "0291", + "zdot", "017C", + "zdotaccent", "017C", + "zdotbelow", "1E93", + "zecyrillic", "0437", + "zedescendercyrillic", "0499", + "zedieresiscyrillic", "04DF", + "zehiragana", "305C", + "zekatakana", "30BC", + "zero", "0030", + "zeroarabic", "0660", + "zerobengali", "09E6", + "zerodeva", "0966", + "zerogujarati", "0AE6", + "zerogurmukhi", "0A66", + "zerohackarabic", "0660", + "zeroinferior", "2080", + "zeromonospace", "FF10", + "zeropersian", "06F0", + "zerosuperior", "2070", + "zerothai", "0E50", + "zerowidthjoiner", "FEFF", + "zerowidthnonjoiner", "200C", + "zerowidthspace", "200B", + "zeta", "03B6", + "zhbopomofo", "3113", + "zhearmenian", "056A", + "zhebrevecyrillic", "04C2", + "zhecyrillic", "0436", + "zhedescendercyrillic", "0497", + "zhedieresiscyrillic", "04DD", + "zihiragana", "3058", + "zikatakana", "30B8", + "zinorhebrew", "05AE", + "zlinebelow", "1E95", + "zmonospace", "FF5A", + "zohiragana", "305E", + "zokatakana", "30BE", + "zparen", "24B5", + "zretroflexhook", "0290", + "zstroke", "01B6", + "zuhiragana", "305A", + "zukatakana", "30BA", ); -$prog = $0; + +my $prog = $0; $prog =~ s@.*/@@; -$groff_sys_fontdir = "@FONTDIR@"; +my $groff_sys_fontdir = "@FONTDIR@"; + +use Getopt::Std; +getopts('a:d:e:i:mnsvx'); -do 'getopts.pl'; -do Getopts('a:d:e:i:mnsv'); +our ($opt_a, $opt_d, $opt_e, $opt_i, $opt_m, $opt_n, $opt_s, $opt_v, $opt_x); if ($opt_v) { print "GNU afmtodit (groff) version @VERSION@\n"; @@ -6054,24 +6060,36 @@ if ($opt_v) { } if ($#ARGV != 2) { - die "usage: $prog [-mnsv] [-a angle] [-d DESC] [-e encoding]\n" . + die "usage: $prog [-mnsvx] [-a angle] [-d DESC] [-e encoding]\n" . " [-i n] afmfile mapfile font\n"; } -$afm = $ARGV[0]; -$map = $ARGV[1]; -$font = $ARGV[2]; -$desc = $opt_d || "DESC"; -$sys_map = $groff_sys_fontdir . "/devps/generate/" . $map; -$sys_desc = $groff_sys_fontdir . "/devps/" . $desc; +my $afm = $ARGV[0]; +my $map = $ARGV[1]; +my $font = $ARGV[2]; +my $desc = $opt_d || "DESC"; +my $sys_map = $groff_sys_fontdir . "/devps/generate/" . $map; +my $sys_desc = $groff_sys_fontdir . "/devps/" . $desc; # read the afm file +my $psname; +my $italic_angle = 0; +my (@kern1, @kern2, @kernx); +my (%italic_correction, %left_italic_correction); +my %subscript_correction; +# my %ligs +my %ligatures; +my (@encoding, %in_encoding); +my (%width, %height, %depth); +my (%left_side_bearing, %right_side_bearing); + open(AFM, $afm) || die "$prog: can't open \`$ARGV[0]': $!\n"; while (<AFM>) { chop; - @field = split(' '); + my @field = split(' '); + next if $#field < 0; if ($field[0] eq "FontName") { $psname = $field[1]; } @@ -6080,9 +6098,9 @@ while (<AFM>) { } elsif ($field[0] eq "KPX") { if ($#field == 3) { - push(kern1, $field[1]); - push(kern2, $field[2]); - push(kernx, $field[3]); + push(@kern1, $field[1]); + push(@kern2, $field[2]); + push(@kernx, $field[3]); } } elsif ($field[0] eq "italicCorrection") { @@ -6097,18 +6115,19 @@ while (<AFM>) { elsif ($field[0] eq "StartCharMetrics") { while (<AFM>) { @field = split(' '); + next if $#field < 0; last if ($field[0] eq "EndCharMetrics"); if ($field[0] eq "C") { - $c = -1; - $wx = 0; - $n = ""; - %ligs = (); - $lly = 0; - $ury = 0; - $llx = 0; - $urx = 0; - $c = $field[1]; - $i = 2; + my $w; + my $wx = 0; + my $n = ""; +# %ligs = (); + my $lly = 0; + my $ury = 0; + my $llx = 0; + my $urx = 0; + my $c = $field[1]; + my $i = 2; while ($i <= $#field) { if ($field[$i] eq "WX") { $w = $field[$i + 1]; @@ -6125,10 +6144,10 @@ while (<AFM>) { $ury = $field[$i + 4]; $i += 5; } - elsif ($field[$i] eq "L") { - $ligs{$field[$i + 2]} = $field[$i + 1]; - $i += 3; - } +# elsif ($field[$i] eq "L") { +# $ligs{$field[$i + 2]} = $field[$i + 1]; +# $i += 3; +# } else { while ($i <= $#field && $field[$i] ne ";") { $i++; @@ -6145,9 +6164,9 @@ while (<AFM>) { $depth{$n} = -$lly; $left_side_bearing{$n} = -$llx; $right_side_bearing{$n} = $urx - $w; - while (($lig, $glyph2) = each %ligs) { - $ligatures{$lig} = $n . " " . $glyph2; - } +# while ((my $lig, my $glyph2) = each %ligs) { +# $ligatures{$lig} = $n . " " . $glyph2; +# } } } } @@ -6156,6 +6175,7 @@ close(AFM); # read the DESC file +my ($sizescale, $resolution, $unitwidth); $sizescale = 1; open(DESC, $desc) || open(DESC, $sys_desc) || @@ -6163,24 +6183,32 @@ open(DESC, $desc) || open(DESC, $sys_desc) || while (<DESC>) { next if /^#/; chop; - @field = split(' '); + my @field = split(' '); + next if $#field < 0; last if $field[0] eq "charset"; - if ($field[0] eq "res") { $resolution = $field[1]; } - if ($field[0] eq "unitwidth") { $unitwidth = $field[1]; } - if ($field[0] eq "sizescale") { $sizescale = $field[1]; } + if ($field[0] eq "res") { + $resolution = $field[1]; + } + elsif ($field[0] eq "unitwidth") { + $unitwidth = $field[1]; + } + elsif ($field[0] eq "sizescale") { + $sizescale = $field[1]; + } } close(DESC); if ($opt_e) { # read the encoding file - $sys_opt_e = $groff_sys_fontdir . "/devps/" . $opt_e; + my $sys_opt_e = $groff_sys_fontdir . "/devps/" . $opt_e; open(ENCODING, $opt_e) || open(ENCODING, $sys_opt_e) || die "$prog: can't open \`$opt_e' or \`$sys_opt_e': $!\n"; while (<ENCODING>) { next if /^#/; chop; - @field = split(' '); + my @field = split(' '); + next if $#field < 0; if ($#field == 1) { if ($field[1] >= 0 && defined $width{$field[0]}) { $encoding[$field[1]] = $field[0]; @@ -6193,29 +6221,41 @@ if ($opt_e) { # read the map file +my (%nmap, %map); + open(MAP, $map) || open(MAP, $sys_map) || die "$prog: can't open \`$map' or \`$sys_map': $!\n"; while (<MAP>) { next if /^#/; chop; - @field = split(' '); + my @field = split(' '); + next if $#field < 0; if ($#field == 1) { - if (defined $mapped{$field[1]}) { - warn "Both $mapped{$field[1]} and $field[0] map to $field[1]"; - } - elsif ($field[1] eq "space") { - # the PostScript character "space" is automatically mapped - # to the groff character "space"; this is for grops - warn "you are not allowed to map to the groff character `space'"; + if ($field[1] eq "space") { + # The PostScript character "space" is automatically mapped + # to the groff character "space"; this is for grops. + warn "you are not allowed to map to " . + "the groff character \`space'"; } elsif ($field[0] eq "space") { - warn "you are not allowed to map the PostScript character `space'"; + warn "you are not allowed to map " . + "the PostScript character \`space'"; } else { $nmap{$field[0]} += 0; - $map{$field[0],$nmap{$field[0]}} = $field[1]; + $map{$field[0], $nmap{$field[0]}} = $field[1]; $nmap{$field[0]} += 1; - $mapped{$field[1]} = $field[0]; + + # There is more then one way to make a PS glyph name; + # let us try unicode names with `uni' and `u' prefixes. + my $utmp = $AGL_to_unicode{$field[0]}; + if (defined $utmp && $utmp =~ /^[0-9A-F]{4}$/) { + foreach my $unicodepsname ("uni" . $utmp, "u" . $utmp) { + $nmap{$unicodepsname} += 0; + $map{$unicodepsname, $nmap{$unicodepsname}} = $field[1]; + $nmap{$unicodepsname} += 1; + } + } } } } @@ -6223,32 +6263,142 @@ close(MAP); $italic_angle = $opt_a if $opt_a; -# add unencoded characters -$i = ($#encoding > 256) ? ($#encoding + 1) : 256; -while ($ch = each %width) { - if (!$in_encoding{$ch}) { - $encoding[$i] = $ch; - $i++; - if (!$nmap{$ch}) { - $nmap{$ch} += 1; - $u1 = $AGL_to_unicode{$ch}; - if ($u1) { - $u2 = $unicode_decomposed{$u1}; - $u = $u2 ? $u2 : $u1; +if (!$opt_x) { + my %mapped; + my $i = ($#encoding > 256) ? ($#encoding + 1) : 256; + while (my $ch = each %width) { + # add unencoded characters + if (!$in_encoding{$ch}) { + $encoding[$i] = $ch; + $i++; + } + if ($nmap{$ch}) { + for (my $j = 0; $j < $nmap{$ch}; $j++) { + if (defined $mapped{$map{$ch, $j}}) { + warn "both $mapped{$map{$ch, $j}} and $ch " . + "map to $map{$ch, $j}"; + } + else { + $mapped{$map{$ch, $j}} = $ch; + } } - else { - $u = "---"; + } + else { + my $u = ""; # the resulting groff glyph name + my $ucomp = ""; # Unicode string before decomposition + my $utmp = ""; # temporary value + my $component = ""; + my $nv = 0; + + # Step 1: + # Drop all characters from the glyph name starting with the + # first occurrence of a period (U+002E FULL STOP), if any. + # ?? We avoid mapping of glyphs with periods, since they are + # likely to be variant glyphs, leading to a `many ps glyphs -- + # one groff glyph' conflict. + # + # If multiple glyphs in the font represent the same character + # in the Unicode standard, as do `A' and `A.swash', for example, + # they can be differentiated by using the same base name with + # different suffixes. This suffix (the part of glyph name that + # follows the first period) does not participate in the + # computation of a character sequence. It can be used by font + # designers to indicate some characteristics of the glyph. The + # suffix may contain periods or any other permitted characters. + # Small cap A, for example, could be named `uni0041.sc' or `A.sc'. + + next if $ch =~ /\./; + + # Step 2: + # Split the remaining string into a sequence of components, + # using the underscore character (U+005F LOW LINE) as the + # delimiter. + + while ($ch =~ /([^_]+)/g) { + $component = $1; + + # Step 3: + # Map each component to a character string according to the + # procedure below: + # + # * If the component is in the Adobe Glyph List, then map + # it to the corresponding character in that list. + + $utmp = $AGL_to_unicode{$component}; + if ($utmp) { + $utmp = "U+" . $utmp; + } + + # * Otherwise, if the component is of the form `uni' + # (U+0075 U+006E U+0069) followed by a sequence of + # uppercase hexadecimal digits (0 .. 9, A .. F, i.e., + # U+0030 .. U+0039, U+0041 .. U+0046), the length of + # that sequence is a multiple of four, and each group of + # four digits represents a number in the set {0x0000 .. + # 0xD7FF, 0xE000 .. 0xFFFF}, then interpret each such + # number as a Unicode scalar value and map the component + # to the string made of those scalar values. + + elsif ($component =~ /^uni([0-9A-F]{4})+$/) { + while ($component =~ /([0-9A-F]{4})/g) { + $nv = hex("0x" . $1); + if ($nv <= 0xD7FF || $nv >= 0xE000) { + $utmp .= "U+" . $1; + } + else { + $utmp = ""; + last; + } + } + } + + # * Otherwise, if the component is of the form `u' (U+0075) + # followed by a sequence of four to six uppercase + # hexadecimal digits {0 .. 9, A .. F} (U+0030 .. U+0039, + # U+0041 .. U+0046), and those digits represent a number + # in {0x0000 .. 0xD7FF, 0xE000 .. 0x10FFFF}, then + # interpret this number as a Unicode scalar value and map + # the component to the string made of this scalar value. + + elsif ($component =~ /^u([0-9A-F]{4,6})$/) { + $nv = hex("0x" . $1); + if ($nv <= 0xD7FF || ($nv >= 0xE000 && $nv <= 0x10FFFF)) { + $utmp .= "U+" . $1; + } + } + + # Finally, concatenate those strings; the result is the + # character string to which the glyph name is mapped. + + $ucomp .= $utmp if $utmp; + } + + # Unicode decomposition + while ($ucomp =~ /([0-9A-F]{4,6})/g) { + $component = $1; + $utmp = $unicode_decomposed{$component}; + $u .= "_" . ($utmp ? $utmp : $component); + } + $u =~ s/^_/u/; + if ($u) { + if (defined $mapped{$u}) { + warn "both $mapped{$u} and $ch map to $u"; + } + else { + $mapped{$u} = $ch; + } + $nmap{$ch} += 1; + $map{$ch, "0"} = $u; } - $map{$ch,"0"} = $u; } } } -# check explicitly for groff's standard ligatures -- many afm files don't -# have proper `L' entries +# Check explicitly for groff's standard ligatures -- many afm files don't +# have proper `L' entries. -%default_ligatures = ( +my %default_ligatures = ( "fi", "f i", "fl", "f l", "ff", "f f", @@ -6256,7 +6406,7 @@ while ($ch = each %width) { "ffl", "ff l", ); -while (($lig, $components) = each %default_ligatures) { +while (my ($lig, $components) = each %default_ligatures) { if (defined $width{$lig} && !defined $ligatures{$lig}) { $ligatures{$lig} = $components; } @@ -6271,17 +6421,17 @@ print("name $font\n"); print("internalname $psname\n") if $psname; print("special\n") if $opt_s; printf("slant %g\n", $italic_angle) if $italic_angle != 0; -printf("spacewidth %d\n", do conv($width{"space"})) if defined $width{"space"}; +printf("spacewidth %d\n", conv($width{"space"})) if defined $width{"space"}; if ($opt_e) { - $e = $opt_e; + my $e = $opt_e; $e =~ s@.*/@@; print("encoding $e\n"); } if (!$opt_n && %ligatures) { print("ligatures"); - while ($lig = each %ligatures) { + while (my $lig = each %ligatures) { print(" $lig"); } print(" 0\n"); @@ -6290,17 +6440,17 @@ if (!$opt_n && %ligatures) { if ($#kern1 >= 0) { print("kernpairs\n"); - for ($i = 0; $i <= $#kern1; $i++) { - $c1 = $kern1[$i]; - $c2 = $kern2[$i]; + for (my $i = 0; $i <= $#kern1; $i++) { + my $c1 = $kern1[$i]; + my $c2 = $kern2[$i]; if ($nmap{$c1} != 0 && $nmap{$c2} != 0) { - for ($j = 0; $j < $nmap{$c1}; $j++) { - for ($k = 0; $k < $nmap{$c2}; $k++) { + for (my $j = 0; $j < $nmap{$c1}; $j++) { + for (my $k = 0; $k < $nmap{$c2}; $k++) { if ($kernx[$i] != 0) { printf("%s %s %d\n", - $map{$c1,$j}, - $map{$c2,$k}, - do conv($kernx[$i])); + $map{$c1, $j}, + $map{$c2, $k}, + conv($kernx[$i])); } } } @@ -6308,17 +6458,22 @@ if ($#kern1 >= 0) { } } +my ($asc_boundary, $desc_boundary, $xheight, $slant); + # characters not shorter than asc_boundary are considered to have ascenders -$asc_boundary = $height{"t"} - 1; +$asc_boundary = 0; +$asc_boundary = $height{"t"} if defined $height{"t"}; +$asc_boundary -= 1; # likewise for descenders -$desc_boundary = $depth{"g"}; -$desc_boundary = $depth{"j"} if $depth{"j"} < $desc_boundary; -$desc_boundary = $depth{"p"} if $depth{"p"} < $desc_boundary; -$desc_boundary = $depth{"q"} if $depth{"q"} < $desc_boundary; -$desc_boundary = $depth{"y"} if $depth{"y"} < $desc_boundary; +$desc_boundary = 0; +$desc_boundary = $depth{"g"} if defined $depth{"g"}; +$desc_boundary = $depth{"j"} if defined $depth{"g"} && $depth{"j"} < $desc_boundary; +$desc_boundary = $depth{"p"} if defined $depth{"p"} && $depth{"p"} < $desc_boundary; +$desc_boundary = $depth{"q"} if defined $depth{"q"} && $depth{"q"} < $desc_boundary; +$desc_boundary = $depth{"y"} if defined $depth{"y"} && $depth{"y"} < $desc_boundary; $desc_boundary -= 1; if (defined $height{"x"}) { @@ -6336,21 +6491,21 @@ $slant = sin($italic_angle)/cos($italic_angle); $slant = 0 if $slant < 0; print("charset\n"); -for ($i = 0; $i <= $#encoding; $i++) { - $ch = $encoding[$i]; - if ($ch ne "" && $ch ne "space") { - $map{$ch,"0"} = "---" if $nmap{$ch} == 0; - $type = 0; - $h = $height{$ch}; +for (my $i = 0; $i <= $#encoding; $i++) { + my $ch = $encoding[$i]; + if (defined $ch && $ch ne "" && $ch ne "space") { + $map{$ch, "0"} = "---" if !defined $nmap{$ch} || $nmap{$ch} == 0; + my $type = 0; + my $h = $height{$ch}; $h = 0 if $h < 0; - $d = $depth{$ch}; + my $d = $depth{$ch}; $d = 0 if $d < 0; $type = 1 if $d >= $desc_boundary; $type += 2 if $h >= $asc_boundary; - printf("%s\t%d", $map{$ch,"0"}, do conv($width{$ch})); - $italic_correction = 0; - $left_math_fit = 0; - $subscript_correction = 0; + printf("%s\t%d", $map{$ch, "0"}, conv($width{$ch})); + my $italic_correction = 0; + my $left_math_fit = 0; + my $subscript_correction = 0; if (defined $opt_i) { $italic_correction = $right_side_bearing{$ch} + $opt_i; $italic_correction = 0 if $italic_correction < 0; @@ -6372,35 +6527,37 @@ for ($i = 0; $i <= $#encoding; $i++) { $subscript_correction = $subscript_correction{$ch}; } if ($subscript_correction != 0) { - printf(",%d,%d", do conv($h), do conv($d)); - printf(",%d,%d,%d", do conv($italic_correction), - do conv($left_math_fit), - do conv($subscript_correction)); + printf(",%d,%d", conv($h), conv($d)); + printf(",%d,%d,%d", conv($italic_correction), + conv($left_math_fit), + conv($subscript_correction)); } elsif ($left_math_fit != 0) { - printf(",%d,%d", do conv($h), do conv($d)); - printf(",%d,%d", do conv($italic_correction), - do conv($left_math_fit)); + printf(",%d,%d", conv($h), conv($d)); + printf(",%d,%d", conv($italic_correction), + conv($left_math_fit)); } elsif ($italic_correction != 0) { - printf(",%d,%d", do conv($h), do conv($d)); - printf(",%d", do conv($italic_correction)); + printf(",%d,%d", conv($h), conv($d)); + printf(",%d", conv($italic_correction)); } elsif ($d != 0) { - printf(",%d,%d", do conv($h), do conv($d)); + printf(",%d,%d", conv($h), conv($d)); } else { # always put the height in to stop groff guessing - printf(",%d", do conv($h)); + printf(",%d", conv($h)); } printf("\t%d", $type); printf("\t%d\t%s\n", $i, $ch); - for ($j = 1; $j < $nmap{$ch}; $j++) { - printf("%s\t\"\n", $map{$ch,$j}); + if (defined $nmap{$ch}) { + for (my $j = 1; $j < $nmap{$ch}; $j++) { + printf("%s\t\"\n", $map{$ch, $j}); + } } } - if ($ch eq "space" && defined $width{"space"}) { - printf("space\t%d\t0\t%d\tspace\n", do conv($width{"space"}), $i); + if (defined $ch && $ch eq "space" && defined $width{"space"}) { + printf("space\t%d\t0\t%d\tspace\n", conv($width{"space"}), $i); } } diff --git a/contrib/groff/src/utils/hpftodit/Makefile.sub b/contrib/groff/src/utils/hpftodit/Makefile.sub index d83188c..6e80b47 100644 --- a/contrib/groff/src/utils/hpftodit/Makefile.sub +++ b/contrib/groff/src/utils/hpftodit/Makefile.sub @@ -2,5 +2,7 @@ PROG=hpftodit$(EXEEXT) MAN1=hpftodit.n XLIBS=$(LIBGROFF) MLIB=$(LIBM) -OBJS=hpftodit.$(OBJEXT) -CCSRCS=$(srcdir)/hpftodit.cpp +OBJS=hpftodit.$(OBJEXT) \ + hpuni.$(OBJEXT) +CCSRCS=$(srcdir)/hpftodit.cpp \ + $(srcdir)/hpuni.cpp diff --git a/contrib/groff/src/utils/hpftodit/hpftodit.cpp b/contrib/groff/src/utils/hpftodit/hpftodit.cpp index fe512b6..5910fb2 100644 --- a/contrib/groff/src/utils/hpftodit/hpftodit.cpp +++ b/contrib/groff/src/utils/hpftodit/hpftodit.cpp @@ -1,5 +1,5 @@ // -*- C++ -*- -/* Copyright (C) 1994, 2000, 2001, 2003 Free Software Foundation, Inc. +/* Copyright (C) 1994, 2000, 2001, 2003, 2004 Free Software Foundation, Inc. Written by James Clark (jjc@jclark.com) This file is part of groff. @@ -16,21 +16,21 @@ for more details. You should have received a copy of the GNU General Public License along with groff; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. */ /* TODO -put human readable font name in device file devise new names for useful characters -use --- for unnamed characters option to specify symbol sets to look in -make it work with TrueType fonts put filename in error messages (or fix lib) */ #include "lib.h" +#include <stdio.h> #include <stdlib.h> +#include <string.h> +#include <ctype.h> #include <math.h> #include <errno.h> #include "assert.h" @@ -39,17 +39,31 @@ put filename in error messages (or fix lib) #include "error.h" #include "cset.h" #include "nonposix.h" +#include "unicode.h" extern "C" const char *Version_string; +extern const char *hp_msl_to_unicode_code(const char *); #define SIZEOF(v) (sizeof(v)/sizeof(v[0])) +#define equal(a, b) (strcmp(a, b) == 0) +// only valid if is_uname(c) has returned true +#define is_decomposed(c) strchr(c, '_') -const int MULTIPLIER = 3; +#define NO 0 +#define YES 1 + +#define MSL 0 +#define SYMSET 1 +#define UNICODE 2 + +#define UNNAMED "---" + +static double multiplier = 3.0; // make Agfa-based unitwidth an integer inline int scale(int n) { - return n * MULTIPLIER; + return int(n * multiplier + 0.5); } // tags in TFM file @@ -57,39 +71,67 @@ int scale(int n) enum tag_type { min_tag = 400, type_tag = 400, + copyright_tag = 401, + comment_tag = 402, + charcode_tag = 403, // MSL for Intellifont, Unicode for TrueType symbol_set_tag = 404, - msl_tag = 403, + unique_identifier_tag = 405, inches_per_point_tag = 406, + nominal_point_size_tag = 407, design_units_per_em_tag = 408, posture_tag = 409, + type_structure_tag = 410, stroke_weight_tag = 411, spacing_tag = 412, slant_tag = 413, appearance_width_tag = 414, + serif_style_tag = 415, + font_name_tag = 417, + typeface_source_tag = 418, + average_width_tag = 419, + max_width_tag = 420, word_spacing_tag = 421, + recommended_line_spacing_tag = 422, + cap_height_tag = 423, x_height_tag = 424, + max_ascent_tag = 425, + max_descent_tag = 426, lower_ascent_tag = 427, lower_descent_tag = 428, + underscore_depth_tag = 429, + underscore_thickness_tag = 430, + uppercase_accent_height_tag = 431, + lowercase_accent_height_tag = 432, width_tag = 433, + vertical_escapement_tag = 434, left_extent_tag = 435, right_extent_tag = 436, ascent_tag = 437, descent_tag = 438, pair_kern_tag = 439, + sector_kern_tag = 440, + track_kern_tag = 441, typeface_tag = 442, + panose_tag = 443, max_tag = 443 - }; +}; -// types in TFM file +const char *tag_name[] = { + "Symbol Set", + "Font Type" // MSL for Intellifont, Unicode for TrueType +}; +// types in TFM file enum { - ENUM_TYPE = 1, - BYTE_TYPE = 2, + BYTE_TYPE = 1, + ASCII_TYPE = 2, // NUL-terminated string USHORT_TYPE = 3, - FLOAT_TYPE = 5, - SIGNED_SHORT_TYPE = 17 - }; - + LONG_TYPE = 4, // unused + RATIONAL_TYPE = 5, // 8-byte numerator + 8-byte denominator + SIGNED_BYTE_TYPE = 16, // unused + SIGNED_SHORT_TYPE = 17, + SIGNED_LONG_TYPE = 18 // unused +}; typedef unsigned char byte; typedef unsigned short uint16; @@ -103,6 +145,7 @@ public: byte get_byte(); uint16 get_uint16(); uint32 get_uint32(); + uint32 get_uint32(char *orig); void seek(uint32 n); private: unsigned char *buf_; @@ -115,11 +158,12 @@ struct entry { uint16 type; uint32 count; uint32 value; + char orig_value[4]; entry() : present(0) { } }; struct char_info { - uint16 msl; + uint16 charcode; uint16 width; int16 ascent; int16 descent; @@ -129,6 +173,7 @@ struct char_info { unsigned char code; }; +const uint16 NO_GLYPH = 0xffff; const uint16 NO_SYMBOL_SET = 0; struct name_list { @@ -146,43 +191,74 @@ struct symbol_set { #define SYMBOL_SET(n, c) ((n) * 32 + ((c) - 64)) uint16 text_symbol_sets[] = { - SYMBOL_SET(0, 'N'), // Latin 1 + SYMBOL_SET(19, 'U'), // Windows Latin 1 ("ANSI", code page 1252) + SYMBOL_SET(9, 'E'), // Windows Latin 2, Code Page 1250 + SYMBOL_SET(5, 'T'), // Code Page 1254 + SYMBOL_SET(7, 'J'), // Desktop SYMBOL_SET(6, 'J'), // Microsoft Publishing - SYMBOL_SET(2, 'N'), // Latin 2 + SYMBOL_SET(0, 'N'), // Latin 1 (subset of 19U, + // so we should never get here) + SYMBOL_SET(2, 'N'), // Latin 2 (subset of 9E, + // so we should never get here) + SYMBOL_SET(8, 'U'), // HP Roman 8 + SYMBOL_SET(10, 'J'), // PS Standard + SYMBOL_SET(9, 'U'), // Windows 3.0 "ANSI" + SYMBOL_SET(1, 'U'), // U.S. Legal + + SYMBOL_SET(12, 'J'), // MC Text + SYMBOL_SET(10, 'U'), // PC Code Page 437 + SYMBOL_SET(11, 'U'), // PC Code Page 437N + SYMBOL_SET(17, 'U'), // PC Code Page 852 + SYMBOL_SET(12, 'U'), // PC Code Page 850 + SYMBOL_SET(9, 'T'), // PC Code Page 437T 0 - }; +}; uint16 special_symbol_sets[] = { - SYMBOL_SET(8, 'M'), - SYMBOL_SET(5, 'M'), - SYMBOL_SET(15, 'U'), + SYMBOL_SET(8, 'M'), // Math 8 + SYMBOL_SET(5, 'M'), // PS Math + SYMBOL_SET(15, 'U'), // Pi font + SYMBOL_SET(13, 'J'), // Ventura International + SYMBOL_SET(19, 'M'), // Symbol font + SYMBOL_SET(579, 'L'), // Wingdings 0 - }; +}; entry tags[max_tag + 1 - min_tag]; char_info *char_table; -uint32 nchars; +uint32 nchars = 0; -unsigned int msl_name_table_size = 0; -name_list **msl_name_table = 0; +unsigned int charcode_name_table_size = 0; +name_list **charcode_name_table = NULL; -unsigned int n_symbol_sets; symbol_set *symbol_set_table; +unsigned int n_symbol_sets; -static int special_flag = 0; -static int italic_flag = 0; +static int debug_flag = NO; +static int special_flag = NO; // not a special font +static int italic_flag = NO; // don't add italic correction static int italic_sep; - -static void usage(FILE *stream); +static int all_flag = NO; // don't include glyphs not in mapfile +static int quiet_flag = NO; // don't suppress warnings about symbols not found + +static char *hp_msl_to_ucode_name(int); +static char *unicode_to_ucode_name(int); +static int is_uname(char *); +static char *show_symset(unsigned int); +static void usage(FILE *); static void usage(); static const char *xbasename(const char *); static void read_tags(File &); -static void check_type(); -static void check_units(File &); -static int read_map(const char *); +static int check_type(); +static void check_units(File &, const int, double *, double *); +static int read_map(const char *, const int); static void require_tag(tag_type); -static void dump_tags(File &f); +static void dump_ascii(File &, tag_type); +static void dump_tags(File &); +static void dump_symbol_sets(File &); +static void dump_symbols(int); +static void output_font_name(File &); static void output_spacewidth(); static void output_pclweight(); static void output_pclproportional(); @@ -192,8 +268,8 @@ static void output_slant(); static void output_ligatures(); static void read_symbol_sets(File &); static void read_and_output_kernpairs(File &); -static void output_charset(); -static void read_char_table(File &f); +static void output_charset(const int); +static void read_char_table(File &); inline entry &tag_info(tag_type t) @@ -201,35 +277,44 @@ entry &tag_info(tag_type t) return tags[t - min_tag]; } -int main(int argc, char **argv) +int +main(int argc, char **argv) { program_name = argv[0]; int opt; - int debug_flag = 0; + int res = 1200; // PCL unit of measure for cursor moves + int scalesize = 4; // LaserJet 4 only allows 1/4 point increments + int unitwidth = 6350; + double ppi; // points per inch + double upem; // design units per em static const struct option long_options[] = { { "help", no_argument, 0, CHAR_MAX + 1 }, { "version", no_argument, 0, 'v' }, { NULL, 0, 0, 0 } }; - while ((opt = getopt_long(argc, argv, "dsvi:", long_options, NULL)) != EOF) { + while ((opt = getopt_long(argc, argv, "adsqvi:", long_options, NULL)) != EOF) { switch (opt) { + case 'a': + all_flag = YES; + break; case 'd': - debug_flag = 1; + debug_flag = YES; break; case 's': - special_flag = 1; + special_flag = YES; break; case 'i': - italic_flag = 1; - italic_sep = atoi(optarg); + italic_flag = YES; + italic_sep = atoi(optarg); // design units + break; + case 'q': + quiet_flag = YES; // suppress warnings about symbols not found break; case 'v': - { - printf("GNU hpftodit (groff) version %s\n", Version_string); - exit(0); - } + printf("GNU hpftodit (groff) version %s\n", Version_string); + exit(0); break; case CHAR_MAX + 1: // --help usage(stdout); @@ -242,46 +327,72 @@ int main(int argc, char **argv) assert(0); } } - if (argc - optind != 3) + + if (debug_flag && argc - optind < 1) + usage(); + else if (!debug_flag && argc - optind != 3) usage(); File f(argv[optind]); - if (!read_map(argv[optind + 1])) - exit(1); - current_filename = 0; - current_lineno = -1; // no line numbers - if (freopen(argv[optind + 2], "w", stdout) == 0) - fatal("cannot open `%1': %2", argv[optind + 2], strerror(errno)); - current_filename = argv[optind]; - printf("name %s\n", xbasename(argv[optind + 2])); - if (special_flag) - printf("special\n"); read_tags(f); - check_type(); - check_units(f); + int tfm_type = check_type(); if (debug_flag) dump_tags(f); + if (!debug_flag && !read_map(argv[optind + 1], tfm_type)) + exit(1); + else if (debug_flag && argc - optind > 1) + read_map(argv[optind + 1], tfm_type); + current_filename = NULL; + current_lineno = -1; // no line numbers + if (!debug_flag && !equal(argv[optind + 2], "-")) + if (freopen(argv[optind + 2], "w", stdout) == NULL) + fatal("cannot open `%1': %2", argv[optind + 2], strerror(errno)); + current_filename = argv[optind]; + + check_units(f, tfm_type, &ppi, &upem); + if (tfm_type == UNICODE) // don't calculate for Intellifont TFMs + multiplier = double(res) / upem / ppi * unitwidth / scalesize; + if (italic_flag) + // convert from thousandths of an em to design units + italic_sep = int(italic_sep * upem / 1000 + 0.5); + read_char_table(f); - output_spacewidth(); - output_slant(); - read_and_output_pcltypeface(f); - output_pclproportional(); - output_pclweight(); - output_pclstyle(); + if (nchars == 0) + fatal("no characters"); + + if (!debug_flag) { + output_font_name(f); + printf("name %s\n", xbasename(argv[optind + 2])); + if (special_flag) + printf("special\n"); + output_spacewidth(); + output_slant(); + read_and_output_pcltypeface(f); + output_pclproportional(); + output_pclweight(); + output_pclstyle(); + } read_symbol_sets(f); - output_ligatures(); - read_and_output_kernpairs(f); - output_charset(); + if (debug_flag) + dump_symbols(tfm_type); + else { + output_ligatures(); + read_and_output_kernpairs(f); + output_charset(tfm_type); + } return 0; } -static -void usage(FILE *stream) +static void +usage(FILE *stream) { - fprintf(stream, "usage: %s [-s] [-i n] tfm_file map_file output_font\n", - program_name); + fprintf(stream, + "usage: %s [-s] [-a] [-q] [-i n] tfm_file map_file output_font\n" + " %s -d tfm_file [map_file]\n", + program_name, program_name); } -static -void usage() + +static void +usage() { usage(stderr); exit(1); @@ -310,28 +421,32 @@ File::File(const char *s) end_ = buf_ + sb.st_size; } -void File::skip(int n) +void +File::skip(int n) { if (end_ - ptr_ < n) fatal("unexpected end of file"); ptr_ += n; } -void File::seek(uint32 n) +void +File::seek(uint32 n) { - if ((uint32)(end_ - buf_) < n) + if (uint32(end_ - buf_) < n) fatal("unexpected end of file"); ptr_ = buf_ + n; } -byte File::get_byte() +byte +File::get_byte() { if (ptr_ >= end_) fatal("unexpected end of file"); return *ptr_++; } -uint16 File::get_uint16() +uint16 +File::get_uint16() { if (end_ - ptr_ < 2) fatal("unexpected end of file"); @@ -339,7 +454,8 @@ uint16 File::get_uint16() return n + (*ptr_++ << 8); } -uint32 File::get_uint32() +uint32 +File::get_uint32() { if (end_ - ptr_ < 4) fatal("unexpected end of file"); @@ -349,8 +465,24 @@ uint32 File::get_uint32() return n; } -static -void read_tags(File &f) +uint32 +File::get_uint32(char *orig) +{ + if (end_ - ptr_ < 4) + fatal("unexpected end of file"); + unsigned char v = *ptr_++; + uint32 n = v; + orig[0] = v; + for (int i = 1; i < 4; i++) { + v = *ptr_++; + orig[i] = v; + n += v << i*8; + } + return n; +} + +static void +read_tags(File &f) { if (f.get_byte() != 'I' || f.get_byte() != 'I') fatal("not an Intel format TFM file"); @@ -367,85 +499,149 @@ void read_tags(File &f) p->present = 1; p->type = f.get_uint16(); p->count = f.get_uint32(); - p->value = f.get_uint32(); + p->value = f.get_uint32(p->orig_value); } } -static -void check_type() +static int +check_type() { require_tag(type_tag); - if (tag_info(type_tag).value != 0) { - if (tag_info(type_tag).value == 2) - fatal("cannot handle TrueType tfm files"); - fatal("unknown type tag %1", int(tag_info(type_tag).value)); + int tfm_type = tag_info(type_tag).value; + switch (tfm_type) { + case MSL: + case UNICODE: + break; + case SYMSET: + fatal("cannot handle Symbol Set TFM files"); + break; + default: + fatal("unknown type tag %1", tfm_type); } + return tfm_type; } -static -void check_units(File &f) +static void +check_units(File &f, const int tfm_type, double *ppi, double *upem) { require_tag(design_units_per_em_tag); f.seek(tag_info(design_units_per_em_tag).value); uint32 num = f.get_uint32(); uint32 den = f.get_uint32(); - if (num != 8782 || den != 1) + if (tfm_type == MSL && (num != 8782 || den != 1)) fatal("design units per em != 8782/1"); + *upem = double(num) / den; require_tag(inches_per_point_tag); f.seek(tag_info(inches_per_point_tag).value); num = f.get_uint32(); den = f.get_uint32(); - if (num != 100 || den != 7231) + if (tfm_type == MSL && (num != 100 || den != 7231)) fatal("inches per point not 100/7231"); + *ppi = double(den) / num; } -static -void require_tag(tag_type t) +static void +require_tag(tag_type t) { if (!tag_info(t).present) fatal("tag %1 missing", int(t)); } -static -void output_spacewidth() +// put a human-readable font name in the file +static void +output_font_name(File &f) +{ + char *p; + + if (!tag_info(font_name_tag).present) + return; + int count = tag_info(font_name_tag).count; + char *font_name = new char[count]; + + if (count > 4) { // value is a file offset to the string + f.seek(tag_info(font_name_tag).value); + int n = count; + p = font_name; + while (--n) + *p++ = f.get_byte(); + } + else // orig_value contains the string + sprintf(font_name, "%.*s", + count, tag_info(font_name_tag).orig_value); + + // remove any trailing space + p = font_name + count - 1; + while (csspace(*--p)) + ; + *(p + 1) = '\0'; + printf("# %s\n", font_name); + delete font_name; +} + +static void +output_spacewidth() { require_tag(word_spacing_tag); printf("spacewidth %d\n", scale(tag_info(word_spacing_tag).value)); } -static -void read_symbol_sets(File &f) +static void +read_symbol_sets(File &f) { uint32 symbol_set_dir_length = tag_info(symbol_set_tag).count; + uint16 *symbol_set_selectors; n_symbol_sets = symbol_set_dir_length/14; symbol_set_table = new symbol_set[n_symbol_sets]; unsigned int i; + + for (i = 0; i < nchars; i++) + char_table[i].symbol_set = NO_SYMBOL_SET; + for (i = 0; i < n_symbol_sets; i++) { f.seek(tag_info(symbol_set_tag).value + i*14); - (void)f.get_uint32(); - uint32 off1 = f.get_uint32(); - uint32 off2 = f.get_uint32(); - (void)f.get_uint16(); // what's this for? + (void)f.get_uint32(); // offset to symbol set name + uint32 off1 = f.get_uint32(); // offset to selection string + uint32 off2 = f.get_uint32(); // offset to symbol set index array + f.seek(off1); + uint16 kind = 0; // HP-GL "Kind 1" symbol set value unsigned int j; - uint16 kind = 0; for (j = 0; j < off2 - off1; j++) { unsigned char c = f.get_byte(); - if ('0' <= c && c <= '9') + if ('0' <= c && c <= '9') // value kind = kind*10 + (c - '0'); - else if ('A' <= c && c <= 'Z') + else if ('A' <= c && c <= 'Z') // terminator kind = kind*32 + (c - 64); } symbol_set_table[i].select = kind; for (j = 0; j < 256; j++) symbol_set_table[i].index[j] = f.get_uint16(); } - for (i = 0; i < nchars; i++) - char_table[i].symbol_set = NO_SYMBOL_SET; - uint16 *symbol_set_selectors = (special_flag - ? special_symbol_sets - : text_symbol_sets); + symbol_set_selectors = (special_flag ? special_symbol_sets + : text_symbol_sets); + for (i = 0; symbol_set_selectors[i] != 0; i++) { + unsigned int j; + for (j = 0; j < n_symbol_sets; j++) + if (symbol_set_table[j].select == symbol_set_selectors[i]) + break; + if (j < n_symbol_sets) { + for (int k = 0; k < 256; k++) { + uint16 idx = symbol_set_table[j].index[k]; + if (idx != NO_GLYPH + && char_table[idx].symbol_set == NO_SYMBOL_SET) { + char_table[idx].symbol_set = symbol_set_table[j].select; + char_table[idx].code = k; + } + } + } + } + + if (all_flag) + return; + + symbol_set_selectors = (special_flag ? text_symbol_sets + : special_symbol_sets); for (i = 0; symbol_set_selectors[i] != 0; i++) { unsigned int j; for (j = 0; j < n_symbol_sets; j++) @@ -453,29 +649,30 @@ void read_symbol_sets(File &f) break; if (j < n_symbol_sets) { for (int k = 0; k < 256; k++) { - uint16 index = symbol_set_table[j].index[k]; - if (index != 0xffff - && char_table[index].symbol_set == NO_SYMBOL_SET) { - char_table[index].symbol_set = symbol_set_table[j].select; - char_table[index].code = k; + uint16 idx = symbol_set_table[j].index[k]; + if (idx != NO_GLYPH + && char_table[idx].symbol_set == NO_SYMBOL_SET) { + char_table[idx].symbol_set = symbol_set_table[j].select; + char_table[idx].code = k; } } } } + return; } -static -void read_char_table(File &f) +static void +read_char_table(File &f) { - require_tag(msl_tag); - nchars = tag_info(msl_tag).count; + require_tag(charcode_tag); + nchars = tag_info(charcode_tag).count; char_table = new char_info[nchars]; - f.seek(tag_info(msl_tag).value); + f.seek(tag_info(charcode_tag).value); uint32 i; for (i = 0; i < nchars; i++) - char_table[i].msl = f.get_uint16(); - + char_table[i].charcode = f.get_uint16(); + require_tag(width_tag); f.seek(tag_info(width_tag).value); for (i = 0; i < nchars; i++) @@ -508,8 +705,8 @@ void read_char_table(File &f) char_table[i].right_extent = f.get_uint16(); } -static -void output_pclweight() +static void +output_pclweight() { require_tag(stroke_weight_tag); int stroke_weight = tag_info(stroke_weight_tag).value; @@ -527,30 +724,34 @@ void output_pclweight() printf("pclweight %d\n", pcl_stroke_weight); } -static -void output_pclproportional() +static void +output_pclproportional() { require_tag(spacing_tag); printf("pclproportional %d\n", tag_info(spacing_tag).value == 0); } -static -void read_and_output_pcltypeface(File &f) +static void +read_and_output_pcltypeface(File &f) { printf("pcltypeface "); require_tag(typeface_tag); - f.seek(tag_info(typeface_tag).value); - for (uint32 i = 0; i < tag_info(typeface_tag).count; i++) { - unsigned char c = f.get_byte(); - if (c == '\0') - break; - putchar(c); + if (tag_info(typeface_tag).count > 4) { + f.seek(tag_info(typeface_tag).value); + for (uint32 i = 0; i < tag_info(typeface_tag).count; i++) { + unsigned char c = f.get_byte(); + if (c == '\0') + break; + putchar(c); + } } + else + printf("%.4s", tag_info(typeface_tag).orig_value); printf("\n"); } -static -void output_pclstyle() +static void +output_pclstyle() { unsigned pcl_style = 0; // older tfms don't have the posture tag @@ -569,8 +770,8 @@ void output_pclstyle() printf("pclstyle %d\n", pcl_style); } -static -void output_slant() +static void +output_slant() { require_tag(slant_tag); int slant = int16(tag_info(slant_tag).value); @@ -578,8 +779,8 @@ void output_slant() printf("slant %f\n", slant/100.0); } -static -void output_ligatures() +static void +output_ligatures() { // don't use ligatures for fixed space font require_tag(spacing_tag); @@ -592,14 +793,14 @@ void output_ligatures() static const char *ligature_chars[] = { "fi", "fl", "ff", "Fi", "Fl" }; - + unsigned ligature_mask = 0; unsigned int i; for (i = 0; i < nchars; i++) { - uint16 msl = char_table[i].msl; - if (msl < msl_name_table_size + uint16 charcode = char_table[i].charcode; + if (charcode < charcode_name_table_size && char_table[i].symbol_set != NO_SYMBOL_SET) { - for (name_list *p = msl_name_table[msl]; p; p = p->next) + for (name_list *p = charcode_name_table[charcode]; p; p = p->next) for (unsigned int j = 0; j < SIZEOF(ligature_chars); j++) if (strcmp(p->name, ligature_chars[j]) == 0) { ligature_mask |= 1 << j; @@ -616,8 +817,8 @@ void output_ligatures() } } -static -void read_and_output_kernpairs(File &f) +static void +read_and_output_kernpairs(File &f) { if (tag_info(pair_kern_tag).present) { printf("kernpairs\n"); @@ -629,112 +830,512 @@ void read_and_output_kernpairs(File &f) int16 val = int16(f.get_uint16()); if (char_table[i1].symbol_set != NO_SYMBOL_SET && char_table[i2].symbol_set != NO_SYMBOL_SET - && char_table[i1].msl < msl_name_table_size - && char_table[i2].msl < msl_name_table_size) { - for (name_list *p = msl_name_table[char_table[i1].msl]; + && char_table[i1].charcode < charcode_name_table_size + && char_table[i2].charcode < charcode_name_table_size) { + for (name_list *p = charcode_name_table[char_table[i1].charcode]; p; p = p->next) - for (name_list *q = msl_name_table[char_table[i2].msl]; + for (name_list *q = charcode_name_table[char_table[i2].charcode]; q; q = q->next) - printf("%s %s %d\n", p->name, q->name, scale(val)); + if (!equal(p->name, UNNAMED) && !equal(q->name, UNNAMED)) + printf("%s %s %d\n", p->name, q->name, scale(val)); } } } } -static -void output_charset() +static void +output_charset(const int tfm_type) { require_tag(slant_tag); double slant_angle = int16(tag_info(slant_tag).value)*PI/18000.0; double slant = sin(slant_angle)/cos(slant_angle); - require_tag(x_height_tag); + if (italic_flag) + require_tag(x_height_tag); require_tag(lower_ascent_tag); require_tag(lower_descent_tag); printf("charset\n"); unsigned int i; for (i = 0; i < nchars; i++) { - uint16 msl = char_table[i].msl; - if (msl < msl_name_table_size - && msl_name_table[msl]) { - if (char_table[i].symbol_set != NO_SYMBOL_SET) { - printf("%s\t%d,%d", - msl_name_table[msl]->name, - scale(char_table[i].width), - scale(char_table[i].ascent)); - int depth = scale(- char_table[i].descent); - if (depth < 0) - depth = 0; - int italic_correction = 0; - int left_italic_correction = 0; - int subscript_correction = 0; - if (italic_flag) { - italic_correction = scale(char_table[i].right_extent - - char_table[i].width - + italic_sep); - if (italic_correction < 0) - italic_correction = 0; - subscript_correction = int((tag_info(x_height_tag).value - * slant * .8) + .5); - if (subscript_correction > italic_correction) - subscript_correction = italic_correction; - left_italic_correction = scale(italic_sep - - char_table[i].left_extent); - } - if (subscript_correction != 0) - printf(",%d,%d,%d,%d", - depth, italic_correction, left_italic_correction, - subscript_correction); - else if (left_italic_correction != 0) - printf(",%d,%d,%d", depth, italic_correction, left_italic_correction); - else if (italic_correction != 0) - printf(",%d,%d", depth, italic_correction); - else if (depth != 0) - printf(",%d", depth); - // This is fairly arbitrary. Fortunately it doesn't much matter. - unsigned type = 0; - if (char_table[i].ascent > (int16(tag_info(lower_ascent_tag).value)*9)/10) - type |= 2; - if (char_table[i].descent < (int16(tag_info(lower_descent_tag).value)*9)/10) - type |= 1; - printf("\t%d\t%d\n", - type, - char_table[i].symbol_set*256 + char_table[i].code); - for (name_list *p = msl_name_table[msl]->next; p; p = p->next) - printf("%s\t\"\n", p->name); + uint16 charcode = char_table[i].charcode; + + // the glyph is bound to one of the searched symbol sets + if (char_table[i].symbol_set != NO_SYMBOL_SET) { + // the character was in the map file + if (charcode < charcode_name_table_size && charcode_name_table[charcode]) + printf("%s", charcode_name_table[charcode]->name); + else if (!all_flag) + continue; + else if (tfm_type == MSL) + printf(hp_msl_to_ucode_name(charcode)); + else + printf(unicode_to_ucode_name(charcode)); + + printf("\t%d,%d", + scale(char_table[i].width), scale(char_table[i].ascent)); + + int depth = scale(-char_table[i].descent); + if (depth < 0) + depth = 0; + int italic_correction = 0; + int left_italic_correction = 0; + int subscript_correction = 0; + + if (italic_flag) { + italic_correction = scale(char_table[i].right_extent + - char_table[i].width + + italic_sep); + if (italic_correction < 0) + italic_correction = 0; + subscript_correction = int((tag_info(x_height_tag).value + * slant * .8) + .5); + if (subscript_correction > italic_correction) + subscript_correction = italic_correction; + left_italic_correction = scale(italic_sep + - char_table[i].left_extent); + } + + if (subscript_correction != 0) + printf(",%d,%d,%d,%d", + depth, italic_correction, left_italic_correction, + subscript_correction); + else if (left_italic_correction != 0) + printf(",%d,%d,%d", depth, italic_correction, left_italic_correction); + else if (italic_correction != 0) + printf(",%d,%d", depth, italic_correction); + else if (depth != 0) + printf(",%d", depth); + // This is fairly arbitrary. Fortunately it doesn't much matter. + unsigned type = 0; + if (char_table[i].ascent > int16(tag_info(lower_ascent_tag).value)*9/10) + type |= 2; + if (char_table[i].descent < int16(tag_info(lower_descent_tag).value)*9/10) + type |= 1; + printf("\t%d\t%d", type, + char_table[i].symbol_set*256 + char_table[i].code); + + if (tfm_type == UNICODE) { + if (charcode >= 0xE000 && charcode <= 0xF8FF) + printf("\t-- HP PUA U+%04X", charcode); + else + printf("\t-- U+%04X", charcode); } else - warning("MSL %1 not in any of the searched symbol sets", msl); + printf("\t-- MSL %4d", charcode); + printf(" (%3s %3d)\n", + show_symset(char_table[i].symbol_set), char_table[i].code); + + if (charcode < charcode_name_table_size + && charcode_name_table[charcode]) + for (name_list *p = charcode_name_table[charcode]->next; + p; p = p->next) + printf("%s\t\"\n", p->name); + } + // warnings about characters in mapfile not found in TFM + else if (charcode < charcode_name_table_size + && charcode_name_table[charcode]) { + char *name = charcode_name_table[charcode]->name; + // don't warn about Unicode or unnamed glyphs + // that aren't in the the TFM file + if (tfm_type == UNICODE && !quiet_flag && !equal(name, UNNAMED) + && !is_uname(name)) { + fprintf(stderr, "%s: warning: symbol U+%04X (%s", + program_name, charcode, name); + for (name_list *p = charcode_name_table[charcode]->next; + p; p = p->next) + fprintf(stderr, ", %s", p->name); + fprintf(stderr, ") not in any searched symbol set\n"); + } + else if (!quiet_flag && !equal(name, UNNAMED) && !is_uname(name)) { + fprintf(stderr, "%s: warning: symbol MSL %d (%s", + program_name, charcode, name); + for (name_list *p = charcode_name_table[charcode]->next; + p; p = p->next) + fprintf(stderr, ", %s", p->name); + fprintf(stderr, ") not in any searched symbol set\n"); + } } } } -static -void dump_tags(File &f) +#define em_fract(a) (upem >= 0 ? double(a)/upem : 0) + +static void +dump_tags(File &f) { - int i; - for (i = min_tag; i <= max_tag; i++) { + double upem = -1.0; + + printf("TFM tags\n" + "\n" + "tag# type count value\n" + "---------------------\n"); + + for (int i = min_tag; i <= max_tag; i++) { enum tag_type t = tag_type(i); if (tag_info(t).present) { - fprintf(stderr, - "%d %d %d %d\n", i, tag_info(t).type, tag_info(t).count, - tag_info(t).value); - if (tag_info(t).type == FLOAT_TYPE - && tag_info(t).count == 1) { - f.seek(tag_info(t).value); - uint32 num = f.get_uint32(); - uint32 den = f.get_uint32(); - fprintf(stderr, "(%u/%u = %g)\n", num, den, (double)num/den); + printf("%4d %4d %5d", i, tag_info(t).type, tag_info(t).count); + switch (tag_info(t).type) { + case BYTE_TYPE: + case USHORT_TYPE: + printf(" %5u", tag_info(t).value); + switch (i) { + case type_tag: + printf(" Font Type "); + switch (tag_info(t).value) { + case MSL: + case SYMSET: + printf("(Intellifont)"); + break; + case UNICODE: + printf("(TrueType)"); + } + break; + case charcode_tag: + printf(" Number of Symbols (%u)", tag_info(t).count); + break; + case symbol_set_tag: + printf(" Symbol Sets (%u): ", + tag_info(symbol_set_tag).count / 14); + dump_symbol_sets(f); + break; + case type_structure_tag: + printf(" Type Structure (%u)", tag_info(t).value); + break; + case stroke_weight_tag: + printf(" Stroke Weight (%u)", tag_info(t).value); + break; + case spacing_tag: + printf(" Spacing "); + switch (tag_info(t).value) { + case 0: + printf("(Proportional)"); + break; + case 1: + printf("(Fixed Pitch: %u DU: %.2f em)", tag_info(t).value, + em_fract(tag_info(t).value)); + break; + } + break; + case appearance_width_tag: + printf(" Appearance Width (%u)", tag_info(t).value); + break; + case serif_style_tag: + printf(" Serif Style (%u)", tag_info(t).value); + break; + case posture_tag: + printf(" Posture (%s)", tag_info(t).value == 0 + ? "Upright" + : tag_info(t).value == 1 + ? "Italic" + : "Alternate Italic"); + break; + case max_width_tag: + printf(" Maximum Width (%u DU: %.2f em)", tag_info(t).value, + em_fract(tag_info(t).value)); + break; + case word_spacing_tag: + printf(" Interword Spacing (%u DU: %.2f em)", tag_info(t).value, + em_fract(tag_info(t).value)); + break; + case recommended_line_spacing_tag: + printf(" Recommended Line Spacing (%u DU: %.2f em)", tag_info(t).value, + em_fract(tag_info(t).value)); + break; + case x_height_tag: + printf(" x-Height (%u DU: %.2f em)", tag_info(t).value, + em_fract(tag_info(t).value)); + break; + case cap_height_tag: + printf(" Cap Height (%u DU: %.2f em)", tag_info(t).value, + em_fract(tag_info(t).value)); + break; + case max_ascent_tag: + printf(" Maximum Ascent (%u DU: %.2f em)", tag_info(t).value, + em_fract(tag_info(t).value)); + break; + case lower_ascent_tag: + printf(" Lowercase Ascent (%u DU: %.2f em)", tag_info(t).value, + em_fract(tag_info(t).value)); + break; + case underscore_thickness_tag: + printf(" Underscore Thickness (%u DU: %.2f em)", tag_info(t).value, + em_fract(tag_info(t).value)); + break; + case uppercase_accent_height_tag: + printf(" Uppercase Accent Height (%u DU: %.2f em)", tag_info(t).value, + em_fract(tag_info(t).value)); + break; + case lowercase_accent_height_tag: + printf(" Lowercase Accent Height (%u DU: %.2f em)", tag_info(t).value, + em_fract(tag_info(t).value)); + break; + case width_tag: + printf(" Horizontal Escapement array"); + break; + case vertical_escapement_tag: + printf(" Vertical Escapement array"); + break; + case right_extent_tag: + printf(" Right Extent array"); + break; + case ascent_tag: + printf(" Character Ascent array"); + break; + case pair_kern_tag: + f.seek(tag_info(t).value); + printf(" Kern Pairs (%u)", f.get_uint16()); + break; + case panose_tag: + printf(" PANOSE Classification array"); + break; + } + break; + case SIGNED_SHORT_TYPE: + printf(" %5d", int16(tag_info(t).value)); + switch (i) { + case slant_tag: + printf(" Slant (%.2f degrees)", double(tag_info(t).value) / 100); + break; + case max_descent_tag: + printf(" Maximum Descent (%d DU: %.2f em)", int16(tag_info(t).value), + em_fract(int16(tag_info(t).value))); + break; + case lower_descent_tag: + printf(" Lowercase Descent (%d DU: %.2f em)", int16(tag_info(t).value), + em_fract(int16(tag_info(t).value))); + break; + case underscore_depth_tag: + printf(" Underscore Depth (%d DU: %.2f em)", int16(tag_info(t).value), + em_fract(int16(tag_info(t).value))); + break; + case left_extent_tag: + printf(" Left Extent array"); + break; + // The type of this tag has changed from SHORT to SIGNED SHORT + // in TFM version 1.3.0. + case ascent_tag: + printf(" Character Ascent array"); + break; + case descent_tag: + printf(" Character Descent array"); + break; + } + break; + case RATIONAL_TYPE: + printf(" %5u", tag_info(t).value); + switch (i) { + case inches_per_point_tag: + printf(" Inches per Point"); + break; + case nominal_point_size_tag: + printf(" Nominal Point Size"); + break; + case design_units_per_em_tag: + printf(" Design Units per Em"); + break; + case average_width_tag: + printf(" Average Width"); + break; + } + if (tag_info(t).count == 1) { + f.seek(tag_info(t).value); + uint32 num = f.get_uint32(); + uint32 den = f.get_uint32(); + if (i == design_units_per_em_tag) + upem = double(num) / den; + printf(" (%u/%u = %g)", num, den, double(num)/den); + } + break; + case ASCII_TYPE: + printf(" %5u ", tag_info(t).value); + switch (i) { + case comment_tag: + printf("Comment "); + break; + case copyright_tag: + printf("Copyright "); + break; + case unique_identifier_tag: + printf("Unique ID "); + break; + case font_name_tag: + printf("Typeface Name "); + break; + case typeface_source_tag: + printf("Typeface Source "); + break; + case typeface_tag: + printf("PCL Typeface "); + break; + } + dump_ascii(f, t); + } + putchar('\n'); + } + } + putchar('\n'); +} +#undef em_fract + +static void +dump_ascii(File &f, tag_type t) +{ + putchar('"'); + if (tag_info(t).count > 4) { + int count = tag_info(t).count; + f.seek(tag_info(t).value); + while (--count) + printf("%c", f.get_byte()); + } + else + printf("%.4s", tag_info(t).orig_value); + putchar('"'); +} + +static void +dump_symbol_sets(File &f) +{ + uint32 symbol_set_dir_length = tag_info(symbol_set_tag).count; + uint32 num_symbol_sets = symbol_set_dir_length / 14; + + for (uint32 i = 0; i < num_symbol_sets; i++) { + f.seek(tag_info(symbol_set_tag).value + i * 14); + (void)f.get_uint32(); // offset to symbol set name + uint32 off1 = f.get_uint32(); // offset to selection string + uint32 off2 = f.get_uint32(); // offset to symbol set index array + f.seek(off1); + for (uint32 j = 0; j < off2 - off1; j++) { + unsigned char c = f.get_byte(); + if ('0' <= c && c <= '9') + putchar(c); + else if ('A' <= c && c <= 'Z') + printf(i < num_symbol_sets - 1 ? "%c," : "%c", c); + } + } +} + +static void +dump_symbols(int tfm_type) +{ + printf("Symbols:\n" + "\n" + " glyph id# symbol set name(s)\n" + "----------------------------------\n"); + for (uint32 i = 0; i < nchars; i++) { + uint16 charcode = char_table[i].charcode; + if (charcode < charcode_name_table_size + && charcode_name_table[charcode]) { + if (char_table[i].symbol_set != NO_SYMBOL_SET) { + printf(tfm_type == UNICODE ? "%4d (U+%04X) (%3s %3d) %s" + : "%4d (MSL %4d) (%3s %3d) %s", + i, charcode, + show_symset(char_table[i].symbol_set), + char_table[i].code, + charcode_name_table[charcode]->name); + for (name_list *p = charcode_name_table[charcode]->next; + p; p = p->next) + printf(", %s", p->name); + putchar('\n'); } } + else { + printf(tfm_type == UNICODE ? "%4d (U+%04X) " + : "%4d (MSL %4d) ", + i, charcode); + if (char_table[i].symbol_set != NO_SYMBOL_SET) + printf("(%3s %3d)", + show_symset(char_table[i].symbol_set), char_table[i].code); + putchar('\n'); + } + } + putchar('\n'); +} + +static char * +show_symset(unsigned int symset) +{ + static char symset_str[8]; + + sprintf(symset_str, "%d%c", symset / 32, (symset & 31) + 64); + return symset_str; +} + +static char * +hp_msl_to_ucode_name(int msl) +{ + char codestr[8]; + + sprintf(codestr, "%d", msl); + const char *ustr = hp_msl_to_unicode_code(codestr); + if (ustr == NULL) + ustr = UNNAMED; + else { + char *nonum; + int ucode = int(strtol(ustr, &nonum, 16)); + // don't allow PUA code points as Unicode names + if (ucode >= 0xE000 && ucode <= 0xF8FF) + ustr = UNNAMED; + } + if (!equal(ustr, UNNAMED)) { + const char *uname_decomposed = decompose_unicode(ustr); + if (uname_decomposed) + // 1st char is the number of components + ustr = uname_decomposed + 1; + } + char *value = new char[strlen(ustr) + 1]; + sprintf(value, equal(ustr, UNNAMED) ? ustr : "u%s", ustr); + return value; +} + +static char * +unicode_to_ucode_name(int ucode) +{ + const char *ustr; + char codestr[8]; + + // don't allow PUA code points as Unicode names + if (ucode >= 0xE000 && ucode <= 0xF8FF) + ustr = UNNAMED; + else { + sprintf(codestr, "%04X", ucode); + ustr = codestr; } + if (!equal(ustr, UNNAMED)) { + const char *uname_decomposed = decompose_unicode(ustr); + if (uname_decomposed) + // 1st char is the number of components + ustr = uname_decomposed + 1; + } + char *value = new char[strlen(ustr) + 1]; + sprintf(value, equal(ustr, UNNAMED) ? ustr : "u%s", ustr); + return value; +} + +static int +is_uname(char *name) +{ + size_t i; + size_t len = strlen(name); + if (len % 5) + return 0; + + if (name[0] != 'u') + return 0; + for (i = 1; i < 4; i++) + if (!csxdigit(name[i])) + return 0; + for (i = 5; i < len; i++) + if (i % 5 ? !csxdigit(name[i]) : name[i] != '_') + return 0; + + return 1; } -static -int read_map(const char *file) +static int +read_map(const char *file, const int tfm_type) { errno = 0; FILE *fp = fopen(file, "r"); @@ -745,6 +1346,7 @@ int read_map(const char *file) current_filename = file; char buf[512]; current_lineno = 0; + char *nonum; while (fgets(buf, int(sizeof(buf)), fp)) { current_lineno++; char *ptr = buf; @@ -755,44 +1357,85 @@ int read_map(const char *file) ptr = strtok(ptr, " \n\t"); if (!ptr) continue; - int n; - if (sscanf(ptr, "%d", &n) != 1) { - error("bad map file"); + + int msl_code = int(strtol(ptr, &nonum, 10)); + if (*nonum != '\0') { + if (csxdigit(*nonum)) + error("bad MSL map: got hex code (%1)", ptr); + else if (ptr == nonum) + error("bad MSL map: bad MSL code (%1)", ptr); + else + error("bad MSL map"); + fclose(fp); + return 0; + } + + ptr = strtok(NULL, " \n\t"); + if (!ptr) + continue; + int unicode = int(strtol(ptr, &nonum, 16)); + if (*nonum != '\0') { + if (ptr == nonum) + error("bad Unicode value (%1)", ptr); + else + error("bad Unicode map"); fclose(fp); return 0; } - if (n < 0) { - error("negative code"); + if (strlen(ptr) != 4) { + error("bad Unicode value (%1)", ptr); + return 0; + } + + int n = tfm_type == MSL ? msl_code : unicode; + if (tfm_type == UNICODE && n > 0xFFFF) { + // greatest value supported by TFM files + error("bad Unicode value (%1): greatest value is 0xFFFF", ptr); fclose(fp); return 0; } - if ((size_t)n >= msl_name_table_size) { - size_t old_size = msl_name_table_size; - name_list **old_table = msl_name_table; - msl_name_table_size = n + 256; - msl_name_table = new name_list *[msl_name_table_size]; + else if (n < 0) { + error("negative code value (%1)", ptr); + fclose(fp); + return 0; + } + + ptr = strtok(NULL, " \n\t"); + if (!ptr) { // groff name + error("missing name(s)"); + fclose(fp); + return 0; + } + // leave decomposed Unicode values alone + else if (is_uname(ptr) && !is_decomposed(ptr)) + ptr = unicode_to_ucode_name(strtol(ptr + 1, &nonum, 16)); + + if (size_t(n) >= charcode_name_table_size) { + size_t old_size = charcode_name_table_size; + name_list **old_table = charcode_name_table; + charcode_name_table_size = n + 256; + charcode_name_table = new name_list *[charcode_name_table_size]; if (old_table) { - memcpy(msl_name_table, old_table, old_size*sizeof(name_list *)); + memcpy(charcode_name_table, old_table, old_size*sizeof(name_list *)); a_delete old_table; } - for (size_t i = old_size; i < msl_name_table_size; i++) - msl_name_table[i] = 0; + for (size_t i = old_size; i < charcode_name_table_size; i++) + charcode_name_table[i] = NULL; } - ptr = strtok(0, " \n\t"); - if (!ptr) { - error("missing names"); - fclose(fp); - return 0; + + // a '#' that isn't the first groff name begins a comment + for (int names = 1; ptr; ptr = strtok(NULL, " \n\t")) { + if (names++ > 1 && *ptr == '#') + break; + charcode_name_table[n] = new name_list(ptr, charcode_name_table[n]); } - for (; ptr; ptr = strtok(0, " \n\t")) - msl_name_table[n] = new name_list(ptr, msl_name_table[n]); } fclose(fp); return 1; } -static -const char *xbasename(const char *s) +static const char * +xbasename(const char *s) { // DIR_SEPS[] are possible directory separator characters, see // nonposix.h. We want the rightmost separator of all possible diff --git a/contrib/groff/src/utils/hpftodit/hpftodit.man b/contrib/groff/src/utils/hpftodit/hpftodit.man index c069752..429f516 100644 --- a/contrib/groff/src/utils/hpftodit/hpftodit.man +++ b/contrib/groff/src/utils/hpftodit/hpftodit.man @@ -1,5 +1,6 @@ +.tr ~ .ig -Copyright (C) 1994-2000, 2001, 2003 Free Software Foundation, Inc. +Copyright (C) 1994-2000, 2001, 2003, 2004 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice @@ -22,13 +23,22 @@ the original English. .ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP .el .TP "\\$1" .. +.de CW +.ie \\n(.$>2 \&\\$1\f(CR\\$2\fP\\$3 +.el \&\f(CR\\$1\fP\\$2 +.. +.tr ~ .TH HPFTODIT @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@" +.\" -------------------------------------------------------------------------- .SH NAME +.\" -------------------------------------------------------------------------- hpftodit \- create font description files for use with groff \-Tlj4 +.\" -------------------------------------------------------------------------- .SH SYNOPSIS +.\" -------------------------------------------------------------------------- .B hpftodit [ -.B \-sv +.B \-adqsv ] [ .BI \-i n @@ -39,33 +49,91 @@ hpftodit \- create font description files for use with groff \-Tlj4 .PP It is possible to have whitespace between the .B \-i -command line option and its parameter. +option and its parameter. +.\" -------------------------------------------------------------------------- .SH DESCRIPTION +.\" -------------------------------------------------------------------------- .B hpftodit -creates a font file for use with -.B -groff \-Tlj4\fR -from an HP tagged font metric file. +creates a font file for use with a Hewlett-Packard LaserJet~4\(enseries +(or newer) printer with +.BR "groff \-Tlj4" , +using data from an HP tagged font metric (TFM) file. .I tfm_file -is the name of the tagged font metric file for the font. +is the name of the TFM file for the font; Intellifont and +TrueType TFM files are supported, but symbol set TFM files are not. .I map_file -is a file giving the groff names for characters in the font; -this file should consist of a sequence of lines of the form: +is a file giving the groff names for characters in the font; this file +should consist of a sequence of lines of the form: .IP .I -n c1 c2 \fR.\|.\|. +m u c1 c2 \fR.\|.\|. [ +.CW # +.I comment +] .LP where -.I n +.I m is a decimal integer giving the MSL number of the character, +.I u +is a hexadecimal integer giving the Unicode value of the character, and .IR c1 , -.IR c2 ,.\|.\|. +.IR c2 ", .\|.\|." are the groff names of the character. +The values can be separated by any whitespace; the Unicode value must +use uppercase digits A\^\(en\^F, and must be without a leading +.CW ` 0x ', +.CW ` u ', +or +.CW ` U+ '. +Unicode values corresponding to composite glyphs are decomposed; e.g., +.CW ` u00C0 ' +becomes +.CW ` u0041_0300 '. +The name for a glyph without a groff name may be given as +.CW u \fIXXXX\fP +if the glyph corresponds to a Unicode value, or as an unnamed glyph +.CW ` --- '. +If the given Unicode value is in the Private Use Area +(0xE000\^\(en\^0xF8FF), the glyph is included as an unnamed glyph. +Refer to +.BR groff_diff (@MAN1EXT@) +for additional information about unnamed glyphs and how to access them. +.LP +Blank lines and lines beginning with +.CW ` # ' +are ignored. +A +.CW ` # ' +following one or more groff names begins a comment. +Because +.CW ` # ' +is a valid groff name, it must appear first in a list of +groff names if a comment is included, e.g., +.IP +.CW "3 0023 # # number sign" +.LP +or +.IP +.CW "3 0023 # sh # number sign" +.LP +rather than +.IP +.CW "3 0023 sh # # number sign" +.LP +which will treat the first +.CW ` # ' +as the beginning of the comment. +.LP .I font is the name of the groff font file. The groff font file is written to -.IR font . +.IR font ; +if +.I font +is specified as +.CW ` - ', +the output is written to the standard output. .LP The .B \-s @@ -75,7 +143,7 @@ option should be given if the font is special if .B troff should search it whenever -a character is not found in the current font.) +a character is not found in the current font). If the font is special, it should be listed in the .B fonts @@ -88,33 +156,116 @@ If the .B \-i option is used, .B hpftodit -will automatically generate an italic correction, +automatically will generate an italic correction, a left italic correction and a subscript correction for each character (the significance of these parameters is explained in .BR groff_font (@MAN5EXT@)). +.\" -------------------------------------------------------------------------- .SH OPTIONS +.\" -------------------------------------------------------------------------- +.TP +.B \-a +Include characters in the TFM file that are not included in the map +file. +A glyph with corresponding Unicode value is given the name +.RI u XXXX ; +a glyph without a Unicode value is included as an unnamed glyph +\&`\-\^\-\^\-'. +A glyph with a Unicode value in the Private Use Area +(0xE000\^\(en\^0xF8FF) also is included as an unnamed glyph. +.IP +This option provides a simple means of adding Unicode-named and unnamed +glyphs to a font without including them in the map file, but it affords +little control over which glyphs are placed in a regular font and which +are placed in a special font. +The presence or absence of the +.B \-s +option has some effect on which glyphs are included: without the +.B \-s +option, only the \(lqtext\(rq symbol sets are searched for matching +glyphs; with the +.B \-s +option, only the \(lqmathematical\(rq symbol sets +are searched. +Nonetheless, restricting the symbol sets searched isn't very +selective\(emmany glyphs are placed in both regular and special fonts. +Normally, the +.B \-a +option should be used only as a last resort. +.\" -------------------------------------------------------------------------- +.TP +.B \-d +Dump information about the TFM file to the standard output; this option +can be useful for ensuring that a TFM file is a proper match for a font, +and that the contents of the TFM file are suitable. +The information includes the values of important TFM tags, and a listing +(by MSL number for Intellifont TFM files or by Unicode value for +TrueType TFM files) of the glyphs included in the TFM file. +The unit of measure `DU' for some tags indicates design units; there are +8782 design units per em for Intellifont fonts, and 2048 design units +per em for TrueType fonts. +Note that the accessibility of a glyph depends on its inclusion in a +symbol set; some TFM files list many glyphs but only a few symbol sets. +.IP +The glyph listing includes the glyph index within the TFM file, the MSL +or Unicode value, and the symbol set and character code that will be +used to print the glyph. +If +.I map_file +is given, +groff names are given for matching glyphs. +If only the glyph index and MSL or Unicode value are given, the glyph +does not appear in any supported symbol set and cannot be printed. +.IP +With the +.B \-d +option, +.I map_file +is optional, and +.I font +is ignored if given. +.\" -------------------------------------------------------------------------- +.TP +.B \-q +Suppress warnings about characters in the map file that were not found +in the TFM file. +Warnings never are given for unnamed glyphs or by glyphs named by their +Unicode values. +This option is useful when sending the output of +.B hpftodit +to the standard output. +.\" -------------------------------------------------------------------------- .TP .B \-v -Print the version number. +Print the +.B hpftodit +version number. +.\" -------------------------------------------------------------------------- .TP .B \-s The font is special. -The effect of this option is to add the +This option adds the .B special -command to the font file. +command to the font file, and affects the order in which HP symbol sets +are searched for each glyph. +Without the +.B \-s +option, the \(lqtext\(rq sets are searched before +the \(lqmathematical\(rq symbol sets. +With the +.B \-s +option, the search order is reversed. +.\" -------------------------------------------------------------------------- .TP .BI \-i n -Generate an italic correction for each character so that -the character's width plus the character's italic correction -is equal to +Generate an italic correction for each character so that the character's +width plus the character's italic correction is equal to .I n -design units -plus the amount by which the right edge of the character's bounding -is to the right of the character's origin. -If this would result in a negative italic correction, use a zero -italic correction instead. -There are 8782 design units per em for Intellifont fonts. +thousandths of an em plus the amount by which the right edge of the +character's bounding is to the right of the character's origin. +If this would result in a negative italic correction, use a zero italic +correction instead. .IP Also generate a subscript correction equal to the product of the tangent of the slant of the font and @@ -126,33 +277,34 @@ instead. Also generate a left italic correction for each character equal to .I n -design units -plus the amount by which the left edge of the character's bounding box -is to the left of the character's origin. +thousandths of an em plus the amount by which the left edge of the +character's bounding box is to the left of the character's origin. The left italic correction may be negative. .IP -This option is normally needed only with italic (or oblique) fonts. +This option normally is needed only with italic or oblique fonts; +a value of 50 (0.05 em) usually is a reasonable choice. +.\" -------------------------------------------------------------------------- .SH FILES -.Tp \w'\fB@FONTDIR@/devlj4/DESC'u+2n +.\" -------------------------------------------------------------------------- +.ad 0 +.TP \w'\fB@FONTDIR@/devlj4/generate/\fP\fI*\fP.map'u+2n .B @FONTDIR@/devlj4/DESC Device description file. .TP .BI @FONTDIR@/devlj4/ F Font description file for font .IR F . -.SH BUGS -.LP -This program was written without the benefit of complete, official -documentation on the tagged font metric format. -It is therefore likely that it will fail to work on tfm files that are -dissimilar to those for the internal fonts on the Laserjet 4, -with which it was tested. -.LP -TrueType tfm files are not supported. +.TP +.BI @FONTDIR@/devlj4/generate/ * .map +Symbol mapping files +.\" -------------------------------------------------------------------------- .SH "SEE ALSO" +.\" -------------------------------------------------------------------------- .BR groff (@MAN1EXT@), +.BR groff_diff (@MAN1EXT@), .BR grolj4 (@MAN1EXT@), -.BR groff_font (@MAN5EXT@) +.BR groff_font (@MAN5EXT@), +.BR lj4_font (@MAN5EXT@) . .\" Local Variables: .\" mode: nroff diff --git a/contrib/groff/src/utils/hpftodit/hpuni.cpp b/contrib/groff/src/utils/hpftodit/hpuni.cpp new file mode 100644 index 0000000..23a1eb0 --- /dev/null +++ b/contrib/groff/src/utils/hpftodit/hpuni.cpp @@ -0,0 +1,698 @@ +// -*- C++ -*- +/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. + Written by Jeff Conrad (jeff_conrad@msn.com) + +This file is part of groff. + +groff 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, or (at your option) any later +version. + +groff 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. + +You should have received a copy of the GNU General Public License along +with groff; see the file COPYING. If not, write to the Free Software +Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. */ + +#include "lib.h" +#include "stringclass.h" +#include "ptable.h" + +#include "unicode.h" + +struct hp_msl_to_unicode { + char *value; +}; + +declare_ptable(hp_msl_to_unicode) +implement_ptable(hp_msl_to_unicode) + +PTABLE(hp_msl_to_unicode) hp_msl_to_unicode_table; + +struct S { + const char *key; + const char *value; +} hp_msl_to_unicode_list[] = { + { "1", "0021", }, // Exclamation Mark + { "2", "0022", }, // Neutral Double Quote + { "3", "0023", }, // Number Sign + { "4", "0024", }, // Dollar Sign + { "5", "0025", }, // Per Cent Sign + { "6", "0026", }, // Ampersand + { "8", "2019", }, // Single Close Quote (9) + { "9", "0028", }, // Left Parenthesis + { "10", "0029", }, // Right Parenthesis + { "11", "002A", }, // Asterisk + { "12", "002B", }, // Plus Sign + { "13", "002C", }, // Comma, or Decimal Separator + { "14", "002D", }, // Hyphen + { "15", "002E", }, // Period, or Full Stop + { "16", "002F", }, // Solidus, or Slash + { "17", "0030", }, // Numeral Zero + { "18", "0031", }, // Numeral One + { "19", "0032", }, // Numeral Two + { "20", "0033", }, // Numeral Three + { "21", "0034", }, // Numeral Four + { "22", "0035", }, // Numeral Five + { "23", "0036", }, // Numeral Six + { "24", "0037", }, // Numeral Seven + { "25", "0038", }, // Numeral Eight + { "26", "0039", }, // Numeral Nine + { "27", "003A", }, // Colon + { "28", "003B", }, // Semicolon + { "29", "003C", }, // Less Than Sign + { "30", "003D", }, // Equals Sign + { "31", "003E", }, // Greater Than Sign + { "32", "003F", }, // Question Mark + { "33", "0040", }, // Commercial At + { "34", "0041", }, // Uppercase A + { "35", "0042", }, // Uppercase B + { "36", "0043", }, // Uppercase C + { "37", "0044", }, // Uppercase D + { "38", "0045", }, // Uppercase E + { "39", "0046", }, // Uppercase F + { "40", "0047", }, // Uppercase G + { "41", "0048", }, // Uppercase H + { "42", "0049", }, // Uppercase I + { "43", "004A", }, // Uppercase J + { "44", "004B", }, // Uppercase K + { "45", "004C", }, // Uppercase L + { "46", "004D", }, // Uppercase M + { "47", "004E", }, // Uppercase N + { "48", "004F", }, // Uppercase O + { "49", "0050", }, // Uppercase P + { "50", "0051", }, // Uppercase Q + { "51", "0052", }, // Uppercase R + { "52", "0053", }, // Uppercase S + { "53", "0054", }, // Uppercase T + { "54", "0055", }, // Uppercase U + { "55", "0056", }, // Uppercase V + { "56", "0057", }, // Uppercase W + { "57", "0058", }, // Uppercase X + { "58", "0059", }, // Uppercase Y + { "59", "005A", }, // Uppercase Z + { "60", "005B", }, // Left Bracket + { "61", "005C", }, // Reverse Solidus, or Backslash + { "62", "005D", }, // Right Bracket + { "63", "005E", }, // Circumflex, Exponent, or Pointer + { "64", "005F", }, // Underline or Underscore Character + { "66", "2018", }, // Single Open Quote (6) + { "67", "0061", }, // Lowercase A + { "68", "0062", }, // Lowercase B + { "69", "0063", }, // Lowercase C + { "70", "0064", }, // Lowercase D + { "71", "0065", }, // Lowercase E + { "72", "0066", }, // Lowercase F + { "73", "0067", }, // Lowercase G + { "74", "0068", }, // Lowercase H + { "75", "0069", }, // Lowercase I + { "76", "006A", }, // Lowercase J + { "77", "006B", }, // Lowercase K + { "78", "006C", }, // Lowercase L + { "79", "006D", }, // Lowercase M + { "80", "006E", }, // Lowercase N + { "81", "006F", }, // Lowercase O + { "82", "0070", }, // Lowercase P + { "83", "0071", }, // Lowercase Q + { "84", "0072", }, // Lowercase R + { "85", "0073", }, // Lowercase S + { "86", "0074", }, // Lowercase T + { "87", "0075", }, // Lowercase U + { "88", "0076", }, // Lowercase V + { "89", "0077", }, // Lowercase W + { "90", "0078", }, // Lowercase X + { "91", "0079", }, // Lowercase Y + { "92", "007A", }, // Lowercase Z + { "93", "007B", }, // Left Brace + { "94", "007C", }, // Long Vertical Mark + { "95", "007D", }, // Right Brace + { "96", "007E", }, // One Wavy Line Approximate + { "97", "2592", }, // Medium Shading Character + { "99", "00C0", }, // Uppercase A Grave + { "100", "00C2", }, // Uppercase A Circumflex + { "101", "00C8", }, // Uppercase E Grave + { "102", "00CA", }, // Uppercase E Circumflex + { "103", "00CB", }, // Uppercase E Dieresis + { "104", "00CE", }, // Uppercase I Circumflex + { "105", "00CF", }, // Uppercase I Dieresis + { "106", "00B4", }, // Lowercase Acute Accent (Spacing) + { "107", "0060", }, // Lowercase Grave Accent (Spacing) + { "108", "02C6", }, // Lowercase Circumflex Accent (Spacing) + { "109", "00A8", }, // Lowercase Dieresis Accent (Spacing) + { "110", "02DC", }, // Lowercase Tilde Accent (Spacing) + { "111", "00D9", }, // Uppercase U Grave + { "112", "00DB", }, // Uppercase U Circumflex + { "113", "00AF", }, // Overline, or Overscore Character + { "114", "00DD", }, // Uppercase Y Acute + { "115", "00FD", }, // Lowercase Y Acute + { "116", "00B0", }, // Degree Sign + { "117", "00C7", }, // Uppercase C Cedilla + { "118", "00E7", }, // Lowercase C Cedilla + { "119", "00D1", }, // Uppercase N Tilde + { "120", "00F1", }, // Lowercase N Tilde + { "121", "00A1", }, // Inverted Exclamation + { "122", "00BF", }, // Inverted Question Mark + { "123", "00A4", }, // Currency Symbol + { "124", "00A3", }, // Pound Sterling Sign + { "125", "00A5", }, // Yen Sign + { "126", "00A7", }, // Section Mark + { "127", "0192", }, // Florin Sign + { "128", "00A2", }, // Cent Sign + { "129", "00E2", }, // Lowercase A Circumflex + { "130", "00EA", }, // Lowercase E Circumflex + { "131", "00F4", }, // Lowercase O Circumflex + { "132", "00FB", }, // Lowercase U Circumflex + { "133", "00E1", }, // Lowercase A Acute + { "134", "00E9", }, // Lowercase E Acute + { "135", "00F3", }, // Lowercase O Acute + { "136", "00FA", }, // Lowercase U Acute + { "137", "00E0", }, // Lowercase A Grave + { "138", "00E8", }, // Lowercase E Grave + { "139", "00F2", }, // Lowercase O Grave + { "140", "00F9", }, // Lowercase U Grave + { "141", "00E4", }, // Lowercase A Dieresis + { "142", "00EB", }, // Lowercase E Dieresis + { "143", "00F6", }, // Lowercase O Dieresis + { "144", "00FC", }, // Lowercase U Dieresis + { "145", "00C5", }, // Uppercase A Ring + { "146", "00EE", }, // Lowercase I Circumflex + { "147", "00D8", }, // Uppercase O Oblique + { "148", "00C6", }, // Uppercase AE Diphthong + { "149", "00E5", }, // Lowercase A Ring + { "150", "00ED", }, // Lowercase I Acute + { "151", "00F8", }, // Lowercase O Oblique + { "152", "00E6", }, // Lowercase AE Diphthong + { "153", "00C4", }, // Uppercase A Dieresis + { "154", "00EC", }, // Lowercase I Grave + { "155", "00D6", }, // Uppercase O Dieresis + { "156", "00DC", }, // Uppercase U Dieresis + { "157", "00C9", }, // Uppercase E Acute + { "158", "00EF", }, // Lowercase I Dieresis + { "159", "00DF", }, // Lowercase Es-zet Ligature + { "160", "00D4", }, // Uppercase O Circumflex + { "161", "00C1", }, // Uppercase A Acute + { "162", "00C3", }, // Uppercase A Tilde + { "163", "00E3", }, // Lowercase A Tilde + { "164", "00D0", }, // Uppercase Eth +//{ "164", "0110", }, // Uppercase D-Stroke + { "165", "00F0", }, // Lowercase Eth + { "166", "00CD", }, // Uppercase I Acute + { "167", "00CC", }, // Uppercase I Grave + { "168", "00D3", }, // Uppercase O Acute + { "169", "00D2", }, // Uppercase O Grave + { "170", "00D5", }, // Uppercase O Tilde + { "171", "00F5", }, // Lowercase O Tilde + { "172", "0160", }, // Uppercase S Hacek + { "173", "0161", }, // Lowercase S Hacek + { "174", "00DA", }, // Uppercase U Acute + { "175", "0178", }, // Uppercase Y Dieresis + { "176", "00FF", }, // Lowercase Y Dieresis + { "177", "00DE", }, // Uppercase Thorn + { "178", "00FE", }, // Lowercase Thorn + { "180", "00B5", }, // Lowercase Greek Mu, or Micro + { "181", "00B6", }, // Pilcrow, or Paragraph Sign + { "182", "00BE", }, // Vulgar Fraction 3/4 + { "183", "2212", }, // Minus Sign + { "184", "00BC", }, // Vulgar Fraction 1/4 + { "185", "00BD", }, // Vulgar Fraction 1/2 + { "186", "00AA", }, // Female Ordinal + { "187", "00BA", }, // Male Ordinal + { "188", "00AB", }, // Left Pointing Double Angle Quote + { "189", "25A0", }, // Medium Solid Square Box + { "190", "00BB", }, // Right Pointing Double Angle Quote + { "191", "00B1", }, // Plus Over Minus Sign + { "192", "00A6", }, // Broken Vertical Mark + { "193", "00A9", }, // Copyright Sign + { "194", "00AC", }, // Not Sign + { "195", "00AD", }, // Soft Hyphen + { "196", "00AE", }, // Registered Sign + { "197", "00B2", }, // Superior Numeral 2 + { "198", "00B3", }, // Superior Numeral 3 + { "199", "00B8", }, // Lowercase Cedilla (Spacing) + { "200", "00B9", }, // Superior Numeral 1 + { "201", "00D7", }, // Multiply Sign + { "202", "00F7", }, // Divide Sign + { "203", "263A", }, // Open Smiling Face + { "204", "263B", }, // Solid Smiling Face + { "205", "2665", }, // Solid Heart, Card Suit + { "206", "2666", }, // Solid Diamond, Card Suit + { "207", "2663", }, // Solid Club, Card Suit + { "208", "2660", }, // Solid Spade, Card Suit + { "209", "25CF", }, // Medium Solid Round Bullet + { "210", "25D8", }, // Large Solid square with White Dot + { "211", "EFFD", }, // Large Open Round Bullet + { "212", "25D9", }, // Large Solid square with White Circle + { "213", "2642", }, // Male Symbol + { "214", "2640", }, // Female Symbol + { "215", "266A", }, // Musical Note + { "216", "266B", }, // Pair Of Musical Notes + { "217", "263C", }, // Compass, or Eight Pointed Sun + { "218", "25BA", }, // Right Solid Arrowhead + { "219", "25C4", }, // Left Solid Arrowhead + { "220", "2195", }, // Up/Down Arrow + { "221", "203C", }, // Double Exclamation Mark + { "222", "25AC", }, // Thick Horizontal Mark + { "223", "21A8", }, // Up/Down Arrow Baseline + { "224", "2191", }, // Up Arrow + { "225", "2193", }, // Down Arrow + { "226", "2192", }, // Right Arrow + { "227", "2190", }, // Left Arrow + { "229", "2194", }, // Left/Right Arrow + { "230", "25B2", }, // Up Solid Arrowhead + { "231", "25BC", }, // Down Solid Arrowhead + { "232", "20A7", }, // Pesetas Sign + { "233", "2310", }, // Reversed Not Sign + { "234", "2591", }, // Light Shading Character + { "235", "2593", }, // Dark Shading Character + { "236", "2502", }, // Box Draw Line, Vert. 1 + { "237", "2524", }, // Box Draw Right Tee, Vert. 1 Horiz. 1 + { "238", "2561", }, // Box Draw Right Tee, Vert. 1 Horiz. 2 + { "239", "2562", }, // Box Draw Right Tee, Vert. 2 Horiz. 1 + { "240", "2556", }, // Box Draw Upper Right Corner, Vert. 2 Horiz. 1 + { "241", "2555", }, // Box Draw Upper Right Corner, Vert. 1 Horiz. 2 + { "242", "2563", }, // Box Draw Right Tee, Vert. 2 Horiz. 2 + { "243", "2551", }, // Box Draw Lines, Vert. 2 + { "244", "2557", }, // Box Draw Upper Right Corner, Vert. 2 Horiz. 2 + { "245", "255D", }, // Box Draw Lower Right Corner, Vert. 2 Horiz. 2 + { "246", "255C", }, // Box Draw Lower Right Corner, Vert. 2 Horiz. 1 + { "247", "255B", }, // Box Draw Lower Right Corner, Vert. 1 Horiz. 2 + { "248", "2510", }, // Box Draw Upper Right Corner, Vert. 1, Horiz. 1 + { "249", "2514", }, // Box Draw Lower Left Corner, Vert. 1, Horiz. 1 + { "250", "2534", }, // Box Draw Bottom Tee, Vert. 1 Horiz. 1 + { "251", "252C", }, // Box Draw Top Tee, Vert. 1 Horiz. 1 + { "252", "251C", }, // Box Draw Left Tee, Vert. 1 Horiz. 1 + { "253", "2500", }, // Box Draw Line, Horiz. 1 + { "254", "253C", }, // Box Draw Cross, Vert. 1 Horiz. 1 + { "255", "255E", }, // Box Draw Left Tee, Vert. 1 Horiz. 2 + { "256", "255F", }, // Box Draw Left Tee, Vert. 2 Horz. 1 + { "257", "255A", }, // Box Draw Lower Left Corner, Vert. 2 Horiz. 2 + { "258", "2554", }, // Box Draw Upper Left Corner, Vert. 2 Horiz. 2 + { "259", "2569", }, // Box Draw Bottom Tee, Vert. 2 Horiz. 2 + { "260", "2566", }, // Box Draw Top Tee, Vert. 2 Horiz. 2 + { "261", "2560", }, // Box Draw Left Tee, Vert. 2 Horiz. 2 + { "262", "2550", }, // Box Draw Lines, Horiz. 2 + { "263", "256C", }, // Box Draw Cross Open Center, Vert. 2 Horiz. 2 + { "264", "2567", }, // Box Draw Bottom Tee, Vert. 1 Horiz. 2 + { "265", "2568", }, // Box Draw Bottom Tee, Vert. 2 Horiz. 1 + { "266", "2564", }, // Box Draw Top Tee, Vert. 1 Horiz. 2 + { "267", "2565", }, // Box Draw Top Tee, Vert. 2 Horiz. 1 + { "268", "2559", }, // Box Draw Lower Left Corner, Vert. 2 Horiz. 1 + { "269", "2558", }, // Box Draw Lower Left Corner, Vert. 1 Horiz. 2 + { "270", "2552", }, // Box Draw Upper Left Corner, Vert. 1 Horiz. 2 + { "271", "2553", }, // Box Draw Upper Left Corner, Vert. 2 Horiz. 1 + { "272", "256B", }, // Box Draw Cross, Vert. 2 Horiz. 1 + { "273", "256A", }, // Box Draw Cross, Vert. 1 Horiz. 2 + { "274", "2518", }, // Box Draw Lower Right Corner, Vert. 1 Horiz. 1 + { "275", "250C", }, // Box Draw Upper Left Corner, Vert. 1, Horiz. 1 + { "276", "2588", }, // Solid Full High/Wide + { "277", "2584", }, // Bottom Half Solid Rectangle + { "278", "258C", }, // Left Half Solid Rectangle + { "279", "2590", }, // Right Half Solid Rectangle + { "280", "2580", }, // Top Half Solid Rectangle + { "290", "2126", }, // Uppercase Greek Omega, or Ohms + { "292", "221E", }, // Infinity Symbol + { "295", "2229", }, // Set Intersection Symbol + { "296", "2261", }, // Exactly Equals Sign + { "297", "2265", }, // Greater Than or Equal Sign + { "298", "2264", }, // Less Than or Equal Sign + { "299", "2320", }, // Top Integral + { "300", "2321", }, // Bottom Integral + { "301", "2248", }, // Two Wavy Line Approximate Sign +//{ "302", "00B7", }, // Middle Dot, or Centered Period (see 2219) +//{ "302", "2219", }, // Centered Period, Middle Dot + { "302", "2219", }, // Math Dot, Centered Period + { "303", "221A", }, // Radical Symbol, Standalone Diagonal + { "305", "25AA", }, // Small Solid Square Box + { "306", "013F", }, // Uppercase L-Dot + { "307", "0140", }, // Lowercase L-Dot + { "308", "2113", }, // Litre Symbol + { "309", "0149", }, // Lowercase Apostrophe-N + { "310", "2032", }, // Prime, Minutes, or Feet Symbol + { "311", "2033", }, // Double Prime, Seconds, or Inches Symbol + { "312", "2020", }, // Dagger Symbol + { "313", "2122", }, // Trademark Sign + { "314", "2017", }, // Double Underline Character + { "315", "02C7", }, // Lowercase Hacek Accent (Spacing) + { "316", "02DA", }, // Lowercase Ring Accent (Spacing) + { "317", "EFF9", }, // Uppercase Acute Accent (Spacing) + { "318", "EFF8", }, // Uppercase Grave Accent (Spacing) + { "319", "EFF7", }, // Uppercase Circumflex Accent (Spacing) + { "320", "EFF6", }, // Uppercase Dieresis Accent (Spacing) + { "321", "EFF5", }, // Uppercase Tilde Accent (Spacing) + { "322", "EFF4", }, // Uppercase Hacek Accent (Spacing) + { "323", "EFF3", }, // Uppercase Ring Accent (Spacing) + { "324", "2215", }, // Vulgar Fraction Bar + { "325", "2014", }, // Em Dash + { "326", "2013", }, // En Dash + { "327", "2021", }, // Double Dagger Symbol + { "328", "0131", }, // Lowercase Undotted I + { "329", "0027", }, // Neutral Single Quote + { "330", "EFF2", }, // Uppercase Cedilla (Spacing) + { "331", "2022", }, // Small Solid Round Bullet + { "332", "207F", }, // Superior Lowercase N + { "333", "2302", }, // Home Plate + { "335", "0138", }, // Lowercase Kra + { "338", "0166", }, // Uppercase T-Stroke + { "339", "0167", }, // Lowercase T-Stroke + { "340", "014A", }, // Uppercase Eng + { "341", "014B", }, // Lowercase Eng + { "342", "0111", }, // Lowercase D-Stroke + { "400", "0102", }, // Uppercase A Breve + { "401", "0103", }, // Lowercase A Breve + { "402", "0100", }, // Uppercase A Macron + { "403", "0101", }, // Lowercase A Macron + { "404", "0104", }, // Uppercase A Ogonek + { "405", "0105", }, // Lowercase A Ogonek + { "406", "0106", }, // Uppercase C Acute + { "407", "0107", }, // Lowercase C Acute + { "410", "010C", }, // Uppercase C Hacek + { "411", "010D", }, // Lowercase C Hacek + { "414", "010E", }, // Uppercase D Hacek + { "415", "010F", }, // Lowercase D Hacek + { "416", "011A", }, // Uppercase E Hacek + { "417", "011B", }, // Lowercase E Hacek + { "418", "0116", }, // Uppercase E Overdot + { "419", "0117", }, // Lowercase E Overdot + { "420", "0112", }, // Uppercase E Macron + { "421", "0113", }, // Lowercase E Macron + { "422", "0118", }, // Uppercase E Ogonek + { "423", "0119", }, // Lowercase E Ogonek + { "428", "0122", }, // Uppercase G Cedilla + { "429", "0123", }, // Lowercase G Cedilla + { "432", "012E", }, // Uppercase I Ogonek + { "433", "012F", }, // Lowercase I Ogonek + { "434", "012A", }, // Uppercase I Macron + { "435", "012B", }, // Lowercase I Macron + { "438", "0136", }, // Uppercase K Cedilla + { "439", "0137", }, // Lowercase K Cedilla + { "440", "0139", }, // Uppercase L Acute + { "441", "013A", }, // Lowercase L Acute + { "442", "013D", }, // Uppercase L Hacek + { "443", "013E", }, // Lowercase L Hacek + { "444", "013B", }, // Uppercase L Cedilla + { "445", "013C", }, // Lowercase L Cedilla + { "446", "0143", }, // Uppercase N Acute + { "447", "0144", }, // Lowercase N Acute + { "448", "0147", }, // Uppercase N Hacek + { "449", "0148", }, // Lowercase N Hacek + { "450", "0145", }, // Uppercase N Cedilla + { "451", "0146", }, // Lowercase N Cedilla + { "452", "0150", }, // Uppercase O Double Acute + { "453", "0151", }, // Lowercase O Double Acute + { "454", "014C", }, // Uppercase O Macron + { "455", "014D", }, // Lowercase O Macron + { "456", "0154", }, // Uppercase R Acute + { "457", "0155", }, // Lowercase R Acute + { "458", "0158", }, // Uppercase R Hacek + { "459", "0159", }, // Lowercase R Hacek + { "460", "0156", }, // Uppercase R Cedilla + { "461", "0157", }, // Lowercase R Cedilla + { "462", "015A", }, // Uppercase S Acute + { "463", "015B", }, // Lowercase S Acute + { "466", "0164", }, // Uppercase T Hacek + { "467", "0165", }, // Lowercase T Hacek + { "468", "0162", }, // Uppercase T Cedilla + { "469", "0163", }, // Lowercase T Cedilla + { "470", "0168", }, // Uppercase U Tilde + { "471", "0169", }, // Lowercase U Tilde + { "474", "0170", }, // Uppercase U Double Acute + { "475", "0171", }, // Lowercase U Double Acute + { "476", "016E", }, // Uppercase U Ring + { "477", "016F", }, // Lowercase U Ring + { "478", "016A", }, // Uppercase U Macron + { "479", "016B", }, // Lowercase U Macron + { "480", "0172", }, // Uppercase U Ogonek + { "481", "0173", }, // Lowercase U Ogonek + { "482", "0179", }, // Uppercase Z Acute + { "483", "017A", }, // Lowercase Z Acute + { "484", "017B", }, // Uppercase Z Overdot + { "485", "017C", }, // Lowercase Z Overdot + { "486", "0128", }, // Uppercase I Tilde + { "487", "0129", }, // Lowercase I Tilde + { "500", "EFBF", }, // Radical, Diagonal, Composite + { "501", "221D", }, // Proportional To Symbol + { "502", "212F", }, // Napierian (italic e) + { "503", "03F5", }, // Alternate Lowercase Greek Epsilon +//{ "503", "EFEC", }, // Alternate Lowercase Greek Epsilon + { "504", "2234", }, // Therefore Symbol + { "505", "0393", }, // Uppercase Greek Gamma + { "506", "2206", }, // Increment Symbol (Delta) + { "507", "0398", }, // Uppercase Greek Theta + { "508", "039B", }, // Uppercase Greek Lambda + { "509", "039E", }, // Uppercase Greek Xi + { "510", "03A0", }, // Uppercase Greek Pi + { "511", "03A3", }, // Uppercase Greek Sigma + { "512", "03A5", }, // Uppercase Greek Upsilon + { "513", "03A6", }, // Uppercase Greek Phi + { "514", "03A8", }, // Uppercase Greek Psi + { "515", "03A9", }, // Uppercase Greek Omega + { "516", "2207", }, // Nabla Symbol (inverted Delta) + { "517", "2202", }, // Partial Differential Delta Symbol + { "518", "03C2", }, // Lowercase Sigma, Terminal + { "519", "2260", }, // Not Equal To Symbol + { "520", "EFEB", }, // Underline, Composite + { "521", "2235", }, // Because Symbol + { "522", "03B1", }, // Lowercase Greek Alpha + { "523", "03B2", }, // Lowercase Greek Beta + { "524", "03B3", }, // Lowercase Greek Gamma + { "525", "03B4", }, // Lowercase Greek Delta + { "526", "03B5", }, // Lowercase Greek Epsilon + { "527", "03B6", }, // Lowercase Greek Zeta + { "528", "03B7", }, // Lowercase Greek Eta + { "529", "03B8", }, // Lowercase Greek Theta + { "530", "03B9", }, // Lowercase Greek Iota + { "531", "03BA", }, // Lowercase Greek Kappa + { "532", "03BB", }, // Lowercase Greek Lambda + { "533", "03BC", }, // Lowercase Greek Mu + { "534", "03BD", }, // Lowercase Greek Nu + { "535", "03BE", }, // Lowercase Greek Xi + { "536", "03BF", }, // Lowercase Greek Omicron + { "537", "03C0", }, // Lowercase Greek Pi + { "538", "03C1", }, // Lowercase Greek Rho + { "539", "03C3", }, // Lowercase Greek Sigma + { "540", "03C4", }, // Lowercase Greek Tau + { "541", "03C5", }, // Lowercase Greek Upsilon + { "542", "03C6", }, // Lowercase Greek Phi + { "543", "03C7", }, // Lowercase Greek Chi + { "544", "03C8", }, // Lowercase Greek Psi + { "545", "03C9", }, // Lowercase Greek Omega + { "546", "03D1", }, // Lowercase Greek Theta, Open + { "547", "03D5", }, // Lowercase Greek Phi, Open + { "548", "03D6", }, // Lowercase Pi, Alternate + { "549", "2243", }, // Wavy Over Straight Approximate Symbol + { "550", "2262", }, // Not Exactly Equal To Symbol + { "551", "21D1", }, // Up Arrow Double Stroke + { "552", "21D2", }, // Right Arrow Double Stroke + { "553", "21D3", }, // Down Arrow Double Stroke + { "554", "21D0", }, // Left Arrow Double Stroke + { "555", "21D5", }, // Up/Down Arrow Double Stroke + { "556", "21D4", }, // Left/Right Arrow Double Stroke + { "557", "21C4", }, // Right Over Left Arrow + { "558", "21C6", }, // Left Over Right Arrow + { "559", "EFE9", }, // Vector Symbol + { "560", "0305", }, // Overline, Composite + { "561", "2200", }, // For All Symbol, or Universal (inverted A) + { "562", "2203", }, // There Exists Symbol, or Existential (inverted E) + { "563", "22A4", }, // Top Symbol + { "564", "22A5", }, // Bottom Symbol + { "565", "222A", }, // Set Union Symbol + { "566", "2208", }, // Element-Of Symbol + { "567", "220B", }, // Contains Symbol + { "568", "2209", }, // Not-Element-Of Symbol + { "569", "2282", }, // Proper Subset Symbol + { "570", "2283", }, // Proper Superset Symbol + { "571", "2284", }, // Not Proper Subset Symbol + { "572", "2285", }, // Not Proper Superset Symbol + { "573", "2286", }, // Subset Symbol + { "574", "2287", }, // Superset Symbol + { "575", "2295", }, // Plus In Circle Symbol + { "576", "2299", }, // Dot In Circle Symbol + { "577", "2297", }, // Times In Circle Symbol + { "578", "2296", }, // Minus In Circle Symbol + { "579", "2298", }, // Slash In Circle Symbol + { "580", "2227", }, // Logical And Symbol + { "581", "2228", }, // Logical Or Symbol + { "582", "22BB", }, // Exclusive Or Symbol + { "583", "2218", }, // Functional Composition Symbol + { "584", "20DD", }, // Large Open Circle + { "585", "22A3", }, // Assertion Symbol + { "586", "22A2", }, // Backwards Assertion Symbol + { "587", "222B", }, // Integral Symbol + { "588", "222E", }, // Curvilinear Integral Symbol + { "589", "2220", }, // Angle Symbol + { "590", "2205", }, // Empty Set Symbol + { "591", "2135", }, // Hebrew Aleph + { "592", "2136", }, // Hebrew Beth + { "593", "2137", }, // Hebrew Gimmel + { "594", "212D", }, // Fraktur Uppercase C + { "595", "2111", }, // Fraktur Uppercase I + { "596", "211C", }, // Fraktur Uppercase R + { "597", "2128", }, // Fraktur Uppercase Z + { "598", "23A1", }, // Top Segment Left Bracket (Left Square Bracket Upper Corner) + { "599", "23A3", }, // Bottom Segment Left Bracket (Left Square Bracket Lower Corner) + { "600", "239B", }, // Top Segment Left Brace (Left Parenthesis Upper Hook) +//{ "600", "23A7", }, // Top Segment Left Brace (Right Curly Bracket Upper Hook) + { "601", "23A8", }, // Middle Segment Left Brace (Right Curly Bracket Middle Piece) + { "602", "239D", }, // Bottom Segment LeftBrace (Left Parenthesis Lower Hook) +//{ "602", "23A9", }, // Bottom Segment Left Brace (Right Curly Bracket Lower Hook) + { "603", "EFD4", }, // Middle Segment Curvilinear Integral + { "604", "EFD3", }, // Top Left Segment Summation + { "605", "2225", }, // Double Vertical Line, Composite + { "606", "EFD2", }, // Bottom Left Segment Summation + { "607", "EFD1", }, // Bottom Diagonal Summation + { "608", "23A4", }, // Top Segment Right Bracket (Right Square Bracket Upper Corner) + { "609", "23A6", }, // Bottom Segment Right Bracket (Right Square Bracket Lower Corner) + { "610", "239E", }, // Top Segment Right Brace (Right Parenthesis Upper Hook) +//{ "610", "23AB", }, // Top Segment Right Brace (Right Curly Bracket Upper Hook) + { "611", "23AC", }, // Middle Segment Right Brace (Right Curly Bracket Middle Piece) + { "612", "23A0", }, // Bottom Segment Right ( Right Parenthesis Lower Hook) +//{ "612", "23AD", }, // Bottom Segment Right Brace (Right Curly Bracket Lower Hook) + { "613", "239C", }, // Thick Vertical Line, Composite (Left Parenthesis Extension) +//{ "613", "239F", }, // Thick Vertical Line, Composite (Right Parenthesis Extension) +//{ "613", "23AA", }, // Thick Vertical Line, Composite (Curly Bracket Extension) +//{ "613", "23AE", }, // Thick Vertical Line, Composite (Integral Extension) + { "614", "2223", }, // Thin Vertical Line, Composite + { "615", "EFDC", }, // Bottom Segment of Vertical Radical + { "616", "EFD0", }, // Top Right Segment Summation + { "617", "EFCF", }, // Middle Segment Summation + { "618", "EFCE", }, // Bottom Right Segment Summation + { "619", "EFCD", }, // Top Diagonal Summation + { "620", "2213", }, // Minus Over Plus Sign + { "621", "2329", }, // Left Angle Bracket + { "622", "232A", }, // Right Angle Bracket + { "623", "EFFF", }, // Mask Symbol + { "624", "2245", }, // Wavy Over Two Straight Approximate Symbol + { "625", "2197", }, // 45 Degree Arrow + { "626", "2198", }, // -45 Degree Arrow + { "627", "2199", }, // -135 Degree Arrow + { "628", "2196", }, // 135 Degree Arrow + { "629", "25B5", }, // Up Open Triangle + { "630", "25B9", }, // Right Open Triangle + { "631", "25BF", }, // Down Open Triangle + { "632", "25C3", }, // Left Open Triangle + { "633", "226A", }, // Much Less Than Sign + { "634", "226B", }, // Much Greater Than Sign + { "635", "2237", }, // Proportional To Symbol (4 dots) + { "636", "225C", }, // Defined As Symbol + { "637", "03DD", }, // Lowercase Greek Digamma + { "638", "210F", }, // Planck's Constant divided by 2 pi + { "639", "2112", }, // Laplace Transform Symbol + { "640", "EFFE", }, // Power Set + { "641", "2118", }, // Weierstrassian Symbol + { "642", "2211", }, // Summation Symbol (large Sigma) + { "643", "301A", }, // Left Double Bracket + { "644", "EFC9", }, // Middle Segment Double Bracket + { "645", "301B", }, // Right Double Bracket + { "646", "256D", }, // Box Draw Left Top Round Corner + { "647", "2570", }, // Box Draw Left Bottom Round Corner + { "648", "EFC8", }, // Extender Large Union/Product + { "649", "EFC7", }, // Bottom Segment Large Union + { "650", "EFC6", }, // Top Segment Large Intersection + { "651", "EFC5", }, // Top Segment Left Double Bracket + { "652", "EFC4", }, // Bottom Segment Left Double Bracket + { "653", "EFFC", }, // Large Open Square Box + { "654", "25C7", }, // Open Diamond + { "655", "256E", }, // Box Draw Right Top Round Corner + { "656", "256F", }, // Box Draw Right Bottom Round Corner + { "657", "EFC3", }, // Bottom Segment Large Bottom Product + { "658", "EFC2", }, // Top Segment Large Top Product + { "659", "EFC1", }, // Top Segment Right Double Bracket + { "660", "EFC0", }, // Bottom Segment Right Double Bracket + { "661", "EFFB", }, // Large Solid Square Box + { "662", "25C6", }, // Solid Diamond + { "663", "220D", }, // Such That Symbol (rotated lc epsilon) + { "664", "2217", }, // Math Asterisk + { "665", "23AF", }, // Horizontal Arrow Extender (Horizontal Line Extension) + { "666", "EFCB", }, // Double Horizontal Arrow Extender + { "667", "EFCC", }, // Inverted Complement of 0xEFCF or MSL 617 + { "668", "221F", }, // Right Angle Symbol + { "669", "220F", }, // Product Symbol (large Pi) + { "684", "25CA", }, // Lozenge, Diamond + { "1000", "2070", }, // Superior Numeral 0 + { "1001", "2074", }, // Superior Numeral 4 + { "1002", "2075", }, // Superior Numeral 5 + { "1003", "2076", }, // Superior Numeral 6 + { "1004", "2077", }, // Superior Numeral 7 + { "1005", "2078", }, // Superior Numeral 8 + { "1006", "2079", }, // Superior Numeral 9 + { "1017", "201C", }, // Double Open Quote (6) + { "1018", "201D", }, // Double Close Quote (9) + { "1019", "201E", }, // Double Baseline Quote (9) + { "1020", "2003", }, // Em Space + { "1021", "2002", }, // En Space + { "1023", "2009", }, // Thin Space + { "1028", "2026", }, // Ellipsis + { "1030", "EFF1", }, // Uppercase Ogonek (Spacing) + { "1031", "017E", }, // Lowercase Z Hacek + { "1034", "2120", }, // Service Mark + { "1036", "211E", }, // Prescription Sign +//{ "1040", "F001", }, // Lowercase FI Ligature + { "1040", "FB01", }, // Lowercase FI Ligature +//{ "1041", "F002", }, // Lowercase FL Ligature + { "1041", "FB02", }, // Lowercase FL Ligature + { "1042", "FB00", }, // Lowercase FF Ligature + { "1043", "FB03", }, // Lowercase FFI Ligature + { "1044", "FB04", }, // Lowercase FFL Ligature + { "1045", "EFF0", }, // Uppercase Double Acute Accent (Spacing) + { "1047", "0133", }, // Lowercase IJ Ligature + { "1060", "2105", }, // Care Of Symbol + { "1061", "011E", }, // Uppercase G Breve + { "1062", "011F", }, // Lowercase G Breve + { "1063", "015E", }, // Uppercase S Cedilla + { "1064", "015F", }, // Lowercase S Cedilla + { "1065", "0130", }, // Uppercase I Overdot + { "1067", "201A", }, // Single Baseline Quote (9) + { "1068", "2030", }, // Per Mill Sign + { "1069", "20AC", }, // Euro + { "1084", "02C9", }, // Lowercase Macron Accent (Spacing) + { "1086", "02D8", }, // Lowercase Breve Accent (Spacing) + { "1088", "02D9", }, // Lowercase Overdot Accent (Spacing) + { "1090", "0153", }, // Lowercase OE Ligature + { "1091", "0152", }, // Uppercase OE Ligature + { "1092", "2039", }, // Left Pointing Single Angle Quote + { "1093", "203A", }, // Right Pointing Single Angle Quote + { "1094", "25A1", }, // Medium Open Square Box + { "1095", "0141", }, // Uppercase L-Stroke + { "1096", "0142", }, // Lowercase L-Stroke + { "1097", "02DD", }, // Lowercase Double Acute Accent (Spacing) + { "1098", "02DB", }, // Lowercase Ogonek (Spacing) + { "1099", "21B5", }, // Carriage Return Symbol + { "1100", "EFDB", }, // Full Size Serif Registered + { "1101", "EFDA", }, // Full Size Serif Copyright + { "1102", "EFD9", }, // Full Size Serif Trademark + { "1103", "EFD8", }, // Full Size Sans Registered + { "1104", "EFD7", }, // Full Size Sans Copyright + { "1105", "EFD6", }, // Full Size Sans Trademark + { "1106", "017D", }, // Uppercase Z Hacek + { "1107", "0132", }, // Uppercase IJ Ligature + { "1108", "25AB", }, // Small Open Square Box + { "1109", "25E6", }, // Small Open Round Bullet + { "1110", "25CB", }, // Medium Open Round Bullet + { "1111", "EFFA", }, // Large Solid Round Bullet + { "3812", "F000", }, // Ornament, Apple +}; + +// global constructor +static struct hp_msl_to_unicode_init { + hp_msl_to_unicode_init(); +} _hp_msl_to_unicode_init; + +hp_msl_to_unicode_init::hp_msl_to_unicode_init() { + for (unsigned int i = 0; + i < sizeof(hp_msl_to_unicode_list)/sizeof(hp_msl_to_unicode_list[0]); + i++) { + hp_msl_to_unicode *ptu = new hp_msl_to_unicode[1]; + ptu->value = (char *)hp_msl_to_unicode_list[i].value; + hp_msl_to_unicode_table.define(hp_msl_to_unicode_list[i].key, ptu); + } +} + +const char *hp_msl_to_unicode_code(const char *s) +{ + hp_msl_to_unicode *result = hp_msl_to_unicode_table.lookup(s); + return result ? result->value : 0; +} diff --git a/contrib/groff/src/utils/indxbib/Makefile.sub b/contrib/groff/src/utils/indxbib/Makefile.sub index 7736e48..e8f1e6f 100644 --- a/contrib/groff/src/utils/indxbib/Makefile.sub +++ b/contrib/groff/src/utils/indxbib/Makefile.sub @@ -11,7 +11,7 @@ CSRCS=\ $(srcdir)/signal.c NAMEPREFIX=$(g) -install_data: eign +install_data: $(srcdir)/eign -test -d $(datadir) || $(mkinstalldirs) $(datadir) -test -d $(dataprogramdir) || $(mkinstalldirs) $(dataprogramdir) -test -d $(datasubdir) || $(mkinstalldirs) $(datasubdir) diff --git a/contrib/groff/src/utils/indxbib/indxbib.cpp b/contrib/groff/src/utils/indxbib/indxbib.cpp index 2a60c15..00e9944 100644 --- a/contrib/groff/src/utils/indxbib/indxbib.cpp +++ b/contrib/groff/src/utils/indxbib/indxbib.cpp @@ -1,5 +1,5 @@ // -*- C++ -*- -/* Copyright (C) 1989-1992, 2000, 2001, 2002, 2003 +/* Copyright (C) 1989-1992, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. Written by James Clark (jjc@jclark.com) @@ -17,7 +17,7 @@ for more details. You should have received a copy of the GNU General Public License along with groff; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. */ #include "lib.h" @@ -119,7 +119,7 @@ int main(int argc, char **argv) static char stderr_buf[BUFSIZ]; setbuf(stderr, stderr_buf); - const char *basename = 0; + const char *base_name = 0; typedef int (*parser_t)(const char *); parser_t parser = do_file; const char *directory = 0; @@ -164,7 +164,7 @@ int main(int argc, char **argv) check_integer_arg('n', optarg, 0, &n_ignore_words); break; case 'o': - basename = optarg; + base_name = optarg; break; case 't': check_integer_arg('t', optarg, 1, &truncate_len); @@ -202,33 +202,33 @@ int main(int argc, char **argv) store_filename(ignore_fields); key_buffer = new char[truncate_len]; read_common_words_file(); - if (!basename) - basename = optind < argc ? argv[optind] : DEFAULT_INDEX_NAME; - const char *p = strrchr(basename, DIR_SEPS[0]), *p1; + if (!base_name) + base_name = optind < argc ? argv[optind] : DEFAULT_INDEX_NAME; + const char *p = strrchr(base_name, DIR_SEPS[0]), *p1; const char *sep = &DIR_SEPS[1]; while (*sep) { - p1 = strrchr(basename, *sep); + p1 = strrchr(base_name, *sep); if (p1 && (!p || p1 > p)) p = p1; sep++; } size_t name_max; if (p) { - char *dir = strsave(basename); - dir[p - basename] = '\0'; + char *dir = strsave(base_name); + dir[p - base_name] = '\0'; name_max = file_name_max(dir); a_delete dir; } else name_max = file_name_max("."); - const char *filename = p ? p + 1 : basename; + const char *filename = p ? p + 1 : base_name; if (strlen(filename) + sizeof(INDEX_SUFFIX) - 1 > name_max) fatal("`%1.%2' is too long for a filename", filename, INDEX_SUFFIX); if (p) { p++; - temp_index_file = new char[p - basename + sizeof(TEMP_INDEX_TEMPLATE)]; - memcpy(temp_index_file, basename, p - basename); - strcpy(temp_index_file + (p - basename), TEMP_INDEX_TEMPLATE); + temp_index_file = new char[p - base_name + sizeof(TEMP_INDEX_TEMPLATE)]; + memcpy(temp_index_file, base_name, p - base_name); + strcpy(temp_index_file + (p - base_name), TEMP_INDEX_TEMPLATE); } else { temp_index_file = strsave(TEMP_INDEX_TEMPLATE); @@ -281,8 +281,8 @@ int main(int argc, char **argv) write_hash_table(); if (fclose(indxfp) < 0) fatal("error closing temporary index file: %1", strerror(errno)); - char *index_file = new char[strlen(basename) + sizeof(INDEX_SUFFIX)]; - strcpy(index_file, basename); + char *index_file = new char[strlen(base_name) + sizeof(INDEX_SUFFIX)]; + strcpy(index_file, base_name); strcat(index_file, INDEX_SUFFIX); #ifdef HAVE_RENAME #ifdef __EMX__ @@ -293,7 +293,7 @@ int main(int argc, char **argv) #ifdef __MSDOS__ // RENAME could fail on plain MSDOS filesystems because // INDEX_FILE is an invalid filename, e.g. it has multiple dots. - char *fname = p ? index_file + (p - basename) : 0; + char *fname = p ? index_file + (p - base_name) : 0; char *dot = 0; // Replace the dot with an underscore and try again. diff --git a/contrib/groff/src/utils/indxbib/signal.c b/contrib/groff/src/utils/indxbib/signal.c index fccd289..20dfd90 100644 --- a/contrib/groff/src/utils/indxbib/signal.c +++ b/contrib/groff/src/utils/indxbib/signal.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1992, 2001 Free Software Foundation, Inc. +/* Copyright (C) 1992, 2001, 2003, 2004 Free Software Foundation, Inc. Written by James Clark (jjc@jclark.com) This file is part of groff. @@ -15,11 +15,13 @@ for more details. You should have received a copy of the GNU General Public License along with groff; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Unfortunately vendors seem to have problems writing a <signal.h> that is correct for C++, so we implement all signal handling in C. */ +#include <stdlib.h> + #ifdef HAVE_CONFIG_H #include <config.h> #endif @@ -30,21 +32,26 @@ that is correct for C++, so we implement all signal handling in C. */ #include <unistd.h> #endif -#ifndef RETSIGTYPE -#define RETSIGTYPE void +#ifdef __cplusplus +extern "C" { #endif -extern void cleanup(); +extern void cleanup(void); -static RETSIGTYPE handle_fatal_signal(signum) - int signum; +static RETSIGTYPE handle_fatal_signal(int signum) { signal(signum, SIG_DFL); cleanup(); +#ifdef HAVE_KILL kill(getpid(), signum); +#else + /* MS-DOS and Win32 don't have kill(); the best compromise is + probably to use exit() instead. */ + exit(signum); +#endif } -void catch_fatal_signals() +void catch_fatal_signals(void) { #ifdef SIGHUP signal(SIGHUP, handle_fatal_signal); @@ -53,6 +60,10 @@ void catch_fatal_signals() signal(SIGTERM, handle_fatal_signal); } +#ifdef __cplusplus +} +#endif + #ifndef HAVE_RENAME void ignore_fatal_signals() diff --git a/contrib/groff/src/utils/lkbib/lkbib.cpp b/contrib/groff/src/utils/lkbib/lkbib.cpp index 42156ea..b44f245 100644 --- a/contrib/groff/src/utils/lkbib/lkbib.cpp +++ b/contrib/groff/src/utils/lkbib/lkbib.cpp @@ -16,7 +16,7 @@ for more details. You should have received a copy of the GNU General Public License along with groff; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. */ #include "lib.h" diff --git a/contrib/groff/src/utils/lkbib/lkbib.man b/contrib/groff/src/utils/lkbib/lkbib.man index 81067d1..29831ee 100644 --- a/contrib/groff/src/utils/lkbib/lkbib.man +++ b/contrib/groff/src/utils/lkbib/lkbib.man @@ -1,5 +1,5 @@ .ig -Copyright (C) 1989-2000, 2001 Free Software Foundation, Inc. +Copyright (C) 1989-2000, 2001, 2004 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice @@ -16,17 +16,23 @@ versions, except that this permission notice may be included in translations approved by the Free Software Foundation instead of in the original English. .. -.ds g \" empty -.ds G \" empty +. +. .\" Like TP, but if specified indent is more than half .\" the current line-length - indent, use the default indent. .de Tp -.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP -.el .TP "\\$1" +. ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP +. el .TP "\\$1" .. +. +. .TH LKBIB @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@" +. +. .SH NAME lkbib \- search bibliographic databases +. +. .SH SYNOPSIS .B lkbib [ @@ -42,13 +48,16 @@ lkbib \- search bibliographic databases .BI \-t n ] .IR key \|.\|.\|. +. .PP It is possible to have whitespace between a command line option and its parameter. +. +. .SH DESCRIPTION .B lkbib searches bibliographic databases for references that contain the keys -.IR key \|.\|.\|. +.IR key \|.\|.\|.\& and prints any references found on the standard output. .B lkbib will search any databases given by @@ -68,10 +77,13 @@ created by .BR @g@indxbib (@MAN1EXT@) exists, then it will be searched instead; each index can cover multiple databases. +. +. .SH OPTIONS .TP .B \-v Print the version number. +. .TP .BI \-p filename Search @@ -79,11 +91,13 @@ Search Multiple .B \-p options can be used. +. .TP .BI \-i string When searching files for which no index exists, ignore the contents of fields whose names are in .IR string . +. .TP .BI \-t n Only require the first @@ -91,19 +105,27 @@ Only require the first characters of keys to be given. Initially .I n -is 6. +is\~6. +. +. .SH ENVIRONMENT .TP \w'\fBREFER'u+2n .SB REFER Default database. +. +. .SH FILES .Tp \w'\fB@DEFAULT_INDEX@'u+2n .B @DEFAULT_INDEX@ Default database to be used if the .SB REFER environment variable is not set. +. +.TP .IB filename @INDEX_SUFFIX@ Index files. +. +. .SH "SEE ALSO" .BR @g@refer (@MAN1EXT@), .BR @g@lookbib (@MAN1EXT@), diff --git a/contrib/groff/src/utils/lookbib/lookbib.cpp b/contrib/groff/src/utils/lookbib/lookbib.cpp index 65e89bc..a573c5f 100644 --- a/contrib/groff/src/utils/lookbib/lookbib.cpp +++ b/contrib/groff/src/utils/lookbib/lookbib.cpp @@ -1,5 +1,6 @@ // -*- C++ -*- -/* Copyright (C) 1989-1992, 2000, 2001 Free Software Foundation, Inc. +/* Copyright (C) 1989-1992, 2000, 2001, 2002, 2003 + Free Software Foundation, Inc. Written by James Clark (jjc@jclark.com) This file is part of groff. @@ -16,7 +17,7 @@ for more details. You should have received a copy of the GNU General Public License along with groff; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. */ #include "lib.h" @@ -33,6 +34,7 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* for isatty() */ #include "posix.h" +#include "nonposix.h" extern "C" { const char *Version_string; diff --git a/contrib/groff/src/utils/lookbib/lookbib.man b/contrib/groff/src/utils/lookbib/lookbib.man index 3d8ba44..baade0f 100644 --- a/contrib/groff/src/utils/lookbib/lookbib.man +++ b/contrib/groff/src/utils/lookbib/lookbib.man @@ -1,5 +1,5 @@ .ig -Copyright (C) 1989-2000, 2001 Free Software Foundation, Inc. +Copyright (C) 1989-2000, 2001, 2004 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice @@ -16,9 +16,15 @@ versions, except that this permission notice may be included in translations approved by the Free Software Foundation instead of in the original English. .. +. +. .TH @G@LOOKBIB @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@" +. +. .SH NAME @g@lookbib \- search bibliographic databases +. +. .SH SYNOPSIS .B @g@lookbib [ @@ -31,14 +37,19 @@ the original English. .BI \-t n ] .IR filename \|.\|.\|. +. .PP It is possible to have whitespace between a command line option and its parameter. +. +. .SH DESCRIPTION -@g@lookbib prints a prompt on the standard error (unless the standard input is not a terminal), +.B @g@lookbib +prints a prompt on the standard error (unless the standard input is not +a terminal), reads from the standard input a line containing a set of keywords, searches the bibliographic databases -.IR filename \|.\|.\|. +.IR filename \|.\|.\|.\& for references containing those keywords, prints any references found on the standard output, and repeats this process until the end of input. @@ -51,15 +62,19 @@ created by .BR @g@indxbib (@MAN1EXT@) exists, then it will be searched instead; each index can cover multiple databases. +. +. .SH OPTIONS .TP .B \-v Print the version number. +. .TP .BI \-i string When searching files for which no index exists, ignore the contents of fields whose names are in .IR string . +. .TP .BI \-t n Only require the first @@ -67,11 +82,15 @@ Only require the first characters of keys to be given. Initially .I n -is 6. +is\~6. +. +. .SH FILES .TP \w'\fIfilename\fB@INDEX_SUFFIX@'u+2n .IB filename @INDEX_SUFFIX@ Index files. +. +. .SH "SEE ALSO" .BR @g@refer (@MAN1EXT@), .BR lkbib (@MAN1EXT@), diff --git a/contrib/groff/src/utils/pfbtops/Makefile.sub b/contrib/groff/src/utils/pfbtops/Makefile.sub index a8ed92a..451b519 100644 --- a/contrib/groff/src/utils/pfbtops/Makefile.sub +++ b/contrib/groff/src/utils/pfbtops/Makefile.sub @@ -4,3 +4,4 @@ OBJS=pfbtops.$(OBJEXT) CSRCS=$(srcdir)/pfbtops.c XLIBS=$(LIBGROFF) MLIB=$(LIBM) +LINK.c=$(CCC) $(CCFLAGS) $(LDFLAGS) diff --git a/contrib/groff/src/utils/pfbtops/pfbtops.c b/contrib/groff/src/utils/pfbtops/pfbtops.c index 821d901..8b394d5 100644 --- a/contrib/groff/src/utils/pfbtops/pfbtops.c +++ b/contrib/groff/src/utils/pfbtops/pfbtops.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1992, 2001, 2003 Free Software Foundation, Inc. +/* Copyright (C) 1992, 2001, 2003, 2004, 2005 Free Software Foundation, Inc. Written by James Clark (jjc@jclark.com) This file is part of groff. @@ -15,7 +15,7 @@ for more details. You should have received a copy of the GNU General Public License along with groff; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. */ /* This translates ps fonts in .pfb format to ASCII ps files. */ @@ -25,9 +25,11 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include <stdio.h> #include <stdlib.h> -#include <getopt.h> #include <limits.h> +#define __GETOPT_PREFIX groff_ +#include <getopt.h> + #include "nonposix.h" /* Binary bytes per output line. */ @@ -35,10 +37,11 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #define MAX_LINE_LENGTH 78 #define HEX_DIGITS "0123456789abcdef" +extern const char *Version_string; + static char *program_name; -static void error(s) - char *s; +static void error(const char *s) { fprintf(stderr, "%s: %s\n", program_name, s); exit(2); @@ -51,7 +54,7 @@ static void usage(FILE *stream) static void get_text(int n) { - int c, c1; + int c = 0, c1; int in_string = 0; int is_comment = 0; int count = 0; @@ -67,19 +70,27 @@ static void get_text(int n) else if (c == '\\' && in_string) { count++; putchar(c); + if (n-- == 0) + break; c = getchar(); /* don't split octal character representations */ if (c >= '0' && c <= '7') { count++; putchar(c); + if (n-- == 0) + break; c = getchar(); if (c >= '0' && c <= '7') { count++; putchar(c); + if (n-- == 0) + break; c = getchar(); if (c >= '0' && c <= '7') { count++; putchar(c); + if (n-- == 0) + break; c = getchar(); } } @@ -88,9 +99,13 @@ static void get_text(int n) if (c == EOF) error("end of file in text packet"); else if (c == '\r') { + if (n-- == 0) + break; c1 = getchar(); - if (c1 != '\n') + if (c1 != '\n') { ungetc(c1, stdin); + n++; + } c = '\n'; } if (c == '\n') { @@ -112,6 +127,8 @@ static void get_text(int n) /* split at the next whitespace character */ while (c != ' ' && c != '\t' && c != '\f') { putchar(c); + if (n-- == 0) + break; c = getchar(); } count = 0; @@ -146,12 +163,9 @@ static void get_binary(int n) putchar('\n'); } -int main(argc, argv) - int argc; - char **argv; +int main(int argc, char **argv) { int opt; - extern int optind; static const struct option long_options[] = { { "help", no_argument, 0, CHAR_MAX + 1 }, { "version", no_argument, 0, 'v' }, @@ -163,12 +177,9 @@ int main(argc, argv) while ((opt = getopt_long(argc, argv, "v", long_options, NULL)) != EOF) { switch (opt) { case 'v': - { - extern const char *Version_string; - printf("GNU pfbtops (groff) version %s\n", Version_string); - exit(0); - break; - } + printf("GNU pfbtops (groff) version %s\n", Version_string); + exit(0); + break; case CHAR_MAX + 1: /* --help */ usage(stdout); exit(0); diff --git a/contrib/groff/src/utils/pfbtops/pfbtops.man b/contrib/groff/src/utils/pfbtops/pfbtops.man index 627e5c5..c97a297 100644 --- a/contrib/groff/src/utils/pfbtops/pfbtops.man +++ b/contrib/groff/src/utils/pfbtops/pfbtops.man @@ -1,5 +1,5 @@ .ig -Copyright (C) 1989-1995, 2001, 2003 Free Software Foundation, Inc. +Copyright (C) 1989-1995, 2001, 2003, 2004 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice @@ -16,14 +16,25 @@ versions, except that this permission notice may be included in translations approved by the Free Software Foundation instead of in the original English. .. +. +. .TH PFBTOPS @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@" +. +. .SH NAME pfbtops \- translate a PostScript font in .pfb format to ASCII +. +. .SH SYNOPSIS .B pfbtops [ +.B \-v +] +[ .I pfb_file ] +. +. .SH DESCRIPTION .B pfbtops translates a PostScript font in @@ -37,10 +48,18 @@ The ASCII format PostScript font will be written on the standard output. PostScript fonts for MS-DOS are normally supplied in .B .pfb format. +. .LP The resulting ASCII format PostScript font can be used with groff. It must first be listed in .BR @FONTDIR@/devps/download . +. +.SH OPTIONS +.TP +.B \-v +Print the version number. +. +. .SH "SEE ALSO" .BR grops (@MAN1EXT@) . diff --git a/contrib/groff/src/utils/tfmtodit/tfmtodit.cpp b/contrib/groff/src/utils/tfmtodit/tfmtodit.cpp index 9fbbe25..ccf995a 100644 --- a/contrib/groff/src/utils/tfmtodit/tfmtodit.cpp +++ b/contrib/groff/src/utils/tfmtodit/tfmtodit.cpp @@ -1,5 +1,5 @@ // -*- C++ -*- -/* Copyright (C) 1989-1992, 2000, 2001 Free Software Foundation, Inc. +/* Copyright (C) 1989-1992, 2000, 2001, 2004 Free Software Foundation, Inc. Written by James Clark (jjc@jclark.com) This file is part of groff. @@ -16,7 +16,7 @@ for more details. You should have received a copy of the GNU General Public License along with groff; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. */ /* I have tried to incorporate the changes needed for TeX 3.0 tfm files, but I haven't tested them. */ @@ -412,7 +412,7 @@ int gf::load(const char *file) }; int got_an_adjustment = 0; int pending_adjustment = 0; - int left_adj, right_adj; + int left_adj = 0, right_adj = 0; // pacify compiler const int gf_id_byte = 131; errno = 0; FILE *fp = fopen(file, FOPEN_RB); @@ -650,7 +650,7 @@ lig_chars table. `ch' gives the full-name of the character, `name' gives the groff name of the character, `i' gives its index in the encoding, which is filled in later (-1 if it does not appear). */ -struct { +struct S { const char *ch; int i; } lig_chars[] = { @@ -670,7 +670,7 @@ enum { CH_f, CH_i, CH_l, CH_ff, CH_fi, CH_fl, CH_ffi, CH_ffl }; // Each possible ligature appears in this table. -struct { +struct S2 { unsigned char c1, c2, res; const char *ch; } lig_table[] = { diff --git a/contrib/groff/src/utils/xtotroff/Makefile.in b/contrib/groff/src/utils/xtotroff/Makefile.in new file mode 100644 index 0000000..4b3a7e6 --- /dev/null +++ b/contrib/groff/src/utils/xtotroff/Makefile.in @@ -0,0 +1,62 @@ +# Copyright (C) 2004 +# Free Software Foundation, Inc. +# Written by James Clark (jjc@jclark.com) +# +# This file is part of groff. +# +# groff 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, or (at your option) any later +# version. +# +# groff 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. +# +# You should have received a copy of the GNU General Public License along +# with groff; see the file COPYING. If not, write to the Free Software +# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. + +builddir=@abs_builddir@ +top_srcdir=@abs_top_srcdir@ +top_builddir=@abs_top_builddir@ +SHELL=@SHELL@ + +devdir=$(top_builddir)/font +driverdir=$(top_srcdir)/src/devices/xditview +mkinstalldirs=$(SHELL) $(top_srcdir)/mkinstalldirs + +xtotroff=$(builddir)/xtotroff +DPIS=75 100 + +all: + @echo "Say \`make fonts' to generate fonts for gxditview." + +fonts: $(xtotroff) $(driverdir)/DESC.in $(driverdir)/FontMap + fonts=`sed -e 's/[ ].*//' $(driverdir)/FontMap`; \ + for dpi in $(DPIS); do \ + echo Making devX$$dpi; \ + test -d $(devdir)/devX$$dpi || \ + $(mkinstalldirs) $(devdir)/devX$$dpi; \ + rm -f $(devdir)/devX$$dpi/DESC; \ + sed -e "s/res 75/res $$dpi/" $(driverdir)/DESC.in \ + >$(devdir)/devX$$dpi/DESC; \ + (cd $(devdir)/devX$$dpi; \ + rm -f Makefile.sub; \ + echo DEV=X$$dpi >Makefile.sub; \ + echo DEVFILES=DESC $$fonts >>Makefile.sub; \ + $(xtotroff) -r $$dpi -s 10 $(driverdir)/FontMap); \ + echo Making devX$$dpi-12; \ + test -d $(devdir)/devX$$dpi-12 || \ + $(mkinstalldirs) $(devdir)/devX$$dpi-12; \ + rm -f $(devdir)/devX$$dpi-12/DESC; \ + sed -e "s/res 75/res $$dpi/" \ + -e 's/unitwidth 10/unitwidth 12/' $(driverdir)/DESC.in \ + >$(devdir)/devX$$dpi-12/DESC; \ + (cd $(devdir)/devX$$dpi-12; \ + rm -f Makefile.sub; \ + echo DEV=X$$dpi-12 >Makefile.sub; \ + echo DEVFILES=DESC $$fonts >>Makefile.sub; \ + $(xtotroff) -r $$dpi -s 12 $(driverdir)/FontMap); \ + done diff --git a/contrib/groff/src/utils/xtotroff/Makefile.sub b/contrib/groff/src/utils/xtotroff/Makefile.sub new file mode 100644 index 0000000..fc0d76a --- /dev/null +++ b/contrib/groff/src/utils/xtotroff/Makefile.sub @@ -0,0 +1,8 @@ +PROG=xtotroff$(EXEEXT) +MAN1=xtotroff.n +MLIB=$(LIBM) +XLIBS=$(LIBXUTIL) $(LIBGROFF) +EXTRA_CFLAGS=$(X_CFLAGS) +EXTRA_LDFLAGS=$(X_LIBS) $(X_PRE_LIBS) -lXaw -lXt -lX11 $(X_EXTRA_LIBS) +OBJS=xtotroff.$(OBJEXT) +CSRCS=$(srcdir)/xtotroff.c diff --git a/contrib/groff/src/utils/xtotroff/xtotroff.c b/contrib/groff/src/utils/xtotroff/xtotroff.c new file mode 100644 index 0000000..dafff04 --- /dev/null +++ b/contrib/groff/src/utils/xtotroff/xtotroff.c @@ -0,0 +1,299 @@ +/* + * xtotroff + * + * convert X font metrics into troff font metrics + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <X11/Xlib.h> +#include <stdio.h> +#include <ctype.h> +#include <unistd.h> +#include <stdlib.h> +#include <string.h> +#include <fcntl.h> +#include <limits.h> + +#define __GETOPT_PREFIX groff_ +#include <getopt.h> + +#include "XFontName.h" +#include "DviChar.h" + +#define charWidth(fi,c) \ + ((fi)->per_char[(c) - (fi)->min_char_or_byte2].width) +#define charHeight(fi,c) \ + ((fi)->per_char[(c) - (fi)->min_char_or_byte2].ascent) +#define charDepth(fi,c) \ + ((fi)->per_char[(c) - (fi)->min_char_or_byte2].descent) +#define charLBearing(fi,c) \ + ((fi)->per_char[(c) - (fi)->min_char_or_byte2].lbearing) +#define charRBearing(fi,c) \ + ((fi)->per_char[(c) - (fi)->min_char_or_byte2].rbearing) + +extern const char *Version_string; +static char *program_name; + +Display *dpy; +unsigned resolution = 75; +unsigned point_size = 10; + +int charExists(XFontStruct * fi, int c) +{ + XCharStruct *p; + + /* `c' is always >= 0 */ + if ((unsigned int) c < fi->min_char_or_byte2 + || (unsigned int) c > fi->max_char_or_byte2) + return 0; + p = fi->per_char + (c - fi->min_char_or_byte2); + return p->lbearing != 0 || p->rbearing != 0 || p->width != 0 + || p->ascent != 0 || p->descent != 0 || p->attributes != 0; +} + +/* Canonicalize the font name by replacing scalable parts by *s. */ + +static int CanonicalizeFontName(char *font_name, char *canon_font_name) +{ + unsigned int attributes; + XFontName parsed; + + if (!XParseFontName(font_name, &parsed, &attributes)) { + fprintf(stderr, "not a standard name: %s\n", font_name); + return 0; + } + + attributes &= ~(FontNamePixelSize | FontNameAverageWidth + | FontNamePointSize + | FontNameResolutionX | FontNameResolutionY); + XFormatFontName(&parsed, attributes, canon_font_name); + return 1; +} + +static int +FontNamesAmbiguous(const char *font_name, char **names, int count) +{ + char name1[2048], name2[2048]; + int i; + + if (count == 1) + return 0; + + for (i = 0; i < count; i++) { + if (!CanonicalizeFontName(names[i], i == 0 ? name1 : name2)) { + fprintf(stderr, "bad font name: %s\n", names[i]); + return 1; + } + if (i > 0 && strcmp(name1, name2) != 0) { + fprintf(stderr, "ambiguous font name: %s\n", font_name); + fprintf(stderr, " matches %s\n", names[0]); + fprintf(stderr, " and %s\n", names[i]); + return 1; + } + } + return 0; +} + +static int MapFont(char *font_name, const char *troff_name) +{ + XFontStruct *fi; + int count; + char **names; + FILE *out; + unsigned int c; + unsigned int attributes; + XFontName parsed; + int j, k; + DviCharNameMap *char_map; + char encoding[256]; + char *s; + int wid; + char name_string[2048]; + + if (!XParseFontName(font_name, &parsed, &attributes)) { + fprintf(stderr, "not a standard name: %s\n", font_name); + return 0; + } + + attributes &= ~(FontNamePixelSize | FontNameAverageWidth); + attributes |= FontNameResolutionX; + attributes |= FontNameResolutionY; + attributes |= FontNamePointSize; + parsed.ResolutionX = resolution; + parsed.ResolutionY = resolution; + parsed.PointSize = point_size * 10; + XFormatFontName(&parsed, attributes, name_string); + + names = XListFonts(dpy, name_string, 100000, &count); + if (count < 1) { + fprintf(stderr, "bad font name: %s\n", font_name); + return 0; + } + + if (FontNamesAmbiguous(font_name, names, count)) + return 0; + + XParseFontName(names[0], &parsed, &attributes); + sprintf(encoding, "%s-%s", parsed.CharSetRegistry, + parsed.CharSetEncoding); + for (s = encoding; *s; s++) + if (isupper(*s)) + *s = tolower(*s); + char_map = DviFindMap(encoding); + if (!char_map) { + fprintf(stderr, "not a standard encoding: %s\n", encoding); + return 0; + } + + fi = XLoadQueryFont(dpy, names[0]); + if (!fi) { + fprintf(stderr, "font does not exist: %s\n", names[0]); + return 0; + } + + printf("%s -> %s\n", names[0], troff_name); + + { /* Avoid race while opening file */ + int fd; + (void) unlink(troff_name); + fd = open(troff_name, O_WRONLY | O_CREAT | O_EXCL, 0600); + out = fdopen(fd, "w"); + } + + if (!out) { + perror(troff_name); + return 0; + } + fprintf(out, "name %s\n", troff_name); + if (!strcmp(char_map->encoding, "adobe-fontspecific")) + fprintf(out, "special\n"); + if (charExists(fi, ' ')) { + int w = charWidth(fi, ' '); + if (w > 0) + fprintf(out, "spacewidth %d\n", w); + } + fprintf(out, "charset\n"); + for (c = fi->min_char_or_byte2; c <= fi->max_char_or_byte2; c++) { + const char *name = DviCharName(char_map, c, 0); + if (charExists(fi, c)) { + int param[5]; + + wid = charWidth(fi, c); + + fprintf(out, "%s\t%d", name ? name : "---", wid); + param[0] = charHeight(fi, c); + param[1] = charDepth(fi, c); + param[2] = 0; /* charRBearing (fi, c) - wid */ + param[3] = 0; /* charLBearing (fi, c) */ + param[4] = 0; /* XXX */ + for (j = 0; j < 5; j++) + if (param[j] < 0) + param[j] = 0; + for (j = 4; j >= 0; j--) + if (param[j] != 0) + break; + for (k = 0; k <= j; k++) + fprintf(out, ",%d", param[k]); + fprintf(out, "\t0\t0%o\n", c); + + if (name) { + for (k = 1; DviCharName(char_map, c, k); k++) { + fprintf(out, "%s\t\"\n", DviCharName(char_map, c, k)); + } + } + } + } + XUnloadFont(dpy, fi->fid); + fclose(out); + return 1; +} + +static void usage(FILE *stream) +{ + fprintf(stream, + "usage: %s [-r resolution] [-s pointsize] FontMap\n", + program_name); +} + +int main(int argc, char **argv) +{ + char troff_name[1024]; + char font_name[1024]; + char line[1024]; + char *a, *b, c; + FILE *map; + int opt; + static const struct option long_options[] = { + { "help", no_argument, 0, CHAR_MAX + 1 }, + { "version", no_argument, 0, 'v' }, + { NULL, 0, 0, 0 } + }; + + program_name = argv[0]; + + while ((opt = getopt_long(argc, argv, "gr:s:v", long_options, + NULL)) != EOF) { + switch (opt) { + case 'g': + /* unused; just for compatibility */ + break; + case 'r': + sscanf(optarg, "%u", &resolution); + break; + case 's': + sscanf(optarg, "%u", &point_size); + break; + case 'v': + printf("xtotroff (groff) version %s\n", Version_string); + exit(0); + break; + case CHAR_MAX + 1: /* --help */ + usage(stdout); + exit(0); + break; + case '?': + usage(stderr); + exit(1); + break; + } + } + if (argc - optind != 1) { + usage(stderr); + exit(1); + } + + dpy = XOpenDisplay(0); + if (!dpy) { + fprintf(stderr, "Can't connect to the X server.\n"); + fprintf(stderr, + "Make sure the DISPLAY environment variable is set correctly.\n"); + exit(1); + } + + map = fopen(argv[optind], "r"); + if (map == NULL) { + perror(argv[optind]); + exit(1); + } + + while (fgets(line, sizeof(line), map)) { + for (a = line, b = troff_name; *a; a++, b++) { + c = (*b = *a); + if (c == ' ' || c == '\t') + break; + } + *b = '\0'; + while (*a && (*a == ' ' || *a == '\t')) + ++a; + for (b = font_name; *a; a++, b++) + if ((*b = *a) == '\n') + break; + *b = '\0'; + if (!MapFont(font_name, troff_name)) + exit(1); + } + exit(0); +} diff --git a/contrib/groff/src/utils/xtotroff/xtotroff.man b/contrib/groff/src/utils/xtotroff/xtotroff.man new file mode 100644 index 0000000..d21bb5c --- /dev/null +++ b/contrib/groff/src/utils/xtotroff/xtotroff.man @@ -0,0 +1,109 @@ +.ig +Copyright (C) 2004 Free Software Foundation, Inc. + +Permission is granted to make and distribute verbatim copies of +this manual provided the copyright notice and this permission notice +are preserved on all copies. + +Permission is granted to copy and distribute modified versions of this +manual under the conditions for verbatim copying, provided that the +entire resulting derived work is distributed under the terms of a +permission notice identical to this one. + +Permission is granted to copy and distribute translations of this +manual into another language, under the above conditions for modified +versions, except that this permission notice may be included in +translations approved by the Free Software Foundation instead of in +the original English. +.. +. +. +.TH XTOTROFF @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@" +. +. +.SH NAME +xtotroff \- convert X font metrics into GNU troff font metrics +. +. +.SH SYNOPSIS +.B xtotroff +[ +.BI \-r \%resolution +] +[ +.BI \-s \%point-size +] +[ +.B \-v +] +.I FontMap +. +.PP +It is possible to have whitespace between a command line option and its +parameter. +. +. +.SH DESCRIPTION +.B xtotroff +takes a +.IR FontMap , +which maps +.B groff +fonts to X11 fonts, +creates GNU +.B troff +metric files for all fonts listed. +Each line in +.I FontMap +consists of GNU +.B troff +font name and an X font name (XLFD) pattern, separated by whitespace. +Example: +. +.PP +.in +2n +.nf +TB -adobe-times-bold-r-normal--*-*-*-*-p-*-iso8859-1 +.fi +.in +. +.PP +The wildcards in the patterns are filled with the arguments to the +.B \-r +and +.B \-s +switches. +If a font name is still ambiguous, +.B xtotroff +aborts. +. +. +.SH OPTIONS +.TP +.BI \-r resolution +Set the resolution for all font patterns in +.IR FontMap . +The value is used for both the horizontal and vertical resolution. +If not specified, a resolution of 75dpi is assumed. +. +.TP +.BI \-s point-size +Set the point size for all font patterns in +.IR FontMap . +If not specified, a size of 10pt is assumed. +. +.TP +.B \-v +Print the version number. +. +. +.SH BUGS +The only supported font encodings are `iso8859-1' and `adobe-fontspecific'. +. +. +.SH "SEE ALSO" +.BR gxditview (@MAN1EXT@) +. +.\" Local Variables: +.\" mode: nroff +.\" End: |