summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/fonts/gnu-freefont/tools
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/fonts/gnu-freefont/tools')
-rwxr-xr-xMaster/texmf-dist/doc/fonts/gnu-freefont/tools/generate/MacTT54
-rwxr-xr-xMaster/texmf-dist/doc/fonts/gnu-freefont/tools/generate/OpenType54
-rwxr-xr-xMaster/texmf-dist/doc/fonts/gnu-freefont/tools/generate/TrueType57
-rwxr-xr-xMaster/texmf-dist/doc/fonts/gnu-freefont/tools/generate/WOFF174
-rw-r--r--Master/texmf-dist/doc/fonts/gnu-freefont/tools/generate/buildutils.py46
-rw-r--r--Master/texmf-dist/doc/fonts/gnu-freefont/tools/generate/buildutils.pycbin0 -> 1865 bytes
-rwxr-xr-xMaster/texmf-dist/doc/fonts/gnu-freefont/tools/report/OS2UnicodeRange7
-rw-r--r--Master/texmf-dist/doc/fonts/gnu-freefont/tools/report/OpenType/UnicodeRanges.py567
-rw-r--r--Master/texmf-dist/doc/fonts/gnu-freefont/tools/report/OpenType/__init__.py0
-rwxr-xr-xMaster/texmf-dist/doc/fonts/gnu-freefont/tools/report/kernclasses.py169
-rwxr-xr-xMaster/texmf-dist/doc/fonts/gnu-freefont/tools/report/ligatureLookups.py276
-rwxr-xr-xMaster/texmf-dist/doc/fonts/gnu-freefont/tools/report/private_use.py92
-rwxr-xr-xMaster/texmf-dist/doc/fonts/gnu-freefont/tools/report/range_report.py323
-rwxr-xr-xMaster/texmf-dist/doc/fonts/gnu-freefont/tools/script-menu/nameBySlot.py62
-rw-r--r--Master/texmf-dist/doc/fonts/gnu-freefont/tools/script-menu/unnameBySlot.py54
-rwxr-xr-xMaster/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/CheckConformance.pl60
-rw-r--r--Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/MES-1.lst335
-rw-r--r--Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/MES-1.txt8
-rw-r--r--Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/MES-2.lst1052
-rw-r--r--Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/MES-2.txt17
-rw-r--r--Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/MES-3B.lst2819
-rw-r--r--Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/MES-3B.txt21
-rw-r--r--Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/WGL4.lst653
-rwxr-xr-xMaster/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/mes-list-expand.pl45
-rwxr-xr-xMaster/texmf-dist/doc/fonts/gnu-freefont/tools/test/checkGlyphNumbers.py98
-rwxr-xr-xMaster/texmf-dist/doc/fonts/gnu-freefont/tools/test/findBackLayers.py63
-rwxr-xr-xMaster/texmf-dist/doc/fonts/gnu-freefont/tools/test/isMonoMono.py94
-rwxr-xr-xMaster/texmf-dist/doc/fonts/gnu-freefont/tools/test/ranges/Arabic/arabic_test.py310
-rwxr-xr-xMaster/texmf-dist/doc/fonts/gnu-freefont/tools/test/ranges/Arabic/generate_arabic_shaping.py81
-rwxr-xr-xMaster/texmf-dist/doc/fonts/gnu-freefont/tools/test/ranges/Arabic/unicode_joining.py207
-rwxr-xr-xMaster/texmf-dist/doc/fonts/gnu-freefont/tools/test/validate.py146
-rwxr-xr-xMaster/texmf-dist/doc/fonts/gnu-freefont/tools/utility/KerningNumerals.pl117
-rwxr-xr-xMaster/texmf-dist/doc/fonts/gnu-freefont/tools/utility/fontforge-interp.sh9
-rw-r--r--Master/texmf-dist/doc/fonts/gnu-freefont/tools/utility/freefont-ttf.spec83
-rwxr-xr-xMaster/texmf-dist/doc/fonts/gnu-freefont/tools/utility/hex_range.py67
-rwxr-xr-xMaster/texmf-dist/doc/fonts/gnu-freefont/tools/utility/metafont/bulk_eps_import.py72
-rw-r--r--Master/texmf-dist/doc/fonts/gnu-freefont/tools/utility/special-purpose/makeBraille.py80
37 files changed, 8372 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/generate/MacTT b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/generate/MacTT
new file mode 100755
index 00000000000..30d19e151f0
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/generate/MacTT
@@ -0,0 +1,54 @@
+# vim: set filetype=python :
+__license__ = """
+This file is part of Gnu FreeFont.
+
+Gnu FreeFont 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 3 of the License, or (at your option) any later
+version.
+
+Gnu FreeFont 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
+Gnu FreeFont. If not, see <http://www.gnu.org/licenses/>.
+"""
+__author__ = "Stevan White"
+__email__ = "stevan.white@googlemail.com"
+__copyright__ = "Copyright 2009, 2010, 2012, Stevan White"
+__date__ = "$Date: 2012-04-21 18:47:22 +0200 (Sat, 21 Apr 2012) $"
+__version__ = "$Revision: 2231 $"
+
+__doc__ = """
+Convert fonts from FontForge's native SFD format to TrueType format
+First auto-hints whole font
+
+Old-style kern tables seem to be what is actually used by Windows and
+some Linux programs such as OpenOffice.
+
+According to the FAQ, need to pass Flags=(apple) to build Mac fonts.
+But this option seems to rule out old-style kern tables
+"""
+
+import fontforge
+from sys import argv
+from buildutils import *
+
+scriptname = argv[0];
+argc = len( argv )
+
+if argc > 1:
+ for i in range( 1, argc ):
+ f = fontforge.open( argv[i] )
+ ttfile = f.fontname + ".mac.ttf"
+ vstr = trim_version_str( f )
+ print "Generating Mac TrueType file ", ttfile, ' ', vstr
+ f.selection.all()
+ f.autoHint()
+ f.autoInstr()
+ # Mac OS Font Book doesn't like the old-kern flag
+ #f.generate( ttfile, flags=('opentype','old-kern') )
+ f.close()
+else:
+ print "Usage: " + scriptname + " font.sfd [font.sfd ...]"
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/generate/OpenType b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/generate/OpenType
new file mode 100755
index 00000000000..4307231034e
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/generate/OpenType
@@ -0,0 +1,54 @@
+# vim: set filetype=python :
+__license__ = """
+This file is part of Gnu FreeFont.
+
+Gnu FreeFont 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 3 of the License, or (at your option) any later
+version.
+
+Gnu FreeFont 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
+Gnu FreeFont. If not, see <http://www.gnu.org/licenses/>.
+"""
+__author__ = "Stevan White"
+__email__ = "stevan.white@googlemail.com"
+__copyright__ = "Copyright 2009, 2010, 2012, Stevan White"
+__date__ = "$Date: 2012-04-24 13:09:08 +0200 (Tue, 24 Apr 2012) $"
+__version__ = "$Revision: 2245 $"
+__doc__ = """
+Convert fonts from FontForge's native SFD format to OpenType format
+
+Issues: Currently, FontForge does not include gasp tables in OpenType fonts.
+However, in Windows, that functionality is clearly present in other fonts.
+The result, I think, is that hinting is applied to small font sizes when
+it is inappropriate.
+
+Therefore, hinting is presently turned off
+"""
+
+import fontforge
+from sys import argv
+from buildutils import *
+
+scriptname = argv[0];
+argc = len( argv )
+
+if argc > 1:
+ for i in range( 1, argc ):
+ f = fontforge.open( argv[i] )
+ otfile = f.fontname + ".otf"
+ vstr = trim_version_str( f )
+ print "Generating OpenType file ", otfile, ' ', vstr
+ # Wanted to set to 'UniocdeBmp' if there were no high unicodes
+ # but all attemtps to determine that from Python failed.
+ f.encoding = 'UnicodeFull'
+ f.selection.all()
+ f.autoHint() # because without gasp table, small sizes ugly
+ f.generate( otfile, flags=('opentype','old-kern','round') )
+ f.close()
+else:
+ print "Usage: " + scriptname + " font.sfd [font.sfd ...]"
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/generate/TrueType b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/generate/TrueType
new file mode 100755
index 00000000000..1f6cc2f1500
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/generate/TrueType
@@ -0,0 +1,57 @@
+# vim: set filetype=python :
+__license__ = """
+This file is part of Gnu FreeFont.
+
+Gnu FreeFont 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 3 of the License, or (at your option) any later
+version.
+
+Gnu FreeFont 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
+Gnu FreeFont. If not, see <http://www.gnu.org/licenses/>.
+"""
+__author__ = "Stevan White"
+__email__ = "stevan.white@googlemail.com"
+__copyright__ = "Copyright 2009, 2010, 2012, Stevan White"
+__date__ = "$Date: 2012-04-21 18:47:22 +0200 (Sat, 21 Apr 2012) $"
+__version__ = "$Revision: 2231 $"
+__doc__ = """
+Convert fonts from FontForge's native SFD format to TrueType format
+First auto-hints whole font
+
+Old-style kern tables seem to be what is actually used by Windows and
+some Linux programs such as OpenOffice.
+
+According to the FAQ, need to pass Flags=(apple) to build Mac fonts.
+But this option seems to rule out old-style kern tables
+"""
+
+import fontforge
+import sys
+from buildutils import *
+
+scriptname = sys.argv[0];
+argc = len( sys.argv )
+
+if argc > 1:
+ for i in range( 1, argc ):
+ f = fontforge.open( sys.argv[i] )
+ ttfile = f.fontname + ".ttf"
+ vstr = trim_version_str( f )
+ print "Generating TrueType file ", ttfile, ' ', vstr
+ # Wanted to set to 'UniocdeBmp' if there were no high unicodes
+ # but all attemtps to determine that from Python failed.
+ f.encoding = 'UnicodeFull'
+
+ f.layers['Fore'].is_quadratic = True
+ f.selection.all()
+ f.autoHint()
+ f.autoInstr()
+ f.generate( ttfile, flags=('opentype','old-kern','no-hints') )
+ f.close()
+else:
+ print "Usage: " + scriptname + " font.sfd [font.sfd ...]"
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/generate/WOFF b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/generate/WOFF
new file mode 100755
index 00000000000..7a3a7902299
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/generate/WOFF
@@ -0,0 +1,174 @@
+# vim: set filetype=python :
+__license__ = """
+This file is part of Gnu FreeFont.
+
+Gnu FreeFont 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 3 of the License, or (at your option) any later
+version.
+
+Gnu FreeFont 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
+Gnu FreeFont. If not, see <http://www.gnu.org/licenses/>.
+"""
+__author__ = "Stevan White"
+__email__ = "stevan.white@googlemail.com"
+__copyright__ = "Copyright 2011, 2012, Stevan White"
+__date__ = "$Date: 2011-11-03 01:50:14 +0100 (Thu, 03 Nov 2011) $"
+__version__ = "$Revision: 1863 $"
+__doc__ = """
+Convert fonts from FontForge's native SFD format to Web Open Font Format (WOFF)
+First auto-hints whole font
+
+Mainly, this copies information out of the font's existing TT names strings,
+and uses them to generate XML information for the WOFF metadata.
+Then it just saves the file as *.woff.
+
+The settings should otherwise be like those for generic OpenType fonts.
+
+"""
+
+import fontforge
+import sys
+import xml.dom.minidom
+from buildutils import *
+
+scriptname = sys.argv[0];
+argc = len( sys.argv )
+
+class SFNT_name:
+ def __init__( self, lang, string ):
+ self.lang = lang
+ self.string = string
+
+def fontStrings2dict( font, lang_filter=None ):
+ sfnt_strings = {}
+ for n in font.sfnt_names:
+ if lang_filter:
+ if n[0].startswith( lang_filter ):
+ sfnt_strings[n[1]] = SFNT_name(n[0],n[2])
+ else:
+ sfnt_strings[n[1]] = SFNT_name(n[0],n[2])
+ return sfnt_strings
+
+def stripmeta( meta ):
+ lst = meta.split( '\n' )
+ nlst = []
+ for line in lst[1:-2]:
+ if line.startswith( '\t' ):
+ line = line[1:]
+ nlst.append( line )
+ return '\n'.join( nlst )
+
+def add_text_decorated_with_divs( doc, parent, text ):
+ for line in text.split( '\n' ):
+ if line:
+ div = doc.createElement( 'div' )
+ div.appendChild( doc.createTextNode( line ) )
+ parent.appendChild( div )
+
+def fontInfo2WOFFxml( font ):
+ sfnt_strings = fontStrings2dict( f, 'English' )
+ copyright = sfnt_strings['Copyright'].string
+ license = sfnt_strings['License'].string
+ licenseURL = sfnt_strings['License URL'].string
+ vendorURL = sfnt_strings['Vendor URL'].string
+ version = sfnt_strings['Version'].string
+ fontFamily = sfnt_strings['Family'].string
+ fontStyle = sfnt_strings['SubFamily'].string
+
+ doc = xml.dom.minidom.Document()
+ meta = doc.createElement( 'metadata' )
+ doc.appendChild( meta )
+ # <uniqueid id="org.gnu.freefont.freeserif.1877" />
+ elt = doc.createElement( 'uniqueid' )
+
+ version_prefix = 'Revision: '
+ if version.startswith( version_prefix ):
+ revision = version[len(version_prefix):]
+ else:
+ revision = version
+
+ elt.setAttribute( 'id', 'org.gnu.freefont.' + fontFamily + '.'
+ + fontStyle + '.' + revision )
+ meta.appendChild( elt )
+
+ # <vendor name="Font Vendor" url="https://savannah.gnu.org/projects/freefont/" />
+ elt = doc.createElement( 'vendor' )
+ elt.setAttribute( 'name', 'Font Vendor' )
+ elt.setAttribute( 'url', vendorURL )
+ meta.appendChild( elt )
+ # <credits>
+ # <credit name="Font Designer"
+ # url="https://savannah.gnu.org/projects/freefont/" />
+ # </credits>
+ elt_credits = doc.createElement( 'credits' )
+ elt = doc.createElement( 'credit' )
+ elt.setAttribute( 'name', 'Font Designer' )
+ elt.setAttribute( 'url', vendorURL )
+ elt_credits.appendChild( elt )
+ meta.appendChild( elt_credits )
+ #<description>
+ # <text xml:lang="en">
+ # FreeSerif-Medium is a member of the GNU FreeFont font family.
+ # </text>
+ #</description>
+ elt_description = doc.createElement( 'description' )
+ elt = doc.createElement( 'text' )
+ elt.setAttribute( 'xml:lang', 'en' )
+ text = doc.createTextNode( fontFamily + '-' + fontStyle
+ + " is a member of the GNU FreeFont font family.")
+ elt.appendChild( text )
+ elt_description.appendChild( elt )
+ meta.appendChild( elt_description )
+ #<license url="http://www.gnu.org/copyleft/gpl.html"
+ # id="fontvendor-Web-corporate-v2">
+ # <text xml:lang="en">
+ # ...
+ elt_license = doc.createElement( 'license' )
+ elt_license.setAttribute( 'url', licenseURL )
+ elt = doc.createElement( 'text' )
+ elt.setAttribute( 'xml:lang', 'en' )
+ add_text_decorated_with_divs( doc, elt, license )
+ elt_license.appendChild( elt )
+ meta.appendChild( elt_license )
+ #<copyright>
+ #<text xml:lang="en">Copyright &#x0089;2002, 2003, 2005, 2008, 2009, 2010, 2011 GNU Freefont contributors.</text>
+ #</copyright>
+ elt_copyright = doc.createElement( 'copyright' )
+ elt = doc.createElement( 'text' )
+ elt.setAttribute( 'xml:lang', 'en' )
+ elt.appendChild( doc.createTextNode( copyright ) )
+ elt_copyright.appendChild( elt )
+ meta.appendChild( elt_copyright )
+ strrep = meta.toprettyxml()
+
+ return stripmeta( strrep )
+
+if argc > 1:
+ for i in range( 1, argc ):
+ f = fontforge.open( sys.argv[i] )
+ woff_file = f.fontname + ".woff"
+ vstr = trim_version_str( f )
+ print "Generating WOFF file ", woff_file, ' ', vstr
+ # Wanted to set to 'UniocdeBmp' if there were no high unicodes
+ # but all attemtps to determine that from Python failed.
+ f.encoding = 'UnicodeFull'
+ f.layers['Fore'].is_quadratic = True
+ f.selection.all()
+ f.autoHint()
+ f.autoInstr()
+ # Copy copyright info etc from the tt tables into the
+ # WOFF XML section.
+ xml = fontInfo2WOFFxml( f )
+ f.woffMajor = 1
+ f.woffMajor = 0
+ f.woffMetadata = xml
+ #f.generate( woff_file, flags=('opentype','round') )
+ f.generate( woff_file, flags=('opentype','no-hints') )
+ f.close()
+else:
+ print "Usage: " + scriptname + " font.sfd [font.sfd ...]"
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/generate/buildutils.py b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/generate/buildutils.py
new file mode 100644
index 00000000000..c723e056e59
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/generate/buildutils.py
@@ -0,0 +1,46 @@
+__license__ = """
+This file is part of Gnu FreeFont.
+
+Gnu FreeFont 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 3 of the License, or (at your option) any later
+version.
+
+Gnu FreeFont 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
+Gnu FreeFont. If not, see <http://www.gnu.org/licenses/>.
+"""
+__author__ = "Stevan White"
+__email__ = "stevan.white@googlemail.com"
+__copyright__ = "Copyright 2011, 2012, Stevan White"
+__date__ = "$Date: 2012-04-24 13:10:12 +0200 (Tue, 24 Apr 2012) $"
+__version__ = "$Revision: 2246 $"
+__doc__ = """
+Common tools used by the generate scripts.
+"""
+
+import re
+
+_re_vstr = re.compile( '\$Revision: (\d*)\s*\$(.*)' )
+
+def trim_version_str( font ):
+ """ SVN automatically puts a revision number between dollar signs
+ in the sfd file's Version string.
+ However the OpenType standard recommends
+ Version n.m
+ Where n and m are decimal numbers.
+ """
+ vstr_match = _re_vstr.match( font.version )
+ ot_stdized = ''
+ if vstr_match:
+ trimmed = vstr_match.group( 1 )
+ rest = vstr_match.group( 2 )
+ otstdized = '0412.' + trimmed + rest
+ font.version = otstdized
+ #font.appendSFNTName( n[0], n[1], otstdized )
+ return trimmed
+ return otstdized
+
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/generate/buildutils.pyc b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/generate/buildutils.pyc
new file mode 100644
index 00000000000..ff501eccdcb
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/generate/buildutils.pyc
Binary files differ
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/report/OS2UnicodeRange b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/report/OS2UnicodeRange
new file mode 100755
index 00000000000..486609578e8
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/report/OS2UnicodeRange
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Needs George Williams' showttf
+for FILE in Free*.ttf
+do
+ printf "%-23s" $FILE
+ showttf $FILE | grep -a UnicodeRange
+done \ No newline at end of file
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/report/OpenType/UnicodeRanges.py b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/report/OpenType/UnicodeRanges.py
new file mode 100644
index 00000000000..937709630a7
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/report/OpenType/UnicodeRanges.py
@@ -0,0 +1,567 @@
+__license__ = """
+This file is part of Gnu FreeFont.
+
+Gnu FreeFont 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 3 of the License, or (at your option) any later
+version.
+
+Gnu FreeFont 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
+Gnu FreeFont. If not, see <http://www.gnu.org/licenses/>.
+"""
+__author__ = "Stevan White"
+__email__ = "stevan.white@googlemail.com"
+__copyright__ = "Copyright 2009, 2010, 2011, Stevan White"
+__date__ = "$Date: 2012-04-22 13:43:44 +0200 (Sun, 22 Apr 2012) $"
+__version__ = "$Revision: 2238 $"
+
+__doc__ = """
+Encodes the correspondence between Unicode code intervals
+and the script support field 'ulUnicodeRange' of OpenType fonts.
+
+A Unicode script range, such as Greek, is not an unbroken list of
+characters, but rather several "intervals" of defined characters,
+broken by undefined or reserved character slots.
+
+OpenType contains an attempt to report whether a given font supports
+a certain range of Unicode, e.g. Greek or Kanji. This was done using
+a bit mask, with (roughly) one bit for each range.
+
+This is complicated by:
+ 1) some ranges overlap, or have other interactions
+ A) Greek and Coptic are not completely distinct
+ B) Accent ranges are often used by several scripts
+ C) FontForge has the occasional bug in its internal
+ notion of Unicode ranges
+ 2) What is meant by "support"? Is it enough to have a single
+ glyph in a range, to say it is supported?
+ 3) both Unicode and OpenType are in a state of flux
+
+See
+
+Roadmap tf the BMP
+http://www.unicode.org/roadmaps/bmp/
+
+The intervals are partly just the assigned interval, but often I have
+listed the ranges that have characters assigned to them.
+
+OpenType standard: OS/2 and Windows Metrics
+http://www.microsoft.com/typography/otspec/os2.htm
+
+Apple Developer: The TrueType Font File
+http://developer.apple.com/fonts/TTRefMan/RM06/Chap6.html
+Says 128 bits are split into 96 and 32 bits.
+96 is Unicode block, 32 for script sets...
+
+Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification
+http://www.w3.org/TR/CSS2/
+"""
+
+class interval:
+ def __init__( self, begin, end ):
+ self.begin = begin
+ self.end = end
+
+ def len( self ):
+ return 1 + self.end - self.begin
+
+ def __str__( self ):
+ return '[' + str( self.begin ) + ',' + str( self.end ) + ']'
+
+ def contains( self, val ):
+ return val <= self.end and val >= self.begin
+
+# NOTE the OpenType spec is much more thorough
+ulUnicodeRange = [
+[0, 'Basic Latin', [interval(0,1), # Nul character, mapped to notdef
+ # and .nul; required by TrueType
+ interval(0x0d, 0x0d), # non-marking return
+ interval(0x20, 0x7E)] ], # Latin range
+[1, 'Latin-1 Supplement',[interval(0xA0, 0xFF)] ],
+[2, 'Latin Extended-A', [interval(0x0100, 0x017F)] ],
+[3, 'Latin Extended-B', [interval(0x0180, 0x024F)]],
+[4, 'IPA and Phonetic Extensions', [interval(0x0250, 0x02AF),
+ interval(0x1D00, 0x1D7F), # Phonetic Extensions
+ interval(0x1D80, 0x1DBF) # Phonetic Extensions S.
+ ]],
+[5, 'Spacing Modifier Letters', [interval(0x02B0, 0x02FF),
+ interval(0xA700, 0xA71F) # Modifier Tone Letters
+ ]],
+[6, 'Combining Diacritical Marks (+suppl.)', [interval(0x0300, 0x036F),
+ interval(0x1DC0, 0x1DE6), # Supplement
+ interval(0x1DFC, 0x1DFF) # Supplement
+ ] ],
+[7, 'Greek and Coptic', [interval(0x0370, 0x0377),
+ interval(0x037A, 0x037E),
+ interval(0x0384, 0x038A),
+ interval(0x038C, 0x038C),
+ interval(0x038E, 0x03A1),
+ interval(0x03A3, 0x03FF)
+ ] ],
+[8, 'Coptic', [interval(0x2C80, 0x2CFF)]],
+[9, 'Cyrillic (+suppl., +ext.-A, -B)', [
+ interval(0x0400, 0x04FF), # Cyrillic
+ interval(0x0500, 0x0527), # Cyrillic Supplement
+ interval(0x2DE0, 0x2DFF), # Cyrillic Extended-A
+ interval(0xA640, 0xA673), # Cyrillic Extended-B
+ interval(0xA67C, 0xA697)
+ ]
+ ],
+[10, 'Armenian', [interval(0x0531, 0x0556),
+ interval(0x0559, 0x055F),
+ interval(0x0561, 0x0587),
+ interval(0x0589, 0x058A),
+ interval(0x058F, 0x058F)
+ ]
+ ],
+[11, 'Hebrew', [
+ interval(0x0591, 0x05C7),
+ interval(0x05D0, 0x05EA),
+ interval(0x05F0, 0x05F4)
+ # See also Alphabetic Presentation Forms
+ ]],
+[12, 'Vai', [interval(0xA500, 0xA62B),
+ ]],
+[13, 'Arabic (+suppl.)', [interval(0x0600, 0x0603),
+ interval(0x0606, 0x061B),
+ interval(0x061E, 0x06FF),
+ interval(0x0750, 0x077F) # Supplement
+ ]
+ ],
+[14, "N'Ko", [interval(0x07C0, 0x07FF)]],
+[15, 'Devanagari (+ext.)', [ interval(0x0900, 0x0977),
+ interval(0x0979, 0x097F),
+ interval(0xA8E0, 0xA8FB) # Extended
+ ]],
+[16, 'Bengali', [interval(0x0981, 0x0983),
+ interval(0x0985, 0x098C),
+ interval(0x098F, 0x0990),
+ interval(0x0993, 0x09A8),
+ interval(0x09AA, 0x09B0),
+ interval(0x09B2, 0x09B2),
+ interval(0x09B6, 0x09B9),
+ interval(0x09BC, 0x09C4),
+ interval(0x09C7, 0x09C8),
+ interval(0x09CB, 0x09CE),
+ interval(0x09D7, 0x09D7),
+ interval(0x09DC, 0x09DD),
+ interval(0x09DF, 0x09E3),
+ interval(0x09E6, 0x09FB),
+ ]],
+[17, 'Gurmukhi', [interval(0x0A01, 0x0A03),
+ interval(0x0A05, 0x0A0A),
+ interval(0x0A0F, 0x0A10),
+ interval(0x0A13, 0x0A28),
+ interval(0x0A2A, 0x0A30),
+ interval(0x0A32, 0x0A33),
+ interval(0x0A35, 0x0A36),
+ interval(0x0A38, 0x0A39),
+ interval(0x0A3C, 0x0A3C),
+ interval(0x0A3E, 0x0A42),
+ interval(0x0A47, 0x0A48),
+ interval(0x0A4B, 0x0A4D),
+ interval(0x0A51, 0x0A51),
+ interval(0x0A59, 0x0A5C),
+ interval(0x0A5E, 0x0A5E),
+ interval(0x0A66, 0x0A75),
+ ]],
+[18, 'Gujarati', [interval(0x0A81, 0x0A83),
+ interval(0x0A85, 0x0A8D),
+ interval(0x0A8F, 0x0A91),
+ interval(0x0A93, 0x0AA8),
+ interval(0x0AAA, 0x0AB0),
+ interval(0x0AB2, 0x0AB3),
+ interval(0x0AB5, 0x0AB9),
+ interval(0x0ABC, 0x0AC5),
+ interval(0x0AC7, 0x0AC9),
+ interval(0x0ACB, 0x0ACD),
+ interval(0x0AD0, 0x0AD0),
+ interval(0x0AE0, 0x0AE3),
+ interval(0x0AE6, 0x0AEF),
+ interval(0x0AF0, 0x0AF1)
+ ]],
+[19, 'Oriya', [interval(0x0B01, 0x0B03),
+ interval(0x0B05, 0x0B0C),
+ interval(0x0B0F, 0x0B10),
+ interval(0x0B13, 0x0B28),
+ interval(0x0B2A, 0x0B30),
+ interval(0x0B32, 0x0B33),
+ interval(0x0B35, 0x0B39),
+ interval(0x0B3C, 0x0B44),
+ interval(0x0B47, 0x0B48),
+ interval(0x0B4B, 0x0B4D),
+ interval(0x0B56, 0x0B57),
+ interval(0x0B5C, 0x0B5D),
+ interval(0x0B5F, 0x0B63),
+ interval(0x0B66, 0x0B77),
+ ]],
+[20, 'Tamil', [interval(0x0B82, 0x0B83),
+ interval(0x0B85, 0x0B8A),
+ interval(0x0B8E, 0x0B90),
+ interval(0x0B92, 0x0B95),
+ interval(0x0B99, 0x0B9A),
+ interval(0x0B9C, 0x0B9C),
+ interval(0x0B9E, 0x0B9F),
+ interval(0x0BA3, 0x0BA4),
+ interval(0x0BA8, 0x0BAA),
+ interval(0x0BAE, 0x0BB9),
+ interval(0x0BBE, 0x0BC2),
+ interval(0x0BC6, 0x0BC8),
+ interval(0x0BCA, 0x0BCD),
+ interval(0x0BD0, 0x0BD0),
+ interval(0x0BD7, 0x0BD7),
+ interval(0x0BE6, 0x0BFA)
+ ]],
+[21, 'Telugu', [interval(0x0C01, 0x0C03),
+ interval(0x0C05, 0x0C0C),
+ interval(0x0C0E, 0x0C11),
+ interval(0x0C12, 0x0C28),
+ interval(0x0C2A, 0x0C33),
+ interval(0x0C35, 0x0C39),
+ interval(0x0C3d, 0x0C44),
+ interval(0x0C46, 0x0C48),
+ interval(0x0C4a, 0x0C4d),
+ interval(0x0C55, 0x0C56),
+ interval(0x0C58, 0x0C59),
+ interval(0x0C60, 0x0C63),
+ interval(0x0C66, 0x0C6f),
+ interval(0x0C78, 0x0C7f),
+ ]
+ ],
+[22, 'Kannada', [interval(0x0C82, 0x0C83),
+ interval(0x0C85, 0x0C8C),
+ interval(0x0C8E, 0x0C90),
+ interval(0x0C92, 0x0CA8),
+ interval(0x0CAA, 0x0CB3),
+ interval(0x0CB5, 0x0CB9),
+ interval(0x0CBC, 0x0CC4),
+ interval(0x0CC6, 0x0CC8),
+ interval(0x0CCA, 0x0CCD),
+ interval(0x0CD5, 0x0CD6),
+ interval(0x0CDE, 0x0CDE),
+ interval(0x0CE0, 0x0CE3),
+ interval(0x0CE6, 0x0CEF),
+ interval(0x0CF1, 0x0CF2),
+ ]],
+[23, 'Malayalam', [interval(0x0D02, 0x0D03),
+ interval(0x0D05, 0x0D0C),
+ interval(0x0D0E, 0x0D10),
+ interval(0x0D12, 0x0D3A),
+ interval(0x0D3D, 0x0D44),
+ interval(0x0D46, 0x0D48),
+ interval(0x0D4A, 0x0D4E),
+ interval(0x0D57, 0x0D57),
+ interval(0x0D60, 0x0D63),
+ interval(0x0D66, 0x0D75),
+ interval(0x0D79, 0x0D7F),
+ ]],
+[24, 'Thai', [interval(0x0E01, 0x0E3A),
+ interval(0x0E3F, 0x0E5B)
+ ]
+ ],
+[25, 'Lao', [interval(0x0E80, 0x0EFF)]],
+[26, 'Georgian (+suppl.)', [
+ interval(0x10A0, 0x10C5),
+ interval(0x10D0, 0x10FC),
+ interval(0x2D00, 0x2D25) # Supplement
+ ]],
+[27, 'Balinese', [interval(0x1B00, 0x1B7F)]],
+# 'Batak', [interval(0x1BC0, 0x1BFF)]],
+[28, 'Hangul Jamo', [interval(0x1100, 0x11FF)]],
+[29, 'Latin Extended (Additional,C,D)', [
+ interval(0x1E00, 0x1EFF), # Additional
+ interval(0x2C60, 0x2C7F), # C
+ interval(0xA720, 0xA78E), # D
+ interval(0xA790, 0xA793), # D
+ interval(0xA7A0, 0xA7AA), # D
+ interval(0xA7F8, 0xA7FF) # D
+ ]],
+[30, 'Greek Extended', [interval(0x1F00, 0x1F15),
+ interval(0x1F18, 0x1F1D),
+ interval(0x1F20, 0x1F45),
+ interval(0x1F48, 0x1F4D),
+ interval(0x1F50, 0x1F57),
+ interval(0x1F59, 0x1F59),
+ interval(0x1F5B, 0x1F5B),
+ interval(0x1F5D, 0x1F5D),
+ interval(0x1F5F, 0x1F7D),
+ interval(0x1F80, 0x1FB4),
+ interval(0x1FB6, 0x1FC4),
+ interval(0x1FC6, 0x1FD3),
+ interval(0x1FD6, 0x1FDB),
+ interval(0x1FDD, 0x1FEF),
+ interval(0x1FF2, 0x1FF4),
+ interval(0x1FF6, 0x1FFE)
+ ]],
+[31, 'General Punctuation (+suppl.)', [interval(0x2000, 0x2064),
+ # interval(0x206A, 0x206F), # deprecated
+ interval(0x2E00, 0x2E31), # Supplemental
+ ]],
+[32, 'Superscripts and Subscripts', [interval(0x2070, 0x2071),
+ interval(0x2074, 0x208E),
+ interval(0x2090, 0x2094)
+ ]
+ ],
+[33, 'Currency Symbols', [interval(0x20A0, 0x20B9)]],
+[34, 'Combining Diacritical Marks for Symbols', [interval(0x20D0, 0x20F0)]],
+[35, 'Letterlike Symbols', [interval(0x2100, 0x214F)]],
+[36, 'Number Forms', [interval(0x2150, 0x2189)]],
+[37, 'Arrows (+suppl.)', [interval(0x2190, 0x21FF),
+ interval(0x27F0, 0x27FF), # Supplemental Arrows-A
+ interval(0x2900, 0x297F), # Supplemental Arrows-B
+ interval(0x2B00, 0x2B4C), # Miscellaneous Symbols and Arrows
+ interval(0x2B40, 0x2BF9) # "
+ ]],
+[38, 'Mathematical Operators', [
+ interval(0x2200, 0x22FF),
+ interval(0x2A00, 0x2AFF), # Supplemental Mathematical Operators
+ interval(0x27C0, 0x27CA), # Miscellaneous Mathematical Symbols-A
+ interval(0x27CC, 0x27CC),
+ interval(0x27CE, 0x27EF),
+ interval(0x2980, 0x29FF) # Miscellaneous Mathematical Symbols-B
+ ]
+ ],
+[39, 'Miscellaneous Technical', [interval(0x2300, 0x23E7)]],
+[40, 'Control Pictures', [interval(0x2400, 0x2426)]],
+[41, 'Optical Character Recognition', [interval(0x2440, 0x244A)]],
+[42, 'Enclosed Alphanumerics', [interval(0x2460, 0x24FF)]],
+[43, 'Box Drawing', [interval(0x2500, 0x257F)]],
+[44, 'Block Elements', [interval(0x2580, 0x259F)]],
+[45, 'Geometric Shapes', [interval(0x25A0, 0x25FF)]],
+[46, 'Miscellaneous Symbols', [
+ interval(0x2600, 0x26FF),
+ ]
+ ],
+[47, 'Dingbats', [interval(0x2701, 0x27BF),
+ ]],
+[48, 'CJK Symbols and Punctuation', [interval(0x3000, 0x303F)]],
+[49, 'Hiragana', [interval(0x3040, 0x309F)]],
+[50, 'Katakana', [interval(0x30A0, 0x30FF)]],
+[51, 'Bopomofo', [interval(0x3100, 0x312F)]],
+[52, 'Hangul Compatibility Jamo', [interval(0x3130, 0x318F)]],
+[53, 'Kanbun', [interval(0x3190, 0x319F)]], # was CJK Miscellaneous
+[54, 'Enclosed CJK Letters and Months', [interval(0x3200, 0x32FF)]],
+[55, 'CJK Compatibility', [interval(0x3300, 0x33FF)]],
+# 'Lisu', [interval(0xA4D0, 0xA4FF)]],
+[56, 'Hangul Syallables', [interval(0xAC00, 0xD7A3)]],
+[57, 'Non-Plane 0', [interval(0xD800, 0xDFFF)]],
+[58, 'Phoenician', [interval(0x10900, 0x1091B),
+ interval(0x1091F, 0x1091F)], True],
+[59, 'CJK Unified Ideographs', [interval(0x4E00, 0x9FFF)]], #FIXME complex
+# Meetai Mayek ABC0 ABFF
+[60, 'Private Use Area', [interval(0xE000, 0xF8FF)]],
+[61, 'CJK Compatibility Ideographs', [interval(0xF900, 0xFAFF)]],
+[62, 'Alphabetic Presentation Forms', [
+ interval(0xFB00, 0xFB06),
+ interval(0xFB13, 0xFB17),
+ interval(0xFB1D, 0xFB36),
+ interval(0xFB38, 0xFB3C),
+ interval(0xFB3E, 0xFB3E),
+ interval(0xFB40, 0xFB41),
+ interval(0xFB43, 0xFB44),
+ interval(0xFB46, 0xFB4F),
+ ]],
+[63, 'Arabic Presentation Forms-A', [interval(0xFB50, 0xFBC1),
+ interval(0xFBD3, 0xFD3F),
+ interval(0xFD50, 0xFD8F),
+ interval(0xFD92, 0xFDC7),
+ interval(0xFDF0, 0xFDFD)
+ ]
+ ],
+[64, 'Combining Half Marks', [interval(0xFE20, 0xFE26)]],
+[65, 'CJK Compatibility Forms', [interval(0xFE10, 0xFE1F), # Vertical forms
+ interval(0xFE30, 0xFE4F) # Compatability forms
+ ]],
+[66, 'Small Form Variants', [interval(0xFE50, 0xFE52),
+ interval(0xFE54, 0xFE66),
+ interval(0xFE68, 0xFE6B)
+ ]
+ ],
+[67, 'Arabic Presentation Forms-B', [interval(0xFE70, 0xFE74),
+ interval(0xFE76, 0xFEFC),
+ interval(0xFEFF, 0xFEFF)
+ ]
+ ],
+[68, 'Halfwidth and Fullwidth Forms', [interval(0xFF00, 0xFFEF)]],
+[69, 'Specials', [interval(0xFFF9, 0xFFFD)]],
+[70, 'Tibetan', [interval(0x0F00, 0x0FFF)]],
+[71, 'Syriac', [interval(0x0700, 0x070D),
+ interval(0x070F, 0x074A),
+ interval(0x074D, 0x074F)
+ ]],
+[72, 'Thaana', [interval(0x0780, 0x07B1)]],
+[73, 'Sinhala', [interval(0x0D82, 0x0D83),
+ interval(0x0D85, 0x0D96),
+ interval(0x0D9A, 0x0DB1),
+ interval(0x0DB3, 0x0DBB),
+ interval(0x0DBD, 0x0DBD),
+ interval(0x0DC0, 0x0DC6),
+ interval(0x0DCA, 0x0DCA),
+ interval(0x0DCF, 0x0DD4),
+ interval(0x0DD6, 0x0DD6),
+ interval(0x0DD8, 0x0DDF),
+ interval(0x0DF2, 0x0DF4)]],
+[74, 'Myanmar', [interval(0x1000, 0x109F)]],
+[75, 'Ethiopic (+suppl., +ext.)', [
+ interval(0x1200, 0x1248),
+ interval(0x124A, 0x124D),
+ interval(0x1250, 0x1256),
+ interval(0x1258, 0x1258),
+ interval(0x125A, 0x125D),
+ interval(0x1260, 0x1288),
+ interval(0x128A, 0x128D),
+ interval(0x1290, 0x12B0),
+ interval(0x12B2, 0x12B5),
+ interval(0x12B8, 0x12BE),
+ interval(0x12C0, 0x12C0), # page 2
+ interval(0x12C2, 0x12C5),
+ interval(0x12C8, 0x12D6),
+ interval(0x12D8, 0x1310),
+ interval(0x1312, 0x1315),
+ interval(0x1318, 0x135A),
+ interval(0x135F, 0x137C),
+ interval(0x1380, 0x139F), # supplement
+ interval(0x2D80, 0x2DDF) # extended
+ ]
+ ],
+[76, 'Cherokee', [interval(0x13A0, 0x13F4)]],
+[77, 'Unified Canadian Aboriginal Syllabics',
+ [interval(0x1400, 0x167F),
+ interval(0x18B0, 0x18F5) # UCAS Extended
+ ]
+ ],
+[78, 'Ogham', [interval(0x1680, 0x169F)]],
+[79, 'Runic', [interval(0x16A0, 0x16F0)]],
+[80, 'Khmer (+symbols)', [interval(0x1780, 0x17FF),
+ interval(0x19E0, 0x19FF) # symbols
+ ]],
+[81, 'Mongolian', [interval(0x1800, 0x18AF)]], #FIXME ranges
+[82, 'Braille Patterns', [interval(0x2800, 0x28FF)]],
+[83, 'Yi Syllables, Radicals', [interval(0xA000, 0xA0EF),
+ interval(0xA490, 0xA4CF)]
+ ],
+[84, 'Tagalog Hanunoo Buhid Tagbanwa',
+ [interval(0x1700, 0x1714),
+ interval(0x1720, 0x1736),
+ interval(0x1740, 0x1753),
+ interval(0x1750, 0x1773)
+ ]
+ ],
+[85, 'Old Italic', [interval(0x10300, 0x1031E),
+ interval(0x10320, 0x10323)
+ ], True],
+[86, 'Gothic', [interval(0x10330, 0x1034A)], True],
+[87, 'Deseret', [interval(0x10400, 0x1044F)], True],
+#'Karoshthi', [interval(0x10A00, 0x10A5F)], True],
+#'Kaithi', [interval(0x11080, 0x110C1)], True],
+#'Sora Sompeng', [interval(0x110D0, 0x110F0)], True],
+#'Chakma', [interval(0x11100, 0x1114F)], True],
+#'Sharada', [interval(0x11180, 0x111DF)], True],
+#'Takri', [interval(0x11680, 0x116CF)], True],
+#'Miao', [interval(0x16F00, 0x16F9F)], True],
+[88, 'Byzantine &amp; Western Musical Symbols', [interval(0x1D000, 0x1D0F5),
+ interval(0x1D100, 0x1D126),
+ interval(0x1D129, 0x1D1DD)
+ ], True],
+[89, 'Mathematical Alphanumeric Symbols', [interval(0x1D400, 0x1D454),
+ interval(0x1D456, 0x1D49C),
+ interval(0x1D49E, 0x1D49F),
+ interval(0x1D4A2, 0x1D4A2),
+ interval(0x1D4A5, 0x1D4A6),
+ interval(0x1D4A9, 0x1D4AC),
+ interval(0x1D4AE, 0x1D4B9),
+ interval(0x1D4BB, 0x1D4BB),
+ interval(0x1D4BD, 0x1D4C3),
+ interval(0x1D4C5, 0x1D4FF),
+ interval(0x1D500, 0x1D505), # page 2
+ interval(0x1D507, 0x1D50A),
+ interval(0x1D50D, 0x1D514),
+ interval(0x1D516, 0x1D51C),
+ interval(0x1D51E, 0x1D539),
+ interval(0x1D53B, 0x1D53E),
+ interval(0x1D540, 0x1D544),
+ interval(0x1D546, 0x1D546),
+ interval(0x1D54A, 0x1D550),
+ interval(0x1D552, 0x1D5FF),
+ interval(0x1D600, 0x1D6A5), # page 3
+ interval(0x1D6A8, 0x1D6FF),
+ interval(0x1D700, 0x1D7CB), # page 4
+ interval(0x1D7CE, 0x1D7FF),
+ ], True],
+[90, 'Private Use (plane 15,16)', [
+ interval(0xFF000, 0xFFFFD), # plane 15
+ interval(0x100000, 0x10FFFD) # plane 16
+ ], True],
+[91, 'Variation Selectors (+suppl.)', [interval(0xFE00, 0xFE0F),
+ interval(0xE0100, 0xE01EF) # supplement
+ ], True],
+[92, 'Tags', [interval(0xE0000, 0xE01EF)], True],
+[93, 'Limbu', [interval(0x1900, 0x194F)]],
+[94, 'Tai Le', [interval(0x1950, 0x196D),
+ interval(0x1970, 0x1974)
+ ]],
+[95, 'New Tai Lue', [interval(0x1980, 0x19DF)]],
+[96, 'Buginese', [interval(0x1A00, 0x1A1B),
+ interval(0x1A1E, 0x1A1F)]],
+[97, 'Glagolitic', [ interval(0x2C00, 0x2C2E),
+ interval(0x2C30, 0x2C5E) ]],
+[98, 'Tifinagh', [interval(0x2D30, 0x2D67),
+ interval(0x2D6F, 0x2D6F)
+ ]],
+[99, 'Yijing Hexagram Symbols', [interval(0x4DC0, 0x4DFF)]],
+[100, 'Syloti Nagri', [interval(0xA800, 0xA82F)]],
+[101, 'Linear B Syllabary etc', [interval(0x10000, 0x1013F)], True],
+[102, 'Ancient Greek Numbers', [interval(0x10140, 0x1018F)], True],
+[103, 'Ugaritic', [interval(0x10380, 0x1039D),
+ interval(0x1039F, 0x1039F)
+ ], True],
+[104, 'Old Persian', [interval(0x103A0, 0x103C3),
+ interval(0x103C8, 0x103D6),
+ ], True],
+[105, 'Shavian', [interval(0x10450, 0x1047F)], True],
+[106, 'Osmanya', [interval(0x10480, 0x104AF)], True],
+[107, 'Cypriot Syllabary', [interval(0x10800, 0x1083F)], True],
+[108, 'Kharoshthi', [interval(0x10A00, 0x10A5F)], True],
+[109, 'Tai Xuan Jing Symbols', [interval(0x1D300, 0x1D35F)], True],
+[110, 'Cuneiform (+numbers)', [interval(0x12000, 0x1247F)], True],
+[111, 'Counting Rod Numerals', [interval(0x1D360, 0x1D37F)], True],
+[112, 'Sundanese', [interval(0x1B80, 0x1BAA),
+ interval(0x1BAE, 0x1BB9)
+ ]],
+[113, 'Lepcha', [interval(0x1C00, 0x1C4F)]], # FIXME
+[114, 'Ol Chiki', [interval(0x1C50, 0x1C7F)]],
+[115, 'Saurashtra', [interval(0xA880, 0xA8C4),
+ interval(0xA8CE, 0xA8D9)
+ ]],
+[116, 'Kayah Li', [interval(0xA900, 0xA92F)]],
+[117, 'Rejang', [interval(0xA930, 0xA953),
+ interval(0xA95F, 0xA95F)
+ ]],
+[118, 'Cham', [interval(0xAA00, 0xAA5F)]], #FIXME more complex
+[119, 'Ancient Symbols', [interval(0x10190, 0x101CF)], True],
+[120, 'Phaistos Disc', [interval(0x101D0, 0x101FF)], True],
+[121, 'Carian, Lycian, Lydian', [interval(0x102A0, 0x102D0), #Carian
+ interval(0x10280, 0x1029C), # Lycian
+ interval(0x10920, 0x10939), # Lydian
+ interval(0x1093F, 0x1093F)
+ ], True],
+[122, 'Domino and Mahjong Tiles', [
+ interval(0x1F000, 0x1F02B), # Mahjong
+ interval(0x1F030, 0x1F093) # Domino
+ ], True],
+#[123-127, 'Reserved for process-internal usage', []]
+]
+
+
+def codepointIsInSomeRange( encoding ):
+ for ulr in ulUnicodeRange:
+ ranges = ulr[2]
+ for r in ranges:
+ if r.contains( encoding ):
+ return True
+ return False
+
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/report/OpenType/__init__.py b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/report/OpenType/__init__.py
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/report/OpenType/__init__.py
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/report/kernclasses.py b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/report/kernclasses.py
new file mode 100755
index 00000000000..4eccc4c9d7f
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/report/kernclasses.py
@@ -0,0 +1,169 @@
+#!/usr/bin/fontforge -script
+
+__author__ = "Stevan White <stevan.white@googlemail.com>"
+
+import fontforge
+import sys
+from OpenType.UnicodeRanges import *
+
+def get_kern_subtables( font ):
+ try:
+ tables = []
+ for lookup in font.gpos_lookups:
+ if font.getLookupInfo( lookup )[0] == 'gpos_pair':
+ sts = font.getLookupSubtables( lookup )
+ for st in sts:
+ if font.isKerningClass( st ):
+ tables.append( st )
+ return tables
+ except EnvironmentError, ( e ):
+ print >> sys.stderr, 'EnvironmentError ' + str( e )
+ except TypeError, ( t ):
+ print >> sys.stderr, 'TypeError ' + str( t )
+ return None
+preamble = """
+<html>
+<head>
+<style type="text/css">
+ .nonexistent { background-color: red; }
+ td { text-align: right; font-family: inherit; }
+ .I td { font-style: italic; }
+ .B td { font-weight: bold; }
+ .BI td { font-weight: bold; font-style: italic; }
+ td { line-height: 1; }
+ .classes td { text-align: left; vertical-align: top; }
+ td span { font-weight: normal; font-style: normal; font-size: smaller; color: lime; }
+ td span.pos { color: magenta; }
+ td.zero { color: gray; }
+</style>
+</head>
+<body>
+"""
+postamble="""
+</body>
+</html>
+"""
+
+def print_kerns( fontPath ):
+ font = fontforge.open( fontPath )
+ print '<h2>Kerning classes in ' + font.fontname + '</h2>'
+ weight = ''
+ if font.os2_weight > 500:
+ weight = 'B'
+ style = ''
+ if font.italicangle < 0.0:
+ style = 'I'
+ print '<div style="font-family: ' + font.familyname + '" ' \
+ + 'class="' + weight + style + '">'
+ subtables = get_kern_subtables( font )
+ for st in subtables:
+ print '<h3>Subtable ' + st + '</h3>'
+ printKernsOfSubtable( font, st )
+ print '</div>'
+ sys.stdout.flush()
+
+def printKernsOfSubtable( font, subtable ):
+ kclass = font.getKerningClass( subtable )
+ n = 0
+ leftclasses = kclass[0]
+ rightclasses = kclass[1]
+ kerns = kclass[2]
+ nr = len( rightclasses )
+ print '<table class="classes"><tr>'
+ print '<th>left classes: </th>'
+ print '<th>right classes: </th>'
+ print '<tr><td>'
+ for lc in leftclasses:
+ if lc:
+ for c in lc:
+ printentity( font, c )
+ print "<br />"
+ print "</td>"
+ print "<td>"
+ for rc in rightclasses:
+ if rc:
+ for c in rc:
+ printentity( font, c )
+ print "<br />"
+ print "</td>"
+ print "</tr>"
+ print "</table>"
+ print "<table>"
+ print "<tr>"
+ print "<th></th>"
+ for rc in rightclasses:
+ if rc:
+ sys.stdout.write( "<th>" )
+ printentity( font, rc[0] )
+ sys.stdout.write( "</th>" )
+ print "</tr>"
+ for lc in leftclasses:
+ m = 0
+ if lc:
+ print "<tr>"
+ sys.stdout.write( "<th>" )
+ printentity( font, lc[0] )
+ sys.stdout.write( "</th>" )
+ for rc in rightclasses:
+ kern = kerns[ n * nr + m ]
+ if rc:
+ ccolor = ''
+ ncolor = ''
+ if kern > 0:
+ ncolor = ' class="pos"'
+ if kern == 0:
+ ccolor = ' class="zero"'
+ sys.stdout.write( '<td' + ccolor + '><span' + ncolor + '>' )
+ if kern == 0:
+ sys.stdout.write( '&nbsp;' )
+ else:
+ sys.stdout.write( str( kern ) )
+ sys.stdout.write( '</span><br />' )
+ printpair( font, lc[0], rc[0] )
+ sys.stdout.write( '</td>' )
+ m += 1
+ print "</tr>"
+ n += 1
+ print "</table>"
+
+def printentity( font, a ):
+ s = font.findEncodingSlot( a )
+ v = formatted_hex_value( s )
+ if s == -1:
+ v = '<span class="nonexistent">&nbsp;</span>'
+ print >> sys.stderr, font.fullname, 'Missing glyph: ' + a
+ elif not codepointIsInSomeRange( s ):
+ print >> sys.stderr, font.fullname, 'Non-unicode: ' + v
+ sys.stdout.write( v )
+
+def printpair( font, p, q ):
+ printentity( font, p )
+ printentity( font, q )
+ sys.stdout.write( ' ' )
+
+def formatted_hex_value( n ):
+ return '%s%0.4x%s' %( "&#x", n, ";" )
+
+def printlist( lst ):
+ s = ''
+ delim = ''
+ for m in lst:
+ s += delim + m
+ delim = ' '
+ print s
+
+print preamble
+#print_kerns( '/home/swhite/font_stuff/urwsr-ttf/URWPalladioL-Roman-test.sfd' )
+print_kerns( '../../sfd/FreeSerif.sfd' )
+print_kerns( '../../sfd/FreeSerifItalic.sfd' )
+print_kerns( '../../sfd/FreeSerifBold.sfd' )
+print_kerns( '../../sfd/FreeSerifBoldItalic.sfd' )
+print_kerns( '../../sfd/FreeSans.sfd' )
+print_kerns( '../../sfd/FreeSansOblique.sfd' )
+print_kerns( '../../sfd/FreeSansBold.sfd' )
+print_kerns( '../../sfd/FreeSansBoldOblique.sfd' )
+print_kerns( '../../sfd/FreeMono.sfd' )
+print_kerns( '../../sfd/FreeMonoOblique.sfd' )
+print_kerns( '../../sfd/FreeMonoBold.sfd' )
+print_kerns( '../../sfd/FreeMonoBoldOblique.sfd' )
+print postamble
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/report/ligatureLookups.py b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/report/ligatureLookups.py
new file mode 100755
index 00000000000..4e4678b869d
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/report/ligatureLookups.py
@@ -0,0 +1,276 @@
+#!/usr/bin/env ../utility/fontforge-interp.sh
+__license__ = """
+This file is part of Gnu FreeFont.
+
+Gnu FreeFont 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 3 of the License, or (at your option) any later
+version.
+
+Gnu FreeFont 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
+Gnu FreeFont. If not, see <http://www.gnu.org/licenses/>.
+"""
+__author__ = "Stevan White"
+__email__ = "stevan.white@googlemail.com"
+__copyright__ = "Copyright 2009, 2010, 2012 Stevan White"
+__date__ = "$Date: 2012-03-28 21:24:32 +0200 (Wed, 28 Mar 2012) $"
+__version__ = "$Revision: 2184 $"
+
+__doc__ = """
+ligaturelookups
+
+ fontforge -script ligature.ookups font_file_path...
+
+Output is HTML showing all the ligature lookups in the font.
+
+To display the ligature, the HTML entities for the component Unicode charaters
+are printed together. Then to show the components sparately they, are printed
+with intervening spaces.
+
+Most web browsers do not display any character unless it is Unicode.
+It may replace a sequence of Unicode characters by a ligature, however.
+
+Some of the ligatures in Indic ranges expand to (are made of) non-Unicode
+characters, which themselves are ligatures. Ultimately, they all should
+resolve to Unicode characters, although there isn't any real limit to how many
+steps it may take.
+
+The resulting string of Unicode characters can then be put into HTML, which
+should be properly rendered by a browser.
+
+"""
+
+__usage = """Usage:
+ fontforge -script ligaturelookups.py font-path-1 font-path-2 ...
+"""
+
+import fontforge
+from sys import stdout, stderr, argv, exit
+
+def get_ligature_lookups( font ):
+ try:
+ tables = []
+ for lookup in font.gsub_lookups:
+ if font.getLookupInfo( lookup )[0] == 'gsub_ligature':
+ sts = font.getLookupSubtables( lookup )
+ for st in sts:
+ tables.append( st )
+ return tables
+ except EnvironmentError, ( e ):
+ print >> stderr, 'EnvironmentError ' + str( e )
+ except TypeError, ( t ):
+ print >> stderr, 'TypeError ' + str( t )
+ return None
+
+_preamble= """<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>Ligatures</title>
+<style type="text/css">
+ .nonchar { background-color: red; }
+ table, tr, td { font-family: inherit; }
+ table, tr, td { font-style: inherit; }
+ table, tr, td { font-weight: inherit; }
+ td { text-align: right; }
+ td { line-height: 1; }
+ .ligatures td { width: 2em; }
+ .ligatures th { text-align: left; font-family: freemono, monospace; }
+</style>
+</head>
+<body>
+"""
+
+_postamble="""
+</body>
+</html>
+"""
+
+_style_div_html = """<div style="font-family: '%s';%s%s">"""
+_lig_header_html = '<h2>Ligatures in %s</h2>'
+
+def print_ligatures( fontPath ):
+ subtables = []
+ font = fontforge.open( fontPath )
+
+ style = ''
+ if font.italicangle != 0.0:
+ style = "font-style: italic; "
+ weight = ''
+ if font.weight == 'Bold':
+ weight = "font-weight: bold; "
+
+ print _style_div_html % ( font.familyname, style, weight )
+ print _lig_header_html % ( font.fontname )
+
+ subtable_names = get_ligature_lookups( font )
+ for subtable_name in subtable_names:
+ subtables.append( makeLigatureSubtable( font, subtable_name ) )
+ for subtable in subtables:
+ out = htmlListOfLigSubtable( font, subtable, subtables )
+ stdout.writelines( out )
+ stdout.flush()
+ print '</div>'
+
+class Ligature:
+ def __init__( self, glyph ):
+ self.glyph = glyph
+ self.parts = []
+ def setParts( self, parts ):
+ self.parts = parts
+ def append( self, part ):
+ self.parts.append( part )
+
+class LigatureSubtable:
+ def __init__( self, tablename, name ):
+ self.tablename = tablename
+ self.name = name
+ self.ligatures = []
+ def append( self, ligature ):
+ self.ligatures.append( ligature )
+ def findLigatureGlyph( self, g ):
+ for p in self.ligatures:
+ if g == p.glyph.encoding:
+ return p
+ return False
+
+def findLigatureGlyph( g, subtables ):
+ for s in subtables:
+ lig = s.findLigatureGlyph( g )
+ if lig:
+ return lig
+ return False
+
+def makeLigatureSubtable( font, subtable_name ):
+ """
+ From FontForge Python scripting doc
+
+ glyph.getPosSub( lookup-subtable-name )
+
+ Returns any positioning/substitution data attached to the glyph
+ controlled by the lookup-subtable. If the name is "*" then returns
+ data from all subtables.
+
+ The data are returned as a tuple of tuples.
+ The first element of the subtuples is the name of the lookup-subtable.
+ The second element will be one of the strings:
+ "Position", "Pair", "Substitution", "AltSubs", "MultSubs","Ligature".
+ ...
+ Ligature data will be followed by several strings each containing
+ the name of a ligature component glyph.
+
+
+ BUT...
+ this info is attached to glyphs...
+ which glyph is it attached to? ones in the range, or the ligatures?
+ how to get the glyphs in the range referred to by the lookup??
+
+ Evidently, the library has stuff arranged internally to do the search
+ efficiently in the backwards direction, from glyph to subtable.
+
+ font.getLookupInfo gets a feature-script-lang-tuple, which in principle
+ should be able to resolve a glyph list... but can't see how to use it...
+
+ """
+ subtable = LigatureSubtable( "", subtable_name )
+ for g in font.glyphs():
+ ligs = g.getPosSub( subtable_name )
+ if ligs:
+ ligature = Ligature( g )
+ for lr in ligs:
+ if len( lr ) < 3 or lr[1] != 'Ligature':
+ print >> stderr, font.fullname, '- non-ligature: ', g.glyphname
+ break
+ i = 2
+ while i < len( lr ):
+ ligature.append( lr[i] )
+ i += 1
+
+ subtable.append( ligature )
+ return subtable
+
+_table_head_html = '''<table class="ligatures" rules="groups">
+<caption>%s</caption>
+<colgroup>
+<col style="width: 50ex" />
+</colgroup>
+<colgroup>
+<col style="width: 4ex" />
+</colgroup>
+'''
+
+def htmlListOfLigSubtable( font, subtable, subtables ):
+ out = [ _table_head_html % ( subtable.name ) ]
+ for lig in subtable.ligatures:
+ out += [ '<tr>\n<th>' ]
+
+ # FIXME this will fail for high Unicode
+ if lig.glyph.unicode > -1:
+ s = font.findEncodingSlot( lig.glyph.unicode )
+ out += [ '%s%0.4x%s' %( "U+", s, " " ) ]
+ else:
+ out += [ '%s%0.4x%s' %( "#", lig.glyph.encoding, " " ) ]
+ out += [ lig.glyph.glyphname ]
+ out += [ '</th>' ]
+
+ out += [ '<td>' ]
+ for p in lig.parts:
+ out += [ nestedEntity( font, subtable, p, subtables ) ]
+ out += [ '</td>' ]
+
+ for p in lig.parts:
+ out += [ '<td>' ]
+ out += [ nestedEntity( font, subtable, p, subtables ) ]
+ out += [ '</td>' ]
+ out += [ '</tr>\n' ]
+ out += [ "</table>" ]
+ return out
+
+def nestedEntity( font, subtable, a, subtables ):
+ """
+ Expands each ligature, then checks each component to see if it's
+ Unicode.
+ If not, it looks through all the ligature tables to expand it,
+ and so on recursively until only Unicode characters remain.
+ """
+ s = font.findEncodingSlot( a )
+ if s >= 0xe000 and s <= 0xf8ff: # Unicode only
+ lig = findLigatureGlyph( s, subtables )
+ if lig:
+ #print >> stderr, 'Nested glyph found: ' + a
+ for p in lig.parts:
+ return nestedEntity( font, subtable, p, subtables )
+ else:
+ print >> stderr, font.fullname, '- No nested glyph: ', a
+ return '<span class="nonchar">&nbsp;</span>'
+ else:
+ return entityHTML( font, a )
+
+def entityHTML( font, a ):
+ s = font.findEncodingSlot( a )
+ if s == -1:
+ print >> stderr, font.fullname, '- Missing glyph: ', a
+ return '<span class="nonchar">&nbsp;</span>'
+ else:
+ return formatted_hex_value( s )
+
+def formatted_hex_value( n ):
+ return '%s%0.4x%s' %( "&#x", n, ";" )
+
+# --------------------------------------------------------------------------
+args = argv[1:]
+
+if len( args ) < 1 or len( args[0].strip() ) == 0:
+ print >> stderr, __usage
+ exit( 0 )
+
+print _preamble
+for font_name in args:
+ print_ligatures( font_name )
+print _postamble
+
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/report/private_use.py b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/report/private_use.py
new file mode 100755
index 00000000000..1874af6dead
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/report/private_use.py
@@ -0,0 +1,92 @@
+#!/usr/bin/env ../utility/fontforge-interp.sh
+
+__doc__ = """
+private_use.py
+
+ fontforge -script private_use.py font_file_path...
+
+Output is HTML showing all the font's glyphs that are in Unicode "Private Use"
+areas.
+Also reports whether glyphs have references, or if they are ligatures.
+"""
+__author__ = "Stevan White <stevan.white@googlemail.com>"
+__date__ = "Dec 2009"
+__version__ = "$Revision: 1.2 $"
+
+import fontforge
+import sys
+
+
+preamble = """<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>Private Use area</title>
+<style type="text/css">
+ .nonchar { background-color: red; }
+ table, tr, td { font-family: inherit; }
+ table, tr, td { font-style: inherit; }
+ table, tr, td { font-weight: inherit; }
+ td { text-align: right; }
+ td { line-height: 1; }
+ .ligatures td { width: 2em; }
+ .ligatures th { text-align: left; font-family: freemono, monospace; }
+</style>
+</head>
+<body>
+"""
+
+def makePreamble():
+ return preamble
+
+postamble="""
+</body>
+</html>
+"""
+
+def print_private( fontPath ):
+ font = fontforge.open( fontPath )
+
+ print '<div style="font-family: \'' + font.familyname + '\'; ' \
+ '\">'
+ print '<h2>Private Use Area in ' + font.fontname + '</h2>'
+
+ font.selection.select(("ranges",None),0xe000,0xf8ff)
+ print '<table>'
+ for g in font.selection.byGlyphs:
+ print '<tr><td>'
+ print '%s%0.4x%s' %( "0x", g.encoding, "" )
+ print '</td><td>'
+ print '' + g.glyphname
+ print '</td><td>'
+ if g.getPosSub( '*' ):
+ print "is ligature"
+ if g.references:
+ print "has references"
+ print '</td><td>'
+ print '</td></tr>'
+
+ print '</table>'
+ print '</div>'
+ sys.stdout.flush()
+
+def printentity( font, s ):
+ if s == -1:
+ print >> sys.stderr, 'Missing glyph: ' + a
+ sys.stdout.write( '<span class="nonchar">&nbsp;</span>' )
+ else:
+ sys.stdout.write( formatted_hex_value( s ) )
+
+def formatted_hex_value( n ):
+ return '%s%0.4x%s' %( "&#x", n, ";" )
+
+args = sys.argv[1:]
+
+if len( args ) < 1 or len( args[0].strip() ) == 0:
+ sys.exit( 0 )
+
+print makePreamble()
+for font_name in args:
+ print_private( font_name )
+print postamble
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/report/range_report.py b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/report/range_report.py
new file mode 100755
index 00000000000..0d53895d40e
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/report/range_report.py
@@ -0,0 +1,323 @@
+#!/usr/bin/env ../utility/fontforge-interp.sh
+
+__license__ = """
+This file is part of Gnu FreeFont.
+
+Gnu FreeFont 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 3 of the License, or (at your option) any later
+version.
+
+Gnu FreeFont 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
+Gnu FreeFont. If not, see <http://www.gnu.org/licenses/>.
+"""
+__author__ = "Stevan White"
+__email__ = "stevan.white@googlemail.com"
+__copyright__ = "Copyright 2009, 2010, 2011, Stevan White"
+__date__ = "$Date: 2010-09-14 13:02:02 $"
+__version__ = "$Revision: 1.9 $"
+__doc__ = """
+Makes an HTML table showing how many glyphs are in each range in each font,
+and tries to collate that with the OS/2 character range support bit flags.
+
+Runs under FontForge.
+ fontforge -script ranges.py
+
+This is a hack--in no way authoritative.
+Lots of guesswork; much is wrong; the coding is gross.
+
+See
+http://www.w3.org/TR/REC-CSS2/notes.html
+http://shlimazl.nm.ru/eng/fonts_ttf.htm
+http://www.evertype.com/standards/iso10646/ucs-collections.html
+
+The intervals are partly just the assigned interval, but often I have
+listed the ranges that have characters assigned to them.
+"""
+
+import fontforge
+from sys import stderr
+from time import tzset, strftime
+from OpenType.UnicodeRanges import *
+
+def total_intervals( intervals ):
+ num = 0
+ for i in intervals:
+ num += i.len()
+ return num
+
+def count_glyphs_in_intervals( font, intervals ):
+ num = 0
+ for r in intervals:
+ if r.begin < len( font ) and r.end < len( font ):
+ # select() will throw up if try to select value
+ # beyond the range of the encoding
+ try:
+ font.selection.select( ( 'ranges', None ),
+ r.begin, r.end )
+ g = font.selection.byGlyphs
+ for e in g:
+ num += 1
+ except ValueError:
+ print >> stderr, "interval " + str( r ) \
+ + " not representable in " + font.fontname
+ exit( 1 )
+ return num
+
+special_TT_points = ( 0x00, 0x01, 0x0D )
+
+def codepointIsSpecialTT( encoding ):
+ """ See Recommendations for OpenType Fonts
+ http://www.microsoft.com/typography/otspec/recom.htm """
+ return encoding in special_TT_points
+
+class SupportInfo:
+ def __init__( self, os2bit, supports, total ):
+ self.os2bit = os2bit
+ self.supports = supports
+ self.total = total
+
+class FontSupport:
+ """ A record of support for all OS/2 ranges within a single font.
+ Uses a dictionary internally, to avoid loss of the index info.
+ """
+ def __init__( self, fontPath, short ):
+ font = fontforge.open( fontPath )
+ self.name = font.fontname
+ self.short = short
+ self.myInfos = {}
+ self.totalGlyphs = 0
+ self.fontTotalGlyphs = 0
+ self.privateUseGlyphs = 0
+
+ r = font.os2_unicoderanges
+
+ # print >> stderr, font.fontname, hex( r[0] ), hex( r[1] ),hex( r[2] ),hex( r[3] );
+
+ nRanges = len( ulUnicodeRange )
+
+ for index in range( 0, nRanges ):
+ byte = index / 32
+ bit = index % 32
+
+ self.collectRangeInfo( font, r[byte], bit, index )
+
+ for g in font.glyphs():
+ self.fontTotalGlyphs += 1
+ cp = g.encoding
+ if ( not codepointIsInSomeRange( cp )
+ and not codepointIsSpecialTT( cp ) ):
+ print >> stderr, font.fontname, \
+ "no range for", hex( cp )
+
+ """ '''Would like to check that special TT slots are
+ present, but don't know how...'''
+ for cp in special_TT_points:
+ font.selection.all()
+ if not cp in font.selection.byGlyphs:
+ print >> stderr, font.fontname, \
+ "special TT glyph missing", hex( cp )
+ """
+
+ def collectRangeInfo( self, font, os2supportbyte, bit, index ):
+ supports = ( os2supportbyte & (1 << bit) ) != 0
+ rangeName = ulUnicodeRange[index][1]
+ intervals = ulUnicodeRange[index][2]
+ nglyphs = count_glyphs_in_intervals( font, intervals )
+ self.setRangeSupport( index, supports, nglyphs )
+ self.totalGlyphs += nglyphs
+ if index == 60 or index == 90:
+ self.privateUseGlyphs += nglyphs
+
+ def setRangeSupport( self, idx, supports, total ):
+ if self.myInfos.has_key( idx ):
+ print >> stderr, "OS/2 index ", idx, " duplicated"
+ exit( 1 )
+ self.myInfos[idx] = SupportInfo( idx, supports, total )
+
+ def getInfo( self, idx ):
+ if not self.myInfos.has_key( idx ):
+ print >> stderr, "OS/2 index ", idx, " not found"
+ exit( 1 )
+ return self.myInfos[ idx ]
+
+table_head = '''
+<table class="fontrangereport" cellspacing="0" cellpadding="0" frame="box" rules="all">
+<caption>
+OS/2 character ranges vs. font faces
+</caption>
+<colgroup>
+<col /><col /><col />
+</colgroup>
+<colgroup>
+<col class="roman"/><col /><col /><col />
+<col /><col /><col /><col />
+</colgroup>
+<colgroup>
+<col class="roman"/><col /><col /><col />
+<col /><col /><col /><col />
+</colgroup>
+<colgroup>
+<col class="roman"/><col /><col /><col />
+<col /><col /><col /><col />
+</colgroup>
+<thead>
+<tr><th>OS/2 character range</th>
+<th>range<br />total</th>
+<td></td>
+%s
+</tr>
+</thead>'''
+
+def print_font_range_table( fontSupportList ):
+ headings = ''
+ for fsl in fontSupportList:
+ headings += '<th colspan="2">' + fsl.short + '</th>'
+ print table_head % ( headings )
+
+ for r in ulUnicodeRange:
+ idx = r[0]
+ range_name = r[1]
+ intervals = r[2]
+
+ rowclass = ' class="low"'
+ if len( ulUnicodeRange[idx] ) > 3 and ulUnicodeRange[ idx ][3]:
+ rowclass = ' class="high"'
+ if idx == 60 or idx == 90:
+ rowclass = ' class="private"'
+
+ print '<tr%s><td>%s</td>' % ( rowclass, range_name )
+ print '<td class="num">%i</td>' % (
+ total_intervals( intervals ) )
+ print '<td></td>'
+ for fsl in fontSupportList:
+ supportInfo = fsl.getInfo( idx )
+ supportString = ''
+ if supportInfo.supports:
+ supportString = '&bull;'
+ totalStr = '&nbsp;'
+ if supportInfo.total:
+ totalStr = str( supportInfo.total )
+
+ print '<td class="num">%s</td><td>%s</td>' % (
+ totalStr, supportString )
+
+ print '</tr>'
+ print '<tr><th colspan="3">total in Unicode ranges</th>'
+ for fsl in fontSupportList:
+ print '<td class="num" colspan="2">%i&nbsp;</td>' % (
+ fsl.totalGlyphs )
+ print '</tr>'
+ print '<tr><th colspan="3">total in font</th>'
+ for fsl in fontSupportList:
+ print '<td class="num" colspan="2">%i&nbsp;</td>' % (
+ fsl.fontTotalGlyphs )
+ print '</tr>'
+ print '<tr><th colspan="3">total in Private Use</th>'
+ for fsl in fontSupportList:
+ print '<td class="num" colspan="2">%i&nbsp;</td>' % (
+ fsl.privateUseGlyphs )
+ print '</tr>'
+ # Would also like to total glyphs in ranges for each font,
+ # and also print total glyphs in each font.
+ print '</table>'
+
+table_introduction = """
+For historical reasons, TrueType classifies Unicode ranges according to
+an extension of the old OS/2 character ranges. This table shows how many
+characters FontForge finds in each of the ranges for each face in the family.
+"""
+
+table_explanation = """
+<p>
+Ranges for which (FontForge reports that) the font's OS/2 support
+bit is set are marked with a bullet.
+</p>
+<p>
+For many ranges, I took the liberty of reducing the set of characters
+considered to those listed for the range in the current Unicode charts.
+The number of characters supported can thus be less than the width of the range.
+</p>
+<p>
+The totals include glyphs in the Private Use areas (where there
+are many ligatures, alternative forms, and glyph components). The glyphs
+in these areas do not correspond to Unicode characters.
+</p>
+<p>
+Three control characters are inserted at 0x00, 0x01 and 0x0d to satisfy the
+TrueType recommendations. These are counted under Basic Latin, but other
+control characters there are not counted.
+</p>
+<p>
+Note that there is a discrepancy in the Greek Symbols, Hebrew Extended and
+Arabic Extended ranges, between what FontForge reports here and in its Font
+Info window under OS/2 Character Ranges. I don't know why, but these ranges
+are also not well defined in the TrueType standard.
+</p>
+<p>
+Note the two characters from Devanagri. These are the danda and double-danda
+used by other Indic scripts.
+</p>
+<p>
+The ranges <span style="color: #555">beyond Unicode point 0xFFFF</span>, are
+shaded. </p>
+"""
+
+html_heading = '''
+<html>
+<head>
+<title>
+Gnu FreeFont character range support
+</title>
+<style type="text/css">
+ tr.high { color: #555 }
+ tr.private { background-color: silver; }
+ td.num { text-align: right }
+ td { padding-right: 0.25ex }
+ th { padding: 0.25ex }
+ .roman { border-left: medium black solid; }
+ caption { font-size: larger; font-weight: bold; }
+</style>
+</head>
+'''
+
+def print_font_range_report( fontSupportList ):
+ print html_heading
+
+ print '<body>'
+ print '<h1>'
+ print 'Gnu FreeFont support for OpenType OS/2 character ranges'
+ print '</h1>'
+ print '<p>'
+ print table_introduction
+ print '</p>'
+ print_font_range_table( fontSupportList )
+ print '<p>'
+ print table_explanation
+ tzset()
+ print 'Generated by <code>range_report.py</code> on %s.' % (
+ strftime('%X %x %Z') )
+ print '</p>'
+ print '</body>'
+
+ print '</html>'
+
+supportList = []
+supportList.append( FontSupport( '../../sfd/FreeSerif.sfd', 'Srf' ) )
+supportList.append( FontSupport( '../../sfd/FreeSerifItalic.sfd', 'Srf I' ) )
+supportList.append( FontSupport( '../../sfd/FreeSerifBold.sfd', 'Srf B' ) )
+supportList.append( FontSupport( '../../sfd/FreeSerifBoldItalic.sfd', 'Srf BI' ) )
+supportList.append( FontSupport( '../../sfd/FreeSans.sfd', 'Sans' ) )
+supportList.append( FontSupport( '../../sfd/FreeSansOblique.sfd', 'Sans O' ) )
+supportList.append( FontSupport( '../../sfd/FreeSansBold.sfd', 'Sans B' ) )
+supportList.append( FontSupport( '../../sfd/FreeSansBoldOblique.sfd', 'Sans BO' ) )
+supportList.append( FontSupport( '../../sfd/FreeMono.sfd', 'Mono' ) )
+supportList.append( FontSupport( '../../sfd/FreeMonoOblique.sfd', 'Mono O' ) )
+supportList.append( FontSupport( '../../sfd/FreeMonoBold.sfd', 'Mono B' ) )
+supportList.append( FontSupport( '../../sfd/FreeMonoBoldOblique.sfd', 'Mono BO' ) )
+
+print_font_range_report( supportList )
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/script-menu/nameBySlot.py b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/script-menu/nameBySlot.py
new file mode 100755
index 00000000000..1ab97411aa0
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/script-menu/nameBySlot.py
@@ -0,0 +1,62 @@
+__license__ = """
+This file is part of Gnu FreeFont.
+
+Gnu FreeFont 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 3 of the License, or (at your option) any later
+version.
+
+Gnu FreeFont 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
+Gnu FreeFont. If not, see <http://www.gnu.org/licenses/>.
+"""
+__author__ = "Stevan White"
+__email__ = "stevan.white@googlemail.com"
+__copyright__ = "Copyright 2009, 2010, Stevan White"
+__date__ = "$Date: 2010-09-14 13:02:02 $"
+__version__ = "$Revision: 1.3 $"
+
+__doc__ = """
+For use from the FontForge Script Menu.
+Add it to the Scripts Menu using the Preferences dialog.
+
+Sets the name and unicode values of the selected range of slots to the
+encoding, that is
+ Name: uniXXXX
+ Unocode: u+XXXX
+where XXXX is the n-digit hex value for the slot encoding.
+
+Careful! it changes the value whether it was previously set or not.
+
+Detailed info is printed to standard output (see by launching FontForge
+from a console).
+"""
+import fontforge
+
+def explain_error_and_quit( e ):
+ if e:
+ print 'Error: ', e
+ exit( 1 )
+
+try:
+ glyphs = fontforge.activeFont().selection.byGlyphs
+ for g in glyphs:
+ if g.encoding <= 0xFFFF:
+ newname = 'uni%0.4x' %( g.encoding )
+ elif g.encoding <= 0xFFFFF:
+ newname = 'uni%0.5x' %( g.encoding )
+ elif g.encoding <= 0xFFFFFF:
+ newname = 'uni%0.6x' %( g.encoding )
+ elif g.encoding <= 0xFFFFFFF:
+ newname = 'uni%0.7x' %( g.encoding )
+ elif g.encoding <= 0xFFFFFFFF:
+ newname = 'uni%0.8x' %( g.encoding )
+ print "naming " + str( g.glyphname ) + ' as ' + newname
+ g.glyphname = newname
+ g.unicode = g.encoding
+except ValueError, e:
+ explain_error_and_quit( e )
+
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/script-menu/unnameBySlot.py b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/script-menu/unnameBySlot.py
new file mode 100644
index 00000000000..b506417d99b
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/script-menu/unnameBySlot.py
@@ -0,0 +1,54 @@
+__license__ = """
+This file is part of Gnu FreeFont.
+
+Gnu FreeFont 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 3 of the License, or (at your option) any later
+version.
+
+Gnu FreeFont 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
+Gnu FreeFont. If not, see <http://www.gnu.org/licenses/>.
+"""
+__author__ = "Stevan White"
+__email__ = "stevan.white@googlemail.com"
+__copyright__ = "Copyright 2009, 2010, Stevan White"
+__date__ = "$Date: 2010-09-14 13:02:02 $"
+__version__ = "$Revision: 1.3 $"
+
+__doc__ = """
+For use from the FontForge Script Menu.
+Add it to the Scripts Menu using the Preferences dialog.
+
+Sets the name and unicode values of the selected range of slots to
+the encoding, that is
+ Name: uniXXXX
+ Unocode: u+XXXX
+where XXXX is the 4-digit hex value for the slot encoding.
+
+Careful! it changes the falue whether it was previously set or not.
+
+Detailed info is printed to standard output (see by launching FontForge
+from a console).
+"""
+
+import fontforge
+
+def explain_error_and_quit( e ):
+ if e:
+ print 'Error: ', e
+ exit( 1 )
+
+try:
+ glyphs = fontforge.activeFont().selection.byGlyphs
+ for g in glyphs:
+ newname = 'NameMe.%s' %( str( g.encoding ) )
+ print "naming " + str( g.glyphname ) + ' as ' + newname
+ g.glyphname = newname
+ g.unicode = -1
+except ValueError, e:
+ explain_error_and_quit( e )
+
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/CheckConformance.pl b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/CheckConformance.pl
new file mode 100755
index 00000000000..42bb54d2db7
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/CheckConformance.pl
@@ -0,0 +1,60 @@
+#!/usr/bin/perl
+# $Id: CheckConformance.pl,v 1.1 2009-12-27 16:25:15 Stevan_White Exp $
+#
+# Check conformance of font file with given character sets.
+
+# Get the characters in the font file
+# Regexp for ENCODING line matches BDF and PfaEdit's SFD formats
+if ($#ARGV >= 0) {
+ open(FONTFILE, $ARGV[0]);
+} else {
+ open(FONTFILE, "<stdin");
+}
+while (<FONTFILE>) {
+ if (/^E[Nn][Cc][Oo][Dd][Ii][Nn][Gg]:? ([\d]+)/) {
+ $char{$1} = 1;
+ }
+}
+close (FONTFILE);
+
+$tbldir = "./";
+@tables = ("MES-1.lst", "MES-2.lst", "MES-3B.lst");
+
+foreach $table (0 .. $#tables) {
+
+ $tblfile = $tbldir.$tables[$table];
+
+ # Read in the table with the named entities
+ open(TABLE, "<$tblfile") || die "Cannot find $tblfile\n";
+ delete @table{keys %table};
+ while (<TABLE>) {
+ if (/^\#.*/) {
+ next;
+ } else {
+ chomp;
+ ($code,$name) = split(/:/, $_, 9999);
+ $table{hex($code)} = $name;
+ }
+ }
+ close(TABLE);
+
+ # Get the list of missing chars, sorted numerically by their code
+ foreach $key (sort {$a <=> $b} keys %table) {
+ if ($char{$key} != 1) {
+ push @missing, $key;
+ }
+ }
+
+ # Print the list of missing chars, code and ISO 10646 name
+ if ($#missing >= 0) {
+ print "\n$#missing characters are found missing for conformance with ";
+ print "$tblfile:\n";
+ for ($i = 0; $i <= $#missing; $i++) {
+ printf("%04X %s\n", $missing[$i], $table{$missing[$i]});
+ }
+ } else {
+ print "\nCongratulations!\n";
+ print "No characters are found missing for conformance with ";
+ print "$tblfile.\n";
+ }
+}
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/MES-1.lst b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/MES-1.lst
new file mode 100644
index 00000000000..51c119a9471
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/MES-1.lst
@@ -0,0 +1,335 @@
+0020:SPACE
+0021:EXCLAMATION MARK
+0022:QUOTATION MARK
+0023:NUMBER SIGN
+0024:DOLLAR SIGN
+0025:PERCENT SIGN
+0026:AMPERSAND
+0027:APOSTROPHE
+0028:LEFT PARENTHESIS
+0029:RIGHT PARENTHESIS
+002A:ASTERISK
+002B:PLUS SIGN
+002C:COMMA
+002D:HYPHEN-MINUS
+002E:FULL STOP
+002F:SOLIDUS
+0030:DIGIT ZERO
+0031:DIGIT ONE
+0032:DIGIT TWO
+0033:DIGIT THREE
+0034:DIGIT FOUR
+0035:DIGIT FIVE
+0036:DIGIT SIX
+0037:DIGIT SEVEN
+0038:DIGIT EIGHT
+0039:DIGIT NINE
+003A:COLON
+003B:SEMICOLON
+003C:LESS-THAN SIGN
+003D:EQUALS SIGN
+003E:GREATER-THAN SIGN
+003F:QUESTION MARK
+0040:COMMERCIAL AT
+0041:LATIN CAPITAL LETTER A
+0042:LATIN CAPITAL LETTER B
+0043:LATIN CAPITAL LETTER C
+0044:LATIN CAPITAL LETTER D
+0045:LATIN CAPITAL LETTER E
+0046:LATIN CAPITAL LETTER F
+0047:LATIN CAPITAL LETTER G
+0048:LATIN CAPITAL LETTER H
+0049:LATIN CAPITAL LETTER I
+004A:LATIN CAPITAL LETTER J
+004B:LATIN CAPITAL LETTER K
+004C:LATIN CAPITAL LETTER L
+004D:LATIN CAPITAL LETTER M
+004E:LATIN CAPITAL LETTER N
+004F:LATIN CAPITAL LETTER O
+0050:LATIN CAPITAL LETTER P
+0051:LATIN CAPITAL LETTER Q
+0052:LATIN CAPITAL LETTER R
+0053:LATIN CAPITAL LETTER S
+0054:LATIN CAPITAL LETTER T
+0055:LATIN CAPITAL LETTER U
+0056:LATIN CAPITAL LETTER V
+0057:LATIN CAPITAL LETTER W
+0058:LATIN CAPITAL LETTER X
+0059:LATIN CAPITAL LETTER Y
+005A:LATIN CAPITAL LETTER Z
+005B:LEFT SQUARE BRACKET
+005C:REVERSE SOLIDUS
+005D:RIGHT SQUARE BRACKET
+005E:CIRCUMFLEX ACCENT
+005F:LOW LINE
+0060:GRAVE ACCENT
+0061:LATIN SMALL LETTER A
+0062:LATIN SMALL LETTER B
+0063:LATIN SMALL LETTER C
+0064:LATIN SMALL LETTER D
+0065:LATIN SMALL LETTER E
+0066:LATIN SMALL LETTER F
+0067:LATIN SMALL LETTER G
+0068:LATIN SMALL LETTER H
+0069:LATIN SMALL LETTER I
+006A:LATIN SMALL LETTER J
+006B:LATIN SMALL LETTER K
+006C:LATIN SMALL LETTER L
+006D:LATIN SMALL LETTER M
+006E:LATIN SMALL LETTER N
+006F:LATIN SMALL LETTER O
+0070:LATIN SMALL LETTER P
+0071:LATIN SMALL LETTER Q
+0072:LATIN SMALL LETTER R
+0073:LATIN SMALL LETTER S
+0074:LATIN SMALL LETTER T
+0075:LATIN SMALL LETTER U
+0076:LATIN SMALL LETTER V
+0077:LATIN SMALL LETTER W
+0078:LATIN SMALL LETTER X
+0079:LATIN SMALL LETTER Y
+007A:LATIN SMALL LETTER Z
+007B:LEFT CURLY BRACKET
+007C:VERTICAL LINE
+007D:RIGHT CURLY BRACKET
+007E:TILDE
+00A0:NO-BREAK SPACE
+00A1:INVERTED EXCLAMATION MARK
+00A2:CENT SIGN
+00A3:POUND SIGN
+00A4:CURRENCY SIGN
+00A5:YEN SIGN
+00A6:BROKEN BAR
+00A7:SECTION SIGN
+00A8:DIAERESIS
+00A9:COPYRIGHT SIGN
+00AA:FEMININE ORDINAL INDICATOR
+00AB:LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+00AC:NOT SIGN
+00AD:SOFT HYPHEN
+00AE:REGISTERED SIGN
+00AF:MACRON
+00B0:DEGREE SIGN
+00B1:PLUS-MINUS SIGN
+00B2:SUPERSCRIPT TWO
+00B3:SUPERSCRIPT THREE
+00B4:ACUTE ACCENT
+00B5:MICRO SIGN
+00B6:PILCROW SIGN
+00B7:MIDDLE DOT
+00B8:CEDILLA
+00B9:SUPERSCRIPT ONE
+00BA:MASCULINE ORDINAL INDICATOR
+00BB:RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+00BC:VULGAR FRACTION ONE QUARTER
+00BD:VULGAR FRACTION ONE HALF
+00BE:VULGAR FRACTION THREE QUARTERS
+00BF:INVERTED QUESTION MARK
+00C0:LATIN CAPITAL LETTER A WITH GRAVE
+00C1:LATIN CAPITAL LETTER A WITH ACUTE
+00C2:LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+00C3:LATIN CAPITAL LETTER A WITH TILDE
+00C4:LATIN CAPITAL LETTER A WITH DIAERESIS
+00C5:LATIN CAPITAL LETTER A WITH RING ABOVE
+00C6:LATIN CAPITAL LETTER AE
+00C7:LATIN CAPITAL LETTER C WITH CEDILLA
+00C8:LATIN CAPITAL LETTER E WITH GRAVE
+00C9:LATIN CAPITAL LETTER E WITH ACUTE
+00CA:LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+00CB:LATIN CAPITAL LETTER E WITH DIAERESIS
+00CC:LATIN CAPITAL LETTER I WITH GRAVE
+00CD:LATIN CAPITAL LETTER I WITH ACUTE
+00CE:LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+00CF:LATIN CAPITAL LETTER I WITH DIAERESIS
+00D0:LATIN CAPITAL LETTER ETH
+00D1:LATIN CAPITAL LETTER N WITH TILDE
+00D2:LATIN CAPITAL LETTER O WITH GRAVE
+00D3:LATIN CAPITAL LETTER O WITH ACUTE
+00D4:LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+00D5:LATIN CAPITAL LETTER O WITH TILDE
+00D6:LATIN CAPITAL LETTER O WITH DIAERESIS
+00D7:MULTIPLICATION SIGN
+00D8:LATIN CAPITAL LETTER O WITH STROKE
+00D9:LATIN CAPITAL LETTER U WITH GRAVE
+00DA:LATIN CAPITAL LETTER U WITH ACUTE
+00DB:LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+00DC:LATIN CAPITAL LETTER U WITH DIAERESIS
+00DD:LATIN CAPITAL LETTER Y WITH ACUTE
+00DE:LATIN CAPITAL LETTER THORN
+00DF:LATIN SMALL LETTER SHARP S
+00E0:LATIN SMALL LETTER A WITH GRAVE
+00E1:LATIN SMALL LETTER A WITH ACUTE
+00E2:LATIN SMALL LETTER A WITH CIRCUMFLEX
+00E3:LATIN SMALL LETTER A WITH TILDE
+00E4:LATIN SMALL LETTER A WITH DIAERESIS
+00E5:LATIN SMALL LETTER A WITH RING ABOVE
+00E6:LATIN SMALL LETTER AE
+00E7:LATIN SMALL LETTER C WITH CEDILLA
+00E8:LATIN SMALL LETTER E WITH GRAVE
+00E9:LATIN SMALL LETTER E WITH ACUTE
+00EA:LATIN SMALL LETTER E WITH CIRCUMFLEX
+00EB:LATIN SMALL LETTER E WITH DIAERESIS
+00EC:LATIN SMALL LETTER I WITH GRAVE
+00ED:LATIN SMALL LETTER I WITH ACUTE
+00EE:LATIN SMALL LETTER I WITH CIRCUMFLEX
+00EF:LATIN SMALL LETTER I WITH DIAERESIS
+00F0:LATIN SMALL LETTER ETH
+00F1:LATIN SMALL LETTER N WITH TILDE
+00F2:LATIN SMALL LETTER O WITH GRAVE
+00F3:LATIN SMALL LETTER O WITH ACUTE
+00F4:LATIN SMALL LETTER O WITH CIRCUMFLEX
+00F5:LATIN SMALL LETTER O WITH TILDE
+00F6:LATIN SMALL LETTER O WITH DIAERESIS
+00F7:DIVISION SIGN
+00F8:LATIN SMALL LETTER O WITH STROKE
+00F9:LATIN SMALL LETTER U WITH GRAVE
+00FA:LATIN SMALL LETTER U WITH ACUTE
+00FB:LATIN SMALL LETTER U WITH CIRCUMFLEX
+00FC:LATIN SMALL LETTER U WITH DIAERESIS
+00FD:LATIN SMALL LETTER Y WITH ACUTE
+00FE:LATIN SMALL LETTER THORN
+00FF:LATIN SMALL LETTER Y WITH DIAERESIS
+0100:LATIN CAPITAL LETTER A WITH MACRON
+0101:LATIN SMALL LETTER A WITH MACRON
+0102:LATIN CAPITAL LETTER A WITH BREVE
+0103:LATIN SMALL LETTER A WITH BREVE
+0104:LATIN CAPITAL LETTER A WITH OGONEK
+0105:LATIN SMALL LETTER A WITH OGONEK
+0106:LATIN CAPITAL LETTER C WITH ACUTE
+0107:LATIN SMALL LETTER C WITH ACUTE
+0108:LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+0109:LATIN SMALL LETTER C WITH CIRCUMFLEX
+010A:LATIN CAPITAL LETTER C WITH DOT ABOVE
+010B:LATIN SMALL LETTER C WITH DOT ABOVE
+010C:LATIN CAPITAL LETTER C WITH CARON
+010D:LATIN SMALL LETTER C WITH CARON
+010E:LATIN CAPITAL LETTER D WITH CARON
+010F:LATIN SMALL LETTER D WITH CARON
+0110:LATIN CAPITAL LETTER D WITH STROKE
+0111:LATIN SMALL LETTER D WITH STROKE
+0112:LATIN CAPITAL LETTER E WITH MACRON
+0113:LATIN SMALL LETTER E WITH MACRON
+0116:LATIN CAPITAL LETTER E WITH DOT ABOVE
+0117:LATIN SMALL LETTER E WITH DOT ABOVE
+0118:LATIN CAPITAL LETTER E WITH OGONEK
+0119:LATIN SMALL LETTER E WITH OGONEK
+011A:LATIN CAPITAL LETTER E WITH CARON
+011B:LATIN SMALL LETTER E WITH CARON
+011C:LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+011D:LATIN SMALL LETTER G WITH CIRCUMFLEX
+011E:LATIN CAPITAL LETTER G WITH BREVE
+011F:LATIN SMALL LETTER G WITH BREVE
+0120:LATIN CAPITAL LETTER G WITH DOT ABOVE
+0121:LATIN SMALL LETTER G WITH DOT ABOVE
+0122:LATIN CAPITAL LETTER G WITH CEDILLA
+0123:LATIN SMALL LETTER G WITH CEDILLA
+0124:LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+0125:LATIN SMALL LETTER H WITH CIRCUMFLEX
+0126:LATIN CAPITAL LETTER H WITH STROKE
+0127:LATIN SMALL LETTER H WITH STROKE
+0128:LATIN CAPITAL LETTER I WITH TILDE
+0129:LATIN SMALL LETTER I WITH TILDE
+012A:LATIN CAPITAL LETTER I WITH MACRON
+012B:LATIN SMALL LETTER I WITH MACRON
+012E:LATIN CAPITAL LETTER I WITH OGONEK
+012F:LATIN SMALL LETTER I WITH OGONEK
+0130:LATIN CAPITAL LETTER I WITH DOT ABOVE
+0131:LATIN SMALL LETTER DOTLESS I
+0132:LATIN CAPITAL LIGATURE IJ
+0133:LATIN SMALL LIGATURE IJ
+0134:LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+0135:LATIN SMALL LETTER J WITH CIRCUMFLEX
+0136:LATIN CAPITAL LETTER K WITH CEDILLA
+0137:LATIN SMALL LETTER K WITH CEDILLA
+0138:LATIN SMALL LETTER KRA
+0139:LATIN CAPITAL LETTER L WITH ACUTE
+013A:LATIN SMALL LETTER L WITH ACUTE
+013B:LATIN CAPITAL LETTER L WITH CEDILLA
+013C:LATIN SMALL LETTER L WITH CEDILLA
+013D:LATIN CAPITAL LETTER L WITH CARON
+013E:LATIN SMALL LETTER L WITH CARON
+013F:LATIN CAPITAL LETTER L WITH MIDDLE DOT
+0140:LATIN SMALL LETTER L WITH MIDDLE DOT
+0141:LATIN CAPITAL LETTER L WITH STROKE
+0142:LATIN SMALL LETTER L WITH STROKE
+0143:LATIN CAPITAL LETTER N WITH ACUTE
+0144:LATIN SMALL LETTER N WITH ACUTE
+0145:LATIN CAPITAL LETTER N WITH CEDILLA
+0146:LATIN SMALL LETTER N WITH CEDILLA
+0147:LATIN CAPITAL LETTER N WITH CARON
+0148:LATIN SMALL LETTER N WITH CARON
+0149:LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+014A:LATIN CAPITAL LETTER ENG
+014B:LATIN SMALL LETTER ENG
+014C:LATIN CAPITAL LETTER O WITH MACRON
+014D:LATIN SMALL LETTER O WITH MACRON
+0150:LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+0151:LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0152:LATIN CAPITAL LIGATURE OE
+0153:LATIN SMALL LIGATURE OE
+0154:LATIN CAPITAL LETTER R WITH ACUTE
+0155:LATIN SMALL LETTER R WITH ACUTE
+0156:LATIN CAPITAL LETTER R WITH CEDILLA
+0157:LATIN SMALL LETTER R WITH CEDILLA
+0158:LATIN CAPITAL LETTER R WITH CARON
+0159:LATIN SMALL LETTER R WITH CARON
+015A:LATIN CAPITAL LETTER S WITH ACUTE
+015B:LATIN SMALL LETTER S WITH ACUTE
+015C:LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+015D:LATIN SMALL LETTER S WITH CIRCUMFLEX
+015E:LATIN CAPITAL LETTER S WITH CEDILLA
+015F:LATIN SMALL LETTER S WITH CEDILLA
+0160:LATIN CAPITAL LETTER S WITH CARON
+0161:LATIN SMALL LETTER S WITH CARON
+0162:LATIN CAPITAL LETTER T WITH CEDILLA
+0163:LATIN SMALL LETTER T WITH CEDILLA
+0164:LATIN CAPITAL LETTER T WITH CARON
+0165:LATIN SMALL LETTER T WITH CARON
+0166:LATIN CAPITAL LETTER T WITH STROKE
+0167:LATIN SMALL LETTER T WITH STROKE
+0168:LATIN CAPITAL LETTER U WITH TILDE
+0169:LATIN SMALL LETTER U WITH TILDE
+016A:LATIN CAPITAL LETTER U WITH MACRON
+016B:LATIN SMALL LETTER U WITH MACRON
+016C:LATIN CAPITAL LETTER U WITH BREVE
+016D:LATIN SMALL LETTER U WITH BREVE
+016E:LATIN CAPITAL LETTER U WITH RING ABOVE
+016F:LATIN SMALL LETTER U WITH RING ABOVE
+0170:LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0171:LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0172:LATIN CAPITAL LETTER U WITH OGONEK
+0173:LATIN SMALL LETTER U WITH OGONEK
+0174:LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+0175:LATIN SMALL LETTER W WITH CIRCUMFLEX
+0176:LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+0177:LATIN SMALL LETTER Y WITH CIRCUMFLEX
+0178:LATIN CAPITAL LETTER Y WITH DIAERESIS
+0179:LATIN CAPITAL LETTER Z WITH ACUTE
+017A:LATIN SMALL LETTER Z WITH ACUTE
+017B:LATIN CAPITAL LETTER Z WITH DOT ABOVE
+017C:LATIN SMALL LETTER Z WITH DOT ABOVE
+017D:LATIN CAPITAL LETTER Z WITH CARON
+017E:LATIN SMALL LETTER Z WITH CARON
+02C7:CARON
+02D8:BREVE
+02D9:DOT ABOVE
+02DA:RING ABOVE
+02DB:OGONEK
+02DD:DOUBLE ACUTE ACCENT
+2015:HORIZONTAL BAR
+2018:LEFT SINGLE QUOTATION MARK
+2019:RIGHT SINGLE QUOTATION MARK
+201C:LEFT DOUBLE QUOTATION MARK
+201D:RIGHT DOUBLE QUOTATION MARK
+20AC:EURO SIGN
+2122:TRADE MARK SIGN
+2126:OHM SIGN
+215B:VULGAR FRACTION ONE EIGHTH
+215C:VULGAR FRACTION THREE EIGHTHS
+215D:VULGAR FRACTION FIVE EIGHTHS
+215E:VULGAR FRACTION SEVEN EIGHTHS
+2190:LEFTWARDS ARROW
+2191:UPWARDS ARROW
+2192:RIGHTWARDS ARROW
+2193:DOWNWARDS ARROW
+266A:EIGHTH NOTE
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/MES-1.txt b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/MES-1.txt
new file mode 100644
index 00000000000..399d29d84b0
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/MES-1.txt
@@ -0,0 +1,8 @@
+# Plane 00
+# Rows Positions (Cells)
+00 20-7E A0-FF
+01 00-13 16-2B 2E-4D 50-7E
+02 C7 D8-DB DD
+20 15 18-19 1C-1D AC
+21 22 26 5B-5E 90-93
+26 6A \ No newline at end of file
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/MES-2.lst b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/MES-2.lst
new file mode 100644
index 00000000000..8e6c95a534c
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/MES-2.lst
@@ -0,0 +1,1052 @@
+0020:SPACE
+0021:EXCLAMATION MARK
+0022:QUOTATION MARK
+0023:NUMBER SIGN
+0024:DOLLAR SIGN
+0025:PERCENT SIGN
+0026:AMPERSAND
+0027:APOSTROPHE
+0028:LEFT PARENTHESIS
+0029:RIGHT PARENTHESIS
+002A:ASTERISK
+002B:PLUS SIGN
+002C:COMMA
+002D:HYPHEN-MINUS
+002E:FULL STOP
+002F:SOLIDUS
+0030:DIGIT ZERO
+0031:DIGIT ONE
+0032:DIGIT TWO
+0033:DIGIT THREE
+0034:DIGIT FOUR
+0035:DIGIT FIVE
+0036:DIGIT SIX
+0037:DIGIT SEVEN
+0038:DIGIT EIGHT
+0039:DIGIT NINE
+003A:COLON
+003B:SEMICOLON
+003C:LESS-THAN SIGN
+003D:EQUALS SIGN
+003E:GREATER-THAN SIGN
+003F:QUESTION MARK
+0040:COMMERCIAL AT
+0041:LATIN CAPITAL LETTER A
+0042:LATIN CAPITAL LETTER B
+0043:LATIN CAPITAL LETTER C
+0044:LATIN CAPITAL LETTER D
+0045:LATIN CAPITAL LETTER E
+0046:LATIN CAPITAL LETTER F
+0047:LATIN CAPITAL LETTER G
+0048:LATIN CAPITAL LETTER H
+0049:LATIN CAPITAL LETTER I
+004A:LATIN CAPITAL LETTER J
+004B:LATIN CAPITAL LETTER K
+004C:LATIN CAPITAL LETTER L
+004D:LATIN CAPITAL LETTER M
+004E:LATIN CAPITAL LETTER N
+004F:LATIN CAPITAL LETTER O
+0050:LATIN CAPITAL LETTER P
+0051:LATIN CAPITAL LETTER Q
+0052:LATIN CAPITAL LETTER R
+0053:LATIN CAPITAL LETTER S
+0054:LATIN CAPITAL LETTER T
+0055:LATIN CAPITAL LETTER U
+0056:LATIN CAPITAL LETTER V
+0057:LATIN CAPITAL LETTER W
+0058:LATIN CAPITAL LETTER X
+0059:LATIN CAPITAL LETTER Y
+005A:LATIN CAPITAL LETTER Z
+005B:LEFT SQUARE BRACKET
+005C:REVERSE SOLIDUS
+005D:RIGHT SQUARE BRACKET
+005E:CIRCUMFLEX ACCENT
+005F:LOW LINE
+0060:GRAVE ACCENT
+0061:LATIN SMALL LETTER A
+0062:LATIN SMALL LETTER B
+0063:LATIN SMALL LETTER C
+0064:LATIN SMALL LETTER D
+0065:LATIN SMALL LETTER E
+0066:LATIN SMALL LETTER F
+0067:LATIN SMALL LETTER G
+0068:LATIN SMALL LETTER H
+0069:LATIN SMALL LETTER I
+006A:LATIN SMALL LETTER J
+006B:LATIN SMALL LETTER K
+006C:LATIN SMALL LETTER L
+006D:LATIN SMALL LETTER M
+006E:LATIN SMALL LETTER N
+006F:LATIN SMALL LETTER O
+0070:LATIN SMALL LETTER P
+0071:LATIN SMALL LETTER Q
+0072:LATIN SMALL LETTER R
+0073:LATIN SMALL LETTER S
+0074:LATIN SMALL LETTER T
+0075:LATIN SMALL LETTER U
+0076:LATIN SMALL LETTER V
+0077:LATIN SMALL LETTER W
+0078:LATIN SMALL LETTER X
+0079:LATIN SMALL LETTER Y
+007A:LATIN SMALL LETTER Z
+007B:LEFT CURLY BRACKET
+007C:VERTICAL LINE
+007D:RIGHT CURLY BRACKET
+007E:TILDE
+00A0:NO-BREAK SPACE
+00A1:INVERTED EXCLAMATION MARK
+00A2:CENT SIGN
+00A3:POUND SIGN
+00A4:CURRENCY SIGN
+00A5:YEN SIGN
+00A6:BROKEN BAR
+00A7:SECTION SIGN
+00A8:DIAERESIS
+00A9:COPYRIGHT SIGN
+00AA:FEMININE ORDINAL INDICATOR
+00AB:LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+00AC:NOT SIGN
+00AD:SOFT HYPHEN
+00AE:REGISTERED SIGN
+00AF:MACRON
+00B0:DEGREE SIGN
+00B1:PLUS-MINUS SIGN
+00B2:SUPERSCRIPT TWO
+00B3:SUPERSCRIPT THREE
+00B4:ACUTE ACCENT
+00B5:MICRO SIGN
+00B6:PILCROW SIGN
+00B7:MIDDLE DOT
+00B8:CEDILLA
+00B9:SUPERSCRIPT ONE
+00BA:MASCULINE ORDINAL INDICATOR
+00BB:RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+00BC:VULGAR FRACTION ONE QUARTER
+00BD:VULGAR FRACTION ONE HALF
+00BE:VULGAR FRACTION THREE QUARTERS
+00BF:INVERTED QUESTION MARK
+00C0:LATIN CAPITAL LETTER A WITH GRAVE
+00C1:LATIN CAPITAL LETTER A WITH ACUTE
+00C2:LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+00C3:LATIN CAPITAL LETTER A WITH TILDE
+00C4:LATIN CAPITAL LETTER A WITH DIAERESIS
+00C5:LATIN CAPITAL LETTER A WITH RING ABOVE
+00C6:LATIN CAPITAL LETTER AE
+00C7:LATIN CAPITAL LETTER C WITH CEDILLA
+00C8:LATIN CAPITAL LETTER E WITH GRAVE
+00C9:LATIN CAPITAL LETTER E WITH ACUTE
+00CA:LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+00CB:LATIN CAPITAL LETTER E WITH DIAERESIS
+00CC:LATIN CAPITAL LETTER I WITH GRAVE
+00CD:LATIN CAPITAL LETTER I WITH ACUTE
+00CE:LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+00CF:LATIN CAPITAL LETTER I WITH DIAERESIS
+00D0:LATIN CAPITAL LETTER ETH
+00D1:LATIN CAPITAL LETTER N WITH TILDE
+00D2:LATIN CAPITAL LETTER O WITH GRAVE
+00D3:LATIN CAPITAL LETTER O WITH ACUTE
+00D4:LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+00D5:LATIN CAPITAL LETTER O WITH TILDE
+00D6:LATIN CAPITAL LETTER O WITH DIAERESIS
+00D7:MULTIPLICATION SIGN
+00D8:LATIN CAPITAL LETTER O WITH STROKE
+00D9:LATIN CAPITAL LETTER U WITH GRAVE
+00DA:LATIN CAPITAL LETTER U WITH ACUTE
+00DB:LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+00DC:LATIN CAPITAL LETTER U WITH DIAERESIS
+00DD:LATIN CAPITAL LETTER Y WITH ACUTE
+00DE:LATIN CAPITAL LETTER THORN
+00DF:LATIN SMALL LETTER SHARP S
+00E0:LATIN SMALL LETTER A WITH GRAVE
+00E1:LATIN SMALL LETTER A WITH ACUTE
+00E2:LATIN SMALL LETTER A WITH CIRCUMFLEX
+00E3:LATIN SMALL LETTER A WITH TILDE
+00E4:LATIN SMALL LETTER A WITH DIAERESIS
+00E5:LATIN SMALL LETTER A WITH RING ABOVE
+00E6:LATIN SMALL LETTER AE
+00E7:LATIN SMALL LETTER C WITH CEDILLA
+00E8:LATIN SMALL LETTER E WITH GRAVE
+00E9:LATIN SMALL LETTER E WITH ACUTE
+00EA:LATIN SMALL LETTER E WITH CIRCUMFLEX
+00EB:LATIN SMALL LETTER E WITH DIAERESIS
+00EC:LATIN SMALL LETTER I WITH GRAVE
+00ED:LATIN SMALL LETTER I WITH ACUTE
+00EE:LATIN SMALL LETTER I WITH CIRCUMFLEX
+00EF:LATIN SMALL LETTER I WITH DIAERESIS
+00F0:LATIN SMALL LETTER ETH
+00F1:LATIN SMALL LETTER N WITH TILDE
+00F2:LATIN SMALL LETTER O WITH GRAVE
+00F3:LATIN SMALL LETTER O WITH ACUTE
+00F4:LATIN SMALL LETTER O WITH CIRCUMFLEX
+00F5:LATIN SMALL LETTER O WITH TILDE
+00F6:LATIN SMALL LETTER O WITH DIAERESIS
+00F7:DIVISION SIGN
+00F8:LATIN SMALL LETTER O WITH STROKE
+00F9:LATIN SMALL LETTER U WITH GRAVE
+00FA:LATIN SMALL LETTER U WITH ACUTE
+00FB:LATIN SMALL LETTER U WITH CIRCUMFLEX
+00FC:LATIN SMALL LETTER U WITH DIAERESIS
+00FD:LATIN SMALL LETTER Y WITH ACUTE
+00FE:LATIN SMALL LETTER THORN
+00FF:LATIN SMALL LETTER Y WITH DIAERESIS
+0100:LATIN CAPITAL LETTER A WITH MACRON
+0101:LATIN SMALL LETTER A WITH MACRON
+0102:LATIN CAPITAL LETTER A WITH BREVE
+0103:LATIN SMALL LETTER A WITH BREVE
+0104:LATIN CAPITAL LETTER A WITH OGONEK
+0105:LATIN SMALL LETTER A WITH OGONEK
+0106:LATIN CAPITAL LETTER C WITH ACUTE
+0107:LATIN SMALL LETTER C WITH ACUTE
+0108:LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+0109:LATIN SMALL LETTER C WITH CIRCUMFLEX
+010A:LATIN CAPITAL LETTER C WITH DOT ABOVE
+010B:LATIN SMALL LETTER C WITH DOT ABOVE
+010C:LATIN CAPITAL LETTER C WITH CARON
+010D:LATIN SMALL LETTER C WITH CARON
+010E:LATIN CAPITAL LETTER D WITH CARON
+010F:LATIN SMALL LETTER D WITH CARON
+0110:LATIN CAPITAL LETTER D WITH STROKE
+0111:LATIN SMALL LETTER D WITH STROKE
+0112:LATIN CAPITAL LETTER E WITH MACRON
+0113:LATIN SMALL LETTER E WITH MACRON
+0114:LATIN CAPITAL LETTER E WITH BREVE
+0115:LATIN SMALL LETTER E WITH BREVE
+0116:LATIN CAPITAL LETTER E WITH DOT ABOVE
+0117:LATIN SMALL LETTER E WITH DOT ABOVE
+0118:LATIN CAPITAL LETTER E WITH OGONEK
+0119:LATIN SMALL LETTER E WITH OGONEK
+011A:LATIN CAPITAL LETTER E WITH CARON
+011B:LATIN SMALL LETTER E WITH CARON
+011C:LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+011D:LATIN SMALL LETTER G WITH CIRCUMFLEX
+011E:LATIN CAPITAL LETTER G WITH BREVE
+011F:LATIN SMALL LETTER G WITH BREVE
+0120:LATIN CAPITAL LETTER G WITH DOT ABOVE
+0121:LATIN SMALL LETTER G WITH DOT ABOVE
+0122:LATIN CAPITAL LETTER G WITH CEDILLA
+0123:LATIN SMALL LETTER G WITH CEDILLA
+0124:LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+0125:LATIN SMALL LETTER H WITH CIRCUMFLEX
+0126:LATIN CAPITAL LETTER H WITH STROKE
+0127:LATIN SMALL LETTER H WITH STROKE
+0128:LATIN CAPITAL LETTER I WITH TILDE
+0129:LATIN SMALL LETTER I WITH TILDE
+012A:LATIN CAPITAL LETTER I WITH MACRON
+012B:LATIN SMALL LETTER I WITH MACRON
+012C:LATIN CAPITAL LETTER I WITH BREVE
+012D:LATIN SMALL LETTER I WITH BREVE
+012E:LATIN CAPITAL LETTER I WITH OGONEK
+012F:LATIN SMALL LETTER I WITH OGONEK
+0130:LATIN CAPITAL LETTER I WITH DOT ABOVE
+0131:LATIN SMALL LETTER DOTLESS I
+0132:LATIN CAPITAL LIGATURE IJ
+0133:LATIN SMALL LIGATURE IJ
+0134:LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+0135:LATIN SMALL LETTER J WITH CIRCUMFLEX
+0136:LATIN CAPITAL LETTER K WITH CEDILLA
+0137:LATIN SMALL LETTER K WITH CEDILLA
+0138:LATIN SMALL LETTER KRA
+0139:LATIN CAPITAL LETTER L WITH ACUTE
+013A:LATIN SMALL LETTER L WITH ACUTE
+013B:LATIN CAPITAL LETTER L WITH CEDILLA
+013C:LATIN SMALL LETTER L WITH CEDILLA
+013D:LATIN CAPITAL LETTER L WITH CARON
+013E:LATIN SMALL LETTER L WITH CARON
+013F:LATIN CAPITAL LETTER L WITH MIDDLE DOT
+0140:LATIN SMALL LETTER L WITH MIDDLE DOT
+0141:LATIN CAPITAL LETTER L WITH STROKE
+0142:LATIN SMALL LETTER L WITH STROKE
+0143:LATIN CAPITAL LETTER N WITH ACUTE
+0144:LATIN SMALL LETTER N WITH ACUTE
+0145:LATIN CAPITAL LETTER N WITH CEDILLA
+0146:LATIN SMALL LETTER N WITH CEDILLA
+0147:LATIN CAPITAL LETTER N WITH CARON
+0148:LATIN SMALL LETTER N WITH CARON
+0149:LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+014A:LATIN CAPITAL LETTER ENG
+014B:LATIN SMALL LETTER ENG
+014C:LATIN CAPITAL LETTER O WITH MACRON
+014D:LATIN SMALL LETTER O WITH MACRON
+014E:LATIN CAPITAL LETTER O WITH BREVE
+014F:LATIN SMALL LETTER O WITH BREVE
+0150:LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+0151:LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0152:LATIN CAPITAL LIGATURE OE
+0153:LATIN SMALL LIGATURE OE
+0154:LATIN CAPITAL LETTER R WITH ACUTE
+0155:LATIN SMALL LETTER R WITH ACUTE
+0156:LATIN CAPITAL LETTER R WITH CEDILLA
+0157:LATIN SMALL LETTER R WITH CEDILLA
+0158:LATIN CAPITAL LETTER R WITH CARON
+0159:LATIN SMALL LETTER R WITH CARON
+015A:LATIN CAPITAL LETTER S WITH ACUTE
+015B:LATIN SMALL LETTER S WITH ACUTE
+015C:LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+015D:LATIN SMALL LETTER S WITH CIRCUMFLEX
+015E:LATIN CAPITAL LETTER S WITH CEDILLA
+015F:LATIN SMALL LETTER S WITH CEDILLA
+0160:LATIN CAPITAL LETTER S WITH CARON
+0161:LATIN SMALL LETTER S WITH CARON
+0162:LATIN CAPITAL LETTER T WITH CEDILLA
+0163:LATIN SMALL LETTER T WITH CEDILLA
+0164:LATIN CAPITAL LETTER T WITH CARON
+0165:LATIN SMALL LETTER T WITH CARON
+0166:LATIN CAPITAL LETTER T WITH STROKE
+0167:LATIN SMALL LETTER T WITH STROKE
+0168:LATIN CAPITAL LETTER U WITH TILDE
+0169:LATIN SMALL LETTER U WITH TILDE
+016A:LATIN CAPITAL LETTER U WITH MACRON
+016B:LATIN SMALL LETTER U WITH MACRON
+016C:LATIN CAPITAL LETTER U WITH BREVE
+016D:LATIN SMALL LETTER U WITH BREVE
+016E:LATIN CAPITAL LETTER U WITH RING ABOVE
+016F:LATIN SMALL LETTER U WITH RING ABOVE
+0170:LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0171:LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0172:LATIN CAPITAL LETTER U WITH OGONEK
+0173:LATIN SMALL LETTER U WITH OGONEK
+0174:LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+0175:LATIN SMALL LETTER W WITH CIRCUMFLEX
+0176:LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+0177:LATIN SMALL LETTER Y WITH CIRCUMFLEX
+0178:LATIN CAPITAL LETTER Y WITH DIAERESIS
+0179:LATIN CAPITAL LETTER Z WITH ACUTE
+017A:LATIN SMALL LETTER Z WITH ACUTE
+017B:LATIN CAPITAL LETTER Z WITH DOT ABOVE
+017C:LATIN SMALL LETTER Z WITH DOT ABOVE
+017D:LATIN CAPITAL LETTER Z WITH CARON
+017E:LATIN SMALL LETTER Z WITH CARON
+017F:LATIN SMALL LETTER LONG S
+018F:LATIN CAPITAL LETTER SCHWA
+0192:LATIN SMALL LETTER F WITH HOOK
+01B7:LATIN CAPITAL LETTER EZH
+01DE:LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+01DF:LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01E0:LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+01E1:LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+01E2:LATIN CAPITAL LETTER AE WITH MACRON
+01E3:LATIN SMALL LETTER AE WITH MACRON
+01E4:LATIN CAPITAL LETTER G WITH STROKE
+01E5:LATIN SMALL LETTER G WITH STROKE
+01E6:LATIN CAPITAL LETTER G WITH CARON
+01E7:LATIN SMALL LETTER G WITH CARON
+01E8:LATIN CAPITAL LETTER K WITH CARON
+01E9:LATIN SMALL LETTER K WITH CARON
+01EA:LATIN CAPITAL LETTER O WITH OGONEK
+01EB:LATIN SMALL LETTER O WITH OGONEK
+01EC:LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+01ED:LATIN SMALL LETTER O WITH OGONEK AND MACRON
+01EE:LATIN CAPITAL LETTER EZH WITH CARON
+01EF:LATIN SMALL LETTER EZH WITH CARON
+01FA:LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+01FB:LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FC:LATIN CAPITAL LETTER AE WITH ACUTE
+01FD:LATIN SMALL LETTER AE WITH ACUTE
+01FE:LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+01FF:LATIN SMALL LETTER O WITH STROKE AND ACUTE
+0218:LATIN CAPITAL LETTER S WITH COMMA BELOW
+0219:LATIN SMALL LETTER S WITH COMMA BELOW
+021A:LATIN CAPITAL LETTER T WITH COMMA BELOW
+021B:LATIN SMALL LETTER T WITH COMMA BELOW
+021E:LATIN CAPITAL LETTER H WITH CARON
+021F:LATIN SMALL LETTER H WITH CARON
+0259:LATIN SMALL LETTER SCHWA
+027C:LATIN SMALL LETTER R WITH LONG LEG
+0292:LATIN SMALL LETTER EZH
+02BB:MODIFIER LETTER TURNED COMMA
+02BC:MODIFIER LETTER APOSTROPHE
+02BD:MODIFIER LETTER REVERSED COMMA
+02C6:MODIFIER LETTER CIRCUMFLEX ACCENT
+02C7:CARON
+02C9:MODIFIER LETTER MACRON
+02D8:BREVE
+02D9:DOT ABOVE
+02DA:RING ABOVE
+02DB:OGONEK
+02DC:SMALL TILDE
+02DD:DOUBLE ACUTE ACCENT
+02EE:MODIFIER LETTER DOUBLE APOSTROPHE
+0374:GREEK NUMERAL SIGN
+0375:GREEK LOWER NUMERAL SIGN
+037A:GREEK YPOGEGRAMMENI
+037E:GREEK QUESTION MARK
+0384:GREEK TONOS
+0385:GREEK DIALYTIKA TONOS
+0386:GREEK CAPITAL LETTER ALPHA WITH TONOS
+0387:GREEK ANO TELEIA
+0388:GREEK CAPITAL LETTER EPSILON WITH TONOS
+0389:GREEK CAPITAL LETTER ETA WITH TONOS
+038A:GREEK CAPITAL LETTER IOTA WITH TONOS
+038C:GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E:GREEK CAPITAL LETTER UPSILON WITH TONOS
+038F:GREEK CAPITAL LETTER OMEGA WITH TONOS
+0390:GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+0391:GREEK CAPITAL LETTER ALPHA
+0392:GREEK CAPITAL LETTER BETA
+0393:GREEK CAPITAL LETTER GAMMA
+0394:GREEK CAPITAL LETTER DELTA
+0395:GREEK CAPITAL LETTER EPSILON
+0396:GREEK CAPITAL LETTER ZETA
+0397:GREEK CAPITAL LETTER ETA
+0398:GREEK CAPITAL LETTER THETA
+0399:GREEK CAPITAL LETTER IOTA
+039A:GREEK CAPITAL LETTER KAPPA
+039B:GREEK CAPITAL LETTER LAMDA
+039C:GREEK CAPITAL LETTER MU
+039D:GREEK CAPITAL LETTER NU
+039E:GREEK CAPITAL LETTER XI
+039F:GREEK CAPITAL LETTER OMICRON
+03A0:GREEK CAPITAL LETTER PI
+03A1:GREEK CAPITAL LETTER RHO
+03A3:GREEK CAPITAL LETTER SIGMA
+03A4:GREEK CAPITAL LETTER TAU
+03A5:GREEK CAPITAL LETTER UPSILON
+03A6:GREEK CAPITAL LETTER PHI
+03A7:GREEK CAPITAL LETTER CHI
+03A8:GREEK CAPITAL LETTER PSI
+03A9:GREEK CAPITAL LETTER OMEGA
+03AA:GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+03AB:GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+03AC:GREEK SMALL LETTER ALPHA WITH TONOS
+03AD:GREEK SMALL LETTER EPSILON WITH TONOS
+03AE:GREEK SMALL LETTER ETA WITH TONOS
+03AF:GREEK SMALL LETTER IOTA WITH TONOS
+03B0:GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+03B1:GREEK SMALL LETTER ALPHA
+03B2:GREEK SMALL LETTER BETA
+03B3:GREEK SMALL LETTER GAMMA
+03B4:GREEK SMALL LETTER DELTA
+03B5:GREEK SMALL LETTER EPSILON
+03B6:GREEK SMALL LETTER ZETA
+03B7:GREEK SMALL LETTER ETA
+03B8:GREEK SMALL LETTER THETA
+03B9:GREEK SMALL LETTER IOTA
+03BA:GREEK SMALL LETTER KAPPA
+03BB:GREEK SMALL LETTER LAMDA
+03BC:GREEK SMALL LETTER MU
+03BD:GREEK SMALL LETTER NU
+03BE:GREEK SMALL LETTER XI
+03BF:GREEK SMALL LETTER OMICRON
+03C0:GREEK SMALL LETTER PI
+03C1:GREEK SMALL LETTER RHO
+03C2:GREEK SMALL LETTER FINAL SIGMA
+03C3:GREEK SMALL LETTER SIGMA
+03C4:GREEK SMALL LETTER TAU
+03C5:GREEK SMALL LETTER UPSILON
+03C6:GREEK SMALL LETTER PHI
+03C7:GREEK SMALL LETTER CHI
+03C8:GREEK SMALL LETTER PSI
+03C9:GREEK SMALL LETTER OMEGA
+03CA:GREEK SMALL LETTER IOTA WITH DIALYTIKA
+03CB:GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+03CC:GREEK SMALL LETTER OMICRON WITH TONOS
+03CD:GREEK SMALL LETTER UPSILON WITH TONOS
+03CE:GREEK SMALL LETTER OMEGA WITH TONOS
+03D7:GREEK KAI SYMBOL
+03DA:GREEK LETTER STIGMA
+03DB:GREEK SMALL LETTER STIGMA
+03DC:GREEK LETTER DIGAMMA
+03DD:GREEK SMALL LETTER DIGAMMA
+03DE:GREEK LETTER KOPPA
+03DF:GREEK SMALL LETTER KOPPA
+03E0:GREEK LETTER SAMPI
+03E1:GREEK SMALL LETTER SAMPI
+0400:CYRILLIC CAPITAL LETTER IE WITH GRAVE
+0401:CYRILLIC CAPITAL LETTER IO
+0402:CYRILLIC CAPITAL LETTER DJE
+0403:CYRILLIC CAPITAL LETTER GJE
+0404:CYRILLIC CAPITAL LETTER UKRAINIAN IE
+0405:CYRILLIC CAPITAL LETTER DZE
+0406:CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+0407:CYRILLIC CAPITAL LETTER YI
+0408:CYRILLIC CAPITAL LETTER JE
+0409:CYRILLIC CAPITAL LETTER LJE
+040A:CYRILLIC CAPITAL LETTER NJE
+040B:CYRILLIC CAPITAL LETTER TSHE
+040C:CYRILLIC CAPITAL LETTER KJE
+040D:CYRILLIC CAPITAL LETTER I WITH GRAVE
+040E:CYRILLIC CAPITAL LETTER SHORT U
+040F:CYRILLIC CAPITAL LETTER DZHE
+0410:CYRILLIC CAPITAL LETTER A
+0411:CYRILLIC CAPITAL LETTER BE
+0412:CYRILLIC CAPITAL LETTER VE
+0413:CYRILLIC CAPITAL LETTER GHE
+0414:CYRILLIC CAPITAL LETTER DE
+0415:CYRILLIC CAPITAL LETTER IE
+0416:CYRILLIC CAPITAL LETTER ZHE
+0417:CYRILLIC CAPITAL LETTER ZE
+0418:CYRILLIC CAPITAL LETTER I
+0419:CYRILLIC CAPITAL LETTER SHORT I
+041A:CYRILLIC CAPITAL LETTER KA
+041B:CYRILLIC CAPITAL LETTER EL
+041C:CYRILLIC CAPITAL LETTER EM
+041D:CYRILLIC CAPITAL LETTER EN
+041E:CYRILLIC CAPITAL LETTER O
+041F:CYRILLIC CAPITAL LETTER PE
+0420:CYRILLIC CAPITAL LETTER ER
+0421:CYRILLIC CAPITAL LETTER ES
+0422:CYRILLIC CAPITAL LETTER TE
+0423:CYRILLIC CAPITAL LETTER U
+0424:CYRILLIC CAPITAL LETTER EF
+0425:CYRILLIC CAPITAL LETTER HA
+0426:CYRILLIC CAPITAL LETTER TSE
+0427:CYRILLIC CAPITAL LETTER CHE
+0428:CYRILLIC CAPITAL LETTER SHA
+0429:CYRILLIC CAPITAL LETTER SHCHA
+042A:CYRILLIC CAPITAL LETTER HARD SIGN
+042B:CYRILLIC CAPITAL LETTER YERU
+042C:CYRILLIC CAPITAL LETTER SOFT SIGN
+042D:CYRILLIC CAPITAL LETTER E
+042E:CYRILLIC CAPITAL LETTER YU
+042F:CYRILLIC CAPITAL LETTER YA
+0430:CYRILLIC SMALL LETTER A
+0431:CYRILLIC SMALL LETTER BE
+0432:CYRILLIC SMALL LETTER VE
+0433:CYRILLIC SMALL LETTER GHE
+0434:CYRILLIC SMALL LETTER DE
+0435:CYRILLIC SMALL LETTER IE
+0436:CYRILLIC SMALL LETTER ZHE
+0437:CYRILLIC SMALL LETTER ZE
+0438:CYRILLIC SMALL LETTER I
+0439:CYRILLIC SMALL LETTER SHORT I
+043A:CYRILLIC SMALL LETTER KA
+043B:CYRILLIC SMALL LETTER EL
+043C:CYRILLIC SMALL LETTER EM
+043D:CYRILLIC SMALL LETTER EN
+043E:CYRILLIC SMALL LETTER O
+043F:CYRILLIC SMALL LETTER PE
+0440:CYRILLIC SMALL LETTER ER
+0441:CYRILLIC SMALL LETTER ES
+0442:CYRILLIC SMALL LETTER TE
+0443:CYRILLIC SMALL LETTER U
+0444:CYRILLIC SMALL LETTER EF
+0445:CYRILLIC SMALL LETTER HA
+0446:CYRILLIC SMALL LETTER TSE
+0447:CYRILLIC SMALL LETTER CHE
+0448:CYRILLIC SMALL LETTER SHA
+0449:CYRILLIC SMALL LETTER SHCHA
+044A:CYRILLIC SMALL LETTER HARD SIGN
+044B:CYRILLIC SMALL LETTER YERU
+044C:CYRILLIC SMALL LETTER SOFT SIGN
+044D:CYRILLIC SMALL LETTER E
+044E:CYRILLIC SMALL LETTER YU
+044F:CYRILLIC SMALL LETTER YA
+0450:CYRILLIC SMALL LETTER IE WITH GRAVE
+0451:CYRILLIC SMALL LETTER IO
+0452:CYRILLIC SMALL LETTER DJE
+0453:CYRILLIC SMALL LETTER GJE
+0454:CYRILLIC SMALL LETTER UKRAINIAN IE
+0455:CYRILLIC SMALL LETTER DZE
+0456:CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+0457:CYRILLIC SMALL LETTER YI
+0458:CYRILLIC SMALL LETTER JE
+0459:CYRILLIC SMALL LETTER LJE
+045A:CYRILLIC SMALL LETTER NJE
+045B:CYRILLIC SMALL LETTER TSHE
+045C:CYRILLIC SMALL LETTER KJE
+045D:CYRILLIC SMALL LETTER I WITH GRAVE
+045E:CYRILLIC SMALL LETTER SHORT U
+045F:CYRILLIC SMALL LETTER DZHE
+0490:CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+0491:CYRILLIC SMALL LETTER GHE WITH UPTURN
+0492:CYRILLIC CAPITAL LETTER GHE WITH STROKE
+0493:CYRILLIC SMALL LETTER GHE WITH STROKE
+0494:CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
+0495:CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK
+0496:CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
+0497:CYRILLIC SMALL LETTER ZHE WITH DESCENDER
+0498:CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
+0499:CYRILLIC SMALL LETTER ZE WITH DESCENDER
+049A:CYRILLIC CAPITAL LETTER KA WITH DESCENDER
+049B:CYRILLIC SMALL LETTER KA WITH DESCENDER
+049C:CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
+049D:CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
+049E:CYRILLIC CAPITAL LETTER KA WITH STROKE
+049F:CYRILLIC SMALL LETTER KA WITH STROKE
+04A0:CYRILLIC CAPITAL LETTER BASHKIR KA
+04A1:CYRILLIC SMALL LETTER BASHKIR KA
+04A2:CYRILLIC CAPITAL LETTER EN WITH DESCENDER
+04A3:CYRILLIC SMALL LETTER EN WITH DESCENDER
+04A4:CYRILLIC CAPITAL LIGATURE EN GHE
+04A5:CYRILLIC SMALL LIGATURE EN GHE
+04A6:CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
+04A7:CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK
+04A8:CYRILLIC CAPITAL LETTER ABKHASIAN HA
+04A9:CYRILLIC SMALL LETTER ABKHASIAN HA
+04AA:CYRILLIC CAPITAL LETTER ES WITH DESCENDER
+04AB:CYRILLIC SMALL LETTER ES WITH DESCENDER
+04AC:CYRILLIC CAPITAL LETTER TE WITH DESCENDER
+04AD:CYRILLIC SMALL LETTER TE WITH DESCENDER
+04AE:CYRILLIC CAPITAL LETTER STRAIGHT U
+04AF:CYRILLIC SMALL LETTER STRAIGHT U
+04B0:CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+04B1:CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
+04B2:CYRILLIC CAPITAL LETTER HA WITH DESCENDER
+04B3:CYRILLIC SMALL LETTER HA WITH DESCENDER
+04B4:CYRILLIC CAPITAL LIGATURE TE TSE
+04B5:CYRILLIC SMALL LIGATURE TE TSE
+04B6:CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
+04B7:CYRILLIC SMALL LETTER CHE WITH DESCENDER
+04B8:CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
+04B9:CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
+04BA:CYRILLIC CAPITAL LETTER SHHA
+04BB:CYRILLIC SMALL LETTER SHHA
+04BC:CYRILLIC CAPITAL LETTER ABKHASIAN CHE
+04BD:CYRILLIC SMALL LETTER ABKHASIAN CHE
+04BE:CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
+04BF:CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER
+04C0:CYRILLIC LETTER PALOCHKA
+04C1:CYRILLIC CAPITAL LETTER ZHE WITH BREVE
+04C2:CYRILLIC SMALL LETTER ZHE WITH BREVE
+04C3:CYRILLIC CAPITAL LETTER KA WITH HOOK
+04C4:CYRILLIC SMALL LETTER KA WITH HOOK
+04C7:CYRILLIC CAPITAL LETTER EN WITH HOOK
+04C8:CYRILLIC SMALL LETTER EN WITH HOOK
+04CB:CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
+04CC:CYRILLIC SMALL LETTER KHAKASSIAN CHE
+04D0:CYRILLIC CAPITAL LETTER A WITH BREVE
+04D1:CYRILLIC SMALL LETTER A WITH BREVE
+04D2:CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+04D3:CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D4:CYRILLIC CAPITAL LIGATURE A IE
+04D5:CYRILLIC SMALL LIGATURE A IE
+04D6:CYRILLIC CAPITAL LETTER IE WITH BREVE
+04D7:CYRILLIC SMALL LETTER IE WITH BREVE
+04D8:CYRILLIC CAPITAL LETTER SCHWA
+04D9:CYRILLIC SMALL LETTER SCHWA
+04DA:CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+04DB:CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+04DC:CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+04DD:CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+04DE:CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+04DF:CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04E0:CYRILLIC CAPITAL LETTER ABKHASIAN DZE
+04E1:CYRILLIC SMALL LETTER ABKHASIAN DZE
+04E2:CYRILLIC CAPITAL LETTER I WITH MACRON
+04E3:CYRILLIC SMALL LETTER I WITH MACRON
+04E4:CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+04E5:CYRILLIC SMALL LETTER I WITH DIAERESIS
+04E6:CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+04E7:CYRILLIC SMALL LETTER O WITH DIAERESIS
+04E8:CYRILLIC CAPITAL LETTER BARRED O
+04E9:CYRILLIC SMALL LETTER BARRED O
+04EA:CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+04EB:CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+04EE:CYRILLIC CAPITAL LETTER U WITH MACRON
+04EF:CYRILLIC SMALL LETTER U WITH MACRON
+04F0:CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+04F1:CYRILLIC SMALL LETTER U WITH DIAERESIS
+04F2:CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+04F3:CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+04F4:CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+04F5:CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F8:CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+04F9:CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+1E02:LATIN CAPITAL LETTER B WITH DOT ABOVE
+1E03:LATIN SMALL LETTER B WITH DOT ABOVE
+1E0A:LATIN CAPITAL LETTER D WITH DOT ABOVE
+1E0B:LATIN SMALL LETTER D WITH DOT ABOVE
+1E1E:LATIN CAPITAL LETTER F WITH DOT ABOVE
+1E1F:LATIN SMALL LETTER F WITH DOT ABOVE
+1E40:LATIN CAPITAL LETTER M WITH DOT ABOVE
+1E41:LATIN SMALL LETTER M WITH DOT ABOVE
+1E56:LATIN CAPITAL LETTER P WITH DOT ABOVE
+1E57:LATIN SMALL LETTER P WITH DOT ABOVE
+1E60:LATIN CAPITAL LETTER S WITH DOT ABOVE
+1E61:LATIN SMALL LETTER S WITH DOT ABOVE
+1E6A:LATIN CAPITAL LETTER T WITH DOT ABOVE
+1E6B:LATIN SMALL LETTER T WITH DOT ABOVE
+1E80:LATIN CAPITAL LETTER W WITH GRAVE
+1E81:LATIN SMALL LETTER W WITH GRAVE
+1E82:LATIN CAPITAL LETTER W WITH ACUTE
+1E83:LATIN SMALL LETTER W WITH ACUTE
+1E84:LATIN CAPITAL LETTER W WITH DIAERESIS
+1E85:LATIN SMALL LETTER W WITH DIAERESIS
+1E9B:LATIN SMALL LETTER LONG S WITH DOT ABOVE
+1EF2:LATIN CAPITAL LETTER Y WITH GRAVE
+1EF3:LATIN SMALL LETTER Y WITH GRAVE
+1F00:GREEK SMALL LETTER ALPHA WITH PSILI
+1F01:GREEK SMALL LETTER ALPHA WITH DASIA
+1F02:GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+1F03:GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+1F04:GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+1F05:GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+1F06:GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+1F07:GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+1F08:GREEK CAPITAL LETTER ALPHA WITH PSILI
+1F09:GREEK CAPITAL LETTER ALPHA WITH DASIA
+1F0A:GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+1F0B:GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+1F0C:GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+1F0D:GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+1F0E:GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+1F0F:GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+1F10:GREEK SMALL LETTER EPSILON WITH PSILI
+1F11:GREEK SMALL LETTER EPSILON WITH DASIA
+1F12:GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+1F13:GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+1F14:GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+1F15:GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+1F18:GREEK CAPITAL LETTER EPSILON WITH PSILI
+1F19:GREEK CAPITAL LETTER EPSILON WITH DASIA
+1F1A:GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+1F1B:GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+1F1C:GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+1F1D:GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F20:GREEK SMALL LETTER ETA WITH PSILI
+1F21:GREEK SMALL LETTER ETA WITH DASIA
+1F22:GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+1F23:GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+1F24:GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+1F25:GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+1F26:GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+1F27:GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+1F28:GREEK CAPITAL LETTER ETA WITH PSILI
+1F29:GREEK CAPITAL LETTER ETA WITH DASIA
+1F2A:GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+1F2B:GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+1F2C:GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+1F2D:GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+1F2E:GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+1F2F:GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+1F30:GREEK SMALL LETTER IOTA WITH PSILI
+1F31:GREEK SMALL LETTER IOTA WITH DASIA
+1F32:GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+1F33:GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+1F34:GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+1F35:GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+1F36:GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+1F37:GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+1F38:GREEK CAPITAL LETTER IOTA WITH PSILI
+1F39:GREEK CAPITAL LETTER IOTA WITH DASIA
+1F3A:GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+1F3B:GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+1F3C:GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+1F3D:GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+1F3E:GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+1F3F:GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+1F40:GREEK SMALL LETTER OMICRON WITH PSILI
+1F41:GREEK SMALL LETTER OMICRON WITH DASIA
+1F42:GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+1F43:GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+1F44:GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+1F45:GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+1F48:GREEK CAPITAL LETTER OMICRON WITH PSILI
+1F49:GREEK CAPITAL LETTER OMICRON WITH DASIA
+1F4A:GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+1F4B:GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+1F4C:GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+1F4D:GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F50:GREEK SMALL LETTER UPSILON WITH PSILI
+1F51:GREEK SMALL LETTER UPSILON WITH DASIA
+1F52:GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+1F53:GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+1F54:GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+1F55:GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+1F56:GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+1F57:GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F59:GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F5B:GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F5D:GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F5F:GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F60:GREEK SMALL LETTER OMEGA WITH PSILI
+1F61:GREEK SMALL LETTER OMEGA WITH DASIA
+1F62:GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+1F63:GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+1F64:GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+1F65:GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+1F66:GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+1F67:GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+1F68:GREEK CAPITAL LETTER OMEGA WITH PSILI
+1F69:GREEK CAPITAL LETTER OMEGA WITH DASIA
+1F6A:GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+1F6B:GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+1F6C:GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+1F6D:GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+1F6E:GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+1F6F:GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+1F70:GREEK SMALL LETTER ALPHA WITH VARIA
+1F71:GREEK SMALL LETTER ALPHA WITH OXIA
+1F72:GREEK SMALL LETTER EPSILON WITH VARIA
+1F73:GREEK SMALL LETTER EPSILON WITH OXIA
+1F74:GREEK SMALL LETTER ETA WITH VARIA
+1F75:GREEK SMALL LETTER ETA WITH OXIA
+1F76:GREEK SMALL LETTER IOTA WITH VARIA
+1F77:GREEK SMALL LETTER IOTA WITH OXIA
+1F78:GREEK SMALL LETTER OMICRON WITH VARIA
+1F79:GREEK SMALL LETTER OMICRON WITH OXIA
+1F7A:GREEK SMALL LETTER UPSILON WITH VARIA
+1F7B:GREEK SMALL LETTER UPSILON WITH OXIA
+1F7C:GREEK SMALL LETTER OMEGA WITH VARIA
+1F7D:GREEK SMALL LETTER OMEGA WITH OXIA
+1F80:GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+1F81:GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+1F82:GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F83:GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F84:GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F85:GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F86:GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F87:GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F88:GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+1F89:GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+1F8A:GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F8B:GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F8C:GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F8D:GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F8E:GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F8F:GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1F90:GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+1F91:GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+1F92:GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F93:GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F94:GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F95:GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F96:GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F97:GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F98:GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+1F99:GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+1F9A:GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F9B:GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F9C:GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F9D:GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F9E:GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F9F:GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FA0:GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+1FA1:GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+1FA2:GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1FA3:GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1FA4:GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1FA5:GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1FA6:GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1FA7:GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1FA8:GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+1FA9:GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+1FAA:GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1FAB:GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1FAC:GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1FAD:GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1FAE:GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1FAF:GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FB0:GREEK SMALL LETTER ALPHA WITH VRACHY
+1FB1:GREEK SMALL LETTER ALPHA WITH MACRON
+1FB2:GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+1FB3:GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+1FB4:GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FB6:GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+1FB7:GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FB8:GREEK CAPITAL LETTER ALPHA WITH VRACHY
+1FB9:GREEK CAPITAL LETTER ALPHA WITH MACRON
+1FBA:GREEK CAPITAL LETTER ALPHA WITH VARIA
+1FBB:GREEK CAPITAL LETTER ALPHA WITH OXIA
+1FBC:GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FBD:GREEK KORONIS
+1FBE:GREEK PROSGEGRAMMENI
+1FBF:GREEK PSILI
+1FC0:GREEK PERISPOMENI
+1FC1:GREEK DIALYTIKA AND PERISPOMENI
+1FC2:GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+1FC3:GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+1FC4:GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FC6:GREEK SMALL LETTER ETA WITH PERISPOMENI
+1FC7:GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FC8:GREEK CAPITAL LETTER EPSILON WITH VARIA
+1FC9:GREEK CAPITAL LETTER EPSILON WITH OXIA
+1FCA:GREEK CAPITAL LETTER ETA WITH VARIA
+1FCB:GREEK CAPITAL LETTER ETA WITH OXIA
+1FCC:GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FCD:GREEK PSILI AND VARIA
+1FCE:GREEK PSILI AND OXIA
+1FCF:GREEK PSILI AND PERISPOMENI
+1FD0:GREEK SMALL LETTER IOTA WITH VRACHY
+1FD1:GREEK SMALL LETTER IOTA WITH MACRON
+1FD2:GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+1FD3:GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6:GREEK SMALL LETTER IOTA WITH PERISPOMENI
+1FD7:GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+1FD8:GREEK CAPITAL LETTER IOTA WITH VRACHY
+1FD9:GREEK CAPITAL LETTER IOTA WITH MACRON
+1FDA:GREEK CAPITAL LETTER IOTA WITH VARIA
+1FDB:GREEK CAPITAL LETTER IOTA WITH OXIA
+1FDD:GREEK DASIA AND VARIA
+1FDE:GREEK DASIA AND OXIA
+1FDF:GREEK DASIA AND PERISPOMENI
+1FE0:GREEK SMALL LETTER UPSILON WITH VRACHY
+1FE1:GREEK SMALL LETTER UPSILON WITH MACRON
+1FE2:GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+1FE3:GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+1FE4:GREEK SMALL LETTER RHO WITH PSILI
+1FE5:GREEK SMALL LETTER RHO WITH DASIA
+1FE6:GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+1FE7:GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+1FE8:GREEK CAPITAL LETTER UPSILON WITH VRACHY
+1FE9:GREEK CAPITAL LETTER UPSILON WITH MACRON
+1FEA:GREEK CAPITAL LETTER UPSILON WITH VARIA
+1FEB:GREEK CAPITAL LETTER UPSILON WITH OXIA
+1FEC:GREEK CAPITAL LETTER RHO WITH DASIA
+1FED:GREEK DIALYTIKA AND VARIA
+1FEE:GREEK DIALYTIKA AND OXIA
+1FEF:GREEK VARIA
+1FF2:GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+1FF3:GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+1FF4:GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1FF6:GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+1FF7:GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FF8:GREEK CAPITAL LETTER OMICRON WITH VARIA
+1FF9:GREEK CAPITAL LETTER OMICRON WITH OXIA
+1FFA:GREEK CAPITAL LETTER OMEGA WITH VARIA
+1FFB:GREEK CAPITAL LETTER OMEGA WITH OXIA
+1FFC:GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+1FFD:GREEK OXIA
+1FFE:GREEK DASIA
+2013:EN DASH
+2014:EM DASH
+2015:HORIZONTAL BAR
+2017:DOUBLE LOW LINE
+2018:LEFT SINGLE QUOTATION MARK
+2019:RIGHT SINGLE QUOTATION MARK
+201A:SINGLE LOW-9 QUOTATION MARK
+201B:SINGLE HIGH-REVERSED-9 QUOTATION MARK
+201C:LEFT DOUBLE QUOTATION MARK
+201D:RIGHT DOUBLE QUOTATION MARK
+201E:DOUBLE LOW-9 QUOTATION MARK
+2020:DAGGER
+2021:DOUBLE DAGGER
+2022:BULLET
+2026:HORIZONTAL ELLIPSIS
+2030:PER MILLE SIGN
+2032:PRIME
+2033:DOUBLE PRIME
+2039:SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+203A:SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+203C:DOUBLE EXCLAMATION MARK
+203E:OVERLINE
+2044:FRACTION SLASH
+204A:TIRONIAN SIGN ET
+207F:SUPERSCRIPT LATIN SMALL LETTER N
+2082:SUBSCRIPT TWO
+20A3:FRENCH FRANC SIGN
+20A4:LIRA SIGN
+20A7:PESETA SIGN
+20AC:EURO SIGN
+20AF:DRACHMA SIGN
+2105:CARE OF
+2116:NUMERO SIGN
+2122:TRADE MARK SIGN
+2126:OHM SIGN
+215B:VULGAR FRACTION ONE EIGHTH
+215C:VULGAR FRACTION THREE EIGHTHS
+215D:VULGAR FRACTION FIVE EIGHTHS
+215E:VULGAR FRACTION SEVEN EIGHTHS
+2190:LEFTWARDS ARROW
+2191:UPWARDS ARROW
+2192:RIGHTWARDS ARROW
+2193:DOWNWARDS ARROW
+2194:LEFT RIGHT ARROW
+2195:UP DOWN ARROW
+21A8:UP DOWN ARROW WITH BASE
+2200:FOR ALL
+2202:PARTIAL DIFFERENTIAL
+2203:THERE EXISTS
+2206:INCREMENT
+2208:ELEMENT OF
+2209:NOT AN ELEMENT OF
+220F:N-ARY PRODUCT
+2211:N-ARY SUMMATION
+2212:MINUS SIGN
+2219:BULLET OPERATOR
+221A:SQUARE ROOT
+221E:INFINITY
+221F:RIGHT ANGLE
+2227:LOGICAL AND
+2228:LOGICAL OR
+2229:INTERSECTION
+222A:UNION
+222B:INTEGRAL
+2248:ALMOST EQUAL TO
+2259:ESTIMATES
+2260:NOT EQUAL TO
+2261:IDENTICAL TO
+2264:LESS-THAN OR EQUAL TO
+2265:GREATER-THAN OR EQUAL TO
+2282:SUBSET OF
+2283:SUPERSET OF
+2295:CIRCLED PLUS
+2297:CIRCLED TIMES
+2302:HOUSE
+2310:REVERSED NOT SIGN
+2320:TOP HALF INTEGRAL
+2321:BOTTOM HALF INTEGRAL
+2329:LEFT-POINTING ANGLE BRACKET
+232A:RIGHT-POINTING ANGLE BRACKET
+2500:BOX DRAWINGS LIGHT HORIZONTAL
+2502:BOX DRAWINGS LIGHT VERTICAL
+250C:BOX DRAWINGS LIGHT DOWN AND RIGHT
+2510:BOX DRAWINGS LIGHT DOWN AND LEFT
+2514:BOX DRAWINGS LIGHT UP AND RIGHT
+2518:BOX DRAWINGS LIGHT UP AND LEFT
+251C:BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+2524:BOX DRAWINGS LIGHT VERTICAL AND LEFT
+252C:BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+2534:BOX DRAWINGS LIGHT UP AND HORIZONTAL
+253C:BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+2550:BOX DRAWINGS DOUBLE HORIZONTAL
+2551:BOX DRAWINGS DOUBLE VERTICAL
+2552:BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+2553:BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+2554:BOX DRAWINGS DOUBLE DOWN AND RIGHT
+2555:BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+2556:BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+2557:BOX DRAWINGS DOUBLE DOWN AND LEFT
+2558:BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+2559:BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+255A:BOX DRAWINGS DOUBLE UP AND RIGHT
+255B:BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+255C:BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+255D:BOX DRAWINGS DOUBLE UP AND LEFT
+255E:BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+255F:BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+2560:BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+2561:BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+2562:BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+2563:BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+2564:BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+2565:BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+2566:BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+2567:BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+2568:BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+2569:BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+256A:BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+256B:BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+256C:BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+2580:UPPER HALF BLOCK
+2584:LOWER HALF BLOCK
+2588:FULL BLOCK
+258C:LEFT HALF BLOCK
+2590:RIGHT HALF BLOCK
+2591:LIGHT SHADE
+2592:MEDIUM SHADE
+2593:DARK SHADE
+25A0:BLACK SQUARE
+25AC:BLACK RECTANGLE
+25B2:BLACK UP-POINTING TRIANGLE
+25BA:BLACK RIGHT-POINTING POINTER
+25BC:BLACK DOWN-POINTING TRIANGLE
+25C4:BLACK LEFT-POINTING POINTER
+25CA:LOZENGE
+25CB:WHITE CIRCLE
+25D8:INVERSE BULLET
+25D9:INVERSE WHITE CIRCLE
+263A:WHITE SMILING FACE
+263B:BLACK SMILING FACE
+263C:WHITE SUN WITH RAYS
+2640:FEMALE SIGN
+2642:MALE SIGN
+2660:BLACK SPADE SUIT
+2663:BLACK CLUB SUIT
+2665:BLACK HEART SUIT
+2666:BLACK DIAMOND SUIT
+266A:EIGHTH NOTE
+266B:BEAMED EIGHTH NOTES
+FB01:LATIN SMALL LIGATURE FI
+FB02:LATIN SMALL LIGATURE FL
+FFFD:REPLACEMENT CHARACTER
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/MES-2.txt b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/MES-2.txt
new file mode 100644
index 00000000000..08a58945a9c
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/MES-2.txt
@@ -0,0 +1,17 @@
+# Plane 00
+# Rows Positions (Cells)
+00 20-7E A0-FF
+01 00-7F 8F 92 B7 DE-EF FA-FF
+02 18-1B 1E-1F 59 7C 92 BB-BD C6-C7 C9 D8-DD EE
+03 74-75 7A 7E 84-8A 8C 8E-A1 A3-CE D7 DA-E1
+04 00-5F 90-C4 C7-C8 CB-CC D0-EB EE-F5 F8-F9
+1E 02-03 0A-0B 1E-1F 40-41 56-57 60-61 6A-6B 80-85 9B F2-F3
+1F 00-15 18-1D 20-45 48-4D 50-57 59 5B 5D 5F-7D 80-B4 B6-C4 C6-D3 D6-DB DD-EF F2-F4 F6-FE
+20 13-15 17-1E 20-22 26 30 32-33 39-3A 3C 3E 44 4A 7F 82 A3-A4 A7 AC AF
+21 05 16 22 26 5B-5E 90-95 A8
+22 00 02-03 06 08-09 0F 11-12 19-1A 1E-1F 27-2B 48 59 60-61 64-65 82-83 95 97
+23 02 10 20-21 29-2A
+25 00 02 0C 10 14 18 1C 24 2C 34 3C 50-6C 80 84 88 8C 90-93 A0 AC B2 BA BC C4 CA-CB D8-D9
+26 3A-3C 40 42 60 63 65-66 6A-6B
+FB 01-02
+FF FD
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/MES-3B.lst b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/MES-3B.lst
new file mode 100644
index 00000000000..74995709281
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/MES-3B.lst
@@ -0,0 +1,2819 @@
+0020:SPACE
+0021:EXCLAMATION MARK
+0022:QUOTATION MARK
+0023:NUMBER SIGN
+0024:DOLLAR SIGN
+0025:PERCENT SIGN
+0026:AMPERSAND
+0027:APOSTROPHE
+0028:LEFT PARENTHESIS
+0029:RIGHT PARENTHESIS
+002A:ASTERISK
+002B:PLUS SIGN
+002C:COMMA
+002D:HYPHEN-MINUS
+002E:FULL STOP
+002F:SOLIDUS
+0030:DIGIT ZERO
+0031:DIGIT ONE
+0032:DIGIT TWO
+0033:DIGIT THREE
+0034:DIGIT FOUR
+0035:DIGIT FIVE
+0036:DIGIT SIX
+0037:DIGIT SEVEN
+0038:DIGIT EIGHT
+0039:DIGIT NINE
+003A:COLON
+003B:SEMICOLON
+003C:LESS-THAN SIGN
+003D:EQUALS SIGN
+003E:GREATER-THAN SIGN
+003F:QUESTION MARK
+0040:COMMERCIAL AT
+0041:LATIN CAPITAL LETTER A
+0042:LATIN CAPITAL LETTER B
+0043:LATIN CAPITAL LETTER C
+0044:LATIN CAPITAL LETTER D
+0045:LATIN CAPITAL LETTER E
+0046:LATIN CAPITAL LETTER F
+0047:LATIN CAPITAL LETTER G
+0048:LATIN CAPITAL LETTER H
+0049:LATIN CAPITAL LETTER I
+004A:LATIN CAPITAL LETTER J
+004B:LATIN CAPITAL LETTER K
+004C:LATIN CAPITAL LETTER L
+004D:LATIN CAPITAL LETTER M
+004E:LATIN CAPITAL LETTER N
+004F:LATIN CAPITAL LETTER O
+0050:LATIN CAPITAL LETTER P
+0051:LATIN CAPITAL LETTER Q
+0052:LATIN CAPITAL LETTER R
+0053:LATIN CAPITAL LETTER S
+0054:LATIN CAPITAL LETTER T
+0055:LATIN CAPITAL LETTER U
+0056:LATIN CAPITAL LETTER V
+0057:LATIN CAPITAL LETTER W
+0058:LATIN CAPITAL LETTER X
+0059:LATIN CAPITAL LETTER Y
+005A:LATIN CAPITAL LETTER Z
+005B:LEFT SQUARE BRACKET
+005C:REVERSE SOLIDUS
+005D:RIGHT SQUARE BRACKET
+005E:CIRCUMFLEX ACCENT
+005F:LOW LINE
+0060:GRAVE ACCENT
+0061:LATIN SMALL LETTER A
+0062:LATIN SMALL LETTER B
+0063:LATIN SMALL LETTER C
+0064:LATIN SMALL LETTER D
+0065:LATIN SMALL LETTER E
+0066:LATIN SMALL LETTER F
+0067:LATIN SMALL LETTER G
+0068:LATIN SMALL LETTER H
+0069:LATIN SMALL LETTER I
+006A:LATIN SMALL LETTER J
+006B:LATIN SMALL LETTER K
+006C:LATIN SMALL LETTER L
+006D:LATIN SMALL LETTER M
+006E:LATIN SMALL LETTER N
+006F:LATIN SMALL LETTER O
+0070:LATIN SMALL LETTER P
+0071:LATIN SMALL LETTER Q
+0072:LATIN SMALL LETTER R
+0073:LATIN SMALL LETTER S
+0074:LATIN SMALL LETTER T
+0075:LATIN SMALL LETTER U
+0076:LATIN SMALL LETTER V
+0077:LATIN SMALL LETTER W
+0078:LATIN SMALL LETTER X
+0079:LATIN SMALL LETTER Y
+007A:LATIN SMALL LETTER Z
+007B:LEFT CURLY BRACKET
+007C:VERTICAL LINE
+007D:RIGHT CURLY BRACKET
+007E:TILDE
+00A0:NO-BREAK SPACE
+00A1:INVERTED EXCLAMATION MARK
+00A2:CENT SIGN
+00A3:POUND SIGN
+00A4:CURRENCY SIGN
+00A5:YEN SIGN
+00A6:BROKEN BAR
+00A7:SECTION SIGN
+00A8:DIAERESIS
+00A9:COPYRIGHT SIGN
+00AA:FEMININE ORDINAL INDICATOR
+00AB:LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+00AC:NOT SIGN
+00AD:SOFT HYPHEN
+00AE:REGISTERED SIGN
+00AF:MACRON
+00B0:DEGREE SIGN
+00B1:PLUS-MINUS SIGN
+00B2:SUPERSCRIPT TWO
+00B3:SUPERSCRIPT THREE
+00B4:ACUTE ACCENT
+00B5:MICRO SIGN
+00B6:PILCROW SIGN
+00B7:MIDDLE DOT
+00B8:CEDILLA
+00B9:SUPERSCRIPT ONE
+00BA:MASCULINE ORDINAL INDICATOR
+00BB:RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+00BC:VULGAR FRACTION ONE QUARTER
+00BD:VULGAR FRACTION ONE HALF
+00BE:VULGAR FRACTION THREE QUARTERS
+00BF:INVERTED QUESTION MARK
+00C0:LATIN CAPITAL LETTER A WITH GRAVE
+00C1:LATIN CAPITAL LETTER A WITH ACUTE
+00C2:LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+00C3:LATIN CAPITAL LETTER A WITH TILDE
+00C4:LATIN CAPITAL LETTER A WITH DIAERESIS
+00C5:LATIN CAPITAL LETTER A WITH RING ABOVE
+00C6:LATIN CAPITAL LETTER AE
+00C7:LATIN CAPITAL LETTER C WITH CEDILLA
+00C8:LATIN CAPITAL LETTER E WITH GRAVE
+00C9:LATIN CAPITAL LETTER E WITH ACUTE
+00CA:LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+00CB:LATIN CAPITAL LETTER E WITH DIAERESIS
+00CC:LATIN CAPITAL LETTER I WITH GRAVE
+00CD:LATIN CAPITAL LETTER I WITH ACUTE
+00CE:LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+00CF:LATIN CAPITAL LETTER I WITH DIAERESIS
+00D0:LATIN CAPITAL LETTER ETH
+00D1:LATIN CAPITAL LETTER N WITH TILDE
+00D2:LATIN CAPITAL LETTER O WITH GRAVE
+00D3:LATIN CAPITAL LETTER O WITH ACUTE
+00D4:LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+00D5:LATIN CAPITAL LETTER O WITH TILDE
+00D6:LATIN CAPITAL LETTER O WITH DIAERESIS
+00D7:MULTIPLICATION SIGN
+00D8:LATIN CAPITAL LETTER O WITH STROKE
+00D9:LATIN CAPITAL LETTER U WITH GRAVE
+00DA:LATIN CAPITAL LETTER U WITH ACUTE
+00DB:LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+00DC:LATIN CAPITAL LETTER U WITH DIAERESIS
+00DD:LATIN CAPITAL LETTER Y WITH ACUTE
+00DE:LATIN CAPITAL LETTER THORN
+00DF:LATIN SMALL LETTER SHARP S
+00E0:LATIN SMALL LETTER A WITH GRAVE
+00E1:LATIN SMALL LETTER A WITH ACUTE
+00E2:LATIN SMALL LETTER A WITH CIRCUMFLEX
+00E3:LATIN SMALL LETTER A WITH TILDE
+00E4:LATIN SMALL LETTER A WITH DIAERESIS
+00E5:LATIN SMALL LETTER A WITH RING ABOVE
+00E6:LATIN SMALL LETTER AE
+00E7:LATIN SMALL LETTER C WITH CEDILLA
+00E8:LATIN SMALL LETTER E WITH GRAVE
+00E9:LATIN SMALL LETTER E WITH ACUTE
+00EA:LATIN SMALL LETTER E WITH CIRCUMFLEX
+00EB:LATIN SMALL LETTER E WITH DIAERESIS
+00EC:LATIN SMALL LETTER I WITH GRAVE
+00ED:LATIN SMALL LETTER I WITH ACUTE
+00EE:LATIN SMALL LETTER I WITH CIRCUMFLEX
+00EF:LATIN SMALL LETTER I WITH DIAERESIS
+00F0:LATIN SMALL LETTER ETH
+00F1:LATIN SMALL LETTER N WITH TILDE
+00F2:LATIN SMALL LETTER O WITH GRAVE
+00F3:LATIN SMALL LETTER O WITH ACUTE
+00F4:LATIN SMALL LETTER O WITH CIRCUMFLEX
+00F5:LATIN SMALL LETTER O WITH TILDE
+00F6:LATIN SMALL LETTER O WITH DIAERESIS
+00F7:DIVISION SIGN
+00F8:LATIN SMALL LETTER O WITH STROKE
+00F9:LATIN SMALL LETTER U WITH GRAVE
+00FA:LATIN SMALL LETTER U WITH ACUTE
+00FB:LATIN SMALL LETTER U WITH CIRCUMFLEX
+00FC:LATIN SMALL LETTER U WITH DIAERESIS
+00FD:LATIN SMALL LETTER Y WITH ACUTE
+00FE:LATIN SMALL LETTER THORN
+00FF:LATIN SMALL LETTER Y WITH DIAERESIS
+0100:LATIN CAPITAL LETTER A WITH MACRON
+0101:LATIN SMALL LETTER A WITH MACRON
+0102:LATIN CAPITAL LETTER A WITH BREVE
+0103:LATIN SMALL LETTER A WITH BREVE
+0104:LATIN CAPITAL LETTER A WITH OGONEK
+0105:LATIN SMALL LETTER A WITH OGONEK
+0106:LATIN CAPITAL LETTER C WITH ACUTE
+0107:LATIN SMALL LETTER C WITH ACUTE
+0108:LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+0109:LATIN SMALL LETTER C WITH CIRCUMFLEX
+010A:LATIN CAPITAL LETTER C WITH DOT ABOVE
+010B:LATIN SMALL LETTER C WITH DOT ABOVE
+010C:LATIN CAPITAL LETTER C WITH CARON
+010D:LATIN SMALL LETTER C WITH CARON
+010E:LATIN CAPITAL LETTER D WITH CARON
+010F:LATIN SMALL LETTER D WITH CARON
+0110:LATIN CAPITAL LETTER D WITH STROKE
+0111:LATIN SMALL LETTER D WITH STROKE
+0112:LATIN CAPITAL LETTER E WITH MACRON
+0113:LATIN SMALL LETTER E WITH MACRON
+0114:LATIN CAPITAL LETTER E WITH BREVE
+0115:LATIN SMALL LETTER E WITH BREVE
+0116:LATIN CAPITAL LETTER E WITH DOT ABOVE
+0117:LATIN SMALL LETTER E WITH DOT ABOVE
+0118:LATIN CAPITAL LETTER E WITH OGONEK
+0119:LATIN SMALL LETTER E WITH OGONEK
+011A:LATIN CAPITAL LETTER E WITH CARON
+011B:LATIN SMALL LETTER E WITH CARON
+011C:LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+011D:LATIN SMALL LETTER G WITH CIRCUMFLEX
+011E:LATIN CAPITAL LETTER G WITH BREVE
+011F:LATIN SMALL LETTER G WITH BREVE
+0120:LATIN CAPITAL LETTER G WITH DOT ABOVE
+0121:LATIN SMALL LETTER G WITH DOT ABOVE
+0122:LATIN CAPITAL LETTER G WITH CEDILLA
+0123:LATIN SMALL LETTER G WITH CEDILLA
+0124:LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+0125:LATIN SMALL LETTER H WITH CIRCUMFLEX
+0126:LATIN CAPITAL LETTER H WITH STROKE
+0127:LATIN SMALL LETTER H WITH STROKE
+0128:LATIN CAPITAL LETTER I WITH TILDE
+0129:LATIN SMALL LETTER I WITH TILDE
+012A:LATIN CAPITAL LETTER I WITH MACRON
+012B:LATIN SMALL LETTER I WITH MACRON
+012C:LATIN CAPITAL LETTER I WITH BREVE
+012D:LATIN SMALL LETTER I WITH BREVE
+012E:LATIN CAPITAL LETTER I WITH OGONEK
+012F:LATIN SMALL LETTER I WITH OGONEK
+0130:LATIN CAPITAL LETTER I WITH DOT ABOVE
+0131:LATIN SMALL LETTER DOTLESS I
+0132:LATIN CAPITAL LIGATURE IJ
+0133:LATIN SMALL LIGATURE IJ
+0134:LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+0135:LATIN SMALL LETTER J WITH CIRCUMFLEX
+0136:LATIN CAPITAL LETTER K WITH CEDILLA
+0137:LATIN SMALL LETTER K WITH CEDILLA
+0138:LATIN SMALL LETTER KRA
+0139:LATIN CAPITAL LETTER L WITH ACUTE
+013A:LATIN SMALL LETTER L WITH ACUTE
+013B:LATIN CAPITAL LETTER L WITH CEDILLA
+013C:LATIN SMALL LETTER L WITH CEDILLA
+013D:LATIN CAPITAL LETTER L WITH CARON
+013E:LATIN SMALL LETTER L WITH CARON
+013F:LATIN CAPITAL LETTER L WITH MIDDLE DOT
+0140:LATIN SMALL LETTER L WITH MIDDLE DOT
+0141:LATIN CAPITAL LETTER L WITH STROKE
+0142:LATIN SMALL LETTER L WITH STROKE
+0143:LATIN CAPITAL LETTER N WITH ACUTE
+0144:LATIN SMALL LETTER N WITH ACUTE
+0145:LATIN CAPITAL LETTER N WITH CEDILLA
+0146:LATIN SMALL LETTER N WITH CEDILLA
+0147:LATIN CAPITAL LETTER N WITH CARON
+0148:LATIN SMALL LETTER N WITH CARON
+0149:LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+014A:LATIN CAPITAL LETTER ENG
+014B:LATIN SMALL LETTER ENG
+014C:LATIN CAPITAL LETTER O WITH MACRON
+014D:LATIN SMALL LETTER O WITH MACRON
+014E:LATIN CAPITAL LETTER O WITH BREVE
+014F:LATIN SMALL LETTER O WITH BREVE
+0150:LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+0151:LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0152:LATIN CAPITAL LIGATURE OE
+0153:LATIN SMALL LIGATURE OE
+0154:LATIN CAPITAL LETTER R WITH ACUTE
+0155:LATIN SMALL LETTER R WITH ACUTE
+0156:LATIN CAPITAL LETTER R WITH CEDILLA
+0157:LATIN SMALL LETTER R WITH CEDILLA
+0158:LATIN CAPITAL LETTER R WITH CARON
+0159:LATIN SMALL LETTER R WITH CARON
+015A:LATIN CAPITAL LETTER S WITH ACUTE
+015B:LATIN SMALL LETTER S WITH ACUTE
+015C:LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+015D:LATIN SMALL LETTER S WITH CIRCUMFLEX
+015E:LATIN CAPITAL LETTER S WITH CEDILLA
+015F:LATIN SMALL LETTER S WITH CEDILLA
+0160:LATIN CAPITAL LETTER S WITH CARON
+0161:LATIN SMALL LETTER S WITH CARON
+0162:LATIN CAPITAL LETTER T WITH CEDILLA
+0163:LATIN SMALL LETTER T WITH CEDILLA
+0164:LATIN CAPITAL LETTER T WITH CARON
+0165:LATIN SMALL LETTER T WITH CARON
+0166:LATIN CAPITAL LETTER T WITH STROKE
+0167:LATIN SMALL LETTER T WITH STROKE
+0168:LATIN CAPITAL LETTER U WITH TILDE
+0169:LATIN SMALL LETTER U WITH TILDE
+016A:LATIN CAPITAL LETTER U WITH MACRON
+016B:LATIN SMALL LETTER U WITH MACRON
+016C:LATIN CAPITAL LETTER U WITH BREVE
+016D:LATIN SMALL LETTER U WITH BREVE
+016E:LATIN CAPITAL LETTER U WITH RING ABOVE
+016F:LATIN SMALL LETTER U WITH RING ABOVE
+0170:LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0171:LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0172:LATIN CAPITAL LETTER U WITH OGONEK
+0173:LATIN SMALL LETTER U WITH OGONEK
+0174:LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+0175:LATIN SMALL LETTER W WITH CIRCUMFLEX
+0176:LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+0177:LATIN SMALL LETTER Y WITH CIRCUMFLEX
+0178:LATIN CAPITAL LETTER Y WITH DIAERESIS
+0179:LATIN CAPITAL LETTER Z WITH ACUTE
+017A:LATIN SMALL LETTER Z WITH ACUTE
+017B:LATIN CAPITAL LETTER Z WITH DOT ABOVE
+017C:LATIN SMALL LETTER Z WITH DOT ABOVE
+017D:LATIN CAPITAL LETTER Z WITH CARON
+017E:LATIN SMALL LETTER Z WITH CARON
+017F:LATIN SMALL LETTER LONG S
+0180:LATIN SMALL LETTER B WITH STROKE
+0181:LATIN CAPITAL LETTER B WITH HOOK
+0182:LATIN CAPITAL LETTER B WITH TOPBAR
+0183:LATIN SMALL LETTER B WITH TOPBAR
+0184:LATIN CAPITAL LETTER TONE SIX
+0185:LATIN SMALL LETTER TONE SIX
+0186:LATIN CAPITAL LETTER OPEN O
+0187:LATIN CAPITAL LETTER C WITH HOOK
+0188:LATIN SMALL LETTER C WITH HOOK
+0189:LATIN CAPITAL LETTER AFRICAN D
+018A:LATIN CAPITAL LETTER D WITH HOOK
+018B:LATIN CAPITAL LETTER D WITH TOPBAR
+018C:LATIN SMALL LETTER D WITH TOPBAR
+018D:LATIN SMALL LETTER TURNED DELTA
+018E:LATIN CAPITAL LETTER REVERSED E
+018F:LATIN CAPITAL LETTER SCHWA
+0190:LATIN CAPITAL LETTER OPEN E
+0191:LATIN CAPITAL LETTER F WITH HOOK
+0192:LATIN SMALL LETTER F WITH HOOK
+0193:LATIN CAPITAL LETTER G WITH HOOK
+0194:LATIN CAPITAL LETTER GAMMA
+0195:LATIN SMALL LETTER HV
+0196:LATIN CAPITAL LETTER IOTA
+0197:LATIN CAPITAL LETTER I WITH STROKE
+0198:LATIN CAPITAL LETTER K WITH HOOK
+0199:LATIN SMALL LETTER K WITH HOOK
+019A:LATIN SMALL LETTER L WITH BAR
+019B:LATIN SMALL LETTER LAMBDA WITH STROKE
+019C:LATIN CAPITAL LETTER TURNED M
+019D:LATIN CAPITAL LETTER N WITH LEFT HOOK
+019E:LATIN SMALL LETTER N WITH LONG RIGHT LEG
+019F:LATIN CAPITAL LETTER O WITH MIDDLE TILDE
+01A0:LATIN CAPITAL LETTER O WITH HORN
+01A1:LATIN SMALL LETTER O WITH HORN
+01A2:LATIN CAPITAL LETTER OI
+01A3:LATIN SMALL LETTER OI
+01A4:LATIN CAPITAL LETTER P WITH HOOK
+01A5:LATIN SMALL LETTER P WITH HOOK
+01A6:LATIN LETTER YR
+01A7:LATIN CAPITAL LETTER TONE TWO
+01A8:LATIN SMALL LETTER TONE TWO
+01A9:LATIN CAPITAL LETTER ESH
+01AA:LATIN LETTER REVERSED ESH LOOP
+01AB:LATIN SMALL LETTER T WITH PALATAL HOOK
+01AC:LATIN CAPITAL LETTER T WITH HOOK
+01AD:LATIN SMALL LETTER T WITH HOOK
+01AE:LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
+01AF:LATIN CAPITAL LETTER U WITH HORN
+01B0:LATIN SMALL LETTER U WITH HORN
+01B1:LATIN CAPITAL LETTER UPSILON
+01B2:LATIN CAPITAL LETTER V WITH HOOK
+01B3:LATIN CAPITAL LETTER Y WITH HOOK
+01B4:LATIN SMALL LETTER Y WITH HOOK
+01B5:LATIN CAPITAL LETTER Z WITH STROKE
+01B6:LATIN SMALL LETTER Z WITH STROKE
+01B7:LATIN CAPITAL LETTER EZH
+01B8:LATIN CAPITAL LETTER EZH REVERSED
+01B9:LATIN SMALL LETTER EZH REVERSED
+01BA:LATIN SMALL LETTER EZH WITH TAIL
+01BB:LATIN LETTER TWO WITH STROKE
+01BC:LATIN CAPITAL LETTER TONE FIVE
+01BD:LATIN SMALL LETTER TONE FIVE
+01BE:LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE
+01BF:LATIN LETTER WYNN
+01C0:LATIN LETTER DENTAL CLICK
+01C1:LATIN LETTER LATERAL CLICK
+01C2:LATIN LETTER ALVEOLAR CLICK
+01C3:LATIN LETTER RETROFLEX CLICK
+01C4:LATIN CAPITAL LETTER DZ WITH CARON
+01C5:LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
+01C6:LATIN SMALL LETTER DZ WITH CARON
+01C7:LATIN CAPITAL LETTER LJ
+01C8:LATIN CAPITAL LETTER L WITH SMALL LETTER J
+01C9:LATIN SMALL LETTER LJ
+01CA:LATIN CAPITAL LETTER NJ
+01CB:LATIN CAPITAL LETTER N WITH SMALL LETTER J
+01CC:LATIN SMALL LETTER NJ
+01CD:LATIN CAPITAL LETTER A WITH CARON
+01CE:LATIN SMALL LETTER A WITH CARON
+01CF:LATIN CAPITAL LETTER I WITH CARON
+01D0:LATIN SMALL LETTER I WITH CARON
+01D1:LATIN CAPITAL LETTER O WITH CARON
+01D2:LATIN SMALL LETTER O WITH CARON
+01D3:LATIN CAPITAL LETTER U WITH CARON
+01D4:LATIN SMALL LETTER U WITH CARON
+01D5:LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01D6:LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D7:LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D8:LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D9:LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+01DA:LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01DB:LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01DC:LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DD:LATIN SMALL LETTER TURNED E
+01DE:LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+01DF:LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01E0:LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+01E1:LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+01E2:LATIN CAPITAL LETTER AE WITH MACRON
+01E3:LATIN SMALL LETTER AE WITH MACRON
+01E4:LATIN CAPITAL LETTER G WITH STROKE
+01E5:LATIN SMALL LETTER G WITH STROKE
+01E6:LATIN CAPITAL LETTER G WITH CARON
+01E7:LATIN SMALL LETTER G WITH CARON
+01E8:LATIN CAPITAL LETTER K WITH CARON
+01E9:LATIN SMALL LETTER K WITH CARON
+01EA:LATIN CAPITAL LETTER O WITH OGONEK
+01EB:LATIN SMALL LETTER O WITH OGONEK
+01EC:LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+01ED:LATIN SMALL LETTER O WITH OGONEK AND MACRON
+01EE:LATIN CAPITAL LETTER EZH WITH CARON
+01EF:LATIN SMALL LETTER EZH WITH CARON
+01F0:LATIN SMALL LETTER J WITH CARON
+01F1:LATIN CAPITAL LETTER DZ
+01F2:LATIN CAPITAL LETTER D WITH SMALL LETTER Z
+01F3:LATIN SMALL LETTER DZ
+01F4:LATIN CAPITAL LETTER G WITH ACUTE
+01F5:LATIN SMALL LETTER G WITH ACUTE
+01F6:LATIN CAPITAL LETTER HWAIR
+01F7:LATIN CAPITAL LETTER WYNN
+01F8:LATIN CAPITAL LETTER N WITH GRAVE
+01F9:LATIN SMALL LETTER N WITH GRAVE
+01FA:LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+01FB:LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FC:LATIN CAPITAL LETTER AE WITH ACUTE
+01FD:LATIN SMALL LETTER AE WITH ACUTE
+01FE:LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+01FF:LATIN SMALL LETTER O WITH STROKE AND ACUTE
+0200:LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
+0201:LATIN SMALL LETTER A WITH DOUBLE GRAVE
+0202:LATIN CAPITAL LETTER A WITH INVERTED BREVE
+0203:LATIN SMALL LETTER A WITH INVERTED BREVE
+0204:LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
+0205:LATIN SMALL LETTER E WITH DOUBLE GRAVE
+0206:LATIN CAPITAL LETTER E WITH INVERTED BREVE
+0207:LATIN SMALL LETTER E WITH INVERTED BREVE
+0208:LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
+0209:LATIN SMALL LETTER I WITH DOUBLE GRAVE
+020A:LATIN CAPITAL LETTER I WITH INVERTED BREVE
+020B:LATIN SMALL LETTER I WITH INVERTED BREVE
+020C:LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
+020D:LATIN SMALL LETTER O WITH DOUBLE GRAVE
+020E:LATIN CAPITAL LETTER O WITH INVERTED BREVE
+020F:LATIN SMALL LETTER O WITH INVERTED BREVE
+0210:LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
+0211:LATIN SMALL LETTER R WITH DOUBLE GRAVE
+0212:LATIN CAPITAL LETTER R WITH INVERTED BREVE
+0213:LATIN SMALL LETTER R WITH INVERTED BREVE
+0214:LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
+0215:LATIN SMALL LETTER U WITH DOUBLE GRAVE
+0216:LATIN CAPITAL LETTER U WITH INVERTED BREVE
+0217:LATIN SMALL LETTER U WITH INVERTED BREVE
+0218:LATIN CAPITAL LETTER S WITH COMMA BELOW
+0219:LATIN SMALL LETTER S WITH COMMA BELOW
+021A:LATIN CAPITAL LETTER T WITH COMMA BELOW
+021B:LATIN SMALL LETTER T WITH COMMA BELOW
+021C:LATIN CAPITAL LETTER YOGH
+021D:LATIN SMALL LETTER YOGH
+021E:LATIN CAPITAL LETTER H WITH CARON
+021F:LATIN SMALL LETTER H WITH CARON
+0222:LATIN CAPITAL LETTER OU
+0223:LATIN SMALL LETTER OU
+0224:LATIN CAPITAL LETTER Z WITH HOOK
+0225:LATIN SMALL LETTER Z WITH HOOK
+0226:LATIN CAPITAL LETTER A WITH DOT ABOVE
+0227:LATIN SMALL LETTER A WITH DOT ABOVE
+0228:LATIN CAPITAL LETTER E WITH CEDILLA
+0229:LATIN SMALL LETTER E WITH CEDILLA
+022A:LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+022B:LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022C:LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+022D:LATIN SMALL LETTER O WITH TILDE AND MACRON
+022E:LATIN CAPITAL LETTER O WITH DOT ABOVE
+022F:LATIN SMALL LETTER O WITH DOT ABOVE
+0230:LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+0231:LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+0232:LATIN CAPITAL LETTER Y WITH MACRON
+0233:LATIN SMALL LETTER Y WITH MACRON
+0250:LATIN SMALL LETTER TURNED A
+0251:LATIN SMALL LETTER ALPHA
+0252:LATIN SMALL LETTER TURNED ALPHA
+0253:LATIN SMALL LETTER B WITH HOOK
+0254:LATIN SMALL LETTER OPEN O
+0255:LATIN SMALL LETTER C WITH CURL
+0256:LATIN SMALL LETTER D WITH TAIL
+0257:LATIN SMALL LETTER D WITH HOOK
+0258:LATIN SMALL LETTER REVERSED E
+0259:LATIN SMALL LETTER SCHWA
+025A:LATIN SMALL LETTER SCHWA WITH HOOK
+025B:LATIN SMALL LETTER OPEN E
+025C:LATIN SMALL LETTER REVERSED OPEN E
+025D:LATIN SMALL LETTER REVERSED OPEN E WITH HOOK
+025E:LATIN SMALL LETTER CLOSED REVERSED OPEN E
+025F:LATIN SMALL LETTER DOTLESS J WITH STROKE
+0260:LATIN SMALL LETTER G WITH HOOK
+0261:LATIN SMALL LETTER SCRIPT G
+0262:LATIN LETTER SMALL CAPITAL G
+0263:LATIN SMALL LETTER GAMMA
+0264:LATIN SMALL LETTER RAMS HORN
+0265:LATIN SMALL LETTER TURNED H
+0266:LATIN SMALL LETTER H WITH HOOK
+0267:LATIN SMALL LETTER HENG WITH HOOK
+0268:LATIN SMALL LETTER I WITH STROKE
+0269:LATIN SMALL LETTER IOTA
+026A:LATIN LETTER SMALL CAPITAL I
+026B:LATIN SMALL LETTER L WITH MIDDLE TILDE
+026C:LATIN SMALL LETTER L WITH BELT
+026D:LATIN SMALL LETTER L WITH RETROFLEX HOOK
+026E:LATIN SMALL LETTER LEZH
+026F:LATIN SMALL LETTER TURNED M
+0270:LATIN SMALL LETTER TURNED M WITH LONG LEG
+0271:LATIN SMALL LETTER M WITH HOOK
+0272:LATIN SMALL LETTER N WITH LEFT HOOK
+0273:LATIN SMALL LETTER N WITH RETROFLEX HOOK
+0274:LATIN LETTER SMALL CAPITAL N
+0275:LATIN SMALL LETTER BARRED O
+0276:LATIN LETTER SMALL CAPITAL OE
+0277:LATIN SMALL LETTER CLOSED OMEGA
+0278:LATIN SMALL LETTER PHI
+0279:LATIN SMALL LETTER TURNED R
+027A:LATIN SMALL LETTER TURNED R WITH LONG LEG
+027B:LATIN SMALL LETTER TURNED R WITH HOOK
+027C:LATIN SMALL LETTER R WITH LONG LEG
+027D:LATIN SMALL LETTER R WITH TAIL
+027E:LATIN SMALL LETTER R WITH FISHHOOK
+027F:LATIN SMALL LETTER REVERSED R WITH FISHHOOK
+0280:LATIN LETTER SMALL CAPITAL R
+0281:LATIN LETTER SMALL CAPITAL INVERTED R
+0282:LATIN SMALL LETTER S WITH HOOK
+0283:LATIN SMALL LETTER ESH
+0284:LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK
+0285:LATIN SMALL LETTER SQUAT REVERSED ESH
+0286:LATIN SMALL LETTER ESH WITH CURL
+0287:LATIN SMALL LETTER TURNED T
+0288:LATIN SMALL LETTER T WITH RETROFLEX HOOK
+0289:LATIN SMALL LETTER U BAR
+028A:LATIN SMALL LETTER UPSILON
+028B:LATIN SMALL LETTER V WITH HOOK
+028C:LATIN SMALL LETTER TURNED V
+028D:LATIN SMALL LETTER TURNED W
+028E:LATIN SMALL LETTER TURNED Y
+028F:LATIN LETTER SMALL CAPITAL Y
+0290:LATIN SMALL LETTER Z WITH RETROFLEX HOOK
+0291:LATIN SMALL LETTER Z WITH CURL
+0292:LATIN SMALL LETTER EZH
+0293:LATIN SMALL LETTER EZH WITH CURL
+0294:LATIN LETTER GLOTTAL STOP
+0295:LATIN LETTER PHARYNGEAL VOICED FRICATIVE
+0296:LATIN LETTER INVERTED GLOTTAL STOP
+0297:LATIN LETTER STRETCHED C
+0298:LATIN LETTER BILABIAL CLICK
+0299:LATIN LETTER SMALL CAPITAL B
+029A:LATIN SMALL LETTER CLOSED OPEN E
+029B:LATIN LETTER SMALL CAPITAL G WITH HOOK
+029C:LATIN LETTER SMALL CAPITAL H
+029D:LATIN SMALL LETTER J WITH CROSSED-TAIL
+029E:LATIN SMALL LETTER TURNED K
+029F:LATIN LETTER SMALL CAPITAL L
+02A0:LATIN SMALL LETTER Q WITH HOOK
+02A1:LATIN LETTER GLOTTAL STOP WITH STROKE
+02A2:LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE
+02A3:LATIN SMALL LETTER DZ DIGRAPH
+02A4:LATIN SMALL LETTER DEZH DIGRAPH
+02A5:LATIN SMALL LETTER DZ DIGRAPH WITH CURL
+02A6:LATIN SMALL LETTER TS DIGRAPH
+02A7:LATIN SMALL LETTER TESH DIGRAPH
+02A8:LATIN SMALL LETTER TC DIGRAPH WITH CURL
+02A9:LATIN SMALL LETTER FENG DIGRAPH
+02AA:LATIN SMALL LETTER LS DIGRAPH
+02AB:LATIN SMALL LETTER LZ DIGRAPH
+02AC:LATIN LETTER BILABIAL PERCUSSIVE
+02AD:LATIN LETTER BIDENTAL PERCUSSIVE
+02B0:MODIFIER LETTER SMALL H
+02B1:MODIFIER LETTER SMALL H WITH HOOK
+02B2:MODIFIER LETTER SMALL J
+02B3:MODIFIER LETTER SMALL R
+02B4:MODIFIER LETTER SMALL TURNED R
+02B5:MODIFIER LETTER SMALL TURNED R WITH HOOK
+02B6:MODIFIER LETTER SMALL CAPITAL INVERTED R
+02B7:MODIFIER LETTER SMALL W
+02B8:MODIFIER LETTER SMALL Y
+02B9:MODIFIER LETTER PRIME
+02BA:MODIFIER LETTER DOUBLE PRIME
+02BB:MODIFIER LETTER TURNED COMMA
+02BC:MODIFIER LETTER APOSTROPHE
+02BD:MODIFIER LETTER REVERSED COMMA
+02BE:MODIFIER LETTER RIGHT HALF RING
+02BF:MODIFIER LETTER LEFT HALF RING
+02C0:MODIFIER LETTER GLOTTAL STOP
+02C1:MODIFIER LETTER REVERSED GLOTTAL STOP
+02C2:MODIFIER LETTER LEFT ARROWHEAD
+02C3:MODIFIER LETTER RIGHT ARROWHEAD
+02C4:MODIFIER LETTER UP ARROWHEAD
+02C5:MODIFIER LETTER DOWN ARROWHEAD
+02C6:MODIFIER LETTER CIRCUMFLEX ACCENT
+02C7:CARON
+02C8:MODIFIER LETTER VERTICAL LINE
+02C9:MODIFIER LETTER MACRON
+02CA:MODIFIER LETTER ACUTE ACCENT
+02CB:MODIFIER LETTER GRAVE ACCENT
+02CC:MODIFIER LETTER LOW VERTICAL LINE
+02CD:MODIFIER LETTER LOW MACRON
+02CE:MODIFIER LETTER LOW GRAVE ACCENT
+02CF:MODIFIER LETTER LOW ACUTE ACCENT
+02D0:MODIFIER LETTER TRIANGULAR COLON
+02D1:MODIFIER LETTER HALF TRIANGULAR COLON
+02D2:MODIFIER LETTER CENTRED RIGHT HALF RING
+02D3:MODIFIER LETTER CENTRED LEFT HALF RING
+02D4:MODIFIER LETTER UP TACK
+02D5:MODIFIER LETTER DOWN TACK
+02D6:MODIFIER LETTER PLUS SIGN
+02D7:MODIFIER LETTER MINUS SIGN
+02D8:BREVE
+02D9:DOT ABOVE
+02DA:RING ABOVE
+02DB:OGONEK
+02DC:SMALL TILDE
+02DD:DOUBLE ACUTE ACCENT
+02DE:MODIFIER LETTER RHOTIC HOOK
+02DF:MODIFIER LETTER CROSS ACCENT
+02E0:MODIFIER LETTER SMALL GAMMA
+02E1:MODIFIER LETTER SMALL L
+02E2:MODIFIER LETTER SMALL S
+02E3:MODIFIER LETTER SMALL X
+02E4:MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+02E5:MODIFIER LETTER EXTRA-HIGH TONE BAR
+02E6:MODIFIER LETTER HIGH TONE BAR
+02E7:MODIFIER LETTER MID TONE BAR
+02E8:MODIFIER LETTER LOW TONE BAR
+02E9:MODIFIER LETTER EXTRA-LOW TONE BAR
+02EA:MODIFIER LETTER YIN DEPARTING TONE MARK
+02EB:MODIFIER LETTER YANG DEPARTING TONE MARK
+02EC:MODIFIER LETTER VOICING
+02ED:MODIFIER LETTER UNASPIRATED
+02EE:MODIFIER LETTER DOUBLE APOSTROPHE
+0300:COMBINING GRAVE ACCENT
+0301:COMBINING ACUTE ACCENT
+0302:COMBINING CIRCUMFLEX ACCENT
+0303:COMBINING TILDE
+0304:COMBINING MACRON
+0305:COMBINING OVERLINE
+0306:COMBINING BREVE
+0307:COMBINING DOT ABOVE
+0308:COMBINING DIAERESIS
+0309:COMBINING HOOK ABOVE
+030A:COMBINING RING ABOVE
+030B:COMBINING DOUBLE ACUTE ACCENT
+030C:COMBINING CARON
+030D:COMBINING VERTICAL LINE ABOVE
+030E:COMBINING DOUBLE VERTICAL LINE ABOVE
+030F:COMBINING DOUBLE GRAVE ACCENT
+0310:COMBINING CANDRABINDU
+0311:COMBINING INVERTED BREVE
+0312:COMBINING TURNED COMMA ABOVE
+0313:COMBINING COMMA ABOVE
+0314:COMBINING REVERSED COMMA ABOVE
+0315:COMBINING COMMA ABOVE RIGHT
+0316:COMBINING GRAVE ACCENT BELOW
+0317:COMBINING ACUTE ACCENT BELOW
+0318:COMBINING LEFT TACK BELOW
+0319:COMBINING RIGHT TACK BELOW
+031A:COMBINING LEFT ANGLE ABOVE
+031B:COMBINING HORN
+031C:COMBINING LEFT HALF RING BELOW
+031D:COMBINING UP TACK BELOW
+031E:COMBINING DOWN TACK BELOW
+031F:COMBINING PLUS SIGN BELOW
+0320:COMBINING MINUS SIGN BELOW
+0321:COMBINING PALATALIZED HOOK BELOW
+0322:COMBINING RETROFLEX HOOK BELOW
+0323:COMBINING DOT BELOW
+0324:COMBINING DIAERESIS BELOW
+0325:COMBINING RING BELOW
+0326:COMBINING COMMA BELOW
+0327:COMBINING CEDILLA
+0328:COMBINING OGONEK
+0329:COMBINING VERTICAL LINE BELOW
+032A:COMBINING BRIDGE BELOW
+032B:COMBINING INVERTED DOUBLE ARCH BELOW
+032C:COMBINING CARON BELOW
+032D:COMBINING CIRCUMFLEX ACCENT BELOW
+032E:COMBINING BREVE BELOW
+032F:COMBINING INVERTED BREVE BELOW
+0330:COMBINING TILDE BELOW
+0331:COMBINING MACRON BELOW
+0332:COMBINING LOW LINE
+0333:COMBINING DOUBLE LOW LINE
+0334:COMBINING TILDE OVERLAY
+0335:COMBINING SHORT STROKE OVERLAY
+0336:COMBINING LONG STROKE OVERLAY
+0337:COMBINING SHORT SOLIDUS OVERLAY
+0338:COMBINING LONG SOLIDUS OVERLAY
+0339:COMBINING RIGHT HALF RING BELOW
+033A:COMBINING INVERTED BRIDGE BELOW
+033B:COMBINING SQUARE BELOW
+033C:COMBINING SEAGULL BELOW
+033D:COMBINING X ABOVE
+033E:COMBINING VERTICAL TILDE
+033F:COMBINING DOUBLE OVERLINE
+0340:COMBINING GRAVE TONE MARK
+0341:COMBINING ACUTE TONE MARK
+0342:COMBINING GREEK PERISPOMENI
+0343:COMBINING GREEK KORONIS
+0344:COMBINING GREEK DIALYTIKA TONOS
+0345:COMBINING GREEK YPOGEGRAMMENI
+0346:COMBINING BRIDGE ABOVE
+0347:COMBINING EQUALS SIGN BELOW
+0348:COMBINING DOUBLE VERTICAL LINE BELOW
+0349:COMBINING LEFT ANGLE BELOW
+034A:COMBINING NOT TILDE ABOVE
+034B:COMBINING HOMOTHETIC ABOVE
+034C:COMBINING ALMOST EQUAL TO ABOVE
+034D:COMBINING LEFT RIGHT ARROW BELOW
+034E:COMBINING UPWARDS ARROW BELOW
+0360:COMBINING DOUBLE TILDE
+0361:COMBINING DOUBLE INVERTED BREVE
+0362:COMBINING DOUBLE RIGHTWARDS ARROW BELOW
+0374:GREEK NUMERAL SIGN
+0375:GREEK LOWER NUMERAL SIGN
+037A:GREEK YPOGEGRAMMENI
+037E:GREEK QUESTION MARK
+0384:GREEK TONOS
+0385:GREEK DIALYTIKA TONOS
+0386:GREEK CAPITAL LETTER ALPHA WITH TONOS
+0387:GREEK ANO TELEIA
+0388:GREEK CAPITAL LETTER EPSILON WITH TONOS
+0389:GREEK CAPITAL LETTER ETA WITH TONOS
+038A:GREEK CAPITAL LETTER IOTA WITH TONOS
+038C:GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E:GREEK CAPITAL LETTER UPSILON WITH TONOS
+038F:GREEK CAPITAL LETTER OMEGA WITH TONOS
+0390:GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+0391:GREEK CAPITAL LETTER ALPHA
+0392:GREEK CAPITAL LETTER BETA
+0393:GREEK CAPITAL LETTER GAMMA
+0394:GREEK CAPITAL LETTER DELTA
+0395:GREEK CAPITAL LETTER EPSILON
+0396:GREEK CAPITAL LETTER ZETA
+0397:GREEK CAPITAL LETTER ETA
+0398:GREEK CAPITAL LETTER THETA
+0399:GREEK CAPITAL LETTER IOTA
+039A:GREEK CAPITAL LETTER KAPPA
+039B:GREEK CAPITAL LETTER LAMDA
+039C:GREEK CAPITAL LETTER MU
+039D:GREEK CAPITAL LETTER NU
+039E:GREEK CAPITAL LETTER XI
+039F:GREEK CAPITAL LETTER OMICRON
+03A0:GREEK CAPITAL LETTER PI
+03A1:GREEK CAPITAL LETTER RHO
+03A3:GREEK CAPITAL LETTER SIGMA
+03A4:GREEK CAPITAL LETTER TAU
+03A5:GREEK CAPITAL LETTER UPSILON
+03A6:GREEK CAPITAL LETTER PHI
+03A7:GREEK CAPITAL LETTER CHI
+03A8:GREEK CAPITAL LETTER PSI
+03A9:GREEK CAPITAL LETTER OMEGA
+03AA:GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+03AB:GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+03AC:GREEK SMALL LETTER ALPHA WITH TONOS
+03AD:GREEK SMALL LETTER EPSILON WITH TONOS
+03AE:GREEK SMALL LETTER ETA WITH TONOS
+03AF:GREEK SMALL LETTER IOTA WITH TONOS
+03B0:GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+03B1:GREEK SMALL LETTER ALPHA
+03B2:GREEK SMALL LETTER BETA
+03B3:GREEK SMALL LETTER GAMMA
+03B4:GREEK SMALL LETTER DELTA
+03B5:GREEK SMALL LETTER EPSILON
+03B6:GREEK SMALL LETTER ZETA
+03B7:GREEK SMALL LETTER ETA
+03B8:GREEK SMALL LETTER THETA
+03B9:GREEK SMALL LETTER IOTA
+03BA:GREEK SMALL LETTER KAPPA
+03BB:GREEK SMALL LETTER LAMDA
+03BC:GREEK SMALL LETTER MU
+03BD:GREEK SMALL LETTER NU
+03BE:GREEK SMALL LETTER XI
+03BF:GREEK SMALL LETTER OMICRON
+03C0:GREEK SMALL LETTER PI
+03C1:GREEK SMALL LETTER RHO
+03C2:GREEK SMALL LETTER FINAL SIGMA
+03C3:GREEK SMALL LETTER SIGMA
+03C4:GREEK SMALL LETTER TAU
+03C5:GREEK SMALL LETTER UPSILON
+03C6:GREEK SMALL LETTER PHI
+03C7:GREEK SMALL LETTER CHI
+03C8:GREEK SMALL LETTER PSI
+03C9:GREEK SMALL LETTER OMEGA
+03CA:GREEK SMALL LETTER IOTA WITH DIALYTIKA
+03CB:GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+03CC:GREEK SMALL LETTER OMICRON WITH TONOS
+03CD:GREEK SMALL LETTER UPSILON WITH TONOS
+03CE:GREEK SMALL LETTER OMEGA WITH TONOS
+03D0:GREEK BETA SYMBOL
+03D1:GREEK THETA SYMBOL
+03D2:GREEK UPSILON WITH HOOK SYMBOL
+03D3:GREEK UPSILON WITH ACUTE AND HOOK SYMBOL
+03D4:GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+03D5:GREEK PHI SYMBOL
+03D6:GREEK PI SYMBOL
+03D7:GREEK KAI SYMBOL
+03DA:GREEK LETTER STIGMA
+03DB:GREEK SMALL LETTER STIGMA
+03DC:GREEK LETTER DIGAMMA
+03DD:GREEK SMALL LETTER DIGAMMA
+03DE:GREEK LETTER KOPPA
+03DF:GREEK SMALL LETTER KOPPA
+03E0:GREEK LETTER SAMPI
+03E1:GREEK SMALL LETTER SAMPI
+03E2:COPTIC CAPITAL LETTER SHEI
+03E3:COPTIC SMALL LETTER SHEI
+03E4:COPTIC CAPITAL LETTER FEI
+03E5:COPTIC SMALL LETTER FEI
+03E6:COPTIC CAPITAL LETTER KHEI
+03E7:COPTIC SMALL LETTER KHEI
+03E8:COPTIC CAPITAL LETTER HORI
+03E9:COPTIC SMALL LETTER HORI
+03EA:COPTIC CAPITAL LETTER GANGIA
+03EB:COPTIC SMALL LETTER GANGIA
+03EC:COPTIC CAPITAL LETTER SHIMA
+03ED:COPTIC SMALL LETTER SHIMA
+03EE:COPTIC CAPITAL LETTER DEI
+03EF:COPTIC SMALL LETTER DEI
+03F0:GREEK KAPPA SYMBOL
+03F1:GREEK RHO SYMBOL
+03F2:GREEK LUNATE SIGMA SYMBOL
+03F3:GREEK LETTER YOT
+0400:CYRILLIC CAPITAL LETTER IE WITH GRAVE
+0401:CYRILLIC CAPITAL LETTER IO
+0402:CYRILLIC CAPITAL LETTER DJE
+0403:CYRILLIC CAPITAL LETTER GJE
+0404:CYRILLIC CAPITAL LETTER UKRAINIAN IE
+0405:CYRILLIC CAPITAL LETTER DZE
+0406:CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+0407:CYRILLIC CAPITAL LETTER YI
+0408:CYRILLIC CAPITAL LETTER JE
+0409:CYRILLIC CAPITAL LETTER LJE
+040A:CYRILLIC CAPITAL LETTER NJE
+040B:CYRILLIC CAPITAL LETTER TSHE
+040C:CYRILLIC CAPITAL LETTER KJE
+040D:CYRILLIC CAPITAL LETTER I WITH GRAVE
+040E:CYRILLIC CAPITAL LETTER SHORT U
+040F:CYRILLIC CAPITAL LETTER DZHE
+0410:CYRILLIC CAPITAL LETTER A
+0411:CYRILLIC CAPITAL LETTER BE
+0412:CYRILLIC CAPITAL LETTER VE
+0413:CYRILLIC CAPITAL LETTER GHE
+0414:CYRILLIC CAPITAL LETTER DE
+0415:CYRILLIC CAPITAL LETTER IE
+0416:CYRILLIC CAPITAL LETTER ZHE
+0417:CYRILLIC CAPITAL LETTER ZE
+0418:CYRILLIC CAPITAL LETTER I
+0419:CYRILLIC CAPITAL LETTER SHORT I
+041A:CYRILLIC CAPITAL LETTER KA
+041B:CYRILLIC CAPITAL LETTER EL
+041C:CYRILLIC CAPITAL LETTER EM
+041D:CYRILLIC CAPITAL LETTER EN
+041E:CYRILLIC CAPITAL LETTER O
+041F:CYRILLIC CAPITAL LETTER PE
+0420:CYRILLIC CAPITAL LETTER ER
+0421:CYRILLIC CAPITAL LETTER ES
+0422:CYRILLIC CAPITAL LETTER TE
+0423:CYRILLIC CAPITAL LETTER U
+0424:CYRILLIC CAPITAL LETTER EF
+0425:CYRILLIC CAPITAL LETTER HA
+0426:CYRILLIC CAPITAL LETTER TSE
+0427:CYRILLIC CAPITAL LETTER CHE
+0428:CYRILLIC CAPITAL LETTER SHA
+0429:CYRILLIC CAPITAL LETTER SHCHA
+042A:CYRILLIC CAPITAL LETTER HARD SIGN
+042B:CYRILLIC CAPITAL LETTER YERU
+042C:CYRILLIC CAPITAL LETTER SOFT SIGN
+042D:CYRILLIC CAPITAL LETTER E
+042E:CYRILLIC CAPITAL LETTER YU
+042F:CYRILLIC CAPITAL LETTER YA
+0430:CYRILLIC SMALL LETTER A
+0431:CYRILLIC SMALL LETTER BE
+0432:CYRILLIC SMALL LETTER VE
+0433:CYRILLIC SMALL LETTER GHE
+0434:CYRILLIC SMALL LETTER DE
+0435:CYRILLIC SMALL LETTER IE
+0436:CYRILLIC SMALL LETTER ZHE
+0437:CYRILLIC SMALL LETTER ZE
+0438:CYRILLIC SMALL LETTER I
+0439:CYRILLIC SMALL LETTER SHORT I
+043A:CYRILLIC SMALL LETTER KA
+043B:CYRILLIC SMALL LETTER EL
+043C:CYRILLIC SMALL LETTER EM
+043D:CYRILLIC SMALL LETTER EN
+043E:CYRILLIC SMALL LETTER O
+043F:CYRILLIC SMALL LETTER PE
+0440:CYRILLIC SMALL LETTER ER
+0441:CYRILLIC SMALL LETTER ES
+0442:CYRILLIC SMALL LETTER TE
+0443:CYRILLIC SMALL LETTER U
+0444:CYRILLIC SMALL LETTER EF
+0445:CYRILLIC SMALL LETTER HA
+0446:CYRILLIC SMALL LETTER TSE
+0447:CYRILLIC SMALL LETTER CHE
+0448:CYRILLIC SMALL LETTER SHA
+0449:CYRILLIC SMALL LETTER SHCHA
+044A:CYRILLIC SMALL LETTER HARD SIGN
+044B:CYRILLIC SMALL LETTER YERU
+044C:CYRILLIC SMALL LETTER SOFT SIGN
+044D:CYRILLIC SMALL LETTER E
+044E:CYRILLIC SMALL LETTER YU
+044F:CYRILLIC SMALL LETTER YA
+0450:CYRILLIC SMALL LETTER IE WITH GRAVE
+0451:CYRILLIC SMALL LETTER IO
+0452:CYRILLIC SMALL LETTER DJE
+0453:CYRILLIC SMALL LETTER GJE
+0454:CYRILLIC SMALL LETTER UKRAINIAN IE
+0455:CYRILLIC SMALL LETTER DZE
+0456:CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+0457:CYRILLIC SMALL LETTER YI
+0458:CYRILLIC SMALL LETTER JE
+0459:CYRILLIC SMALL LETTER LJE
+045A:CYRILLIC SMALL LETTER NJE
+045B:CYRILLIC SMALL LETTER TSHE
+045C:CYRILLIC SMALL LETTER KJE
+045D:CYRILLIC SMALL LETTER I WITH GRAVE
+045E:CYRILLIC SMALL LETTER SHORT U
+045F:CYRILLIC SMALL LETTER DZHE
+0460:CYRILLIC CAPITAL LETTER OMEGA
+0461:CYRILLIC SMALL LETTER OMEGA
+0462:CYRILLIC CAPITAL LETTER YAT
+0463:CYRILLIC SMALL LETTER YAT
+0464:CYRILLIC CAPITAL LETTER IOTIFIED E
+0465:CYRILLIC SMALL LETTER IOTIFIED E
+0466:CYRILLIC CAPITAL LETTER LITTLE YUS
+0467:CYRILLIC SMALL LETTER LITTLE YUS
+0468:CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
+0469:CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS
+046A:CYRILLIC CAPITAL LETTER BIG YUS
+046B:CYRILLIC SMALL LETTER BIG YUS
+046C:CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
+046D:CYRILLIC SMALL LETTER IOTIFIED BIG YUS
+046E:CYRILLIC CAPITAL LETTER KSI
+046F:CYRILLIC SMALL LETTER KSI
+0470:CYRILLIC CAPITAL LETTER PSI
+0471:CYRILLIC SMALL LETTER PSI
+0472:CYRILLIC CAPITAL LETTER FITA
+0473:CYRILLIC SMALL LETTER FITA
+0474:CYRILLIC CAPITAL LETTER IZHITSA
+0475:CYRILLIC SMALL LETTER IZHITSA
+0476:CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0477:CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0478:CYRILLIC CAPITAL LETTER UK
+0479:CYRILLIC SMALL LETTER UK
+047A:CYRILLIC CAPITAL LETTER ROUND OMEGA
+047B:CYRILLIC SMALL LETTER ROUND OMEGA
+047C:CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
+047D:CYRILLIC SMALL LETTER OMEGA WITH TITLO
+047E:CYRILLIC CAPITAL LETTER OT
+047F:CYRILLIC SMALL LETTER OT
+0480:CYRILLIC CAPITAL LETTER KOPPA
+0481:CYRILLIC SMALL LETTER KOPPA
+0482:CYRILLIC THOUSANDS SIGN
+0483:COMBINING CYRILLIC TITLO
+0484:COMBINING CYRILLIC PALATALIZATION
+0485:COMBINING CYRILLIC DASIA PNEUMATA
+0486:COMBINING CYRILLIC PSILI PNEUMATA
+0488:COMBINING CYRILLIC HUNDRED THOUSANDS SIGN
+0489:COMBINING CYRILLIC MILLIONS SIGN
+048C:CYRILLIC CAPITAL LETTER SEMISOFT SIGN
+048D:CYRILLIC SMALL LETTER SEMISOFT SIGN
+048E:CYRILLIC CAPITAL LETTER ER WITH TICK
+048F:CYRILLIC SMALL LETTER ER WITH TICK
+0490:CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+0491:CYRILLIC SMALL LETTER GHE WITH UPTURN
+0492:CYRILLIC CAPITAL LETTER GHE WITH STROKE
+0493:CYRILLIC SMALL LETTER GHE WITH STROKE
+0494:CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
+0495:CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK
+0496:CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
+0497:CYRILLIC SMALL LETTER ZHE WITH DESCENDER
+0498:CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
+0499:CYRILLIC SMALL LETTER ZE WITH DESCENDER
+049A:CYRILLIC CAPITAL LETTER KA WITH DESCENDER
+049B:CYRILLIC SMALL LETTER KA WITH DESCENDER
+049C:CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
+049D:CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
+049E:CYRILLIC CAPITAL LETTER KA WITH STROKE
+049F:CYRILLIC SMALL LETTER KA WITH STROKE
+04A0:CYRILLIC CAPITAL LETTER BASHKIR KA
+04A1:CYRILLIC SMALL LETTER BASHKIR KA
+04A2:CYRILLIC CAPITAL LETTER EN WITH DESCENDER
+04A3:CYRILLIC SMALL LETTER EN WITH DESCENDER
+04A4:CYRILLIC CAPITAL LIGATURE EN GHE
+04A5:CYRILLIC SMALL LIGATURE EN GHE
+04A6:CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
+04A7:CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK
+04A8:CYRILLIC CAPITAL LETTER ABKHASIAN HA
+04A9:CYRILLIC SMALL LETTER ABKHASIAN HA
+04AA:CYRILLIC CAPITAL LETTER ES WITH DESCENDER
+04AB:CYRILLIC SMALL LETTER ES WITH DESCENDER
+04AC:CYRILLIC CAPITAL LETTER TE WITH DESCENDER
+04AD:CYRILLIC SMALL LETTER TE WITH DESCENDER
+04AE:CYRILLIC CAPITAL LETTER STRAIGHT U
+04AF:CYRILLIC SMALL LETTER STRAIGHT U
+04B0:CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+04B1:CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
+04B2:CYRILLIC CAPITAL LETTER HA WITH DESCENDER
+04B3:CYRILLIC SMALL LETTER HA WITH DESCENDER
+04B4:CYRILLIC CAPITAL LIGATURE TE TSE
+04B5:CYRILLIC SMALL LIGATURE TE TSE
+04B6:CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
+04B7:CYRILLIC SMALL LETTER CHE WITH DESCENDER
+04B8:CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
+04B9:CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
+04BA:CYRILLIC CAPITAL LETTER SHHA
+04BB:CYRILLIC SMALL LETTER SHHA
+04BC:CYRILLIC CAPITAL LETTER ABKHASIAN CHE
+04BD:CYRILLIC SMALL LETTER ABKHASIAN CHE
+04BE:CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
+04BF:CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER
+04C0:CYRILLIC LETTER PALOCHKA
+04C1:CYRILLIC CAPITAL LETTER ZHE WITH BREVE
+04C2:CYRILLIC SMALL LETTER ZHE WITH BREVE
+04C3:CYRILLIC CAPITAL LETTER KA WITH HOOK
+04C4:CYRILLIC SMALL LETTER KA WITH HOOK
+04C7:CYRILLIC CAPITAL LETTER EN WITH HOOK
+04C8:CYRILLIC SMALL LETTER EN WITH HOOK
+04CB:CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
+04CC:CYRILLIC SMALL LETTER KHAKASSIAN CHE
+04D0:CYRILLIC CAPITAL LETTER A WITH BREVE
+04D1:CYRILLIC SMALL LETTER A WITH BREVE
+04D2:CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+04D3:CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D4:CYRILLIC CAPITAL LIGATURE A IE
+04D5:CYRILLIC SMALL LIGATURE A IE
+04D6:CYRILLIC CAPITAL LETTER IE WITH BREVE
+04D7:CYRILLIC SMALL LETTER IE WITH BREVE
+04D8:CYRILLIC CAPITAL LETTER SCHWA
+04D9:CYRILLIC SMALL LETTER SCHWA
+04DA:CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+04DB:CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+04DC:CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+04DD:CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+04DE:CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+04DF:CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04E0:CYRILLIC CAPITAL LETTER ABKHASIAN DZE
+04E1:CYRILLIC SMALL LETTER ABKHASIAN DZE
+04E2:CYRILLIC CAPITAL LETTER I WITH MACRON
+04E3:CYRILLIC SMALL LETTER I WITH MACRON
+04E4:CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+04E5:CYRILLIC SMALL LETTER I WITH DIAERESIS
+04E6:CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+04E7:CYRILLIC SMALL LETTER O WITH DIAERESIS
+04E8:CYRILLIC CAPITAL LETTER BARRED O
+04E9:CYRILLIC SMALL LETTER BARRED O
+04EA:CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+04EB:CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+04EC:CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+04ED:CYRILLIC SMALL LETTER E WITH DIAERESIS
+04EE:CYRILLIC CAPITAL LETTER U WITH MACRON
+04EF:CYRILLIC SMALL LETTER U WITH MACRON
+04F0:CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+04F1:CYRILLIC SMALL LETTER U WITH DIAERESIS
+04F2:CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+04F3:CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+04F4:CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+04F5:CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F8:CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+04F9:CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+0531:ARMENIAN CAPITAL LETTER AYB
+0532:ARMENIAN CAPITAL LETTER BEN
+0533:ARMENIAN CAPITAL LETTER GIM
+0534:ARMENIAN CAPITAL LETTER DA
+0535:ARMENIAN CAPITAL LETTER ECH
+0536:ARMENIAN CAPITAL LETTER ZA
+0537:ARMENIAN CAPITAL LETTER EH
+0538:ARMENIAN CAPITAL LETTER ET
+0539:ARMENIAN CAPITAL LETTER TO
+053A:ARMENIAN CAPITAL LETTER ZHE
+053B:ARMENIAN CAPITAL LETTER INI
+053C:ARMENIAN CAPITAL LETTER LIWN
+053D:ARMENIAN CAPITAL LETTER XEH
+053E:ARMENIAN CAPITAL LETTER CA
+053F:ARMENIAN CAPITAL LETTER KEN
+0540:ARMENIAN CAPITAL LETTER HO
+0541:ARMENIAN CAPITAL LETTER JA
+0542:ARMENIAN CAPITAL LETTER GHAD
+0543:ARMENIAN CAPITAL LETTER CHEH
+0544:ARMENIAN CAPITAL LETTER MEN
+0545:ARMENIAN CAPITAL LETTER YI
+0546:ARMENIAN CAPITAL LETTER NOW
+0547:ARMENIAN CAPITAL LETTER SHA
+0548:ARMENIAN CAPITAL LETTER VO
+0549:ARMENIAN CAPITAL LETTER CHA
+054A:ARMENIAN CAPITAL LETTER PEH
+054B:ARMENIAN CAPITAL LETTER JHEH
+054C:ARMENIAN CAPITAL LETTER RA
+054D:ARMENIAN CAPITAL LETTER SEH
+054E:ARMENIAN CAPITAL LETTER VEW
+054F:ARMENIAN CAPITAL LETTER TIWN
+0550:ARMENIAN CAPITAL LETTER REH
+0551:ARMENIAN CAPITAL LETTER CO
+0552:ARMENIAN CAPITAL LETTER YIWN
+0553:ARMENIAN CAPITAL LETTER PIWR
+0554:ARMENIAN CAPITAL LETTER KEH
+0555:ARMENIAN CAPITAL LETTER OH
+0556:ARMENIAN CAPITAL LETTER FEH
+0559:ARMENIAN MODIFIER LETTER LEFT HALF RING
+055A:ARMENIAN APOSTROPHE
+055B:ARMENIAN EMPHASIS MARK
+055C:ARMENIAN EXCLAMATION MARK
+055D:ARMENIAN COMMA
+055E:ARMENIAN QUESTION MARK
+055F:ARMENIAN ABBREVIATION MARK
+0561:ARMENIAN SMALL LETTER AYB
+0562:ARMENIAN SMALL LETTER BEN
+0563:ARMENIAN SMALL LETTER GIM
+0564:ARMENIAN SMALL LETTER DA
+0565:ARMENIAN SMALL LETTER ECH
+0566:ARMENIAN SMALL LETTER ZA
+0567:ARMENIAN SMALL LETTER EH
+0568:ARMENIAN SMALL LETTER ET
+0569:ARMENIAN SMALL LETTER TO
+056A:ARMENIAN SMALL LETTER ZHE
+056B:ARMENIAN SMALL LETTER INI
+056C:ARMENIAN SMALL LETTER LIWN
+056D:ARMENIAN SMALL LETTER XEH
+056E:ARMENIAN SMALL LETTER CA
+056F:ARMENIAN SMALL LETTER KEN
+0570:ARMENIAN SMALL LETTER HO
+0571:ARMENIAN SMALL LETTER JA
+0572:ARMENIAN SMALL LETTER GHAD
+0573:ARMENIAN SMALL LETTER CHEH
+0574:ARMENIAN SMALL LETTER MEN
+0575:ARMENIAN SMALL LETTER YI
+0576:ARMENIAN SMALL LETTER NOW
+0577:ARMENIAN SMALL LETTER SHA
+0578:ARMENIAN SMALL LETTER VO
+0579:ARMENIAN SMALL LETTER CHA
+057A:ARMENIAN SMALL LETTER PEH
+057B:ARMENIAN SMALL LETTER JHEH
+057C:ARMENIAN SMALL LETTER RA
+057D:ARMENIAN SMALL LETTER SEH
+057E:ARMENIAN SMALL LETTER VEW
+057F:ARMENIAN SMALL LETTER TIWN
+0580:ARMENIAN SMALL LETTER REH
+0581:ARMENIAN SMALL LETTER CO
+0582:ARMENIAN SMALL LETTER YIWN
+0583:ARMENIAN SMALL LETTER PIWR
+0584:ARMENIAN SMALL LETTER KEH
+0585:ARMENIAN SMALL LETTER OH
+0586:ARMENIAN SMALL LETTER FEH
+0587:ARMENIAN SMALL LIGATURE ECH YIWN
+0589:ARMENIAN FULL STOP
+058A:ARMENIAN HYPHEN
+10D0:GEORGIAN LETTER AN
+10D1:GEORGIAN LETTER BAN
+10D2:GEORGIAN LETTER GAN
+10D3:GEORGIAN LETTER DON
+10D4:GEORGIAN LETTER EN
+10D5:GEORGIAN LETTER VIN
+10D6:GEORGIAN LETTER ZEN
+10D7:GEORGIAN LETTER TAN
+10D8:GEORGIAN LETTER IN
+10D9:GEORGIAN LETTER KAN
+10DA:GEORGIAN LETTER LAS
+10DB:GEORGIAN LETTER MAN
+10DC:GEORGIAN LETTER NAR
+10DD:GEORGIAN LETTER ON
+10DE:GEORGIAN LETTER PAR
+10DF:GEORGIAN LETTER ZHAR
+10E0:GEORGIAN LETTER RAE
+10E1:GEORGIAN LETTER SAN
+10E2:GEORGIAN LETTER TAR
+10E3:GEORGIAN LETTER UN
+10E4:GEORGIAN LETTER PHAR
+10E5:GEORGIAN LETTER KHAR
+10E6:GEORGIAN LETTER GHAN
+10E7:GEORGIAN LETTER QAR
+10E8:GEORGIAN LETTER SHIN
+10E9:GEORGIAN LETTER CHIN
+10EA:GEORGIAN LETTER CAN
+10EB:GEORGIAN LETTER JIL
+10EC:GEORGIAN LETTER CIL
+10ED:GEORGIAN LETTER CHAR
+10EE:GEORGIAN LETTER XAN
+10EF:GEORGIAN LETTER JHAN
+10F0:GEORGIAN LETTER HAE
+10F1:GEORGIAN LETTER HE
+10F2:GEORGIAN LETTER HIE
+10F3:GEORGIAN LETTER WE
+10F4:GEORGIAN LETTER HAR
+10F5:GEORGIAN LETTER HOE
+10F6:GEORGIAN LETTER FI
+10FB:GEORGIAN PARAGRAPH SEPARATOR
+1E00:LATIN CAPITAL LETTER A WITH RING BELOW
+1E01:LATIN SMALL LETTER A WITH RING BELOW
+1E02:LATIN CAPITAL LETTER B WITH DOT ABOVE
+1E03:LATIN SMALL LETTER B WITH DOT ABOVE
+1E04:LATIN CAPITAL LETTER B WITH DOT BELOW
+1E05:LATIN SMALL LETTER B WITH DOT BELOW
+1E06:LATIN CAPITAL LETTER B WITH LINE BELOW
+1E07:LATIN SMALL LETTER B WITH LINE BELOW
+1E08:LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+1E09:LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+1E0A:LATIN CAPITAL LETTER D WITH DOT ABOVE
+1E0B:LATIN SMALL LETTER D WITH DOT ABOVE
+1E0C:LATIN CAPITAL LETTER D WITH DOT BELOW
+1E0D:LATIN SMALL LETTER D WITH DOT BELOW
+1E0E:LATIN CAPITAL LETTER D WITH LINE BELOW
+1E0F:LATIN SMALL LETTER D WITH LINE BELOW
+1E10:LATIN CAPITAL LETTER D WITH CEDILLA
+1E11:LATIN SMALL LETTER D WITH CEDILLA
+1E12:LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
+1E13:LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW
+1E14:LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+1E15:LATIN SMALL LETTER E WITH MACRON AND GRAVE
+1E16:LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+1E17:LATIN SMALL LETTER E WITH MACRON AND ACUTE
+1E18:LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
+1E19:LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW
+1E1A:LATIN CAPITAL LETTER E WITH TILDE BELOW
+1E1B:LATIN SMALL LETTER E WITH TILDE BELOW
+1E1C:LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+1E1D:LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+1E1E:LATIN CAPITAL LETTER F WITH DOT ABOVE
+1E1F:LATIN SMALL LETTER F WITH DOT ABOVE
+1E20:LATIN CAPITAL LETTER G WITH MACRON
+1E21:LATIN SMALL LETTER G WITH MACRON
+1E22:LATIN CAPITAL LETTER H WITH DOT ABOVE
+1E23:LATIN SMALL LETTER H WITH DOT ABOVE
+1E24:LATIN CAPITAL LETTER H WITH DOT BELOW
+1E25:LATIN SMALL LETTER H WITH DOT BELOW
+1E26:LATIN CAPITAL LETTER H WITH DIAERESIS
+1E27:LATIN SMALL LETTER H WITH DIAERESIS
+1E28:LATIN CAPITAL LETTER H WITH CEDILLA
+1E29:LATIN SMALL LETTER H WITH CEDILLA
+1E2A:LATIN CAPITAL LETTER H WITH BREVE BELOW
+1E2B:LATIN SMALL LETTER H WITH BREVE BELOW
+1E2C:LATIN CAPITAL LETTER I WITH TILDE BELOW
+1E2D:LATIN SMALL LETTER I WITH TILDE BELOW
+1E2E:LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+1E2F:LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+1E30:LATIN CAPITAL LETTER K WITH ACUTE
+1E31:LATIN SMALL LETTER K WITH ACUTE
+1E32:LATIN CAPITAL LETTER K WITH DOT BELOW
+1E33:LATIN SMALL LETTER K WITH DOT BELOW
+1E34:LATIN CAPITAL LETTER K WITH LINE BELOW
+1E35:LATIN SMALL LETTER K WITH LINE BELOW
+1E36:LATIN CAPITAL LETTER L WITH DOT BELOW
+1E37:LATIN SMALL LETTER L WITH DOT BELOW
+1E38:LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+1E39:LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+1E3A:LATIN CAPITAL LETTER L WITH LINE BELOW
+1E3B:LATIN SMALL LETTER L WITH LINE BELOW
+1E3C:LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
+1E3D:LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW
+1E3E:LATIN CAPITAL LETTER M WITH ACUTE
+1E3F:LATIN SMALL LETTER M WITH ACUTE
+1E40:LATIN CAPITAL LETTER M WITH DOT ABOVE
+1E41:LATIN SMALL LETTER M WITH DOT ABOVE
+1E42:LATIN CAPITAL LETTER M WITH DOT BELOW
+1E43:LATIN SMALL LETTER M WITH DOT BELOW
+1E44:LATIN CAPITAL LETTER N WITH DOT ABOVE
+1E45:LATIN SMALL LETTER N WITH DOT ABOVE
+1E46:LATIN CAPITAL LETTER N WITH DOT BELOW
+1E47:LATIN SMALL LETTER N WITH DOT BELOW
+1E48:LATIN CAPITAL LETTER N WITH LINE BELOW
+1E49:LATIN SMALL LETTER N WITH LINE BELOW
+1E4A:LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
+1E4B:LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW
+1E4C:LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+1E4D:LATIN SMALL LETTER O WITH TILDE AND ACUTE
+1E4E:LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+1E4F:LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+1E50:LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+1E51:LATIN SMALL LETTER O WITH MACRON AND GRAVE
+1E52:LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+1E53:LATIN SMALL LETTER O WITH MACRON AND ACUTE
+1E54:LATIN CAPITAL LETTER P WITH ACUTE
+1E55:LATIN SMALL LETTER P WITH ACUTE
+1E56:LATIN CAPITAL LETTER P WITH DOT ABOVE
+1E57:LATIN SMALL LETTER P WITH DOT ABOVE
+1E58:LATIN CAPITAL LETTER R WITH DOT ABOVE
+1E59:LATIN SMALL LETTER R WITH DOT ABOVE
+1E5A:LATIN CAPITAL LETTER R WITH DOT BELOW
+1E5B:LATIN SMALL LETTER R WITH DOT BELOW
+1E5C:LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+1E5D:LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+1E5E:LATIN CAPITAL LETTER R WITH LINE BELOW
+1E5F:LATIN SMALL LETTER R WITH LINE BELOW
+1E60:LATIN CAPITAL LETTER S WITH DOT ABOVE
+1E61:LATIN SMALL LETTER S WITH DOT ABOVE
+1E62:LATIN CAPITAL LETTER S WITH DOT BELOW
+1E63:LATIN SMALL LETTER S WITH DOT BELOW
+1E64:LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+1E65:LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+1E66:LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+1E67:LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
+1E68:LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+1E69:LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+1E6A:LATIN CAPITAL LETTER T WITH DOT ABOVE
+1E6B:LATIN SMALL LETTER T WITH DOT ABOVE
+1E6C:LATIN CAPITAL LETTER T WITH DOT BELOW
+1E6D:LATIN SMALL LETTER T WITH DOT BELOW
+1E6E:LATIN CAPITAL LETTER T WITH LINE BELOW
+1E6F:LATIN SMALL LETTER T WITH LINE BELOW
+1E70:LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
+1E71:LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW
+1E72:LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
+1E73:LATIN SMALL LETTER U WITH DIAERESIS BELOW
+1E74:LATIN CAPITAL LETTER U WITH TILDE BELOW
+1E75:LATIN SMALL LETTER U WITH TILDE BELOW
+1E76:LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
+1E77:LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW
+1E78:LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+1E79:LATIN SMALL LETTER U WITH TILDE AND ACUTE
+1E7A:LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+1E7B:LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+1E7C:LATIN CAPITAL LETTER V WITH TILDE
+1E7D:LATIN SMALL LETTER V WITH TILDE
+1E7E:LATIN CAPITAL LETTER V WITH DOT BELOW
+1E7F:LATIN SMALL LETTER V WITH DOT BELOW
+1E80:LATIN CAPITAL LETTER W WITH GRAVE
+1E81:LATIN SMALL LETTER W WITH GRAVE
+1E82:LATIN CAPITAL LETTER W WITH ACUTE
+1E83:LATIN SMALL LETTER W WITH ACUTE
+1E84:LATIN CAPITAL LETTER W WITH DIAERESIS
+1E85:LATIN SMALL LETTER W WITH DIAERESIS
+1E86:LATIN CAPITAL LETTER W WITH DOT ABOVE
+1E87:LATIN SMALL LETTER W WITH DOT ABOVE
+1E88:LATIN CAPITAL LETTER W WITH DOT BELOW
+1E89:LATIN SMALL LETTER W WITH DOT BELOW
+1E8A:LATIN CAPITAL LETTER X WITH DOT ABOVE
+1E8B:LATIN SMALL LETTER X WITH DOT ABOVE
+1E8C:LATIN CAPITAL LETTER X WITH DIAERESIS
+1E8D:LATIN SMALL LETTER X WITH DIAERESIS
+1E8E:LATIN CAPITAL LETTER Y WITH DOT ABOVE
+1E8F:LATIN SMALL LETTER Y WITH DOT ABOVE
+1E90:LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
+1E91:LATIN SMALL LETTER Z WITH CIRCUMFLEX
+1E92:LATIN CAPITAL LETTER Z WITH DOT BELOW
+1E93:LATIN SMALL LETTER Z WITH DOT BELOW
+1E94:LATIN CAPITAL LETTER Z WITH LINE BELOW
+1E95:LATIN SMALL LETTER Z WITH LINE BELOW
+1E96:LATIN SMALL LETTER H WITH LINE BELOW
+1E97:LATIN SMALL LETTER T WITH DIAERESIS
+1E98:LATIN SMALL LETTER W WITH RING ABOVE
+1E99:LATIN SMALL LETTER Y WITH RING ABOVE
+1E9A:LATIN SMALL LETTER A WITH RIGHT HALF RING
+1E9B:LATIN SMALL LETTER LONG S WITH DOT ABOVE
+1EA0:LATIN CAPITAL LETTER A WITH DOT BELOW
+1EA1:LATIN SMALL LETTER A WITH DOT BELOW
+1EA2:LATIN CAPITAL LETTER A WITH HOOK ABOVE
+1EA3:LATIN SMALL LETTER A WITH HOOK ABOVE
+1EA4:LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EA5:LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EA6:LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA7:LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA8:LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EA9:LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EAA:LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+1EAB:LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+1EAC:LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1EAD:LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1EAE:LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+1EAF:LATIN SMALL LETTER A WITH BREVE AND ACUTE
+1EB0:LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+1EB1:LATIN SMALL LETTER A WITH BREVE AND GRAVE
+1EB2:LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+1EB3:LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+1EB4:LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+1EB5:LATIN SMALL LETTER A WITH BREVE AND TILDE
+1EB6:LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+1EB7:LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+1EB8:LATIN CAPITAL LETTER E WITH DOT BELOW
+1EB9:LATIN SMALL LETTER E WITH DOT BELOW
+1EBA:LATIN CAPITAL LETTER E WITH HOOK ABOVE
+1EBB:LATIN SMALL LETTER E WITH HOOK ABOVE
+1EBC:LATIN CAPITAL LETTER E WITH TILDE
+1EBD:LATIN SMALL LETTER E WITH TILDE
+1EBE:LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EBF:LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EC0:LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC1:LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC2:LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC3:LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC4:LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC5:LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC6:LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC7:LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC8:LATIN CAPITAL LETTER I WITH HOOK ABOVE
+1EC9:LATIN SMALL LETTER I WITH HOOK ABOVE
+1ECA:LATIN CAPITAL LETTER I WITH DOT BELOW
+1ECB:LATIN SMALL LETTER I WITH DOT BELOW
+1ECC:LATIN CAPITAL LETTER O WITH DOT BELOW
+1ECD:LATIN SMALL LETTER O WITH DOT BELOW
+1ECE:LATIN CAPITAL LETTER O WITH HOOK ABOVE
+1ECF:LATIN SMALL LETTER O WITH HOOK ABOVE
+1ED0:LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED1:LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED2:LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED3:LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED4:LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED5:LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED6:LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED7:LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED8:LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1ED9:LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1EDA:LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+1EDB:LATIN SMALL LETTER O WITH HORN AND ACUTE
+1EDC:LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+1EDD:LATIN SMALL LETTER O WITH HORN AND GRAVE
+1EDE:LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+1EDF:LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+1EE0:LATIN CAPITAL LETTER O WITH HORN AND TILDE
+1EE1:LATIN SMALL LETTER O WITH HORN AND TILDE
+1EE2:LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+1EE3:LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+1EE4:LATIN CAPITAL LETTER U WITH DOT BELOW
+1EE5:LATIN SMALL LETTER U WITH DOT BELOW
+1EE6:LATIN CAPITAL LETTER U WITH HOOK ABOVE
+1EE7:LATIN SMALL LETTER U WITH HOOK ABOVE
+1EE8:LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+1EE9:LATIN SMALL LETTER U WITH HORN AND ACUTE
+1EEA:LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+1EEB:LATIN SMALL LETTER U WITH HORN AND GRAVE
+1EEC:LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+1EED:LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+1EEE:LATIN CAPITAL LETTER U WITH HORN AND TILDE
+1EEF:LATIN SMALL LETTER U WITH HORN AND TILDE
+1EF0:LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+1EF1:LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+1EF2:LATIN CAPITAL LETTER Y WITH GRAVE
+1EF3:LATIN SMALL LETTER Y WITH GRAVE
+1EF4:LATIN CAPITAL LETTER Y WITH DOT BELOW
+1EF5:LATIN SMALL LETTER Y WITH DOT BELOW
+1EF6:LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+1EF7:LATIN SMALL LETTER Y WITH HOOK ABOVE
+1EF8:LATIN CAPITAL LETTER Y WITH TILDE
+1EF9:LATIN SMALL LETTER Y WITH TILDE
+1F00:GREEK SMALL LETTER ALPHA WITH PSILI
+1F01:GREEK SMALL LETTER ALPHA WITH DASIA
+1F02:GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+1F03:GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+1F04:GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+1F05:GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+1F06:GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+1F07:GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+1F08:GREEK CAPITAL LETTER ALPHA WITH PSILI
+1F09:GREEK CAPITAL LETTER ALPHA WITH DASIA
+1F0A:GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+1F0B:GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+1F0C:GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+1F0D:GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+1F0E:GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+1F0F:GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+1F10:GREEK SMALL LETTER EPSILON WITH PSILI
+1F11:GREEK SMALL LETTER EPSILON WITH DASIA
+1F12:GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+1F13:GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+1F14:GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+1F15:GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+1F18:GREEK CAPITAL LETTER EPSILON WITH PSILI
+1F19:GREEK CAPITAL LETTER EPSILON WITH DASIA
+1F1A:GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+1F1B:GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+1F1C:GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+1F1D:GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F20:GREEK SMALL LETTER ETA WITH PSILI
+1F21:GREEK SMALL LETTER ETA WITH DASIA
+1F22:GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+1F23:GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+1F24:GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+1F25:GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+1F26:GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+1F27:GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+1F28:GREEK CAPITAL LETTER ETA WITH PSILI
+1F29:GREEK CAPITAL LETTER ETA WITH DASIA
+1F2A:GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+1F2B:GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+1F2C:GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+1F2D:GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+1F2E:GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+1F2F:GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+1F30:GREEK SMALL LETTER IOTA WITH PSILI
+1F31:GREEK SMALL LETTER IOTA WITH DASIA
+1F32:GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+1F33:GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+1F34:GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+1F35:GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+1F36:GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+1F37:GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+1F38:GREEK CAPITAL LETTER IOTA WITH PSILI
+1F39:GREEK CAPITAL LETTER IOTA WITH DASIA
+1F3A:GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+1F3B:GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+1F3C:GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+1F3D:GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+1F3E:GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+1F3F:GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+1F40:GREEK SMALL LETTER OMICRON WITH PSILI
+1F41:GREEK SMALL LETTER OMICRON WITH DASIA
+1F42:GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+1F43:GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+1F44:GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+1F45:GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+1F48:GREEK CAPITAL LETTER OMICRON WITH PSILI
+1F49:GREEK CAPITAL LETTER OMICRON WITH DASIA
+1F4A:GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+1F4B:GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+1F4C:GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+1F4D:GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F50:GREEK SMALL LETTER UPSILON WITH PSILI
+1F51:GREEK SMALL LETTER UPSILON WITH DASIA
+1F52:GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+1F53:GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+1F54:GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+1F55:GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+1F56:GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+1F57:GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F59:GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F5B:GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F5D:GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F5F:GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F60:GREEK SMALL LETTER OMEGA WITH PSILI
+1F61:GREEK SMALL LETTER OMEGA WITH DASIA
+1F62:GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+1F63:GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+1F64:GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+1F65:GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+1F66:GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+1F67:GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+1F68:GREEK CAPITAL LETTER OMEGA WITH PSILI
+1F69:GREEK CAPITAL LETTER OMEGA WITH DASIA
+1F6A:GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+1F6B:GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+1F6C:GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+1F6D:GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+1F6E:GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+1F6F:GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+1F70:GREEK SMALL LETTER ALPHA WITH VARIA
+1F71:GREEK SMALL LETTER ALPHA WITH OXIA
+1F72:GREEK SMALL LETTER EPSILON WITH VARIA
+1F73:GREEK SMALL LETTER EPSILON WITH OXIA
+1F74:GREEK SMALL LETTER ETA WITH VARIA
+1F75:GREEK SMALL LETTER ETA WITH OXIA
+1F76:GREEK SMALL LETTER IOTA WITH VARIA
+1F77:GREEK SMALL LETTER IOTA WITH OXIA
+1F78:GREEK SMALL LETTER OMICRON WITH VARIA
+1F79:GREEK SMALL LETTER OMICRON WITH OXIA
+1F7A:GREEK SMALL LETTER UPSILON WITH VARIA
+1F7B:GREEK SMALL LETTER UPSILON WITH OXIA
+1F7C:GREEK SMALL LETTER OMEGA WITH VARIA
+1F7D:GREEK SMALL LETTER OMEGA WITH OXIA
+1F80:GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+1F81:GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+1F82:GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F83:GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F84:GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F85:GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F86:GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F87:GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F88:GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+1F89:GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+1F8A:GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F8B:GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F8C:GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F8D:GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F8E:GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F8F:GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1F90:GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+1F91:GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+1F92:GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F93:GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F94:GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F95:GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F96:GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F97:GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F98:GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+1F99:GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+1F9A:GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F9B:GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F9C:GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F9D:GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F9E:GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F9F:GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FA0:GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+1FA1:GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+1FA2:GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1FA3:GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1FA4:GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1FA5:GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1FA6:GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1FA7:GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1FA8:GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+1FA9:GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+1FAA:GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1FAB:GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1FAC:GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1FAD:GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1FAE:GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1FAF:GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FB0:GREEK SMALL LETTER ALPHA WITH VRACHY
+1FB1:GREEK SMALL LETTER ALPHA WITH MACRON
+1FB2:GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+1FB3:GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+1FB4:GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FB6:GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+1FB7:GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FB8:GREEK CAPITAL LETTER ALPHA WITH VRACHY
+1FB9:GREEK CAPITAL LETTER ALPHA WITH MACRON
+1FBA:GREEK CAPITAL LETTER ALPHA WITH VARIA
+1FBB:GREEK CAPITAL LETTER ALPHA WITH OXIA
+1FBC:GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FBD:GREEK KORONIS
+1FBE:GREEK PROSGEGRAMMENI
+1FBF:GREEK PSILI
+1FC0:GREEK PERISPOMENI
+1FC1:GREEK DIALYTIKA AND PERISPOMENI
+1FC2:GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+1FC3:GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+1FC4:GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FC6:GREEK SMALL LETTER ETA WITH PERISPOMENI
+1FC7:GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FC8:GREEK CAPITAL LETTER EPSILON WITH VARIA
+1FC9:GREEK CAPITAL LETTER EPSILON WITH OXIA
+1FCA:GREEK CAPITAL LETTER ETA WITH VARIA
+1FCB:GREEK CAPITAL LETTER ETA WITH OXIA
+1FCC:GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FCD:GREEK PSILI AND VARIA
+1FCE:GREEK PSILI AND OXIA
+1FCF:GREEK PSILI AND PERISPOMENI
+1FD0:GREEK SMALL LETTER IOTA WITH VRACHY
+1FD1:GREEK SMALL LETTER IOTA WITH MACRON
+1FD2:GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+1FD3:GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6:GREEK SMALL LETTER IOTA WITH PERISPOMENI
+1FD7:GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+1FD8:GREEK CAPITAL LETTER IOTA WITH VRACHY
+1FD9:GREEK CAPITAL LETTER IOTA WITH MACRON
+1FDA:GREEK CAPITAL LETTER IOTA WITH VARIA
+1FDB:GREEK CAPITAL LETTER IOTA WITH OXIA
+1FDD:GREEK DASIA AND VARIA
+1FDE:GREEK DASIA AND OXIA
+1FDF:GREEK DASIA AND PERISPOMENI
+1FE0:GREEK SMALL LETTER UPSILON WITH VRACHY
+1FE1:GREEK SMALL LETTER UPSILON WITH MACRON
+1FE2:GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+1FE3:GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+1FE4:GREEK SMALL LETTER RHO WITH PSILI
+1FE5:GREEK SMALL LETTER RHO WITH DASIA
+1FE6:GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+1FE7:GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+1FE8:GREEK CAPITAL LETTER UPSILON WITH VRACHY
+1FE9:GREEK CAPITAL LETTER UPSILON WITH MACRON
+1FEA:GREEK CAPITAL LETTER UPSILON WITH VARIA
+1FEB:GREEK CAPITAL LETTER UPSILON WITH OXIA
+1FEC:GREEK CAPITAL LETTER RHO WITH DASIA
+1FED:GREEK DIALYTIKA AND VARIA
+1FEE:GREEK DIALYTIKA AND OXIA
+1FEF:GREEK VARIA
+1FF2:GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+1FF3:GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+1FF4:GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1FF6:GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+1FF7:GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FF8:GREEK CAPITAL LETTER OMICRON WITH VARIA
+1FF9:GREEK CAPITAL LETTER OMICRON WITH OXIA
+1FFA:GREEK CAPITAL LETTER OMEGA WITH VARIA
+1FFB:GREEK CAPITAL LETTER OMEGA WITH OXIA
+1FFC:GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+1FFD:GREEK OXIA
+1FFE:GREEK DASIA
+2000:EN QUAD
+2001:EM QUAD
+2002:EN SPACE
+2003:EM SPACE
+2004:THREE-PER-EM SPACE
+2005:FOUR-PER-EM SPACE
+2006:SIX-PER-EM SPACE
+2007:FIGURE SPACE
+2008:PUNCTUATION SPACE
+2009:THIN SPACE
+200A:HAIR SPACE
+200B:ZERO WIDTH SPACE
+200C:ZERO WIDTH NON-JOINER
+200D:ZERO WIDTH JOINER
+200E:LEFT-TO-RIGHT MARK
+200F:RIGHT-TO-LEFT MARK
+2010:HYPHEN
+2011:NON-BREAKING HYPHEN
+2012:FIGURE DASH
+2013:EN DASH
+2014:EM DASH
+2015:HORIZONTAL BAR
+2016:DOUBLE VERTICAL LINE
+2017:DOUBLE LOW LINE
+2018:LEFT SINGLE QUOTATION MARK
+2019:RIGHT SINGLE QUOTATION MARK
+201A:SINGLE LOW-9 QUOTATION MARK
+201B:SINGLE HIGH-REVERSED-9 QUOTATION MARK
+201C:LEFT DOUBLE QUOTATION MARK
+201D:RIGHT DOUBLE QUOTATION MARK
+201E:DOUBLE LOW-9 QUOTATION MARK
+201F:DOUBLE HIGH-REVERSED-9 QUOTATION MARK
+2020:DAGGER
+2021:DOUBLE DAGGER
+2022:BULLET
+2023:TRIANGULAR BULLET
+2024:ONE DOT LEADER
+2025:TWO DOT LEADER
+2026:HORIZONTAL ELLIPSIS
+2027:HYPHENATION POINT
+2028:LINE SEPARATOR
+2029:PARAGRAPH SEPARATOR
+202A:LEFT-TO-RIGHT EMBEDDING
+202B:RIGHT-TO-LEFT EMBEDDING
+202C:POP DIRECTIONAL FORMATTING
+202D:LEFT-TO-RIGHT OVERRIDE
+202E:RIGHT-TO-LEFT OVERRIDE
+202F:NARROW NO-BREAK SPACE
+2030:PER MILLE SIGN
+2031:PER TEN THOUSAND SIGN
+2032:PRIME
+2033:DOUBLE PRIME
+2034:TRIPLE PRIME
+2035:REVERSED PRIME
+2036:REVERSED DOUBLE PRIME
+2037:REVERSED TRIPLE PRIME
+2038:CARET
+2039:SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+203A:SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+203B:REFERENCE MARK
+203C:DOUBLE EXCLAMATION MARK
+203D:INTERROBANG
+203E:OVERLINE
+203F:UNDERTIE
+2040:CHARACTER TIE
+2041:CARET INSERTION POINT
+2042:ASTERISM
+2043:HYPHEN BULLET
+2044:FRACTION SLASH
+2045:LEFT SQUARE BRACKET WITH QUILL
+2046:RIGHT SQUARE BRACKET WITH QUILL
+2048:QUESTION EXCLAMATION MARK
+2049:EXCLAMATION QUESTION MARK
+204A:TIRONIAN SIGN ET
+204B:REVERSED PILCROW SIGN
+204C:BLACK LEFTWARDS BULLET
+204D:BLACK RIGHTWARDS BULLET
+206A:INHIBIT SYMMETRIC SWAPPING
+206B:ACTIVATE SYMMETRIC SWAPPING
+206C:INHIBIT ARABIC FORM SHAPING
+206D:ACTIVATE ARABIC FORM SHAPING
+206E:NATIONAL DIGIT SHAPES
+206F:NOMINAL DIGIT SHAPES
+2070:SUPERSCRIPT ZERO
+2074:SUPERSCRIPT FOUR
+2075:SUPERSCRIPT FIVE
+2076:SUPERSCRIPT SIX
+2077:SUPERSCRIPT SEVEN
+2078:SUPERSCRIPT EIGHT
+2079:SUPERSCRIPT NINE
+207A:SUPERSCRIPT PLUS SIGN
+207B:SUPERSCRIPT MINUS
+207C:SUPERSCRIPT EQUALS SIGN
+207D:SUPERSCRIPT LEFT PARENTHESIS
+207E:SUPERSCRIPT RIGHT PARENTHESIS
+207F:SUPERSCRIPT LATIN SMALL LETTER N
+2080:SUBSCRIPT ZERO
+2081:SUBSCRIPT ONE
+2082:SUBSCRIPT TWO
+2083:SUBSCRIPT THREE
+2084:SUBSCRIPT FOUR
+2085:SUBSCRIPT FIVE
+2086:SUBSCRIPT SIX
+2087:SUBSCRIPT SEVEN
+2088:SUBSCRIPT EIGHT
+2089:SUBSCRIPT NINE
+208A:SUBSCRIPT PLUS SIGN
+208B:SUBSCRIPT MINUS
+208C:SUBSCRIPT EQUALS SIGN
+208D:SUBSCRIPT LEFT PARENTHESIS
+208E:SUBSCRIPT RIGHT PARENTHESIS
+20A0:EURO-CURRENCY SIGN
+20A1:COLON SIGN
+20A2:CRUZEIRO SIGN
+20A3:FRENCH FRANC SIGN
+20A4:LIRA SIGN
+20A5:MILL SIGN
+20A6:NAIRA SIGN
+20A7:PESETA SIGN
+20A8:RUPEE SIGN
+20A9:WON SIGN
+20AA:NEW SHEQEL SIGN
+20AB:DONG SIGN
+20AC:EURO SIGN
+20AD:KIP SIGN
+20AE:TUGRIK SIGN
+20AF:DRACHMA SIGN
+20D0:COMBINING LEFT HARPOON ABOVE
+20D1:COMBINING RIGHT HARPOON ABOVE
+20D2:COMBINING LONG VERTICAL LINE OVERLAY
+20D3:COMBINING SHORT VERTICAL LINE OVERLAY
+20D4:COMBINING ANTICLOCKWISE ARROW ABOVE
+20D5:COMBINING CLOCKWISE ARROW ABOVE
+20D6:COMBINING LEFT ARROW ABOVE
+20D7:COMBINING RIGHT ARROW ABOVE
+20D8:COMBINING RING OVERLAY
+20D9:COMBINING CLOCKWISE RING OVERLAY
+20DA:COMBINING ANTICLOCKWISE RING OVERLAY
+20DB:COMBINING THREE DOTS ABOVE
+20DC:COMBINING FOUR DOTS ABOVE
+20DD:COMBINING ENCLOSING CIRCLE
+20DE:COMBINING ENCLOSING SQUARE
+20DF:COMBINING ENCLOSING DIAMOND
+20E0:COMBINING ENCLOSING CIRCLE BACKSLASH
+20E1:COMBINING LEFT RIGHT ARROW ABOVE
+20E2:COMBINING ENCLOSING SCREEN
+20E3:COMBINING ENCLOSING KEYCAP
+2100:ACCOUNT OF
+2101:ADDRESSED TO THE SUBJECT
+2102:DOUBLE-STRUCK CAPITAL C
+2103:DEGREE CELSIUS
+2104:CENTRE LINE SYMBOL
+2105:CARE OF
+2106:CADA UNA
+2107:EULER CONSTANT
+2108:SCRUPLE
+2109:DEGREE FAHRENHEIT
+210A:SCRIPT SMALL G
+210B:SCRIPT CAPITAL H
+210C:BLACK-LETTER CAPITAL H
+210D:DOUBLE-STRUCK CAPITAL H
+210E:PLANCK CONSTANT
+210F:PLANCK CONSTANT OVER TWO PI
+2110:SCRIPT CAPITAL I
+2111:BLACK-LETTER CAPITAL I
+2112:SCRIPT CAPITAL L
+2113:SCRIPT SMALL L
+2114:L B BAR SYMBOL
+2115:DOUBLE-STRUCK CAPITAL N
+2116:NUMERO SIGN
+2117:SOUND RECORDING COPYRIGHT
+2118:SCRIPT CAPITAL P
+2119:DOUBLE-STRUCK CAPITAL P
+211A:DOUBLE-STRUCK CAPITAL Q
+211B:SCRIPT CAPITAL R
+211C:BLACK-LETTER CAPITAL R
+211D:DOUBLE-STRUCK CAPITAL R
+211E:PRESCRIPTION TAKE
+211F:RESPONSE
+2120:SERVICE MARK
+2121:TELEPHONE SIGN
+2122:TRADE MARK SIGN
+2123:VERSICLE
+2124:DOUBLE-STRUCK CAPITAL Z
+2125:OUNCE SIGN
+2126:OHM SIGN
+2127:INVERTED OHM SIGN
+2128:BLACK-LETTER CAPITAL Z
+2129:TURNED GREEK SMALL LETTER IOTA
+212A:KELVIN SIGN
+212B:ANGSTROM SIGN
+212C:SCRIPT CAPITAL B
+212D:BLACK-LETTER CAPITAL C
+212E:ESTIMATED SYMBOL
+212F:SCRIPT SMALL E
+2130:SCRIPT CAPITAL E
+2131:SCRIPT CAPITAL F
+2132:TURNED CAPITAL F
+2133:SCRIPT CAPITAL M
+2134:SCRIPT SMALL O
+2135:ALEF SYMBOL
+2136:BET SYMBOL
+2137:GIMEL SYMBOL
+2138:DALET SYMBOL
+2139:INFORMATION SOURCE
+213A:ROTATED CAPITAL Q
+2153:VULGAR FRACTION ONE THIRD
+2154:VULGAR FRACTION TWO THIRDS
+2155:VULGAR FRACTION ONE FIFTH
+2156:VULGAR FRACTION TWO FIFTHS
+2157:VULGAR FRACTION THREE FIFTHS
+2158:VULGAR FRACTION FOUR FIFTHS
+2159:VULGAR FRACTION ONE SIXTH
+215A:VULGAR FRACTION FIVE SIXTHS
+215B:VULGAR FRACTION ONE EIGHTH
+215C:VULGAR FRACTION THREE EIGHTHS
+215D:VULGAR FRACTION FIVE EIGHTHS
+215E:VULGAR FRACTION SEVEN EIGHTHS
+215F:FRACTION NUMERATOR ONE
+2160:ROMAN NUMERAL ONE
+2161:ROMAN NUMERAL TWO
+2162:ROMAN NUMERAL THREE
+2163:ROMAN NUMERAL FOUR
+2164:ROMAN NUMERAL FIVE
+2165:ROMAN NUMERAL SIX
+2166:ROMAN NUMERAL SEVEN
+2167:ROMAN NUMERAL EIGHT
+2168:ROMAN NUMERAL NINE
+2169:ROMAN NUMERAL TEN
+216A:ROMAN NUMERAL ELEVEN
+216B:ROMAN NUMERAL TWELVE
+216C:ROMAN NUMERAL FIFTY
+216D:ROMAN NUMERAL ONE HUNDRED
+216E:ROMAN NUMERAL FIVE HUNDRED
+216F:ROMAN NUMERAL ONE THOUSAND
+2170:SMALL ROMAN NUMERAL ONE
+2171:SMALL ROMAN NUMERAL TWO
+2172:SMALL ROMAN NUMERAL THREE
+2173:SMALL ROMAN NUMERAL FOUR
+2174:SMALL ROMAN NUMERAL FIVE
+2175:SMALL ROMAN NUMERAL SIX
+2176:SMALL ROMAN NUMERAL SEVEN
+2177:SMALL ROMAN NUMERAL EIGHT
+2178:SMALL ROMAN NUMERAL NINE
+2179:SMALL ROMAN NUMERAL TEN
+217A:SMALL ROMAN NUMERAL ELEVEN
+217B:SMALL ROMAN NUMERAL TWELVE
+217C:SMALL ROMAN NUMERAL FIFTY
+217D:SMALL ROMAN NUMERAL ONE HUNDRED
+217E:SMALL ROMAN NUMERAL FIVE HUNDRED
+217F:SMALL ROMAN NUMERAL ONE THOUSAND
+2180:ROMAN NUMERAL ONE THOUSAND C D
+2181:ROMAN NUMERAL FIVE THOUSAND
+2182:ROMAN NUMERAL TEN THOUSAND
+2183:ROMAN NUMERAL REVERSED ONE HUNDRED
+2190:LEFTWARDS ARROW
+2191:UPWARDS ARROW
+2192:RIGHTWARDS ARROW
+2193:DOWNWARDS ARROW
+2194:LEFT RIGHT ARROW
+2195:UP DOWN ARROW
+2196:NORTH WEST ARROW
+2197:NORTH EAST ARROW
+2198:SOUTH EAST ARROW
+2199:SOUTH WEST ARROW
+219A:LEFTWARDS ARROW WITH STROKE
+219B:RIGHTWARDS ARROW WITH STROKE
+219C:LEFTWARDS WAVE ARROW
+219D:RIGHTWARDS WAVE ARROW
+219E:LEFTWARDS TWO HEADED ARROW
+219F:UPWARDS TWO HEADED ARROW
+21A0:RIGHTWARDS TWO HEADED ARROW
+21A1:DOWNWARDS TWO HEADED ARROW
+21A2:LEFTWARDS ARROW WITH TAIL
+21A3:RIGHTWARDS ARROW WITH TAIL
+21A4:LEFTWARDS ARROW FROM BAR
+21A5:UPWARDS ARROW FROM BAR
+21A6:RIGHTWARDS ARROW FROM BAR
+21A7:DOWNWARDS ARROW FROM BAR
+21A8:UP DOWN ARROW WITH BASE
+21A9:LEFTWARDS ARROW WITH HOOK
+21AA:RIGHTWARDS ARROW WITH HOOK
+21AB:LEFTWARDS ARROW WITH LOOP
+21AC:RIGHTWARDS ARROW WITH LOOP
+21AD:LEFT RIGHT WAVE ARROW
+21AE:LEFT RIGHT ARROW WITH STROKE
+21AF:DOWNWARDS ZIGZAG ARROW
+21B0:UPWARDS ARROW WITH TIP LEFTWARDS
+21B1:UPWARDS ARROW WITH TIP RIGHTWARDS
+21B2:DOWNWARDS ARROW WITH TIP LEFTWARDS
+21B3:DOWNWARDS ARROW WITH TIP RIGHTWARDS
+21B4:RIGHTWARDS ARROW WITH CORNER DOWNWARDS
+21B5:DOWNWARDS ARROW WITH CORNER LEFTWARDS
+21B6:ANTICLOCKWISE TOP SEMICIRCLE ARROW
+21B7:CLOCKWISE TOP SEMICIRCLE ARROW
+21B8:NORTH WEST ARROW TO LONG BAR
+21B9:LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR
+21BA:ANTICLOCKWISE OPEN CIRCLE ARROW
+21BB:CLOCKWISE OPEN CIRCLE ARROW
+21BC:LEFTWARDS HARPOON WITH BARB UPWARDS
+21BD:LEFTWARDS HARPOON WITH BARB DOWNWARDS
+21BE:UPWARDS HARPOON WITH BARB RIGHTWARDS
+21BF:UPWARDS HARPOON WITH BARB LEFTWARDS
+21C0:RIGHTWARDS HARPOON WITH BARB UPWARDS
+21C1:RIGHTWARDS HARPOON WITH BARB DOWNWARDS
+21C2:DOWNWARDS HARPOON WITH BARB RIGHTWARDS
+21C3:DOWNWARDS HARPOON WITH BARB LEFTWARDS
+21C4:RIGHTWARDS ARROW OVER LEFTWARDS ARROW
+21C5:UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW
+21C6:LEFTWARDS ARROW OVER RIGHTWARDS ARROW
+21C7:LEFTWARDS PAIRED ARROWS
+21C8:UPWARDS PAIRED ARROWS
+21C9:RIGHTWARDS PAIRED ARROWS
+21CA:DOWNWARDS PAIRED ARROWS
+21CB:LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON
+21CC:RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
+21CD:LEFTWARDS DOUBLE ARROW WITH STROKE
+21CE:LEFT RIGHT DOUBLE ARROW WITH STROKE
+21CF:RIGHTWARDS DOUBLE ARROW WITH STROKE
+21D0:LEFTWARDS DOUBLE ARROW
+21D1:UPWARDS DOUBLE ARROW
+21D2:RIGHTWARDS DOUBLE ARROW
+21D3:DOWNWARDS DOUBLE ARROW
+21D4:LEFT RIGHT DOUBLE ARROW
+21D5:UP DOWN DOUBLE ARROW
+21D6:NORTH WEST DOUBLE ARROW
+21D7:NORTH EAST DOUBLE ARROW
+21D8:SOUTH EAST DOUBLE ARROW
+21D9:SOUTH WEST DOUBLE ARROW
+21DA:LEFTWARDS TRIPLE ARROW
+21DB:RIGHTWARDS TRIPLE ARROW
+21DC:LEFTWARDS SQUIGGLE ARROW
+21DD:RIGHTWARDS SQUIGGLE ARROW
+21DE:UPWARDS ARROW WITH DOUBLE STROKE
+21DF:DOWNWARDS ARROW WITH DOUBLE STROKE
+21E0:LEFTWARDS DASHED ARROW
+21E1:UPWARDS DASHED ARROW
+21E2:RIGHTWARDS DASHED ARROW
+21E3:DOWNWARDS DASHED ARROW
+21E4:LEFTWARDS ARROW TO BAR
+21E5:RIGHTWARDS ARROW TO BAR
+21E6:LEFTWARDS WHITE ARROW
+21E7:UPWARDS WHITE ARROW
+21E8:RIGHTWARDS WHITE ARROW
+21E9:DOWNWARDS WHITE ARROW
+21EA:UPWARDS WHITE ARROW FROM BAR
+21EB:UPWARDS WHITE ARROW ON PEDESTAL
+21EC:UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR
+21ED:UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR
+21EE:UPWARDS WHITE DOUBLE ARROW
+21EF:UPWARDS WHITE DOUBLE ARROW ON PEDESTAL
+21F0:RIGHTWARDS WHITE ARROW FROM WALL
+21F1:NORTH WEST ARROW TO CORNER
+21F2:SOUTH EAST ARROW TO CORNER
+21F3:UP DOWN WHITE ARROW
+2200:FOR ALL
+2201:COMPLEMENT
+2202:PARTIAL DIFFERENTIAL
+2203:THERE EXISTS
+2204:THERE DOES NOT EXIST
+2205:EMPTY SET
+2206:INCREMENT
+2207:NABLA
+2208:ELEMENT OF
+2209:NOT AN ELEMENT OF
+220A:SMALL ELEMENT OF
+220B:CONTAINS AS MEMBER
+220C:DOES NOT CONTAIN AS MEMBER
+220D:SMALL CONTAINS AS MEMBER
+220E:END OF PROOF
+220F:N-ARY PRODUCT
+2210:N-ARY COPRODUCT
+2211:N-ARY SUMMATION
+2212:MINUS SIGN
+2213:MINUS-OR-PLUS SIGN
+2214:DOT PLUS
+2215:DIVISION SLASH
+2216:SET MINUS
+2217:ASTERISK OPERATOR
+2218:RING OPERATOR
+2219:BULLET OPERATOR
+221A:SQUARE ROOT
+221B:CUBE ROOT
+221C:FOURTH ROOT
+221D:PROPORTIONAL TO
+221E:INFINITY
+221F:RIGHT ANGLE
+2220:ANGLE
+2221:MEASURED ANGLE
+2222:SPHERICAL ANGLE
+2223:DIVIDES
+2224:DOES NOT DIVIDE
+2225:PARALLEL TO
+2226:NOT PARALLEL TO
+2227:LOGICAL AND
+2228:LOGICAL OR
+2229:INTERSECTION
+222A:UNION
+222B:INTEGRAL
+222C:DOUBLE INTEGRAL
+222D:TRIPLE INTEGRAL
+222E:CONTOUR INTEGRAL
+222F:SURFACE INTEGRAL
+2230:VOLUME INTEGRAL
+2231:CLOCKWISE INTEGRAL
+2232:CLOCKWISE CONTOUR INTEGRAL
+2233:ANTICLOCKWISE CONTOUR INTEGRAL
+2234:THEREFORE
+2235:BECAUSE
+2236:RATIO
+2237:PROPORTION
+2238:DOT MINUS
+2239:EXCESS
+223A:GEOMETRIC PROPORTION
+223B:HOMOTHETIC
+223C:TILDE OPERATOR
+223D:REVERSED TILDE
+223E:INVERTED LAZY S
+223F:SINE WAVE
+2240:WREATH PRODUCT
+2241:NOT TILDE
+2242:MINUS TILDE
+2243:ASYMPTOTICALLY EQUAL TO
+2244:NOT ASYMPTOTICALLY EQUAL TO
+2245:APPROXIMATELY EQUAL TO
+2246:APPROXIMATELY BUT NOT ACTUALLY EQUAL TO
+2247:NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+2248:ALMOST EQUAL TO
+2249:NOT ALMOST EQUAL TO
+224A:ALMOST EQUAL OR EQUAL TO
+224B:TRIPLE TILDE
+224C:ALL EQUAL TO
+224D:EQUIVALENT TO
+224E:GEOMETRICALLY EQUIVALENT TO
+224F:DIFFERENCE BETWEEN
+2250:APPROACHES THE LIMIT
+2251:GEOMETRICALLY EQUAL TO
+2252:APPROXIMATELY EQUAL TO OR THE IMAGE OF
+2253:IMAGE OF OR APPROXIMATELY EQUAL TO
+2254:COLON EQUALS
+2255:EQUALS COLON
+2256:RING IN EQUAL TO
+2257:RING EQUAL TO
+2258:CORRESPONDS TO
+2259:ESTIMATES
+225A:EQUIANGULAR TO
+225B:STAR EQUALS
+225C:DELTA EQUAL TO
+225D:EQUAL TO BY DEFINITION
+225E:MEASURED BY
+225F:QUESTIONED EQUAL TO
+2260:NOT EQUAL TO
+2261:IDENTICAL TO
+2262:NOT IDENTICAL TO
+2263:STRICTLY EQUIVALENT TO
+2264:LESS-THAN OR EQUAL TO
+2265:GREATER-THAN OR EQUAL TO
+2266:LESS-THAN OVER EQUAL TO
+2267:GREATER-THAN OVER EQUAL TO
+2268:LESS-THAN BUT NOT EQUAL TO
+2269:GREATER-THAN BUT NOT EQUAL TO
+226A:MUCH LESS-THAN
+226B:MUCH GREATER-THAN
+226C:BETWEEN
+226D:NOT EQUIVALENT TO
+226E:NOT LESS-THAN
+226F:NOT GREATER-THAN
+2270:NEITHER LESS-THAN NOR EQUAL TO
+2271:NEITHER GREATER-THAN NOR EQUAL TO
+2272:LESS-THAN OR EQUIVALENT TO
+2273:GREATER-THAN OR EQUIVALENT TO
+2274:NEITHER LESS-THAN NOR EQUIVALENT TO
+2275:NEITHER GREATER-THAN NOR EQUIVALENT TO
+2276:LESS-THAN OR GREATER-THAN
+2277:GREATER-THAN OR LESS-THAN
+2278:NEITHER LESS-THAN NOR GREATER-THAN
+2279:NEITHER GREATER-THAN NOR LESS-THAN
+227A:PRECEDES
+227B:SUCCEEDS
+227C:PRECEDES OR EQUAL TO
+227D:SUCCEEDS OR EQUAL TO
+227E:PRECEDES OR EQUIVALENT TO
+227F:SUCCEEDS OR EQUIVALENT TO
+2280:DOES NOT PRECEDE
+2281:DOES NOT SUCCEED
+2282:SUBSET OF
+2283:SUPERSET OF
+2284:NOT A SUBSET OF
+2285:NOT A SUPERSET OF
+2286:SUBSET OF OR EQUAL TO
+2287:SUPERSET OF OR EQUAL TO
+2288:NEITHER A SUBSET OF NOR EQUAL TO
+2289:NEITHER A SUPERSET OF NOR EQUAL TO
+228A:SUBSET OF WITH NOT EQUAL TO
+228B:SUPERSET OF WITH NOT EQUAL TO
+228C:MULTISET
+228D:MULTISET MULTIPLICATION
+228E:MULTISET UNION
+228F:SQUARE IMAGE OF
+2290:SQUARE ORIGINAL OF
+2291:SQUARE IMAGE OF OR EQUAL TO
+2292:SQUARE ORIGINAL OF OR EQUAL TO
+2293:SQUARE CAP
+2294:SQUARE CUP
+2295:CIRCLED PLUS
+2296:CIRCLED MINUS
+2297:CIRCLED TIMES
+2298:CIRCLED DIVISION SLASH
+2299:CIRCLED DOT OPERATOR
+229A:CIRCLED RING OPERATOR
+229B:CIRCLED ASTERISK OPERATOR
+229C:CIRCLED EQUALS
+229D:CIRCLED DASH
+229E:SQUARED PLUS
+229F:SQUARED MINUS
+22A0:SQUARED TIMES
+22A1:SQUARED DOT OPERATOR
+22A2:RIGHT TACK
+22A3:LEFT TACK
+22A4:DOWN TACK
+22A5:UP TACK
+22A6:ASSERTION
+22A7:MODELS
+22A8:TRUE
+22A9:FORCES
+22AA:TRIPLE VERTICAL BAR RIGHT TURNSTILE
+22AB:DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+22AC:DOES NOT PROVE
+22AD:NOT TRUE
+22AE:DOES NOT FORCE
+22AF:NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+22B0:PRECEDES UNDER RELATION
+22B1:SUCCEEDS UNDER RELATION
+22B2:NORMAL SUBGROUP OF
+22B3:CONTAINS AS NORMAL SUBGROUP
+22B4:NORMAL SUBGROUP OF OR EQUAL TO
+22B5:CONTAINS AS NORMAL SUBGROUP OR EQUAL TO
+22B6:ORIGINAL OF
+22B7:IMAGE OF
+22B8:MULTIMAP
+22B9:HERMITIAN CONJUGATE MATRIX
+22BA:INTERCALATE
+22BB:XOR
+22BC:NAND
+22BD:NOR
+22BE:RIGHT ANGLE WITH ARC
+22BF:RIGHT TRIANGLE
+22C0:N-ARY LOGICAL AND
+22C1:N-ARY LOGICAL OR
+22C2:N-ARY INTERSECTION
+22C3:N-ARY UNION
+22C4:DIAMOND OPERATOR
+22C5:DOT OPERATOR
+22C6:STAR OPERATOR
+22C7:DIVISION TIMES
+22C8:BOWTIE
+22C9:LEFT NORMAL FACTOR SEMIDIRECT PRODUCT
+22CA:RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT
+22CB:LEFT SEMIDIRECT PRODUCT
+22CC:RIGHT SEMIDIRECT PRODUCT
+22CD:REVERSED TILDE EQUALS
+22CE:CURLY LOGICAL OR
+22CF:CURLY LOGICAL AND
+22D0:DOUBLE SUBSET
+22D1:DOUBLE SUPERSET
+22D2:DOUBLE INTERSECTION
+22D3:DOUBLE UNION
+22D4:PITCHFORK
+22D5:EQUAL AND PARALLEL TO
+22D6:LESS-THAN WITH DOT
+22D7:GREATER-THAN WITH DOT
+22D8:VERY MUCH LESS-THAN
+22D9:VERY MUCH GREATER-THAN
+22DA:LESS-THAN EQUAL TO OR GREATER-THAN
+22DB:GREATER-THAN EQUAL TO OR LESS-THAN
+22DC:EQUAL TO OR LESS-THAN
+22DD:EQUAL TO OR GREATER-THAN
+22DE:EQUAL TO OR PRECEDES
+22DF:EQUAL TO OR SUCCEEDS
+22E0:DOES NOT PRECEDE OR EQUAL
+22E1:DOES NOT SUCCEED OR EQUAL
+22E2:NOT SQUARE IMAGE OF OR EQUAL TO
+22E3:NOT SQUARE ORIGINAL OF OR EQUAL TO
+22E4:SQUARE IMAGE OF OR NOT EQUAL TO
+22E5:SQUARE ORIGINAL OF OR NOT EQUAL TO
+22E6:LESS-THAN BUT NOT EQUIVALENT TO
+22E7:GREATER-THAN BUT NOT EQUIVALENT TO
+22E8:PRECEDES BUT NOT EQUIVALENT TO
+22E9:SUCCEEDS BUT NOT EQUIVALENT TO
+22EA:NOT NORMAL SUBGROUP OF
+22EB:DOES NOT CONTAIN AS NORMAL SUBGROUP
+22EC:NOT NORMAL SUBGROUP OF OR EQUAL TO
+22ED:DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+22EE:VERTICAL ELLIPSIS
+22EF:MIDLINE HORIZONTAL ELLIPSIS
+22F0:UP RIGHT DIAGONAL ELLIPSIS
+22F1:DOWN RIGHT DIAGONAL ELLIPSIS
+2300:DIAMETER SIGN
+2301:ELECTRIC ARROW
+2302:HOUSE
+2303:UP ARROWHEAD
+2304:DOWN ARROWHEAD
+2305:PROJECTIVE
+2306:PERSPECTIVE
+2307:WAVY LINE
+2308:LEFT CEILING
+2309:RIGHT CEILING
+230A:LEFT FLOOR
+230B:RIGHT FLOOR
+230C:BOTTOM RIGHT CROP
+230D:BOTTOM LEFT CROP
+230E:TOP RIGHT CROP
+230F:TOP LEFT CROP
+2310:REVERSED NOT SIGN
+2311:SQUARE LOZENGE
+2312:ARC
+2313:SEGMENT
+2314:SECTOR
+2315:TELEPHONE RECORDER
+2316:POSITION INDICATOR
+2317:VIEWDATA SQUARE
+2318:PLACE OF INTEREST SIGN
+2319:TURNED NOT SIGN
+231A:WATCH
+231B:HOURGLASS
+231C:TOP LEFT CORNER
+231D:TOP RIGHT CORNER
+231E:BOTTOM LEFT CORNER
+231F:BOTTOM RIGHT CORNER
+2320:TOP HALF INTEGRAL
+2321:BOTTOM HALF INTEGRAL
+2322:FROWN
+2323:SMILE
+2324:UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS
+2325:OPTION KEY
+2326:ERASE TO THE RIGHT
+2327:X IN A RECTANGLE BOX
+2328:KEYBOARD
+2329:LEFT-POINTING ANGLE BRACKET
+232A:RIGHT-POINTING ANGLE BRACKET
+232B:ERASE TO THE LEFT
+232C:BENZENE RING
+232D:CYLINDRICITY
+232E:ALL AROUND-PROFILE
+232F:SYMMETRY
+2330:TOTAL RUNOUT
+2331:DIMENSION ORIGIN
+2332:CONICAL TAPER
+2333:SLOPE
+2334:COUNTERBORE
+2335:COUNTERSINK
+2336:APL FUNCTIONAL SYMBOL I-BEAM
+2337:APL FUNCTIONAL SYMBOL SQUISH QUAD
+2338:APL FUNCTIONAL SYMBOL QUAD EQUAL
+2339:APL FUNCTIONAL SYMBOL QUAD DIVIDE
+233A:APL FUNCTIONAL SYMBOL QUAD DIAMOND
+233B:APL FUNCTIONAL SYMBOL QUAD JOT
+233C:APL FUNCTIONAL SYMBOL QUAD CIRCLE
+233D:APL FUNCTIONAL SYMBOL CIRCLE STILE
+233E:APL FUNCTIONAL SYMBOL CIRCLE JOT
+233F:APL FUNCTIONAL SYMBOL SLASH BAR
+2340:APL FUNCTIONAL SYMBOL BACKSLASH BAR
+2341:APL FUNCTIONAL SYMBOL QUAD SLASH
+2342:APL FUNCTIONAL SYMBOL QUAD BACKSLASH
+2343:APL FUNCTIONAL SYMBOL QUAD LESS-THAN
+2344:APL FUNCTIONAL SYMBOL QUAD GREATER-THAN
+2345:APL FUNCTIONAL SYMBOL LEFTWARDS VANE
+2346:APL FUNCTIONAL SYMBOL RIGHTWARDS VANE
+2347:APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW
+2348:APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW
+2349:APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH
+234A:APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR
+234B:APL FUNCTIONAL SYMBOL DELTA STILE
+234C:APL FUNCTIONAL SYMBOL QUAD DOWN CARET
+234D:APL FUNCTIONAL SYMBOL QUAD DELTA
+234E:APL FUNCTIONAL SYMBOL DOWN TACK JOT
+234F:APL FUNCTIONAL SYMBOL UPWARDS VANE
+2350:APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW
+2351:APL FUNCTIONAL SYMBOL UP TACK OVERBAR
+2352:APL FUNCTIONAL SYMBOL DEL STILE
+2353:APL FUNCTIONAL SYMBOL QUAD UP CARET
+2354:APL FUNCTIONAL SYMBOL QUAD DEL
+2355:APL FUNCTIONAL SYMBOL UP TACK JOT
+2356:APL FUNCTIONAL SYMBOL DOWNWARDS VANE
+2357:APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW
+2358:APL FUNCTIONAL SYMBOL QUOTE UNDERBAR
+2359:APL FUNCTIONAL SYMBOL DELTA UNDERBAR
+235A:APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR
+235B:APL FUNCTIONAL SYMBOL JOT UNDERBAR
+235C:APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR
+235D:APL FUNCTIONAL SYMBOL UP SHOE JOT
+235E:APL FUNCTIONAL SYMBOL QUOTE QUAD
+235F:APL FUNCTIONAL SYMBOL CIRCLE STAR
+2360:APL FUNCTIONAL SYMBOL QUAD COLON
+2361:APL FUNCTIONAL SYMBOL UP TACK DIAERESIS
+2362:APL FUNCTIONAL SYMBOL DEL DIAERESIS
+2363:APL FUNCTIONAL SYMBOL STAR DIAERESIS
+2364:APL FUNCTIONAL SYMBOL JOT DIAERESIS
+2365:APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS
+2366:APL FUNCTIONAL SYMBOL DOWN SHOE STILE
+2367:APL FUNCTIONAL SYMBOL LEFT SHOE STILE
+2368:APL FUNCTIONAL SYMBOL TILDE DIAERESIS
+2369:APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS
+236A:APL FUNCTIONAL SYMBOL COMMA BAR
+236B:APL FUNCTIONAL SYMBOL DEL TILDE
+236C:APL FUNCTIONAL SYMBOL ZILDE
+236D:APL FUNCTIONAL SYMBOL STILE TILDE
+236E:APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR
+236F:APL FUNCTIONAL SYMBOL QUAD NOT EQUAL
+2370:APL FUNCTIONAL SYMBOL QUAD QUESTION
+2371:APL FUNCTIONAL SYMBOL DOWN CARET TILDE
+2372:APL FUNCTIONAL SYMBOL UP CARET TILDE
+2373:APL FUNCTIONAL SYMBOL IOTA
+2374:APL FUNCTIONAL SYMBOL RHO
+2375:APL FUNCTIONAL SYMBOL OMEGA
+2376:APL FUNCTIONAL SYMBOL ALPHA UNDERBAR
+2377:APL FUNCTIONAL SYMBOL EPSILON UNDERBAR
+2378:APL FUNCTIONAL SYMBOL IOTA UNDERBAR
+2379:APL FUNCTIONAL SYMBOL OMEGA UNDERBAR
+237A:APL FUNCTIONAL SYMBOL ALPHA
+237B:NOT CHECK MARK
+237D:SHOULDERED OPEN BOX
+237E:BELL SYMBOL
+237F:VERTICAL LINE WITH MIDDLE DOT
+2380:INSERTION SYMBOL
+2381:CONTINUOUS UNDERLINE SYMBOL
+2382:DISCONTINUOUS UNDERLINE SYMBOL
+2383:EMPHASIS SYMBOL
+2384:COMPOSITION SYMBOL
+2385:WHITE SQUARE WITH CENTRE VERTICAL LINE
+2386:ENTER SYMBOL
+2387:ALTERNATIVE KEY SYMBOL
+2388:HELM SYMBOL
+2389:CIRCLED HORIZONTAL BAR WITH NOTCH
+238A:CIRCLED TRIANGLE DOWN
+238B:BROKEN CIRCLE WITH NORTHWEST ARROW
+238C:UNDO SYMBOL
+238D:MONOSTABLE SYMBOL
+238E:HYSTERESIS SYMBOL
+238F:OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL
+2390:OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL
+2391:PASSIVE-PULL-DOWN-OUTPUT SYMBOL
+2392:PASSIVE-PULL-UP-OUTPUT SYMBOL
+2393:DIRECT CURRENT SYMBOL FORM TWO
+2394:SOFTWARE-FUNCTION SYMBOL
+2395:APL FUNCTIONAL SYMBOL QUAD
+2396:DECIMAL SEPARATOR KEY SYMBOL
+2397:PREVIOUS PAGE
+2398:NEXT PAGE
+2399:PRINT SCREEN SYMBOL
+239A:CLEAR SCREEN SYMBOL
+3440:
+3441:
+3442:
+3443:
+3444:
+3445:
+3446:
+3447:
+3448:
+3449:
+344A:
+2500:BOX DRAWINGS LIGHT HORIZONTAL
+2501:BOX DRAWINGS HEAVY HORIZONTAL
+2502:BOX DRAWINGS LIGHT VERTICAL
+2503:BOX DRAWINGS HEAVY VERTICAL
+2504:BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL
+2505:BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL
+2506:BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL
+2507:BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL
+2508:BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL
+2509:BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL
+250A:BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL
+250B:BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL
+250C:BOX DRAWINGS LIGHT DOWN AND RIGHT
+250D:BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY
+250E:BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT
+250F:BOX DRAWINGS HEAVY DOWN AND RIGHT
+2510:BOX DRAWINGS LIGHT DOWN AND LEFT
+2511:BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY
+2512:BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT
+2513:BOX DRAWINGS HEAVY DOWN AND LEFT
+2514:BOX DRAWINGS LIGHT UP AND RIGHT
+2515:BOX DRAWINGS UP LIGHT AND RIGHT HEAVY
+2516:BOX DRAWINGS UP HEAVY AND RIGHT LIGHT
+2517:BOX DRAWINGS HEAVY UP AND RIGHT
+2518:BOX DRAWINGS LIGHT UP AND LEFT
+2519:BOX DRAWINGS UP LIGHT AND LEFT HEAVY
+251A:BOX DRAWINGS UP HEAVY AND LEFT LIGHT
+251B:BOX DRAWINGS HEAVY UP AND LEFT
+251C:BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+251D:BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY
+251E:BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT
+251F:BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT
+2520:BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT
+2521:BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY
+2522:BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY
+2523:BOX DRAWINGS HEAVY VERTICAL AND RIGHT
+2524:BOX DRAWINGS LIGHT VERTICAL AND LEFT
+2525:BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY
+2526:BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT
+2527:BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT
+2528:BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT
+2529:BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY
+252A:BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY
+252B:BOX DRAWINGS HEAVY VERTICAL AND LEFT
+252C:BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+252D:BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT
+252E:BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT
+252F:BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY
+2530:BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT
+2531:BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY
+2532:BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY
+2533:BOX DRAWINGS HEAVY DOWN AND HORIZONTAL
+2534:BOX DRAWINGS LIGHT UP AND HORIZONTAL
+2535:BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT
+2536:BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT
+2537:BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY
+2538:BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT
+2539:BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY
+253A:BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY
+253B:BOX DRAWINGS HEAVY UP AND HORIZONTAL
+253C:BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+253D:BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT
+253E:BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT
+253F:BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY
+2540:BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT
+2541:BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT
+2542:BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT
+2543:BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT
+2544:BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT
+2545:BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT
+2546:BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT
+2547:BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY
+2548:BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY
+2549:BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY
+254A:BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY
+254B:BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL
+254C:BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL
+254D:BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL
+254E:BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL
+254F:BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL
+2550:BOX DRAWINGS DOUBLE HORIZONTAL
+2551:BOX DRAWINGS DOUBLE VERTICAL
+2552:BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+2553:BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+2554:BOX DRAWINGS DOUBLE DOWN AND RIGHT
+2555:BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+2556:BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+2557:BOX DRAWINGS DOUBLE DOWN AND LEFT
+2558:BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+2559:BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+255A:BOX DRAWINGS DOUBLE UP AND RIGHT
+255B:BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+255C:BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+255D:BOX DRAWINGS DOUBLE UP AND LEFT
+255E:BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+255F:BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+2560:BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+2561:BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+2562:BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+2563:BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+2564:BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+2565:BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+2566:BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+2567:BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+2568:BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+2569:BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+256A:BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+256B:BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+256C:BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+256D:BOX DRAWINGS LIGHT ARC DOWN AND RIGHT
+256E:BOX DRAWINGS LIGHT ARC DOWN AND LEFT
+256F:BOX DRAWINGS LIGHT ARC UP AND LEFT
+2570:BOX DRAWINGS LIGHT ARC UP AND RIGHT
+2571:BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT
+2572:BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT
+2573:BOX DRAWINGS LIGHT DIAGONAL CROSS
+2574:BOX DRAWINGS LIGHT LEFT
+2575:BOX DRAWINGS LIGHT UP
+2576:BOX DRAWINGS LIGHT RIGHT
+2577:BOX DRAWINGS LIGHT DOWN
+2578:BOX DRAWINGS HEAVY LEFT
+2579:BOX DRAWINGS HEAVY UP
+257A:BOX DRAWINGS HEAVY RIGHT
+257B:BOX DRAWINGS HEAVY DOWN
+257C:BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT
+257D:BOX DRAWINGS LIGHT UP AND HEAVY DOWN
+257E:BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT
+257F:BOX DRAWINGS HEAVY UP AND LIGHT DOWN
+2580:UPPER HALF BLOCK
+2581:LOWER ONE EIGHTH BLOCK
+2582:LOWER ONE QUARTER BLOCK
+2583:LOWER THREE EIGHTHS BLOCK
+2584:LOWER HALF BLOCK
+2585:LOWER FIVE EIGHTHS BLOCK
+2586:LOWER THREE QUARTERS BLOCK
+2587:LOWER SEVEN EIGHTHS BLOCK
+2588:FULL BLOCK
+2589:LEFT SEVEN EIGHTHS BLOCK
+258A:LEFT THREE QUARTERS BLOCK
+258B:LEFT FIVE EIGHTHS BLOCK
+258C:LEFT HALF BLOCK
+258D:LEFT THREE EIGHTHS BLOCK
+258E:LEFT ONE QUARTER BLOCK
+258F:LEFT ONE EIGHTH BLOCK
+2590:RIGHT HALF BLOCK
+2591:LIGHT SHADE
+2592:MEDIUM SHADE
+2593:DARK SHADE
+2594:UPPER ONE EIGHTH BLOCK
+2595:RIGHT ONE EIGHTH BLOCK
+25A0:BLACK SQUARE
+25A1:WHITE SQUARE
+25A2:WHITE SQUARE WITH ROUNDED CORNERS
+25A3:WHITE SQUARE CONTAINING BLACK SMALL SQUARE
+25A4:SQUARE WITH HORIZONTAL FILL
+25A5:SQUARE WITH VERTICAL FILL
+25A6:SQUARE WITH ORTHOGONAL CROSSHATCH FILL
+25A7:SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL
+25A8:SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL
+25A9:SQUARE WITH DIAGONAL CROSSHATCH FILL
+25AA:BLACK SMALL SQUARE
+25AB:WHITE SMALL SQUARE
+25AC:BLACK RECTANGLE
+25AD:WHITE RECTANGLE
+25AE:BLACK VERTICAL RECTANGLE
+25AF:WHITE VERTICAL RECTANGLE
+25B0:BLACK PARALLELOGRAM
+25B1:WHITE PARALLELOGRAM
+25B2:BLACK UP-POINTING TRIANGLE
+25B3:WHITE UP-POINTING TRIANGLE
+25B4:BLACK UP-POINTING SMALL TRIANGLE
+25B5:WHITE UP-POINTING SMALL TRIANGLE
+25B6:BLACK RIGHT-POINTING TRIANGLE
+25B7:WHITE RIGHT-POINTING TRIANGLE
+25B8:BLACK RIGHT-POINTING SMALL TRIANGLE
+25B9:WHITE RIGHT-POINTING SMALL TRIANGLE
+25BA:BLACK RIGHT-POINTING POINTER
+25BB:WHITE RIGHT-POINTING POINTER
+25BC:BLACK DOWN-POINTING TRIANGLE
+25BD:WHITE DOWN-POINTING TRIANGLE
+25BE:BLACK DOWN-POINTING SMALL TRIANGLE
+25BF:WHITE DOWN-POINTING SMALL TRIANGLE
+25C0:BLACK LEFT-POINTING TRIANGLE
+25C1:WHITE LEFT-POINTING TRIANGLE
+25C2:BLACK LEFT-POINTING SMALL TRIANGLE
+25C3:WHITE LEFT-POINTING SMALL TRIANGLE
+25C4:BLACK LEFT-POINTING POINTER
+25C5:WHITE LEFT-POINTING POINTER
+25C6:BLACK DIAMOND
+25C7:WHITE DIAMOND
+25C8:WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND
+25C9:FISHEYE
+25CA:LOZENGE
+25CB:WHITE CIRCLE
+25CC:DOTTED CIRCLE
+25CD:CIRCLE WITH VERTICAL FILL
+25CE:BULLSEYE
+25CF:BLACK CIRCLE
+25D0:CIRCLE WITH LEFT HALF BLACK
+25D1:CIRCLE WITH RIGHT HALF BLACK
+25D2:CIRCLE WITH LOWER HALF BLACK
+25D3:CIRCLE WITH UPPER HALF BLACK
+25D4:CIRCLE WITH UPPER RIGHT QUADRANT BLACK
+25D5:CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK
+25D6:LEFT HALF BLACK CIRCLE
+25D7:RIGHT HALF BLACK CIRCLE
+25D8:INVERSE BULLET
+25D9:INVERSE WHITE CIRCLE
+25DA:UPPER HALF INVERSE WHITE CIRCLE
+25DB:LOWER HALF INVERSE WHITE CIRCLE
+25DC:UPPER LEFT QUADRANT CIRCULAR ARC
+25DD:UPPER RIGHT QUADRANT CIRCULAR ARC
+25DE:LOWER RIGHT QUADRANT CIRCULAR ARC
+25DF:LOWER LEFT QUADRANT CIRCULAR ARC
+25E0:UPPER HALF CIRCLE
+25E1:LOWER HALF CIRCLE
+25E2:BLACK LOWER RIGHT TRIANGLE
+25E3:BLACK LOWER LEFT TRIANGLE
+25E4:BLACK UPPER LEFT TRIANGLE
+25E5:BLACK UPPER RIGHT TRIANGLE
+25E6:WHITE BULLET
+25E7:SQUARE WITH LEFT HALF BLACK
+25E8:SQUARE WITH RIGHT HALF BLACK
+25E9:SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK
+25EA:SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK
+25EB:WHITE SQUARE WITH VERTICAL BISECTING LINE
+25EC:WHITE UP-POINTING TRIANGLE WITH DOT
+25ED:UP-POINTING TRIANGLE WITH LEFT HALF BLACK
+25EE:UP-POINTING TRIANGLE WITH RIGHT HALF BLACK
+25EF:LARGE CIRCLE
+25F0:WHITE SQUARE WITH UPPER LEFT QUADRANT
+25F1:WHITE SQUARE WITH LOWER LEFT QUADRANT
+25F2:WHITE SQUARE WITH LOWER RIGHT QUADRANT
+25F3:WHITE SQUARE WITH UPPER RIGHT QUADRANT
+25F4:WHITE CIRCLE WITH UPPER LEFT QUADRANT
+25F5:WHITE CIRCLE WITH LOWER LEFT QUADRANT
+25F6:WHITE CIRCLE WITH LOWER RIGHT QUADRANT
+25F7:WHITE CIRCLE WITH UPPER RIGHT QUADRANT
+2600:BLACK SUN WITH RAYS
+2601:CLOUD
+2602:UMBRELLA
+2603:SNOWMAN
+2604:COMET
+2605:BLACK STAR
+2606:WHITE STAR
+2607:LIGHTNING
+2608:THUNDERSTORM
+2609:SUN
+260A:ASCENDING NODE
+260B:DESCENDING NODE
+260C:CONJUNCTION
+260D:OPPOSITION
+260E:BLACK TELEPHONE
+260F:WHITE TELEPHONE
+2610:BALLOT BOX
+2611:BALLOT BOX WITH CHECK
+2612:BALLOT BOX WITH X
+2613:SALTIRE
+2619:REVERSED ROTATED FLORAL HEART BULLET
+261A:BLACK LEFT POINTING INDEX
+261B:BLACK RIGHT POINTING INDEX
+261C:WHITE LEFT POINTING INDEX
+261D:WHITE UP POINTING INDEX
+261E:WHITE RIGHT POINTING INDEX
+261F:WHITE DOWN POINTING INDEX
+2620:SKULL AND CROSSBONES
+2621:CAUTION SIGN
+2622:RADIOACTIVE SIGN
+2623:BIOHAZARD SIGN
+2624:CADUCEUS
+2625:ANKH
+2626:ORTHODOX CROSS
+2627:CHI RHO
+2628:CROSS OF LORRAINE
+2629:CROSS OF JERUSALEM
+262A:STAR AND CRESCENT
+262B:FARSI SYMBOL
+262C:ADI SHAKTI
+262D:HAMMER AND SICKLE
+262E:PEACE SYMBOL
+262F:YIN YANG
+2630:TRIGRAM FOR HEAVEN
+2631:TRIGRAM FOR LAKE
+2632:TRIGRAM FOR FIRE
+2633:TRIGRAM FOR THUNDER
+2634:TRIGRAM FOR WIND
+2635:TRIGRAM FOR WATER
+2636:TRIGRAM FOR MOUNTAIN
+2637:TRIGRAM FOR EARTH
+2638:WHEEL OF DHARMA
+2639:WHITE FROWNING FACE
+263A:WHITE SMILING FACE
+263B:BLACK SMILING FACE
+263C:WHITE SUN WITH RAYS
+263D:FIRST QUARTER MOON
+263E:LAST QUARTER MOON
+263F:MERCURY
+2640:FEMALE SIGN
+2641:EARTH
+2642:MALE SIGN
+2643:JUPITER
+2644:SATURN
+2645:URANUS
+2646:NEPTUNE
+2647:PLUTO
+2648:ARIES
+2649:TAURUS
+264A:GEMINI
+264B:CANCER
+264C:LEO
+264D:VIRGO
+264E:LIBRA
+264F:SCORPIUS
+2650:SAGITTARIUS
+2651:CAPRICORN
+2652:AQUARIUS
+2653:PISCES
+2654:WHITE CHESS KING
+2655:WHITE CHESS QUEEN
+2656:WHITE CHESS ROOK
+2657:WHITE CHESS BISHOP
+2658:WHITE CHESS KNIGHT
+2659:WHITE CHESS PAWN
+265A:BLACK CHESS KING
+265B:BLACK CHESS QUEEN
+265C:BLACK CHESS ROOK
+265D:BLACK CHESS BISHOP
+265E:BLACK CHESS KNIGHT
+265F:BLACK CHESS PAWN
+2660:BLACK SPADE SUIT
+2661:WHITE HEART SUIT
+2662:WHITE DIAMOND SUIT
+2663:BLACK CLUB SUIT
+2664:WHITE SPADE SUIT
+2665:BLACK HEART SUIT
+2666:BLACK DIAMOND SUIT
+2667:WHITE CLUB SUIT
+2668:HOT SPRINGS
+2669:QUARTER NOTE
+266A:EIGHTH NOTE
+266B:BEAMED EIGHTH NOTES
+266C:BEAMED SIXTEENTH NOTES
+266D:MUSIC FLAT SIGN
+266E:MUSIC NATURAL SIGN
+266F:MUSIC SHARP SIGN
+2670:WEST SYRIAC CROSS
+2671:EAST SYRIAC CROSS
+FB00:LATIN SMALL LIGATURE FF
+FB01:LATIN SMALL LIGATURE FI
+FB02:LATIN SMALL LIGATURE FL
+FB03:LATIN SMALL LIGATURE FFI
+FB04:LATIN SMALL LIGATURE FFL
+FB05:LATIN SMALL LIGATURE LONG S T
+FB06:LATIN SMALL LIGATURE ST
+FB13:ARMENIAN SMALL LIGATURE MEN NOW
+FB14:ARMENIAN SMALL LIGATURE MEN ECH
+FB15:ARMENIAN SMALL LIGATURE MEN INI
+FB16:ARMENIAN SMALL LIGATURE VEW NOW
+FB17:ARMENIAN SMALL LIGATURE MEN XEH
+FE20:COMBINING LIGATURE LEFT HALF
+FE21:COMBINING LIGATURE RIGHT HALF
+FE22:COMBINING DOUBLE TILDE LEFT HALF
+FE23:COMBINING DOUBLE TILDE RIGHT HALF
+FFF9:INTERLINEAR ANNOTATION ANCHOR
+FFFA:INTERLINEAR ANNOTATION SEPARATOR
+FFFB:INTERLINEAR ANNOTATION TERMINATOR
+FFFC:OBJECT REPLACEMENT CHARACTER
+FFFD:REPLACEMENT CHARACTER
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/MES-3B.txt b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/MES-3B.txt
new file mode 100644
index 00000000000..11316824871
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/MES-3B.txt
@@ -0,0 +1,21 @@
+# Plane 00
+# Rows Positions (Cells)
+00 20-7E A0-FF
+01 00-FF
+02 00-1F 22-33 50-AD B0-EE
+03 00-4E 60-62 74-75 7A 7E 84-8A 8C 8E-A1 A3-CE D0-D7 DA-F3
+04 00-86 88-89 8C-C4 C7-C8 CB-CC D0-F5 F8-F9
+05 31-56 59-5F 61-87 89-8A
+10 D0-F6 FB
+1E 00-9B A0-F9
+1F 00-15 18-1D 20-45 48-4D 50-57 59 5B 5D 5F-7D 80-B4 B6-C4 C6-D3 D6-DB DD-EF F2-F4 F6-FE
+20 00-46 48-4D 6A-70 74-8E A0-AF D0-E3
+21 00-3A 53-83 90-F3
+22 00-F1
+23 00-7B 7D-9A
+34 40-4A
+25 00-95 A0-F7
+26 00-13 19-71
+FB 00-06 13-17
+FE 20-23
+FF F9-FD
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/WGL4.lst b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/WGL4.lst
new file mode 100644
index 00000000000..b33e1715fc4
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/WGL4.lst
@@ -0,0 +1,653 @@
+0020:SPACE
+0021:EXCLAMATION MARK
+0022:QUOTATION MARK
+0023:NUMBER SIGN
+0024:DOLLAR SIGN
+0025:PERCENT SIGN
+0026:AMPERSAND
+0027:APOSTROPHE
+0028:LEFT PARENTHESIS
+0029:RIGHT PARENTHESIS
+002A:ASTERISK
+002B:PLUS SIGN
+002C:COMMA
+002D:HYPHEN-MINUS
+002E:FULL STOP
+002F:SOLIDUS
+0030:DIGIT ZERO
+0031:DIGIT ONE
+0032:DIGIT TWO
+0033:DIGIT THREE
+0034:DIGIT FOUR
+0035:DIGIT FIVE
+0036:DIGIT SIX
+0037:DIGIT SEVEN
+0038:DIGIT EIGHT
+0039:DIGIT NINE
+003A:COLON
+003B:SEMICOLON
+003C:LESS-THAN SIGN
+003D:EQUALS SIGN
+003E:GREATER-THAN SIGN
+003F:QUESTION MARK
+0040:COMMERCIAL AT
+0041:LATIN CAPITAL LETTER A
+0042:LATIN CAPITAL LETTER B
+0043:LATIN CAPITAL LETTER C
+0044:LATIN CAPITAL LETTER D
+0045:LATIN CAPITAL LETTER E
+0046:LATIN CAPITAL LETTER F
+0047:LATIN CAPITAL LETTER G
+0048:LATIN CAPITAL LETTER H
+0049:LATIN CAPITAL LETTER I
+004A:LATIN CAPITAL LETTER J
+004B:LATIN CAPITAL LETTER K
+004C:LATIN CAPITAL LETTER L
+004D:LATIN CAPITAL LETTER M
+004E:LATIN CAPITAL LETTER N
+004F:LATIN CAPITAL LETTER O
+0050:LATIN CAPITAL LETTER P
+0051:LATIN CAPITAL LETTER Q
+0052:LATIN CAPITAL LETTER R
+0053:LATIN CAPITAL LETTER S
+0054:LATIN CAPITAL LETTER T
+0055:LATIN CAPITAL LETTER U
+0056:LATIN CAPITAL LETTER V
+0057:LATIN CAPITAL LETTER W
+0058:LATIN CAPITAL LETTER X
+0059:LATIN CAPITAL LETTER Y
+005A:LATIN CAPITAL LETTER Z
+005B:LEFT SQUARE BRACKET
+005C:REVERSE SOLIDUS
+005D:RIGHT SQUARE BRACKET
+005E:CIRCUMFLEX ACCENT
+005F:LOW LINE
+0060:GRAVE ACCENT
+0061:LATIN SMALL LETTER A
+0062:LATIN SMALL LETTER B
+0063:LATIN SMALL LETTER C
+0064:LATIN SMALL LETTER D
+0065:LATIN SMALL LETTER E
+0066:LATIN SMALL LETTER F
+0067:LATIN SMALL LETTER G
+0068:LATIN SMALL LETTER H
+0069:LATIN SMALL LETTER I
+006A:LATIN SMALL LETTER J
+006B:LATIN SMALL LETTER K
+006C:LATIN SMALL LETTER L
+006D:LATIN SMALL LETTER M
+006E:LATIN SMALL LETTER N
+006F:LATIN SMALL LETTER O
+0070:LATIN SMALL LETTER P
+0071:LATIN SMALL LETTER Q
+0072:LATIN SMALL LETTER R
+0073:LATIN SMALL LETTER S
+0074:LATIN SMALL LETTER T
+0075:LATIN SMALL LETTER U
+0076:LATIN SMALL LETTER V
+0077:LATIN SMALL LETTER W
+0078:LATIN SMALL LETTER X
+0079:LATIN SMALL LETTER Y
+007A:LATIN SMALL LETTER Z
+007B:LEFT CURLY BRACKET
+007C:VERTICAL LINE
+007D:RIGHT CURLY BRACKET
+007E:TILDE
+00A0:NO-BREAK SPACE
+00A1:INVERTED EXCLAMATION MARK
+00A2:CENT SIGN
+00A3:POUND SIGN
+00A4:CURRENCY SIGN
+00A5:YEN SIGN
+00A6:BROKEN BAR
+00A7:SECTION SIGN
+00A8:DIAERESIS
+00A9:COPYRIGHT SIGN
+00AA:FEMININE ORDINAL INDICATOR
+00AB:LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+00AC:NOT SIGN
+00AD:SOFT HYPHEN
+00AE:REGISTERED SIGN
+00AF:MACRON
+00B0:DEGREE SIGN
+00B1:PLUS-MINUS SIGN
+00B2:SUPERSCRIPT TWO
+00B3:SUPERSCRIPT THREE
+00B4:ACUTE ACCENT
+00B5:MICRO SIGN
+00B6:PILCROW SIGN
+00B7:MIDDLE DOT
+00B8:CEDILLA
+00B9:SUPERSCRIPT ONE
+00BA:MASCULINE ORDINAL INDICATOR
+00BB:RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+00BC:VULGAR FRACTION ONE QUARTER
+00BD:VULGAR FRACTION ONE HALF
+00BE:VULGAR FRACTION THREE QUARTERS
+00BF:INVERTED QUESTION MARK
+00C0:LATIN CAPITAL LETTER A WITH GRAVE
+00C1:LATIN CAPITAL LETTER A WITH ACUTE
+00C2:LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+00C3:LATIN CAPITAL LETTER A WITH TILDE
+00C4:LATIN CAPITAL LETTER A WITH DIAERESIS
+00C5:LATIN CAPITAL LETTER A WITH RING ABOVE
+00C6:LATIN CAPITAL LETTER AE
+00C7:LATIN CAPITAL LETTER C WITH CEDILLA
+00C8:LATIN CAPITAL LETTER E WITH GRAVE
+00C9:LATIN CAPITAL LETTER E WITH ACUTE
+00CA:LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+00CB:LATIN CAPITAL LETTER E WITH DIAERESIS
+00CC:LATIN CAPITAL LETTER I WITH GRAVE
+00CD:LATIN CAPITAL LETTER I WITH ACUTE
+00CE:LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+00CF:LATIN CAPITAL LETTER I WITH DIAERESIS
+00D0:LATIN CAPITAL LETTER ETH
+00D1:LATIN CAPITAL LETTER N WITH TILDE
+00D2:LATIN CAPITAL LETTER O WITH GRAVE
+00D3:LATIN CAPITAL LETTER O WITH ACUTE
+00D4:LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+00D5:LATIN CAPITAL LETTER O WITH TILDE
+00D6:LATIN CAPITAL LETTER O WITH DIAERESIS
+00D7:MULTIPLICATION SIGN
+00D8:LATIN CAPITAL LETTER O WITH STROKE
+00D9:LATIN CAPITAL LETTER U WITH GRAVE
+00DA:LATIN CAPITAL LETTER U WITH ACUTE
+00DB:LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+00DC:LATIN CAPITAL LETTER U WITH DIAERESIS
+00DD:LATIN CAPITAL LETTER Y WITH ACUTE
+00DE:LATIN CAPITAL LETTER THORN
+00DF:LATIN SMALL LETTER SHARP S
+00E0:LATIN SMALL LETTER A WITH GRAVE
+00E1:LATIN SMALL LETTER A WITH ACUTE
+00E2:LATIN SMALL LETTER A WITH CIRCUMFLEX
+00E3:LATIN SMALL LETTER A WITH TILDE
+00E4:LATIN SMALL LETTER A WITH DIAERESIS
+00E5:LATIN SMALL LETTER A WITH RING ABOVE
+00E6:LATIN SMALL LETTER AE
+00E7:LATIN SMALL LETTER C WITH CEDILLA
+00E8:LATIN SMALL LETTER E WITH GRAVE
+00E9:LATIN SMALL LETTER E WITH ACUTE
+00EA:LATIN SMALL LETTER E WITH CIRCUMFLEX
+00EB:LATIN SMALL LETTER E WITH DIAERESIS
+00EC:LATIN SMALL LETTER I WITH GRAVE
+00ED:LATIN SMALL LETTER I WITH ACUTE
+00EE:LATIN SMALL LETTER I WITH CIRCUMFLEX
+00EF:LATIN SMALL LETTER I WITH DIAERESIS
+00F0:LATIN SMALL LETTER ETH
+00F1:LATIN SMALL LETTER N WITH TILDE
+00F2:LATIN SMALL LETTER O WITH GRAVE
+00F3:LATIN SMALL LETTER O WITH ACUTE
+00F4:LATIN SMALL LETTER O WITH CIRCUMFLEX
+00F5:LATIN SMALL LETTER O WITH TILDE
+00F6:LATIN SMALL LETTER O WITH DIAERESIS
+00F7:DIVISION SIGN
+00F8:LATIN SMALL LETTER O WITH STROKE
+00F9:LATIN SMALL LETTER U WITH GRAVE
+00FA:LATIN SMALL LETTER U WITH ACUTE
+00FB:LATIN SMALL LETTER U WITH CIRCUMFLEX
+00FC:LATIN SMALL LETTER U WITH DIAERESIS
+00FD:LATIN SMALL LETTER Y WITH ACUTE
+00FE:LATIN SMALL LETTER THORN
+00FF:LATIN SMALL LETTER Y WITH DIAERESIS
+0100:LATIN CAPITAL LETTER A WITH MACRON
+0101:LATIN SMALL LETTER A WITH MACRON
+0102:LATIN CAPITAL LETTER A WITH BREVE
+0103:LATIN SMALL LETTER A WITH BREVE
+0104:LATIN CAPITAL LETTER A WITH OGONEK
+0105:LATIN SMALL LETTER A WITH OGONEK
+0106:LATIN CAPITAL LETTER C WITH ACUTE
+0107:LATIN SMALL LETTER C WITH ACUTE
+0108:LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+0109:LATIN SMALL LETTER C WITH CIRCUMFLEX
+010A:LATIN CAPITAL LETTER C WITH DOT ABOVE
+010B:LATIN SMALL LETTER C WITH DOT ABOVE
+010C:LATIN CAPITAL LETTER C WITH CARON
+010D:LATIN SMALL LETTER C WITH CARON
+010E:LATIN CAPITAL LETTER D WITH CARON
+010F:LATIN SMALL LETTER D WITH CARON
+0110:LATIN CAPITAL LETTER D WITH STROKE
+0111:LATIN SMALL LETTER D WITH STROKE
+0112:LATIN CAPITAL LETTER E WITH MACRON
+0113:LATIN SMALL LETTER E WITH MACRON
+0114:LATIN CAPITAL LETTER E WITH BREVE
+0115:LATIN SMALL LETTER E WITH BREVE
+0116:LATIN CAPITAL LETTER E WITH DOT ABOVE
+0117:LATIN SMALL LETTER E WITH DOT ABOVE
+0118:LATIN CAPITAL LETTER E WITH OGONEK
+0119:LATIN SMALL LETTER E WITH OGONEK
+011A:LATIN CAPITAL LETTER E WITH CARON
+011B:LATIN SMALL LETTER E WITH CARON
+011C:LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+011D:LATIN SMALL LETTER G WITH CIRCUMFLEX
+011E:LATIN CAPITAL LETTER G WITH BREVE
+011F:LATIN SMALL LETTER G WITH BREVE
+0120:LATIN CAPITAL LETTER G WITH DOT ABOVE
+0121:LATIN SMALL LETTER G WITH DOT ABOVE
+0122:LATIN CAPITAL LETTER G WITH CEDILLA
+0123:LATIN SMALL LETTER G WITH CEDILLA
+0124:LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+0125:LATIN SMALL LETTER H WITH CIRCUMFLEX
+0126:LATIN CAPITAL LETTER H WITH STROKE
+0127:LATIN SMALL LETTER H WITH STROKE
+0128:LATIN CAPITAL LETTER I WITH TILDE
+0129:LATIN SMALL LETTER I WITH TILDE
+012A:LATIN CAPITAL LETTER I WITH MACRON
+012B:LATIN SMALL LETTER I WITH MACRON
+012C:LATIN CAPITAL LETTER I WITH BREVE
+012D:LATIN SMALL LETTER I WITH BREVE
+012E:LATIN CAPITAL LETTER I WITH OGONEK
+012F:LATIN SMALL LETTER I WITH OGONEK
+0130:LATIN CAPITAL LETTER I WITH DOT ABOVE
+0131:LATIN SMALL LETTER DOTLESS I
+0132:LATIN CAPITAL LIGATURE IJ
+0133:LATIN SMALL LIGATURE IJ
+0134:LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+0135:LATIN SMALL LETTER J WITH CIRCUMFLEX
+0136:LATIN CAPITAL LETTER K WITH CEDILLA
+0137:LATIN SMALL LETTER K WITH CEDILLA
+0138:LATIN SMALL LETTER KRA
+0139:LATIN CAPITAL LETTER L WITH ACUTE
+013A:LATIN SMALL LETTER L WITH ACUTE
+013B:LATIN CAPITAL LETTER L WITH CEDILLA
+013C:LATIN SMALL LETTER L WITH CEDILLA
+013D:LATIN CAPITAL LETTER L WITH CARON
+013E:LATIN SMALL LETTER L WITH CARON
+013F:LATIN CAPITAL LETTER L WITH MIDDLE DOT
+0140:LATIN SMALL LETTER L WITH MIDDLE DOT
+0141:LATIN CAPITAL LETTER L WITH STROKE
+0142:LATIN SMALL LETTER L WITH STROKE
+0143:LATIN CAPITAL LETTER N WITH ACUTE
+0144:LATIN SMALL LETTER N WITH ACUTE
+0145:LATIN CAPITAL LETTER N WITH CEDILLA
+0146:LATIN SMALL LETTER N WITH CEDILLA
+0147:LATIN CAPITAL LETTER N WITH CARON
+0148:LATIN SMALL LETTER N WITH CARON
+0149:LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+014A:LATIN CAPITAL LETTER ENG
+014B:LATIN SMALL LETTER ENG
+014C:LATIN CAPITAL LETTER O WITH MACRON
+014D:LATIN SMALL LETTER O WITH MACRON
+014E:LATIN CAPITAL LETTER O WITH BREVE
+014F:LATIN SMALL LETTER O WITH BREVE
+0150:LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+0151:LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0152:LATIN CAPITAL LIGATURE OE
+0153:LATIN SMALL LIGATURE OE
+0154:LATIN CAPITAL LETTER R WITH ACUTE
+0155:LATIN SMALL LETTER R WITH ACUTE
+0156:LATIN CAPITAL LETTER R WITH CEDILLA
+0157:LATIN SMALL LETTER R WITH CEDILLA
+0158:LATIN CAPITAL LETTER R WITH CARON
+0159:LATIN SMALL LETTER R WITH CARON
+015A:LATIN CAPITAL LETTER S WITH ACUTE
+015B:LATIN SMALL LETTER S WITH ACUTE
+015C:LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+015D:LATIN SMALL LETTER S WITH CIRCUMFLEX
+015E:LATIN CAPITAL LETTER S WITH CEDILLA
+015F:LATIN SMALL LETTER S WITH CEDILLA
+0160:LATIN CAPITAL LETTER S WITH CARON
+0161:LATIN SMALL LETTER S WITH CARON
+0162:LATIN CAPITAL LETTER T WITH CEDILLA
+0163:LATIN SMALL LETTER T WITH CEDILLA
+0164:LATIN CAPITAL LETTER T WITH CARON
+0165:LATIN SMALL LETTER T WITH CARON
+0166:LATIN CAPITAL LETTER T WITH STROKE
+0167:LATIN SMALL LETTER T WITH STROKE
+0168:LATIN CAPITAL LETTER U WITH TILDE
+0169:LATIN SMALL LETTER U WITH TILDE
+016A:LATIN CAPITAL LETTER U WITH MACRON
+016B:LATIN SMALL LETTER U WITH MACRON
+016C:LATIN CAPITAL LETTER U WITH BREVE
+016D:LATIN SMALL LETTER U WITH BREVE
+016E:LATIN CAPITAL LETTER U WITH RING ABOVE
+016F:LATIN SMALL LETTER U WITH RING ABOVE
+0170:LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0171:LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0172:LATIN CAPITAL LETTER U WITH OGONEK
+0173:LATIN SMALL LETTER U WITH OGONEK
+0174:LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+0175:LATIN SMALL LETTER W WITH CIRCUMFLEX
+0176:LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+0177:LATIN SMALL LETTER Y WITH CIRCUMFLEX
+0178:LATIN CAPITAL LETTER Y WITH DIAERESIS
+0179:LATIN CAPITAL LETTER Z WITH ACUTE
+017A:LATIN SMALL LETTER Z WITH ACUTE
+017B:LATIN CAPITAL LETTER Z WITH DOT ABOVE
+017C:LATIN SMALL LETTER Z WITH DOT ABOVE
+017D:LATIN CAPITAL LETTER Z WITH CARON
+017E:LATIN SMALL LETTER Z WITH CARON
+017F:LATIN SMALL LETTER LONG S
+0192:LATIN SMALL LETTER F WITH HOOK
+01FA:LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+01FB:LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FC:LATIN CAPITAL LETTER AE WITH ACUTE
+01FD:LATIN SMALL LETTER AE WITH ACUTE
+01FE:LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+01FF:LATIN SMALL LETTER O WITH STROKE AND ACUTE
+02C6:MODIFIER LETTER CIRCUMFLEX ACCENT
+02C7:CARON
+02C9:MODIFIER LETTER MACRON
+02D8:BREVE
+02D9:DOT ABOVE
+02DA:RING ABOVE
+02DB:OGONEK
+02DC:SMALL TILDE
+02DD:DOUBLE ACUTE ACCENT
+0384:GREEK TONOS
+0385:GREEK DIALYTIKA TONOS
+0386:GREEK CAPITAL LETTER ALPHA WITH TONOS
+0387:GREEK ANO TELEIA
+0388:GREEK CAPITAL LETTER EPSILON WITH TONOS
+0389:GREEK CAPITAL LETTER ETA WITH TONOS
+038A:GREEK CAPITAL LETTER IOTA WITH TONOS
+038C:GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E:GREEK CAPITAL LETTER UPSILON WITH TONOS
+038F:GREEK CAPITAL LETTER OMEGA WITH TONOS
+0390:GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+0391:GREEK CAPITAL LETTER ALPHA
+0392:GREEK CAPITAL LETTER BETA
+0393:GREEK CAPITAL LETTER GAMMA
+0394:GREEK CAPITAL LETTER DELTA
+0395:GREEK CAPITAL LETTER EPSILON
+0396:GREEK CAPITAL LETTER ZETA
+0397:GREEK CAPITAL LETTER ETA
+0398:GREEK CAPITAL LETTER THETA
+0399:GREEK CAPITAL LETTER IOTA
+039A:GREEK CAPITAL LETTER KAPPA
+039B:GREEK CAPITAL LETTER LAMDA
+039C:GREEK CAPITAL LETTER MU
+039D:GREEK CAPITAL LETTER NU
+039E:GREEK CAPITAL LETTER XI
+039F:GREEK CAPITAL LETTER OMICRON
+03A0:GREEK CAPITAL LETTER PI
+03A1:GREEK CAPITAL LETTER RHO
+03A3:GREEK CAPITAL LETTER SIGMA
+03A4:GREEK CAPITAL LETTER TAU
+03A5:GREEK CAPITAL LETTER UPSILON
+03A6:GREEK CAPITAL LETTER PHI
+03A7:GREEK CAPITAL LETTER CHI
+03A8:GREEK CAPITAL LETTER PSI
+03A9:GREEK CAPITAL LETTER OMEGA
+03AA:GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+03AB:GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+03AC:GREEK SMALL LETTER ALPHA WITH TONOS
+03AD:GREEK SMALL LETTER EPSILON WITH TONOS
+03AE:GREEK SMALL LETTER ETA WITH TONOS
+03AF:GREEK SMALL LETTER IOTA WITH TONOS
+03B0:GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+03B1:GREEK SMALL LETTER ALPHA
+03B2:GREEK SMALL LETTER BETA
+03B3:GREEK SMALL LETTER GAMMA
+03B4:GREEK SMALL LETTER DELTA
+03B5:GREEK SMALL LETTER EPSILON
+03B6:GREEK SMALL LETTER ZETA
+03B7:GREEK SMALL LETTER ETA
+03B8:GREEK SMALL LETTER THETA
+03B9:GREEK SMALL LETTER IOTA
+03BA:GREEK SMALL LETTER KAPPA
+03BB:GREEK SMALL LETTER LAMDA
+03BC:GREEK SMALL LETTER MU
+03BD:GREEK SMALL LETTER NU
+03BE:GREEK SMALL LETTER XI
+03BF:GREEK SMALL LETTER OMICRON
+03C0:GREEK SMALL LETTER PI
+03C1:GREEK SMALL LETTER RHO
+03C2:GREEK SMALL LETTER FINAL SIGMA
+03C3:GREEK SMALL LETTER SIGMA
+03C4:GREEK SMALL LETTER TAU
+03C5:GREEK SMALL LETTER UPSILON
+03C6:GREEK SMALL LETTER PHI
+03C7:GREEK SMALL LETTER CHI
+03C8:GREEK SMALL LETTER PSI
+03C9:GREEK SMALL LETTER OMEGA
+03CA:GREEK SMALL LETTER IOTA WITH DIALYTIKA
+03CB:GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+03CC:GREEK SMALL LETTER OMICRON WITH TONOS
+03CD:GREEK SMALL LETTER UPSILON WITH TONOS
+03CE:GREEK SMALL LETTER OMEGA WITH TONOS
+0401:CYRILLIC CAPITAL LETTER IO
+0402:CYRILLIC CAPITAL LETTER DJE
+0403:CYRILLIC CAPITAL LETTER GJE
+0404:CYRILLIC CAPITAL LETTER UKRAINIAN IE
+0405:CYRILLIC CAPITAL LETTER DZE
+0406:CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+0407:CYRILLIC CAPITAL LETTER YI
+0408:CYRILLIC CAPITAL LETTER JE
+0409:CYRILLIC CAPITAL LETTER LJE
+040A:CYRILLIC CAPITAL LETTER NJE
+040B:CYRILLIC CAPITAL LETTER TSHE
+040C:CYRILLIC CAPITAL LETTER KJE
+040E:CYRILLIC CAPITAL LETTER SHORT U
+040F:CYRILLIC CAPITAL LETTER DZHE
+0410:CYRILLIC CAPITAL LETTER A
+0411:CYRILLIC CAPITAL LETTER BE
+0412:CYRILLIC CAPITAL LETTER VE
+0413:CYRILLIC CAPITAL LETTER GHE
+0414:CYRILLIC CAPITAL LETTER DE
+0415:CYRILLIC CAPITAL LETTER IE
+0416:CYRILLIC CAPITAL LETTER ZHE
+0417:CYRILLIC CAPITAL LETTER ZE
+0418:CYRILLIC CAPITAL LETTER I
+0419:CYRILLIC CAPITAL LETTER SHORT I
+041A:CYRILLIC CAPITAL LETTER KA
+041B:CYRILLIC CAPITAL LETTER EL
+041C:CYRILLIC CAPITAL LETTER EM
+041D:CYRILLIC CAPITAL LETTER EN
+041E:CYRILLIC CAPITAL LETTER O
+041F:CYRILLIC CAPITAL LETTER PE
+0420:CYRILLIC CAPITAL LETTER ER
+0421:CYRILLIC CAPITAL LETTER ES
+0422:CYRILLIC CAPITAL LETTER TE
+0423:CYRILLIC CAPITAL LETTER U
+0424:CYRILLIC CAPITAL LETTER EF
+0425:CYRILLIC CAPITAL LETTER HA
+0426:CYRILLIC CAPITAL LETTER TSE
+0427:CYRILLIC CAPITAL LETTER CHE
+0428:CYRILLIC CAPITAL LETTER SHA
+0429:CYRILLIC CAPITAL LETTER SHCHA
+042A:CYRILLIC CAPITAL LETTER HARD SIGN
+042B:CYRILLIC CAPITAL LETTER YERU
+042C:CYRILLIC CAPITAL LETTER SOFT SIGN
+042D:CYRILLIC CAPITAL LETTER E
+042E:CYRILLIC CAPITAL LETTER YU
+042F:CYRILLIC CAPITAL LETTER YA
+0430:CYRILLIC SMALL LETTER A
+0431:CYRILLIC SMALL LETTER BE
+0432:CYRILLIC SMALL LETTER VE
+0433:CYRILLIC SMALL LETTER GHE
+0434:CYRILLIC SMALL LETTER DE
+0435:CYRILLIC SMALL LETTER IE
+0436:CYRILLIC SMALL LETTER ZHE
+0437:CYRILLIC SMALL LETTER ZE
+0438:CYRILLIC SMALL LETTER I
+0439:CYRILLIC SMALL LETTER SHORT I
+043A:CYRILLIC SMALL LETTER KA
+043B:CYRILLIC SMALL LETTER EL
+043C:CYRILLIC SMALL LETTER EM
+043D:CYRILLIC SMALL LETTER EN
+043E:CYRILLIC SMALL LETTER O
+043F:CYRILLIC SMALL LETTER PE
+0440:CYRILLIC SMALL LETTER ER
+0441:CYRILLIC SMALL LETTER ES
+0442:CYRILLIC SMALL LETTER TE
+0443:CYRILLIC SMALL LETTER U
+0444:CYRILLIC SMALL LETTER EF
+0445:CYRILLIC SMALL LETTER HA
+0446:CYRILLIC SMALL LETTER TSE
+0447:CYRILLIC SMALL LETTER CHE
+0448:CYRILLIC SMALL LETTER SHA
+0449:CYRILLIC SMALL LETTER SHCHA
+044A:CYRILLIC SMALL LETTER HARD SIGN
+044B:CYRILLIC SMALL LETTER YERU
+044C:CYRILLIC SMALL LETTER SOFT SIGN
+044D:CYRILLIC SMALL LETTER E
+044E:CYRILLIC SMALL LETTER YU
+044F:CYRILLIC SMALL LETTER YA
+0451:CYRILLIC SMALL LETTER IO
+0452:CYRILLIC SMALL LETTER DJE
+0453:CYRILLIC SMALL LETTER GJE
+0454:CYRILLIC SMALL LETTER UKRAINIAN IE
+0455:CYRILLIC SMALL LETTER DZE
+0456:CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+0457:CYRILLIC SMALL LETTER YI
+0458:CYRILLIC SMALL LETTER JE
+0459:CYRILLIC SMALL LETTER LJE
+045A:CYRILLIC SMALL LETTER NJE
+045B:CYRILLIC SMALL LETTER TSHE
+045C:CYRILLIC SMALL LETTER KJE
+045E:CYRILLIC SMALL LETTER SHORT U
+045F:CYRILLIC SMALL LETTER DZHE
+0490:CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+0491:CYRILLIC SMALL LETTER GHE WITH UPTURN
+1E80:LATIN CAPITAL LETTER W WITH GRAVE
+1E81:LATIN SMALL LETTER W WITH GRAVE
+1E82:LATIN CAPITAL LETTER W WITH ACUTE
+1E83:LATIN SMALL LETTER W WITH ACUTE
+1E84:LATIN CAPITAL LETTER W WITH DIAERESIS
+1E85:LATIN SMALL LETTER W WITH DIAERESIS
+1EF2:LATIN CAPITAL LETTER Y WITH GRAVE
+1EF3:LATIN SMALL LETTER Y WITH GRAVE
+2013:EN DASH
+2014:EM DASH
+2015:HORIZONTAL BAR
+2017:DOUBLE LOW LINE
+2018:LEFT SINGLE QUOTATION MARK
+2019:RIGHT SINGLE QUOTATION MARK
+201A:SINGLE LOW-9 QUOTATION MARK
+201B:SINGLE HIGH-REVERSED-9 QUOTATION MARK
+201C:LEFT DOUBLE QUOTATION MARK
+201D:RIGHT DOUBLE QUOTATION MARK
+201E:DOUBLE LOW-9 QUOTATION MARK
+2020:DAGGER
+2021:DOUBLE DAGGER
+2022:BULLET
+2026:HORIZONTAL ELLIPSIS
+2030:PER MILLE SIGN
+2032:PRIME
+2033:DOUBLE PRIME
+2039:SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+203A:SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+203C:DOUBLE EXCLAMATION MARK
+203E:OVERLINE
+2044:FRACTION SLASH
+207F:SUPERSCRIPT LATIN SMALL LETTER N
+20A3:FRENCH FRANC SIGN
+20A4:LIRA SIGN
+20A7:PESETA SIGN
+20AC:EURO SIGN
+2105:CARE OF
+2113:SCRIPT SMALL L
+2116:NUMERO SIGN
+2122:TRADE MARK SIGN
+2126:OHM SIGN
+212E:ESTIMATED SYMBOL
+215B:VULGAR FRACTION ONE EIGHTH
+215C:VULGAR FRACTION THREE EIGHTHS
+215D:VULGAR FRACTION FIVE EIGHTHS
+215E:VULGAR FRACTION SEVEN EIGHTHS
+2190:LEFTWARDS ARROW
+2191:UPWARDS ARROW
+2192:RIGHTWARDS ARROW
+2193:DOWNWARDS ARROW
+2194:LEFT RIGHT ARROW
+2195:UP DOWN ARROW
+21A8:UP DOWN ARROW WITH BASE
+2202:PARTIAL DIFFERENTIAL
+2206:INCREMENT
+220F:N-ARY PRODUCT
+2211:N-ARY SUMMATION
+2212:MINUS SIGN
+2215:DIVISION SLASH
+2219:BULLET OPERATOR
+221A:SQUARE ROOT
+221E:INFINITY
+221F:RIGHT ANGLE
+2229:INTERSECTION
+222B:INTEGRAL
+2248:ALMOST EQUAL TO
+2260:NOT EQUAL TO
+2261:IDENTICAL TO
+2264:LESS-THAN OR EQUAL TO
+2265:GREATER-THAN OR EQUAL TO
+2302:HOUSE
+2310:REVERSED NOT SIGN
+2320:TOP HALF INTEGRAL
+2321:BOTTOM HALF INTEGRAL
+2500:BOX DRAWINGS LIGHT HORIZONTAL
+2502:BOX DRAWINGS LIGHT VERTICAL
+250C:BOX DRAWINGS LIGHT DOWN AND RIGHT
+2510:BOX DRAWINGS LIGHT DOWN AND LEFT
+2514:BOX DRAWINGS LIGHT UP AND RIGHT
+2518:BOX DRAWINGS LIGHT UP AND LEFT
+251C:BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+2524:BOX DRAWINGS LIGHT VERTICAL AND LEFT
+252C:BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+2534:BOX DRAWINGS LIGHT UP AND HORIZONTAL
+253C:BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+2550:BOX DRAWINGS DOUBLE HORIZONTAL
+2551:BOX DRAWINGS DOUBLE VERTICAL
+2552:BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+2553:BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+2554:BOX DRAWINGS DOUBLE DOWN AND RIGHT
+2555:BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+2556:BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+2557:BOX DRAWINGS DOUBLE DOWN AND LEFT
+2558:BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+2559:BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+255A:BOX DRAWINGS DOUBLE UP AND RIGHT
+255B:BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+255C:BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+255D:BOX DRAWINGS DOUBLE UP AND LEFT
+255E:BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+255F:BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+2560:BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+2561:BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+2562:BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+2563:BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+2564:BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+2565:BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+2566:BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+2567:BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+2568:BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+2569:BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+256A:BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+256B:BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+256C:BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+2580:UPPER HALF BLOCK
+2584:LOWER HALF BLOCK
+2588:FULL BLOCK
+258C:LEFT HALF BLOCK
+2590:RIGHT HALF BLOCK
+2591:LIGHT SHADE
+2592:MEDIUM SHADE
+2593:DARK SHADE
+25A0:BLACK SQUARE
+25A1:WHITE SQUARE
+25AA:BLACK SMALL SQUARE
+25AB:WHITE SMALL SQUARE
+25AC:BLACK RECTANGLE
+25B2:BLACK UP-POINTING TRIANGLE
+25BA:BLACK RIGHT-POINTING POINTER
+25BC:BLACK DOWN-POINTING TRIANGLE
+25C4:BLACK LEFT-POINTING POINTER
+25CA:LOZENGE
+25CB:WHITE CIRCLE
+25CF:BLACK CIRCLE
+25D8:INVERSE BULLET
+25D9:INVERSE WHITE CIRCLE
+25E6:WHITE BULLET
+263A:WHITE SMILING FACE
+263B:BLACK SMILING FACE
+263C:WHITE SUN WITH RAYS
+2640:FEMALE SIGN
+2642:MALE SIGN
+2660:BLACK SPADE SUIT
+2663:BLACK CLUB SUIT
+2665:BLACK HEART SUIT
+2666:BLACK DIAMOND SUIT
+266A:EIGHTH NOTE
+266B:BEAMED EIGHTH NOTES
+F001:LATIN SMALL LIGATURE FI
+F002:LATIN SMALL LIGATURE FL
+FB01:LATIN SMALL LIGATURE FI
+FB02:LATIN SMALL LIGATURE FL
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/mes-list-expand.pl b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/mes-list-expand.pl
new file mode 100755
index 00000000000..16b37369479
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/MES-Conformance/mes-list-expand.pl
@@ -0,0 +1,45 @@
+#!/usr/bin/perl
+# $Id: mes-list-expand.pl,v 1.1 2009-12-27 16:25:15 Stevan_White Exp $
+#
+# Expand MES ranges, as available in CEN documents, into simple list
+# of character codes.
+
+# Unicode table
+$tblfile = "/usr/local/share/unicode/UnicodeData-Latest.txt";
+# Array size
+$#table = 65535;
+
+# Read in complete Unicode table for the named entities
+open(TABLE, "<$tblfile") || die "Cannot find $tblfile\n";
+while (<TABLE>) {
+ ($code,$name) = split(/[;\n]/, $_, 9999);
+ $table[hex($code)] = $name;
+}
+close(TABLE);
+
+if ($#ARGV >= 0) {
+ open(RANGE, $ARGV[0]);
+} else {
+ open(RANGE, "<stdin");
+}
+while (<RANGE>) {
+ if (/^\#.*/) {
+ next;
+ } else {
+ ($page,$codes) = split(/[\t]/, $_, 9999);
+ chomp $codes;
+ @range = split(/ /, $codes, 9999);
+ for ($i = 0; $i <= $#range; $i++) {
+ if (length($range[$i]) == 2) {
+ $code = 256*hex($page) + hex($range[$i]);
+ printf("%04X:%s\n", $code, $table[$code]);
+ } else {
+ ($lower,$upper) = split(/-/, $range[$i], 9999);
+ for ($j = hex($lower); $j <= hex($upper); $j++) {
+ $code = 256*hex($page) + $j;
+ printf("%04X:%s\n", $code, $table[$code]);
+ }
+ }
+ }
+ }
+}
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/checkGlyphNumbers.py b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/checkGlyphNumbers.py
new file mode 100755
index 00000000000..c845d0d55ec
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/checkGlyphNumbers.py
@@ -0,0 +1,98 @@
+#!/usr/bin/env ../utility/fontforge-interp.sh
+__license__ = """
+This file is part of Gnu FreeFont.
+
+Gnu FreeFont 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 3 of the License, or (at your option) any later
+version.
+
+Gnu FreeFont 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
+Gnu FreeFont. If not, see <http://www.gnu.org/licenses/>.
+"""
+__author__ = "Stevan White"
+__email__ = "stevan.white@googlemail.com"
+__copyright__ = "Copyright 2009, 2010, 2011 Stevan White"
+__date__ = "$Date: 2011-11-27 01:33:15 +0100 (Sun, 27 Nov 2011) $"
+__version__ = "$Revision: 1907 $"
+
+__doc__ = """
+For most unicode ranges, glyph slot numbers should be the same as the
+Unicode value.
+The Private Use ranges are the exception: those characters should have a
+definate non-Unicode number: -1
+
+This script checks that this is the case, and prints out a warning
+whenever it isn't.
+"""
+
+import fontforge
+import sys
+
+problem = False
+
+def inPrivateUseRange( glyph ):
+ e = glyph.encoding
+
+ return ( ( e >= 0xE800 and e <= 0xF8FF )
+ or ( e >= 0xFF000 and e <= 0xFFFFD )
+ or ( e >= 0x100000 and e <= 0x10FFFD ) )
+
+def isSpecialTrueType( glyph ):
+ """ Fontforge treats three control characters as the special
+ TrueType characters recommended by that standard
+ """
+ e = glyph.encoding
+
+ return e == 0 or e == 1 or e == 0xD
+
+from os import path
+def checkGlyphNumbers( fontDir, fontFile ):
+ if isinstance( fontFile, ( list, tuple ) ):
+ print "In directory " + fontDir
+ for fontName in fontFile:
+ checkGlyphNumbers( fontDir, fontName )
+ return
+
+ print "Checking slot numbers in " + fontFile
+ font = fontforge.open( path.join( fontDir, fontFile ) )
+
+ g = font.selection.all()
+ g = font.selection.byGlyphs
+
+ valid = True
+ for glyph in g:
+ if isSpecialTrueType( glyph ):
+ # FIXME really should complain if it DOESNT exist
+ pass
+ elif inPrivateUseRange( glyph ):
+ if glyph.unicode != -1:
+ print "Glyph at slot " + str( glyph.encoding ) \
+ + " is Private Use but has Unicode"
+ problem = True
+ else:
+ if glyph.encoding != glyph.unicode:
+ print "Glyph at slot " + str( glyph.encoding ) \
+ + " has wrong Unicode"
+ problem = True
+
+# --------------------------------------------------------------------------
+args = sys.argv[1:]
+
+if len( args ) < 1 or len( args[0].strip() ) == 0:
+ checkGlyphNumbers( '../../sfd/',
+ ( 'FreeSerif.sfd', 'FreeSerifItalic.sfd',
+ 'FreeSerifBold.sfd', 'FreeSerifBoldItalic.sfd',
+ 'FreeSans.sfd', 'FreeSansOblique.sfd',
+ 'FreeSansBold.sfd', 'FreeSansBoldOblique.sfd',
+ 'FreeMono.sfd', 'FreeMonoOblique.sfd',
+ 'FreeMonoBold.sfd', 'FreeMonoBoldOblique.sfd' ) )
+else:
+ checkGlyphNumbers( args[0], args[1:] )
+
+if problem:
+ sys.exit( 1 )
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/findBackLayers.py b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/findBackLayers.py
new file mode 100755
index 00000000000..29f6588024e
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/findBackLayers.py
@@ -0,0 +1,63 @@
+#!/usr/bin/env ../utility/fontforge-interp.sh
+__license__ = """
+This file is part of Gnu FreeFont.
+
+Gnu FreeFont 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 3 of the License, or (at your option) any later
+version.
+
+Gnu FreeFont 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
+Gnu FreeFont. If not, see <http://www.gnu.org/licenses/>.
+"""
+__author__ = "Stevan White"
+__email__ = "stevan.white@googlemail.com"
+__copyright__ = "Copyright 2009, 2010, Stevan White"
+__date__ = "$Date: 2011-11-03 01:51:05 +0100 (Thu, 03 Nov 2011) $"
+__version__ = "$Revision: 1864 $"
+
+__doc__ = """
+Check for glyphs with back layers.
+
+Haven't see this actually work...
+"""
+
+import fontforge
+from sys import exit
+
+problem = False
+
+def checkBackLayers( fontPath ):
+ print "Checking " + fontPath
+ font = fontforge.open( fontPath )
+
+ g = font.selection.all()
+ g = font.selection.byGlyphs
+
+ nonzero = 0
+
+ for e in g:
+ if e.layer_cnt != 2:
+ print e
+
+checkBackLayers( '../sfd/FreeSerif.sfd' )
+checkBackLayers( '../sfd/FreeSerifItalic.sfd' )
+checkBackLayers( '../sfd/FreeSerifBold.sfd' )
+checkBackLayers( '../sfd/FreeSerifBoldItalic.sfd' )
+checkBackLayers( '../sfd/FreeSans.sfd' )
+checkBackLayers( '../sfd/FreeSansOblique.sfd' )
+checkBackLayers( '../sfd/FreeSansBold.sfd' )
+checkBackLayers( '../sfd/FreeSansBoldOblique.sfd' )
+checkBackLayers( '../sfd/FreeMono.sfd' )
+checkBackLayers( '../sfd/FreeMonoOblique.sfd' )
+checkBackLayers( '../sfd/FreeMonoBold.sfd' )
+checkBackLayers( '../sfd/FreeMonoBoldOblique.sfd' )
+
+if problem:
+ exit( 0 )
+else:
+ exit( 1 )
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/isMonoMono.py b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/isMonoMono.py
new file mode 100755
index 00000000000..0eca9fe31a7
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/isMonoMono.py
@@ -0,0 +1,94 @@
+#!/usr/bin/env ../utility/fontforge-interp.sh
+__license__ = """
+This file is part of Gnu FreeFont.
+
+Gnu FreeFont 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 3 of the License, or (at your option) any later
+version.
+
+Gnu FreeFont 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
+Gnu FreeFont. If not, see <http://www.gnu.org/licenses/>.
+"""
+__author__ = "Stevan White"
+__email__ = "stevan.white@googlemail.com"
+__copyright__ = "Copyright 2009, 2010, Stevan White"
+__date__ = "$Date: 2011-11-03 01:51:05 +0100 (Thu, 03 Nov 2011) $"
+__version__ = "$Revision: 1864 $"
+
+__doc__ = """
+Diagnostic tool that checks that fonts are really monospace.
+
+Allows characters to have 0 width though (note this is controversial)
+
+Also: in order for box-drawing characters to connect properly, it is
+important that the glyphs all lie between 800 and -200EM vertically.
+"""
+
+import fontforge
+import sys
+
+problem = False
+
+def ismonomono( fontfilename ):
+ print "Checking character bounding boxes: " + fontfilename
+ font = fontforge.open( fontfilename )
+
+ g = font.selection.all()
+ g = font.selection.byGlyphs
+
+ nonzero = 0
+
+ for e in g:
+ if nonzero == 0:
+ if e.width > 0:
+ nonzero = e.width
+ else:
+ if e.width > 0 and e.width != nonzero:
+ print ' ' + e.glyphname \
+ + '(' + str( e.encoding ) \
+ + ') width is ' + str( e.width ) \
+ + ' not ' + str( nonzero )
+ problem = True
+
+ ( xmin, ymin, xmax, ymax ) = e.boundingBox()
+ if ymin < -200 or ymax > 800:
+ print ' ' + e.glyphname + ' goes between heights ' \
+ + str( ymin ) + ' and ' + str( ymax )
+ """
+ For FontForge handling of TrueType/OpenType magic characters:
+ 1) check that 0x0000 0x0001, 0x000D exist and have names
+ .notdef, .null, nonmarkingreturn
+ 2) check that 0x0000 and 0x000D are width 600, and
+ 0x0001 has no glyph and is width 0
+
+ Othewise complain that FontForge may not treat it right.
+ """
+ if not font[0x0000] \
+ or font[0x0000].glyphname != '.notdef' \
+ or font[0x0000].width != nonzero:
+ print 'Should be full-width ".notdef" glyph at 0x0000.'
+ if not font[0x0001] \
+ or font[0x0001].glyphname != '.null' \
+ or font[0x0001].width != 0:
+ print 'Should be zero-width ".null" glyph at 0x0001.'
+ if not font[0x000D] \
+ or font[0x000D].glyphname != 'nonmarkingreturn' \
+ or font[0x000D].width != nonzero:
+ print 'Should be full-width "nonmarkingreturn" glyph at 0x000D.'
+
+scriptname = sys.argv[0];
+argc = len( sys.argv )
+
+if argc > 1:
+ for i in range( 1, argc ):
+ ismonomono( sys.argv[i] )
+
+if problem:
+ sys.exit( 1 )
+else:
+ sys.exit( 0 )
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/ranges/Arabic/arabic_test.py b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/ranges/Arabic/arabic_test.py
new file mode 100755
index 00000000000..43ab450d72a
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/ranges/Arabic/arabic_test.py
@@ -0,0 +1,310 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+from __future__ import print_function, unicode_literals
+__license__ = """
+This file is part of GNU FreeFont.
+
+GNU FreeFont 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 3 of the License, or (at your option) any later
+version.
+
+GNU FreeFont 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
+GNU FreeFont. If not, see <http://www.gnu.org/licenses/>.
+"""
+__author__ = "Emmanuel Vallois"
+__email__ = "vallois@polytech.unice.fr"
+__copyright__ = "Copyright 2011 Emmanuel Vallois"
+__date__ = "$Date$"
+__version__ = "$Revision$"
+__doc__ = """
+Writes in the file named by the first argument an HTML page comprising a table
+for testing arabic characters, their behavior and consistency with presentation
+forms.
+
+Runs under normal Python, version 2.7 or above.
+
+Typical usage:
+arabic_test.py "Arabic test page.html"
+"""
+import sys
+from codecs import open
+from string import Template
+from io import StringIO
+from unicodedata import normalize, name, unidata_version, decomposition
+
+_module_missing_msg = """Please run
+ generate_arabic_shaping.py
+to generate
+ arabic_shaping.py"""
+
+try:
+ from arabic_shaping import joining_type
+except:
+ print( _module_missing_msg, file=sys.stderr)
+ sys.exit( 1 )
+
+if len(sys.argv) > 1:
+ outfile = sys.argv[1]
+else:
+ outfile = 'Arabic test page.html'
+
+sys.stdout = open(outfile, 'w', 'utf-8')
+
+def uniname(char):
+ return name(char, new_names.get(char, "&lt;reserved-{:04X}&gt;".format(ord(char))))
+
+def non_positional_name(char):
+ return uniname(char).replace(' INITIAL','').replace(' FINAL','').replace(' MEDIAL','').replace(' ISOLATED','').replace(' FORM','')
+
+arabic_ranges = list(range(0x600, 0x61B + 1))
+arabic_ranges.extend(range(0x61E, 0x6FF + 1))
+arabic_ranges.extend(range(0x750, 0x77F + 1))
+arabic_ranges.extend(range(0x8A0, 0x8B1 + 1))
+arabic_ranges.extend(range(0x8E4, 0x8FF + 1))
+arabic_ranges.extend(range(0xFB50, 0xFBC1 + 1))
+arabic_ranges.extend(range(0xFBD3, 0xFD3F + 1))
+arabic_ranges.extend(range(0xFD50, 0xFD8F + 1))
+arabic_ranges.extend(range(0xFD92, 0xFDC7 + 1))
+arabic_ranges.extend(range(0xFDF0, 0xFDFD + 1))
+arabic_ranges.extend(range(0xFE70, 0xFE74 + 1))
+arabic_ranges.extend(range(0xFE76, 0xFEFC + 1))
+
+unicode61_new_ranges = [0x604, 0x8A0]
+unicode61_new_ranges.extend(range(0x8A2, 0x8AC + 1))
+unicode61_new_ranges.extend(range(0x8E4, 0x8FE + 1))
+unicode62_new_ranges = [0x605, 0x8A1]
+unicode62_new_ranges.extend(range(0x8AD, 0x8B1 + 1))
+unicode62_new_ranges.append(0x8FF)
+new_names = {}
+new_names['\u0604'] = 'ARABIC SIGN SAMVAT'
+new_names['\u0605'] = 'ARABIC NUMBER MARK ABOVE'
+new_names['\u08A0'] = 'ARABIC LETTER BEH WITH SMALL V BELOW'
+new_names['\u08A1'] = 'ARABIC LETTER BEH WITH HAMZA ABOVE'
+new_names['\u08A2'] = 'ARABIC LETTER JEEM WITH TWO DOTS ABOVE'
+new_names['\u08A3'] = 'ARABIC LETTER TAH WITH TWO DOTS ABOVE'
+new_names['\u08A4'] = 'ARABIC LETTER FEH WITH DOT BELOW AND THREE DOTS ABOVE'
+new_names['\u08A5'] = 'ARABIC LETTER QAF WITH DOT BELOW'
+new_names['\u08A6'] = 'ARABIC LETTER LAM WITH DOUBLE BAR'
+new_names['\u08A7'] = 'ARABIC LETTER MEEM WITH THREE DOTS ABOVE'
+new_names['\u08A8'] = 'ARABIC LETTER YEH WITH TWO DOTS BELOW AND HAMZA ABOVE'
+new_names['\u08A9'] = 'ARABIC LETTER YEH WITH TWO DOTS BELOW AND DOT ABOVE'
+new_names['\u08AA'] = 'ARABIC LETTER REH WITH LOOP'
+new_names['\u08AB'] = 'ARABIC LETTER WAW WITH DOT WITHIN'
+new_names['\u08AC'] = 'ARABIC LETTER ROHINGYA YEH'
+new_names['\u08E4'] = 'ARABIC CURLY FATHA'
+new_names['\u08E5'] = 'ARABIC CURLY DAMMA'
+new_names['\u08E6'] = 'ARABIC CURLY KASRA'
+new_names['\u08E7'] = 'ARABIC CURLY FATHATAN'
+new_names['\u08E8'] = 'ARABIC CURLY DAMMATAN'
+new_names['\u08E9'] = 'ARABIC CURLY KASRATAN'
+new_names['\u08EA'] = 'ARABIC TONE ONE DOT ABOVE'
+new_names['\u08EB'] = 'ARABIC TONE TWO DOTS ABOVE'
+new_names['\u08EC'] = 'ARABIC TONE LOOP ABOVE'
+new_names['\u08ED'] = 'ARABIC TONE ONE DOT BELOW'
+new_names['\u08EE'] = 'ARABIC TONE TWO DOTS BELOW'
+new_names['\u08EF'] = 'ARABIC TONE LOOP BELOW'
+new_names['\u08F0'] = 'ARABIC OPEN FATHATAN'
+new_names['\u08F1'] = 'ARABIC OPEN DAMMATAN'
+new_names['\u08F2'] = 'ARABIC OPEN KASRATAN'
+new_names['\u08F3'] = 'ARABIC SMALL HIGH WAW'
+new_names['\u08F4'] = 'ARABIC FATHA WITH RING'
+new_names['\u08F5'] = 'ARABIC FATHA WITH DOT ABOVE'
+new_names['\u08F6'] = 'ARABIC KASRA WITH DOT BELOW'
+new_names['\u08F7'] = 'ARABIC LEFT ARROWHEAD ABOVE'
+new_names['\u08F8'] = 'ARABIC RIGHT ARROWHEAD ABOVE'
+new_names['\u08F9'] = 'ARABIC LEFT ARROWHEAD BELOW'
+new_names['\u08FA'] = 'ARABIC RIGHT ARROWHEAD BELOW'
+new_names['\u08FB'] = 'ARABIC DOUBLE RIGHT ARROWHEAD ABOVE'
+new_names['\u08FC'] = 'ARABIC DOUBLE RIGHT ARROWHEAD ABOVE WITH DOT'
+new_names['\u08FD'] = 'ARABIC RIGHT ARROWHEAD ABOVE WITH DOT'
+new_names['\u08FE'] = 'ARABIC DAMMA WITH DOT'
+new_names['\u08AD'] = 'ARABIC LETTER LOW ALEF'
+new_names['\u08AE'] = 'ARABIC LETTER DAL WITH THREE DOTS BELOW'
+new_names['\u08AF'] = 'ARABIC LETTER SAD WITH THREE DOTS BELOW'
+new_names['\u08B0'] = 'ARABIC LETTER GAF WITH INVERTED STROKE'
+new_names['\u08B1'] = 'ARABIC LETTER STRAIGHT WAW'
+new_names['\u08FF'] = 'ARABIC MARK SIDEWAYS NOON GHUNNA'
+
+# Unicode 6.0 additions not present in Python 2.7
+new_names['\u0620'] = 'ARABIC LETTER KASHMIRI YEH'
+new_names['\u065F'] = 'ARABIC WAVY HAMZA BELOW'
+new_names['\uFBB2'] = 'ARABIC SYMBOL DOT ABOVE'
+new_names['\uFBB3'] = 'ARABIC SYMBOL DOT BELOW'
+new_names['\uFBB4'] = 'ARABIC SYMBOL TWO DOTS ABOVE'
+new_names['\uFBB5'] = 'ARABIC SYMBOL TWO DOTS BELOW'
+new_names['\uFBB6'] = 'ARABIC SYMBOL THREE DOTS ABOVE'
+new_names['\uFBB7'] = 'ARABIC SYMBOL THREE DOTS BELOW'
+new_names['\uFBB8'] = 'ARABIC SYMBOL THREE DOTS POINTING DOWNWARDS ABOVE'
+new_names['\uFBB9'] = 'ARABIC SYMBOL THREE DOTS POINTING DOWNWARDS BELOW'
+new_names['\uFBBA'] = 'ARABIC SYMBOL FOUR DOTS ABOVE'
+new_names['\uFBBB'] = 'ARABIC SYMBOL FOUR DOTS BELOW'
+new_names['\uFBBC'] = 'ARABIC SYMBOL DOUBLE VERTICAL BAR BELOW'
+new_names['\uFBBD'] = 'ARABIC SYMBOL TWO DOTS VERTICALLY ABOVE'
+new_names['\uFBBE'] = 'ARABIC SYMBOL TWO DOTS VERTICALLY BELOW'
+new_names['\uFBBF'] = 'ARABIC SYMBOL RING'
+new_names['\uFBC0'] = 'ARABIC SYMBOL SMALL TAH ABOVE'
+new_names['\uFBC1'] = 'ARABIC SYMBOL SMALL TAH BELOW'
+
+'''Class Equiv stores the correspondence between a code point and its NFKC-normalized equivalent,
+for usual characters it is the character itself, for decomposable characters it is the compatibility
+decompostion.'''
+class Equiv:
+ code_point = 0
+ compat = 0
+ def __init__(self, code_point, compat):
+ self.code_point = code_point
+ self.compat = compat
+ def sort_key(self):
+ return '{:02X}'.format(len(self.compat.lstrip(' '))) + self.compat.lstrip(' ')
+ def __repr__(self):
+ return 'Equiv(0x{:04X}, compat={})'.format(self.code_point, self.compat)
+
+equivs = []
+for cp in arabic_ranges:
+ normalized = normalize('NFKC', unichr(cp))
+ equivs.append(Equiv(cp, normalized))
+# Sort our characters by length of the decomposition and by decomposition itself
+equivs.sort(key=Equiv.sort_key)
+#for e in equivs:
+# print(e, file=sys.stderr)
+
+contextual_form_formats = { 'isolat':'{}', 'final>':'&zwj;{}', 'medial':'&zwj;{}&zwj;', 'initia':'{}&zwj;' }
+contextual_forms = 'isolat', 'final>', 'medial', 'initia'
+current_line = {}
+equiv = None
+char = None
+def store_contextual_form():
+ # print('store_contextual_form', equiv, file=sys.stderr)
+ compat_disp = equiv.compat
+ if equiv.compat[0] == ' ': compat_disp = '\u00A0' + compat_disp[1:]
+ #nonlocal current_line
+ form_cells = StringIO()
+ form = decomposition(char)[1:7]
+ print('<td class="ch">{}{}</td>'.format(contextual_form_formats.get(form, '{}').format(compat_disp),
+ '<small><br/>{}</small>'.format(ord_mul(compat_disp)) if len(compat_disp) >=2 else ''), file=form_cells)
+ print('<td class="ch">{}<small><br />{:04X}</small></td>'.format(char, equiv.code_point), file=form_cells)
+ #if current_line.get(form, 'not found') != 'not found': print('collision', current_line[form].rstrip(), equiv, file=stderr)
+ current_line[form] = form_cells.getvalue()
+ form_cells.close()
+
+table_head = '''
+<table frame="box" rules="rows">
+{}
+<colgroup><col/><col/></colgroup>
+<colgroup id="characterCols"><col span="2"/><col span="2"/><col span="2"/><col span="2"/></colgroup>
+<tr>
+<th rowspan="2">General<br />Unicode</th>
+<th rowspan="2">Name</th>
+<th colspan="8">Contextual Forms</th>
+</tr>
+<tr><th>Isolated</th><th>Isolated (compat)</th><th>Final</th><th>Final (compat)</th>
+<th>Medial</th><th>Medial (compat)</th><th>Initial</th><th>Initial (compat)</th></tr>'''
+
+def print_table():
+ global current_line, char
+ def end_line():
+ for form in contextual_forms:
+ print(current_line.get(form, '<td colspan="2"></td>').rstrip())
+ print('</tr>')
+ current_line.clear()
+ def print_equiv(equiv):
+ # print('print_equiv', equiv, file=sys.stderr)
+ cp = equiv.code_point
+ char = unichr(cp)
+ print('<tr{}><td>{}</td>'.format(' class="nextVersion"' if cp in unicode61_new_ranges else ' class="furtherFuture"' if cp in unicode62_new_ranges else '',
+ 'compat' if len(equiv.compat.replace(' ', '')) > 1 else '{:04X}'.format(ord(equiv.compat.lstrip()[0]))))
+ print('<td>{}</td>'.format(non_positional_name(char)))
+ if equiv.compat.replace(' ', '') == char: # character is not a decomposable character, or is a standalone combining mark (decomposable to space + combining mark)
+ i = 0
+ for form in contextual_forms:
+ print('<td class="ch">{}</td><td></td>'.format(contextual_form_formats[form].format(char)))
+ i += 1
+ if { 'T':'isolat', 'U':'isolat', 'C':'isolat', 'R':'final>', 'D':'' }[joining_type(cp)] == form:
+ break
+ if i < 4:
+ print('<td colspan="{}"></td>'.format((4 - i) * 2))
+ print('</tr>')
+ else:
+ end_line()
+
+ print(table_head.format(caption))
+ last_equiv = None
+ global equiv
+ for equiv in equivs:
+ char = unichr(equiv.code_point)
+
+ if last_equiv:
+ #special case FC03 because there is one set of plain YEH WITH HAMZA ABOVE WITH ALEF MAKSURA and one of 'uighur kirghiz' compatibility ligatures
+ if equiv.compat.lstrip() == last_equiv.compat.lstrip() and equiv.code_point != 0xFC03:
+ store_contextual_form()
+ else:
+ print_equiv(last_equiv)
+ if equiv.compat != char:
+ store_contextual_form()
+ last_equiv = equiv
+ print_equiv(last_equiv)
+ print('</table>')
+
+def ord_mul(s):
+ code_points = ''
+ for c in s:
+ code_points += '{:X} '.format(ord(c))
+ return code_points[:-1]
+
+html_heading = Template('''<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
+<title>$title</title>
+<style type="text/css">
+.captionSquare { float: left; width: 2em; height: 1em; margin-right: 0.5em }
+caption { width: 60em; text-align: left }
+table { text-align: center; font-family: FreeSerif }
+td { padding: 10px }
+small { font-size: small }
+#characterCols { border-left: medium double black; border-right: medium double black }
+.nextVersion { background-color: #CCFF99 }
+.furtherFuture { background-color: #FFFFCC }
+.name { width: 10em }
+.ch { vertical-align: baseline; line-height: 75%; font-size: 250%; width: 1em; direction: rtl }
+.empty { background:#EEEEEE }
+</style>
+</head>
+<body>
+<h1>$title</h1>
+<p>Choose the font to test: <select onchange="changefont(this)"><option>FreeSerif</option><option>FreeSerif, bold</option><option>FreeMono</option></select></p>
+<script type="text/javascript">//<![CDATA[
+function changefont(select) {
+ var font = select.options.item(select.selectedIndex).value.split(', ');
+ var bold = font.length > 1 ? font[1] == 'bold' : false;
+ font = font[0];
+ var elementsToStyle = document.getElementsByClassName("ch");
+
+ for (i = 0; i < elementsToStyle.length; i++) {
+ elementsToStyle[i].style.fontFamily = font;
+ elementsToStyle[i].style.fontWeight = bold ? 'bold' : 'normal';
+ }
+}//]]></script>''')
+
+caption='''<caption><span class="captionSquare nextVersion">&nbsp;</span> New characters in Unicode 6.1, which will be published in February 2012.
+These can be relied upon and will not change or be removed. See <a href="http://www.unicode.org/Public/6.1.0/charts/blocks//U08A0.pdf">the
+Unicode chart for the new block <b>Arabic Extended-A</b></a>, and for more about these characters, see <a href="http://std.dkuug.dk/JTC1/SC2/WG2/docs/n3734.pdf">N3734</a>
+for U+0604, <a href="http://std.dkuug.dk/JTC1/SC2/WG2/docs/n3882.pdf">the complete
+proposal</a> for most characters, <a href="http://std.dkuug.dk/JTC1/SC2/WG2/docs/n3791.pdf">N3791</a> for U+08F0-U+08F3.<br/>
+<span class="captionSquare furtherFuture">&nbsp;</span> Future new characters in Unicode 6.2. These can will probably be standardized this way,
+but could in principle still change or be removed. See <a href="http://std.dkuug.dk/JTC1/SC2/WG2/docs/n3990.pdf">N3990, in 4.2 Orthography</a> for U+0605,
+<a href="http://std.dkuug.dk/JTC1/SC2/WG2/docs/n4072.pdf">N4072 proposal</a> about U+08AD-U+08B1, and
+<a href="http://std.dkuug.dk/JTC1/SC2/WG2/docs/n3989.pdf">N3989 proposal</a> about U+08FF.</caption>'''
+
+def print_arabic_test_page():
+ print(html_heading.substitute(title='Test for Unicode Arabic range'))
+ print_table()
+ print('</body>')
+ print('</html>')
+
+print_arabic_test_page()
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/ranges/Arabic/generate_arabic_shaping.py b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/ranges/Arabic/generate_arabic_shaping.py
new file mode 100755
index 00000000000..49a32065004
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/ranges/Arabic/generate_arabic_shaping.py
@@ -0,0 +1,81 @@
+#!/usr/bin/python
+from __future__ import print_function
+__license__ = """
+This file is part of Gnu FreeFont.
+
+Gnu FreeFont 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 3 of the License, or (at your option) any later
+version.
+
+Gnu FreeFont 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
+Gnu FreeFont. If not, see <http://www.gnu.org/licenses/>.
+"""
+__author__ = "Emmanuel Vallois"
+__email__ = "vallois@polytech.unice.fr"
+__copyright__ = "Copyright 2011 Emmanuel Vallois"
+__date__ = "$Date$"
+__version__ = "$Revision$"
+__doc__ = """
+Generates test script
+ arab_shaping.py
+from a file
+ ArabicShaping.txt
+which may be obtained from
+ http://www.unicode.org/Public/UNIDATA/ArabicShaping.txt
+"""
+
+'''Convert Unicode ArabicShaping.txt to a Python module containing its data.'''
+
+import sys
+
+sys.stdout = open('arabic_shaping.py', 'w')
+
+print('''#!/usr/bin/python
+__license__ = """''' + __license__ + '''
+"""
+__doc__ = """
+Module containing UCD ArabicShaping.txt data."""
+
+from unicodedata import name
+from collections import OrderedDict
+
+class ArabicShaping:
+ def __init__(self, code_point, short_name, joining_type, joining_group):
+ self.code_point = code_point
+ self.short_name = short_name
+ self.joining_type = joining_type
+ self.joining_group = joining_group
+ def __repr__(self):
+ return 'ArabicShaping({:X}, {}, {}, {})'.format(self.code_point, self.short_name, self.joining_type, self.joining_group)
+
+arabic_shapings = OrderedDict()''')
+with open('ArabicShaping.txt') as f:
+ for line in f:
+ if not line.strip() or line[0] == '#': continue
+ line = line[:-1] #removes the \n at the end of the line
+ fields = line.split('; ')
+ print("arabic_shapings[0x{0[0]}] = ArabicShaping(0x{0[0]}, '{0[1]}', '{0[2]}', '{0[3]}')".format(fields))
+ if fields[0] == '08A0':
+ print('''arabic_shapings[0x08A1] = ArabicShaping(0x8A1, 'BEH WITH HAMZA ABOVE','D','BEH')''')
+print('''arabic_shapings[0x08AE] = ArabicShaping(0x8AE, 'DAL WITH THREE DOTS BELOW', 'R', 'DAL')
+arabic_shapings[0x08AF] = ArabicShaping(0x8AF, 'SAD WITH THREE DOTS BELOW', 'D', 'SAD')
+arabic_shapings[0x08B0] = ArabicShaping(0x8B0, 'GAF WITH INVERTED STROKE', 'D', 'GAF')
+arabic_shapings[0x08B1] = ArabicShaping(0x8B1, 'STRAIGHT WAW', 'R', 'WAW')''')
+
+print('''
+def short_name(cp):
+ shaping = arabic_shapings.get(cp)
+ return shaping and shaping.short_name or name(unichr(cp))
+
+def joining_type(cp):
+ shaping = arabic_shapings.get(cp)
+ return shaping and shaping.joining_type or 'U'
+
+def joining_group(cp):
+ shaping = arabic_shapings.get(cp)
+ return shaping and shaping.joining_group or 'No_Joining_Group\'''')
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/ranges/Arabic/unicode_joining.py b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/ranges/Arabic/unicode_joining.py
new file mode 100755
index 00000000000..1d734c15d56
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/ranges/Arabic/unicode_joining.py
@@ -0,0 +1,207 @@
+#!/usr/bin/python
+from __future__ import print_function, unicode_literals
+__license__ = """
+This file is part of GNU FreeFont.
+
+GNU FreeFont 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 3 of the License, or (at your option) any later
+version.
+
+GNU FreeFont 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
+GNU FreeFont. If not, see <http://www.gnu.org/licenses/>.
+"""
+__author__ = "Emmanuel Vallois"
+__email__ = "vallois@polytech.unice.fr"
+__copyright__ = "Copyright 2011 Emmanuel Vallois"
+__date__ = "$Date$"
+__version__ = "$Revision$"
+__doc__ = """
+Writes in the file named by the first argument an HTML page comprising a table
+for testing joining cursive script characters.
+
+Runs under normal Python, version 2.7 or above.
+
+Typical usage:
+unicode_joining.py "Unicode joining test page.html"
+"""
+import sys
+from codecs import open
+from string import Template
+from collections import OrderedDict
+from itertools import chain
+
+_module_missing_msg = """Please run
+ generate_arabic_shaping.py
+to generate
+ arabic_shaping.py"""
+
+try:
+ from arabic_shaping import arabic_shapings, joining_type
+except:
+ print( _module_missing_msg, file=sys.stderr)
+ sys.exit( 1 )
+
+if len(sys.argv) > 1:
+ outfile = sys.argv[1]
+else:
+ outfile = 'Unicode joining test page.html'
+
+sys.stdout = open(outfile, 'w', 'utf-8')
+
+class OrderedDefaultDict(OrderedDict):
+ def __missing__(self, key):
+ self[key] = rv = []
+ return rv
+ def move_to_end(self, key):
+ tmp = self[key]
+ del self[key]
+ self[key] = tmp
+
+arabic_ranges = tuple(chain(range(0x600, 0x6FF +1), range(0x750, 0x77F +1), range(0x8A0, 0x8FF)))
+unicode61_new_ranges = [0x604, 0x8A0]
+unicode61_new_ranges.extend(range(0x8A2, 0x8AC + 1))
+unicode61_new_ranges.extend(range(0x8E4, 0x8FE + 1))
+unicode62_new_ranges = [0x605, 0x8A1]
+unicode62_new_ranges.extend(range(0x8AD, 0x8B1 + 1))
+unicode62_new_ranges.append(0x8FF)
+
+shapings = filter(lambda s: s.joining_type in 'RD' and (s.joining_group != 'No_Joining_Group' or s.code_point not in arabic_ranges), arabic_shapings.values())
+jg_shapings_arabic = OrderedDefaultDict()
+jg_shapings_other_scripts = OrderedDefaultDict()
+for s in shapings:
+ if s.code_point in arabic_ranges:
+ jg_shapings_arabic[s.joining_group].append(s)
+ else:
+ jg_shapings_other_scripts[s.joining_group].append(s)
+ if s.code_point == 0x62B:
+ jg_shapings_arabic.move_to_end('TEH MARBUTA')
+ jg_shapings_arabic['TEH MARBUTA GOAL']
+ elif s.code_point == 0x642:
+ jg_shapings_arabic.move_to_end('GAF')
+ jg_shapings_arabic['SWASH KAF']
+ elif s.code_point == 0x646:
+ jg_shapings_arabic['NYA']
+ elif s.code_point == 0x647:
+ jg_shapings_arabic['KNOTTED HEH']
+ jg_shapings_arabic['HEH GOAL']
+ elif s.code_point == 0x64A:
+ jg_shapings_arabic.move_to_end('FARSI YEH')
+ elif s.code_point in chain(range(0x627, 0x63A + 1), range(0x641, 0x64A + 1)):
+ jg_shapings_arabic.move_to_end(s.joining_group)
+
+#for jg, ls in jg_shapings_arabic.items():
+# for s in ls:
+# print(jg, ls, file=sys.stderr)
+
+table_head = '''
+<table frame="box" rules="rows">
+{}
+<colgroup><col/><col/><col/></colgroup>
+<colgroup id="characterCols"><col/><col/><col/><col/></colgroup>
+<colgroup><col/></colgroup>'''
+table_internal_title = '''<tr><td colspan="8"><h2>{}</h2></td></tr>
+<tr>
+<th rowspan="2">Joining Group</th>
+<th rowspan="2">Code Point</th>
+<th rowspan="2">Short Name</th>
+<th colspan="5">Contextual Forms</th>
+</tr>
+<tr><th>Isolated</th><th>Final</th><th>Medial</th><th>Initial</th><th>Joined</th></tr>'''
+
+def print_table():
+ contextual_form_formats = { 'isolat':'{}', 'final>':'&zwj;{}', 'medial':'&zwj;{}&zwj;', 'initia':'{}&zwj;' }
+ contextual_forms = 'isolat', 'final>', 'medial', 'initia'
+ def print_shaping(shaping, rowspan):
+ # print('print_shaping', shaping, file=sys.stderr)
+ cp = shaping.code_point
+ char = unichr(cp)
+ print('<tr{}>'.format(' class="nextVersion"' if cp in unicode61_new_ranges else ' class="furtherFuture"' if cp in unicode62_new_ranges else ''))
+ if rowspan: print('<td rowspan="{}">{}</td>'.format(rowspan, shaping.joining_group))
+ print('<td>{:04X}</td>'.format(cp))
+ print('<td>{}</td>'.format(shaping.short_name))
+ i = 0
+ for form in contextual_forms:
+ print('<td class="ch">{}</td>'.format(contextual_form_formats[form].format(char)))
+ i += 1
+ if { 'R':'final>', 'D':'' }[joining_type(cp)] == form:
+ break
+ if i < 4:
+ print('<td colspan="{}"></td>'.format(4 - i))
+ print('<td class="ch">{}</td>'.format('\u0640' * (4 - i) + char * (i - 1) + ' ' + char))
+ print('</tr>')
+
+ print(table_head.format(caption))
+ print(table_internal_title.format('Arabic'))
+ for shaping_list in jg_shapings_arabic.values():
+ rowspan = len(shaping_list)
+ for shaping in shaping_list:
+ print_shaping(shaping, rowspan)
+ rowspan = None
+
+ print(table_internal_title.format('Syriac, Nko and Mandaic'))
+ for shaping_list in jg_shapings_other_scripts.values():
+ rowspan = len(shaping_list)
+ for shaping in shaping_list:
+ print_shaping(shaping, rowspan)
+ rowspan = None
+
+ print('</table>')
+
+html_heading = Template('''<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
+<title>$title</title>
+<style type="text/css">
+.captionSquare { float: left; width: 2em; height: 1em; margin-right: 0.5em }
+caption { width: 60em; text-align: left }
+table { text-align: center; font-family: FreeSerif, FreeSans }
+td { padding: 10px }
+small { font-size: small }
+#characterCols { border-left: medium double black; border-right: medium double black }
+.nextVersion { background-color: #CCFF99 }
+.furtherFuture { background-color: #FFFFCC }
+.name { width: 10em }
+.ch { vertical-align: baseline; line-height: 75%; font-size: 250%; direction: rtl }
+.empty { background:#EEEEEE }
+</style>
+</head>
+<body>
+<h1>$title</h1>
+<p>Choose the font to test: <select onchange="changefont(this)"><option>FreeSerif</option><option>FreeSerif, bold</option><option>FreeSans</option><option>FreeMono</option></select></p>
+<script type="text/javascript">//<![CDATA[
+function changefont(select) {
+ var font = select.options.item(select.selectedIndex).value.split(', ');
+ var bold = font.length > 1 ? font[1] == 'bold' : false;
+ font = font[0];
+ var elementsToStyle = document.getElementsByClassName("ch");
+
+ for (i = 0; i < elementsToStyle.length; i++) {
+ elementsToStyle[i].style.fontFamily = font;
+ elementsToStyle[i].style.fontWeight = bold ? 'bold' : 'normal';
+ }
+}//]]></script>''')
+
+caption='''<caption><span class="captionSquare nextVersion">&nbsp;</span> New characters in Unicode 6.1, which will be published in February 2012.
+These can be relied upon and will not change or be removed. See <a href="http://www.unicode.org/Public/6.1.0/charts/blocks//U08A0.pdf">the
+Unicode chart for the new block <b>Arabic Extended-A</b></a>, and for more about these characters, see <a href="http://std.dkuug.dk/JTC1/SC2/WG2/docs/n3734.pdf">N3734</a>
+for U+0604, <a href="http://std.dkuug.dk/JTC1/SC2/WG2/docs/n3882.pdf">the complete
+proposal</a> for most characters, <a href="http://std.dkuug.dk/JTC1/SC2/WG2/docs/n3791.pdf">N3791</a> for U+08F0-U+08F3.<br/>
+<span class="captionSquare furtherFuture">&nbsp;</span> Future new characters in Unicode 6.2. These can will probably be standardized this way,
+but could in principle still change or be removed. See <a href="http://std.dkuug.dk/JTC1/SC2/WG2/docs/n3990.pdf">N3990, in 4.2 Orthography</a> for U+0605,
+<a href="http://std.dkuug.dk/JTC1/SC2/WG2/docs/n4072.pdf">N4072 proposal</a> about U+08AD-U+08B1, and
+<a href="http://std.dkuug.dk/JTC1/SC2/WG2/docs/n3989.pdf">N3989 proposal</a> about U+08FF.</caption>'''
+
+def print_arabic_test_page():
+ print(html_heading.substitute(title='Test of Joining Characters From Unicode Cursive Scripts'))
+
+ print_table()
+ print('</body>')
+ print('</html>')
+
+print_arabic_test_page()
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/validate.py b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/validate.py
new file mode 100755
index 00000000000..da9ce966198
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/test/validate.py
@@ -0,0 +1,146 @@
+#!/usr/bin/env ../utility/fontforge-interp.sh
+__license__ = """
+This file is part of Gnu FreeFont.
+
+Gnu FreeFont 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 3 of the License, or (at your option) any later
+version.
+
+Gnu FreeFont 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
+Gnu FreeFont. If not, see <http://www.gnu.org/licenses/>.
+"""
+__author__ = "Stevan White"
+__email__ = "stevan.white@googlemail.com"
+__copyright__ = "Copyright 2009, 2010, Stevan White"
+__date__ = "$Date: 2010-09-14 13:02:02 $"
+__version__ = "$Revision: 1.5 $"
+
+__doc__ = """
+Runs the FontForge validate function on all the font faces.
+Prints report on standard output.
+Returns 1 if problems found 0 otherwise.
+"""
+
+import fontforge
+import sys
+
+problem = False
+
+
+""" Haven't really figured out why TT limit warniings are turndd on,
+ or where the limits are set.
+"""
+def countPointsInLayer( layer ):
+ problem = True
+ p = 0
+ for c in layer:
+ p += len( c )
+ return p
+
+def printProblemLine( e, msg ):
+ print "\t" + e.glyphname + msg
+
+def dealWithValidationState( state, e ):
+ if state & 0x2:
+ printProblemLine( e, " has open contour" )
+ if state & 0x4:
+ printProblemLine( e, " intersects itself" )
+ if state & 0x8:
+ printProblemLine( e, " is drawn in wrong direction" )
+ if state & 0x10:
+ printProblemLine( e, " has a flipped reference" )
+ if state & 0x20:
+ printProblemLine( e, " is missing extrema" )
+ if state & 0x40:
+ printProblemLine( e, " is missing a reference in a table" )
+ if state & 0x80:
+ printProblemLine( e, " has more than 1500 pts" )
+ if state & 0x100:
+ printProblemLine( e, " has more than 96 hints" )
+ if state & 0x200:
+ printProblemLine( e, " has invalid PS name" )
+ """
+ # Not meaningfully set for non-TrueType fonts )
+ if state & 0x400:
+ printProblemLine( e, " has more points than allowed by TT: " + str( countPointsInLayer( e.layers[1] ) ) )
+ if state & 0x800:
+ printProblemLine( e, " has more paths than allowed by TT" )
+ if state & 0x1000:
+ printProblemLine( e, " has more points in composite than allowed by TT" )
+ if state & 0x2000:
+ printProblemLine( e, " has more paths in composite than allowed by TT" )
+ if state & 0x4000:
+ printProblemLine( e, " has instruction longer than allowed" )
+ if state & 0x8000:
+ printProblemLine( e, " has more references than allowed" )
+ if state & 0x10000:
+ printProblemLine( e, " has references deeper than allowed" )
+ if state & 0x20000:
+ print e.glyphname + " fpgm or prep tables longer than allowed" )
+ """
+
+def validate( dir, fontFile ):
+ try:
+ font = fontforge.open( dir + fontFile )
+ print "Validating " + fontFile
+
+ g = font.selection.all()
+ g = font.selection.byGlyphs
+
+ valid = True
+ for e in g:
+ state = e.validate()
+ if state != 0:
+ dealWithValidationState( state, e )
+ font.validate
+ except Exception, e:
+ problem = True
+ print >> sys.stderr, str( e )
+
+validate( '../sfd/', 'FreeSerif.sfd' )
+validate( '../sfd/', 'FreeSerifItalic.sfd' )
+validate( '../sfd/', 'FreeSerifBold.sfd' )
+validate( '../sfd/', 'FreeSerifBoldItalic.sfd' )
+validate( '../sfd/', 'FreeSans.sfd' )
+validate( '../sfd/', 'FreeSansOblique.sfd' )
+validate( '../sfd/', 'FreeSansBold.sfd' )
+validate( '../sfd/', 'FreeSansBoldOblique.sfd' )
+validate( '../sfd/', 'FreeMono.sfd' )
+validate( '../sfd/', 'FreeMonoOblique.sfd' )
+validate( '../sfd/', 'FreeMonoBold.sfd' )
+validate( '../sfd/', 'FreeMonoBoldOblique.sfd' )
+
+validate( '../sfd/', 'FreeSerif.ttf' )
+validate( '../sfd/', 'FreeSerifItalic.ttf' )
+validate( '../sfd/', 'FreeSerifBold.ttf' )
+validate( '../sfd/', 'FreeSerifBoldItalic.ttf' )
+validate( '../sfd/', 'FreeSans.ttf' )
+validate( '../sfd/', 'FreeSansOblique.ttf' )
+validate( '../sfd/', 'FreeSansBold.ttf' )
+validate( '../sfd/', 'FreeSansBoldOblique.ttf' )
+validate( '../sfd/', 'FreeMono.ttf' )
+validate( '../sfd/', 'FreeMonoOblique.ttf' )
+validate( '../sfd/', 'FreeMonoBold.ttf' )
+validate( '../sfd/', 'FreeMonoBoldOblique.ttf' )
+
+validate( '../sfd/', 'FreeSerif.otf' )
+validate( '../sfd/', 'FreeSerifItalic.otf' )
+validate( '../sfd/', 'FreeSerifBold.otf' )
+validate( '../sfd/', 'FreeSerifBoldItalic.otf' )
+validate( '../sfd/', 'FreeSans.otf' )
+validate( '../sfd/', 'FreeSansOblique.otf' )
+validate( '../sfd/', 'FreeSansBold.otf' )
+validate( '../sfd/', 'FreeSansBoldOblique.otf' )
+validate( '../sfd/', 'FreeMono.otf' )
+validate( '../sfd/', 'FreeMonoOblique.otf' )
+validate( '../sfd/', 'FreeMonoBold.otf' )
+validate( '../sfd/', 'FreeMonoBoldOblique.otf' )
+
+
+if problem:
+ sys.exit( 1 )
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/utility/KerningNumerals.pl b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/utility/KerningNumerals.pl
new file mode 100755
index 00000000000..a537e25a07e
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/utility/KerningNumerals.pl
@@ -0,0 +1,117 @@
+#!/usr/bin/perl
+=pod
+
+=head1 KerningNumerals.pl
+
+Move kerning information from ASCII numerals (U+0030...) to characters in
+the Adobe corporate use area (U+F6xx).
+
+By: Primož Peterlin, 2003
+
+$Id: KerningNumerals.pl,v 1.2 2003-05-15 12:04:41 peterlin Exp $
+
+=cut
+
+sub numerically { $a <=> $b; }
+
+if ($#ARGV != 0) {
+ print $#ARGV;
+ die "Usage: $0 file.sfd\n";
+}
+
+open(INFILE, $ARGV[0]) || die "Failed to open file: $ARGV[0]\n";
+
+while (<INFILE>) {
+ if (/^Kerns:/) {
+ # Old-style kerning information
+ chomp;
+ # Cut off the first seven characters ("Kerns: ")
+ substr($_,0,7) = "";
+ @values = split;
+ # Construct the hash $kern{$code}
+ for ($i = 0; $i <= $#values; $i += 2) {
+ $code = $values[$i];
+ # Recode ASCII numerals to Adobe corporate use values
+ if ($code == 48) {
+ $code = 63033;
+ } elsif ($code == 49) {
+ $code = 63196;
+ } elsif ($code == 50) {
+ $code = 63034;
+ } elsif ($code == 51) {
+ $code = 63035;
+ } elsif ($code == 52) {
+ $code = 63036;
+ } elsif ($code == 53) {
+ $code = 63037;
+ } elsif ($code == 54) {
+ $code = 63038;
+ } elsif ($code == 55) {
+ $code = 63039;
+ } elsif ($code == 56) {
+ $code = 63040;
+ } elsif ($code == 57) {
+ $code = 63041;
+ }
+ $kern{$code} = $values[$i+1];
+ }
+ print "Kerns:";
+ foreach $code (sort numerically keys(%kern)) {
+ print " ",$code," ",$kern{$code};
+ }
+ print "\n";
+ # Clean-up
+ foreach $code (keys(%kern)) {
+ delete $kern{$code};
+ }
+ } elsif (/^KernsSLIF:/) {
+ # New-style kerning information
+ chomp;
+ # Cut off the first eleven characters ("KernsSLIF: ")
+ substr($_,0,11) = "";
+ @values = split;
+ # Construct the hash $kern{$code}
+ for ($i = 0; $i <= $#values; $i += 4) {
+ $code = $values[$i];
+ # Recode ASCII numerals to Adobe corporate use values
+ if ($code == 48) {
+ $code = 63033;
+ } elsif ($code == 49) {
+ $code = 63196;
+ } elsif ($code == 50) {
+ $code = 63034;
+ } elsif ($code == 51) {
+ $code = 63035;
+ } elsif ($code == 52) {
+ $code = 63036;
+ } elsif ($code == 53) {
+ $code = 63037;
+ } elsif ($code == 54) {
+ $code = 63038;
+ } elsif ($code == 55) {
+ $code = 63039;
+ } elsif ($code == 56) {
+ $code = 63040;
+ } elsif ($code == 57) {
+ $code = 63041;
+ }
+ $kern{$code} = $values[$i+1];
+ $unx{$code} = $values[$i+2];
+ $uny{$code} = $values[$i+3];
+ }
+ print "KernsSLIF:";
+ foreach $code (sort numerically keys(%kern)) {
+ print " ",$code," ",$kern{$code}," ",$unx{$code}," ",$uny{$code};
+ }
+ print "\n";
+ # Clean-up
+ foreach $code (keys(%kern)) {
+ delete $kern{$code};
+ }
+ } else {
+ # All other lines
+ print;
+ }
+}
+
+close(INFILE);
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/utility/fontforge-interp.sh b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/utility/fontforge-interp.sh
new file mode 100755
index 00000000000..b19dd8eb4ca
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/utility/fontforge-interp.sh
@@ -0,0 +1,9 @@
+# fontforge as a script interpreter.
+#
+# Exists because
+# * It is desirable to launch fontforge scripts as executables.
+# * The usual #! interpreter-calling mechanism needs an explicit path,
+# but custom-installed fontforge should be in a non-distro location.
+# * Linux /usr/bin/env won't allow arguments such as -script.
+
+/usr/bin/fontforge -script $@
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/utility/freefont-ttf.spec b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/utility/freefont-ttf.spec
new file mode 100644
index 00000000000..0c81d1ba008
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/utility/freefont-ttf.spec
@@ -0,0 +1,83 @@
+# This is an RPM 'spec' file, for use with the Redhat Package Manager
+# to make packages for that distribution.
+
+%define fontdir %{_datadir}/fonts/freefont
+
+Name: freefont-ttf
+Version: 20051206
+Release: 1.pingo.1
+Summary: FreeFonts
+Group: User Interface/X
+License: GPL
+URL: http://www.nongnu.org/freefont/
+Source: freefont-ttf-%{version}.tar
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
+BuildArch: noarch
+Requires: fontconfig
+
+%description
+Freefonts aim to provide a set of free high-quality outline (OpenType,
+Truetype, Type 0) UCS fonts, under GNU GPL license.
+
+All the fonts conform to MES-1 (Minimum European Subset) of
+Unicode/ISO 10646.
+
+%prep
+%setup
+
+%build
+
+%install
+/bin/rm -rf $RPM_BUILD_ROOT
+
+#fonts
+install -d -m 0755 $RPM_BUILD_ROOT%{fontdir}
+install -m 0644 *.ttf $RPM_BUILD_ROOT%{fontdir}
+cd ..
+
+# "touch" all files we've got flagged as %ghost but which are not
+# present in the RPM_BUILD_ROOT when RPM looks for files
+/bin/touch $RPM_BUILD_ROOT%{fontdir}/fonts.cache-1
+
+
+%clean
+/bin/rm -rf $RPM_BUILD_ROOT
+
+
+%post
+if [ -x %{_bindir}/fc-cache ] ; then
+ %{_bindir}/fc-cache %{_datadir}/fonts ;
+fi
+
+%postun
+if [ "$1" = "0" ]; then
+ if [ -x %{_bindir}/fc-cache ] ; then
+ %{_bindir}/fc-cache %{_datadir}/fonts ;
+ fi
+fi
+
+
+%files
+%defattr(0644,root,root,0755)
+%doc README
+%doc AUTHORS
+%doc CREDITS
+%doc COPYING
+%doc ChangeLog
+%dir %{fontdir}
+%{fontdir}/*.ttf
+%ghost %{fontdir}/fonts.cache-1
+
+%changelog
+* Fri Dec 9 2005 Primoz Peterlin <primoz.peterlin@biofiz.mf.uni-lj.si> 20051206-1.pingo.1
+- renamed to freefont-ttf
+
+* Tue Dec 06 2005 Rok Papez <rok.papez@lugos.si> 20051206-1.pingo.1
+- Updated fonts to version 2005-12-06
+
+* Fri Sep 09 2005 Rok Papez <rok.papez@lugos.si> 20050407-1.pingo.1
+- Updated fonts to version 2005-04-07
+- Rebuild for Fedora Core 4 / Pingo 4.0
+
+* Sun Oct 06 2003 Rok Papez <rok.papez@lugos.si> 1.0-1
+- Created the first release
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/utility/hex_range.py b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/utility/hex_range.py
new file mode 100755
index 00000000000..7ef50f7b805
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/utility/hex_range.py
@@ -0,0 +1,67 @@
+#!/usr/bin/env python
+__license__ = """
+This file is part of Gnu FreeFont.
+
+Gnu FreeFont 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 3 of the License, or (at your option) any later
+version.
+
+Gnu FreeFont 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
+Gnu FreeFont. If not, see <http://www.gnu.org/licenses/>.
+"""
+__author__ = "Stevan White"
+__email__ = "stevan.white@googlemail.com"
+__copyright__ = "Copyright 2009, 2010, 2011 Stevan White"
+__date__ = "$Date: 2011-09-13 13:05:59 +0200 (Tue, 13 Sep 2011) $"
+__version__ = "$Revision: 1704 $"
+
+__doc__ = """Sends to standard output a range of hex values formatted
+ for e.g. HTML.
+ Takes one or two numerical arguments. With one argument the output
+ is just the formatted value of the argument.
+"""
+
+import sys
+
+# Python Unicode prefix
+prefix = '\\u'
+postfix = ''
+# General Unicode prefix
+prefix = 'U+'
+postfix = ''
+# HTML Entity
+prefix = '&#x'
+postfix = ';'
+
+def explain_error_and_quit( e ):
+ if e:
+ print 'Error: ', e
+ print "Usage:"
+ print " hex_range num1 [num2]"
+ exit( 1 )
+
+def print_formatted_hex_value( n ):
+ print '%s%0.4x%s' %( prefix, n, postfix )
+
+if len( sys.argv ) == 3:
+ try:
+ a = int( sys.argv[1], 0 )
+ b = int( sys.argv[2], 0 )
+ for i in xrange( a, b + 1 ):
+ print_formatted_hex_value( i )
+ except ValueError, e:
+ explain_error_and_quit( e )
+elif len( sys.argv ) == 2:
+ try:
+ a = int( sys.argv[1], 0 )
+ print_formatted_hex_value( a )
+ except ValueError, e:
+ explain_error_and_quit( e )
+else:
+ explain_error_and_quit()
+
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/utility/metafont/bulk_eps_import.py b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/utility/metafont/bulk_eps_import.py
new file mode 100755
index 00000000000..6d71e571fed
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/utility/metafont/bulk_eps_import.py
@@ -0,0 +1,72 @@
+#!/usr/bin/fontforge -script
+"""
+For use on Metafont fonts.
+To import glyphs each in individual .eps files into an empty font file.
+
+First, process with 'mpost'. Procedure is:
+
+1) Make sure you have an mfplain mem file for mpost. It may come with
+ the distro, but it is possible also to generate it.
+
+ I found an mfplain.mp file somewhere. Use it to make an mfplain.mem.
+ mpost -ini '\input mfplain.mp; dump'
+
+2) Generate .eps files from a .mf file such as skt10.mf
+ mpost '&./mfplain \mag=1; truecorners:=0; filenametemplate "%j-%4c.eps"; input skt10.mf'
+
+ A bunch of eps files should result, with names like
+ skt10-012.eps
+3) Use FontForge to make an empty font file, with a name like SKT.sfd
+4) Run this script on the eps files like so
+ freefont/tools/metafont/bulk_eps_import.py SKT.sfd skt10
+
+Then clean up clean up clean up.
+"""
+__author__ = "Stevan White"
+__email__ = "stevan.white@googlemail.com"
+__copyright__ = "Copyright 2008, 2011, Stevan White"
+__date__ = "$Date: 2011-09-12 14:25:06 +0200 (Mon, 12 Sep 2011) $"
+__version__ = "$Revision: 1694 $"
+
+import fontforge
+import sys, os
+import fnmatch, re
+
+problem = False
+
+def import_glyph( font, name, chrnum ):
+ print "importing file: " + name + " to slot " + str( chrnum )
+
+ g = font.createChar( chrnum )
+
+ print "importing outlines " + name
+ g.importOutlines( name )
+ # The glyphs produced by MetaPost usually have a grid, whose
+ # right side seems to correspond to the proper right side bearing
+ xmax = g.layers[1].boundingBox()[2]
+ g.right_side_bearing = max( xmax, 0 )
+
+scriptname = sys.argv[0];
+argc = len( sys.argv )
+
+file_pat = r'([A-Za-z0-9]*)-(\d{3,4}).eps'
+file_pat = sys.argv[2] + r'-(\d{3,4}).eps'
+re_file_pat = re.compile( file_pat )
+
+if argc > 2:
+ fontfilename = sys.argv[1]
+ font = fontforge.open( fontfilename )
+ print "bulk importing to font file: " + fontfilename
+ chrnum = 0
+ directories = os.listdir('.')
+ directories.sort()
+
+ for file in directories:
+ matches = re_file_pat.match( file )
+ if matches:
+ chrnum = int( matches.group(1) )
+ import_glyph( font, file, chrnum )
+ font.save()
+ font.close()
+
+sys.exit( int( problem ) )
diff --git a/Master/texmf-dist/doc/fonts/gnu-freefont/tools/utility/special-purpose/makeBraille.py b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/utility/special-purpose/makeBraille.py
new file mode 100644
index 00000000000..645296d4b14
--- /dev/null
+++ b/Master/texmf-dist/doc/fonts/gnu-freefont/tools/utility/special-purpose/makeBraille.py
@@ -0,0 +1,80 @@
+__license__ = """
+This file is part of Gnu FreeFont.
+
+Gnu FreeFont 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 3 of the License, or (at your option) any later
+version.
+
+Gnu FreeFont 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
+Gnu FreeFont. If not, see <http://www.gnu.org/licenses/>.
+"""
+__author__ = "Stevan White"
+__email__ = "stevan.white@googlemail.com"
+__copyright__ = "Copyright 2010, Stevan White"
+__date__ = "$Date: 2010/09/18 08:50:42 $"
+__version__ = "$Revision: 1.6 $"
+
+import fontforge
+import psMat
+from sys import stdout
+
+__doc__ = """
+Replaces the Braille Pattern range in a font. There must already be
+characters defined there.
+
+Two auxiliar glyphs, in variables glyphOff and glyphOn below, represent the
+off and on state of the Braille dots, respectively.
+
+One also needs to set the font file path, the width between columns of dots,
+and the width between rows of dots, as well as the width of the glyphs.
+
+The first 64 Braille Patterns consist of two columns of four dots,
+the bottom two of which are all zero. The other 6 dots are represented
+by the bit patterns of the octal digits of the offset from the range start.
+
+The remaining three sets of 64 patterns repeat the first set, with
+the bottom two dots being the bit pattern for the numbers 1 to 4 in binary.
+"""
+
+font = fontforge.open( '../../sfd/FreeMono.sfd' )
+
+glyphOff = 'braille_off'
+glyphOn = 'braille_on'
+colwidth = 220
+rowheight = -220
+glyphwidth = 600
+
+def drawdot( g, col, row, on ):
+ move = psMat.translate( col * colwidth, row * rowheight )
+ if on:
+ g.addReference( glyphOn, move )
+ else:
+ g.addReference( glyphOff, move )
+
+def createAndName( font, off ):
+ return font.createChar( 0x2800 + off, 'braille%0.2X' % off )
+
+def drawtopsix( g, off ):
+ print 'created', 'braille%0.2X' % off
+ g.clear()
+ g.right_side_bearing = glyphwidth
+ for col in range ( 0, 2 ):
+ for row in range ( 0, 3 ):
+ print 'shift', ( 3 * col + row )
+ state = ( 1 << ( 3 * col + row ) ) & off
+ drawdot( g, col, row, state )
+
+# Contrary to the FontForge docs, font.createChar does *not* create a
+# glyph if one doesn't exist, but *does* re-name it if it already exists.
+for off in range ( 0, 0x0100 ):
+ g = createAndName( font, off )
+ drawtopsix( g, off )
+ drawdot( g, 0, 3, ( off / 0x40 ) % 2 != 0 )
+ drawdot( g, 1, 3, off / 0x80 != 0 )
+
+font.save()