nototools-2017-09-25-tooling-for-phase3-update/000077500000000000000000000000001316231664500210645ustar00rootroot00000000000000nototools-2017-09-25-tooling-for-phase3-update/.gitignore000066400000000000000000000001061316231664500230510ustar00rootroot00000000000000*.pyc *~ color_emoji/waveflag packages build dist nototools.egg-info/ nototools-2017-09-25-tooling-for-phase3-update/.travis.yml000066400000000000000000000006641316231664500232030ustar00rootroot00000000000000sudo: required language: python python: - "2.7" branches: only: - master install: - python setup.py install # for ttxn - sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 - wget https://github.com/adobe-type-tools/afdko/releases/download/2.5.65322/FDK-25-LINUX.b65322.zip - unzip -q FDK-25-LINUX.b65322.zip - PATH="${PATH}:$(pwd)/FDK-25-LINUX.b65322/Tools/linux" script: - cd tests && ./run_tests nototools-2017-09-25-tooling-for-phase3-update/CONTRIBUTING.md000066400000000000000000000026531316231664500233230ustar00rootroot00000000000000Want to contribute? Great! First, read this page (including the small print at the end). ### Before you contribute Before we can use your code, you must sign the [Google Individual Contributor License Agreement](https://cla.developers.google.com/about/google-individual) (CLA), which you can do online. The CLA is necessary mainly because you own the copyright to your changes, even after your contribution becomes part of our codebase, so we need your permission to use and distribute your code. We also need to be sure of various other things—for instance that you'll tell us if you know that your code infringes on other people's patents. You don't have to sign the CLA until after you've submitted your code for review and a member has approved it, but you must do it before we can put your code into our codebase. Before you start working on a larger contribution, you should get in touch with us first through the issue tracker with your idea so that we can help out and possibly guide you. Coordinating up front makes it much easier to avoid frustration later on. ### Code reviews All submissions, including submissions by project members, require review. We use Github pull requests for this purpose. ### The small print Contributions made by corporations are covered by a different agreement than the one above, the [Software Grant and Corporate Contributor License Agreement](https://cla.developers.google.com/about/google-corporate). nototools-2017-09-25-tooling-for-phase3-update/LICENSE000066400000000000000000000261351316231664500221000ustar00rootroot00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. nototools-2017-09-25-tooling-for-phase3-update/MANIFEST.in000066400000000000000000000000401316231664500226140ustar00rootroot00000000000000recursive-include third_party * nototools-2017-09-25-tooling-for-phase3-update/Makefile000066400000000000000000000067211316231664500225320ustar00rootroot00000000000000# Copyright 2013 Google Inc. All Rights Reserved # Author: thaths@google.com (Sudhakar "Thaths" Chandra) # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. TAR=$(shell which tar) ZIP=$(shell which zip) RM=$(shell which rm) LN=$(shell which ln) MKDIR=$(shell which mkdir) SCALETOOL=./nototools/scale.py SUBSETTOOL=./nototools/subset.py TODAY=$(shell date "+%Y-%m-%d") TARBALLDIR=packages ZIPDIR=packages-zip ANDROIDDIR=packages/android CROSDIR=packages/cros HINTEDFONTDIR=../noto-fonts/hinted UNHINTEDFONTDIR=../noto-fonts/unhinted UNHINTEDFONTS=$(shell find $(UNHINTEDFONTDIR) -name "*.ttf") ANDROIDFONTS=$(UNHINTEDFONTS:$(UNHINTEDFONTDIR)/%=$(ANDROIDDIR)/%) HINTEDFONTS=$(shell find $(HINTEDFONTDIR) -name "*.ttf") CROSFONTS=$(HINTEDFONTS:$(HINTEDFONTDIR)/%=$(CROSDIR)/%) all: tarball zip $(TARBALLDIR) $(ZIPDIR): $(MKDIR) -p $@ tarball: hintedtarball unhintedtarball hintedtarball: $(HINTEDFONTDIR)/*.ttf cleanhintedtarball $(TARBALLDIR) $(TAR) zcvf $(TARBALLDIR)/NotoFonts-hinted-$(TODAY).tgz $(HINTEDFONTDIR)/Noto*.ttf LICENSE cd $(TARBALLDIR); ln -s NotoFonts-hinted-$(TODAY).tgz NotoFonts-hinted-latest.tgz unhintedtarball: $(UNHINTEDFONTDIR)/*.ttf cleanunhintedtarball $(TARBALLDIR) $(TAR) zcvf $(TARBALLDIR)/NotoFonts-unhinted-$(TODAY).tgz $(UNHINTEDFONTDIR)/Noto*.ttf LICENSE cd $(TARBALLDIR); ln -s NotoFonts-unhinted-$(TODAY).tgz NotoFonts-unhinted-latest.tgz zip: hintedzip unhintedzip hintedzip: $(HINTEDFONTDIR)/*.ttf cleanhintedzip $(ZIPDIR) $(ZIP) $(ZIPDIR)/NotoFonts-hinted-$(TODAY).zip $(HINTEDFONTDIR)/Noto*.ttf LICENSE cd $(ZIPDIR); ln -s NotoFonts-hinted-$(TODAY).zip NotoFonts-hinted-latest.zip unhintedzip: $(UNHINTEDFONTDIR)/*.ttf cleanunhintedzip $(ZIPDIR) $(ZIP) $(ZIPDIR)/NotoFonts-unhinted-$(TODAY).zip $(UNHINTEDFONTDIR)/Noto*.ttf LICENSE cd $(ZIPDIR); ln -s NotoFonts-unhinted-$(TODAY).zip NotoFonts-unhinted-latest.zip android: $(ANDROIDFONTS) $(ANDROIDDIR)/%.ttf: $(UNHINTEDFONTDIR)/%.ttf @$(MKDIR) -p $(ANDROIDDIR) @echo Compressing $(notdir $<) @if [[ $< == *"TamilUI"* || $< == *"MalayalamUI"* ]]; then \ subsetted=$$(mktemp); \ $(SUBSETTOOL) $< $$subsetted; \ echo Scaling $(notdir $<); \ $(SCALETOOL) 0.9 $$subsetted $@; \ else \ $(SUBSETTOOL) $< $@; \ fi cros: $(CROSFONTS) $(CROSDIR)/%.ttf: $(HINTEDFONTDIR)/%.ttf @$(MKDIR) -p $(CROSDIR) $(SUBSETTOOL) $< $@; \ clean: cleantarball cleanzip cleantarball: cleanhintedtarball cleanunhintedtarball cleanhintedtarball: $(RM) -f $(TARBALLDIR)/NotoFonts-hinted-$(TODAY).tgz $(RM) -f $(TARBALLDIR)/NotoFonts-hinted-latest.tgz cleanunhintedtarball: $(RM) -f $(TARBALLDIR)/NotoFonts-unhinted-$(TODAY).tgz $(RM) -f $(TARBALLDIR)/NotoFonts-unhinted-latest.tgz cleanzip: cleanhintedzip cleanunhintedzip cleanhintedzip: $(RM) -f $(ZIPDIR)/NotoFonts-hinted-$(TODAY).zip $(RM) -f $(ZIPDIR)/NotoFonts-hinted-latest.zip cleanunhintedzip: $(RM) -f $(ZIPDIR)/NotoFonts-unhinted-$(TODAY).zip $(RM) -f $(ZIPDIR)/NotoFonts-unhinted-latest.zip cleanandroid: $(RM) -rf $(ANDROIDDIR) nototools-2017-09-25-tooling-for-phase3-update/README.md000066400000000000000000000022471316231664500223500ustar00rootroot00000000000000[![Travis Build Status](https://travis-ci.org/googlei18n/nototools.svg)](https://travis-ci.org/googlei18n/nototools) # Noto Tools The `nototools` python package contains python scripts used to maintain the [Noto Fonts](https://github.com/googlei18n/noto-fonts/) project, including the [google.com/get/noto](https://www.google.com/get/noto) website. ## Installation On Mac OS X, install dependencies with [homebrew](https://brew.sh) brew install --with-cairo harfbuzz cairo pango pygtk imagemagick Install python dependencies, pip install -r requirements.txt Then install nototools. Since nototools changes frequently, installing using 'develop' is recommended: python setup.py develop ## Usage The following scripts are provided: * `autofix_for_release.py` * `add_vs_cmap.py` * `coverage.py` * `create_image.py` * `decompose_ttc.py` * `drop_hints.py` * `dump_otl.py` * `fix_khmer_and_lao_coverage.py` * `fix_noto_cjk_thin.py` * `generate_sample_text.py` * `generate_website_2_data.py` * `merge_noto.py` * `merge_fonts.py` * `noto_lint.py` * `scale.py` * `subset.py` * `subset_symbols.py` * `test_vertical_extents.py` The following tools are provided: * `notodiff` nototools-2017-09-25-tooling-for-phase3-update/nototools/000077500000000000000000000000001316231664500231245ustar00rootroot00000000000000nototools-2017-09-25-tooling-for-phase3-update/nototools/__init__.py000066400000000000000000000000001316231664500252230ustar00rootroot00000000000000nototools-2017-09-25-tooling-for-phase3-update/nototools/add_vs_cmap.py000077500000000000000000000107011316231664500257400ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2015 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Modify an Emoji font to populate cmap 14 variation selector subtable. This uses the unicode variation selector data, finds all characters in the standard cmap that match, and generates a cmap format 14 subtable indicating that they have the provided presentation (emoji by default). No fonts are processed if any already has a format 14 subtable. Modified fonts are written to the provided dir and optionally have a provided suffix appended (before the extension). An output file name can be provided in which case only one input file is allowed.""" import argparse import os from os import path import re import sys from fontTools import ttLib from fontTools.ttLib.tables import _c_m_a_p from nototools import font_data from nototools import unicode_data from nototools import tool_utils VS_TEXT = 0xFE0E VS_EMOJI = 0xFE0F def modify_font(font_name, font, presentation, emoji_variants): cmap_table = font_data.get_cmap(font) emoji = set(cmap_table.keys()) & emoji_variants if not emoji: print 'no emoji match those in %s' % font_name return uvs = VS_EMOJI if presentation == 'emoji' else VS_TEXT cmap14 = _c_m_a_p.CmapSubtable.newSubtable(14) cmap14.cmap = {} cmap14.uvsDict = {uvs: [[c, None] for c in sorted(emoji)]} cmap14.platformID = 0 cmap14.platEncID = 5 cmap14.language = 0xFF # what fontTools would have used font['cmap'].tables.append(cmap14) def modify_fonts(font_names, presentation='emoji', output=None, suffix=None, dst_dir=None, vs_added=None): assert dst_dir if output: assert len(font_names) == 1 for font_name in font_names: font = ttLib.TTFont(font_name) if font_data.get_variation_sequence_cmap(font): # process no font if any already has a var selector cmap raise ValueError('font %s already has a format 14 cmap' % font_name) if not path.exists(dst_dir): os.makedirs(dst_dir) emoji_variants = unicode_data.get_unicode_emoji_variants() if vs_added: emoji_variants = emoji_variants | vs_added for font_name in font_names: font = ttLib.TTFont(font_name) modify_font(font_name, font, presentation, emoji_variants) if output: new_name = output else: new_name = path.basename(font_name) if suffix: name, ext = path.splitext(new_name) new_name = name + suffix + ext font.save(path.join(dst_dir, new_name)) def main(): parser = argparse.ArgumentParser() parser.add_argument( '-d', '--dstdir', help='destination directory for modified files, default /tmp/vs', metavar = 'dir', default='/tmp/vs') parser.add_argument( '-p', '--presentation', help='presentation of glyphs in the font, default "emoji"', choices=['emoji', 'text'], default='emoji') parser.add_argument( '-s', '--suffix', metavar='suffix', help='suffix to add to file names for output, goes before extension') parser.add_argument( '-o', '--output', metavar='filename', help='output file name, requires only one input file') parser.add_argument( '-vs', '--vs_added', help='extra ranges to treat as having the requested presentation', metavar='range', nargs='+') parser.add_argument( 'files', help='files to modify', metavar='file', nargs='+') # argparse fails with named arguments that have leading hyphen. You # can work around this by using a short arg and concatenating it and # the argument together, e.g. '-s-foo'. # Both parse_known_args and inserting '--' between the key and its # value fail, though. args = parser.parse_args() vs_set = None if args.vs_added: vs_set = tool_utils.parse_int_ranges(' '.join(args.vs_added)) modify_fonts(args.files, presentation=args.presentation, output=args.output, suffix=args.suffix, dst_dir=args.dstdir, vs_added=vs_set) if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/nototools/android_patches.py000077500000000000000000000334731316231664500266420ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: UTF-8 -*- # Copyright 2016 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Patches for Android versions of Noto fonts.""" import argparse import codecs import glob import os from os import path import shutil import tempfile from nototools import subset from nototools import coverage from nototools import fix_khmer_and_lao_coverage as merger from nototools import font_data from nototools import tool_utils from nototools import ttc_utils from nototools import unicode_data from fontTools import ttLib from fontTools.ttLib.tables import otTables def patch_hyphen(srcdir, dstdir, copy_unchanged=True): """Add hyphen-minus glyphs to fonts that need it. This is to enable languages to be hyphenated properly, since Minikin's itemizer currently shows tofus if an automatically hyphenated word is displated in a font that has neither HYPHEN nor HYPHEN-MINUS. The list of font names comes from LANG_TO_SCRIPT in tools/font/fontchain_lint.py. (In practice only U+002D HYPHEN-MINUS is added, since Noto LGC fonts don't have U+2010 HYPHEN.) Bug: 21570828""" # Names of fonts for which Android requires a hyphen. # This list omits Japanese and Korean. script_names = [ 'Armenian', 'Ethiopic', 'Bengali', 'Gujarati', 'Devanagari', 'Kannada', 'Malayalam', 'Oriya', 'Gurmukhi', 'Tamil', 'Telugu'] HYPHENS = {0x002D, 0x2010} for sn in script_names: globexp = path.join(srcdir, 'Noto*%s-*.ttf' % sn) fonts = glob.glob(globexp) if not fonts: continue fonts = [path.basename(f) for f in fonts] for font_name in fonts: lgc_font_name = font_name.replace(sn, '') font_file = path.join(srcdir, font_name) lgc_font_file = path.join(srcdir, lgc_font_name) chars_to_add = ( (HYPHENS - coverage.character_set(font_file)) & coverage.character_set(lgc_font_file)) if chars_to_add: print 'patch hyphens', font_name merger.merge_chars_from_bank( path.join(srcdir, font_name), path.join(srcdir, lgc_font_name), path.join(srcdir, font_name), chars_to_add) else: if copy_unchanged: shutil.copy2( path.join(srcdir,font_name), path.join(dstdir, font_name)) print '%s already has hyphens, copying' % font_name else: print '%s already has hyphens' % font_name def _remove_cjk_emoji(cjk_font_names, srcdir, dstdir): """ Remove default emoji characters from CJK fonts. Twenty-six characters that Unicode Technical Report #51 "Unicode Emoji" defines as defaulting to emoji styles used to be displayed as black and white ("text" style) before this. This patch removes those characters from Noto CJK fonts, so they get displayed as color. (1c4749e20391a4) """ # Since subsetting changes tables in a way that would prevent a compact # .ttc file, this simply removes entries from the cmap table. This # does not affect other tables in the font. There are no emoji presentation # variation sequences in the fonts. def _remove_from_cmap(infile, outfile, exclude=[]): font = ttLib.TTFont(infile) font_data.delete_from_cmap(font, exclude) font.save(outfile) EMOJI = ( [0x26BD, 0x26BE, 0x1F18E] + range(0x1F191, 0x1F19A+1) + [0x1F201, 0x1F21A, 0x1F22F] + range(0x1F232, 0x1F236+1) + [0x1F238, 0x1F239, 0x1F23A, 0x1F250, 0x1F251] ) for font_name in cjk_font_names: print 'remove cjk emoji', font_name _remove_from_cmap( path.join(srcdir, font_name), path.join(dstdir, font_name), exclude=EMOJI) def patch_cjk_ttc(ttc_srcfile, ttc_dstfile): """Take the source ttc, break it apart, remove the cjk emoji from each file, then repackage them into a new ttc.""" tmp_dir = tempfile.mkdtemp() font_names = ttc_utils.ttcfile_extract(ttc_srcfile, tmp_dir) tmp_patched_dir = path.join(tmp_dir, 'patched') os.mkdir(tmp_patched_dir) _remove_cjk_emoji(font_names, tmp_dir, tmp_patched_dir) # have ttcfile_build resolve names relative to patched dir with tool_utils.temp_chdir(tmp_patched_dir): ttc_utils.ttcfile_build(ttc_dstfile, font_names) shutil.rmtree(tmp_dir) def patch_cjk_ttcs(srcdir, dstdir): """Call patch_cjk_ttc for each ttc file in srcdir, writing the result to dstdir using the same name.""" if not path.isdir(srcdir): print '%s is not a directory' % srcdir return ttc_files = [f for f in os.listdir(srcdir) if f.endswith('.ttc')] if not ttc_files: print 'no .ttc file to patch in %s' % srcdir return tool_utils.ensure_dir_exists(dstdir) for f in ttc_files: patch_cjk_ttc(path.join(srcdir, f), path.join(dstdir, f)) # below are used by _subset_symbols # Unicode blocks that we want to include in the font BLOCKS_TO_INCLUDE = """ 20D0..20FF; Combining Diacritical Marks for Symbols 2100..214F; Letterlike Symbols 2190..21FF; Arrows 2200..22FF; Mathematical Operators 2300..23FF; Miscellaneous Technical 2400..243F; Control Pictures 2440..245F; Optical Character Recognition 2460..24FF; Enclosed Alphanumerics 2500..257F; Box Drawing 2580..259F; Block Elements 25A0..25FF; Geometric Shapes 2600..26FF; Miscellaneous Symbols 2700..27BF; Dingbats 27C0..27EF; Miscellaneous Mathematical Symbols-A 27F0..27FF; Supplemental Arrows-A 2800..28FF; Braille Patterns 2A00..2AFF; Supplemental Mathematical Operators """ # One-off characters to be included, needed for backward compatibility and # supporting various character sets, including ARIB sets and black and white # emoji ONE_OFF_ADDITIONS = { 0x27D0, # ⟐ WHITE DIAMOND WITH CENTRED DOT 0x2934, # ⤴ ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS 0x2935, # ⤵ ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS 0x2985, # ⦅ LEFT WHITE PARENTHESIS 0x2986, # ⦆ RIGHT WHITE PARENTHESIS 0x2B05, # ⬅ LEFTWARDS BLACK ARROW 0x2B06, # ⬆ UPWARDS BLACK ARROW 0x2B07, # ⬇ DOWNWARDS BLACK ARROW 0x2B24, # ⬤ BLACK LARGE CIRCLE 0x2B2E, # ⬮ BLACK VERTICAL ELLIPSE 0x2B2F, # ⬯ WHITE VERTICAL ELLIPSE 0x2B56, # ⭖ HEAVY OVAL WITH OVAL INSIDE 0x2B57, # ⭗ HEAVY CIRCLE WITH CIRCLE INSIDE 0x2B58, # ⭘ HEAVY CIRCLE 0x2B59, # ⭙ HEAVY CIRCLED SALTIRE 0x1F19B, # 🆛 SQUARED THREE D 0x1F19C, # 🆜 SQUARED SECOND SCREEN 0x1F19D, # 🆝 SQUARED TWO K;So;0;L;;;;;N;;;;; 0x1F19E, # 🆞 SQUARED FOUR K;So;0;L;;;;;N;;;;; 0x1F19F, # 🆟 SQUARED EIGHT K;So;0;L;;;;;N;;;;; 0x1F1A0, # 🆠 SQUARED FIVE POINT ONE;So;0;L;;;;;N;;;;; 0x1F1A1, # 🆡 SQUARED SEVEN POINT ONE;So;0;L;;;;;N;;;;; 0x1F1A2, # 🆢 SQUARED TWENTY-TWO POINT TWO;So;0;L;;;;;N;;;;; 0x1F1A3, # 🆣 SQUARED SIXTY P;So;0;L;;;;;N;;;;; 0x1F1A4, # 🆤 SQUARED ONE HUNDRED TWENTY P;So;0;L;;;;;N;;;;; 0x1F1A5, # 🆥 SQUARED LATIN SMALL LETTER D;So;0;L;;;;;N;;;;; 0x1F1A6, # 🆦 SQUARED HC;So;0;L;;;;;N;;;;; 0x1F1A7, # 🆧 SQUARED HDR;So;0;L;;;;;N;;;;; 0x1F1A8, # 🆨 SQUARED HI-RES;So;0;L;;;;;N;;;;; 0x1F1A9, # 🆩 SQUARED LOSSLESS;So;0;L;;;;;N;;;;; 0x1F1AA, # 🆪 SQUARED SHV;So;0;L;;;;;N;;;;; 0x1F1AB, # 🆫 SQUARED UHD;So;0;L;;;;;N;;;;; 0x1F1AC, # 🆬 SQUARED VOD;So;0;L;;;;;N;;;;; 0x1F23B, # 🈻 SQUARED CJK UNIFIED IDEOGRAPH-914D } # letter-based characters, provided by Roboto # TODO see if we need to change this subset based on Noto Serif coverage # (so the serif fallback chain would support them) LETTERLIKE_CHARS_IN_ROBOTO = { 0x2100, # ℀ ACCOUNT OF 0x2101, # ℁ ADDRESSED TO THE SUBJECT 0x2103, # ℃ DEGREE CELSIUS 0x2105, # ℅ CARE OF 0x2106, # ℆ CADA UNA 0x2109, # ℉ DEGREE FAHRENHEIT 0x2113, # ℓ SCRIPT SMALL L 0x2116, # № NUMERO SIGN 0x2117, # ℗ SOUND RECORDING COPYRIGHT 0x211E, # ℞ PRESCRIPTION TAKE 0x211F, # ℟ RESPONSE 0x2120, # ℠ SERVICE MARK 0x2121, # ℡ TELEPHONE SIGN 0x2122, # ™ TRADE MARK SIGN 0x2123, # ℣ VERSICLE 0x2125, # ℥ OUNCE SIGN 0x2126, # Ω OHM SIGN 0x212A, # K KELVIN SIGN 0x212B, # Å ANGSTROM SIGN 0x212E, # ℮ ESTIMATED SYMBOL 0x2132, # Ⅎ TURNED CAPITAL F 0x213B, # ℻ FACSIMILE SIGN 0x214D, # ⅍ AKTIESELSKAB 0x214F, # ⅏ SYMBOL FOR SAMARITAN SOURCE } ANDROID_EMOJI = { 0x2600, # ☀ BLACK SUN WITH RAYS 0x2601, # ☁ CLOUD 0x260E, # ☎ BLACK TELEPHONE 0x261D, # ☝ WHITE UP POINTING INDEX 0x263A, # ☺ WHITE SMILING FACE 0x2660, # ♠ BLACK SPADE SUIT 0x2663, # ♣ BLACK CLUB SUIT 0x2665, # ♥ BLACK HEART SUIT 0x2666, # ♦ BLACK DIAMOND SUIT 0x270C, # ✌ VICTORY HAND 0x2744, # ❄ SNOWFLAKE 0x2764, # ❤ HEAVY BLACK HEART } # TV symbols, see https://github.com/googlei18n/noto-fonts/issues/557 TV_SYMBOLS_FOR_SUBSETTED = tool_utils.parse_int_ranges( '1f19b-1f1ac 1f23b') EMOJI = unicode_data.get_presentation_default_emoji() | ANDROID_EMOJI def _format_set(char_set, name, filename): lines = ['%s = {' % name] for cp in sorted(char_set): name = unicode_data.name(cp) lines.append(' 0x%04X, # %s %s' % (cp, unichr(cp), name)) lines.append('}\n') with codecs.open(filename, 'w', 'UTF-8') as f: f.write('\n'.join(lines)) print 'wrote', filename def subset_symbols(srcdir, dstdir): """Subset Noto Sans Symbols in a curated way. Noto Sans Symbols is now subsetted in a curated way. Changes include: * Currency symbols now included in Roboto are removed. * All combining marks for symbols (except for combining keycap) are added, to combine with other symbols if needed. * Characters in symbol blocks that are also covered by Noto CJK fonts are added, for better harmony with the rest of the fonts in non-CJK settings. The dentistry characters at U+23BE..23CC are not added, since they appear to be Japan-only and full-width. * Characters that UTR #51 defines as default text are added, although they may also exist in the color emoji font, to make sure they get a default text style. * Characters that UTR #51 defines as default emoji are removed, to make sure they don't block the fallback to the color emoji font. * A few math symbols that are currently included in Roboto are added, to prepare for potentially removing them from Roboto when they are lower-quality in Roboto. Based on subset_noto_sans_symbols.py from AOSP external/noto-fonts.""" # TODO see if we need to change this subset based on Noto Serif coverage # (so the serif fallback chain would support them) target_coverage = set() # Add all characters in BLOCKS_TO_INCLUDE for first, last, _ in unicode_data._parse_code_ranges(BLOCKS_TO_INCLUDE): target_coverage.update(range(first, last+1)) # Add one-off characters target_coverage |= ONE_OFF_ADDITIONS # Remove characters preferably coming from Roboto target_coverage -= LETTERLIKE_CHARS_IN_ROBOTO # Remove default emoji presentation (including ones Android prefers default) target_coverage -= EMOJI # Remove COMBINING ENCLOSING KEYCAP. It's needed for Android's color emoji # mechanism to work properly target_coverage.remove(0x20E3) # Remove dentistry symbols, as their main use appears to be for CJK: # http://www.unicode.org/L2/L2000/00098-n2195.pdf target_coverage -= set(range(0x23BE, 0x23CC+1)) for font_file in glob.glob(path.join(srcdir, 'NotoSansSymbols-*.ttf')): print 'main subset', font_file out_file = path.join( dstdir, path.basename(font_file)[:-4] + '-Subsetted.ttf') subset.subset_font(font_file, out_file, include=target_coverage) # The second subset will be a fallback after the color emoji, for # explicit text presentation sequences. target_coverage = EMOJI | unicode_data.get_unicode_emoji_variants() for font_file in glob.glob(path.join(srcdir, 'NotoSansSymbols-*.ttf')): print 'secondary subset', font_file out_file = path.join( dstdir, path.basename(font_file)[:-4] + '-Subsetted2.ttf') subset.subset_font(font_file, out_file, include=target_coverage) def patch_post_table(srcdir, dstdir): """Replace post table version 2.0 with version 3.0""" # Leave alone OTF for font_file in glob.glob(path.join(srcdir, '*.ttf')): print 'change post table to 3.0', font_file out_file = path.join(dstdir, path.basename(font_file)) if path.isfile(out_file): print ' repatching', out_file font_file = out_file font = ttLib.TTFont(font_file) font['post'].formatType = 3.0 font.save(out_file) def patch_fonts(srcdir, dstdir): """Remove dstdir and repopulate with patched contents of srcdir (and its 'cjk' subdirectory if it exists).""" srcdir = tool_utils.resolve_path(srcdir) dstdir = tool_utils.resolve_path(dstdir) tool_utils.ensure_dir_exists(dstdir, clean=True) patch_hyphen(srcdir, dstdir) patch_cjk_ttcs(path.join(srcdir, 'cjk'), path.join(dstdir, 'cjk')) subset_symbols(srcdir, dstdir) patch_post_table(srcdir, dstdir) def main(): SRC_DIR = '[tools]/packages/android' DST_DIR = '[tools]/packages/android-patched' parser = argparse.ArgumentParser() parser.add_argument( '-s', '--srcdir', help='directory containing fonts to patch ' '(default %s)' % SRC_DIR, default=SRC_DIR, metavar='dir') parser.add_argument( '-d', '--dstdir', help='directory into which to write patched fonts ' '(default %s)' % DST_DIR, default=DST_DIR, metavar='dir') args = parser.parse_args() patch_fonts(args.srcdir, args.dstdir) if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/nototools/autofix_for_phase3.py000077500000000000000000000400061316231664500272710ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2017 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Autofix phase 3 binaries, and autohint. Quick tool to make fixes to some fonts that are 'ok for release' but still have issues. Main goal here is to autohint fonts that can be hinted. We also put more info into the version string. """ # TODO: ideally, we don't autofix at all, but if we continue to do this # it would be better to unify the lint checks and the autofix code to # ensure they agree in their expectations. import argparse import datetime import glob import os from os import path import re import subprocess from fontTools import ttLib from nototools import font_data from nototools import noto_data from nototools import noto_fonts from nototools import tool_utils _new_version_re = re.compile(r'^(?:keep|[12]\.\d{3})$') def _check_version(version): if not (version is None or _new_version_re.match(version)): raise Exception( 'version "%s" did not match regex "%s"' % ( version, _new_version_re.pattern)) _version_info_re = re.compile( r'GOOG;noto-(?:fonts(?:-alpha)?|source):(\d{4})(\d{2})(\d{2}):([0-9a-f]{12})') def _check_version_info(version_info): """ensure version info looks reasonable, for example: 'GOOG;noto-fonts:20170220:a8a215d2e889'. Raise an exception if it does not.""" m = _version_info_re.match(version_info) if not m: raise Exception('version info "%s" did not match regex "%s"' % ( version_info, _version_info_re.pattern)) year = int(m.group(1)) month = int(m.group(2)) day = int(m.group(3)) commit_hash = m.group(4) today = datetime.date.today() if 2017 <= year: try: encoded_date = datetime.date(year, month, day) except Exception as e: raise Exception( '%04d-%02d-%02d in %s is not a valid date' % ( year, month, day, version_info)) if encoded_date > today: raise Exception('%s in %s is after the current date' % ( encoded_date, version_info)) else: raise Exception('date in %s appears too far in the past' % version_info) def _get_version_info(fonts): """If fonts are all from noto-fonts, use information from the current state of the repo to build a version string. Otherwise return None.""" # add '/' to distinguish between noto-fonts/ and noto-fonts-alpha/ for repo_tag in ['[fonts]', '[fonts_alpha]', '[source]']: prefix = tool_utils.resolve_path(repo_tag) + '/' print 'trying prefix "%s"' % prefix if all(tool_utils.resolve_path(f).startswith(prefix) for f in fonts): return _get_fonts_repo_version_info(repo_tag) # else report the first failure for f in fonts: if not tool_utils.resolve_path(f).startswith(prefix): print '# failed at "%s"' % tool_utils.resolve_path(f) break print 'no prefix succeeded' return None def _get_fonts_repo_version_info(repo_tag): prefix = tool_utils.resolve_path(repo_tag) commit, date, commit_msg = tool_utils.git_head_commit(prefix) # check that commit is on the upstream master if not tool_utils.git_check_remote_commit(prefix, commit): raise Exception( 'commit %s (%s) not on upstream master branch' % ( commit[:12], commit_msg.splitlines()[0].strip())) date_re = re.compile(r'(\d{4})-(\d{2})-(\d{2})') m = date_re.match(date) if not m: raise Exception('could not match "%s" with "%s"' % (date, date_re.pattern)) ymd = ''.join(m.groups()) # hack tag to get the formal repo name. strip enclosing brackets... repo_name = 'noto-' + repo_tag[1:-1].replace('_', '-') return 'GOOG;%s:%s:%s' % (repo_name, ymd, commit[:12]) def _check_autohint(script): if script and not( script in ['no-script'] or script in noto_data.HINTED_SCRIPTS): raise Exception('not a hintable script: "%s"' % script) def _expand_font_names(font_names, result=None): """font names can include names of files containing a list of names, open those recursively and add to the set.""" def strip_comment(line): ix = line.find('#') if ix != -1: line = line[:ix] return line.strip() if result is None: result = set() for n in font_names: if not n.startswith('@'): result.add(n) else: filename = n[1:] with open(filename, 'r') as f: new_names = f.readlines() new_names = [strip_comment(n) for n in new_names] new_names = [n for n in new_names if n] _expand_font_names(new_names, result) return result def autofix_fonts( font_names, src_root, dst_dir, release_dir, version, version_info, autohint, dry_run): dst_dir = tool_utils.resolve_path(dst_dir) dst_dir = tool_utils.ensure_dir_exists(dst_dir) font_names = sorted(_expand_font_names(font_names)) print 'Processing %d fonts\n %s' % ( len(font_names), '\n '.join(font_names[:5]) + '...') src_root = tool_utils.resolve_path(src_root) print 'Src root: %s' % src_root print 'Dest dir: %s' % dst_dir if release_dir is None: rel_dir = None else: rel_dir = tool_utils.resolve_path(release_dir) if not path.isdir(rel_dir): raise Exception('release dir "%s" does not exist' % rel_dir) if (version_info is None or version_info == '[fonts]' or version_info == '[fonts_alpha]'): if version_info is None: version_info = _get_version_info(font_names) else: version_info = _get_fonts_repo_version_info() if not version_info: raise Exception('could not compute version info from fonts') print 'Computed version_info: %s' % version_info else: _check_version_info(version_info) _check_version(version) _check_autohint(autohint) if dry_run: print '*** dry run %s***' % ('(autohint) ' if autohint else '') for f in font_names: f = path.join(src_root, f) fix_font(f, dst_dir, rel_dir, version, version_info, autohint, dry_run) _version_re = re.compile(r'Version (\d+\.\d{2,3})') def _extract_version(font): # Sometimes the fontRevision and version string don't match, and the # fontRevision is bad, so we prefer the version string. version = font_data.font_version(font) m = _version_re.match(version) if not m: raise Exception('could not match existing version "%s"' % version) return m.group(1) def _version_str_to_mm(version): # return the pair of int values for the major and minor versions, plus # a boolean indicating whether this was a phase 2 version number. That's # a hack, it is a phase 2 number if the initial release version < 2 or # if the minor version had two digits. Of course this doesn't apply to # cjk but we shouldn't run this on cjk anyway. parts = version.split('.') mm = [int(n) for n in parts] is_phase2 = mm[0] < 2 or len(parts[1]) == 2 return mm, is_phase2 def _mm_to_version_str(mm): return ('%d.%02d' if mm[0] == 1 else '%d.%03d') % tuple(mm) def get_new_version(font, relfont, nversion): """Return a new version number. font is the font we're updating, relfont is the released version of this font if it exists, or None, and nversion is the new version, 'keep', or None. If a new version is passed to us, use it unless it is lower than either existing version, in which case we raise an exception. If the version is 'keep' and there is an existing release version, keep that. Otherwise bump the release version, if it exists, or convert the old version to a 2.0 version as appropriate. If the old version is a 2.0 version (e.g. Armenian was was '2.30' in phase 2), that value is mapped to 2.40.""" version = _extract_version(font) rversion = _extract_version(relfont) if relfont else None if rversion: print 'Existing release version: %s' % rversion r_mm, r_is_phase2 = _version_str_to_mm(rversion) mm, is_phase2 = _version_str_to_mm(version) if nversion is not None: if nversion == 'keep': if rversion is not None: if r_is_phase2: print 'Warning, keeping phase 2 release version %s' % rversion return rversion else: n_mm, n_is_phase_2 = _version_str_to_mm(nversion) if n_is_phase2: raise Exception('bad phase 3 minor version ("%s")' % nversion) if rversion is not None: if n_mm < r_mm: raise Exception( 'new version %s < release version %s' % (nversion, rversion)) if n_mm < mm: raise Exception( 'new version %s < old version %s' % (nversion, version)) return nversion # No new verson string, so compute one. If we have a phase 3 version, # start with that. If it's a phase 2 number with a major version of 2, # force minor to '040' which is higher than any of the phase 2 minor # versions in this category. Else if major < 2, bump to 2. Else just # bump the release minor version. if rversion: if r_is_phase2: return '2.040' if r_mm[0] == 2 else '2.000' if r_mm[1] == 999: raise Exception('cannot bump version %s' % rversion) r_mm[1] += 1 return _mm_to_version_str(r_mm) if mm[0] > 2: raise Exception('existing version too high "%s"' % version) if nversion == 'keep': return version return '2.000' def _get_font_info(f): font_info = noto_fonts.get_noto_font(f) if not font_info: raise Exception('not a noto font: "%s"' % f) return font_info def _is_ui_metrics(f): return _get_font_info(f).is_UI_metrics def _autohint_code(f, script): """Return 'not-hinted' if we don't hint this, else return the ttfautohint code, which might be None if ttfautohint doesn't support the script. Note that LGC and MONO return None.""" if script == 'no-script': return script if not script: script = noto_fonts.script_key_to_primary_script(_get_font_info(f).script) return noto_data.HINTED_SCRIPTS.get(script, 'not-hinted') def autohint_font(src, dst, script, dry_run): code = _autohint_code(src, script) if code == 'not-hinted': print 'Warning: no hinting information for %s, script %s' % (src, script) return if code == None: print 'Warning: unable to autohint %s' % src return if code == 'no-script': args = ['ttfautohint', '-t', '-W', src, dst] else: args = ['ttfautohint', '-t', '-W', '-f', code, src, dst] if dry_run: print 'dry run would autohint:\n "%s"' % ' '.join(args) return hinted_dir = tool_utils.ensure_dir_exists(path.dirname(dst)) try: subprocess.check_call(args) except Exception as e: print '### failed to autohint %s' % src # we failed to autohint, let's continue anyway # however autohint will have left an empty file there, remove it. try: os.remove(dst) except: pass print 'wrote autohinted %s using %s' % (dst, code) def _alert(val_name, cur_val, new_val): if isinstance(cur_val, basestring): tmpl = 'update %s\n from: "%s"\n to: "%s"' else: tmpl = 'update %s\n from: %4d\n to: %4d' print tmpl % (val_name, cur_val, new_val) def _alert_and_check(val_name, cur_val, expected_val, max_diff): """if max_diff >= 0, curval must be <= expected_val + maxdiff, else curval must be >= expected_val + maxdiff""" _alert(val_name, cur_val, expected_val) if max_diff >= 0: err = cur_val > expected_val + max_diff else: err = cur_val < expected_val + max_diff if err: raise Exception( 'bad difference in expected and actual %s' % val_name) def _get_release_fontpath(f, rel_dir): """If rel_dir is not None, look for a font under 'hinted' or 'unhinted' depending on which of these is in the path f. If neither is in f, look under rel_dir, and then rel_dir/unhinted. If a match is found, return the path.""" if rel_dir is None: return None hh = True bn = path.basename(f) if '/hinted/' in f: fp = path.join(rel_dir, 'hinted', bn) elif '/unhinted/' in f: fp = path.join(rel_dir, 'unhinted', bn) else: hh = False fp = path.join(rel_dir, bn) if path.isfile(fp): return fp if hh: return None fp = path.join(rel_dir, 'unhinted', bn) return fp if path.isfile(fp) else None def _get_release_font(f, rel_dir): fp = _get_release_fontpath(f, rel_dir) return None if fp is None else ttLib.TTFont(fp) def fix_font(f, dst_dir, rel_dir, version, version_info, autohint, dry_run): print '\n-----\nfont:', f font = ttLib.TTFont(f) relfont = _get_release_font(f, rel_dir) expected_font_revision = get_new_version(font, relfont, version) if expected_font_revision != None: font_revision = font_data.printable_font_revision(font, 3) if font_revision != expected_font_revision: _alert('revision', font_revision, expected_font_revision) font['head'].fontRevision = float(expected_font_revision) names = font_data.get_name_records(font) NAME_ID = 5 font_version = names[NAME_ID] expected_version = ( 'Version %s;%s' % (expected_font_revision, version_info)) if font_version != expected_version: _alert('version string', font_version, expected_version) font_data.set_name_record(font, NAME_ID, expected_version) expected_upem = 1000 upem = font['head'].unitsPerEm if upem != expected_upem: print 'expected %d upem but got %d upem' % (expected_upem, upem) if _is_ui_metrics(f): if upem == 2048: expected_ascent = 2163 expected_descent = -555 elif upem == 1000: expected_ascent = 1069 expected_descent = -293 else: raise Exception('no expected ui ascent/descent for upem: %d' % upem) font_ascent = font['hhea'].ascent font_descent = font['hhea'].descent if font_ascent != expected_ascent: _alert_and_check('ascent', font_ascent, expected_ascent, 2) font['hhea'].ascent = expected_ascent font['OS/2'].sTypoAscender = expected_ascent font['OS/2'].usWinAscent = expected_ascent if font_descent != expected_descent: _alert_and_check('descent', font_descent, expected_descent, -2) font['hhea'].descent = expected_descent font['OS/2'].sTypoDescender = expected_descent font['OS/2'].usWinDescent = -expected_descent tool_utils.ensure_dir_exists(path.join(dst_dir, 'unhinted')) fname = path.basename(f) udst = path.join(dst_dir, 'unhinted', fname) if dry_run: print 'dry run would write:\n "%s"' % udst else: font.save(udst) print 'wrote %s' % udst if autohint: hdst = path.join(dst_dir, 'hinted', fname) autohint_font(udst, hdst, autohint, dry_run) def main(): parser = argparse.ArgumentParser() parser.add_argument( '-d', '--dest_dir', help='directory into which to write swatted fonts', metavar='dir', default='swatted') parser.add_argument( '-r', '--release_dir', help='directory containing release fonts (opt ' ' [fonts])', metavar='dir', nargs='?', const='[fonts]') parser.add_argument( '-f', '--fonts', help='paths of fonts to swat (to fetch from a file' 'use "@filename")', metavar='font', nargs='+') parser.add_argument( '-s', '--src_root', help='common root of all paths of fonts', default='') parser.add_argument( '-i', '--version_info', help='version info string (opt [fonts] to use ' 'fonts info)', metavar='str', nargs='?', const='[fonts]') parser.add_argument( '-v', '--version', help='force version (opt keep)', metavar='ver', nargs='?', const='keep') parser.add_argument( '-a', '--autohint', help='autohint fonts (opt no-script)', metavar='code', nargs='?', const='no-script') parser.add_argument( '-n', '--dry_run', help='process checks but don\'t fix', action='store_true') args = parser.parse_args() autofix_fonts( args.fonts, args.src_root, args.dest_dir, args.release_dir, args.version, args.version_info, args.autohint, args.dry_run) if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/nototools/autofix_for_release.py000077500000000000000000000303331316231664500275300ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Fix some issues in Noto fonts before releasing them.""" __author__ = 'roozbeh@google.com (Roozbeh Pournader)' import argparse import array import os from os import path import re import sys from fontTools import ttLib from nototools import font_data from nototools import notoconfig NOTO_URL = "http://www.google.com/get/noto/" _LICENSE_ID = 13 _LICENSE_URL_ID = 14 _SIL_LICENSE = ( 'This Font Software is licensed under the SIL Open Font License, ' 'Version 1.1. This Font Software is distributed on an "AS IS" ' 'BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express ' 'or implied. See the SIL Open Font License for the specific language, ' 'permissions and limitations governing your use of this Font Software.') _SIL_LICENSE_URL = "http://scripts.sil.org/OFL" def fix_revision(font): """Fix the revision of the font to match its version.""" version = font_data.font_version(font) match = re.match(r'Version (\d{1,5})\.(\d{1,5})', version) major_version = match.group(1) minor_version = match.group(2) accuracy = len(minor_version) font_revision = font_data.printable_font_revision(font, accuracy) expected_font_revision = major_version+'.'+minor_version if font_revision != expected_font_revision: font['head'].fontRevision = float(expected_font_revision) print 'Fixed fontRevision to %s' % expected_font_revision return True return False def fix_fstype(font): """Fix the fsType of the font.""" if font['OS/2'].fsType != 0: font['OS/2'].fsType = 0 print 'Updated fsType to 0' return True return False def fix_vendor_id(font): """Fix the vendor ID of the font.""" if font['OS/2'].achVendID != 'GOOG': font['OS/2'].achVendID = 'GOOG' print 'Changed font vendor ID to GOOG' return True return False # Reversed name records in Khmer and Lao fonts NAME_CORRECTIONS = { 'Sans Kufi': 'Kufi', 'SansKufi': 'Kufi', 'UI Khmer': 'Khmer UI', 'UIKhmer': 'KhmerUI', 'UI Lao': 'Lao UI', 'UILao': 'LaoUI', 'SansEmoji': 'Emoji', 'Sans Emoji': 'Emoji', } TRADEMARK_TEMPLATE = u'%s is a trademark of Google Inc.' def fix_name_table(font): """Fix copyright and reversed values in the 'name' table.""" modified = False name_records = font_data.get_name_records(font) copyright_data = name_records[0] years = re.findall('20[0-9][0-9]', copyright_data) year = min(years) copyright_data = u'Copyright %s Google Inc. All Rights Reserved.' % year if copyright_data != name_records[0]: print 'Updated copyright message to "%s"' % copyright_data font_data.set_name_record(font, 0, copyright_data) modified = True for name_id in [1, 3, 4, 6]: record = name_records[name_id] for source in NAME_CORRECTIONS: if source in record: oldrecord = record record = record.replace(source, NAME_CORRECTIONS[source]) break if record != name_records[name_id]: font_data.set_name_record(font, name_id, record) print 'Updated name table record #%d from "%s" to "%s"' % ( name_id, oldrecord, record) modified = True trademark_names = ['Noto', 'Arimo', 'Tinos', 'Cousine'] trademark_name = None font_family = name_records[1] for name in trademark_names: if font_family.find(name) != -1: trademark_name = name break if not trademark_name: print 'no trademarked name in \'%s\'' % font_family else: trademark_line = TRADEMARK_TEMPLATE % trademark_name if name_records[7] != trademark_line: old_line = name_records[7] font_data.set_name_record(font, 7, trademark_line) modified = True print 'Updated name table record 7 from "%s" to "%s"' % (old_line, trademark_line) if name_records[11] != NOTO_URL: font_data.set_name_record(font, 11, NOTO_URL) modified = True print 'Updated name table record 11 to "%s"' % NOTO_URL if name_records[_LICENSE_ID] != _SIL_LICENSE: font_data.set_name_record(font, _LICENSE_ID, _SIL_LICENSE) modified = True print 'Updated license id' if name_records[_LICENSE_URL_ID] != _SIL_LICENSE_URL: font_data.set_name_record(font, _LICENSE_URL_ID, _SIL_LICENSE_URL) modified = True print 'Updated license url' # TODO: check preferred family/subfamily(16&17) return modified def fix_attachlist(font): """Fix duplicate attachment points in GDEF table.""" modified = False try: attach_points = font['GDEF'].table.AttachList.AttachPoint except (KeyError, AttributeError): attach_points = [] for attach_point in attach_points: points = sorted(set(attach_point.PointIndex)) if points != attach_point.PointIndex: attach_point.PointIndex = points attach_point.PointCount = len(points) modified = True if modified: print 'Fixed GDEF.AttachList' return modified def drop_hints(font): """Drops a font's hint.""" modified = False glyf_table = font['glyf'] for glyph_index in range(len(glyf_table.glyphOrder)): glyph_name = glyf_table.glyphOrder[glyph_index] glyph = glyf_table[glyph_name] if glyph.numberOfContours > 0: if glyph.program.bytecode: glyph.program.bytecode = array.array('B') modified = True print 'Dropped hints from glyph "%s"' % glyph_name return modified def drop_tables(font, tables): """Drops the listed tables from a font.""" modified = False for table in tables: if table in font: modified = True print 'Dropped table "%s"' % table modified = True del font[table] return modified TABLES_TO_DROP = [ # FontForge internal tables 'FFTM', 'PfEd', # Microsoft VOLT internatl tables 'TSI0', 'TSI1', 'TSI2', 'TSI3', 'TSI5', 'TSID', 'TSIP', 'TSIS', 'TSIV', ] def fix_path(file_path, is_hinted): file_path = re.sub(r'_(?:un)?hinted', '', file_path) if 'hinted/' in file_path: # '==' is higher precedence than 'in' if ('unhinted/' in file_path) == is_hinted: if is_hinted: file_path = file_path.replace('unhinted/', 'hinted/') else: file_path = file_path.replace('hinted/', 'unhinted/') else: file_path = os.path.join('hinted' if is_hinted else 'unhinted', file_path) # fix Naskh, assume Arabic if unspecified file_path = re.sub(r'NotoNaskh(-|UI-)', r'NotoNaskhArabic\1', file_path) # fix SansEmoji file_path = re.sub('NotoSansEmoji', 'NotoEmoji', file_path) # fix Nastaliq file_path = re.sub('Nastaliq-', 'NastaliqUrdu-', file_path) return file_path def fix_os2_unicoderange(font): os2_bitmap = font_data.get_os2_unicoderange_bitmap(font) expected_bitmap = font_data.get_cmap_unicoderange_bitmap(font) if os2_bitmap != expected_bitmap: old_bitmap_string = font_data.unicoderange_bitmap_to_string(os2_bitmap) font_data.set_os2_unicoderange_bitmap(font, expected_bitmap) bitmap_string = font_data.unicoderange_bitmap_to_string(expected_bitmap) print 'Change unicoderanges from:\n %s\nto:\n %s' % ( old_bitmap_string, bitmap_string) return True return False def fix_linegap(font): modified = False hhea_table = font["hhea"] if hhea_table.lineGap != 0: print 'hhea lineGap was %s, setting to 0' % hhea_table.lineGap hhea_table.lineGap = 0 modified = True vhea_table = font.get("vhea") if vhea_table and vhea_table.lineGap != 0: print 'vhea lineGap was %s, setting to 0' % vhea_table.lineGap vhea_table.lineGap = 0 modified = True os2_table = font["OS/2"] if os2_table.sTypoLineGap != 0: print 'os/2 sTypoLineGap was %d, setting to 0' % os2_table.sTypoLineGap os2_table.sTypoLineGap = 0 modified = True return modified def fix_font(src_root, dst_root, file_path, is_hinted, save_unmodified): """Fix font under src_root and write to similar path under dst_root, modulo fixes to the filename. If is_hinted is false, strip hints. If unmodified, don't write destination unless save_unmodified is true.""" src_file = os.path.join(src_root, file_path) print 'Font file: %s' % src_file font = ttLib.TTFont(src_file) modified = False modified |= fix_revision(font) modified |= fix_fstype(font) modified |= fix_vendor_id(font) modified |= fix_name_table(font) modified |= fix_attachlist(font) modified |= fix_os2_unicoderange(font) # leave line gap for non-noto fonts alone, metrics are more constrained there if font_data.font_name(font).find('Noto') != -1: modified |= fix_linegap(font) tables_to_drop = TABLES_TO_DROP if not is_hinted: modified |= drop_hints(font) tables_to_drop += ['fpgm', 'prep', 'cvt'] modified |= drop_tables(font, tables_to_drop) fixed_path = fix_path(file_path, is_hinted) if fixed_path != file_path: print 'changed file_path from "%s" to "%s"' % (file_path, fixed_path) modified = True if not modified: print 'No modification necessary' if modified or save_unmodified: # wait until we need it before we create the dest directory dst_file = os.path.join(dst_root, fixed_path) dst_dir = path.dirname(dst_file) if not path.isdir(dst_dir): os.makedirs(dst_dir) font.save(dst_file) print 'Wrote %s' % dst_file def fix_fonts(src_root, dst_root, name_pat, save_unmodified): src_root = path.abspath(src_root) dst_root = path.abspath(dst_root) name_rx = re.compile(name_pat) for root, dirs, files in os.walk(src_root): for file in files: if path.splitext(file)[1] not in ['.ttf', '.ttc', '.otf']: continue src_file = path.join(root, file) file_path = src_file[len(src_root)+1:] # +1 to ensure no leading slash. if not name_rx.search(file_path): continue is_hinted = root.endswith('/hinted') or '_hinted' in file fix_font(src_root, dst_root, file_path, is_hinted, save_unmodified) def main(): default_src_root = notoconfig.values.get('alpha') default_dst_root = notoconfig.values.get('autofix') parser = argparse.ArgumentParser() parser.add_argument('name_pat', help='regex for files to fix, ' 'searches relative path from src root') parser.add_argument('--src_root', help='root of src files (default %s)' % default_src_root, default=default_src_root) parser.add_argument('--dst_root', help='root of destination (default %s)' % default_dst_root, default=default_dst_root) parser.add_argument('--save_unmodified', help='save even unmodified files', action='store_true') args = parser.parse_args() if not args.src_root: # not on command line and not in user's .notoconfig print 'no src root specified.' return src_root = path.expanduser(args.src_root) if not path.isdir(src_root): print '%s does not exist or is not a directory' % src_root return dst_root = path.expanduser(args.dst_root) if not path.isdir(dst_root): print '%s does not exist or is not a directory' % dst_root return fix_fonts(src_root, dst_root, args.name_pat, args.save_unmodified) if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/nototools/charsets.py000066400000000000000000001337161316231664500253250ustar00rootroot00000000000000# coding=UTF-8 # Copyright 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Information about various character and glyph sets.""" # From http://www.microsoft.com/typography/otspec/wgl4.htm WGL4 = [ 0x0020, # SPACE 0x0021, # ! EXCLAMATION MARK 0x0022, # " QUOTATION MARK 0x0023, # # NUMBER SIGN 0x0024, # $ DOLLAR SIGN 0x0025, # % PERCENT SIGN 0x0026, # & AMPERSAND 0x0027, # ' APOSTROPHE 0x0028, # ( LEFT PARENTHESIS 0x0029, # ) RIGHT PARENTHESIS 0x002A, # * ASTERISK 0x002B, # + PLUS SIGN 0x002C, # , COMMA 0x002D, # - HYPHEN-MINUS 0x002E, # . FULL STOP 0x002F, # / SOLIDUS 0x0030, # 0 DIGIT ZERO 0x0031, # 1 DIGIT ONE 0x0032, # 2 DIGIT TWO 0x0033, # 3 DIGIT THREE 0x0034, # 4 DIGIT FOUR 0x0035, # 5 DIGIT FIVE 0x0036, # 6 DIGIT SIX 0x0037, # 7 DIGIT SEVEN 0x0038, # 8 DIGIT EIGHT 0x0039, # 9 DIGIT NINE 0x003A, # : COLON 0x003B, # ; SEMICOLON 0x003C, # < LESS-THAN SIGN 0x003D, # = EQUALS SIGN 0x003E, # > GREATER-THAN SIGN 0x003F, # ? QUESTION MARK 0x0040, # @ COMMERCIAL AT 0x0041, # A LATIN CAPITAL LETTER A 0x0042, # B LATIN CAPITAL LETTER B 0x0043, # C LATIN CAPITAL LETTER C 0x0044, # D LATIN CAPITAL LETTER D 0x0045, # E LATIN CAPITAL LETTER E 0x0046, # F LATIN CAPITAL LETTER F 0x0047, # G LATIN CAPITAL LETTER G 0x0048, # H LATIN CAPITAL LETTER H 0x0049, # I LATIN CAPITAL LETTER I 0x004A, # J LATIN CAPITAL LETTER J 0x004B, # K LATIN CAPITAL LETTER K 0x004C, # L LATIN CAPITAL LETTER L 0x004D, # M LATIN CAPITAL LETTER M 0x004E, # N LATIN CAPITAL LETTER N 0x004F, # O LATIN CAPITAL LETTER O 0x0050, # P LATIN CAPITAL LETTER P 0x0051, # Q LATIN CAPITAL LETTER Q 0x0052, # R LATIN CAPITAL LETTER R 0x0053, # S LATIN CAPITAL LETTER S 0x0054, # T LATIN CAPITAL LETTER T 0x0055, # U LATIN CAPITAL LETTER U 0x0056, # V LATIN CAPITAL LETTER V 0x0057, # W LATIN CAPITAL LETTER W 0x0058, # X LATIN CAPITAL LETTER X 0x0059, # Y LATIN CAPITAL LETTER Y 0x005A, # Z LATIN CAPITAL LETTER Z 0x005B, # [ LEFT SQUARE BRACKET 0x005C, # \ REVERSE SOLIDUS 0x005D, # ] RIGHT SQUARE BRACKET 0x005E, # ^ CIRCUMFLEX ACCENT 0x005F, # _ LOW LINE 0x0060, # ` GRAVE ACCENT 0x0061, # a LATIN SMALL LETTER A 0x0062, # b LATIN SMALL LETTER B 0x0063, # c LATIN SMALL LETTER C 0x0064, # d LATIN SMALL LETTER D 0x0065, # e LATIN SMALL LETTER E 0x0066, # f LATIN SMALL LETTER F 0x0067, # g LATIN SMALL LETTER G 0x0068, # h LATIN SMALL LETTER H 0x0069, # i LATIN SMALL LETTER I 0x006A, # j LATIN SMALL LETTER J 0x006B, # k LATIN SMALL LETTER K 0x006C, # l LATIN SMALL LETTER L 0x006D, # m LATIN SMALL LETTER M 0x006E, # n LATIN SMALL LETTER N 0x006F, # o LATIN SMALL LETTER O 0x0070, # p LATIN SMALL LETTER P 0x0071, # q LATIN SMALL LETTER Q 0x0072, # r LATIN SMALL LETTER R 0x0073, # s LATIN SMALL LETTER S 0x0074, # t LATIN SMALL LETTER T 0x0075, # u LATIN SMALL LETTER U 0x0076, # v LATIN SMALL LETTER V 0x0077, # w LATIN SMALL LETTER W 0x0078, # x LATIN SMALL LETTER X 0x0079, # y LATIN SMALL LETTER Y 0x007A, # z LATIN SMALL LETTER Z 0x007B, # { LEFT CURLY BRACKET 0x007C, # | VERTICAL LINE 0x007D, # } RIGHT CURLY BRACKET 0x007E, # ~ TILDE 0x00A0, #   NO-BREAK SPACE 0x00A1, # ¡ INVERTED EXCLAMATION MARK 0x00A2, # ¢ CENT SIGN 0x00A3, # £ POUND SIGN 0x00A4, # ¤ CURRENCY SIGN 0x00A5, # ¥ YEN SIGN 0x00A6, # ¦ BROKEN BAR 0x00A7, # § SECTION SIGN 0x00A8, # ¨ DIAERESIS 0x00A9, # © COPYRIGHT SIGN 0x00AA, # ª FEMININE ORDINAL INDICATOR 0x00AB, # « LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 0x00AC, # ¬ NOT SIGN 0x00AD, # ­ SOFT HYPHEN 0x00AE, # ® REGISTERED SIGN 0x00AF, # ¯ MACRON 0x00B0, # ° DEGREE SIGN 0x00B1, # ± PLUS-MINUS SIGN 0x00B2, # ² SUPERSCRIPT TWO 0x00B3, # ³ SUPERSCRIPT THREE 0x00B4, # ´ ACUTE ACCENT 0x00B5, # µ MICRO SIGN 0x00B6, # ¶ PILCROW SIGN 0x00B7, # · MIDDLE DOT 0x00B8, # ¸ CEDILLA 0x00B9, # ¹ SUPERSCRIPT ONE 0x00BA, # º MASCULINE ORDINAL INDICATOR 0x00BB, # » RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 0x00BD, # ½ VULGAR FRACTION ONE HALF 0x00BE, # ¾ VULGAR FRACTION THREE QUARTERS 0x00BF, # ¿ INVERTED QUESTION MARK 0x00C0, # À LATIN CAPITAL LETTER A WITH GRAVE 0x00C1, # Á LATIN CAPITAL LETTER A WITH ACUTE 0x00C2, #  LATIN CAPITAL LETTER A WITH CIRCUMFLEX 0x00C3, # à LATIN CAPITAL LETTER A WITH TILDE 0x00C4, # Ä LATIN CAPITAL LETTER A WITH DIAERESIS 0x00C5, # Å LATIN CAPITAL LETTER A WITH RING ABOVE 0x00C6, # Æ LATIN CAPITAL LETTER AE 0x00C7, # Ç LATIN CAPITAL LETTER C WITH CEDILLA 0x00C8, # È LATIN CAPITAL LETTER E WITH GRAVE 0x00C9, # É LATIN CAPITAL LETTER E WITH ACUTE 0x00CA, # Ê LATIN CAPITAL LETTER E WITH CIRCUMFLEX 0x00CB, # Ë LATIN CAPITAL LETTER E WITH DIAERESIS 0x00CC, # Ì LATIN CAPITAL LETTER I WITH GRAVE 0x00CD, # Í LATIN CAPITAL LETTER I WITH ACUTE 0x00CE, # Î LATIN CAPITAL LETTER I WITH CIRCUMFLEX 0x00CF, # Ï LATIN CAPITAL LETTER I WITH DIAERESIS 0x00D0, # Ð LATIN CAPITAL LETTER ETH 0x00D1, # Ñ LATIN CAPITAL LETTER N WITH TILDE 0x00D2, # Ò LATIN CAPITAL LETTER O WITH GRAVE 0x00D3, # Ó LATIN CAPITAL LETTER O WITH ACUTE 0x00D4, # Ô LATIN CAPITAL LETTER O WITH CIRCUMFLEX 0x00D5, # Õ LATIN CAPITAL LETTER O WITH TILDE 0x00D6, # Ö LATIN CAPITAL LETTER O WITH DIAERESIS 0x00D7, # × MULTIPLICATION SIGN 0x00D8, # Ø LATIN CAPITAL LETTER O WITH STROKE 0x00D9, # Ù LATIN CAPITAL LETTER U WITH GRAVE 0x00DA, # Ú LATIN CAPITAL LETTER U WITH ACUTE 0x00DB, # Û LATIN CAPITAL LETTER U WITH CIRCUMFLEX 0x00DC, # Ü LATIN CAPITAL LETTER U WITH DIAERESIS 0x00DD, # Ý LATIN CAPITAL LETTER Y WITH ACUTE 0x00DE, # Þ LATIN CAPITAL LETTER THORN 0x00DF, # ß LATIN SMALL LETTER SHARP S 0x00E0, # à LATIN SMALL LETTER A WITH GRAVE 0x00E1, # á LATIN SMALL LETTER A WITH ACUTE 0x00E2, # â LATIN SMALL LETTER A WITH CIRCUMFLEX 0x00E3, # ã LATIN SMALL LETTER A WITH TILDE 0x00E4, # ä LATIN SMALL LETTER A WITH DIAERESIS 0x00E5, # å LATIN SMALL LETTER A WITH RING ABOVE 0x00E6, # æ LATIN SMALL LETTER AE 0x00E7, # ç LATIN SMALL LETTER C WITH CEDILLA 0x00E8, # è LATIN SMALL LETTER E WITH GRAVE 0x00E9, # é LATIN SMALL LETTER E WITH ACUTE 0x00EA, # ê LATIN SMALL LETTER E WITH CIRCUMFLEX 0x00EB, # ë LATIN SMALL LETTER E WITH DIAERESIS 0x00EC, # ì LATIN SMALL LETTER I WITH GRAVE 0x00ED, # í LATIN SMALL LETTER I WITH ACUTE 0x00EE, # î LATIN SMALL LETTER I WITH CIRCUMFLEX 0x00EF, # ï LATIN SMALL LETTER I WITH DIAERESIS 0x00F0, # ð LATIN SMALL LETTER ETH 0x00F1, # ñ LATIN SMALL LETTER N WITH TILDE 0x00F2, # ò LATIN SMALL LETTER O WITH GRAVE 0x00F3, # ó LATIN SMALL LETTER O WITH ACUTE 0x00F4, # ô LATIN SMALL LETTER O WITH CIRCUMFLEX 0x00F5, # õ LATIN SMALL LETTER O WITH TILDE 0x00F6, # ö LATIN SMALL LETTER O WITH DIAERESIS 0x00F7, # ÷ DIVISION SIGN 0x00F8, # ø LATIN SMALL LETTER O WITH STROKE 0x00F9, # ù LATIN SMALL LETTER U WITH GRAVE 0x00FA, # ú LATIN SMALL LETTER U WITH ACUTE 0x00FB, # û LATIN SMALL LETTER U WITH CIRCUMFLEX 0x00FC, # ü LATIN SMALL LETTER U WITH DIAERESIS 0x00FD, # ý LATIN SMALL LETTER Y WITH ACUTE 0x00FE, # þ LATIN SMALL LETTER THORN 0x00FF, # ÿ LATIN SMALL LETTER Y WITH DIAERESIS 0x0100, # Ā LATIN CAPITAL LETTER A WITH MACRON 0x0101, # ā LATIN SMALL LETTER A WITH MACRON 0x0102, # Ă LATIN CAPITAL LETTER A WITH BREVE 0x0103, # ă LATIN SMALL LETTER A WITH BREVE 0x0104, # Ą LATIN CAPITAL LETTER A WITH OGONEK 0x0105, # ą LATIN SMALL LETTER A WITH OGONEK 0x0106, # Ć LATIN CAPITAL LETTER C WITH ACUTE 0x0107, # ć LATIN SMALL LETTER C WITH ACUTE 0x0108, # Ĉ LATIN CAPITAL LETTER C WITH CIRCUMFLEX 0x0109, # ĉ LATIN SMALL LETTER C WITH CIRCUMFLEX 0x010A, # Ċ LATIN CAPITAL LETTER C WITH DOT ABOVE 0x010B, # ċ LATIN SMALL LETTER C WITH DOT ABOVE 0x010C, # Č LATIN CAPITAL LETTER C WITH CARON 0x010D, # č LATIN SMALL LETTER C WITH CARON 0x010E, # Ď LATIN CAPITAL LETTER D WITH CARON 0x010F, # ď LATIN SMALL LETTER D WITH CARON 0x0110, # Đ LATIN CAPITAL LETTER D WITH STROKE 0x0111, # đ LATIN SMALL LETTER D WITH STROKE 0x0112, # Ē LATIN CAPITAL LETTER E WITH MACRON 0x0113, # ē LATIN SMALL LETTER E WITH MACRON 0x0114, # Ĕ LATIN CAPITAL LETTER E WITH BREVE 0x0115, # ĕ LATIN SMALL LETTER E WITH BREVE 0x0116, # Ė LATIN CAPITAL LETTER E WITH DOT ABOVE 0x0117, # ė LATIN SMALL LETTER E WITH DOT ABOVE 0x0118, # Ę LATIN CAPITAL LETTER E WITH OGONEK 0x0119, # ę LATIN SMALL LETTER E WITH OGONEK 0x011A, # Ě LATIN CAPITAL LETTER E WITH CARON 0x011B, # ě LATIN SMALL LETTER E WITH CARON 0x011C, # Ĝ LATIN CAPITAL LETTER G WITH CIRCUMFLEX 0x011D, # ĝ LATIN SMALL LETTER G WITH CIRCUMFLEX 0x011E, # Ğ LATIN CAPITAL LETTER G WITH BREVE 0x011F, # ğ LATIN SMALL LETTER G WITH BREVE 0x0120, # Ġ LATIN CAPITAL LETTER G WITH DOT ABOVE 0x0121, # ġ LATIN SMALL LETTER G WITH DOT ABOVE 0x0122, # Ģ LATIN CAPITAL LETTER G WITH CEDILLA 0x0123, # ģ LATIN SMALL LETTER G WITH CEDILLA 0x0124, # Ĥ LATIN CAPITAL LETTER H WITH CIRCUMFLEX 0x0125, # ĥ LATIN SMALL LETTER H WITH CIRCUMFLEX 0x0126, # Ħ LATIN CAPITAL LETTER H WITH STROKE 0x0127, # ħ LATIN SMALL LETTER H WITH STROKE 0x0128, # Ĩ LATIN CAPITAL LETTER I WITH TILDE 0x0129, # ĩ LATIN SMALL LETTER I WITH TILDE 0x012A, # Ī LATIN CAPITAL LETTER I WITH MACRON 0x012B, # ī LATIN SMALL LETTER I WITH MACRON 0x012C, # Ĭ LATIN CAPITAL LETTER I WITH BREVE 0x012D, # ĭ LATIN SMALL LETTER I WITH BREVE 0x012E, # Į LATIN CAPITAL LETTER I WITH OGONEK 0x012F, # į LATIN SMALL LETTER I WITH OGONEK 0x0130, # İ LATIN CAPITAL LETTER I WITH DOT ABOVE 0x0131, # ı LATIN SMALL LETTER DOTLESS I 0x0132, # IJ LATIN CAPITAL LIGATURE IJ 0x0133, # ij LATIN SMALL LIGATURE IJ 0x0134, # Ĵ LATIN CAPITAL LETTER J WITH CIRCUMFLEX 0x0135, # ĵ LATIN SMALL LETTER J WITH CIRCUMFLEX 0x0136, # Ķ LATIN CAPITAL LETTER K WITH CEDILLA 0x0137, # ķ LATIN SMALL LETTER K WITH CEDILLA 0x0138, # ĸ LATIN SMALL LETTER KRA 0x0139, # Ĺ LATIN CAPITAL LETTER L WITH ACUTE 0x013A, # ĺ LATIN SMALL LETTER L WITH ACUTE 0x013B, # Ļ LATIN CAPITAL LETTER L WITH CEDILLA 0x013C, # ļ LATIN SMALL LETTER L WITH CEDILLA 0x013D, # Ľ LATIN CAPITAL LETTER L WITH CARON 0x013E, # ľ LATIN SMALL LETTER L WITH CARON 0x013F, # Ŀ LATIN CAPITAL LETTER L WITH MIDDLE DOT 0x0140, # ŀ LATIN SMALL LETTER L WITH MIDDLE DOT 0x0141, # Ł LATIN CAPITAL LETTER L WITH STROKE 0x0142, # ł LATIN SMALL LETTER L WITH STROKE 0x0143, # Ń LATIN CAPITAL LETTER N WITH ACUTE 0x0144, # ń LATIN SMALL LETTER N WITH ACUTE 0x0145, # Ņ LATIN CAPITAL LETTER N WITH CEDILLA 0x0146, # ņ LATIN SMALL LETTER N WITH CEDILLA 0x0147, # Ň LATIN CAPITAL LETTER N WITH CARON 0x0148, # ň LATIN SMALL LETTER N WITH CARON 0x0149, # ʼn LATIN SMALL LETTER N PRECEDED BY APOSTROPHE 0x014A, # Ŋ LATIN CAPITAL LETTER ENG 0x014B, # ŋ LATIN SMALL LETTER ENG 0x014C, # Ō LATIN CAPITAL LETTER O WITH MACRON 0x014D, # ō LATIN SMALL LETTER O WITH MACRON 0x014E, # Ŏ LATIN CAPITAL LETTER O WITH BREVE 0x014F, # ŏ LATIN SMALL LETTER O WITH BREVE 0x0150, # Ő LATIN CAPITAL LETTER O WITH DOUBLE ACUTE 0x0151, # ő LATIN SMALL LETTER O WITH DOUBLE ACUTE 0x0152, # Œ LATIN CAPITAL LIGATURE OE 0x0153, # œ LATIN SMALL LIGATURE OE 0x0154, # Ŕ LATIN CAPITAL LETTER R WITH ACUTE 0x0155, # ŕ LATIN SMALL LETTER R WITH ACUTE 0x0156, # Ŗ LATIN CAPITAL LETTER R WITH CEDILLA 0x0157, # ŗ LATIN SMALL LETTER R WITH CEDILLA 0x0158, # Ř LATIN CAPITAL LETTER R WITH CARON 0x0159, # ř LATIN SMALL LETTER R WITH CARON 0x015A, # Ś LATIN CAPITAL LETTER S WITH ACUTE 0x015B, # ś LATIN SMALL LETTER S WITH ACUTE 0x015C, # Ŝ LATIN CAPITAL LETTER S WITH CIRCUMFLEX 0x015D, # ŝ LATIN SMALL LETTER S WITH CIRCUMFLEX 0x015E, # Ş LATIN CAPITAL LETTER S WITH CEDILLA 0x015F, # ş LATIN SMALL LETTER S WITH CEDILLA 0x0160, # Š LATIN CAPITAL LETTER S WITH CARON 0x0161, # š LATIN SMALL LETTER S WITH CARON 0x0162, # Ţ LATIN CAPITAL LETTER T WITH CEDILLA 0x0163, # ţ LATIN SMALL LETTER T WITH CEDILLA 0x0164, # Ť LATIN CAPITAL LETTER T WITH CARON 0x0165, # ť LATIN SMALL LETTER T WITH CARON 0x0166, # Ŧ LATIN CAPITAL LETTER T WITH STROKE 0x0167, # ŧ LATIN SMALL LETTER T WITH STROKE 0x0168, # Ũ LATIN CAPITAL LETTER U WITH TILDE 0x0169, # ũ LATIN SMALL LETTER U WITH TILDE 0x016A, # Ū LATIN CAPITAL LETTER U WITH MACRON 0x016B, # ū LATIN SMALL LETTER U WITH MACRON 0x016C, # Ŭ LATIN CAPITAL LETTER U WITH BREVE 0x016D, # ŭ LATIN SMALL LETTER U WITH BREVE 0x016E, # Ů LATIN CAPITAL LETTER U WITH RING ABOVE 0x016F, # ů LATIN SMALL LETTER U WITH RING ABOVE 0x0170, # Ű LATIN CAPITAL LETTER U WITH DOUBLE ACUTE 0x0171, # ű LATIN SMALL LETTER U WITH DOUBLE ACUTE 0x0172, # Ų LATIN CAPITAL LETTER U WITH OGONEK 0x0173, # ų LATIN SMALL LETTER U WITH OGONEK 0x0174, # Ŵ LATIN CAPITAL LETTER W WITH CIRCUMFLEX 0x0175, # ŵ LATIN SMALL LETTER W WITH CIRCUMFLEX 0x0176, # Ŷ LATIN CAPITAL LETTER Y WITH CIRCUMFLEX 0x0177, # ŷ LATIN SMALL LETTER Y WITH CIRCUMFLEX 0x0178, # Ÿ LATIN CAPITAL LETTER Y WITH DIAERESIS 0x0179, # Ź LATIN CAPITAL LETTER Z WITH ACUTE 0x017A, # ź LATIN SMALL LETTER Z WITH ACUTE 0x017B, # Ż LATIN CAPITAL LETTER Z WITH DOT ABOVE 0x017C, # ż LATIN SMALL LETTER Z WITH DOT ABOVE 0x017D, # Ž LATIN CAPITAL LETTER Z WITH CARON 0x017E, # ž LATIN SMALL LETTER Z WITH CARON 0x017F, # ſ LATIN SMALL LETTER LONG S 0x0192, # ƒ LATIN SMALL LETTER F WITH HOOK 0x01FA, # Ǻ LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE 0x01FB, # ǻ LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE 0x01FC, # Ǽ LATIN CAPITAL LETTER AE WITH ACUTE 0x01FD, # ǽ LATIN SMALL LETTER AE WITH ACUTE 0x01FE, # Ǿ LATIN CAPITAL LETTER O WITH STROKE AND ACUTE 0x01FF, # ǿ LATIN SMALL LETTER O WITH STROKE AND ACUTE 0x02C6, # ˆ MODIFIER LETTER CIRCUMFLEX ACCENT 0x02C7, # ˇ CARON 0x02C9, # ˉ MODIFIER LETTER MACRON 0x02D8, # ˘ BREVE 0x02D9, # ˙ DOT ABOVE 0x02DA, # ˚ RING ABOVE 0x02DB, # ˛ OGONEK 0x02DC, # ˜ SMALL TILDE 0x02DD, # ˝ DOUBLE ACUTE ACCENT 0x0384, # ΄ GREEK TONOS 0x0385, # ΅ GREEK DIALYTIKA TONOS 0x0386, # Ά GREEK CAPITAL LETTER ALPHA WITH TONOS 0x0387, # · GREEK ANO TELEIA 0x0388, # Έ GREEK CAPITAL LETTER EPSILON WITH TONOS 0x0389, # Ή GREEK CAPITAL LETTER ETA WITH TONOS 0x038A, # Ί GREEK CAPITAL LETTER IOTA WITH TONOS 0x038C, # Ό GREEK CAPITAL LETTER OMICRON WITH TONOS 0x038E, # Ύ GREEK CAPITAL LETTER UPSILON WITH TONOS 0x038F, # Ώ GREEK CAPITAL LETTER OMEGA WITH TONOS 0x0390, # ΐ GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS 0x0391, # Α GREEK CAPITAL LETTER ALPHA 0x0392, # Β GREEK CAPITAL LETTER BETA 0x0393, # Γ GREEK CAPITAL LETTER GAMMA 0x0394, # Δ GREEK CAPITAL LETTER DELTA 0x0395, # Ε GREEK CAPITAL LETTER EPSILON 0x0396, # Ζ GREEK CAPITAL LETTER ZETA 0x0397, # Η GREEK CAPITAL LETTER ETA 0x0398, # Θ GREEK CAPITAL LETTER THETA 0x0399, # Ι GREEK CAPITAL LETTER IOTA 0x039A, # Κ GREEK CAPITAL LETTER KAPPA 0x039B, # Λ GREEK CAPITAL LETTER LAMDA 0x039C, # Μ GREEK CAPITAL LETTER MU 0x039D, # Ν GREEK CAPITAL LETTER NU 0x039E, # Ξ GREEK CAPITAL LETTER XI 0x039F, # Ο GREEK CAPITAL LETTER OMICRON 0x03A0, # Π GREEK CAPITAL LETTER PI 0x03A1, # Ρ GREEK CAPITAL LETTER RHO 0x03A3, # Σ GREEK CAPITAL LETTER SIGMA 0x03A4, # Τ GREEK CAPITAL LETTER TAU 0x03A5, # Υ GREEK CAPITAL LETTER UPSILON 0x03A6, # Φ GREEK CAPITAL LETTER PHI 0x03A7, # Χ GREEK CAPITAL LETTER CHI 0x03A8, # Ψ GREEK CAPITAL LETTER PSI 0x03A9, # Ω GREEK CAPITAL LETTER OMEGA 0x03AA, # Ϊ GREEK CAPITAL LETTER IOTA WITH DIALYTIKA 0x03AB, # Ϋ GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA 0x03AC, # ά GREEK SMALL LETTER ALPHA WITH TONOS 0x03AD, # έ GREEK SMALL LETTER EPSILON WITH TONOS 0x03AE, # ή GREEK SMALL LETTER ETA WITH TONOS 0x03AF, # ί GREEK SMALL LETTER IOTA WITH TONOS 0x03B0, # ΰ GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS 0x03B1, # α GREEK SMALL LETTER ALPHA 0x03B2, # β GREEK SMALL LETTER BETA 0x03B3, # γ GREEK SMALL LETTER GAMMA 0x03B4, # δ GREEK SMALL LETTER DELTA 0x03B5, # ε GREEK SMALL LETTER EPSILON 0x03B6, # ζ GREEK SMALL LETTER ZETA 0x03B7, # η GREEK SMALL LETTER ETA 0x03B8, # θ GREEK SMALL LETTER THETA 0x03B9, # ι GREEK SMALL LETTER IOTA 0x03BA, # κ GREEK SMALL LETTER KAPPA 0x03BB, # λ GREEK SMALL LETTER LAMDA 0x03BC, # μ GREEK SMALL LETTER MU 0x03BD, # ν GREEK SMALL LETTER NU 0x03BE, # ξ GREEK SMALL LETTER XI 0x03BF, # ο GREEK SMALL LETTER OMICRON 0x03C0, # π GREEK SMALL LETTER PI 0x03C1, # ρ GREEK SMALL LETTER RHO 0x03C2, # ς GREEK SMALL LETTER FINAL SIGMA 0x03C3, # σ GREEK SMALL LETTER SIGMA 0x03C4, # τ GREEK SMALL LETTER TAU 0x03C5, # υ GREEK SMALL LETTER UPSILON 0x03C6, # φ GREEK SMALL LETTER PHI 0x03C7, # χ GREEK SMALL LETTER CHI 0x03C8, # ψ GREEK SMALL LETTER PSI 0x03C9, # ω GREEK SMALL LETTER OMEGA 0x03CA, # ϊ GREEK SMALL LETTER IOTA WITH DIALYTIKA 0x03CB, # ϋ GREEK SMALL LETTER UPSILON WITH DIALYTIKA 0x03CC, # ό GREEK SMALL LETTER OMICRON WITH TONOS 0x03CD, # ύ GREEK SMALL LETTER UPSILON WITH TONOS 0x03CE, # ώ GREEK SMALL LETTER OMEGA WITH TONOS 0x0400, # Ѐ CYRILLIC CAPITAL LETTER IE WITH GRAVE 0x0401, # Ё CYRILLIC CAPITAL LETTER IO 0x0402, # Ђ CYRILLIC CAPITAL LETTER DJE 0x0403, # Ѓ CYRILLIC CAPITAL LETTER GJE 0x0404, # Є CYRILLIC CAPITAL LETTER UKRAINIAN IE 0x0405, # Ѕ CYRILLIC CAPITAL LETTER DZE 0x0406, # І CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I 0x0407, # Ї CYRILLIC CAPITAL LETTER YI 0x0408, # Ј CYRILLIC CAPITAL LETTER JE 0x0409, # Љ CYRILLIC CAPITAL LETTER LJE 0x040A, # Њ CYRILLIC CAPITAL LETTER NJE 0x040B, # Ћ CYRILLIC CAPITAL LETTER TSHE 0x040C, # Ќ CYRILLIC CAPITAL LETTER KJE 0x040D, # Ѝ CYRILLIC CAPITAL LETTER I WITH GRAVE 0x040E, # Ў CYRILLIC CAPITAL LETTER SHORT U 0x040F, # Џ CYRILLIC CAPITAL LETTER DZHE 0x0410, # А CYRILLIC CAPITAL LETTER A 0x0411, # Б CYRILLIC CAPITAL LETTER BE 0x0412, # В CYRILLIC CAPITAL LETTER VE 0x0413, # Г CYRILLIC CAPITAL LETTER GHE 0x0414, # Д CYRILLIC CAPITAL LETTER DE 0x0415, # Е CYRILLIC CAPITAL LETTER IE 0x0416, # Ж CYRILLIC CAPITAL LETTER ZHE 0x0417, # З CYRILLIC CAPITAL LETTER ZE 0x0418, # И CYRILLIC CAPITAL LETTER I 0x0419, # Й CYRILLIC CAPITAL LETTER SHORT I 0x041A, # К CYRILLIC CAPITAL LETTER KA 0x041B, # Л CYRILLIC CAPITAL LETTER EL 0x041C, # М CYRILLIC CAPITAL LETTER EM 0x041D, # Н CYRILLIC CAPITAL LETTER EN 0x041E, # О CYRILLIC CAPITAL LETTER O 0x041F, # П CYRILLIC CAPITAL LETTER PE 0x0420, # Р CYRILLIC CAPITAL LETTER ER 0x0421, # С CYRILLIC CAPITAL LETTER ES 0x0422, # Т CYRILLIC CAPITAL LETTER TE 0x0423, # У CYRILLIC CAPITAL LETTER U 0x0424, # Ф CYRILLIC CAPITAL LETTER EF 0x0425, # Х CYRILLIC CAPITAL LETTER HA 0x0426, # Ц CYRILLIC CAPITAL LETTER TSE 0x0427, # Ч CYRILLIC CAPITAL LETTER CHE 0x0428, # Ш CYRILLIC CAPITAL LETTER SHA 0x0429, # Щ CYRILLIC CAPITAL LETTER SHCHA 0x042A, # Ъ CYRILLIC CAPITAL LETTER HARD SIGN 0x042B, # Ы CYRILLIC CAPITAL LETTER YERU 0x042C, # Ь CYRILLIC CAPITAL LETTER SOFT SIGN 0x042D, # Э CYRILLIC CAPITAL LETTER E 0x042E, # Ю CYRILLIC CAPITAL LETTER YU 0x042F, # Я CYRILLIC CAPITAL LETTER YA 0x0430, # а CYRILLIC SMALL LETTER A 0x0431, # б CYRILLIC SMALL LETTER BE 0x0432, # в CYRILLIC SMALL LETTER VE 0x0433, # г CYRILLIC SMALL LETTER GHE 0x0434, # д CYRILLIC SMALL LETTER DE 0x0435, # е CYRILLIC SMALL LETTER IE 0x0436, # ж CYRILLIC SMALL LETTER ZHE 0x0437, # з CYRILLIC SMALL LETTER ZE 0x0438, # и CYRILLIC SMALL LETTER I 0x0439, # й CYRILLIC SMALL LETTER SHORT I 0x043A, # к CYRILLIC SMALL LETTER KA 0x043B, # л CYRILLIC SMALL LETTER EL 0x043C, # м CYRILLIC SMALL LETTER EM 0x043D, # н CYRILLIC SMALL LETTER EN 0x043E, # о CYRILLIC SMALL LETTER O 0x043F, # п CYRILLIC SMALL LETTER PE 0x0440, # р CYRILLIC SMALL LETTER ER 0x0441, # с CYRILLIC SMALL LETTER ES 0x0442, # т CYRILLIC SMALL LETTER TE 0x0443, # у CYRILLIC SMALL LETTER U 0x0444, # ф CYRILLIC SMALL LETTER EF 0x0445, # х CYRILLIC SMALL LETTER HA 0x0446, # ц CYRILLIC SMALL LETTER TSE 0x0447, # ч CYRILLIC SMALL LETTER CHE 0x0448, # ш CYRILLIC SMALL LETTER SHA 0x0449, # щ CYRILLIC SMALL LETTER SHCHA 0x044A, # ъ CYRILLIC SMALL LETTER HARD SIGN 0x044B, # ы CYRILLIC SMALL LETTER YERU 0x044C, # ь CYRILLIC SMALL LETTER SOFT SIGN 0x044D, # э CYRILLIC SMALL LETTER E 0x044E, # ю CYRILLIC SMALL LETTER YU 0x044F, # я CYRILLIC SMALL LETTER YA 0x0450, # ѐ CYRILLIC SMALL LETTER IE WITH GRAVE 0x0451, # ё CYRILLIC SMALL LETTER IO 0x0452, # ђ CYRILLIC SMALL LETTER DJE 0x0453, # ѓ CYRILLIC SMALL LETTER GJE 0x0454, # є CYRILLIC SMALL LETTER UKRAINIAN IE 0x0455, # ѕ CYRILLIC SMALL LETTER DZE 0x0456, # і CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I 0x0457, # ї CYRILLIC SMALL LETTER YI 0x0458, # ј CYRILLIC SMALL LETTER JE 0x0459, # љ CYRILLIC SMALL LETTER LJE 0x045A, # њ CYRILLIC SMALL LETTER NJE 0x045B, # ћ CYRILLIC SMALL LETTER TSHE 0x045C, # ќ CYRILLIC SMALL LETTER KJE 0x045D, # ѝ CYRILLIC SMALL LETTER I WITH GRAVE 0x045E, # ў CYRILLIC SMALL LETTER SHORT U 0x045F, # џ CYRILLIC SMALL LETTER DZHE 0x0490, # Ґ CYRILLIC CAPITAL LETTER GHE WITH UPTURN 0x0491, # ґ CYRILLIC SMALL LETTER GHE WITH UPTURN 0x1E80, # Ẁ LATIN CAPITAL LETTER W WITH GRAVE 0x1E81, # ẁ LATIN SMALL LETTER W WITH GRAVE 0x1E82, # Ẃ LATIN CAPITAL LETTER W WITH ACUTE 0x1E83, # ẃ LATIN SMALL LETTER W WITH ACUTE 0x1E84, # Ẅ LATIN CAPITAL LETTER W WITH DIAERESIS 0x1E85, # ẅ LATIN SMALL LETTER W WITH DIAERESIS 0x1EF2, # Ỳ LATIN CAPITAL LETTER Y WITH GRAVE 0x1EF3, # ỳ LATIN SMALL LETTER Y WITH GRAVE 0x2014, # — EM DASH 0x2015, # ― HORIZONTAL BAR 0x2017, # ‗ DOUBLE LOW LINE 0x2018, # ‘ LEFT SINGLE QUOTATION MARK 0x2019, # ’ RIGHT SINGLE QUOTATION MARK 0x201A, # ‚ SINGLE LOW-9 QUOTATION MARK 0x201B, # ‛ SINGLE HIGH-REVERSED-9 QUOTATION MARK 0x201C, # “ LEFT DOUBLE QUOTATION MARK 0x201D, # ” RIGHT DOUBLE QUOTATION MARK 0x201E, # „ DOUBLE LOW-9 QUOTATION MARK 0x2020, # † DAGGER 0x2021, # ‡ DOUBLE DAGGER 0x2022, # • BULLET 0x2026, # … HORIZONTAL ELLIPSIS 0x2030, # ‰ PER MILLE SIGN 0x2032, # ′ PRIME 0x2033, # ″ DOUBLE PRIME 0x2039, # ‹ SINGLE LEFT-POINTING ANGLE QUOTATION MARK 0x203A, # › SINGLE RIGHT-POINTING ANGLE QUOTATION MARK 0x203C, # ‼ DOUBLE EXCLAMATION MARK 0x203E, # ‾ OVERLINE 0x2044, # ⁄ FRACTION SLASH 0x207F, # ⁿ SUPERSCRIPT LATIN SMALL LETTER N 0x20A3, # ₣ FRENCH FRANC SIGN 0x20A4, # ₤ LIRA SIGN 0x20A7, # ₧ PESETA SIGN 0x20AC, # € EURO SIGN 0x2105, # ℅ CARE OF 0x2113, # ℓ SCRIPT SMALL L 0x2116, # № NUMERO SIGN 0x2122, # ™ TRADE MARK SIGN 0x2126, # Ω OHM SIGN 0x212E, # ℮ ESTIMATED SYMBOL 0x215B, # ⅛ VULGAR FRACTION ONE EIGHTH 0x215C, # ⅜ VULGAR FRACTION THREE EIGHTHS 0x215D, # ⅝ VULGAR FRACTION FIVE EIGHTHS 0x215E, # ⅞ VULGAR FRACTION SEVEN EIGHTHS 0x2190, # ← LEFTWARDS ARROW 0x2191, # ↑ UPWARDS ARROW 0x2192, # → RIGHTWARDS ARROW 0x2193, # ↓ DOWNWARDS ARROW 0x2194, # ↔ LEFT RIGHT ARROW 0x2195, # ↕ UP DOWN ARROW 0x21A8, # ↨ UP DOWN ARROW WITH BASE 0x2202, # ∂ PARTIAL DIFFERENTIAL 0x2206, # ∆ INCREMENT 0x220F, # ∏ N-ARY PRODUCT 0x2211, # ∑ N-ARY SUMMATION 0x2212, # − MINUS SIGN 0x2215, # ∕ DIVISION SLASH 0x2219, # ∙ BULLET OPERATOR 0x221A, # √ SQUARE ROOT 0x221E, # ∞ INFINITY 0x221F, # ∟ RIGHT ANGLE 0x2229, # ∩ INTERSECTION 0x222B, # ∫ INTEGRAL 0x2248, # ≈ ALMOST EQUAL TO 0x2260, # ≠ NOT EQUAL TO 0x2261, # ≡ IDENTICAL TO 0x2264, # ≤ LESS-THAN OR EQUAL TO 0x2265, # ≥ GREATER-THAN OR EQUAL TO 0x2302, # ⌂ HOUSE 0x2310, # ⌐ REVERSED NOT SIGN 0x2320, # ⌠ TOP HALF INTEGRAL 0x2321, # ⌡ BOTTOM HALF INTEGRAL 0x2500, # ─ BOX DRAWINGS LIGHT HORIZONTAL 0x2502, # │ BOX DRAWINGS LIGHT VERTICAL 0x250C, # ┌ BOX DRAWINGS LIGHT DOWN AND RIGHT 0x2510, # ┐ BOX DRAWINGS LIGHT DOWN AND LEFT 0x2514, # └ BOX DRAWINGS LIGHT UP AND RIGHT 0x2518, # ┘ BOX DRAWINGS LIGHT UP AND LEFT 0x251C, # ├ BOX DRAWINGS LIGHT VERTICAL AND RIGHT 0x2524, # ┤ BOX DRAWINGS LIGHT VERTICAL AND LEFT 0x252C, # ┬ BOX DRAWINGS LIGHT DOWN AND HORIZONTAL 0x2534, # ┴ BOX DRAWINGS LIGHT UP AND HORIZONTAL 0x253C, # ┼ BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL 0x2550, # ═ BOX DRAWINGS DOUBLE HORIZONTAL 0x2551, # ║ BOX DRAWINGS DOUBLE VERTICAL 0x2552, # ╒ BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE 0x2553, # ╓ BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE 0x2554, # ╔ BOX DRAWINGS DOUBLE DOWN AND RIGHT 0x2555, # ╕ BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE 0x2556, # ╖ BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE 0x2557, # ╗ BOX DRAWINGS DOUBLE DOWN AND LEFT 0x2558, # ╘ BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE 0x2559, # ╙ BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE 0x255A, # ╚ BOX DRAWINGS DOUBLE UP AND RIGHT 0x255B, # ╛ BOX DRAWINGS UP SINGLE AND LEFT DOUBLE 0x255C, # ╜ BOX DRAWINGS UP DOUBLE AND LEFT SINGLE 0x255D, # ╝ BOX DRAWINGS DOUBLE UP AND LEFT 0x255E, # ╞ BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE 0x255F, # ╟ BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE 0x2560, # ╠ BOX DRAWINGS DOUBLE VERTICAL AND RIGHT 0x2561, # ╡ BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE 0x2562, # ╢ BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE 0x2563, # ╣ BOX DRAWINGS DOUBLE VERTICAL AND LEFT 0x2564, # ╤ BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE 0x2565, # ╥ BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE 0x2566, # ╦ BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL 0x2567, # ╧ BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE 0x2568, # ╨ BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE 0x2569, # ╩ BOX DRAWINGS DOUBLE UP AND HORIZONTAL 0x256A, # ╪ BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE 0x256B, # ╫ BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE 0x256C, # ╬ BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL 0x2580, # ▀ UPPER HALF BLOCK 0x2584, # ▄ LOWER HALF BLOCK 0x2588, # █ FULL BLOCK 0x258C, # ▌ LEFT HALF BLOCK 0x2590, # ▐ RIGHT HALF BLOCK 0x2591, # ░ LIGHT SHADE 0x2592, # ▒ MEDIUM SHADE 0x2593, # ▓ DARK SHADE 0x25A0, # ■ BLACK SQUARE 0x25A1, # □ WHITE SQUARE 0x25AA, # ▪ BLACK SMALL SQUARE 0x25AB, # ▫ WHITE SMALL SQUARE 0x25AC, # ▬ BLACK RECTANGLE 0x25B2, # ▲ BLACK UP-POINTING TRIANGLE 0x25BA, # ► BLACK RIGHT-POINTING POINTER 0x25BC, # ▼ BLACK DOWN-POINTING TRIANGLE 0x25C4, # ◄ BLACK LEFT-POINTING POINTER 0x25CA, # ◊ LOZENGE 0x25CB, # ○ WHITE CIRCLE 0x25CF, # ● BLACK CIRCLE 0x25D8, # ◘ INVERSE BULLET 0x25D9, # ◙ INVERSE WHITE CIRCLE 0x25E6, # ◦ WHITE BULLET 0x263A, # ☺ WHITE SMILING FACE 0x263B, # ☻ BLACK SMILING FACE 0x263C, # ☼ WHITE SUN WITH RAYS 0x2640, # ♀ FEMALE SIGN 0x2642, # ♂ MALE SIGN 0x2660, # ♠ BLACK SPADE SUIT 0x2663, # ♣ BLACK CLUB SUIT 0x2665, # ♥ BLACK HEART SUIT 0x2666, # ♦ BLACK DIAMOND SUIT 0x266A, # ♪ EIGHTH NOTE 0x266B, # ♫ BEAMED EIGHTH NOTES 0xF001, #  0xF002, #  0xFB01, # fi LATIN SMALL LIGATURE FI 0xFB02, # fl LATIN SMALL LIGATURE FL ] # From https://sites.google.com/site/unicodesymbols/Home/japanese-tv-symbols/arib-unicode-mapping-table # With additions from http://www.arib.or.jp/english/html/overview/doc/2-STD-B62v1_0-1p2.pdf ARIB = [ 0x00B2, # ² SUPERSCRIPT TWO 0x00B3, # ³ SUPERSCRIPT THREE 0x00BC, # ¼ VULGAR FRACTION ONE QUARTER 0x00BD, # ½ VULGAR FRACTION ONE HALF 0x00BE, # ¾ VULGAR FRACTION THREE QUARTERS 0x0FD6, # ࿖ LEFT-FACING SVASTI SIGN 0x203C, # ‼ DOUBLE EXCLAMATION MARK 0x2049, # ⁉ EXCLAMATION QUESTION MARK 0x2113, # ℓ SCRIPT SMALL L 0x2116, # № NUMERO SIGN 0x2121, # ℡ TELEPHONE SIGN 0x213B, # ℻ FACSIMILE SIGN 0x2150, # ⅐ VULGAR FRACTION ONE SEVENTH 0x2151, # ⅑ VULGAR FRACTION ONE NINTH 0x2152, # ⅒ VULGAR FRACTION ONE TENTH 0x2153, # ⅓ VULGAR FRACTION ONE THIRD 0x2154, # ⅔ VULGAR FRACTION TWO THIRDS 0x2155, # ⅕ VULGAR FRACTION ONE FIFTH 0x2156, # ⅖ VULGAR FRACTION TWO FIFTHS 0x2157, # ⅗ VULGAR FRACTION THREE FIFTHS 0x2158, # ⅘ VULGAR FRACTION FOUR FIFTHS 0x2159, # ⅙ VULGAR FRACTION ONE SIXTH 0x215A, # ⅚ VULGAR FRACTION FIVE SIXTHS 0x215B, # ⅛ VULGAR FRACTION ONE EIGHTH 0x2160, # Ⅰ ROMAN NUMERAL ONE 0x2161, # Ⅱ ROMAN NUMERAL TWO 0x2162, # Ⅲ ROMAN NUMERAL THREE 0x2163, # Ⅳ ROMAN NUMERAL FOUR 0x2164, # Ⅴ ROMAN NUMERAL FIVE 0x2165, # Ⅵ ROMAN NUMERAL SIX 0x2166, # Ⅶ ROMAN NUMERAL SEVEN 0x2167, # Ⅷ ROMAN NUMERAL EIGHT 0x2168, # Ⅸ ROMAN NUMERAL NINE 0x2169, # Ⅹ ROMAN NUMERAL TEN 0x216A, # Ⅺ ROMAN NUMERAL ELEVEN 0x216B, # Ⅻ ROMAN NUMERAL TWELVE 0x2189, # ↉ VULGAR FRACTION ZERO THIRDS 0x2460, # ① CIRCLED DIGIT ONE 0x2461, # ② CIRCLED DIGIT TWO 0x2462, # ③ CIRCLED DIGIT THREE 0x2463, # ④ CIRCLED DIGIT FOUR 0x2464, # ⑤ CIRCLED DIGIT FIVE 0x2465, # ⑥ CIRCLED DIGIT SIX 0x2466, # ⑦ CIRCLED DIGIT SEVEN 0x2467, # ⑧ CIRCLED DIGIT EIGHT 0x2468, # ⑨ CIRCLED DIGIT NINE 0x2469, # ⑩ CIRCLED NUMBER TEN 0x246A, # ⑪ CIRCLED NUMBER ELEVEN 0x246B, # ⑫ CIRCLED NUMBER TWELVE 0x246C, # ⑬ CIRCLED NUMBER THIRTEEN 0x246D, # ⑭ CIRCLED NUMBER FOURTEEN 0x246E, # ⑮ CIRCLED NUMBER FIFTEEN 0x246F, # ⑯ CIRCLED NUMBER SIXTEEN 0x2470, # ⑰ CIRCLED NUMBER SEVENTEEN 0x2471, # ⑱ CIRCLED NUMBER EIGHTEEN 0x2472, # ⑲ CIRCLED NUMBER NINETEEN 0x2473, # ⑳ CIRCLED NUMBER TWENTY 0x2474, # ⑴ PARENTHESIZED DIGIT ONE 0x2475, # ⑵ PARENTHESIZED DIGIT TWO 0x2476, # ⑶ PARENTHESIZED DIGIT THREE 0x2477, # ⑷ PARENTHESIZED DIGIT FOUR 0x2478, # ⑸ PARENTHESIZED DIGIT FIVE 0x2479, # ⑹ PARENTHESIZED DIGIT SIX 0x247A, # ⑺ PARENTHESIZED DIGIT SEVEN 0x247B, # ⑻ PARENTHESIZED DIGIT EIGHT 0x247C, # ⑼ PARENTHESIZED DIGIT NINE 0x247D, # ⑽ PARENTHESIZED NUMBER TEN 0x247E, # ⑾ PARENTHESIZED NUMBER ELEVEN 0x247F, # ⑿ PARENTHESIZED NUMBER TWELVE 0x2488, # ⒈ DIGIT ONE FULL STOP 0x2489, # ⒉ DIGIT TWO FULL STOP 0x248A, # ⒊ DIGIT THREE FULL STOP 0x248B, # ⒋ DIGIT FOUR FULL STOP 0x248C, # ⒌ DIGIT FIVE FULL STOP 0x248D, # ⒍ DIGIT SIX FULL STOP 0x248E, # ⒎ DIGIT SEVEN FULL STOP 0x248F, # ⒏ DIGIT EIGHT FULL STOP 0x2490, # ⒐ DIGIT NINE FULL STOP 0x2491, # ⒑ NUMBER TEN FULL STOP 0x2492, # ⒒ NUMBER ELEVEN FULL STOP 0x2493, # ⒓ NUMBER TWELVE FULL STOP 0x24B9, # Ⓓ CIRCLED LATIN CAPITAL LETTER D 0x24C8, # Ⓢ CIRCLED LATIN CAPITAL LETTER S 0x24EB, # ⓫ NEGATIVE CIRCLED NUMBER ELEVEN 0x24EC, # ⓬ NEGATIVE CIRCLED NUMBER TWELVE 0x25B6, # ▶ BLACK RIGHT-POINTING TRIANGLE 0x25C0, # ◀ BLACK LEFT-POINTING TRIANGLE 0x2600, # ☀ BLACK SUN WITH RAYS 0x2601, # ☁ CLOUD 0x2602, # ☂ UMBRELLA 0x2603, # ☃ SNOWMAN 0x260E, # ☎ BLACK TELEPHONE 0x2613, # ☓ SALTIRE 0x2614, # ☔ UMBRELLA WITH RAIN DROPS 0x2616, # ☖ WHITE SHOGI PIECE 0x2617, # ☗ BLACK SHOGI PIECE 0x2660, # ♠ BLACK SPADE SUIT 0x2663, # ♣ BLACK CLUB SUIT 0x2665, # ♥ BLACK HEART SUIT 0x2666, # ♦ BLACK DIAMOND SUIT 0x2668, # ♨ HOT SPRINGS 0x266C, # ♬ BEAMED SIXTEENTH NOTES 0x2693, # ⚓ ANCHOR 0x269E, # ⚞ THREE LINES CONVERGING RIGHT 0x269F, # ⚟ THREE LINES CONVERGING LEFT 0x26A1, # ⚡ HIGH VOLTAGE SIGN 0x26BE, # ⚾ BASEBALL 0x26BF, # ⚿ SQUARED KEY 0x26C4, # ⛄ SNOWMAN WITHOUT SNOW 0x26C5, # ⛅ SUN BEHIND CLOUD 0x26C6, # ⛆ RAIN 0x26C7, # ⛇ BLACK SNOWMAN 0x26C8, # ⛈ THUNDER CLOUD AND RAIN 0x26C9, # ⛉ TURNED WHITE SHOGI PIECE 0x26CA, # ⛊ TURNED BLACK SHOGI PIECE 0x26CB, # ⛋ WHITE DIAMOND IN SQUARE 0x26CC, # ⛌ CROSSING LANES 0x26CD, # ⛍ DISABLED CAR 0x26CE, # ⛎ OPHIUCHUS 0x26CF, # ⛏ PICK 0x26D0, # ⛐ CAR SLIDING 0x26D1, # ⛑ HELMET WITH WHITE CROSS 0x26D2, # ⛒ CIRCLED CROSSING LANES 0x26D3, # ⛓ CHAINS 0x26D4, # ⛔ NO ENTRY 0x26D5, # ⛕ ALTERNATE ONE-WAY LEFT WAY TRAFFIC 0x26D6, # ⛖ BLACK TWO-WAY LEFT WAY TRAFFIC 0x26D7, # ⛗ WHITE TWO-WAY LEFT WAY TRAFFIC 0x26D8, # ⛘ BLACK LEFT LANE MERGE 0x26D9, # ⛙ WHITE LEFT LANE MERGE 0x26DA, # ⛚ DRIVE SLOW SIGN 0x26DB, # ⛛ HEAVY WHITE DOWN-POINTING TRIANGLE 0x26DC, # ⛜ LEFT CLOSED ENTRY 0x26DD, # ⛝ SQUARED SALTIRE 0x26DE, # ⛞ FALLING DIAGONAL IN WHITE CIRCLE IN BLACK SQUARE 0x26DF, # ⛟ BLACK TRUCK 0x26E0, # ⛠ RESTRICTED LEFT ENTRY-1 0x26E1, # ⛡ RESTRICTED LEFT ENTRY-2 0x26E2, # ⛢ ASTRONOMICAL SYMBOL FOR URANUS 0x26E3, # ⛣ HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE 0x26E4, # ⛤ PENTAGRAM 0x26E5, # ⛥ RIGHT-HANDED INTERLACED PENTAGRAM 0x26E6, # ⛦ LEFT-HANDED INTERLACED PENTAGRAM 0x26E7, # ⛧ INVERTED PENTAGRAM 0x26E8, # ⛨ BLACK CROSS ON SHIELD 0x26E9, # ⛩ SHINTO SHRINE 0x26EA, # ⛪ CHURCH 0x26EB, # ⛫ CASTLE 0x26EC, # ⛬ HISTORIC SITE 0x26ED, # ⛭ GEAR WITHOUT HUB 0x26EE, # ⛮ GEAR WITH HANDLES 0x26EF, # ⛯ MAP SYMBOL FOR LIGHTHOUSE 0x26F0, # ⛰ MOUNTAIN 0x26F1, # ⛱ UMBRELLA ON GROUND 0x26F2, # ⛲ FOUNTAIN 0x26F3, # ⛳ FLAG IN HOLE 0x26F4, # ⛴ FERRY 0x26F5, # ⛵ SAILBOAT 0x26F6, # ⛶ SQUARE FOUR CORNERS 0x26F7, # ⛷ SKIER 0x26F8, # ⛸ ICE SKATE 0x26F9, # ⛹ PERSON WITH BALL 0x26FA, # ⛺ TENT 0x26FB, # ⛻ JAPANESE BANK SYMBOL 0x26FC, # ⛼ HEADSTONE GRAVEYARD SYMBOL 0x26FD, # ⛽ FUEL PUMP 0x26FE, # ⛾ CUP ON BLACK SQUARE 0x26FF, # ⛿ WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE 0x2708, # ✈ AIRPLANE 0x2757, # ❗ HEAVY EXCLAMATION MARK SYMBOL 0x2776, # ❶ DINGBAT NEGATIVE CIRCLED DIGIT ONE 0x2777, # ❷ DINGBAT NEGATIVE CIRCLED DIGIT TWO 0x2778, # ❸ DINGBAT NEGATIVE CIRCLED DIGIT THREE 0x2779, # ❹ DINGBAT NEGATIVE CIRCLED DIGIT FOUR 0x277A, # ❺ DINGBAT NEGATIVE CIRCLED DIGIT FIVE 0x277B, # ❻ DINGBAT NEGATIVE CIRCLED DIGIT SIX 0x277C, # ❼ DINGBAT NEGATIVE CIRCLED DIGIT SEVEN 0x277D, # ❽ DINGBAT NEGATIVE CIRCLED DIGIT EIGHT 0x277E, # ❾ DINGBAT NEGATIVE CIRCLED DIGIT NINE 0x277F, # ❿ DINGBAT NEGATIVE CIRCLED NUMBER TEN 0x27A1, # ➡ BLACK RIGHTWARDS ARROW 0x27D0, # ⟐ WHITE DIAMOND WITH CENTRED DOT 0x2A00, # ⨀ N-ARY CIRCLED DOT OPERATOR 0x2B05, # ⬅ LEFTWARDS BLACK ARROW 0x2B06, # ⬆ UPWARDS BLACK ARROW 0x2B07, # ⬇ DOWNWARDS BLACK ARROW 0x2B1B, # ⬛ BLACK LARGE SQUARE 0x2B24, # ⬤ BLACK LARGE CIRCLE 0x2B2E, # ⬮ BLACK VERTICAL ELLIPSE 0x2B2F, # ⬯ WHITE VERTICAL ELLIPSE 0x2B55, # ⭕ HEAVY LARGE CIRCLE 0x2B56, # ⭖ HEAVY OVAL WITH OVAL INSIDE 0x2B57, # ⭗ HEAVY CIRCLE WITH CIRCLE INSIDE 0x2B58, # ⭘ HEAVY CIRCLE 0x2B59, # ⭙ HEAVY CIRCLED SALTIRE 0x3012, # 〒 POSTAL MARK 0x3016, # 〖 LEFT WHITE LENTICULAR BRACKET 0x3017, # 〗 RIGHT WHITE LENTICULAR BRACKET 0x3036, # 〶 CIRCLED POSTAL MARK 0x322A, # ㈪ PARENTHESIZED IDEOGRAPH MOON 0x322B, # ㈫ PARENTHESIZED IDEOGRAPH FIRE 0x322C, # ㈬ PARENTHESIZED IDEOGRAPH WATER 0x322D, # ㈭ PARENTHESIZED IDEOGRAPH WOOD 0x322E, # ㈮ PARENTHESIZED IDEOGRAPH METAL 0x322F, # ㈯ PARENTHESIZED IDEOGRAPH EARTH 0x3230, # ㈰ PARENTHESIZED IDEOGRAPH SUN 0x3231, # ㈱ PARENTHESIZED IDEOGRAPH STOCK 0x3232, # ㈲ PARENTHESIZED IDEOGRAPH HAVE 0x3233, # ㈳ PARENTHESIZED IDEOGRAPH SOCIETY 0x3236, # ㈶ PARENTHESIZED IDEOGRAPH FINANCIAL 0x3237, # ㈷ PARENTHESIZED IDEOGRAPH CONGRATULATION 0x3239, # ㈹ PARENTHESIZED IDEOGRAPH REPRESENT 0x3244, # ㉄ CIRCLED IDEOGRAPH QUESTION 0x3245, # ㉅ CIRCLED IDEOGRAPH KINDERGARTEN 0x3246, # ㉆ CIRCLED IDEOGRAPH SCHOOL 0x3247, # ㉇ CIRCLED IDEOGRAPH KOTO 0x3248, # ㉈ CIRCLED NUMBER TEN ON BLACK SQUARE 0x3249, # ㉉ CIRCLED NUMBER TWENTY ON BLACK SQUARE 0x324A, # ㉊ CIRCLED NUMBER THIRTY ON BLACK SQUARE 0x324B, # ㉋ CIRCLED NUMBER FORTY ON BLACK SQUARE 0x324C, # ㉌ CIRCLED NUMBER FIFTY ON BLACK SQUARE 0x324D, # ㉍ CIRCLED NUMBER SIXTY ON BLACK SQUARE 0x324E, # ㉎ CIRCLED NUMBER SEVENTY ON BLACK SQUARE 0x324F, # ㉏ CIRCLED NUMBER EIGHTY ON BLACK SQUARE 0x3251, # ㉑ CIRCLED NUMBER TWENTY ONE 0x3252, # ㉒ CIRCLED NUMBER TWENTY TWO 0x3253, # ㉓ CIRCLED NUMBER TWENTY THREE 0x3254, # ㉔ CIRCLED NUMBER TWENTY FOUR 0x3255, # ㉕ CIRCLED NUMBER TWENTY FIVE 0x3256, # ㉖ CIRCLED NUMBER TWENTY SIX 0x3257, # ㉗ CIRCLED NUMBER TWENTY SEVEN 0x3258, # ㉘ CIRCLED NUMBER TWENTY EIGHT 0x3259, # ㉙ CIRCLED NUMBER TWENTY NINE 0x325A, # ㉚ CIRCLED NUMBER THIRTY 0x325B, # ㉛ CIRCLED NUMBER THIRTY ONE 0x328B, # ㊋ CIRCLED IDEOGRAPH FIRE 0x3299, # ㊙ CIRCLED IDEOGRAPH SECRET 0x3371, # ㍱ SQUARE HPA 0x337B, # ㍻ SQUARE ERA NAME HEISEI 0x337C, # ㍼ SQUARE ERA NAME SYOUWA 0x337D, # ㍽ SQUARE ERA NAME TAISYOU 0x337E, # ㍾ SQUARE ERA NAME MEIZI 0x338F, # ㎏ SQUARE KG 0x3390, # ㎐ SQUARE HZ 0x339D, # ㎝ SQUARE CM 0x339E, # ㎞ SQUARE KM 0x33A0, # ㎠ SQUARE CM SQUARED 0x33A1, # ㎡ SQUARE M SQUARED 0x33A2, # ㎢ SQUARE KM SQUARED 0x33A4, # ㎤ SQUARE CM CUBED 0x33A5, # ㎥ SQUARE M CUBED 0x33CA, # ㏊ SQUARE HA 0x3EDA, # 㻚 CJK UNIFIED IDEOGRAPH-3EDA 0x4103, # 䄃 CJK UNIFIED IDEOGRAPH-4103 0x5186, # 円 CJK UNIFIED IDEOGRAPH-5186 0x56E4, # 囤 CJK UNIFIED IDEOGRAPH-56E4 0x5880, # 墀 CJK UNIFIED IDEOGRAPH-5880 0x5E74, # 年 CJK UNIFIED IDEOGRAPH-5E74 0x65E5, # 日 CJK UNIFIED IDEOGRAPH-65E5 0x6708, # 月 CJK UNIFIED IDEOGRAPH-6708 0x6911, # 椑 CJK UNIFIED IDEOGRAPH-6911 0x6DF8, # 淸 CJK UNIFIED IDEOGRAPH-6DF8 0x7421, # 琡 CJK UNIFIED IDEOGRAPH-7421 0x7575, # 畵 CJK UNIFIED IDEOGRAPH-7575 0x79DA, # 秚 CJK UNIFIED IDEOGRAPH-79DA 0x7FA1, # 羡 CJK UNIFIED IDEOGRAPH-7FA1 0x813A, # 脺 CJK UNIFIED IDEOGRAPH-813A 0x8FF6, # 迶 CJK UNIFIED IDEOGRAPH-8FF6 0x91B2, # 醲 CJK UNIFIED IDEOGRAPH-91B2 0x9592, # 閒 CJK UNIFIED IDEOGRAPH-9592 0x9AD9, # 髙 CJK UNIFIED IDEOGRAPH-9AD9 0x9FC4, # 鿄 CJK UNIFIED IDEOGRAPH-9FC4 0x9FC5, # 鿅 CJK UNIFIED IDEOGRAPH-9FC5 0x9FC6, # 鿆 CJK UNIFIED IDEOGRAPH-9FC6 0xFA6B, # 恵 CJK COMPATIBILITY IDEOGRAPH-FA6B 0xFA6C, # 𤋮 CJK COMPATIBILITY IDEOGRAPH-FA6C 0xFA6D, # 舘 CJK COMPATIBILITY IDEOGRAPH-FA6D 0x1F100, # 🄀 DIGIT ZERO FULL STOP 0x1F101, # 🄁 DIGIT ZERO COMMA 0x1F102, # 🄂 DIGIT ONE COMMA 0x1F103, # 🄃 DIGIT TWO COMMA 0x1F104, # 🄄 DIGIT THREE COMMA 0x1F105, # 🄅 DIGIT FOUR COMMA 0x1F106, # 🄆 DIGIT FIVE COMMA 0x1F107, # 🄇 DIGIT SIX COMMA 0x1F108, # 🄈 DIGIT SEVEN COMMA 0x1F109, # 🄉 DIGIT EIGHT COMMA 0x1F10A, # 🄊 DIGIT NINE COMMA 0x1F110, # 🄐 PARENTHESIZED LATIN CAPITAL LETTER A 0x1F111, # 🄑 PARENTHESIZED LATIN CAPITAL LETTER B 0x1F112, # 🄒 PARENTHESIZED LATIN CAPITAL LETTER C 0x1F113, # 🄓 PARENTHESIZED LATIN CAPITAL LETTER D 0x1F114, # 🄔 PARENTHESIZED LATIN CAPITAL LETTER E 0x1F115, # 🄕 PARENTHESIZED LATIN CAPITAL LETTER F 0x1F116, # 🄖 PARENTHESIZED LATIN CAPITAL LETTER G 0x1F117, # 🄗 PARENTHESIZED LATIN CAPITAL LETTER H 0x1F118, # 🄘 PARENTHESIZED LATIN CAPITAL LETTER I 0x1F119, # 🄙 PARENTHESIZED LATIN CAPITAL LETTER J 0x1F11A, # 🄚 PARENTHESIZED LATIN CAPITAL LETTER K 0x1F11B, # 🄛 PARENTHESIZED LATIN CAPITAL LETTER L 0x1F11C, # 🄜 PARENTHESIZED LATIN CAPITAL LETTER M 0x1F11D, # 🄝 PARENTHESIZED LATIN CAPITAL LETTER N 0x1F11E, # 🄞 PARENTHESIZED LATIN CAPITAL LETTER O 0x1F11F, # 🄟 PARENTHESIZED LATIN CAPITAL LETTER P 0x1F120, # 🄠 PARENTHESIZED LATIN CAPITAL LETTER Q 0x1F121, # 🄡 PARENTHESIZED LATIN CAPITAL LETTER R 0x1F122, # 🄢 PARENTHESIZED LATIN CAPITAL LETTER S 0x1F123, # 🄣 PARENTHESIZED LATIN CAPITAL LETTER T 0x1F124, # 🄤 PARENTHESIZED LATIN CAPITAL LETTER U 0x1F125, # 🄥 PARENTHESIZED LATIN CAPITAL LETTER V 0x1F126, # 🄦 PARENTHESIZED LATIN CAPITAL LETTER W 0x1F127, # 🄧 PARENTHESIZED LATIN CAPITAL LETTER X 0x1F128, # 🄨 PARENTHESIZED LATIN CAPITAL LETTER Y 0x1F129, # 🄩 PARENTHESIZED LATIN CAPITAL LETTER Z 0x1F12A, # 🄪 TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S 0x1F12B, # 🄫 CIRCLED ITALIC LATIN CAPITAL LETTER C 0x1F12C, # 🄬 CIRCLED ITALIC LATIN CAPITAL LETTER R 0x1F12D, # 🄭 CIRCLED CD 0x1F131, # 🄱 SQUARED LATIN CAPITAL LETTER B 0x1F13D, # 🄽 SQUARED LATIN CAPITAL LETTER N 0x1F13F, # 🄿 SQUARED LATIN CAPITAL LETTER P 0x1F142, # 🅂 SQUARED LATIN CAPITAL LETTER S 0x1F146, # 🅆 SQUARED LATIN CAPITAL LETTER W 0x1F14A, # 🅊 SQUARED HV 0x1F14B, # 🅋 SQUARED MV 0x1F14C, # 🅌 SQUARED SD 0x1F14D, # 🅍 SQUARED SS 0x1F14E, # 🅎 SQUARED PPV 0x1F14F, # 🅏 SQUARED WC 0x1F157, # 🅗 NEGATIVE CIRCLED LATIN CAPITAL LETTER H 0x1F15F, # 🅟 NEGATIVE CIRCLED LATIN CAPITAL LETTER P 0x1F179, # 🅹 NEGATIVE SQUARED LATIN CAPITAL LETTER J 0x1F17B, # 🅻 NEGATIVE SQUARED LATIN CAPITAL LETTER L 0x1F17C, # 🅼 NEGATIVE SQUARED LATIN CAPITAL LETTER M 0x1F17F, # 🅿 NEGATIVE SQUARED LATIN CAPITAL LETTER P 0x1F18A, # 🆊 CROSSED NEGATIVE SQUARED LATIN CAPITAL LETTER P 0x1F18B, # 🆋 NEGATIVE SQUARED IC 0x1F18C, # 🆌 NEGATIVE SQUARED PA 0x1F18D, # 🆍 NEGATIVE SQUARED SA 0x1F190, # 🆐 SQUARE DJ 0x1F200, # 🈀 SQUARE HIRAGANA HOKA 0x1F210, # 🈐 SQUARED CJK UNIFIED IDEOGRAPH-624B 0x1F211, # 🈑 SQUARED CJK UNIFIED IDEOGRAPH-5B57 0x1F212, # 🈒 SQUARED CJK UNIFIED IDEOGRAPH-53CC 0x1F213, # 🈓 SQUARED KATAKANA DE 0x1F214, # 🈔 SQUARED CJK UNIFIED IDEOGRAPH-4E8C 0x1F215, # 🈕 SQUARED CJK UNIFIED IDEOGRAPH-591A 0x1F216, # 🈖 SQUARED CJK UNIFIED IDEOGRAPH-89E3 0x1F217, # 🈗 SQUARED CJK UNIFIED IDEOGRAPH-5929 0x1F218, # 🈘 SQUARED CJK UNIFIED IDEOGRAPH-4EA4 0x1F219, # 🈙 SQUARED CJK UNIFIED IDEOGRAPH-6620 0x1F21A, # 🈚 SQUARED CJK UNIFIED IDEOGRAPH-7121 0x1F21B, # 🈛 SQUARED CJK UNIFIED IDEOGRAPH-6599 0x1F21C, # 🈜 SQUARED CJK UNIFIED IDEOGRAPH-524D 0x1F21D, # 🈝 SQUARED CJK UNIFIED IDEOGRAPH-5F8C 0x1F21E, # 🈞 SQUARED CJK UNIFIED IDEOGRAPH-518D 0x1F21F, # 🈟 SQUARED CJK UNIFIED IDEOGRAPH-65B0 0x1F220, # 🈠 SQUARED CJK UNIFIED IDEOGRAPH-521D 0x1F221, # 🈡 SQUARED CJK UNIFIED IDEOGRAPH-7D42 0x1F222, # 🈢 SQUARED CJK UNIFIED IDEOGRAPH-751F 0x1F223, # 🈣 SQUARED CJK UNIFIED IDEOGRAPH-8CA9 0x1F224, # 🈤 SQUARED CJK UNIFIED IDEOGRAPH-58F0 0x1F225, # 🈥 SQUARED CJK UNIFIED IDEOGRAPH-5439 0x1F226, # 🈦 SQUARED CJK UNIFIED IDEOGRAPH-6F14 0x1F227, # 🈧 SQUARED CJK UNIFIED IDEOGRAPH-6295 0x1F228, # 🈨 SQUARED CJK UNIFIED IDEOGRAPH-6355 0x1F229, # 🈩 SQUARED CJK UNIFIED IDEOGRAPH-4E00 0x1F22A, # 🈪 SQUARED CJK UNIFIED IDEOGRAPH-4E09 0x1F22B, # 🈫 SQUARED CJK UNIFIED IDEOGRAPH-904A 0x1F22C, # 🈬 SQUARED CJK UNIFIED IDEOGRAPH-5DE6 0x1F22D, # 🈭 SQUARED CJK UNIFIED IDEOGRAPH-4E2D 0x1F22E, # 🈮 SQUARED CJK UNIFIED IDEOGRAPH-53F3 0x1F22F, # 🈯 SQUARED CJK UNIFIED IDEOGRAPH-6307 0x1F230, # 🈰 SQUARED CJK UNIFIED IDEOGRAPH-8D70 0x1F231, # 🈱 SQUARED CJK UNIFIED IDEOGRAPH-6253 0x1F240, # 🉀 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C 0x1F241, # 🉁 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09 0x1F242, # 🉂 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C 0x1F243, # 🉃 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89 0x1F244, # 🉄 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9 0x1F245, # 🉅 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253 0x1F246, # 🉆 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7 0x1F247, # 🉇 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD 0x1F248, # 🉈 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557 0x20158, # 𠅘 CJK UNIFIED IDEOGRAPH-20158 0x20BB7, # 𠮷 CJK UNIFIED IDEOGRAPH-20BB7 0x233CC, # 𣏌 CJK UNIFIED IDEOGRAPH-233CC 0x233FE, # 𣏾 CJK UNIFIED IDEOGRAPH-233FE 0x242EE, # 𤋮 CJK UNIFIED IDEOGRAPH-242EE ] nototools-2017-09-25-tooling-for-phase3-update/nototools/chart/000077500000000000000000000000001316231664500242255ustar00rootroot00000000000000nototools-2017-09-25-tooling-for-phase3-update/nototools/chart/LIST000066400000000000000000000115651316231664500247330ustar00rootroot00000000000000../../fonts/individual/unhinted/NotoSans-Regular.ttf ../../fonts/individual/unhinted/NotoSansSymbols-Regular.ttf ../../fonts/individual/unhinted/NotoSansDevanagari-Regular.ttf ../../fonts/individual/unhinted/NotoNaskhArabicUI-Regular.ttf ../../fonts/individual/unhinted/NotoSansArmenian-Regular.ttf ../../fonts/individual/unhinted/NotoSansAvestan-Regular.ttf ../../fonts/individual/unhinted/NotoSansBalinese-Regular.ttf ../../fonts/individual/unhinted/NotoSansBamum-Regular.ttf ../../fonts/individual/unhinted/NotoSansBatak-Regular.ttf ../../fonts/individual/unhinted/NotoSansBengali-Regular.ttf ../../fonts/individual/unhinted/NotoSansBrahmi-Regular.ttf ../../fonts/individual/unhinted/NotoSansBuginese-Regular.ttf ../../fonts/individual/unhinted/NotoSansBuhid-Regular.ttf ../../fonts/individual/unhinted/NotoSansCanadianAboriginal-Regular.ttf ../../fonts/individual/unhinted/NotoSansCarian-Regular.ttf ../../fonts/individual/unhinted/NotoSansCham-Regular.ttf ../../fonts/individual/unhinted/NotoSansCherokee-Regular.ttf ../../fonts/individual/unhinted/NotoSansCoptic-Regular.ttf ../../fonts/individual/unhinted/NotoSansCypriot-Regular.ttf ../../fonts/individual/unhinted/NotoSansDeseret-Regular.ttf ../../fonts/individual/unhinted/NotoSansEgyptianHieroglyphs-Regular.ttf ../../fonts/individual/unhinted/NotoSansEthiopic-Regular.ttf ../../fonts/individual/unhinted/NotoSansGeorgian-Regular.ttf ../../fonts/individual/unhinted/NotoSansGlagolitic-Regular.ttf ../../fonts/individual/unhinted/NotoSansGothic-Regular.ttf ../../fonts/individual/unhinted/NotoSansGujarati-Regular.ttf ../../fonts/individual/unhinted/NotoSansGurmukhi-Regular.ttf ../../fonts/individual/unhinted/NotoSansHanunoo-Regular.ttf ../../fonts/individual/unhinted/NotoSansHebrew-Regular.ttf ../../fonts/individual/unhinted/NotoSansImperialAramaic-Regular.ttf ../../fonts/individual/unhinted/NotoSansJavanese-Regular.ttf ../../fonts/individual/unhinted/NotoSansKaithi-Regular.ttf ../../fonts/individual/unhinted/NotoSansKannada-Regular.ttf ../../fonts/individual/unhinted/NotoSansKayahLi-Regular.ttf ../../fonts/individual/unhinted/NotoSansKharoshthi-Regular.ttf ../../fonts/individual/unhinted/NotoSansKhmer-Regular.ttf ../../fonts/individual/unhinted/NotoSansLao-Regular.ttf ../../fonts/individual/unhinted/NotoSansLepcha-Regular.ttf ../../fonts/individual/unhinted/NotoSansLimbu-Regular.ttf ../../fonts/individual/unhinted/NotoSansLinearB-Regular.ttf ../../fonts/individual/unhinted/NotoSansLisu-Regular.ttf ../../fonts/individual/unhinted/NotoSansLycian-Regular.ttf ../../fonts/individual/unhinted/NotoSansLydian-Regular.ttf ../../fonts/individual/unhinted/NotoSansMalayalam-Regular.ttf ../../fonts/individual/unhinted/NotoSansMandaic-Regular.ttf ../../fonts/individual/unhinted/NotoSansMeeteiMayek-Regular.ttf ../../fonts/individual/unhinted/NotoSansMongolian-Regular.ttf ../../fonts/individual/unhinted/NotoSansMyanmar-Regular.ttf ../../fonts/individual/unhinted/NotoSansNewTaiLue-Regular.ttf ../../fonts/individual/unhinted/NotoSansNKo-Regular.ttf ../../fonts/individual/unhinted/NotoSansOgham-Regular.ttf ../../fonts/individual/unhinted/NotoSansOlChiki-Regular.ttf ../../fonts/individual/unhinted/NotoSansOldItalic-Regular.ttf ../../fonts/individual/unhinted/NotoSansOldPersian-Regular.ttf ../../fonts/individual/unhinted/NotoSansOldSouthArabian-Regular.ttf ../../fonts/individual/unhinted/NotoSansOldTurkic-Regular.ttf ../../fonts/individual/unhinted/NotoSansOsmanya-Regular.ttf ../../fonts/individual/unhinted/NotoSansInscriptionalPahlavi-Regular.ttf ../../fonts/individual/unhinted/NotoSansInscriptionalParthian-Regular.ttf ../../fonts/individual/unhinted/NotoSansPhagsPa-Regular.ttf ../../fonts/individual/unhinted/NotoSansPhoenician-Regular.ttf ../../fonts/individual/unhinted/NotoSansRejang-Regular.ttf ../../fonts/individual/unhinted/NotoSansRunic-Regular.ttf ../../fonts/individual/unhinted/NotoSansSamaritan-Regular.ttf ../../fonts/individual/unhinted/NotoSansSaurashtra-Regular.ttf ../../fonts/individual/unhinted/NotoSansShavian-Regular.ttf ../../fonts/individual/unhinted/NotoSansSinhala-Regular.ttf ../../fonts/individual/unhinted/NotoSansCuneiform-Regular.ttf ../../fonts/individual/unhinted/NotoSansSundanese-Regular.ttf ../../fonts/individual/unhinted/NotoSansSylotiNagri-Regular.ttf ../../fonts/individual/unhinted/NotoSansTagalog-Regular.ttf ../../fonts/individual/unhinted/NotoSansTagbanwa-Regular.ttf ../../fonts/individual/unhinted/NotoSansTaiLe-Regular.ttf ../../fonts/individual/unhinted/NotoSansTaiTham-Regular.ttf ../../fonts/individual/unhinted/NotoSansTaiViet-Regular.ttf ../../fonts/individual/unhinted/NotoSansTamil-Regular.ttf ../../fonts/individual/unhinted/NotoSansTelugu-Regular.ttf ../../fonts/individual/unhinted/NotoSansThai-Regular.ttf ../../fonts/individual/unhinted/NotoSansTifinagh-Regular.ttf ../../fonts/individual/unhinted/NotoSansUgaritic-Regular.ttf ../../fonts/individual/unhinted/NotoSansVai-Regular.ttf ../../fonts/individual/unhinted/NotoSansYi-Regular.ttf nototools-2017-09-25-tooling-for-phase3-update/nototools/chart/Makefile000066400000000000000000000002011316231664500256560ustar00rootroot00000000000000all: chart.pdf CHART_FONTS = `cat LIST` chart.pdf chart.ps: chart.py LIST @echo "Generating $@" @python $< $@ $(CHART_FONTS) nototools-2017-09-25-tooling-for-phase3-update/nototools/chart/chart.py000077500000000000000000000077761316231664500257240ustar00rootroot00000000000000#!/usr/bin/python import sys import cairo import pycairoft from fontTools import ttLib def clamp(x, Min, Max): return max(Min, min(Max, x)) class Color: def __init__(self, rgb): self.rgb = rgb def __repr__(self): return 'Color(%g,%g,%g)' % self.rgb def __str__(self): return "#%02X%02X%02X" % tuple(int(255 * c) for c in self.rgb) class Font: def __init__(self, fontfile): self.filename = fontfile self.ttfont = ttLib.TTFont(fontfile) cmap = self.ttfont['cmap'] self.charset = set() self.charset.update(*[t.cmap.keys() for t in cmap.tables if t.isUnicode()]) self.cairo_font_face = None def get_cairo_font_face(self): if self.cairo_font_face is None: self.cairo_font_face = pycairoft.create_cairo_font_face_for_file ( self.filename) return self.cairo_font_face def __repr__(self): return 'Font("%s")' % self.filename def assign_colors(fonts): import colorsys n = len(fonts) mult = (n-1) // 2 darkness = .3 for i,font in enumerate(fonts): pos = (i * mult / float(n)) % 1. rgb = colorsys.hsv_to_rgb(pos, 1., darkness) luma = .3*rgb[0] + .59*rgb[1] + .11*rgb[2] adj = .3 - luma rgb = [c+adj for c in rgb] font.color = Color(rgb) outfile = sys.argv[1] fonts = [Font(fontfile) for fontfile in sys.argv[2:]] charset = set.union(*[f.charset for f in fonts]) assign_colors(fonts) coverage = {c:[] for c in charset} for font in fonts: for char in font.charset: coverage[char].append(font) NUM_COLS = 128 FONT_SIZE = 5 PADDING = 0.3 BOX_WIDTH = PADDING * .6 CELL_SIZE = FONT_SIZE + 2 * PADDING MARGIN = 1 * FONT_SIZE LABEL_WIDTH = 8 * FONT_SIZE/2. rows = set([u // NUM_COLS * NUM_COLS for u in charset]) num_rows = len(rows) width = NUM_COLS * CELL_SIZE + 2 * (2 * MARGIN + LABEL_WIDTH) height = num_rows * CELL_SIZE + 2 * MARGIN print "Generating %s at %.3gx%.3gin" % (outfile, width/72., height/72.) if outfile.endswith(".pdf"): surface = cairo.PDFSurface(outfile, width, height) elif outfile.endswith(".ps"): surface = cairo.PSSurface(outfile, width, height) else: assert 0 cr = cairo.Context(surface) noto_sans_lgc = pycairoft.create_cairo_font_face_for_file ("../../fonts/individual/unhinted/NotoSans-Regular.ttf") #cr.select_font_face("@cairo:", cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMAL) cr.set_font_size(FONT_SIZE) cr.set_line_width(PADDING) STAGE_BOXES = 0 STAGE_GLYPHS = 1 for stage in range(2): cr.save() cr.translate(MARGIN, MARGIN) for row,row_start in enumerate(sorted(rows)): cr.translate(0, PADDING) cr.save() cr.set_source_rgb(0,0,0) cr.move_to(0,FONT_SIZE) if stage == 0: cr.set_font_face(noto_sans_lgc) cr.show_text ("U+%04X" % row_start) cr.translate(LABEL_WIDTH + MARGIN, 0) for char in range(row_start, row_start + NUM_COLS): cr.translate(PADDING, 0) for font in coverage.get(char, []): if stage == STAGE_BOXES: #cr.rectangle(-BOX_WIDTH*.5, -BOX_WIDTH*.5, FONT_SIZE+BOX_WIDTH, FONT_SIZE+BOX_WIDTH) #cr.set_source_rgba(*[c * .1 + .9 for c in font.color.rgb]) #cr.stroke() pass elif stage == STAGE_GLYPHS: cr.set_source_rgb(*(font.color.rgb)) #cr.set_source_rgb(0,0,0) cr.set_font_face(font.get_cairo_font_face()) ascent,descent,font_height,max_x_adv,max_y_adv = cr.font_extents() cr.save() # XXX cr.set_font_size (FONT_SIZE*FONT_SIZE / (ascent+descent)) cr.set_font_size (round(1.2 * FONT_SIZE*FONT_SIZE / (ascent+descent))) ascent,descent,font_height,max_x_adv,max_y_adv = cr.font_extents() utf8 = unichr(char).encode('utf-8') x1,y1,width,height,xadv,yadv = cr.text_extents(utf8) cr.move_to(FONT_SIZE*.5 - (x1+.5*width), FONT_SIZE*.5 - (-ascent+descent)*.5) cr.show_text(utf8) cr.restore() break cr.translate(FONT_SIZE, 0) cr.translate(PADDING, 0) cr.set_source_rgb(0,0,0) cr.move_to(MARGIN,FONT_SIZE) if stage == 0: cr.set_font_face(noto_sans_lgc) cr.show_text ("U+%04X" % (row_start + NUM_COLS - 1)) cr.translate(LABEL_WIDTH + 2 * MARGIN, 0) cr.restore() cr.translate(0, FONT_SIZE) cr.translate(0, PADDING) cr.restore() nototools-2017-09-25-tooling-for-phase3-update/nototools/chart/pycairoft.py000066400000000000000000000051341316231664500266020ustar00rootroot00000000000000import ctypes import cairo _initialized = False def create_cairo_font_face_for_file (filename, faceindex=0, loadoptions=0): class PycairoContext(ctypes.Structure): _fields_ = [("PyObject_HEAD", ctypes.c_byte * object.__basicsize__), ("ctx", ctypes.c_void_p), ("base", ctypes.c_void_p)] global _initialized global _freetype_so global _cairo_so global _ft_lib global _surface CAIRO_STATUS_SUCCESS = 0 FT_Err_Ok = 0 if not _initialized: # find shared objects _freetype_so = ctypes.CDLL ("libfreetype.so.6") _cairo_so = ctypes.CDLL ("libcairo.so.2") _cairo_so.cairo_ft_font_face_create_for_ft_face.restype = ctypes.c_void_p _cairo_so.cairo_ft_font_face_create_for_ft_face.argtypes = [ ctypes.c_void_p, ctypes.c_int ] _cairo_so.cairo_set_font_face.argtypes = [ ctypes.c_void_p, ctypes.c_void_p ] _cairo_so.cairo_font_face_status.argtypes = [ ctypes.c_void_p ] _cairo_so.cairo_status.argtypes = [ ctypes.c_void_p ] # initialize freetype _ft_lib = ctypes.c_void_p () if FT_Err_Ok != _freetype_so.FT_Init_FreeType (ctypes.byref (_ft_lib)): raise "Error initialising FreeType library." _surface = cairo.ImageSurface (cairo.FORMAT_A8, 0, 0) _initialized = True # create freetype face ft_face = ctypes.c_void_p() cairo_ctx = cairo.Context (_surface) cairo_t = PycairoContext.from_address(id(cairo_ctx)).ctx if FT_Err_Ok != _freetype_so.FT_New_Face (_ft_lib, filename, faceindex, ctypes.byref(ft_face)): raise Exception("Error creating FreeType font face for " + filename) # create cairo font face for freetype face cr_face = _cairo_so.cairo_ft_font_face_create_for_ft_face (ft_face, loadoptions) if CAIRO_STATUS_SUCCESS != _cairo_so.cairo_font_face_status (cr_face): raise Exception("Error creating cairo font face for " + filename) _cairo_so.cairo_set_font_face (cairo_t, cr_face) if CAIRO_STATUS_SUCCESS != _cairo_so.cairo_status (cairo_t): raise Exception("Error creating cairo font face for " + filename) face = cairo_ctx.get_font_face () return face if __name__ == '__main__': face = create_cairo_font_face_for_file ("/usr/share/fonts/dejavu-lgc/DejaVuLGCSerif.ttf", 0) surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 128, 128) ctx = cairo.Context(surface) ctx.set_font_face(face) ctx.set_font_size(30) ctx.move_to(0, 44) ctx.show_text("Hello,") ctx.move_to(30, 74) ctx.show_text("world!") del ctx surface.write_to_png("hello.png") nototools-2017-09-25-tooling-for-phase3-update/nototools/check_familyname_and_styles.py000066400000000000000000000140131316231664500312010ustar00rootroot00000000000000# Copyright 2016 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Process a family description file. You can check the file, and generate a list of font file names from it. This list can be passed to noto_names to generate the name data. The file is a list of Noto family names (see noto_fonts.py) interspersed with definitions of what WWS style combinations apply to that file. See _get_stylenames() for the format. Each style definition applies to each following family until the next style definition.""" import argparse import re from nototools import noto_fonts from nototools import tool_utils _style_re = re.compile(r'--\s+(.*)\s+--') _extended_style_re = re.compile(r'^([TLRBH]+)(?:/([CR]+)(?:/([RI]+))?)?$') # Map a key name to the expected instance weight/width/italic names. _WEIGHT_KEY_TO_NAMES = { 'TRBH': ['Thin', 'Light', 'Regular', 'Medium', 'SemiBold', 'Bold', 'Black'], 'LB': ['Light', 'Regular', 'Medium', 'SemiBold', 'Bold'], # for mono 'RB': ['Regular', 'Bold'], # for Nastaliq 'R': ['Regular'] } _WIDTH_KEY_TO_NAMES = { 'CR': ['', 'SemiCondensed', 'Condensed'], 'R': [''], } _SLOPE_KEY_TO_NAMES = { 'RI': ['', 'Italic'], 'R': [''], } def _get_stylenames(styles): """Returns the list of style names for the encoded styles. These are the (master-ish) style names encoded as weights / widths / italic, where each field is one of the above key values. If there's not an italic then the italic is omitted, if there's only regular width and no italic then widths are omitted.""" m = _extended_style_re.match(styles) if not m: raise ValueError('could not match style "%s"' % styles) weight_key = m.group(1) width_key = m.group(2) or 'R' slope_key = m.group(3) or 'R' weight_names = _WEIGHT_KEY_TO_NAMES.get(weight_key) width_names = _WIDTH_KEY_TO_NAMES.get(width_key) slope_names = _SLOPE_KEY_TO_NAMES.get(slope_key) err_msg = [] if weight_names == None: err_msg.append('bad weight key "%s"' % weight_key) if width_names == None: err_msg.append('bad width key "%s"' % width_key) if slope_names == None: err_msg.append('bad slope key "%s"' % slope_key) if err_msg: raise ValueError(', '.join(err_msg)) names = [] for weight in weight_names: for width in width_names: for slope in slope_names: if weight == 'Regular' and (width or slope): weight = '' names.append(width + weight + slope) return names def check_familyname(name, styles): notofont = noto_fonts.get_noto_font('unhinted/' + name + '-Regular.ttf') if not notofont: print 'Error: could not parse', name return False print name, noto_fonts.noto_font_to_wws_family_id(notofont), styles return True def generate_family_filenames(name, styles): """Name is the family name portion of a Noto filename. Styles is the encoding of the styles, see _get_stylenames.""" stylenames = _get_stylenames(styles) return [name + '-' + s + '.ttf' for s in stylenames] def _for_all_familynames(namefile, fn): """Call fn passing the family name and style descriptor for all families in namefile. '#' is a comment to eol, blank lines are ignored.""" styles = None with open(namefile, 'r') as f: for name in f: ix = name.find('#') if ix >= 0: name = name[:ix] name = name.strip() if not name: continue m = _style_re.match(name) if m: styles = m.group(1) continue # Catch a common error in which an intended style tag didn't match the # regex. if name[0] == '-': raise ValueError('Looks like a bad style tag: "%s"' % name) if styles == None: raise ValueError('Styles must be set before first familyname.') fn(name, styles) def check_familynames(namefile): namefile = tool_utils.resolve_path(namefile) passed = [True] def fn(name, styles): name_passed = check_familyname(name, styles) passed[0] &= name_passed _for_all_familynames(namefile, fn) return passed[0] def generate_filenames(namefile, outfile, sort=False): namelist = [] def fn(name, styles): namelist.extend(generate_family_filenames(name, styles)) namefile = tool_utils.resolve_path(namefile) _for_all_familynames(namefile, fn) if sort: namelist.sort() allnames = '\n'.join(namelist) if outfile: with open(outfile, 'w') as f: f.write(allnames) f.write('\n') else: print allnames def main(): DEFAULT_NAMEDATA = '[tools]/nototools/data/familyname_and_styles.txt' parser = argparse.ArgumentParser() parser.add_argument( '-f', '--familynamedata', help='file containing family name/style data' ' (default %s)' % DEFAULT_NAMEDATA, metavar='file', default=DEFAULT_NAMEDATA) parser.add_argument( '-c', '--check', help='check family name/style data', action='store_true') parser.add_argument( '-s', '--sort', help='sort generated filenames before write', action='store_true') parser.add_argument( '-w', '--write', help='write filenames, default stdout', nargs='?', const='stdout', metavar='file') args = parser.parse_args() if args.check: passed = check_familynames(args.familynamedata) if not passed: print 'Check failed, some files had errors.' return print 'Check succeeded.' if args.write: outfile = None if args.write == 'stdout' else args.write if not outfile and args.check: print generate_filenames(args.familynamedata, outfile, args.sort) if outfile: print 'Wrote', outfile if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/nototools/cldr_data.py000077500000000000000000000561531316231664500254300ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2015 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import argparse import collections import os from os import path import re import unicode_data import xml.etree.cElementTree as ElementTree from nototools import extra_locale_data TOOLS_DIR = path.abspath(path.join(path.dirname(__file__), os.pardir)) CLDR_DIR = path.join(TOOLS_DIR, 'third_party', 'cldr') # control print of debug/trace info when we synthesize the data _DEBUG = False # for inspection/debugging, allow turning off of extra locale data _USE_EXTRA_LOCALE_DATA = True # Maps from a less-specific tag to tuple of lang, script, region # Keys either have a lang or 'und'. If lang, then script or region. If und, # then either script or region or both. _LIKELY_SUBTAGS = {} def _parse_likely_subtags(): if _LIKELY_SUBTAGS: return data_file = path.join(CLDR_DIR, 'common', 'supplemental', 'likelySubtags.xml') tree = ElementTree.parse(data_file) for tag in tree.findall('likelySubtags/likelySubtag'): from_tag = tag.get('from').replace('_', '-') to_tag = tag.get('to').split('_') _LIKELY_SUBTAGS[from_tag] = to_tag # print 'likely subtag from %s -> %s' % (from_tag, to_tag) _LIKELY_SUBTAGS.update(extra_locale_data.LIKELY_SUBTAGS) # from language elements # lang has no script tag _LANG_TO_REGIONS = collections.defaultdict(set) # from language elements # lang has no script tag _LANG_TO_SCRIPTS = collections.defaultdict(set) # from territory elements # values are lang-script, script is based on likely subtag data if not present # in the territory element data. # if lang has script tag, the script is also in lang_to_scripts. _REGION_TO_LANG_SCRIPTS = collections.defaultdict(set) _LOCALE_TO_PARENT = {} def _parse_supplemental_data(): if _LOCALE_TO_PARENT: return # _LIKELY_SUBTAGS data used directly below _parse_likely_subtags() data_file = path.join( CLDR_DIR, 'common', 'supplemental', 'supplementalData.xml') root = ElementTree.parse(data_file).getroot() for language_tag in root.iter('language'): attribs = language_tag.attrib if 'alt' in attribs: assert attribs['alt'] == 'secondary' lang = attribs['type'] if 'territories' in attribs: territories = set(attribs['territories'].split(' ')) _LANG_TO_REGIONS[lang].update(territories) if 'scripts' in attribs: scripts = set(attribs['scripts'].split(' ')) _LANG_TO_SCRIPTS[lang].update(scripts) langs_missing_likely_subtag_data = [] for tag in root.iter('territory'): territory = tag.get('type') for child in tag: assert child.tag == 'languagePopulation' # if 'officialStatus' not in child.attrib: # continue # Skip non-official languages lang = child.get('type') if lang == 'und': # no point, this data is typically uninhabited small islands and # Antarctica continue ix = lang.find('_') if ix == -1: key = lang + '-' + territory try: likely_tuple = _LIKELY_SUBTAGS[key] except: try: likely_tuple = _LIKELY_SUBTAGS[lang] except: # hmmm, language tag for territory not in likely subtags data # filed bug with CLDR, for now patch fixes here if lang in ['bsc', 'mfv', 'snf', 'tnr']: script = 'Latn' elif lang in ['mey']: script = 'Arab' else: langs_missing_likely_subtag_data.append(key) likely_tuple = (lang, script, territory) script = likely_tuple[1] else: script = lang[ix + 1:] lang = lang[:ix] lang_script = lang + '-' + script _REGION_TO_LANG_SCRIPTS[territory].add(lang_script) _LANG_TO_REGIONS[lang].add(territory) _LANG_TO_SCRIPTS[lang].add(script) if langs_missing_likely_subtag_data: print 'cldr_data: %d keys not in likely subtags:' % len( langs_missing_likely_subtag_data) for k in sorted(langs_missing_likely_subtag_data): print ' ', k print 'cldr_data: defaulting script to Latn' # raise Exception('oops') # Use likely subtag data mapping script to lang to extend lang_to_scripts. known_scripts = set() for scripts in _LANG_TO_SCRIPTS.values(): known_scripts |= scripts for script in known_scripts: und_scr = 'und-' + script if und_scr in _LIKELY_SUBTAGS: lang = _LIKELY_SUBTAGS[und_scr][0] if lang != 'und' and script not in _LANG_TO_SCRIPTS[lang]: if _DEBUG: print 'lang to scripts missing script %s for %s (from %s)' % ( script, lang, ', '.join(_LANG_TO_SCRIPTS[lang])) _LANG_TO_SCRIPTS[lang].add(script) if _USE_EXTRA_LOCALE_DATA: # Supplement lang to script mapping with extra locale data for lang, scripts in extra_locale_data.LANG_TO_SCRIPTS.iteritems(): _LANG_TO_SCRIPTS[lang] |= set(scripts) # Use extra locale data's likely subtag info to change the supplemental # data we got from the language and territory elements. # 1) Add the script to the scripts for the language # 2) Add the lang_script to the lang_scripts for the region for tags in extra_locale_data.LIKELY_SUBTAGS.values(): lang = tags[0] script = tags[1] region = tags[2] lang_scripts = _LANG_TO_SCRIPTS[lang] if script not in lang_scripts: if _DEBUG: print ('extra likely subtags lang %s has script %s but supplemental ' 'only has [%s]') % ( lang, script, ', '.join(sorted(lang_scripts))) if len(lang_scripts) == 1: replacement = set([script]) if _DEBUG: print 'replacing %s with %s' % (lang_scripts, replacement) _LANG_TO_SCRIPTS[lang] = replacement else: _LANG_TO_SCRIPTS[lang].add(script) lang_script = lang + '-' + script # skip ZZ region if region != 'ZZ' and lang_script not in _REGION_TO_LANG_SCRIPTS[region]: if _DEBUG: print 'extra lang_script %s not in cldr for %s, adding' % ( lang_script, region) _REGION_TO_LANG_SCRIPTS[region].add(lang_script) _LANG_TO_REGIONS[lang].add(region) for tup in extra_locale_data.REGION_TO_LANG_SCRIPTS.iteritems(): territory, lang_scripts = tup _REGION_TO_LANG_SCRIPTS[territory] |= set(lang_scripts) for lang_script in lang_scripts: lang, script = lang_script.split('-') _LANG_TO_REGIONS[lang].add(territory) _LANG_TO_SCRIPTS[lang].add(script) for tag in root.iter('parentLocale'): parent = tag.get('parent') parent = parent.replace('_', '-') for locl in tag.get('locales').split(' '): locl = locl.replace('_', '-') _LOCALE_TO_PARENT[locl] = parent _LOCALE_TO_PARENT.update(extra_locale_data.PARENT_LOCALES) def known_langs(): _parse_supplemental_data() # Assume this is a superset of the keys in _LANG_TO_REGIONS return _LANG_TO_SCRIPTS.keys() def known_regions(): _parse_supplemental_data() return _REGION_TO_LANG_SCRIPTS.keys() def lang_to_regions(lang): _parse_supplemental_data() try: return _LANG_TO_REGIONS[lang] except: return None def lang_to_scripts(lang): _parse_supplemental_data() try: return _LANG_TO_SCRIPTS[lang] except: return None def region_to_lang_scripts(region_tag): _parse_supplemental_data() try: return _REGION_TO_LANG_SCRIPTS[region_tag] except: return None def get_likely_script(lang_tag): return get_likely_subtags(lang_tag)[1] def get_likely_subtags(lang_tag): if not lang_tag: raise ValueError('empty lang tag') lang_tag = lang_tag.replace('_', '-') _parse_likely_subtags() tag = lang_tag while True: try: result = _LIKELY_SUBTAGS[tag] # supply provided parts m = LSRV_RE.match(lang_tag) if not m: if _DEBUG: print 'regex did not match locale \'%s\'' % loc_tag return result lang = m.group(1) script = m.group(2) region = m.group(3) variant = m.group(4) if script or region or variant: temp = list(result) if script: temp[1] = script if region: temp[2] = region if variant: temp.append(variant) result = tuple(temp) return result except KeyError: ix = tag.rfind('-') if ix == -1: break tag = tag[:ix] if tag == 'und': # stop default to 'en' for unknown scripts break if _DEBUG: print 'no likely subtag for %s' % lang_tag tags = lang_tag.split('-') return (tags[0], tags[1] if len(tags) > 1 else 'Zzzz', tags[2] if len(tags) > 2 else 'ZZ') _SCRIPT_METADATA = {} def _parse_script_metadata(): global _SCRIPT_METADATA data = open(path.join( CLDR_DIR, 'common', 'properties', 'scriptMetadata.txt')).read() parsed_data = unicode_data._parse_semicolon_separated_data(data) _SCRIPT_METADATA = {line[0]:tuple(line[1:]) for line in parsed_data} def is_script_rtl(script): if not _SCRIPT_METADATA: _parse_script_metadata() try: return _SCRIPT_METADATA[script][5] == 'YES' except KeyError: # special case a few codes and data we have that hasn't been # updated. Also special case locale-script codes, we have some. if script == 'Adlm': return True if script in ['Zsym', 'Zsye', 'Hrkt', 'Jpan']: return False # we really should throw an exception if _DEBUG: print 'No script metadata for %s' % script return False def is_rtl(lang_tag): tags = lang_tag.split('-') if len(tags) > 1: script = tags[1] else: script = get_likely_script(tags[0]) return is_script_rtl(script) _LANGUAGE_NAME_FROM_FILE_CACHE = {} def _get_language_name_from_file(language, cldr_file_path): cache_key = (language, cldr_file_path) try: return _LANGUAGE_NAME_FROM_FILE_CACHE[cache_key] except KeyError: pass data_file = path.join(CLDR_DIR, cldr_file_path) try: root = ElementTree.parse(data_file).getroot() except IOError: _LANGUAGE_NAME_FROM_FILE_CACHE[cache_key] = None return None parent = root.find('.//languages') if parent is None: return None for tag in parent: assert tag.tag == 'language' if tag.get('type').replace('_', '-') == language: _LANGUAGE_NAME_FROM_FILE_CACHE[cache_key] = unicode(tag.text) return _LANGUAGE_NAME_FROM_FILE_CACHE[cache_key] return None def parent_locale(locale): if not _LOCALE_TO_PARENT: _parse_supplemental_data() if locale in _LOCALE_TO_PARENT: return _LOCALE_TO_PARENT[locale] if '-' in locale: return locale[:locale.rindex('-')] if locale == 'root': return None return 'root' def get_native_language_name(lang_scr, exclude_script=False): """Get the name of a language/script in its own locale.""" if '-' in lang_scr: lang = lang_scr.split('-')[0] else: lang = lang_scr lang_scr = None if exclude_script or not lang_scr: langs = [lang] else: langs = [lang_scr, lang] # lang_scr first since we want to try that first for lang in langs: try: return extra_locale_data.NATIVE_NAMES[lang] except KeyError: pass locale = lang_scr while locale != 'root': filename = locale.replace('-', '_') + '.xml' for subdir in ['common', 'seed']: cldr_file_path = path.join(subdir, 'main', filename) for lang in langs: native_name = _get_language_name_from_file(lang, cldr_file_path) if native_name: return native_name locale = parent_locale(locale) return None def _xml_to_dict(element): result = {} for child in list(element): if 'alt' in child.attrib: continue key = child.get('type') key = key.replace('_', '-') result[key] = unicode(child.text) return result _ENGLISH_LANGUAGE_NAMES = {} _ENGLISH_SCRIPT_NAMES = {} _ENGLISH_TERRITORY_NAMES = {} def _parse_english_labels(): global _ENGLISH_LANGUAGE_NAMES, _ENGLISH_SCRIPT_NAMES global _ENGLISH_TERRITORY_NAMES if _ENGLISH_LANGUAGE_NAMES: return data_file = path.join(CLDR_DIR, 'common', 'main', 'en.xml') root = ElementTree.parse(data_file).getroot() ldn = root.find('localeDisplayNames') _ENGLISH_LANGUAGE_NAMES = _xml_to_dict(ldn.find('languages')) _ENGLISH_SCRIPT_NAMES = _xml_to_dict(ldn.find('scripts')) _ENGLISH_TERRITORY_NAMES = _xml_to_dict(ldn.find('territories')) # Add languages used that miss names _ENGLISH_SCRIPT_NAMES.update(extra_locale_data.ENGLISH_SCRIPT_NAMES) _ENGLISH_LANGUAGE_NAMES.update(extra_locale_data.ENGLISH_LANGUAGE_NAMES) def get_english_script_name(script): """Get the name of a script in the en-US locale.""" _parse_english_labels() try: return _ENGLISH_SCRIPT_NAMES[script] except KeyError: return script def get_english_language_name(lang_scr): """Get the name of a language/script in the en-US locale.""" _parse_english_labels() try: return _ENGLISH_LANGUAGE_NAMES[lang_scr] except KeyError: if '-' in lang_scr: lang, script = lang_scr.split('-') try: langName = _ENGLISH_LANGUAGE_NAMES[lang] name = '%s (%s script)' % (langName, _ENGLISH_SCRIPT_NAMES[script]) return name except KeyError: pass if _DEBUG: print 'No English name for \'%s\'' % lang_scr return None def get_english_region_name(region): _parse_english_labels() try: return _ENGLISH_TERRITORY_NAMES[region] except KeyError: if _DEBUG: print 'No English name for region %s' % region return '' def _read_character_at(source, pointer): """Reads a code point or a backslash-u-escaped code point.""" while pointer < len(source) and source[pointer] == ' ': pointer += 1 if pointer >= len(source): raise IndexError('pointer %d out of range 0-%d' % (pointer, len(source))) if source[pointer] == '\\': if source[pointer+1].upper() == 'U': end_of_hex = pointer+2 while (end_of_hex < len(source) and source[end_of_hex].upper() in '0123456789ABCDEF'): end_of_hex += 1 if end_of_hex-(pointer+2) not in {4, 5, 6, 8}: raise Exception( 'cldr_data: parse of unicode escape failed at %d: %s' % ( pointer, source[pointer:pointer + 10])) hex_code = source[pointer+2:end_of_hex] return end_of_hex, unichr(int(hex_code, 16)) else: return pointer+2, source[pointer+1] else: return pointer+1, source[pointer] def unicode_set_string_to_list(us_str): if us_str[0] == '[': assert us_str[-1] == ']' us_str = us_str[1:-1] result = [] pointer = 0 while pointer < len(us_str): if us_str[pointer] in ' ': pointer += 1 elif us_str[pointer] == '{': multi_char = '' mc_ptr = pointer+1 while us_str[mc_ptr] != '}': mc_ptr, char = _read_character_at(us_str, mc_ptr) multi_char += char result.append(multi_char) pointer = mc_ptr+1 elif us_str[pointer] == '-': while pointer + 1 < len(us_str) and us_str[pointer + 1] == ' ': pointer += 1 continue if pointer + 1 == len(us_str): # hyphen before ']' is special result.append('-') break previous = result[-1] assert len(previous) == 1 # can't have ranges with strings previous = ord(previous) pointer, last = _read_character_at(us_str, pointer+1) assert last not in [' ', '\\', '{', '}', '-'] last = ord(last) result += [unichr(code) for code in range(previous+1, last+1)] else: pointer, char = _read_character_at(us_str, pointer) result.append(char) return result _exemplar_from_file_cache = {} def get_exemplar_from_file(cldr_file_path, types=['']): cache_key = cldr_file_path + '_'.join(sorted(types)) try: return _exemplar_from_file_cache[cache_key] except KeyError: pass data_file = path.join(CLDR_DIR, cldr_file_path) try: root = ElementTree.parse(data_file).getroot() except IOError: _exemplar_from_file_cache[cldr_file_path] = None return None exemplars = [] for tag in root.iter('exemplarCharacters'): if 'type' in tag.attrib: typeval = tag.attrib['type'] else: typeval = '' if not typeval in types: continue # TODO(dougfelt): when multiple types are used, append in fixed order # and don't rely on order in the xml file? try: cat = frozenset(['L', 'M', 'N']) def accept(s): return len(s) > 1 or unicode_data.category(s)[0] in cat exemplar_list = [ s for s in unicode_set_string_to_list(tag.text) if accept(s)] exemplars.extend(unicode_set_string_to_list(tag.text)) except Exception as e: print 'failed parse of %s' % cldr_file_path raise e break _exemplar_from_file_cache[cldr_file_path] = exemplars return exemplars _exemplar_from_extra_data_cache = {} def get_exemplar_from_extra_data(loc_tag): try: return _exemplar_from_extra_data_cache[loc_tag] except KeyError: pass try: exemplar_string = extra_locale_data.EXEMPLARS[loc_tag] exemplars = unicode_set_string_to_list(exemplar_string) except KeyError: exemplars = None _exemplar_from_extra_data_cache[loc_tag] = exemplars return exemplars # Technically, language tags are case-insensitive, but the CLDR data is cased, # this leaves out lots of edge cases of course. Sometimes we use lower case # script tags so this allows that, but it requires the lang tag to be lower case # and the region tag to be all upper case. LSRV_RE = re.compile(r'^([a-z]{2,3})(?:[_-]([A-Za-z][a-z]{3}))?' r'(?:[_-]([A-Z]{2}|\d{3}))?(?:[_-]([A-Z]{5,8}))?$') def get_exemplar_and_source(loc_tag): # don't use exemplars encoded without script if the requested script is not # the default m = LSRV_RE.match(loc_tag) script = m.group(2) if m else None while loc_tag != 'root': for directory in ['common', 'seed', 'exemplars']: exemplar = get_exemplar_from_file( path.join(directory, 'main', loc_tag.replace('-', '_') + '.xml'), ['', 'auxiliary']) if exemplar: return exemplar, loc_tag + '_ex_' + directory exemplar = get_exemplar_from_extra_data(loc_tag) if exemplar: return exemplar, loc_tag + '_ex_extra' loc_tag = parent_locale(loc_tag) if loc_tag == 'root' or ( script and get_likely_subtags(loc_tag)[1] != script): break return None, None def loc_tag_to_lsrv(loc_tag): """Convert a locale tag to a tuple of lang, script, region, and variant. Supplies likely script if missing.""" m = LSRV_RE.match(loc_tag) if not m: if _DEBUG: print 'regex did not match locale \'%s\'' % loc_tag return None lang = m.group(1) script = m.group(2) region = m.group(3) variant = m.group(4) if not script: tag = lang if region: tag += '-' + region try: script = get_likely_script(tag) except KeyError: try: script = get_likely_script(lang) except KeyError: pass return (lang, script, region, variant) def lsrv_to_loc_tag(lsrv): return '-'.join([tag for tag in lsrv if tag]) _lang_scr_to_lit_pops = {} def _init_lang_scr_to_lit_pops(): data_file = path.join( CLDR_DIR, 'common', 'supplemental', 'supplementalData.xml') root = ElementTree.parse(data_file).getroot() tmp_map = collections.defaultdict(list) for territory in root.findall('territoryInfo/territory'): region = territory.attrib['type'] population = int(territory.attrib['population']) lit_percent = float(territory.attrib['literacyPercent']) / 100.0 for lang_pop in territory.findall('languagePopulation'): lang = lang_pop.attrib['type'] pop_percent = float(lang_pop.attrib['populationPercent']) / 100.0 if 'writingPercent' in lang_pop.attrib: lang_lit_percent = float(lang_pop.attrib['writingPercent']) / 100.0 else: lang_lit_percent = lit_percent locale = loc_tag_to_lsrv(lang + '_' + region) lang_scr = '-'.join([locale[0], locale[1]]) lit_pop = int(population * pop_percent * lang_lit_percent) tmp_map[lang_scr].append((region, lit_pop)) # make it a bit more useful by sorting the value list in order of decreasing # population and converting the list to a tuple for lang_scr, values in tmp_map.iteritems(): _lang_scr_to_lit_pops[lang_scr] = tuple( sorted(values, key=lambda (r, p): (-p, r))) def get_lang_scr_to_lit_pops(): """Return a mapping from lang_scr to a list of tuples of region and population sorted in descending order by population. """ if not _lang_scr_to_lit_pops: _init_lang_scr_to_lit_pops() return _lang_scr_to_lit_pops; def lang_scr_to_lit_pops(lang_scr): try: return get_lang_scr_to_lit_pops()[lang_scr] except KeyError: return None def lang_scr_to_global_lit_pop(lang_scr): lit_pops = lang_scr_to_lit_pops(lang_scr) if not lit_pops: return 0 return sum(p for _, p in lit_pops) def get_lang_scrs_by_decreasing_global_lit_pop(): lit_pops = get_lang_scr_to_lit_pops() result = [] for lang_scr in lit_pops: global_pop = sum(p for _, p in lit_pops[lang_scr]) result.append((global_pop, lang_scr)) result.sort(reverse=True) return result def main(): global _DEBUG, _USE_EXTRA_LOCALE_DATA parser = argparse.ArgumentParser() parser.add_argument( '-rl', '--region_to_lang', help='dump region to lang script info', metavar='region', nargs='*') parser.add_argument( '-lr', '--lang_to_region', help='dump lang to region info', metavar='lang', nargs='*') parser.add_argument( '-ls', '--lang_to_script', help='dump lang to script info', metavar='lang', nargs='*') parser.add_argument( '-d', '--debug', help='turn on debug flag when building data', action='store_true') parser.add_argument( '-nx', '--no_extra', help='turn off extra locale data', action='store_true') args = parser.parse_args(); if args.debug: _DEBUG = True if args.no_extra: _USE_EXTRA_LOCALE_DATA = False if args.region_to_lang != None: print 'region to lang+script' regions = args.region_to_lang or sorted(known_regions()) for r in regions: print '%s (%s):' % (r, get_english_region_name(r)) for ls in sorted(region_to_lang_scripts(r)): print ' %s' % ls if args.lang_to_region != None: print 'lang to region' langs = args.lang_to_region or sorted(known_langs()) for l in langs: print '%s (%s):' % (l, get_english_language_name(l)) for r in sorted(lang_to_regions(l)): print ' %s' % r if args.lang_to_script != None: print 'lang to script' langs = args.lang_to_script or sorted(known_langs()) for l in langs: print '%s (%s):' % (l, get_english_language_name(l)) for s in sorted(lang_to_scripts(l)): print ' %s' % s if __name__ == "__main__": main() nototools-2017-09-25-tooling-for-phase3-update/nototools/cmap_block_coverage.py000077500000000000000000000221741316231664500274540ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2016 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Display unicode coverage of a set of cmaps.""" import argparse import collections from nototools import cmap_data from nototools import unicode_data from nototools import tool_utils _MISSING_SCRIPTS = frozenset(['']) _OMITTED_SCRIPTS = frozenset(['(omitted)']) _OMITTED = tool_utils.parse_int_ranges(""" 0001-000c 000e-001f # C0 controls 007f-009f # del and C1 controls d800-dfff # surrogates e000-f8ff # pua fe00-fe0f # variation selectors feff # BOM e0000-e007f # tags e0100-e01ff # supplementary variation selectors f0000-ffffd # supplementary PUA # fe000-fe4e4 fe4ef-fe82b fe82d fe838-ffffd # plane 15 PUA - emoji 100000-10ffff # plane 16 pua""") _LGC_LIST = ['LGC', 'Latn', 'Grek', 'Cyrl'] def _get_scripts(cp, cp_to_scripts): scripts = cp_to_scripts.get(cp, None) if not scripts: scripts = _OMITTED_SCRIPTS if cp in _OMITTED else _MISSING_SCRIPTS return scripts def _script_names(scripts): script_list = [] # sort LGC first for lgc in _LGC_LIST: if lgc in scripts: script_list.append(lgc) script_list += [s for s in sorted(scripts) if s not in _LGC_LIST] return ', '.join(script_list) def _create_cp_to_scripts(data, only_scripts=None): cp_to_scripts = collections.defaultdict(set) all_scripts = set() skip_set = frozenset(['Zinh', 'Zyyy', 'Zzzz']) cjk_set = frozenset('Bopo,Hang,Hani,Hans,Hant,Hira,Jpan,Kana,Kore'.split(',')) lgc_set = frozenset('Latn,Grek,Cyrl'.split(',')) for row in data.table.rows: script = row.script if only_scripts and script not in only_scripts: continue if script in skip_set: continue if script in cjk_set: script = 'CJK' if script in lgc_set: script = 'LGC' all_scripts.add(script) chars = tool_utils.parse_int_ranges(row.ranges) for cp in chars: cp_to_scripts[cp].add(script) return cp_to_scripts, all_scripts def _list_details(start_cp, limit_cp, defined_cps, defined_count, details): num = 0 initial_cp = start_cp while num < details - 1 and num < defined_count: if initial_cp in defined_cps: print '%13d %04x %s' % ( num + 1, initial_cp, unicode_data.name(initial_cp, '(unnamed)')) num += 1 initial_cp += 1 if num < defined_count: final_cp = limit_cp - 1 final_name = None while final_cp >= initial_cp: if final_cp in defined_cps: final_name = unicode_data.name(final_cp, '(unnamed)') num += 1 break final_cp -= 1 if final_name and num < defined_count: middle_cp = final_cp - 1 while middle_cp >= initial_cp: if middle_cp in defined_cps: print '%13s' % '...' break middle_cp -= 1 if final_name: print '%13d %04x %s' % (defined_count, final_cp, final_name) def _is_empty_scripts(scripts): return (not scripts or scripts == _MISSING_SCRIPTS or scripts == _OMITTED_SCRIPTS) def _list_range( start_cp, limit_cp, defined_cps, defined_count, scripts, all_scripts, only_scripts, details): if limit_cp != start_cp + 1: range_text = '%04x-%04x' % (start_cp, limit_cp - 1) else: range_text = '%04x' % start_cp if not scripts: num_scripts = 0 script_names = '(none)' elif _is_empty_scripts(scripts): num_scripts = 0 script_names = iter(scripts).next() else: num_scripts = len(scripts) if scripts == all_scripts and scripts != only_scripts: # only use 'all' if we're not limiting scripts script_names = '(all)' else: script_names = _script_names(scripts) print '%13s %6d %3s in %3d %7s: %s' % ( range_text, defined_count, 'cps' if defined_count != 1 else 'cp', num_scripts, 'scripts' if num_scripts != 1 else 'script', script_names) if details > 0: _list_details(start_cp, limit_cp, defined_cps, defined_count, details) def _list_blocks( start, limit, defined_cps, cp_to_scripts, all_scripts, only_scripts, details): start_cp = -1 defined_count = 0 block = None showed_block = False scripts = None skip_empty = bool(only_scripts) for cp in range(start, limit): is_defined = cp in defined_cps cp_block = unicode_data.block(cp) cp_scripts = _get_scripts(cp, cp_to_scripts) if is_defined else None if cp_block != block or ( cp_scripts and scripts and cp_scripts != scripts): if block and block != 'No_Block': if not (skip_empty and _is_empty_scripts(scripts)): if not showed_block: print '...' if block == 'No_Block' else block showed_block = True _list_range( start_cp, cp, defined_cps, defined_count, scripts, all_scripts, only_scripts, details) start_cp = cp defined_count = 0 if cp_block != block: block = cp_block showed_block = False scripts = None if is_defined: scripts = cp_scripts defined_count += 1 if not (skip_empty and _is_empty_scripts(scripts)): if not showed_block: print '...' if block == 'No_Block' else block _list_range( start_cp, limit, defined_cps, defined_count, scripts, all_scripts, only_scripts, details) def _summarize_block(block, block_count, defined_count, script_counts): if block == 'No_Block': print '...' return if block_count == defined_count: print '%s (%d cps)' % (block, defined_count) else: print '%s (%d of %d cps)' % (block, defined_count, block_count) lower_limit = int(defined_count / 10) groups = collections.defaultdict(list) for script, count in script_counts.iteritems(): groupnum = int(count / 5) * 5 if groupnum < lower_limit: groupnum = 0 groups[groupnum].append((script, count)) for key in sorted(groups, reverse=True): group_list = groups[key] low = 0x110000 hi = -1 scripts = set() for g in group_list: count = g[1] if count < low: low = count if count > hi: hi = count scripts.add(g[0]) if low == hi: if hi == defined_count: count = 'all' else: count = '%d' % hi else: count = '%d-%d' % (low, hi) script_names = _script_names(scripts) print '%6s: %s' % (count, script_names) def _summarize_blocks(start, limit, defined_cps, cp_to_scripts, all_scripts): block = None block_count = 0 defined_count = 0 script_counts = None for cp in range(start, limit): cp_block = unicode_data.block(cp) if cp_block != block: if block: _summarize_block( block, block_count, defined_count, script_counts) block = cp_block block_count = 0 defined_count = 0 script_counts = collections.defaultdict(int) block_count += 1 is_defined = cp in defined_cps and cp not in _OMITTED if not is_defined: continue defined_count += 1 scripts = _get_scripts(cp, cp_to_scripts) for script in scripts: script_counts[script] += 1 _summarize_block(block, block_count, defined_count, script_counts) def block_coverage( cmap_file, start=0, limit=0x20000, only_scripts=None, details=0, summary=False): data = cmap_data.read_cmap_data_file(cmap_file) cp_to_scripts, all_scripts = _create_cp_to_scripts(data, only_scripts) defined_cps = unicode_data.defined_characters(version=9.0) if summary: _summarize_blocks( start, limit, defined_cps, cp_to_scripts, all_scripts) else: _list_blocks( start, limit, defined_cps, cp_to_scripts, all_scripts, only_scripts, details) def main(): parser = argparse.ArgumentParser() parser.add_argument( 'cmap_file', help='cmap data file', metavar='file') parser.add_argument( '-d', '--details', help='show details on N characters in each range' ' (3 if no value provided)', metavar='num', default=0, const=3, type=int, nargs='?') parser.add_argument( '-s', '--summary', help='show summary of block usage only', action='store_true') parser.add_argument( '-r', '--range', help='range of characters to show (default 0-1ffff)', metavar='range', default='0-1ffff') parser.add_argument( '-sc', '--scripts', help='limit scripts to show', metavar='script', nargs='+', default=None) args = parser.parse_args() ranges = tool_utils.parse_int_ranges(args.range) start = min(ranges) end = max(ranges) if end > 0x10ffff: end = 0x10ffff; limit = end + 1 if args.scripts: args.scripts = frozenset(args.scripts) block_coverage( args.cmap_file, start, limit, args.scripts, args.details, args.summary) if __name__ == "__main__": main() nototools-2017-09-25-tooling-for-phase3-update/nototools/cmap_data.py000066400000000000000000000173041316231664500254140ustar00rootroot00000000000000# Copyright 2016 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import collections import datetime from nototools import noto_fonts # for script_name_for_report from nototools import tool_utils from xml.etree import ElementTree as ET """Functions for reading/writing cmap data in xml format. This data is represented by a CmapData object, which consists of MetaData and TableData. MetaData consists of the date, the program name, and args, which is a list of arg, value tuples. TableData consists of a list of headers, and a list of RowData objects with fields named after the headers. Currently the cmap data metadata holds information about how the data was generated, and the table the generated data. There are four or six columns: script code, script name, the number of codepoints, and the codepoints represented as a string of hex values and ranges separated by space; when there are six columns these are the count and ranges of 'fallback codepoints'. This format is not enforced by all the related functions in this file, though it is used by the code that converts between a map from script to cpset and a TableData.""" MetaData = collections.namedtuple('MetaData', 'date, program, args') TableData = collections.namedtuple('TableData', 'header, rows') CmapData = collections.namedtuple('CmapData', 'meta, table') def _prettify(root, indent=''): """Pretty-print the root element if it has no text and children by adding to the root text and each child's tail.""" if not root.text and len(root): indent += ' ' sfx = '\n' + indent root.text = sfx for elem in root: elem.tail = sfx _prettify(elem, indent) elem.tail = sfx[:-2] def _read_meta(meta_node): """Return a MetaData object for the 'meta' element.""" date = meta_node.get('date') program = meta_node.get('program') args = [] args_node = meta_node.find('args') if args_node is not None: for arg_node in args_node: key = arg_node.tag val = arg_node.get('val').strip() args.append((key, val)) return MetaData(date, program, args) def _read_table(table_node): """Return a TableData object for the 'table' element.""" header = [] rows = [] for node in table_node: if node.tag == 'th': if header: raise ValueError('cannot handle multiple headers') elif rows: raise ValueError('encountered header after rows') else: header = node.text.strip() elif node.tag == 'tr': rows.append(node.text.strip()) return create_table(header, rows) def _read_tree(root): """Return a CmapData object for the 'cmapdata' element.""" meta = _read_meta(root.find('meta')) table = _read_table(root.find('table')) return CmapData(meta, table) def _build_meta(metadata): """Create an xml 'meta' element for the MetaData object.""" meta = ET.Element('meta', date=metadata.date, program=metadata.program) if metadata.args: args = ET.Element('args') for k, v in metadata.args: arg = ET.Element(k, {'val': v}) args.append(arg) meta.append(args) return meta def _build_table(tabledata): """Create an xml 'table' element for the TableData object.""" table = ET.Element('table', nrows=str(len(tabledata.rows))) if tabledata.header: header = ET.Element('th') header.text = ','.join(tabledata.header) table.append(header) for rowdata in tabledata.rows: row = ET.Element('tr') row_items = [getattr(rowdata, h, '') for h in tabledata.header] row.text = ','.join(row_items) table.append(row) return table def _build_tree(cmap_data, pretty=False): """Create an xml 'cmapdata' element for the CmapData object.""" root = ET.Element('cmapdata') def opt_append(elem): if elem != None: root.append(elem) opt_append(_build_meta(cmap_data.meta)) opt_append(_build_table(cmap_data.table)) if pretty: _prettify(root) return ET.ElementTree(element=root) def read_cmap_data_file(filename): return _read_tree(ET.parse(filename).getroot()) def read_cmap_data(text): return _read_tree(ET.fromstring(text)) def write_cmap_data_file(cmap_data, filename, pretty=False): _build_tree(cmap_data, pretty).write( filename, encoding='utf-8', xml_declaration=True) def write_cmap_data(cmap_data, pretty=False): return ET.tostring(_build_tree(cmap_data, pretty).getroot(), encoding='utf-8') def create_metadata(program, args=None, date=datetime.date.today()): """Create a MetaData object from the program, args, and date.""" return MetaData( str(date), program, [] if not args else [(str(arg[0]), str(arg[1])) for arg in args]) def create_table(header, rows): """Create a TableData object from the header and rows. Header is a string, rows is a list of strings. In each, columns are separated by ',' which cannot otherwise appear in the text. Each row must have the same number of columns as the header does.""" header = [t.strip() for t in header.split(',')] RowData = collections.namedtuple('RowData', header) rowdatas = [] for row in rows: row = [t.strip() for t in row.split(',')] if len(row) != len(header): raise ValueError('table has %d cols but row[%d] has %d' % ( len(header), len(rowdatas), len(row))) rowdatas.append(RowData(*row)) return TableData(header=header, rows=rowdatas) def create_table_from_map(script_to_cmap): """Create a table from a map from script to cmaps. Outputs the script code, script name, count of code points, the codepoint ranges in hex separated by space, the count of excluded/fallback code points, and their ranges separated by space. script_to_cmap can have values either of cmap or of a tuple of cmap, xcmap; in the first case xcmap is assumed None. xcmaps that are None are marked as having an xcount of -1. This makes it possible to distinguish an empty xcmap from one that doesn't exist.""" table_header = 'script,name,count,ranges,xcount,xranges'.split(',') RowData = collections.namedtuple('RowData', table_header) table_rows = [] for script in sorted(script_to_cmap): cmap = script_to_cmap.get(script) xcmap = None if type(cmap) == tuple: xcmap = cmap[1] cmap = cmap[0] name = noto_fonts.script_name_for_report(script) count = len(cmap) cp_ranges = tool_utils.write_int_ranges(cmap) if xcmap == None: xcount = -1 xcp_ranges = '' else: xcount = len(xcmap) xcp_ranges = tool_utils.write_int_ranges(xcmap) table_rows.append( RowData(script, name, str(count), cp_ranges, str(xcount), xcp_ranges)) return TableData(table_header, table_rows) def create_map_from_table(table): """Create a map from script code to cmap.""" assert table.header[0:4] == 'script,name,count,ranges'.split(',') return {rd.script: rd for rd in table.rows} def _test(): meta = create_metadata('test', [('this', 5), ('that', 12.3)]) table = create_table('foo,bar', [ '1,5.3', '2,6.4', ]) cmapdata = CmapData(meta, table) print cmapdata xml_text = write_cmap_data(cmapdata) newdata = read_cmap_data(xml_text) print newdata write_cmap_data_file(cmapdata, 'test_cmap_data.xml', pretty=True) newdata = read_cmap_data_file('test_cmap_data.xml') print newdata if __name__ == "__main__": _test() nototools-2017-09-25-tooling-for-phase3-update/nototools/codepoint_groups.txt000066400000000000000000000467251316231664500272660ustar00rootroot00000000000000# group data plus allocations # three columns, plus comments # 1) 'script' codes separated by space # 2) group name # 3) list of char ranges (note, this is ordered but should not duplicate) # comments these were additional 'reference' chars used when presenting the # images, not sure what to do with this data at the moment. # Most non-decorative arrows end up in math, basic ones also in symbols Zsym Zmth;arrows;2190-2199 23af 23d0 2921 2922 Zmth -SYM2;arrows, to bar;2912-2913 21e4-21e5 21b9 Zmth -SYM2;arrows, from bar;21a4-21a7 Zmth -SYM2;arrows, long;27f5-27f7 2b33 Zmth -SYM2;arrows, long, from bar;27fb-27fe Zmth -SYM2;arrows, two-headed;219e-21a1 2900-2901 2905 2910 2916-2918 2b34-2b37 Zmth -SYM2;arrows, with stroke;219a 219b 21ae Zmth -SYM2;arrows, with perpendicular stroke;21f7-21f9 2908-2909 Zmth -SYM2;arrows, with two perpendicular strokes;21fa-21fc 21de-21df SYM2;arrows, with two perpendicular strokes, triangle-headed (ref only);2b7a-2b7d Zmth -SYM2;arrows, bent;21b0-21b3 2b0e-2b11 Zmth -SYM2;arrows, keyboard;21b4 21b5 21b8 21b9 21de 21df 21e4 21e5 Zmth -SYM2;arrows, circular;21ba-21bb 27f2-27f3 2940-2941 (2b6e-2b6f 1f5d8) 21b6-21b7 2938-293f Zmth -SYM2;arrows, harpoon;21bc-21c3 Zmth -SYM2;arrows, harpoon, two barbs;294a-2951 Zmth -SYM2;arrows, harpoon, to bar; 2952-2959 Zmth -SYM2;arrows, harpoon, from bar; 295a-2961 Zmth -SYM2;arrows, harpoon, paired;2962-296f 21cb 21cc Zmth -SYM2;arrows, paired;21c4-21c6 21f5 21c7-21ca SYM2;arrows, paired, triangle-headed;2b80-2b87 Zmth -SYM2;arrows, double;21d0-21d9 21cd-21cf Zmth -SYM2;arrows, double, with perpendicular stroke;2902-2904 Zmth -SYM2;arrows, double, from bar;2906-2907 Zmth -SYM2;arrows, double, long;27f8-27fa Zmth -SYM2;arrows, double, long, from bar;27fd-27fe Zmth -SYM2;arrows, triple;21da 21db 290a 290b Zmth -SYM2;arrows, quadruple;27f0-27f1 2b45-2b46 Zmth -SYM2;arrows, crossed;2927-2932 Zmth -SYM2;arrows, squiggle;21dc 21dd 27ff 2b33 Zmth -SYM2;arrows, dashed;21e0-21e3 290c-2911 2b38 Zmth -SYM2;arrows, to corner;21f1 21f2 Zmth -SYM2;arrows, with circle;21f4 2b30 2948 Zmth -SYM2;arrows, with circled plus;27f4 2b32 Zmth -SYM2;arrows, three, horizontal;21f6 2b31 Zmth -SYM2;arrows, open-headed;21fd-21ff Zmth -SYM2;arrows, with tail;21a2-21a3 2914 2915 2919-291c 2b37 2b39-2b3d Zmth -SYM2;arrows, to diamond;291d-2920 Zmth -SYM2;arrows, with hook;2923-2926 21a9-21aa Zmth -SYM2;arrows, curved;2934-2937 Zmth -SYM2;arrows, wave;219c-219d 21ad Zmth -SYM2;arrows, through x;2b3e 2947 Zmth -SYM2;arrows, through gt/lt;2977 2b43 Zmth -SYM2;arrows, through subset;297a 2b44 Zmth -SYM2;arrows, half wave;2933 2b3f Zmth -SYM2;arrows, with loop;21ab-21ac Zmth -SYM2;arrows, long and short;2942-2944 Zmth -SYM2;arrows, with equals;2971 2b40 Zmth -SYM2;arrows, with plus;2945-2946 Zmth -SYM2;arrows, with tilde;2972-2975 2b41-2b42 2b47-2b4c Zmth -SYM2;arrows, long;27f5-27ff Zmth -SYM2;math symbols;2949 2970 2976 2978-2979 297b-297f 21a8 21af 237c # most other symbols appearing in running text are in symbols, but some things # are basically 'terminal graphics' symbols so end up in Mono. Zsym;tech, misc;2300-2307 2311-2315 2317 Zsym Zmth;tech, math;2308-230b Zsym; tech, crop marks;230c-230f Zsym Zmth;tech, quine corners;231c-231f Zmth MONO -Zsym;tech, math/bracket pieces;2320-2321 23b2-23b3 239b-23ad 23ae 23b0-23b1 Zsym;tech, frown and smile;2322-2323 Zsym;tech, cjk angles;2329-232a Zsym;tech, chemistry;232c 23e3 Zsym;tech, drafting;232d-2335 23cd SYM2 -Zsym;tech, control codes;237b 237d-237f Zsym;tech, keyboard ISO 9995-7;2380-238c 2396-239a Zsym;tech, electrotechnical;238d-2394 Zmth MONO -Zsym;tech, brackets, horizontal; 23b4-23b6 MONO -Zsym -SYM2;tech, terminal graphics; 23b7-23b9 MONO -Zsym -SYM2;tech, scan lines;23ba-23bd Zsym;tech, dentistry;23be-23cc Zsym;tech, metrical;23d1-23d9 Zsym;tech, electric;23da 23db 23e6 Zmth MONO -Zsym;tech, math, horizontal brackets;23dc-23e1 Zsym;tech, misc;23e2 23e4-23e5 23e7-23e8 # APL is in mono for sure, but probably nowhere else MONO -SYM2 -Zsym;apl;2336-237a 2395 # this is the 'apl order' # apl full;2212 2223 003d 002b 00d7 00f7 2261 2336 25af 2337 22c4 2338-233c 2218 25cb 2296 233d 233e 002f 005c 22a2 22a3 233f 2340 003c 003e 005b 005d 2264 2265 2341-2344 2190 2192 2345-2348 2282 2283 0028 0029 007b 007d 2286 2287 2205 2349 00af 230a 2227 22a5 234a 2206 234b-234d 2229 234e 2191 234f 2350 005f 2308 2228 22a4 2351 2207 2352-2354 222a 2355 2193 2356 2357 002e 0027 003a 2358-235e 22c6 235f 2360 00a8 2235 2361-2367 002c 003b 003f 0021 223c 2260 2262 0024 2368-2372 237a 220a 2373-2379 Zsym;turned digits;218a 218b Zsym;misc symbols;267e 269c 269d SYM2 -Zsym;weather;2600-2602 2614 2603 2607-2609 263c Zsym;alchemy;260a-260d SYM2 -Zsym;emoji-like;260e-260f 2618-2619 Zsym;saltire;2613 Zsym;medical;2624-2625 2695 Zsym;religious;2626-262f 2638 2670-2671 Zsym;emoticons;2639-263b 1f610 Zsym;astrological;263d-2644 26e2 2645-2647 26e3 Zsym;zodiac;2648-264f 26ce 2650-2653 SYM2 -Zsym;chess;2654-265f SYM2 -Zsym;playing cards symbols;2660-2667 Zsym MUSIC;music symbols;2669-266f Zsym;recycling;2672-267d SYM2 -Zsym;dice;2680-2685 Zsym;dictionary and map symbols;2690-269b SYM2 -Zsym;misc signs;26a0-26a1 Zsym;gender;2640 2642 26a2-26a9 26b2 Zsym;genealogical;26ad-26b1 Zsym;astrological;26b3-26bc SYM2 -Zsym;traffic signs;26cc-26cd 26cf 26d0-26e1 Zsym;pentagrams;26e4-26e7 Zsym;map symbols;26e3 26e8-26ff Zsym;alchemical symbols;1f700-1f773 Zsym;composed, circled, numbers;24ea 2460-2473 Zsym;composed, circled, numbers, dingbat;1f10b 2780-2789 Zsym;composed, circled, numbers, negative;24ff 24eb-24f4 Zsym;composed, circled, numbers, negative, dingbat;1f10c 2776-277f Zsym;composed, circled, numbers, negative, dingbat, sans-serif;278a-2793 Zsym;composed, circled, numbers, doubled;24f5-24fe Zsym;composed, circled, letters, uppercase;24b6-24cf Zsym;composed, circled, letters, lowercase;24d0-24e9 Zsym;composed, circled, letters, italic;1f12b-1f12c Zsym;composed, circled, letters, negative;1f150-1f169 Zsym;composed, circled, text;1f12d-1f12e Zsym;composed, squared, letters;1f130-1f149 Zsym;composed, squared, letters, negative;1f170-1f189 Zsym;composed, squared, text;1f14a-1f14f 1f190 1f19b-1f1ac Zsym;composed, squared, text, negative;1f18a-1f18f 1f170-1f171 1f17e 1f17f Zsym;composed, parenthesized, numbers;2474-2487 Zsym;composed, parenthesized, letters, uppercase;1f110-1f122 1f12a 1f123-1f129 Zsym;composed, parenthesized, letters, lowercase;249c-24b5 Zsym;composed, with full stop, numbers;1f100 2488-249b Zsym;composed, with comma, digits;1f101-1f10a Zsym;raised signs;1f16a-1f16b Zsym;roman numerals;2160-2183 2185-2188 # most dingbats are in symbols2, also most geometric shapes SYM2;snowflakes;2744-2746 SYM2;sparkles;2747-2748 SYM2;asterisks;2731-2732 273b-273d 2743 2749 SYM2;asterisks, 4-spoked;2722-2725 SYM2;asterisks, 5-spoked, weights;1f7af-1f7b4 SYM2;asterisks, 6-spoked, weights;1f7b5-1f7ba SYM2;asterisks, 8-spoked;274a-274b SYM2;asterisks, 8-spoked, weights;2733 1f7bb-1f7bf SYM2;asterisks, 16-spoked;273a SYM2;geom, triangles, black white, small;25b4 25b5 25b8 25b9 25be 25bf 25c2 25c3 SYM2;geom, triangles, black medium centered;2bc5-2bc8 SYM2;geom, triangles, black white;25b2 25b3 25bc 25bd 25c0 25c1 25b6 25b7 SYM2;geom, triangles, black webdings;23f4-23f7 SYM2;geom, triangles, isosceles right;1f780 1f781 1f782 1f783 SYM2;geom, triangles, lower upper;25e2-25e5 25f8-25fa 25ff Zmth;geom, triangles, math;25ec-25ee SYM2;geom, circles, black;22c5 2219 1f784 (2022) 2981 26ab 25cf 2b24 SYM2;geom, circles, white;25e6 26ac 26aa 25cb 25ef 2b55 SYM2;geom, circles, half;25cf 25d6-25d7 2bca-2bcb SYM2;geom, circles, partly-filled;25cf 25d0-25d5 SYM2;geom, circles, dotted;2299 1f78a 29bf 1f78b 25c9 25ce 2b57 SYM2;geom, circles, white weights;25cb 2b58 1f785-1f789 SYM2;geom, circles, other;25cf 25cc 25cd 25d9-25e1 SYM2;geom, circles, medium small;26ac 25d8 SYM2;geom, shadowed;274f-2752 274d 1f53e-1f53f SYM2;geom, squares, black;1f78c 2b1d 1f78d 25aa 25fe 2bc0 25fc 25a0 2b1b SYM2;geom, squares, white;2b1e 25ab 25fd 25fb 25a1 2b1c SYM2 Zmth;geom, squares, halfs;2b12 2b13 25e7 25e8 2b14 2b15 25e9 25ea 25eb 26cb SYM2;geom, squares, other;25a1-25a9 SYM2;geom, squares, white dotted;1f794 25a3 1f795 1f796 SYM2;geom, squares, white weights;25a1 1f78e-1f793 SYM2;geom, diamonds, black;1f797 1f798 2b29 1f799 2bc1 2b25 25c6 2756 SYM2;geom, diamonds, half;2b16-2b19 SYM2;geom, diamonds, white;2b26 25c7 1f79a 25c8 1f79b 1f79c SYM2;geom, lozenges;1f79d 1f79e 2b2a 2b2b 1f79f 2b27 2b28 29eb 25ca 1f7a0 SYM2;geom, ovals;2b2c-2b2f 2b56 SYM2;geom, greek cross;1f7a1-1f7a7 SYM2;geom, other crosses;2719-271c SYM2;geom, saltire;1f7a8-1f7ae SYM2;geom, sizes 1 tiny;1f78c 1f797 1f79d 22c5 SYM2;geom, sizes 2 very small;2b1d 2b1e 1f798 1f79e 2219 2218 SYM2;geom, sizes 3 small;25c2 25c3 25b8 25b9 25b4 25b5 25be 25bf 25aa 25ab 2b29 22c4 2b2a 2b2b 2b51 2b52 2022 25e6 SYM2;geom, sizes 4 slightly small;1f78d 1f784 SYM2;geom, sizes 5 medium small;25fe 25fd 1f799 1f79f 22c6 2981 26ac 2b50 Zmth;geom, centered;2bc0-2bc8 SYM2;geom, sizes 6 medium;25fc 25fb 2b25 2b26 2b27 2b28 26ab 26aa 2b1f 2b20 2b53 2b54 2bc2 2b23 2394 2b22 2b21 2bc3 2bc4 2605 2606 2729 2b2c 2b2d 2b2e 2b2f SYM2;geom, sizes 7 regular;25c0 25c1 25b6 25b7 25b2 25b3 25bc 25bd 25a0 25a1 25c6 25c7 29eb 25ca 25cf 25cb 2b1a SYM2;geom, sizes, large;2b1b 2b1c 25ef 2b24 SYM2 MONO;geom, tiles;1f67c-1f67f SYM2 MONO;geom, parallelograms;25ac-25b1 SYM2 MONO;geom, vertical bars;2758-275a SYM2;four-pointed cusps;2bcc-2bcf SYM2;stars, 3-pointed;1f7c0-1f7c3 SYM2;stars, 4-pointed;2bcc 2bce 2726-2727 1f7c4-1f7c8 SYM2;stars, 5-pointed;1f7ca 2605 2606 2729 2b50-2b52 1f7c9 272b-272f 272a 2730 SYM2;stars, 6-pointed;2736 1f7cb-1f7cd SYM2;stars, 8-pointed;2734-2735 2737-2738 2742 1f7ce-1f7d1 SYM2;stars, 12-pointed;1f7d2 2739 1f7d3 1f7d4 SYM2;arrowheads;27a2-27a4 SYM2;arrowheads, equilateral;2b98-2b9f SYM2;arrowheads, pointers;25ba-25bb 25c4-25c5 SYM2;arrowheads, nested;1f894-1f897 SYM2;arrowheads, triangle;1f890-1f893 SYM2;arrows, barb, weights;1f860-1f887 SYM2;arrows, bent, triangle-headed;2ba0-2ba7 SYM2;arrows, black;2b05 2b95 2b06 2b07 2b0c 2b0d 2b08 2b09 2b0a 2b0b SYM2 -Zmth;arrows, white;21e6 1f8ac 1f8ad 21e8 21e7 21e9 21f3 2b04 2b00-2b03 21ea-21f0 2bb8 SYM2;arrows, white circled;27b2 2b88-2b8b SYM2;arrows, compressed, weights;1f83c-1f843 SYM2;arrows, curved;27a5-27a6 2ba9 2baa 2bab 2ba8 2bac-2baf SYM2;arrows, circles, triangle-headed;(238b) 2b6e-2b6f Zmth -SYM2 -Zsym;arrows, circles;21ba-21bb SYM2;arrows, circular; 1f5d8 1f503 2b94 SYM2;arrows, double;2b80-2b87 SYM2;arrows, equilateral head, weights;1f810-1f81b SYM2;arrows, equilateral head, large head;1f81c-1f81f SYM2;arrows, finger-post;1f834-1f837 SYM2;arrows, heavy;1f844-1f847 SYM2;arrows, heavy shaft;1f82c 1f89c 1f89d 1f89e 1f89f 1f82e 1f82d 1f82f Zmth -SYM2 -Zsym;arrows, math;21f4 2b30-2b4c SYM2;arrows, zapf;2794 2798-27a1 27a7-27a8 27b3-27be SYM2;arrows, notched;1f898-1f89b SYM2;arrows, ribbon;2bb0-2bb7 SYM2;arrows, sans-serif;1f850 1f851 1f852 1f853 1f858 1f859 1f854-1f857 SYM2;arrows, shaded;1f8a0-1f8ab 27a9-27aa 27ab-27af 27b1 SYM2;arrows, squared;1f838-1f83b SYM2;arrows, triangle-headed;2b60-2b6d 2b4d SYM2;arrows, triangle-headed to bar;2b70-2b73 2b76-2b79 2b7e-2b7f SYM2;arrows, triangle-headed with double stroke;2b7a-2b7d SYM2;arrows, triangle-headed, shaft weights;1f820-1f833 SYM2;arrows, two-headed;2bec-2bef SYM2;arrows, u-shaped;2b8c-2b8f SYM2;arrows, zig-zag; 21af 2b4d SYM2;arrows, head sizes;1f800-1f80b # no allocation based on the following, should all be in other groups ;arrows, horizontal;27a2-27a4 2b9a 2b98 2b9e 2b9c 1f894 1f896 1f890 1f892 1f862 1f860 1f86a 1f868 1f872 1f870 1f87a 1f878 1f882 1f880 2b95 2b0c 2b05 2b8a 2b88 27b2 1f83e 1f83c 1f842 1f840 27a6 27a5 2ba9 2baa 2bab 2ba8 1f812 1f810 1f816 1f814 1f81a 1f818 1f81e 1f81c 1f836 1f834 1f846 1f844 1f82e 1f82c 1f89a 1f898 1f83a 1f838 2b62 2b64 2b60 2b6c 2b6a 2b72 2b70 2b7c 2b7a 1f822 1f820 1f826 1f824 1f82a 1f828 1f82e 1f82c 1f832 1f820 2bee 2bec 1f802 1f800 1f806 1f804 1f80a 1f808 21e8 2b04 21e6 SYM2;embellishments, three lines;269e-269f SYM2;embellishments, three rays;1f5e4-1f5e7 SYM2;ornaments, bracket;2768-2775 SYM2;ornaments, florettes;273e-2741 SYM2;ornaments, ligature;1f670-1f675 SYM2;ornaments, symbols;1f676-1f678 275b-2767 SYM2;ornaments, quilt;1f668-1f66b SYM2;ornaments, leaves, pointing buds;1f660-1f667 SYM2;ornaments, leaves, pointing;1f650-1f657 SYM2;ornaments, leaves, pointing vine;1f658-1f65f SYM2;hands;270b 1f590 1f591 270c 1f594 270d 1f58e 1f44c 1f58f 1f44d 1f592 1f44e 1f593 SYM2;hands, pointing indexes;261a 261b 261c 261e 261d 261f 1f597 SYM2;hands, pointing indexes, backhand;1f448 1f59c 1f449 1f59d 1f446 1f5a2 1f447 1f5a3 SYM2;hands, pointing indexes, sideways;1f598 1f59a 1f599 1f59b 1f59e 1f5a0 1f59f 1f5a1 SYM2;UI, power symbols;23fb-23fe 2b58 SYM2;UI, record controls;23ea 23e9 23ee 23ed 23ef 23f8 23f9 23fa 23cf SYM2;UI, speakers;1f507 1f508 1f509 1f50a 1f568 1f569 1f56a SYM2 -Zsym;UI, position indicators;2316 2bd0 SYM2;UI, computer;231a 1f4e4-1f4e5 1f50d 1f5d5-1f5d7 1f5da-1f5db SYM2;UI, keyboard, ja;25f0-25f7 SYM2;UI, keyboard symbols;2423 237d 2325 2324 232b 2326 2327 2318 2bb9 23ce 2328 2b90-2b93 2425 SYM2;UI, icons;1f5b6-1f5bb 1f5bf-1f5c1 1f5c4-1f5d3 SYM2;checkmark and x's;1f5f8 2713-2718 1f5d9 1f5f4 1f5f6 SYM2;ballot box;2610 2611 1f5f9 1f5f5 1f5f7 2612 2bbd 2bbe 2bbf 2717-2718 1f5f4 1f5f6 1f5f8 1f5d9 SYM2;emoji-like;2615 2668 26bd-26bf 2700-2704 2707 2711-2712 SYM2;emoji-like, caution;1f571 2620-2623 26a1 SYM2;emoji-like, charts;1f4b9 1f4c8 1f4c9 1f5e0 1f4ca SYM2;emoji-like, envelopes;2709 1f582-1f586 SYM2;emoji-like, hourglass;231b 23f3 SYM2;emoji-like, pencils;270e-2710 SYM2;emoji-like, sun moon;1f315 2609 (263d 263e) SYM2;emoji-like, telephone;260e-260f 1f57e-1f580 SYM2 -Zsym;emoji-like, weather;2600 2602 2614 2604 2607-2608 26c4 2603 26c7 1f323-1f324 26c5 1f325-1f326 2601 1f327 26c8 26c6 1f328-1f32b SYM2;misc, notched semicircle;1f543-1f544 SYM2;misc, pommee;1f540-1f542 Zsym -SYM2;misc, pharmacy;2695 1f54f SYM2;emoji;1f30d-1f30f 1f31c 1f321-1f322 1f32c 1f336 1f378 1f37d 1f393-1f39f 1f3a7 1f3ac-1f3ae (1f3b8-1f3b9)1f3c6 1f3cd-1f3ce 1f3f1-1f3f3 1f3f5-1f3f7 1f408 1f415 1f41f 1f426 1f43f 1f441-1f442 1f453 1f47d 1f4a3 1f4b0 1f4b3 1f4bb 1f4bf 1f4cb 1f4da 1f4df 1f4e6 1f4ea-1f4ed 1f4f7 1f4f9-1f4fb 1f4fd-1f4fe 1f512-1f513 1f54a 1f56b-1f579 1f57b-1f57d 1f581 1f587-1f588 1f589-1f58d 1f5a5-1f5b5 1f5bc-1f5be 1f5c2-1f5c3 1f5d4 1f5dc-1f5df 1f5e1-1f5e3 1f5f3 1f5fa 1f6cb 1f6cd-1f6cf 1f6e0-1f6e2 1f6e5-1f6ea 2708 1f6f0 1f93b 1f946 SYM2;emoji, building and map symbols;1f3d7-1f3da 1f3dc 1f3ed 1f3db 1f3e0 1f3d6 1f3dd 1f6e3 1f3d4 1f3de 1f3d5 1f6e4 1f3df 1f6f3 1f6f2 SYM2;emoji, clocks, wall;23f1-23f2 1f550-1f567 SYM2;emoji, vehicles;1f687 1f68d 1f691 1f694 1f698 1f6f1 SYM2;emoji, rockets;1f66c-1f66f SYM2;emoji, speech/mood bubbles;1f5e8-1f5f2 SYM2;emoji, signs;267f 2706 1f6ad 1f6b2 1f6c6-1f6c8 SYM2;emoji, people;1f46a 1f6b9-1f6ba 1f6bc 1f6c9-1f6ca 1f3c2 1f3c4 1f3ca-1f3cc # text, ascii;0020 00a0 0023 002a 0030-0039 Zsym -SYM2;text, religious symbols;1f546 271e 271d 271f 1f547 1f548 2626 2720 2721 2627-262f 2638 1f549 SYM2;text, letterlike;2422 2426 2753 2757 (203d) 1f679-1f67b 1f545 2b59 2bd1 SYM2;text, lithuanian dialectology;2b4e-2b4f 2b5a-2b5f SYM2;text, symbols for controls;2400-2421 2424 SYM2;text, format char symbols;fff9-fffb SYM2;text, braille;2800-28ff SYM2;text, counting rod digits;1d360-1d371 SYM2;text, coptic epact numbers;102e0-102fb SYM2;text, greek;10140-1018e SYM2;text, roman;10190-1019b 101a0 SYM2;text, rumi numbers;10e60-10e7e SYM2;text, phaistos disc;101d0-101fd SYM2;text, optical char;2440-244a SYM2;divination 1;268a-268b 1d300 SYM2;divination 2;268c-268f 1d301-1d305 SYM2;divination 3;2630-2637 SYM2;divination 4;1d306-1d356 SYM2;divination 6;4dc0-4dff SYM2;games, checkers;26c0-26c3 SYM2;games, domino tiles, horizontal;1f030-1f061 SYM2;games, domino tiles, vertical;1f062-1f093 SYM2;games, go;2686-2689 SYM2;games, mahjong tiles;1f000-1f02b SYM2;games, playing cards;1f0a0-1f0ae 1f0b1-1f0bf 1f0c1-1f0cf 1f0d1-1f0f5 SYM2;games, shogi;2616-2617 26c9-26ca # other groups Zmth;ascii, punct;0020-002f 003a-0040 005b-0060 007b-007e Zmth;ascii, digits;0030-0039 Zmth;ascii, letters, upper case;0041-005a Zmth;ascii, letters, lower case;0061-007a Zmth;math alphanumerics, letters, bold, upper case;1d400-1d419 Zmth;math alphanumerics, letters, bold, lower case;1d41a-1d433 Zmth;math alphanumerics, letters, italic, upper case;1d434-1d44d Zmth;math alphanumerics, letters, italic, lower case;1d44e-1d454 210e 1d456-1d467 Zmth;math alphanumerics, letters, bold italic, upper case;1d468-1d481 Zmth;math alphanumerics, letters, bold italic, lower case;1d482-1d49b Zmth;math alphanumerics, letters, script, upper case, script;1d49c 212c 1d49e-1d49f 2130 2131 1d4a2 210b 2110 1d4a5-1d4a6 2112 2133 1d4a9-1d4ac 211b 1d4ae-1d4b5 Zmth;math alphanumerics, letters, script, lower case;1d4b6-1d4b9 212f 1d4bb 210a 1d4bd-1d4c3 2134 1d4c5-1d4cf Zmth;math alphanumerics, letters, script, bold, upper case;1d4d0-1d4e9 Zmth;math alphanumerics, letters, script, bold, lower case;1d4ea-1d503 Zmth;math alphanumerics, letters, fraktur, upper case;1d504-1d505 212d 1d507-1d50a 210c 2111 1d50d-1d514 211c 1d516-1d51c 2128 Zmth;math alphanumerics, letters, fraktur, lower case;1d51e-1d537 Zmth;math alphanumerics, letters, fraktur, bold, upper case;1d56c-1d585 Zmth;math alphanumerics, letters, fraktur, bold, lower case;1d586-1d59f Zmth;math alphanumerics, letters, double-struck, upper case;1d538-1d539 2102 1d53b-1d53e 210d 1d540-1d544 2115 1d546 2119 211a 211d 1d54a-1d550 2124 Zmth;math alphanumerics, letters, double-struck, lower case;1d552-1d56b Zmth;math alphanumerics, letters, sans-serif, upper case;1d5a0-1d5b9 Zmth;math alphanumerics, letters, sans-serif, lower case;1d5ba-1d5d3 Zmth;math alphanumerics, letters, sans-serif, bold, upper case;1d5d4-1d5ed Zmth;math alphanumerics, letters, sans-serif, bold, lower case;1d5ee-1d607 Zmth;math alphanumerics, letters, sans-serif, italic, upper case;1d608-1d621 Zmth;math alphanumerics, letters, sans-serif, italic, lower case;1d622-1d63b Zmth;math alphanumerics, letters, sans-serif, bold italic, upper case;1d63c-1d655 Zmth;math alphanumerics, letters, sans-serif, bold italic, lower case;1d656-1d66f Zmth;math alphanumerics, letters, typewriter, upper case;1d670-1d689 # monospace Zmth;math alphanumerics, letters, typewriter, lower case;1d68a-1d6a3 # monospace Zmth;math alphanumerics, greek letters, bold, upper case;1d6a8-1d6c1 Zmth;math alphanumerics, greek letters, bold, lower case;1d6c2-1d6da Zmth;math alphanumerics, greek symbols, bold;1d6db-1d6e1 1d7ca-1d7cb Zmth;math alphanumerics, greek letters, italic, upper case;1d6e2-1d6fb Zmth;math alphanumerics, greek letters, italic, lower case;1d6fc-1d714 Zmth;math alphanumerics, greek symbols, italic;1d715-1d71b Zmth;math alphanumerics, greek letters, bold italic, upper case;1d71c-1d735 Zmth;math alphanumerics, greek letters, bold italic, lower case;1d736-1d74e Zmth;math alphanumerics, greek symbols, bold italic;1d74f-1d755 Zmth;math alphanumerics, greek letters, sans-serif, bold, upper case;1d756-1d76f Zmth;math alphanumerics, greek letters, sans-serif, bold, lower case;1d770-1d788 Zmth;math alphanumerics, greek symbols, sans-serif, bold;1d789-1d78f Zmth;math alphanumerics, greek letters, sans-serif, bold italic, upper case;1d790-1d7a9 Zmth;math alphanumerics, greek letters, sans-serif, bold italic, lower case;1d7aa-1d7c2 Zmth;math alphanumerics, greek symbols, sans-serif, bold italic;1d7c3-1d7c9 Zmth;math alphanumerics, digits, bold;1d7ce-1d7d7 Zmth;math alphanumerics, digits, double-struck;1d7d8-1d7e1 Zmth;math alphanumerics, digits, sans-serif;1d7e2-1d7eb Zmth;math alphanumerics, digits, sans-serif, bold;1d7ec-1d7f5 Zmth;math alphanumerics, digits, typewriter;1d7f6-1d7ff Zmth -Zsym;combining marks, math;20d0-20dc 20e1 20e5-20f0 Zsym;combining marks, symbols;20dd-20e0 20e4 SYM2;combining marks, other symbols;20e2 20e3 nototools-2017-09-25-tooling-for-phase3-update/nototools/collect_cldr_punct.py000077500000000000000000000104161316231664500273450ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2016 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Tool to collect some additional character usage data from cldr. Punctuation used with a language that we want to investigate includes ellipsis, delimiters (quote start/end), and separators in list patterns. If cldr specifies characters here, we want to require it in the fonts.""" import collections import glob import os from os import path import sys import xml.etree.cElementTree as ET from nototools import cldr_data from nototools import tool_utils from nototools import unicode_data TOOLS_DIR = path.abspath(path.join(path.dirname(__file__), os.pardir)) CLDR_DIR = path.join(TOOLS_DIR, 'third_party', 'cldr') def _add_text(chars, text): skip = False for i, cp in enumerate(text): if cp == '{': skip = True continue if cp == '}': skip = False continue if not skip: if cp == ' ': continue script = unicode_data.script(cp) if script == 'Zyyy': chars.add(cp) def _collect_punct_data(tree): chars = set() for tag in tree.findall('characters/ellipsis'): _add_text(chars, tag.text) for tag in tree.findall('characters/moreInformation'): _add_text(chars, tag.text) for tag in tree.findall('delimiters'): for t in tag: _add_text(chars, t.text) for tag in tree.findall('listPatterns/listPattern/listPatternPart'): _add_text(chars, tag.text) return chars def _collect_currency_data(tree): currencies = set() for tag in tree.findall('numbers/currencies/currency/symbol'): if len(tag.text) == 1: currencies.add(tag.text) return currencies def _get_cldr_files(cldr_dirs): files = set() for cldr_dir in cldr_dirs: search = path.join(CLDR_DIR, 'common', cldr_dir, '*.xml') files.update(glob.glob(search)) return files def _collect_script_to_punct(files): """Builds script to punct from provided cldr files. Builds 'LGC' data from component scripts. Adds ASCII single and double quotes if corresponding quotes are in the punct.""" script_to_punct = collections.defaultdict(set) curly_quotes_to_standard = [ (frozenset([unichr(0x2018), unichr(0x2019)]), frozenset(['\''])), (frozenset([unichr(0x201C), unichr(0x201D)]), frozenset(['"'])), ] for f in files: tree = ET.parse(f) punct = _collect_punct_data(tree) if punct: filename = path.splitext(path.basename(f))[0] script = cldr_data.get_likely_script(filename) if script == 'Zzzz': if filename != 'root': print >> sys.stderr, 'no script for %s' % filename else: script_to_punct[script] |= punct script_to_punct['LGC'] = set( script_to_punct['Latn'] | script_to_punct['Grek'] | script_to_punct['Cyrl']) for script in script_to_punct: punct = script_to_punct[script] for curly, standard in curly_quotes_to_standard: if curly & punct: punct.update(standard) return script_to_punct def _build_script_to_punct(): files = _get_cldr_files(['main']) script_to_punct = _collect_script_to_punct(files) return { script: frozenset(script_to_punct[script]) for script in script_to_punct } _script_to_punct = None def script_to_punct(): global _script_to_punct if not _script_to_punct: _script_to_punct = _build_script_to_punct() return _script_to_punct def _write_script_to_punct(script_to_punct): print 'SCRIPT_TO_PUNCT = {' for script in sorted(script_to_punct): chars = script_to_punct[script] int_chars = [ord(cp) for cp in chars] print ' # %s' % ('|'.join(sorted(chars))) print " '%s': '%s'," % (script, tool_utils.write_int_ranges(int_chars)) print '}' def main(): _write_script_to_punct(_build_script_to_punct()) if __name__ == "__main__": main() nototools-2017-09-25-tooling-for-phase3-update/nototools/compare_cmap_data.py000077500000000000000000000256051316231664500271300ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2016 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Compare two cmap data files produced by lint_cmap_reqs or noto_font_cmaps.""" import argparse import collections from nototools import cmap_data from nototools import lint_config from nototools import tool_utils from nototools import unicode_data def title_from_metadata(metadata): items = [metadata.date, metadata.program] if metadata.args: items.extend(['%s=%s' % t for t in metadata.args]) return ' '.join(items) CompareOptions = collections.namedtuple( 'CompareOptions', 'only_cps, except_cps, no_additions, no_removals') _DEFAULT_COMPARE_OPTIONS = CompareOptions(None, None, False, False) def compare_cmaps(base_cps, target_cps, opts=None): """Returns a tuple of added, removed.""" if opts == None: opts = _DEFAULT_COMPARE_OPTIONS only_cps, except_cps, no_additions, no_removals = opts if only_cps: base_cps &= only_cps target_cps &= only_cps if except_cps: base_cps -= except_cps target_cps -= except_cps if base_cps != target_cps: added = None if no_additions else target_cps - base_cps removed = None if no_removals else base_cps - target_cps else: added, removed = None, None return added, removed def compare_data(base_data, target_data, opts=None): base_cps = lint_config.parse_int_ranges(base_data.ranges) target_cps = lint_config.parse_int_ranges(target_data.ranges) added, removed = compare_cmaps(base_cps, target_cps, opts) base_xcps, target_xcps = set(), set() if int(getattr(base_data, 'xcount', -1)) != -1: base_xcps = lint_config.parse_int_ranges(base_data.xranges) if int(getattr(target_data, 'xcount', -1)) != -1: target_xcps = lint_config.parse_int_ranges(target_data.xranges) xadded, xremoved = compare_cmaps(base_xcps, target_xcps, opts) return added, removed, xadded, xremoved def compare_cmap_data( base_cmap_data, target_cmap_data, scripts, except_scripts, opts=None): result = {} base_map = cmap_data.create_map_from_table(base_cmap_data.table) target_map = cmap_data.create_map_from_table(target_cmap_data.table) for script in sorted(base_map): if except_scripts and script in except_scripts: continue if scripts and script not in scripts: continue if script in target_map: base_data = base_map[script] target_data = target_map[script] result[script] = compare_data(base_data, target_data, opts) return result def compare_cmap_data_files( base_file, target_file, scripts, except_scripts, opts=None): base_cmap_data = cmap_data.read_cmap_data_file(base_file) target_cmap_data = cmap_data.read_cmap_data_file(target_file) compare = compare_cmap_data( base_cmap_data, target_cmap_data, scripts, except_scripts, opts) return compare, base_cmap_data, target_cmap_data def compare_interscript(base_map, base_script, target_script, opts=None): missing_scripts = [] if base_script not in base_map: missing_scripts.append(base_script) if target_script not in base_map: missing_scripts.append(target_script) if missing_scripts: print 'Cannot compare %s and %s, %s not in cmap data.' % ( base_script, target_script, ', '.join(missing_scripts)) return base_data = base_map[base_script] target_data = base_map[target_script] return compare_data(base_data, target_data, opts) def compare_interscript_data(base_cmap_data, scripts, opts=None): result = {} base_map = cmap_data.create_map_from_table(base_cmap_data.table) for i in range(len(scripts) - 1): base_script = scripts[i] for j in range(i + 1, len(scripts)): target_script = scripts[j] result[base_script, target_script] = compare_interscript( base_map, base_script, target_script, opts) return result def compare_interscript_data_file(base_file, scripts, opts=None): base_cmap_data = cmap_data.read_cmap_data_file(base_file) compare = compare_interscript_data(base_cmap_data, scripts, opts) return compare, base_cmap_data def _print_detailed(cps, inverted_target=None): last_block = None undefined_start = -1 undefined_end = -1 def show_undefined(start, end): if start >= 0: if end > start: print ' %04x-%04x Zzzz <%d undefined>' % ( start, end, end - start - 1) else: print ' %04x Zzzz <1 undefined>' % start for cp in sorted(cps): block = unicode_data.block(cp) if block != last_block or (undefined_end > -1 and cp > undefined_end + 1): show_undefined(undefined_start, undefined_end) undefined_start, undefined_end = -1, -1 if block != last_block: print ' %s' % block last_block = block script = unicode_data.script(cp) if script == 'Zzzz': if undefined_start >= 0: undefined_end = cp else: undefined_start, undefined_end = cp, cp continue show_undefined(undefined_start, undefined_end) undefined_start, undefined_end = -1, -1 extensions = unicode_data.script_extensions(cp) - set([script]) if extensions: extensions = ' (script %s)' % ', '.join(sorted(extensions)) else: extensions = '' if not inverted_target: extra = '' elif cp not in inverted_target: extra = ' !missing' else: scripts = sorted(inverted_target[cp]) if len(scripts) > 3: script_text = ', '.join(scripts[:3]) + '... ' + scripts[-1] else: script_text = ', '.join(scripts) extra = ' (font %s)' % script_text print ' %6s %4s %2s %3s %s%s%s' % ( '%04x' % cp, script, unicode_data.category(cp), unicode_data.age(cp), unicode_data.name(cp, ''), extensions, extra) show_undefined(undefined_start, undefined_end) def report_cmap_compare( label, added, removed, xadded, xremoved, inverted_target=None, detailed=True, report_same=False): def report_cps(label, cps, inverted=None): if not cps: return print ' %s (%d): %s' % ( label, len(cps), lint_config.write_int_ranges(cps)) if detailed: _print_detailed(cps, inverted) if report_same: print label if added or removed or xadded or xremoved: if not report_same: print label removed_to_fallback = removed & xadded if removed and xadded else None if removed_to_fallback: removed -= removed_to_fallback xadded -= removed_to_fallback added_from_fallback = added & xremoved if added and xremoved else None if added_from_fallback: added -= added_from_fallback xremoved -= added_from_fallback report_cps('added', added) report_cps('added, no longer fallback', added_from_fallback) report_cps('removed', removed, inverted_target) report_cps('removed, now in fallback', removed_to_fallback, inverted_target) report_cps('added to fallback', xadded, inverted_target) report_cps('removed from fallback', xremoved) def report_compare(compare_result, detailed=True): compare, base_cmap_data, target_cmap_data = compare_result base_map = cmap_data.create_map_from_table(base_cmap_data.table) target_map = cmap_data.create_map_from_table(target_cmap_data.table) inverted_target = collections.defaultdict(set) for script, row in target_map.iteritems(): cps = tool_utils.parse_int_ranges(row.ranges) for cp in cps: inverted_target[cp].add(script) base_title = title_from_metadata(base_cmap_data.meta) target_title = title_from_metadata(target_cmap_data.meta) print 'base: %s' % base_title print 'target: %s' % target_title for script in sorted(compare): added, removed, xadded, xremoved = compare[script] label = '%s # %s' % (script, base_map[script].name) report_cmap_compare( label, added, removed, xadded, xremoved, inverted_target, detailed) def report_interscript_compare(compare_result, detailed=True): compare, base_cmap_data = compare_result base_map = cmap_data.create_map_from_table(base_cmap_data.table) title = title_from_metadata(base_cmap_data.meta) print 'data: %s' % title for t in sorted(compare): added, removed, xadded, xremoved = compare[t] base_script, target_script = t label = 'base: %s (%s), target: %s (%s)' % ( base_script, base_map[base_script].name, target_script, base_map[target_script].name) report_cmap_compare( label, added, removed, xadded, xremoved, None, detailed) def main(): parser = argparse.ArgumentParser() parser.add_argument( '-b', '--base', help='base cmap data file', metavar='file', required=True) parser.add_argument( '-t', '--target', help='target cmap data file', metavar='file') parser.add_argument( '-s', '--scripts', help='only these scripts (except ignored)', metavar='code', nargs='+') parser.add_argument( '-r', '--ranges', help='only these ranges (except ignored)', metavar='ranges', nargs='+') parser.add_argument( '-xs', '--except_scripts', help='ignore these scripts', metavar='code', nargs='+') parser.add_argument( '-xr', '--except_ranges', help='ignore these codepoints', metavar='ranges', nargs='+') parser.add_argument( '-na', '--no_additions', help='do not report additions (in target ' 'but not base)', action='store_true') parser.add_argument( '-nr', '--no_removals', help='do not report removals (in base ' 'but not target)', action='store_true') parser.add_argument( '-d', '--detailed', help='report details', action='store_true') args = parser.parse_args() if args.scripts: scripts = set(args.scripts) else: scripts = None if args.ranges: cps = lint_config.parse_int_ranges(' '.join(args.ranges)) else: cps = None if args.except_ranges: except_cps = lint_config.parse_int_ranges(' '.join(args.except_ranges)) else: except_cps = None if args.except_scripts: except_scripts = set(args.except_scripts) else: except_scripts = None opts = CompareOptions(cps, except_cps, args.no_additions, args.no_removals) if not args.target: if not scripts or len(scripts) < 2: print 'Interscript comparison requires two or more scripts.' return result = compare_interscript_data_file(args.base, args.scripts, opts) report_interscript_compare(result, detailed=args.detailed) return result = compare_cmap_data_files( args.base, args.target, scripts, except_scripts, opts) report_compare(result, detailed=args.detailed) if __name__ == "__main__": main() nototools-2017-09-25-tooling-for-phase3-update/nototools/compare_fonts.py000077500000000000000000000466401316231664500263520ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2015 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Check Arimo/Tinos/Cousine fonts for metric compatibility with their inspiration.""" import argparse import os from os import path import re from fontTools import ttLib import cldr_data import font_data import lint_config import render import unicode_data name_re = re.compile(r'(.+)-(.*)\.ttf') family_map = { 'Arimo': 'Arial', 'Tinos': 'Times New Roman', 'Cousine': 'Courier New' } style_map = { 'Regular': '', 'Bold': ' Bold', 'Italic': ' Italic', 'BoldItalic': ' Bold Italic' } _excluded_chars = None def _get_excluded_chars(): # we skip Arabic and Hebrew characters global _excluded_chars if not _excluded_chars: arabic_ranges = '[\u0600-\u06ff \u0750-\u077f \u08a0-\u08ff \ufb50-\ufdff \ufe70-\ufefc]' arabic_set = frozenset([ord(cp) for cp in cldr_data.unicode_set_string_to_list(arabic_ranges)]) # includes sheqel sign, omit? hebrew_ranges = '[\u0590-\u05ff \u20aa \ufb1d-\ufb4f]' hebrew_set = frozenset([ord(cp) for cp in cldr_data.unicode_set_string_to_list(hebrew_ranges)]) armenian_ranges = '[\u0530-\u058f \ufb13-\ufb17]' armenian_set = frozenset([ord(cp) for cp in cldr_data.unicode_set_string_to_list(armenian_ranges)]) private_use_set = frozenset(range(0xe000, 0xf900)) _excluded_chars = frozenset(arabic_set | hebrew_set | armenian_set | private_use_set) return _excluded_chars def _get_class_defs(font): try: return font['GDEF'].table.GlyphClassDef.classDefs except (KeyError, AttributeError): return None class FontCompare(object): test_names = frozenset(['cmap', 'advance', 'hhea', 'OS/2', 'bounds', 'gdef']) @staticmethod def check_test_list(test_list): if not test_list: return FontCompare.test_names enabled_tests = None failed = False for test in test_list: if test not in FontCompare.test_names: print 'unknown test: \'%s\'' % test failed = True if failed: print 'tests are: %s' % (','.join(sorted(FontCompare.test_names))) return None return frozenset(test_list) @staticmethod def get_codepoints(range_list): if not range_list: return None return lint_config.parse_int_ranges(range_list, True) def __init__(self, target, test, incremental, emit_config, ignored_cp, only_cp, enabled_tests): self.target = target self.test = test self.incremental = incremental # target is different version of same file self.emit_config = emit_config # generate config lines self.enabled_tests = enabled_tests or FontCompare.test_names self.target_cmap = font_data.get_cmap(target) self.test_cmap = font_data.get_cmap(test) target_chars = set(self.target_cmap.keys()) - _get_excluded_chars() if ignored_cp: target_chars -= ignored_cp if only_cp: target_chars &= only_cp self.target_chars = target_chars # Assume version has two decimal places, which MTI fonts do but Adobe's do not. target_version = font_data.printable_font_revision(target) test_version = font_data.printable_font_revision(test) target_names = font_data.get_name_records(target) test_names = font_data.get_name_records(test) self._log('target name: %s %s, version: %s' % (target_names[1], target_names[2], target_version)) self._log('test name: %s %s, version %s' % (test_names[1], test_names[2], test_version)) if emit_config: font_family = test_names[1] font_subfamily = test_names[2].replace(' ', '') self._config('name like %s; weight like %s; version == %s' % (font_family, font_subfamily, test_version)) def _log(self, msg): """Write a message that should not go to config output.""" if not self.emit_config: print msg def _logerr(self, msg): """Write an error that should not go to config output.""" # this is an error, but lint doesn't check for it, so no point in emitting a comment. if not self.emit_config: print msg def _err(self, msg): """Write a message that should go to config as a comment, or just be logged.""" if self.emit_config: print '# ' + msg else: print msg def _config(self, msg): """Write a message that should go to config.""" if self.emit_config: print msg def _check_attribute(self, target_obj, test_obj, attr): target_value = getattr(target_obj, attr) test_value = getattr(test_obj, attr) if target_value == test_value: return None return (attr, test_value, target_value) def _check_attributes(self, target_obj, test_obj, attr_list): result = [] for a in attr_list: r = self._check_attribute(target_obj, test_obj, a) if r: result.append(r) return result def _test_gid(self, cp): return self.test.getGlyphID(self.test_cmap[cp], requireReal=True) def _target_gid(self, cp): return self.target.getGlyphID(self.target_cmap[cp], requireReal=True) def _cp_error_msg(self, cp, test_msg, target_msg): test_gid = self._test_gid(cp) target_gid = self._target_gid(cp) if self.emit_config: # omit character name for brevity return 'cp %04x (gid %d) %s but target (gid %d) %s' % ( cp, test_gid, test_msg, target_gid, target_msg) else: cp_name = unicode_data.name(cp) return 'cp %04x (gid %d) %s but target (gid %d) %s (%s)' % ( cp, test_gid, test_msg, target_gid, target_msg, cp_name) def _skip(self, test_name): if test_name in self.enabled_tests: self._log('Check %s' % test_name) return False return True def check_cmaps(self): if self._skip('cmap'): return self._log('target cmap size: %d, test cmap size: %d' % ( len(self.target_cmap), len(self.test_cmap))) missing_chars = self.target_chars - set(self.test_cmap.keys()) if missing_chars: self._logerr('Missing %d chars' % len(missing_chars)) self._logerr(lint_config.write_int_ranges(missing_chars, True)) def check_advances(self): if self._skip('advance'): return target_metrics = self.target['hmtx'].metrics test_metrics = self.test['hmtx'].metrics differences = [] for cp in self.target_chars: if cp not in self.test_cmap: continue target_advance = target_metrics[self.target_cmap[cp]][0] test_advance = test_metrics[self.test_cmap[cp]][0] if target_advance != test_advance: differences.append((cp, test_advance, target_advance)) # No current lint test requires specific advances of arbitrary glyphs. if differences: self._logerr('%d codepoints have advance differences' % len(differences)) for cp, ta, fa in sorted(differences): self._logerr(self._cp_error_msg(cp, 'advance is %d' % fa, 'advance is %d' % ta)) def check_hhea(self): if self._skip('hhea'): return target_hhea = self.target['hhea'] test_hhea = self.test['hhea'] failed_attrs = self._check_attributes(target_hhea, test_hhea, [ 'ascent', 'descent', 'lineGap']) if not failed_attrs: self._config('disable head/hhea') return for attr, test_val, target_val in sorted(failed_attrs): if self.emit_config: print 'enable head/hhea/%s' % attr.lower() else: print 'font hhea %s was %d but target was %d' % (attr, test_val, target_val) def check_os2(self): if self._skip('OS/2'): return target_os2 = self.target['OS/2'] test_os2 = self.test['OS/2'] attr_name_map = { 'sTypoAscender': 'ascender', 'sTypoDescender': 'descender', 'sTypoLineGap': 'linegap' } failed_attrs = self._check_attributes(target_os2, test_os2, attr_name_map.keys()) if not failed_attrs: self._config('disable head/os2') return for attr, test_val, target_val in sorted(failed_attrs): if self.emit_config: print 'enable head/os2/%s' % attr_name_map[attr] else: print 'font OS/2 %s was %d but target was %d' % (attr, test_val, target_val) def check_glyph_bounds(self): # Don't compare the actual bounds, but whether they exceed the limits when the target # font does not. if self._skip('bounds'): return target_glyphset = self.target.getGlyphSet() test_glyphset = self.test.getGlyphSet() target_max = self.target['OS/2'].usWinAscent test_max = self.test['OS/2'].usWinAscent target_min = -self.target['OS/2'].usWinDescent test_min = -self.test['OS/2'].usWinDescent # We need to align the glyph ids, but once we get past the cmap it gets more and more # complicated to do this. For now we'll just check the directly mapped glyphs. differences = [] for cp in self.target_chars: if cp not in self.test_cmap: continue target_glyph_name = self.target_cmap[cp] test_glyph_name = self.test_cmap[cp] target_ttglyph = target_glyphset[target_glyph_name] test_ttglyph = test_glyphset[test_glyph_name] target_ymin, target_ymax = render.get_glyph_cleaned_extents( target_ttglyph, target_glyphset) test_ymin, test_ymax = render.get_glyph_cleaned_extents( test_ttglyph, test_glyphset) target_exceeds_max = target_ymax > target_max target_exceeds_min = target_ymin < target_min test_exceeds_max = test_ymax > test_max test_exceeds_min = test_ymin < test_min max_failure = test_exceeds_max and not target_exceeds_max min_failure = test_exceeds_min and not target_exceeds_min if max_failure or min_failure: differences.append((cp, max_failure, test_ymax, min_failure, test_ymin)) if not differences: self._config('disable bounds/glyph') return self._err('%d glyphs have bounds errors' % len(differences)) self._err('glyph bounds limits max %d, min %d' % (test_max, test_min)) max_failures = [] min_failures = [] for cp, max_failure, ymax, min_failure, ymin in sorted(differences): if max_failure: self._err(self._cp_error_msg(cp, 'above max (%d)' % ymax, 'is not')) if self.emit_config: test_gid = self._test_gid(cp) max_failures.append(test_gid) if min_failure: self._err(self._cp_error_msg(cp, 'below min (%d)' % ymin, 'is not')) if self.emit_config: test_gid = self._test_gid(cp) min_failures.append(test_gid) if self.emit_config: if max_failures: self._config('enable bounds/glyph/ymax only gid %s' % lint_config.write_int_ranges(max_failures, False)) if min_failures: self._config('enable bounds/glyph/ymin only gid %s' % lint_config.write_int_ranges(min_failures, False)) def _check_gdef_class_defs(self, mark_glyphs): """Return False if we cannot check classDef-related info.""" self._log('Check gdef classDefs') target_class_defs = _get_class_defs(self.target) test_class_defs = _get_class_defs(self.test) if mark_glyphs: if not target_class_defs: self._err('Have mark glyphs, but target does not have classDefs table.') self._config('exclude /gdef/classdef/not_present') if not test_class_defs: self._logerr('Have mark glyphs, but test does not have classDefs table.') if (target_class_defs is not None) != (test_class_defs is not None): if target_class_defs: self._logerr('Target has classDefs but test does not.') else: self._logerr('Test has classDefs but target does not.') return False return bool(target_class_defs) def _check_gdef_marks(self, mark_glyphs): self._log('Check gdef marks') if not mark_glyphs: self._log('No mark glyphs in target') return target_class_defs = _get_class_defs(self.target) test_class_defs = _get_class_defs(self.test) assert target_class_defs and test_class_defs differences = [] for cp in mark_glyphs: if not cp in self.test_cmap: continue target_glyph = self.target_cmap[cp] test_glyph = self.test_cmap[cp] if target_glyph in target_class_defs and test_glyph not in test_class_defs: differences.append((cp, -1)) else: target_glyph_class = target_class_defs[target_glyph] test_glyph_class = test_class_defs[test_glyph] if target_glyph_class == 3 and test_glyph_class != 3: differences.append((cp, test_glyph_class)) if differences: self._err('%d mark glyphs have classDef errors' % len(differences)) missing_list = [] incorrect_list = [] for cp, gc in sorted(differences): if gc == -1: self._err(self._cp_error_msg(cp, 'has no classDef', 'does')) missing_list.append(cp) else: self._err(self._cp_error_msg( cp, 'has non-combining-mark glyph class %d' % gc, 'is correct')) incorrect_list.append(cp) if missing_list: self._config('enable gdef/classdef/unlisted only cp %s' % lint_config.write_int_ranges(missing_list, True)) if incorrect_list: self._config('enable gdef/classdef/combining_mismatch only cp %s' % lint_config.write_int_ranges(incorrect_list, True)) def _check_gdef_combining(self): self._log('Check gdef combining') target_class_defs = _get_class_defs(self.target) test_class_defs = _get_class_defs(self.test) assert target_class_defs and test_class_defs differences = [] for cp in self.target_chars: if not cp in self.test_cmap: continue target_glyph = self.target_cmap[cp] test_glyph = self.test_cmap[cp] target_class = target_class_defs.get(target_glyph, -1) test_class = test_class_defs.get(test_glyph, -1) if target_class != test_class: differences.append((cp, test_class, target_class)) if differences: cp_list = [] self._err('%d glyphs have classDef differences' % len(differences)) for cp, test_class, target_class in sorted(differences): target_msg = 'has class %d' % target_class if target_class != -1 else 'not in classDef' test_msg = 'has class %d' % test_class if test_class != -1 else 'not in classDef' self._err(self._cp_error_msg(cp, test_msg, target_msg)) cp_list.append(cp) self._config('enable gdef/classdef/not_combining_mismatch only cp %s' % lint_config.write_int_ranges(cp_list, True)) def check_gdef(self): if self._skip('gdef'): return mark_glyphs = [cp for cp in self.target_chars if unicode_data.category(cp) == 'Mn'] if self._check_gdef_class_defs(mark_glyphs): self._check_gdef_marks(mark_glyphs) self._check_gdef_combining() def check_all(self): self.check_cmaps() self.check_advances() self.check_hhea() self.check_os2() self.check_glyph_bounds() self.check_gdef() def check_font(target_file, test_file, incremental_version=False, emit_config=False, reverse=False, ignored_cp=None, only_cp=None, enabled_tests=None): target = ttLib.TTFont(target_file) test = ttLib.TTFont(test_file) if reverse: print 'reversing comparison' temp = target target = test test = temp print if not emit_config: print 'target is previous version' if incremental_version else 'target is reference font' FontCompare(target, test, incremental_version, emit_config, ignored_cp, only_cp, enabled_tests).check_all() def get_reference_name_1(name): m = name_re.match(name) if not m: raise ValueError('font name %s does not match expected pattern' % name) family = m.group(1) style = m.group(2) target_family = family_map.get(family) if not target_family: raise ValueError('unrecognized font family %s' % family) target_style = style_map.get(style) if target_style is None: raise ValueError('unrecognized style \'%s\'' % style) return target_family + target_style + '.ttf' _ref_name_2_map = { 'Arimo-Regular.ttf': 'arial.ttf', 'Arimo-Bold.ttf': 'arialbd.ttf', 'Arimo-Italic.ttf': 'ariali.ttf', 'Arimo-BoldItalic.ttf': 'arialbi.ttf', 'Cousine-Regular.ttf': 'cour.ttf', 'Cousine-Bold.ttf': 'courbd.ttf', 'Cousine-Italic.ttf': 'couri.ttf', 'Cousine-BoldItalic.ttf': 'courbi.ttf', 'Tinos-Regular.ttf': 'times.ttf', 'Tinos-Bold.ttf': 'timesbd.ttf', 'Tinos-Italic.ttf': 'timesi.ttf', 'Tinos-BoldItalic.ttf': 'timesbi.ttf' } def get_reference_name_2(name): return _ref_name_2_map.get(name) def get_target_path(name, target_dir): target_name = get_reference_name_2(name) if not target_name: raise ValueError('could not find target name for %s' % name) target_path = path.join(target_dir, target_name) if not path.isfile(target_path): # fall back target_name = get_reference_name_1(name) target_path = path.join(target_dir, target_name) return target_path def check_fonts(target_dir, fonts, incremental_version=False, emit_config=False, reverse=False, ignored_cp=None, only_cp=None, enabled_tests=None): for font in fonts: target_name = path.basename(font) if not incremental_version: target_path = get_target_path(target_name, target_dir) else: target_path = path.join(target_dir, target_name) if not path.isfile(target_path): raise ValueError('could not find %s in target dir %s' % ( target_name, target_dir)) check_font(target_path, font, incremental_version, emit_config, reverse, ignored_cp, only_cp, enabled_tests) def main(): default_target = '/usr/local/google/home/dougfelt/msfonts' parser = argparse.ArgumentParser() parser.add_argument('fonts', metavar='font', nargs='+', help='fonts to check') parser.add_argument('-t', '--target', metavar='dir', help='target font dir (default %s)' % default_target, default=default_target) parser.add_argument('-iv', '--incremental_version', help='target font is a previous drop from MTI', action='store_true') parser.add_argument('-c', '--config', help='emit config spec', action='store_true') parser.add_argument('--test', metavar='test', help='test only named tests (%s)' % sorted(FontCompare.test_names), nargs='+') parser.add_argument('-r', '--reverse', help='reverse direction of comparison', action='store_true') parser.add_argument('-ic', '--ignore_codepoints', metavar = 'ranges', help='report no errors on these codepoints (hex ranges separated by space)') parser.add_argument('-oc', '--only_codepoints', metavar = 'ranges', help='only report errors on these codepoints (hex ranges separated by space)') args = parser.parse_args() enabled_tests = FontCompare.check_test_list(args.test) if not enabled_tests: return ignored_cp = FontCompare.get_codepoints(args.ignore_codepoints) only_cp = FontCompare.get_codepoints(args.only_codepoints) check_fonts(args.target, args.fonts, args.incremental_version, args.config, args.reverse, ignored_cp, only_cp, enabled_tests) if __name__ == "__main__": main() nototools-2017-09-25-tooling-for-phase3-update/nototools/compare_summary.py000077500000000000000000000212121316231664500267020ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Compare summaries of ttf files in two noto file trees""" __author__ = "dougfelt@google.com (Doug Felt)" import argparse import filecmp import os import os.path from nototools import noto_lint from nototools import summary from nototools import tool_utils def summary_to_map(summary_list): result = {} for tuple in summary_list: key = tuple[0] result[key] = tuple return result def get_key_lists(base_map, target_map, base_root, target_root): added = [] removed = [] shared = [] identical = [] for k in sorted(base_map): target = target_map.get(k) if not target: removed.append(k) elif filecmp.cmp(os.path.join(base_root, k), os.path.join(target_root, k)): identical.append(k) else: shared.append(k) for k in sorted(target_map): if not base_map.get(k): added.append(k) return added, removed, shared, identical def print_keys(key_list): for k in key_list: print ' ' + k def compare_table_info(base_info, target_info): biggest_deltas = [] others = [] # checksum changes added = [] removed = [] for k in target_info: b_tup = base_info.get(k) t_tup = target_info.get(k) if not b_tup: added.append((k, t_tup[0])) else: b_len = b_tup[0] t_len = t_tup[0] delta = t_len - b_len if delta == 0: if b_tup[1] != t_tup[1]: others.append(k) continue biggest_deltas.append((k, delta)) for k in base_info: if not target_info.get(k): removed.append(k) biggest_deltas.sort(lambda lhs,rhs: -cmp(abs(lhs[1]), abs(rhs[1])) or cmp(lhs[0], rhs[0])) del biggest_deltas[5:] result = [] if biggest_deltas: def print_delta(t): if t[1] == 0: return t[0] return '%s(%+d)' % t biggest_delta_strings = [print_delta(t) for t in biggest_deltas] # if a table changed size, the head table will change the checksum, don't # report this. others = [k for k in others if k != 'head'] if len(others) > 0 and len(biggest_deltas) < 5: other_count = len(others) biggest_delta_strings.append('%s other%s' % (other_count, 's' if other_count != 1 else '')) result.append('changed ' + ', '.join(biggest_delta_strings)) if added: result.append('added ' + ', '.join('%s(%s)' % t for t in sorted(added))) if removed: result.append('removed ' + ', '.join(sorted(removed))) return '; '.join(result) def print_difference(k, base_tuple, target_tuple, other_difference): b_path, b_version, b_name, b_size, b_numglyphs, b_numchars, b_cmap, b_tableinfo = base_tuple t_path, t_version, t_name, t_size, t_numglyphs, t_numchars, t_cmap, t_tableinfo = target_tuple print ' ' + k versions_differ = b_version != t_version diff_list = [] if versions_differ: if float(b_version) > float(t_version): msg = '(base is newer!)' else: msg = '' print ' version: %s vs %s %s' % (b_version, t_version, msg) if b_name != t_name: diff_list.append('name') print " name: '%s' vs '%s'" % (b_name, t_name) if b_size != t_size: diff_list.append('size') delta = int(t_size) - int(b_size) if delta < 0: msg = '%d byte%s smaller' % (-delta, '' if delta == -1 else 's') else: msg = '%d byte%s bigger' % (delta, '' if delta == 1 else 's') print ' size: %s vs %s (%s)' % (b_size, t_size, msg) table_diffs = compare_table_info(b_tableinfo, t_tableinfo) if table_diffs: diff_list.append('table') print ' tables: %s' % table_diffs if b_numglyphs != t_numglyphs: diff_list.append('glyph count') delta = int(t_numglyphs) - int(b_numglyphs) if delta < 0: msg = '%d fewer glyph%s' % (-delta, '' if delta == -1 else 's') else: msg = '%d more glyph%s' % (delta, '' if delta == 1 else 's') print ' glyphs: %s vs %s (%s)' % (b_numglyphs, t_numglyphs, msg) if b_numchars != t_numchars: diff_list.append('char count') delta = int(t_numchars) - int(b_numchars) if delta < 0: msg = '%d fewer char%s' % (-delta, '' if delta == -1 else 's') else: msg = '%d more char%s' % (delta, '' if delta == 1 else 's') print ' chars: %s vs %s (%s)' % (b_numchars, t_numchars, msg) if b_cmap != t_cmap: removed_from_base = b_cmap - t_cmap if removed_from_base: print ' cmap removed: ' + noto_lint.printable_unicode_range( removed_from_base) added_in_target = t_cmap - b_cmap if added_in_target: print ' cmap added: ' + noto_lint.printable_unicode_range( added_in_target) if diff_list and not versions_differ: print ' %s differs but revision number is the same' % ', '.join(diff_list) if not diff_list and other_difference: print ' other difference' def print_changed(key_list, base_map, target_map, comparefn): for k in key_list: base_tuple = base_map.get(k) target_tuple = target_map.get(k) other_difference = comparefn(base_tuple, target_tuple) print_difference(k, base_tuple, target_tuple, other_difference) def tuple_compare(base_t, target_t): return base_t == target_t def tuple_compare_no_size(base_t, target_t): for i in range(len(base_t)): if i == 3: continue if base_t[i] != target_t[i]: return False return True def compare_summary(base_root, target_root, name=None, comparefn=tuple_compare, show_added=True, show_removed=True, show_identical=True, show_paths=True): base_map = summary_to_map(summary.summarize(base_root, name)) target_map = summary_to_map(summary.summarize(target_root, name)) added, removed, changed, identical = get_key_lists(base_map, target_map, base_root, target_root) # no nonlocal in 2.7 have_output_hack = [False] def header_line(msg): if have_output_hack[0]: print else: have_output_hack[0] = True if msg: print msg if show_paths: header_line(None) print 'base root: ' + base_root print 'target root: ' + target_root if show_added and added: header_line('added') print_keys(added) if show_removed and removed: header_line('removed') print_keys(removed) if changed: header_line('changed') print_changed(changed, base_map, target_map, comparefn) if show_identical and identical: header_line('identical') print_keys(identical) def main(): parser = argparse.ArgumentParser() parser.add_argument('-b', '--base_root', help='root of directory tree, base for comparison ' '(default [fonts])', metavar='dir', default='[fonts]') parser.add_argument('-t', '--target_root', help='root of directory tree, target for comparison', metavar='dir', required=True) parser.add_argument('--name', help='only examine files whose subpath+names contain this regex') parser.add_argument('--compare_size', help='include size in comparisons', action='store_true') parser.add_argument('--removed', help='list files not in target', action='store_true') parser.add_argument('--added', help='list files not in base', action='store_true') parser.add_argument('--identical', help='list files that are identical in base and target', action='store_true') parser.add_argument('--nopaths', help='do not print root paths', action='store_false', default=True, dest='show_paths') args = parser.parse_args() args.base_root = tool_utils.resolve_path(args.base_root) args.target_root = tool_utils.resolve_path(args.target_root) if not os.path.isdir(args.base_root): print 'base_root %s does not exist or is not a directory' % args.base_root return if not os.path.isdir(args.target_root): print 'target_root %s does not exist or is not a directory' % args.target_root return comparefn = tuple_compare if args.compare_size else tuple_compare_no_size compare_summary(args.base_root, args.target_root, args.name, comparefn, args.added, args.removed, args.identical, args.show_paths) if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/nototools/coverage.py000077500000000000000000000116121316231664500252750ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Routines for character coverage of fonts.""" __author__ = 'roozbeh@google.com (Roozbeh Pournader)' import argparse import codecs import os from os import path import re import sys import unicode_data from nototools import lint_config from fontTools import ttLib def character_set(font): """Returns the character coverage of a font. Args: font: The input font's file name, or a TTFont. Returns: A frozenset listing the characters supported in the font. """ if type(font) is str: font = ttLib.TTFont(font, fontNumber=0) cmap_table = font['cmap'] cmaps = {} for table in cmap_table.tables: if (table.format, table.platformID, table.platEncID) in [ (4, 3, 1), (12, 3, 10) ]: cmaps[table.format] = table.cmap if 12 in cmaps: cmap = cmaps[12] elif 4 in cmaps: cmap = cmaps[4] else: cmap = {} return frozenset(cmap.keys()) def convert_set_to_ranges(charset): """Converts a set of characters to a list of ranges.""" working_set = set(charset) output_list = [] while working_set: start = min(working_set) end = start + 1 while end in working_set: end += 1 output_list.append((start, end - 1)) working_set.difference_update(range(start, end)) return output_list def _print_char_info(chars): for char in chars: try: name = unicode_data.name(char) except ValueError: name = '' print 'U+%04X %s' % (char, name) def _write_char_text(chars, filepath, chars_per_line, sep): def accept_cp(cp): cat = unicode_data.category(cp) return cat[0] not in ['M', 'C', 'Z'] or cat == 'Co' text = [unichr(cp) for cp in chars if accept_cp(cp)] filename, _ = path.splitext(path.basename(filepath)) m = re.match(r'(.*)-(?:Regular|Bold|Italic|BoldItalic)', filename) if m: filename = m.group(1) filename += '_chars.txt' print 'writing file: %s' % filename print '%d characters (of %d)' % (len(text), len(chars)) if chars_per_line > 0: lines = [] for n in range(0, len(text), chars_per_line): substr = text[n:n + chars_per_line] lines.append(sep.join(cp for cp in substr)) text = '\n'.join(lines) with codecs.open(filename, 'w', 'utf-8') as f: f.write(text) def _process_font(filepath, args): char_set = character_set(filepath) if args.limit_set: char_set = char_set & args.limit_set if not char_set: print 'limit excludes all chars in %s' % filepath return sorted_chars = sorted(char_set) if args.info: _print_char_info(sorted_chars) if args.text: _write_char_text(sorted_chars, filepath, args.chars_per_line, args.sep) if args.ranges: print 'ranges:\n ' + lint_config.write_int_ranges(sorted_chars, True) def main(): parser = argparse.ArgumentParser() parser.add_argument('files', help='Files to dump', metavar='file', nargs='+') parser.add_argument('--ranges', help='Dump cmap as hex ranges', action='store_true') parser.add_argument('--text', help='Dump cmap as sample text', action='store_true') parser.add_argument('--sep', help='Separator between chars in text, default space', default=' ') parser.add_argument('--info', help='Dump cmap as cp and unicode name, one per line', action='store_true') parser.add_argument('--chars_per_line', help='Format text in lines of at most this ' 'many codepoints, 0 to format as a single line', type=int, metavar='N', default=32) parser.add_argument('--limit', help='string of hex codepoint ranges limiting cmap ' 'to output', metavar='ranges') args = parser.parse_args() if not (args.ranges or args.text or args.info): args.info = True if args.limit: args.limit_set = lint_config.parse_int_ranges(args.limit) print 'limit to: ' + lint_config.write_int_ranges(args.limit_set) else: # make sure it exists so checks don't have to care args.limit_set = None for fontpath in args.files: print 'Font: ' + path.normpath(fontpath) _process_font(fontpath, args) if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/nototools/create_image.py000077500000000000000000000372531316231664500261200ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8-unix -*- # # Copyright 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Create sample images given a font and text.""" __author__ = 'roozbeh@google.com (Roozbeh Pournader)' import argparse import codecs import os from os import path import string from nototools import notoconfig import cairo import pango import pangocairo _fonts_conf_template = """ ${font_dirs} /etc/fonts/conf.d Noto Color Emoji true ${cache_dir} """ def setup_fonts_conf(): """We first look for fonts.conf under the root nototools, and if we don't find it we write it. The fontconfig cache also goes there. This of course requires nototools to be writable.""" # We require notoconfig because we don't know where this code is located, # nor whether the font directories might be relative to it. TOOLS_DIR = notoconfig.noto_tools() fonts_conf = path.join(TOOLS_DIR, 'fonts.conf') if not path.isfile(fonts_conf): noto_font_dirs = [] FONTS_DIR = notoconfig.noto_fonts() if FONTS_DIR: noto_font_dirs.extend( [path.join(FONTS_DIR, 'hinted'), path.join(FONTS_DIR, 'unhinted')]) CJK_DIR = notoconfig.noto_cjk() if CJK_DIR: noto_font_dirs.append(CJK_DIR) EMOJI_DIR = notoconfig.noto_emoji() if EMOJI_DIR: noto_font_dirs.append(path.join(EMOJI_DIR, 'fonts')) font_dirs = '\n '.join('%s' % d for d in noto_font_dirs) cache_dir = path.join(TOOLS_DIR, 'fontconfig') template = string.Template(_fonts_conf_template) conf_text = template.substitute(font_dirs=font_dirs, cache_dir=cache_dir) try: with open(fonts_conf, 'w') as f: f.write(conf_text) except IOError as e: raise Exception('unable to write %s: %s' % (fonts_conf, e)) # Note: ensure /etc/fonts/conf.d/10-scale-bitmap-fonts.conf is # in sync with fontconfig to make sure color emoji font scales properly. os.putenv('FONTCONFIG_FILE', fonts_conf) class DrawParams: """Parameters used for rendering text in draw_on_surface and its callers""" def __init__(self, family='Noto Sans', language=None, rtl=False, vertical=False, width=1370, font_size=32, line_spacing=50, weight=pango.WEIGHT_NORMAL, style=pango.STYLE_NORMAL, stretch=pango.STRETCH_NORMAL): self.family = family self.language = language self.rtl = rtl self.vertical = vertical self.width = width self.font_size = font_size self.line_spacing = line_spacing self.weight = weight self.style = style self.stretch = stretch def __repr__(self): return str(self.__dict__) def make_drawparams(**kwargs): """Create a DrawParams from kwargs, but converting weight, style, and stretch from values from string to the pango value types if needed.""" dp = DrawParams(**kwargs) dp.weight = _get_weight(kwargs.get('weight', 'normal')) dp.style = _get_style(kwargs.get('style', 'normal')) dp.stretch = _get_stretch(kwargs.get('stretch', 'normal')) return dp def draw_on_surface(surface, text, params): """Draw the string on a pre-created surface and return height.""" pangocairo_ctx = pangocairo.CairoContext(cairo.Context(surface)) layout = pangocairo_ctx.create_layout() pango_ctx = layout.get_context() if params.language is not None: pango_ctx.set_language(pango.Language(params.language)) if params.rtl: if params.vertical: base_dir = pango.DIRECTION_TTB_RTL else: base_dir = pango.DIRECTION_RTL alignment = pango.ALIGN_RIGHT else: if params.vertical: base_dir = pango.DIRECTION_TTB_LTR else: base_dir = pango.DIRECTION_LTR alignment = pango.ALIGN_LEFT # The actual meaning of alignment is confusing. # # In an RTL context, RTL text aligns to the right by default. So # setting right alignment and an RTL context means asking for # 'default alignment' (just as does setting left alignment and an # LTR context). # # What actually happens depends on the directionality of the actual # text in the paragraph. If the text is Arabic this will be RTL, so # it is aligned to the right, the default alignment for RTL text. # And if the text is English this will be LTR, so it is aligned to # the left, the default alignment for LTR text. # # This is reversed when the context and the alignment disagree: # setting left alignment in an RTL context (or right alignment in an # LTR context) means asking for 'opposite alignment'. Arabic text # is aligned to the left, and English text to the right. # # pango layout set_auto_dir controls whether the text direction # is based on the text itself, or influenced by the context. By # default it is off so the text direction is completely independent # of the setting of the context: Arabic text is RTL and English text # is LTR. However, the algorithm depends on the first 'strongly # directional' character encountered in a paragraph. If you have # text that is largly Arabic but happens to start with English # (e.g. brand names) it will be assigned LTR, the wrong direction. # Either you force the correct direction by munging the text or you # tell pango to use the context. # # The text will be reordered based on the unicode bidi attributes # of the characters, and this is only as good as your unicode data. # Newly-encoded scripts can be newer than your libraries and will # likely order LTR if you implementation doesn't know about them. font = pango.FontDescription() font.set_family(params.family) font.set_size(params.font_size * pango.SCALE) font.set_style(params.style) font.set_weight(params.weight) font.set_stretch(params.stretch) layout.set_font_description(font) layout.set_alignment(alignment) layout.set_width(params.width * pango.SCALE) layout.set_wrap(pango.WRAP_WORD_CHAR) layout.set_spacing((params.line_spacing - params.font_size) * pango.SCALE) pango_ctx.set_base_dir(base_dir) layout.context_changed() layout.set_text(text) extents = layout.get_pixel_extents() top_usage = min(extents[0][1], extents[1][1], 0) bottom_usage = max(extents[0][3], extents[1][3]) pangocairo_ctx.set_antialias(cairo.ANTIALIAS_GRAY) pangocairo_ctx.set_source_rgb(1, 1, 1) # White background pangocairo_ctx.paint() pangocairo_ctx.translate(0, -top_usage) pangocairo_ctx.set_source_rgb(0, 0, 0) # Black text color pangocairo_ctx.show_layout(layout) return bottom_usage - top_usage def create_svg(text, output_path, **kwargs): """Creates an SVG image from the given text.""" setup_fonts_conf() params = make_drawparams(**kwargs); temp_surface = cairo.SVGSurface(None, 0, 0) calculated_height = draw_on_surface(temp_surface, text, params) real_surface = cairo.SVGSurface( output_path, params.width, calculated_height) print 'writing', output_path draw_on_surface(real_surface, text, params) real_surface.flush() real_surface.finish() def create_png(text, output_path, **kwargs): """Creates a PNG image from the given text.""" setup_fonts_conf() params = make_drawparams(**kwargs); temp_surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 0, 0) calculated_height = draw_on_surface(temp_surface, text, params) real_surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, params.width, calculated_height) draw_on_surface(real_surface, text, params) print 'writing', output_path real_surface.write_to_png(output_path) def create_img(text, output_path, **kwargs): """Creates a PNG or SVG image based on the output_path extension, from the given text""" ext = (path.splitext(output_path)[1]).lower() if ext == '.png': create_png(text, output_path, **kwargs) elif ext == '.svg': create_svg(text, output_path, **kwargs) else: print 'extension % not supported' % ext def test(): """Test sample Hindi and Arabic texts.""" def test(text_file, output_file, **kwargs): file_path = '../sample_texts/' + text_file with codecs.open(file_path, 'r', encoding='UTF-8') as input_file: sample_text = input_file.read().strip() create_img(sample_text, output_file, **kwargs) test('hi-Deva_udhr.txt', 'hindi.png', family='Noto Sans', language='hi-Deva') test('ar-Arab_udhr.txt', 'arabic.svg', family='Noto Naskh Arabic', language='ar', rtl=True) test('mn-Mong_udhr.txt', 'mong.png', family='Noto Sans', language='mn', vertical=True) test('sr-Cyrl_udhr.txt', 'sr_cyrl.png', family='Noto Sans', language='sr-Cyrl') test('und-Adlm_chars.txt', 'und-adlm.png', family='Noto Sans', rtl=True) """ test('en-Latn_udhr.txt', 'en_latn_udhr.svg', family='Noto Sans') test('en-Latn_udhr.txt', 'en_latn_udhr_semcond.svg', family='Noto Sans', stretch='semi-condensed') test('en-Latn_udhr.txt', 'en_latn_udhr_cond.svg', family='Noto Sans', stretch='condensed') test('en-Latn_udhr.txt', 'en_latn_udhr_extcond.svg', family='Noto Sans', stretch=pango.STRETCH_EXTRA_CONDENSED) """ # test('en-Latn_udhr.txt', 'en_latn_rtl.png', family='Noto Sans', rtl=True) # bidi_txt = u'First ضميرً Second' # create_img(bidi_txt, 'bidi.png', family='Noto Sans', rtl=True) _weight_map = { 'ultralight': pango.WEIGHT_ULTRALIGHT, 'light': pango.WEIGHT_LIGHT, 'normal': pango.WEIGHT_NORMAL, 'bold': pango.WEIGHT_BOLD, 'ultrabold': pango.WEIGHT_ULTRABOLD, 'heavy': pango.WEIGHT_HEAVY } def _get_weight(weight_name): if not weight_name: return pango.WEIGHT_NORMAL if isinstance(weight_name, pango.Weight) or isinstance(weight_name, int): return weight_name if not isinstance(weight_name, basestring): raise ValueError('unexpected weight name type (%s)', type(weight_name)) if weight_name not in _weight_map: raise ValueError( 'could not recognize weight \'%s\'\naccepted values are %s' % ( weight_name, ', '.join(sorted(_weight_map.keys())))) return _weight_map.get(weight_name) _italic_map = { 'italic': pango.STYLE_ITALIC, 'oblique': pango.STYLE_OBLIQUE, 'normal': pango.STYLE_NORMAL } def _get_style(style_name): if not style_name: return pango.STYLE_NORMAL if isinstance(style_name, pango.Style): return style_name if not isinstance(style_name, basestring): raise ValueError('unexpected style name type (%s)', type(style_name)) if style_name not in _italic_map: raise ValueError( 'could not recognize style \'%s\'\naccepted values are %s' % ( style_name, ', '.join(sorted(_italic_map.keys())))) return _italic_map.get(style_name) _stretch_map = { 'ultra-condensed': pango.STRETCH_ULTRA_CONDENSED, 'extra-condensed': pango.STRETCH_EXTRA_CONDENSED, 'condensed': pango.STRETCH_CONDENSED, 'semi-condensed': pango.STRETCH_SEMI_CONDENSED, 'normal': pango.STRETCH_NORMAL, 'semi-expanded': pango.STRETCH_SEMI_EXPANDED, 'expanded': pango.STRETCH_EXPANDED, 'extra-expanded': pango.STRETCH_EXTRA_EXPANDED, 'ultra-expanded': pango.STRETCH_ULTRA_EXPANDED, } def _get_stretch(stretch_name): if not stretch_name: return pango.STRETCH_NORMAL if isinstance(stretch_name, pango.Stretch): return stretch_name if not isinstance(stretch_name, basestring): raise ValueError('unexpected stretch name type (%s)', type(stretch_name)) if stretch_name not in _stretch_map: raise ValueError( 'could not recognize stretch \'%s\'\naccepted values are %s' % ( stretch_name, ', '.join(sorted(_stretch_map.keys())))) return _stretch_map.get(stretch_name) def render_codes( file_name, code_list, font_name, weight_name, style_name, stretch_name, font_size, lang, ext): text = u''.join([unichr(int(s, 16)) for s in code_list]) render_text( file_name, text, font_name, weight_name, style_name, stretch_name, font_size, lang, ext) def render_text(file_name, text, font_name, weight_name, style_name, stretch_name, font_size, lang, ext): font = font_name or 'Noto Sans' font_size = font_size or 32 if not file_name: name_strs = [font.replace(' ', '')] name_strs.extend(['%x' % ord(cp) for cp in text]) if weight_name: name_strs.append(weight_name) if style_name: name_strs.append(style_name) if stretch_name: name_strs.append(stretch_name) name_strs.append(str(font_size)) if lang: name_strs.append(lang) file_name = '_'.join(name_strs) + '.' + ext create_img( text, file_name, family=font, weight=weight_name, style=style_name, stretch=stretch_name, language=lang, font_size=font_size) print 'generated ' + file_name def main(): parser = argparse.ArgumentParser() parser.add_argument( '--test', action='store_true', help='generate test images') parser.add_argument( '--codes', metavar='hex', nargs='+', help='list of hex codepoints to render') parser.add_argument( '--text', metavar='str', help='text to render, can include unicode escapes') parser.add_argument( '--out', metavar='name', help='name of output file, leave empty to generate a name', default=None) parser.add_argument( '-f', '--font', metavar='name', help='name of noto font to use') parser.add_argument( '-b', '--bold', metavar='wt', help="pango weight name", default=None) parser.add_argument( '-i', '--italic', metavar='it', help="pango style name", default=None) parser.add_argument( '-st', '--stretch', metavar='st', help="stretch name", default=None) parser.add_argument( '-s', '--size', metavar='int', type=int, help='point size (default 32)', default=32) parser.add_argument( '-l', '--lang', metavar='lang', help='language code') parser.add_argument( '-t', '--type', metavar='ext', help='svg (default) or png', default='svg') args = parser.parse_args() if args.test: test() return if args.codes and args.text: print 'choose either codes or text' return if args.codes: render_codes(args.out, args.codes, args.font, args.bold, args.italic, args.size, args.lang, args.type) elif args.text: if args.text[0] == '@': if not args.out: args.out = path.splitext(args.text[1:])[0] + '.' + args.type with open(args.text[1:], 'r') as f: args.text = f.read() else: args.text = args.text.decode('unicode-escape') print 'text length %d' % len(args.text) render_text(args.out, args.text, args.font, args.bold, args.italic, args.size, args.lang, args.type) else: print 'nothing to do' if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/nototools/data/000077500000000000000000000000001316231664500240355ustar00rootroot00000000000000nototools-2017-09-25-tooling-for-phase3-update/nototools/data/arimo_config.txt000066400000000000000000000202431316231664500272330ustar00rootroot00000000000000vendor Monotype disable extrema name like Arimo disable private_use name like Arimo; weight like BoldItalic; version == 1.30 # custom tweaks # enable hints/missing_bytecode except gid 1998 disable head/hhea disable head/os2 # 11 glyphs have bounds errors # glyph bounds limits max 1854, min -434 # cp 0125 (gid 424) above max (1914) but target (gid 425) is not # cp 013a (gid 269) above max (1887) but target (gid 270) is not # cp 016e (gid 290) above max (1978) but target (gid 291) is not # cp 020a (gid 990) above max (1858) but target (gid 1071) is not # cp 040e (gid 566) above max (1863) but target (gid 568) is not # cp 0419 (gid 577) above max (1863) but target (gid 579) is not # cp 1d66 (gid 2145) below min (-436) but target (gid 2258) is not # cp 1d67 (gid 2146) below min (-436) but target (gid 2259) is not # cp 1d69 (gid 2148) below min (-435) but target (gid 2261) is not # cp 1d6a (gid 2149) below min (-435) but target (gid 2262) is not # cp 2c7c (gid 2858) below min (-665) but target (gid 2947) is not enable bounds/glyph/ymax only gid 269 290 424 566 577 990 enable bounds/glyph/ymin only gid 2145-2146 2148-2149 2858 # 2 glyphs have classDef differences # cp 0488 (gid 1496) has class 1 but target (gid 1577) has class 3 # cp 0489 (gid 1497) has class 1 but target (gid 1578) has class 3 enable gdef/classdef/not_combining_mismatch only cp 0488-0489 name like Arimo; weight like Bold; version == 1.30 disable head/hhea disable head/os2 # 14 glyphs have bounds errors # glyph bounds limits max 1854, min -434 # cp 007c (gid 95) below min (-455) but target (gid 95) is not # cp 00a6 (gid 229) below min (-455) but target (gid 230) is not # cp 0125 (gid 424) above max (1914) but target (gid 425) is not # cp 013a (gid 269) above max (1894) but target (gid 270) is not # cp 0326 (gid 1352) below min (-455) but target (gid 2147) is not # cp 1d67 (gid 2146) below min (-436) but target (gid 2973) is not # cp 1d69 (gid 2148) below min (-435) but target (gid 2975) is not # cp 1d6a (gid 2149) below min (-436) but target (gid 2976) is not # cp 1e10 (gid 1620) below min (-455) but target (gid 2447) is not # cp 1e11 (gid 1621) below min (-455) but target (gid 2448) is not # cp 220f (gid 154) below min (-455) but target (gid 154) is not # cp 2211 (gid 153) below min (-455) but target (gid 153) is not # cp 222b (gid 155) below min (-455) but target (gid 156) is not # cp 2c7c (gid 2858) below min (-666) but target (gid 3947) is not enable bounds/glyph/ymax only gid 269 424 enable bounds/glyph/ymin only gid 95 153-155 229 1352 1620-1621 2146 2148-2149 2858 # 1 mark glyphs have classDef errors # cp 034f (gid 1393) has non-combining-mark glyph class 1 but target (gid 2188) is correct enable gdef/classdef/combining_mismatch only cp 034f # 3 glyphs have classDef differences # cp 034f (gid 1393) has class 1 but target (gid 2188) has class 3 # cp 0488 (gid 1496) has class 1 but target (gid 2291) has class 3 # cp 0489 (gid 1497) has class 1 but target (gid 2292) has class 3 enable gdef/classdef/not_combining_mismatch only cp 034f 0488-0489 name like Arimo; weight like Italic; version == 1.30 disable head/hhea disable head/os2 # 39 glyphs have bounds errors # glyph bounds limits max 1854, min -434 # cp 007c (gid 95) below min (-454) but target (gid 95) is not # cp 00a6 (gid 229) below min (-455) but target (gid 230) is not # cp 0125 (gid 424) above max (1869) but target (gid 425) is not # cp 013a (gid 269) above max (1855) but target (gid 270) is not # cp 016e (gid 290) above max (1935) but target (gid 291) is not # cp 0192 (gid 165) below min (-456) but target (gid 166) is not # cp 01de (gid 951) above max (1857) but target (gid 1032) is not # cp 0326 (gid 1352) below min (-455) but target (gid 1433) is not # cp 1d69 (gid 2148) below min (-437) but target (gid 2261) is not # cp 1d6a (gid 2149) below min (-435) but target (gid 2262) is not # cp 1e10 (gid 1620) below min (-455) but target (gid 1733) is not # cp 1e11 (gid 1621) below min (-455) but target (gid 1734) is not # cp 1ea2 (gid 749) above max (1866) but target (gid 826) is not # cp 1eba (gid 773) above max (1866) but target (gid 850) is not # cp 1ec8 (gid 787) above max (1866) but target (gid 864) is not # cp 1ece (gid 793) above max (1866) but target (gid 870) is not # cp 1ee6 (gid 817) above max (1866) but target (gid 894) is not # cp 1eec (gid 823) above max (1866) but target (gid 900) is not # cp 1ef6 (gid 831) above max (1866) but target (gid 908) is not # cp 1f06 (gid 1760) above max (1866) but target (gid 1873) is not # cp 1f07 (gid 1761) above max (1866) but target (gid 1874) is not # cp 1f26 (gid 1788) above max (1866) but target (gid 1901) is not # cp 1f27 (gid 1789) above max (1866) but target (gid 1902) is not # cp 1f36 (gid 1804) above max (1866) but target (gid 1917) is not # cp 1f37 (gid 1805) above max (1866) but target (gid 1918) is not # cp 1f56 (gid 1832) above max (1866) but target (gid 1945) is not # cp 1f57 (gid 1833) above max (1866) but target (gid 1946) is not # cp 1f66 (gid 1844) above max (1866) but target (gid 1957) is not # cp 1f67 (gid 1845) above max (1866) but target (gid 1958) is not # cp 1f86 (gid 1874) above max (1866) but target (gid 1987) is not # cp 1f87 (gid 1875) above max (1866) but target (gid 1988) is not # cp 1f96 (gid 1890) above max (1866) but target (gid 2003) is not # cp 1f97 (gid 1891) above max (1866) but target (gid 2004) is not # cp 1fa6 (gid 1906) above max (1866) but target (gid 2019) is not # cp 1fa7 (gid 1907) above max (1866) but target (gid 2020) is not # cp 220f (gid 154) below min (-455) but target (gid 154) is not # cp 2211 (gid 153) below min (-455) but target (gid 153) is not # cp 222b (gid 155) below min (-455) but target (gid 156) is not # cp 2c7c (gid 2858) below min (-666) but target (gid 2947) is not enable bounds/glyph/ymax only gid 269 290 424 749 773 787 793 817 823 831 951 1760-1761 1788-1789 1804-1805 1832-1833 1844-1845 1874-1875 1890-1891 1906-1907 enable bounds/glyph/ymin only gid 95 153-155 165 229 1352 1620-1621 2148-2149 2858 # 2 glyphs have classDef differences # cp 0488 (gid 1496) has class 1 but target (gid 1577) has class 3 # cp 0489 (gid 1497) has class 1 but target (gid 1578) has class 3 enable gdef/classdef/not_combining_mismatch only cp 0488-0489 name like Arimo; weight like Regular; version == 1.30 disable head/hhea disable head/os2 # 18 glyphs have bounds errors # glyph bounds limits max 1854, min -434 # cp 0200 (gid 980) above max (1870) but target (gid 1775) is not # cp 0204 (gid 984) above max (1870) but target (gid 1779) is not # cp 0208 (gid 988) above max (1870) but target (gid 1783) is not # cp 020c (gid 992) above max (1870) but target (gid 1787) is not # cp 0210 (gid 996) above max (1870) but target (gid 1791) is not # cp 0214 (gid 1000) above max (1870) but target (gid 1795) is not # cp 0327 (gid 1353) below min (-444) but target (gid 2148) is not # cp 0476 (gid 1478) above max (1868) but target (gid 2273) is not # cp 1d6a (gid 2149) below min (-435) but target (gid 2976) is not # cp 1e1c (gid 1632) above max (1872) but target (gid 2459) is not # cp 1f36 (gid 1804) above max (1866) but target (gid 2631) is not # cp 1f37 (gid 1805) above max (1866) but target (gid 2632) is not # cp 1f66 (gid 1844) above max (1866) but target (gid 2671) is not # cp 1f67 (gid 1845) above max (1866) but target (gid 2672) is not # cp 1f96 (gid 1890) above max (1866) but target (gid 2717) is not # cp 1f97 (gid 1891) above max (1866) but target (gid 2718) is not # cp 1fd8 (gid 1952) above max (1872) but target (gid 2779) is not # cp 2c7c (gid 2858) below min (-665) but target (gid 3947) is not enable bounds/glyph/ymax only gid 980 984 988 992 996 1000 1478 1632 1804-1805 1844-1845 1890-1891 1952 enable bounds/glyph/ymin only gid 1353 2149 2858 # 1 mark glyphs have classDef errors # cp 034f (gid 1393) has non-combining-mark glyph class 1 but target (gid 2188) is correct enable gdef/classdef/combining_mismatch only cp 034f # 4 glyphs have classDef differences # cp 02c8 (gid 1147) has class 3 but target (gid 1942) has class 1 # cp 034f (gid 1393) has class 1 but target (gid 2188) has class 3 # cp 0488 (gid 1496) has class 1 but target (gid 2291) has class 3 # cp 0489 (gid 1497) has class 1 but target (gid 2292) has class 3 enable gdef/classdef/not_combining_mismatch only cp 02c8 034f 0488-0489 nototools-2017-09-25-tooling-for-phase3-update/nototools/data/family_name_info_p2.xml000066400000000000000000000106111316231664500304530ustar00rootroot00000000000000 nototools-2017-09-25-tooling-for-phase3-update/nototools/data/family_name_info_p3.xml000066400000000000000000000470201316231664500304600ustar00rootroot00000000000000 nototools-2017-09-25-tooling-for-phase3-update/nototools/data/familyname_and_styles.txt000066400000000000000000000105271316231664500311520ustar00rootroot00000000000000# See planning spreadsheet for more info. # This includes some 'grandfathered' fonts from phase 2, # might not want to include them. -- TRBH/CR/RI -- NotoSans NotoSansDisplay NotoSansUI -- TRBH/CR -- NotoSansMonospace -- TRBH/CR/RI -- NotoSerif NotoSerifDisplay -- TRBH -- NotoSansSymbols -- R -- NotoSansSymbols2 NotoSansMath -- TRBH -- NotoSansThai NotoSansThaiUI -- TRBH/CR -- NotoSansThaiNew NotoSansThaiNewUI NotoSerifThai -- TRBH/CR -- NotoSansHebrew NotoSansHebrewNew NotoSerifHebrew # no New NotoSansDevanagari NotoSansDevanagariUI NotoSerifDevanagari NotoSansArabic NotoSansArabicUI NotoSerifArabic # was Naskh NotoSansGeorgian NotoSerifGeorgian NotoSansTamil NotoSansTamilUI NotoSerifTamil NotoSerifTamilSlanted NotoSansBengali NotoSansBengaliUI NotoSerifBengali NotoSansArmenian NotoSerifArmenian NotoSansMyanmar NotoSansMyanmarUI NotoSerifMyanmar NotoSansKhmer NotoSansKhmerUI NotoSerifKhmer NotoSansSinhala NotoSansSinhalaUI NotoSerifSinhala NotoSansLao NotoSansLaoUI NotoSerifLao NotoSansTelugu NotoSansTeluguUI NotoSerifTelugu NotoSansKannada NotoSansKannadaUI -- TRBH -- NotoSerifKannada -- TRBH/CR -- NotoSansGujarati NotoSansGujaratiUI -- TRBH -- NotoSerifGujarati -- TRBH/CR -- NotoSansGurmukhi NotoSansGurmukhiUI -- TRBH -- NotoSerifGurmukhi -- TRBH/CR -- NotoSansMalayalam NotoSansMalayalamUI -- TRBH -- NotoSerifMalayalam -- TRBH/CR -- NotoSansEthiopic -- TRBH -- NotoSerifEthiopic -- RB -- NotoNastaliqUrdu -- TRBH -- NotoSansOriya NotoSansOriyaUI NotoSerifOriya NotoSansThaana NotoSerifThaana NotoSansTibetan NotoSerifTibetan NotoSansCham NotoSansSyriacEastern NotoSansSyriacWestern NotoSansSyriacEstrangela # Estrangelo on spreadsheet? NotoSansCanadianAboriginal # CanadianSyllabics on spreadsheet? NotoSansCherokee -- R -- NotoSansAdlam NotoSansAdlamUnjoined NotoSansChakma NotoSansMarchen NotoSansMendeKikakui NotoSansMiao NotoSansMro NotoSansNewa NotoSansOsage NotoSansPahawhHmong NotoSansSharada NotoSansSiddham NotoSansSignwriting NotoSansTakri NotoSansTirhuta NotoSansWarangCiti NotoSansAhom NotoSansAnatolianHieroglyphs NotoSansAvestan NotoSansBalinese NotoSansBamum NotoSansBassaVah NotoSansBatak NotoSansBhaiksuki NotoSansBrahmi NotoSansBuginese NotoSansBuhid NotoSansCarian NotoSansCaucasianAlbanian NotoSansCoptic NotoSansCypriot NotoSansDeseret NotoSansDuployan NotoSansElbasan NotoSansEgyptianHieroglyphs NotoSansGlagolitic NotoSansGothic NotoSansGrantha NotoSansHanunoo NotoSansHatran NotoSansImperialAramaic NotoSansInscriptionalPahlavi NotoSansInscriptionalParthian NotoSansJavanese NotoSansKaithi NotoSansKayahLi NotoSansKharoshthi NotoSansKhojki NotoSansKhudawadi NotoSansLepcha NotoSansLimbu NotoSansLinearA NotoSansLinearB NotoSansLisu NotoSansLycian NotoSansLydian NotoSansMahajani NotoSansMandaic NotoSansManichaean NotoSansMeeteiMayek NotoSansMeroiticCursive NotoSansMeroiticHieroglyphs NotoSansModi NotoSansMongolian NotoSansMultani NotoSansNKo NotoSansNabataean NotoSansNewTaiLue NotoSansOgham NotoSansOlChiki NotoSansOldHungarian NotoSansOldItalic NotoSansOldNorthArabian NotoSansOldPermic NotoSansOldPersian NotoSansOldSouthArabian NotoSansOldTurkic NotoSansOsmanya NotoSansPalmyrene NotoSansPauCinHau NotoSansPhagsPa NotoSansPhoenician NotoSansPsalterPahlavi NotoSansRejang NotoSansRunic NotoSansSamaritan NotoSansSaurashtra NotoSansShavian # NotoSansShorthandFormatControls (spreadsheet had this, it's Duployan) NotoSansSoraSompeng NotoSansSundanese NotoSansSumeroAkkadianCuneiform NotoSansSylotiNagri NotoSansTagbanwa NotoSansTagalog NotoSansTaiLe NotoSansTaiTham NotoSansTaiViet NotoSansTangut NotoSansTifinagh NotoSansUgaritic NotoSansVai NotoSansYi # NotoSansZanabazarSquare (not in Unicode 9) #extras -- RB/R/RI -- Arimo Cousine Tinos -- R -- NotoEmoji NotoColorEmoji NotoMusic -- LB -- NotoSansMono # CJK -- TRBH -- noto-cjk/NotoSansCJKjp noto-cjk/NotoSansCJKkr noto-cjk/NotoSansCJKsc noto-cjk/NotoSansCJKtc noto-cjk/NotoSansMonoCJKjp noto-cjk/NotoSansMonoCJKkr noto-cjk/NotoSansMonoCJKsc noto-cjk/NotoSansMonoCJKtc noto-cjk/NotoSansKR noto-cjk/NotoSansJP noto-cjk/NotoSansSC noto-cjk/NotoSansTC noto-cjk/NotoSerifCJKjp noto-cjk/NotoSerifCJKkr noto-cjk/NotoSerifCJKsc noto-cjk/NotoSerifCJKtc noto-cjk/NotoSerifMonoCJKjp noto-cjk/NotoSerifMonoCJKkr noto-cjk/NotoSerifMonoCJKsc noto-cjk/NotoSerifMonoCJKtc noto-cjk/NotoSerifKR noto-cjk/NotoSerifJP noto-cjk/NotoSerifSC noto-cjk/NotoSerifTC # legacy fonts -- RB -- NotoKufiArabic NotoNaskhArabic NotoNaskhArabicUI NotoMono nototools-2017-09-25-tooling-for-phase3-update/nototools/data/lint_config.txt000066400000000000000000000060611316231664500270740ustar00rootroot00000000000000# we've not checked this before disable head/os2/unicoderange # assume most variant support is based on cmap 14 disable complex/gsub/variants vendor Monotype disable extrema # most variant tests are not useful. # but we do need variant zero in sans/serif LGC script is not LGC disable cmap/variants script * filename like Avestan disable gpos/missing filename like Batak enable gdef/classdef/not_combining_mismatch except cp 1bee filename like Bengali enable script_required except cp 951-952 filename like ColorEmoji disable cmap/tables/missing # don't need format 4 cmap filename like Cherokee # deferred to phase 3 enable script_required except cp 300-302 304 30b-30c 323-324 330-331 filename like Devanagari enable bounds/glyph/ui_ymin except gid 788 disable bounds/font/ui_ymin enable bounds/glyph/ymax except gid 801-818 829-831 865 868-878 disable bounds/font/ymax filename like Emoji disable filename/name disable complex/gpos/missing filename like Glagolitic disable complex enable cmap/script_required except cp 0487 a66f filename like Hanunoo enable gdef/classdef/combining_mismatch except cp 1734 filename like Historic enable complex/gsub/variants disable cmap/variants filename like Javanese disable bounds/font/ymin disable bounds/glyph/ymin enable gdef/classdef/not_combining_mismatch except cp a9bd a9be a9bf filename like MeeteiMayek enable gdef/classdef/not_combining_mismatch except cp abe9-abea filename like Mongolian enable gdef/classdef/not_combining_mismatch except cp 180e enable complex/gsub/variants disable cmap/variants filename like Nastaliq # TODO: (dougfelt) find a better way of making these exceptions enable bounds/glyph/ymin except gid 222 223 250 280 882 887 950 959 974 filename like PhagsPa enable complex/gsub/variants disable cmap/variants filename like Tamil enable script_required except cp 951-952 1cda a8f3 filename like TaiTham enable gdef/classdef/combining_mismatch except cp 1a58 enable gdef/classdef/not_combining_mismatch except cp 1a55 filename like Telugu enable script_required except cp 951-952 1cda a8f3 enable reachable except gid 611 filename like Symbols disable filename/name condition vendor Adobe # Adobe's position is that these (mathematical) characters are intended to be used with CJK # in an LTR environment. For true bidi text (that would naturally trigger bidi) these # characters should come from a font designed for bidi. So there is no need in this font # for the mirrored glyphs. disable bidi # The v1.003 fonts align the windows ascent/descent with the hhea values, but not the # typographic ascender. 1.004 patched some glyphs but otherwise behavior is the same. version == 1.004 disable head/os2/ascender, head/os2/descender # Adobe says "None of the zero-width glyphs are involved with attachment" disable gdef/classdef/not_present # Adobe says that most of the glyphs are indeed reachable, so perhaps the linter/ttx is # at fault? disable reachable # Adobe has a well-defined list of variation sequences they support in the different CJK # fonts. No point in trying to second-guess them. disable cmap/variants nototools-2017-09-25-tooling-for-phase3-update/nototools/data/noto_cmap_phase2.xml000066400000000000000000002125551316231664500300120ustar00rootroot00000000000000 Arab,Arabic,1122,0000 000d 0020-0021 002c 002e 0030-003a 00a0 00ab 00bb 0600-0604 0606-061b 061e-06ff 0750-077f 08a0 08a2-08ac 08e4-08fe 200b-2011 204f 25cc 2e41 fb50-fbc1 fbd3-fd3f fd50-fd8f fd92-fdc7 fdf0-fdfd fe70-fe74 fe76-fefc feffAran,(Urdu),267,0000 000d 0020 0028-0029 002b 002d-002f 003a 003d 005b-005d 007b-007d 00a0 00ab 00b7 00bb 00d7 00f7 0600-0604 0609-0614 061b-061c 061e-0659 065d-0673 0679-0681 0683-068f 0691 0693 0696 0698-069a 069e 06a1 06a4 06a6 06a9 06ab 06af-06b1 06b3 06b7 06ba-06bc 06be 06c0-06c4 06cc-06cd 06d0 06d2-06d5 06dd-06de 06e0-06e1 06e9 06ee-06f9 06ff 0759 075c 0763 0767-077d 08ff 200b-2011 2013-2014 2018-2019 201c-201d 2039-203a 2212 25cc fbb2-fbc1 fd3e-fd3f fdf2 fdf4 fdfa-fdfd feffArmi,Imperial Aramaic,36,0000 000d 0020 00a0 feff 10840-10855 10857-1085fArmn,Armenian,97,0000 000d 0020 00a0 0531-0556 0559-055f 0561-0587 0589-058a 058f fb13-fb17 feffAvst,Avestan,70,0000 000d 0020 00a0 200c-200d 2e30-2e31 feff 10b00-10b35 10b39-10b3fBali,Balinese,130,0000 000d 0020 00a0 1b00-1b4b 1b50-1b7c 200b-200d 25cc feffBamu,Bamum,662,0000 000d 0020 00a0 a6a0-a6f7 feff 16800-16a38Batk,Batak,61,0000 000d 0020 00a0 1bc0-1bf3 1bfc-1bff feffBeng,Bengali,154,0000 000d 0020-0023 0025 0027-003f 005b-005f 007b-007e 00a0 00ad 00d7 00f7 0964-0965 0980-0983 0985-098c 098f-0990 0993-09a8 09aa-09b0 09b2 09b6-09b9 09bc-09c4 09c7-09c8 09cb-09ce 09d7 09dc-09dd 09df-09e3 09e6-09fb 200b-200d 2013-2014 2018-2019 201c-201d 2026 20b9 2212 25cc feffBrah,Brahmi,113,0000 000d 0020 00a0 feff 11000-1104d 11052-1106fBugi,Buginese,40,0000 000d 0020 00a0 1a00-1a1b 1a1e-1a1f 200b-200d 25cc a9cf feffBuhd,Buhid,27,0000 000d 0020 00a0 1735-1736 1740-1753 feffCans,Canadian Aboriginal,722,0000 000d 0020 00a0 0131 02c7 02d8-02db 0307 1400-167f 18b0-18f5 feffCari,Carian,54,0000 000d 0020 00a0 feff 102a0-102d0Cham,Cham,119,0020-0040 00a0 00ad 037e aa00-aa36 aa40-aa4d aa50-aa59 aa5c-aa5fCher,Cherokee,90,0000 000d 0020 00a0 13a0-13f4 feffCopt,Coptic,159,0000 000d 0020 00a0 0300-0302 0304-0305 0307-0308 0323 033f 0361 0374-0375 03e2-03ef 1dcd 25cc 2c80-2cf3 2cf9-2cff fe24-fe26 feffCprt,Cypriot,60,0000 000d 0020 00a0 feff 10800-10805 10808 1080a-10835 10837-10838 1083c 1083fDeva,Devanagari,265,0000 000d 0020-0023 0025 0027-003f 005b-005f 007b-007e 00a0 00af 00d7 00f7 02bc 0900-097f 1cd0-1cf6 200b-200d 2013-2014 2018-2019 201c-201d 2026 20b9 2212 25cc a830-a839 a8e0-a8fb feffDsrt,Deseret,85,0000 000d 0020 00a0 feff 10400-1044fEgyp,Egyptian Hieroglyphs,1076,0000 000d 0020 00a0 feff 13000-1342eEthi,Ethiopic,500,0000 000d 0020 00a0 1200-1248 124a-124d 1250-1256 1258 125a-125d 1260-1288 128a-128d 1290-12b0 12b2-12b5 12b8-12be 12c0 12c2-12c5 12c8-12d6 12d8-1310 1312-1315 1318-135a 135d-137c 1380-1399 2d80-2d96 2da0-2da6 2da8-2dae 2db0-2db6 2db8-2dbe 2dc0-2dc6 2dc8-2dce 2dd0-2dd6 2dd8-2dde ab01-ab06 ab09-ab0e ab11-ab16 ab20-ab26 ab28-ab2e feffGeor,Georgian,127,0000 000d 0020 00a0 0589 10a0-10c5 10d0-10fc 2d00-2d25 feffGlag,Glagolitic,99,0000 000d 0020 00a0 2c00-2c2e 2c30-2c5e feffGoth,Gothic,38,0000 000d 0020 003a 00a0 00b7 0304-0305 0308 0331 feff 10330-1034aGujr,Gujarati,155,0000 000d 0020-0023 0025 0027-003f 005b-005f 007b-007e 00a0 00ad 00d7 00f7 0964-0965 0a81-0a83 0a85-0a8d 0a8f-0a91 0a93-0aa8 0aaa-0ab0 0ab2-0ab3 0ab5-0ab9 0abc-0ac5 0ac7-0ac9 0acb-0acd 0ad0 0ae0-0ae3 0ae6-0af1 200b-200d 2013-2014 2018-2019 201c-201d 2026 20b9 2212 25cc a830-a839 feffGuru,Gurmukhi,151,0000 000d 0020-0023 0025 0027-003f 005b-005f 007b-007e 00a0 00ad 00d7 00f7 0964-0965 0a01-0a03 0a05-0a0a 0a0f-0a10 0a13-0a28 0a2a-0a30 0a32-0a33 0a35-0a36 0a38-0a39 0a3c 0a3e-0a42 0a47-0a48 0a4b-0a4d 0a51 0a59-0a5c 0a5e 0a66-0a75 200b-200d 2013-2014 2018-2019 201c-201d 2026 20b9 2212 25cc 262c a830-a839 feffHano,Hanunoo,28,0000 000d 0020 00a0 1720-1736 feffHans,Simplified,44683,0000-007e 00a0-0103 0110-0113 011a-011b 0128-012b 0143-0144 0147-0148 014c-014f 0152-0153 0168-016d 0192 01a0-01a1 01af-01b0 01cd-01dc 01f8-01f9 0251 0261 02c7 02c9-02cb 02d9 0391-03a1 03a3-03a9 03b1-03c1 03c3-03c9 0401 0410-044f 0451 1100-11ff 1e3e-1e3f 1ea0-1ef9 2002-2003 2010-2016 2018-201a 201c-201e 2020-2022 2025-2027 2030 2032-2033 2035 2039-203c 2042 2047-2049 2051 20a9 20ab-20ac 20dd-20de 2100 2103 2105 2109-210a 210f 2113 2116 2121-2122 2126-2127 212b 212e 2135 213b 2160-216b 2170-217b 2190-2199 21b8-21b9 21c4-21c6 21cb-21cc 21d0 21d2 21d4 21e6-21e9 21f5 2200 2202-2203 2205-220b 220f 2211-2213 2215 221a 221d-2220 2223 2225-222e 2234-2237 223d 2243 2245 2248 224c 2252 2260-2262 2264-2267 226a-226b 226e-226f 2272-2273 2276-2277 2282-2287 228a-228b 2295-2299 22a0 22a5 22bf 22da-22db 22ef 2305-2307 2312 2318 2329-232a 23b0-23b1 23be-23cc 23ce 23da-23db 2423 2460-25ab 25b1-25b3 25b6-25b7 25bc-25bd 25c0-25c1 25c6-25cc 25ce-25d3 25e2-25e6 25ef 2600-2603 2605-2606 2609 260e-260f 2616-2617 261c-261f 262f 2640-2642 2660-266f 2672-267d 26a0 26bd-26be 2702 2713 271a 273d 273f-2740 2756 2776-277f 27a1 2934-2935 29bf 29fa-29fb 2b05-2b07 2b1a 2e3a-2e3b 2e80-2e99 2e9b-2ef3 2f00-2fd5 2ff0-2ffb 3000-303f 3041-3096 3099-30ff 3105-312d 3131-318e 3190-31ba 31c0-31e3 31f0-321e 3220-32fe 3300-332b 332d-4db5 4e00-9fd0 a960-a97c ac00-d7a3 d7b0-d7c6 d7cb-d7fb f900-fa6d fb00-fb04 fe10-fe19 fe30-fe52 fe54-fe66 fe68-fe6b ff01-ffbe ffc2-ffc7 ffca-ffcf ffd2-ffd7 ffda-ffdc ffe0-ffe6 ffe8-ffee 1f100-1f10a 1f110-1f12e 1f130-1f16b 1f170-1f19a 1f200-1f202 1f210-1f23a 1f240-1f248 1f250-1f251 2000b 20021 2003e 20046 2004e 20068 20086-20087 20089-2008a 20094 200a2 200a4 200b0 200ca-200cd 200d1 200ee 200f5 2010c 2010e 20118 20158 20164 201a2 201a4 201a9 201ab 201c1 201d4 201f2 20204 2020c 20213-20214 20239 2025b 20274-20275 20299 2029e 202a0 202b7 202bf-202c0 202e5 2030a 20325 2032b 20341 20345-20347 20371 2037e-20381 203a0 203a7 203b5 203c9 203cb 203f5 203f9 203fc 20413-20414 2041f 2044a 20465 20487 2048e 20491-20492 204a3 204d7 204fc 204fe 20509 2053f 20547 2058e 205a5 205b1 205b3 205c3 205ca 205d0 205d5-205d6 205df-205e0 205eb 20611 20615 20619-2061a 20628 20630 20656 20676 206ec 2070e 20731 2074f 20779 207c8 20807 2082c 2083a 20873 208b9 208d5 2090e 20916 20923 20954 20979 2097c 20984 2099d 209e7 20a11 20a50 20a64 20a6f 20a8a 20ab4 20ac2 20acd 20ad3 20b0d 20b1d 20b8f 20b9f 20ba8-20ba9 20bb7 20bbf 20bc6 20bcb 20be2 20beb 20bfb 20bff 20c0b 20c0d 20c20 20c34 20c3a-20c3b 20c41-20c43 20c53 20c65 20c77-20c78 20c7c 20c8d 20c96 20c9c 20cb5 20cb8 20ccf-20cd0 20cd3-20cd6 20cdd 20ced 20cff 20d15 20d28 20d31-20d32 20d45-20d49 20d4c-20d4e 20d58 20d6f 20d71 20d74 20d7c 20d7e-20d7f 20d96 20d9c 20da7 20db2 20dc8 20de1 20e04 20e09-20e0a 20e0d-20e11 20e16 20e1d 20e4c 20e64 20e6d 20e73 20e75-20e7b 20e8c 20e95-20e96 20e98 20e9d 20ea2 20eaa-20eac 20eb6 20ed7-20ed8 20edd 20ef8-20efb 20f1d 20f26 20f2d-20f2e 20f30-20f31 20f3b 20f4c 20f5f 20f64 20f8d 20f90 20fad 20fb4-20fb6 20fbc 20fdf 20fea-20fed 21014 2101d-2101e 2104f 2105c 2106f 21075-21078 2107b 21088 21096 2109d 210b4 210bf-210c1 210c7-210c9 210cf 210d3 210e4 210f4-210f6 2112f 2113b 2113d 21145 21148 2114f 21180 21187 211d9 21201 2123c-2123d 2124f 21255 21274 2127b-2127c 212a8-212a9 212b0 212d7 212e3-212e4 212fd-212fe 21302-21305 2131b 21336 2133a 21344 21375-21376 2138e 21398 2139a 2139c 213c4-213c6 213ed 213fe 21413 21416 21424 2143f 21452 21454-21455 2146d-2146e 2148a 21497 214b6 214e8 214fd 21577 21582 21596 215d7 2160a 21613 21619 2163e 21647 21661 21692 216b4 216b8 216ba 216c0-216c2 216d3 216d5 216df 216e6-216e8 216fa-216fc 216fe 21706 2170d 21710 21726 2173a-2173c 21742 21757 2176c-21771 21773-21774 217ab 217b0-217b5 217c3 217c7 217d9-217dc 217df 217ef 217f5-217f6 217f8-217fc 21820 21828-2182a 2182d 21839-2183b 21840 21845 21852 2185e 21861-21864 21877 2187b 21883-21885 2189e-218a2 218bd-218bf 218d1 218d6-218d9 218fa 21903-21905 21910-21912 21915 2191c 21922 21927 2193b 21944 21958 2196a 2197c 21980 21983 21988 21996 219c3 219db 219f3 21a1a 21a2d 21a34 21a45 21a4b 21a63 21b44 21bc1-21bc2 21c2a 21c56 21c70 21ca2 21ca5 21cac 21d2d 21d45-21d46 21d53 21d5e 21d62 21d78 21d90 21d92 21d9c 21da1 21db6-21db7 21dba 21dca 21dd1 21de0 21deb 21df9 21e1c 21e23 21e33-21e34 21e37 21e3d 21e89 21ea4 21ea8 21ec8 21ed5 21f0f 21f15 21f1e 21f6a 21f76 21f9e 21fa1 21fe8 21ffa 22045 22049 2207e 2209a 220c7 220fc 2212a 2215b 22173 2217a-2217b 221a1 221c1 221c3 22208 22218 2227c 2231e 22321 22325 223ad 223bd 223d0 223d7 223fa 22465 22471 2248b 22491 224b0 224bc 224c1 224c9 224cc 224ed 22513 2251b 22530 22554 2258d 225af 225be 22609 2261b-2261c 2262b 22668 2267a 22696 22698 226f3-226f6 22712 22714 2271b 2271f 2272a 22775 22781 22796 227b4-227b5 227cd 22803 2285b 2285f-22860 22871 228ab 228ad 228c1 228f7 22926 22939 2294f 22967 2296b 22980 2298f 22993 22a66 22ab8 22acf 22ad5 22ae6 22ae8 22b0e 22b22 22b3f 22b43 22b46 22b4f-22b50 22b6a 22ba6 22bca 22bce 22c1d 22c24 22c26-22c27 22c38 22c4c 22c51 22c55 22c62 22c88 22c9b 22ca1 22ca9 22cb2 22cb7 22cc2 22cc6 22cc9 22d07-22d08 22d12 22d44 22d4c 22d67 22d8d 22d95 22da0 22da3-22da4 22db7 22de1 22dee 22e0d 22e36 22e42 22e78 22e8b 22eb3 22eef 22f74 22fcc 22fe3 22feb 23033 23044 2304b 23066 2307d-2307e 2308e 230b7 230bc 230da 23103 2313d 2317d 23182 231a4-231a5 231b3 231b6 231c3-231c4 231c8-231c9 231ea 231f5 231f7-231f9 2320f 23225 2322f 23231-23234 23256 2325e 23262 23281 23289-2328a 232ab-232ad 232d2 232e0-232e1 23300 2330a 2331f 23372 233b4 233cc 233d0 233d2-233d3 233d5 233da 233de-233df 233e4 233e6 233f4-233f5 233f9-233fa 233fe 23400 2343f 2344a-2344b 23450-23451 23465 2346f 23472 234e4-234e5 23519 23530 23551 2355a 23567 23594-23595 23599 2359c 235bb 235c4 235cb 235cd-235cf 235f3 23600 23617 2361a 23638-2363a 2363c 23640 23647 23659 2365f 23677 2368e 2369e 236a6 236ad 236ba 236df 236ee 23703 2370c 23716 2371c 23720 2372d 2372f 2373f 23763-23764 23766 23781 237a2 237bc 237c2 237d5-237d7 237e7 237f1 237ff 23824 2383a 2383d 239c2 23a98 23aa7 23adb 23aee 23afa 23b1a 23b5a 23c63 23c7f 23c97-23c9b 23cb5 23cb7 23cbe 23cc7-23cc9 23cfc-23d00 23d0e 23d40 23d5b 23d7e 23d8f 23db6-23dbd 23dd3 23de3 23df8-23dfa 23e06 23e11 23e23 23e2c-23e31 23e39 23e88-23e8b 23eb9 23ebf 23ed7 23ef7-23efc 23f35 23f41 23f4a 23f61 23f7e-23f82 23f8f 23fb4 23fb7 23fc0 23fc5 23feb-23ff0 24011 24039-2403d 2404b 24057 24085 2408b-2408d 24091 24096 240c9 240e1 240ec 24103-24104 2410f 24119 2413f-24140 24144 2414e 24155-24157 2415c 2415f 24161 24177 2417a 241a3-241a5 241ac 241b5 241c6 241cd 241e2 241fc 241fe 2421b 2424b 24256 24259 24276-24278 24284 24293 24295 242a5 242bf 242c1 242c9-242ca 242ee 242fa 2430d 2431a 24334 24348 24362-24365 2438c 24396 2439c 243bc-243bd 243c1 243d0 243e9-243ea 243f2 243f8 24404 24435-24436 2445a-2445b 24473 24487-24488 244b9 244bc 244ce 244d3 244d6 24505 24521 24578 245c8 24618 24629-2462a 24665 24674 24697 246a5 246d4 24706 24725 2472f 2478f 247e0 247f1 24812 24823 24882 24896 248e9 248f0-248f3 248fb 248ff-24901 2490c 24916-24917 24919 2492f 24933-24934 2493e-24943 24962-24963 24974-24976 2497b 2497f 24982 24988-2498f 24994 249a4 249a7 249a9 249ab-249ad 249b7-249bb 249c5 249d0 249da-249db 249de-249df 249e3 249e5 249ec-249ed 249f6-249f9 249fb 24a0e 24a12-24a13 24a15 24a21-24a2a 24a3e 24a42 24a45 24a4a 24a4d-24a51 24a5d 24a65-24a67 24a71 24a77-24a7a 24a7d 24a8c 24a93-24a96 24aa4-24aa7 24ab1-24ab3 24aba-24abc 24ac0 24ac7 24ac9-24aca 24ad1 24adf 24ae2 24ae9 24b0f 24b56 24b6e-24b6f 24bf5 24c09 24c16 24c9e-24c9f 24cc9 24cd9 24d06 24d13-24d14 24db8 24dea-24deb 24e04 24e0e 24e37 24e3b 24e50 24e6a 24e8b 24ea5 24ea7 24f0e 24f5c 24f82 24f86 24f97 24f9a 24fa9 24fb8 24fc2 24ff2 2502c 2504a 25052 25055 2509d 25122 2512b 25148 2517d-2517e 251a9 251cd 251e3 251e5-251e7 2521e 25220-25221 2524c 25250 25299 252c7 252d8 2530e 25311 25313 25419 25425 2542e-25430 25446 2546c 2546e 2548e 2549a 254d9 2550e 25531-25532 25535 2553f 2555b-2555e 25562 25565-25566 25581 25584 2558f 255a7-255a8 255b9 255d5 255db 255e0 25605 25635 25651 2567f 25683 25695 256e3 256f6 25706 2571d 25725 2573d 25771-25772 257a9 257b4 257c7 257df-257e1 25857 2585d 25872 25874 258c8 258de 258e1 25903 25946 25956 259ac 259c4 259cc 259d4 25a54 25a95 25a9c 25aae-25aaf 25ad7 25ae3-25ae4 25ae9 25af1 25b74 25b89 25bb2-25bb4 25bc6 25be4 25be8 25c01 25c06 25c21 25c4a-25c4b 25c64-25c65 25c91 25ca4 25cc0-25cc1 25cfe 25d20 25d30 25d43 25d99 25da1 25db9 25e0e 25e2e 25e49 25e56 25e62 25e65 25e81-25e83 25ea6 25ebc 25ec2 25ed7-25ed8 25ee8 25f1a 25f23 25f4b 25f5c 25fd4 25fe0-25fe2 25ffb 2600c 26017 26021 26029 26048 26060 26064 26083 26097 260a4-260a5 260ed 26102 26121 26159-2615c 261ad-261ae 261b2 261dd 26221-26222 26258 26261 2626a-2626b 26270 26286 262d0 26335 2634b-2634c 26351 263be 263f5 263f8 26402 26410-26412 2644a 26469 26484 26488-26489 2648d 26498 26512 26572 265a0 265ad 265bf 26612 26626 26676 2667e 266af-266b1 266b5 266da 266e8 266fc 26716 2671d 26741 2677c 26799 267b3-267b4 267cc 2681c 26846 2685e 2686e 26888 2688a 26893 268c7 268dd 268ea 2690e 26911 26926 26939 26951 2696f 26999 269a8 269b5 269dd 269f2 269fa 26a1e 26a2d-26a2e 26a34 26a42 26a51-26a52 26a58 26a8c 26ab7 26aff 26b05 26b0a 26b13 26b15 26b23 26b28 26b50-26b53 26b5b-26b5c 26b75 26b82 26b96-26b97 26b9d 26bb3 26bc0 26bf7 26c21 26c29 26c40-26c41 26c46 26c73 26c7e-26c82 26c9e 26ca4 26cb7-26cb8 26cbd 26cc0 26cc3 26cd1 26cdd 26d22-26d2a 26d51 26d74 26da0-26da7 26dae 26ddc 26dea-26deb 26df0 26e00 26e05 26e07 26e12 26e40 26e42-26e45 26e65 26e6e 26e72 26e77 26e84 26e88 26e8b 26e99 26ed0-26ed7 26f26 26f73-26f74 26f94 26f9f 26fa1 26fbe 26fde-26fdf 26ff6-26ff8 2700e 2704b 27052-27053 27088 270ad-270af 270cd 270d2 270f4 270f8 27109 2710c-2710d 27126-27127 27139 27164-27165 27175 271cd 2721b 27267 27280 27285 2728b 272b2 272b6 272e6 27352 2739a 273da-273db 273fe-273ff 27410 27422 27449 27450 27484 27486 27574 275a3 275e0 275e4 275fd-275fe 27607 2760c 27614-27615 27631-27632 27639 27655-27657 27684 27693-27694 2770e-2770f 27723 27735-27736 27741 27752 2775e 27784-27785 277cc 27858 27870 2789d 278b2 278c8 27924 27967 2797a 27985 279a0 279b4 279dd 279fd 27a0a 27a0e 27a3e 27a53 27a59 27a79 27a84 27abd-27abe 27af4 27b06 27b0b 27b18 27b38-27b3a 27b48 27b65 27bb3 27bbe 27bc7 27bef 27bf4 27c12 27c3c 27c6c 27cb1 27cb8 27cc5 27d2f 27d53-27d54 27d66 27d73 27d84 27d8f 27d98 27da0 27dbd 27ddc 27e10 27e4d 27e4f 27f2e 27fb7 27ff9 28002 28009 2801e 28023-28024 28048 28083 2808a 28090 280bb 280bd-280be 280e8-280e9 280f4 2812e 2814f 2815d 2816f 28189 281af 281bc 28207 28218 2821a 28256 28277 2827c 28282 2829b 282cd 282e2 282f3 28306 28318 2832f 2833a 28365 2836d 2837d 2838a 283cd 28408 2840c 28412 28455 28468 2846c 28473 28482 28501 2853c-2853d 2856b-2856c 285c8-285c9 285e8 285f4 28600 2860b 28625 2863b 28678 28695 286aa-286ab 286b2 286bc 286d7-286d8 286e6 286fa 2870f 28713 287e0 28804 2882b 2890d 28933 28946 28948-28949 28956 28964 28968 2896b-2896d 2897e 28987-28989 289a8 289aa-289ab 289b8 289ba-289bc 289c0 289dc 289de 289e1 289e3-289e4 289e7-289e8 289f9-289fc 28a0f 28a16 28a1e 28a25 28a29 28a32 28a36 28a43-28a4b 28a59-28a5a 28a71 28a81-28a83 28a99-28a9c 28ac0 28ac6 28acb-28ace 28add-28ae5 28aea 28afc 28b0c 28b13 28b21-28b22 28b2b-28b2d 28b2f 28b46 28b49 28b4c 28b4e 28b50 28b63-28b66 28b6c 28b8f 28b99 28b9c-28b9d 28bb9 28bc1-28bc2 28bc5 28bd4 28bd7 28bd9-28bda 28be7-28bec 28bef 28bf5 28bff 28c03 28c09 28c1c-28c1d 28c23 28c26 28c2b 28c30 28c39 28c3b 28c47 28c4f 28c51 28c54 28cca 28ccd 28cd2 28cdd 28d10 28d34 28d71 28d99 28db9 28dfb 28e0f 28e17 28e1f 28e36 28e39 28e65-28e66 28e89 28e97 28e99 28eac 28eb2-28eb3 28ed9 28ee7 28eeb 28ef6 28f32 28fc5 28ff8 29079 29088 2908b 29093 290af-290b1 290c0 290e4-290e5 290ec-290ed 2910d 29110 2913c 2914d 2915b 2915e 29170 2919c 291a8 291d5 291eb 292a0 292b1 2941d 29420 29433 2943f 29448 29490 294d0 294d9-294da 294e5 294e7 2959e 295b0 295b8 295cf 295d7 295e9 295f4 2967f 296f0 29719 29720 29732 29750 297d4 29810 29857 298a4 298c6 298d1 298ea 298f1 298fa 29903 29905 2992f 29945 29947-29949 2995d 2996a 2999d 299c3 299c9 29a28 29a4d 29a72 29b05 29b0e 29bd5 29c73 29cad 29d3e 29d4b 29d5a 29d7c 29d98 29d9b 29ddb 29df6 29e06 29e15 29e2d 29e3d 29e49 29e68 29e8a 29eac 29eb0 29ec3-29ec4 29edb 29ee9 29ef8 29f23 29f30 29f7e 29f83 29f8c 29fb7 29fce 29fd7 29fde 2a014 2a01a 2a02f 2a082 2a087 2a0b9 2a0e1 2a0ed 2a0f3 2a0f8-2a0f9 2a0fe 2a107 2a123 2a133-2a134 2a150 2a190 2a192-2a193 2a1ab 2a1b4-2a1b5 2a1df 2a1f5 2a220 2a233 2a293 2a29f 2a2b2 2a2b4 2a2b6 2a2ba 2a2bd 2a2df 2a2ff 2a351 2a38c 2a3a9 2a3ed 2a434 2a437 2a45b 2a5c6 2a5cb 2a5f1 2a601-2a602 2a61a 2a632 2a64a 2a65b 2a6a9 2a6b2 2a7dd 2a8fb 2a917 2a9e6 2aa30 2aa36 2aa58 2adff 2afa2 2b127-2b128 2b137-2b138 2b1ed 2b300 2b363 2b36f 2b372 2b37d 2b404 2b410 2b413 2b461 2b4e7 2b4ef 2b4f6 2b4f9 2b50d-2b50e 2b536 2b5ae-2b5af 2b5b3 2b5e7 2b5f4 2b61c-2b61d 2b626-2b628 2b62a 2b62c 2b695-2b696 2b6ad 2b6ed 2b746 2b751 2b753 2b75a 2b75c 2b765 2b776-2b777 2b77c 2b782 2b789 2b78b 2b78e 2b794 2b7a9 2b7ac 2b7af 2b7bd 2b7c5 2b7c9 2b7cf 2b7d2 2b7d8 2b7e6 2b7f0 2b7f9 2b7fc 2b806 2b80a 2b80d 2b817 2b81a 2b81c 2b8b8 2bac7 2bb5f 2bb62 2bb7c 2bb83 2bc1b 2bd77 2bd87 2bdf7 2be29 2c029-2c02a 2c0a9 2c0ca 2c1d5 2c1d9 2c1f9 2c27c 2c288 2c2a4 2c317 2c35b 2c361 2c364 2c488 2c494 2c497 2c542 2c613 2c618 2c621 2c629 2c62b-2c62d 2c62f 2c642 2c64a-2c64b 2c72c 2c72f 2c79f 2c7c1 2c7fd 2c8d9 2c8de 2c8e1 2c8f3 2c907 2c90a 2c91d 2ca02 2ca0e 2ca7d 2caa9 2cb29 2cb2d-2cb2e 2cb31 2cb38-2cb39 2cb3b 2cb3f 2cb41 2cb4a 2cb4e 2cb5a-2cb5b 2cb64 2cb69 2cb6c 2cb6f 2cb73 2cb76 2cb78 2cb7c 2cbb1 2cbbf-2cbc0 2cbce 2cc56 2cc5f 2ccf5-2ccf6 2ccfd 2ccff 2cd02-2cd03 2cd0a 2cd8b 2cd8d 2cd8f-2cd90 2cd9f-2cda0 2cda8 2cdad-2cdae 2cdd5 2ce18 2ce1a 2ce23 2ce26 2ce2a 2ce7c 2ce88 2ce93 2f804 2f80f 2f815 2f818 2f81a 2f822 2f825 2f828 2f82c 2f833 2f83b 2f83f-2f840 2f846 2f852 2f862 2f86d 2f873 2f877-2f878 2f884 2f894 2f899-2f89a 2f8a6 2f8ac 2f8b2 2f8b6 2f8cd 2f8d3 2f8db-2f8dc 2f8e1 2f8e5 2f8ea 2f8ed 2f8fc 2f903 2f90b 2f90f 2f91a 2f920-2f921 2f945 2f947 2f96c 2f994-2f995 2f9b2 2f9bc 2f9d0 2f9d4 2f9de-2f9df 2f9f4Hant,Traditional,44683,0000-007e 00a0-0103 0110-0113 011a-011b 0128-012b 0143-0144 0147-0148 014c-014f 0152-0153 0168-016d 0192 01a0-01a1 01af-01b0 01cd-01dc 01f8-01f9 0251 0261 02c7 02c9-02cb 02d9 0391-03a1 03a3-03a9 03b1-03c1 03c3-03c9 0401 0410-044f 0451 1100-11ff 1e3e-1e3f 1ea0-1ef9 2002-2003 2010-2016 2018-201a 201c-201e 2020-2022 2025-2027 2030 2032-2033 2035 2039-203c 2042 2047-2049 2051 20a9 20ab-20ac 20dd-20de 2100 2103 2105 2109-210a 210f 2113 2116 2121-2122 2126-2127 212b 212e 2135 213b 2160-216b 2170-217b 2190-2199 21b8-21b9 21c4-21c6 21cb-21cc 21d0 21d2 21d4 21e6-21e9 21f5 2200 2202-2203 2205-220b 220f 2211-2213 2215 221a 221d-2220 2223 2225-222e 2234-2237 223d 2243 2245 2248 224c 2252 2260-2262 2264-2267 226a-226b 226e-226f 2272-2273 2276-2277 2282-2287 228a-228b 2295-2299 22a0 22a5 22bf 22da-22db 22ef 2305-2307 2312 2318 2329-232a 23b0-23b1 23be-23cc 23ce 23da-23db 2423 2460-25ab 25b1-25b3 25b6-25b7 25bc-25bd 25c0-25c1 25c6-25cc 25ce-25d3 25e2-25e6 25ef 2600-2603 2605-2606 2609 260e-260f 2616-2617 261c-261f 262f 2640-2642 2660-266f 2672-267d 26a0 26bd-26be 2702 2713 271a 273d 273f-2740 2756 2776-277f 27a1 2934-2935 29bf 29fa-29fb 2b05-2b07 2b1a 2e3a-2e3b 2e80-2e99 2e9b-2ef3 2f00-2fd5 2ff0-2ffb 3000-303f 3041-3096 3099-30ff 3105-312d 3131-318e 3190-31ba 31c0-31e3 31f0-321e 3220-32fe 3300-332b 332d-4db5 4e00-9fd0 a960-a97c ac00-d7a3 d7b0-d7c6 d7cb-d7fb f900-fa6d fb00-fb04 fe10-fe19 fe30-fe52 fe54-fe66 fe68-fe6b ff01-ffbe ffc2-ffc7 ffca-ffcf ffd2-ffd7 ffda-ffdc ffe0-ffe6 ffe8-ffee 1f100-1f10a 1f110-1f12e 1f130-1f16b 1f170-1f19a 1f200-1f202 1f210-1f23a 1f240-1f248 1f250-1f251 2000b 20021 2003e 20046 2004e 20068 20086-20087 20089-2008a 20094 200a2 200a4 200b0 200ca-200cd 200d1 200ee 200f5 2010c 2010e 20118 20158 20164 201a2 201a4 201a9 201ab 201c1 201d4 201f2 20204 2020c 20213-20214 20239 2025b 20274-20275 20299 2029e 202a0 202b7 202bf-202c0 202e5 2030a 20325 2032b 20341 20345-20347 20371 2037e-20381 203a0 203a7 203b5 203c9 203cb 203f5 203f9 203fc 20413-20414 2041f 2044a 20465 20487 2048e 20491-20492 204a3 204d7 204fc 204fe 20509 2053f 20547 2058e 205a5 205b1 205b3 205c3 205ca 205d0 205d5-205d6 205df-205e0 205eb 20611 20615 20619-2061a 20628 20630 20656 20676 206ec 2070e 20731 2074f 20779 207c8 20807 2082c 2083a 20873 208b9 208d5 2090e 20916 20923 20954 20979 2097c 20984 2099d 209e7 20a11 20a50 20a64 20a6f 20a8a 20ab4 20ac2 20acd 20ad3 20b0d 20b1d 20b8f 20b9f 20ba8-20ba9 20bb7 20bbf 20bc6 20bcb 20be2 20beb 20bfb 20bff 20c0b 20c0d 20c20 20c34 20c3a-20c3b 20c41-20c43 20c53 20c65 20c77-20c78 20c7c 20c8d 20c96 20c9c 20cb5 20cb8 20ccf-20cd0 20cd3-20cd6 20cdd 20ced 20cff 20d15 20d28 20d31-20d32 20d45-20d49 20d4c-20d4e 20d58 20d6f 20d71 20d74 20d7c 20d7e-20d7f 20d96 20d9c 20da7 20db2 20dc8 20de1 20e04 20e09-20e0a 20e0d-20e11 20e16 20e1d 20e4c 20e64 20e6d 20e73 20e75-20e7b 20e8c 20e95-20e96 20e98 20e9d 20ea2 20eaa-20eac 20eb6 20ed7-20ed8 20edd 20ef8-20efb 20f1d 20f26 20f2d-20f2e 20f30-20f31 20f3b 20f4c 20f5f 20f64 20f8d 20f90 20fad 20fb4-20fb6 20fbc 20fdf 20fea-20fed 21014 2101d-2101e 2104f 2105c 2106f 21075-21078 2107b 21088 21096 2109d 210b4 210bf-210c1 210c7-210c9 210cf 210d3 210e4 210f4-210f6 2112f 2113b 2113d 21145 21148 2114f 21180 21187 211d9 21201 2123c-2123d 2124f 21255 21274 2127b-2127c 212a8-212a9 212b0 212d7 212e3-212e4 212fd-212fe 21302-21305 2131b 21336 2133a 21344 21375-21376 2138e 21398 2139a 2139c 213c4-213c6 213ed 213fe 21413 21416 21424 2143f 21452 21454-21455 2146d-2146e 2148a 21497 214b6 214e8 214fd 21577 21582 21596 215d7 2160a 21613 21619 2163e 21647 21661 21692 216b4 216b8 216ba 216c0-216c2 216d3 216d5 216df 216e6-216e8 216fa-216fc 216fe 21706 2170d 21710 21726 2173a-2173c 21742 21757 2176c-21771 21773-21774 217ab 217b0-217b5 217c3 217c7 217d9-217dc 217df 217ef 217f5-217f6 217f8-217fc 21820 21828-2182a 2182d 21839-2183b 21840 21845 21852 2185e 21861-21864 21877 2187b 21883-21885 2189e-218a2 218bd-218bf 218d1 218d6-218d9 218fa 21903-21905 21910-21912 21915 2191c 21922 21927 2193b 21944 21958 2196a 2197c 21980 21983 21988 21996 219c3 219db 219f3 21a1a 21a2d 21a34 21a45 21a4b 21a63 21b44 21bc1-21bc2 21c2a 21c56 21c70 21ca2 21ca5 21cac 21d2d 21d45-21d46 21d53 21d5e 21d62 21d78 21d90 21d92 21d9c 21da1 21db6-21db7 21dba 21dca 21dd1 21de0 21deb 21df9 21e1c 21e23 21e33-21e34 21e37 21e3d 21e89 21ea4 21ea8 21ec8 21ed5 21f0f 21f15 21f1e 21f6a 21f76 21f9e 21fa1 21fe8 21ffa 22045 22049 2207e 2209a 220c7 220fc 2212a 2215b 22173 2217a-2217b 221a1 221c1 221c3 22208 22218 2227c 2231e 22321 22325 223ad 223bd 223d0 223d7 223fa 22465 22471 2248b 22491 224b0 224bc 224c1 224c9 224cc 224ed 22513 2251b 22530 22554 2258d 225af 225be 22609 2261b-2261c 2262b 22668 2267a 22696 22698 226f3-226f6 22712 22714 2271b 2271f 2272a 22775 22781 22796 227b4-227b5 227cd 22803 2285b 2285f-22860 22871 228ab 228ad 228c1 228f7 22926 22939 2294f 22967 2296b 22980 2298f 22993 22a66 22ab8 22acf 22ad5 22ae6 22ae8 22b0e 22b22 22b3f 22b43 22b46 22b4f-22b50 22b6a 22ba6 22bca 22bce 22c1d 22c24 22c26-22c27 22c38 22c4c 22c51 22c55 22c62 22c88 22c9b 22ca1 22ca9 22cb2 22cb7 22cc2 22cc6 22cc9 22d07-22d08 22d12 22d44 22d4c 22d67 22d8d 22d95 22da0 22da3-22da4 22db7 22de1 22dee 22e0d 22e36 22e42 22e78 22e8b 22eb3 22eef 22f74 22fcc 22fe3 22feb 23033 23044 2304b 23066 2307d-2307e 2308e 230b7 230bc 230da 23103 2313d 2317d 23182 231a4-231a5 231b3 231b6 231c3-231c4 231c8-231c9 231ea 231f5 231f7-231f9 2320f 23225 2322f 23231-23234 23256 2325e 23262 23281 23289-2328a 232ab-232ad 232d2 232e0-232e1 23300 2330a 2331f 23372 233b4 233cc 233d0 233d2-233d3 233d5 233da 233de-233df 233e4 233e6 233f4-233f5 233f9-233fa 233fe 23400 2343f 2344a-2344b 23450-23451 23465 2346f 23472 234e4-234e5 23519 23530 23551 2355a 23567 23594-23595 23599 2359c 235bb 235c4 235cb 235cd-235cf 235f3 23600 23617 2361a 23638-2363a 2363c 23640 23647 23659 2365f 23677 2368e 2369e 236a6 236ad 236ba 236df 236ee 23703 2370c 23716 2371c 23720 2372d 2372f 2373f 23763-23764 23766 23781 237a2 237bc 237c2 237d5-237d7 237e7 237f1 237ff 23824 2383a 2383d 239c2 23a98 23aa7 23adb 23aee 23afa 23b1a 23b5a 23c63 23c7f 23c97-23c9b 23cb5 23cb7 23cbe 23cc7-23cc9 23cfc-23d00 23d0e 23d40 23d5b 23d7e 23d8f 23db6-23dbd 23dd3 23de3 23df8-23dfa 23e06 23e11 23e23 23e2c-23e31 23e39 23e88-23e8b 23eb9 23ebf 23ed7 23ef7-23efc 23f35 23f41 23f4a 23f61 23f7e-23f82 23f8f 23fb4 23fb7 23fc0 23fc5 23feb-23ff0 24011 24039-2403d 2404b 24057 24085 2408b-2408d 24091 24096 240c9 240e1 240ec 24103-24104 2410f 24119 2413f-24140 24144 2414e 24155-24157 2415c 2415f 24161 24177 2417a 241a3-241a5 241ac 241b5 241c6 241cd 241e2 241fc 241fe 2421b 2424b 24256 24259 24276-24278 24284 24293 24295 242a5 242bf 242c1 242c9-242ca 242ee 242fa 2430d 2431a 24334 24348 24362-24365 2438c 24396 2439c 243bc-243bd 243c1 243d0 243e9-243ea 243f2 243f8 24404 24435-24436 2445a-2445b 24473 24487-24488 244b9 244bc 244ce 244d3 244d6 24505 24521 24578 245c8 24618 24629-2462a 24665 24674 24697 246a5 246d4 24706 24725 2472f 2478f 247e0 247f1 24812 24823 24882 24896 248e9 248f0-248f3 248fb 248ff-24901 2490c 24916-24917 24919 2492f 24933-24934 2493e-24943 24962-24963 24974-24976 2497b 2497f 24982 24988-2498f 24994 249a4 249a7 249a9 249ab-249ad 249b7-249bb 249c5 249d0 249da-249db 249de-249df 249e3 249e5 249ec-249ed 249f6-249f9 249fb 24a0e 24a12-24a13 24a15 24a21-24a2a 24a3e 24a42 24a45 24a4a 24a4d-24a51 24a5d 24a65-24a67 24a71 24a77-24a7a 24a7d 24a8c 24a93-24a96 24aa4-24aa7 24ab1-24ab3 24aba-24abc 24ac0 24ac7 24ac9-24aca 24ad1 24adf 24ae2 24ae9 24b0f 24b56 24b6e-24b6f 24bf5 24c09 24c16 24c9e-24c9f 24cc9 24cd9 24d06 24d13-24d14 24db8 24dea-24deb 24e04 24e0e 24e37 24e3b 24e50 24e6a 24e8b 24ea5 24ea7 24f0e 24f5c 24f82 24f86 24f97 24f9a 24fa9 24fb8 24fc2 24ff2 2502c 2504a 25052 25055 2509d 25122 2512b 25148 2517d-2517e 251a9 251cd 251e3 251e5-251e7 2521e 25220-25221 2524c 25250 25299 252c7 252d8 2530e 25311 25313 25419 25425 2542e-25430 25446 2546c 2546e 2548e 2549a 254d9 2550e 25531-25532 25535 2553f 2555b-2555e 25562 25565-25566 25581 25584 2558f 255a7-255a8 255b9 255d5 255db 255e0 25605 25635 25651 2567f 25683 25695 256e3 256f6 25706 2571d 25725 2573d 25771-25772 257a9 257b4 257c7 257df-257e1 25857 2585d 25872 25874 258c8 258de 258e1 25903 25946 25956 259ac 259c4 259cc 259d4 25a54 25a95 25a9c 25aae-25aaf 25ad7 25ae3-25ae4 25ae9 25af1 25b74 25b89 25bb2-25bb4 25bc6 25be4 25be8 25c01 25c06 25c21 25c4a-25c4b 25c64-25c65 25c91 25ca4 25cc0-25cc1 25cfe 25d20 25d30 25d43 25d99 25da1 25db9 25e0e 25e2e 25e49 25e56 25e62 25e65 25e81-25e83 25ea6 25ebc 25ec2 25ed7-25ed8 25ee8 25f1a 25f23 25f4b 25f5c 25fd4 25fe0-25fe2 25ffb 2600c 26017 26021 26029 26048 26060 26064 26083 26097 260a4-260a5 260ed 26102 26121 26159-2615c 261ad-261ae 261b2 261dd 26221-26222 26258 26261 2626a-2626b 26270 26286 262d0 26335 2634b-2634c 26351 263be 263f5 263f8 26402 26410-26412 2644a 26469 26484 26488-26489 2648d 26498 26512 26572 265a0 265ad 265bf 26612 26626 26676 2667e 266af-266b1 266b5 266da 266e8 266fc 26716 2671d 26741 2677c 26799 267b3-267b4 267cc 2681c 26846 2685e 2686e 26888 2688a 26893 268c7 268dd 268ea 2690e 26911 26926 26939 26951 2696f 26999 269a8 269b5 269dd 269f2 269fa 26a1e 26a2d-26a2e 26a34 26a42 26a51-26a52 26a58 26a8c 26ab7 26aff 26b05 26b0a 26b13 26b15 26b23 26b28 26b50-26b53 26b5b-26b5c 26b75 26b82 26b96-26b97 26b9d 26bb3 26bc0 26bf7 26c21 26c29 26c40-26c41 26c46 26c73 26c7e-26c82 26c9e 26ca4 26cb7-26cb8 26cbd 26cc0 26cc3 26cd1 26cdd 26d22-26d2a 26d51 26d74 26da0-26da7 26dae 26ddc 26dea-26deb 26df0 26e00 26e05 26e07 26e12 26e40 26e42-26e45 26e65 26e6e 26e72 26e77 26e84 26e88 26e8b 26e99 26ed0-26ed7 26f26 26f73-26f74 26f94 26f9f 26fa1 26fbe 26fde-26fdf 26ff6-26ff8 2700e 2704b 27052-27053 27088 270ad-270af 270cd 270d2 270f4 270f8 27109 2710c-2710d 27126-27127 27139 27164-27165 27175 271cd 2721b 27267 27280 27285 2728b 272b2 272b6 272e6 27352 2739a 273da-273db 273fe-273ff 27410 27422 27449 27450 27484 27486 27574 275a3 275e0 275e4 275fd-275fe 27607 2760c 27614-27615 27631-27632 27639 27655-27657 27684 27693-27694 2770e-2770f 27723 27735-27736 27741 27752 2775e 27784-27785 277cc 27858 27870 2789d 278b2 278c8 27924 27967 2797a 27985 279a0 279b4 279dd 279fd 27a0a 27a0e 27a3e 27a53 27a59 27a79 27a84 27abd-27abe 27af4 27b06 27b0b 27b18 27b38-27b3a 27b48 27b65 27bb3 27bbe 27bc7 27bef 27bf4 27c12 27c3c 27c6c 27cb1 27cb8 27cc5 27d2f 27d53-27d54 27d66 27d73 27d84 27d8f 27d98 27da0 27dbd 27ddc 27e10 27e4d 27e4f 27f2e 27fb7 27ff9 28002 28009 2801e 28023-28024 28048 28083 2808a 28090 280bb 280bd-280be 280e8-280e9 280f4 2812e 2814f 2815d 2816f 28189 281af 281bc 28207 28218 2821a 28256 28277 2827c 28282 2829b 282cd 282e2 282f3 28306 28318 2832f 2833a 28365 2836d 2837d 2838a 283cd 28408 2840c 28412 28455 28468 2846c 28473 28482 28501 2853c-2853d 2856b-2856c 285c8-285c9 285e8 285f4 28600 2860b 28625 2863b 28678 28695 286aa-286ab 286b2 286bc 286d7-286d8 286e6 286fa 2870f 28713 287e0 28804 2882b 2890d 28933 28946 28948-28949 28956 28964 28968 2896b-2896d 2897e 28987-28989 289a8 289aa-289ab 289b8 289ba-289bc 289c0 289dc 289de 289e1 289e3-289e4 289e7-289e8 289f9-289fc 28a0f 28a16 28a1e 28a25 28a29 28a32 28a36 28a43-28a4b 28a59-28a5a 28a71 28a81-28a83 28a99-28a9c 28ac0 28ac6 28acb-28ace 28add-28ae5 28aea 28afc 28b0c 28b13 28b21-28b22 28b2b-28b2d 28b2f 28b46 28b49 28b4c 28b4e 28b50 28b63-28b66 28b6c 28b8f 28b99 28b9c-28b9d 28bb9 28bc1-28bc2 28bc5 28bd4 28bd7 28bd9-28bda 28be7-28bec 28bef 28bf5 28bff 28c03 28c09 28c1c-28c1d 28c23 28c26 28c2b 28c30 28c39 28c3b 28c47 28c4f 28c51 28c54 28cca 28ccd 28cd2 28cdd 28d10 28d34 28d71 28d99 28db9 28dfb 28e0f 28e17 28e1f 28e36 28e39 28e65-28e66 28e89 28e97 28e99 28eac 28eb2-28eb3 28ed9 28ee7 28eeb 28ef6 28f32 28fc5 28ff8 29079 29088 2908b 29093 290af-290b1 290c0 290e4-290e5 290ec-290ed 2910d 29110 2913c 2914d 2915b 2915e 29170 2919c 291a8 291d5 291eb 292a0 292b1 2941d 29420 29433 2943f 29448 29490 294d0 294d9-294da 294e5 294e7 2959e 295b0 295b8 295cf 295d7 295e9 295f4 2967f 296f0 29719 29720 29732 29750 297d4 29810 29857 298a4 298c6 298d1 298ea 298f1 298fa 29903 29905 2992f 29945 29947-29949 2995d 2996a 2999d 299c3 299c9 29a28 29a4d 29a72 29b05 29b0e 29bd5 29c73 29cad 29d3e 29d4b 29d5a 29d7c 29d98 29d9b 29ddb 29df6 29e06 29e15 29e2d 29e3d 29e49 29e68 29e8a 29eac 29eb0 29ec3-29ec4 29edb 29ee9 29ef8 29f23 29f30 29f7e 29f83 29f8c 29fb7 29fce 29fd7 29fde 2a014 2a01a 2a02f 2a082 2a087 2a0b9 2a0e1 2a0ed 2a0f3 2a0f8-2a0f9 2a0fe 2a107 2a123 2a133-2a134 2a150 2a190 2a192-2a193 2a1ab 2a1b4-2a1b5 2a1df 2a1f5 2a220 2a233 2a293 2a29f 2a2b2 2a2b4 2a2b6 2a2ba 2a2bd 2a2df 2a2ff 2a351 2a38c 2a3a9 2a3ed 2a434 2a437 2a45b 2a5c6 2a5cb 2a5f1 2a601-2a602 2a61a 2a632 2a64a 2a65b 2a6a9 2a6b2 2a7dd 2a8fb 2a917 2a9e6 2aa30 2aa36 2aa58 2adff 2afa2 2b127-2b128 2b137-2b138 2b1ed 2b300 2b363 2b36f 2b372 2b37d 2b404 2b410 2b413 2b461 2b4e7 2b4ef 2b4f6 2b4f9 2b50d-2b50e 2b536 2b5ae-2b5af 2b5b3 2b5e7 2b5f4 2b61c-2b61d 2b626-2b628 2b62a 2b62c 2b695-2b696 2b6ad 2b6ed 2b746 2b751 2b753 2b75a 2b75c 2b765 2b776-2b777 2b77c 2b782 2b789 2b78b 2b78e 2b794 2b7a9 2b7ac 2b7af 2b7bd 2b7c5 2b7c9 2b7cf 2b7d2 2b7d8 2b7e6 2b7f0 2b7f9 2b7fc 2b806 2b80a 2b80d 2b817 2b81a 2b81c 2b8b8 2bac7 2bb5f 2bb62 2bb7c 2bb83 2bc1b 2bd77 2bd87 2bdf7 2be29 2c029-2c02a 2c0a9 2c0ca 2c1d5 2c1d9 2c1f9 2c27c 2c288 2c2a4 2c317 2c35b 2c361 2c364 2c488 2c494 2c497 2c542 2c613 2c618 2c621 2c629 2c62b-2c62d 2c62f 2c642 2c64a-2c64b 2c72c 2c72f 2c79f 2c7c1 2c7fd 2c8d9 2c8de 2c8e1 2c8f3 2c907 2c90a 2c91d 2ca02 2ca0e 2ca7d 2caa9 2cb29 2cb2d-2cb2e 2cb31 2cb38-2cb39 2cb3b 2cb3f 2cb41 2cb4a 2cb4e 2cb5a-2cb5b 2cb64 2cb69 2cb6c 2cb6f 2cb73 2cb76 2cb78 2cb7c 2cbb1 2cbbf-2cbc0 2cbce 2cc56 2cc5f 2ccf5-2ccf6 2ccfd 2ccff 2cd02-2cd03 2cd0a 2cd8b 2cd8d 2cd8f-2cd90 2cd9f-2cda0 2cda8 2cdad-2cdae 2cdd5 2ce18 2ce1a 2ce23 2ce26 2ce2a 2ce7c 2ce88 2ce93 2f804 2f80f 2f815 2f818 2f81a 2f822 2f825 2f828 2f82c 2f833 2f83b 2f83f-2f840 2f846 2f852 2f862 2f86d 2f873 2f877-2f878 2f884 2f894 2f899-2f89a 2f8a6 2f8ac 2f8b2 2f8b6 2f8cd 2f8d3 2f8db-2f8dc 2f8e1 2f8e5 2f8ea 2f8ed 2f8fc 2f903 2f90b 2f90f 2f91a 2f920-2f921 2f945 2f947 2f96c 2f994-2f995 2f9b2 2f9bc 2f9d0 2f9d4 2f9de-2f9df 2f9f4Hebr,Hebrew,144,0000 000d 0020 00a0 0591-05c7 05d0-05ea 05f0-05f4 200c-200f 20aa 25cc fb1d-fb36 fb38-fb3c fb3e fb40-fb41 fb43-fb44 fb46-fb4f feffItal,Old Italic,40,0000 000d 0020 00a0 feff 10300-1031e 10320-10323Java,Javanese,100,0000 000d 0020 00a0 200b-200d 25cc a980-a9cd a9cf-a9d9 a9de-a9df feffJpan,Japanese,44683,0000-007e 00a0-0103 0110-0113 011a-011b 0128-012b 0143-0144 0147-0148 014c-014f 0152-0153 0168-016d 0192 01a0-01a1 01af-01b0 01cd-01dc 01f8-01f9 0251 0261 02c7 02c9-02cb 02d9 0391-03a1 03a3-03a9 03b1-03c1 03c3-03c9 0401 0410-044f 0451 1100-11ff 1e3e-1e3f 1ea0-1ef9 2002-2003 2010-2016 2018-201a 201c-201e 2020-2022 2025-2027 2030 2032-2033 2035 2039-203c 2042 2047-2049 2051 20a9 20ab-20ac 20dd-20de 2100 2103 2105 2109-210a 210f 2113 2116 2121-2122 2126-2127 212b 212e 2135 213b 2160-216b 2170-217b 2190-2199 21b8-21b9 21c4-21c6 21cb-21cc 21d0 21d2 21d4 21e6-21e9 21f5 2200 2202-2203 2205-220b 220f 2211-2213 2215 221a 221d-2220 2223 2225-222e 2234-2237 223d 2243 2245 2248 224c 2252 2260-2262 2264-2267 226a-226b 226e-226f 2272-2273 2276-2277 2282-2287 228a-228b 2295-2299 22a0 22a5 22bf 22da-22db 22ef 2305-2307 2312 2318 2329-232a 23b0-23b1 23be-23cc 23ce 23da-23db 2423 2460-25ab 25b1-25b3 25b6-25b7 25bc-25bd 25c0-25c1 25c6-25cc 25ce-25d3 25e2-25e6 25ef 2600-2603 2605-2606 2609 260e-260f 2616-2617 261c-261f 262f 2640-2642 2660-266f 2672-267d 26a0 26bd-26be 2702 2713 271a 273d 273f-2740 2756 2776-277f 27a1 2934-2935 29bf 29fa-29fb 2b05-2b07 2b1a 2e3a-2e3b 2e80-2e99 2e9b-2ef3 2f00-2fd5 2ff0-2ffb 3000-303f 3041-3096 3099-30ff 3105-312d 3131-318e 3190-31ba 31c0-31e3 31f0-321e 3220-32fe 3300-332b 332d-4db5 4e00-9fd0 a960-a97c ac00-d7a3 d7b0-d7c6 d7cb-d7fb f900-fa6d fb00-fb04 fe10-fe19 fe30-fe52 fe54-fe66 fe68-fe6b ff01-ffbe ffc2-ffc7 ffca-ffcf ffd2-ffd7 ffda-ffdc ffe0-ffe6 ffe8-ffee 1f100-1f10a 1f110-1f12e 1f130-1f16b 1f170-1f19a 1f200-1f202 1f210-1f23a 1f240-1f248 1f250-1f251 2000b 20021 2003e 20046 2004e 20068 20086-20087 20089-2008a 20094 200a2 200a4 200b0 200ca-200cd 200d1 200ee 200f5 2010c 2010e 20118 20158 20164 201a2 201a4 201a9 201ab 201c1 201d4 201f2 20204 2020c 20213-20214 20239 2025b 20274-20275 20299 2029e 202a0 202b7 202bf-202c0 202e5 2030a 20325 2032b 20341 20345-20347 20371 2037e-20381 203a0 203a7 203b5 203c9 203cb 203f5 203f9 203fc 20413-20414 2041f 2044a 20465 20487 2048e 20491-20492 204a3 204d7 204fc 204fe 20509 2053f 20547 2058e 205a5 205b1 205b3 205c3 205ca 205d0 205d5-205d6 205df-205e0 205eb 20611 20615 20619-2061a 20628 20630 20656 20676 206ec 2070e 20731 2074f 20779 207c8 20807 2082c 2083a 20873 208b9 208d5 2090e 20916 20923 20954 20979 2097c 20984 2099d 209e7 20a11 20a50 20a64 20a6f 20a8a 20ab4 20ac2 20acd 20ad3 20b0d 20b1d 20b8f 20b9f 20ba8-20ba9 20bb7 20bbf 20bc6 20bcb 20be2 20beb 20bfb 20bff 20c0b 20c0d 20c20 20c34 20c3a-20c3b 20c41-20c43 20c53 20c65 20c77-20c78 20c7c 20c8d 20c96 20c9c 20cb5 20cb8 20ccf-20cd0 20cd3-20cd6 20cdd 20ced 20cff 20d15 20d28 20d31-20d32 20d45-20d49 20d4c-20d4e 20d58 20d6f 20d71 20d74 20d7c 20d7e-20d7f 20d96 20d9c 20da7 20db2 20dc8 20de1 20e04 20e09-20e0a 20e0d-20e11 20e16 20e1d 20e4c 20e64 20e6d 20e73 20e75-20e7b 20e8c 20e95-20e96 20e98 20e9d 20ea2 20eaa-20eac 20eb6 20ed7-20ed8 20edd 20ef8-20efb 20f1d 20f26 20f2d-20f2e 20f30-20f31 20f3b 20f4c 20f5f 20f64 20f8d 20f90 20fad 20fb4-20fb6 20fbc 20fdf 20fea-20fed 21014 2101d-2101e 2104f 2105c 2106f 21075-21078 2107b 21088 21096 2109d 210b4 210bf-210c1 210c7-210c9 210cf 210d3 210e4 210f4-210f6 2112f 2113b 2113d 21145 21148 2114f 21180 21187 211d9 21201 2123c-2123d 2124f 21255 21274 2127b-2127c 212a8-212a9 212b0 212d7 212e3-212e4 212fd-212fe 21302-21305 2131b 21336 2133a 21344 21375-21376 2138e 21398 2139a 2139c 213c4-213c6 213ed 213fe 21413 21416 21424 2143f 21452 21454-21455 2146d-2146e 2148a 21497 214b6 214e8 214fd 21577 21582 21596 215d7 2160a 21613 21619 2163e 21647 21661 21692 216b4 216b8 216ba 216c0-216c2 216d3 216d5 216df 216e6-216e8 216fa-216fc 216fe 21706 2170d 21710 21726 2173a-2173c 21742 21757 2176c-21771 21773-21774 217ab 217b0-217b5 217c3 217c7 217d9-217dc 217df 217ef 217f5-217f6 217f8-217fc 21820 21828-2182a 2182d 21839-2183b 21840 21845 21852 2185e 21861-21864 21877 2187b 21883-21885 2189e-218a2 218bd-218bf 218d1 218d6-218d9 218fa 21903-21905 21910-21912 21915 2191c 21922 21927 2193b 21944 21958 2196a 2197c 21980 21983 21988 21996 219c3 219db 219f3 21a1a 21a2d 21a34 21a45 21a4b 21a63 21b44 21bc1-21bc2 21c2a 21c56 21c70 21ca2 21ca5 21cac 21d2d 21d45-21d46 21d53 21d5e 21d62 21d78 21d90 21d92 21d9c 21da1 21db6-21db7 21dba 21dca 21dd1 21de0 21deb 21df9 21e1c 21e23 21e33-21e34 21e37 21e3d 21e89 21ea4 21ea8 21ec8 21ed5 21f0f 21f15 21f1e 21f6a 21f76 21f9e 21fa1 21fe8 21ffa 22045 22049 2207e 2209a 220c7 220fc 2212a 2215b 22173 2217a-2217b 221a1 221c1 221c3 22208 22218 2227c 2231e 22321 22325 223ad 223bd 223d0 223d7 223fa 22465 22471 2248b 22491 224b0 224bc 224c1 224c9 224cc 224ed 22513 2251b 22530 22554 2258d 225af 225be 22609 2261b-2261c 2262b 22668 2267a 22696 22698 226f3-226f6 22712 22714 2271b 2271f 2272a 22775 22781 22796 227b4-227b5 227cd 22803 2285b 2285f-22860 22871 228ab 228ad 228c1 228f7 22926 22939 2294f 22967 2296b 22980 2298f 22993 22a66 22ab8 22acf 22ad5 22ae6 22ae8 22b0e 22b22 22b3f 22b43 22b46 22b4f-22b50 22b6a 22ba6 22bca 22bce 22c1d 22c24 22c26-22c27 22c38 22c4c 22c51 22c55 22c62 22c88 22c9b 22ca1 22ca9 22cb2 22cb7 22cc2 22cc6 22cc9 22d07-22d08 22d12 22d44 22d4c 22d67 22d8d 22d95 22da0 22da3-22da4 22db7 22de1 22dee 22e0d 22e36 22e42 22e78 22e8b 22eb3 22eef 22f74 22fcc 22fe3 22feb 23033 23044 2304b 23066 2307d-2307e 2308e 230b7 230bc 230da 23103 2313d 2317d 23182 231a4-231a5 231b3 231b6 231c3-231c4 231c8-231c9 231ea 231f5 231f7-231f9 2320f 23225 2322f 23231-23234 23256 2325e 23262 23281 23289-2328a 232ab-232ad 232d2 232e0-232e1 23300 2330a 2331f 23372 233b4 233cc 233d0 233d2-233d3 233d5 233da 233de-233df 233e4 233e6 233f4-233f5 233f9-233fa 233fe 23400 2343f 2344a-2344b 23450-23451 23465 2346f 23472 234e4-234e5 23519 23530 23551 2355a 23567 23594-23595 23599 2359c 235bb 235c4 235cb 235cd-235cf 235f3 23600 23617 2361a 23638-2363a 2363c 23640 23647 23659 2365f 23677 2368e 2369e 236a6 236ad 236ba 236df 236ee 23703 2370c 23716 2371c 23720 2372d 2372f 2373f 23763-23764 23766 23781 237a2 237bc 237c2 237d5-237d7 237e7 237f1 237ff 23824 2383a 2383d 239c2 23a98 23aa7 23adb 23aee 23afa 23b1a 23b5a 23c63 23c7f 23c97-23c9b 23cb5 23cb7 23cbe 23cc7-23cc9 23cfc-23d00 23d0e 23d40 23d5b 23d7e 23d8f 23db6-23dbd 23dd3 23de3 23df8-23dfa 23e06 23e11 23e23 23e2c-23e31 23e39 23e88-23e8b 23eb9 23ebf 23ed7 23ef7-23efc 23f35 23f41 23f4a 23f61 23f7e-23f82 23f8f 23fb4 23fb7 23fc0 23fc5 23feb-23ff0 24011 24039-2403d 2404b 24057 24085 2408b-2408d 24091 24096 240c9 240e1 240ec 24103-24104 2410f 24119 2413f-24140 24144 2414e 24155-24157 2415c 2415f 24161 24177 2417a 241a3-241a5 241ac 241b5 241c6 241cd 241e2 241fc 241fe 2421b 2424b 24256 24259 24276-24278 24284 24293 24295 242a5 242bf 242c1 242c9-242ca 242ee 242fa 2430d 2431a 24334 24348 24362-24365 2438c 24396 2439c 243bc-243bd 243c1 243d0 243e9-243ea 243f2 243f8 24404 24435-24436 2445a-2445b 24473 24487-24488 244b9 244bc 244ce 244d3 244d6 24505 24521 24578 245c8 24618 24629-2462a 24665 24674 24697 246a5 246d4 24706 24725 2472f 2478f 247e0 247f1 24812 24823 24882 24896 248e9 248f0-248f3 248fb 248ff-24901 2490c 24916-24917 24919 2492f 24933-24934 2493e-24943 24962-24963 24974-24976 2497b 2497f 24982 24988-2498f 24994 249a4 249a7 249a9 249ab-249ad 249b7-249bb 249c5 249d0 249da-249db 249de-249df 249e3 249e5 249ec-249ed 249f6-249f9 249fb 24a0e 24a12-24a13 24a15 24a21-24a2a 24a3e 24a42 24a45 24a4a 24a4d-24a51 24a5d 24a65-24a67 24a71 24a77-24a7a 24a7d 24a8c 24a93-24a96 24aa4-24aa7 24ab1-24ab3 24aba-24abc 24ac0 24ac7 24ac9-24aca 24ad1 24adf 24ae2 24ae9 24b0f 24b56 24b6e-24b6f 24bf5 24c09 24c16 24c9e-24c9f 24cc9 24cd9 24d06 24d13-24d14 24db8 24dea-24deb 24e04 24e0e 24e37 24e3b 24e50 24e6a 24e8b 24ea5 24ea7 24f0e 24f5c 24f82 24f86 24f97 24f9a 24fa9 24fb8 24fc2 24ff2 2502c 2504a 25052 25055 2509d 25122 2512b 25148 2517d-2517e 251a9 251cd 251e3 251e5-251e7 2521e 25220-25221 2524c 25250 25299 252c7 252d8 2530e 25311 25313 25419 25425 2542e-25430 25446 2546c 2546e 2548e 2549a 254d9 2550e 25531-25532 25535 2553f 2555b-2555e 25562 25565-25566 25581 25584 2558f 255a7-255a8 255b9 255d5 255db 255e0 25605 25635 25651 2567f 25683 25695 256e3 256f6 25706 2571d 25725 2573d 25771-25772 257a9 257b4 257c7 257df-257e1 25857 2585d 25872 25874 258c8 258de 258e1 25903 25946 25956 259ac 259c4 259cc 259d4 25a54 25a95 25a9c 25aae-25aaf 25ad7 25ae3-25ae4 25ae9 25af1 25b74 25b89 25bb2-25bb4 25bc6 25be4 25be8 25c01 25c06 25c21 25c4a-25c4b 25c64-25c65 25c91 25ca4 25cc0-25cc1 25cfe 25d20 25d30 25d43 25d99 25da1 25db9 25e0e 25e2e 25e49 25e56 25e62 25e65 25e81-25e83 25ea6 25ebc 25ec2 25ed7-25ed8 25ee8 25f1a 25f23 25f4b 25f5c 25fd4 25fe0-25fe2 25ffb 2600c 26017 26021 26029 26048 26060 26064 26083 26097 260a4-260a5 260ed 26102 26121 26159-2615c 261ad-261ae 261b2 261dd 26221-26222 26258 26261 2626a-2626b 26270 26286 262d0 26335 2634b-2634c 26351 263be 263f5 263f8 26402 26410-26412 2644a 26469 26484 26488-26489 2648d 26498 26512 26572 265a0 265ad 265bf 26612 26626 26676 2667e 266af-266b1 266b5 266da 266e8 266fc 26716 2671d 26741 2677c 26799 267b3-267b4 267cc 2681c 26846 2685e 2686e 26888 2688a 26893 268c7 268dd 268ea 2690e 26911 26926 26939 26951 2696f 26999 269a8 269b5 269dd 269f2 269fa 26a1e 26a2d-26a2e 26a34 26a42 26a51-26a52 26a58 26a8c 26ab7 26aff 26b05 26b0a 26b13 26b15 26b23 26b28 26b50-26b53 26b5b-26b5c 26b75 26b82 26b96-26b97 26b9d 26bb3 26bc0 26bf7 26c21 26c29 26c40-26c41 26c46 26c73 26c7e-26c82 26c9e 26ca4 26cb7-26cb8 26cbd 26cc0 26cc3 26cd1 26cdd 26d22-26d2a 26d51 26d74 26da0-26da7 26dae 26ddc 26dea-26deb 26df0 26e00 26e05 26e07 26e12 26e40 26e42-26e45 26e65 26e6e 26e72 26e77 26e84 26e88 26e8b 26e99 26ed0-26ed7 26f26 26f73-26f74 26f94 26f9f 26fa1 26fbe 26fde-26fdf 26ff6-26ff8 2700e 2704b 27052-27053 27088 270ad-270af 270cd 270d2 270f4 270f8 27109 2710c-2710d 27126-27127 27139 27164-27165 27175 271cd 2721b 27267 27280 27285 2728b 272b2 272b6 272e6 27352 2739a 273da-273db 273fe-273ff 27410 27422 27449 27450 27484 27486 27574 275a3 275e0 275e4 275fd-275fe 27607 2760c 27614-27615 27631-27632 27639 27655-27657 27684 27693-27694 2770e-2770f 27723 27735-27736 27741 27752 2775e 27784-27785 277cc 27858 27870 2789d 278b2 278c8 27924 27967 2797a 27985 279a0 279b4 279dd 279fd 27a0a 27a0e 27a3e 27a53 27a59 27a79 27a84 27abd-27abe 27af4 27b06 27b0b 27b18 27b38-27b3a 27b48 27b65 27bb3 27bbe 27bc7 27bef 27bf4 27c12 27c3c 27c6c 27cb1 27cb8 27cc5 27d2f 27d53-27d54 27d66 27d73 27d84 27d8f 27d98 27da0 27dbd 27ddc 27e10 27e4d 27e4f 27f2e 27fb7 27ff9 28002 28009 2801e 28023-28024 28048 28083 2808a 28090 280bb 280bd-280be 280e8-280e9 280f4 2812e 2814f 2815d 2816f 28189 281af 281bc 28207 28218 2821a 28256 28277 2827c 28282 2829b 282cd 282e2 282f3 28306 28318 2832f 2833a 28365 2836d 2837d 2838a 283cd 28408 2840c 28412 28455 28468 2846c 28473 28482 28501 2853c-2853d 2856b-2856c 285c8-285c9 285e8 285f4 28600 2860b 28625 2863b 28678 28695 286aa-286ab 286b2 286bc 286d7-286d8 286e6 286fa 2870f 28713 287e0 28804 2882b 2890d 28933 28946 28948-28949 28956 28964 28968 2896b-2896d 2897e 28987-28989 289a8 289aa-289ab 289b8 289ba-289bc 289c0 289dc 289de 289e1 289e3-289e4 289e7-289e8 289f9-289fc 28a0f 28a16 28a1e 28a25 28a29 28a32 28a36 28a43-28a4b 28a59-28a5a 28a71 28a81-28a83 28a99-28a9c 28ac0 28ac6 28acb-28ace 28add-28ae5 28aea 28afc 28b0c 28b13 28b21-28b22 28b2b-28b2d 28b2f 28b46 28b49 28b4c 28b4e 28b50 28b63-28b66 28b6c 28b8f 28b99 28b9c-28b9d 28bb9 28bc1-28bc2 28bc5 28bd4 28bd7 28bd9-28bda 28be7-28bec 28bef 28bf5 28bff 28c03 28c09 28c1c-28c1d 28c23 28c26 28c2b 28c30 28c39 28c3b 28c47 28c4f 28c51 28c54 28cca 28ccd 28cd2 28cdd 28d10 28d34 28d71 28d99 28db9 28dfb 28e0f 28e17 28e1f 28e36 28e39 28e65-28e66 28e89 28e97 28e99 28eac 28eb2-28eb3 28ed9 28ee7 28eeb 28ef6 28f32 28fc5 28ff8 29079 29088 2908b 29093 290af-290b1 290c0 290e4-290e5 290ec-290ed 2910d 29110 2913c 2914d 2915b 2915e 29170 2919c 291a8 291d5 291eb 292a0 292b1 2941d 29420 29433 2943f 29448 29490 294d0 294d9-294da 294e5 294e7 2959e 295b0 295b8 295cf 295d7 295e9 295f4 2967f 296f0 29719 29720 29732 29750 297d4 29810 29857 298a4 298c6 298d1 298ea 298f1 298fa 29903 29905 2992f 29945 29947-29949 2995d 2996a 2999d 299c3 299c9 29a28 29a4d 29a72 29b05 29b0e 29bd5 29c73 29cad 29d3e 29d4b 29d5a 29d7c 29d98 29d9b 29ddb 29df6 29e06 29e15 29e2d 29e3d 29e49 29e68 29e8a 29eac 29eb0 29ec3-29ec4 29edb 29ee9 29ef8 29f23 29f30 29f7e 29f83 29f8c 29fb7 29fce 29fd7 29fde 2a014 2a01a 2a02f 2a082 2a087 2a0b9 2a0e1 2a0ed 2a0f3 2a0f8-2a0f9 2a0fe 2a107 2a123 2a133-2a134 2a150 2a190 2a192-2a193 2a1ab 2a1b4-2a1b5 2a1df 2a1f5 2a220 2a233 2a293 2a29f 2a2b2 2a2b4 2a2b6 2a2ba 2a2bd 2a2df 2a2ff 2a351 2a38c 2a3a9 2a3ed 2a434 2a437 2a45b 2a5c6 2a5cb 2a5f1 2a601-2a602 2a61a 2a632 2a64a 2a65b 2a6a9 2a6b2 2a7dd 2a8fb 2a917 2a9e6 2aa30 2aa36 2aa58 2adff 2afa2 2b127-2b128 2b137-2b138 2b1ed 2b300 2b363 2b36f 2b372 2b37d 2b404 2b410 2b413 2b461 2b4e7 2b4ef 2b4f6 2b4f9 2b50d-2b50e 2b536 2b5ae-2b5af 2b5b3 2b5e7 2b5f4 2b61c-2b61d 2b626-2b628 2b62a 2b62c 2b695-2b696 2b6ad 2b6ed 2b746 2b751 2b753 2b75a 2b75c 2b765 2b776-2b777 2b77c 2b782 2b789 2b78b 2b78e 2b794 2b7a9 2b7ac 2b7af 2b7bd 2b7c5 2b7c9 2b7cf 2b7d2 2b7d8 2b7e6 2b7f0 2b7f9 2b7fc 2b806 2b80a 2b80d 2b817 2b81a 2b81c 2b8b8 2bac7 2bb5f 2bb62 2bb7c 2bb83 2bc1b 2bd77 2bd87 2bdf7 2be29 2c029-2c02a 2c0a9 2c0ca 2c1d5 2c1d9 2c1f9 2c27c 2c288 2c2a4 2c317 2c35b 2c361 2c364 2c488 2c494 2c497 2c542 2c613 2c618 2c621 2c629 2c62b-2c62d 2c62f 2c642 2c64a-2c64b 2c72c 2c72f 2c79f 2c7c1 2c7fd 2c8d9 2c8de 2c8e1 2c8f3 2c907 2c90a 2c91d 2ca02 2ca0e 2ca7d 2caa9 2cb29 2cb2d-2cb2e 2cb31 2cb38-2cb39 2cb3b 2cb3f 2cb41 2cb4a 2cb4e 2cb5a-2cb5b 2cb64 2cb69 2cb6c 2cb6f 2cb73 2cb76 2cb78 2cb7c 2cbb1 2cbbf-2cbc0 2cbce 2cc56 2cc5f 2ccf5-2ccf6 2ccfd 2ccff 2cd02-2cd03 2cd0a 2cd8b 2cd8d 2cd8f-2cd90 2cd9f-2cda0 2cda8 2cdad-2cdae 2cdd5 2ce18 2ce1a 2ce23 2ce26 2ce2a 2ce7c 2ce88 2ce93 2f804 2f80f 2f815 2f818 2f81a 2f822 2f825 2f828 2f82c 2f833 2f83b 2f83f-2f840 2f846 2f852 2f862 2f86d 2f873 2f877-2f878 2f884 2f894 2f899-2f89a 2f8a6 2f8ac 2f8b2 2f8b6 2f8cd 2f8d3 2f8db-2f8dc 2f8e1 2f8e5 2f8ea 2f8ed 2f8fc 2f903 2f90b 2f90f 2f91a 2f920-2f921 2f945 2f947 2f96c 2f994-2f995 2f9b2 2f9bc 2f9d0 2f9d4 2f9de-2f9df 2f9f4Kali,Kayah Li,53,0000 000d 0020 00a0 a900-a92f feffKhar,Kharoshthi,70,0000 000d 0020 00a0 feff 10a00-10a03 10a05-10a06 10a0c-10a13 10a15-10a17 10a19-10a33 10a38-10a3a 10a3f-10a47 10a50-10a58Khmr,Khmer,192,0000 000d 0020-0040 007b-007e 00ab 00ad 00bb 1780-17dd 17e0-17e9 17f0-17f9 19e0-19ff 200b-200d 25ccKnda,Kannada,148,0000 000d 0020-0023 0025 0027-003f 005b-005f 007b-007e 00a0 00ad 00d7 00f7 0964-0965 0c81-0c83 0c85-0c8c 0c8e-0c90 0c92-0ca8 0caa-0cb3 0cb5-0cb9 0cbc-0cc4 0cc6-0cc8 0cca-0ccd 0cd5-0cd6 0cde 0ce0-0ce3 0ce6-0cef 0cf1-0cf2 200b-200d 2013-2014 2018-2019 201c-201d 2026 20b9 2212 25cc feffKore,Korean,44683,0000-007e 00a0-0103 0110-0113 011a-011b 0128-012b 0143-0144 0147-0148 014c-014f 0152-0153 0168-016d 0192 01a0-01a1 01af-01b0 01cd-01dc 01f8-01f9 0251 0261 02c7 02c9-02cb 02d9 0391-03a1 03a3-03a9 03b1-03c1 03c3-03c9 0401 0410-044f 0451 1100-11ff 1e3e-1e3f 1ea0-1ef9 2002-2003 2010-2016 2018-201a 201c-201e 2020-2022 2025-2027 2030 2032-2033 2035 2039-203c 2042 2047-2049 2051 20a9 20ab-20ac 20dd-20de 2100 2103 2105 2109-210a 210f 2113 2116 2121-2122 2126-2127 212b 212e 2135 213b 2160-216b 2170-217b 2190-2199 21b8-21b9 21c4-21c6 21cb-21cc 21d0 21d2 21d4 21e6-21e9 21f5 2200 2202-2203 2205-220b 220f 2211-2213 2215 221a 221d-2220 2223 2225-222e 2234-2237 223d 2243 2245 2248 224c 2252 2260-2262 2264-2267 226a-226b 226e-226f 2272-2273 2276-2277 2282-2287 228a-228b 2295-2299 22a0 22a5 22bf 22da-22db 22ef 2305-2307 2312 2318 2329-232a 23b0-23b1 23be-23cc 23ce 23da-23db 2423 2460-25ab 25b1-25b3 25b6-25b7 25bc-25bd 25c0-25c1 25c6-25cc 25ce-25d3 25e2-25e6 25ef 2600-2603 2605-2606 2609 260e-260f 2616-2617 261c-261f 262f 2640-2642 2660-266f 2672-267d 26a0 26bd-26be 2702 2713 271a 273d 273f-2740 2756 2776-277f 27a1 2934-2935 29bf 29fa-29fb 2b05-2b07 2b1a 2e3a-2e3b 2e80-2e99 2e9b-2ef3 2f00-2fd5 2ff0-2ffb 3000-303f 3041-3096 3099-30ff 3105-312d 3131-318e 3190-31ba 31c0-31e3 31f0-321e 3220-32fe 3300-332b 332d-4db5 4e00-9fd0 a960-a97c ac00-d7a3 d7b0-d7c6 d7cb-d7fb f900-fa6d fb00-fb04 fe10-fe19 fe30-fe52 fe54-fe66 fe68-fe6b ff01-ffbe ffc2-ffc7 ffca-ffcf ffd2-ffd7 ffda-ffdc ffe0-ffe6 ffe8-ffee 1f100-1f10a 1f110-1f12e 1f130-1f16b 1f170-1f19a 1f200-1f202 1f210-1f23a 1f240-1f248 1f250-1f251 2000b 20021 2003e 20046 2004e 20068 20086-20087 20089-2008a 20094 200a2 200a4 200b0 200ca-200cd 200d1 200ee 200f5 2010c 2010e 20118 20158 20164 201a2 201a4 201a9 201ab 201c1 201d4 201f2 20204 2020c 20213-20214 20239 2025b 20274-20275 20299 2029e 202a0 202b7 202bf-202c0 202e5 2030a 20325 2032b 20341 20345-20347 20371 2037e-20381 203a0 203a7 203b5 203c9 203cb 203f5 203f9 203fc 20413-20414 2041f 2044a 20465 20487 2048e 20491-20492 204a3 204d7 204fc 204fe 20509 2053f 20547 2058e 205a5 205b1 205b3 205c3 205ca 205d0 205d5-205d6 205df-205e0 205eb 20611 20615 20619-2061a 20628 20630 20656 20676 206ec 2070e 20731 2074f 20779 207c8 20807 2082c 2083a 20873 208b9 208d5 2090e 20916 20923 20954 20979 2097c 20984 2099d 209e7 20a11 20a50 20a64 20a6f 20a8a 20ab4 20ac2 20acd 20ad3 20b0d 20b1d 20b8f 20b9f 20ba8-20ba9 20bb7 20bbf 20bc6 20bcb 20be2 20beb 20bfb 20bff 20c0b 20c0d 20c20 20c34 20c3a-20c3b 20c41-20c43 20c53 20c65 20c77-20c78 20c7c 20c8d 20c96 20c9c 20cb5 20cb8 20ccf-20cd0 20cd3-20cd6 20cdd 20ced 20cff 20d15 20d28 20d31-20d32 20d45-20d49 20d4c-20d4e 20d58 20d6f 20d71 20d74 20d7c 20d7e-20d7f 20d96 20d9c 20da7 20db2 20dc8 20de1 20e04 20e09-20e0a 20e0d-20e11 20e16 20e1d 20e4c 20e64 20e6d 20e73 20e75-20e7b 20e8c 20e95-20e96 20e98 20e9d 20ea2 20eaa-20eac 20eb6 20ed7-20ed8 20edd 20ef8-20efb 20f1d 20f26 20f2d-20f2e 20f30-20f31 20f3b 20f4c 20f5f 20f64 20f8d 20f90 20fad 20fb4-20fb6 20fbc 20fdf 20fea-20fed 21014 2101d-2101e 2104f 2105c 2106f 21075-21078 2107b 21088 21096 2109d 210b4 210bf-210c1 210c7-210c9 210cf 210d3 210e4 210f4-210f6 2112f 2113b 2113d 21145 21148 2114f 21180 21187 211d9 21201 2123c-2123d 2124f 21255 21274 2127b-2127c 212a8-212a9 212b0 212d7 212e3-212e4 212fd-212fe 21302-21305 2131b 21336 2133a 21344 21375-21376 2138e 21398 2139a 2139c 213c4-213c6 213ed 213fe 21413 21416 21424 2143f 21452 21454-21455 2146d-2146e 2148a 21497 214b6 214e8 214fd 21577 21582 21596 215d7 2160a 21613 21619 2163e 21647 21661 21692 216b4 216b8 216ba 216c0-216c2 216d3 216d5 216df 216e6-216e8 216fa-216fc 216fe 21706 2170d 21710 21726 2173a-2173c 21742 21757 2176c-21771 21773-21774 217ab 217b0-217b5 217c3 217c7 217d9-217dc 217df 217ef 217f5-217f6 217f8-217fc 21820 21828-2182a 2182d 21839-2183b 21840 21845 21852 2185e 21861-21864 21877 2187b 21883-21885 2189e-218a2 218bd-218bf 218d1 218d6-218d9 218fa 21903-21905 21910-21912 21915 2191c 21922 21927 2193b 21944 21958 2196a 2197c 21980 21983 21988 21996 219c3 219db 219f3 21a1a 21a2d 21a34 21a45 21a4b 21a63 21b44 21bc1-21bc2 21c2a 21c56 21c70 21ca2 21ca5 21cac 21d2d 21d45-21d46 21d53 21d5e 21d62 21d78 21d90 21d92 21d9c 21da1 21db6-21db7 21dba 21dca 21dd1 21de0 21deb 21df9 21e1c 21e23 21e33-21e34 21e37 21e3d 21e89 21ea4 21ea8 21ec8 21ed5 21f0f 21f15 21f1e 21f6a 21f76 21f9e 21fa1 21fe8 21ffa 22045 22049 2207e 2209a 220c7 220fc 2212a 2215b 22173 2217a-2217b 221a1 221c1 221c3 22208 22218 2227c 2231e 22321 22325 223ad 223bd 223d0 223d7 223fa 22465 22471 2248b 22491 224b0 224bc 224c1 224c9 224cc 224ed 22513 2251b 22530 22554 2258d 225af 225be 22609 2261b-2261c 2262b 22668 2267a 22696 22698 226f3-226f6 22712 22714 2271b 2271f 2272a 22775 22781 22796 227b4-227b5 227cd 22803 2285b 2285f-22860 22871 228ab 228ad 228c1 228f7 22926 22939 2294f 22967 2296b 22980 2298f 22993 22a66 22ab8 22acf 22ad5 22ae6 22ae8 22b0e 22b22 22b3f 22b43 22b46 22b4f-22b50 22b6a 22ba6 22bca 22bce 22c1d 22c24 22c26-22c27 22c38 22c4c 22c51 22c55 22c62 22c88 22c9b 22ca1 22ca9 22cb2 22cb7 22cc2 22cc6 22cc9 22d07-22d08 22d12 22d44 22d4c 22d67 22d8d 22d95 22da0 22da3-22da4 22db7 22de1 22dee 22e0d 22e36 22e42 22e78 22e8b 22eb3 22eef 22f74 22fcc 22fe3 22feb 23033 23044 2304b 23066 2307d-2307e 2308e 230b7 230bc 230da 23103 2313d 2317d 23182 231a4-231a5 231b3 231b6 231c3-231c4 231c8-231c9 231ea 231f5 231f7-231f9 2320f 23225 2322f 23231-23234 23256 2325e 23262 23281 23289-2328a 232ab-232ad 232d2 232e0-232e1 23300 2330a 2331f 23372 233b4 233cc 233d0 233d2-233d3 233d5 233da 233de-233df 233e4 233e6 233f4-233f5 233f9-233fa 233fe 23400 2343f 2344a-2344b 23450-23451 23465 2346f 23472 234e4-234e5 23519 23530 23551 2355a 23567 23594-23595 23599 2359c 235bb 235c4 235cb 235cd-235cf 235f3 23600 23617 2361a 23638-2363a 2363c 23640 23647 23659 2365f 23677 2368e 2369e 236a6 236ad 236ba 236df 236ee 23703 2370c 23716 2371c 23720 2372d 2372f 2373f 23763-23764 23766 23781 237a2 237bc 237c2 237d5-237d7 237e7 237f1 237ff 23824 2383a 2383d 239c2 23a98 23aa7 23adb 23aee 23afa 23b1a 23b5a 23c63 23c7f 23c97-23c9b 23cb5 23cb7 23cbe 23cc7-23cc9 23cfc-23d00 23d0e 23d40 23d5b 23d7e 23d8f 23db6-23dbd 23dd3 23de3 23df8-23dfa 23e06 23e11 23e23 23e2c-23e31 23e39 23e88-23e8b 23eb9 23ebf 23ed7 23ef7-23efc 23f35 23f41 23f4a 23f61 23f7e-23f82 23f8f 23fb4 23fb7 23fc0 23fc5 23feb-23ff0 24011 24039-2403d 2404b 24057 24085 2408b-2408d 24091 24096 240c9 240e1 240ec 24103-24104 2410f 24119 2413f-24140 24144 2414e 24155-24157 2415c 2415f 24161 24177 2417a 241a3-241a5 241ac 241b5 241c6 241cd 241e2 241fc 241fe 2421b 2424b 24256 24259 24276-24278 24284 24293 24295 242a5 242bf 242c1 242c9-242ca 242ee 242fa 2430d 2431a 24334 24348 24362-24365 2438c 24396 2439c 243bc-243bd 243c1 243d0 243e9-243ea 243f2 243f8 24404 24435-24436 2445a-2445b 24473 24487-24488 244b9 244bc 244ce 244d3 244d6 24505 24521 24578 245c8 24618 24629-2462a 24665 24674 24697 246a5 246d4 24706 24725 2472f 2478f 247e0 247f1 24812 24823 24882 24896 248e9 248f0-248f3 248fb 248ff-24901 2490c 24916-24917 24919 2492f 24933-24934 2493e-24943 24962-24963 24974-24976 2497b 2497f 24982 24988-2498f 24994 249a4 249a7 249a9 249ab-249ad 249b7-249bb 249c5 249d0 249da-249db 249de-249df 249e3 249e5 249ec-249ed 249f6-249f9 249fb 24a0e 24a12-24a13 24a15 24a21-24a2a 24a3e 24a42 24a45 24a4a 24a4d-24a51 24a5d 24a65-24a67 24a71 24a77-24a7a 24a7d 24a8c 24a93-24a96 24aa4-24aa7 24ab1-24ab3 24aba-24abc 24ac0 24ac7 24ac9-24aca 24ad1 24adf 24ae2 24ae9 24b0f 24b56 24b6e-24b6f 24bf5 24c09 24c16 24c9e-24c9f 24cc9 24cd9 24d06 24d13-24d14 24db8 24dea-24deb 24e04 24e0e 24e37 24e3b 24e50 24e6a 24e8b 24ea5 24ea7 24f0e 24f5c 24f82 24f86 24f97 24f9a 24fa9 24fb8 24fc2 24ff2 2502c 2504a 25052 25055 2509d 25122 2512b 25148 2517d-2517e 251a9 251cd 251e3 251e5-251e7 2521e 25220-25221 2524c 25250 25299 252c7 252d8 2530e 25311 25313 25419 25425 2542e-25430 25446 2546c 2546e 2548e 2549a 254d9 2550e 25531-25532 25535 2553f 2555b-2555e 25562 25565-25566 25581 25584 2558f 255a7-255a8 255b9 255d5 255db 255e0 25605 25635 25651 2567f 25683 25695 256e3 256f6 25706 2571d 25725 2573d 25771-25772 257a9 257b4 257c7 257df-257e1 25857 2585d 25872 25874 258c8 258de 258e1 25903 25946 25956 259ac 259c4 259cc 259d4 25a54 25a95 25a9c 25aae-25aaf 25ad7 25ae3-25ae4 25ae9 25af1 25b74 25b89 25bb2-25bb4 25bc6 25be4 25be8 25c01 25c06 25c21 25c4a-25c4b 25c64-25c65 25c91 25ca4 25cc0-25cc1 25cfe 25d20 25d30 25d43 25d99 25da1 25db9 25e0e 25e2e 25e49 25e56 25e62 25e65 25e81-25e83 25ea6 25ebc 25ec2 25ed7-25ed8 25ee8 25f1a 25f23 25f4b 25f5c 25fd4 25fe0-25fe2 25ffb 2600c 26017 26021 26029 26048 26060 26064 26083 26097 260a4-260a5 260ed 26102 26121 26159-2615c 261ad-261ae 261b2 261dd 26221-26222 26258 26261 2626a-2626b 26270 26286 262d0 26335 2634b-2634c 26351 263be 263f5 263f8 26402 26410-26412 2644a 26469 26484 26488-26489 2648d 26498 26512 26572 265a0 265ad 265bf 26612 26626 26676 2667e 266af-266b1 266b5 266da 266e8 266fc 26716 2671d 26741 2677c 26799 267b3-267b4 267cc 2681c 26846 2685e 2686e 26888 2688a 26893 268c7 268dd 268ea 2690e 26911 26926 26939 26951 2696f 26999 269a8 269b5 269dd 269f2 269fa 26a1e 26a2d-26a2e 26a34 26a42 26a51-26a52 26a58 26a8c 26ab7 26aff 26b05 26b0a 26b13 26b15 26b23 26b28 26b50-26b53 26b5b-26b5c 26b75 26b82 26b96-26b97 26b9d 26bb3 26bc0 26bf7 26c21 26c29 26c40-26c41 26c46 26c73 26c7e-26c82 26c9e 26ca4 26cb7-26cb8 26cbd 26cc0 26cc3 26cd1 26cdd 26d22-26d2a 26d51 26d74 26da0-26da7 26dae 26ddc 26dea-26deb 26df0 26e00 26e05 26e07 26e12 26e40 26e42-26e45 26e65 26e6e 26e72 26e77 26e84 26e88 26e8b 26e99 26ed0-26ed7 26f26 26f73-26f74 26f94 26f9f 26fa1 26fbe 26fde-26fdf 26ff6-26ff8 2700e 2704b 27052-27053 27088 270ad-270af 270cd 270d2 270f4 270f8 27109 2710c-2710d 27126-27127 27139 27164-27165 27175 271cd 2721b 27267 27280 27285 2728b 272b2 272b6 272e6 27352 2739a 273da-273db 273fe-273ff 27410 27422 27449 27450 27484 27486 27574 275a3 275e0 275e4 275fd-275fe 27607 2760c 27614-27615 27631-27632 27639 27655-27657 27684 27693-27694 2770e-2770f 27723 27735-27736 27741 27752 2775e 27784-27785 277cc 27858 27870 2789d 278b2 278c8 27924 27967 2797a 27985 279a0 279b4 279dd 279fd 27a0a 27a0e 27a3e 27a53 27a59 27a79 27a84 27abd-27abe 27af4 27b06 27b0b 27b18 27b38-27b3a 27b48 27b65 27bb3 27bbe 27bc7 27bef 27bf4 27c12 27c3c 27c6c 27cb1 27cb8 27cc5 27d2f 27d53-27d54 27d66 27d73 27d84 27d8f 27d98 27da0 27dbd 27ddc 27e10 27e4d 27e4f 27f2e 27fb7 27ff9 28002 28009 2801e 28023-28024 28048 28083 2808a 28090 280bb 280bd-280be 280e8-280e9 280f4 2812e 2814f 2815d 2816f 28189 281af 281bc 28207 28218 2821a 28256 28277 2827c 28282 2829b 282cd 282e2 282f3 28306 28318 2832f 2833a 28365 2836d 2837d 2838a 283cd 28408 2840c 28412 28455 28468 2846c 28473 28482 28501 2853c-2853d 2856b-2856c 285c8-285c9 285e8 285f4 28600 2860b 28625 2863b 28678 28695 286aa-286ab 286b2 286bc 286d7-286d8 286e6 286fa 2870f 28713 287e0 28804 2882b 2890d 28933 28946 28948-28949 28956 28964 28968 2896b-2896d 2897e 28987-28989 289a8 289aa-289ab 289b8 289ba-289bc 289c0 289dc 289de 289e1 289e3-289e4 289e7-289e8 289f9-289fc 28a0f 28a16 28a1e 28a25 28a29 28a32 28a36 28a43-28a4b 28a59-28a5a 28a71 28a81-28a83 28a99-28a9c 28ac0 28ac6 28acb-28ace 28add-28ae5 28aea 28afc 28b0c 28b13 28b21-28b22 28b2b-28b2d 28b2f 28b46 28b49 28b4c 28b4e 28b50 28b63-28b66 28b6c 28b8f 28b99 28b9c-28b9d 28bb9 28bc1-28bc2 28bc5 28bd4 28bd7 28bd9-28bda 28be7-28bec 28bef 28bf5 28bff 28c03 28c09 28c1c-28c1d 28c23 28c26 28c2b 28c30 28c39 28c3b 28c47 28c4f 28c51 28c54 28cca 28ccd 28cd2 28cdd 28d10 28d34 28d71 28d99 28db9 28dfb 28e0f 28e17 28e1f 28e36 28e39 28e65-28e66 28e89 28e97 28e99 28eac 28eb2-28eb3 28ed9 28ee7 28eeb 28ef6 28f32 28fc5 28ff8 29079 29088 2908b 29093 290af-290b1 290c0 290e4-290e5 290ec-290ed 2910d 29110 2913c 2914d 2915b 2915e 29170 2919c 291a8 291d5 291eb 292a0 292b1 2941d 29420 29433 2943f 29448 29490 294d0 294d9-294da 294e5 294e7 2959e 295b0 295b8 295cf 295d7 295e9 295f4 2967f 296f0 29719 29720 29732 29750 297d4 29810 29857 298a4 298c6 298d1 298ea 298f1 298fa 29903 29905 2992f 29945 29947-29949 2995d 2996a 2999d 299c3 299c9 29a28 29a4d 29a72 29b05 29b0e 29bd5 29c73 29cad 29d3e 29d4b 29d5a 29d7c 29d98 29d9b 29ddb 29df6 29e06 29e15 29e2d 29e3d 29e49 29e68 29e8a 29eac 29eb0 29ec3-29ec4 29edb 29ee9 29ef8 29f23 29f30 29f7e 29f83 29f8c 29fb7 29fce 29fd7 29fde 2a014 2a01a 2a02f 2a082 2a087 2a0b9 2a0e1 2a0ed 2a0f3 2a0f8-2a0f9 2a0fe 2a107 2a123 2a133-2a134 2a150 2a190 2a192-2a193 2a1ab 2a1b4-2a1b5 2a1df 2a1f5 2a220 2a233 2a293 2a29f 2a2b2 2a2b4 2a2b6 2a2ba 2a2bd 2a2df 2a2ff 2a351 2a38c 2a3a9 2a3ed 2a434 2a437 2a45b 2a5c6 2a5cb 2a5f1 2a601-2a602 2a61a 2a632 2a64a 2a65b 2a6a9 2a6b2 2a7dd 2a8fb 2a917 2a9e6 2aa30 2aa36 2aa58 2adff 2afa2 2b127-2b128 2b137-2b138 2b1ed 2b300 2b363 2b36f 2b372 2b37d 2b404 2b410 2b413 2b461 2b4e7 2b4ef 2b4f6 2b4f9 2b50d-2b50e 2b536 2b5ae-2b5af 2b5b3 2b5e7 2b5f4 2b61c-2b61d 2b626-2b628 2b62a 2b62c 2b695-2b696 2b6ad 2b6ed 2b746 2b751 2b753 2b75a 2b75c 2b765 2b776-2b777 2b77c 2b782 2b789 2b78b 2b78e 2b794 2b7a9 2b7ac 2b7af 2b7bd 2b7c5 2b7c9 2b7cf 2b7d2 2b7d8 2b7e6 2b7f0 2b7f9 2b7fc 2b806 2b80a 2b80d 2b817 2b81a 2b81c 2b8b8 2bac7 2bb5f 2bb62 2bb7c 2bb83 2bc1b 2bd77 2bd87 2bdf7 2be29 2c029-2c02a 2c0a9 2c0ca 2c1d5 2c1d9 2c1f9 2c27c 2c288 2c2a4 2c317 2c35b 2c361 2c364 2c488 2c494 2c497 2c542 2c613 2c618 2c621 2c629 2c62b-2c62d 2c62f 2c642 2c64a-2c64b 2c72c 2c72f 2c79f 2c7c1 2c7fd 2c8d9 2c8de 2c8e1 2c8f3 2c907 2c90a 2c91d 2ca02 2ca0e 2ca7d 2caa9 2cb29 2cb2d-2cb2e 2cb31 2cb38-2cb39 2cb3b 2cb3f 2cb41 2cb4a 2cb4e 2cb5a-2cb5b 2cb64 2cb69 2cb6c 2cb6f 2cb73 2cb76 2cb78 2cb7c 2cbb1 2cbbf-2cbc0 2cbce 2cc56 2cc5f 2ccf5-2ccf6 2ccfd 2ccff 2cd02-2cd03 2cd0a 2cd8b 2cd8d 2cd8f-2cd90 2cd9f-2cda0 2cda8 2cdad-2cdae 2cdd5 2ce18 2ce1a 2ce23 2ce26 2ce2a 2ce7c 2ce88 2ce93 2f804 2f80f 2f815 2f818 2f81a 2f822 2f825 2f828 2f82c 2f833 2f83b 2f83f-2f840 2f846 2f852 2f862 2f86d 2f873 2f877-2f878 2f884 2f894 2f899-2f89a 2f8a6 2f8ac 2f8b2 2f8b6 2f8cd 2f8d3 2f8db-2f8dc 2f8e1 2f8e5 2f8ea 2f8ed 2f8fc 2f903 2f90b 2f90f 2f91a 2f920-2f921 2f945 2f947 2f96c 2f994-2f995 2f9b2 2f9bc 2f9d0 2f9d4 2f9de-2f9df 2f9f4Kthi,Kaithi,101,0000 000d 0020 0030-0039 00a0 0966-096f a830-a839 feff 11080-110c1LGC,(LGC),2188,0000 000d 0020-007e 00a0-036f 0374-0375 037a-037e 0384-038a 038c 038e-03a1 03a3-03ce 03d0-0527 1d00-1dca 1dfe-1e9b 1e9e 1ea0-1ef9 1f00-1f15 1f18-1f1d 1f20-1f45 1f48-1f4d 1f50-1f57 1f59 1f5b 1f5d 1f5f-1f7d 1f80-1fb4 1fb6-1fc4 1fc6-1fd3 1fd6-1fdb 1fdd-1fef 1ff2-1ff4 1ff6-1ffe 2000-200f 2012-2022 2026 202a-2030 2032-2034 2039-203a 203c 203e 2044 205e 206a-2070 2074-2079 207f 2090-2094 20a0-20a9 20ab-20b5 20b9-20ba 20f0 2105 2113 2116-2117 2122 2126 212e 214d-214e 2153-2154 215b-215e 2184 2190-2195 21a8 2202 2206 220f 2211-2212 2215 2219-221a 221e-221f 2229 222b 2248 2260-2261 2264-2265 2302 2310 2320-2321 2500 2502 250c 2510 2514 2518 251c 2524 252c 2534 253c 2550-256c 2580 2584 2588 258c 2590-2593 25a0-25a1 25aa-25ac 25b2 25ba 25bc 25c4 25ca-25cc 25cf 25d8-25d9 25e6 263a-263c 2640 2642 2660 2663 2665-2666 266a-266b 266f 29f5 2c60-2c6d 2c71-2c77 2e17 a717-a721 a788-a78c fb01-fb04 fe20-fe23 feff fffc-fffdLana,Tai Tham,137,0000 000d 0020 00a0 1a20-1a5e 1a60-1a7c 1a7f-1a89 1a90-1a99 1aa0-1aad 200b-200d 2219 25cc feffLaoo,Lao,120,0001-000f 0020-0040 00a0 00ad 037e 0e81-0e82 0e84 0e87-0e88 0e8a 0e8d 0e94-0e97 0e99-0e9f 0ea1-0ea3 0ea5 0ea7 0eaa-0eab 0ead-0eb9 0ebb-0ebd 0ec0-0ec4 0ec6 0ec8-0ecd 0ed0-0ed9 0edc-0edf 200b 25ccLepc,Lepcha,80,0000 000d 0020 00a0 1c00-1c37 1c3b-1c49 1c4d-1c4f 25cc feffLimb,Limbu,73,0000 000d 0020 00a0 0964-0965 1900-191c 1920-192b 1930-193b 1940 1944-194f feffLinb,Linear B,273,0000 000d 0020 00a0 feff 10000-1000b 1000d-10026 10028-1003a 1003c-1003d 1003f-1004d 10050-1005d 10080-100fa 10100-10102 10107-10133 10137-1013fLisu,Lisu,55,0000 000d 0020 00a0 02bc 02cd a4d0-a4ff feffLyci,Lycian,34,0000 000d 0020 00a0 feff 10280-1029cLydi,Lydian,32,0000 000d 0020 00a0 feff 10920-10939 1093fMONO,MONO,875,0000 000d 0020-007e 00a0-017f 0192 01a0-01a1 01af-01b0 01f0 01fa-01ff 0218-021b 02bc 02c6-02c7 02c9 02d8-02dd 02f3 0300-0301 0303 0309 030f 0323 0384-038a 038c 038e-03a1 03a3-03ce 03d1-03d2 03d6 0400-0486 0488-0513 1e00-1e01 1e3e-1e3f 1e80-1e85 1ea0-1ef9 1f4d 2000-200b 2013-2015 2017-201e 2020-2022 2026 2030 2032-2033 2039-203a 203c 2044 207f 20a3-20a4 20a7 20ab-20ac 2105 2113 2116 2122 2126 212e 215b-215e 2202 2206 220f 2211-2212 221a 221e 222b 2248 2260 2264-2265 25ca fb01-fb04 feff fffc-fffdMand,Mandaic,35,0000 000d 0020 00a0 0640 0840-085b 085e feffMlym,Malayalam,163,0000 000d 0020-0023 0025 0027-003f 005b-005f 007b-007e 00a0 00ad 00d7 00f7 0307 0323 0964-0965 0d01-0d03 0d05-0d0c 0d0e-0d10 0d12-0d3a 0d3d-0d44 0d46-0d48 0d4a-0d4e 0d57 0d5f-0d63 0d66-0d75 0d79-0d7f 200b-200d 2013-2014 2018-2019 201c-201d 2026 20b9 2212 25cc feffMong,Mongolian,200,0000 000d 0020-0021 002d 003f 00a0 1800-180e 1810-1819 1820-1877 1880-18aa 200c-200d 2013-2014 202f 2048-2049 2460-2473 25cc 3001-3002 fe3d-fe3e fe41-fe44 feffMtei,Meetei Mayek,84,0000 000d 0020 00a0 aae0-aaf6 abc0-abed abf0-abf9 feffMymr,Myanmar,198,0000 000d 0020 00a0 1000-109f 200b-200d 25cc a92e aa60-aa7b feffNkoo,N'Ko,76,0000 000d 0020 00a0 060c 061b 061f 066a 07c0-07fa 200c-200f 2e1c-2e1d fd3e-fd3f feffOgam,Ogham,34,0000 000d 0020 00a0 1680-169c feffOlck,Ol Chiki,53,0000 000d 0020 00a0 1c50-1c7f feffOrkh,Old Turkic,78,0000 000d 0020 00a0 feff 10c00-10c48Orya,Oriya,151,0000 000d 0020-0023 0025 0027-003f 005b-005f 007b-007e 00a0 00ad 00d7 00f7 0964-0965 0b01-0b03 0b05-0b0c 0b0f-0b10 0b13-0b28 0b2a-0b30 0b32-0b33 0b35-0b39 0b3c-0b44 0b47-0b48 0b4b-0b4d 0b56-0b57 0b5c-0b5d 0b5f-0b63 0b66-0b77 200b-200d 2013-2014 2018-2019 201c-201d 2026 20b9 2212 25cc feffOsma,Osmanya,45,0000 000d 0020 00a0 feff 10480-1049d 104a0-104a9Phag,Phags-Pa,97,0000 000d 0020-0021 003f 00a0 1801-1803 1805 200b-200f 2025-2026 25cc 3001-3002 3007-3011 3014-301b a840-a877 fe00 feffPhli,Inscriptional Pahlavi,32,0000 000d 0020 00a0 feff 10b60-10b72 10b78-10b7fPhnx,Phoenician,34,0000 000d 0020 00a0 feff 10900-1091b 1091fPrti,Inscriptional Parthian,35,0000 000d 0020 00a0 feff 10b40-10b55 10b58-10b5fRjng,Rejang,42,0000 000d 0020 00a0 a930-a953 a95f feffRunr,Runic,86,0000 000d 0020 00a0 16a0-16f0 feffSamr,Samaritan,67,0000 000d 0020 00a0 0800-082d 0830-083e 2e31 feffSarb,Old South Arabian,37,0000 000d 0020 00a0 feff 10a60-10a7fSaur,Saurashtra,89,0000 000d 0020 00a0 200c-200d 25cc a880-a8c4 a8ce-a8d9 feffShaw,Shavian,53,0000 000d 0020 00a0 feff 10450-1047fSinh,Sinhala,140,0000 000d 0020-0023 0025 0027-003f 005b-005f 007b-007e 00a0 00ad 00d7 00f7 0964-0965 0d82-0d83 0d85-0d96 0d9a-0db1 0db3-0dbb 0dbd 0dc0-0dc6 0dca 0dcf-0dd4 0dd6 0dd8-0ddf 0df2-0df4 200b-200d 2013-2014 2018-2019 201c-201d 2026 2212 25cc feffSund,Sundanese,77,0000 000d 0020 00a0 1b80-1bbf 1cc0-1cc7 feffSylo,Syloti Nagri,68,0000 000d 0020 00a0 0964-0965 09e6-09ef 200b-200d 2010-2011 2055 25cc a800-a82b feffSyrc,Syriac,153,0000 000d 0020-0021 0028-002b 002d-002f 003a 003d 005b-005d 00a0 00ab 00b0 00bb 0303-0304 0307-0308 030a 0320 0323-0325 032d-032e 0330-0331 060c 061b 061f 0621 0640 064b-0655 0660-066c 0670 0700-070d 070f-074a 074d-074f 200c-200f 2026 2044 2212 250c 2510 25cc 2670-2671 feffTagb,Tagbanwa,25,0000 000d 0020 00a0 1735-1736 1760-176c 176e-1770 1772-1773 feffTale,Tai Le,61,0000 000d 0020 00a0 0300-0301 0307-0308 030c 1040-1049 1950-196d 1970-1974 3001-3002 3008-300b feffTalu,New Tai Lue,88,0000 000d 0020 00a0 1980-19ab 19b0-19c9 19d0-19da 19de-19df feffTaml,Tamil,139,0000 000d 0020-0023 0025 0027-003f 005b-005f 007b-007e 00a0 00ad 00b2-00b3 00d7 00f7 0964-0965 0b82-0b83 0b85-0b8a 0b8e-0b90 0b92-0b95 0b99-0b9a 0b9c 0b9e-0b9f 0ba3-0ba4 0ba8-0baa 0bae-0bb9 0bbe-0bc2 0bc6-0bc8 0bca-0bcd 0bd0 0bd7 0be6-0bfa 200b-200d 2013-2014 2018-2019 201c-201d 2026 2074 2082-2084 20b9 2212 25cc feffTavt,Tai Viet,82,0000 000d 0020 00a0 200b-200d 25cc a78c aa80-aac2 aadb-aadf feffTelu,Telugu,154,0000 000d 0020-0023 0025 0027-003f 005b-005f 007b-007e 00a0 00ad 00d7 00f7 0964-0965 0c01-0c03 0c05-0c0c 0c0e-0c10 0c12-0c28 0c2a-0c33 0c35-0c39 0c3d-0c44 0c46-0c48 0c4a-0c4d 0c55-0c56 0c58-0c59 0c60-0c63 0c66-0c6f 0c78-0c7f 200b-200d 2013-2014 2018-2019 201c-201d 2026 20b9 2212 25cc feffTfng,Tifinagh,72,0000 000d 0020 00a0 0301-0302 0304 0306-0307 0323 0331 200d 2d30-2d67 2d6f-2d70 2d7f feffTglg,Tagalog,27,0000 000d 0020 00a0 1700-170c 170e-1714 1735-1736 feffThaa,Thaana,91,0000 000d 0020-0021 0028-0029 002c 002e 003a-003b 00a0 060c 061b-061c 061f 0660-066c 0780-07b1 200b-200f 2018-2019 201c-201d 25cc fdf2 fdfd feffThai,Thai,100,0000 000d 0020 00a0 02bc 02d7 0303 0331 0e01-0e3a 0e3f-0e5b 200b-200d 25cc feffTibt,Tibetan,221,0000 000d 0020 007c 00a0 0f00-0f47 0f49-0f6c 0f71-0f97 0f99-0fbc 0fbe-0fcc 0fce-0fda 200b-200d 25cc feffUgar,Ugaritic,36,0000 000d 0020 00a0 feff 10380-1039d 1039fVaii,Vai,305,0000 000d 0020 00a0 a500-a62b feffXpeo,Old Persian,55,0000 000d 0020 00a0 feff 103a0-103c3 103c8-103d5Xsux,Cuneiform,987,0000 000d 0020 00a0 feff 12000-1236e 12400-12462 12470-12473Yiii,Yi,1251,0000 000d 0020 00a0 3001-3002 3008-3011 3014-301b 30fb a000-a48c a490-a4c6 feff ff61-ff65Zsye,Emoji,1072,0000 000d 0020 0023 002a 0030-0039 00a9 00ae 200d 203c 2049 20e3 2122 2139 2194-2199 21a9-21aa 231a-231b 2328 23cf 23e9-23f3 23f8-23fa 24c2 25aa-25ab 25b6 25c0 25fb-25fe 2600-2604 260e 2611 2614-2615 2618 261d 2620 2622-2623 2626 262a 262e-262f 2638-263a 2648-2653 2660 2663 2665-2666 2668 267b 267f 2692-2694 2696-2697 2699 269b-269c 26a0-26a1 26aa-26ab 26b0-26b1 26bd-26be 26c4-26c5 26c8 26ce-26cf 26d1 26d3-26d4 26e9-26ea 26f0-26f5 26f7-26fa 26fd 2702 2705 2708-270d 270f 2712 2714 2716 271d 2721 2728 2733-2734 2744 2747 274c 274e 2753-2755 2757 2763-2764 2795-2797 27a1 27b0 27bf 2934-2935 2b05-2b07 2b1b-2b1c 2b50 2b55 3030 303d 3297 3299 1f004 1f0cf 1f170-1f171 1f17e-1f17f 1f18e 1f191-1f19a 1f1e6-1f1ff 1f201-1f202 1f21a 1f22f 1f232-1f23a 1f250-1f251 1f300-1f321 1f324-1f393 1f396-1f397 1f399-1f39b 1f39e-1f3f0 1f3f3-1f3f5 1f3f7-1f3fa 1f400-1f4fd 1f4ff-1f53d 1f549-1f54e 1f550-1f567 1f56f-1f570 1f573-1f579 1f587 1f58a-1f58d 1f590 1f595-1f596 1f5a5 1f5a8 1f5b1-1f5b2 1f5bc 1f5c2-1f5c4 1f5d1-1f5d3 1f5dc-1f5de 1f5e1 1f5e3 1f5e8 1f5ef 1f5f3 1f5fa-1f64f 1f680-1f6c5 1f6cb-1f6d0 1f6e0-1f6e5 1f6e9 1f6eb-1f6ec 1f6f0 1f6f3 1f910-1f918 1f980-1f984 1f9c0 fe4e5-fe4ee fe82c fe82e-fe837Zsym,Symbols,5131,0000 000d 0020 00a0 0338 20a0-20ba 20bc-20be 20d0-20f0 2100-214f 2190-23f3 2400-2426 2440-244a 2460-26ff 2701-2b4c 2b50-2b59 2e00-2e3b 3008-3009 4dc0-4dff a700-a71f fe00 feff fff9-fffd 10100-10102 10107-10133 10137-1018a 10190-1019b 101d0-101fd 1d000-1d0f5 1d100-1d126 1d129-1d1dd 1d200-1d245 1d300-1d356 1d360-1d371 1d400-1d454 1d456-1d49c 1d49e-1d49f 1d4a2 1d4a5-1d4a6 1d4a9-1d4ac 1d4ae-1d4b9 1d4bb 1d4bd-1d4c3 1d4c5-1d505 1d507-1d50a 1d50d-1d514 1d516-1d51c 1d51e-1d539 1d53b-1d53e 1d540-1d544 1d546 1d54a-1d550 1d552-1d6a5 1d6a8-1d7cb 1d7ce-1d7ff 1f000-1f02b 1f030-1f093 1f0a0-1f0ae 1f0b1-1f0be 1f0c1-1f0cf 1f0d1-1f0df 1f100-1f10a 1f110-1f12e 1f130-1f16b 1f170-1f19a 1f1e6-1f202 1f210-1f23a 1f240-1f248 1f250-1f251 1f700-1f773
script,name,count,ranges
nototools-2017-09-25-tooling-for-phase3-update/nototools/data/noto_cmap_phase3.xml000066400000000000000000000617731316231664500300170ustar00rootroot00000000000000 Adlm,Adlam,97,0000 000d 0020-0021 00a0 061f 0640 204f 25cc 2e41 1e900-1e94a 1e950-1e959 1e95e-1e95f,-1,Aghb,Caucasian Albanian,76,0000 000d 0020 00a0 0304 0331 25cc fe20-fe2f 10530-10563 1056f,-1,Ahom,Ahom,62,0000 000d 0020 00a0 25cc 11700-11719 1171d-1172b 11730-1173f,-1,Arab,Arabic,1160,0000 000d 0020-0021 002c-002e 0030-003a 003f 00a0 00ab 00bb 034f 0600-061c 061e-06ff 0750-077f 08a0-08b4 08b6-08bd 08d4-08ff 200b-2011 204f 25cc 2e41 fb50-fbc1 fbd3-fd3f fd50-fd8f fd92-fdc7 fdf0-fdfd fe70-fe74 fe76-fefc,11,0022 0027-0029 2018-2019 201c-201d 2026 2039-203aAran,(Urdu),281,0000 000d 0020-0021 0028-0029 002b-003a 003d 005b-005d 007b-007d 00a0 00ab 00b7 00bb 00d7 00f7 0600-0604 0609-0614 061b-061c 061e-0659 065d-0673 0679-0681 0683-068f 0691 0693 0696 0698-069a 069e 06a1 06a4 06a6 06a9 06ab 06af-06b1 06b3 06b7 06ba-06bc 06be 06c0-06c4 06c6-06c7 06ca 06cc-06cd 06d0 06d2-06d5 06dd-06de 06e0-06e1 06e9 06ee-06f9 06ff 0759 075c 0763 0767-077d 08ff 200b-2011 2013-2014 2018-2019 201c-201d 2039-203a 2212 25cc fbb2-fbc1 fd3e-fd3f fdf2 fdf4 fdfa-fdfd,0,Armi,Imperial Aramaic,35,0000 000d 0020 00a0 10840-10855 10857-1085f,0,Armn,Armenian,100,0000 000d 0020 002d 00a0 0531-0556 0559-055f 0561-0587 0589-058a 058d-058f 2010 fb13-fb17,13,0028-0029 002c 002e 003f 00a7 00ab 00bb 02bb 2014 2019 2024 2026Avst,Avestan,71,0000 000d 0020 002e 00a0 00b7 200c-200d 2e30-2e31 10b00-10b35 10b39-10b3f,0,Bali,Balinese,139,0000 000d 0020 00a0 00d7 1b00-1b4b 1b50-1b7c 200b-200d 2012-2015 2022 25cc 25fb-25fe,-1,Bamu,Bamum,662,0000 000d 0020 00a0 25cc a6a0-a6f7 16800-16a38,0,Bass,Bassa Vah,46,0000 000d 0020 0022 002c 002e 00a0 201c-201d 25cc 16ad0-16aed 16af0-16af5,-1,Batk,Batak,64,0000 000d 0020 00a0 1bc0-1bf3 1bfc-1bff 200b-200d 25cc,10,00d7 2012-2015 2022 25fb-25feBeng,Bengali,157,0000 000d 0020-0023 0025 0027-003f 005b-005f 007b-007e 00a0 00ad 00d7 00f7 02bc 0951-0952 0964-0965 0980-0983 0985-098c 098f-0990 0993-09a8 09aa-09b0 09b2 09b6-09b9 09bc-09c4 09c7-09c8 09cb-09ce 09d7 09dc-09dd 09df-09e3 09e6-09fb 200b-200d 2010 2013-2014 2018-2019 201c-201d 2026 20b9 2212 25cc,0,Bhks,Bhaiksuki,103,0000 000d 0020 00a0 200b 25cc 11c00-11c08 11c0a-11c36 11c38-11c45 11c50-11c6c,0,Brah,Brahmi,127,0000 000d 0020 00a0 00d7 200b-200d 2012-2015 2022 25cc 25fb-25fe 11000-1104d 11052-1106f 1107f,-1,Bugi,Buginese,39,0000 000d 0020 00a0 1a00-1a1b 1a1e-1a1f 200b-200d 25cc a9cf,10,00d7 2012-2015 2022 25fb-25feBuhd,Buhid,30,0000 000d 0020 00a0 1735-1736 1740-1753 200b-200d 25cc,10,00d7 2012-2015 2022 25fb-25feCJK,CJK,94514,0000 000d 0020 0022 0027 002c 003f 00a0 02ea-02eb 1100-11ff 2018-2019 201c-201d 2026 22ef 25cc 2e80-2e99 2e9b-2ef3 2f00-2fd5 2ff0-2ffb 3000-303f 3041-3096 3099-30ff 3105-312d 3131-318e 3190-31ba 31c0-31e3 31f0-321e 3220-32fe 3300-332b 332d-4db5 4e00-9fd5 a960-a97c ac00-d7a3 d7b0-d7c6 d7cb-d7fb f900-fa6d fe10-fe19 fe30-fe52 fe54-fe66 fe68-fe6b ff01-ffbe ffc2-ffc7 ffca-ffcf ffd2-ffd7 ffda-ffdc ffe0-ffe6 ffe8-ffee 1f200-1f202 1f210-1f23b 1f240-1f248 1f250-1f251 20000-2a6d6 2a700-2b734 2b740-2b81d 2b820-2cea1 2f800-2fa1d,-1,Cakm,Chakma,101,0000 000d 0020 0022 0027 002c 00a0 09e6-09ef 1040-1049 200c-200d 2018-2019 201c-201d 25cc 11100-11134 11136-11143,0,Cans,Canadian Aboriginal,730,0000 000d 0020 0022 0028-0029 002c-002e 00a0 0131 02c7 02d8-02db 0307 1400-167f 18b0-18f5 201c-201d 25cc,-1,Cari,Carian,53,0000 000d 0020 00a0 102a0-102d0,4,00b7 205a 205d 2e31Cham,Cham,104,0000 000d 0020-0022 0027-0029 002c-002f 003a-003b 003f 00a0 00ad 200c-200d 2010 25cc aa00-aa36 aa40-aa4d aa50-aa59 aa5c-aa5f,-1,Cher,Cherokee,188,0000 000d 0020 00a0 0300-0302 0304 030b-030c 0323-0324 0330-0331 13a0-13f5 13f8-13fd 2026 25cc ab70-abbf,20,0021-0022 0027-0029 002c-002f 003a-003b 003f 005b 005d 007e 2010 2018-2019 201c-201dCopt,Coptic,188,0000 000d 0020 002d 00a0 0300-0302 0304-0305 0307-0308 0323 033f 0361 0374-0375 03e2-03ef 1dcd 2010 25cc 2c80-2cf3 2cf9-2cff fe24-fe26 102e0-102fb,6,002e 003a-003b 00b7 2019 2e17Cprt,Cypriot,59,0000 000d 0020 00a0 10800-10805 10808 1080a-10835 10837-10838 1083c 1083f,0,Deva,Devanagari,270,0000 000d 0020-0023 0025 0027-003f 005b-005f 007b-007e 00a0 00ad 00d7 00f7 02bc 0900-097f 1cd0-1cf6 1cf8-1cf9 200b-200d 2010 2013-2014 2018-2019 201c-201d 2026 20b9 20f0 2212 25cc a830-a839 a8e0-a8fd,-1,Dsrt,Deseret,84,0000 000d 0020 00a0 10400-1044f,0,Dupl,Duployan,154,0000 000d 0020 00a0 200c-200d 25cc 1bc00-1bc6a 1bc70-1bc7c 1bc80-1bc88 1bc90-1bc99 1bc9c-1bca3,-1,EXCL,EXCL,137996,0000-001f 007f-009f 332c e000-f8ff fa70-fad9 fe00-fe0f feff 1b000-1b001 e0001 e0020-e007f e0100-e01ef f0000-ffffd 100000-10fffd,-1,Egyp,Egyptian Hieroglyphs,1078,0000 000d 0020 00a0 200c-200d 25cc 13000-1342e,0,Elba,Elbasan,66,0000 000d 0020 00a0 00b7 0305 0391-03a0 03da 03dd-03de 25cc 10500-10527,-1,Ethi,Ethiopic,505,0000 000d 0020 002d 00a0 0308 030e 1200-1248 124a-124d 1250-1256 1258 125a-125d 1260-1288 128a-128d 1290-12b0 12b2-12b5 12b8-12be 12c0 12c2-12c5 12c8-12d6 12d8-1310 1312-1315 1318-135a 135d-137c 1380-1399 2010 22ee 25cc 2d80-2d96 2da0-2da6 2da8-2dae 2db0-2db6 2db8-2dbe 2dc0-2dc6 2dc8-2dce 2dd0-2dd6 2dd8-2dde ab01-ab06 ab09-ab0e ab11-ab16 ab20-ab26 ab28-ab2e,20,0021-0022 0027-0029 002b-002c 002e-002f 003d 003f 00ab 00bb 2018-2019 201c-201d 2026 2039-203aGeor,Georgian,136,0000 000d 0020 002d 00a0 0589 10a0-10c5 10c7 10cd 10d0-10ff 2010 20be 2d00-2d25 2d27 2d2d,31,0021-0022 0025 0028-0029 002c 002e 003a-003b 003f 00ab 00b7 00bb 2014 201c 201e 2026 2056-205e 2e2a-2e2d 2e31Glag,Glagolitic,142,0000 000d 0020 00a0 0303 0305 0484 0487 25cc 2c00-2c2e 2c30-2c5e a66f 1e000-1e006 1e008-1e018 1e01b-1e021 1e023-1e024 1e026-1e02a,11,0022 002c 002e 003b 00b7 201c-201d 2056 2058-2059 2e43Goth,Gothic,36,0000 000d 0020 00a0 0304-0305 0308 0331 25cc 10330-1034a,2,003a 00b7Gran,Grantha,120,0000 000d 0020 00a0 0951-0952 0964-0965 0baa 0bb5 0be6-0bf2 1cd0 1cd2-1cd3 1cf2-1cf4 1cf8-1cf9 200c-200d 20f0 25cc 11300-11303 11305-1130c 1130f-11310 11313-11328 1132a-11330 11332-11333 11335-11339 1133c-11344 11347-11348 1134b-1134d 11350 11357 1135d-11363 11366-1136c 11370-11374,-1,Gujr,Gujarati,158,0000 000d 0020-0023 0025 0027-003f 005b-005f 007b-007e 00a0 00ad 00d7 00f7 0951-0952 0964-0965 0a81-0a83 0a85-0a8d 0a8f-0a91 0a93-0aa8 0aaa-0ab0 0ab2-0ab3 0ab5-0ab9 0abc-0ac5 0ac7-0ac9 0acb-0acd 0ad0 0ae0-0ae3 0ae6-0af1 0af9 200b-200d 2010 2013-2014 2018-2019 201c-201d 2026 20b9 2212 25cc a830-a839,-1,Guru,Gurmukhi,153,0000 000d 0020-0023 0025 0027-003f 005b-005f 007b-007e 00a0 00ad 00d7 00f7 0951-0952 0964-0965 0a01-0a03 0a05-0a0a 0a0f-0a10 0a13-0a28 0a2a-0a30 0a32-0a33 0a35-0a36 0a38-0a39 0a3c 0a3e-0a42 0a47-0a48 0a4b-0a4d 0a51 0a59-0a5c 0a5e 0a66-0a75 200b-200d 2010 2013-2014 2018-2019 201c-201d 2026 20b9 2212 25cc 262c a830-a839,0,Hano,Hanunoo,31,0000 000d 0020 00a0 1720-1736 200b-200d 25cc,10,00d7 2012-2015 2022 25fb-25feHatr,Hatran,33,0000 000d 0020 007c 00a0 200c 2016 108e0-108f2 108f4-108f5 108fb-108ff,-1,Hebr,Hebrew,147,0000 000d 0020 002d 00a0 0591-05c7 05d0-05ea 05f0-05f4 200c-2010 2019 201d 20aa 25cc fb1d-fb36 fb38-fb3c fb3e fb40-fb41 fb43-fb44 fb46-fb4f,14,0022 0027-0029 002c 003f 0307-0308 034f 2026 2135-2138Hluw,Anatolian Hieroglyphs,588,0000 000d 0020 00a0 200b 14400-14646,0,Hmng,Pahawh Hmong,134,0000 000d 0020 00a0 200c-200d 25cc 16b00-16b45 16b50-16b59 16b5b-16b61 16b63-16b77 16b7d-16b8f,-1,Hung,Old Hungarian,128,0000 000d 0020-0021 002c-002e 003a 00a0 200d 2010 201f 204f 205a 205d-205e 2e2e 2e31 2e41-2e42 10c80-10cb2 10cc0-10cf2 10cfa-10cff,-1,Ital,Old Italic,40,0000 000d 0020 00a0 10300-10323,0,Java,Javanese,99,0000 000d 0020 00a0 200b-200d 25cc a980-a9cd a9cf-a9d9 a9de-a9df,-1,Kali,Kayah Li,57,0000 000d 0020 002d 00a0 200c-200d 2010 25cc a900-a92f,6,0021-0022 0028-0029 002c 003fKhar,Kharoshthi,75,0000 000d 0020 002d 00a0 200b-200d 2010 25cc 10a00-10a03 10a05-10a06 10a0c-10a13 10a15-10a17 10a19-10a33 10a38-10a3a 10a3f-10a47 10a50-10a58,10,00d7 2012-2015 2022 25fb-25feKhmr,Khmer,175,0000 000d 0020-0022 0027-0029 002c-002f 003a-003b 003f 00a0 00ab 00ad 00bb 1780-17dd 17e0-17e9 17f0-17f9 19e0-19ff 200b-200d 2010 2018-2019 201c-201d 2026 25cc,-1,Khoj,Khojki,86,0000 000d 0020 0028-0029 002c 002e 003b 00a0 0ae6-0aef 200c-200d 2013 2026 25cc 11200-11211 11213-1123e,-1,Knda,Kannada,159,0000 000d 0020-0023 0025 0027-003f 005b-005f 007b-007e 00a0 00ad 00d7 00f7 0951-0952 0964-0965 0c80-0c83 0c85-0c8c 0c8e-0c90 0c92-0ca8 0caa-0cb3 0cb5-0cb9 0cbc-0cc4 0cc6-0cc8 0cca-0ccd 0cd5-0cd6 0cde 0ce0-0ce3 0ce6-0cef 0cf1-0cf2 1cda 1cf5 200b-200d 2010 2013-2014 2018-2019 201c-201d 2026 20b9 2212 25cc a830-a835,-1,Kthi,Kaithi,96,0000 000d 0020 002d 00a0 0966-096f 200b-200d 2010 25cc a830-a839 11080-110c1,12,002b 00d7 2012-2015 2022 25fb-25fe 2e31LGC,(LGC),2794,0000 000d 0020-007e 00a0-0377 037a-037f 0384-038a 038c 038e-03a1 03a3-03e1 03f0-052f 1ab0-1abe 1c80-1c88 1d00-1df5 1dfb-1f15 1f18-1f1d 1f20-1f45 1f48-1f4d 1f50-1f57 1f59 1f5b 1f5d 1f5f-1f7d 1f80-1fb4 1fb6-1fc4 1fc6-1fd3 1fd6-1fdb 1fdd-1fef 1ff2-1ff4 1ff6-1ffe 2000-2064 2066-2071 2074-208e 2090-209c 20a0-20bf 20f0 2100-215f 2184 2189 25cc 2c60-2c7f 2de0-2e44 a640-a69f a700-a7ae a7b0-a7b7 a7f7-a7ff a92e ab30-ab65 fb00-fb06 fe00 fe20-fe2f feff fffc-fffd,-1,Lana,Tai Tham,135,0000 000d 0020 00a0 1a20-1a5e 1a60-1a7c 1a7f-1a89 1a90-1a99 1aa0-1aad 200b-200d 25cc,-1,Laoo,Lao,76,0000 000d 0020 00a0 0e81-0e82 0e84 0e87-0e88 0e8a 0e8d 0e94-0e97 0e99-0e9f 0ea1-0ea3 0ea5 0ea7 0eaa-0eab 0ead-0eb9 0ebb-0ebd 0ec0-0ec4 0ec6 0ec8-0ecd 0ed0-0ed9 0edc-0edf 200b-200d 20ad 25cc,18,0021-0022 0027-0029 002c-002f 003a-003b 003f 00ad 2018-2019 201c-201d 2026Lepc,Lepcha,95,0000 000d 0020 002c 002e 003f 00a0 00d7 1c00-1c37 1c3b-1c49 1c4d-1c4f 200b-200d 2012-2015 2022 25cc 25fb-25fe,-1,Limb,Limbu,77,0000 000d 0020 00a0 0965 1900-191e 1920-192b 1930-193b 1940 1944-194f 200b-200d 25cc,10,00d7 2012-2015 2022 25fb-25feLina,Linear A,345,0000 000d 0020 00a0 10600-10736 10740-10755 10760-10767,-1,Linb,Linear B,272,0000 000d 0020 00a0 10000-1000b 1000d-10026 10028-1003a 1003c-1003d 1003f-1004d 10050-1005d 10080-100fa 10100-10102 10107-10133 10137-1013f,0,Lisu,Lisu,58,0000 000d 0020 002d 00a0 02bc 02cd 2010 300a-300b a4d0-a4ff,8,0021-0022 0028-0029 003a-003b 003f 2026Lyci,Lycian,33,0000 000d 0020 00a0 10280-1029c,1,205aLydi,Lydian,31,0000 000d 0020 00a0 10920-10939 1093f,3,003a 00b7 2e31MONO,MONO,3324,0000 000d 0020-007e 00a0-0377 037a-037f 0384-038a 038c 038e-03a1 03a3-03e1 03f0-052f 1ab0-1abe 1c80-1c88 1d00-1df5 1dfb-1f15 1f18-1f1d 1f20-1f45 1f48-1f4d 1f50-1f57 1f59 1f5b 1f5d 1f5f-1f7d 1f80-1fb4 1fb6-1fc4 1fc6-1fd3 1fd6-1fdb 1fdd-1fef 1ff2-1ff4 1ff6-1ffe 2000-2064 2066-2071 2074-208e 2090-209c 20a0-20be 20f0 2100-215f 2184 2189 2190-2195 219c-219e 21a0 21a2-21a4 21a6 21d0-21d4 21da-21db 21e6 21e8 2200-220e 2210 2212 2218-221a 221e 2220 2223 2227-222a 2234-2238 223c-223d 2241 2243 2245 2247-224b 2254-2255 2257 225f-2262 2264-2265 226c 226e-2275 227a-227b 2282-2289 228e 2291-229c 22a2-22a5 22b4-22b5 22b8 22c2-22c4 22c6 22c8-22ca 22cd-22ce 22d0-22d1 22e2-22e3 2308-230b 2310 2319 2320-2321 2336-237a 2395 239b-23ae 23b0-23bd 23dc-23e1 2474-2475 2500-25ff 266d-266f 2736 2758-275a 27d5-27d7 27e6-27eb 27f5-27f6 2987-2988 29b8 2a00 2a05-2a06 2c60-2c7f 2de0-2e44 a640-a69f a700-a7ae a7b0-a7b7 a7f7-a7ff a92e ab30-ab65 fb00-fb06 fe00 fe20-fe2f feff ff5b ff5d fffc-fffd 1f67c-1f67f,-1,MUSIC,MUSIC,559,0000 000d 0020 00a0 25cc 2669-266f 1d000-1d0f5 1d100-1d126 1d129-1d1e8 1d200-1d245,-1,Mahj,Mahajani,72,0000 000d 0020 002d 003a 00a0 00b7 0964-096f 200c-200d 2013 25cc a830-a839 11150-11176,-1,Mand,Mandaic,37,0000 000d 0020 00a0 0640 0840-085b 085e 200c-200d 25cc,0,Mani,Manichaean,59,0000 000d 0020 00a0 0640 200c-200d 25cc 10ac0-10ae6 10aeb-10af6,-1,Marc,Marchen,73,0000 000d 0020 00a0 25cc 11c70-11c8f 11c92-11ca7 11ca9-11cb6,-1,Mend,Mende Kikakui,218,0000 000d 0020 00a0 25cc 1e800-1e8c4 1e8c7-1e8d6,-1,Merc,Meroitic Cursive,97,0000 000d 0020 003a 00a0 2026 205d 109a0-109b7 109bc-109cf 109d2-109ff,-1,Mero,Meroitic Hieroglyphs,36,0000 000d 0020 00a0 10980-1099f,-1,Mlym,Malayalam,178,0000 000d 0020-0023 0025 0027-003f 005b-005f 007b-007e 00a0 00ad 00d7 00f7 0951-0952 0964-0965 0d01-0d03 0d05-0d0c 0d0e-0d10 0d12-0d3a 0d3d-0d44 0d46-0d48 0d4a-0d4f 0d54-0d63 0d66-0d7f 1cda 200b-200d 2010 2013-2014 2018-2019 201c-201d 2026 20b9 2212 25cc,-1,Modi,Modi,99,0000 000d 0020 002c 002e 003b 00a0 200c-200d 25cc a830-a839 11600-11644 11650-11659,-1,Mong,Mongolian,217,0000 000d 0020-0022 0028-0029 002d 003f 00a0 1800-180e 1810-1819 1820-1877 1880-18aa 200c-200d 2013-2014 201c-201d 202f 2048-2049 2460-2473 25cc 3001-3002 fe3d-fe3e fe41-fe44 11660-1166c,-1,Mroo,Mro,47,0000 000d 0020 00a0 16a40-16a5e 16a60-16a69 16a6e-16a6f,-1,Mtei,Meetei Mayek,97,0000 000d 0020 00a0 00d7 200b-200d 2012-2015 2022 25cc 25fb-25fe aae0-aaf6 abc0-abed abf0-abf9,-1,Mult,Multani,52,0000 000d 0020 00a0 0a66-0a6f 11280-11286 11288 1128a-1128d 1128f-1129d 1129f-112a9,-1,Mymr,Myanmar,241,0000 000d 0020 0022 0027 003f 00a0 1000-109f 200b-200d 2018-2019 201c-201d 2026 25cc a92e a9e0-a9fe aa60-aa7f fe00,-1,Narb,Old North Arabian,36,0000 000d 0020 00a0 10a80-10a9f,-1,Nbat,Nabataean,44,0000 000d 0020 00a0 10880-1089e 108a7-108af,-1,Newa,Newa,97,0000 000d 0020 00a0 25cc 11400-11459 1145b 1145d,-1,Nkoo,N'Ko,76,0000 000d 0020 00a0 060c 061b 061f 066a 07c0-07fa 200c-200f 25cc 2e1c-2e1d fd3e-fd3f,0,Ogam,Ogham,33,0000 000d 0020 00a0 1680-169c,0,Olck,Ol Chiki,52,0000 000d 0020 00a0 1c50-1c7f,8,0021 002c 003f 2014 2018-2019 201c-201dOrkh,Old Turkic,77,0000 000d 0020 00a0 10c00-10c48,2,205a 2e30Orya,Oriya,153,0000 000d 0020-0023 0025 0027-003f 005b-005f 007b-007e 00a0 00ad 00d7 00f7 0951-0952 0964-0965 0b01-0b03 0b05-0b0c 0b0f-0b10 0b13-0b28 0b2a-0b30 0b32-0b33 0b35-0b39 0b3c-0b44 0b47-0b48 0b4b-0b4d 0b56-0b57 0b5c-0b5d 0b5f-0b63 0b66-0b77 200b-200d 2010 2013-2014 2018-2019 201c-201d 2026 20b9 2212 25cc,-1,Osge,Osage,81,0000 000d 0020 00a0 0301 0304 030b 0358 25cc 104b0-104d3 104d8-104fb,0,Osma,Osmanya,44,0000 000d 0020 00a0 10480-1049d 104a0-104a9,0,Palm,Palmyrene,36,0000 000d 0020 00a0 10860-1087f,-1,Pauc,Pau Cin Hau,62,0000 000d 0020 002e 00a0 11ac0-11af8,-1,Perm,Old Permic,58,0000 000d 0020 0027 003a 00a0 00b7 0300 0306-0308 0313 0483 20db 25cc 10350-1037a,-1,Phag,Phags-Pa,96,0000 000d 0020-0021 003f 00a0 1801-1803 1805 200b-200f 2025-2026 25cc 3001-3002 3007-3011 3014-301b a840-a877 fe00,-1,Phli,Inscriptional Pahlavi,31,0000 000d 0020 00a0 10b60-10b72 10b78-10b7f,0,Phlp,Psalter Pahlavi,37,0000 000d 0020 00a0 0640 200c-200d 25cc 10b80-10b91 10b99-10b9c 10ba9-10baf,-1,Phnx,Phoenician,33,0000 000d 0020 00a0 10900-1091b 1091f,0,Plrd,Miao,138,0000 000d 0020 00a0 25cc 16f00-16f44 16f50-16f7e 16f8f-16f9f,-1,Prti,Inscriptional Parthian,34,0000 000d 0020 00a0 10b40-10b55 10b58-10b5f,0,Rjng,Rejang,45,0000 000d 0020 00a0 200b-200d 25cc a930-a953 a95f,13,002c 002e 003a 00d7 2012-2015 2022 25fb-25feRunr,Runic,93,0000 000d 0020 00a0 16a0-16f8,0,SYM2,Symbols2,2184,0000-0020 0023 002a 0030-0039 007f-00a0 2022 20e2-20e3 21af 21e6-21f0 21f3 2218-2219 2299 22c4-22c6 2316 2318 231a-231b 2324-2328 232b 237b 237d-237f 2394 23ce-23cf 23e9-23ea 23ed-23ef 23f1-23fe 2400-2426 2440-244a 25a0-2609 260e-2612 2614-2623 2630-2637 263c 2654-2668 267f-268f 269e-26a1 26aa-26ac 26bd-26cd 26cf-26e1 2700-2704 2706-2709 270b-271c 2722-2727 2729-274b 274d 274f-2753 2756-2775 2794 2798-27af 27b1-27be 2800-28ff 2981 29bf 29eb 2b00-2b0d 2b12-2b2f 2b4d-2b73 2b76-2b95 2b98-2bb9 2bbd-2bc8 2bca-2bd1 2bec-2bef 4dc0-4dff fff9-fffb 10140-1018e 10190-1019b 101a0 101d0-101fd 102e0-102fb 10e60-10e7e 1d300-1d356 1d360-1d371 1f000-1f02b 1f030-1f093 1f0a0-1f0ae 1f0b1-1f0bf 1f0c1-1f0cf 1f0d1-1f0f5 1f30d-1f30f 1f315 1f31c 1f321-1f32c 1f336 1f378 1f37d 1f393-1f39f 1f3a7 1f3ac-1f3ae 1f3c2 1f3c4 1f3c6 1f3ca-1f3ce 1f3d4-1f3e0 1f3ed 1f3f1-1f3f3 1f3f5-1f3f7 1f408 1f415 1f41f 1f426 1f43f 1f441-1f442 1f446-1f449 1f44c-1f44e 1f453 1f46a 1f47d 1f4a3 1f4b0 1f4b3 1f4b9 1f4bb 1f4bf 1f4c8-1f4cb 1f4da 1f4df 1f4e4-1f4e6 1f4ea-1f4ed 1f4f7 1f4f9-1f4fb 1f4fd-1f4fe 1f503 1f507-1f50a 1f50d 1f512-1f513 1f53e-1f545 1f54a 1f550-1f579 1f57b-1f594 1f597-1f5a3 1f5a5-1f5fa 1f650-1f67f 1f687 1f68d 1f691 1f694 1f698 1f6ad 1f6b2 1f6b9-1f6ba 1f6bc 1f6c6-1f6cb 1f6cd-1f6cf 1f6e0-1f6ea 1f6f0-1f6f3 1f780-1f7d4 1f800-1f80b 1f810-1f847 1f850-1f859 1f860-1f887 1f890-1f8ad 1f93b 1f946,-1,Samr,Samaritan,67,0000 000d 0020 00a0 0800-082d 0830-083e 25cc 2e31,0,Sarb,Old South Arabian,36,0000 000d 0020 00a0 10a60-10a7f,0,Saur,Saurashtra,90,0000 000d 0020 00a0 200b-200d 25cc a880-a8c5 a8ce-a8d9,13,002c 002e 003f 00d7 2012-2015 2022 25fb-25feSgnw,SignWriting,677,0000 000d 0020 00a0 25cc 1d800-1da8b 1da9b-1da9f 1daa1-1daaf,-1,Shaw,Shavian,52,0000 000d 0020 00a0 10450-1047f,1,00b7Shrd,Sharada,107,0000 000d 0020 00a0 0951 1cd7 1cd9 1cdc-1cdd 1ce0 200c-200d 25cc 11180-111cd 111d0-111df,-1,Sidd,Siddham,99,0000 000d 0020 00a0 200c-200d 25cc 11580-115b5 115b8-115dd,-1,Sind,Khudawadi,93,0000 000d 0020 002e 003a-003b 00a0 0964-0965 200c-200d 2013-2014 25cc a830-a839 112b0-112ea 112f0-112f9,-1,Sinh,Sinhala,169,0000 000d 0020-0023 0025 0027-003f 005b-005f 007b-007e 00a0 00ad 00d7 00f7 0964-0965 0d82-0d83 0d85-0d96 0d9a-0db1 0db3-0dbb 0dbd 0dc0-0dc6 0dca 0dcf-0dd4 0dd6 0dd8-0ddf 0de6-0def 0df2-0df4 200b-200d 2013-2014 2018-2019 201c-201d 2026 2212 25cc 111e1-111f4,-1,Sora,Sora Sompeng,47,0000 000d 0020-0021 0028-0029 002c-002e 003b 00a0 2010 110d0-110e8 110f0-110f9,-1,Sund,Sundanese,82,0000 000d 0020 002d 00a0 1b80-1bbf 1cc0-1cc7 200b-200d 2010 25cc,16,0022 003c 003e-003f 00d7 2012-2015 201c-201d 2022 25fb-25feSylo,Syloti Nagri,67,0000 000d 0020 00a0 0964-0965 09e6-09ef 200b-200d 2010-2011 2055 25cc a800-a82b,14,002c 002e 003a-003b 00d7 2012-2015 2022 25fb-25feSyrc,Syriac,151,0000 000d 0020-0021 0028-002b 002d-002f 003a 003d 005b-005d 00a0 00ab 00b0 00bb 0303-0304 0307-0308 030a 0320 0323-0325 032d-032e 0330-0331 060c 061b 061f 0621 0640 064b-0655 0660-066c 0670-0671 0700-070d 070f-074a 074d-074f 200c-200f 2026 2044 2212 25cc 2670-2671,-1,Tagb,Tagbanwa,28,0000 000d 0020 00a0 1735-1736 1760-176c 176e-1770 1772-1773 200b-200d 25cc,10,00d7 2012-2015 2022 25fb-25feTakr,Takri,85,0000 000d 0020 00a0 0964-0965 200c-200d 25cc a830-a839 11680-116b7 116c0-116c9,-1,Tale,Tai Le,64,0000 000d 0020 00a0 0300-0301 0307-0308 030c 1040-1049 1950-196d 1970-1974 200b-200d 25cc 3001-3002 3008-300b,16,002c 002e 003a 003f 00d7 2012-2015 201c-201d 2022 25fb-25feTalu,New Tai Lue,90,0000 000d 0020 00a0 1980-19ab 19b0-19c9 19d0-19da 19de-19df 200c-200d 25cc,0,Taml,Tamil,145,0000 000d 0020-0023 0025 0027-003f 005b-005f 007b-007e 00a0 00ad 00b2-00b3 00d7 00f7 0951-0952 0964-0965 0b82-0b83 0b85-0b8a 0b8e-0b90 0b92-0b95 0b99-0b9a 0b9c 0b9e-0b9f 0ba3-0ba4 0ba8-0baa 0bae-0bb9 0bbe-0bc2 0bc6-0bc8 0bca-0bcd 0bd0 0bd7 0be6-0bfa 1cda 200b-200d 2010 2013-2014 2018-2019 201c-201d 2026 2074 2082-2084 20b9 2212 25cc a8f3 11303 1133c,-1,Tang,Tangut,6885,0000 000d 0020 00a0 16fe0 17000-187ec 18800-18af2,-1,Tavt,Tai Viet,82,0000 000d 0020 00a0 200b-200d 25cc a78b-a78c aa80-aac2 aadb-aadf,10,00d7 2012-2015 2022 25fb-25feTelu,Telugu,160,0000 000d 0020-0023 0025 0027-003f 005b-005f 007b-007e 00a0 00ad 00d7 00f7 0951-0952 0964-0965 0c00-0c03 0c05-0c0c 0c0e-0c10 0c12-0c28 0c2a-0c39 0c3d-0c44 0c46-0c48 0c4a-0c4d 0c55-0c56 0c58-0c5a 0c60-0c63 0c66-0c6f 0c78-0c7f 1cda 200b-200d 2010 2013-2014 2018-2019 201c-201d 2026 20b9 2212 25cc,-1,Tfng,Tifinagh,74,0000 000d 0020 00a0 0301-0302 0304 0306-0307 0309 0323 0331 200c-200d 25cc 2d30-2d67 2d6f-2d70 2d7f,5,0022 00ab 00bb 201d-201eTglg,Tagalog,30,0000 000d 0020 00a0 1700-170c 170e-1714 1735-1736 200b-200d 25cc,10,00d7 2012-2015 2022 25fb-25feThaa,Thaana,90,0000 000d 0020-0021 0028-0029 002c 002e 003a-003b 00a0 060c 061b-061c 061f 0660-066c 0780-07b1 200b-200f 2018-2019 201c-201d 25cc fdf2 fdfd,-1,Thai,Thai,101,0000 000d 0020 002d 00a0 02bc 02d7 0303 0331 0e01-0e3a 0e3f-0e5b 200b-200d 2010 25cc,14,0021-0022 0027-0029 002c 002e 003a 003f 2018-2019 201c-201d 2026Tibt,Tibetan,230,0000 000d 0020 0022 0027 002d 003f 007c 00a0 0f00-0f47 0f49-0f6c 0f71-0f97 0f99-0fbc 0fbe-0fcc 0fce-0fda 200b-200d 2010 2018-2019 201c-201d 25cc 2638,-1,Tirh,Tirhuta,101,0000 000d 0020 00a0 0964-0965 200c-200d 25cc a830-a839 11480-114c7 114d0-114d9,-1,Ugar,Ugaritic,35,0000 000d 0020 00a0 10380-1039d 1039f,0,Vaii,Vai,304,0000 000d 0020 00a0 a500-a62b,8,0022 0027 002c-002d 2018-2019 201c-201dWara,Warang Citi,101,0000 000d 0020-0021 0028-0029 002c-002e 003a-003b 003f 00a0 2013-2014 201c-201d 118a0-118f2 118ff,-1,Xpeo,Old Persian,54,0000 000d 0020 00a0 103a0-103c3 103c8-103d5,0,Xsux,Cuneiform,1238,0000 000d 0020 00a0 12000-12399 12400-1246e 12470-12474 12480-12543,0,Yiii,Yi,1252,0000 000d 0020 002c 00a0 3001-3002 3008-3011 3014-301b 30fb a000-a48c a490-a4c6 ff0c ff61-ff65,0,Zmth,Math,2471,0000 000d 0020-007e 00a0 00a7 00ac 00b1 00d7 00f7 0302-0303 0305 0307-0308 0330 0391-03a1 03a3-03a9 03b1-03c9 03d1 03d5-03d6 03f0-03f1 03f4-03f5 2032-2037 2057 20d0-20dc 20e1 20e5-20ef 2102 210a-210e 2110-2112 2115 2119-211d 2124 2128 212c-212d 212f-2131 2133-2138 213c-2140 2145-2149 2190-21ae 21b0-21e5 21f1-21f2 21f4-22ff 2308-230b 2310 2319 231c-2321 2336-237a 237c 2395 239b-23b6 23d0 23dc-23e1 2474-2475 25af 25b3 25b7 25bd 25c1 25ca 25cc 25fb 266d-266f 27c0-27ff 2900-2aff 2b0e-2b11 2b30-2b4c ff5b ff5d 1d400-1d454 1d456-1d49c 1d49e-1d49f 1d4a2 1d4a5-1d4a6 1d4a9-1d4ac 1d4ae-1d4b9 1d4bb 1d4bd-1d4c3 1d4c5-1d505 1d507-1d50a 1d50d-1d514 1d516-1d51c 1d51e-1d539 1d53b-1d53e 1d540-1d544 1d546 1d54a-1d550 1d552-1d6a5 1d6a8-1d7cb 1d7ce-1d7ff 1ee00-1ee03 1ee05-1ee1f 1ee21-1ee22 1ee24 1ee27 1ee29-1ee32 1ee34-1ee37 1ee39 1ee3b 1ee42 1ee47 1ee49 1ee4b 1ee4d-1ee4f 1ee51-1ee52 1ee54 1ee57 1ee59 1ee5b 1ee5d 1ee5f 1ee61-1ee62 1ee64 1ee67-1ee6a 1ee6c-1ee72 1ee74-1ee77 1ee79-1ee7c 1ee7e 1ee80-1ee89 1ee8b-1ee9b 1eea1-1eea3 1eea5-1eea9 1eeab-1eebb 1eef0-1eef1,-1,Zsye,Emoji,1151,0000 000d 0020 0023 002a 0030-0039 00a0 00a9 00ae 203c 2049 2122 2139 2194-2199 21a9-21aa 231a-231b 2328 23cf 23e9-23f3 23f8-23fa 24c2 25aa-25ab 25b6 25c0 25fb-25fe 2600-2604 260e 2611 2614-2615 2618 261d 2620 2622-2623 2626 262a 262e-262f 2638-263a 2640 2642 2648-2653 2660 2663 2665-2666 2668 267b 267f 2692-2697 2699 269b-269c 26a0-26a1 26aa-26ab 26b0-26b1 26bd-26be 26c4-26c5 26c8 26ce-26cf 26d1 26d3-26d4 26e9-26ea 26f0-26f5 26f7-26fa 26fd 2702 2705 2708-270d 270f 2712 2714 2716 271d 2721 2728 2733-2734 2744 2747 274c 274e 2753-2755 2757 2763-2764 2795-2797 27a1 27b0 27bf 2934-2935 2b05-2b07 2b1b-2b1c 2b50 2b55 3030 303d 3297 3299 1f004 1f0cf 1f170-1f171 1f17e-1f17f 1f18e 1f191-1f19a 1f1e6-1f1ff 1f201-1f202 1f21a 1f22f 1f232-1f23a 1f250-1f251 1f300-1f321 1f324-1f393 1f396-1f397 1f399-1f39b 1f39e-1f3f0 1f3f3-1f3f5 1f3f7-1f4fd 1f4ff-1f53d 1f549-1f54e 1f550-1f567 1f56f-1f570 1f573-1f57a 1f587 1f58a-1f58d 1f590 1f595-1f596 1f5a4-1f5a5 1f5a8 1f5b1-1f5b2 1f5bc 1f5c2-1f5c4 1f5d1-1f5d3 1f5dc-1f5de 1f5e1 1f5e3 1f5e8 1f5ef 1f5f3 1f5fa-1f64f 1f680-1f6c5 1f6cb-1f6d2 1f6e0-1f6e5 1f6e9 1f6eb-1f6ec 1f6f0 1f6f3-1f6f6 1f910-1f91e 1f920-1f927 1f930 1f933-1f93a 1f93c-1f93e 1f940-1f945 1f947-1f94b 1f950-1f95e 1f980-1f991 1f9c0 fe4e5-fe4ee fe82c fe82e-fe837,-1,Zsym,Symbols,838,0000 000d 0020 0030-0039 0041-005a 0061-007a 00a0 20dd-20e0 20e2-20e4 2160-2183 2185-2188 218a-218b 2190-2199 2300-230f 2311-2315 2317 231c-231f 2322-2323 2329-232a 232c-2335 237c 2380-2394 2396-239a 23af 23be-23cd 23d0-23db 23e2-23e8 2460-24ff 25cc 260a-260d 2613 2624-262f 2638-263b 263d-2653 2669-267e 2690-269d 26a2-26a9 26ad-26bc 26ce 26e2-26ff 271d-2721 2776-2793 2921-2922 1f100-1f10c 1f110-1f12e 1f130-1f16b 1f170-1f190 1f19b-1f1ac 1f546-1f549 1f54f 1f610 1f700-1f773,-1,
script,name,count,ranges,xcount,xranges
nototools-2017-09-25-tooling-for-phase3-update/nototools/data/tinos_config.txt000066400000000000000000000357331316231664500272720ustar00rootroot00000000000000vendor Monotype disable extrema name like Arimo disable private_use name like Tinos; weight like BoldItalic; version == 1.30 disable head/hhea disable head/os2 # 26 glyphs have bounds errors # glyph bounds limits max 1825, min -443 # cp 01d9 (gid 840) above max (1830) but target (gid 908) is not # cp 01e0 (gid 947) above max (1845) but target (gid 1019) is not # cp 021f (gid 1004) above max (1853) but target (gid 1076) is not # cp 022c (gid 1017) above max (1845) but target (gid 1089) is not # cp 0230 (gid 1021) above max (1845) but target (gid 1093) is not # cp 0309 (gid 692) above max (1835) but target (gid 760) is not # cp 0333 (gid 1358) below min (-463) but target (gid 1430) is not # cp 0347 (gid 1378) below min (-463) but target (gid 1450) is not # cp 03e1 (gid 1423) below min (-448) but target (gid 1495) is not # cp 040d (gid 1446) above max (1830) but target (gid 1518) is not # cp 04c3 (gid 1526) below min (-444) but target (gid 1598) is not # cp 0527 (gid 2596) below min (-444) but target (gid 2940) is not # cp 1d09 (gid 2046) below min (-481) but target (gid 2149) is not # cp 1d68 (gid 2141) below min (-447) but target (gid 2244) is not # cp 1d69 (gid 2142) below min (-445) but target (gid 2245) is not # cp 1e1f (gid 1629) above max (1853) but target (gid 1732) is not # cp 1e31 (gid 1647) above max (1831) but target (gid 1750) is not # cp 1e9b (gid 1747) above max (1852) but target (gid 1850) is not # cp 1ec4 (gid 776) above max (1854) but target (gid 844) is not # cp 2017 (gid 307) below min (-579) but target (gid 308) is not # cp 222b (gid 155) below min (-549) but target (gid 156) is not # cp a717 (gid 2370) above max (1834) but target (gid 2492) is not # cp a718 (gid 2371) above max (1829) but target (gid 2493) is not # cp a719 (gid 2372) above max (1835) but target (gid 2494) is not # cp a71b (gid 2405) above max (1910) but target (gid 2527) is not # cp a71c (gid 2406) above max (1910) but target (gid 2528) is not enable bounds/glyph/ymax only gid 692 776 840 947 1004 1017 1021 1446 1629 1647 1747 2370-2372 2405-2406 enable bounds/glyph/ymin only gid 155 307 1358 1378 1423 1526 2046 2141-2142 2596 # 8 mark glyphs have classDef errors # cp 0334 (gid 1359) has non-combining-mark glyph class 1 but target (gid 1431) is correct # cp 0335 (gid 1360) has non-combining-mark glyph class 1 but target (gid 1432) is correct # cp 0336 (gid 1361) has non-combining-mark glyph class 1 but target (gid 1433) is correct # cp 0337 (gid 1362) has non-combining-mark glyph class 1 but target (gid 1434) is correct # cp 0338 (gid 1363) has non-combining-mark glyph class 1 but target (gid 1435) is correct # cp 0340 (gid 1371) has non-combining-mark glyph class 1 but target (gid 1443) is correct # cp 0341 (gid 1372) has non-combining-mark glyph class 1 but target (gid 1444) is correct # cp 034f (gid 1386) has non-combining-mark glyph class 1 but target (gid 1458) is correct enable gdef/classdef/combining_mismatch only cp 0334-0338 0340-0341 034f # 10 glyphs have classDef differences # cp 0334 (gid 1359) has class 1 but target (gid 1431) has class 3 # cp 0335 (gid 1360) has class 1 but target (gid 1432) has class 3 # cp 0336 (gid 1361) has class 1 but target (gid 1433) has class 3 # cp 0337 (gid 1362) has class 1 but target (gid 1434) has class 3 # cp 0338 (gid 1363) has class 1 but target (gid 1435) has class 3 # cp 0340 (gid 1371) has class 1 but target (gid 1443) has class 3 # cp 0341 (gid 1372) has class 1 but target (gid 1444) has class 3 # cp 034f (gid 1386) has class 1 but target (gid 1458) has class 3 # cp 0488 (gid 1489) has class 1 but target (gid 1561) has class 3 # cp 0489 (gid 1490) has class 1 but target (gid 1562) has class 3 enable gdef/classdef/not_combining_mismatch only cp 0334-0338 0340-0341 034f 0488-0489 name like Tinos; weight like Bold; version == 1.30 disable head/hhea disable head/os2 # 46 glyphs have bounds errors # glyph bounds limits max 1825, min -443 # cp 0067 (gid 74) below min (-452) but target (gid 74) is not # cp 011d (gid 418) below min (-452) but target (gid 419) is not # cp 011f (gid 246) below min (-452) but target (gid 247) is not # cp 0121 (gid 420) below min (-452) but target (gid 421) is not # cp 0123 (gid 422) below min (-452) but target (gid 423) is not # cp 013a (gid 269) above max (1837) but target (gid 270) is not # cp 018d (gid 885) below min (-444) but target (gid 1687) is not # cp 01db (gid 842) above max (1826) but target (gid 1290) is not # cp 01e0 (gid 947) above max (1845) but target (gid 1749) is not # cp 01e5 (gid 952) below min (-452) but target (gid 1754) is not # cp 01e7 (gid 954) below min (-452) but target (gid 1756) is not # cp 01f5 (gid 968) below min (-452) but target (gid 1770) is not # cp 01f8 (gid 971) above max (1831) but target (gid 1773) is not # cp 022c (gid 1017) above max (1826) but target (gid 1819) is not # cp 0230 (gid 1021) above max (1845) but target (gid 1823) is not # cp 0309 (gid 692) above max (1835) but target (gid 1140) is not # cp 0325 (gid 1344) below min (-453) but target (gid 2146) is not # cp 0326 (gid 1345) below min (-523) but target (gid 2147) is not # cp 0333 (gid 1358) below min (-463) but target (gid 2160) is not # cp 0347 (gid 1378) below min (-463) but target (gid 2180) is not # cp 03e1 (gid 1423) below min (-448) but target (gid 2225) is not # cp 0402 (gid 556) below min (-450) but target (gid 557) is not # cp 04c3 (gid 1526) below min (-454) but target (gid 2328) is not # cp 1d09 (gid 2046) below min (-481) but target (gid 2879) is not # cp 1d69 (gid 2142) below min (-445) but target (gid 2975) is not # cp 1d77 (gid 2193) below min (-538) but target (gid 3194) is not # cp 1d83 (gid 2205) below min (-452) but target (gid 3206) is not # cp 1e00 (gid 1598) below min (-453) but target (gid 2431) is not # cp 1e01 (gid 1599) below min (-453) but target (gid 2432) is not # cp 1e10 (gid 1614) below min (-523) but target (gid 2447) is not # cp 1e11 (gid 1615) below min (-523) but target (gid 2448) is not # cp 1e1f (gid 1629) above max (1837) but target (gid 2462) is not # cp 1e21 (gid 1631) below min (-452) but target (gid 2464) is not # cp 1e31 (gid 1647) above max (1831) but target (gid 2480) is not # cp 1e9b (gid 1747) above max (1829) but target (gid 2580) is not # cp 1eaa (gid 750) above max (1855) but target (gid 1198) is not # cp 1eb4 (gid 760) above max (1875) but target (gid 1208) is not # cp 1ec4 (gid 776) above max (1855) but target (gid 1224) is not # cp 1ed6 (gid 794) above max (1855) but target (gid 1242) is not # cp 2017 (gid 307) below min (-534) but target (gid 308) is not # cp 222b (gid 155) below min (-549) but target (gid 156) is not # cp a717 (gid 2370) above max (1834) but target (gid 3373) is not # cp a718 (gid 2371) above max (1829) but target (gid 3374) is not # cp a719 (gid 2372) above max (1835) but target (gid 3375) is not # cp a71b (gid 2405) above max (1910) but target (gid 3408) is not # cp a71c (gid 2406) above max (1910) but target (gid 3409) is not enable bounds/glyph/ymax only gid 269 692 750 760 776 794 842 947 971 1017 1021 1629 1647 1747 2370-2372 2405-2406 enable bounds/glyph/ymin only gid 74 155 246 307 418 420 422 556 885 952 954 968 1344-1345 1358 1378 1423 1526 1598-1599 1614-1615 1631 2046 2142 2193 2205 # 8 mark glyphs have classDef errors # cp 0334 (gid 1359) has non-combining-mark glyph class 1 but target (gid 2161) is correct # cp 0335 (gid 1360) has non-combining-mark glyph class 1 but target (gid 2162) is correct # cp 0336 (gid 1361) has non-combining-mark glyph class 1 but target (gid 2163) is correct # cp 0337 (gid 1362) has non-combining-mark glyph class 1 but target (gid 2164) is correct # cp 0338 (gid 1363) has non-combining-mark glyph class 1 but target (gid 2165) is correct # cp 0340 (gid 1371) has non-combining-mark glyph class 1 but target (gid 2173) is correct # cp 0341 (gid 1372) has non-combining-mark glyph class 1 but target (gid 2174) is correct # cp 034f (gid 1386) has non-combining-mark glyph class 1 but target (gid 2188) is correct enable gdef/classdef/combining_mismatch only cp 0334-0338 0340-0341 034f # 10 glyphs have classDef differences # cp 0334 (gid 1359) has class 1 but target (gid 2161) has class 3 # cp 0335 (gid 1360) has class 1 but target (gid 2162) has class 3 # cp 0336 (gid 1361) has class 1 but target (gid 2163) has class 3 # cp 0337 (gid 1362) has class 1 but target (gid 2164) has class 3 # cp 0338 (gid 1363) has class 1 but target (gid 2165) has class 3 # cp 0340 (gid 1371) has class 1 but target (gid 2173) has class 3 # cp 0341 (gid 1372) has class 1 but target (gid 2174) has class 3 # cp 034f (gid 1386) has class 1 but target (gid 2188) has class 3 # cp 0488 (gid 1489) has class 1 but target (gid 2291) has class 3 # cp 0489 (gid 1490) has class 1 but target (gid 2292) has class 3 enable gdef/classdef/not_combining_mismatch only cp 0334-0338 0340-0341 034f 0488-0489 name like Tinos; weight like Italic; version == 1.30 disable head/hhea disable head/os2 # 28 glyphs have bounds errors # glyph bounds limits max 1825, min -443 # cp 01cd (gid 828) above max (1832) but target (gid 896) is not # cp 01cf (gid 830) above max (1832) but target (gid 898) is not # cp 01d1 (gid 832) above max (1832) but target (gid 900) is not # cp 01d3 (gid 834) above max (1832) but target (gid 902) is not # cp 0309 (gid 692) above max (1835) but target (gid 760) is not # cp 032c (gid 1351) below min (-444) but target (gid 1423) is not # cp 032d (gid 1352) below min (-444) but target (gid 1424) is not # cp 03e1 (gid 1423) below min (-446) but target (gid 1495) is not # cp 1d68 (gid 2141) below min (-445) but target (gid 2244) is not # cp 1d79 (gid 2195) below min (-444) but target (gid 2317) is not # cp 1e12 (gid 1616) below min (-444) but target (gid 1719) is not # cp 1e13 (gid 1617) below min (-444) but target (gid 1720) is not # cp 1e18 (gid 1622) below min (-444) but target (gid 1725) is not # cp 1e19 (gid 1623) below min (-444) but target (gid 1726) is not # cp 1e31 (gid 1647) above max (1826) but target (gid 1750) is not # cp 1e3c (gid 1658) below min (-444) but target (gid 1761) is not # cp 1e3d (gid 1659) below min (-444) but target (gid 1762) is not # cp 1e4a (gid 1672) below min (-444) but target (gid 1775) is not # cp 1e4b (gid 1673) below min (-444) but target (gid 1776) is not # cp 1e70 (gid 1710) below min (-444) but target (gid 1813) is not # cp 1e71 (gid 1711) below min (-444) but target (gid 1814) is not # cp 1e76 (gid 1716) below min (-444) but target (gid 1819) is not # cp 1e77 (gid 1717) below min (-444) but target (gid 1820) is not # cp 1ec4 (gid 776) above max (1854) but target (gid 844) is not # cp 2017 (gid 307) below min (-526) but target (gid 308) is not # cp 222b (gid 155) below min (-549) but target (gid 156) is not # cp a71b (gid 2405) above max (1910) but target (gid 2527) is not # cp a71c (gid 2406) above max (1910) but target (gid 2528) is not enable bounds/glyph/ymax only gid 692 776 828 830 832 834 1647 2405-2406 enable bounds/glyph/ymin only gid 155 307 1351-1352 1423 1616-1617 1622-1623 1658-1659 1672-1673 1710-1711 1716-1717 2141 2195 # 8 mark glyphs have classDef errors # cp 0334 (gid 1359) has non-combining-mark glyph class 1 but target (gid 1431) is correct # cp 0335 (gid 1360) has non-combining-mark glyph class 1 but target (gid 1432) is correct # cp 0336 (gid 1361) has non-combining-mark glyph class 1 but target (gid 1433) is correct # cp 0337 (gid 1362) has non-combining-mark glyph class 1 but target (gid 1434) is correct # cp 0338 (gid 1363) has non-combining-mark glyph class 1 but target (gid 1435) is correct # cp 0340 (gid 1371) has non-combining-mark glyph class 1 but target (gid 1443) is correct # cp 0341 (gid 1372) has non-combining-mark glyph class 1 but target (gid 1444) is correct # cp 034f (gid 1386) has non-combining-mark glyph class 1 but target (gid 1458) is correct enable gdef/classdef/combining_mismatch only cp 0334-0338 0340-0341 034f # 10 glyphs have classDef differences # cp 0334 (gid 1359) has class 1 but target (gid 1431) has class 3 # cp 0335 (gid 1360) has class 1 but target (gid 1432) has class 3 # cp 0336 (gid 1361) has class 1 but target (gid 1433) has class 3 # cp 0337 (gid 1362) has class 1 but target (gid 1434) has class 3 # cp 0338 (gid 1363) has class 1 but target (gid 1435) has class 3 # cp 0340 (gid 1371) has class 1 but target (gid 1443) has class 3 # cp 0341 (gid 1372) has class 1 but target (gid 1444) has class 3 # cp 034f (gid 1386) has class 1 but target (gid 1458) has class 3 # cp 0488 (gid 1489) has class 1 but target (gid 1561) has class 3 # cp 0489 (gid 1490) has class 1 but target (gid 1562) has class 3 enable gdef/classdef/not_combining_mismatch only cp 0334-0338 0340-0341 034f 0488-0489 name like Tinos; weight like Regular; version == 1.30 disable head/hhea disable head/os2 # 10 glyphs have bounds errors # glyph bounds limits max 1825, min -443 # cp 01f8 (gid 971) above max (1831) but target (gid 1773) is not # cp 021f (gid 1004) above max (1833) but target (gid 1806) is not # cp 0309 (gid 692) above max (1835) but target (gid 1140) is not # cp 1d77 (gid 2193) below min (-528) but target (gid 3194) is not # cp 1d79 (gid 2195) below min (-444) but target (gid 3196) is not # cp 1ec4 (gid 776) above max (1854) but target (gid 1224) is not # cp 2017 (gid 307) below min (-526) but target (gid 308) is not # cp 222b (gid 155) below min (-549) but target (gid 156) is not # cp a71b (gid 2405) above max (1910) but target (gid 3408) is not # cp a71c (gid 2406) above max (1910) but target (gid 3409) is not enable bounds/glyph/ymax only gid 692 776 971 1004 2405-2406 enable bounds/glyph/ymin only gid 155 307 2193 2195 # 8 mark glyphs have classDef errors # cp 0334 (gid 1359) has non-combining-mark glyph class 1 but target (gid 2161) is correct # cp 0335 (gid 1360) has non-combining-mark glyph class 1 but target (gid 2162) is correct # cp 0336 (gid 1361) has non-combining-mark glyph class 1 but target (gid 2163) is correct # cp 0337 (gid 1362) has non-combining-mark glyph class 1 but target (gid 2164) is correct # cp 0338 (gid 1363) has non-combining-mark glyph class 1 but target (gid 2165) is correct # cp 0340 (gid 1371) has non-combining-mark glyph class 1 but target (gid 2173) is correct # cp 0341 (gid 1372) has non-combining-mark glyph class 1 but target (gid 2174) is correct # cp 034f (gid 1386) has non-combining-mark glyph class 1 but target (gid 2188) is correct enable gdef/classdef/combining_mismatch only cp 0334-0338 0340-0341 034f # 10 glyphs have classDef differences # cp 0334 (gid 1359) has class 1 but target (gid 2161) has class 3 # cp 0335 (gid 1360) has class 1 but target (gid 2162) has class 3 # cp 0336 (gid 1361) has class 1 but target (gid 2163) has class 3 # cp 0337 (gid 1362) has class 1 but target (gid 2164) has class 3 # cp 0338 (gid 1363) has class 1 but target (gid 2165) has class 3 # cp 0340 (gid 1371) has class 1 but target (gid 2173) has class 3 # cp 0341 (gid 1372) has class 1 but target (gid 2174) has class 3 # cp 034f (gid 1386) has class 1 but target (gid 2188) has class 3 # cp 0488 (gid 1489) has class 1 but target (gid 2291) has class 3 # cp 0489 (gid 1490) has class 1 but target (gid 2292) has class 3 enable gdef/classdef/not_combining_mismatch only cp 0334-0338 0340-0341 034f 0488-0489 nototools-2017-09-25-tooling-for-phase3-update/nototools/decompose_ttc.py000077500000000000000000000024121316231664500263300ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Decompose a TTC file to its pieces.""" __author__ = 'roozbeh@google.com (Roozbeh Pournader)' import sys from fontTools import ttLib from fontTools.ttLib import sfnt def main(argv): """Decompose all fonts provided in the command line.""" for font_file_name in argv[1:]: with open(font_file_name, 'rb') as font_file: font = sfnt.SFNTReader(font_file, fontNumber=0) num_fonts = font.numFonts for font_number in range(num_fonts): font = ttLib.TTFont(font_file_name, fontNumber=font_number) font.save('%s-part%d' % (font_file_name, font_number)) if __name__ == '__main__': main(sys.argv) nototools-2017-09-25-tooling-for-phase3-update/nototools/docker/000077500000000000000000000000001316231664500243735ustar00rootroot00000000000000nototools-2017-09-25-tooling-for-phase3-update/nototools/docker/devnoto/000077500000000000000000000000001316231664500260515ustar00rootroot00000000000000nototools-2017-09-25-tooling-for-phase3-update/nototools/docker/devnoto/Dockerfile000066400000000000000000000003451316231664500300450ustar00rootroot00000000000000# Build image for noto development. # Using this requires that you map the four core noto repos on the host # to /app/noto/nototools... etc. FROM toolbase:latest COPY *.sh /tmp/ RUN /tmp/notodevsetup.sh ENTRYPOINT ["/bin/bash"] nototools-2017-09-25-tooling-for-phase3-update/nototools/docker/devnoto/notodevsetup.sh000077500000000000000000000041271316231664500311530ustar00rootroot00000000000000#! /bin/bash set -e # Note, this assumes the noto workspaces have been mapped under /app/noto such # that nototools, noto-emoji, noto-fonts, and noto-cjk all have /app/noto as # their parent. Use -v when calling docker run to map them. # noto uses otf2otc and otc2otf from afdko # we don't do a full install, the python code issues a shell command using # the full path to the tool so I think we're ok not messing with the PATH. cd /app/pkgs git clone --depth 1 -b master https://github.com/adobe-type-tools/afdko.git # let noto know where it is located mkdir -p /usr/local/share/noto cat << EOF >> /usr/local/share/noto/config # noto_tools is used to locate sample text data. it's not copied with the # install so we need to point to it. noto_tools=/app/noto/nototools noto_fonts_alpha=/app/noto/noto-fonts-alpha noto_fonts=/app/noto/noto-fonts noto_cjk=/app/noto/noto-cjk noto_emoji=/app/noto/noto-emoji noto_source=/app/noto/noto-source # the ttcutils use afdko via this, we don't do a full install afdko=/app/pkgs/afdko EOF # we usually run as root in docker so this is not strictly necessary... chmod a+r /usr/local/share/noto/config # crate a script to setup nototools and install it, this has to be run in # an active container that has mapped noto. cat << EOF >> /usr/local/share/noto/setup_nototools.sh pushd /app/noto/nototools pip install -r requirements.txt python setup.py develop popd EOF chmod a+x /usr/local/share/noto/setup_nototools.sh # we use 7za when we generate zips for the website data. # # some tools expect the en_US.UTF-8 locale to be available, it's not by default. # we're based on a python image, which is debian not ubuntu, and the available # package repos don't include language-pack-foo, so do a debian-style install. # if that image changes we might want to change this. apt-get update && apt-get install -y locales p7zip-full cp /etc/locale.gen /etc/locale.gen.bak echo "en_US.UTF-8 UTF-8" > /etc/locale.gen locale-gen en_US.UTF-8 dpkg-reconfigure -f noninteractive locales # this won't change our locale if we run bash instead of login. /usr/sbin/update-locale LANG=en_US.UTF-8 echo "DONE" nototools-2017-09-25-tooling-for-phase3-update/nototools/docker/make_getnoto/000077500000000000000000000000001316231664500270475ustar00rootroot00000000000000nototools-2017-09-25-tooling-for-phase3-update/nototools/docker/make_getnoto/Dockerfile000066400000000000000000000002331316231664500310370ustar00rootroot00000000000000# Build get/noto website data. FROM noto:latest COPY build_noto_site_data.sh /tmp/ ENTRYPOINT ["/tmp/build_noto_site_data.sh"] # ENTRYPOINT ["/bin/bash"]nototools-2017-09-25-tooling-for-phase3-update/nototools/docker/make_getnoto/build_noto_site_data.sh000077500000000000000000000041351316231664500335640ustar00rootroot00000000000000#!/bin/bash # Build data for get/noto site. # Map /tmp/website2 to an external location to get the data when this is # complete. # Put the repos at the latest tagged release. This does not do a git pull, we # assume noto is already at or beyond the latest release. Might want to rethink # that. cd /app/noto/nototools/nototools ./sync_repos.py -v # Add missing font package to the CJK repo. # This is too big for github. Currently we fetch it from the website itself, # which is kind of circular, since we're building the website... We need a # 'prerelease' location for things like this. cd /app/noto/noto-cjk wget https://storage.googleapis.com/noto-website/pkgs/NotoSerifCJK.ttc.zip # Prepare the emoji font/images. # This is designed for a tagged release. We build the emoji font, but don't # copy it as it should be 'the same' as the one already in the fonts subdir. # Copying it would make the repo dirty, and generate_website_2_data will # complain. Since we only need the images, we don't need to use ZOPFLI # as the font doesn't matter. ZOPFLIPNG has to be disabled since it will be # used by default if present. We could target the images only but this is # simpler. cd /app/noto/noto-emoji make clean make -j 8 ZOPFLIPNG= # /app/pkgs/zopfli/zopflipng # Don't copy, if we're generating a release build of the website this will # make the repo 'dirty'. # cp NotoColorEmoji.ttf fonts/ # Generate most of the data. This requires us to be at tagged releases. # We don't 'clean' the directory since we expect it might be mapped to one # outside docker, and when that is the case we can't delete it since it is # busy. Probably we should delete the contents instead, right now we # depend on the person running the docker environment to ensure the directory # mapped to is clean. cd /app/noto/nototools/nototools ./generate_website_2_data.py # Add the emoji data to the other website data cd /app/noto/noto-emoji ./generate_emoji_name_data.py -m -1 mkdir -p /tmp/website2/emoji cp emoji/data.json /tmp/website2/emoji cp build/compressed_pngs/*.png /tmp/website2/emoji # /tmp/website2 now holds the data. echo 'DONE' nototools-2017-09-25-tooling-for-phase3-update/nototools/docker/toolbase/000077500000000000000000000000001316231664500262035ustar00rootroot00000000000000nototools-2017-09-25-tooling-for-phase3-update/nototools/docker/toolbase/Dockerfile000066400000000000000000000002161316231664500301740ustar00rootroot00000000000000# Base image for noto repos, with required libraries FROM python:2.7 COPY ./basesetup.sh /tmp RUN /tmp/basesetup.sh ENTRYPOINT ["/bin/bash"] nototools-2017-09-25-tooling-for-phase3-update/nototools/docker/toolbase/basesetup.sh000077500000000000000000000051671316231664500305460ustar00rootroot00000000000000#! /bin/bash set -e mkdir -p /app/pkgs # gtk2 for pango, ragel for autogen, gperf for fontconfig, python-lxml for fc build # qt5-default for qtmake and to default to use qt5, for ttfautohint # (installing qt5-qmake and then export QT_SELECT=qt5 didn't work: # qmake: could not find a Qt installation of 'qt5' # so perhaps qt5-qmake does not pull in qt5 dependencies automatically) # udhr tooling uses dos2unix apt-get update && apt-get install -y python-gtk2 ragel gperf python-lxml qt5-default dos2unix # install a newer version of git GIT="git-2.12.2" cd /app/pkgs wget https://www.kernel.org/pub/software/scm/git/${GIT}.tar.xz -O - | tar -xJ cd $GIT make configure ./configure --prefix=/usr/local make all NO_GETTEXT=1 make install NO_GETTEXT=1 # update bash cache hash git # patch lookup path so our python in /usr/local/lib can find pango in /usr/lib cat << EOF >> /usr/local/lib/python2.7/sitecustomize.py import sys sys.path.append('/usr/lib/python2.7/dist-packages') sys.path.append('/usr/lib/python2.7/dist-packages/gtk-2.0') EOF # for harfbuzz cd /app/pkgs git clone https://github.com/behdad/harfbuzz.git cd harfbuzz # git checkout 1.4.6 ./autogen.sh make make install /sbin/ldconfig /usr/local/lib # get ttfautohint for font swatting # requires harfbuzz >= 1.3.0, so install after installing harfbuzz cd /app/pkgs AUTOHINT="1.7" wget https://sourceforge.net/projects/freetype/files/ttfautohint/${AUTOHINT}/ttfautohint-${AUTOHINT}.tar.gz -O - | tar -xz cd "ttfautohint-${AUTOHINT}" ./configure make make check make install # behdad's cairo has the patch for color emoji cd /app/pkgs git clone https://github.com/behdad/cairo behdad_cairo cd behdad_cairo ./autogen.sh make make install # need new-ish fontconfig to scale bitmap emoji font git clone --branch 2.12.1 git://anongit.freedesktop.org/fontconfig cd fontconfig ./autogen.sh --sysconfdir=/etc --prefix=/usr --mandir=/usr/share/man make make install # install optipng for emoji quick build OPTIPNG="optipng-0.7.6" cd /app/pkgs wget http://prdownloads.sourceforge.net/optipng/${OPTIPNG}.tar.gz -O - | tar -xz cd $OPTIPNG ./configure make make check make install # install zopflipng for much slower but somewhat better compression. # but png can only compress so much. cd /app/pkgs git clone https://github.com/google/zopfli.git cd zopfli make zopflipng cp zopflipng /usr/local/bin # get pycairo cd /app/pkgs git clone git://git.cairographics.org/git/py2cairo cd py2cairo ./waf configure ./waf build ./waf install # ensure libraries get found /sbin/ldconfig /usr/local/lib # at this point we could clean all these repos but perhaps we want to have them in # the image for debugging? echo "DONE" nototools-2017-09-25-tooling-for-phase3-update/nototools/docker/toolnoto/000077500000000000000000000000001316231664500262505ustar00rootroot00000000000000nototools-2017-09-25-tooling-for-phase3-update/nototools/docker/toolnoto/Dockerfile000066400000000000000000000002131316231664500302360ustar00rootroot00000000000000# Build image for noto repos. FROM toolbase:latest COPY *.sh /tmp/ RUN /tmp/notosetup.sh RUN /tmp/initfccache.sh ENTRYPOINT ["/bin/bash"] nototools-2017-09-25-tooling-for-phase3-update/nototools/docker/toolnoto/initfccache.sh000077500000000000000000000005101316231664500310430ustar00rootroot00000000000000#! /bin/bash set -e # this is to init the fontconfig cache and our custom fonts.conf # we also lookup the emoji font, it should be found, and scalable. cd /app/noto/nototools/nototools ./create_image.py --test rm *.png *.svg cd /app/noto FONTCONFIG_FILE=/app/noto/nototools/fonts.conf fc-match --verbose 'noto color emoji-32' nototools-2017-09-25-tooling-for-phase3-update/nototools/docker/toolnoto/notosetup.sh000077500000000000000000000061401316231664500306500ustar00rootroot00000000000000#! /bin/bash set -e # noto uses otf2otc and otc2otf from afdko # we don't do a full install, the python code issues a shell command using # the full path to the tool so I think we're ok not messing with the PATH. cd /app/pkgs git clone --depth 1 -b master https://github.com/adobe-type-tools/afdko.git # install noto. especially for the fonts, we don't need the full history. mkdir -p /app/noto cd /app/noto # get the most recent version of the tools git clone --depth 1 -b master https://github.com/googlei18n/nototools.git # we are going to clone at release tags for these, but this configures # the repos to only know about the tag, not any branches. So we then # need to reconfigure and set up a tracking branch for master so it's # easy to sync up if we want to. We will leave them at the tag, however. # these are the latest tags as of 2017-05-19. This will prune the # history while letting us have at least one tagged commit and allow us # to use master if we want, as well as update. # # Unfortunately, -q doesn't supporess the warnings about detached HEAD # when we clone this way. git clone --depth 1 --branch v2017-05-18-cook-color-fix https://github.com/googlei18n/noto-emoji.git cd noto-emoji git config --add remote.origin.fetch +refs/heads/master:refs/remotes/origin/master git fetch git branch -t master origin/master cd .. git clone --depth 1 --branch v2017-04-25-adlam https://github.com/googlei18n/noto-fonts.git cd noto-fonts git config --add remote.origin.fetch +refs/heads/master:refs/remotes/origin/master git fetch git branch -t master origin/master cd .. git clone --depth 1 --branch v2017-04-03-serif-cjk-1-0 https://github.com/googlei18n/noto-cjk.git cd noto-cjk git config --add remote.origin.fetch +refs/heads/master:refs/remotes/origin/master git fetch git branch -t master origin/master cd .. # setup nototools and install it cd /app/noto/nototools pip install -r requirements.txt python setup.py install # let noto know where it is located mkdir -p /usr/local/share/noto cat << EOF >> /usr/local/share/noto/config # noto_tools is used to locate sample text data. it's not copied with the # install so we need to point to it. noto_tools=/app/noto/nototools noto_fonts=/app/noto/noto-fonts noto_cjk=/app/noto/noto-cjk noto_emoji=/app/noto/noto-emoji # the ttcutils use afdko via this, we don't do a full install afdko=/app/pkgs/afdko EOF # we usually run as root in docker so this is not strictly necessary... chmod a+r /usr/local/share/noto/config # we use 7za when we generate zips for the website data. # # some tools expect the en_US.UTF-8 locale to be available, it's not by default. # we're based on a python image, which is debian not ubuntu, and the available # package repos don't include language-pack-foo, so do a debian-style install. # if that image changes we might want to change this. apt-get update && apt-get install -y locales p7zip-full cp /etc/locale.gen /etc/locale.gen.bak echo "en_US.UTF-8 UTF-8" > /etc/locale.gen locale-gen en_US.UTF-8 dpkg-reconfigure -f noninteractive locales # this won't change our locale if we run bash instead of login. /usr/sbin/update-locale LANG=en_US.UTF-8 echo "DONE" nototools-2017-09-25-tooling-for-phase3-update/nototools/drop_hints.py000077500000000000000000000031321316231664500256510ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Drop hints from a font.""" __author__ = 'roozbeh@google.com (Roozbeh Pournader)' import array import sys from fontTools import ttLib def drop_hints_from_glyphs(font): """Drops the hints from a font's glyphs.""" glyf_table = font['glyf'] for glyph_index in range(len(glyf_table.glyphOrder)): glyph_name = glyf_table.glyphOrder[glyph_index] glyph = glyf_table[glyph_name] if glyph.numberOfContours > 0: if glyph.program.bytecode: glyph.program.bytecode = array.array('B') def drop_tables(font, tables): """Drops the listed tables from a font.""" for table in tables: if table in font: del font[table] def main(argv): """Drop the hints from the first file specified and save as second.""" font = ttLib.TTFont(argv[1]) drop_hints_from_glyphs(font) drop_tables(font, ['cvt ', 'fpgm', 'hdmx', 'LTSH', 'prep', 'VDMX']) font.save(argv[2]) if __name__ == '__main__': main(sys.argv) nototools-2017-09-25-tooling-for-phase3-update/nototools/dump_otl.py000077500000000000000000000421001316231664500253210ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Dumps the OpenType Layout tables in a font in a readable format.""" __author__ = "roozbeh@google.com (Roozbeh Pournader)" import sys from fontTools import ttLib def internal_font_name(font): """Returns the font name according to the data in the name table.""" name_table = font['name'] for record in name_table.names: identifier = (record.nameID, record.platformID, record.platEncID, record.langID) if identifier in [(4, 3, 1, 0x409), (4, 3, 0, 0x409)]: return unicode(record.string, 'UTF-16BE') def print_indented(output_string, indents=1): """Prints a string indented with a specified number of spaces.""" print ' ' * indents + output_string def printable_glyph_class(glyph_list, quote=False): """Returns a printable form for a class of glyphs.""" if quote: suffix = "'" else: suffix = '' if len(glyph_list) == 1: return list(glyph_list)[0]+suffix else: return '[' + ' '.join(glyph_list) + ']'+suffix def printable_glyph_list(glyph_list, quote=False): """Returns a printable form for a list of glyphs.""" if quote: suffix = "'" else: suffix = '' if len(glyph_list) == 1: return glyph_list[0]+suffix else: glyph_list = [glyph+suffix for glyph in glyph_list] return ' '.join(glyph_list) def dump_lang_sys(script, lang, lang_sys): """Dumps a language system.""" print '%s %s:' % (script, lang), assert lang_sys.LookupOrder is None if lang_sys.ReqFeatureIndex != 65535: print '<%s>' % lang_sys.ReqFeatureIndex, print lang_sys.FeatureIndex def extract_glyphs_from_coverage(coverage): """Return a list of glyphs from a coverage.""" if isinstance(coverage, str): return [coverage] else: return coverage.glyphs def print_contextual_substitution(backtrack, center, lookahead, subs, reverse=False): """Prints out a contextual substitution rule.""" if reverse: rule_name = 'rsub' else: rule_name = 'sub' if not subs: rule_name = 'ignore ' + rule_name output_list = [] for coverage in center: glyphs = extract_glyphs_from_coverage(coverage) output_list.append(printable_glyph_class(glyphs, quote=True)) if subs: if isinstance(subs[0], str): output_list.append('by') output_list.append(printable_glyph_class(subs)) else: records_added = 0 for record in subs: output_list.insert( record.SequenceIndex + 1 + records_added, 'lookup %d' % record.LookupListIndex) records_added += 1 for coverage in backtrack: glyphs = extract_glyphs_from_coverage(coverage) output_list.insert(0, printable_glyph_class(glyphs)) for coverage in lookahead: glyphs = extract_glyphs_from_coverage(coverage) output_list.append(printable_glyph_class(glyphs)) print_indented('%s %s;' % (rule_name, ' '.join(output_list))) def dump_gsub_subtable(lookup_type, subtable): """Dumps a GSUB subtable.""" if lookup_type == 7: # Extension. Decompile and pass down as another lookup type lookup_type = subtable.ExtensionLookupType print_indented('# (extension for %d)' % lookup_type) ext_sub_table = subtable.ExtSubTable subtable = ext_sub_table # Proceed to the actual type if lookup_type == 1: for key in sorted(subtable.mapping.keys()): print_indented('sub %s by %s;' % (key, subtable.mapping[key])) elif lookup_type == 2: for key, value in sorted(subtable.mapping.items()): print_indented('sub %s by %s;' % (key, ' '.join(value))) elif lookup_type == 3: for key in sorted(subtable.alternates.keys()): print_indented('sub %s from %s;' % ( key, printable_glyph_class(subtable.alternates[key]))) elif lookup_type == 4: for key in sorted(subtable.ligatures.keys()): for ligature in subtable.ligatures[key]: print_indented('sub %s by %s;' % ( printable_glyph_list([key]+ligature.Component), ligature.LigGlyph)) elif lookup_type == 5 and subtable.Format == 1: for index in range(subtable.SubRuleSetCount): glyph = subtable.Coverage.glyphs[index] for subrule in subtable.SubRuleSet[index].SubRule: whole_input = [glyph] + subrule.Input print_contextual_substitution( [], whole_input, [], subrule.SubstLookupRecord) elif lookup_type == 5 and subtable.Format == 2: print_indented('type=%d format=%d not supported yet' % ( lookup_type, subtable.Format)) # assert (max(subtable.ClassDef.classDefs.values()) # <= subtable.SubClassSetCount) # assert len(subtable.SubClassSet) == subtable.SubClassSetCount # print subtable.Coverage.glyphs # print subtable.ClassDef.classDefs # for index in range(subtable.SubClassSetCount): # sub_class = subtable.SubClassSet[index] # if sub_class: # print index, vars(sub_class) # else: # print index, sub_class elif lookup_type == 5 and subtable.Format == 3: print_contextual_substitution( [], subtable.Coverage, [], subtable.SubstLookupRecord) elif lookup_type in [6, 8]: is_reverse = (lookup_type == 8) if subtable.Format == 1: print_contextual_substitution( subtable.BacktrackCoverage, [subtable.Coverage], subtable.LookAheadCoverage, subtable.Substitute, reverse=is_reverse) elif subtable.Format == 3: print_contextual_substitution( subtable.BacktrackCoverage, subtable.InputCoverage, subtable.LookAheadCoverage, subtable.SubstLookupRecord, reverse=is_reverse) else: print_indented('# type=%d format=%d not supported yet' % ( lookup_type, subtable.Format)) else: print_indented('# type=%d format=%d not supported yet' % ( lookup_type, subtable.Format)) # print vars(subtable) def printable_value_record(value_record): """Prints a GPOS ValueRecord.""" if value_record is None: return '' if vars(value_record).keys() == ['XAdvance']: return '%d' % value_record.XAdvance output_list = [] for key in ['XPlacement', 'YPlacement', 'XAdvance', 'YAdvance']: output_list.append(vars(value_record).get(key, 0)) return '<%d %d %d %d>' % tuple(output_list) def printable_device(device): """Returns a printable form of a device record.""" if device is None: return '' output_list = [] assert device.StartSize + len(device.DeltaValue) - 1 == device.EndSize for index in range(len(device.DeltaValue)): output_list.append('%d %d' % ( device.StartSize + index, device.DeltaValue[index])) return '' % (', '.join(output_list)) def printable_anchor(anchor): """Returns a printable form of an anchor.""" if anchor is None: return '' if anchor.Format == 1: return '' % (anchor.XCoordinate, anchor.YCoordinate) elif anchor.Format == 2: return '' % ( anchor.XCoordinate, anchor.YCoordinate, anchor.AnchorPoint) elif anchor.Format == 3: return '' % ( anchor.XCoordinate, anchor.YCoordinate, printable_device(anchor.XDeviceTable), printable_device(anchor.YDeviceTable)) else: print vars(anchor) assert False, "don't know about anchor format" def dump_marks(glyphs, records): """Prints marks with their classes.""" index = 0 for glyph in glyphs: record = records[index] print_indented( '%s: class=%d %s' % ( glyph, record.Class, printable_anchor(record.MarkAnchor)), indents=2) index += 1 def dump_bases(glyphs, records, printable_function): """Prints bases with their classes.""" index = 0 for glyph in glyphs: record = records[index] print_indented( '%s: %s' % (glyph, printable_function(record)), indents=2) index += 1 def reverse_class_def(class_def_dict): """Reverses a ClassDef dictionary.""" reverse = {} for key in class_def_dict: value = class_def_dict[key] try: reverse[value].add(key) except KeyError: reverse[value] = {key} return reverse def dump_gpos_subtable(lookup_type, subtable): """Prints a GPOS subtable.""" if lookup_type == 9: # Extension. Decompile and pass down as another lookup type lookup_type = subtable.ExtensionLookupType print_indented('# (extension for %d)' % lookup_type) ext_sub_table = subtable.ExtSubTable subtable = ext_sub_table if lookup_type == 1 and subtable.Format == 1: print_indented('position %s %s;' % ( printable_glyph_class(subtable.Coverage.glyphs), printable_value_record(subtable.Value))) elif lookup_type == 1 and subtable.Format == 2: for index, value_record in enumerate(subtable.Value): print_indented('position %s %s;' % ( subtable.Coverage.glyphs[index], printable_value_record(value_record))) elif lookup_type == 2 and subtable.Format == 1: first_glyphs = subtable.Coverage.glyphs for index, pair_set in enumerate(subtable.PairSet): first_glyph = first_glyphs[index] for pair_value_record in pair_set.PairValueRecord: if pair_value_record.Value2 is None: print_indented( 'position %s %s %s;' % ( first_glyph, pair_value_record.SecondGlyph, printable_value_record(pair_value_record.Value1))) else: print_indented( 'position %s %s %s %s;' % ( first_glyph, printable_value_record(pair_value_record.Value1), pair_value_record.SecondGlyph, printable_value_record(pair_value_record.Value2))) elif lookup_type == 2 and subtable.Format == 2: class1_reverse = reverse_class_def(subtable.ClassDef1.classDefs) class2_reverse = reverse_class_def(subtable.ClassDef2.classDefs) for index1, class1_record in enumerate(subtable.Class1Record): class1 = class1_reverse.get(index1) if class1 is None: continue for index2, class2_record in enumerate(class1_record.Class2Record): class2 = class2_reverse.get(index2) if class2 is None: continue if class2_record.Value2 is None: value_record1 = printable_value_record(class2_record.Value1) if value_record1 == '0': continue print_indented( 'position %s %s %s;' % ( printable_glyph_class(class1), printable_glyph_class(class2), value_record1)) else: print_indented( 'position %s %s %s %s;' % ( printable_glyph_class(class1), printable_value_record(class2_record.Value1), printable_glyph_class(class2), printable_value_record(class2_record.Value2))) elif lookup_type == 3 and subtable.Format == 1: for index, entry_exit_record in enumerate(subtable.EntryExitRecord): print_indented( 'position cursive %s %s %s;' % ( subtable.Coverage.glyphs[index], printable_anchor(entry_exit_record.EntryAnchor), printable_anchor(entry_exit_record.ExitAnchor))) elif lookup_type == 4: print_indented('Mark:') dump_marks(subtable.MarkCoverage.glyphs, subtable.MarkArray.MarkRecord) print_indented('Base:') dump_bases( subtable.BaseCoverage.glyphs, subtable.BaseArray.BaseRecord, lambda record: ' '.join([printable_anchor(anchor) for anchor in record.BaseAnchor])) elif lookup_type == 5: print_indented('Mark:') dump_marks(subtable.MarkCoverage.glyphs, subtable.MarkArray.MarkRecord) def printable_ligature_attach(attach): """Output routine for LigatureAttach.""" output_list = [] for record in attach.ComponentRecord: anchor_list = [] for anchor in record.LigatureAnchor: anchor_list.append(printable_anchor(anchor)) output_list.append(' '.join(anchor_list)) return ', '.join(output_list) print_indented('Liga:') dump_bases( subtable.LigatureCoverage.glyphs, subtable.LigatureArray.LigatureAttach, printable_ligature_attach) elif lookup_type == 6: print_indented('Mark1:') dump_marks(subtable.Mark1Coverage.glyphs, subtable.Mark1Array.MarkRecord) print_indented('Mark2:') dump_bases( subtable.Mark2Coverage.glyphs, subtable.Mark2Array.Mark2Record, lambda record: ' '.join([printable_anchor(anchor) for anchor in record.Mark2Anchor])) elif lookup_type == 8 and subtable.Format == 3: print_contextual_substitution( subtable.BacktrackCoverage, subtable.InputCoverage, subtable.LookAheadCoverage, subtable.PosLookupRecord) else: print_indented('type=%d format=%d not supported yet' % ( lookup_type, subtable.Format)) def dump_script_record(script_record): """Prints out scripts records.""" for script in script_record: script_tag = script.ScriptTag default_lang_sys = script.Script.DefaultLangSys if default_lang_sys: dump_lang_sys(script_tag, 'dflt', default_lang_sys) for lang_sys_record in script.Script.LangSysRecord: dump_lang_sys(script_tag, lang_sys_record.LangSysTag, lang_sys_record.LangSys) def dump_feature_record(feature_record): """Prints out feature records.""" for index in range(len(feature_record)): record = feature_record[index] tag = record.FeatureTag feature = record.Feature print index, tag, feature.LookupListIndex if feature.FeatureParams is not None: print_indented('# name <%s>;' % feature.FeatureParams.UINameID) def dump_lookup_list(lookup_list, table_name): """Prints out a lookup list.""" for index in range(len(lookup_list)): lookup = lookup_list[index] print 'lookup %d { # type=%d flag=0x%X' % ( index, lookup.LookupType, lookup.LookupFlag) for subtable in lookup.SubTable: if table_name == 'GSUB': dump_gsub_subtable(lookup.LookupType, subtable) elif table_name == 'GPOS': dump_gpos_subtable(lookup.LookupType, subtable) print '}' def dump_otl_table(font, table_name): """Prints out an OpenType Layout table.""" if table_name not in font: print 'no %s table' % table_name print return else: print '%s' % table_name print '----' table = font[table_name].table dump_script_record(table.ScriptList.ScriptRecord) print dump_feature_record(table.FeatureList.FeatureRecord) print dump_lookup_list(table.LookupList.Lookup, table_name) print def main(): """Dump the OpenType Layout tables for all input arguments.""" for font_file_name in sys.argv[1:]: font = ttLib.TTFont(font_file_name) print '%s: %s' % (font_file_name, internal_font_name(font)) dump_otl_table(font, 'GPOS') dump_otl_table(font, 'GSUB') if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/nototools/extra_locale_data.py000077500000000000000000000444551316231664500271500ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: UTF-8 -*- # # Copyright 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Extra locale data that's still missing from CLDR.""" __author__ = 'roozbeh@google.com (Roozbeh Pournader)' LIKELY_SUBTAGS = { 'abr': ('abr', 'Latn', 'GH'), # Abron 'abq': ('abq', 'Cyrl', 'RU'), # Abaza 'ada': ('ada', 'Latn', 'GH'), # Adangme 'ae': ('ae', 'Avst', 'ZZ'), # Avestan 'aeb': ('aeb', 'Arab', 'TN'), # Tunisian Arabic 'aii': ('aii', 'Syrc', 'IQ'), # Assyrian Neo-Aramaic 'ain': ('ain', 'Kana', 'JP'), # Ainu 'akk': ('akk', 'Xsux', 'ZZ'), # Akkadian 'akz': ('akz', 'Latn', 'US'), # Alabama 'ale': ('ale', 'Latn', 'US'), # Aleut 'aln': ('aln', 'Latn', 'XK'), # Gheg Albanian 'an': ('an', 'Latn', 'ES'), # Aragonese 'anp': ('anp', 'Deva', 'IN'), # Angika 'arc': ('arc', 'Armi', 'ZZ'), # Imperial Aramaic 'aro': ('aro', 'Latn', 'BO'), # Araona 'arp': ('arp', 'Latn', 'US'), # Arapaho 'arq': ('arq', 'Arab', 'DZ'), # Algerian Arabic 'arw': ('arw', 'Latn', 'GY'), # Arawak 'ary': ('ary', 'Arab', 'MA'), # Moroccan Arabic 'arz': ('arz', 'Arab', 'EG'), # Egyptian Arabic 'avk': ('avk', 'Latn', '001'), # Kotava 'azb': ('azb', 'Arab', 'IR'), # Southern Azerbaijani 'bar': ('bar', 'Latn', 'AT'), # Bavarian 'ber': ('ber', 'Arab', 'MA'), # Berber 'bej': ('bej', 'Arab', 'SD'), # Beja 'bci': ('bci', 'Latn', 'CI'), # Baoulé 'bgc': ('bgc', 'Deva', 'IN'), # Haryanvi 'bhi': ('bhi', 'Deva', 'IN'), # Bhilali 'bhk': ('bhk', 'Latn', 'PH'), # Albay Bikol 'bla': ('bla', 'Latn', 'CA'), # Blackfoot 'blt': ('blt', 'Tavt', 'VN'), # Tai Dam 'bpy': ('bpy', 'Beng', 'IN'), # Bishnupriya 'bqi': ('bqi', 'Arab', 'IR'), # Bakhtiari 'bsq': ('bsq', 'Bass', 'LR'), # Bassa 'bzx': ('bzx', 'Latn', 'ML'), # Kelengaxo Bozo 'cad': ('cad', 'Latn', 'US'), # Caddo 'car': ('car', 'Latn', 'VE'), # Galibi Carib 'cay': ('cay', 'Latn', 'CA'), # Cayuga 'chn': ('chn', 'Latn', 'US'), # Chinook Jargon 'cho': ('cho', 'Latn', 'US'), # Choctaw 'chy': ('chy', 'Latn', 'US'), # Cheyenne 'cjs': ('cjs', 'Cyrl', 'RU'), # Shor 'ckt': ('ckt', 'Cyrl', 'RU'), # Chukchi 'cop': ('cop', 'Copt', 'EG'), # Coptic 'cpf': ('cpf', 'Latn', 'HT'), # Creoles, French 'cps': ('cps', 'Latn', 'PH'), # Capiznon 'crh': ('crh', 'Latn', 'UA'), # Crimean Tatar 'crs': ('crs', 'Latn', 'SC'), # Seselwa Creole French 'ctd': ('ctd', 'Latn', 'MM'), # Tedim Chin 'dak': ('dak', 'Latn', 'US'), # Dakota 'dcc': ('dcc', 'Arab', 'IN'), # Deccan 'del': ('del', 'Latn', 'US'), # Delaware 'din': ('din', 'Latn', 'SS'), # Dinka 'dng': ('dng', 'Cyrl', 'KG'), # Dungan 'dtp': ('dtp', 'Latn', 'MY'), # Central Dusun 'egl': ('egl', 'Latn', 'IT'), # Emilian 'egy': ('egy', 'Egyp', 'ZZ'), # Ancient Egyptian 'eka': ('eka', 'Latn', 'NG'), # Ekajuk 'eky': ('eky', 'Kali', 'TH'), # Eastern Kayah 'esu': ('esu', 'Latn', 'US'), # Central Yupik 'ett': ('ett', 'Ital', 'IT'), # Etruscan 'evn': ('evn', 'Latn', 'CN'), # Evenki 'ext': ('ext', 'Latn', 'ES'), # Extremaduran 'ffm': ('ffm', 'Latn', 'ML'), # Maasina Fulfulde 'frc': ('frc', 'Latn', 'US'), # Cajun French 'frr': ('frr', 'Latn', 'DE'), # Northern Frisian 'frs': ('frs', 'Latn', 'DE'), # Eastern Frisian 'fud': ('fud', 'Latn', 'WF'), # East Futuna 'fuq': ('fuq', 'Latn', 'NE'), # Central-Eastern Niger Fulfulde 'fuv': ('fuv', 'Latn', 'NG'), # Nigerian Fulfulde 'gan': ('gan', 'Hans', 'CN'), # Gan Chinese 'gay': ('gay', 'Latn', 'ID'), # Gayo 'gba': ('gba', 'Latn', 'CF'), # Gbaya 'gbz': ('gbz', 'Arab', 'IR'), # Zoroastrian Dari 'gld': ('gld', 'Cyrl', 'RU'), # Nanai 'gom': ('gom', 'Deva', 'IN'), # Goan Konkani 'got': ('got', 'Goth', 'ZZ'), # Gothic 'grb': ('grb', 'Latn', 'LR'), # Grebo 'grc': ('grc', 'Grek', 'ZZ'), # Ancient Greek 'guc': ('guc', 'Latn', 'CO'), # Wayuu 'gur': ('gur', 'Latn', 'GH'), # Frafra 'hai': ('hai', 'Latn', 'CA'), # Haida 'hak': ('hak', 'Hant', 'CN'), # Hakka Chinese 'haz': ('haz', 'Arab', 'AF'), # Hazaragi 'hif': ('hif', 'Deva', 'FJ'), # Fiji Hindi 'hit': ('hit', 'Xsux', 'ZZ'), # Hittite 'hmd': ('hmd', 'Plrd', 'CN'), # A-Hmao 'hmn': ('hmn', 'Latn', 'CN'), # Hmong 'hnj': ('hnj', 'Latn', 'LA'), # Hmong Njua 'hno': ('hno', 'Arab', 'PK'), # Northern Hindko 'hop': ('hop', 'Latn', 'US'), # Hopi 'hsn': ('hsn', 'Hans', 'CN'), # Xiang Chinese 'hup': ('hup', 'Latn', 'US'), # Hupa 'hz': ('hz', 'Latn', 'NA'), # Herero 'iba': ('iba', 'Latn', 'MY'), # Iban 'ikt': ('ikt', 'Latn', 'CA'), # Inuinnaqtun 'izh': ('izh', 'Latn', 'RU'), # Ingrian 'jam': ('jam', 'Latn', 'JM'), # Jamaican Creole English 'jpr': ('jpr', 'Hebr', 'IL'), # Judeo-Persian 'jrb': ('jrb', 'Hebr', 'IL'), # Jedeo-Arabic 'jut': ('jut', 'Latn', 'DK'), # Jutish 'kac': ('kac', 'Latn', 'MM'), # Kachin 'kca': ('kca', 'Cyrl', 'RU'), # Khanty 'kfy': ('kfy', 'Deva', 'IN'), # Kumaoni 'kjh': ('kjh', 'Cyrl', 'RU'), # Khakas 'kkh': ('kkh', 'Lana', 'MM'), # Khün 'khn': ('khn', 'Deva', 'IN'), # Khandesi 'kiu': ('kiu', 'Latn', 'TR'), # Kirmanjki 'kpy': ('kpy', 'Cyrl', 'RU'), # Koryak 'kr': ('kr', 'Arab', 'NG'), # Kanuri 'krj': ('krj', 'Latn', 'PH'), # Kinaray-a 'kut': ('kut', 'Latn', 'CA'), # Kutenai 'kxm': ('kxm', 'Thai', 'TH'), # Northern Khmer 'kyu': ('kyu', 'Kali', 'MM'), # Western Kayah 'lab': ('lab', 'Lina', 'ZZ'), # Linear A 'lad': ('lad', 'Latn', 'IL'), # Ladino 'lam': ('lam', 'Latn', 'ZM'), # Lamba 'laj': ('laj', 'Latn', 'UG'), # Lango 'lfn': ('lfn', 'Latn', '001'), # Lingua Franca Nova 'lij': ('lij', 'Latn', 'IT'), # Ligurian 'liv': ('liv', 'Latn', 'LV'), # Livonian 'ljp': ('ljp', 'Latn', 'ID'), # Lampung Api 'lrc': ('lrc', 'Arab', 'IR'), # Northern Luri 'ltg': ('ltg', 'Latn', 'LV'), # Latgalian 'lui': ('lui', 'Latn', 'US'), # Luiseno 'lun': ('lun', 'Latn', 'ZM'), # Lunda 'lus': ('lus', 'Latn', 'IN'), # Mizo 'lut': ('lut', 'Latn', 'US'), # Lushootseed 'lzh': ('lzh', 'Hant', 'CN'), # Literary Chinese 'lzz': ('lzz', 'Latn', 'TR'), # Laz 'mdt': ('mdt', 'Latn', 'CG'), # Mbere 'mfa': ('mfa', 'Arab', 'TH'), # Pattani Malay 'mic': ('mic', 'Latn', 'CA'), # Micmac 'mnc': ('mnc', 'Mong', 'CN'), # Manchu 'mns': ('mns', 'Cyrl', 'RU'), # Mansi 'mro': ('mro', 'Mroo', 'BD'), # Mru (dlf, also Latn?) 'mtr': ('mtr', 'Deva', 'IN'), # Mewari 'mus': ('mus', 'Latn', 'US'), # Creek 'mwl': ('mwl', 'Latn', 'PT'), # Mirandese 'mwv': ('mwv', 'Latn', 'ID'), # Mentawai 'myx': ('myx', 'Latn', 'UG'), # Masaaba 'myz': ('myz', 'Mand', 'ZZ'), # Classical Mandaic 'mzn': ('mzn', 'Arab', 'IR'), # Mazanderani 'nan': ('nan', 'Latn', 'CN'), # Min Nan Chinese 'ndc': ('ndc', 'Latn', 'MZ'), # Ndau 'ngl': ('ngl', 'Latn', 'MZ'), # Lomwe 'nia': ('nia', 'Latn', 'ID'), # Nias 'njo': ('njo', 'Latn', 'IN'), # Ao Naga 'noe': ('noe', 'Deva', 'IN'), # Nimadi 'nog': ('nog', 'Cyrl', 'RU'), # Nogai 'non': ('non', 'Runr', 'ZZ'), # Old Norse 'nov': ('nov', 'Latn', '001'), # Novial 'nyo': ('nyo', 'Latn', 'UG'), # Nyoro 'nzi': ('nzi', 'Latn', 'GH'), # Nzima 'ohu': ('ohu', 'Hung', 'HR'), # Old Hungarian 'oj': ('oj', 'Latn', 'CA'), # Ojibwa 'osa': ('osa', 'Latn', 'US'), # Osage 'osc': ('osc', 'Ital', 'ZZ'), # Oscan 'otk': ('otk', 'Orkh', 'ZZ'), # Old Turkish 'pal': ('pal', 'Phli', 'ZZ'), # Pahlavi FIXME: should really be 'Phlv' 'pcd': ('pcd', 'Latn', 'FR'), # Picard 'pdc': ('pdc', 'Latn', 'US'), # Pennsylvania German 'pdt': ('pdt', 'Latn', 'CA'), # Plautdietsch 'peo': ('peo', 'Xpeo', 'ZZ'), # Old Persian 'pfl': ('pfl', 'Latn', 'DE'), # Palatine German 'phn': ('phn', 'Phnx', 'ZZ'), # Phoenician 'pi': ('pi', 'Brah', 'ZZ'), # Pali 'pms': ('pms', 'Latn', 'IT'), # Piedmontese 'pnt': ('pnt', 'Grek', 'GR'), # Pontic 'prs': ('prs', 'Arab', 'AF'), # Dari 'qug': ('qug', 'Latn', 'EC'), # Chimborazo Highland Quichua 'rom': ('rom', 'Latn', 'RO'), # Romany 'sck': ('sck', 'Deva', 'IN'), # Sadri 'skr': ('skr', 'Arab', 'PK'), # Seraiki 'sou': ('sou', 'Thai', 'TH'), # Southern Thai 'swv': ('swv', 'Deva', 'IN'), # Shekhawati 'tab': ('tab', 'Cyrl', 'RU'), # Tabassaran (dlf) 'ude': ('ude', 'Cyrl', 'RU'), # Udihe (dlf) 'uga': ('uga', 'Ugar', 'ZZ'), # Ugaritic 'vep': ('vep', 'Latn', 'RU'), # Veps 'vmw': ('vmw', 'Latn', 'MZ'), # Makhuwa 'wbr': ('wbr', 'Deva', 'IN'), # Wagdi 'wbq': ('wbq', 'Telu', 'IN'), # Waddar 'wls': ('wls', 'Latn', 'WF'), # Wallisian 'wtm': ('wtm', 'Deva', 'IN'), # Mewati 'yrk': ('yrk', 'Cyrl', 'RU'), # Nenets (dlf) 'xnr': ('xnr', 'Deva', 'IN'), # Kangri 'xum': ('xum', 'Ital', 'ZZ'), # Umbrian (dlf) 'zdj': ('zdj', 'Arab', 'KM'), # Ngazidja Comorian 'und-Mult': ('skr', 'Mult', 'ZZ'), # ancient writing system for Saraiki, # Arabic now used 'und-Hung': ('ohu', 'Hung', 'ZZ'), # Old Hungarian, Carpathian basin 'und-Hluw': ('hlu', 'Hluw', 'ZZ'), # Hieroglyphic Luwian 'und-Ahom': ('aho', 'Ahom', 'ZZ'), # Ahom } ENGLISH_SCRIPT_NAMES = { 'Cans': u'Canadian Aboriginal', # shorten name for display purposes, #match Noto font name } ENGLISH_LANGUAGE_NAMES = { 'abr': u'Abron', 'abq': u'Abaza', 'aho': u'Ahom', 'aii': u'Assyrian Neo-Aramaic', 'akz': u'Alabama', 'amo': u'Amo', 'aoz': u'Uab Meto', 'atj': u'Atikamekw', 'bap': u'Bantawa', 'bci': u'Baoulé', 'ber': u'Berber', 'bft': u'Balti', 'bfy': u'Bagheli', 'bgc': u'Haryanvi', 'bgx': u'Balkan Gagauz Turkish', 'bh': u'Bihari', 'bhb': u'Bhili', 'bhi': u'Bhilali', 'bhk': u'Albay Bikol', 'bjj': u'Kanauji', 'bku': u'Buhid', 'blt': u'Tai Dam', 'bmq': u'Bomu', 'bqi': u'Bakhtiari', 'bqv': u'Koro Wachi', 'bsq': u'Bassa', 'bto': u'Rinconada Bikol', 'btv': u'Bateri', 'buc': u'Bushi', 'bvb': u'Bube', 'bya': u'Batak', 'bze': u'Jenaama Bozo', 'bzx': u'Kelengaxo Bozo', 'ccp': u'Chakma', 'cja': u'Western Cham', 'cjs': u'Shor', 'cjm': u'Eastern Cham', 'ckt': u'Chukchi', 'cpf': u'French-based Creoles', 'crj': u'Southern East Cree', 'crk': u'Plains Cree', 'crl': u'Northern East Cree', 'crm': u'Moose Cree', 'crs': u'Seselwa Creole French', 'csw': u'Swampy Cree', 'ctd': u'Tedim Chin', 'dcc': u'Deccan', 'dng': u'Dungan', 'dnj': u'Dan', 'dtm': u'Tomo Kan Dogon', 'eky': u'Eastern Kayah', 'ett': u'Etruscan', 'evn': u'Evenki', 'ffm': u'Maasina Fulfulde', 'fud': u'East Futuna', 'fuq': u'Central-Eastern Niger Fulfulde', 'fuv': u'Nigerian Fulfulde', 'gbm': u'Garhwali', 'gcr': u'Guianese Creole French', 'ggn': u'Eastern Gurung', 'gjk': u'Kachi Koli', 'gju': u'Gujari', 'gld': u'Nanai', 'gos': u'Gronings', 'grt': u'Garo', 'gub': u'Guajajára', 'gvr': u'Western Gurung', 'haz': u'Hazaragi', 'hlu': u'Hieroglyphic Luwian', 'hmd': u'A-Hmao', 'hnd': u'Southern Hindko', 'hne': u'Chhattisgarhi', 'hnj': u'Hmong Njua', 'hnn': u'Hanunoo', 'hno': u'Northern Hindko', 'hoc': u'Ho', 'hoj': u'Haroti', 'hop': u'Hopi', 'ikt': u'Inuinnaqtun', 'jml': u'Jumli', 'kao': u'Xaasongaxango', 'kca': u'Khanty', 'kck': u'Kalanga', 'kdt': u'Kuy', 'kfr': u'Kachchi', 'kfy': u'Kumaoni', 'kge': u'Komering', 'khb': u'Lü', 'khn': u'Khandesi', 'kht': u'Khamti', 'kjg': u'Khmu', 'kjh': u'Khakas', 'kkh': u'Khün', 'kpy': u'Koryak', 'kvr': u'Kerinci', 'kvx': u'Parkari Koli', 'kxm': u'Northern Khmer', 'kxp': u'Wadiyara Koli', 'kyu': u'Western Kayah', 'lab': u'Linear A', 'laj': u'Lango', 'lbe': u'Lak', 'lbw': u'Tolaki', 'lcp': u'Western Lawa', 'lep': u'Lepcha', 'lif': u'Limbu', 'lis': u'Lisu', 'ljp': u'Lampung Api', 'lki': u'Laki', 'lmn': u'Lambadi', 'lrc': u'Northern Luri', 'lut': u'Lushootseed', 'luz': u'Southern Luri', 'lwl': u'Eastern Lawa', 'maz': u'Central Mazahua', 'mdh': u'Maguindanaon', 'mdt': u'Mbere', 'mfa': u'Pattani Malay', 'mgp': u'Eastern Magar', 'mgy': u'Mbunga', 'mns': u'Mansi', 'mnw': u'Mon', 'moe': u'Montagnais', 'mrd': u'Western Magar', 'mro': u'Mru', 'mru': u'Cameroon Mono', 'mtr': u'Mewari', 'mvy': u'Indus Kohistani', 'mwk': u'Kita Maninkakan', 'mxc': u'Manyika', 'myx': u'Masaaba', 'myz': u'Classical Mandaic', 'nch': u'Central Huasteca Nahuatl', 'ndc': u'Ndau', 'ngl': u'Lomwe', 'nhe': u'Eastern Huasteca Nahuatl', 'nhw': u'Western Huasteca Nahuatl', 'nij': u'Ngaju', 'nod': u'Northern Thai', 'noe': u'Nimadi', 'nsk': u'Naskapi', 'nxq': u'Naxi', 'ohu': u'Old Hungarian', 'osc': u'Oscan', 'otk': u'Old Turkish', 'pcm': u'Nigerian Pidgin', 'pka': u'Ardhamāgadhī Prākrit', 'pko': u'Pökoot', 'pra': u'Prakrit', # language family name 'prd': u'Parsi-Dari', 'prs': u'Dari', 'puu': u'Punu', 'rcf': u'Réunion Creole French', 'rej': u'Rejang', 'ria': u'Riang', # (India) 'rjs': u'Rajbanshi', 'rkt': u'Rangpuri', 'rmf': u'Kalo Finnish Romani', 'rmo': u'Sinte Romani', 'rmt': u'Domari', 'rmu': u'Tavringer Romani', 'rng': u'Ronga', 'rob': u'Tae’', 'ryu': u'Central Okinawan', 'saf': u'Safaliba', 'sck': u'Sadri', 'scs': u'North Slavey', 'sdh': u'Southern Kurdish', 'sef': u'Cebaara Senoufo', 'skr': u'Seraiki', 'smp': u'Samaritan', 'sou': u'Southern Thai', 'srb': u'Sora', 'srx': u'Sirmauri', 'swv': u'Shekhawati', 'sxn': u'Sangir', 'syi': u'Seki', 'syl': u'Sylheti', 'tab': u'Tabassaran', 'taj': u'Eastern Tamang', 'tbw': u'Tagbanwa', 'tdd': u'Tai Nüa', 'tdg': u'Western Tamang', 'tdh': u'Thulung', 'thl': u'Dangaura Tharu', 'thq': u'Kochila Tharu', 'thr': u'Rana Tharu', 'tkt': u'Kathoriya Tharu', 'tli': u'Tlingit', 'tsf': u'Southwestern Tamang', 'tsg': u'Tausug', 'tsj': u'Tshangla', 'ttj': u'Tooro', 'tts': u'Northeastern Thai', 'ude': u'Udihe', 'uli': u'Ulithian', 'unr': u'Mundari', 'unx': u'Munda', 'vic': u'Virgin Islands Creole English', 'vmw': u'Makhu', 'wbr': u'Wagdi', 'wbq': u'Waddar', 'wls': u'Wallisian', 'wtm': u'Mewati', 'xav': u'Xavánte', 'xcr': u'Carian', 'xlc': u'Lycian', 'xld': u'Lydian', 'xmn': u'Manichaean Middle Persian', 'xmr': u'Meroitic', 'xna': u'Ancient North Arabian', 'xnr': u'Kangri', 'xpr': u'Parthian', 'xsa': u'Sabaean', 'xsr': u'Sherpa', 'xum': u'Umbrian', 'yrk': u'Nenets', 'yua': u'Yucatec Maya', 'zdj': u'Ngazidja Comorian', 'zmi': u'Negeri Sembilan Malay', } # Supplement mapping of languages to scripts LANG_TO_SCRIPTS = { 'ber': ['Arab', 'Latn', 'Tfng'], 'hak': ['Hans', 'Hant', 'Latn'], 'nan': ['Hans', 'Hant', 'Latn'], 'yue': ['Hant'], } # Supplement mapping of regions to lang_scripts REGION_TO_LANG_SCRIPTS = { 'CN': ['hak-Hans', 'hak-Latn', 'nan-Hans', 'nan-Latn', 'yue-Hans'], 'HK': ['yue-Hant'], 'MN': ['mn-Mong'], 'MY': ['zh-Hans'], 'TW': ['hak-Hant', 'hak-Latn', 'nan-Hant', 'nan-Latn'], } PARENT_LOCALES = { 'ky-Latn': 'root', 'sd-Deva': 'root', 'tg-Arab': 'root', 'ug-Cyrl': 'root', } NATIVE_NAMES = { 'mn-Mong': u'ᠮᠣᠨᠭᠭᠣᠯ ᠬᠡᠯᠡ', } EXEMPLARS = { 'und-Avst': r'[\U010b00-\U010b35]', 'und-Bali': r'[\u1b05-\u1b33]', 'und-Bamu': r'[\ua6a0-\ua6ef]', 'und-Cham': r'[\uaa00-\uaa28 \uaa50-\uaa59]', 'und-Copt': r'[\u2c80-\u2cb1]', 'und-Egyp': r'[\U013000-\U01303f]', 'und-Hira': r'[\u3041-\u3096\u3099-\u309f\U01b000-\U01b001]', 'und-Java': r'[\ua984-\ua9b2]', 'und-Kali': r'[\ua90a-\ua925 \ua900-\ua909]', 'und-Kana': r'[\u30a0-\u30ff \u31f0-\u31ff]', 'und-Khar': r'[\U010a10-\U010a13\U010a15-\U010a17\U010a19-\U010a33' r'\U010A38-\U010a3a]', 'und-Kthi': r'[\U11080-\U110C1]', 'und-Lana': r'[\u1a20-\u1a4c]', 'und-Lepc': r'[\u1c00-\u1c23]', 'und-Linb': r'[\U010000-\U01000b \U010080-\U01009f]', 'und-Mand': r'[\u0840-\u0858]', 'und-Mtei': r'[\uabc0-\uabe2]', 'und-Orkh': r'[\U010c00-\U010c48]', 'und-Phag': r'[\ua840-\ua877]', 'und-Saur': r'[\ua882-\ua8b3]', 'und-Sund': r'[\u1b83-\u1ba0]', 'und-Sylo': r'[\ua800-\ua82b]', 'und-Tavt': r'[\uaa80-\uaaaf \uaadb-\uaadf]', 'und-Tglg': r'[\u1700-\u170c \u170e-\u1711]', 'und-Ugar': r'[\U010380-\U01039d \U01039f]', 'und-Xsux': r'[\U012000-\U01202f]', 'und-Zsye': r'[\u2049\u231a\u231b\u2600\u260e\u2614\u2615\u26fa\u2708\u2709' r'\u270f\u3297\U01f004\U01f170\U01f193\U01f197\U01f30d\U01f318' r'\U01f332\U01f334\U01f335\U01f344\U01f346\U01f352\U01f381' r'\U01f393\U01f3a7\U01f3b8\U01f3e1\U01f402\U01f40a\U01f418' r'\U01f419\U01f41b\U01f41f\U01f422\U01f424\U01f427\U01f44c' r'\U01f44d\U01f453\U01f463\U01f4bb\U01f4ce\U01f4d3\U01f4d6' r'\U01f4e1\U01f4fb\U01f511\U01f525\U01f565\U01F63a\U01f680' r'\U01f681\U01f683\U01f686\U01f68c\U01f6a2\U01f6a3\U01f6b4]', 'und-Zsym': r'[\u20ac\u20b9\u2103\u2109\u2115\u2116\u211a\u211e\u2122' r'\u21d0-\u21d3\u2203\u2205\u2207\u2208\u220f\u221e\u2248\u2284' r'\u231a\u23e3\u23f3\u2400\u2460\u24b6\u2523\u2533\u2602\u260e' r'\u2615\u261c\u2637\u263a\u264f\u2656\u2663\u266b' r'\u267b\u267f\u26f9\u2708\u2740\u2762\u2a6b\u2a93\u2a64\u2e19' r'\u4dc3\U010137\U01017B\U0101ef\U01d122\U01d15e\U01d161]' } nototools-2017-09-25-tooling-for-phase3-update/nototools/extract_ohchr_attributions.py000077500000000000000000000212721316231664500311510ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2015 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Extract attribution data from the ohchr UDHR site.""" # This tool generates a .tsv file of attribution data based on information at the ohchr # site, but first you have to manually extract that data from the html on the site, as # there's no convenient way to get it. This block of comments describes the process. # # The idea is to find out which data on the ohchr site is 'official United Nations' data # and which is not. The data itself doesn't say, so we need to look at the attributions # listed on the ohchr.org site. # # Note that the data we actually use is not directly from ohchr.org, but from # www.unicode.org/udhr. That site has cleaned up the data a little and converted it to # xml format. We are assuming that any data with a matching language code shares the # original attribution, but we could be wrong. The unicode.org site does not have the # attribution data in any kind of organized form. Instead, they put a comment at the top # of each document giving copyright to "The Office of the High Commisioner for Human # Rights." # # Unfortunately, the data at www.ohchr.org is not readily available. At # http://www.ohchr.org/EN/UDHR/Pages/SearchByLang.aspx you can page through the data using # the dropdown under 'Search by Translation', but there's no visible url for a single page # or for the data as a whole. # # If you try to view each page and then 'save as...', chrome fetches the url for the page # it is showing, which returns the first (default) page no matter what data you are # actually viewing. 'View as source' works, but it provides a formatted page, and if you # choose 'save as...' from there, you get the source for that formatted page, not the raw # source. The only way to get the source is to select and copy it from the source view # into another document. # # At this point it makes more sense to just grab the portion of the data we can use # instead of the whole file. So the process is to use the dropdown to show one of the # pages of translations and then choose view source for it. Copy the contents of the # tag that lists the languages and sources into a stub html file. Repeat this for # each of the six dropdown pages. The stub contains a single table element with the id # 'ohchr_alldata', after this the table contains the data from all six ohchr pages. # # This data is still odd, in particular it nests and
tags. Fortunately # HTMLParser doesn't care, and we don't need to care. The three pieces of data are the # 'ohchr code', the 'language name', and the 'source'. The ohchr code is how they link to # the page for the translation, mostly it is a three-letter language code but sometimes it # is just whatever their server uses. The 'language name' is more or less an English # translation of the language, sometimes with notes on script or region or the native name # of the language, and the attribution is a string. The data is structured so that the # ohchr code is part of an anchor tag that wraps the language string, and the source is # part of a span in the following td. There are no other anchor tags or spans in the # data, so we can just look for these. Separating each set is a close tr tag, so we can # emit the data then. # # The output is a list of records with tab-separated fields: ohchr_code, lang_name, and # source_name. The udhr index at unicode.org references the 'ohchr' code, so this is how # we tie the attributions to the data from unicode.org. import argparse import codecs import HTMLParser as html import re from nototools import tool_utils class ParseOhchr(html.HTMLParser): def __init__(self, trace=False): html.HTMLParser.__init__(self) self.trace = trace self.result_list = [] self.restart() def restart(self): self.margin = '' self.state = 'before_table' self.tag_stack = [] self.collect_lang = False self.collect_source = False self.ohchr_code = '' self.lang_name = '' self.source_name = '' def results(self): return self.result_list def indent(self): self.margin += ' ' def outdent(self): if not self.margin: print '*** cannot outdent ***' else: self.margin = self.margin[:-2] def get_attr(self, attr_list, attr_id): for t in attr_list: if t[0] == attr_id: return t[1] return None def handle_starttag(self, tag, attrs): if tag not in ['link', 'meta', 'area', 'img', 'br']: if self.trace: print self.margin + tag + '>' self.tag_stack.append((tag, self.getpos())) self.indent() elif self.trace: print self.margin + tag if self.state == 'before_table' and tag == 'table': table_id = self.get_attr(attrs, 'id') if table_id == 'ohchr_alldata': self.state = 'in_table' elif self.state == 'in_table': if tag == 'tr': self.ohchr_code = '' self.lang_name = '' self.source_name = '' elif tag == 'a': a_id = self.get_attr(attrs, 'id') if a_id and a_id.endswith('_hpLangTitleID'): ohchr_code = self.get_attr(attrs, 'href') ix = ohchr_code.rfind('=') self.ohchr_code = ohchr_code[ix+1:] self.collect_lang = True elif tag == 'span': span_id = self.get_attr(attrs, 'id') if span_id and span_id.endswith('_lblSourceID'): self.collect_source = True elif tag == 'td': self.collect_lang = False self.collect_source = False def handle_endtag(self, tag): while self.tag_stack: prev_tag, prev_pos = self.tag_stack.pop() self.outdent() if tag != prev_tag: if self.trace: print 'no close tag for %s at %s' % (prev_tag, prev_pos) else: break if self.trace: print self.margin + '<' if self.state == 'in_table': if tag == 'table': self.state = 'after_table' elif tag == 'tr': if self.ohchr_code: self.lang_name = re.sub(r'\s+', ' ', self.lang_name).strip() self.source_name = re.sub(r'\s+', ' ', self.source_name).strip() if not self.source_name: self.source_name = '(no attribution)' self.result_list.append((self.ohchr_code, self.lang_name, self.source_name)) self.ohchr_code = '' self.lang_name = '' self.source_name = '' def handle_data(self, data): if self.collect_lang: self.lang_name += data elif self.collect_source: self.source_name += data pass def get_ohchr_status(ohchr_code, lang, attrib): """Decide the status based on the attribution text. 'original' are in the public domain and need no attribution. 'UN' are official UN translations and should be attributed as such. 'other' are not official UN translations and should be attributed as such.""" if ohchr_code in ['eng', 'frn', 'spn', 'rus', 'chn', 'arz']: return 'original' if (attrib.find('United Nations') != -1 or attrib.find('High Commissioner for Human Rights') != -1): return 'UN' return 'other' def parse_ohchr_html_file(htmlfile, outfile): parser = ParseOhchr(False) with open(htmlfile) as f: parser.feed(f.read()) lines = [] for ohchr_code, lang, attrib in parser.results(): s = get_ohchr_status(ohchr_code, lang, attrib) lines.append('\t'.join([ohchr_code, s, lang, attrib])) data = '\n'.join(lines) + '\n' print 'outfile: "%s"' % outfile if not outfile or outfile == '-': print data else: with open(outfile, 'w') as f: f.write(data) def main(): default_input = '[tools]/third_party/ohchr/ohchr_all.html' default_output = '[tools]/third_party/ohchr/attributions.tsv' parser = argparse.ArgumentParser() parser.add_argument('--src', help='input ohchr html file (default %s)' % default_input, default=default_input, metavar='file', dest='htmlfile') parser.add_argument('--dst', help='output tsv file (default %s)' % default_output, default=default_output, metavar='file', dest='outfile') args = parser.parse_args() htmlfile = tool_utils.resolve_path(args.htmlfile) outfile = tool_utils.resolve_path(args.outfile) parse_ohchr_html_file(htmlfile, outfile) if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/nototools/fix_khmer_and_lao_coverage.py000077500000000000000000000055331316231664500310130ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Fix Khmer and Lao fonts for better coverage.""" __author__ = "roozbeh@google.com (Roozbeh Pournader)" import os import sys from fontTools import ttLib from nototools import coverage from nototools import font_data from nototools import opentype_data def merge_chars_from_bank(orig_font, bank_font, target_font, chars): """Merge glyphs from a bank font to another font. Only the glyphs themselves, the horizontal metrics, and the cmaps will be copied. """ bank_font = ttLib.TTFont(bank_font) orig_font = ttLib.TTFont(orig_font) bank_cmap = font_data.get_cmap(bank_font) extra_cmap = {} for char in sorted(chars): assert char in bank_cmap bank_glyph_name = bank_cmap[char] assert bank_glyph_name not in orig_font['glyf'].glyphs orig_font['glyf'][bank_glyph_name] = bank_font['glyf'][bank_glyph_name] orig_font['hmtx'][bank_glyph_name] = bank_font['hmtx'][bank_glyph_name] extra_cmap[char] = bank_glyph_name font_data.add_to_cmap(orig_font, extra_cmap) orig_font.save(target_font) _UNHINTED_FONTS_DIR = os.path.abspath( os.path.join( os.path.dirname(__file__), os.pardir, 'fonts', 'individual', 'unhinted')) def main(argv): """Fix all the fonts given in the command line. If they are Lao fonts, make sure they have ZWSP and dotted circle. If they are Khmer fonts, make sure they have ZWSP, joiners, and dotted circle.""" for font_name in argv[1:]: if 'Khmer' in font_name: script = 'Khmr' elif 'Lao' in font_name: script = 'Laoo' needed_chars = set(opentype_data.SPECIAL_CHARACTERS_NEEDED[script]) lgc_font_name = ( os.path.basename(font_name).replace('Khmer', '').replace('Lao', '')) lgc_font_name = os.path.join(_UNHINTED_FONTS_DIR, lgc_font_name) font_charset = coverage.character_set(font_name) missing_chars = needed_chars - font_charset if missing_chars: merge_chars_from_bank( font_name, lgc_font_name, os.path.dirname(font_name)+'/new/'+os.path.basename(font_name), missing_chars) if __name__ == '__main__': main(sys.argv) nototools-2017-09-25-tooling-for-phase3-update/nototools/fix_noto_cjk_thin.py000077500000000000000000000060341316231664500272020ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Fix usWeight problem in Noto CJK Thin OTF fonts.""" __author__ = 'roozbeh@google.com (Roozbeh Pournader)' import sys from fontTools import ttLib # Increase Version (name table fields 3 and 5, head.fontRevision) # Change name field 10 to mention we've changed the font # Change usWeight to 250 def fix_font(source_filename): """Create a Windows-specific version of the font.""" assert source_filename.endswith('.otf') font = ttLib.TTFont(source_filename) name_table = font['name'] for record in name_table.names: if record.platformID == 1: # Mac assert record.platEncID == 0 assert record.langID == 0 encoding = 'Mac-Roman' else: # Windows assert record.platformID == 3 assert record.platEncID == 1 assert record.langID == 0x0409 encoding = 'UTF-16BE' value = unicode(record.string, encoding) if record.nameID == 3: original_version = value[:value.index(';')] new_version = original_version + '1' new_value = value.replace(original_version, new_version, 1) # Replace the unique identifier to avoid version conflicts assert new_value.endswith('ADOBE') new_value = new_value.replace('ADBE', 'GOOG', 1) new_value = new_value.replace('ADOBE', 'GOOGLE', 1) assert new_value.endswith('GOOGLE') assert new_value != value record.string = new_value.encode(encoding) elif record.nameID == 5: new_value = value.replace(original_version, new_version, 1) assert new_value != value record.string = new_value.encode(encoding) elif record.nameID == 10: # record #10 appears to be the best place to put a change notice assert 'Google' not in value new_value = value + ('; Changed by Google ' 'to work around a bug in Windows') record.string = new_value.encode(encoding) font['head'].fontRevision = float(new_version) assert font['OS/2'].usWeightClass == 100 font['OS/2'].usWeightClass = 250 target_filename = source_filename.replace('.otf', '-Windows.otf') font.save(target_filename) def main(argv): """Fix all fonts provided in the command line.""" for font_filename in argv[1:]: fix_font(font_filename) if __name__ == '__main__': main(sys.argv) nototools-2017-09-25-tooling-for-phase3-update/nototools/font_caching.py000077500000000000000000000020521316231664500261220ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Saves memory by reusing an already-open font.""" __author__ = 'roozbeh@google.com (Roozbeh Pournader)' from fontTools import ttLib _font_cache = {} def open_font(font_file_name): """Opens a font using ttLib, returned a cached value if already open.""" try: return _font_cache[font_file_name] except KeyError: font = ttLib.TTFont(font_file_name) _font_cache[font_file_name] = font return font nototools-2017-09-25-tooling-for-phase3-update/nototools/font_data.py000077500000000000000000000174011316231664500254430ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Get high-level font data from a font object.""" __author__ = 'roozbeh@google.com (Roozbeh Pournader)' from nototools import opentype_data from fontTools.ttLib.tables._n_a_m_e import NameRecord def get_name_records(font): """Get a font's 'name' table records as a dictionary of Unicode strings.""" name_table = font['name'] names = {} for record in name_table.names: name_ids = (record.platformID, record.platEncID, record.langID) if name_ids != (3, 1, 0x409): continue names[record.nameID] = unicode(record.string, 'UTF-16BE') return names def set_name_record(font, record_id, value, addIfMissing=''): """Sets a record in the 'name' table to a given string. Assumes that the record already exists. If it doesn't, it only adds it if addIfMissing is set. Pass 'win' to add a record in 3/1/0x409 (win UCS2 en-US) and/or 'mac' to add a record in 1/0/0 (mac-roman English), separate by comma if you want both. If 'value' is None, the name record is dropped.""" records_to_drop = set() names = font['name'].names added = [] for record_number, record in enumerate(names): name_ids = (record.platformID, record.platEncID, record.langID) if name_ids not in [(3, 1, 0x409), (1, 0, 0)]: continue if record.nameID == record_id: if value is None: records_to_drop.add(record_number) else: if name_ids == (1, 0, 0): record.string = value.encode('mac-roman') added.append('mac') else: # (3, 1, 0x409) record.string = value.encode('UTF-16BE') added.append('win') if addIfMissing and value: for key in addIfMissing.split(','): if key in added: continue if key == 'win': nr = NameRecord() nr.nameID = record_id nr.platformID = 3 nr.platEncID = 1 nr.langID = 0x409 nr.string = value.encode('UTF-16BE') elif key == 'mac': nr = NameRecord() nr.nameID = record_id nr.platformID = 1 nr.platEncID = 0 nr.langID = 0 nr.string = value.encode('mac-roman') else: nr = None if nr: names.append(nr) if records_to_drop: font['name'].names = [ record for record_number, record in enumerate(names) if record_number not in records_to_drop] def get_os2_unicoderange_bitmap(font): """Get an integer bitmap representing the UnicodeRange fields in the os/2 table.""" os2_table = font['OS/2'] return (os2_table.ulUnicodeRange1 | os2_table.ulUnicodeRange2 << 32 | os2_table.ulUnicodeRange3 << 64 | os2_table.ulUnicodeRange4 << 96) def set_os2_unicoderange_bitmap(font, bitmap): """Set the UnicodeRange fields in the os/2 table from the 128 bits of the long integer bitmap.""" os2_table = font['OS/2'] mask = (1 << 32) - 1 os2_table.ulUnicodeRange1 = bitmap & mask os2_table.ulUnicodeRange2 = (bitmap >> 32) & mask os2_table.ulUnicodeRange3 = (bitmap >> 64) & mask os2_table.ulUnicodeRange4 = (bitmap >> 96) & mask def get_cmap_unicoderange_info(font): """Get info on unicode ranges based on the cmap in the font.""" cmap = get_cmap(font) return opentype_data.collect_unicoderange_info(cmap) def unicoderange_info_to_bitmap(ur_info): # Turn on a bit (mark it functional) if any range for that bit # has more than 200 characters or is more than 50% covered. # Non-BMP (57) and private use (60, 90) are marked functional if # any character is set. # # This means, for example, that Cyrillic is marked functional # if any of Cyrillic, Cyrillic Supplement, or Cyrillic Extended A or B # have more than 50% coverage. There's no really good heuristic # for this without explicit per-script data, we're really just # trying to catch obvious errors. expected_bitmap = 0L for count, info in ur_info: bit = info[2] # any non-bmp character causes bit 57 to be set if info[0] >= 0x10000: expected_bitmap |= 1 << 57 if bit in [57, 60, 90] or count > min(200, (info[1] - info[0]) / 2): expected_bitmap |= 1 << bit return expected_bitmap def get_cmap_unicoderange_bitmap(font): return unicoderange_info_to_bitmap(get_cmap_unicoderange_info(font)) def unicoderange_bitmap_to_string(bitmap): have_list = [] for bucket_index in range(128): if bitmap & (1 << bucket_index): bucket_name = opentype_data.unicoderange_bucket_index_to_name(bucket_index) have_list.append("%d (%s)" % (bucket_index, bucket_name)) return '; '.join(have_list) def font_version(font): """Returns the font version from the 'name' table.""" names = get_name_records(font) return names[5] def font_name(font): """Returns the font name from the 'name' table.""" names = get_name_records(font) return names[4] def printable_font_revision(font, accuracy=2): """Returns the font revision as a string from the 'head' table.""" font_revision = font['head'].fontRevision font_revision_int = int(font_revision) font_revision_frac = int( round((font_revision - font_revision_int) * 10**accuracy)) font_revision_int = str(font_revision_int) font_revision_frac = str(font_revision_frac).zfill(accuracy) return font_revision_int+'.'+font_revision_frac def get_cmap(font): """Get the cmap dictionary of a font.""" cmap_table = font['cmap'] cmaps = {} for table in cmap_table.tables: if (table.format, table.platformID, table.platEncID) in [ (4, 3, 1), (12, 3, 10)]: cmaps[table.format] = table.cmap if 12 in cmaps: return cmaps[12] elif 4 in cmaps: return cmaps[4] return {} def get_variation_sequence_cmap(font): """Return the variation selector cmap, if available.""" cmap_table = font['cmap'] for table in cmap_table.tables: if table.format == 14: return table return None UNICODE_CMAPS = {(4, 0, 3), (4, 3, 1), (12, 3, 10)} def delete_from_cmap(font, chars): """Delete all characters in a list from the cmap tables of a font.""" cmap_table = font['cmap'] for table in cmap_table.tables: if (table.format, table.platformID, table.platEncID) in UNICODE_CMAPS: for char in chars: if char in table.cmap: del table.cmap[char] def add_to_cmap(font, mapping): """Adds a codepoint to glyph mapping to a font's cmap.""" cmap_table = font['cmap'] for table in cmap_table.tables: if (table.format, table.platformID, table.platEncID) in UNICODE_CMAPS: for code, glyph in mapping.iteritems(): table.cmap[code] = glyph def get_glyph_horizontal_advance(font, glyph_id): """Returns the horiz advance of the glyph id.""" hmtx_table = font['hmtx'].metrics adv, lsb = hmtx_table[glyph_id] return adv nototools-2017-09-25-tooling-for-phase3-update/nototools/gen_cplist.py000077500000000000000000000070301316231664500256300ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2016 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """ Generate lists of codepoints prefixed with 'u' or 'uni' from cmap data file. Occasionally the designers want data in this format to create lists of files for their tools, so let's just save this script. """ import argparse from os import path import sys from nototools import cmap_data from nototools import tool_utils def glyphstr(cp): return ('uni%04x' % cp) if cp < 0x10000 else ('u%05x' % cp) def glyphstrs(cps): return '\n'.join(glyphstr(cp) for cp in sorted(cps)) def write_cp_list(cps, fname): with open(fname, 'w') as f: f.write(glyphstrs(cps)) f.write('\n') def generate_single(cmapdata, script, outfile): for row in cmapdata.table.rows: if script == row.script: cps = tool_utils.parse_int_ranges(row.ranges) write_cp_list(cps, outfile) print >> sys.stderr, 'wrote %s to %s' % (script, outfile) return raise ValueError('no script "%s" in cmap data' % script) def generate(cmapdata, dst_dir, scripts, namepats): if not scripts: raise ValueError('no scripts') if not namepats: raise ValueError('no namepats') if len(scripts) != len(namepats): if len(namepats) != 1: raise ValueError( 'Have %d script%s but %d namepats' % (len(scripts), '' if len(scripts) == 1 else 's', len(namepats))) if '%s' not in namepats[0] and len(scripts) > 1: raise ValueError( 'Have multiple scripts but single namepat "%s" has no substitution' % namepats[0]) namepats = [namepats[0]] * len(scripts) dst_dir = tool_utils.ensure_dir_exists(dst_dir) for s, n in zip(scripts, namepats): outfile = path.join(dst_dir, (n % s) if '%s' in n else n) generate_single(cmapdata, s, outfile) def main(): default_cmap = '[tools]/nototools/data/noto_cmap_phase3.xml' default_namepats = ['cps_%s.txt'] epilog = """If a namepat contains the string "%s" then the script id will be substituted for it. If one namepat is provided it is used for all scripts, otherwise there should be as many namepats as there are scripts.""" parser = argparse.ArgumentParser(epilog=epilog) parser.add_argument( '-c', '--cmap_file', help='cmap data file to use (default %s)' % default_cmap, default=default_cmap, metavar='file') parser.add_argument( '-d', '--dest_dir', help='directory for output, (defaults to current ' 'directory)', metavar='dir', default='.') parser.add_argument( '-s', '--scripts', help='script ids of data to output', nargs='+', metavar='id', required=True) parser.add_argument( '-n', '--namepats', help='name patterns used to generate output ' 'filenames (default "cps_%%s.txt")', default=default_namepats, metavar='npat', nargs='+') args = parser.parse_args() cmap_filepath = tool_utils.resolve_path(args.cmap_file) cmapdata = cmap_data.read_cmap_data_file(cmap_filepath) generate(cmapdata, args.dest_dir, args.scripts, args.namepats) if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/nototools/generate_coverage_data.py000077500000000000000000000161031316231664500301400ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2016 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import argparse import collections import datetime from os import path import sys from nototools import cmap_data from nototools import coverage from nototools import tool_utils from xml.etree import ElementTree as ET """Generate a coverage.xml file listing the codepoints covered by a font family plus a name.""" MetaData = collections.namedtuple('MetaData', 'date,program,args') CmapData = collections.namedtuple('CmapData', 'name,ranges') CoverageData = collections.namedtuple('CoverageData', 'metadata,cmapdata') def get_cps_from_files(paths): """Return a tuple of the cps and the paths that we actually read.""" cps = set() new_paths = set() for f in paths: ext = path.splitext(f)[1] if ext not in ['.otf', '.ttf']: continue cps |= coverage.character_set(f) new_paths.add(f) return cps, sorted(new_paths) def get_cps_from_cmap_data_file(data_file): cps = set() data = cmap_data.read_cmap_data_file(data_file) for row in data.table.rows: cps |= tool_utils.parse_int_ranges(row.ranges) return cps def _create_metadata(**kwargs): """Create a MetaData object from the args. 'date' defaults to today's date.""" date = str(kwargs.pop('date', datetime.date.today())) program = str(kwargs.pop('program', 'generate_coverage_data')) arglist = [ (k, v) for k, v in sorted(kwargs.iteritems()) if v is not None] return MetaData(date, program, arglist) def _create_cmapdata(name, cmap): """Create a CmapData object from the name and cmap.""" return CmapData(name, tool_utils.write_int_ranges(cmap)) def create(name, cps, paths=None, cmap_data=None): """Generate the coverage data object.""" metadata = _create_metadata(paths=paths, cmap_data=cmap_data) cmapdata = _create_cmapdata(name, cps) return CoverageData(metadata, cmapdata) def _common_path_prefix(items): """Assuming items is an array of paths using path.sep as a path separator, return a common path prefix of the items.""" prefix = None if len(items) <= 1: return '' for item in items: if prefix is None: last = item.rfind(path.sep) if last < 0: return '' prefix = item[:last + 1] continue end = len(item) while True: last = item.rfind(path.sep, 0, end) if last < 0: return '' item_prefix = item[:last + 1] if prefix == item_prefix: break if prefix.startswith(item_prefix): prefix = item_prefix break end = last return prefix def _build_meta_elem(metadata): """Convert metadata to ET node.""" meta = ET.Element('meta', date=metadata.date, program=metadata.program) if metadata.args: args = ET.Element('args') for k, v in metadata.args: if isinstance(v, list): arg = ET.Element(k, isList='true') # handle items that are path names prefix = _common_path_prefix(v) plen = 0 if prefix: arg.set('prefix', prefix) plen = len(prefix) for item in v: item_elem = ET.Element('item') item_elem.text=str(item)[plen:] arg.append(item_elem) else: arg = ET.Element(str(k), val=str(v)) args.append(arg) meta.append(args) return meta def _build_cmap_elem(cmapdata): """Convert data to ET node.""" data = ET.Element('data') name = ET.Element('name') name.text = cmapdata.name data.append(name) ranges = ET.Element('ranges') ranges.text = cmapdata.ranges data.append(ranges) return data def _prettify(root, indent=''): """Pretty-print the root element if it has no text and children by adding to the root text and each child's tail.""" if not root.text and len(root): indent += ' ' sfx = '\n' + indent root.text = sfx for elem in root: elem.tail = sfx _prettify(elem, indent) elem.tail = sfx[:-2] def _build_tree(coveragedata): root = ET.Element('coveragedata') root.append(_build_meta_elem(coveragedata.metadata)) root.append(_build_cmap_elem(coveragedata.cmapdata)) _prettify(root) return ET.ElementTree(element=root) def write(coveragedata, out_file=None): """Write coverage data to xml.""" tree = _build_tree(coveragedata) if out_file: tree.write(out_file, encoding='utf-8', xml_declaration=True) else: print ET.tostring(tree.getroot(), encoding='utf-8') def _read_meta(meta_elem): date = meta_elem.get('date') program = meta_elem.get('program') args = [] args_node = meta_elem.find('args') if args_node is not None: for arg_node in args_node: key = arg_node.tag if arg_node.attrib.get('isList', False): prefix = arg_node.attrib.get('prefix', '') val = [] for item in arg_node.findall('item'): val.append(prefix + item.text) else: val = arg_node.get('val').strip() args.append((key, val)) return MetaData(date, program, args) def _read_data(data_elem): name = data_elem.find('name').text.strip() ranges = data_elem.find('ranges').text.strip() return CmapData(name, ranges) def _read_tree(root_elem): meta = _read_meta(root_elem.find('meta')) data = _read_data(root_elem.find('data')) return CoverageData(meta, data) def read(coveragefile): return _read_tree(ET.parse(coveragefile).getroot()) def main(): default_coverage_file = '[tools]/nototools/data/noto_cmap_phase3.xml' parser = argparse.ArgumentParser() parser.add_argument( '-o', '--output_file', help='name of xml file to output', metavar='file') parser.add_argument( '-d', '--dirs', help='directories containing font files', metavar='dir', nargs='+') parser.add_argument( '-f', '--files', help='font files', metavar='file', nargs='+') parser.add_argument( '-n', '--name', help='short name of this collection, used in reports', metavar='name', required=True) parser.add_argument( '-c', '--cmap_data', help='cmap data file (default %s)' % default_coverage_file, const=default_coverage_file, nargs='?', metavar='file') args = parser.parse_args() cmap_path = None if args.dirs or args.files: paths = tool_utils.collect_paths(args.dirs, args.files) cps, paths = get_cps_from_files(paths) elif args.cmap_data: cmap_path = tool_utils.resolve_path(args.cmap_data) cps = get_cps_from_cmap_data_file(cmap_path) paths = None else: print 'Please specify font files, directories, or a cmap data file.' return coverage = create(args.name, cps, paths=paths, cmap_data=cmap_path) write(coverage, args.output_file) if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/nototools/generate_dingbats_html.py000077500000000000000000001233511316231664500301770ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2016 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import argparse import codecs import collections import re import string import sys from fontTools import ttLib from fontTools.pens.boundsPen import BoundsPen from os import path from nototools import cmap_data from nototools import font_data from nototools import tool_utils from nototools import unicode_data """Generate html comparison of codepoints in various fonts.""" _HTML_HEADER_TEMPLATE = """ $title

$title

""" _METRICS_STYLES = ( ', '.join('td:nth-last-of-type(%d)' % i for i in range(4, 9)) + ' { font-size: 10pt; text-align:right; font-family: sansserif }') # hardcoded for now, this assumes 'noto' is one of the defined font names _CONTEXT_FONT = 'noto' _HTML_FOOTER = """ """ def _cleanlines(textfile): """Strip comments and blank lines from textfile, return list of lines.""" result = [] with open(textfile, 'r') as f: for line in f: ix = line.find('#') if ix >= 0: line = line[:ix] line = line.strip() if line: result.append(line) return result class CodeList(object): """An ordered list of code points (ints). These might map to other (PUA) code points that the font knows how to display.""" @staticmethod def fromfile(filename): if filename.endswith('_codes.txt'): return CodeList.frompairfile(filename) elif filename.endswith('_cmap.txt'): return CodeList.fromrangefile(filename) elif filename.endswith('.ttf') or filename.endswith('.otf'): return CodeList.fromfontcmap(filename) else: raise Exception( 'unrecognized file type %s for CodeList.fromfile' % filename) @staticmethod def fromspec(spec): codelist_type, text = [t.strip() for t in spec.split(':')] return CodeList.fromtext(text, codelist_type) @staticmethod def fromtext(text, codelist_type): if codelist_type == 'cmap': return CodeList.fromrangetext(text) elif codelist_type == 'codes': return CodeList.frompairtext(text) elif codelist_type == 'list': return CodeList.fromlisttext(text) else: raise Exception('unknown codelist type "%s"' % codelist_type) @staticmethod def fromfontcmap(fontname): font = ttLib.TTFont(fontname) return CodeList.fromset(font_data.get_cmap(font)) @staticmethod def fromset(cpset): return UnicodeCodeList(cpset) @staticmethod def fromrangetext(cpranges): return CodeList.fromset( tool_utils.parse_int_ranges(cpranges, allow_compressed=True)) @staticmethod def fromrangefile(cprange_file): with open(cprange_file, 'r') as f: return CodeList.fromrangetext(f.read()) @staticmethod def fromlist(cplist): return OrderedCodeList(cplist) @staticmethod def fromlisttext(cplist): codes = tool_utils.parse_int_ranges( cplist, allow_duplicates=True, return_set=False, allow_compressed=True) return CodeList.fromlist(codes) @staticmethod def fromlistfile(cplist_file): return CodeList.fromlisttext(_cleanlines(cplist_file)) @staticmethod def frompairs(cppairs): return MappedCodeList(cppairs) @staticmethod def frompairtext(cppairs_text): # if no pairs, will treat as listtext. cppairs must have only one item # or pair per line, however. pair_list = None single_list = [] for line in cppairs_text.splitlines(): parts = [int(s, 16) for s in line.split(';')] if pair_list: if len(parts) < 2: parts.append(parts[0]) pair_list.append(tuple(parts)[:2]) elif len(parts) > 1: pair_list = [(cp, cp) for cp in single_list] pair_list.append(tuple(parts[:2])) else: single_list.append(parts[0]) if pair_list: return CodeList.frompairs(pair_list) return CodeList.fromlist(single_list) @staticmethod def frompairfile(cppairs_file): return CodeList.frompairtext('\n'.join(_cleanlines(cppairs_file))) def contains(self, cp): """Returns True if cp is in the code list.""" raise NotImplementedError def codes(self): """Returns the codes in preferred order.""" raise NotImplementedError def codeset(self): """Returns the frozenset of codes.""" raise NotImplementedError def mapped_code(self, cp): """Returns the mapped code for this code point.""" raise NotImplementedError class UnicodeCodeList(CodeList): """A codelist based on unicode code point order with no mapping.""" def __init__(self, codeset): super(CodeList, self).__init__() self._codeset = frozenset(codeset) def contains(self, cp): return cp in self._codeset def codes(self): return sorted(self._codeset) def codeset(self): return self._codeset def mapped_code(self, cp): return cp if cp in self._codeset else None class MappedCodeList(CodeList): def __init__ (self, codepairs): super(MappedCodeList, self).__init__() # hack, TODO: change the column order in the input files self._codemap = {v : k for k, v in codepairs} self._codes = tuple(p[1] for p in codepairs) def contains(self, cp): return cp in self._codemap def codes(self): return self._codes def codeset(self): return frozenset(self._codes) def mapped_code(self, cp): return self._codemap.get(cp) class OrderedCodeList(CodeList): def __init__(self, codes): super(OrderedCodeList, self).__init__() self._codes = tuple(codes) self._codeset = frozenset(codes) def contains(self, cp): return cp in self._codeset def codes(self): return self._codes def codeset(self): return self._codeset def mapped_code(self, cp): return cp if cp in self._codeset else None def _load_codelist(codelist_spec, data_dir, codelistfile_map): for codelist_type in ['file', 'cmap', 'codes', 'list', None]: if codelist_type and codelist_spec.startswith(codelist_type + ':'): codelist_spec = codelist_spec[len(codelist_type) + 1:].strip() break if not codelist_type: if codelist_spec.endswith('.txt'): codelist_type = 'file' else: raise Exception( 'cannot determine type of codelist spec "%s"' % codelist_spec) if codelist_type != 'file': codelist = CodeList.fromtext(codelist_spec, codelist_type) else: fullpath = path.join(data_dir, codelist_spec) if not path.isfile(fullpath): raise Exception('codelist file "%s" not found' % codelist_spec) codelist = codelistfile_map.get(fullpath) if codelist == None: codelist = CodeList.fromfile(fullpath) codelistfile_map[codelist_spec] = codelist return codelist class SequenceList(object): """A list of strings generated by a spec.""" def __init__(self, codelists, suffix): self.codelists = codelists self.suffix = suffix def codes(self): codes = set() for codelist in self.codelists: codes |= codelist.codeset() codes |= set(ord(cp) for cp in self.suffix) return codes def __iter__(self): for codelist in self.codelists: chars = [unichr(cp) for cp in codelist.codes()] yield self.suffix.join(chars) + self.suffix class Target(object): """A named collection of data that renders to html or text.""" @staticmethod def from_table_data(name, codelist, used_fonts): return CodeTableTarget(name, codelist, used_fonts) @staticmethod def from_sequence_data(name, codelists, suffix, font): sequencelist = SequenceList(codelists, suffix) return SequenceListTarget(name, sequencelist, font) def __init__(self, name): self.name = name def name(self): return self.name def codes(self): """Returns the set of codepoints used in this target.""" raise NotImplementedError def generate_text(self, metrics, flag_sets): raise NotImplementedError def generate_html( self, tindex, context, metrics, flag_sets, cp_to_targets): raise NotImplementedError class SequenceListTarget(Target): def __init__(self, name, sequencelist, used_font): super(SequenceListTarget, self).__init__(name) self.sequencelist = sequencelist self.used_font = used_font def codes(self): return self.sequencelist.codes() def generate_text(self, metrics, flag_sets): raise NotImplementedError def generate_html( self, tindex, context, metrics, flag_sets, cp_to_targets): lines = ['

%s

' % (tindex, self.name)] lines.append('
' % self.used_font[0]) for seq in self.sequencelist: lines.append(seq + '
') lines.append('
') return '\n'.join(lines) class CodeTableTarget(Target): def __init__(self, name, codelist, used_fonts): super(CodeTableTarget, self).__init__(name) self.codelist = codelist self.used_fonts = used_fonts def codes(self): return self.codelist.codes() def generate_text(self, metrics, flag_sets): lines = [self.name] header = ['idx code'] header.extend(f[0] for f in self.used_fonts) header.append('age name') lines.append(' '.join(header)) for index, cp in enumerate(self.codelist.codes()): line = ['%3d' % index] line.append('%5s' % ('%04x' % cp)) for rkey, keyinfos in self.used_fonts: match = any(codelist.contains(cp) for _, _, codelist in keyinfos) line.append(rkey if match else ('-' * len(rkey))) line.append(unicode_data.age(cp)) line.append(_flagged_name(cp, flag_sets)) lines.append(' '.join(line)) return '\n'.join(lines) def generate_html(self, tindex, context, metrics, flag_sets, cp_to_targets): dump_metrics = False if dump_metrics: print '$ %s' % self.name def context_string(codelist, cp): cps = unichr(codelist.mapped_code(cp)) return (context % cps) if context else cps def _target_line(cp, tindex, tinfo): info = [] for ix, name in tinfo: if ix == tindex: continue info.append('%s' % (ix, name)) if not info: return '(no group)' return '; '.join(info) def _generate_header(): header_parts = ['
CP'] for key, _ in self.used_fonts: header_parts.append('' + key) if metrics != None: header_parts.append('lsbmidrsbwidcy') header_parts.append('AgeName') return ''.join(header_parts) if metrics != None: # the metrics apply to the rightmost font fontname = self.used_fonts[-1][1][0][0] if fontname: metrics_font = _get_font(fontname) else: metrics_font = None print >> sys.stderr, 'no metrics font' lines = ['

%s

' % (tindex, self.name)] char_line = _character_string_html(self.codelist, self.used_fonts[-1]) if char_line: lines.append(char_line) lines.append('') header = _generate_header() linecount = 0 for cp in self.codelist.codes(): if linecount % 20 == 0: lines.append(header) linecount += 1 line = [''] line.append('
U+%04x' % cp) for rkey, keyinfos in self.used_fonts: cell_class = None cell_text = None index = 0 for font, _, rcodelist in keyinfos: if rcodelist.contains(cp): if len(keyinfos) > 1: cell_class = '%s_%d' % (rkey, index) else: cell_class = rkey cell_class = replace_nonalpha(cell_class) if font: cell_text = context_string(rcodelist, cp) else: cell_text = ' * ' cell_class += ' star' break index += 1 if cell_class: line.append('%s' % (cell_class, cell_text)) else: line.append(' ') name = _flagged_name(cp, flag_sets) if metrics != None: cp_metrics = _get_cp_metrics(metrics_font, cp) if metrics_font else None if cp_metrics: lsb, rsb, wid, adv, cy = cp_metrics if dump_metrics: print '%04x # %4d, %4d, %4d, %s' % (cp, lsb, adv, cy, name) if cp in metrics: nlsb, nadv, ncy = metrics[cp] else: nlsb, nadv, ncy = lsb, adv, cy nrsb = nadv - wid - nlsb line.append('%d%s' % ( lsb, '→%d' % nlsb if lsb != nlsb else '')) line.append('%d' % wid) line.append('%d%s' % ( rsb, '→%d' % nrsb if rsb != nrsb else '')) line.append('%d%s' % ( adv, '→%d' % nadv if adv != nadv else '')) line.append('%d%s' % ( cy, '→%d' % ncy if cy != ncy else '')) else: line.append('') line.append('%s' % unicode_data.age(cp)) line.append('%s' % name) line.append('%s' % _target_line(cp, tindex, cp_to_targets.get(cp))) lines.append(''.join(line)) lines.append('
') return '\n'.join(lines) def _load_fonts(data_list, data_dir, codelist_map): """data_list is a list of tuples of two to four items. The first item is the key, the second is the name of the font file in data_dir. The second can be None, otherwise it must exist. The third item, if present, is the name to use for the font, otherwise it will be read from the font, it must be present where there is no font. The fourth item, if present, is the name of a codelist file, it must be present where there is no font. If present and None, the the unicode cmap from the font is used. otherwise the font file name is stripped of its extension and try to find a file from which to create a codelist. Multiple tuples can share the same key, these form one column and the order of the files composing the tuple defines the order in which they are searched for a glyph. Returns a list of tuples of key, keyinfo, where keyinfo is a list of tuples of filepath, name, codelist.""" def _load_font(data, codelist_map): if len(data) < 4: data = data + tuple([None] * (4 - len(data))) key, fname, name, codelistfile = data if not fname: if not name: raise Exception('must have name if no font provided') if not codelistfile: raise Exception('must have codelist file if no font provided') fontpath = None else: fontpath = path.join(data_dir, fname) if not path.isfile(fontpath): raise Exception('font "%s" not found' % fontpath) if codelistfile: codelist = _load_codelist(codelistfile, data_dir, codelist_map) if fname and (not codelistfile or not name): font = ttLib.TTFont(fontpath) if not name: names = font_data.get_name_records(font) name = names[16] if 16 in names else names[1] if 1 in names else None if not name: raise Exception('cannot read name from font "%s"' % fontpath) if not codelistfile: codelist = CodeList.fromset(font_data.get_cmap(font)) return key, fontpath, name, codelist # group by key keyorder = [] keyinfo = collections.defaultdict(list) for data in data_list: key, fontpath, name, codelist = _load_font(data, codelist_map) if key not in keyinfo: keyorder.append(key) keyinfo[key].append((fontpath, name, codelist)) return [(key, keyinfo[key]) for key in keyorder] def _select_used_fonts(codelist, fonts, prefer_fonts, omit_fonts): """Return the fonts we want to use to display the codelist, in order. If not None, prefer_fonts is a key or list of keys for fonts to order at the end. If not None, omit_fonts is key or list of keys to omit even if they would otherwise be used by default, however prefer_fonts takes precedence over omit_fonts if the same key is in both.""" if prefer_fonts is not None: if isinstance(prefer_fonts, basestring): prefer_fonts = [prefer_fonts] preferred = [None] * len(prefer_fonts) else: prefer_fonts = [] preferred = [] if omit_fonts is not None: if '_all_' in omit_fonts: omit_fonts = [k for k, _ in fonts] else: omit_fonts = [omit_fonts] if prefer_fonts: omit_fonts = [k for k in omit_fonts if k not in prefer_fonts] else: omit_fonts = [] regular = [] codes = codelist.codes() for f in fonts: key, keyinfo = f if key in omit_fonts: continue for name, _, cl in keyinfo: if any(cl.contains(cp) for cp in codes): is_preferred = False for i, k in enumerate(prefer_fonts): if key == k: preferred[i] = f is_preferred = True break if not is_preferred: regular.append(f) break return tuple(regular + filter(None, preferred)) def _load_targets(target_data, fonts, data_dir, codelist_map): """Target data is a list of tuples of target names, codelist files, an optional preferred font key or list of keys, and an optional omitted font key or list of keys. All files should be in data_dir. Codelist_map is a cache in case the codelist file has already been read. Returns a list of tuples of target name, codelist, and fontlist.""" def _create_suffix(charlist): return charlist.decode('unicode-escape') def _select_font(fonts, font_id): for f in fonts: if f[0] == font_id: return f raise Exception('no font with id "%s"' % font_id) result = [] for target in target_data: target_type, name, codelist_spec = target[:3] if target_type == 'table': codelist = _load_codelist(codelist_spec, data_dir, codelist_map) prefer_fonts = target[3] if len(target) > 3 else None omit_fonts = target[4] if len(target) > 4 else None used_fonts = _select_used_fonts(codelist, fonts, prefer_fonts, omit_fonts) if not used_fonts: raise Exception('no fonts used by target %s' % name) result.append(Target.from_table_data(name, codelist, used_fonts)) elif target_type == 'sequence': if len(target) < 5: raise Exception('sequence target too short') lists = codelist_spec.split(',') codelists = [CodeList.fromlisttext(cl) for cl in lists] suffix = _create_suffix(target[3]) font_tuple = _select_font(fonts, target[4]) result.append( Target.from_sequence_data(name, codelists, suffix, font_tuple)) return tuple(result) def _create_codeset_from_expr(expr_list, flag_sets, data_dir, codelist_map): """Processes expr_list in order, building a codeset. See _read_flag_data_from_file for information on expr_list. This can modify flag_sets and codelist_map.""" result = () for op, exp in expr_list: if exp not in flag_sets: # its a codelist codes = _load_codelist(exp, data_dir, codelist_map).codeset() else: codes_or_spec = flag_sets[exp] if isinstance(codes_or_spec, (set, frozenset)): codes = codes_or_spec else: # replace the spec with the actual codes if codes_or_spec == None: # we only know about '_emoji_' and '_math_' if exp == '_emoji_': codes = ( unicode_data.get_emoji() - unicode_data.get_unicode_emoji_variants('proposed_extra')) elif exp == '_math_': codes = unicode_data.chars_with_property('Math') else: raise Exception('unknown special codeset "%s"' % exp) else: codes = _load_codelist( codes_or_spec, data_dir, codelist_map).codeset() flag_sets[exp] = codes if op == '|': if not result: # it appers that python 'optimizes' |= by replacing the lhs by rhs if # lhs is an empty set, but this changes the type of lhs to frozenset... result = set(codes) else: result |= codes elif op == '&': result &= codes elif op == '-': result -= codes else: raise Exception('unknown op "%s"' % op) return result def _load_flags(flag_data, data_dir, codelist_map): """Flag data is a list of tuples of defined sets or flags and expressions, see _read_flag_data_from_file for more info. This returns a map from set name to a tuple of (cp_set, bool) where True means the flag is set for a cp if it is in the cp_set, and false means the flag is set if the cp is not in the cp_set. This can fail since the code processing the flag_data does not actually try to load the codelists.""" flag_sets = {} flag_map = {} for flag_info in flag_data: t0, t1, t2 = flag_info if t0 == '!define': set_name = t1 if set_name in ['_emoji_', '_math_']: set_codes = None # gets created by _create_codeset_from_expr else: set_codes = _load_codelist(t2, data_dir, codelist_map).codeset() flag_sets[set_name] = set_codes else: flag_name = t0 flag_in = t1 flag_set = _create_codeset_from_expr( t2, flag_sets, data_dir, codelist_map) flag_map[flag_name] = (flag_set, flag_in) return flag_map def _load_fonts_targets_flags(font_data, target_data, flag_data, data_dir): # we cache the codelists to avoid building them twice if they're referenced by # both fonts and targets, not a big deal but... codelist_map = {} fonts = _load_fonts(font_data, data_dir, codelist_map) targets = _load_targets(target_data, fonts, data_dir, codelist_map) flags = _load_flags(flag_data, data_dir, codelist_map) return fonts, targets, flags def strip_comments_from_file(filename): with open(filename, 'r') as f: for line in f: ix = line.find('#') if ix >= 0: line = line[:ix] line = line.strip() if not line: continue yield line def _read_font_data_from_file(filename): font_data = [] for line in strip_comments_from_file(filename): info = line.split(';') while len(info) < 4: info.append(None) font_data.append(tuple(info)) return font_data def _read_target_data_from_file(filename): """Target data uses # to indicate a comment to end of line. Comments are stripped, then an empty or blank line is ignored. Targets are either tables or sequences, the default is a table. Each line in a table target defines a tuple of four values: target name, codelist, preferred font ids, and omitted font ids. Each line in a sequence target defines a tuple of four values: target name, codelist, suffix, and font id. A line can also start with one of tree directives, !define, !default, or !type. If a line starts with '!define ' we expect a key followed by '=' and then one or more names separated by space. The names are turned into a list, and entered into a dictionary for the key. Once defined a key cannot be redefined. If a line starts with '!default ' we expect a key of either 'prefer' or 'omit' optionally followed by '=' and a list of names to prefer or omit; these will become the default values until the next '!default ' directive. If there is no '=' the value is reset. An omitted or empty prefer or omit field will get the fallback, to explicitly request None and override the fallback the field should contain 'None'. If a line starts with '!type ' we expect either 'table' or 'sequence' to follow. This will become the type of the following lines until the next '!type ' directive. Normally, a line consists of 2-4 fields separated by ';'. The first two are a target name and a codelist spec. For table targets, the third is the preferred font ids separated by space, previously !defined keys can be used here instead of this list and the list defined for that key will be used. The fourth is the omitted font ids separated by space, they are treated similarly. If the preferred or omit field is missing or empty and a default value for it has been set, that value is used. For sequence targets, the third is a hex sequence indicating the suffix string to apply after each codepoint, and the fourth is the font id; these must both be present. This returns a list of the tuples of the type name followed by the data for that type. """ def add_index_list_or_defined(info, index, fallback, defines): """Extend or update info[index], possibly using defines""" if len(info) <= index: info.append(fallback) elif info[index] != None: item = info[index] if item in defines: items = defines[item] elif item == 'None': items = None elif item: items = item.split() else: items = fallback info[index] = items prefer_fallback = None omit_fallback = None target_type = 'table' defines = {} target_data = [] kDefineDirective = '!define ' kDefaultDirective = '!default ' kTypeDirective = '!type ' for line in strip_comments_from_file(filename): if line.startswith(kDefineDirective): # !define key=val val... name, rest = line[len(kDefineDirective):].split('=') name = name.strip() if name in defines: raise Exception('name %s already defined in %s' % (name, filename)) rest = rest.strip().split() defines[name] = tuple(rest) continue if line.startswith(kDefaultDirective): # !default prefer|omit=val val... values = line[len(kDefaultDirective):].split('=') name = values[0].strip() rest = values[1].strip().split() if len(values) > 1 else None if not rest: rest = None if name == 'prefer': prefer_fallback = rest elif name == 'omit': omit_fallback = rest else: raise Exception('default only understands \'prefer\' or \'omit\'') continue if line.startswith(kTypeDirective): # !type table|sequence value = line[len(kTypeDirective):] if value in {'table', 'sequence'}: target_type = value else: raise Exception('type only understands \'table\' or \'sequence\'') continue info = [k.strip() for k in line.split(';')] if len(info) < 2: raise Exception('need at least two fields in "%s"' % line) if target_type == 'table': # name;character spec or filename;prefer_id... or empty;omit_id... or empty add_index_list_or_defined(info, 2, prefer_fallback, defines) # preferred add_index_list_or_defined(info, 3, omit_fallback, defines) # omitted target_data.append(tuple(['table'] + info)) elif target_type == 'sequence': if len(info) < 4: raise Exception('need four fields in sequence data in "%s"' % line) target_data.append(tuple(['sequence'] + info)) return target_data def _flagged_name(cp, flag_sets): """Prepend any flags to cp's unicode name, and return. Flag_sets is a map from flag name to a tuple of cp set and boolean. True means add flag if cp in set, False means add flag if it is not in the set.""" try: name = unicode_data.name(cp) except: raise Exception('no name for %04X' % cp) flags = [] for k, v in sorted(flag_sets.iteritems()): if (cp in v[0]) == v[1]: flags.append(k) if flags: name = '(%s) %s' % (', '.join(flags), name) return name def generate_text(outfile, title, fonts, targets, flag_sets, metrics, data_dir): print >> outfile, title print >> outfile print >> outfile, 'Fonts:' max_keylen = max(len(key) for key, _ in fonts) fmt = ' %%%ds: %%s (%%s)' % max_keylen for key, keyinfos in fonts: for font, name, _ in keyinfos: rel_font = path.relpath(font, data_dir) if font else '(no font)' print >> outfile, fmt % (key, name, rel_font) print >> outfile for target in targets: print >> outfile print >> outfile, target.generate_text(flag_sets, metrics) def _generate_fontkey(fonts, targets, data_dir): lines = ['

Targets'] lines.append('

') for tid, target in enumerate(targets): lines.append( '
%s' % (tid, target.name)) lines.append('
') lines.append('

Fonts') lines.append('

') for key, keyinfos in fonts: for font, name, _ in keyinfos: rel_font = path.relpath(font, data_dir) if font else '(no font)' lines.append('
%s%s%s' % (key, name, rel_font)) lines.append('
') return '\n'.join(lines) _nonalpha_re = re.compile(r'\W') def replace_nonalpha(key): return _nonalpha_re.sub('_', key) def _generate_styles(fonts, relpath): face_pat = """@font-face { font-family: "%s"; src:url("%s") }""" facelines = [] classlines = [] for key, keyinfos in fonts: index = 0 for font, _, _ in keyinfos: if len(keyinfos) > 1: kname = '%s_%d' % (replace_nonalpha(key), index) else: kname = replace_nonalpha(key) index += 1 if not font: classlines.append('.%s { font-size: 12pt }' % kname) else: if relpath is None: font = 'file://' + font else: font = path.join(relpath, path.basename(font)) facelines.append(face_pat % (kname, font)) classlines.append( '.%s { font-family: "%s", "noto_0" }' % (kname, kname)) lines = [] lines.extend(facelines) lines.append('') lines.extend(classlines) return '\n '.join(lines) def _character_string_html(codelist, used_font): C0_controls = frozenset(range(0, 0x20)) rkey, rinfo = used_font _, _, f_codelist = rinfo[0] f_codeset = frozenset(f_codelist.codeset() - C0_controls) cps = [cp for cp in codelist.codes() if cp in f_codeset] if not cps: return None line = [''] line.extend(unichr(cp) for cp in cps) line.append('') return ''.join(line) _FONT_CACHE = {} def _get_font(fontname): font = _FONT_CACHE.get(fontname) if not font: font = ttLib.TTFont(fontname) _FONT_CACHE[fontname] = font return font GMetrics = collections.namedtuple('GMetrics', 'lsb, rsb, wid, adv, cy') def _get_cp_metrics(font, cp): # returns metrics for nominal glyph for cp, or None if cp not in font cmap = font_data.get_cmap(font) if cp not in cmap: return None glyphs = font.getGlyphSet() g = glyphs[cmap[cp]] pen = BoundsPen(glyphs) g.draw(pen) if not pen.bounds: return None xmin, ymin, xmax, ymax = pen.bounds return GMetrics( xmin, g.width - xmax, xmax - xmin, g.width, (ymin + ymax) / 2) _expr_re = re.compile(r'(\||&|(? -1: line = line[:ix] line = line.strip() if not line: continue if line.startswith('!'): m = def_re.match(line) if not m: raise Exception('could not match definition line "%s"' % line) def_name = m.group(1) def_codelist = m.group(2) if def_name in def_names: raise Exception('more than one flag definition named "%s"' % def_name) def_names.add(def_name) def_info.append(('!define', def_name, def_codelist)) else: m = flag_re.match(line) if not m: raise Exception('could not match set definition line "%s"' % line) flag_name = m.group(1) flag_in_str = m.group(2) if flag_in_str == 'in': flag_in = True elif flag_in_str == 'not in': flag_in = False else: raise Exceeption( 'found "%s" but expected \'in\' or \'not in\'' % flag_in_str) flag_expr = m.group(3) flag_info.append([flag_name, flag_in, flag_expr]) used_names = set() flag_expr_info = [] for flag_name, flag_in, flag_expr in flag_info: expr_list = _scan_expr(flag_expr, def_names, used_names) flag_expr_info.append((flag_name, flag_in, expr_list)) used_defs = [t for t in def_info if t[1] in used_names] return used_defs + flag_expr_info """ def _generate_html_lines(outfile, fontkey): ascii_chars = u'#*0123456789 ' epact_chars = u''.join(unichr(cp) for cp in range(0x102e1, 0x102fb + 1)) + ' ' phaistos_chars = u''.join(unichr(cp) for cp in range(0x101d0, 0x101fc + 1)) + ' ' stringlist = [ ascii_chars, u''.join(u'%s\u20e3' % c for c in ascii_chars), epact_chars, u''.join(u'%s\U000102e0' % c for c in epact_chars), phaistos_chars, u''.join(u'%s\U000101fd' % c for c in phaistos_chars), ] lines = ['

Sequences

'] lines.append('
' % fontkey) for string in stringlist: lines.append(string + '
') lines.append('
') print >> outfile, '\n'.join(lines) """ def generate_html( outfile, title, fonts, targets, flag_sets, context, metrics, cp_to_targets, data_dir, relpath): """If not None, relpath is the relative path from the outfile to the datadir, for use when generating font paths.""" template = string.Template(_HTML_HEADER_TEMPLATE) styles = _generate_styles(fonts, relpath) mstyles = _METRICS_STYLES if metrics != None else '' contextfont = _CONTEXT_FONT if context else 'sansserif' print >> outfile, template.substitute( title=title, styles=styles, mstyles=mstyles, contextfont=contextfont) print >> outfile, _generate_fontkey(fonts, targets, data_dir) # hardcode font key for now # _generate_html_lines(outfile, 'sym4') for index, target in enumerate(targets): print >> outfile, target.generate_html( index, context, metrics, flag_sets, cp_to_targets) print >> outfile, _HTML_FOOTER def _build_cp_to_targets(targets): """Return a map from cp to a list of pairs of target group index and name.""" cp_to_targets = collections.defaultdict(list) # for i, (name, codelist, _) in enumerate(targets): for i, target in enumerate(targets): tinfo = (i, target.name) for cp in target.codes(): cp_to_targets[cp].append(tinfo) return cp_to_targets def generate( outfile, fmt, data_dir, font_spec, target_spec, flag_spec, title=None, context=None, metrics=False, relpath=None): if not path.isdir(data_dir): raise Exception('data dir "%s" does not exist' % data_dir) font_data = _read_font_data_from_file(path.join(data_dir, font_spec)) target_data = _read_target_data_from_file( path.join(data_dir, target_spec)) flag_data = _read_flag_data_from_file( None if not flag_spec else path.join(data_dir, flag_spec)) fonts, targets, flag_sets = _load_fonts_targets_flags( font_data, target_data, flag_data, data_dir) if fmt == 'txt': generate_text(outfile, title, fonts, targets, flag_sets, metrics, data_dir) elif fmt == 'html': cp_to_targets = _build_cp_to_targets(targets) generate_html( outfile, title, fonts, targets, flag_sets, context, metrics, cp_to_targets, data_dir, relpath) else: raise Exception('unrecognized format "%s"' % fmt) def _parse_metrics_file(filename): """format is 'cp;lsb;adv' with cp in hex.""" metrics = {} with open(filename, 'r') as f: for line in f: ix = line.find('#') if ix >= 0: line = line[:ix] line = line.strip() if not line: continue cp, lsb, adv, cy = line.split(';') cp = int(cp, 16) lsb = int(lsb) adv = int(adv) cy = int(cy) if cp in metrics: raise Exception('cp %04x listed twice in %s' % (cp, filename)) metrics[cp] = (lsb, adv, cy) return metrics def _call_generate( outfile, fmt, data_dir, font_spec, target_spec, flag_spec, title=None, context=None, metrics=None): data_dir = path.realpath(path.abspath(data_dir)) if metrics != None: if metrics == '-': metrics = {} else: metrics = _parse_metrics_file(path.join(data_dir, metrics)) if outfile: outfile = path.realpath(path.abspath(outfile)) base, ext = path.splitext(outfile) if ext: ext = ext[1:] if not ext: if not fmt: fmt = 'txt' ext = 'txt' else: ext = fmt elif not fmt: if ext not in ['html', 'txt']: raise Exception('don\'t understand "%s" format' % ext) fmt = ext elif ext != fmt: raise Exception('mismatching format "%s" and output extension "%s"' % ( fmt, ext)) outfile = base + '.' + ext outdir = path.dirname(outfile) if data_dir == outdir: relpath = '' elif data_dir.startswith(outdir): relpath = data_dir[len(outdir) + 1:] else: relpath = None with codecs.open(outfile, 'w', 'utf-8') as f: generate( f, fmt, data_dir, font_spec, target_spec, flag_spec, title, context, metrics, relpath) else: if not fmt: fmt = 'txt' generate( sys.stdout, fmt, data_dir, font_spec, target_spec, flag_spec, title, context, metrics) def main(): DEFAULT_OUT = 'dingbats_compare' parser = argparse.ArgumentParser() parser.add_argument( '-o', '--outfile', help='Path to output file (will use %s)' % DEFAULT_OUT, const=DEFAULT_OUT, metavar='file', nargs='?') parser.add_argument( '-t', '--output_type', help='output format (defaults based on outfile ' 'extension, else "txt")', choices=['txt', 'html']) parser.add_argument( '-d', '--data_dir', help='Path to directory containing fonts ' 'and data', metavar='dir', required=True) parser.add_argument( '--font_spec', help='Name of font spec file relative to data dir ' '(default \'font_data.txt\')', metavar='file', default='font_data.txt') parser.add_argument( '--target_spec', help='Name of target spec file relative to data dir ' '(default \'target_data.txt\')', metavar='file', default='target_data.txt') parser.add_argument( '--flag_spec', help='Name of flag spec file relative to data dir ' '(uses \'flag_data.txt\' with no arg)', metavar='file', nargs='?', const = 'flag_data.txt') parser.add_argument( '--title', help='Title on html page', metavar='title', default='Character and Font Comparison') parser.add_argument( '--context', help='Context pattern for glyphs (e.g. \'O%%sg\')', metavar='ctx', nargs='?', const='O%sg') parser.add_argument( '-m', '--metrics', help='Report metrics of target font, optionally ' 'with preferred metrics file', metavar='file', nargs='?', const='-') args = parser.parse_args() _call_generate( args.outfile, args.output_type, args.data_dir, args.font_spec, args.target_spec, args.flag_spec, args.title, args.context, args.metrics) if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/nototools/generate_fontdiff_input.py000066400000000000000000000036371316231664500303770ustar00rootroot00000000000000# Copyright 2016 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Generates fontdiff HTML input with all glyphs shared by two fonts. Usage: "python generate_input.py [font_path_a] [font_path_b] [specimen_path]". Each glyph will be put on its own line in the output HTML. """ import sys from fontTools import ttLib from nototools import hb_input def main(font_path_a, font_path_b, specimen_path): generator = hb_input.HbInputGenerator(ttLib.TTFont(font_path_a)) inputs_a = generator.all_inputs(warn=True) generator = hb_input.HbInputGenerator(ttLib.TTFont(font_path_b)) inputs_b = set(generator.all_inputs(warn=True)) to_ignore = ('\00', '\02') to_replace = (('&', '&'), ('<', '<'), ('>', '>')) out_lines = [''] for features, text in [i for i in inputs_a if i in inputs_b]: if any(char in text for char in to_ignore): continue for old, new in to_replace: text = text.replace(old, new) style = '' if features: style = (' style="font-feature-settings: %s;"' % ', '.join("'%s'" % f for f in features)) out_lines.append('%s

' % (style, text)) out_lines.append('') out_text = '\n'.join(out_lines) with open(specimen_path, 'w') as out_file: out_file.write(out_text.encode('utf-8')) if __name__ == '__main__': main(*sys.argv[1:]) nototools-2017-09-25-tooling-for-phase3-update/nototools/generate_lang_font_table.py000077500000000000000000000061051316231664500304730ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2015 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """ Generate a csv with the following columns: - bcp-47 language code (minimal) - script (most likely script for the code) - style name (Serif, Sans, Naskh...) - ui status (UI, ) - font name This will start with a canned list of languages for now. We could generate a more comprehensive list from our data. """ import collections import os from os import path from nototools import cldr_data from nototools import noto_fonts LANGS = ( 'af,am,ar,az,bg,bn,bs,ca,cs,da,de,el,en,en-US,es,es-419,et,eu,fa,fi,' 'fil,fr,gl,gu,hi,hr,hu,hy,id,is,it,iw,ja,ka,kk,km,kn,ko,ky,lo,lt,lv,' 'mk,ml,mn,mr,ms,my,ne,nl,no,pa,pl,pt-BR,pt-PT,ro,ru,si,sk,sl,sq,sr,' 'sv,sw,ta,te,th,tl,tr,uk,ur,uz,vi,zh-CN,zh-TW,zu').split(',') def accept_font(f): return ( f.family == 'Noto' and # exclude Arimo, Tinos, Cousine f.style != 'Nastaliq' and # exclude Nastaliq, not suitable for maps f.script != 'HST' and # exclude Historic, tool limitation f.weight == 'Regular' and # to limit members of fonts, we don't not f.slope and # care about weights f.fmt in ['ttf', 'otf'] and # only support these formats (not f.is_cjk or f.subset)) # 'small' language-specific CJK subsets fonts = filter(accept_font, noto_fonts.get_noto_fonts()) families = noto_fonts.get_families(fonts).values() def write_csv_header(outfile): print >> outfile, 'Code,Script,Style,UI,Font Name' def write_csv(outfile, lang, script, style, ui, members): if members: print >> outfile, ','.join( [lang, script, style, ui, noto_fonts.get_font_family_name(members[0].filepath)]) with open('lang_to_font_table.csv', 'w') as outfile: write_csv_header(outfile) for lang in LANGS: script = cldr_data.get_likely_script(lang) found_font = False for family in sorted(families, key=lambda f: f.name): if script not in noto_fonts.script_key_to_scripts( family.rep_member.script): continue found_font = True members = family.hinted_members or family.unhinted_members ui_members = [m for m in members if m.is_UI] non_ui_members = [m for m in members if not m.is_UI] assert len(ui_members) <= 1 assert len(non_ui_members) <= 1 write_csv(outfile, lang, script, family.rep_member.style, '', non_ui_members) write_csv(outfile, lang, script, family.rep_member.style, 'UI', ui_members) if not found_font: print '## no font found for lang %s' % lang nototools-2017-09-25-tooling-for-phase3-update/nototools/generate_sample_from_exemplar.py000077500000000000000000000452341316231664500315640ustar00rootroot00000000000000#!/usr/bin/env python # Copyright 2015 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Generates script-specific samples (collections of chars) using cldr exemplar data for languages written in a script.""" import argparse import codecs import collections import locale import os from os import path import re import shutil import xml.etree.cElementTree as ElementTree from nototools import cldr_data from nototools import create_image from nototools import extra_locale_data from nototools import notoconfig from nototools import tool_utils from nototools import unicode_data try: from icu import Locale, Collator print 'will use icu locale-specific order' _HAVE_ICU = True except ImportError as e: print 'will use default locale sort order' _HAVE_ICU = False NOTO_TOOLS = path.abspath(path.join(path.dirname(__file__), os.pardir)) CLDR_DIR = path.join(NOTO_TOOLS, 'third_party', 'cldr') _VERBOSE = False def get_script_to_exemplar_data_map(): """Return a map from script to 3-tuples of: - locale tuple (lang, script, region, variant) - cldr_relative path to src of exemplar data - tuple of the exemplar chars""" script_map = collections.defaultdict(dict) for directory in ['common', 'seed', 'exemplars']: data_dir = path.join(directory, 'main') for filename in os.listdir(path.join(CLDR_DIR, data_dir)): if not filename.endswith('.xml'): continue exemplar_list = cldr_data.get_exemplar_from_file(path.join(data_dir, filename)) if not exemplar_list: if _VERBOSE: print ' no exemplar list for %s' % path.join(data_dir, filename) continue lsrv = cldr_data.loc_tag_to_lsrv(filename[:-4]) if not lsrv: if _VERBOSE: print ' no lsrv for %s' % path.join(data_dir, filename) continue src = path.join(directory, filename) script = lsrv[1] if not script: if _VERBOSE: print ' no script for %s' % path.join(data_dir, filename) continue loc_tag = cldr_data.lsrv_to_loc_tag(lsrv) loc_to_exemplar_info = script_map[script] if loc_tag in loc_to_exemplar_info: if _VERBOSE: print 'skipping %s, already have exemplars for %s from %s' % ( src, loc_tag, loc_to_exemplar_info[loc_tag][1]) continue # fix exemplars that look incorrect if script == 'Arab' and 'd' in exemplar_list: if _VERBOSE: print 'found \'d\' in %s for %s' % (src, lsrv) no_latin = True else: no_latin = False # exclude exemplar strings, and restrict to letters and digits def accept_cp(cp): if len(cp) != 1: return False cat = unicode_data.category(cp) if cat[0] != 'L' and cat != 'Nd': return False if no_latin and cp in 'df': return False return True filtered_exemplar_list = filter(accept_cp, exemplar_list) # some exemplar lists don't surround strings with curly braces, and end up # with duplicate characters. Flag these exemplar_chars = set() dup_chars = set() fixed_exemplar_list = [] for cp in filtered_exemplar_list: if cp in exemplar_chars: dup_chars.add(cp) else: exemplar_chars.add(cp) fixed_exemplar_list.append(cp) if len(dup_chars) > 0 and _VERBOSE: print 'duplicate exemplars in %s: %s' % ( src, ', '.join([u'\u200e%s\u200e (%x)' % (cp, ord(cp)) for cp in dup_chars])) loc_to_exemplar_info[loc_tag] = (lsrv, src, tuple(fixed_exemplar_list)) # supplement with extra locale data for loc_tag in extra_locale_data.EXEMPLARS: exemplar_list = cldr_data.get_exemplar_from_extra_data(loc_tag) lang, script = loc_tag.split('-') lsrv = (lang, script, None, None) loc_to_exemplar_info = script_map[script] src = '[extra locale data]/%s' % loc_tag if loc_tag in loc_to_exemplar_info: if _VERBOSE: print 'skipping %s, already have exemplars for %s from %s' % ( src, loc_tag, loc_to_exemplar_info[loc_tag][1]) continue # restrict to letters, except for zsym def accept_cp(cp): cat = unicode_data.category(cp) return cat[0] == 'L' or cat == 'Nd' if 'Zsym' not in loc_tag: filtered_exemplar_list = filter(accept_cp, exemplar_list) if len(filtered_exemplar_list) != len(exemplar_list) and _VERBOSE: print 'filtered some characters from %s' % src else: filtered_exemplar_list = exemplar_list loc_to_exemplar_info[loc_tag] = (lsrv, src, tuple(filtered_exemplar_list)) return script_map def show_rarely_used_char_info(script, loc_map, char_to_lang_map): # let's list chars unique to each language for loc_tag in sorted(loc_map): unique_chars = [] dual_chars = [] dual_shared_with = set() triple_chars = [] triple_shared_with = set() info = loc_map[loc_tag] exemplars = info[2] for cp in exemplars: num_common_langs = len(char_to_lang_map[cp]) if num_common_langs == 1: unique_chars.append(cp) elif num_common_langs == 2: dual_chars.append(cp) for shared_loc_tag in char_to_lang_map[cp]: if shared_loc_tag != loc_tag: dual_shared_with.add(shared_loc_tag) elif num_common_langs == 3: triple_chars.append(cp) for shared_loc_tag in char_to_lang_map[cp]: if shared_loc_tag != loc_tag: triple_shared_with.add(shared_loc_tag) script_tag = '-' + script if unique_chars: print '%s has %d unique chars: %s%s' % ( loc_tag, len(unique_chars), ' '.join(unique_chars[:100]), '...' if len(unique_chars) > 100 else '') if dual_chars: print '%s shares %d chars (%s%s) with 1 other lang: %s' % ( loc_tag, len(dual_chars), ' '.join(dual_chars[:20]), '...' if len(dual_chars) > 20 else '', ', '.join(sorted([loc.replace(script_tag, '') for loc in dual_shared_with]))) if triple_chars: print '%s shares %d chars (%s%s) with 2 other langs: %s' % ( loc_tag, len(triple_chars), ' '.join(triple_chars[:20]), '...' if len(triple_chars) > 20 else '', ', '.join(sorted([loc.replace(script_tag, '') for loc in triple_shared_with]))) if not (unique_chars or dual_chars or triple_chars): print '%s shares all chars with 3+ other langs' % loc_tag def get_char_to_lang_map(loc_map): char_to_lang_map = collections.defaultdict(list) for loc_tag in sorted(loc_map): info = loc_map[loc_tag] exemplars = info[2] for cp in exemplars: if loc_tag in char_to_lang_map[cp]: print 'loc %s (from %s) already in char_to_lang_map for %s (%x)' % ( loc_tag, info[1], cp, ord(cp)) else: char_to_lang_map[cp].append(loc_tag) return char_to_lang_map def char_lang_info(num_locales, char_to_lang_map): """Returns a tuple containing - characters ordered by the number of langs that use them - a list mapping number of shared langs to number of chars shared by those langs""" freq_list = [] hist = [0] * (num_locales + 1) for cp in char_to_lang_map: num_shared_langs = len(char_to_lang_map[cp]) if num_shared_langs >= len(hist): for shared_lang in char_to_lang_map[cp]: if shared_lang not in loc_map: print 'loc map does not have \'%s\'!' % shared_lang freq_list.append((num_shared_langs, cp)) if num_shared_langs >= len(hist): print 'num shared langs is %d but size of hist is %d' % (num_shared_langs, len(hist)) hist[num_shared_langs] += 1 freq_list.sort() return [cp for nl, cp in freq_list], hist def show_char_use_info(script, chars_by_num_langs, char_to_lang_map): script_tag = '-' + script for cp in chars_by_num_langs: langs = char_to_lang_map[cp] count = len(langs) limit = 12 without_script = [loc.replace(script_tag, '') for loc in langs[:limit]] without_script_str = ', '.join(sorted(without_script)) if count > limit: without_script_str += '...' print u'char %s\u200e (%x): %d %s' % (cp, ord(cp), count, without_script_str) print 'total chars listed: %d' % len(char_to_lang_map) def show_shared_langs_hist(hist): # histogram - number of chars per number of shared languages for i in range(1, len(hist)): print '[%3d] %3d %s' % (i, hist[i], 'x' * hist[i]) def get_upper_case_list(char_list): """Return the upper case versions where they differ. If no char in the list is a lower case variant, the result is empty.""" # keep in same order as input list. upper_case_chars = [] for cp in char_list: upcp = unicode_data.to_upper(cp) if upcp != cp: upper_case_chars.append(upcp) return upper_case_chars def show_tiers(char_list, num_tiers, tier_size): for tier in range(1, num_tiers + 1): if tier == 1: subset = char_list[-tier_size:] else: subset = char_list[tier * -tier_size:(tier-1) * -tier_size] if not subset: break tier_chars = sorted(subset) print 'tier %d: %s' % (tier, ' '.join(tier_chars)) upper_case_chars = get_upper_case_list(tier_chars) if upper_case_chars: print ' upper: ' + ' '.join(upper_case_chars) def get_rare_char_info(char_to_lang_map, shared_lang_threshold): """Returns a tuple of: - a set of 'rare_chars' (those used threshold langs or fewer), - a mapping from each locale with rare chars to a set of its rare chars""" rare_chars = set() locs_with_rare_chars = collections.defaultdict(set) for cp in char_to_lang_map: num_shared_langs = len(char_to_lang_map[cp]) if num_shared_langs <= shared_lang_threshold: rare_chars.add(cp) for lang_tag in char_to_lang_map[cp]: locs_with_rare_chars[lang_tag].add(cp) return rare_chars, locs_with_rare_chars _lang_for_script_map = {} def _init_lang_for_script_map(): locs_by_lit_pop = [loc for _, loc in cldr_data.get_lang_scrs_by_decreasing_global_lit_pop()] for t in locs_by_lit_pop: lsrv = cldr_data.loc_tag_to_lsrv(t) script = lsrv[1] if script not in _lang_for_script_map: lang = lsrv[0] # print '%s lang => %s' % (script, lang) _lang_for_script_map[script] = lang def lang_for_script(script): """Return the most common language for a script based on literate population.""" # should use likely subtag data for this. # the current code assumes all we want is lang -> script, I'd have to change # it to map locale->locale. Right now I dont' get Hant -> zh_Hant, only # Hant -> zh, which isn't good enough I think. if not _lang_for_script_map: _init_lang_for_script_map() return _lang_for_script_map.get(script) def select_rare_chars_for_loc(script, locs_with_rare_chars, shared_lang_threshold, char_to_lang_map): """Return a list of 2-tuples of loc and selected rare chars, ordered by decreasing literate population of the locale.""" rarity_threshold_map = {} for lang_tag in locs_with_rare_chars: rarity_threshold_map[lang_tag] = shared_lang_threshold selected = [] locs_by_lit_pop = [loc for _, loc in cldr_data.get_lang_scrs_by_decreasing_global_lit_pop()] # examine locales in decreasing order of literate population for loc_tag in locs_by_lit_pop: if script not in loc_tag: continue loc_tag = loc_tag.replace('_', '-') if loc_tag not in locs_with_rare_chars: continue most_specific_chars = set() most_specific_chars_count = rarity_threshold_map[loc_tag] # From the rare chars for this locale, select those that # are most specific to this language. In most cases they # are unique to this language. for cp in locs_with_rare_chars[loc_tag]: num_chars = len(char_to_lang_map[cp]) if num_chars <= most_specific_chars_count: if num_chars < most_specific_chars_count: most_specific_chars = set() most_specific_chars.add(cp) most_specific_chars_count = num_chars if most_specific_chars: selected.append((loc_tag, most_specific_chars)) for cp in most_specific_chars: for tag in char_to_lang_map[cp]: if rarity_threshold_map[tag] > most_specific_chars_count: rarity_threshold_map[tag] = most_specific_chars_count return selected def show_selected_rare_chars(selected): print 'langs with rare chars by lang pop:' for lang_tag, chars in selected: print '%10s: %s' % (lang_tag, ', '.join(sorted(chars))) def sort_for_script(cp_list, script): lang = lang_for_script(script) if not lang: print 'cannot sort for script, no lang for %s' % script return cp_list if _HAVE_ICU: from icu import Locale, Collator loc = Locale(lang + '_' + script) col = Collator.createInstance(loc) return sorted(cp_list, cmp=col.compare) else: import locale return sorted(cp_list, cmp=locale.strcoll) def addcase(sample, script): cased_sample = [] for cp in sample: ucp = unicode_data.to_upper(cp) if ucp != cp and ucp not in sample: # Copt has cased chars paired in the block cased_sample.append(ucp) if cased_sample: cased_sample = ' '.join(cased_sample) if _VERBOSE: print 'add case for %s' % script return sample + '\n' + cased_sample return sample def _generate_excluded_characters(): # Some of these exclusions are desired, and some are reluctantly applied because # Noto currently does not support some characters. We use the generated # data as fallback samples on a per-script and not per-font basis, which is also # a problem. # Religious characters # deva OM, Arabic pbuh, bismillah codepoints = [0x950, 0xfdfa, 0xfdfd] # Cyrillic characters not in sans or serif codepoints.append(0x2e2f) for cp in range(0xa640, 0xa680): codepoints.append(cp) # Arabic character not in kufi codepoints.append(0x08a0) chars = set() for cp in codepoints: chars.add(unichr(cp)) return frozenset(chars) _EXCLUDE_CHARS = _generate_excluded_characters() def generate_sample_for_script(script, loc_map): num_locales = len(loc_map) if num_locales == 1: tag, info = loc_map.iteritems().next() exemplars = info[2] ex_len = len(exemplars) info = '%s (1 locale)\nfrom exemplars for %s (%s%d chars)' % ( script, tag, 'first 60 of ' if ex_len > 60 else '', ex_len) # don't sort, rely on exemplar order sample = ' '.join(exemplars[:60]) sample = addcase(sample, script) return sample, info script_tag = '-' + script char_to_lang_map = get_char_to_lang_map(loc_map) if len(char_to_lang_map) <= 60: info = '%s (%d locales)\nfrom merged exemplars (%d chars) from %s' % ( script, num_locales, len(char_to_lang_map), ', '.join([loc.replace(script_tag, '') for loc in loc_map])) sample = ' '.join(sort_for_script(list(char_to_lang_map), script)) sample = addcase(sample, script) return sample, info # show_rarely_used_char_info(script, loc_map, char_to_lang_map) chars_by_num_langs, num_langs_to_num_chars = char_lang_info( num_locales, char_to_lang_map) # show_char_use_info(chars_by_num_langs, char_to_lang_map) # show_shared_langs_hist(num_langs_to_num_chars) # show_tiers(chars_by_num_langs, 3, 40) shared_lang_threshold = min(7, num_locales) rare_chars, locs_with_rare_chars = get_rare_char_info( char_to_lang_map, shared_lang_threshold) selected = select_rare_chars_for_loc(script, locs_with_rare_chars, shared_lang_threshold, char_to_lang_map) # show_selected_rare_chars(selected) chars_by_num_langs = [cp for cp in chars_by_num_langs if cp not in _EXCLUDE_CHARS] chosen_chars = list(chars_by_num_langs)[-60:] rare_extension = [] for _, chars in selected: avail_chars = [cp for cp in chars if cp not in chosen_chars and cp not in rare_extension and cp not in _EXCLUDE_CHARS] rare_extension.extend(sorted(avail_chars)[:4]) # vietnamese dominates latin otherwise if len(rare_extension) > 20: break chosen_chars = chosen_chars[:60 - len(rare_extension)] chosen_chars.extend(rare_extension) info = ('%s (%d locales)\n' 'from most common exemplars plus chars specific to most-read languages' % ( script, num_locales)) sample = ' '.join(sort_for_script(chosen_chars, script)) sample = addcase(sample, script) return sample, info def generate_samples(dstdir, imgdir, summary): if imgdir: imgdir = tool_utils.ensure_dir_exists(imgdir) print 'writing images to %s' % imgdir if dstdir: dstdir = tool_utils.ensure_dir_exists(dstdir) print 'writing files to %s' % dstdir verbose = summary script_map = get_script_to_exemplar_data_map() for script in sorted(script_map): sample, info = generate_sample_for_script(script, script_map[script]) if summary: print print info print sample if imgdir: path = os.path.join(imgdir, 'und-%s_chars.png' % script) print 'writing image %s.png' % script rtl = script in ['Adlm', 'Arab', 'Hebr', 'Nkoo', 'Syrc', 'Tfng', 'Thaa'] create_image.create_png( sample, path, font_size=34, line_spacing=40, width=800, rtl=rtl) if dstdir: filename = 'und-%s_chars.txt' % script print 'writing data %s' % filename filepath = os.path.join(dstdir, filename) with codecs.open(filepath, 'w', 'utf-8') as f: f.write(sample + '\n') def main(): default_dstdir = os.path.join(NOTO_TOOLS, 'sample_texts') parser = argparse.ArgumentParser() parser.add_argument('--dstdir', help='where to write samples (default %s)' % default_dstdir, default=default_dstdir, metavar='dir') parser.add_argument('--imgdir', help='if defined, generate images in this dir', metavar='dir') parser.add_argument('--save', help='write sample files in dstdir', action='store_true') parser.add_argument('--summary', help='output list of samples and how they were generated', action='store_true') parser.add_argument('--verbose', help='print warnings and extra info', action='store_true') args = parser.parse_args() if not args.save and not args.imgdir and not args.summary: print 'nothing to do.' return if args.verbose: global _VERBOSE _VERBOSE = True generate_samples(args.dstdir if args.save else None, args.imgdir, args.summary) if __name__ == '__main__': locale.setlocale(locale.LC_COLLATE, 'en_US.UTF-8') main() nototools-2017-09-25-tooling-for-phase3-update/nototools/generate_sample_text.py000077500000000000000000000026431316231664500277050ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Generate sample text based on a range given on the command line.""" __author__ = 'roozbeh@google.com (Roozbeh Pournader)' import sys def char_rep_to_code(char_rep): """Converts a character representation in hex to its code.""" return int(char_rep, 16) def main(argv): """Outputs a space-separated list of characters based on input ranges.""" chars = [] for arg in argv[1:]: if '-' in arg: hyphen_index = arg.index('-') code1 = char_rep_to_code(arg[:hyphen_index]) code2 = char_rep_to_code(arg[hyphen_index+1:]) chars += range(code1, code2+1) else: chars.append(char_rep_to_code(arg)) chars = u' '.join([unichr(code) for code in chars]) print chars.encode('UTF-8') if __name__ == '__main__': main(sys.argv) nototools-2017-09-25-tooling-for-phase3-update/nototools/generate_sample_text_html.py000077500000000000000000000073041316231664500307300ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Generate a simple html page with the sample text.""" import argparse import codecs import collections import os from os import path from nototools import cldr_data from nototools import tool_utils _HTML_HEADER = """ Noto Sample Text Table """ _HTML_FOOTER = """ """ def generate_table(filename): with codecs.open(filename, 'w', 'utf-8') as f: script_to_samples = _get_script_to_samples() print >> f, _HTML_HEADER print >> f, '' print >> f, ''] cols.append(bcp_no_script) cols.append(bcp_en) cols.append(sample_type) cols.append(sample_text) print >> f, '
Script
BCP
nametypetext' for script, samples in sorted(script_to_samples.iteritems()): script_en = cldr_data.get_english_script_name(script) print >> f, '
%s' % script_en for bcp, sample_type, sample_text in samples: try: lsrv = cldr_data.loc_tag_to_lsrv(bcp) lsrv = (lsrv[0], None, lsrv[2], lsrv[3]) bcp_no_script = cldr_data.lsrv_to_loc_tag(lsrv) bcp_en = cldr_data.get_english_language_name(bcp_no_script) if not bcp_en: bcp_en = 'No name' if bcp_en == 'Unknown Language' and sample_type == 'chars': bcp_en = '(characters)' except: print 'could not get english name for %s' % bcp bcp_en = bcp cols = ['
'.join(cols) print >> f, '
 ' print >> f, '
' print >> f, _HTML_FOOTER def _get_script_to_samples(): script_to_samples = collections.defaultdict(list) sample_dir = tool_utils.resolve_path('[tools]/sample_texts') for f in sorted(os.listdir(sample_dir)): base, ext = path.splitext(f) if ext != '.txt' or '_' not in base: print 'skipping', f continue bcp, sample_type = base.split('_') try: lang, script, region, variant = cldr_data.loc_tag_to_lsrv(bcp) except: print 'bcp %s did not parse as lsrv' % bcp continue if script == 'Latn': continue script_to_samples[script].append((bcp, sample_type)) for script, samples in sorted(script_to_samples.iteritems()): pref = {} for bcp, sample_type in samples: if bcp not in pref or sample_type == 'udhr': pref[bcp] = sample_type full_samples = [] for bcp, sample_type in sorted(pref.iteritems()): filename = '%s_%s.txt' % (bcp, sample_type) filepath = path.join(sample_dir, filename) with codecs.open(filepath, 'r', 'utf-8') as f: sample_text = f.read() full_samples.append((bcp, sample_type, sample_text)) script_to_samples[script] = full_samples return script_to_samples def main(): parser = argparse.ArgumentParser() parser.add_argument( '-o', '--outfile', help='name of output file', metavar='file', default='sample_text.html') args = parser.parse_args() generate_table(args.outfile) if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/nototools/generate_sample_texts.sh000077500000000000000000000073321316231664500300520ustar00rootroot00000000000000#!/bin/bash # # Copyright 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. ./generate_sample_text.py 30A0-30FF 31F0-31FF > ../sample_texts/ain-Jpan.txt ./generate_sample_text.py 10B00-10B35 > ../sample_texts/und-Avst.txt ./generate_sample_text.py 1B05-1B33 > ../sample_texts/und-Bali.txt ./generate_sample_text.py A6A0-A6EF > ../sample_texts/und-Bamu.txt ./generate_sample_text.py 0995-09A8 09AA-09B0 09B2 09B6-09B9 09F0 09F1 09E6-09EF > ../sample_texts/und-Beng.txt ./generate_sample_text.py 1401-145F > ../sample_texts/und-Cans.txt ./generate_sample_text.py AA00-AA28 AA50-AA59 > ../sample_texts/und-Cham.txt ./generate_sample_text.py 2C80-2CB1 > ../sample_texts/und-Copt.txt ./generate_sample_text.py 0410-044F > ../sample_texts/und-Cyrl.txt ./generate_sample_text.py 0915-0939 > ../sample_texts/und-Deva.txt ./generate_sample_text.py 10400-1044F > ../sample_texts/und-Dsrt.txt ./generate_sample_text.py 13000-1303F > ../sample_texts/und-Egyp.txt ./generate_sample_text.py 1200-1248 > ../sample_texts/und-Ethi.txt ./generate_sample_text.py 10D0-10F0 > ../sample_texts/und-Geor.txt ./generate_sample_text.py 0391-03A1 03A3-03A9 03B1-03C9 > ../sample_texts/und-Grek.txt ./generate_sample_text.py 4E00-4E20 > ../sample_texts/und-Hans.txt ./generate_sample_text.py 4E00-4E40 > ../sample_texts/und-Hant.txt ./generate_sample_text.py 05D0-05EA > ../sample_texts/und-Hebr.txt ./generate_sample_text.py A984-A9B2 > ../sample_texts/und-Java.txt ./generate_sample_text.py A90A-A925 A900-A909 > ../sample_texts/und-Kali.txt ./generate_sample_text.py 0C95-0CA8 0CAA-0CB3 0CB5-0CB9 > ../sample_texts/und-Knda.txt ./generate_sample_text.py 1A20-1A4C > ../sample_texts/und-Lana.txt ./generate_sample_text.py 0E81 0E82 0E84 0E87 0E88 0E8A 0E8D 0E94-0E97 0E99-0E9F 0EA1-0EA3 0EA5 0EA7 0EAA 0EAB 0EAD 0EAE > ../sample_texts/und-Laoo.txt ./generate_sample_text.py 1C00-1C23 > ../sample_texts/und-Lepc.txt ./generate_sample_text.py 10000-1000B 10080-1009F > ../sample_texts/und-Linb.txt ./generate_sample_text.py 0840-0858 > ../sample_texts/und-Mand.txt ./generate_sample_text.py 1820-1842 > ../sample_texts/und-Mong.txt ./generate_sample_text.py ABC0-ABE2 > ../sample_texts/und-Mtei.txt ./generate_sample_text.py 1000-1021 1023-1027 1029-102A > ../sample_texts/und-Mymr.txt ./generate_sample_text.py 07CA-07E7 07C0-07C9 > ../sample_texts/und-Nkoo.txt ./generate_sample_text.py 10C00-10C48 > ../sample_texts/und-Orkh.txt ./generate_sample_text.py A882-A8B3 > ../sample_texts/und-Saur.txt ./generate_sample_text.py 0D85-0D96 0D9A-0DB1 0DB3-0DBB 0DBD 0DC0-0DC6 > ../sample_texts/und-Sinh.txt ./generate_sample_text.py 1B83-1BA0 > ../sample_texts/und-Sund.txt ./generate_sample_text.py 0710-072F > ../sample_texts/und-Syrc.txt ./generate_sample_text.py 0B95 0B99-0B9A 0B9C 0B9E-0B9F 0BA3-0BA4 0BA8-0BAA 0BAE-0BB9 > ../sample_texts/und-Taml.txt ./generate_sample_text.py AA80-AAAF AADB-AADF > ../sample_texts/und-Tavt.txt ./generate_sample_text.py 0C15-0C28 0C2A-0C33 0C35-0C39 > ../sample_texts/und-Telu.txt ./generate_sample_text.py 2D30-2D67 > ../sample_texts/und-Tfng.txt ./generate_sample_text.py 0E01-0E2E > ../sample_texts/und-Thai.txt ./generate_sample_text.py 10380-1039D 1039F > ../sample_texts/und-Ugar.txt ./generate_sample_text.py 12000-1202F > ../sample_texts/und-Xsux.txt nototools-2017-09-25-tooling-for-phase3-update/nototools/generate_samples.py000077500000000000000000000365411316231664500270300ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2016 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import argparse import codecs import re """Generate samples from a description file.""" USAGE = """ 'python generate_samples.py [options] description_file [output_file]' This uses a description file containing character patterns to generate text samples, writing them to output_file if it is provided and to the console if not. The description file is encoded in UTF-8, and contains two kinds of definitions, groups and patterns. Groups name lists of text sequences, patterns name sequences of groups. Group are specified first, then patterns. '#' is a comment character, anything after '#' on a line is ignored. Names of groups and patterns use upper and lower case A-Z, digits, and underscore. Group names are followed by an equals sign and then a list of one or more character sequences or ranges separated by comma (spaces around commas are ignored). In addition to the actual characters, unicode code point values can be specified as hex escapes in either upper or lower case: use '\\x' for two digits, '\\u' for four digits, and '\\U' for six digits. For example, '\\u200d' can be used to represent zero width joiner. A backslash before a comma, a space, pound sign ('#'), a hyphen (ASCII '-'), or another backslash represents a comma, space, pound sign, hyphen, or backslash (unicode values can also be used) and prevents the character from being interpreted in its usual fashion. Any other character following a backslash is rejected. Out-of-range unicode values are also rejected. Ranges include all defined characters between and including the one to the left and right of the hyphen. Pattern names are followed by colon and then a list of one or more group names enclosed in angle brackets, optionally separated by whitespace. A sequence from each group in the pattern is selected, and the sequences are concatenated together. Groups can also be enclosed in parentheses to form virtual groups that are a union of all the sequences of the enclosed groups. For example: ----- # comments are ignored # groups abc = a, b, c d2f = d-\\x66 xy = x, y ZWJ = \\u200d # patterns xy_zwj_xy: xy_abcxy: () xy_d2f: ----- By default samples are generated in order, one per line, ordered by the sequence of patterns in the description file, groups within a pattern, and sequences within an group. """ ### # options: # # --patterns # only generate text using the named patterns # # --group # generate all output for a single pattern on one line, separated by sep # # --sep # define the separator to use when grouping, defaults to tab # # --sort # sorts within a group by unicode code point order instead of the order in # which the sequences in the group were defined. # # --label # write a line containing the name of the pattern before the samples that # each pattern generates, and separate each such group of samples with a # blank line. # Some unicode utilities for working with python2 narrow builds. # The python2 docs are abysmal in this respect, they tell you nothing # about working with non-bmp unicode on narrow builds. # constants _LEAD_OFFSET = 0xD800 - (0x10000 >> 10); _SURROGATE_OFFSET = 0x10000 - (0xD800 << 10) - 0xDC00; def cp_to_str(cp): if cp < 0x10000: return unichr(cp) return unicode(r'\U%08X' % cp, encoding='unicode_escape') def surrogate_pair_to_cp(low, high): # assumes low and high are proper surrogate values return (low << 10) + high + _SURROGATE_OFFSET; def prev_cp(ustr, index): if index < 0: index += len(ustr) if index == 0: return None cp = ord(ustr[index - 1]) if cp >= 0xdc00 and cp <= 0xe000 and index > 1: # high surrogate pcp = ord(ustr[index - 2]) if pcp >= 0xd800 and pcp < 0xdc00: # low surrogate return index - 2, surrogate_pair_to_cp(pcp, cp) return index - 1, cp def next_cp(ustr, index): limit = len(ustr) if index < 0: index += limit if index >= limit: return None cp = ord(ustr[index]) if cp >= 0xd800 and cp < 0xdc00 and index < limit - 1: # low surrogate ncp = ord(ustr[index + 1]) if ncp >= 0xdc00 and ncp < 0xe000: # high surrogate return index + 2, surrogate_pair_to_cp(cp, ncp) return index + 1, cp ### generator class class SampleGen(object): def __init__(self, patterns, pattern_order): self.patterns = patterns self.pattern_order = pattern_order def generate(self, out_file, select_patterns, group, sep, label, sort): if not select_patterns: select_patterns = self.pattern_order else: ok_patterns = [] for pattern in select_patterns: if pattern not in self.patterns: print 'No pattern named \'%s\' in %s' % ( pattern, ', '.join(self.pattern_order)) continue ok_patterns.append(pattern) select_patterns = ok_patterns output_lines = [] for pattern in select_patterns: self._generate_output(output_lines, pattern, group, sep, label, sort) if not label: # force trailing newline, if we label we already have one output_lines.append('') output_text = '\n'.join(output_lines) if out_file: with codecs.open(out_file, 'w', 'utf-8') as f: f.write(output_text) else: print output_text def _generate_output(self, output_lines, pattern, group, sep, label, sort): pat_list = self.patterns[pattern] if label: output_lines.append(pattern) pat_output = [] self._gen_results(pat_list, sort, '', pat_output) if group: output_lines.append(sep.join(pat_output)) else: output_lines.extend(pat_output) if label: output_lines.append('') def _gen_results(self, pat_list, sort, prefix, samples): if not pat_list: samples.append(prefix) return items = self._get_items(pat_list[0], sort) for item in items: self._gen_results(pat_list[1:], sort, prefix + item, samples) def _get_items(self, group, sort): if type(group) == tuple: items = [] for subgroup in group: for item in self._get_items(subgroup, False): # ensure no duplicates result from union of groups if item not in items: items.append(item) else: items = group return sorted(items) if sort else items # parser utilities def _strip_comments(definition_lines): """Not as straightforward as usual, because comments can be escaped by backslash, and backslash can escape space.""" out_lines = [] for line in definition_lines: pos = 0 while True: x = line.find('#', pos) if x <= 0: if x == 0: line = '' break is_escaped = False if line[x - 1] == '\\': # see how many there are y = x - 2 while y >= pos and line[y] == '\\': y -= 1 is_escaped = (x - y) % 2 == 0 if is_escaped: pos = x + 1 else: line = line[:x] break out_lines.append(line) return out_lines _ESCAPES = [ # Must do backslash substitutions first. # (also note raw strings cannot end in a backslash). ('\\\\', r'\x5c'), (r'\ ', r'\x20'), (r'\#', r'\x23'), (r'\,', r'\x2c'), (r'\-', r'\x2d'), ] def _canonicalize_escapes(definition_lines): """Replace each escape of a reserved character with a unicode escape.""" out_lines = [] for line in definition_lines: if '\\' in line: for old, new in _ESCAPES: line = line.replace(old, new) out_lines.append(line) return out_lines _UNICODE_ESCAPE_RE = re.compile(r'\\([Uux])([0-9a-fA-F]{2,6})') def _unescape(arg): # we only allow 6 hex digits after \U, 8 is too many, legacy cruft. def sub(esc_match): esc_type = esc_match.group(1) esc_val = esc_match.group(2) if esc_type == 'x': esc_len = 2 elif esc_type == 'u': esc_len = 4 elif esc_type == 'U': esc_len = 6 else: raise ValueError('internal error') if len(esc_val) < esc_len: error = 'Unicode escape too short: "%s"' % ( esc_match.group(0)) raise ValueError(error) unival = int(esc_val[:esc_len], 16) if unival > 0x10ffff: error = 'Unicode escape value too large: "%X"' % unival raise ValueError(error) if unival < 0x10000: prefix = unichr(unival) else: prefix = unicode( '\\U%08X' % unival, encoding='unicode_escape', errors='strict') return prefix + esc_val[esc_len:] return _UNICODE_ESCAPE_RE.sub(sub, arg) def _convert_to_segments(arg): """Return a list of strings and/or range tuples.""" # First we split on hyphen chunks = arg.split('-') # If you want a literal hyphen, escape it. # A hyphen with no value before or after (including two # hyphens in succession) is an error. for part in chunks: if not part: raise ValueError('bad range in "%s"' % arg) # Once we've done this, we can replace unicode escapes # (otherwise one might expand to hyphen). chunks = [_unescape(arg) for arg in chunks] # if no hyphen, we just have the string, so return it if len(chunks) == 1: return chunks result = [] prev = chunks[0] for i in range(1, len(chunks)): index, pcp = prev_cp(prev, len(prev)) if index != 0: result.append(prev[:index]) next = chunks[i] index, ncp = next_cp(next, 0) if ncp <= pcp: raise ValueError('illegal range from %0x to %0x in "%s"' % ( pcp, ncp, arg)) result.append((pcp, ncp)) prev = next[index:] if prev: result.append(prev) return result def _segments_to_strings(segments, prefix, result): """Recursive utility function to expand segments into a list of strings.""" if len(segments) == 0: result.append(prefix) return segment = segments[0] segments = segments[1:] if type(segment) == tuple: for cp in range(segment[0], segment[1] + 1): _segments_to_strings(segments, prefix + cp_to_str(cp), result) else: _segments_to_strings(segments, prefix + segment, result) def _expand_ranges(arg): """Return a list of args, expanding ranges in arg if present.""" segments = _convert_to_segments(arg) result = [] _segments_to_strings(segments, '', result) return result def _parse_group(value): args = [] try: for arg in value.split(','): for expanded_arg in _expand_ranges(arg.strip()): if expanded_arg in args: print 'The sequence "%s" is already in this group, ignoring it' % ( 'U+%04X' % cp for cp in expanded_arg) continue args.append(expanded_arg) except ValueError as e: print str(e) return None if not args[-1]: # special case trailing comma, ignore args after it args = args[:-1] return args def _check_balanced_parens(text): count = 0 for i in range(len(text)): if text[i] == '(': count += 1 elif text[i] == ')': count -= 1 if count < 0: print 'Unmatched close paren.' return None if count > 0: print 'Unmatched open paren.' return None return text def _find_matching_close_paren(text, pos): count = 0 for i in range(pos, len(text)): if text[i] == '(': count += 1 elif text[i] == ')': count -= 1 if count == 0: return i return -1 _PAT_RE = re.compile(r'\s*(?:<([a-zA-Z0-9_]+)>|\()') def _parse_pattern(value, groups): """Return a list of lists (groups) or tuples of lists (parenthesized groups).""" pat_list = [] while value: m = _PAT_RE.match(value) if not m: return None name = m.group(1) if name: # angle brackets if name not in groups: print 'Could not find "%s" in groups (%s)' % ( name, ', '.join(sorted(groups))) return None pat_list.append(groups[name]) value = value[m.end():].strip() else: # open paren y = _find_matching_close_paren(value, 0) if y < 0: raise ValueError("internal error") pat = _parse_pattern(value[1 : y], groups) if not pat: return None pat_list.append(tuple(pat)) value = value[y + 1:].strip() return pat_list _LINE_RE = re.compile(r'^\s*([a-zA-Z0-9_]+)\s*([:=])\s*(.*)$') def parse_sample_gen(definition): original_lines = definition.splitlines() definition_lines = _strip_comments(original_lines) definition_lines = _canonicalize_escapes(definition_lines) groups = {} patterns = {} pattern_order = [] for n in range(len(definition_lines)): line = definition_lines[n] if not line: continue m = _LINE_RE.match(line) if not m: print 'Could not parse "%s"' % original_lines[n] return None name = m.group(1) is_group = m.group(2) == '=' value = m.group(3) if is_group: value = _parse_group(value) else: if not _check_balanced_parens(value): return None value = _parse_pattern(value, groups) if not value: print 'Could not parse values in "%s"' % original_lines[n] return None if is_group: if name in groups: print 'The group "%s" has already been defined' % name return None groups[name] = value else: if name in patterns: print 'The pattern "%s" has already been defined' % name return None pattern_order.append(name) patterns[name] = value return SampleGen(patterns, pattern_order) def generate_samples( defs_file, out_file, patterns=None, group=False, sep='\t', label=False, sort=False): with codecs.open(defs_file, 'r', 'utf-8') as f: sample_gen = parse_sample_gen(f.read()) if sample_gen: sample_gen.generate(out_file, patterns, group, sep, label, sort) def main(): parser = argparse.ArgumentParser( epilog=USAGE, formatter_class=argparse.RawDescriptionHelpFormatter) parser.add_argument( '-p', '--patterns', help='only output the named patterns, to name ' 'more than one, join them with comma', metavar='pat') parser.add_argument( '-g', '--group', help='group output from a pattern on a single line', action='store_true') parser.add_argument( '-s', '--sep', help='separator to use when grouping, default tab', metavar='sep', default='\t') parser.add_argument( '--sort', help='sort sequences within a group by unicode code point', action='store_true') parser.add_argument( '-l', '--label', help='include the name of a pattern before the ' 'samples it generates, separate groups with blank lines', action='store_true') parser.add_argument( 'defs', help='the name of the definitions file', metavar='definition_file') parser.add_argument( 'out', help='the name of the output file', metavar='output_file', nargs='?') args = parser.parse_args() generate_samples( args.defs, args.out, patterns=args.patterns, group=args.group, sep=args.sep, label=args.label, sort=args.sort) if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/nototools/generate_waterfall_html.py000077500000000000000000000204511316231664500303620ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2017 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Generate html page with waterfalls for a number of fonts.""" import argparse import codecs import os from os import path import re import shutil from nototools import lang_data from nototools import noto_fonts from nototools import tool_utils def _add_styles(lines, prefix, font_names, font_sizes): lines.append(prefix + '') _JS_LINES = """ """ def _add_js(lines, prefix): for line in _JS_LINES.splitlines(): line = line.rstrip() if line: lines.append(prefix + line) else: lines.append('') def _add_example(lines, prefix, index, name, sizes, text): lines.append(prefix + '
' % index) lines.append(prefix + '

%s

' % name) lines.append(prefix + ' ') for i, s in enumerate(sizes): lines.append(prefix + '
%dpx:%s' % ( s, index, i, text)) lines.append(prefix + '
') lines.append(prefix + '
') def _add_examples(lines, prefix, font_names, font_sizes, text): for i, name in enumerate(font_names): _add_example(lines, prefix, i, name, font_sizes, text) def _add_example_switch(lines, prefix, font_names): lines.append(prefix + '

Select font') lines.append(prefix + '') def _write_html(directory, font_names, font_sizes, text, out_file): lines = [ '', ' ', ' ', ' Font specimens'] _add_styles(lines, ' ', font_names, font_sizes) _add_js(lines, ' ') lines.append(' ') lines.append(' ') _add_example_switch(lines, ' ', font_names) _add_examples(lines, ' ', font_names, font_sizes, text) lines.append(' ') lines.append('') lines.append('') html_text = '\n'.join(lines) if out_file: with codecs.open(out_file, 'w', 'utf-8') as f: f.write(html_text) print 'wrote %s' % out_file else: print html_text def _get_font_list(root, name_str): match_re = re.compile(r'.*%s.*\.(?:ttf|otf)$' % name_str) font_list = [] for d in [root, path.join(root, 'hinted'), path.join(root, 'unhinted')]: if path.isdir(d): font_list.extend( path.join(d, f)[len(root)+1:] for f in os.listdir(d) if match_re.match(f)) return sorted(font_list) def _get_sample_text(directory, font_names, lang): script_keys = set() scripts = set() for name in font_names: noto_font = noto_fonts.get_noto_font(path.join(directory, name)) if noto_font.script not in script_keys: script_keys.add(noto_font.script) scripts |= noto_fonts.script_key_to_scripts(noto_font.script) if lang: lang_scripts = ['%s-%s' % (lang, script) for script in scripts] else: lang_scripts = [ '%s-%s' % (lang_data.script_to_default_lang(script), script) for script in scripts] lang_scripts.extend('und-%s' % script for script in scripts) samples = [] sample_dir = tool_utils.resolve_path('[tools]/sample_texts') for f in os.listdir(sample_dir): for lang_script in lang_scripts: if f.startswith(lang_script): samples.append(f) break print sorted(samples) # limit to scripts supported by all fonts selected = [] for sample in samples: sample_supported=True for script_key in script_keys: script_key_supported = False for script in noto_fonts.script_key_to_scripts(script_key): if '-%s_' % script in sample: script_key_supported = True break if not script_key_supported: sample_supported = False break if sample_supported: selected.append(sample) if not selected: raise Exception('no sample supported by all fonts') samples = selected # limit to udhr ones if any exist selected = [s for s in samples if '_udhr' in s] if selected: samples = selected # limit to non-'und' ones if any exist selected = [s for s in samples if not s.startswith('und-')] if selected: samples = selected if len(samples) != 1: raise Exception ( 'found %d sample files (%s) but need exactly 1' % ( len(samples), ', '.join(sorted(samples)))) print 'selected sample %s' % samples[0] with codecs.open(path.join(sample_dir, samples[0]), 'r', 'utf-8') as f: text = f.read() return text.strip() def generate(root, font_str, font_sizes, text, lang, out_file): root = tool_utils.resolve_path(root) if not path.isdir(root): raise Exception('%s is not a directory' % root) font_names = _get_font_list(root, font_str) if not font_names: raise Exception('no fonts matching "%s" in %s' % (font_str, root)) print 'found %d fonts under %s:\n %s' % ( len(font_names), root, '\n '.join(sorted(font_names))) if not font_sizes: font_sizes = [10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 24, 28, 32] if not text: text = _get_sample_text(root, font_names, lang) if out_file: out_file = path.abspath(out_file) file_dir = tool_utils.ensure_dir_exists(path.dirname(out_file)) if path.exists(out_file): print 'file %s already exists, overwriting' % out_file font_dir = tool_utils.ensure_dir_exists(path.join(file_dir, 'fonts')) for font_name in font_names: src = path.join(root, font_name) dst = tool_utils.ensure_dir_exists( path.dirname(path.join(font_dir, font_name))) shutil.copy2(src, dst) _write_html(root, font_names, font_sizes, text, out_file) def main(): parser = argparse.ArgumentParser() parser.add_argument( '-r', '--root', help='directory containing fonts, optionally in ' 'hinted/unhinted subdirs', default='[fonts]', required=True, metavar='dir') parser.add_argument( '-n', '--name_str', help='string to match font name', required=True, metavar='str') parser.add_argument( '-t', '--text', help='text to use, defaults to udhr text for the ' 'script when there is a common script', metavar='str') parser.add_argument( '-l', '--lang', help='language string to select among multiple texts ' 'for a script', metavar='lang') parser.add_argument( '-o', '--out_file', help='name of file to output', nargs='?', const='specimens.html', metavar='file') parser.add_argument( '-s', '--sizes', help='font sizes', nargs='+', type=int, metavar='size') args = parser.parse_args() generate( args.root, args.name_str, args.sizes, args.text, args.lang, args.out_file) if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/nototools/generate_website_2_data.py000077500000000000000000001535041316231664500302370ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright 2015 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Generate data files for the Noto website.""" from __future__ import division __author__ = 'roozbeh@google.com (Roozbeh Pournader)' import argparse import codecs import collections import csv import datetime import glob import json import locale import os from os import path import shutil import subprocess import xml.etree.cElementTree as ElementTree from fontTools import ttLib from nototools import cldr_data from nototools import coverage from nototools import create_image from nototools import extra_locale_data from nototools import lang_data from nototools import notoconfig from nototools import noto_fonts from nototools import tool_utils from nototools import unicode_data TOOLS_DIR = notoconfig.noto_tools() FONTS_DIR = notoconfig.noto_fonts() CJK_DIR = notoconfig.noto_cjk() EMOJI_DIR = notoconfig.noto_emoji() CLDR_DIR = path.join(TOOLS_DIR, 'third_party', 'cldr') LAT_LONG_DIR = path.join(TOOLS_DIR, 'third_party', 'dspl') SAMPLE_TEXT_DIR = path.join(TOOLS_DIR, 'sample_texts') # The Apache license is currently not used for our fonts, but leave # this just in case this changes in the future. We have a copy of # the Apache license in the noto-emoji repo, since it covers the # code there, so just use that. APACHE_LICENSE_LOC = path.join(EMOJI_DIR, 'LICENSE') SIL_LICENSE_LOC = path.join(CJK_DIR, 'LICENSE') README_HEADER = """This package is part of the noto project. Visit google.com/get/noto for more information. Built on %s from the following noto repositor%s: ----- """ def check_families(family_map): # ensure the count of fonts in a family is what we expect for family_id, family in sorted(family_map.iteritems()): hinted_members = family.hinted_members unhinted_members = family.unhinted_members if (hinted_members and unhinted_members and len(hinted_members) != len(unhinted_members)): # Let's not consider this an error for now. Just drop the members with # the higher number of fonts, assuming it's a superset of the fonts in the # smaller set, so that the fonts we provide and display are available to # all users. This means website users will not be able to get these fonts # via the website. # # We'll keep the representative font and not try to change it. print 'Family %s has %d hinted members but %d unhinted memberts' % ( family_id, len(hinted_members), len(unhinted_members)) # The namedtuples are immutable, so we need to break them apart and reform # them name = family.name rep_member = family.rep_member charset = family.charset if len(hinted_members) < len(unhinted_members): unhinted_members = [] else: hinted_members = [] family_map[family_id] = noto_fonts.NotoFamily( name, family_id, rep_member, charset, hinted_members, unhinted_members) def get_script_to_family_ids(family_map): """The keys in the returned map are all the supported scripts.""" script_to_family_ids = collections.defaultdict(set) for key in family_map: script_key = family_map[key].rep_member.script for script in noto_fonts.script_key_to_scripts(script_key): script_to_family_ids[script].add(key) return script_to_family_ids def get_family_id_to_lang_scrs(lang_scrs, script_to_family_ids): family_id_to_lang_scrs = collections.defaultdict(set) for lang_scr in lang_scrs: lang, script = lang_scr.split('-') family_ids = script_to_family_ids[script] for family_id in family_ids: family_id_to_lang_scrs[family_id].add(lang_scr) # Nastaliq patches: # Additionally map some languages in Arab script to Nastaliq ('Aran') if 'nastaliq-aran' in family_id_to_lang_scrs: nastaliq_lang_scrs = family_id_to_lang_scrs['nastaliq-aran'] for lang_scr in ['bal-Arab', 'hnd-Arab', 'hno-Arab', 'ks-Arab', 'lah-Arab', 'pa-Arab', 'skr-Arab', 'ur-Arab']: if not lang_scr in lang_scrs: print 'Map nastaliq: %s not found' % lang_scr else: print 'added %s to nastaliq' % lang_scr nastaliq_lang_scrs.add(lang_scr) # Kufi patches: # - Kufi is broken for Urdu Heh goal (issue #34) # - Kufi doesn't support all characters needed for Khowar # - Kufi doesn't support all characters needed for Kashmiri if 'kufi-arab' in family_id_to_lang_scrs: kufi_lang_scrs = family_id_to_lang_scrs['kufi-arab'] for lang_scr in ['ur-Arab', 'khw-Arab', 'ks-Arab']: if not lang_scr in lang_scrs: print 'Patch kufi: %s not found' % lang_scr else: kufi_lang_scrs.remove(lang_scr) print 'removed %s from kufi' % lang_scr if not kufi_lang_scrs: break # lad patches: # - lad is written in a style of Hebrew called Rashi, not sure # if we support it so let's exclude it for now if 'sans-hebr' in family_id_to_lang_scrs: hebr_lang_scrs = family_id_to_lang_scrs['sans-hebr'] for lang_scr in ['lad-Hebr']: if not lang_scr in lang_scrs: print 'Patch lad: %s not found' % lang_scr else: hebr_lang_scrs.remove(lang_scr) print 'removed %s from sans-hebr' % lang_scr if not hebr_lang_scrs: break; # ja patches: # - we generate all permutations of ja, including ja-Kana and # ja-Hiri, but ja-Jpan subsumes these, so omit them. if 'sans-jpan' in family_id_to_lang_scrs: jpan_lang_scrs = family_id_to_lang_scrs['sans-jpan'] for lang_scr in ['ja-Kana', 'ja-Hira']: if not lang_scr in lang_scrs: print 'Patch jpan: %s not found' % lang_scr else: jpan_lang_scrs.remove(lang_scr) print 'removed %s from sans-jpan' % lang_scr if not jpan_lang_scrs: break; for f, ls in sorted(family_id_to_lang_scrs.iteritems()): if not ls: print '!family %s has no lang' % f return family_id_to_lang_scrs def get_family_id_to_lang_scr_to_sample_key(family_id_to_lang_scrs, families, lang_scr_to_sample_infos): """For each lang_scr + family combination, determine which sample to use from those available for the lang_scr. If the family can't display any of the samples, report an error, the lang will not be added to those supported by the family. If the family supports no languages, also report an error. The returned value is a tuple: - a map from family_id to another map, which is: - a map from lang_scr to sample_key - a map from sample_key to sample info """ family_id_to_lang_scr_to_sample_key = {} sample_key_to_info = {} tested_keys = set() failed_keys = set() for family_id in sorted(family_id_to_lang_scrs): lang_scr_to_sample_key = {} for lang_scr in sorted(family_id_to_lang_scrs[family_id]): sample_infos = lang_scr_to_sample_infos[lang_scr] assert len(sample_infos) > 0 sample_key_for_lang = None for info in sample_infos: sample, _, sample_key = info full_key = sample_key + '-' + family_id if full_key in tested_keys: if full_key in failed_keys: print 'family %s already rejected sample %s (lang %s)' % ( family_id, sample_key, lang_scr) continue else: failed_cps = set() tested_keys.add(full_key) charset = families[family_id].charset for cp in sample: if ord(cp) in [ 0xa, 0x28, 0x29, 0x2c, 0x2d, 0x2e, 0x3b, 0x5b, 0x5d, 0x2010, 0x202e, 0xfe0e, 0xfe0f]: continue if ord(cp) not in charset: failed_cps.add(ord(cp)) if failed_cps: print 'family %s rejects sample %s for lang %s:\n %s' % ( family_id, sample_key, lang_scr, '\n '.join('%04x (%s)' % ( cp, unichr(cp)) for cp in sorted(failed_cps))) failed_keys.add(full_key) continue # print 'family %s accepts sample %s for lang %s' % ( # family_id, sample_key, lang_scr) sample_key_for_lang = sample_key if sample_key not in sample_key_to_info: sample_key_to_info[sample_key] = info break if not sample_key_for_lang: print '%s has no sample to display in %s' % (lang_scr, family_id) else: lang_scr_to_sample_key[lang_scr] = sample_key_for_lang if not lang_scr_to_sample_key: print '!%s can display no samples for any lang of %s' % ( family_id, ', '.join(sorted(family_id_to_lang_scrs[family_id]))) else: print '%s has samples for %s langs' % ( family_id, len(lang_scr_to_sample_key)) family_id_to_lang_scr_to_sample_key[family_id] = lang_scr_to_sample_key return (family_id_to_lang_scr_to_sample_key, sample_key_to_info) def get_family_id_to_regions(family_id_to_lang_scr_to_sample_key): lang_scr_to_regions = collections.defaultdict(set) for region in sorted(cldr_data.known_regions()): if region == 'ZZ': continue if len(region) > 2: # e.g. world print 'skipping region %s' % region continue lang_scrs = cldr_data.region_to_lang_scripts(region) for lang_scr in lang_scrs: lang_scr_to_regions[lang_scr].add(region) family_id_to_regions = collections.defaultdict(set) warnings = set() for tup in family_id_to_lang_scr_to_sample_key.iteritems(): family_id, lang_scr_to_sample_key = tup for lang_scr in lang_scr_to_sample_key: if lang_scr in lang_scr_to_regions: for region in lang_scr_to_regions[lang_scr]: family_id_to_regions[family_id].add(region) else: # don't warn about undefined languages if not lang_scr.startswith('und'): warnings.add(lang_scr) for lang_scr in sorted(warnings): print 'no mapping from %s to any region' % lang_scr return family_id_to_regions def get_region_to_family_ids(family_id_to_regions): region_to_family_ids = collections.defaultdict(set) for family_id, regions in family_id_to_regions.iteritems(): for region in regions: region_to_family_ids[region].add(family_id) return region_to_family_ids def get_named_lang_scrs(family_id_to_lang_scr_to_sample_key): """Return the list of lang_scrs whose names appear in the UI.""" named_lang_scrs = lang_data.lang_scripts() supported_lang_scrs = set() for family_id in family_id_to_lang_scr_to_sample_key: lang_scrs = [ l for l in family_id_to_lang_scr_to_sample_key[family_id].keys() if l in named_lang_scrs] supported_lang_scrs.update(lang_scrs) return supported_lang_scrs def get_lang_scr_sort_order(lang_scrs): """Return a sort order for lang_scrs based on the english name, but clustering related languages.""" def lang_key(lang_scr): name = lang_data.lang_script_to_names(lang_scr)[0] if name.endswith (' script)'): ix = name.rfind('(') - 1 script_sfx = ' ' + name[ix + 2: len(name) - 8] name = name[:ix] else: script_sfx = '' key = name for prefix in ['Ancient', 'Central', 'Eastern', 'Lower', 'Middle', 'North', 'Northern', 'Old', 'Southern', 'Southwestern', 'Upper', 'West', 'Western']: if name.startswith(prefix + ' '): key = name[len(prefix) + 1:] + ' ' + name[:len(prefix)] break for cluster in ['Arabic', 'French', 'Chinese', 'English', 'German', 'Hindi', 'Malay', 'Nahuatl', 'Tamazight', 'Thai']: if name.find(cluster) != -1: key = cluster + '-' + name break return key + script_sfx sorted_lang_scrs = list(lang_scrs) sorted_lang_scrs.sort(key=lang_key) n = 0 tag_order = {} for lang_scr in sorted_lang_scrs: tag_order[lang_scr] = n n += 1 return tag_order def get_charset_info(charset): """Returns an encoding of the charset as pairs of lengths of runs of chars to skip and chars to include. Each length is written as length - 1 in hex-- except when length == 1, which is written as the empty string-- and separated from the next length by a comma. Thus successive commas indicate a length of 1, a 1 indicates a length of 2, and so on. Since the minimum representable length is 1, the base is -1 so that the first run (a skip) of 1 can be output as a comma to then start the first included character at 0 if need be. Only as many pairs of values as are needed to encode the last run of included characters.""" ranges = coverage.convert_set_to_ranges(charset) prev = -1 range_list = [] for start, end in ranges: range_len = start - 1 - prev if range_len > 0: range_list.append('%x' % range_len) else: range_list.append('') range_len = end - start if range_len > 0: range_list.append('%x' % range_len) else: range_list.append('') prev = end + 1 return ','.join(range_list) _sample_names = [] def get_sample_names_for_lang_scr_typ(lang_scr, typ): """Sample names are of the form 'lang-scr(-var)*typ.txt', return names starting with lang-scr and ending with typ, stripping the extension, and sorted with lang-scr_typ first and the rest in alphabetical order.""" global _sample_names if not _sample_names: _sample_names = [ n[:-4] for n in os.listdir(SAMPLE_TEXT_DIR) if n.endswith('.txt')] names = [ n for n in _sample_names if n.startswith(lang_scr) and n.endswith(typ)] preferred = lang_scr + typ names.sort(key=lambda s: '' if s == preferred else s) return names def get_sample_from_sample_file(lang_scr_typ): filepath = path.join(SAMPLE_TEXT_DIR, lang_scr_typ + '.txt') if path.exists(filepath): return unicode(open(filepath).read().strip(), 'UTF-8') return None ATTRIBUTION_DATA = {} def get_attribution(lang_scr_typ): if not ATTRIBUTION_DATA: attribution_path = path.join(TOOLS_DIR, 'sample_texts', 'attributions.txt') with open(attribution_path, 'r') as f: data = f.readlines() for line in data: line = line.strip() if not line or line[0] == '#': continue tag, attrib = line.split(':') ATTRIBUTION_DATA[tag.strip()] = attrib.strip() print 'read %d lines of attribution data' % len(ATTRIBUTION_DATA) try: return ATTRIBUTION_DATA[lang_scr_typ + '.txt'] except KeyError: if not lang_scr_typ.endswith('_chars'): print 'no attribution for %s' % lang_scr_typ return 'none' EXEMPLAR_CUTOFF_SIZE = 60 def sample_text_from_exemplar(exemplar): exemplar = [c for c in exemplar if unicode_data.category(c[0])[0] in 'LNPS'] exemplar = exemplar[:EXEMPLAR_CUTOFF_SIZE] return ' '.join(exemplar) def get_sample_infos(lang_scr): """Return a list of tuples of: - a short sample text string - an attribution key, one of UN: official UN translation, needs attribution other: not an official UN translation, needs non-attribution original: public domain translation, does not need attribution none: we have no attribution info on this, does not need attribution - source key. The list is in order of priority: language texts, udhr samples, exemplars for the language, sample chars for the script, exemplars for the script.""" assert '-' in lang_scr sample_infos = [] def add_samples(lang_scr, typ): for src_key in get_sample_names_for_lang_scr_typ(lang_scr, typ): sample_text = get_sample_from_sample_file(src_key) if sample_text is not None: attr = get_attribution(src_key) sample_infos.append((sample_text, attr, src_key)) def add_exemplars(lang_scr): exemplar, src_key = cldr_data.get_exemplar_and_source(lang_scr) if exemplar is not None: sample_infos.append( (sample_text_from_exemplar(exemplar), 'none', src_key)) add_samples(lang_scr, '_text') add_samples(lang_scr, '_udhr') lang, script = lang_scr.split('-') if lang != 'und': add_exemplars(lang_scr) und_scr = 'und-' + script add_samples(und_scr, '_chars') add_exemplars(und_scr) if not sample_infos: print '!No sample info for %s' % lang_scr return sample_infos def get_family_id_to_default_lang_scr(family_id_to_lang_scrs, families): """Return a mapping from family id to default lang tag, for families that have multiple lang tags. This is based on likely subtags and the script of the family (Latn for LGC). """ family_id_to_default_lang_scr = {} for family_id, lang_scrs in family_id_to_lang_scrs.iteritems(): script_key = families[family_id].rep_member.script primary_script = noto_fonts.script_key_to_primary_script(script_key) if script_key == 'Aran': # patch for Nastaliq lang = 'ur' else: lang = lang_data.script_to_default_lang(primary_script) lang_scr = lang + '-' + primary_script if lang_scr not in lang_scrs: print 'default lang_scr \'%s\' not listed for family %s %s' % ( lang_scr, family_id, lang_scrs) family_id_to_default_lang_scr[family_id] = lang_scr return family_id_to_default_lang_scr lat_long_data = {} def read_lat_long_data(): with open(path.join(LAT_LONG_DIR, 'countries.csv')) as lat_long_file: for row in csv.reader(lat_long_file): region, latitude, longitude, _ = row if region == 'country': continue # Skip the header if not latitude: continue # Empty latitude latitude = float(latitude) longitude = float(longitude) lat_long_data[region] = (latitude, longitude) # From the English Wikipedia and The World Factbook at # https://www.cia.gov/library/publications/the-world-factbook/fields/2011.html lat_long_data.update({ 'AC': (-7-56/60, -14-22/60), # Ascension Island 'AX': (60+7/60, 19+54/60), # Åland Islands 'BL': (17+54/60, -62-50/60), # Saint Barthélemy 'BQ': (12+11/60, -68-14/60), # Caribbean Netherlands 'CP': (10+18/60, -109-13/60), # Clipperton Island 'CW': (12+11/60, -69), # Curaçao 'DG': (7+18/60+48/3600, 72+24/60+40/3600), # Diego Garcia # Ceuta and Melilla, using Ceuta 'EA': (35+53/60+18/3600, -5-18/60-56/3600), 'IC': (28.1, -15.4), # Canary Islands 'MF': (18+4/60+31/3600, -63-3/60-36/3600), # Saint Martin 'SS': (8, 30), # South Sudan 'SX': (18+3/60, -63-3/60), # Sint Maarten 'TA': (-37-7/60, -12-17/60), # Tristan da Cunha # U.S. Outlying Islands, using Johnston Atoll 'UM': (16+45/60, -169-31/60), }) def get_region_lat_lng_data(regions): if not lat_long_data: read_lat_long_data() return lat_long_data def get_css_generic_family(family): if family in {'Noto Naskh', 'Noto Serif', 'Tinos'}: return 'serif' if family in {'Arimo', 'Noto Kufi', 'Noto Sans'}: return 'sans-serif' if family == 'Cousine': return 'monospace' return None def css_weight(weight_string): return noto_fonts.WEIGHTS[weight_string] _STRETCH_CSS_NAMES = { 'Normal': 'normal', 'Condensed': 'condensed', 'SemiCondensed': 'semi-condensed', 'ExtraCondensed': 'extra-condensed', } def css_stretch(stretch_string): if not stretch_string: return '' # fail if we don't recognize the name return _STRETCH_CSS_NAMES[stretch_string] _STRETCH_ABBREVIATIONS = { 'Normal': '', 'Condensed': 'cond', 'SemiCondensed': 'semcond', 'ExtraCondensed': 'excond', } def stretch_filename(stretch_string): """Portion of image output file corresponding to stretch value. We abbreviate.""" if not stretch_string or stretch_string == 'normal': return '' # fail if we don't recognize the name return '_' + _STRETCH_ABBREVIATIONS[stretch_string] def css_style(style_value): if style_value is None: return 'normal' else: assert style_value == 'Italic' return 'italic' _DEBUG_KEYS = frozenset([ 'families', 'script_to_family_ids', 'lang_scr_to_sample_infos', 'family_id_to_lang_scrs', 'family_id_to_lang_scr_to_sample_key', 'sample_key_to_info', 'family_id_to_regions', 'region_to_family_ids', 'family_id_to_default_lang_scr', ]) def check_debug(debug): if debug == None: return frozenset() elif not debug: return _DEBUG_KEYS for key in debug: if not key in _DEBUG_KEYS: print 'Bad debug key(s) found. Keys are:\n %s' % ( '\n '.join(sorted(_DEBUG_KEYS))) raise ValueError() return frozenset(debug) class WebGen(object): def __init__( self, target, clean, repo_info, pretty_json, no_zips=False, no_images=False, no_css=False, no_data=False, no_build=False, debug=None): self.target = target self.clean = clean self.repo_info = repo_info self.pretty_json = pretty_json self.no_zips = no_zips self.no_images = no_images self.no_css = no_css self.no_data = no_data self.no_build = no_build or (no_zips and no_images and no_css and no_data) self.debug = check_debug(debug) self.pkgs = path.join(target, 'pkgs') self.fonts = path.join(target, 'fonts') self.css = path.join(target, 'css') self.samples = path.join(target, 'samples') self.data = path.join(target, 'data') def clean_target_dir(self): if path.exists(self.target): print 'Removing the old website directory from %s...' % self.target shutil.rmtree(self.target) def write_json(self, obj, name): filepath = path.join(self.data, name + '.json') with codecs.open(filepath, 'w', encoding='UTF-8') as f: json.dump(obj, f, ensure_ascii=False, separators=(',', ':')) if self.pretty_json: filepath = path.join(self.data, 'pretty', name + '-pretty.json') with codecs.open(filepath, 'w', encoding='UTF-8') as f: json.dump(obj, f, ensure_ascii=False, separators=(',', ': '), indent=4) def ensure_target_dirs_exist(self): def mkdirs(p): if not path.exists(p): os.makedirs(p) mkdirs(self.target) mkdirs(self.pkgs) mkdirs(self.css) mkdirs(self.fonts) mkdirs(self.samples) mkdirs(self.data) if self.pretty_json: mkdirs(path.join(self.data, 'pretty')) def create_zip(self, name, fonts, readme_path): zipname = name + '.zip' zippath = path.join(self.pkgs, zipname) if path.isfile(zippath): print('Assuming %s is valid.' % zipname) else: pairs = [(readme_path, path.basename(readme_path))] license_types = set(font.license_type for font in fonts) if 'apache' in license_types: pairs.append((APACHE_LICENSE_LOC, 'LICENSE_APACHE.txt')) if 'sil' in license_types: pairs.append((SIL_LICENSE_LOC, 'LICENSE_OFL.txt')) for font in fonts: pairs.append((font.filepath, path.basename(font.filepath))) tool_utils.generate_zip_with_7za_from_filepairs(pairs, zippath) print 'Created zip %s' % zippath return os.stat(zippath).st_size def get_readme_keys(self): return 'fonts cjk emoji all'.split() def get_readme_key_for_filepath(self, filepath): abs_filepath = tool_utils.resolve_path(filepath) for key in self.get_readme_keys()[:-1]: key_path = tool_utils.resolve_path('[%s]/' % key) if abs_filepath.startswith(key_path): return key raise Exception('no key for path %s' % abs_filepath) def get_readme_path(self, readme_key): return '/tmp/readmes/%s/README' % readme_key def build_readmes(self): """Create README files for the zips. These are named README and are put into /tmp/readmes/{fonts|cjk|emoji|all} before being copied to zip files.""" date_str = str(datetime.date.today()) names = self.get_readme_keys() for name in names: fname = self.get_readme_path(name) tool_utils.ensure_dir_exists(path.dirname(fname)) with open(fname, 'w') as f: if name == 'all': f.write(README_HEADER % (date_str, 'ies')) for i, n in enumerate(names[:-1]): if i > 0: f.write('-----\n') f.write(self.repo_info[n]) f.write('\n') else: f.write(README_HEADER % (date_str, 'y')) f.write(self.repo_info[name]) f.write('\n') def build_family_zips(self, key, family): readme_key = self.get_readme_key_for_filepath(family.rep_member.filepath) readme_path = self.get_readme_path(readme_key) zip_name = noto_fonts.get_family_filename(family) hinted_size = 0 unhinted_size = 0 if family.hinted_members: hinted_size = self.create_zip( zip_name + '-hinted', family.hinted_members, readme_path) if family.unhinted_members: unhinted_size = self.create_zip( zip_name + '-unhinted', family.unhinted_members, readme_path) return zip_name, hinted_size, unhinted_size def build_zips(self, families): zip_info = {} for key, family_data in families.iteritems(): zip_info[key] = self.build_family_zips(key, family_data) return zip_info def build_universal_zips(self, families): hinted_fonts = [] unhinted_fonts = [] readme_path = self.get_readme_path('all') for family_data in families.values(): hinted_fonts.extend( family_data.hinted_members or family_data.unhinted_members) unhinted_fonts.extend( family_data.unhinted_members or family_data.hinted_members) hinted_size = self.create_zip( 'Noto-hinted', hinted_fonts, readme_path) unhinted_size = self.create_zip( 'Noto-unhinted', unhinted_fonts, readme_path) return 'Noto', hinted_size, unhinted_size def copy_font(self, fontpath): basename = path.basename(fontpath) dst = path.join(self.fonts, basename) shutil.copy(fontpath, dst) return basename def build_family_css(self, key, family): fonts = [m for m in (family.hinted_members or family.unhinted_members) if not m.is_UI] fonts.sort( key=lambda f: ( f.is_mono, css_weight(f.weight), css_style(f.slope) == 'italic')) css_name = key + '.css' css_path = path.join(self.css, css_name) max_font_size = 0 with open(css_path, 'w') as css_file: for font in fonts: font_path = self.copy_font(font.filepath) max_font_size = max(max_font_size, os.stat(font.filepath).st_size) # Make it possible to access Mono cjk variants and those with irregular # css values by assigning them other names. css_family = family.name if font.is_cjk and font.is_mono: css_family += ' ' + 'Mono' weight = css_weight(font.weight) if weight % 100 != 0: css_family += ' ' + str(weight) # prevent auto-bolding of this font by describing it as bold weight = 700 slope = css_style(font.slope) css_file.write( '@font-face {\n' ' font-family: "%s";\n' ' font-weight: %d;\n' ' font-style: %s;\n' ' src: url(../fonts/%s) format("truetype");\n' '}\n' % (css_family, weight, slope, font_path)) return max_font_size def build_css(self, families): css_info = {} for key, family_data in families.iteritems(): css_info[key] = self.build_family_css(key, family_data) return css_info def build_data_json(self, family_id_to_lang_scr_to_sample_key, families, family_zip_info, universal_zip_info, family_id_to_regions, region_to_family_ids): data_obj = collections.OrderedDict() families_obj = collections.OrderedDict() # Sort families by English name, except 'Noto Sans', 'Noto Serif', and # 'Noto Mono' come first, in that order initial_ids = ['sans-lgc', 'serif-lgc', 'mono-mono'] family_ids = [family_id for family_id in family_id_to_lang_scr_to_sample_key if family_id not in initial_ids] family_ids = sorted(family_ids, key=lambda f: families[f].name) sorted_ids = [fid for fid in initial_ids if fid in family_id_to_lang_scr_to_sample_key] sorted_ids.extend(family_ids) for k in sorted_ids: family = families[k] family_obj = {} family_obj['name'] = family.name name, hinted_size, unhinted_size = family_zip_info[k] pkg_obj = collections.OrderedDict() if hinted_size: pkg_obj['hinted'] = hinted_size if unhinted_size: pkg_obj['unhinted'] = unhinted_size family_obj['pkgSize'] = pkg_obj # special case number of fonts for CJK if family.rep_member.is_cjk: num_fonts = 7 #ignore mono else: num_fonts = len(family.hinted_members or family.unhinted_members) family_obj['fonts'] = num_fonts # only displayed langs -- see build_family_json lang_scrs lang_scrs_map = family_id_to_lang_scr_to_sample_key[k] family_obj['langs'] = sum( [1 for l in lang_scrs_map if not l.startswith('und-')]) family_obj['regions'] = len(family_id_to_regions[k]) families_obj[k] = family_obj data_obj['family'] = families_obj data_obj['familyOrder'] = sorted_ids # get inverse map from lang_scr to family_id lang_scr_to_family_ids = collections.defaultdict(set) for family_id, lang_scrs in family_id_to_lang_scr_to_sample_key.iteritems(): for lang_scr in lang_scrs: lang_scr_to_family_ids[lang_scr].add(family_id) # Dont list 'und-' lang tags, these are for default samples and not # listed in the UI lang_scrs = [l for l in lang_scr_to_family_ids if not l.startswith('und-')] langs_obj = collections.OrderedDict() # sort by english name for lang_scr in sorted(lang_scrs, key=lambda l: lang_data.lang_script_to_names(l)[0]): lang_obj = collections.OrderedDict() names = lang_data.lang_script_to_names(lang_scr) english_name = names[0] lang_obj['name'] = english_name if cldr_data.is_rtl(lang_scr): lang_obj['rtl'] = True lang_obj['families'] = sorted(lang_scr_to_family_ids[lang_scr]) native_names = [n for n in names[1:] if n != english_name] if native_names: lang_obj['keywords'] = native_names langs_obj[lang_scr] = lang_obj data_obj['lang'] = langs_obj regions_obj = collections.OrderedDict() for region in sorted(region_to_family_ids, key=lambda r: cldr_data.get_english_region_name(r)): region_obj = collections.OrderedDict() region_obj['families'] = sorted(region_to_family_ids[region]) region_obj['keywords'] = [cldr_data.get_english_region_name(region)] regions_obj[region] = region_obj data_obj['region'] = regions_obj pkg_obj = collections.OrderedDict() pkg_obj['hinted'] = universal_zip_info[1] pkg_obj['unhinted'] = universal_zip_info[2] data_obj['pkgSize'] = pkg_obj self.write_json(data_obj, 'data') def _sorted_displayed_members(self, family): members = [m for m in (family.hinted_members or family.unhinted_members) if not (m.is_UI or (m.is_cjk and m.is_mono))] # sort non-italic before italic return sorted(members, key=lambda f: str(css_weight(f.weight)) + '-' + ('b' if css_style(f.slope) == 'italic' else 'a')) def build_family_json( self, family_id, family, lang_scrs_map, lang_scr_sort_order, regions, css_info, default_lang_scr): family_obj = collections.OrderedDict() category = get_css_generic_family(family.name) if category: family_obj['category'] = category if lang_scrs_map: # The map includes all samples, but some samples have no language. # These are not listed. lang_scrs = [l for l in lang_scrs_map.keys() if not l.startswith('und-')] lang_scrs.sort(key=lambda l: lang_scr_sort_order[l]) family_obj['langs'] = lang_scrs # The mapping from sample to sample id includes all samples. samples_obj = collections.OrderedDict() for lang_scr in sorted(lang_scrs_map.keys()): samples_obj[lang_scr] = lang_scrs_map[lang_scr] family_obj['samples'] = samples_obj if default_lang_scr: family_obj['defaultLang'] = default_lang_scr if lang_scrs_map: assert default_lang_scr in lang_scrs_map if regions: family_obj['regions'] = sorted(regions) if family.charset: family_obj['ranges'] = get_charset_info(family.charset) promo = None if family_id == 'emoji-zsye-color': promo = ('Explore all emojis in Noto Color Emoji', './help/emoji') elif family_id in [ 'sans-jpan', 'sans-kore', 'sans-hans', 'sans-hant', 'serif-jpan', 'serif-kore', 'serif-hans', 'serif-hant']: promo = ('Learn more about Noto Serif/Sans CJK', './help/cjk') if promo: promo_obj = collections.OrderedDict() promo_obj['text'] = promo[0] promo_obj['link'] = promo[1] family_obj['promo'] = promo_obj fonts_obj = [] displayed_members = self._sorted_displayed_members(family) for font in displayed_members: weight_style = collections.OrderedDict() weight_style['weight'] = css_weight(font.weight) weight_style['style'] = css_style(font.slope) fonts_obj.append(weight_style) family_obj['fonts'] = fonts_obj family_obj['fontSize'] = css_info self.write_json(family_obj, family_id) def build_families_json(self, family_id_to_lang_scr_to_sample_key, families, family_id_to_default_lang_scr, family_id_to_regions, family_css_info, lang_scr_sort_order): for family_id, lang_scrs_map in sorted( family_id_to_lang_scr_to_sample_key.iteritems()): family = families[family_id] regions = family_id_to_regions[family_id] css_info = family_css_info[family_id] default_lang_scr = family_id_to_default_lang_scr[family_id] self.build_family_json( family_id, family, lang_scrs_map, lang_scr_sort_order, regions, css_info, default_lang_scr) def build_misc_json(self, sample_key_to_info, region_data): meta_obj = collections.OrderedDict() samples_obj = collections.OrderedDict() for sample_key in sorted(sample_key_to_info): text, attrib, _ = sample_key_to_info[sample_key] sample_obj = collections.OrderedDict() sample_obj['text'] = text sample_obj['attrib'] = attrib samples_obj[sample_key] = sample_obj meta_obj['samples'] = samples_obj # don't need much accuracy for our map UI use case def trim_decimals(num): return float('%1.2f' % num) regions_obj = collections.OrderedDict() for region in sorted(region_data): lat, lng = region_data[region] lat = trim_decimals(lat) lng = trim_decimals(lng) region_obj = collections.OrderedDict() region_obj['lat'] = lat region_obj['lng'] = lng regions_obj[region] = region_obj meta_obj['region'] = regions_obj self.write_json(meta_obj, 'meta') def build_family_images( self, family, lang_scr, sample_text, attrib, sample_key): family_id = family.family_id is_cjk = family.rep_member.is_cjk is_rtl = cldr_data.is_rtl(lang_scr) displayed_members = self._sorted_displayed_members(family) for font in displayed_members: weight = css_weight(font.weight) style = css_style(font.slope) stretch = css_stretch(font.width) # empty for normal stretch_seg = stretch_filename(font.width) if font.variant == 'color': imgtype = 'png' fsize = 36 lspc = 44 else: imgtype = 'svg' fsize = 20 lspc = 32 image_file_name = '%s_%s%s_%d_%s.%s' % ( family_id, lang_scr, stretch_seg, weight, style, imgtype) if is_cjk and family.name.find('Serif') < 0: # The sans and serif cjk's are named differently, and it confuses # fontconfig. Sans includes 'Regular' and 'Bold' in the standard # font names, but serif doesn't. Fontconfig registers two names # for these in the sans (with and without the weight), but only # the name without weight for the serif. So if you ask pango/cairo # for the serif font and include the weight name, it fails and # falls back to some non-noto font. family_name = family.name + ' ' + font.weight else: family_name = family.name image_location = path.join(self.samples, image_file_name) if path.isfile(image_location): # Don't rebuild images when continuing. print "Continue: assuming image file '%s' is valid." % image_location continue print 'create %s' % image_file_name create_image.create_img( sample_text, image_location, family=family_name, language=lang_scr, rtl=is_rtl, width=685, # text is coming out bigger than we expect, perhaps this is why? font_size=int(fsize * (72.0/96.0)), line_spacing=int(lspc * (72.0/96.0)), weight=weight, style=style, stretch=stretch) def build_images(self, family_id_to_lang_scr_to_sample_key, families, family_id_to_default_lang_scr, sample_key_to_info): for family_id in sorted(family_id_to_lang_scr_to_sample_key): family = families[family_id] print 'Generating images for %s...' % family.name default_lang = family_id_to_default_lang_scr[family_id] lang_scr_to_sample_key = family_id_to_lang_scr_to_sample_key[family_id] # We don't know that rendering the same sample text with different # languages is the same, so we have to generate all the samples and # name them based on the language. But most of the samples with the # same font and text will be the same, because the fonts generally # only customize for a few language tags. Sad! for lang_scr, sample_key in sorted(lang_scr_to_sample_key.iteritems()): sample_text, attrib, _ = sample_key_to_info[sample_key] self.build_family_images( family, lang_scr, sample_text, attrib, sample_key) def build_ttc_zips(self): """Generate zipped versions of the ttc files and put in pkgs directory.""" # The font family code skips the ttc files, but we want them in the # package directory. Instead of mucking with the family code to add the ttcs # and then exclude them from the other handling, we'll just handle them # separately. # For now at least, the only .ttc fonts are the CJK fonts readme_path = self.get_readme_path('cjk') readme_pair = (readme_path, path.basename(readme_path)) filenames = [path.basename(f) for f in os.listdir(CJK_DIR) if f.endswith('.ttc')] for filename in filenames: zip_basename = filename + '.zip' zip_path = path.join(self.pkgs, zip_basename) if path.isfile(zip_path): print("Assuming built %s is valid." % zip_basename) continue oldsize = os.stat(path.join(CJK_DIR, filename)).st_size pairs = [ readme_pair, (SIL_LICENSE_LOC, 'LICENSE_OFL.txt'), (path.join(CJK_DIR, filename), filename)] tool_utils.generate_zip_with_7za_from_filepairs(pairs, zip_path) newsize = os.stat(zip_path).st_size print "Wrote " + zip_path print 'Compressed from {0:,}B to {1:,}B.'.format(oldsize, newsize) # NotoSans/SerifCJK.ttc.zip already has been zipped for size reasons # because git doesn't like very large files. So it wasn't in the above # files. For our purposes ideally it would have the license file in it, # but it doesn't. So we have to copy the zip and add the license to # the copy. # The Serif ttc is so big github won't let us push it. In fact, I can't # even commit it to my repo because then I can't push anything. So # the serif ttc might not be here. We want to provide it, but we don't # have it in git so the README doesn't apply. Not sure what to do about # this, for now don't include a README for it. There's no git repo for # people to trace this file back to. for filename in ['NotoSansCJK.ttc.zip', 'NotoSerifCJK.ttc.zip']: src_zip = path.join(CJK_DIR, filename) if not path.isfile(src_zip): print 'Warning: %s does not exist' % filename continue pairs = [(SIL_LICENSE_LOC, 'LICENSE_OFL.txt')] if os.stat(src_zip).st_size < 100000000: # lower than 100MB pairs.append(readme_pair) dst_zip = path.join(self.pkgs, filename) shutil.copy2(src_zip, dst_zip) tool_utils.generate_zip_with_7za_from_filepairs(pairs, dst_zip) def build_subset_zips(self): """Generate zipped versions of the CJK subset families for access via the link on the cjk help page.""" # The font family code skips the subset files, but we want them in the # package directory. Like the ttcs, we handle them separately. readme_path = self.get_readme_path('cjk') readme_pair = (readme_path, path.basename(readme_path)) for style in ['Sans', 'Serif']: for subset in ['KR', 'JP', 'SC', 'TC']: base_name = 'Noto%s%s' % (style, subset) zip_name = '%s.zip' % base_name zip_path = path.join(self.pkgs, zip_name) if path.isfile(zip_path): print("Assuming built %s is valid." % zip_name) continue filenames = glob.glob(path.join(CJK_DIR, base_name + '-*.otf')) if not filenames: raise Exception('no file in %s matched "%s"' % (CJK_DIR, family_pat)) oldsize = sum(os.stat(f).st_size for f in filenames) pairs = [ readme_pair, (SIL_LICENSE_LOC, 'LICENSE_OFL.txt')] pairs.extend((f, path.basename(f)) for f in filenames) tool_utils.generate_zip_with_7za_from_filepairs(pairs, zip_path) newsize = os.stat(zip_path).st_size print "Wrote " + zip_path print 'Compressed from {0:,}B to {1:,}B.'.format(oldsize, newsize) def generate(self): if self.clean: self.clean_target_dir() if not self.no_build: self.ensure_target_dirs_exist() def use_in_web(font): return (not font.subset and not font.fmt == 'ttc' and not font.script in {'CJK', 'HST'} and not font.family in {'Arimo', 'Cousine', 'Tinos'}) fonts = filter(use_in_web, noto_fonts.get_noto_fonts()) families = noto_fonts.get_families(fonts) check_families(families) if 'families' in self.debug: print '\n#debug families' print '%d found' % len(families) for i, (family_id, family) in enumerate(sorted(families.iteritems())): print '%2d] %s (%s, %s)' % ( i, family_id, family.name, noto_fonts.get_family_filename(family)) if family.hinted_members: print ' hinted: %s' % ', '.join(sorted( [path.basename(m.filepath) for m in family.hinted_members])) if family.unhinted_members: print ' unhinted: %s' % ', '.join(sorted( [path.basename(m.filepath) for m in family.unhinted_members])) script_to_family_ids = get_script_to_family_ids(families) if 'script_to_family_ids' in self.debug: print '\n#debug script to family ids' print '%d found' % len(script_to_family_ids) for i, (script, family_ids) in enumerate( sorted(script_to_family_ids.iteritems())): print '%2d] %s: %s' % (i, script, ', '.join(sorted(family_ids))) all_lang_scrs = set(['und-' + script for script in script_to_family_ids]) all_lang_scrs.update(lang_data.lang_scripts()) lang_scr_to_sample_infos = {} for lang_scr in sorted(all_lang_scrs): lang, script = lang_scr.split('-') if not script in script_to_family_ids: print 'no family supports script in %s' % lang_scr continue sample_infos = get_sample_infos(lang_scr) if not sample_infos: continue lang_scr_to_sample_infos[lang_scr] = sample_infos if 'lang_scr_to_sample_infos' in self.debug: print '\n#debug lang+script to sample infos' print '%d found' % len(lang_scr_to_sample_infos) for lang_scr, info_list in sorted(lang_scr_to_sample_infos.iteritems()): for info in info_list: print '%s: %s, %s, len %d' % ( lang_scr, info[2], info[1], len(info[0])) family_id_to_lang_scrs = get_family_id_to_lang_scrs( lang_scr_to_sample_infos.keys(), script_to_family_ids) if 'family_id_to_lang_scrs' in self.debug: print '\n#debug family id to list of lang+script' print '%d found' % len(family_id_to_lang_scrs) for i, (family_id, lang_scrs) in enumerate( sorted(family_id_to_lang_scrs.iteritems())): print '%3d] %s: (%d) %s' % ( i, family_id, len(lang_scrs), ' '.join(sorted(lang_scrs))) family_id_to_lang_scr_to_sample_key, sample_key_to_info = ( get_family_id_to_lang_scr_to_sample_key( family_id_to_lang_scrs, families, lang_scr_to_sample_infos)) if 'family_id_to_lang_scr_to_sample_key' in self.debug: print '\n#debug family id to map from lang+script to sample key' print '%d found' % len(family_id_to_lang_scr_to_sample_key) for i, (family_id, lang_scr_to_sample_key) in enumerate( sorted(family_id_to_lang_scr_to_sample_key.iteritems())): print '%2d] %s (%d):' % (i, family_id, len(lang_scr_to_sample_key)) for j, (lang_scr, sample_key) in enumerate( sorted(lang_scr_to_sample_key.iteritems())): print ' [%2d] %s: %s' % (j, lang_scr, sample_key) if 'sample_key_to_info' in self.debug: print '\n#debug sample key to sample info' print '%d found' % len(sample_key_to_info) for i, (sample_key, info) in enumerate( sorted(sample_key_to_info.iteritems())): print '%2d] %s: %s, len %d' % ( i, sample_key, info[1], len(info[0])) family_id_to_regions = get_family_id_to_regions( family_id_to_lang_scr_to_sample_key) if 'family_id_to_regions' in self.debug: print '\n#debug family id to regions' print '%d found' % len(family_id_to_regions) for i, (family_id, regions) in enumerate( sorted(family_id_to_regions.iteritems())): print '%2d] %s: (%d) %s' % ( i, family_id, len(regions), ', '.join(sorted(regions))) region_to_family_ids = get_region_to_family_ids(family_id_to_regions) if 'region_to_family_ids' in self.debug: print '\n#debug region to family ids' print '%d found' % len(region_to_family_ids) for i, (region, family_ids) in enumerate( sorted(region_to_family_ids.iteritems())): print '%2d] %s: (%d) %s' % ( i, region, len(family_ids), ', '.join(sorted(family_ids))) family_id_to_default_lang_scr = get_family_id_to_default_lang_scr( family_id_to_lang_scrs, families) if 'family_id_to_default_lang_scr' in self.debug: print '\n#debug family id to default lang scr' print '%d found' % len(family_id_to_default_lang_scr) for i, (family_id, lang_scr) in enumerate( sorted(family_id_to_default_lang_scr.iteritems())): print '%2d] %s: %s' % (i, family_id, lang_scr) region_data = get_region_lat_lng_data(region_to_family_ids.keys()) lang_scrs = get_named_lang_scrs(family_id_to_lang_scr_to_sample_key) lang_scr_sort_order = get_lang_scr_sort_order(lang_scrs) # sanity checks # all families have languages, and all those have samples. # all families have a default language, and that is in the sample list error_list = [] for family in sorted(families.values()): family_id = family.family_id if not family_id in family_id_to_lang_scr_to_sample_key: error_list.append('no entry for family %s' % family_id) continue lang_scr_to_sample_key = family_id_to_lang_scr_to_sample_key[family_id] if not lang_scr_to_sample_key: error_list.append('no langs for family %s' % family_id) continue for lang_scr in sorted(lang_scr_to_sample_key): sample_key = lang_scr_to_sample_key[lang_scr] if not sample_key: error_list.append( 'no sample key for lang %s in family %s' % (lang_scr, sample_key)) continue if not sample_key in sample_key_to_info: error_list.append('no sample for sample key: %s' % sample_key) if not family_id in family_id_to_default_lang_scr: error_list.append('no default lang for family %s' % family_id) continue default_lang_scr = family_id_to_default_lang_scr[family_id] if not default_lang_scr in lang_scr_to_sample_key: error_list.append('default lang %s not in samples for family %s' % (default_lang_scr, family_id)) if error_list: print 'Errors:\n' + '\n '.join(error_list) if error_list or self.no_build: print 'skipping build output' return # build outputs # zips are required for data if self.no_zips and self.no_data: print 'skipping zip output' else: self.build_readmes() family_zip_info = self.build_zips(families) universal_zip_info = self.build_universal_zips(families) # build outputs not used by the json but linked to from the web page if not self.no_zips: self.build_ttc_zips() self.build_subset_zips() if self.no_css: print 'skipping css output' else: family_css_info = self.build_css(families) if self.no_data: print 'skipping data output' else: self.build_data_json(family_id_to_lang_scr_to_sample_key, families, family_zip_info, universal_zip_info, family_id_to_regions, region_to_family_ids) self.build_families_json(family_id_to_lang_scr_to_sample_key, families, family_id_to_default_lang_scr, family_id_to_regions, family_css_info, lang_scr_sort_order) self.build_misc_json(sample_key_to_info, region_data) if self.no_images: print 'skipping image output' else: self.build_images(family_id_to_lang_scr_to_sample_key, families, family_id_to_default_lang_scr, sample_key_to_info) def get_repo_info(skip_checks): """Looks at the three noto fonts repos (fonts, cjk, emoji) and gets information about the current state of each. Returns a mapping from 'fonts', 'cjk', and 'emoji' to the corresponding info. If skip_checks is not set, checks that the repos are in a good state (at a known annotated tag and there are no pending commits), otherwise an exception is raised.""" repo_info = {} errors = [] for repo_name in 'fonts cjk emoji'.split(): msg_lines = [] repo = tool_utils.resolve_path('[%s]' % repo_name) repo_head_commit = tool_utils.git_head_commit(repo) repo_branch = tool_utils.git_get_branch(repo) if not (skip_checks or tool_utils.git_is_clean(repo)): errors.append('noto-%s is not clean' % repo_name) continue repo_tag = None for tag in tool_utils.git_tags(repo): if tag[0] == repo_head_commit[0]: # matching commits repo_tag = tag break if repo_tag: commit, tag_name, date = tag subject = tool_utils.git_tag_info(repo, tag_name) mtype, minfo = 'Tag', tag_name elif skip_checks: commit, date, subject = repo_head_commit body = None mtype, minfo = 'Branch', repo_branch else: errors.append('noto-%s is not at a release tag' % repo_name) continue msg_lines.append('Repo: noto-%s' % repo_name) msg_lines.append('%s: %s' % (mtype, minfo)) msg_lines.append('Date: %s' % date) msg_lines.append('Commit: %s'% commit) msg_lines.append('\n%s' % subject) message = '\n'.join(msg_lines) repo_info[repo_name] = message for rname, v in sorted(repo_info.iteritems()): print '--%s--\n%s' % (rname, v) if errors: raise Exception('Some repos are not clean\n' + '\n'.join(errors)) return repo_info def main(): """Outputs data files for the noto website.""" default_dest = '/tmp/website2' parser = argparse.ArgumentParser() parser.add_argument('-c', '--clean', help='clean target directory', action='store_true') parser.add_argument('-d', '--dest', help='target dir, default %s' % default_dest, default=default_dest, metavar='dir') parser.add_argument('-pj', '--pretty_json', help='generate additional pretty json', action='store_true') parser.add_argument('-nr', '--no_repo_check', help='do not check that repos are in a good state', action='store_true') parser.add_argument('-nz', '--no_zips', help='skip zip generation', action='store_true') parser.add_argument('-ni', '--no_images', help='skip image generation', action='store_true') parser.add_argument('-nd', '--no_data', help='skip data generation', action='store_true') parser.add_argument('-nc', '--no_css', help='skip css generation', action='store_true') parser.add_argument('-n', '--no_build', help='skip build of zip, image, data, and css', action='store_true') parser.add_argument('--debug', help='types of information to dump during build', nargs='*') args = parser.parse_args(); repo_info = get_repo_info(args.no_repo_check) webgen = WebGen(args.dest, args.clean, repo_info, args.pretty_json, no_zips=args.no_zips, no_images=args.no_images, no_css=args.no_css, no_data=args.no_data, no_build=args.no_build, debug=args.debug) webgen.generate() if __name__ == '__main__': locale.setlocale(locale.LC_COLLATE, 'en_US.UTF-8') main() nototools-2017-09-25-tooling-for-phase3-update/nototools/generate_website_data.py000077500000000000000000001106771316231664500300220ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: UTF-8 -*- # # Copyright 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Generate data files for the Noto website.""" from __future__ import division __author__ = 'roozbeh@google.com (Roozbeh Pournader)' import argparse import codecs import collections import csv import json import locale import os from os import path import re import shutil import subprocess import xml.etree.cElementTree as ElementTree from fontTools import ttLib from nototools import coverage from nototools import create_image from nototools import extra_locale_data from nototools import font_data from nototools import unicode_data from nototools import tool_utils # CJK_DIR is in newnoto/noto-cjk # license is at this root # FONT_DIR is in newnoto/noto-fonts, subdirs are alpha, hinted, unhinted # license is at this root # EMOJI is not here... ROOT = path.abspath(path.join(path.dirname(__file__), os.pardir, os.pardir)) TOOLS_DIR = path.join(ROOT, 'nototools') CJK_DIR = path.join(ROOT, 'noto-cjk') FONT_DIR = path.join(ROOT, 'noto-fonts') OUTPUT_DIR = path.join(ROOT, 'website_data') CLDR_DIR = path.join(TOOLS_DIR, 'third_party', 'cldr') LAT_LONG_DIR = path.join(TOOLS_DIR, 'third_party', 'dspl') SAMPLE_TEXT_DIR = path.join(TOOLS_DIR, 'sample_texts') APACHE_LICENSE_LOC = path.join(FONT_DIR, 'LICENSE') SIL_LICENSE_LOC = path.join(CJK_DIR, 'LICENSE') ODD_SCRIPTS = { 'CJKjp': 'Jpan', 'CJKkr': 'Kore', 'CJKsc': 'Hans', 'CJKtc': 'Hant', 'NKo': 'Nkoo', 'SumeroAkkadianCuneiform': 'Xsux', 'Symbols': 'Zsym', } def convert_to_four_letter(script): """"Converts a script name from a Noto font file name to ISO 15924 code.""" if script in ODD_SCRIPTS: script = ODD_SCRIPTS[script] elif script in unicode_data._script_long_name_to_code: script = unicode_data._script_long_name_to_code[script] else: for lname in unicode_data._script_long_name_to_code: if lname.replace('_', '').lower() == script.lower(): script = unicode_data._script_long_name_to_code[lname] if len(script) != 4: raise ValueError("script code '%s' is not the right length." % script) return script Font = collections.namedtuple( 'Font', 'filepath, hint_status, key, ' 'family, script, variant, weight, style, platform,' 'charset, license_type') all_fonts = [] supported_scripts = set() def find_fonts(): font_name_regexp = re.compile( '(NotoSans|NotoSerif|NotoNaskh|NotoKufi|Arimo|Cousine|Tinos)' '(Mono)?' '(.*?)' '(UI|Eastern|Estrangela|Western)?' '-' '(|Black|Bold|DemiLight|Light|Medium|Regular|Thin)' '(Italic)?' '(-Windows)?' '.[ot]t[cf]') unicode_data.load_data() for directory in [path.join(FONT_DIR, 'hinted'), path.join(FONT_DIR, 'unhinted'), path.join(FONT_DIR, 'alpha'), CJK_DIR]: for filename in os.listdir(directory): match = font_name_regexp.match(filename) if match: family, mono, script, variant, weight, style, platform = match.groups() elif filename == 'NotoNastaliqUrduDraft.ttf': family = 'NotoNastaliq' script = 'Aran' # Arabic Nastaliq weight = '' style = variant = platform = None else: if not ( filename == 'NotoSansCJK.ttc.zip' or # All-comprehensive CJK filename.endswith('.ttx') or filename.endswith('.git') or filename.startswith('README.') or filename in ['COPYING', 'LICENSE', 'NEWS', 'HISTORY']): raise ValueError("unexpected filename in %s: '%s'." % (directory, filename)) continue if directory == CJK_DIR: license_type = 'sil' else: license_type = 'apache' if mono: # we don't provide the Mono CJK on the website continue if script == "Historic": # we don't provide this either continue if family in {'Arimo', 'Cousine', 'Tinos'}: continue # Skip these three for the website if family.startswith('Noto'): family = family.replace('Noto', 'Noto ') if weight == '': weight = 'Regular' assert platform is None if script == '': # LGC supported_scripts.update({'Latn', 'Grek', 'Cyrl'}) elif script == 'Aran': supported_scripts.add(script) elif script in {'JP', 'KR', 'SC', 'TC', 'CJK'}: continue # Skip unified or old CJK fonts else: script = convert_to_four_letter(script) supported_scripts.add(script) file_path = path.join(directory, filename) if filename.endswith('.ttf') or filename.endswith('.otf'): charset = coverage.character_set(file_path) else: charset = NotImplemented if directory == CJK_DIR: hint_status = 'hinted' elif directory.endswith('alpha'): hint_status = 'unhinted' else: hint_status = path.basename(directory) assert hint_status in ['hinted', 'unhinted'] key = family.replace(' ', '-') if script: key += '-' + script if variant not in {None, 'UI'}: key += '-' + variant key = key.lower() font = Font(file_path, hint_status, key, family, script, variant, weight, style, platform, charset, license_type) all_fonts.append(font) def read_character_at(source, pointer): assert source[pointer] not in ' -{}' if source[pointer] == '\\': if source[pointer+1] == 'u': end_of_hex = pointer+2 while (end_of_hex < len(source) and source[end_of_hex].upper() in '0123456789ABCDEF'): end_of_hex += 1 assert end_of_hex-(pointer+2) in {4, 5, 6} hex_code = source[pointer+2:end_of_hex] return end_of_hex, unichr(int(hex_code, 16)) else: return pointer+2, source[pointer+1] else: return pointer+1, source[pointer] def exemplar_string_to_list(exstr): assert exstr[0] == '[' exstr = exstr[1:] if exstr[-1] == ']': exstr = exstr[:-1] return_list = [] pointer = 0 while pointer < len(exstr): if exstr[pointer] in ' ': pointer += 1 elif exstr[pointer] == '{': multi_char = '' mc_ptr = pointer+1 while exstr[mc_ptr] != '}': mc_ptr, char = read_character_at(exstr, mc_ptr) multi_char += char return_list.append(multi_char) pointer = mc_ptr+1 elif exstr[pointer] == '-': previous = return_list[-1] assert len(previous) == 1 # can't have ranges with strings previous = ord(previous) pointer, last = read_character_at(exstr, pointer+1) assert last not in [' ', '\\', '{', '}', '-'] last = ord(last) return_list += [unichr(code) for code in range(previous+1, last+1)] else: pointer, char = read_character_at(exstr, pointer) return_list.append(char) return return_list exemplar_from_file_cache = {} def get_exemplar_from_file(cldr_file_path): try: return exemplar_from_file_cache[cldr_file_path] except KeyError: pass data_file = path.join(CLDR_DIR, cldr_file_path) try: root = ElementTree.parse(data_file).getroot() except IOError: exemplar_from_file_cache[cldr_file_path] = None return None for tag in root.iter('exemplarCharacters'): if 'type' in tag.attrib: continue exemplar_from_file_cache[cldr_file_path] = exemplar_string_to_list( tag.text) return exemplar_from_file_cache[cldr_file_path] return None def find_parent_locale(locl): if locl in parent_locale: return parent_locale[locl] if '-' in locl: return locl[:locl.rindex('-')] if locale == 'root': return None return 'root' def get_exemplar(language, script): locl = language + '-' + script while locl != 'root': for directory in ['common', 'seed', 'exemplars']: exemplar = get_exemplar_from_file( path.join(directory, 'main', locl.replace('-', '_')+'.xml')) if exemplar: return exemplar locl = find_parent_locale(locl) return None def get_sample_from_sample_file(language, script): filepath = path.join(SAMPLE_TEXT_DIR, language+'-'+script+'.txt') if path.exists(filepath): return unicode(open(filepath).read().strip(), 'UTF-8') return None language_name_from_file_cache = {} def get_language_name_from_file(language, cldr_file_path): cache_key = (language, cldr_file_path) try: return language_name_from_file_cache[cache_key] except KeyError: pass data_file = path.join(CLDR_DIR, cldr_file_path) try: root = ElementTree.parse(data_file).getroot() except IOError: language_name_from_file_cache[cache_key] = None return None parent = root.find('.//languages') if parent is None: return None for tag in parent: assert tag.tag == 'language' if tag.get('type').replace('_', '-') == language: language_name_from_file_cache[cache_key] = tag.text return language_name_from_file_cache[cache_key] return None def get_native_language_name(lang_scr): """Get the name of a language in its own locale.""" try: return extra_locale_data.NATIVE_NAMES[lang_scr] except KeyError: pass if '-' in lang_scr: language = lang_scr.split('-')[0] else: language = lang_scr locl = lang_scr while locl != 'root': for directory in ['common', 'seed']: file_path = path.join( directory, 'main', locl.replace('-', '_')+'.xml') for name_to_find in [lang_scr, language]: native_name = get_language_name_from_file( name_to_find, file_path) if native_name: return native_name locl = find_parent_locale(locl) return None EXEMPLAR_CUTOFF_SIZE = 50 def sample_text_from_exemplar(exemplar): exemplar = [c for c in exemplar if unicode_data.category(c[0])[0] in 'LNPS'] exemplar = exemplar[:EXEMPLAR_CUTOFF_SIZE] return ' '.join(exemplar) def get_sample_text(language, script): """Returns a sample text string for a given language and script.""" sample_text = get_sample_from_sample_file(language, script) if sample_text is not None: return sample_text exemplar = get_exemplar(language, script) if exemplar is not None: return sample_text_from_exemplar(exemplar) sample_text = get_sample_from_sample_file('und', script) if sample_text is not None: return sample_text raise ValueError, 'language=%s script=%s' % (language, script) def xml_to_dict(element): return_dict = {} for child in list(element): if 'alt' in child.attrib: continue key = child.get('type') key = key.replace('_', '-') return_dict[key] = child.text return return_dict english_language_name = {} english_script_name = {} english_territory_name = {} def parse_english_labels(): global english_language_name, english_script_name, english_territory_name data_file = path.join( CLDR_DIR, 'common', 'main', 'en.xml') root = ElementTree.parse(data_file).getroot() ldn = root.find('localeDisplayNames') english_language_name = xml_to_dict(ldn.find('languages')) english_script_name = xml_to_dict(ldn.find('scripts')) english_territory_name = xml_to_dict(ldn.find('territories')) # Add langauges used that miss names english_language_name.update(extra_locale_data.ENGLISH_LANGUAGE_NAMES) def get_english_language_name(lang_scr): try: return english_language_name[lang_scr] except KeyError: lang, script = lang_scr.split('-') name = '%s (%s script)' % ( english_language_name[lang], english_script_name[script]) print "Constructing name '%s' for %s." % (name, lang_scr) return name used_in_regions = collections.defaultdict(set) written_in_scripts = collections.defaultdict(set) territory_info = collections.defaultdict(set) parent_locale = {} def parse_supplemental_data(): data_file = path.join( CLDR_DIR, 'common', 'supplemental', 'supplementalData.xml') root = ElementTree.parse(data_file).getroot() for language_tag in root.iter('language'): attribs = language_tag.attrib if 'alt' in attribs: assert attribs['alt'] == 'secondary' lang = attribs['type'] if lang == 'mru': # CLDR bug: http://unicode.org/cldr/trac/ticket/7709 continue if 'territories' in attribs: territories = set(attribs['territories'].split(' ')) used_in_regions[lang].update(territories) if 'scripts' in attribs: scripts = set(attribs['scripts'].split(' ')) written_in_scripts[lang].update(scripts) for tag in root.iter('territory'): territory = tag.get('type') for child in tag: assert child.tag == 'languagePopulation' # if 'officialStatus' not in child.attrib: # continue # Skip non-official languages lang = child.get('type').replace('_', '-') territory_info[territory].add(lang) for tag in root.iter('parentLocale'): parent = tag.get('parent') parent = parent.replace('_', '-') for locl in tag.get('locales').split(' '): locl = locl.replace('_', '-') parent_locale[locl] = parent parent_locale.update(extra_locale_data.PARENT_LOCALES) likely_subtag_data = {} def parse_likely_subtags(): data_file = path.join( CLDR_DIR, 'common', 'supplemental', 'likelySubtags.xml') tree = ElementTree.parse(data_file) for tag in tree.findall('likelySubtags/likelySubtag'): from_tag = tag.get('from').replace('_', '-') to_tag = tag.get('to').split('_') likely_subtag_data[from_tag] = to_tag likely_subtag_data.update(extra_locale_data.LIKELY_SUBTAGS) def find_likely_script(language): if not likely_subtag_data: parse_likely_subtags() return likely_subtag_data[language][1] script_metadata = {} def parse_script_metadata(): global script_metadata data = open(path.join( CLDR_DIR, 'common', 'properties', 'scriptMetadata.txt')).read() parsed_data = unicode_data._parse_semicolon_separated_data(data) script_metadata = {line[0]:tuple(line[1:]) for line in parsed_data} def is_script_rtl(script): if not script_metadata: parse_script_metadata() return script_metadata[script][5] == 'YES' lat_long_data = {} def read_lat_long_data(): with open(path.join(LAT_LONG_DIR, 'countries.csv')) as lat_long_file: for row in csv.reader(lat_long_file): region, latitude, longitude, _ = row if region == 'country': continue # Skip the header if not latitude: continue # Empty latitude latitude = float(latitude) longitude = float(longitude) lat_long_data[region] = (latitude, longitude) # From the English Wikipedia and The World Factbook at # https://www.cia.gov/library/publications/the-world-factbook/fields/2011.html lat_long_data.update({ 'AC': (-7-56/60, -14-22/60), # Ascension Island 'AX': (60+7/60, 19+54/60), # Åland Islands 'BL': (17+54/60, -62-50/60), # Saint Barthélemy 'BQ': (12+11/60, -68-14/60), # Caribbean Netherlands 'CP': (10+18/60, -109-13/60), # Clipperton Island 'CW': (12+11/60, -69), # Curaçao 'DG': (7+18/60+48/3600, 72+24/60+40/3600), # Diego Garcia # Ceuta and Melilla, using Ceuta 'EA': (35+53/60+18/3600, -5-18/60-56/3600), 'IC': (28.1, -15.4), # Canary Islands 'MF': (18+4/60+31/3600, -63-3/60-36/3600), # Saint Martin 'SS': (8, 30), # South Sudan 'SX': (18+3/60, -63-3/60), # Sint Maarten 'TA': (-37-7/60, -12-17/60), # Tristan da Cunha # U.S. Outlying Islands, using Johnston Atoll 'UM': (16+45/60, -169-31/60), }) def sorted_langs(langs): return sorted( set(langs), key=lambda code: locale.strxfrm( get_english_language_name(code).encode('UTF-8'))) all_used_lang_scrs = set() def create_regions_object(): if not lat_long_data: read_lat_long_data() regions = {} for territory in territory_info: region_obj = {} region_obj['name'] = english_territory_name[territory] region_obj['lat'], region_obj['lng'] = lat_long_data[territory] region_obj['langs'] = sorted_langs(territory_info[territory]) all_used_lang_scrs.update(territory_info[territory]) regions[territory] = region_obj return regions def charset_supports_text(charset, text): if charset is NotImplemented: return False needed_codepoints = {ord(char) for char in set(text)} return needed_codepoints <= charset family_to_langs = collections.defaultdict(set) def create_langs_object(): langs = {} for lang_scr in sorted(set(written_in_scripts) | all_used_lang_scrs): lang_object = {} if '-' in lang_scr: language, script = lang_scr.split('-') else: language = lang_scr try: script = find_likely_script(language) except KeyError: print "no likely script for %s" % language continue lang_object['name'] = get_english_language_name(lang_scr) native_name = get_native_language_name(lang_scr) if native_name is not None: lang_object['nameNative'] = native_name lang_object['rtl'] = is_script_rtl(script) if script == 'Kana': script = 'Jpan' if script not in supported_scripts: # Scripts we don't have fonts for yet print('No font supports the %s script (%s) needed for the %s language.' % (english_script_name[script], script, lang_object['name'])) assert script in { 'Bass', # Bassa Vah 'Lina', # Linear A 'Mani', # Manichaean 'Merc', # Meroitic Cursive 'Mroo', # Mro 'Narb', # Old North Arabian 'Orya', # Oriya 'Plrd', # Miao 'Sora', # Sora Sompeng 'Thaa', # Thaana 'Tibt', # Tibetan } lang_object['families'] = [] else: sample_text = get_sample_text(language, script) lang_object['sample'] = sample_text if script in {'Latn', 'Grek', 'Cyrl'}: query_script = '' else: query_script = script # FIXME(roozbeh): Figure out if the language is actually supported # by the font + Noto LGC. If it's not, don't claim support. fonts = [font for font in all_fonts if font.script == query_script] # For certain languages of Pakistan, add Nastaliq font if lang_scr in {'bal', 'hnd', 'hno', 'ks-Arab', 'lah', 'pa-Arab', 'skr', 'ur'}: fonts += [font for font in all_fonts if font.script == 'Aran'] family_keys = set([font.key for font in fonts]) lang_object['families'] = sorted(family_keys) for family in family_keys: family_to_langs[family].add(lang_scr) langs[lang_scr] = lang_object return langs def get_font_family_name(font_file): font = ttLib.TTFont(font_file) name_record = font_data.get_name_records(font) return name_record[1] def charset_to_ranges(font_charset): # Ignore basic common characters charset = font_charset - {0x00, 0x0D, 0x20, 0xA0, 0xFEFF} ranges = coverage.convert_set_to_ranges(charset) output_list = [] for start, end in ranges: output_list.append(('%04X' % start, '%04X' % end)) return output_list def get_css_generic_family(family): if family in {'Noto Naskh', 'Noto Serif', 'Tinos'}: return 'serif' if family in {'Arimo', 'Noto Kufi', 'Noto Sans'}: return 'sans-serif' if family == 'Cousine': return 'monospace' return None CSS_WEIGHT_MAPPING = { 'Thin': 250, 'Light': 300, 'DemiLight': 350, 'Regular': 400, 'Medium': 500, 'Bold': 700, 'Black': 900, } def css_weight(weight_string): return CSS_WEIGHT_MAPPING[weight_string] CSS_WEIGHT_TO_STRING = {s:w for w, s in CSS_WEIGHT_MAPPING.items()} def css_weight_to_string(weight): return CSS_WEIGHT_TO_STRING[weight] def css_style(style_value): if style_value is None: return 'normal' else: assert style_value == 'Italic' return 'italic' def fonts_are_basically_the_same(font1, font2): """Returns true if the fonts are the same, except perhaps hint or platform. """ return (font1.family == font2.family and font1.script == font2.script and font1.variant == font2.variant and font1.weight == font2.weight and font1.style == font2.style) def compress_png(pngpath): subprocess.call(['optipng', '-o7', '-quiet', pngpath]) def compress(filepath, compress_function): print 'Compressing %s.' % filepath oldsize = os.stat(filepath).st_size compress_function(filepath) newsize = os.stat(filepath).st_size print 'Compressed from {0:,}B to {1:,}B.'.format(oldsize, newsize) zip_contents_cache = {} def create_zip(major_name, target_platform, fonts): # Make sure no file name repeats assert len({path.basename(font.filepath) for font in fonts}) == len(fonts) all_hint_statuses = {font.hint_status for font in fonts} if len(all_hint_statuses) == 1: hint_status = list(all_hint_statuses)[0] else: hint_status = 'various' if target_platform == 'other': if hint_status == 'various': # This may only be the comprehensive package assert len(fonts) > 50 suffix = '' elif hint_status == 'unhinted': suffix = '-unhinted' else: # hint_status == 'hinted' suffix = '-hinted' elif target_platform == 'windows': if hint_status in ['various', 'hinted']: if 'windows' in {font.platform for font in fonts}: suffix = '-windows' else: suffix = '-hinted' else: # hint_status == 'unhinted': suffix = '-unhinted' else: # target_platform == 'linux' if len(fonts) > 50 or hint_status in ['various', 'hinted']: suffix = '-hinted' else: suffix = '-unhinted' zip_basename = '%s%s.zip' % (major_name, suffix) zippath = path.join(OUTPUT_DIR, 'pkgs', zip_basename) frozen_fonts = frozenset(fonts) if path.isfile(zippath): # Skip if the file already exists # When continuing, we assume that if it exists, it is good if zip_basename not in zip_contents_cache: print("Continue: assuming built %s is valid" % zip_basename) zip_contents_cache[zip_basename] = frozen_fonts else: assert zip_contents_cache[zip_basename] == frozen_fonts return zip_basename else: assert frozen_fonts not in zip_contents_cache.values() zip_contents_cache[zip_basename] = frozen_fonts pairs = [] license_types = set() for font in fonts: pairs.append((font.filepath, path.basename(font.filepath))) license_types.add(font.license_type) if 'apache' in license_types: pairs.append((APACHE_LICENSE_LOC, 'LICENSE.txt')) if 'sil' in license_types: pairs.append((SIL_LICENSE_LOC, 'LICENSE_CJK.txt')) tool_utils.generate_zip_with_7za_from_filepairs(pairs, zippath) return zip_basename def copy_font(source_file): source_dir, source_basename = path.split(source_file) target_dir = path.join(OUTPUT_DIR, 'fonts') if source_dir.endswith('/hinted'): target_dir = path.join(target_dir, 'hinted') shutil.copy(source_file, path.join(OUTPUT_DIR, target_dir)) return '../fonts/' + source_basename def create_css(key, family_name, fonts): csspath = path.join(OUTPUT_DIR, 'css', 'fonts', key + '.css') with open(csspath, 'w') as css_file: for font in fonts: font_url = copy_font(font.filepath) css_file.write( '@font-face {\n' ' font-family: "%s";\n' ' font-weight: %d;\n' ' font-style: %s;\n' ' src: url(%s) format("truetype");\n' '}\n' % ( family_name, css_weight(font.weight), css_style(font.style), font_url) ) return '%s.css' % key def create_families_object(target_platform): all_keys = set([font.key for font in all_fonts]) families = {} all_font_files = set() for key in all_keys: family_object = {} members = {font for font in all_fonts if font.key == key and font.variant != 'UI' and font.filepath.endswith('tf')} if not members: mbrs = {font for font in all_fonts if font.key == key} raise ValueError("no members for %s from %s" % (key, [f.filepath for f in mbrs])) members_to_drop = set() for font in members: if font.platform == target_platform: # If there are any members matching the target platform, they # take priority: drop alternatives members_to_drop.update( {alt for alt in members if fonts_are_basically_the_same(font, alt) and font.platform != alt.platform}) elif font.platform is not None: # This is a font for another platform members_to_drop.add(font) members -= members_to_drop if target_platform in ['windows', 'linux']: desired_hint_status = 'hinted' else: desired_hint_status = 'unhinted' # If there are any members matching the desired hint status, they take # priority: drop alternatives members_to_drop = set() for font in members: if font.hint_status == desired_hint_status: members_to_drop.update( {alt for alt in members if fonts_are_basically_the_same(font, alt) and font.hint_status != alt.hint_status}) members -= members_to_drop all_font_files |= members repr_members = {font for font in members if font.weight == 'Regular' and font.style is None} if len(repr_members) != 1: raise ValueError("Do not have a single regular font (%s) for key: %s (from %s)." % (len(repr_members), key, [f.filepath for f in members])) repr_member = repr_members.pop() font_family_name = get_font_family_name(repr_member.filepath) if font_family_name.endswith('Regular'): font_family_name = font_family_name.rsplit(' ', 1)[0] family_object['name'] = font_family_name family_object['pkg'] = create_zip( font_family_name.replace(' ', ''), target_platform, members) family_object['langs'] = sorted_langs(family_to_langs[repr_member.key]) family_object['category'] = get_css_generic_family(repr_member.family) family_object['css'] = create_css(key, font_family_name, members) family_object['ranges'] = charset_to_ranges(repr_member.charset) font_list = [] for font in members: font_list.append({ 'style': css_style(font.style), 'weight': css_weight(font.weight), }) if len(font_list) not in [1, 2, 4, 7]: print key, font_list assert len(font_list) in [1, 2, 4, 7] family_object['fonts'] = font_list families[key] = family_object return families, all_font_files def generate_ttc_zips_with_7za(): """Generate zipped versions of the ttc files and put in pkgs directory.""" # The font family code skips the ttc files, but we want them in the # package directory. Instead of mucking with the family code to add the ttcs # and then exclude them from the other handling, we'll just handle them # separately. # For now at least, the only .ttc fonts are the CJK fonts pkg_dir = path.join(OUTPUT_DIR, 'pkgs') tool_utils.ensure_dir_exists(pkg_dir) filenames = [path.basename(f) for f in os.listdir(CJK_DIR) if f.endswith('.ttc')] for filename in filenames: zip_basename = filename + '.zip' zip_path = path.join(pkg_dir, zip_basename) if path.isfile(zip_path): print("Continue: assuming built %s is valid." % zip_basename) continue oldsize = os.stat(path.join(CJK_DIR, filename)).st_size pairs = [(path.join(CJK_DIR, filename), filename), (SIL_LICENSE_LOC, 'LICENSE_CJK.txt')] tool_utils.generate_zip_with_7za_from_filepairs(pairs, zip_path) newsize = os.stat(zip_path).st_size print "Wrote " + zip_path print 'Compressed from {0:,}B to {1:,}B.'.format(oldsize, newsize) shutil.copy2(path.join(CJK_DIR, 'NotoSansCJK.ttc.zip'), path.join(pkg_dir, 'NotoSansCJK.ttc.zip')) def generate_sample_images(data_object): image_dir = path.join(OUTPUT_DIR, 'images', 'samples') for family_key in data_object['family']: family_obj = data_object['family'][family_key] font_family_name = family_obj['name'] print 'Generating images for %s...' % font_family_name is_cjk_family = ( family_key.endswith('-hans') or family_key.endswith('-hant') or family_key.endswith('-jpan') or family_key.endswith('-kore')) for lang_scr in family_obj['langs']: lang_obj = data_object['lang'][lang_scr] sample_text = lang_obj['sample'] is_rtl = lang_obj['rtl'] for instance in family_obj['fonts']: weight, style = instance['weight'], instance['style'] image_file_name = path.join( image_dir, '%s_%s_%d_%s.png' % (family_key, lang_scr, weight, style)) if is_cjk_family: family_suffix = ' ' + css_weight_to_string(weight) else: family_suffix = '' image_location = path.join(image_dir, image_file_name) if path.isfile(image_location): # Don't rebuild images when continuing. print "Continue: assuming image file '%s' is valid." % image_location continue create_image.create_png( sample_text, image_location, family=font_family_name+family_suffix, language=lang_scr, rtl=is_rtl, weight=weight, style=style) compress(image_location, compress_png) def create_package_object(fonts, target_platform): CLOUD_LOC = 'http://storage.googleapis.com/noto-website/pkgs/' comp_zip_file = create_zip('Noto', target_platform, fonts) package = {} package['url'] = CLOUD_LOC + comp_zip_file package['size'] = os.stat( path.join(OUTPUT_DIR, 'pkgs', comp_zip_file)).st_size return package def main(): """Outputs data files for the noto website.""" parser = argparse.ArgumentParser() parser.add_argument('--continue', help="continue with existing built objects", action='store_true', dest='continuing') args = parser.parse_args(); # 'continue' is useful for debugging the build process. some zips take a # long time to build, and this lets the process be restarted and catch up # quickly. # # The run for the actual deploy should be a clean one from scratch. if not args.continuing: if path.exists(OUTPUT_DIR): assert path.isdir(OUTPUT_DIR) print 'Removing the old website directory...' shutil.rmtree(OUTPUT_DIR) os.mkdir(OUTPUT_DIR) os.mkdir(path.join(OUTPUT_DIR, 'pkgs')) os.mkdir(path.join(OUTPUT_DIR, 'fonts')) os.mkdir(path.join(OUTPUT_DIR, 'fonts', 'hinted')) os.mkdir(path.join(OUTPUT_DIR, 'css')) os.mkdir(path.join(OUTPUT_DIR, 'css', 'fonts')) os.mkdir(path.join(OUTPUT_DIR, 'images')) os.mkdir(path.join(OUTPUT_DIR, 'images', 'samples')) os.mkdir(path.join(OUTPUT_DIR, 'js')) print 'Finding all fonts...' find_fonts() print 'Parsing CLDR data...' parse_english_labels() parse_supplemental_data() for target_platform in ['windows', 'linux', 'other']: print 'Target platform %s:' % target_platform output_object = {} print 'Generating data objects and CSS...' output_object['region'] = create_regions_object() output_object['lang'] = create_langs_object() output_object['family'], all_font_files = create_families_object( target_platform) print 'Creating comprehensive zip file...' output_object['pkg'] = create_package_object( all_font_files, target_platform) ############### Hot patches ############### # Kufi is broken for Urdu Heh goal # See issue #34 output_object['lang']['ur']['families'].remove('noto-kufi-arab') output_object['family']['noto-kufi-arab']['langs'].remove('ur') # Kufi doesn't support all characters needed for Khowar output_object['lang']['khw']['families'].remove('noto-kufi-arab') output_object['family']['noto-kufi-arab']['langs'].remove('khw') # Kufi doesn't support all characters needed for Kashmiri output_object['lang']['ks-Arab']['families'].remove('noto-kufi-arab') output_object['family']['noto-kufi-arab']['langs'].remove('ks-Arab') ############### End of hot patches ######## if target_platform == 'linux': generate_sample_images(output_object) # Drop presently unused features for family in output_object['family'].itervalues(): del family['category'] del family['css'] del family['ranges'] for language in output_object['lang'].itervalues(): del language['rtl'] if 'sample' in language: del language['sample'] if target_platform == 'other': json_file_name = 'data.json' else: json_file_name = 'data-%s.json' % target_platform json_path = path.join(OUTPUT_DIR, 'js', json_file_name) with codecs.open(json_path, 'w', encoding='UTF-8') as json_file: json.dump(output_object, json_file, ensure_ascii=False, separators=(',', ':')) # Compress the ttc files. Requires 7za on the build machine. generate_ttc_zips_with_7za() # Keep presently unused directories so we can continue after first success # if not args.continuing: # shutil.rmtree(path.join(OUTPUT_DIR, 'fonts')) # shutil.rmtree(path.join(OUTPUT_DIR, 'css')) if __name__ == '__main__': locale.setlocale(locale.LC_COLLATE, 'en_US.UTF-8') main() nototools-2017-09-25-tooling-for-phase3-update/nototools/glyph_area_pen.py000066400000000000000000000013721316231664500264560ustar00rootroot00000000000000# Copyright 2015 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from fontTools.pens.areaPen import AreaPen class GlyphAreaPen(AreaPen): def pop(self): value = self.value self.value = 0 return value nototools-2017-09-25-tooling-for-phase3-update/nototools/gpos_diff.py000066400000000000000000000244171316231664500254460ustar00rootroot00000000000000# Copyright 2016 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Provides GposDiffFinder, which finds differences in ttxn feature output. GposDiffFinder takes in two paths, to font binaries from which ttxn output is made. It provides methods that compare the OpenType feature contents of these files: `find_kerning_diffs`, `find_mark_class_diffs`, and `find_positioning_diffs`. Unlike ShapeDiffFinder, the methods don't have a `stats` argument and can't accumulate a report between method calls (yet?). They simply report the differences via a returned string. """ from collections import defaultdict import re import subprocess import tempfile class GposDiffFinder: """Provides methods to report diffs in GPOS content between ttxn outputs.""" def __init__(self, file_a, file_b, error_bound, output_lines=6): ttxn_file_a = tempfile.NamedTemporaryFile() ttxn_file_b = tempfile.NamedTemporaryFile() subprocess.call(['ttxn', '-q', '-t', 'GPOS', '-o', ttxn_file_a.name, '-f', file_a]) subprocess.call(['ttxn', '-q', '-t', 'GPOS', '-o', ttxn_file_b.name, '-f', file_b]) self.text_a = ttxn_file_a.read() self.text_b = ttxn_file_b.read() self.err = error_bound self.out_lines = output_lines def find_kerning_diffs(self): """Report differences in kerning rules.""" classes_a, classes_b = {}, {} rx = re.compile(r'(@[\w\d_.]+) = \[([\s\w\d_.]+)\];') self._parse_kerning_classes(rx, self.text_a, classes_a) self._parse_kerning_classes(rx, self.text_b, classes_b) unmatched = defaultdict(list) mismatched = defaultdict(list) rx = re.compile('pos \[?([\w\d@_.]+)\]? \[?([\w\d@_.]+)\]? (-?\d+);') self._parse_kerning(rx, '-', self.text_a, classes_a, unmatched) self._parse_kerning(rx, '+', self.text_b, classes_b, unmatched) self._organize_kerning_diffs(unmatched, mismatched) unmatched = [(k, v) for k, v in unmatched.iteritems() if v] res = ['%d differences in kerning pairs' % len(unmatched)] # (('+', 'a', 'b'), [-20, 10]) # Sort order: # 1. Reverse absolute value of kerning # 2. Left-side glyph name # 3. Right-side glyph name unmatched.sort(key=lambda t:(-max(abs(v) for v in t[1]), t[0][1], t[0][2])) for (sign, left, right), vals in unmatched[:self.out_lines]: res.append('%s pos %s %s %s' % (sign, left, right, vals)) res.append('') mismatched = [(k, v) for k, v in mismatched.iteritems() if any(v)] res.append('%d differences in kerning values' % len(mismatched)) # (('V', 'A'), ([-4], [-17])) # Sort order: # 1. Reverse absolute difference between before and after kern values # 2. Left-side glyph name # 3. Right-side glyph name mismatched.sort(key=lambda t:(-sum(abs(v1-v2) for v1, v2 in zip(t[1][0], t[1][1])), t[0][0], t[0][1])) for (left, right), (vals1, vals2) in mismatched[:self.out_lines]: if sum(abs(v1 - v2) for v1, v2 in zip(vals1, vals2)) > self.err: res.append('pos %s %s: %s vs %s' % (left, right, vals1, vals2)) res.append('') return '\n'.join(res) def find_mark_class_diffs(self): """Report differences in mark class definitions.""" unmatched = {} mismatched = {} rx = re.compile('mark \[([\w\d\s@_.]+)\] ' '(@[\w\d_.]+);') self._parse_anchor_info(rx, '-', self.text_a, unmatched, mismatched) self._parse_anchor_info(rx, '+', self.text_b, unmatched, mismatched) res = ['%d differences in mark class definitions' % len(unmatched)] unmatched = unmatched.items() # (('+', 'uni0325', '@uni0323_6'), (0, -30)) # Sort order: # 1. Glyph class # 2. Mark class unmatched.sort(key=lambda t: (t[0][1], t[0][2])) for (sign, member, mark_class), (x, y) in unmatched[:self.out_lines]: res.append('%s mark [%s] %s;' % (sign, member, x, y, mark_class)) res.append('') res.append('%d differences in mark class values' % len(mismatched)) mismatched = mismatched.items() # (('uni0300', '@uni0300_23'), ((0, 527), (300, 527))) # Sort order: # 1. Reverse absolute difference between position before and after # 2. Glyph class # 3. Mark class mismatched.sort(key=lambda t:(-(abs(t[1][0][0] - t[1][1][0]) + abs(t[1][0][1] - t[1][1][1])), t[0][0], t[0][1])) for (member, cls), ((x1, y1), (x2, y2)) in mismatched[:self.out_lines]: if abs(x1 - x2) > self.err or abs(y1 - y2) > self.err: res.append('%s %s <%d %d> vs <%d %d>' % (member, cls, x1, y1, x2, y2)) res.append('') return '\n'.join(res) def find_positioning_diffs(self, mark_type='base'): """Report differences in positioning rules.""" unmatched = {} mismatched = {} rx = re.compile('pos %s \[([\w\d\s@_.]+)\]\s+ ' 'mark (@[\w\d_.]+);' % mark_type) self._parse_anchor_info(rx, '-', self.text_a, unmatched, mismatched) self._parse_anchor_info(rx, '+', self.text_b, unmatched, mismatched) res = ['%d differences in mark-to-%s positioning rule coverage' % (len(unmatched), mark_type)] unmatched = unmatched.items() # Sort order: same as 'mark class definitions' unmatched.sort(key=lambda t: (t[0][1], t[0][2])) for (sign, member, mark_class), (x, y) in unmatched[:self.out_lines]: res.append('%s pos %s [%s] mark %s;' % (sign, mark_type, member, x, y, mark_class)) res.append('') res.append('%d differences in mark-to-%s positioning rule values' % (len(mismatched), mark_type)) mismatched = mismatched.items() # Sort order: same as 'mark class values' mismatched.sort(key=lambda t:(-(abs(t[1][0][0] - t[1][1][0]) + abs(t[1][0][1] - t[1][1][1])), t[0][0], t[0][1])) for (member, cls), ((x1, y1), (x2, y2)) in mismatched[:self.out_lines]: if abs(x1 - x2) > self.err or abs(y1 - y2) > self.err: res.append('%s %s <%d %d> vs <%d %d>' % (member, cls, x1, y1, x2, y2)) res.append('') return '\n'.join(res) def _parse_kerning_classes(self, rx, text, classes): """Parse kerning class definitions.""" for definition in rx.findall(text): name, members = definition classes[name] = members.split() def _parse_kerning(self, rx, sign, text, classes, unmatched): """Parse kerning rules.""" for rule in rx.findall(text): left, right, val = rule val = int(val) if left in classes: left = classes[left] else: left = [left] if right in classes: right = classes[right] else: right = [right] for left_glyph in left: for right_glyph in right: key = sign, left_glyph, right_glyph key_match = (self._reverse_sign(sign), left_glyph, right_glyph) if val in unmatched[key_match]: unmatched[key_match].remove(val) else: unmatched[key].append(val) def _organize_kerning_diffs(self, unmatched, mismatched): """Move mismatched kerning rules into a separate dictionary.""" keys = unmatched.keys() for key in keys: if key not in unmatched: # already matched and removed continue sign, left, right = key key_match = self._reverse_sign(sign), left, right if (key_match in unmatched and unmatched[key] and unmatched[key_match]): if sign == '+': key, key_match = key_match, key mismatched[left, right] = ( unmatched.pop(key), unmatched.pop(key_match)) def _parse_anchor_info(self, rx, sign, text, unmatched, mismatched): """Parse unmatched and mismatched mark classes.""" for members, x, y, mark_class in rx.findall(text): # hack to get around unexpected class naming differences (ttxn bug?) mark_class = '_'.join(mark_class.split('_', 2)[:2]) for member in members.split(): val = int(x), int(y) key_match = self._reverse_sign(sign), member, mark_class if key_match in unmatched: if unmatched[key_match] != val: mismatched[member, mark_class] = ( unmatched[key_match], val) del unmatched[key_match] else: unmatched[sign, member, mark_class] = val def _reverse_sign(self, sign): """Return the reverse of a sign contained in a string.""" if sign == '-': return '+' elif sign == '+': return '-' else: raise ValueError('Bad sign "%s".' % sign) nototools-2017-09-25-tooling-for-phase3-update/nototools/grab_adobe_download.py000077500000000000000000000061371316231664500274440ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2015 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Copy downloaded font zip files from Adobe into noto directory structure. This leverages some properties of the font drops. The drops come in zip files that look like this, if you select the Noto Sans CJK subfolder from the Adobe Sans Version x.xxx folder on google drive and ask to download it: Noto_Sans_CJK-yyyy-mm-dd.zip This reflects the date of the download. For each zip of this type we build a root named for the date in the drops subdir of the adobe_data tree. The drops contain a multi-level tree: OTF-Fallback (these are for Android and don't go in to Noto) OTC (the ttc fonts, weight specific and ginormous) OTF-Subset (language-specific subsets, 7 weights each) JP (e.g. NotoSansJP-Thin.otf) KR SC TC OTF (language defaults, 7 weights plus 2 mono weights each) JP (e.g. NotoSansCJKjp-Thin.otf, NotoSansMonoCJKjp-Regular.otf) KR SC TC The data built under the drops subdir is flat, and does not include the fallback files. The Noto zips from Adobe don't have any other files in them (Adobe puts their metadata in the Source Han Sans directory). This assumes the zip is only the Noto directory. """ __author__ = "dougfelt@google.com (Doug Felt)" import argparse import os import os.path import re import shutil import sys import zipfile import notoconfig import grab_download def unzip_to_directory_tree(drop_dir, filepath): skip_re = re.compile('.*/OTF-Fallback/.*') zf = zipfile.ZipFile(filepath, 'r') print 'extracting files from %s to %s' % (filepath, drop_dir) count = 0 for name in zf.namelist(): # skip names representing portions of the path if name.endswith('/'): continue # skip names for data we don't use if skip_re.match(name): continue # get the blob try: data = zf.read(name) except KeyError: print 'did not find %s in zipfile' % name continue dst_file = os.path.join(drop_dir, os.path.basename(name)) with open(dst_file, 'wb') as f: f.write(data) count += 1 print 'extracted \'%s\'' % name print 'extracted %d files' % count def main(): params = { 'default_srcdir': os.path.expanduser('~/Downloads'), 'default_dstdir': notoconfig.values.get('adobe_data'), 'default_regex': r'Noto_Sans_CJK-\d{4}-\d{2}-\d{2}\.zip' } grab_download.invoke_main( src_vendor='Adobe', name_date_re=re.compile(r'(.*)-(\d{4})-(\d{2})-(\d{2})\.zip'), extract_fn=unzip_to_directory_tree, default_params=params) if __name__ == "__main__": main() nototools-2017-09-25-tooling-for-phase3-update/nototools/grab_download.py000077500000000000000000000131311316231664500263020ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Base code for copying and unpacking font drops from vendors. See grab_mt_download.py and grab_adobe_download.py""" __author__ = "dougfelt@google.com (Doug Felt)" import argparse import os import os.path import re import shutil import zipfile from fontTools import ttLib import notoconfig def grab_files(dst, files, src_vendor, name_date_re, extract_fn): """Get date from each filename in files, create a folder for it, under dst/drops, then extract the files to it.""" # The zip indicates that the corresponding drop is good and built from it. But # we might have messed up along the way, so: # - if we have a drop and a zip, assume it's already handled # - if we have a drop but no zip, assume the drop needs to be rebuilt from the zip # - if we have a zip and no drop # - if we have new zip, complain # - else rebuild the drop from the old zip # - else build the drop, and if successful, save the zip for f in files: if not os.path.exists(f): print 'file \'%s\' does not exist, skipping' % f continue filename = os.path.basename(f) result = name_date_re.match(filename) if not result: print 'could not parse %s, skipping' % f continue name = result.group(1) date = '_'.join([d for d in result.group(2,3,4)]) drop_dir = os.path.join(dst, 'drops', name + '_' + date) zip_dir = os.path.join(dst, 'zips') zip_filename = os.path.join(zip_dir, filename) if os.path.exists(drop_dir): if os.path.exists(zip_filename): print 'already have a %s drop and zip for %s' % (src_vendor, filename) continue else: # clean up, assume needs rebuild shutil.rmtree(drop_dir) else: if os.path.exists(zip_filename): if os.path.realpath(f) != os.path.realpath(zip_filename): print 'already have a zip file named %s for %s' % (zip_filename, f) continue os.mkdir(drop_dir) extract_fn(drop_dir, f) if not os.path.exists(zip_filename): print 'writing %s to %s' % (f, zip_filename) shutil.copy2(f, zip_filename) def matching_files_in_dir(src, namere): """Iterate over files in src with names matching namere, returning the list.""" filelist = [] for f in os.listdir(src): path = os.path.join(src, f) if not os.path.isfile(path): continue if not re.search(namere, f): continue filelist.append(path) if not filelist: print "no files in %s matched '%s'" % (src, namere) return filelist def invoke_main(src_vendor, name_date_re, extract_fn, default_params = {}): """Grab the files. src_vendor is a string, currently either Adobe or Monotype. name_date_re is a regex, it should extract name, year, month, and day fields from the filename extract_fn is a fn to to extract a file, it takes two args, a dest dir and the zip file name. default_params are default values for argparse. They can be: - default_srcdir - default_dstdir - default_regex The default regex and the name_date_re are superficially similar, but different in purpose. The default_regex is used to select files under the src directory. The name_date_re is used to extract the date from the file name. Both apply to the file name, but the default_regex can be anything, while name_date_re needs to select four groups, where the 2nd, 3rd, and 4th are the year, month, and day (yes this is brittle, but all of this is). The dest directory must exist and should have 'zips' and 'drops' subdirs.""" if not src_vendor: print 'must define src_vendor' return if not name_date_re: print 'must define name_date_re' return if not extract_fn: print 'must define extract_fn' return default_srcdir = default_params.get('default_srcdir') default_dstdir = default_params.get('default_dstdir') default_regex = default_params.get('default_regex') parser = argparse.ArgumentParser(description='Copy and extract drop from %s.' % src_vendor) parser.add_argument('-dd', '--dstdir', help='destination directory (default %s)' % default_dstdir, default=default_dstdir, metavar='dst') parser.add_argument('-sd', '--srcdir', help='source directory (default %s)' % default_srcdir, default=default_srcdir, metavar='src') parser.add_argument('--name', help='file name regex to match (default \'%s\')' % default_regex, default=default_regex, metavar='re') parser.add_argument('--srcs', help='source files (if defined, use instead of srcdir+name)', nargs="*", metavar='zip') args = parser.parse_args() if not os.path.exists(args.dstdir): print '%s does not exists or is not a directory' % args.dstdir return if not args.srcs: if not os.path.isdir(args.srcdir): print '%s does not exist or is not a directory' % args.srcdir return filelist = matching_files_in_dir(args.srcdir, args.name) else: filelist = args.srcs grab_files(args.dstdir, filelist, src_vendor, name_date_re, extract_fn) nototools-2017-09-25-tooling-for-phase3-update/nototools/grab_mt_download.py000077500000000000000000000112101316231664500267760ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2015 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Copy downloaded font zip files from Monotype into noto directory structure. This leverages some properties of the font drops. The drops come in zip files with an underscore and 8-digit date suffix before the extension. This reflects the date of the drop. For each zip of this type we build a root named for the date in the target directory. Most drops contain a two-level tree with the font name and a suffix of either '_hinted or '_unhinted' on the top level, and the relevant data underneath. Our structure just uses 'hinted' or 'unhinted', so we convert, putting these under the root for the zip. Some drops have a single level tree, we examine the fonts to determine if they have hints (probably all do not) and assign it to one of our trees based on that. Other files with names matching the font name (in particular, .csv files corresponding to our linter output) are put into the folder matching the font. Files that are not in a two-level hierarchy and do not correspond to a font are put at the top level. Other tools (for updating the internal staging repo) work off the structure built by this tool. """ __author__ = "dougfelt@google.com (Doug Felt)" import argparse import cStringIO import os import os.path import re import shutil import sys import zipfile from fontTools import ttLib import grab_download import notoconfig def write_data_to_file(data, root, subdir, filename): dstdir = os.path.join(root, subdir) if not os.path.exists(dstdir): os.mkdir(dstdir) with open(os.path.join(dstdir, filename), 'wb') as f: f.write(data) print 'extracted \'%s\' into %s' % (filename, subdir) def unzip_to_directory_tree(drop_dir, filepath): hint_rx = re.compile(r'_((?:un)?hinted)/(.+)') plain_rx = re.compile(r'[^/]+') zf = zipfile.ZipFile(filepath, 'r') print 'extracting files from %s to %s' % (filepath, drop_dir) count = 0 mapped_names = [] unmapped = [] for name in zf.namelist(): # skip names representing portions of the path if name.endswith('/'): continue # get the blob try: data = zf.read(name) except KeyError: print 'did not find %s in zipfile' % name continue result = hint_rx.search(name) if result: # we know where it goes subdir = result.group(1) filename = result.group(2) write_data_to_file(data, drop_dir, subdir, filename) count += 1 continue result = plain_rx.match(name) if not result: print "subdir structure without hint/unhint: '%s'" % name continue # we have to figure out where it goes. # if it's a .ttf file, we look for 'fpgm' # and 'prep' and if they are present, we put # it into hinted, else unhinted. # if it's not a .ttf file, but it starts with # the name of a .ttf file (sans suffix), we put # it in the same subdir the .ttf file went into. # else we put it at drop_dir (no subdir). if name.endswith('.ttf'): blobfile = cStringIO.StringIO(data) font = ttLib.TTFont(blobfile) subdir = 'hinted' if font.get('fpgm') or font.get('prep') else 'unhinted' write_data_to_file(data, drop_dir, subdir, name) count += 1 basename = os.path.splitext(name)[0] mapped_names.append((basename, subdir)) continue # get to these later unmapped.append((name, data)) # write the remainder if unmapped: for name, data in unmapped: subdir = '' for mapped_name, mapped_subdir in mapped_names: if name.startswith(mapped_name): subdir = mapped_subdir break write_data_to_file(data, drop_dir, subdir, name) count += 1 print 'extracted %d files' % count def main(): params = { 'default_srcdir': os.path.expanduser('~/Downloads'), 'default_dstdir': notoconfig.values.get('monotype_data'), 'default_regex': r'Noto.*_\d{8}.zip', } grab_download.invoke_main( src_vendor='Monotype', name_date_re= re.compile(r'(.*)_(\d{4})(\d{2})(\d{2})\.zip'), extract_fn=unzip_to_directory_tree, default_params=params) if __name__ == "__main__": main() nototools-2017-09-25-tooling-for-phase3-update/nototools/gsub_diff.py000066400000000000000000000063101316231664500254260ustar00rootroot00000000000000# Copyright 2016 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Provides GsubDiffFinder, which finds differences in GSUB tables. GsubDiffFinder takes in two paths, to font binaries from which ttxn output is made. It provides `find_gsub_diffs` which compares the OpenType substitution rules in these files, reporting the differences via a returned string. """ import re import subprocess import tempfile class GsubDiffFinder(object): """Provides methods to report diffs in GSUB content between ttxn outputs.""" def __init__(self, file_a, file_b, output_lines=20): ttxn_file_a = tempfile.NamedTemporaryFile() ttxn_file_b = tempfile.NamedTemporaryFile() subprocess.call(['ttxn', '-q', '-t', 'GSUB', '-o', ttxn_file_a.name, '-f', file_a]) subprocess.call(['ttxn', '-q', '-t', 'GSUB', '-o', ttxn_file_b.name, '-f', file_b]) self.text_a = ttxn_file_a.read() self.text_b = ttxn_file_b.read() self.file_a = file_a self.file_b = file_b self.output_lines = output_lines def find_gsub_diffs(self): """Report differences in substitution rules.""" rules_a = self._get_gsub_rules(self.text_a, self.file_a) rules_b = self._get_gsub_rules(self.text_b, self.file_b) diffs = [] report = [''] # first line replaced by difference count for rule in rules_a: if rule not in rules_b: diffs.append(('-',) + rule) for rule in rules_b: if rule not in rules_a: diffs.append(('+',) + rule) # ('+', 'smcp', 'Q', 'Q.sc') # Sort order: # 1. Feature tag # 2. Glyph name before substitution # 3. Glyph name after substitution diffs.sort(key=lambda t:(t[1], t[2], t[3])) report = ['%d differences in GSUB rules' % len(diffs)] report.extend(' '.join(diff) for diff in diffs) return '\n'.join(report[:self.output_lines + 1]) def _get_gsub_rules(self, text, filename): """Get substitution rules in this ttxn output.""" feature_name_rx = r'feature (\w+) {' contents_rx = r'feature %s {(.*?)} %s;' rule_rx = r'sub ([\w.]+) by ([\w.]+);' rules = set() for name in re.findall(feature_name_rx, text): contents = re.findall(contents_rx % (name, name), text, re.S) assert len(contents) == 1, 'Multiple %s features in %s' % ( name, filename) contents = contents[0] for lhs, rhs in re.findall(rule_rx, contents): rules.add((name, lhs, rhs)) return rules nototools-2017-09-25-tooling-for-phase3-update/nototools/hb_input.py000066400000000000000000000306161316231664500253140ustar00rootroot00000000000000# Copyright 2016 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from __future__ import division, print_function from fontTools.ttLib import TTFont from nototools import summary class HbInputGenerator(object): """Provides functions to generate harbuzz input. The input is returned as a list of strings, suitable for passing into subprocess.call or something similar. """ def __init__(self, font): self.font = font self.memo = {} self.reverse_cmap = build_reverse_cmap(self.font) self.widths = {} glyph_set = font.getGlyphSet() for name in glyph_set.keys(): glyph = glyph_set[name] if glyph.width: width = glyph.width elif hasattr(glyph._glyph, 'xMax'): width = abs(glyph._glyph.xMax - glyph._glyph.xMin) else: width = 0 self.widths[name] = width # some stripped fonts don't have space try: space_name = font['cmap'].tables[0].cmap[0x20] self.space_width = self.widths[space_name] except: self.space_width = -1 def all_inputs(self, warn=False): """Generate harfbuzz inputs for all glyphs in a given font.""" inputs = [] glyph_set = self.font.getGlyphSet() for name in self.font.getGlyphOrder(): is_zero_width = glyph_set[name].width == 0 cur_input = self.input_from_name(name, pad=is_zero_width) if cur_input is not None: inputs.append(cur_input) elif warn: print('not tested (unreachable?): %s' % name) return inputs def input_from_name(self, name, seen=None, pad=False): """Given glyph name, return input to harbuzz to render this glyph. Returns input in the form of a (features, text) tuple, where `features` is a list of feature tags to activate and `text` is an input string. Argument `seen` is used by the method to avoid following cycles when recursively looking for possible input. `pad` can be used to add whitespace to text output, for non-spacing glyphs. Can return None in two situations: if no possible input is found (no simple unicode mapping or substitution rule exists to generate the glyph), or if the requested glyph already exists in `seen` (in which case this path of generating input should not be followed further). """ if name in self.memo: return self.memo[name] inputs = [] # avoid following cyclic paths through features if seen is None: seen = set() if name in seen: return None seen.add(name) # see if this glyph has a simple unicode mapping if name in self.reverse_cmap: text = unichr(self.reverse_cmap[name]) inputs.append(((), text)) # check the substitution features inputs.extend(self._inputs_from_gsub(name, seen)) seen.remove(name) # since this method sometimes returns None to avoid cycles, the # recursive calls that it makes might have themselves returned None, # but we should avoid returning None here if there are other options inputs = [i for i in inputs if i is not None] if not inputs: return None features, text = min(inputs) # can't pad if we don't support space if pad and self.space_width > 0: width, space = self.widths[name], self.space_width padding = ' ' * (width // space + (1 if width % space else 0)) text = padding + text self.memo[name] = features, text return self.memo[name] def _inputs_from_gsub(self, name, seen): """Check GSUB for possible input yielding glyph with given name. The `seen` argument is passed in from the original call to input_from_name(). """ inputs = [] if 'GSUB' not in self.font: return inputs gsub = self.font['GSUB'].table if gsub.LookupList is None: return inputs for lookup_index, lookup in enumerate(gsub.LookupList.Lookup): for st in lookup.SubTable: # see if this glyph can be a single-glyph substitution if lookup.LookupType == 1: for glyph, subst in st.mapping.items(): if subst == name: inputs.append(self._input_with_context( gsub, [glyph], lookup_index, seen)) # see if this glyph is a ligature elif lookup.LookupType == 4: for prefix, ligatures in st.ligatures.items(): for ligature in ligatures: if ligature.LigGlyph == name: glyphs = [prefix] + list(ligature.Component) inputs.append(self._input_with_context( gsub, glyphs, lookup_index, seen)) return inputs def _input_with_context(self, gsub, glyphs, target_i, seen): """Given GSUB, input glyphs, and target lookup index, return input to harfbuzz to render the input glyphs with the target lookup activated. """ inputs = [] # try to get a feature tag to activate this lookup for feature in gsub.FeatureList.FeatureRecord: if target_i in feature.Feature.LookupListIndex: inputs.append(self._sequence_from_glyph_names( glyphs, (feature.FeatureTag,), seen)) for cur_i, lookup in enumerate(gsub.LookupList.Lookup): # try contextual substitutions if lookup.LookupType == 5: for st in lookup.SubTable: #TODO handle format 3 if st.Format == 1: inputs.extend(self._input_from_5_1( gsub, st, glyphs, target_i, cur_i, seen)) if st.Format == 2: inputs.extend(self._input_from_5_2( gsub, st, glyphs, target_i, cur_i, seen)) # try chaining substitutions if lookup.LookupType == 6: for st in lookup.SubTable: #TODO handle format 2 if st.Format == 1: inputs.extend(self._input_from_6_1( gsub, st, glyphs, target_i, cur_i, seen)) if st.Format == 3: inputs.extend(self._input_from_6_3( gsub, st, glyphs, target_i, cur_i, seen)) inputs = [i for i in inputs if i is not None] return min(inputs) if inputs else None def _input_from_5_1(self, gsub, st, glyphs, target_i, cur_i, seen): """Return inputs from GSUB type 5.1 (simple context) rules.""" inputs = [] for ruleset in st.SubRuleSet: for rule in ruleset.SubRule: if not any(subst_lookup.LookupListIndex == target_i for subst_lookup in rule.SubstLookupRecord): continue for prefix in st.Coverage.glyphs: input_glyphs = [prefix] + rule.Input if not self._is_sublist(input_glyphs, glyphs): continue inputs.append(self._input_with_context( gsub, input_glyphs, cur_i, seen)) return inputs def _input_from_5_2(self, gsub, st, glyphs, target_i, cur_i, seen): """Return inputs from GSUB type 5.2 (class-based context) rules.""" inputs = [] prefixes = st.Coverage.glyphs class_defs = st.ClassDef.classDefs.items() for ruleset in st.SubClassSet: if ruleset is None: continue for rule in ruleset.SubClassRule: classes = [ [n for n, c in class_defs if c == cls] for cls in rule.Class] input_lists = [prefixes] + classes input_glyphs = self._min_permutation(input_lists, glyphs) if not (any(subst_lookup.LookupListIndex == target_i for subst_lookup in rule.SubstLookupRecord) and self._is_sublist(input_glyphs, glyphs)): continue inputs.append(self._input_with_context( gsub, input_glyphs, cur_i, seen)) return inputs def _input_from_6_1(self, gsub, st, glyphs, target_i, cur_i, seen): """Return inputs from GSUB type 6.1 (simple chaining) rules.""" inputs = [] for ruleset in st.ChainSubRuleSet: for rule in ruleset.ChainSubRule: if not any(subst_lookup.LookupListIndex == target_i for subst_lookup in rule.SubstLookupRecord): continue for prefix in st.Coverage.glyphs: input_glyphs = [prefix] + rule.Input if not self._is_sublist(input_glyphs, glyphs): continue if rule.LookAhead: input_glyphs = input_glyphs + rule.LookAhead if rule.Backtrack: bt = list(reversed(rule.Backtrack)) input_glyphs = bt + input_glyphs inputs.append(self._input_with_context( gsub, input_glyphs, cur_i, seen)) return inputs def _input_from_6_3(self, gsub, st, glyphs, target_i, cur_i, seen): """Return inputs from GSUB type 6.3 (coverage-based chaining) rules.""" input_lists = [c.glyphs for c in st.InputCoverage] input_glyphs = self._min_permutation(input_lists, glyphs) if not (any(subst_lookup.LookupListIndex == target_i for subst_lookup in st.SubstLookupRecord) and self._is_sublist(input_glyphs, glyphs)): return [] if st.LookAheadCoverage: la = [min(c.glyphs) for c in st.LookAheadCoverage] input_glyphs = input_glyphs + la if st.BacktrackCoverage: bt = list(reversed([min(c.glyphs) for c in st.BacktrackCoverage])) input_glyphs = bt + input_glyphs return [self._input_with_context( gsub, input_glyphs, cur_i, seen)] def _sequence_from_glyph_names(self, glyphs, features, seen): """Return a sequence of glyphs from glyph names.""" text = [] for glyph in glyphs: cur_input = self.input_from_name(glyph, seen) if cur_input is None: return None cur_features, cur_text = cur_input features += cur_features text.append(cur_text) return features, ''.join(text) def _min_permutation(self, lists, target): """Deterministically select a permutation, containing target list as a sublist, of items picked one from each input list. """ if not all(lists): return [] i = 0 j = 0 res = [None for _ in range(len(lists))] for cur_list in lists: if j < len(target) and target[j] in cur_list: res[i] = target[j] j += 1 else: res[i] = min(cur_list) i += 1 if j < len(target): return [] return res def _is_sublist(self, lst, sub): """Return whether sub is a sub-list of lst.""" return any(lst[i:i + len(sub)] == sub for i in range(1 + len(lst) - len(sub))) def build_reverse_cmap(font): """Build a dictionary mapping glyph names to unicode values. Maps each name to its smallest unicode value. """ cmap_items = summary.get_largest_cmap(font).items() return {n: v for v, n in reversed(sorted(cmap_items))} nototools-2017-09-25-tooling-for-phase3-update/nototools/lang_data.py000077500000000000000000000246021316231664500254170ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: UTF-8 -*- # # Copyright 2015 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """ Functions to return information on scripts and langs, primarily for the Noto website. The data is generated based on information in cldr_data and unicode_data, and cached in this module. The primary functions return the primary language for each script (sometimes 'und', e.g. for Dsrt), and the names for each lang_script that has an English name (in English and in the script when known). Other functions return the set of scripts and the set of lang_scripts (that have english names). """ import argparse import collections import os from os import path import re import sys from nototools import cldr_data from nototools import unicode_data # controls printing of debug/trace information # normally disabled def _log(msg): # print >> sys.stderr, '#lang_data: ' + msg pass def is_excluded_script(script_code): return script_code in ['Zinh', 'Zyyy', 'Zzzz'] def script_includes(script_code): """Returns a set of script codes 'included' by the provided one. Intended to deal with script codes like 'Jpan' used to describe writing systems that use/require multiple scripts. The script code itself (and other subsets) are also included in the result.""" if script_code not in scripts(): raise ValueError('!not a script code: %s' % script_code) if script_code == 'Hrkt': return frozenset(['Hrkt', 'Hira', 'Kana']) if script_code == 'Jpan': return frozenset(['Jpan', 'Hrkt', 'Hani', 'Hira', 'Kana']) if script_code == 'Kore': return frozenset(['Kore', 'Hang']) return frozenset([script_code]) def _create_lang_data(): """Generates language data from CLDR plus extensions. Returns a mapping from lang to a tuple of: - a set of scripts used in some region - a set of scripts not used in any region.""" all_lang_scripts = collections.defaultdict(set) used_lang_scripts = collections.defaultdict(set) known_scripts = set() all_langs = set() for region in cldr_data.known_regions(): lang_scripts = cldr_data.region_to_lang_scripts(region) for lang_script in lang_scripts: lang, script = lang_script.split('-') known_scripts.add(script) if lang == 'und': _log('used lang is und for script %s in region %s' % (script, region)) continue used_lang_scripts[lang].add(script) all_lang_scripts[lang].add(script) all_langs.add(lang) for lang in cldr_data.known_langs(): lang_scripts = cldr_data.lang_to_scripts(lang) all_lang_scripts[lang] |= lang_scripts known_scripts |= lang_scripts all_langs.add(lang) for lang in all_langs: script = cldr_data.get_likely_script(lang) if not is_excluded_script(script): all_lang_scripts[lang].add(script) for script in unicode_data.all_scripts(): if is_excluded_script(script): continue lang = cldr_data.get_likely_subtags('und-' + script)[0] if lang != 'und': if script not in all_lang_scripts[lang]: _log('adding likely lang %s for script %s' % (lang, script)) all_lang_scripts[lang].add(script) elif script not in known_scripts: _log('adding script with unknown language %s' % script) all_lang_scripts[lang].add(script) else: _log('script %s with unknown language already seen' % script) # Patch: ensure ryu-Jpan exists # - Okinawan can be written in either Kana or a combination of Hira # and Kanji. Rather than take a strong position on this, add a # mapping to Jpan. all_lang_scripts['ryu'].add('Jpan') # Patch: see noto-fonts#133 comment on June 8th. all_lang_scripts['tlh'] |= {'Latn', 'Piqd'} all_langs = used_lang_scripts.keys() + all_lang_scripts.keys() lang_data = {} for lang in all_langs: if lang in used_lang_scripts: if lang in all_lang_scripts: unused_set = all_lang_scripts[lang] - used_lang_scripts[lang] lang_data[lang] = (used_lang_scripts[lang].copy(), unused_set if unused_set else set()) else: lang_data[lang] = (used_lang_scripts[lang].copy(), set()) else: lang_data[lang] = (set(), all_lang_scripts[lang].copy()) return lang_data def _langs_with_no_scripts(lang_script_data): """Return a set of langs with no scripts in lang_script_data.""" return set([k for k in lang_script_data if not (lang_script_data[k][0] or lang_script_data[k][1])]) def _remove_keys_from_dict(keys, some_dict): for k in keys: some_dict.pop(k, None) def _create_script_to_default_lang(lang_script_data): """Iterates over all the scripts in lang_script_data, and returns a map from each script to the default language code, generally based on cldr likely subtag data. This assigns 'en' to Latn by fiat (cldr defaults to 'und'). Some other scripts (e.g. Dsrt) just get 'und'. This checks that the default lang for a script actually uses that script in lang_script_data, when the default lang is not 'und'. """ script_to_default_lang = {} all_scripts = set() script_to_used = collections.defaultdict(set) script_to_unused = collections.defaultdict(set) for lang in lang_script_data: used, unused = lang_script_data[lang] all_scripts |= used all_scripts |= unused for script in used: script_to_used[script].add(lang) for script in unused: script_to_unused[script].add(lang) # Add scripts without langs. all_scripts.add('Zsym') all_scripts.add('Zsye') # Patch Klingon as default lang for (unused) script pIqaD script_to_used['Piqd'].add('tlh') for script in sorted(all_scripts): default_lang = cldr_data.get_likely_subtags('und-' + script)[0] if default_lang == 'und': if script == 'Latn': default_lang = 'en' # cultural bias... else: _log('no default lang for script %s' % script) langs = script_to_used[script] if langs: default_lang = iter(langs).next() _log('using used lang %s from %s' % (default_lang, langs)) else: langs = script_to_unused[script] if langs: default_lang = iter(langs).next() _log('using unused lang %s from %s' % (default_lang, langs)) else: _log('defaulting to \'und\'') else: used, unused = lang_script_data[default_lang] assert script in used or script in unused script_to_default_lang[script] = default_lang return script_to_default_lang def _create_lang_script_to_names(lang_script_data): """Generate a map from lang-script to English (and possibly native) names. Whether the script is included in the name depends on the number of used and unused scripts. If there's one used script, that script is omitted. Else if there's no used script and one unused script, that script is omitted. Else the script is included. If there's no English name for the lang_script, it is excluded. """ lang_to_names = {} for lang in lang_script_data: used, unused = lang_script_data[lang] if len(used) == 1: exclude_script = iter(used).next() elif not used and len(unused) == 1: exclude_script = iter(unused).next() else: exclude_script = '' for script in (used | unused): lang_script = lang + '-' + script target = lang if script == exclude_script else lang_script # special case, not generally useful if target.startswith('und-'): en_name = cldr_data.get_english_script_name(target[4:]) + ' script' else: en_name = cldr_data.get_english_language_name(target) if not en_name: # Easier than patching the cldr_data, not sure I want to go there. if lang_script == 'tlh-Piqd': en_name = u'Klingon' else: _log('No english name for %s' % lang_script) continue native_name = cldr_data.get_native_language_name( lang_script, exclude_script) if native_name == en_name: native_name = None lang_to_names[lang_script] = ( [en_name, native_name] if native_name else [en_name]) return lang_to_names _LANG_DATA = None def _get_lang_data(): global _LANG_DATA if not _LANG_DATA: _LANG_DATA = _create_lang_data() return _LANG_DATA _SCRIPT_TO_DEFAULT_LANG = None def _get_script_to_default_lang(): global _SCRIPT_TO_DEFAULT_LANG if not _SCRIPT_TO_DEFAULT_LANG: _SCRIPT_TO_DEFAULT_LANG = _create_script_to_default_lang(_get_lang_data()) return _SCRIPT_TO_DEFAULT_LANG _LANG_SCRIPT_TO_NAMES = None def _get_lang_script_to_names(): global _LANG_SCRIPT_TO_NAMES if not _LANG_SCRIPT_TO_NAMES: _LANG_SCRIPT_TO_NAMES = _create_lang_script_to_names(_get_lang_data()) return _LANG_SCRIPT_TO_NAMES def scripts(): return _get_script_to_default_lang().keys() def script_to_default_lang(script): return _get_script_to_default_lang()[script] def lang_scripts(): return _get_lang_script_to_names().keys() def lang_script_to_names(lang_script): return _get_lang_script_to_names()[lang_script] def main(): lang_data = _get_lang_data() print print '--------' langs_without_scripts = _langs_with_no_scripts(lang_data) if langs_without_scripts: print 'langs without scripts: ' + ', '.join(sorted(langs_without_scripts)) _remove_keys_from_dict(langs_without_scripts, lang_data) print print 'lang data' for k in sorted(lang_data): used, unused = lang_data[k] used_msg = 'used: ' + ', '.join(sorted(used)) if used else None unused_msg = 'unused: ' + ', '.join(sorted(unused)) if unused else None msg = '; '.join([m for m in (used_msg, unused_msg) if m]) print k, msg print print 'lang_script to names' lang_script_to_names = _get_lang_script_to_names() for t in sorted(lang_script_to_names.iteritems()): print '%s: %s' % t print print 'script to default lang' script_to_default_lang = _get_script_to_default_lang() for t in sorted(script_to_default_lang.iteritems()): print '%s: %s' % t if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/nototools/lint_cmap_reqs.py000077500000000000000000000160601316231664500265040ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2016 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Extract what lint expects for cmap from our data.""" import argparse import sys from nototools import lint_config from nototools import noto_data from nototools import opentype_data from nototools import unicode_data from nototools import cmap_data _PHASE_TWO_SCRIPTS = """ Arab, Aran, Armi, Armn, Avst, Bali, Bamu, Batk, Beng, Brah, Bugi, Buhd, Cans, Cari, Cham, Cher, Copt, Cprt, Deva, Dsrt, Egyp, Ethi, Geor, Glag, Goth, Gujr, Guru, Hano, Hans, Hant, Hebr, Ital, Java, Jpan, Kali, Khar, Khmr, Knda, Kore, Kthi, LGC, Lana, Laoo, Lepc, Limb, Linb, Lisu, Lyci, Lydi, Mand, Mlym, Mong, Mtei, Mymr, Nkoo, Ogam, Olck, Orkh, Orya, Osma, Phag, Phli, Phnx, Prti, Qaae, Rjng, Runr, Samr, Sarb, Saur, Shaw, Sinh, Sund, Sylo, Syrc, Tagb, Tale, Talu, Taml, Tavt, Telu, Tfng, Tglg, Thaa, Thai, Tibt, Ugar, Vaii, Xpeo, Xsux, Yiii, Zsym """ def _code_range_to_set(code_range): """Converts a code range output by _parse_code_ranges to a set.""" characters = set() for first, last, _ in code_range: characters.update(range(first, last+1)) return characters def _symbol_set(): """Returns set of characters that should be supported in Noto Symbols.""" ranges = unicode_data._parse_code_ranges(noto_data.SYMBOL_RANGES_TXT) return _code_range_to_set(ranges) def _cjk_set(): """Returns set of characters that will be provided in CJK fonts.""" ranges = unicode_data._parse_code_ranges(noto_data.CJK_RANGES_TXT) return _code_range_to_set(ranges) def _emoji_pua_set(): """Returns the legacy PUA characters required for Android emoji.""" return lint_config.parse_int_ranges('FE4E5-FE4EE FE82C FE82E-FE837') def _get_script_required( script, unicode_version, noto_phase, unicode_only=False, verbose=False): needed_chars = set() if script == 'Zsye': # Emoji # TODO: Check emoji coverage if not unicode_only: needed_chars = _emoji_pua_set() # legacy PUA for android emoji elif script == 'Zsym': # Symbols if not unicode_only: needed_chars = _symbol_set() elif script == 'LGC': needed_chars = ( unicode_data.defined_characters(scr='Latn', version=unicode_version) | unicode_data.defined_characters(scr='Grek', version=unicode_version) | unicode_data.defined_characters(scr='Cyrl', version=unicode_version)) if not unicode_only: needed_chars -= _symbol_set() needed_chars -= _cjk_set() elif script == "Aran": if unicode_only: needed_chars = unicode_data.defined_characters( scr='Arab', version=unicode_version) else: needed_chars = noto_data.urdu_set() elif script in ['Hans', 'Hant', 'Jpan', 'Kore']: needed_chars = _cjk_set() else: needed_chars = unicode_data.defined_characters( scr=script, version=unicode_version) if not unicode_only: needed_chars -= _symbol_set() if not unicode_only: needed_chars |= noto_data.get_extra_characters_needed(script, noto_phase) try: needed_chars |= set(opentype_data.SPECIAL_CHARACTERS_NEEDED[script]) except KeyError: pass needed_chars -= noto_data.get_characters_not_needed(script, noto_phase) if not unicode_only: needed_chars |= set([0, 0xd, 0x20]) if verbose: print >> sys.stderr, script, needed_chars &= unicode_data.defined_characters(version=unicode_version) return needed_chars def _required_unicode_version(noto_font, noto_phase): if noto_font.family != 'Noto': # e.g. Arimo, Cousine, Tinos return 8.0 if noto_phase == 2: return 6.0 return 9.0 def _compute_required_chars(noto_font, noto_phase): unicode_version = _required_unicode_version(noto_font, noto_phase) needed_chars = _get_script_required( noto_font.script, unicode_version, noto_phase) return frozenset(needed_chars) _REQUIRED_CACHE = {} def get_required_chars(noto_font, phase): # Required characters must only depend on family, script, variant, and phase key = '_'.join(filter(None, [ noto_font.family, noto_font.script, noto_font.variant, str(phase)])) result = _REQUIRED_CACHE.get(key, None) if not result: result = _compute_required_chars(noto_font, phase) _REQUIRED_CACHE[key] = result return result def _check_scripts(scripts): # TODO(dougfelt): something realer bad_scripts = [] for script in scripts: if script[0] < 'A' or script[0] > 'Z': bad_scripts.append(script) if bad_scripts: print 'bad scripts: %s' % ', '.join(bad_scripts) raise ValueError('bad scripts') return set(scripts) def get_cmap_data(scripts, unicode_version, noto_phase, unicode_only, verbose): metadata = cmap_data.create_metadata('lint_cmap_reqs', [ ('unicode_version', unicode_version), ('phase', noto_phase), ('unicode_only', unicode_only)]) tabledata = cmap_data.create_table_from_map({ script : _get_script_required( script, unicode_version, noto_phase, unicode_only, verbose) for script in sorted(scripts) }) return cmap_data.CmapData(metadata, tabledata) def main(): DEFAULT_UNICODE_VERSION = 9.0 parser = argparse.ArgumentParser() parser.add_argument( '--scripts', help='list of pseudo-script codes, empty for all ' 'phase 2 scripts', metavar='code', nargs='*') parser.add_argument( '--unicode_version', help='version of unicode to use (default %s)' % DEFAULT_UNICODE_VERSION, metavar='version', type=float, default=DEFAULT_UNICODE_VERSION) parser.add_argument( '--unicode_only', help='only use unicode data, not noto-specific data', action='store_true') parser.add_argument( '-p', '--phase', help='noto phase (default 3)', metavar='phase', type=int, default=3) parser.add_argument( '--outfile', help='write to output file, otherwise to stdout', metavar='fname', nargs='?', const='-default-') parser.add_argument( '--verbose', help='log to stderr as each script is complete', action='store_true') args = parser.parse_args() if not args.scripts: scripts = set(s.strip() for s in _PHASE_TWO_SCRIPTS.split(',')) else: scripts = _check_scripts(args.scripts) cmapdata = get_cmap_data( scripts, args.unicode_version, args.phase, args.unicode_only, args.verbose) if args.outfile: if args.outfile == '-default-': args.outfile = 'lint_cmap_%s.xml' % args.unicode_version print >> sys.stderr, 'writing %s' % args.outfile cmap_data.write_cmap_data_file(cmapdata, args.outfile, pretty=True) else: print cmap_data.write_cmap_data(cmapdata, pretty=True) if __name__ == "__main__": main() nototools-2017-09-25-tooling-for-phase3-update/nototools/lint_config.py000077500000000000000000000571521316231664500260060ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2015 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Custom configuration of lint for font instances.""" # The structure is a list of conditions and tests. A condition says when to apply # the following test. These are processed in order and are cumulative, and # where there is a conflict the last instructions win. # Both conditions and tests can vary in specifity, a condition can for example simply # indicate all fonts by a vendor, or indicate a particuar version of a particular font. # At the end of the day, we have a particular font, and want to know which tests to # run and which failures to ignore or report. lint_config builds up a structure from # a customization file that allows this api. import argparse import re spec_format = """ A spec defines a list of conditions to be run in sequence. A condition consists of a filter, which determines whether a font matches the condition, and a list of tests, which determines what tests to run on that font and what exceptions to make. By default all tests are run on all fonts. Conditions are created by a list of filter and test instructions. A new condition is started either by the term 'condition' or by adding a filter after one or more tests have been defined, there is an initial open condition at the start that accepts all fonts. Filters on the same property do not accumulate, instead the previous filter for that property is replaced. Similarly, tests on the same tag do not accumulate. '#' starts a comment to the next '\\n' '\\n' and ';' separate instruction: 'condition' -- starts a new condition 'filename | name | script | variant | weight | hinted | vendor | verson' -- adds a filter 'enable | disable' -- adds tests filter: '*' -- reset filter 'in' -- string equality test numeric_filter: '< | <= | == | != | >= | >' -- compare decimal values string_filter: 'is' -- string equality 'like' -- value is a regex, true if it matches target anywhere string_list: -- one or more strings separated by comma + test_list: -- one or more tests separated by comma + test: | test_tag: -- name of a test node (see tags) relation: 'except | only' -- whether to include or exclude values matched by the selector value_type: 'cp | gid' -- type of select values the tag takes, cp values are hex, gid are decimal value_list: -- numbers or ranges separated by whitespace, no space around hyphen ( | '-')+ """ def parse_int_ranges(range_string, is_hex=True, sep=' '): """Returns a set of ints from a string of numbers or ranges separated by sep. A range is two values separated by hyphen with no intervening separator. Result can be empty if range_string is empty.""" result = set() count = 0 base = 16 if is_hex else 10 range_string = range_string.strip() if not range_string: return set() value_list = range_string.split(sep) for val in value_list: if '-' in val: # assume range val_list = val.split('-') if len(val_list) != 2: raise ValueError('could not parse range from \'%s\'' % val) lo = int(val_list[0], base) hi = int(val_list[1], base) if lo >= hi: raise ValueError('val range must have high > low') result.update(range(lo, hi + 1)) count += hi - lo + 1 else: result.add(int(val, base)) count += 1 if len(result) != count: raise ValueError('duplicate values in %s, expected count is %d but result is %s' % ( hexlist, count, result)) return result def write_int_ranges(int_values, in_hex=True, sep=' '): """From a set or list of ints, generate a string representation that can be parsed by parse_int_ranges to return the original values (not order_preserving).""" if not int_values: return '' num_list = [] if type(int_values) is not list: int_values = [v for v in int_values] int_values.sort() start = prev = int_values[0] single_fmt = '%04x' if in_hex else '%d' pair_fmt = single_fmt + '-' + single_fmt def emit(): if prev == start: num_list.append(single_fmt % prev) else: num_list.append(pair_fmt % (start, prev)) for v in int_values[1:]: if v == prev + 1: prev += 1 continue else: emit() start = prev = v emit() return sep.join(num_list) class IntSetFilter(object): """Tests whether an int (glyph or code point) is in a set.""" def __init__(self, accept_if_in, intset): self.accept_if_in = accept_if_in self.intset = intset # print 'IntSetFilter %s %s' % ('only' if accept_if_in else 'except', intset) def accept(self, cp): return self.accept_if_in == (cp in self.intset) class FontInfo(object): def __init__(self, filename, name, style, script, variant, weight, monospace, hinted, vendor, version): self.filename = filename self.name = name self.style = style self.script = script self.variant = variant self.weight = weight self.monospace = monospace self.hinted = hinted self.vendor = vendor self.version = version def __repr__(self): return str(self.__dict__) class FontCondition(object): def _init_fn_map(): def test_lt(lhs, rhs): return float(lhs) < float(rhs) def test_le(lhs, rhs): return float(lhs) <= float(rhs) def test_eq(lhs, rhs): return float(lhs) == float(rhs) def test_ne(lhs, rhs): return float(lhs) != float(rhs) def test_ge(lhs, rhs): return float(lhs) >= float(rhs) def test_gt(lhs, rhs): return float(lhs) > float(rhs) def test_is(lhs, rhs): return lhs == rhs def test_in(lhs, rhs): return lhs in rhs def test_like(lhs, rhs): return rhs.search(lhs) != None def test_is_not(lhs, rhs): return lhs != rhs def test_not_in(lhs, rhs): return lhs not in rhs def test_not_like(lhs, rhs): return rhs.search(lhs) == None return { '<': test_lt, '<=': test_le, '==': test_eq, '!=': test_ne, '>=': test_ge, '>': test_gt, 'is': test_is, 'in': test_in, 'like': test_like, 'is not': test_is_not, 'not in': test_not_in, 'not like': test_not_like, } fn_map = _init_fn_map() def __init__(self, filename=None, name=None, style=None, script=None, variant=None, weight=None, hinted=None, vendor=None, version=None): """Each arg is either a string, or a pair of a fn of two args returning bool, and an object. When the arg is a pair, the target string is passed to the fn as the first arg and the second element of the pair is passed as the second arg.""" self.filename = filename self.name = name self.style = style self.script = script self.variant = variant self.weight = weight self.hinted = hinted self.vendor = vendor self.version = version def modify(self, condition_name, fn_name, value): if not condition_name in self.__dict__: raise ValueError('FontCondition does not recognize: %s' % condition_name) if fn_name == '*': # no condition self.__dict__[condition_name] = None return if not value: # fn_name is value self.__dict__[condition_name] = fn_name return fn = self.fn_map[fn_name] if fn_name == 'in': value = set(value.split(',')) elif fn_name == 'like': value = re.compile(value) self.__dict__[condition_name] = (fn, value) line_re = re.compile(r'([^ \t]+)\s+(is not|not like|not in|[^ \t]+)(.*)') def modify_line(self, line): line = line.strip() m = self.line_re.match(line) if not m: raise ValueError("FontCondition could not match '%s'" % line) condition_name = m.group(1) fn_name = m.group(2) value = m.group(3) if value: value = value.strip() if not value: value = None self.modify(condition_name, fn_name, value) def copy(self): return FontCondition( filename=self.filename, name=self.name, style=self.style, script=self.script, variant=self.variant, weight=self.weight, hinted=self.hinted, vendor=self.vendor, version=self.version) def accepts(self, fontinfo): for k in ['filename', 'name', 'style', 'script', 'variant', 'weight', 'hinted', 'vendor', 'version']: test = getattr(self, k, None) if test: val = getattr(fontinfo, k, None) if isinstance(test, basestring): if test != val: return False continue if not test[0](val, test[1]): return False return True def __repr__(self): def value_str(value): if isinstance(value, basestring): cond_name = 'is' cond_value = value else: fn = value[0] val = value[1] cond_name = None for fn_text, fn_obj in FontCondition.fn_map.iteritems(): if fn == fn_obj: cond_name = fn_text break if cond_name == 'like': cond_value = val.pattern else: if not cond_name: cond_name = str(fn) cond_value = str(val) return '%s %s' % (cond_name, cond_value) output = ['\n %s: %s' % (k,value_str(v)) for k,v in self.__dict__.iteritems() if v] return 'condition:%s' % ''.join(output) class TestSpec(object): data = """ filename -- filename tests script name name -- name table tests unable_to_check copyright family subfamily unique_id full_name version match_head out_of_range postscript_name trademark manufacturer designer description vendor_url designer_url license license_url preferred_family preferred_subfamily wws_family wws_subfamily unused -- checks for unused entries in name table cmap -- cmap table tests tables missing unexpected format_12_has_bmp format_4_subset_of_12 notaliased required script_required except|only cp private_use except|only cp non_characters disallowed_ascii variants unexpected head -- head table tests hhea ascent descent linegap vhea linegap os2 fstype ascender descender linegap winascent windescent achvendid weight_class fsselection unicoderange panose family serif proportion bounds -- glyf limits etc glyph ui_ymax except|only gid ui_ymin except|only gid ymax except|only gid ymin except|only gid font ui_ymax ui_ymin ymax ymin paths -- outline tests extrema -- missing on-curve extrema intersection -- self-intersecting paths gdef -- gdef tests classdef not_present -- table is missing but there are mark glyphs unlisted except|only cp -- mark glyph is present and expected to be listed combining_mismatch except|only cp -- mark glyph is combining but not listed as combining not_combining_mismatch except|only cp -- mark glyph is not combining but listed as combining attachlist duplicates out_of_order ligcaretlist not_present -- table is missing but there are ligatures not_ligature -- listed but not a ligature unlisted -- is a ligature but no caret complex -- gpos and gsub tests gpos missing ui_name_id -- FeatureParamsStylisticSet.UINameID not in name table gsub missing ui_name_id -- FeatureParamsStylisticSet.UINameID not in name table variants -- expect standard variants to be supported in gsub bidi -- tests bidi pairs, properties rtlm_non_mirrored -- rtlm GSUB feature applied to private-use or non-mirrored character ompl_rtlm -- rtlm GSUB feature applied to ompl char ompl_missing_pair -- ompl sibling not in cmap rtlm_unlisted -- non-ompl bidi char does not have rtlm GSUB feature hints unexpected_tables -- unhinted fonts shouldn't have hint tables missing_bytecode except|only gid -- hinted tt fonts should have bytecodes unexpected_bytecode -- unhinted tt fonts should not have bytecodes advances digits -- checks that ASCII digits have same advance as digit zero comma_period -- checks that comma and period have same advance whitespace -- checks for expected advance relationships in whitespace spacing_marks -- checks that particular spacing marks have non-zero advances stem -- stem widths left_joining -- non-zero lsb right_joining -- rsb not -70 reachable except|only gid """ # fields are: # 0: zero or more spaces # 1: tag, lower case alphanumeric plus underscore # 2: optional relation regex, delimited by whitespace' # 3: optional (with relation) value type regex, delimited by whitespace' # 4: optional '--' followed by comment to end of line def _process_data(data): """data is a hierarchy of tags. any level down to root can be enabled or disabled. this builds a representation of the tag hierarchy from the text description.""" _data_line_re = re.compile(r'(\s*)([a-z0-9_]+)(?:\s+([^\s]+)\s+([^\s]+))?\s*(?:--\s*(.+)\s*)?$') tag_data = {} indent = (0, '', None) for line in data.splitlines(): if not line.strip(): continue m = _data_line_re.match(line) if not m: raise ValueError('failed to match line: \'%s\'' % line) line_indent = m.group(1) tag_part = m.group(2) relation = m.group(3) arg_type = m.group(4) comment = m.group(5) while line_indent <= indent[0]: if indent[2]: indent = indent[2] else: break tag = indent[1] if tag: tag += '/' + tag_part else: tag = tag_part tag_data[tag] = (relation, arg_type, comment) if line_indent > indent[0]: indent = (line_indent, tag, indent) return tag_data tag_data = _process_data(data) tag_set = frozenset(tag_data.keys()) def __init__(self): self.touched_tags = set() self.enabled_tags = set() self.tag_options = {} def _get_single_tag(self, tag): """Resolve tag to a single node""" if not tag in self.tag_set: unique_tag = None # try to find a unique tag with this as a segment for t in TestSpec.tag_set: ix = t.find(tag) if ix != -1: if ix > 0 and t[ix-1] not in '/_': continue ix += len(tag) if ix < len(t) and t[ix] not in '/_': continue if unique_tag: raise ValueError('multiple matches for partial tag %s' % tag) unique_tag = t if not unique_tag: raise ValueError('unknown tag: %s' % tag) tag = unique_tag return tag def _get_tag_set(self, tag): """Resolve tag to a single node, and return it and all of its descendants.""" if tag == '*': return TestSpec.tag_set tag = self._get_single_tag(tag) result = set() for candidate in self.tag_set: if candidate.startswith(tag): result.add(candidate) return result def _get_ancestor_tag_set(self, tag): """Resolve tag to a single node, and return all of its ancestors.""" result = set() if tag != '*': tag = self._get_single_tag(tag) while tag: ix = tag.rfind('/') if ix == -1: break tag = tag[:ix] result.add(tag) return result def _set_enable_options(self, tag, relation, arg_type, arg): allowed_options = TestSpec.tag_data[tag] if not allowed_options[0]: raise ValueError('tag \'%s\' does not allow options' % tag) if not re.match(allowed_options[0], relation): raise ValueError('tag \'%s\' does not allow relation \'%s\'' % (tag, relation)) if not re.match(allowed_options[1], arg_type): raise ValueError('tag \'%s\' and relation \'%s\' does not allow arg type %s' % ( tag, relation, arg_type)) if arg_type == 'cp' or arg_type == 'gid': is_hex = arg_type == 'cp' int_set = parse_int_ranges(arg, is_hex) self.tag_options[tag] = (arg_type, IntSetFilter(relation != 'except', int_set)) else: raise ValueError('illegal state - unrecognized arg_type \'%s\'' % arg_type) def enable(self, tag, relation=None, arg_type=None, arg=None): tags = self._get_tag_set(tag) if relation != None: if len(tags) > 1: raise ValueError('options cannot be applied to multiple tags') tag = next(iter(tags)) self._set_enable_options(tag, relation, arg_type, arg) self.touched_tags |= tags tags |= self._get_ancestor_tag_set(tag) self.enabled_tags |= tags tag_rx = re.compile(r'\s*([0-9a-z/_]+)(?:\s+(except|only)\s+(cp|gid)\s+(.*))?\s*$') def enable_tag(self, tag_seg): m = self.tag_rx.match(tag_seg) if not m: raise ValueError('TestSpec could not parse:\n "%s"\n' 'expecting:\n " except|only cp|gid +"'% tag_seg) self.enable(m.group(1), relation=m.group(2), arg_type=m.group(3), arg=m.group(4)) def disable(self, tag): tags = self._get_tag_set(tag) self.touched_tags |= tags self.enabled_tags -= tags def apply_spec(self, result, options): result -= self.touched_tags result |= self.enabled_tags for tag in self.touched_tags: options.pop(tag, None) for tag in self.enabled_tags: if tag in self.tag_options: options[tag] = self.tag_options[tag] # TODO(dougfelt): remove modify_line if no longer used line_rx = re.compile(r'\s*(enable|disable)\s+([0-9a-z/]+)(?:\s+(except|only)\s+(cp|gid)\s+(.*))?\s*') def modify_line(self, line): m = self.line_rx.match(line) if not m: raise ValueError('TestSpec could not parse ' + line) if m.group(1) == 'enable': self.enable(m.group(2), m.group(3), m.group(4), m.group(5)) else: self.disable(m.group(2)) def copy(self): result = TestSpec() result.touched_tags |= self.touched_tags result.enabled_tags |= self.enabled_tags return result def __repr__(self): enable_list = [] disable_list = [] for tag in self.touched_tags: if tag in self.enabled_tags: enable_list.append(tag) else: disable_list.append(tag) output = [] if enable_list: output.append('enable:') output.extend(' %s' % item for item in sorted(enable_list)) if disable_list: output.append('disable:') output.extend(' %s' % item for item in sorted(disable_list)) return '\n'.join(output) class LintTests(object): def __init__(self, tag_set, tag_filters): self.tag_set = tag_set self.tag_filters = tag_filters self.run_log = set() self.skip_log = set() def get_filter(self, tag): if tag not in TestSpec.tag_set: raise ValueError('unrecognized tag ' + tag) return self.tag_filters.get(tag, None) def check(self, tag): if tag not in TestSpec.tag_set: raise ValueError('unrecognized tag ' + tag) run = tag in self.tag_set if run: self.run_log.add(tag) else: self.skip_log.add(tag) return run def valuetype(self, tag): """If the tag filters values, return the type of the value ('gid' or 'cp') being filtered, or None.""" if tag in self.tag_filters: return self.tag_filters[tag][0] return None def checkvalue(self, tag, value): run = self.check(tag) if run and tag in self.tag_filters: run = self.tag_filters[tag][1].accept(value) return run def runlog(self): return self.run_log def skiplog(self): return self.skip_log def __repr__(self): lines = [] if not (self.run_log or self.skip_log): for tag in sorted(self.tag_set): tag_filter = self.tag_filters.get(tag, None) if tag_filter: lines.append('%s %s' % (tag, tag_filter)) else: lines.append(tag) if self.run_log: lines.add('run:') lines.append(' ' + t for t in self.run_log) if self.skip_log: lines.add('skipped:') lines.append(' ' + t for t in self.skip_log) return '\n'.join(lines) class LintSpec(object): def __init__(self): self.specs = [] def add_spec(self, font_condition, test_spec): self.specs.append((font_condition, test_spec)) def get_tests(self, font_info): result = set() options = {} result |= TestSpec.tag_set for condition, spec in self.specs: if condition.accepts(font_info): spec.apply_spec(result, options) return LintTests(frozenset(result), options) def __repr__(self): return '--- spec ---\n' + '\n--- spec ---\n'.join('%s\n%s' % spec for spec in self.specs) def parse_spec(spec, lint_spec=None): if not lint_spec: lint_spec = LintSpec() if not spec: return lint_spec cur_condition = FontCondition() cur_test_spec = TestSpec() have_test = False for line in spec.splitlines(): ix = line.find('#') if ix > -1: line = line[:ix] line = line.strip() if not line: continue for segment in line.split(';'): segment = segment.strip() if segment == 'condition': if have_test: lint_spec.add_spec(cur_condition.copy(), cur_test_spec) cur_test_spec = TestSpec() have_test = False cur_condition = FontCondition() elif segment.startswith('enable '): segment = segment[len('enable '):] for seg in segment.split(','): cur_test_spec.enable_tag(seg.strip()) have_test = True elif segment.startswith('disable '): segment = segment[len('disable '):] for seg in segment.split(','): cur_test_spec.disable(seg.strip()) have_test = True else: if have_test: lint_spec.add_spec(cur_condition.copy(), cur_test_spec) cur_test_spec = TestSpec() have_test = False cur_condition.modify_line(segment) if have_test: lint_spec.add_spec(cur_condition, cur_test_spec) return lint_spec def parse_spec_file(filename): with open(filename) as f: return parse_spec(f.read()) def main(): parser = argparse.ArgumentParser() parser.add_argument('--tags', help='list all tags supported by the parser', action='store_true') parser.add_argument('--comments', help='list tags with comments when present', action='store_true') parser.add_argument('--filters', help='list tags with filters when present', action='store_true') parser.add_argument('--spec', help='prints the syntax', action='store_true') parser.add_argument('--parsefile', help='prints the parsed spec', metavar='spec') args = parser.parse_args() if not (args.tags or args.comments or args.filters or args.spec or args.parsefile): print 'nothing to do.' return if args.spec: print spec_format return for tag in sorted(TestSpec.tag_set): data = TestSpec.tag_data[tag] comment = args.comments and data[2] if args.filters and (data[0] or data[1]): filter = ' '.join(data[:2]) else: filter = None show_tag = args.tags or comment or filter if show_tag: print tag if filter: print ' ' + filter if comment: print ' -- ' + comment if args.parsefile: print parse_spec_file(args.parsefile) if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/nototools/match_font_names.py000066400000000000000000000037671316231664500270200ustar00rootroot00000000000000#!/usr/bin/env python """Find fonts under some root whose names match the provided names. If the provided name contains '-' then include only names with that style after the hyphen, otherwise include all styles. The name list is the same as that used to swat file versions.""" import argparse import os from os import path import re from nototools import tool_utils def _build_regex(names): parts = [] for name in names: ix = name.find('-') if ix == -1: parts.append(r'%s-' % name) else: prefix = name[:ix] suffix = name[ix+1:] parts.append(r'%s-.*%s' % (prefix, suffix)) full_exp = '^(?:' + '|'.join(parts) + ').*\.ttf$' return re.compile(full_exp) def match_files(src_dir, names): matched_files = set() src_dir = tool_utils.resolve_path(src_dir) print '# root: %s' % src_dir name_re = _build_regex(names) for root, dirs, files in os.walk(src_dir): effective_root = root[len(src_dir)+1:] for f in files: if name_re.match(f): matched_files.add(path.join(effective_root, f)) return sorted(matched_files) def _print_list(names): if not names: return for n in names: print n def _collect_names(names): all_names = set() def scan_name(n): n = n.strip() if not n: return if n[0] != '@': all_names.add(n) return with open(n[1:], 'r') as f: lines = f.readlines() for l in lines: ix = l.find('#') if ix != -1: l = l[:ix] scan_name(l) for n in names: scan_name(n) return sorted(all_names) def main(): parser = argparse.ArgumentParser(); parser.add_argument( '-f', '--files', help='list of names and/or files (prefixed with \'@\'', metavar='name', required=True, nargs='+') parser.add_argument( '-s', '--src_dir', help='directory under which to search for files', metavar='dir', required=True) args = parser.parse_args(); _print_list(match_files(args.src_dir, _collect_names(args.files))); if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/nototools/merge_fonts.py000077500000000000000000000145561316231664500260240ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2017 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Merges fonts. Two notable differences between merge_noto and this script are: 1. merge_noto merges all fonts in Noto, or merges a subset of Noto clustered by region. While This script merges a selected font subset. 2. The line metrics in the final merged font are substituted by those in NotoSans-Regular.ttf (LGC). This is to optimize the user experience in LGC. The drawback is some tall scripts in the file list (like Balinese, Cuneiform, Javaness) might vertically overlap with each other and also be clipped by the edge of the UI. This should be handled carefully by the UI designer, say changing the line height or adding the margin. Sample Usage: $ merge_fonts.py -d noto-fonts/unhinted -o NotoSansMerged-Regular.ttf """ import sys import os.path import logging from argparse import ArgumentParser from fontTools import ttLib from fontTools import merge from merge_noto import add_gsub_to_font, has_gsub_table from nototools.substitute_linemetrics import read_line_metrics, set_line_metrics from fontTools.misc.loggingTools import Timer log = logging.getLogger("nototools.merge_fonts") # directory that contains the files to be merged directory = '' # file names to be merged files = [ # It's recommended to put NotoSans-Regular.ttf as the first element in the # list to maximize the amount of meta data retained in the final merged font. 'NotoSans-Regular.ttf', 'NotoSansAvestan-Regular.ttf', 'NotoSansBalinese-Regular.ttf', 'NotoSansBamum-Regular.ttf', 'NotoSansBatak-Regular.ttf', 'NotoSansBrahmi-Regular.ttf', 'NotoSansBuginese-Regular.ttf', 'NotoSansBuhid-Regular.ttf', 'NotoSansCarian-Regular.ttf', 'NotoSansCoptic-Regular.ttf', 'NotoSansCuneiform-Regular.ttf', 'NotoSansCypriot-Regular.ttf', 'NotoSansEgyptianHieroglyphs-Regular.ttf', 'NotoSansGlagolitic-Regular.ttf', 'NotoSansGothic-Regular.ttf', 'NotoSansHanunoo-Regular.ttf', 'NotoSansImperialAramaic-Regular.ttf', 'NotoSansInscriptionalPahlavi-Regular.ttf', 'NotoSansInscriptionalParthian-Regular.ttf', 'NotoSansJavanese-Regular.ttf', 'NotoSansKaithi-Regular.ttf', 'NotoSansKayahLi-Regular.ttf', 'NotoSansKharoshthi-Regular.ttf', 'NotoSansLepcha-Regular.ttf', 'NotoSansLimbu-Regular.ttf', 'NotoSansLinearB-Regular.ttf', 'NotoSansLisu-Regular.ttf', 'NotoSansLycian-Regular.ttf', 'NotoSansLydian-Regular.ttf', 'NotoSansMandaic-Regular.ttf', 'NotoSansMeeteiMayek-Regular.ttf', 'NotoSansMongolian-Regular.ttf', 'NotoSansNKo-Regular.ttf', 'NotoSansNewTaiLue-Regular.ttf', 'NotoSansOgham-Regular.ttf', 'NotoSansOlChiki-Regular.ttf', 'NotoSansOldItalic-Regular.ttf', 'NotoSansOldPersian-Regular.ttf', 'NotoSansOldSouthArabian-Regular.ttf', 'NotoSansOldTurkic-Regular.ttf', 'NotoSansOsmanya-Regular.ttf', 'NotoSansPhagsPa-Regular.ttf', 'NotoSansPhoenician-Regular.ttf', 'NotoSansRejang-Regular.ttf', 'NotoSansRunic-Regular.ttf', 'NotoSansSamaritan-Regular.ttf', 'NotoSansSaurashtra-Regular.ttf', 'NotoSansShavian-Regular.ttf', 'NotoSansSundanese-Regular.ttf', 'NotoSansSylotiNagri-Regular.ttf', 'NotoSansSyriacEastern-Regular.ttf', 'NotoSansTagalog-Regular.ttf', 'NotoSansTagbanwa-Regular.ttf', 'NotoSansTaiLe-Regular.ttf', 'NotoSansTaiTham-Regular.ttf', 'NotoSansTaiViet-Regular.ttf', 'NotoSansThaana-Regular.ttf', 'NotoSansTifinagh-Regular.ttf', 'NotoSansUgaritic-Regular.ttf', 'NotoSansVai-Regular.ttf', 'NotoSansYi-Regular.ttf', 'NotoSansCham-Regular.ttf', ] def build_valid_filenames(files=files, directory=directory): files = list(files) directory = directory.rstrip('/') if directory == '' or directory == None: directory = '.' valid_files = [] for f in files: valid_file = directory + '/' + f if not os.path.isfile(valid_file): log.warn('can not find %s, skipping it.' % valid_file) else: valid_files.append(valid_file) if len(valid_files) == 0: return valid_files if os.path.basename(valid_files[0]) != files[0]: log.warn('can not find the font %s to read line metrics from. Line ' + 'metrics in the result might be wrong.' % files[0]) return valid_files def main(): t = Timer() parser = ArgumentParser() parser.add_argument('-d', '--directory', default='./', help='Path to directory containing the fonts') parser.add_argument('-o', '--output', default='merged.ttf', help='Path to output file.') parser.add_argument('-v', '--verbose', action='store_true', help='Verbose mode, printing out more info') args = parser.parse_args() logging.basicConfig(level=logging.INFO if args.verbose else logging.WARNING) valid_files = build_valid_filenames(directory=args.directory) if len(valid_files) <= 1: log.warn('expecting at least two fonts to merge, but only got %d ' + 'font(s).', len(valid_files)) sys.exit(-1) for idx, file in enumerate(valid_files): if not has_gsub_table(file): log.info('adding default GSUB table to %s.' % file) valid_files[idx] = add_gsub_to_font(file) merger = merge.Merger() print('Merging %d Fonts...' % len(valid_files)) font = merger.merge(valid_files) # Use the line metric in the first font to replace the one in final result. metrics = read_line_metrics(ttLib.TTFont(valid_files[0])) set_line_metrics(font, metrics) font.save(args.output) font.close() print('%d fonts are merged. %d fonts are skipped. Cost %0.3f s.' % (len(valid_files), len(files) - len(valid_files), t.time())) print('Please check the result at %s.' % os.path.abspath( os.path.realpath(args.output))) if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/nototools/merge_noto.py000077500000000000000000000175531316231664500256520ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Merges Noto fonts.""" import os.path import tempfile from fontTools import merge from fontTools import ttLib from fontTools.ttLib.tables import otTables def make_font_name(script): if script: return 'Noto Sans %s' % script else: return 'Noto Sans' def make_puncless_font_name(script): return make_font_name(script).replace(' ', '').replace('-', '') def make_font_file_name(script, weight, directory='individual/unhinted'): filename = '%s/%s-%s.ttf' % ( directory, make_puncless_font_name(script), weight) return filename def add_ui_alternative(table, target): new_target = target + ' UI' sources = table[target] new_sources = [source + ' UI' for source in sources] table[new_target] = new_sources def has_gsub_table(fontfile): font = ttLib.TTFont(fontfile) return 'GSUB' in font SCRIPT_TO_OPENTYPE_SCRIPT_TAG = { 'CypriotSyllabary': 'cprt', 'Deseret': 'dsrt', 'Glagolitic': 'glag', 'Lisu': 'lisu', 'Ogham': 'ogam', 'OldItalic': 'ital', 'Runic': 'runr', 'Shavian': 'shaw', 'Vai': 'vai ', 'Carian': 'cari', 'EgyptianHieroglyphs': 'egyp', 'ImperialAramaic': 'armi', 'LinearB': 'linb', 'Lycian': 'lyci', 'Lydian': 'lydi', 'OldPersian': 'xpeo', 'OldSouthArabian': 'sarb', 'OldTurkic': 'orkh', 'Osmanya': 'osma', 'Phoenician': 'phnx', 'SumeroAkkadianCuneiform': 'xsux', 'Ugaritic': 'ugar', 'OlChiki': 'olck', 'TaiLe': 'tale', # Following keys are added to satisfy the use case in merge_fonts.py # Reference: # https://www.google.com/get/noto/#sans-xsux # https://www.google.com/get/noto/#sans-cprt # https://www.google.com/get/noto/#sans-yiii # https://www.microsoft.com/typography/otspec/scripttags.htm 'Cuneiform': 'xsux', 'Cypriot': 'cprt', 'Yi': 'yi ', } def get_opentype_script_tag(fontfile): fontfile = os.path.basename(fontfile) if fontfile.startswith('NotoSans'): fontfile = fontfile[8:] fontfile = fontfile[:fontfile.index('-')] return SCRIPT_TO_OPENTYPE_SCRIPT_TAG[fontfile] def add_gsub_to_font(fontfile): """Adds an empty GSUB table to a font.""" font = ttLib.TTFont(fontfile) gsub_table = ttLib.getTableClass('GSUB')('GSUB') gsub_table.table = otTables.GSUB() gsub_table.table.Version = 1.0 gsub_table.table.ScriptList = otTables.ScriptList() gsub_table.table.ScriptCount = 1 gsub_table.table.LookupList = otTables.LookupList() gsub_table.table.LookupList.LookupCount = 0 gsub_table.table.LookupList.Lookup = [] gsub_table.table.FeatureList = otTables.FeatureList() gsub_table.table.FeatureList.FeatureCount = 0 gsub_table.table.LookupList.FeatureRecord = [] script_record = otTables.ScriptRecord() script_record.ScriptTag = get_opentype_script_tag(fontfile) script_record.Script = otTables.Script() script_record.Script.LangSysCount = 0 script_record.Script.LangSysRecord = [] default_lang_sys = otTables.DefaultLangSys() default_lang_sys.FeatureIndex = [] default_lang_sys.FeatureCount = 0 default_lang_sys.LookupOrder = None default_lang_sys.ReqFeatureIndex = 65535 script_record.Script.DefaultLangSys = default_lang_sys gsub_table.table.ScriptList.ScriptRecord = [script_record] font['GSUB'] = gsub_table target_file = tempfile.gettempdir() + '/' + os.path.basename(fontfile) font.save(target_file) return target_file def main(): merge_table = { 'Historic': [ 'Avestan', 'Carian', 'Egyptian Hieroglyphs', 'Imperial Aramaic', 'Pahlavi', # Should be 'Inscriptional Pahlavi', 'Parthian', # Should be 'Inscriptional Parthian', 'Linear B', 'Lycian', 'Lydian', 'Mandaic', 'Old Persian', 'Old South Arabian', 'Old Turkic', 'Osmanya', 'Phags-Pa', 'Phoenician', 'Samaritan', 'Sumero-Akkadian Cuneiform', 'Ugaritic', ], 'South Asian': [ 'Devanagari', 'Bengali', 'Gurmukhi', 'Gujarati', 'Oriya', 'Tamil', 'Telugu', 'Kannada', 'Malayalam', 'Sinhala', 'Thaana', 'Brahmi', 'Kaithi', 'Kharoshthi', # Move to Historic? 'Lepcha', 'Limbu', 'Meetei Mayek', 'Ol Chiki', 'Saurashtra', 'Syloti Nagri', ], 'Southeast Asian': [ 'Thai', 'Lao', 'Khmer', 'Batak', 'Buginese', 'Buhid', 'Cham', 'Hanunoo', 'Javanese', 'Kayah Li', 'New Tai Lue', 'Rejang', 'Sundanese', 'Tagalog', 'Tagbanwa', 'Tai Le', 'Tai Tham', 'Tai Viet', ], '': [ # LGC, 'Armenian', 'Bamum', 'Canadian Aboriginal', 'Cherokee', 'Coptic', 'Cypriot Syllabary', 'Deseret', 'Ethiopic', 'Georgian', 'Glagolitic', 'Gothic', 'Hebrew', 'Lisu', 'NKo', 'Ogham', 'Old Italic', 'Runic', 'Shavian', 'Tifinagh', 'Vai', ], } add_ui_alternative(merge_table, 'South Asian') add_ui_alternative(merge_table, 'Southeast Asian') for merge_target in sorted(merge_table): for weight in ['Regular', 'Bold']: merger = merge.Merger() source_fonts = merge_table[merge_target] if '' not in source_fonts: source_fonts = [''] + source_fonts # The LGC font regular_sources = [make_font_file_name(script, weight) for script in source_fonts] regular_sources = [font for font in regular_sources if os.path.isfile(font)] if len(regular_sources) <= 1: continue print('Merging Noto Sans %s %s' % (merge_target, weight)) for index, fontfile in enumerate(regular_sources): if not has_gsub_table(fontfile): regular_sources[index] = add_gsub_to_font(fontfile) font = merger.merge(regular_sources) first_font = source_fonts[0] if first_font != merge_target: for name_record in font['name'].names: name = unicode(name_record.string, 'UTF-16BE') name = name.replace(make_font_name(first_font), make_font_name(merge_target)) name = name.replace(make_puncless_font_name(first_font), make_puncless_font_name(merge_target)) name_record.string = name.encode('UTF-16BE') font.save(make_font_file_name( merge_target, weight, directory='combined/unhinted')) if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/nototools/missing_coverage.py000077500000000000000000000042071316231664500270300ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2016 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Display characters that are missing coverage. Based on unicode 9 and the _OMITTED ranges in cmap_block_coverage.py.""" import argparse from nototools import cmap_block_coverage from nototools import cmap_data from nototools import tool_utils from nototools import unicode_data def _covered_cps(cmap_file): all_cps = set() tree = cmap_data.read_cmap_data_file(cmap_file) for rowdata in tree.table.rows: if rowdata.script == 'EXCL': continue cps = tool_utils.parse_int_ranges(rowdata.ranges) all_cps |= cps return all_cps def show_cps_by_block(cps): print '%d missing codepoints' % len(cps) block = None for cp in sorted(cps): new_block = unicode_data.block(cp) if new_block != block: print '# %s' % new_block block = new_block print '%5s %s' % ('%04x' % cp, unicode_data.name(cp)) def display_missing(cmap_file): print 'Checking data in %s' % cmap_file filename = tool_utils.resolve_path(cmap_file) cps = _covered_cps(filename) defined_cps = unicode_data.defined_characters(version=9.0) omitted = cmap_block_coverage._OMITTED expected_cps = defined_cps - omitted missing_cps = expected_cps - cps show_cps_by_block(missing_cps) def main(): default_cmap_name = 'noto_cmap_phase3.xml' parser = argparse.ArgumentParser() parser.add_argument( '-f', '--filename', help='cmap data file (default %s)' % default_cmap_name, default=default_cmap_name, metavar='file') args = parser.parse_args() display_missing(args.filename) if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/nototools/mti_cmap_data.py000077500000000000000000000204011316231664500262600ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2016 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Extract cmap data from mti phase 3 spreadsheet.""" import argparse from os import path import sys from nototools import cmap_data from nototools import tool_utils from nototools import unicode_data # exceptions for script codes that are not actual script codes, but # our own custom keys. _SCRIPT_KEY_NAMES = [ ('SYM2', 'Symbols2') ] def get_script_for_name(script_name): starred = False added = False if script_name[-1] == '*': starred = True script_name = script_name[:-1] added = True if script_name in ['LGC', 'MONO', 'MUSIC', 'SYM2']: return script_name, starred for k, name in _SCRIPT_KEY_NAMES: if script_name == name: return k, starred code = unicode_data.script_code(script_name) if code == 'Zzzz': raise ValueError('cannot identify script for "%s"' % script_name) return code, starred def get_script_to_cmaps(csvdata): # Roll our own parse, the data is simple... well, mostly. # Google sheets inconsistently puts ^Z in first empty cell in a column. # Asterisks mark codepoints that are 'ok for fallback', an asterisk on # the header means the font has been checked for fallback. It is # illegal to mark codepoints as ok for fallback if the header is not # so marked, but ok to mark the header as checked with no codepoints # ok for fallback. # Plus ('+') marks additions by MTI above what we'd requested because # they've found a requirement. We flag these and add them to our # requirements. We're not set up to preserve these and changing that # would be difficult at this point, so we just note the addition. """This returns a map from 'script' to a tuple of cmap, xcmap where xcmap is None if the header has not been checked, and contains the marked codepoints otherwise (and might be empty).""" header = None data = None xdata = None for n, r in enumerate(csvdata.splitlines()): r = r.strip() if not r: continue rowdata = r.split(',') if not header: header, starred = zip( *[get_script_for_name(name) for name in rowdata]) ncols = len(header) data = [set() for _ in range(ncols)] xdata = [(set() if star else None) for star in starred] continue if len(rowdata) != ncols: raise ValueError('row %d had %d cols but expected %d:\n"%s"' % ( n, len(rowdata), ncols, r)) for i, v in enumerate(rowdata): v = v.strip(' \n\t') if not v or v == u'\u001a': continue try: if v[-1] == '*': xdata[i].add(int(v[:-1], 16)) elif v[-1] == '+': print '> %s added %s' % (header[i], v[:-1]) data[i].add(int(v[:-1], 16)) else: data[i].add(int(v, 16)) except: raise ValueError('error in col %d of row %d: "%s"' % ( i, n, v)) return { script: (cmap, xcmap) for script, cmap, xcmap in zip(header, data, xdata) } def cmap_data_from_csv( csvdata, scripts=None, exclude_scripts=None, infile=None): args = [('infile', infile)] if infile else None metadata = cmap_data.create_metadata('mti_cmap_data', args) script_to_cmaps = get_script_to_cmaps(csvdata) if scripts or exclude_scripts: script_list = script_to_cmap.keys() for script in script_list: if scripts and script not in scripts: del script_to_cmaps[script] elif exclude_scripts and script in exclude_scripts: del script_to_cmaps[script] tabledata = cmap_data.create_table_from_map(script_to_cmaps) return cmap_data.CmapData(metadata, tabledata) def cmap_data_from_csv_file( csvfile, scripts=None, exclude_scripts=None): with open(csvfile, 'r') as f: csvdata = f.read() return cmap_data_from_csv(csvdata, scripts, exclude_scripts, csvfile) def csv_to_xml(csv_file, xml_file, scripts, exclude_scripts): cmapdata = cmap_data_from_csv_file(csv_file, scripts, exclude_scripts) if xml_file: print >> sys.stderr, 'writing %s' % xml_file cmap_data.write_cmap_data_file(cmapdata, xml_file, pretty=True) else: print cmap_data.write_cmap_data(cmapdata, pretty=True) def _script_to_name(script): for k, name in _SCRIPT_KEY_NAMES: if script == k: return name try: return unicode_data.human_readable_script_name(script) except KeyError: return script def csv_from_cmap_data(data, scripts, exclude_scripts): script_to_rowdata = cmap_data.create_map_from_table(data.table) cols = [] max_lines = 0 num_cells = 0 for script in sorted( script_to_rowdata, key=lambda s: _script_to_name(s).lower()): if scripts and script not in scripts: continue if exclude_scripts and script in exclude_scripts: continue rd = script_to_rowdata[script] star = int(getattr(rd, 'xcount', -1)) != -1 col = [ '"%s%s"' % (_script_to_name(script), '*' if star else '') ] cps = tool_utils.parse_int_ranges(rd.ranges) xranges = getattr(rd, 'xranges', None) if xranges != None: xcps = frozenset(tool_utils.parse_int_ranges(xranges)) cps |= xcps else: xcps = frozenset() num_cells += len(cps) col.extend( '%04X%s' % (cp, '*' if cp in xcps else '') for cp in sorted(cps)) cols.append(col) max_lines = max(max_lines, len(col)) num_cols = len(cols) num_cells += num_cols # headers are not empty all_cells = num_cols * max_lines fmt = 'Columns: %d\nRows: %d\nNon-empty cells: %d\nCells: %d' print >> sys.stderr, fmt % (num_cols, max_lines, num_cells, all_cells) cmap_lines = [] cmap_lines.append(','.join(col[0] for col in cols)) for i in range(1, max_lines): cmap_lines.append(','.join(col[i] if i < len(col) else '' for col in cols)) return '\n'.join(cmap_lines) def xml_to_csv(xml_file, csv_file, scripts, exclude_scripts): data = cmap_data.read_cmap_data_file(xml_file) csv_data = csv_from_cmap_data(data, scripts, exclude_scripts) if csv_file: with open(csv_file, 'w') as f: f.write(csv_data) else: print csv_data def _check_scripts(scripts): """Return True if all scripts are known (pseudo) codes.""" have_unknown = False if scripts: all_scripts = unicode_data.all_scripts() all_scripts = all_scripts | set( ['CJK', 'EXCL', 'LGC', 'MONO', 'MUSIC', 'SYM2', 'Zsye']) for s in scripts: if s not in all_scripts: print >> sys.stderr, 'unknown script:', s have_unknown = True return not have_unknown def main(): parser = argparse.ArgumentParser() parser.add_argument( '-i', '--infile', help='input file name', metavar='fname') parser.add_argument( '-o', '--outfile', help='write to output file, otherwise to stdout, ' 'provide file name or will default to one based on infile', metavar='fname', nargs='?', const='-default-') parser.add_argument( '-op', '--operation', help='read csv, or write csv', metavar='op', choices=['read', 'write'], default='read') parser.add_argument( '-s', '--scripts', help='limit to these scripts', metavar='script', nargs='*') parser.add_argument( '-xs', '--exclude_scripts', help='omit these scripts', metavar='script', nargs='*') args = parser.parse_args() if not _check_scripts(args.scripts): print >> sys.stderr, 'some scripts failed' return if not _check_scripts(args.exclude_scripts): print >> sys.stderr, 'some exclude scripts failed' return if args.outfile == '-default-': args.outfile = path.splitext(path.basename(args.infile))[0] args.outfile += '.xml' if args.operation == 'read' else '.csv' if args.operation == 'read': csv_to_xml(args.infile, args.outfile, args.scripts, args.exclude_scripts) else: xml_to_csv(args.infile, args.outfile, args.scripts, args.exclude_scripts) if __name__ == "__main__": main() nototools-2017-09-25-tooling-for-phase3-update/nototools/noto_cmap_reqs.py000077500000000000000000002726311316231664500265250ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2016 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Build phase 3 cmap requirements data. This starts with default assignments based on unicode property script and script_extensions data, then applies a sequences of operations to generate an allocation of cmaps to 'scripts' i.e. font families. The operations include assigning/removing common characters in blocks, or entire blocks, to/from scripts, assigning additional punctuation (based on reading the Unicode 8 standard and various L2 docs), and so on. This uses pseudo script codes to represent the font families, but this needs to be changed to some better representation. for now, these are: CJK: for all CJK scripts EXCL: for excluded blocks (PUA, surrogates) MONO: for blocks going into a monospace font MUSIC: for blocks going into a music font SYM2: for blocks going into a 'symbols 2' font with fewer masters Zmth: for blocks going into a 'math' font ZSym: for blocks going into the main symbols font (6 masters) ZSye: for blocks going into the color emoji font """ import argparse import collections import sys from nototools import cldr_data from nototools import cmap_data from nototools import compare_cmap_data from nototools import collect_cldr_punct from nototools import noto_data from nototools import opentype_data from nototools import tool_utils from nototools import unicode_data _MERGED_SCRIPTS_BY_TARGET = { 'CJK': 'Bopo Hang Hani Hans Hant Hira Jpan Kana Kore'.split(), 'LGC': 'Latn Grek Cyrl'.split(), } def _invert_script_to_chars(script_to_chars): """Convert script_to_chars to char_to_scripts and return.""" char_to_scripts = collections.defaultdict(set) for script, cps in script_to_chars.iteritems(): for cp in cps: char_to_scripts[cp].add(script) return char_to_scripts class CmapOps(object): def __init__(self, script_to_chars=None, log_events=False, log_details=False, undefined_exceptions = None): if script_to_chars == None: self._script_to_chars = {} else: self._script_to_chars = { script: set(script_to_chars[script]) for script in script_to_chars } self._log_events = log_events self._log_details = log_details self._suppressed_blocks = { 'Hangul Jamo', 'Kangxi Radicals', 'Kanbun', 'CJK Symbols and Punctuation', 'Hangul Compatibility Jamo', 'CJK Strokes', 'Enclosed CJK Letters and Months', 'CJK Compatibility', 'CJK Compatibility Ideographs', 'CJK Compatibility Ideographs Supplement', 'CJK Unified Ideographs Extension A', 'CJK Unified Ideographs Extension B', 'CJK Unified Ideographs Extension C', 'CJK Unified Ideographs Extension D', 'CJK Unified Ideographs Extension E', 'CJK Unified Ideographs', 'CJK Radicals Supplement', 'Hangul Jamo Extended-A', 'Hangul Jamo Extended-B', 'Hangul Syllables', } self._suppressed_scripts = { 'EXCL', } self._block = None self._undefined_exceptions = undefined_exceptions or set() def _report(self, text): if self._log_events: print text def _finish_block(self): if self._block and self._log_events and not self._log_details: for text in sorted(self._block_count): print '%s: %s' % ( text, tool_utils.write_int_ranges( self._block_count[text])) def _report_cp(self, cp, text, script): if not self._log_events: return cp_block = unicode_data.block(cp) if cp_block != self._block: self._finish_block() self._block = cp_block print '# block: ' + self._block self._block_count = collections.defaultdict(set) if self._log_details: if not ( self._block in self._suppressed_blocks or script in self._suppressed_scripts): print self._cp_info(cp), text else: self._block_count[text].add(cp) def _error(self, text): print >> sys.stderr, text raise ValueError('failed') def _verify_script_exists(self, script): if script not in self._script_to_chars: self._error('script %s does not exist' % script) def _verify_script_does_not_exist(self, script): if script in self._script_to_chars: self._error('script %s already exists' % script) def _verify_scripts_exist(self, scripts): for script in scripts: self._verify_script_exists(script) return sorted(scripts) def _verify_script_empty(self, script): if len(self._script_to_chars[script]): self._error('script %s is not empty, cannot delete' % script) def _cp_info(self, cp): return '%04X (%s)' % (cp, unicode_data.name(cp, '')) def _script_ok_add(self, cp, script): if unicode_data.is_defined(cp) or cp in self._undefined_exceptions: self._script_cp_ok_add(cp, script) def _script_cp_ok_add(self, cp, script): if cp not in self._script_to_chars[script]: self._script_to_chars[script].add(cp) self._report_cp(cp, 'added to ' + script, script) def _script_ok_remove(self, cp, script): if unicode_data.is_defined(cp): self._script_cp_ok_remove(cp, script) def _script_cp_ok_remove(self, cp, script): if cp in self._script_to_chars[script]: self._report_cp(cp, 'removed from ' + script, script) self._script_to_chars[script].remove(cp) def _finish_phase(self): self._finish_block() self._block = None def phase(self, phase_name): self._finish_phase() self._report('\n# phase: ' + phase_name) def log(self, log_msg): self._report('# log: ' + log_msg) def ensure_script(self, script): if script in self._script_to_chars: return self.create_script(script) def create_script(self, script): self._verify_script_does_not_exist(script) self._script_to_chars[script] = set() self._report('# create script: ' + script) def delete_script(self, script): self._verify_script_exists(script) self._verify_script_empty(script) del self._script_to_chars[script] self._report('# delete script: ' + script) def add(self, cp, script): self._verify_script_exists(script) self._script_ok_add(cp, script) def add_all(self, cps, script): self._verify_script_exists(script) for cp in sorted(cps): self._script_ok_add(cp, script) def add_all_to_all(self, cps, scripts): scripts = self._verify_scripts_exist(scripts) for cp in sorted(cps): if unicode_data.is_defined(cp): for script in scripts: self._script_cp_ok_add(cp, script) def remove(self, cp, script): self._verify_script_exists(script) self._script_ok_remove(cp, script) def remove_all(self, cps, script): self._verify_script_exists(script) for cp in sorted(cps): self._script_ok_remove(cp, script) def remove_all_from_all(self, cps, scripts): scripts = self._verify_scripts_exist(scripts) for cp in sorted(cps): if unicode_data.is_defined(cp): for script in scripts: self._script_cp_ok_remove(cp, script) def remove_script_from(self, src_script, from_script): self._verify_script_exists(from_script) cps = self.script_chars(src_script) for cp in cps: self._script_ok_remove(cp, from_script) def move_to_from(self, cp, to_script, from_script): self._verify_script_exists(from_script) self._verify_script_exists(to_script) self._script_ok_add(cp, to_script) self._script_ok_remove(cp, from_script) def move_all_to_from(self, cps, to_script, from_script): """Combines add and remove.""" self._verify_script_exists(from_script) self._verify_script_exists(to_script) sorted_cps = sorted(cps) for cp in sorted_cps: self._script_ok_add(cp, to_script) for cp in sorted_cps: self._script_ok_remove(cp, from_script) def all_scripts(self): return self._script_to_chars.keys() def create_char_to_scripts(self): return _invert_script_to_chars(self._script_to_chars) def script_chars(self, script): self._verify_script_exists(script) return sorted(self._script_to_chars[script]) def create_script_to_chars(self): return { script: set(self._script_to_chars[script]) for script in self._script_to_chars } def finish(self): self._finish_phase() def _build_block_to_primary_script(): """Create a map from block to the primary script in a block. If there are no characters defined in the block, it gets the script 'EXCL', for 'exclude.' We don't define characters in this block. If the most common script accounts for less than 80% of the defined characters in the block, we use the primary from assigned_primaries, which might be None. It's an error if there's no default primary and it's not listed in assigned_primaries.""" assigned_primaries = { 'Basic Latin': 'Latn', 'Latin-1 Supplement': 'Latn', 'Vedic Extensions': 'Deva', 'Superscripts and Subscripts': 'Latn', 'Number Forms': 'Zyyy', 'CJK Symbols and Punctuation': 'CJK', 'Enclosed CJK Letters and Months': 'CJK', 'CJK Compatibility': 'CJK', 'Alphabetic Presentation Forms': None, 'Halfwidth and Fullwidth Forms': 'CJK', 'Kana Supplement': 'CJK', } inherited_primaries = { 'Combining Diacritical Marks': 'Latn', 'Combining Diacritical Marks Extended': 'Latn', 'Combining Diacritical Marks Supplement': 'Latn', 'Combining Diacritical Marks for Symbols': 'Zyyy', 'Variation Selectors': 'EXCL', 'Combining Half Marks': 'Latn', 'Variation Selectors Supplement': 'EXCL', } block_to_script = {} for block in unicode_data.block_names(): start, finish = unicode_data.block_range(block) script_counts = collections.defaultdict(int) num = 0 for cp in range(start, finish + 1): script = unicode_data.script(cp) if script != 'Zzzz': script_counts[script] += 1 num += 1 max_script = None max_script_count = 0 for script, count in script_counts.iteritems(): if count > max_script_count: max_script = script max_script_count = count if num == 0: max_script = 'EXCL' # exclude elif float(max_script_count) / num < 0.8: info = sorted(script_counts.iteritems(), key=lambda t: (-t[1], t[0])) block_info = '%s %s' % (block, ', '.join('%s/%d' % t for t in info)) if block in assigned_primaries: max_script = assigned_primaries[block] # print 'assigning primary', block_info, '->', max_script else: print >> sys.stderr, 'ERROR: no primary', block, block_info max_script = None elif max_script == 'Zinh': if block in inherited_primaries: max_script = inherited_primaries[block] else: print >> sys.stderr, 'ERROR: no inherited primary', block, block_info max_script = None block_to_script[block] = max_script return block_to_script _block_to_primary_script = None def _primary_script_for_block(block): """Return the primary script for the block, or None if no primary script.""" global _block_to_primary_script if not _block_to_primary_script: _block_to_primary_script = _build_block_to_primary_script() return _block_to_primary_script[block] def _remove_unicode_assignments(cmap_ops): """The starting point is based on the script and script extensions data from Unicode. Sometimes the assignments seem premature.""" cmap_ops.phase('remove unicode assignments') # Jelle says A8F1 makes no sense for Bengali since other characters needed # for cantillation are not defined. Unicode script extensions assign it to # Deva and Beng, leave it for Deva. cmap_ops.remove(0xa8f1, 'Beng') def _unassign_inherited_and_common_with_extensions(cmap_ops): """Inherited and common characters with an extension that is neither of these get removed from inherited/common scripts.""" def remove_cps_with_extensions(script): for cp in cmap_ops.script_chars(script): for s in unicode_data.script_extensions(cp): if s != 'Zinh' and s != 'Zyyy': cmap_ops.remove(cp, script) break cmap_ops.phase('unassign inherited with extensions') remove_cps_with_extensions('Zinh') cmap_ops.phase('unassign common with extensions') remove_cps_with_extensions('Zyyy') def _reassign_inherited(cmap_ops): """Assign all 'Zinh' chars to the primary script in their block. Fail if there's no primary script. 'Zinh' is removed from script_to_chars.""" cmap_ops.phase('reassign inherited') for cp in cmap_ops.script_chars('Zinh'): primary_script = _primary_script_for_block(unicode_data.block(cp)) if not primary_script: print >> sys.stderr, 'Error: no primary script for %04X' % cp elif primary_script == 'Zinh': print >> sys.stderr, 'Error: primary script for %04X is Zinh' % cp else: cmap_ops.ensure_script(primary_script) cmap_ops.add(cp, primary_script) cmap_ops.remove(cp, 'Zinh') cmap_ops.delete_script('Zinh') def _reassign_common(cmap_ops): """Move 'Zyyy' chars in blocks where 'Zyyy' is not primary to the primary script.""" cmap_ops.phase('reassign common') for cp in cmap_ops.script_chars('Zyyy'): primary_script = _primary_script_for_block(unicode_data.block(cp)) if primary_script != None and primary_script != 'Zyyy': cmap_ops.ensure_script(primary_script) cmap_ops.add(cp, primary_script) cmap_ops.remove(cp, 'Zyyy') def _unassign_latin(cmap_ops): """Remove some characters that extensions assigns to Latin but which we don't need there.""" unwanted_latn = tool_utils.parse_int_ranges(""" 0951 0952 # devanagari marks 10FB # Georgian paragraph separator """) cmap_ops.phase('unassign latin') cmap_ops.remove_all(unwanted_latn, 'Latn') def _assign_cldr_punct(cmap_ops): """Assigns cldr punctuation to scripts.""" for script, punct in collect_cldr_punct.script_to_punct().iteritems(): if script != 'CURRENCY': cmap_ops.phase('assign cldr punct for ' + script) cmap_ops.ensure_script(script) for cp in punct: cmap_ops.add(ord(cp), script) def _reassign_scripts(cmap_ops, scripts, new_script): """Reassign all chars in scripts to new_script.""" assert new_script not in scripts cmap_ops.phase('reassign scripts') cmap_ops.ensure_script(new_script) for script in sorted(scripts): cmap_ops.phase('reassign %s to %s' % (script, new_script)) for cp in cmap_ops.script_chars(script): cmap_ops.remove(cp, script) cmap_ops.add(cp, new_script) cmap_ops.delete_script(script) def _reassign_merged_scripts(cmap_ops): """Reassign merged scripts.""" for target, scripts in sorted(_MERGED_SCRIPTS_BY_TARGET.iteritems()): cmap_ops.phase('reassign to ' + target) _reassign_scripts(cmap_ops, scripts, target) def _reassign_common_by_block(cmap_ops): """Reassign common chars to new scripts based on block.""" block_assignments = { 'Spacing Modifier Letters': 'LGC', 'General Punctuation': 'LGC', 'Currency Symbols': 'LGC', 'Combining Diacritical Marks for Symbols': 'Zsym', 'Letterlike Symbols': 'LGC', 'Number Forms': 'Zsym', 'Arrows': 'Zmth', 'Mathematical Operators': 'Zmth', 'Miscellaneous Technical': 'Zsym', 'Control Pictures': 'SYM2', 'Optical Character Recognition': 'SYM2', 'Enclosed Alphanumerics': 'Zsym', 'Box Drawing': 'MONO', 'Block Elements': 'MONO', 'Geometric Shapes': 'SYM2', # change 'Miscellaneous Symbols': 'Zsym', 'Dingbats': 'SYM2', 'Miscellaneous Mathematical Symbols-A': 'Zmth', 'Supplemental Arrows-A': 'Zmth', 'Supplemental Arrows-B': 'Zmth', 'Miscellaneous Mathematical Symbols-B': 'Zmth', 'Supplemental Mathematical Operators': 'Zmth', 'Miscellaneous Symbols and Arrows': 'SYM2', 'Supplemental Punctuation': 'LGC', 'Ideographic Description Characters': 'CJK', 'Yijing Hexagram Symbols': 'SYM2', 'Modifier Tone Letters': 'LGC', 'Vertical Forms': 'CJK', 'CJK Compatibility Forms': 'CJK', 'Small Form Variants': 'CJK', 'Specials': 'SYM2', 'Ancient Symbols': 'SYM2', 'Phaistos Disc': 'SYM2', 'Byzantine Musical Symbols': 'MUSIC', 'Musical Symbols': 'MUSIC', 'Tai Xuan Jing Symbols': 'SYM2', 'Mathematical Alphanumeric Symbols': 'Zmth', 'Mahjong Tiles': 'SYM2', 'Domino Tiles': 'SYM2', 'Playing Cards': 'SYM2', 'Enclosed Alphanumeric Supplement': 'Zsym', 'Enclosed Ideographic Supplement': 'CJK', 'Miscellaneous Symbols and Pictographs': 'SYM2', 'Emoticons': 'SYM2', 'Ornamental Dingbats': 'SYM2', 'Transport and Map Symbols': 'SYM2', 'Alchemical Symbols': 'Zsym', 'Geometric Shapes Extended': 'SYM2', 'Supplemental Arrows-C': 'SYM2', 'Supplemental Symbols and Pictographs': 'SYM2', 'Tags': 'EXCL', } cmap_ops.phase('reassign common by block') used_assignments = set() last_block = None for cp in cmap_ops.script_chars('Zyyy'): block = unicode_data.block(cp) if block != last_block: last_block = block if block not in block_assignments: print >> sys.stderr, 'ERROR: no assignment for block %s' % block new_script = None else: new_script = block_assignments[block] cmap_ops.ensure_script(new_script) used_assignments.add(block) if new_script: cmap_ops.remove(cp, 'Zyyy') cmap_ops.add(cp, new_script) else: print >> sys.stderr, ' could not assign %04x %s' % ( cp, unicode_data.name(cp)) if len(used_assignments) != len(block_assignments): print >> sys.stderr, 'ERROR: some block assignments unused' unused = set([block for block in block_assignments if block not in used_assignments]) for block in unicode_data.block_names(): if block in unused: print >> sys.stderr, ' %s' % block unused.remove(block) if unused: print >> sys.stderr, 'ERROR: unknown block names' for block in sorted(unused): print >> sys.stderr, ' %s' % block cmap_ops.delete_script('Zyyy') def _block_cps(block): start, end = unicode_data.block_range(block) return frozenset([ cp for cp in range(start, end + 1) if unicode_data.is_defined(cp)]) def _reassign_by_block(cmap_ops): """Reassign all chars in select blocks to designated scripts.""" # block, from, to. from '*' means from all scripts. block_assignments = [ ('Number Forms', 'LGC', 'Zsym'), ('Halfwidth and Fullwidth Forms', 'LGC', 'CJK'), ('Aegean Numbers', '*', 'Linb'), ('Ancient Greek Numbers', '*', 'SYM2'), ('Ancient Symbols', 'LGC', 'SYM2'), ('Braille Patterns', 'Brai', 'SYM2'), ('Coptic Epact Numbers', '*', 'SYM2'), ('Rumi Numeral Symbols', '*', 'SYM2'), ('Ancient Greek Musical Notation', '*', 'MUSIC'), ('Counting Rod Numerals', 'CJK', 'SYM2'), ('Arabic Mathematical Alphabetic Symbols', '*', 'Zmth'), ('High Surrogates', '*', 'EXCL'), ('High Private Use Surrogates', '*', 'EXCL'), ('Low Surrogates', '*', 'EXCL'), ('Private Use Area', '*', 'EXCL'), ('Variation Selectors', '*', 'EXCL'), ('Tags', '*', 'EXCL'), ('Variation Selectors Supplement', '*', 'EXCL'), ('Supplementary Private Use Area-A', '*', 'EXCL'), ('Supplementary Private Use Area-B', '*', 'EXCL'), ] block_assignments = sorted( block_assignments, key=lambda k: unicode_data.block_range(k[0])[0]) cmap_ops.phase('reassign by block') char_to_scripts = cmap_ops.create_char_to_scripts() for block, from_scripts, to_script in block_assignments: start, finish = unicode_data.block_range(block) if from_scripts == '*': all_scripts = True else: all_scripts = False from_scripts = from_scripts.split() for cp in range(start, finish + 1): if not unicode_data.is_defined(cp): continue if cp not in char_to_scripts and to_script != 'EXCL': print >> sys.stderr, 'reassign missing %04X %s' % ( cp, unicode_data.name(cp, '')) continue if all_scripts: from_list = char_to_scripts[cp] else: from_list = from_scripts for from_script in from_list: if from_script == to_script: continue if not all_scripts and (from_script not in from_scripts): continue cmap_ops.remove(cp, from_script) cmap_ops.add(cp, to_script) def _remove_empty(cmap_ops): """Remove any empty scripts (Braille should be one).""" cmap_ops.phase('remove empty') script_to_chars = cmap_ops.create_script_to_chars() for script, chars in script_to_chars.iteritems(): if not chars: cmap_ops.delete_script(script) def _reassign_symbols(cmap_ops): """Some symbols belong together but get split up when we assign by block.""" cmap_ops.phase('reassign symbols') white_arrow_parts = tool_utils.parse_int_ranges( '2b00-2b04 1f8ac-1f8ad') cmap_ops.move_all_to_from(white_arrow_parts, 'Zsym', 'SYM2') tv_symbols = tool_utils.parse_int_ranges('23fb-23fe 2b58') cmap_ops.move_all_to_from(tv_symbols, 'SYM2', 'Zsym') # we want a copy in SYM2 for sizes, assume MATH will do its own thing # in context. math_circles = tool_utils.parse_int_ranges('2219 2299 22c5') cmap_ops.add_all(math_circles, 'SYM2') # keyboard symbols, user interface symbols, media play symbols misc_tech = tool_utils.parse_int_ranges( '2318 231a-231b 2324-2328 232b 237d 23ce-23cf 23e9-23fa 23fb-23fe') cmap_ops.move_all_to_from(misc_tech, 'SYM2', 'Zsym') # Split Miscellaneous Symbols into SYM2 and Zsym by related symbols. # mostly this is based on whether the group of symbols seems to have a use # in running text or is based on some alphabetic character. to_sym2 = tool_utils.parse_int_ranges( """2600-2609 # weather 260e-2612 # ballot box 2614 # umbrella with rain 2615 # hot beverage 2616-2617 # shogi pieces 261a-261f # pointing hands 2620-2623 # caution signs 2626-262f 2638 # religious/political 2630-2637 # chinese trigrams 2668 # hot springs 267f # wheelchair symbol 2686-2689 # go markers 268a-268f # yijing monograms/diagrms 269e-269f # closed captioning 26a1 # high voltage 26aa-26ac # circles 26bd-26be # sports 26bf # squared key 26c0-26c3 # checkers/draughts 26c4-26c8 # weather 26c9-26ca # more shogi 26cb # game symbol """) to_zsym = tool_utils.parse_int_ranges( """260a-260d # alchemical symbols 2613 # saltire 2618-2619 # shamrock, floral bullet 2624-2625 # medical, ankh 2639-263b # smiley faces 263c-2647 # astrological 2648-2653 # western zodiac 2654-265f # western chess 2660-2667 # card suits 2669-266f # music symbols 2670-2671 # syriac cross 2672-267d # recycling 267e # paper 2680-2685 # die faces 2690-269b # dictionary and map symbols, go with Zsym since dictionary use 269c # fleur-de-lis 269d # outlined white star, a symbol of morocco 26a0 # warning sign (exclamation point inside rounded triangle) 26a2-26a9 # gender 26ad-26b1 # genealogical 26b2 # gender 26b3-26bc # astrological 26cc-26cd # traffic signs 26ce # zodiac 26cf-26e1 # traffic signs again 26e2 # astronomical 26e3 # map symbol 26e4-26e7 # pentagrams 26e8-26ff # more map symbols """) # sanity check duplicate_cps = to_sym2 & to_zsym if duplicate_cps: raise Exception( '%d cps in both from and to symbols: %s' % ( len(duplicate_cps), tool_utils.write_int_ranges(duplicate_cps))) missing_cps = set(range(0x2600, 0x2700)) missing_cps -= to_zsym missing_cps -= to_sym2 if missing_cps: raise Exception( '%d cps from Misc. Symbols in neither from nor to symbols: %s' % ( len(missing_cps), tool_utils.write_int_ranges(missing_cps))) cmap_ops.move_all_to_from(to_sym2, 'SYM2', 'Zsym') cmap_ops.move_all_to_from(to_zsym, 'Zsym', 'SYM2') # neutral face should go with smiley faces, which are in Zsym cmap_ops.move_to_from(0x1f610, 'Zsym', 'SYM2') # more math symbols that are geometric and might want dual treatment more_math = tool_utils.parse_int_ranges('2981 29bf 29eb') cmap_ops.add_all(more_math, 'SYM2') # let's put white arrows into Sym2 white_arrows = tool_utils.parse_int_ranges( """21e6 21e8 21e7 21e9 21f3 2b04 2b00-2b03 1f8ac 1f8ad 21ea-21f0 """) cmap_ops.move_all_to_from(white_arrows, 'SYM2', 'Zsym') # circled digits should all go into Symbols circled_digits = tool_utils.parse_int_ranges( """24ea # circled digit 0 2460-2473 # circled digit 1-9, number 10-20 24ff # negative circled digit 0 1f10c # dingbat negative circled sans-serif digit 0 2776-277f # dingbat negative circled digits 1-9, number 10 2780-2789 # dingbat circled sans-serif digits 1-9, number 10 278a-2793 # dingbat negative circled sans-serif digits 1-9, number 10 24eb-24f4 # negative circled number 11-20 1f10b # dingbat circled sans-serif digit 0 """) cmap_ops.move_all_to_from(circled_digits, 'Zsym', 'SYM2') # hourglass with flowing sand is in a block that got assigned to Zsym by # default. Looking at it and its neighbors, it seems really odd that these # are with 'technical symbols' emoji_symbols = tool_utils.parse_int_ranges('23f0-23f3') cmap_ops.add_all(emoji_symbols, 'SYM2') cmap_ops.remove_all(emoji_symbols, 'Zsym') # neutral face should go with white smiling/frowning face, which are in Zsym cmap_ops.add(0x1f610, 'Zsym') cmap_ops.remove(0x1f610, 'SYM2') # Zsym has combining marks, so add dotted circle. # Combining enclosing marks in Symbols need latin to combine with, so add # letters and digits, also dotted circle if not there already. alphanum = tool_utils.parse_int_ranges('30-39 41-5a 61-7a 25cc') cmap_ops.add_all(alphanum, 'Zsym') def _reassign_emoji(cmap_ops): """Reassign all emoji to emoji-color. Then assign all emoji with default text presentation, plus those with variation selectors, plus select others, to SYM2.""" cmap_ops.phase('reassign emoji') color_only_emoji = set(unicode_data.get_presentation_default_emoji()) color_only_emoji.remove(0x1f004) # mahjong tile red dragon color_only_emoji.remove(0x1f0cf) # playing card black joker # remove emoji with a variation selector that allows a text presentation # include proposed variants from 2016/08/23 color_only_emoji -= unicode_data.get_unicode_emoji_variants( 'proposed_extra') all_emoji = unicode_data.get_emoji() cmap_ops.create_script('Zsye') cmap_ops.add_all(all_emoji, 'Zsye') cmap_ops.remove_all_from_all(color_only_emoji, ['Zsym', 'SYM2']) def _assign_nastaliq(cmap_ops): """Create Aran script based on requirements doc.""" # Range spec matches "Noto Nastaliq requirements" doc, Tier 1. urdu_chars = tool_utils.parse_int_ranges(""" 0600-0604 060b-0614 061b 061c 061e-061f 0620 0621-063a 0640-0659 065e-066d 0670-0673 0679 067a-067b 067c 067d 067e 067f-0680 0681 0683-0684 0685-0686 0687 0688-0689 068a 068b 068c-068d 068e 068f 0691 0693 0696 0698 0699 069a 069e 06a6 06a9 06ab 06af-06b0 06b1 06b3 06b7 06ba 06bb 06bc 06be 06c0-06c4 06cc-06cd 06d0 06d2-06d5 06dd-06de 06e9 06ee-06ef 06f0-06f9 06ff 0759 075c 0763 0767-0769 076b-077d 08ff fbb2-fbc1 fd3e-fd3f fdf2 fdfa-fdfd""") cmap_ops.phase('assign nastaliq') cmap_ops.create_script('Aran') cmap_ops.add_all(urdu_chars, 'Aran') # These additional arabic were in phase 2 scripts. additional_arabic = tool_utils.parse_int_ranges(""" 0609 # ARABIC-INDIC PER MILLE SIGN 060a # ARABIC-INDIC PER TEN THOUSAND SIGN 063b # ARABIC LETTER KEHEH WITH TWO DOTS ABOVE 063c # ARABIC LETTER KEHEH WITH THREE DOTS BELOW 063d # ARABIC LETTER FARSI YEH WITH INVERTED V 063e # ARABIC LETTER FARSI YEH WITH TWO DOTS ABOVE 063f # ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE 065d # ARABIC REVERSED DAMMA 066e # ARABIC LETTER DOTLESS BEH 066f # ARABIC LETTER DOTLESS QAF 06a1 # ARABIC LETTER DOTLESS FEH 06a4 # ARABIC LETTER VEH 06e0 # ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO 06e1 # ARABIC SMALL HIGH DOTLESS HEAD OF KHAH 076a # ARABIC LETTER LAM WITH BAR """) cmap_ops.add_all(additional_arabic, 'Aran') # noto-fonts#597 requests exclamation point # noto-fonts#449 requests european digits european_digits = tool_utils.parse_int_ranges('0021 0030-0039') cmap_ops.add_all(european_digits, 'Aran') # noto-fonts#368 requests these characters extra_arabic_1 = tool_utils.parse_int_ranges('067b 0684 068a 06b3 0759 0768') cmap_ops.add_all(extra_arabic_1, 'Aran') # noto-fonts#606 requests a few additional characters extra_arabic_2 = tool_utils.parse_int_ranges('06c6 06c7 06ca 06d5') cmap_ops.add_all(extra_arabic_2, 'Aran') def _assign_complex_script_extra(cmap_ops): """Assigns Harfbuzz and USE characters to the corresponding scripts.""" # Based on harfbuzz hb-ot-shape-complex-private # Removes Hang, Jungshik reports Behdad says it's not needed for Hang. hb_complex_scripts = """ Arab Aran Bali Batk Beng Brah Bugi Buhd Cakm Cham Deva Dupl Egyp Gran Gujr Guru Hano Hebr Hmng Java Kali Khar Khmr Khoj Knda Kthi Lana Laoo Lepc Limb Mahj Mand Mani Mlym Modi Mong Mtei Mymr Nkoo Orya Phag Phlp Rjng Saur Shrd Sidd Sind Sinh Sund Sylo Syrc Tagb Takr Tale Talu Taml Tavt Telu Tfng Tglg Thai Tibt Tirh """.split() hb_extra = tool_utils.parse_int_ranges(""" 200c # ZWNJ 200d # ZWJ 25cc # dotted circle""") # these scripts are based on github noto-fonts#576 use_complex_scripts = """ Bali Batk Brah Bugi Buhd Hano Kthi Khar Lepc Limb Mtei Rjng Saur Sund Sylo Tglg Tagb Tale Tavt """.split() # these characters are based on # https://www.microsoft.com/typography/OpenTypeDev/USE/intro.htm use_extra = tool_utils.parse_int_ranges(""" 200b # ZWS 200c # ZWNJ 200d # ZWJ 25cc # dotted circle 00a0 # NBS 00d7 # multiplication sign 2012 # figure dash 2013 # en dash 2014 # em dash 2015 # horizontal bar 2022 # bullet 25fb # white medium square 25fc # black medium square 25fd # white medium small square 25fe # black medium small square""") cmap_ops.phase('assign hb complex') cmap_ops.add_all_to_all(hb_extra, hb_complex_scripts) cmap_ops.phase('assign use complex') cmap_ops.add_all_to_all(use_extra, use_complex_scripts) def _assign_hyphens_for_autohyphenation(cmap_ops): """Assign hyphens per Roozbeh's request.""" hyphens = [ 0x002d, # hyphen-minus 0x2010 # hyphen ] # see github noto-fonts#524 # Cyrl, Grek, Latn rolled into LGC # CJK not listed, these don't hyphenate, data is in CLDR for other reasons hyphen_scripts = """ Arab Aran Armn Beng Copt Deva Ethi Geor Gujr Guru Hebr Khmr Knda LGC Mlym Orya Taml Telu Thai Tibt """.split() cmap_ops.phase('assign hyphens') cmap_ops.add_all_to_all(hyphens, hyphen_scripts) def _generate_script_extra(script_to_chars): """Generate script extra table.""" for script in sorted(noto_data.P3_EXTRA_CHARACTERS_NEEDED): block = None cps = noto_data.P3_EXTRA_CHARACTERS_NEEDED[script] chars = script_to_chars[script] if script == 'Zsym': chars.update(script_to_chars['Zmth']) chars.update(script_to_chars['SYM2']) chars.update(script_to_chars['MUSIC']) chars.update(script_to_chars['MONO']) for cp in sorted(cps): if not unicode_data.is_defined(cp): continue name = unicode_data.name(cp, '') if cp not in chars: if block == None: print "'%s': tool_utils.parse_int_ranges(\"\"\"" % script cp_block = unicode_data.block(cp) if cp_block != block: block = cp_block print ' # %s' % block print ' %04X # %s' % (cp, name) chars.add(cp) if block != None: print ' """),' # maintained using 'regen_script_required' fn _SCRIPT_REQUIRED = [ # Adlm - Adlm (Adlam) ('Adlm', # Comment """ Additional characters recommended by Monotype. """, # Data """ # Basic Latin 0021 # EXCLAMATION MARK # Arabic 061F # ARABIC QUESTION MARK # General Punctuation 204F # REVERSED SEMICOLON # Supplemental Punctuation 2E41 # REVERSED COMMA """), # Aghb - Caucasian Albanian ('Aghb', # Comment """ From core specification. """, # Data """ # Combining Diacritical Marks 0304 # COMBINING MACRON 0331 # COMBINING MACRON BELOW # Combining Half Marks FE20 # COMBINING LIGATURE LEFT HALF FE21 # COMBINING LIGATURE RIGHT HALF FE22 # COMBINING DOUBLE TILDE LEFT HALF FE23 # COMBINING DOUBLE TILDE RIGHT HALF FE24 # COMBINING MACRON LEFT HALF FE25 # COMBINING MACRON RIGHT HALF FE26 # COMBINING CONJOINING MACRON FE27 # COMBINING LIGATURE LEFT HALF BELOW FE28 # COMBINING LIGATURE RIGHT HALF BELOW FE29 # COMBINING TILDE LEFT HALF BELOW FE2A # COMBINING TILDE RIGHT HALF BELOW FE2B # COMBINING MACRON LEFT HALF BELOW FE2C # COMBINING MACRON RIGHT HALF BELOW FE2D # COMBINING CONJOINING MACRON BELOW FE2E # COMBINING CYRILLIC TITLO LEFT HALF FE2F # COMBINING CYRILLIC TITLO RIGHT HALF """), # Ahom - Ahom # Arab - Arabic ('Arab', # Comment """ According to Roozbeh (and existing fonts) the following punctuation and digits are used with and interact with Arabic characters. Hyphen and comma are to align with Aran. """, # Data """ # Basic Latin 0021 # EXCLAMATION MARK 0028 # LEFT PARENTHESIS 0029 # RIGHT PARENTHESIS 002C # COMMA 002E # FULL STOP 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 # Latin-1 Supplement 00A0 # NO-BREAK SPACE # Combining Diacritical Marks 034F # COMBINING GRAPHEME JOINER # General Punctuation 200E # LEFT-TO-RIGHT MARK 200F # RIGHT-TO-LEFT MARK 2010 # HYPHEN 2011 # NON-BREAKING HYPHEN 204F # REVERSED SEMICOLON # Supplemental Punctuation 2E41 # REVERSED COMMA """), # Aran - Aran (Nastaliq) ('Aran', # Comment """ Hyphens are required for Urdu from the Arabic Guillimets used for Persian according to Behdad Other punctuation was in phase2 fonts, so presumably from Kamal. """, # Data """ # Basic Latin 0021 # EXCLAMATION MARK 002C # COMMA 002E # FULL STOP 003A # COLON # Latin-1 Supplement 00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK # Arabic 061C # ARABIC LETTER MARK # General Punctuation 2010 # HYPHEN 2011 # NON-BREAKING HYPHEN # Arabic Presentation Forms-A FDF4 # ARABIC LIGATURE MOHAMMAD ISOLATED FORM """), # Armi - Imperial Aramaic # Armn - Armenian ('Armn', # Comment """ Characters referenced in Armenian encoding cross ref page see http://www.unicode.org/L2/L2010/10354-n3924-armeternity.pdf also see http://man7.org/linux/man-pages/man7/armscii-8.7.html also see core specification. """, # Data """ # Basic Latin 0028 # LEFT PARENTHESIS 0029 # RIGHT PARENTHESIS 002D # HYPHEN-MINUS 002E # FULL STOP # Latin-1 Supplement 00A0 # NO-BREAK SPACE 00A7 # SECTION SIGN # Spacing Modifier Letters 02BB # MODIFIER LETTER TURNED COMMA # General Punctuation 2010 # HYPHEN 2014 # EM DASH 2019 # RIGHT SINGLE QUOTATION MARK 2024 # ONE DOT LEADER # Alphabetic Presentation Forms 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 """), # Avst - Avestan ('Avst', # Comment """ From Core Specification and NamesList.txt www.unicode.org/L2/L2007/07006r-n3197r-avestan.pdf """, # Data """ # Basic Latin 002E # FULL STOP # Latin-1 Supplement 00B7 # MIDDLE DOT # General Punctuation 200C # ZERO WIDTH NON-JOINER # Supplemental Punctuation 2E30 # RING POINT 2E31 # WORD SEPARATOR MIDDLE DOT """), # Bali - Balinese # Bamu - Bamum # Bass - Bassa Vah ('Bass', # Comment """ From core specification. """, # Data """ # Basic Latin 0022 # QUOTATION MARK 002C # COMMA 002E # FULL STOP # General Punctuation 201C # LEFT DOUBLE QUOTATION MARK 201D # RIGHT DOUBLE QUOTATION MARK """), # Batk - Batak # Beng - Bengali ('Beng', #Comment """ Added by Monotype. """, # Data """ # Spacing Modifier Letters 02BC # MODIFIER LETTER APOSTROPHE """), # Bhks - Bhks (Bhaiksuki) ('Bhks', # Comment """ Reported by user on nototools#429 """, # Data """ # General Punctuation 200B # ZERO WIDTH SPACE # Geometric Shapes 25CC # DOTTED CIRCLE """), # Brah - Brahmi # Brai - Braille # Bugi - Buginese # Buhd - Buhid # CJK - (Bopo,Hang,Hani,Hans,Hant,Hira,Jpan,Kana,Kore) # Cakm - Chakma # Cans - Canadian Aboriginal ('Cans', # Comment """ From core specification and web sites. """, # Data """ # Basic Latin 0022 # QUOTATION MARK 0028 # LEFT PARENTHESIS 0029 # RIGHT PARENTHESIS 002C # COMMA 002D # HYPHEN-MINUS 002E # FULL STOP # General Punctuation 201C # LEFT DOUBLE QUOTATION MARK 201D # RIGHT DOUBLE QUOTATION MARK """), # Cari - Carian ('Cari', # Comment """ From core specification. """, # Data """ # Latin-1 Supplement 00B7 # MIDDLE DOT # General Punctuation 205A # TWO DOT PUNCTUATION 205D # TRICOLON # Supplemental Punctuation 2E31 # WORD SEPARATOR MIDDLE DOT """), # Cham - Cham ('Cham', # Comment """ From core specification. """, # Data """ # Basic Latin 002D # HYPHEN-MINUS 003A # COLON 003F # QUESTION MARK # General Punctuation 2010 # HYPHEN """), # Cher - Cherokee ('Cher', # Comment """ From core specification and http://www.unicode.org/L2/L2014/14064r-n4537r-cherokee.pdf section 8. Core spec says 'uses latin punctuation', these are a subset of the latin-1 punct because the intent of listing them is to ensure that use in running text works with the script. """, # Data """ # Basic Latin 0021 # EXCLAMATION MARK 0022 # QUOTATION MARK 0027 # APOSTROPHE 0028 # LEFT PARENTHESIS 0029 # RIGHT PARENTHESIS 002C # COMMA 002D # HYPHEN-MINUS 002E # FULL STOP 002F # SOLIDUS 003A # COLON 003B # SEMICOLON 003F # QUESTION MARK 005B # LEFT SQUARE BRACKET 005D # RIGHT SQUARE BRACKET 007E # TILDE # Combining Diacritical Marks 0300 # COMBINING GRAVE ACCENT 0301 # COMBINING ACUTE ACCENT 0302 # COMBINING CIRCUMFLEX ACCENT 0304 # COMBINING MACRON 030B # COMBINING DOUBLE ACUTE ACCENT 030C # COMBINING CARON 0323 # COMBINING DOT BELOW 0324 # COMBINING DIAERESIS BELOW 0330 # COMBINING TILDE BELOW 0331 # COMBINING MACRON BELOW # General Punctuation 2010 # HYPHEN 201C # LEFT DOUBLE QUOTATION MARK 201D # RIGHT DOUBLE QUOTATION MARK """), # Copt - Coptic ('Copt', # Comment """ From Core specification and http://std.dkuug.dk/JTC1/SC2/WG2/docs/n2636.pdf 0323 referenced in the following according to Kamal: http://ucbclassics.dreamhosters.com/djm/coptic.html 0361 and 1DCD resolve bug #748 according to MTI. We originally intended to remove them since we didn't have a reference for their use. We still don't, but they were re-added because of the bug. """, # Data """ # Basic Latin 002E # FULL STOP 003A # COLON 003B # SEMICOLON # Latin-1 Supplement 00B7 # MIDDLE DOT # Combining Diacritical Marks 0300 # COMBINING GRAVE ACCENT 0301 # COMBINING ACUTE ACCENT 0302 # COMBINING CIRCUMFLEX ACCENT 0304 # COMBINING MACRON 0305 # COMBINING OVERLINE 0307 # COMBINING DOT ABOVE 0308 # COMBINING DIAERESIS 0323 # COMBINING DOT BELOW 033F # COMBINING DOUBLE OVERLINE 0361 # COMBINING DOUBLE INVERTED BREVE # Greek and Coptic 0374 # GREEK NUMERAL SIGN 0375 # GREEK LOWER NUMERAL SIGN # General Punctuation 2019 # RIGHT SINGLE QUOTATION MARK # Supplemental Punctuation 2E17 # DOUBLE OBLIQUE HYPHEN # Combining Half Marks FE24 # COMBINING MACRON LEFT HALF FE25 # COMBINING MACRON RIGHT HALF FE26 # COMBINING CONJOINING MACRON """), # Cprt - Cypriot # Deva - Devanagari ('Deva', # Comment """ Email from Jelle, SHY was encoded as Macron by accident. """, # Data """ # Latin-1 Supplement 00AD # SOFT HYPHEN """), # Dsrt - Deseret # Dupl - Duployan shorthand (Duployan) # Egyp - Egyptian hieroglyphs # Elba - Elbasan ('Elba', # Comment """ see http://www.unicode.org/L2/L2011/11050-n3985-elbasan.pdf adds combining overbar and greek numerals for ones and tens, and both stigma/digamma for 6. """, # Data """ # Latin-1 Supplement 00B7 # MIDDLE DOT # Combining Diacritical Marks 0305 # COMBINING OVERLINE # Greek and Coptic 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 03DA # GREEK LETTER STIGMA 03DD # GREEK SMALL LETTER DIGAMMA 03DE # GREEK LETTER KOPPA """), # Ethi - Ethiopic ('Ethi', # Comment """ From core specification, also see http://abyssiniagateway.net/fidel/l10n/ Recommends combining diaeresis 'for scholarly use', should look Ethiopian. Also claims hyphen is not used, but a wikipedia page in Amharic does use it, see https://am.wikipedia.org/wiki/1_%E1%8A%A5%E1%88%BD%E1%88%98-%E1%8B%B3%E1%8C%8B%E1%8A%95 Western numerals and punctuation should look heavier to match the Ethiopic. A keyboard standard is here: See http://www.mcit.gov.et/documents/1268465/1282796/Keyboard+Layout+Standard/a8aa75ca-e125-4e25-872e-380e2a9b2313 """, # Data """ # Basic Latin 0021 # EXCLAMATION MARK 0028 # LEFT PARENTHESIS 0029 # RIGHT PARENTHESIS 002B # PLUS SIGN 002E # FULL STOP 002F # SOLIDUS 003D # EQUALS SIGN # Combining Diacritical Marks 0308 # COMBINING DIAERESIS 030E # COMBINING DOUBLE VERTICAL LINE ABOVE # Mathematical Operators 22EE # VERTICAL ELLIPSIS # Geometric Shapes 25CC # DOTTED CIRCLE """), # Geor - Georgian ('Geor', # Comment """ From core specification (references unspecified additionl latin punct), also see example news article: http://www.civil.ge/geo/article.php?id=29970 """, # Data """ # Basic Latin 0021 # EXCLAMATION MARK 0025 # PERCENT SIGN 0028 # LEFT PARENTHESIS 0029 # RIGHT PARENTHESIS 002E # FULL STOP 003A # COLON 003B # SEMICOLON # Latin-1 Supplement 00A0 # NO-BREAK SPACE 00B7 # MIDDLE DOT # General Punctuation 2014 # EM DASH 2056 # THREE DOT PUNCTUATION 2057 # QUADRUPLE PRIME 2058 # FOUR DOT PUNCTUATION 2059 # FIVE DOT PUNCTUATION 205A # TWO DOT PUNCTUATION 205B # FOUR DOT MARK 205C # DOTTED CROSS 205D # TRICOLON 205E # VERTICAL FOUR DOTS 20BE # LARI SIGN # Supplemental Punctuation 2E2A # TWO DOTS OVER ONE DOT PUNCTUATION 2E2B # ONE DOT OVER TWO DOTS PUNCTUATION 2E2C # SQUARED FOUR DOT PUNCTUATION 2E2D # FIVE DOT MARK 2E31 # WORD SEPARATOR MIDDLE DOT """), # Glag - Glagolitic ('Glag', # Comment """ See core specification. It refers to 'numerous diacritical marks', these are not listed. """, # Data """ # Basic Latin 0022 # QUOTATION MARK 002C # COMMA 002E # FULL STOP 003B # SEMICOLON # Latin-1 Supplement 00B7 # MIDDLE DOT # Combining Diacritical Marks 0303 # COMBINING TILDE 0305 # COMBINING OVERLINE # General Punctuation 201C # LEFT DOUBLE QUOTATION MARK 201D # RIGHT DOUBLE QUOTATION MARK 2056 # THREE DOT PUNCTUATION 2058 # FOUR DOT PUNCTUATION 2059 # FIVE DOT PUNCTUATION """), # Goth - Gothic ('Goth', # Comment """ From core specification. """, # Data """ # Basic Latin 003A # COLON # Latin-1 Supplement 00B7 # MIDDLE DOT # Combining Diacritical Marks 0304 # COMBINING MACRON 0305 # COMBINING OVERLINE 0308 # COMBINING DIAERESIS 0331 # COMBINING MACRON BELOW """), # Gran - Grantha ('Gran', # Comment """ From core specification. """, # Data """ # Devanagari 0951 # DEVANAGARI STRESS SIGN UDATTA 0952 # DEVANAGARI STRESS SIGN ANUDATTA # Vedic Extensions 1CD0 # VEDIC TONE KARSHANA 1CD2 # VEDIC TONE PRENKHA 1CD3 # VEDIC SIGN NIHSHVASA 1CF2 # VEDIC SIGN ARDHAVISARGA 1CF3 # VEDIC SIGN ROTATED ARDHAVISARGA 1CF4 # VEDIC TONE CANDRA ABOVE 1CF8 # VEDIC TONE RING ABOVE 1CF9 # VEDIC TONE DOUBLE RING ABOVE # Combining Diacritical Marks for Symbols 20F0 # COMBINING ASTERISK ABOVE """), # Gujr - Gujarati # Guru - Gurmukhi ('Guru', # Comment """ From core specification. """, # Data """ # Miscellaneous Symbols 262C # ADI SHAKTI """), # Hano - Hanunoo # Hatr - Hatr (Hatran) ('Hatr', # Comment """ See http://www.unicode.org/L2/L2012/12312-n4324-hatran.pdf (most info, but not latest assignment, which doesn't have all digits shown here) single and double vertical line, also ZWNJ in case ligatures need breaking might want to ligate hatran digit 1 forms 11 (2), 111 (3), 1111 (4) to look as the suggested (dropped) digits were represented in the doc. """, # Data """ # Basic Latin 007C # VERTICAL LINE # General Punctuation 200C # ZERO WIDTH NON-JOINER 2016 # DOUBLE VERTICAL LINE """), # Hebr - Hebrew ('Hebr', # Comment """ From core specification, adds currency. """, # Data """ # Basic Latin 0028 # LEFT PARENTHESIS 0029 # RIGHT PARENTHESIS # Combining Diacritical Marks 0307 # COMBINING DOT ABOVE 0308 # COMBINING DIAERESIS 034F # COMBINING GRAPHEME JOINER # General Punctuation 200C # ZERO WIDTH NON-JOINER 200D # ZERO WIDTH JOINER 200E # LEFT-TO-RIGHT MARK 200F # RIGHT-TO-LEFT MARK # Currency Symbols 20AA # NEW SHEQEL SIGN # Letterlike Symbols 2135 # ALEF SYMBOL 2136 # BET SYMBOL 2137 # GIMEL SYMBOL 2138 # DALET SYMBOL """), # Hluw - Anatolian Hieroglyphs ('Hluw', # Comment """ see http://www.unicode.org/L2/L2012/12213-n4282-anatolian.pdf """, # Data """ # General Punctuation 200B # ZERO WIDTH SPACE """), # Hmng - Pahawh Hmong # Hrkt - Japanese syllabaries (Katakana Or Hiragana) # Hung - Old Hungarian ('Hung', # Comment """ see http://www.unicode.org/L2/L2012/12168r-n4268r-oldhungarian.pdf letters with LTR override mirror reverse (!) "which has to be handled by the rendering engine" """, # Data """ # Basic Latin 0021 # EXCLAMATION MARK 002C # COMMA 002D # HYPHEN-MINUS 002E # FULL STOP 003A # COLON # General Punctuation 200D # ZERO WIDTH JOINER 2010 # HYPHEN 201F # DOUBLE HIGH-REVERSED-9 QUOTATION MARK 204F # REVERSED SEMICOLON 205A # TWO DOT PUNCTUATION 205D # TRICOLON 205E # VERTICAL FOUR DOTS # Supplemental Punctuation 2E2E # REVERSED QUESTION MARK 2E31 # WORD SEPARATOR MIDDLE DOT 2E41 # REVERSED COMMA 2E42 # DOUBLE LOW-REVERSED-9 QUOTATION MARK """), # Ital - Old Italic # Java - Javanese # Kali - Kayah Li ('Kali', # Comment """ From core specification, also see http://www.unicode.org/L2/L2006/06073-n3038r-kayahli.pdf """, # Data """ # Basic Latin 0021 # EXCLAMATION MARK 0022 # QUOTATION MARK 0028 # LEFT PARENTHESIS 0029 # RIGHT PARENTHESIS 002C # COMMA 002D # HYPHEN-MINUS 003F # QUESTION MARK # General Punctuation 2010 # HYPHEN """), # Khar - Kharoshthi ('Khar', # Comment """ From core specification. """, # Data """ # Basic Latin 002D # HYPHEN-MINUS # General Punctuation 2010 # HYPHEN """), # Khmr - Khmer ('Khmr', # Comment """ Latin punct see web sites """, # Data """ # Basic Latin 0021 # EXCLAMATION MARK 0028 # LEFT PARENTHESIS 0029 # RIGHT PARENTHESIS """), # Khoj - Khojki ('Khoj', # Comment """ From core specification, also see http://www.unicode.org/L2/L2011/11021-khojki.pdf """, # Data """ # Basic Latin 0028 # LEFT PARENTHESIS 0029 # RIGHT PARENTHESIS 002C # COMMA 002E # FULL STOP 003B # SEMICOLON # General Punctuation 2013 # EN DASH 2026 # HORIZONTAL ELLIPSIS """), # Knda - Kannada # Kthi - Kaithi ('Kthi', # Comment """ From core specification. """, # Data """ # Basic Latin 002B # PLUS SIGN 002D # HYPHEN-MINUS # General Punctuation 2010 # HYPHEN # Supplemental Punctuation 2E31 # WORD SEPARATOR MIDDLE DOT """), # LGC - (Latn,Grek,Cyrl) ('LGC', # Comment """ FE00 is for variant zero. """, # Data """ # Spacing Modifier Letters 02EA # MODIFIER LETTER YIN DEPARTING TONE MARK 02EB # MODIFIER LETTER YANG DEPARTING TONE MARK # Letterlike Symbols 2100 # ACCOUNT OF 2101 # ADDRESSED TO THE SUBJECT 2103 # DEGREE CELSIUS 2105 # CARE OF 2106 # CADA UNA 2109 # DEGREE FAHRENHEIT 2113 # SCRIPT SMALL L 2116 # NUMERO SIGN 2117 # SOUND RECORDING COPYRIGHT 211E # PRESCRIPTION TAKE 2120 # SERVICE MARK 2121 # TELEPHONE SIGN 2122 # TRADE MARK SIGN 2127 # INVERTED OHM SIGN 2129 # TURNED GREEK SMALL LETTER IOTA 212E # ESTIMATED SYMBOL 213B # FACSIMILE SIGN 214B # TURNED AMPERSAND 214D # AKTIESELSKAB # Number Forms 2150 # VULGAR FRACTION ONE SEVENTH 2151 # VULGAR FRACTION ONE NINTH 2152 # VULGAR FRACTION ONE TENTH 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 2184 # LATIN SMALL LETTER REVERSED C 2189 # VULGAR FRACTION ZERO THIRDS # Variation Selectors FE00 # VARIATION SELECTOR-1 # Specials FFFC # OBJECT REPLACEMENT CHARACTER FFFD # REPLACEMENT CHARACTER """), # Lana - Lanna (Tai Tham) # Laoo - Lao ('Laoo', # Comment """ For latin punct use see web sites, e.g. nuol.edu.la """, # Data """ # Basic Latin 0022 # QUOTATION MARK 0028 # LEFT PARENTHESIS 0029 # RIGHT PARENTHESIS 002C # COMMA 002E # FULL STOP 003A # COLON # General Punctuation 201C # LEFT DOUBLE QUOTATION MARK 201D # RIGHT DOUBLE QUOTATION MARK # Currency Symbols 20AD # KIP SIGN """), # Lepc - Lepcha ('Lepc', # Comment """ From core specification, only the specificially mentioned punct. """, # Data """ # Basic Latin 002C # COMMA 002E # FULL STOP 003F # QUESTION MARK """), # Limb - Limbu ('Limb', # Comment """ From core specification. """, # Data """ # Devanagari 0965 # DEVANAGARI DOUBLE DANDA """), # Lina - Linear A # Linb - Linear B # Lisu - Fraser (Lisu) ('Lisu', # Comment """ From core specification. """, # Data """ # Basic Latin 0021 # EXCLAMATION MARK 0022 # QUOTATION MARK 0028 # LEFT PARENTHESIS 0029 # RIGHT PARENTHESIS 002D # HYPHEN-MINUS 003A # COLON 003B # SEMICOLON 003F # QUESTION MARK # Spacing Modifier Letters 02BC # MODIFIER LETTER APOSTROPHE 02CD # MODIFIER LETTER LOW MACRON # General Punctuation 2010 # HYPHEN 2026 # HORIZONTAL ELLIPSIS # CJK Symbols and Punctuation 300A # LEFT DOUBLE ANGLE BRACKET 300B # RIGHT DOUBLE ANGLE BRACKET """), # Lyci - Lycian ('Lyci', # Comment """ From core specification. """, # Data """ # General Punctuation 205A # TWO DOT PUNCTUATION """), # Lydi - Lydian ('Lydi', # Comment """ From core specification. """, # Data """ # Basic Latin 003A # COLON # Latin-1 Supplement 00B7 # MIDDLE DOT # Supplemental Punctuation 2E31 # WORD SEPARATOR MIDDLE DOT """), # MUSIC - MUSIC ('MUSIC', # Comment """ Characters not in standard music blocks. """, # Data """ # Miscellaneous Symbols 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 """), # Mahj - Mahajani ('Mahj', # Comment """ From core specification. """, # Data """ # Basic Latin 002D # HYPHEN-MINUS 003A # COLON # Latin-1 Supplement 00B7 # MIDDLE DOT # Devanagari 0964 # DEVANAGARI DANDA 0965 # DEVANAGARI DOUBLE DANDA # General Punctuation 2013 # EN DASH """), # Mand - Mandaean (Mandaic) ('Mand', # Comment """ From core specification. """, # Data """ # Arabic 0640 # ARABIC TATWEEL """), # Mani - Manichaean # Marc - Marc (Marchen) # Mend - Mende (Mende Kikakui) # Merc - Meroitic Cursive ('Merc', # Comment """ From core specification. also see http://www.unicode.org/L2/L2009/09188r-n3646-meroitic.pdf """, # Data """ # Basic Latin 003A # COLON # General Punctuation 2026 # HORIZONTAL ELLIPSIS 205D # TRICOLON """), # Mero - Meroitic (Meroitic Hieroglyphs) # Mlym - Malayalam # Modi - Modi ('Modi', # Comment """ From core specification, also see http://www.unicode.org/L2/L2011/11212r2-n4034-modi.pdf """, # Data """ # Basic Latin 002C # COMMA 002E # FULL STOP 003B # SEMICOLON """), # Mong - Mongolian ('Mong', # Comment """ From core specification. """, # Data """ # Basic Latin 0021 # EXCLAMATION MARK 0022 # QUOTATION MARK 0028 # LEFT PARENTHESIS 0029 # RIGHT PARENTHESIS 003F # QUESTION MARK # General Punctuation 201C # LEFT DOUBLE QUOTATION MARK 201D # RIGHT DOUBLE QUOTATION MARK 2048 # QUESTION EXCLAMATION MARK 2049 # EXCLAMATION QUESTION MARK """), # Mroo - Mro # Mtei - Meitei Mayek (Meetei Mayek) # Mult - Mult (Multani) # Mymr - Myanmar ('Mymr', # Comment """ From core specification; FE00 is for dotted forms. """, # Data """ # General Punctuation 200B # ZERO WIDTH SPACE # Variation Selectors FE00 # VARIATION SELECTOR-1 """), # Narb - Old North Arabian # Nbat - Nabataean # Newa - Newa # Nkoo - N'Ko (N'Ko) ('Nkoo', # Comment """ From core specification. """, # Data """ # Arabic 060C # ARABIC COMMA 061B # ARABIC SEMICOLON 061F # ARABIC QUESTION MARK # Supplemental Punctuation 2E1C # LEFT LOW PARAPHRASE BRACKET 2E1D # RIGHT LOW PARAPHRASE BRACKET # Arabic Presentation Forms-A FD3E # ORNATE LEFT PARENTHESIS FD3F # ORNATE RIGHT PARENTHESIS """), # Ogam - Ogham # Olck - Ol Chiki ('Olck', # Comment """ From core specification. """, # Data """ # Basic Latin 0021 # EXCLAMATION MARK 002C # COMMA 003F # QUESTION MARK # General Punctuation 2014 # EM DASH 2018 # LEFT SINGLE QUOTATION MARK 2019 # RIGHT SINGLE QUOTATION MARK 201C # LEFT DOUBLE QUOTATION MARK 201D # RIGHT DOUBLE QUOTATION MARK """), # Orkh - Orkhon (Old Turkic) ('Orkh', # Comment """ From core specification. """, # Data """ # General Punctuation 205A # TWO DOT PUNCTUATION # Supplemental Punctuation 2E30 # RING POINT """), # Orya - Oriya # Osge - Osge (Osage) ('Osge', # Comment """ Added by Monotype. """, # Data """ # Combining Diacritical Marks 0301 # COMBINING ACUTE ACCENT 0304 # COMBINING MACRON 030B # COMBINING DOUBLE ACUTE ACCENT 0358 # COMBINING DOT ABOVE RIGHT # Geometric Shapes 25CC # DOTTED CIRCLE """), # Osma - Osmanya # Palm - Palmyrene # Pauc - Pau Cin Hau ('Pauc', # Comment """ From core specification. """, # Data """ # Basic Latin 002E # FULL STOP """), # Perm - Old Permic ('Perm', # Comment """ From core specification. """, # Data """ # Basic Latin 0027 # APOSTROPHE 003A # COLON # Latin-1 Supplement 00B7 # MIDDLE DOT # Combining Diacritical Marks 0300 # COMBINING GRAVE ACCENT 0306 # COMBINING BREVE 0307 # COMBINING DOT ABOVE 0308 # COMBINING DIAERESIS 0313 # COMBINING COMMA ABOVE # Cyrillic 0483 # COMBINING CYRILLIC TITLO # Combining Diacritical Marks for Symbols 20DB # COMBINING THREE DOTS ABOVE """), # Phag - Phags-pa # Phli - Inscriptional Pahlavi # Phlp - Psalter Pahlavi ('Phlp', # Comment """ from core specification. """, # Data """ # Arabic 0640 # ARABIC TATWEEL """), # Phnx - Phoenician # Plrd - Pollard Phonetic (Miao) # Prti - Inscriptional Parthian # Rjng - Rejang ('Rjng', # Comment """ From core specification. """, # Data """ # Basic Latin 002C # COMMA 002E # FULL STOP 003A # COLON """), # Runr - Runic # Samr - Samaritan ('Samr', # Comment """ From core specification. """, # Data """ # Supplemental Punctuation 2E31 # WORD SEPARATOR MIDDLE DOT """), # Sarb - Old South Arabian # Saur - Saurashtra ('Saur', # Comment """ From core specification, only the specificially mentioned punct. """, # Data """ # Basic Latin 002C # COMMA 002E # FULL STOP 003F # QUESTION MARK """), # Sgnw - SignWriting # Shaw - Shavian ('Shaw', # Comment """ From core specification. """, # Data """ # Latin-1 Supplement 00B7 # MIDDLE DOT """), # Shrd - Sharada # Sidd - Siddham # Sind - Khudawadi ('Sind', # Comment """ From core specification. """, # Data """ # Basic Latin 002E # FULL STOP 003A # COLON 003B # SEMICOLON # Devanagari 0964 # DEVANAGARI DANDA 0965 # DEVANAGARI DOUBLE DANDA # General Punctuation 2013 # EN DASH 2014 # EM DASH """), # Sinh - Sinhala ('Sinh', # Comment """ From core specification, plus unspecified latin punctuation seen on web sites. """, # Data """ # Basic Latin 0021 # EXCLAMATION MARK 0028 # LEFT PARENTHESIS 0029 # RIGHT PARENTHESIS 002C # COMMA 002E # FULL STOP # Devanagari 0964 # DEVANAGARI DANDA """), # Sora - Sora Sompeng ('Sora', # Comment """ From core specification and http://www.unicode.org/L2/L2009/09189r-n3647r-sora-sompeng.pdf """, # Data """ # Basic Latin 0021 # EXCLAMATION MARK 0028 # LEFT PARENTHESIS 0029 # RIGHT PARENTHESIS 002C # COMMA 002D # HYPHEN-MINUS 002E # FULL STOP 003B # SEMICOLON # General Punctuation 2010 # HYPHEN """), # Sund - Sundanese ('Sund', # Comment """ From core specification. """, # Data """ # Basic Latin 0022 # QUOTATION MARK 002D # HYPHEN-MINUS 003C # LESS-THAN SIGN 003E # GREATER-THAN SIGN 003F # QUESTION MARK # General Punctuation 2010 # HYPHEN 201C # LEFT DOUBLE QUOTATION MARK 201D # RIGHT DOUBLE QUOTATION MARK """), # Sylo - Syloti Nagri ('Sylo', # Comment """ From core specification. """, # Data """ # Basic Latin 002C # COMMA 002E # FULL STOP 003A # COLON 003B # SEMICOLON # Devanagari 0964 # DEVANAGARI DANDA 0965 # DEVANAGARI DOUBLE DANDA # General Punctuation 2055 # FLOWER PUNCTUATION MARK """), # Syrc - Syriac ('Syrc', # Comment """ From core specification. In it, the reference to 'arabic harakat' used with Garshuni is based on the Harakat section of the wikipedia page on Arabic diacritics. """, # Data """ # Combining Diacritical Marks 0303 # COMBINING TILDE 0304 # COMBINING MACRON 0307 # COMBINING DOT ABOVE 0308 # COMBINING DIAERESIS 030A # COMBINING RING ABOVE 0320 # COMBINING MINUS SIGN BELOW 0323 # COMBINING DOT BELOW 0324 # COMBINING DIAERESIS BELOW 0325 # COMBINING RING BELOW 032D # COMBINING CIRCUMFLEX ACCENT BELOW 032E # COMBINING BREVE BELOW 0330 # COMBINING TILDE BELOW # Arabic 060C # ARABIC COMMA 061B # ARABIC SEMICOLON 061F # ARABIC QUESTION MARK 0640 # ARABIC TATWEEL 064E # ARABIC FATHA 064F # ARABIC DAMMA 0650 # ARABIC KASRA 0651 # ARABIC SHADDA 0652 # ARABIC SUKUN 0653 # ARABIC MADDAH ABOVE 0670 # ARABIC LETTER SUPERSCRIPT ALEF 0671 # ARABIC LETTER ALEF WASLA # General Punctuation 200C # ZERO WIDTH NON-JOINER """), # Tagb - Tagbanwa # Takr - Takri ('Takr', # Comment """ From core specification. """, # Data """ # Devanagari 0964 # DEVANAGARI DANDA 0965 # DEVANAGARI DOUBLE DANDA """), # Tale - Tai Le ('Tale', # Comment """ From core specification & http://www.unicode.org/L2/L2001/01369-n2372.pdf Myanmar digits have glyphic variants according to the spec. """, # Data """ # Basic Latin 002C # COMMA 002E # FULL STOP 003A # COLON 003F # QUESTION MARK # Combining Diacritical Marks 0300 # COMBINING GRAVE ACCENT 0301 # COMBINING ACUTE ACCENT 0307 # COMBINING DOT ABOVE 0308 # COMBINING DIAERESIS 030C # COMBINING CARON # Myanmar 1040 # MYANMAR DIGIT ZERO 1041 # MYANMAR DIGIT ONE 1042 # MYANMAR DIGIT TWO 1043 # MYANMAR DIGIT THREE 1044 # MYANMAR DIGIT FOUR 1045 # MYANMAR DIGIT FIVE 1046 # MYANMAR DIGIT SIX 1047 # MYANMAR DIGIT SEVEN 1048 # MYANMAR DIGIT EIGHT 1049 # MYANMAR DIGIT NINE # General Punctuation 201C # LEFT DOUBLE QUOTATION MARK 201D # RIGHT DOUBLE QUOTATION MARK # CJK Symbols and Punctuation 3002 # IDEOGRAPHIC FULL STOP """), # Talu - New Tai Lue # Taml - Tamil ('Taml', # Comment """ From core specificaion and http://www.unicode.org/L2/L2010/10407-ext-tamil-follow2.pdf """, # Data """ # Latin-1 Supplement 00B2 # SUPERSCRIPT TWO 00B3 # SUPERSCRIPT THREE # Superscripts and Subscripts 2074 # SUPERSCRIPT FOUR 2082 # SUBSCRIPT TWO 2083 # SUBSCRIPT THREE 2084 # SUBSCRIPT FOUR """), # Tang - Tangut # Tavt - Tai Viet ('Tavt', # Comment """ Used in SIL fonts. """, # Data """ # Latin Extended-D A78B # LATIN CAPITAL LETTER SALTILLO A78C # LATIN SMALL LETTER SALTILLO """), # Telu - Telugu # Tfng - Tifinagh ('Tfng', # Comment """ From core specification. """, # Data """ # Combining Diacritical Marks 0302 # COMBINING CIRCUMFLEX ACCENT 0304 # COMBINING MACRON 0307 # COMBINING DOT ABOVE 0309 # COMBINING HOOK ABOVE # General Punctuation 200D # ZERO WIDTH JOINER """), # Tglg - Tagalog # Thaa - Thaana ('Thaa', # Comment """ From core specification, parens from text sample. Probably other punct as well but spec does not list. """, # Data """ # Basic Latin 0028 # LEFT PARENTHESIS 0029 # RIGHT PARENTHESIS 002E # FULL STOP # Arabic 060C # ARABIC COMMA 061B # ARABIC SEMICOLON 061F # ARABIC QUESTION MARK """), # Thai - Thai ('Thai', # Comment """ From core specification and http://www.unicode.org/L2/L2010/10451-patani-proposal.pdf for latin punct see web sites e.g. pandip.com, sanook.com Bhat already here, or should be """, # Data """ # Basic Latin 0021 # EXCLAMATION MARK 0022 # QUOTATION MARK 0028 # LEFT PARENTHESIS 0029 # RIGHT PARENTHESIS 002C # COMMA 002E # FULL STOP 003A # COLON 003F # QUESTION MARK # Spacing Modifier Letters 02BC # MODIFIER LETTER APOSTROPHE 02D7 # MODIFIER LETTER MINUS SIGN # Combining Diacritical Marks 0303 # COMBINING TILDE 0331 # COMBINING MACRON BELOW # General Punctuation 200B # ZERO WIDTH SPACE 201C # LEFT DOUBLE QUOTATION MARK 201D # RIGHT DOUBLE QUOTATION MARK 2026 # HORIZONTAL ELLIPSIS """), # Tibt - Tibetan ('Tibt', # Comment """ Wheel of Dharma from core specification, not sure of source for vertical line. """, # Data """ # Basic Latin 007C # VERTICAL LINE # Miscellaneous Symbols 2638 # WHEEL OF DHARMA """), # Tirh - Tirhuta ('Tirh', # Comment """ From core specification. """, # Data """ # Devanagari 0964 # DEVANAGARI DANDA 0965 # DEVANAGARI DOUBLE DANDA """), # Ugar - Ugaritic # Vaii - Vai ('Vaii', # Comment """ From core specification. """, # Data """ # Basic Latin 002C # COMMA 002D # HYPHEN-MINUS """), # Wara - Varang Kshiti (Warang Citi) ('Wara', # Comment """ "Uses latin punctuation," so guess based on sample text from proposal doc, see http://www.unicode.org/L2/L2012/12118-n4259-warang-citi.pdf """, # Data """ # Basic Latin 0021 # EXCLAMATION MARK 0028 # LEFT PARENTHESIS 0029 # RIGHT PARENTHESIS 002C # COMMA 002D # HYPHEN-MINUS 002E # FULL STOP 003A # COLON 003B # SEMICOLON 003F # QUESTION MARK # General Punctuation 2013 # EN DASH 2014 # EM DASH 201C # LEFT DOUBLE QUOTATION MARK 201D # RIGHT DOUBLE QUOTATION MARK """), # Xpeo - Old Persian # Xsux - Sumero-Akkadian Cuneiform (Cuneiform) # Yiii - Yi ('Yiii', # Comment """ From core specification. Fullwidth Comma is used in UDHR text for Yi. Add standard comma so we have a 'halfwidth' form to match. """, # Data """ # Latin-1 002C # COMMA # CJK Symbols and Punctuation 3001 # IDEOGRAPHIC COMMA 3002 # IDEOGRAPHIC FULL STOP # Halfwidth and Fullwidth Forms FF0C # FULLWIDTH COMMA """), ] # This is a utility function that parses the _script_required data # and spits it out again in the above format. When editing the # above data, just type in the hex values, then run this to regenerate # the source in sorted order with block labels and codepoint names. def _regen_script_required(): """Rerun after editing script required to check/reformat.""" script_to_comment_and_data = { script: (comment, data) for script, comment, data in _SCRIPT_REQUIRED } scripts = set(unicode_data.all_scripts()) for to_script, from_scripts in _MERGED_SCRIPTS_BY_TARGET.iteritems(): scripts.add(to_script) scripts -= set(from_scripts) # keep extra script data, e.g. 'Aran' scripts.update(set(script_to_comment_and_data.keys())) scripts -= set(['Zinh', 'Zyyy', 'Zzzz']) for script in sorted(scripts): if script in _MERGED_SCRIPTS_BY_TARGET: script_name = '(%s)' % ','.join(_MERGED_SCRIPTS_BY_TARGET[script]) else: script_name = cldr_data.get_english_script_name(script) try: unicode_script_name = unicode_data.human_readable_script_name(script) if script_name.lower() != unicode_script_name.lower(): script_name += ' (%s)' % unicode_script_name except KeyError: pass script_name = script_name.replace(unichr(0x2019), "'") print ' # %s - %s' % (script, script_name) if script in script_to_comment_and_data: print " ('%s'," % script lines = [] comment, data = script_to_comment_and_data[script] lines.append(' # Comment') lines.append('"""') for line in comment.strip().splitlines(): lines.append(line.strip()) lines.append('""",') lines.append('# Data') lines.append('"""') cps = tool_utils.parse_int_ranges(data) block = None for cp in sorted(cps): cp_block = unicode_data.block(cp) if cp_block != block: block = cp_block lines.append('# ' + block) cp_name = unicode_data.name(cp, '') lines.append('%04X # %s' % (cp, cp_name)) lines.append('"""),') print '\n '.join(lines) print def _assign_script_required(cmap_ops): """Assign extra characters for various scripts.""" for script, _, data in _SCRIPT_REQUIRED: extra = tool_utils.parse_int_ranges(data) cmap_ops.phase('assign script required for ' + script) cmap_ops.add_all(extra, script) # Because of a miscommunication the Coptic EPACT numbers, which had # been assigned to SYM2, were also added to the Coptic font because # they were listed in a bug from two years ago. So we'll now put them # in the Coptic requirements just so we know they're supposed to be there. epact = tool_utils.parse_int_ranges('102e0-102fb') cmap_ops.add_all(epact, 'Copt') def _assign_script_special_chars(cmap_ops): """Assign special characters listed in opentype_data.""" cmap_ops.phase('assign special chars') for script, chars in opentype_data.SPECIAL_CHARACTERS_NEEDED.iteritems(): cmap_ops.add_all(frozenset(chars), script) def _assign_legacy_phase2(cmap_ops): """Assign legacy chars in some scripts, excluding some blocks.""" legacy_data = cmap_data.read_cmap_data_file('data/noto_cmap_phase2.xml') legacy_map = cmap_data.create_map_from_table(legacy_data.table) legacy_script_to_chars = { script: tool_utils.parse_int_ranges(row.ranges) for script, row in legacy_map.iteritems()} # The default is to include all legacy characters, except for the chars # listed for these scripts, for some default chars, and for some scripts. # Find out why these were included in the phase two fonts. # This excludes lots of punctuation and digits from Cham, Khmer, and Lao # but leaves some common latin characters like quotes, parens, comma/period, # and so on. exclude_script_ranges = { 'Cham': '23-26 2A-2B 30-39 3C-3E 40 5B-60 7B-7E 037E', 'Deva': '00AF', # Jelle says this was encoded by accident, should be 00AD 'Kthi': '0030-0039', 'Khmr': '23-26 2A-2B 30-39 3C-3E 40 5B-60 7B-7E 037E', 'LGC': '03E2', 'Lana': '2219', 'Laoo': '23-26 2A-2B 30-39 3C-3E 40 5B-60 7B-7E 037E', 'Limb': '0964', # I think double-danda was intended 'Mlym': '0307 0323', 'Syrc': '250C 2510', # box drawing? 'Tavt': 'A78C', } # mono temporarily ignore_legacy = frozenset('LGC Zsye Zsym MONO'.split()) ignore_cps = frozenset([0x0, 0xd, 0x20, 0xa0, 0xfeff]) cmap_ops.phase('assign legacy phase 2') script_to_chars = cmap_ops.create_script_to_chars() for script in sorted(legacy_script_to_chars): if script not in script_to_chars: cmap_ops.log('skipping script %s' % script) continue if script in ignore_legacy: cmap_ops.log('ignoring %s' % script) continue script_chars = script_to_chars[script] legacy_chars = legacy_script_to_chars[script] missing_legacy = set(legacy_chars) - set(script_chars) - ignore_cps if script in exclude_script_ranges: ranges = exclude_script_ranges[script] missing_legacy -= set(tool_utils.parse_int_ranges(ranges)) if missing_legacy: cmap_ops.phase('assign legacy %s' % script) cmap_ops.add_all(missing_legacy, script) def _check_CJK(): # not used # check CJK cmap_ops.log('check cjk legacy') legacy_cjk_chars = set() for script in _MERGED_SCRIPTS_BY_TARGET['CJK']: if script in legacy_script_to_chars: legacy_cjk_chars |= legacy_script_to_chars[script] cjk_chars = script_to_chars['CJK'] not_in_legacy = cjk_chars - legacy_cjk_chars # ignore plane 2 and above not_in_legacy -= set(range(0x20000, 0x120000)) if not_in_legacy: print 'not in legacy (%d):' % len(not_in_legacy) compare_cmap_data._print_detailed(not_in_legacy) not_in_new = legacy_cjk_chars - cjk_chars if not_in_new: print 'not in new (%d):' % len(not_in_new) compare_cmap_data._print_detailed(not_in_new) def _assign_bidi_mirroring(cmap_ops): """Ensure that if a bidi mirroring char is in a font, its mirrored char is too.""" cmap_ops.phase('bidi mirroring') script_to_chars = cmap_ops.create_script_to_chars() mirrored = unicode_data.mirrored_chars() for script, cps in sorted(script_to_chars.iteritems()): mirrored_in_script = cps & mirrored if not mirrored_in_script: continue sibs = set(unicode_data.bidi_mirroring_glyph(cp) for cp in mirrored_in_script) missing_sibs = sibs - mirrored_in_script if missing_sibs: cmap_ops.log('adding %d missing bidi chars' % len(missing_sibs)) cmap_ops.add_all(missing_sibs, script) def _unassign_lgc_from_symbols(cmap_ops): """Characters in LGC don't need to be in Symbols or Sym2.""" cmap_ops.phase('unassign lgc from symbols') lgc_set = frozenset(cmap_ops.script_chars('LGC')) sym_set = frozenset(cmap_ops.script_chars('Zsym')) sym2_set = frozenset(cmap_ops.script_chars('SYM2')) sym_set_to_remove = sym_set & lgc_set sym2_set_to_remove = sym2_set & lgc_set # Combining enclosing marks in Symbols need latin to combine with, so add # letters and digits, also dotted circle if not there already. alphanum = tool_utils.parse_int_ranges('30-39 41-5a 61-7a 25cc') sym_set_to_remove -= alphanum cmap_ops.remove_all(sym_set_to_remove, 'Zsym') cmap_ops.remove_all(sym2_set_to_remove, 'SYM2') def _assign_programming_lang_symbols(cmap_ops): """Assign characters used in programming languages, which generally should be in MONO and in some cases need to be compatible with math in general.""" def add_mirrored(cps): mirrored_cps = set() for cp in cps: if unicode_data.mirrored(cp): mirrored_glyph = unicode_data.bidi_mirroring_glyph(cp) if mirrored_glyph != None: mirrored_cps.add(mirrored_glyph) cps |= (mirrored_cps) # some characters we want to preserve in symbols despite adding them # to math. preserve_symbols_cps = tool_utils.parse_int_ranges( """ 2190 # LEFTWARDS ARROW 2191 # UPWARDS ARROW 2192 # RIGHTWARDS ARROW 2193 # DOWNWARDS ARROW 2194 # LEFT RIGHT ARROW 2195 # UP DOWN ARROW 2474 # PARENTHESIZED DIGIT ONE 2475 # PARENTHESIZED DIGIT TWO 266d # MUSIC FLAT SIGN 266e # MUSIC NATURAL SIGN 266f # MUSIC SHARP SIGN 27f6 # LONG RIGHTWARDS ARROW """) # similarly, preserve some in symbols2 preserve_symbols2_cps = tool_utils.parse_int_ranges( """ 21e8 # RIGHTWARDS WHITE ARROW 2219 # BULLET OPERATOR 2299 # CIRCLED DOT OPERATOR 25a1 # WHITE SQUARE 25b7 # WHITE RIGHT-POINTING TRIANGLE 25bb # WHITE RIGHT-POINTING POINTER 25c2 # BLACK LEFT-POINTING SMALL TRIANGLE 25c3 # WHITE LEFT-POINTING SMALL TRIANGLE 25c5 # WHITE LEFT-POINTING POINTER 25c7 # WHITE DIAMOND 25c8 # WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND 25cb # WHITE CIRCLE 2736 # SIX POINTED BLACK STAR """) cmap_ops.phase('programming - haskell') # see noto-fonts#669 agda non-ascii character list haskell_cps = tool_utils.parse_int_ranges( """ 00a0 00ac 00b2 00b7 00b9 00bd 00d7 00e0 00e9 00f3 00f6-00f7 019b 02b0 02b3 02e1-02e2 0307 0393 0398 03a0 03a3 03b5 03b7 03bb-03be 03c1 03c3-03c4 03c6 03c8-03c9 2022 2026 2032-2033 203c 203f 2045-2046 2070 207a-207b 207f-2089 2113 2115 211a 2124 2190-2194 219d-219e 21a0 21a2-21a3 21a6 21d0-21d4 21db 21e8 2200-2201 2203-2205 2208-2209 220b 220e 2218-2219 221e 2223 2227-222a 2236-2238 223c 2241 2243 2245 2247-224b 2254 2257 225f 2261-2262 2264-2265 226c 226e-2273 2275 227a-227b 2286-2288 228e 2291-229c 22a4-22a5 22b4 22b8 22c2-22c3 22c6 22c9-22ca 22ce 22d0 22e2 2308-230b 236e 2474-2475 25a1 25b7 25bb 25c2-25c3 25c5 25c7-25c8 266d 266f 2736 27e6-27eb 27f6 2987-2988 2a00 2a05-2a06 ff5b ff5d """) # add extra not in the set above: # (from github.com/adobe-fonts/source-code-pro/issues/114) haskell_cps |= tool_utils.parse_int_ranges( """2202 2210 2220 2234 2235 2284 2285 2289""") # see comment from joeyaiello on noto-fonts/issues/669 # others mentioned in that comment are already in haskell haskell_cps.add(0x2195) # add mirrored cps to this set add_mirrored(haskell_cps) # add 'leftwards' variants (not mirrored) and a few other variants # because it seems odd to split these groups even if there's no use for # them in haskell. leftwards_variants = tool_utils.parse_int_ranges( """ # Arrows 219c # LEFTWARDS WAVE ARROW (ref 219d) 21a4 # LEFTWARDS ARROW FROM BAR (ref 21a6) 21da # LEFTWARDS TRIPLE ARROW (ref 21db) 21e6 # LEFTWARDS WHITE ARROW (ref 21e8) # Miscellaneous Technical 2310 # REVERSED NOT SIGN (ref 00ac) 2319 # TURNED NOT SIGN (ref 00ac) # Miscellaneous Symbols 266e # MUSIC NATURAL SIGN (ref 266d) # Supplemental Arrows-A 27f5 # LONG LEFTWARDS ARROW (ref 27f6) """) haskell_cps |= leftwards_variants cmap_ops.add_all_to_all(haskell_cps, ['Zmth', 'MONO']) cmap_ops.remove_all(haskell_cps - preserve_symbols_cps, 'Zsym') cmap_ops.remove_all(haskell_cps - preserve_symbols2_cps, 'SYM2') cmap_ops.phase('programming - APL') # For the below APL sets, see noto-fonts#751 apl_cps = tool_utils.parse_int_ranges( """ 0021 0024 0027-0029 002b-002c 002e-002f 003a-003f 005b-005d 005f 007b 007d 00a8 00af 00d7 00f7 2190-2193 2205-2207 220a 2212 2218 2223 2227-222a 2235 223c 2260-2262 2264-2265 2282-2283 2286-2287 2296 22a2-22a5 22c4 22c6 2308 230a 2336-237a 2395 25cb """) # do not use circled uppercase letters as a substitute for APL underscored # letters. Dyalog APL does this and hacks a font to make them to render as # underscored. Also apl385 does this and renders these as underscored. This # is contrary to Unicode (which should just have gone ahead and encoded these, # but I guess balked since they were already kind of deprecated by that time). # apl_cps |= tool_utils.parse_int_ranges('24B6-24CF') # additionally requested relational algebra symbols apl_cps |= tool_utils.parse_int_ranges('22c8-22ca 25b7 27d5-27d7') # additionally requested NARS symbols apl_cps |= tool_utils.parse_int_ranges('00a7 03c0 221a 221e 2299') add_mirrored(apl_cps) # Android doesn't want MONO as a fallback, so no codepoint should be added # only to MONO and not to any other Noto font. cmap_ops.add_all_to_all(apl_cps, ['MONO', 'Zmth']) def _assign_symbols_from_groups(cmap_ops): """Use 'group data' to assign various symbols to Zmth, Zsym, SYM2, MONO, MUSIC' based on character groups. This fine-tunes the block assignments (some related symbols are scattered across blocks, and symbols blocks are themselves mixed).""" cmap_ops.phase('assign symbols from groups') with open('codepoint_groups.txt', 'r') as f: for lineix, line in enumerate(f): ix = line.find('#') if ix >= 0: line = line[:ix] line = line.strip() if not line: continue cols = [s.strip() for s in line.split(';')] if not len(cols) == 3: print ('incorrect cols on line %d "%s"' % (lineix, line)) if cols[0] == '': # no assignments for this line continue add, remove = [], [] for s in cols[0].split(): if s.startswith('-'): remove.append(s[1:]) else: add.append(s) name = cols[1] # We use parens to delimit parts of the ranges that are 'for # reference' but should not impact codepoint assignment. # since parse_int_ranges doesn't understand these, strip # out the parenthesized sections. These don't nest but we # don't check for this, only that open ranges are closed. ranges = cols[2] parts = None ix = 0 while ix < len(ranges): open_p = ranges.find('(', ix) if open_p < 0: if parts != None: parts.append(ranges[ix:].strip()) break close_p = ranges.find(')', open_p+1) if close_p < 0: raise Exception( 'unclosed paren in ranges on line %d "%s"' % (lineix, line)) if parts == None: parts = [] parts.append(ranges[ix:open_p]) ix = close_p + 1 if parts: ranges = ' '.join(parts) try: cps = tool_utils.parse_int_ranges(ranges) except Exception as err: print >> sys.stderr, err print >> sys.stderr, cols[2] print >> sys.stderr, 'problem on %d "%s"' % (lineix, line) raise err if len(cps) > 50: print >> sys.stderr, 'large range (%d) on %d "%s"' % ( len(cps), lineix, line) cmap_ops.log('group: %s (%d)' % (name, len(cps))) if add: cmap_ops.add_all_to_all(cps, add) if remove: cmap_ops.remove_all_from_all(cps, remove) def _assign_mono(cmap_ops): """Monospace should be similar to LGC, with the addition of box drawing and block elements. It should also include all CP437 codepoints.""" cmap_ops.phase('assign mono') lgc_chars = cmap_ops.script_chars('LGC') cmap_ops.add_all(lgc_chars, 'MONO') cp437_cps = unicode_data.codeset('cp437') cmap_ops.phase('assign cp437 to mono') assert cp437_cps != None cmap_ops.add_all(cp437_cps, 'MONO') # for variant zero cmap_ops.add(0xfe00, 'MONO') # geometric shapes should be in MONO too, many are but they're scattered cmap_ops.add_all(_block_cps('Geometric Shapes'), 'MONO') def _assign_sym2(cmap_ops): """SYM2 should support enclosing keycaps, used to be in B/W Emoji.""" cmap_ops.phase('assign sym2') keycap_chars = tool_utils.parse_int_ranges(""" 0023 # Number Sign 002A # Asterisk 0030-0039 # Digits 20E3 # Combining Enclosing Keycap""") cmap_ops.add_all(keycap_chars, 'SYM2') def _assign_math(cmap_ops): """No longer use STIX character set, we will just fallback for characters not in math. However, we want much of math to work without fallback, for instance we need character ranges for the combining marks, and want a serif form of the ASCII, so we duplicate more than usual.""" cmap_ops.phase('assign math') # We keep this here for awhile for reference, but no longer use it. STIX_CPS = tool_utils.parse_int_ranges( """ 0020-007e 00a0-0180 0188 0190 0192 0195 0199-019b 019e 01a0-01a1 01a5 01aa-01ab 01ad 01af-01b0 01b5 01ba-01bb 01be 01c0-01c3 01f0 01fa-01ff 0221 0234-0237 02b0-02e9 02ec-02ed 0300-033f 0346 034c 0359 035c 0360-0362 037e 0384-038a 038c 038e-03a1 03a3-03ce 03d0-03d2 03d5-03d6 03d8-03e1 03f0-03f1 03f4-03f6 0401-040c 040e-044f 0451-045c 045e-045f 0462-0463 046a-046b 0472-0475 0490-0491 1d00 1d07 1d1c 1d84-1d85 1d8a 1d8d-1d8e 1e80-1e85 1ef2-1ef3 2010-2022 2025-2026 2030-203c 203e 2040 2043-2044 2047 204e-2052 2057 205f 207f 20a3-20a4 20a7 20ac 20d0-20d2 20d6-20d7 20db-20df 20e1 20e4-20f0 2102 2105 2107 210a-2113 2115-211e 2122 2124-2129 212b-2138 213c-214b 2153-215e 2190-21ea 21f4-22ff 2302 2305-2306 2308-2313 2315-231a 231c-2323 2329-232a 232c-232e 2332 2336 233d 233f-2340 2353 2370 237c 2393-2394 239b-23b9 23ce 23d0 23dc-23e7 2423 2460-2468 24b6-24ea 2500 2502 2506 2508 250a 250c 2510 2514 2518 251c 2524 252c 2534 253c 2550-256c 2571-2572 2584 2588 258c 2590-2593 25a1-25ff 2606 2609 260c 260e 2612 2621 2639-2644 2646-2649 2660-2667 2669-266b 266d-266f 267e 2680-2689 26a0 26a5 26aa-26ac 26b2 2709 2713 2720 272a 2736 273d 2772-2773 2780-2793 279b 27c1-27c9 27cc 27d0-27ef 27f1-27ff 2901-2aff 2b13-2b41 2b43-2b4c 2b50-2b54 3030 fb00-fb04 1d401-1d454 1d456-1d49c 1d49e-1d49f 1d4a2 1d4a5-1d4a6 1d4a9-1d4ac 1d4ae-1d4b9 1d4bb 1d4bd-1d4c3 1d4c5-1d505 1d507-1d50a 1d50d-1d514 1d516-1d51c 1d51e-1d539 1d53b-1d53e 1d540-1d544 1d546 1d54a-1d550 1d552-1d6a5 1d6a8-1d7c9 1d7ce-1d7ff """) # Assume fallback will work for these in general, but... cmap_ops.remove_all(cmap_ops.script_chars('LGC'), 'Zmth') cmap_ops.remove_all(cmap_ops.script_chars('SYM2'), 'Zmth') # Add all printable ASCII. We're not going to rely on fallback for these # after all. printable_ascii = tool_utils.parse_int_ranges('0020-007e') cmap_ops.add_all(printable_ascii, 'Zmth') # Add back blocks that get split up too arbitrarily cmap_ops.add_all(_block_cps('Mathematical Operators'), 'Zmth') cmap_ops.add_all(_block_cps('Miscellaneous Mathematical Symbols-B'), 'Zmth') # Add back some symbols for math/logic math_geom = tool_utils.parse_int_ranges( '25af/b3/b7/bd/c1/ca/fb', allow_compressed=True) cmap_ops.add_all(math_geom, 'Zmth') # Add dotted circle, we have combining marks cmap_ops.add(0x25cc, 'Zmth') # Add misc latin ops # plus/minus, multiply, divide, logical not # a7 is used in a variant of APL latin_misc = tool_utils.parse_int_ranges('b1 d7 f7 a7 ac') cmap_ops.add_all(latin_misc, 'Zmth') # Fill holes in math alpha blocks, again we don't fallback here after all. math_holes = tool_utils.parse_int_ranges( """ 2102/0a-0e/10-12/15/19-1d/24/28/2c-2d/2f-31/33-38/3c-40/45-49 """, allow_compressed=True) cmap_ops.add_all(math_holes, 'Zmth') # Add hebrew alef, bet, gimel, dalet cmap_ops.add_all(tool_utils.parse_int_ranges('2135-2138'), 'Zmth') # Add greek regular, we can have combining marks on them too # These correspond to the math greek alpha ranges greek_math_regular = tool_utils.parse_int_ranges( '391-3a1 3f4 3a3-3a9 2207 3b1-3c9 2202 3f5 3d1 3f0 3d5 3f1 3d6') cmap_ops.add_all(greek_math_regular, 'Zmth') # Add primes cmap_ops.add_all(tool_utils.parse_int_ranges('2032-2037 2057'), 'Zmth') # Duplicate some combining marks from LGC so they can apply to math chars more_combining_marks = tool_utils.parse_int_ranges('302-303 305 307-308 330') cmap_ops.add_all(more_combining_marks, 'Zmth') def _assign_dotted_circle(cmap_ops): """All scripts with combining marks should provide dotted circle (and provide an appropriate rendering of the mark in combination with it).""" cmap_ops.phase('assign dotted circle') def is_combining(cp): return unicode_data.category(cp) == 'Mn' # Note wikipedia shows Arabic marks placed w.r.t. tatweel, not the dotted # circle, but as using dotted circle is the convention used by Unicode in # their code charts we'll require it for Arabic too. script_to_chars = cmap_ops.create_script_to_chars() for script, charset in sorted(script_to_chars.iteritems()): if script == 'EXCL': continue nsm = frozenset(cp for cp in charset if is_combining(cp)) if nsm: count = len(nsm) range_str = tool_utils.write_int_ranges(sorted(nsm)[:8]) msg = '%s has %d marks: %s' % ( script, count, range_str if count < 8 else range_str + '...') cmap_ops.log(msg) cmap_ops.add(0x25CC, script) def _remove_unwanted(cmap_ops): """Remove characters we know we don't want in any font.""" # Chars we never want. unwanted_chars = tool_utils.parse_int_ranges(""" 0000-001f # C0 controls 007F # DEL 0080-009f # C1 controls FEFF # BOM""") # Chars we don't want, but perhaps a bit more provisionally than the # above. excluded_chars = tool_utils.parse_int_ranges(""" 332c # Jungshik says excluded on purpose fa70-fad9 # Jungshik says Ken regards DPRK compatibility chars as # outside of scope, like most of plane 2. 1b000-1b001 # Ken says these are controversial.""") cmap_ops.phase('remove unwanted') cmap_ops.remove_all_from_all(unwanted_chars, cmap_ops.all_scripts()) cmap_ops.add_all(unwanted_chars, 'EXCL') cmap_ops.phase('remove excluded') cmap_ops.remove_all_from_all(excluded_chars, cmap_ops.all_scripts()) cmap_ops.add_all(excluded_chars, 'EXCL') def _assign_wanted(cmap_ops): """After we remove the characters we 'never want', add exceptions back in to particular fonts.""" wanted_chars = { 'LGC': '20bf feff', # Bitcoin (not in Unicode 9 data yet), BOM 'MONO': 'feff', # BOM 'SYM2': '0000-001f 007f 0080-009f', # show as question mark char 'Zsye': 'fe4e5-fe4ee fe82c fe82e-fe837', # legacy PUA for android } cmap_ops.phase('assign wanted') for script in sorted(wanted_chars.keys()): chars = tool_utils.parse_int_ranges(wanted_chars[script]) cmap_ops.add_all(chars, script) def _assign_basic(cmap_ops): """Add NUL, CR, Space, NBS to all scripts.""" basic_chars = frozenset([0x0, 0x0D, 0x20, 0xA0]) cmap_ops.phase('assign basic') scripts_to_add = set(cmap_ops.all_scripts()) - set(['EXCL']) cmap_ops.add_all_to_all(basic_chars, scripts_to_add) def build_script_to_chars(log_level): if log_level == 0: log_events = False log_details = False else: log_events = True log_details = log_level > 1 script_to_chars = unicode_data.create_script_to_chars() # Bitcoin is not in our unicode 9 data yet, allow it to be set anyway. temp_defined = set([0x20bf]) cmap_ops = CmapOps( script_to_chars, log_events=log_events, log_details=log_details, undefined_exceptions=temp_defined) _remove_unicode_assignments(cmap_ops) _unassign_inherited_and_common_with_extensions(cmap_ops) _reassign_inherited(cmap_ops) _reassign_common(cmap_ops) _unassign_latin(cmap_ops) _assign_cldr_punct(cmap_ops) _reassign_merged_scripts(cmap_ops) _reassign_common_by_block(cmap_ops) _reassign_by_block(cmap_ops) _remove_empty(cmap_ops) _reassign_symbols(cmap_ops) _reassign_emoji(cmap_ops) _assign_nastaliq(cmap_ops) _assign_complex_script_extra(cmap_ops) _assign_hyphens_for_autohyphenation(cmap_ops) _assign_script_required(cmap_ops) _assign_script_special_chars(cmap_ops) _assign_legacy_phase2(cmap_ops) _assign_bidi_mirroring(cmap_ops) _unassign_lgc_from_symbols(cmap_ops) _assign_programming_lang_symbols(cmap_ops) _assign_symbols_from_groups(cmap_ops) _assign_mono(cmap_ops) # after LGC is defined except for basics _assign_sym2(cmap_ops) # after LGC removed, add back for enclosing keycaps _assign_math(cmap_ops) _assign_dotted_circle(cmap_ops) # for all fonts with combining marks _remove_unwanted(cmap_ops) # comes before assign_basic, assign_wanted _assign_wanted(cmap_ops) _assign_basic(cmap_ops) cmap_ops.finish() # so we can clean up log return cmap_ops.create_script_to_chars() def _merge_fallback_chars(script_to_chars, srcfile): xtra_cmap_data = cmap_data.read_cmap_data_file(srcfile) xtra_rowdata = cmap_data.create_map_from_table(xtra_cmap_data.table) merged_cmap = {} for script in sorted(script_to_chars): cmap = script_to_chars[script] xcmap = None if script in xtra_rowdata: rowdata = xtra_rowdata[script] xcount = int(getattr(rowdata, 'xcount', -1)) if xcount != -1: xcmap = tool_utils.parse_int_ranges(rowdata.xranges) cmap -= xcmap else: xcmap = None # not a tuple, so probably no fallback data else: print >> sys.stderr, 'no script %s found in %s' % (script, srcfile) merged_cmap[script] = (cmap, xcmap) return merged_cmap def _get_cmap_data(script_to_chars, metadata): tabledata = cmap_data.create_table_from_map(script_to_chars) return cmap_data.CmapData(metadata, tabledata) ### debug def _dump_primaries(): for block in unicode_data.block_names(): block_range = unicode_data.block_range(block) primary_script = _primary_script_for_block(block) print '%13s %6s %s' % ( '%04X-%04X' % block_range, '\'%s\'' % primary_script if primary_script else '------', block) def main(): DEFAULT_OUTFILE = 'noto_cmap_phase3_temp.xml' parser = argparse.ArgumentParser() parser.add_argument( '-o', '--outfile', help='name of cmap file to output ("%s" if name ' 'omitted)' % DEFAULT_OUTFILE, metavar='file', nargs='?', default=None, const=DEFAULT_OUTFILE) parser.add_argument( '-m', '--merge', help='merge excluded/fallback data from file', metavar='file') parser.add_argument( '-l', '--loglevel', help='log detail 0-2', metavar='level', nargs='?', type=int, const=1, default=0) parser.add_argument( '--regen', help='reformat script required data, no cmap generation', action='store_true') args = parser.parse_args() if args.regen: _regen_script_required() return script_to_chars = build_script_to_chars(args.loglevel) meta_params = [] if args.merge: script_to_chars = _merge_fallback_chars(script_to_chars, args.merge) meta_params.append(('mergefile', args.merge)) metadata = cmap_data.create_metadata('noto_cmap_reqs', meta_params) cmapdata = _get_cmap_data(script_to_chars, metadata) if args.outfile: cmap_data.write_cmap_data_file(cmapdata, args.outfile, pretty=True) print 'wrote %s' % args.outfile else: print cmap_data.write_cmap_data(cmapdata, pretty=True) if __name__ == "__main__": main() nototools-2017-09-25-tooling-for-phase3-update/nototools/noto_data.py000077500000000000000000000441051316231664500254550ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Noto-specific data about division of ranges between fonts. """ __author__ = "roozbeh@google.com (Roozbeh Pournader)" CJK_RANGES_TXT = """ # Core 3400..4DBF; CJK Unified Ideographs Extension A 4E00..9FFF; CJK Unified Ideographs F900..FAFF; CJK Compatibility Ideographs 20000..2A6DF; CJK Unified Ideographs Extension B 2A700..2B73F; CJK Unified Ideographs Extension C 2B740..2B81F; CJK Unified Ideographs Extension D 2F800..2FA1F; CJK Compatibility Ideographs Supplement AC00..D7AF; Hangul Syllables 1100..11FF; Hangul Jamo A960..A97F; Hangul Jamo Extended-A D7B0..D7FF; Hangul Jamo Extended-B 3130..318F; Hangul Compatibility Jamo 3040..309F; Hiragana 1B000..1B0FF; Kana Supplement 30A0..30FF; Katakana 31F0..31FF; Katakana Phonetic Extensions 3100..312F; Bopomofo 31A0..31BF; Bopomofo Extended # Others 3000..303F; CJK Symbols and Punctuation 3190..319F; Kanbun 31C0..31EF; CJK Strokes 3200..32FF; Enclosed CJK Letters and Months FE10..FE1F; Vertical Forms FE30..FE4F; CJK Compatibility Forms FE50..FE6F; Small Form Variants FF00..FFEF; Halfwidth and Fullwidth Forms 3300..33FF; CJK Compatibility 2FF0..2FFF; Ideographic Description Characters 2E80..2EFF; CJK Radicals Supplement 2F00..2FDF; Kangxi Radicals """ SYMBOL_RANGES_TXT = """ 20A0..20CF; Currency Symbols 20D0..20FF; Combining Diacritical Marks for Symbols 2100..214F; Letterlike Symbols 2190..21FF; Arrows 2200..22FF; Mathematical Operators 2300..23FF; Miscellaneous Technical 2400..243F; Control Pictures 2440..245F; Optical Character Recognition 2460..24FF; Enclosed Alphanumerics 2500..257F; Box Drawing 2580..259F; Block Elements 25A0..25FF; Geometric Shapes 2600..26FF; Miscellaneous Symbols 2700..27BF; Dingbats 27C0..27EF; Miscellaneous Mathematical Symbols-A 27F0..27FF; Supplemental Arrows-A 2800..28FF; Braille Patterns 2900..297F; Supplemental Arrows-B 2980..29FF; Miscellaneous Mathematical Symbols-B 2A00..2AFF; Supplemental Mathematical Operators 2B00..2BFF; Miscellaneous Symbols and Arrows 2E00..2E7F; Supplemental Punctuation 4DC0..4DFF; Yijing Hexagram Symbols A700..A71F; Modifier Tone Letters FFF0..FFFF; Specials 10100..1013F; Aegean Numbers 10140..1018F; Ancient Greek Numbers 10190..101CF; Ancient Symbols 101D0..101FF; Phaistos Disc 1D000..1D0FF; Byzantine Musical Symbols 1D100..1D1FF; Musical Symbols 1D200..1D24F; Ancient Greek Musical Notation 1D300..1D35F; Tai Xuan Jing Symbols 1D360..1D37F; Counting Rod Numerals 1D400..1D7FF; Mathematical Alphanumeric Symbols 1F000..1F02F; Mahjong Tiles 1F030..1F09F; Domino Tiles 1F0A0..1F0FF; Playing Cards 1F100..1F1FF; Enclosed Alphanumeric Supplement 1F200..1F2FF; Enclosed Ideographic Supplement 1F700..1F77F; Alchemical Symbols """ UNDER_DEVELOPMENT_RANGES_TXT = """ 0F00..0FFF; Tibetan """ DEEMED_UI_SCRIPTS_SET = frozenset({ 'Armn', # Armenian 'Cher', # Cherokee 'Ethi', # Ethiopic 'Geor', # Georgian 'Hebr', # Hebrew 'Sinh', # Sinhala 'Zsye', # Emoji }) # A mapping from scripts to ttfautohint script ids. # Most of the keys correspond to scripts we hinted for phase 2. # Additions are 'Cher' (which we didn't hint in phase 2), and # 'Latn', 'Grek', and 'Cyrl' (which we combine into LGC and don't # break out into seprate scripts). # A few scripts hinted in phase 2 are not listed by ttfautohint as # supported: 'Cham', 'Orya', 'Thaa', and 'Tibt'; these map to None. # # ttfautohint supports two version of Georgian identified by 'geor' # and 'geok', we assume 'geor'. HINTED_SCRIPTS = { 'Arab': 'arab', # Arabic 'Armn': 'armn', # Armenian 'Beng': 'beng', # Bengali 'Cham': None, # Cham 'Cher': 'cher', # Cherokee (not hinted in phase2) 'Cyrl': 'cyrl', # Cyrillic (part of LGC) 'Deva': 'deva', # Devanagari 'Ethi': 'ethi', # Ethiopic 'Geor': 'geor', # Georgian (Mkhedruli, not Khutsuri) 'Grek': 'grek', # Greek (part of LGC) 'Gujr': 'gujr', # Gujarati 'Guru': 'guru', # Gurmukhi 'Hebr': 'hebr', # Hebrew 'Khmr': 'khmr', # Khmer 'Knda': 'knda', # Kannada 'LGC': 'no-script', # LGC, autohint but not to any particular script 'Laoo': 'lao', # Lao (only one 'o' for ttfautohint) 'Latn': 'latn', # Latin (part of LGC) 'MONO': 'no-script', # MONO, autohint like lgc 'Mlym': 'mlym', # Malayalam 'Mymr': 'mymr', # Myanmar 'Orya': None, # Oriya 'Sinh': 'sinh', # Sinhala 'Taml': 'taml', # Tamil 'Telu': 'telu', # Telugu 'Thaa': None, # Thaana 'Thai': 'thai', # Thai 'Tibt': None, # Tibetan } # Range spec matches "Noto Nastaliq requirements" doc, Tier 1. URDU_RANGES = """ 0600..0604,060b..0614,061b,061c,061e..061f,0620,0621..063a, 0640..0659,065e..066d,0670..0673,0679,067a..067b,067c,067d, 067e,067f..0680,0681,0683..0684,0685..0686,0687,0688..0689, 068a,068b,068c..068d,068e,068f,0691,0693,0696,0698,0699, 069a,069e,06a6,06a9,06ab,06af..06b0,06b1,06b3,06b7,06ba, 06bb,06bc,06be,06c0..06c4,06cc..06cd,06d0,06d2..06d5, 06dd..06de,06e9,06ee..06ef,06f0..06f9,06ff,0759,075c,0763, 0767..0769,076b..077d,08ff,fbb2..fbc1,fd3e..fd3f,fdf2, fdfa..fdfd""" # Only these two characters are required for Urdu from the Arabic # extra characters needed. URDU_EXTRA = "2010..2011" def _char_set(compact_set_text): result = set() prev = -1 for part in compact_set_text.split(','): sep_index = part.find('..') if sep_index == -1: cp = int(part, base=16) assert cp > prev # print '%04x' % cp result.add(cp) prev = cp else: start = int(part[:sep_index], base=16) end = int(part[sep_index + 2:], base=16) # print '%04x..%04x' % (start, end) assert start > prev assert end > start for cp in range(start, end + 1): result.add(cp) prev = end return result def urdu_set(): return _char_set(URDU_RANGES) | _char_set(URDU_EXTRA) def ascii_letters(): return _char_set('0041..005a,0061..007a') def char_range(start, end): return range(start, end+1) COPTIC_EPACT = char_range(0x102E0, 0x102FB) ARABIC_MATH = char_range(0x1EE00, 0x1EEF1) P3_EXTRA_CHARACTERS_NEEDED = { # nothing additional outside block 'Ahom': [ ], # According to Roozbeh (and existing fonts) the following punctuation and # digits are used with and interact with Arabic characters. 'Arab': char_range(0x0030, 0x0039) + [ # exclamation mark, comma, full stop, colon, NBS, guillimets 0x0021, 0x002c, 0x002e, 0x003a, 0x00a0, 0x00ab, 0x00bb, 0x06dd, # Arabic end of Ayah 0x2010, 0x2011, # Hyphen and non-breaking hyphen need different shapes 0x204F, 0x2E41, # For Sindhi 0xfd3e, 0xfd3f], # ornate left and right paren (in Noto Naskh) # like Arabic, but Sindi is not written in Nastaliq so omitted. 'Aran': char_range(0x0030, 0x0039) + [ # exclamation mark, comma, full stop, colon, NBS, guillimets 0x0021, 0x002c, 0x002e, 0x003a, 0x00a0, 0x00ab, 0x00bb, 0x06dd, # Arabic end of Ayah 0x2010, 0x2011, # Hyphen and non-breaking hyphen need different shapes 0xfd3e, 0xfe3f], # ornate left and right paren (in Noto Naskh) # Characters referenced in Armenian encoding cross ref page as shown in # see http://www.unicode.org/L2/L2010/10354-n3924-armeternity.pdf # also see http://man7.org/linux/man-pages/man7/armscii-8.7.html # left and right paren, comma, hyphen-minus, period, section, # no break space, left and right guillimet, hyphen, em dash, ellipsis # presentation forms FB13-FB17 'Armn': [0x0028, 0x0029, 0x002C, 0x002D, 0x002E, 0x00A0, 0x00A7, 0x00AB, 0x00BB, 0x2010, 0x2014, 0x2026], 'Avst': [0x2E30, 0x2E31, # From Core Specification and NamesList.txt 0x200C], # www.unicode.org/L2/L2007/07006r-n3197r-avestan.pdf # From http://www.unicode.org/L2/L2014/14064r-n4537r-cherokee.pdf section 8 'Cher': [ 0x0300, 0x0301, 0x0302, 0x0304, 0x030B, 0x030C, 0x0323, 0x0324, 0x0330, 0x0331], # From Core Specification: # period, colon, semicolon, middle dot # combining: grave, macron, overline, dot above, double overline # greek numeral sign, greek lower numeral sign, comb macrons (lh, rh, cj) # from http://std.dkuug.dk/JTC1/SC2/WG2/docs/n2636.pdf # oblique double hyphen, diaeresis, apostrophe, comb. circumflex, acute, # hyphen-minus, hyphen 'Copt': [ 0x002E, 0x003A, 0x003B, 0x00B7, 0x0300, 0x0304, 0x0305, 0x0307, 0x033F, 0x0374, 0x0375, 0xFE24, 0xFE25, 0xFE26, 0x2E17, 0x0308, 0x2019, 0x0302, 0x0301, 0x002D, 0x2010, ], # Elbasan # see http://www.unicode.org/L2/L2011/11050-n3985-elbasan.pdf # adds combining overbar and greek numerals for ones and tens, and # both stigma/digamma for 6. # greek capital alpha beta gamma delta epsilon stigma/digamma zeta eta theta # iota kappa lambda mu nu xi omicron pi koppa 'Elba': [0x00B7, 0x0305, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x03DA, 0x03DD, 0x0396, 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 0x03A0, 0x03DE], # Ethiopic # See http://abyssiniagateway.net/fidel/l10n/ # Recommends combining diaeresis 'for scholarly use', should look Ethiopian. # Also claims hyphen is not used, but a wikipedia page in Amharic does use # it, see # https://am.wikipedia.org/wiki/1_%E1%8A%A5%E1%88%BD%E1%88%98-%E1%8B%B3%E1%8C%8B%E1%8A%95 # Western numerals and punctuation should look heavier to match the Ethiopic. # A keyboard standard is here: # See http://www.mcit.gov.et/documents/1268465/1282796/Keyboard+Layout+Standard/a8aa75ca-e125-4e25-872e-380e2a9b2313 # digits # combining diaeresis (from abyssiniagateway site) # plus sign, comma, hyphen-minus, period, forward-slash # equals sign, question mark, left and right single and double curly quotes # left and right pointing double angle quotation marks, vertical three dot # (plus sign to here all from keyboard doc) # exclamation point, left paren, right paren, ellipsis (web sites use them) # hyphen (used in hyphenated names in Amharaic, see wikipedia page) 'Ethi': char_range(0x0030, 0x0039) + [ 0x0308, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, 0x003D, 0x003F, 0x2018, 0x2019, 0x201C, 0x201D, 0x00AB, 0x00BB, 0x22EE, 0x0021, 0x0028, 0x0029, 0x2026, 0x2010], # Georgian # see example news article: http://www.civil.ge/geo/article.php?id=29970 # ascii digits, # exclamation mark, percent, open/close paren, comma, hyphen-minus, # period, colon, semicolon, no break space (appears to be used in numbers) # em-dash, left double quotation mark, double low-9 quotation mark, ellipsis # see core standard: # middle dot, word separator middle dot, archaic punctuation (includes two # dot punctuation at 205A) 'Geor': char_range(0x0030, 0x0039) + [ 0x0021, 0x0025, 0x0028, 0x0029, 0x002C, 0x002D, 0x002E, 0x003A, 0x003B, 0x00A0, 0x2014, 0x201C, 0x201E, 0x2026, 0x00B7, 0x2E31] + char_range(0x2056, 0x205E) + char_range(0x2E2A, 0x2E2D), # Hatran # see http://www.unicode.org/L2/L2012/12312-n4324-hatran.pdf (most info, but # not latest assignment, which doesn't have all digits shown here) # single and double vertical line, also ZWNJ in case ligatures need breaking # might want to ligate hatran digit 1 forms 11 (2), 111 (3), 1111 (4) to # look as the suggested (dropped) digits were represented in the doc. 'Hatr': [ 0x007C, 0x2016, 0x200C ], # Anatolian Hieroglyphs # see http://www.unicode.org/L2/L2012/12213-n4282-anatolian.pdf 'Hluw': [0x200B], # Old Hungarian # see http://www.unicode.org/L2/L2012/12168r-n4268r-oldhungarian.pdf # letters with LTR override mirror reverse (!) "which has to be handled by # the rendering engine" # ZWJ, middle dot, two dot punctuation, tricolon, vertical four dots # plus 'standard European punctuation:' # exclamation, comma, hyphen-minus, period, colon, # double high-reversed-9 quote, reversed semicolon, reversed question mark, # reversed comma, double low-reversed-9 quote, # hyphen (the official one) 'Hung': [ 0x200D, 0x2E31, 0x205A, 0x205D, 0x205E, 0x0021, 0x002C, 0x002D, 0x002E, 0x003A, 0x201F, 0x204F, 0x2E2E, 0x2E41, 0x2E42, 0x2010, ], # latin 1 and 2 'LGC': char_range(0x20, 0x7e) + char_range(0xa0, 0xff), 'Lisu': [0x02BC, 0x02CD], # From Core Specification # Meriotic Cursive # see http://www.unicode.org/L2/L2009/09188r-n3646-meroitic.pdf # colon, horizontal ellipsis, tricolon 'Merc': [ 0x003A, 0x2026, 0x205D ], # Multani # see http://www.unicode.org/L2/L2012/12316-multani.pdf # Digits unified with Gurmukhi, but 6 and 7 look like Devanagari, it says. # Glyphic variant of section mark 0x112A9, but how would we represent it... 'Mult': char_range(0x0A66, 0x0A6F), # Sharada # see http://www.unicode.org/L2/L2009/09074-sharada.pdf # also see http://www.unicode.org/L2/L2015/15255-sharada-vocalic-vs.pdf # which requests a change in the representative glyphs of 111ba and 111bb # (below vowel signs) # Seems self-contained, no other punctuation. 'Shrd': [ ], # Siddham # see http://www.unicode.org/L2/L2012/12234r-n4294-siddham.pdf # most use in Aast Asia 'Sidd': [ ], # Sign Writing # As with music notation, we can't lay this out. Generative glyphs for lots # of hand positions... 'Sgnw': [ ], 'Sylo': [0x2055], # From Core Specification # From Core Specification 'Syrc': [ 0x0303, 0x0304, 0x0307, 0x0308, 0x030A, 0x0320, 0x0323, 0x0324, 0x0325, 0x032D, 0x032E, 0x0330, 0x060C, 0x061B, 0x061F, 0x0640] + char_range(0x064B, 0x0652), # From Core Specification & http://www.unicode.org/L2/L2001/01369-n2372.pdf 'Tale': [0x0300, 0x0301, 0x0307, 0x0308, 0x030C], # From Core Specificaion and # http://www.unicode.org/L2/L2010/10407-ext-tamil-follow2.pdf 'Taml': [0x00B2, 0x00B3, 0x2074, 0x2082, 0x2083, 0x2084], # From Core Specification and # http://www.unicode.org/L2/L2010/10451-patani-proposal.pdf 'Thai': [0x02BC, 0x02D7, 0x0303, 0x0331], 'Zmth': ARABIC_MATH, # Azerbaijani manat, Russian ruble, and Georgian Lari # Roozbeh says Coptic Epact doesn't belong in the Arabic fonts, though it's # used with Arabic. 'Zsym': [0x20BC, 0x20BD, 0x20BE] + COPTIC_EPACT, } EXTRA_CHARACTERS_NEEDED = { 'Arab': [ 0x2010, 0x2011, # Hyphen and non-breaking hyphen need different shapes 0x204F, 0x2E41], # For Sindhi 'Avst': [0x2E30, 0x2E31], # From Core Specification and NamesList.txt # From http://www.unicode.org/L2/L2014/14064r-n4537r-cherokee.pdf section 8 'Cher': [ 0x0300, 0x0301, 0x0302, 0x0304, 0x030B, 0x030C, 0x0323, 0x0324, 0x0330, 0x0331], # From Core Specification 'Copt': [ 0x0300, 0x0304, 0x0305, 0x0307, 0x033F, 0x0374, 0x0375, 0xFE24, 0xFE25, 0xFE26], # latin 1 and 2 'LGC': char_range(0x20, 0x7e) + char_range(0xa0, 0xff), 'Lisu': [0x02BC, 0x02CD], # From Core Specification 'Sylo': [0x2055], # From Core Specification # From Core Specification 'Syrc': [ 0x0303, 0x0304, 0x0307, 0x0308, 0x030A, 0x0320, 0x0323, 0x0324, 0x0325, 0x032D, 0x032E, 0x0330, 0x060C, 0x061B, 0x061F, 0x0640] + char_range(0x064B, 0x0652), # From Core Specification & http://www.unicode.org/L2/L2001/01369-n2372.pdf 'Tale': [0x0300, 0x0301, 0x0307, 0x0308, 0x030C], # From Core Specificaion and # http://www.unicode.org/L2/L2010/10407-ext-tamil-follow2.pdf 'Taml': [0x00B2, 0x00B3, 0x2074, 0x2082, 0x2083, 0x2084], # From Core Specification and # http://www.unicode.org/L2/L2010/10451-patani-proposal.pdf 'Thai': [0x02BC, 0x02D7, 0x0303, 0x0331], # Azerbaijani manat, Russian ruble, and Georgian Lari 'Zsym': [0x20BC, 0x20BD, 0x20BE], } LGC_CHARACTERS_NOT_NEEDED = frozenset( char_range(0x0370, 0x0373) + [0x0376, 0x0377, 0x03CF, 0x0951, 0x0952, 0x1E9C, 0x1E9D, 0x1E9F] + char_range(0x1EFA, 0x1EFF) + [0x2071] + char_range(0x2095, 0x209C) + char_range(0x2160, 0x2183) + char_range(0x2185, 0x2188) + char_range(0x2C6E, 0x2C70) + char_range(0x2C78, 0x2C7F) + char_range(0x2DE0, 0x2DFF) + char_range(0xA640, 0xA673) + char_range(0xA67C, 0xA697) + char_range(0xA722, 0xA787) + [0xA78D, 0xA78E, 0xA790, 0xA791] + char_range(0xA7A0, 0xA7A9) + char_range(0xA7FA, 0xA7FF) + [0xA92E, 0xFB00, 0xFB05, 0xFB06]) P3_CHARACTERS_NOT_NEEDED = { 'Arab': char_range(0x10E60, 0x10E7E) + COPTIC_EPACT + ARABIC_MATH, 'Latn': LGC_CHARACTERS_NOT_NEEDED, 'LGC': LGC_CHARACTERS_NOT_NEEDED, } CHARACTERS_NOT_NEEDED = { 'Arab': char_range(0x10E60, 0x10E7E), 'Latn': LGC_CHARACTERS_NOT_NEEDED, 'LGC': LGC_CHARACTERS_NOT_NEEDED, } ACCEPTABLE_AS_COMBINING = { 0x02DE, # MODIFIER LETTER RHOTIC HOOK } def get_extra_characters_needed(script, phase): try: if phase == 2: return set(EXTRA_CHARACTERS_NEEDED[script]) if phase == 3: return set(P3_EXTRA_CHARACTERS_NEEDED[script]) except KeyError: pass return set() def get_characters_not_needed(script, phase): try: if phase == 2: return set(CHARACTERS_NOT_NEEDED[script]) if phase == 3: return set(P3_CHARACTERS_NOT_NEEDED[script]) except KeyError: pass return set() nototools-2017-09-25-tooling-for-phase3-update/nototools/noto_font_cmaps.py000077500000000000000000000115161316231664500266750ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2016 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Dump cmap info from noto font familes in lint_cmap_reqs format.""" import argparse import collections import datetime import os from os import path import sys from fontTools import ttLib from nototools import cldr_data from nototools import cmap_data from nototools import lint_config from nototools import noto_data from nototools import noto_fonts from nototools import noto_lint from nototools import opentype_data from nototools import unicode_data def report_set_differences(name_to_cpset, out=sys.stderr): """Report differences, assuming they are small.""" # this does ok with 2 or 3 highly overlapping sets, but it will # be unintelligible in other cases. additional = '' while len(name_to_cpset): common = None if len(name_to_cpset) > 1: for name, cpset in name_to_cpset.iteritems(): if common == None: common = cpset.copy() else: common &= cpset if common: name = ', '.join(sorted(name_to_cpset)) print >> out, '%d%s in common among %s:' % ( len(common), additional, name) print >> out, lint_config.write_int_ranges(common) for name, cpset in sorted(name_to_cpset.iteritems()): extra = cpset - common if extra: name_to_cpset[name] = extra else: print >> out, '%s has no additional' % name del name_to_cpset[name] additional = ' additional' continue for name, cpset in sorted(name_to_cpset.iteritems()): print >> out, '%s has %d%s:' % (name, len(cpset), additional) print >> out, lint_config.write_int_ranges(cpset) break def font_cmap_data(paths): """Return CmapData for (almost) all the noto font families.""" args = [('paths', paths)] if paths else None metadata = cmap_data.create_metadata('noto_font_cmaps', args) def use_in_web(font): return (not font.subset and not font.fmt == 'ttc' and not font.script in {'CJK', 'HST'} and not font.family in {'Arimo', 'Cousine', 'Tinos'}) if not paths: paths = noto_fonts.NOTO_FONT_PATHS fonts = filter(use_in_web, noto_fonts.get_noto_fonts(paths=paths)) families = noto_fonts.get_families(fonts) ScriptData = collections.namedtuple('ScriptData', 'family_name,script,cpset') script_to_data = collections.defaultdict(list) for family in families.values(): script = family.rep_member.script family_name = family.name cpset = family.charset script_to_data[script].append(ScriptData(family_name, script, cpset)) def report_data_error(index, script_data): print >> sys.stderr, ' %d: %s, %d, %s' % ( index, script_data.family_name, script_data.script, len(script_data.cpset), lint_config.write_int_ranges(script_data.cpset)) script_to_cmap = {} for script in sorted(script_to_data): data = script_to_data[script] selected_cpset = data[0].cpset if len(data) > 1: differ = False for i in range(1, len(data)): test_data = data[i] for j in range(i): if data[j].cpset != test_data.cpset: differ = True if len(test_data.cpset) > len(selected_cpset): selected_cpset = test_data.cpset if differ: print >> sys.stderr, '\nscript %s cmaps differ' % script differences = {i.family_name: i.cpset for i in data} report_set_differences(differences) script_to_cmap[script] = selected_cpset tabledata = cmap_data.create_table_from_map(script_to_cmap) return cmap_data.CmapData(metadata, tabledata) def main(): DEFAULT_OUTFILE = 'font_cmaps_temp.xml' parser = argparse.ArgumentParser() parser.add_argument( '-o', '--outfile', help='output file to write ("%s" if no name provided)' % DEFAULT_OUTFILE, metavar='name', nargs='?', default=None, const=DEFAULT_OUTFILE) parser.add_argument( '-p', '--paths', help='list of directory paths to search for noto fonts ' '(default is standard noto phase2 paths)', metavar='path', nargs='*', default=None) args = parser.parse_args() cmapdata = font_cmap_data(args.paths) if args.outfile: cmap_data.write_cmap_data_file(cmapdata, args.outfile, pretty=True) else: print cmap_data.write_cmap_data(cmapdata, pretty=True) if __name__ == "__main__": main() nototools-2017-09-25-tooling-for-phase3-update/nototools/noto_font_coverage.py000077500000000000000000000112411316231664500273600ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2015 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """A tool to output charmap coverage of the noto font families.""" import argparse import collections from nototools import noto_fonts def print_names(families): """Write the names of the families in sorted order.""" family_names = [family.name for family in families.itervalues()] for name in sorted(family_names): print name def check_cp(families, cp): return set([family.name for family in families.itervalues() if cp in family.charset]) def codepoints(cp_list): result = set() for cp in cp_list: if '-' in cp: low, high = cp.split('-') low = int(low, 16) high = int(high, 16) if (low > high): temp = low low = high high = temp for cp in range(low, high + 1): result.add(cp) else: result.add(int(cp, 16)) return result def to_ranges_str(cps): if not cps: return '' cps = sorted(cps) ranges = [] def emit(first, last): if first != last: ranges.append('%04x-%04x' % (first, last)) else: ranges.append('%04x' % first) first = cps[0] last = first for cp in cps[1:]: if cp == last + 1: last = cp else: emit(first, last) first = cp last = cp emit(first, last) return ' '.join(ranges) def run(args, families): if args.names: print_names(families) cp_to_families = collections.defaultdict(set) if args.each: def each_emit(out_cps, out_families): if out_families: out_family_str = '\n '.join(sorted(out_families)) else: out_family_str = '' print '%s:\n %s' % (to_ranges_str(out_cps), out_family_str) cps = codepoints(args.each) print 'families that contain any of %s, by cp' % to_ranges_str(cps) for family in families.itervalues(): family_cps = family.charset & cps for cp in family_cps: cp_to_families[cp].add(family.name) if not cp_to_families: print 'no family supports any codepoint' else: cp_list = sorted(cps) cp = cp_list[0] out_cps = [cp] out_families = cp_to_families[cp] for cp in cp_list[1:]: next_families = cp_to_families[cp] if out_families == next_families: out_cps.append(cp) else: each_emit(out_cps, out_families) out_cps = [cp] out_families = next_families each_emit(out_cps, out_families) if args.any: missing = set() result = {} cps = sorted(codepoints(args.any)) print 'families that contain any of %s' % to_ranges_str(cps) for cp in cps: family_names = check_cp(families, cp) if family_names: for family in family_names: if family in result: result[family].add(cp) else: result[family] = set([cp]) else: missing.add(cp) if result: for k, v in sorted(result.iteritems()): print ' %s: %s' % (k, to_ranges_str(v)) if missing: print ' not supported: %s' % to_ranges_str(missing) if args.all: cps = sorted(codepoints(args.all)) print 'families that contain all of %s' % to_ranges_str(cps) result = set([family.name for family in families.itervalues()]) for cp in cps: family_names = check_cp(families, cp) result &= family_names if result: print '\n'.join([' %s' % name for name in sorted(result)]) else: print 'no family contains all the codepoints' def main(): parser = argparse.ArgumentParser() parser.add_argument('--names', help='print family names', action='store_true') parser.add_argument('--each', help='for each code point, show supporting families', metavar='cp', nargs='+') parser.add_argument('--any', help='show families that support any of the codepoints', metavar='cp', nargs='+') parser.add_argument('--all', help='show families that support all of the codepoints', metavar='cp', nargs='+') args = parser.parse_args() fonts = noto_fonts.get_noto_fonts() families = noto_fonts.get_families(fonts) run(args, families) if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/nototools/noto_fonts.py000066400000000000000000000502071316231664500256720ustar00rootroot00000000000000# Copyright 2015 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Some utilities to identify Noto fonts and collect them into families""" import argparse import collections import os from os import path import re import sys from fontTools import ttLib from nototools import cldr_data from nototools import coverage from nototools import font_data from nototools import lang_data from nototools import notoconfig from nototools import noto_data from nototools import tool_utils from nototools import unicode_data # The '[xxx]' syntax is used to get the noto-xxx value from notoconfig. # for now we exclude alpha, the phase 3 fonts are here but we don't use # them yet. NOTO_FONT_PATHS = [ '[fonts]/hinted', '[fonts]/unhinted', '[emoji]/fonts', '[cjk]'] ODD_SCRIPTS = { 'CJKjp': 'Jpan', 'CJKkr': 'Kore', 'CJKsc': 'Hans', 'CJKtc': 'Hant', 'JP': 'Jpan', 'KR': 'Kore', 'SC': 'Hans', 'TC': 'Hant', 'NKo': 'Nkoo', 'SumeroAkkadianCuneiform': 'Xsux', 'Symbols': 'Zsym', 'Emoji': 'Zsye', } def convert_to_four_letter(script_name): """Converts a script name from a Noto font file name to ISO 15924 code.""" if not script_name: raise ValueError('empty script name') if script_name in ODD_SCRIPTS: return ODD_SCRIPTS[script_name] script_code = unicode_data.script_code(script_name) if script_code == 'Zzzz': raise ValueError('no script for %s' % script_name) return script_code def preferred_script_name(script_key): # Returns the script_key if we have nothing else. try: return unicode_data.human_readable_script_name(script_key) except: return cldr_data.get_english_script_name(script_key) _script_key_to_report_name = { 'Aran': '(Urdu)', # phase 2 usage 'HST': '(Historic)', 'LGC': '(LGC)', 'SYM2': 'Symbols2' } def script_name_for_report(script_key): return (_script_key_to_report_name.get(script_key, None) or preferred_script_name(script_key)) # NotoFont maps a font path to information we assume the font to have, based # on Noto path and naming conventions: # - filepath: the path name from which we derived the information # - family: family name, e.g. 'Arimo', 'Noto' # - style: type style, e.g. 'Sans', 'Serif', might be None # - script: four-letter script code or 'private use' code like 'Aran', 'LGC', # 'HST' # - variant: script variant like 'UI' or Syriac variants like 'Estrangela' # - width: width name ('Condensed') or None # - weight: weight name # - slope: slope name ('Italic') or None # - fmt: 'ttf', 'otf', or 'otc' # - manufacturer: 'Adobe', 'Google', 'Khmertype', or 'Monotype' # - license_type: 'sil' or 'apache' # - is_hinted: boolean, true if hinted # - is_mono: boolean, true if monospace (currently CJK Latin range, or legacy # LGC Mono) # - is_display: boolean, true if display # - is_UI: boolean, true if has UI in the name # - is_UI_metrics: boolean true if must have UI metrics # - is_cjk: boolean, true if a CJK font (from Adobe) # - subset: name of cjk subset (KR, JA, SC, TC) for reduced-charset fonts # targeted at these languages NotoFont = collections.namedtuple( 'NotoFont', 'filepath, family, style, script, variant, width, weight, slope, ' 'fmt, manufacturer, license_type, is_hinted, is_mono, is_UI, is_UI_metrics, ' 'is_display, is_cjk, subset') # These are the ideal pseudo-css weights. 'ideal', because windows GDI limits us # to weights >= 250 if we are to prevent auto-bolding, and 'pseudo-css' because # css limits us to multiples of 100 currently. The hope is that both of these # restrictions eventually go away, so we encode the values as we wish they would # be, and adjust when necessary based on context. WEIGHTS = { 'Thin': 100, 'ExtraLight': 200, 'Light': 300, 'DemiLight': 350, # used in cjk fonts 'Regular': 400, 'Medium': 500, 'SemiBold': 600, 'Bold': 700, 'ExtraBold': 800, 'Black': 900 } _FONT_NAME_REGEX = ( # family should be prepended - this is so Roboto can be used with unittests # that use this regex to parse. '(Sans|Serif|Naskh|Kufi|Nastaliq|Emoji|ColorEmoji|Music)?' '(Mono(?:space)?)?' '(.*?)' '(Eastern|Estrangela|Western|Slanted|New|Unjoined)?' '(UI)?' '(Display)?' '-?' '((?:Semi|Extra)?Condensed)?' '(|%s)?' % '|'.join(WEIGHTS.keys()) + '(Italic)?' '\.(ttf|ttc|otf)') _EXT_REGEX = re.compile(r'.*\.(?:ttf|ttc|otf)$') def get_noto_font(filepath, family_name='Arimo|Cousine|Tinos|Noto', phase=3): """Return a NotoFont if filepath points to a noto font, or None if we can't process the path.""" filedir, filename = os.path.split(filepath) if not filedir: filedir = os.getcwd() match = match_filename(filename, family_name) if match: (family, style, mono, script, variant, ui, display, width, weight, slope, fmt) = match.groups() else: if _EXT_REGEX.match(filename): print >> sys.stderr, '%s did not match font regex' % filename return None is_cjk = filedir.endswith('noto-cjk') license_type = 'sil' if script in ['JP', 'KR', 'TC', 'SC']: subset = script else: subset = None # Special-case emoji style # (style can be None for e.g. Cousine, causing 'in' to fail, so guard) if style and 'Emoji' in style: script = 'Zsye' if style == 'ColorEmoji': style = 'Emoji' variant = 'color' if style and 'Music' in style: script = 'MUSE' is_mono = mono == 'Mono' if width not in [None, '', 'Condensed', 'SemiCondensed', 'ExtraCondensed']: print >> sys.stderr, 'noto_fonts: Unexpected width "%s"' % width if width in ['SemiCond', 'Narrow']: width = 'SemiCondensed' elif width == 'Cond': width = 'Condensed' else: width = '#'+ width + '#' if not script: if is_mono: script = 'MONO' else: script = 'LGC' elif script == 'Urdu': # Use 'Aran' for languages written in the Nastaliq Arabic style, like Urdu. # The font naming uses 'Urdu' which is not a script, but a language. assert family == 'Noto' and style == 'Nastaliq' script = 'Aran' elif script == 'Historic': script = 'HST' elif script == 'CJK': # leave script as-is pass elif script == 'Symbols2': script = 'SYM2' elif script not in ['MUSE', 'Zsye']: # assigned above try: script = convert_to_four_letter(script) except ValueError: print >> sys.stderr, 'unknown script: %s for %s' % (script, filename) return None if not weight: weight = 'Regular' is_UI = ui == 'UI' is_UI_metrics = is_UI or style == 'Emoji' or ( style == 'Sans' and script in noto_data.DEEMED_UI_SCRIPTS_SET) is_display = display == 'Display' if is_cjk: is_hinted = True elif filedir.endswith('alpha') or 'emoji' in filedir: is_hinted = False else: hint_status = path.basename(filedir) if (hint_status not in ['hinted', 'unhinted'] and 'noto-source' not in filedir): # print >> sys.stderr, ( # 'unknown hint status for %s, defaulting to unhinted') % filedir pass is_hinted = hint_status == 'hinted' manufacturer = ( 'Adobe' if is_cjk else 'Google' if script == 'Zsye' and variant == 'color' else 'Khmertype' if phase < 3 and script in ['Khmr', 'Cham', 'Laoo'] else 'Monotype') return NotoFont( filepath, family, style, script, variant, width, weight, slope, fmt, manufacturer, license_type, is_hinted, is_mono, is_UI, is_UI_metrics, is_display, is_cjk, subset) def match_filename(filename, family_name): """Match just the file name.""" return re.match('(%s)' % family_name + _FONT_NAME_REGEX, filename) def parse_weight(name): """Parse the weight specifically from a name.""" match = re.search('|'.join(WEIGHTS.keys()), name) if not match: return 'Regular' return match.group(0) def script_key_to_scripts(script_key): """Return a set of scripts for a script key. The script key is used by a font to define the set of scripts it supports. Some keys are ours, e.g. 'LGC', and some are standard script codes that map to multiple scripts, like 'Jpan'. In either case we need to be able to map a script code (either unicode character script code, or more general iso script code) to a font, and we do so by finding it in the list returned here.""" if script_key == 'LGC': return frozenset(['Latn', 'Grek', 'Cyrl']) elif script_key == 'Aran': return frozenset(['Arab']) elif script_key == 'HST': raise ValueError('!do not know scripts for HST script key') elif script_key == 'MONO': # TODO: Mono doesn't actually support all of Latn, we need a better way # to deal with pseudo-script codes like this one. return frozenset(['Latn']) elif script_key in ['MUSE', 'SYM2']: return frozenset(['Zsym']) else: return lang_data.script_includes(script_key) def script_key_to_primary_script(script_key): """We need a default script for a font, and fonts using a 'script key' support multiple fonts. This lets us pick a default sample for a font based on it. The sample is named with a script that can include 'Jpan' so 'Jpan' should be the primary script in this case.""" if script_key == 'LGC': return 'Latn' if script_key == 'Aran': return 'Arab' if script_key == 'HST': raise ValueError('!do not know scripts for HST script key') if script_key == 'MONO': return 'Latn' if script_key in ['MUSE', 'SYM2']: return 'Zsym' if script_key not in lang_data.scripts(): raise ValueError('!not a script key: %s' % script_key) return script_key def noto_font_to_family_id(notofont): # exclude 'noto-' from head of key, they all start with it except # arimo, cousine, and tinos, and we can special-case those. # For cjk with subset we ignore script and use 'cjk' plus the subset. # For cjk, we ignore the mono/non-mono distinctions, since we don't # display different samples or provide different download bundles based # on this. tags = [] if notofont.family != 'Noto': tags.append(notofont.family) if notofont.style: tags.append(notofont.style) if notofont.is_mono and not notofont.is_cjk: tags.append('mono') if notofont.is_cjk and notofont.subset: tags.append('cjk') tags.append(notofont.subset) else: # Sans Mono should get tag sans-mono, but 'Mono' (phase 2 name) should get # tag mono-mono, and Sans/Serif Mono CJK should not include mono in tag. # Above we've already added mono for non-cjk fonts, so if the style is not # empty we don't want to add mono a second time. if not (notofont.style and notofont.script.lower() == 'mono'): tags.append(notofont.script) if notofont.variant: tags.append(notofont.variant) key = '-'.join(tags).lower() return key def noto_font_to_wws_family_id(notofont): """Return an id roughly corresponding to the wws family. Used to identify naming rules for the corresponding fonts. Compare to noto_font_to_family_id, which corresponds to a preferred family and is used to determine the language support for those fonts. For example, 'Noto Sans Devanagari UI' and 'Noto Sans Devanagari' support the same languages (e.g. have the same cmap) but have different wws family names and different name rules (names for the UI variant use very short abbreviations). CJK font naming does reflect 'mono' so we add it back to the id.""" id = noto_font_to_family_id(notofont) if notofont.is_cjk and notofont.is_mono: id += '-mono' if notofont.is_UI: id += '-ui' if notofont.is_display: id += '-display' return id _special_wws_names = { 'arimo-lgc': ['Arimo'], 'cousine-lgc': ['Cousine'], 'emoji-zsye': ['Noto', 'Emoji'], 'emoji-zsye-color': ['Noto', 'Color', 'Emoji'], 'kufi-arab': ['Noto', 'Kufi', 'Arabic'], 'mono-mono': ['Noto', 'Mono'], 'music-muse': ['Noto', 'Music'], 'naskh-arab': ['Noto', 'Naskh', 'Arabic'], 'naskh-arab-ui': ['Noto', 'Naskh', 'Arabic', 'UI'], 'nastaliq-aran': ['Noto', 'Nastaliq', 'Urdu'], 'tinos-lgc': ['Tinos'], } def wws_family_id_to_name_parts(wws_id): """Return the list of family name parts corresponding to the wws id.""" # first handle special cases: parts = _special_wws_names.get(wws_id) if parts: return parts part_keys = wws_id.split('-') key = part_keys[0] if key == 'sans': parts = ['Noto', 'Sans'] elif key == 'serif': parts = ['Noto', 'Serif'] script = part_keys[1] if script == 'lgc': # do nothing, we don't label this pseudo-script pass elif script == 'cjk': if len(part_keys) == 2: parts.append('CJK') else: parts.append(part_keys[2].upper()) elif script in ['hans', 'hant', 'jpan', 'kore']: # mono comes before CJK in the name if len(part_keys) > 2 and part_keys[2] == 'mono': parts.append('Mono') part_keys = part_keys[:2] # trim mono so we don't try to add it again parts.append('CJK') if script == 'hans': parts.append('sc') elif script == 'hant': parts.append('tc') elif script == 'jpan': parts.append('jp') else: parts.append('kr') elif script == 'sym2': parts.append('Symbols2') else: # Mono works as a script. The phase 2 'mono-mono' tag was special-cased # above so it won't get added a second time. script_name = preferred_script_name(script.title()) script_name = script_name.replace(' ', '').replace("'", '').replace('-', '') parts.append(script_name) if len(part_keys) > 2: extra = part_keys[2] if extra in ['tc', 'sc', 'jp', 'kr']: pass elif extra == 'ui': parts.append('UI') elif extra in ['eastern', 'estrangela', 'western', 'display', 'unjoined']: parts.append(extra.title()) else: raise Exception('unknown extra tag in %s' % wws_id) return parts def get_noto_fonts(paths=NOTO_FONT_PATHS): """Scan paths for fonts, and create a NotoFont for each one, returning a list of these. 'paths' defaults to the standard noto font paths, using notoconfig.""" font_dirs = filter(None, [tool_utils.resolve_path(p) for p in paths]) print 'Getting fonts from: %s' % font_dirs all_fonts = [] for font_dir in font_dirs: for filename in os.listdir(font_dir): if not _EXT_REGEX.match(filename): continue filepath = path.join(font_dir, filename) font = get_noto_font(filepath) if not font: print >> sys.stderr, 'bad font filename in %s: \'%s\'.' % ( (font_dir, filename)) continue all_fonts.append(font) return all_fonts def get_font_family_name(font_file): font = ttLib.TTFont(font_file, fontNumber=0) name_record = font_data.get_name_records(font) try: name = name_record[16] except KeyError: name = name_record[1] if name.endswith('Regular'): name = name.rsplit(' ', 1)[0] return name # NotoFamily provides additional information about related Noto fonts. These # fonts have weight/slope/other variations but have the same cmap, script # support, etc. Most of this information is held in a NotoFont that is the # representative member. Fields are: # - name: name of the family # - family_id: a family_id for the family # - rep_member: the representative member, some of its data is common to all # members # - charset: the character set, must the the same for all members # - hinted_members: list of members that are hinted # - unhinted_members: list of members that are unhinted # When both hinted_members and unhinted_members are present, they correspond. NotoFamily = collections.namedtuple( 'NotoFamily', 'name, family_id, rep_member, charset, hinted_members, unhinted_members') def get_families(fonts): """Group fonts into families, separate into hinted and unhinted, select representative.""" family_id_to_fonts = collections.defaultdict(set) families = {} for font in fonts: family_id = noto_font_to_family_id(font) family_id_to_fonts[family_id].add(font) for family_id, fonts in family_id_to_fonts.iteritems(): hinted_members = [] unhinted_members = [] rep_member = None rep_backup = None # used in case all fonts are ttc fonts for font in fonts: if font.is_hinted: hinted_members.append(font) else: unhinted_members.append(font) if not rep_member: if font.weight == 'Regular' and font.slope is None and not ( font.is_cjk and font.is_mono) and not font.is_UI: # We assume here that there's no difference between a hinted or # unhinted rep_member in terms of what we use it for. The other # filters are to ensure the fontTools font name is a good stand-in # for the family name. if font.fmt == 'ttc' and not rep_backup: rep_backup = font else: rep_member = font rep_member = rep_member or rep_backup if not rep_member: raise ValueError( 'Family %s does not have a representative font.' % family_id) name = get_font_family_name(rep_member.filepath) if rep_member.fmt in {'ttf', 'otf'}: charset = coverage.character_set(rep_member.filepath) else: # was NotImplemented, but bool(NotImplemented) is True charset = None families[family_id] = NotoFamily( name, family_id, rep_member, charset, hinted_members, unhinted_members) return families def get_family_filename(family): """Returns a filename to use for a family zip of hinted/unhinted members. This is basically the postscript name with weight/style removed. """ font = ttLib.TTFont(family.rep_member.filepath, fontNumber=0) name_record = font_data.get_name_records(font) try: name = name_record[6] ix = name.find('-') if ix >= 0: name = name[:ix] except KeyError: name = name_record[1] if name.endswith('Regular'): name = name.rsplit(' ', 1)[0] name = name.replace(' ', '') return name def _all_noto_font_key_to_names(paths): """return a map from wws key to the family portion of the font file name""" wws_key_to_family_name = {} for font in get_noto_fonts(paths): fontname, _ = path.splitext(path.basename(font.filepath)) ix = fontname.find('-') familyname = fontname if ix == -1 else fontname[:ix] wws_key = noto_font_to_wws_family_id(font) if wws_key_to_family_name.get(wws_key, familyname) != familyname: print '!!! mismatching font names for key %s: %s and %s' % ( wws_key, wws_key_to_family_name[wws_key], familyname) else: wws_key_to_family_name[wws_key] = familyname return wws_key_to_family_name def test(paths): """test name generation to make sure we match the font name from the wws id""" wws_key_to_family_name = _all_noto_font_key_to_names(paths) for key, val in sorted(wws_key_to_family_name.items()): print key, val name = ''.join(wws_family_id_to_name_parts(key)) if name != val: raise Exception('!!! generated name %s does not match' % name) def main(): parser = argparse.ArgumentParser() parser.add_argument( '-d', '--dirs', help='list of directories to find fonts in', metavar='dir', nargs='+') parser.add_argument( '-t', '--test', help='test mapping from wws key back to font file name', nargs='?', const=True, metavar='bool') args = parser.parse_args() if args.test: if not args.dirs: # when testing name generation we add the alpha fonts args.dirs = NOTO_FONT_PATHS + [ '[fonts_alpha]/from-pipeline/unhinted/ttf/sans', '[fonts_alpha]/from-pipeline/unhinted/ttf/serif'] test(args.dirs) else: if not args.dirs: # when not testing we just use the standard fonts args.dirs = NOTO_FONT_PATHS fonts = get_noto_fonts(paths=args.dirs) for font in fonts: print font.filepath for attr in font._fields: print ' %15s: %s' % (attr, getattr(font, attr)) if __name__ == "__main__": main() nototools-2017-09-25-tooling-for-phase3-update/nototools/noto_lint.py000077500000000000000000002614241316231664500255170ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Finds potential problems in Noto fonts.""" __author__ = ( "roozbeh@google.com (Roozbeh Pournader), " "cibu@google.com (Cibu Johny), " "behdad@google.com (Behdad Esfahbod), and " "stuartg@google.com (Stuart Gill)") import argparse import collections import itertools import json import math import os from os import path import re import subprocess import sys import tempfile from fontTools import subset from fontTools import ttLib from fontTools.ttLib.tables import otTables from fontTools.misc import arrayTools from fontTools.misc import bezierTools from fontTools.pens import basePen from nototools import cldr_data from nototools import cmap_data from nototools import font_data from nototools import lint_config from nototools import notoconfig from nototools import noto_data from nototools import noto_fonts from nototools import noto_names from nototools import opentype_data from nototools import render from nototools import tool_utils from nototools import unicode_data # from wikipedia windows 1252 page. As of windows 98. WIN_ANSI_CODEPOINTS = ( '0000-007f 00A0-00ff 20ac 201a 0192 201e 2026 2020 2021 02c6 2030 0160 2039 0152 017d' '2018 2019 201c 201d 2022 2013 2014 02dc 2122 0161 203a 0153 017e 0178') def all_scripts(): """Extends unicode scripts with pseudo-script 'Urdu'.""" result = set(unicode_data.all_scripts()) result.add('Urdu') return frozenset(result) def printable_unicode_range(input_char_set): char_set = set(input_char_set) # copy parts_list = [] while char_set: last = first = min(char_set) while last in char_set: char_set.remove(last) last += 1 if last == first + 1: part = "%04X" % first else: part = "%04X..%04X" % (first, last-1) parts_list.append(part) return ", ".join(parts_list) def next_circular_point(current_point, start_of_range, end_of_range): if current_point == end_of_range: return start_of_range else: return current_point + 1 def curve_between( coordinates, start_at, end_at, start_of_contour, end_of_contour): """Returns indices of a part of a contour between start and end of a curve. The contour is the cycle between start_of_contour and end_of_contour, and start_at and end_at are on-curve points, and the return value is the part of the curve between them. Args: coordinates: An slicable object containing the data. start_at: The index of on-curve beginning of the range. end_at: The index of on-curve end of the range. start_of_contour: The index of beginning point of the contour. end_of_contour: The index of ending point of the contour. Returns: A list of coordinates, including both start_at and end_at. Will go around the contour if necessary. """ if end_at > start_at: return list(coordinates[start_at:end_at+1]) elif start_of_contour == end_of_contour: # single-point contour assert start_at == end_at == start_of_contour return [coordinates[start_at]] else: # the curve goes around the range return (list(coordinates[start_at:end_of_contour+1]) + list(coordinates[start_of_contour:end_at+1])) def curve_has_off_curve_extrema(curve): """Checks if a curve has off-curve extrema. Args: curve: a list of coordinates for the curve, where the first and the last coordinates are on-curve points, and the rest are off-curve. Returns: A boolean value, True if there are off-curve extrema, False if there are none. """ if len(curve) <= 2: # It's a straight line return False angles = [] prev_x, prev_y = curve[0] for curr_x, curr_y in curve[1:]: angle = math.atan2(curr_y - prev_y, curr_x - prev_x) angles.append(angle) prev_x, prev_y = curr_x, curr_y # For the curve to have no local extrema, the angles must all fall in the # same quartet of the plane (e.g. all being between pi/2 and pi). # # There's a painful edge case, where an angle is equal to pi, and is # acceptable as both +pi and -pi for the logic that comes after. But since # the return value of math.atan2 is always in (-pi, +pi], we'll miss the -pi # case, resulting in false positives. # # For these cases, we check for the curve being proper once with all of # these set to +pi and then with all set to -pi. If the curve is proper in # at least one case, we assume the curve has no missing extrema. ninety_deg = math.pi/2 score = 0 for sign in [-1, +1]: angles = [sign*math.pi if math.fabs(angle) == math.pi else angle for angle in angles] min_quarter = math.floor(min(angles) / ninety_deg) max_quarter = math.ceil(max(angles) / ninety_deg) if math.fabs(max_quarter - min_quarter) > ninety_deg: score += 1 if score == 2: # The curve failed the test in both cases return out_of_box_size(curve) return 0 # Finds out the how far away the off-curve extrema lies from the on-curve # points. This is done by comparing the bounding box of the endpoints with that # of the bezier curve. If there are implicit on-curve points, the curve is # split up into a sequence of simple 3-point curves by inserting those implicit # points. def out_of_box_size(curve): if len(curve) < 3: return 0 if len(curve) > 3: # If curve has more than 3 points, then it has implicit on-curve points. # First two off-curve points. ax, ay = curve[1] bx, by = curve[2] # Implicit point is the mid point of first two off-curve points. implicit_point = ((ax + bx)/2, (ay + by)/2) first_curve = curve[:2] + [implicit_point] remaining_curve = [implicit_point] + curve[2:] else: # Curve with exact 3 points has no implicit on-curve point. first_curve = curve remaining_curve = [] # Endpoints of the first curve. ax, ay = first_curve[0] bx, by = first_curve[-1] # Bounding box for just the endpoints. ex1, ey1, ex2, ey2 = min(ax, bx), min(ay, by), max(ax, bx), max(ay, by) # Bounding box for the bezier curve. bx1, by1, bx2, by2 = bezierTools.calcQuadraticBounds(*first_curve) # Bounding box of the bezier will contain that of the endpoints. # The out-of-box size for the entire curve will be maximum of the deviation # for the first curve and that of the remaining curve. delta = max(ex1 - bx1, ey1 - by1, bx2 - ex2, by2 - ey2, out_of_box_size(remaining_curve)) # ignore very small deviations return 0 if delta < 1 else delta def calc_bounds(piece): if len(piece) == 2: return arrayTools.normRect(piece[0] + piece[1]) else: return bezierTools.calcQuadraticBounds(piece[0], piece[1], piece[2]) def interpolate(start, end, amount): return start + amount * (end - start) def interpolate_segment(segment, amount): return (interpolate(segment[0][0], segment[1][0], amount), interpolate(segment[0][1], segment[1][1], amount)) def cut_piece_in_half(piece): if len(piece) == 2: mid_point = interpolate_segment(piece, 0.5) return (piece[0], mid_point), (mid_point, piece[1]) else: return bezierTools.splitQuadraticAtT( piece[0], piece[1], piece[2], 0.5) def cut_ends(piece, cut_amount): if len(piece) == 2: return (interpolate_segment(piece, cut_amount), interpolate_segment(piece, 1 - cut_amount)) else: return bezierTools.splitQuadraticAtT( piece[0], piece[1], piece[2], cut_amount, 1 - cut_amount)[1] def probably_intersect(piece1, piece2): bounds1 = calc_bounds(piece1) bounds2 = calc_bounds(piece2) return arrayTools.sectRect(bounds1, bounds2)[0] _EPSILON = 1.0/(2**14) _MAX_DEPTH = 30 def curve_pieces_intersect(piece1, piece2, ignore_ends): if ignore_ends: piece1 = cut_ends(piece1, _EPSILON) piece2 = cut_ends(piece2, _EPSILON) # If we are not ignoring end points, let's quickly check for end point # collision if not ignore_ends and {piece1[0], piece1[-1]} & {piece2[0], piece2[-1]}: return True pairs_to_investigate = collections.deque() if probably_intersect(piece1, piece2): pairs_to_investigate.append((piece1, piece2, 0)) while True: if not pairs_to_investigate: return False section1, section2, level = pairs_to_investigate.popleft() section11, section12 = cut_piece_in_half(section1) section21, section22 = cut_piece_in_half(section2) for first_section in [section11, section12]: for second_section in [section21, section22]: if probably_intersect(first_section, second_section): if level > _MAX_DEPTH: return True else: pairs_to_investigate.append( (first_section, second_section, level+1)) def to_float_tuples(curve): coord_list = [] for coords in curve: coord_list.append( (float(coords[0]), float(coords[1])) ) return tuple(coord_list) def curves_intersect(contour_list): """Takes a list of contours and tells if any two curves in them intersect. Returns a message string with an error, or None if ok. """ all_contours = [] for contour in contour_list: contour_pieces = [] for curve in contour: if len(curve) == 2: contour_pieces.append(to_float_tuples(curve)) elif len(curve) > 2: last_point = curve[0] for curve_part in basePen.decomposeQuadraticSegment(curve[1:]): contour_pieces.append( to_float_tuples((last_point,) + curve_part)) last_point = curve_part[1] all_contours.append(contour_pieces) for contour_pieces in all_contours: for piece in contour_pieces: if piece[0] == piece[-1]: return 'start and end segments match: %s' % str(piece[0]) all_pieces = sum(all_contours, []) if len(set(all_pieces)) != len(all_pieces): print 'some pieces are duplicates' # No piece should be repeated adjacent_pairs = set() for contour_pieces in all_contours: for i in range(len(contour_pieces)-1): adjacent_pairs.add( frozenset({contour_pieces[i], contour_pieces[i+1]})) if len(contour_pieces) > 2: adjacent_pairs.add( frozenset({contour_pieces[-1], contour_pieces[0]})) for piece1, piece2 in itertools.combinations(all_pieces, 2): # FIXME(roozbeh): we are ignoring one edge case: where end points # of the wrong side of an adjacent pair overlap. For example, if # a contour curves from A to B, then immediately back to A, and then # on to C, we won't catch it. ok_to_intersect_at_ends = frozenset({piece1, piece2}) in adjacent_pairs if curve_pieces_intersect(piece1, piece2, ok_to_intersect_at_ends): return 'intersection %s and %s' % (piece1, piece2) return None def font_version(font): return font_data.get_name_records(font)[5] def printable_font_revision(font, accuracy=2): font_revision = font["head"].fontRevision font_revision_int = int(font_revision) font_revision_frac = int( round((font_revision - font_revision_int) * 10**accuracy)) font_revision_int = str(font_revision_int) font_revision_frac = str(font_revision_frac).zfill(accuracy) return font_revision_int+"."+font_revision_frac def printable_font_versions(font): version = font_version(font) match = re.match(r"Version (\d{1,5})\.(\d{1,5})", version) if match: major_version = match.group(1) minor_version = match.group(2) accuracy = len(minor_version) font_revision = printable_font_revision(font, accuracy) if font_revision == major_version+"."+minor_version: return version else: font_revision = printable_font_revision(font, 3) return "%s (head fontRevision: %s)" % ( version, font_revision) def _build_cmap_dict(filename): filename = tool_utils.resolve_path(filename) data = cmap_data.read_cmap_data_file(filename) script_to_rowdata = cmap_data.create_map_from_table(data.table) return {script: frozenset(tool_utils.parse_int_ranges(rd.ranges)) for script, rd in script_to_rowdata.iteritems()} _phase_2_map = None _phase_3_map = None def _get_cmap_data_for_phase(phase): global _phase_2_map, _phase_3_map if phase < 3: if not _phase_2_map: _phase_2_map = _build_cmap_dict( '[tools]/nototools/data/noto_cmap_phase2.xml') return _phase_2_map else: if not _phase_3_map: _phase_3_map = _build_cmap_dict( '[tools]/nototools/data/noto_cmap_phase3.xml') return _phase_3_map HARD_CODED_FONT_INFO = { "AndroidEmoji.ttf": ("Sans", "Zsye", None, "Regular"), "DroidEmoji.ttf": ("Sans", "Zsye", None, "Regular"), "NotoEmoji-Regular.ttf": ("", "Zsye", None, "Regular"), "NotoNaskh-Regular.ttf": ("Naskh", "Arab", None, "Regular"), "NotoNaskh-Bold.ttf": ("Naskh", "Arab", None, "Bold"), "NotoNaskhUI-Regular.ttf": ("Naskh", "Arab", "UI", "Regular"), "NotoNaskhUI-Bold.ttf": ("Naskh", "Arab", "UI", "Bold"), "NotoSansCypriotSyllabary-Regular.ttf": ("Sans", "Cprt", None, "Regular"), "NotoSansEmoji-Regular.ttf": ("Sans", "Zsye", None, "Regular"), "NotoSansKufiArabic-Regular.ttf": ("Kufi", "Arab", None, "Regular"), "NotoSansKufiArabic-Bold.ttf": ("Kufi", "Arab", None, "Bold"), "NotoSansSymbols-Regular.ttf": ("Sans", "Zsym", None, "Regular"), "NotoNastaliqUrduDraft.ttf": ("Nastaliq", "Urdu", None, "Regular"), "NotoNastaliq-Regular.ttf": ("Nastaliq", "Urdu", None, "Regular") } # these are based on a upem of 2048 MAX_UI_HEIGHT = 2163 MIN_UI_HEIGHT = -555 UI_ASCENT = 2189 UI_DESCENT = -600 _cur_file_name = None _printed_file_name = False _processed_files = 0 _processed_files_with_errors = 0 _processed_files_with_warnings = 0 FontProps = collections.namedtuple( 'FontProps', 'is_google, vendor, char_version, ' 'filepath, family, style, script, variant, width, weight, slope, fmt, ' 'manufacturer, license_type, is_hinted, is_mono, is_UI, is_UI_metrics, ' 'is_display, is_cjk, subset') def font_properties_from_name(file_path, phase): noto_font = noto_fonts.get_noto_font(file_path, phase=phase) if not noto_font: return None is_google = True vendor = ('Adobe' if noto_font.is_cjk else 'KhmerType' if noto_font.script in ['Khmr', 'Cham', 'Laoo'] else 'Monotype') char_version = 6.0 if noto_font.family == 'Noto' else 8.0 return FontProps(is_google, vendor, char_version, *noto_font) def get_font_properties_with_fallback(file_path, phase): props = font_properties_from_name(file_path, phase) if props: return props, '' if props.script else 'script' basename = path.basename(file_path) if not basename in HARD_CODED_FONT_INFO: return None, None style, script, ui, weight = HARD_CODED_FONT_INFO[basename] return FontProps( True, 'Monotype', 6.0, file_path, 'Noto', style, script, '', weight, None, 'ttf', 'sil', False, False, bool(ui), bool(ui), False, ''), 'name' def check_font(font_props, filename_error, lint_spec, runlog=False, skiplog=False, csv_flag=False, info_flag=False, extrema_details=True, nowarn=False, quiet=False, noto_phase=3, variable=False): global _processed_files _processed_files += 1 def _noto_font_from_font_props(font_props): fields = """ filepath,family,style,script,variant,width,weight,slope,fmt, manufacturer,license_type,is_hinted,is_mono,is_UI,is_UI_metrics, is_display,is_cjk,subset """.split(',') vals = [getattr(font_props, p.strip()) for p in fields] return noto_fonts.NotoFont(*vals) noto_font = _noto_font_from_font_props(font_props) def warn(test_name, category_name, message, details=True, is_error=True, check_test=True): global _cur_file_name, _printed_file_name global _processed_files_with_errors, _processed_files_with_warnings def print_file_name(): global _printed_file_name if not _printed_file_name: _printed_file_name = True print "---\nAutomatic testing for '%s', %s:" % ( _cur_file_name, printable_font_versions(font)) if check_test and not tests.check(test_name): return interesting_part_of_file_name = ",".join(font_props.filepath.split("/")[-2:]) if interesting_part_of_file_name != _cur_file_name: _cur_file_name = interesting_part_of_file_name _printed_file_name = False # Assumes "info" only and always comes at the end of # processing a file. if category_name is "info": def pluralize_errmsg(count, is_error=True): msg = "error" if is_error else "warning" if count == 0: return "no %ss" % msg elif count == 1: return "1 " + msg else: return "%d %ss" % (count, msg) ec = err_count[0] wc = warn_count[0] if not csv_flag and (not quiet or ec or (wc and not nowarn)): print_file_name() se = suppressed_err_count[0] if not se: print "Found %s." % pluralize_errmsg(ec) else: print "Found %s (%s hidden)." % (pluralize_errmsg(ec), "all" if se == ec else se) if wc and not nowarn: sw = suppressed_warn_count[0] if not sw and wc: print "Found %s." % pluralize_errmsg(wc, False) elif wc: print "Found %s (%s hidden)." % (pluralize_errmsg(wc, False), "all" if sw == wc else sw) if ec: _processed_files_with_errors += 1 elif wc: _processed_files_with_warnings += 1 if not info_flag: return if is_error: err_count[0] += 1 else: warn_count[0] += 1 if is_error: if not details: suppressed_err_count[0] += 1 else: if nowarn or not details: suppressed_warn_count[0] += 1 if not details: return if nowarn and not is_error: return if not csv_flag: print_file_name() err_type = 'Info' if category_name is "info" else "Error" if is_error else "Warning" if csv_flag: names = [] if font_props.weight != 'Regular' or not font_props.slope: names.append(font_props.weight) if font_props.slope: names.append(font_props.slope) subfamily = ''.join(names) print ('%s,%s,%s,%s,%s,%s,%s,%s,%s,"%s"' % ( err_type, noto_fonts.script_name_for_report(font_props.script), font_props.style if font_props.style else '', font_props.variant if font_props.variant else '', subfamily, font_data.get_name_records(font)[8].split()[0], category_name, interesting_part_of_file_name, printable_font_revision(font), message)).encode('UTF-8') else: print "%s <%s> %s" % (err_type[0], test_name, message.encode('UTF-8')) sys.stdout.flush() _script_key_to_font_name = { 'Aran': 'Urdu', 'HST': 'Historic', 'LGC': None, 'Zsye': None, } def _check_unused_names(): # For now, just a warning, and we don't actually check if other tables use it. # Add those checks as we need them. See the GPOS/GSUB checks of name references # for an example of how we'd check. if not tests.check('name/unused'): return names = font_data.get_name_records(font) for i in names: # names 255 and below are reserved for standard names # names 256-32767 are for use by font tables # names 23 and 24 are for use by CPAL, so it might be considered a mistake if # these are present and no CPAL table is present or it doesn't use them. Not # checking this for now. if i >= 256: warn('name/unused', 'Name', 'Name table has record #%d: "%s"' % (i, names[i]), is_error=False) def _check_name(actual, expected, keyname, is_re): """Set expected to '-' to require any name, set it to None if a name entry should not be present.""" test_key = "name/" + keyname.replace(' ', '_') if not tests.check(test_key): return xre = ' it to match' if is_re else '' if expected: if not actual: if expected == '-': warn(test_key, keyname, "The %s is not set." % keyname) else: warn(test_key, keyname, "The %s is not set, but was expecting%s '%s'" % ( keyname, xre, expected)) elif expected != '-': if is_re: match = re.match(expected, actual) else: match = expected == actual if not match: warn(test_key, keyname, "The %s is '%s' but was expecting%s '%s'" % ( keyname, actual, xre, expected)) elif actual: warn(test_key, keyname, "Expected no %s, but got '%s'" % (keyname, actual)) def check_name_table(): if not tests.check('name'): return _check_unused_names() family_to_name_info = noto_names.family_to_name_info_for_phase( noto_phase) name_data = noto_names.name_table_data( noto_font, family_to_name_info, noto_phase) if not name_data: warn("name/unable_to_check", "Unable to check", "No name data available for this font.") return names = font_data.get_name_records(font) def _check_idx(idx, expected, keyname): actual = names.get(idx, None) is_re = expected and expected[0] == '^' and expected[-1] == '$' _check_name(actual, expected, keyname, is_re=is_re) _check_idx(0, name_data.copyright_re, 'copyright') _check_idx(1, name_data.original_family, "family") _check_idx(2, name_data.original_subfamily, "subfamily") _check_idx(3, name_data.unique_id, "unique id") _check_idx(4, name_data.full_name, "full name") _check_idx(5, name_data.version_re, "version") _check_idx(6, name_data.postscript_name, "postscript name") _check_idx(7, name_data.trademark, "trademark") _check_idx(8, name_data.manufacturer, "manufacturer") _check_idx(9, name_data.designer, "designer") _check_idx(10, name_data.description_re, "description") _check_idx(11, name_data.vendor_url, "vendor url") _check_idx(12, name_data.designer_url, "designer url") _check_idx(13, name_data.license_text, "license") _check_idx(14, name_data.license_url, "license_url") if noto_font.is_cjk or noto_phase > 2: # 15 reserved _check_idx(16, name_data.preferred_family, "preferred family") _check_idx(17, name_data.preferred_subfamily, "preferred subfamily") # 18-20 (compatible full, sample text, postscript cid) - we don't check these _check_idx(21, name_data.wws_family, "wws family") _check_idx(22, name_data.wws_subfamily, "wws subfamily") # 23-24 (light/dark palette) - we don't check these if not tests.check('name/version'): return match = re.match(name_data.version_re, names[5]) if not match: return # already caught above major_version = match.group(1) minor_version = match.group(2) if ((0 <= int(major_version) <= 65535) and (0 <= int(minor_version) <= 65535)): accuracy = len(minor_version) font_revision = printable_font_revision(font, accuracy) if font_revision != major_version + "." + minor_version: warn("name/version/match_head", "Font Revision", "fontRevision in 'head' table is %s, " "while font version in 'name' table is %s.%s." % ( font_revision, major_version, minor_version)) else: warn("name/version/out_of_range", "Version", "Version string has numerical parts outside the range " "[0, 65535]: '%s'." % version_string) def _get_required_chars(noto_font, noto_phase, test_key): script_to_chars = _get_cmap_data_for_phase(noto_phase) # do we need to map font names/families to scripts differently based # on the phase? try: return script_to_chars[noto_font.script] except KeyError: warn(test_key, "Chars", "no char data for script %s in %s" % ( noto_font.script, noto_font.filepath)) return None def _check_needed_chars(cmap, char_filter): # TODO(roozbeh): check the glyph requirements for controls specified at # https://www.microsoft.com/typography/otspec/recom.htm needed_chars = _get_required_chars( noto_font, noto_phase, 'cmap/script_required') if needed_chars == None: return # TODO: also check character coverage against Unicode blocks for # characters of script Common or Inherited if char_filter: # old_needed_size = len(needed_chars) needed_chars = set(itertools.ifilter(char_filter[1].accept, needed_chars)) # TODO(dougfelt): figure out how to make this info available without messing up output # print 'filter needed char size: %d -> %d' % (old_needed_size, len(needed_chars)) missing_chars = needed_chars - set(cmap.keys()) if missing_chars: warn("cmap/script_required", "Chars", "The following %d characters are missing from the font: %s." % (len(missing_chars), printable_unicode_range(missing_chars)), check_test=False) def _check_unexpected_chars(cmap, char_filter): expected_chars = _get_required_chars( noto_font, noto_phase, 'cmap/unexpected') if expected_chars == None: return unexpected_chars = set(cmap) - expected_chars if char_filter and unexpected_chars: unexpected_chars = set(itertools.ifilter(char_filter[1].accept, unexpected_chars)) if unexpected_chars: warn("cmap/script_unexpected", "Chars", "The following %d chars were not expected in the font: %s" % (len(unexpected_chars), printable_unicode_range(unexpected_chars)), is_error=False, check_test=False) def check_cmap_table(): cmap_table = font['cmap'] cmaps = {} # Format 14 is variation sequences expected_tables = [ (4, 3, 1), (12, 3, 10), (14, 0, 5), (4, 0, 3), (12, 0, 4)] if font_props.is_cjk: expected_tables.extend([ # Adobe says historically some programs used these to identify # the script in the font. The encodingID is the quickdraw script # manager code. These are dummy tables. (6, 1, 1), # Japanese (6, 1, 2), # Traditional Chinese (6, 1, 3), # Korean (6, 1, 25), # Simplified Chinese ]) for table in cmap_table.tables: if (table.format, table.platformID, table.platEncID) not in expected_tables: warn("cmap/tables/unexpected", "cmap", "'cmap' has a subtable of (format=%d, platform=%d, encoding=%d), " "which it shouldn't have." % ( table.format, table.platformID, table.platEncID)) elif table != (12, 0, 4): if table.format in cmaps: # if we have both 4,3,1 and 4,0,3, they should be aliases # similarly if we have both 12,3,10 and 12,0,4 if id(table.cmap) != id(cmaps[table.format]): warn("cmap/tables/notaliased", "cmap", "'cmap' has two format %d subtables that are not" " aliases" % table.format) else: cmaps[table.format] = table.cmap if 4 not in cmaps: warn("cmap/tables/missing", "cmap", "'cmap' does not have a format 4 subtable, but it should.") if 12 in cmaps: cmap = cmaps[12] # if there is a format 12 table, it should have non-BMP characters if max(cmap.keys()) <= 0xFFFF: warn("cmap/tables/format_12_has_bmp", "cmap", "'cmap' has a format 12 subtable but no " "non-BMP characters.") # format 4 table should be a subset of the format 12 one if tests.check('cmap/tables/format_4_subset_of_12') and 4 in cmaps: for char in cmaps[4]: if char not in cmap: warn("cmap/tables/format_4_subset_of_12", "cmap", "U+%04X is mapped in cmap's format 4 subtable but " "not in the format 12 one." % char, check_test=False) elif cmaps[4][char] != cmap[char]: warn("cmap/tables/format_4_subset_of_12", "cmap", "U+%04X is mapped to %s in cmap's format 4 " "subtable but to %s in the format 12 one." % ( char, cmaps[4][char], cmap[char]), check_test=False) else: cmap = cmaps[4] if tests.check('cmap/required'): required_in_all_fonts = [ 0x0000, # .null 0x000D, # CR 0x0020] # space for code in required_in_all_fonts: if code not in cmap: warn("cmap/required", "cmap", "U+%04X is not mapped in cmap, but it should be (see " "https://www.microsoft.com/typography/otspec/recom.htm)." % code, check_test=False) if not font_props.is_cjk and tests.check('cmap/script_required'): _check_needed_chars(cmap, tests.get_filter('cmap/script_required')) if tests.check('cmap/private_use'): needed_chars = _get_required_chars( noto_font, noto_phase, 'cmap/private_use') pua_filter = tests.get_filter('cmap/private_use') if pua_filter: pua_filter = pua_filter[1].accept def is_unwanted_pua(char): if char in needed_chars: return False if not unicode_data.is_private_use(char): return False if not pua_filter: return True return pua_filter(char) privates_in_cmap = {char for char in cmap if is_unwanted_pua(char)} if privates_in_cmap: warn("cmap/private_use", "Chars", "There should be no (non-required) private use characters " "defined in the font, but there are %d: %s." % ( len(privates_in_cmap), printable_unicode_range(privates_in_cmap)), check_test=False) if tests.check('cmap/non_characters'): non_characters = frozenset( range(0xFDD0, 0xFDEF+1) + [0xFFFE + plane_no * 0x10000 for plane_no in range(0, 17)] + [0xFFFF + plane_no * 0x10000 for plane_no in range(0, 17)]) non_characters_in_cmap = non_characters & set(cmap.keys()) if non_characters_in_cmap: warn("cmap/non_characters", "Chars", "There should be no non-characters defined in the font, but " "there are: %s." % printable_unicode_range(non_characters_in_cmap), check_test=False) if tests.check('cmap/disallowed_ascii') and not ( font_props.script == "Zsye" or font_props.script == "Latn" or font_props.script == "LGC" or font_props.is_cjk): ascii_letters = noto_data.ascii_letters() contained_letters = ascii_letters & set(cmap.keys()) if contained_letters: warn("cmap/disallowed_ascii", "Chars", "There should not be ASCII letters in the font, but there are: %s." % printable_unicode_range(contained_letters), check_test=False) if tests.check('cmap/unexpected'): # filter if present should list chars we do not want to warn on. _check_unexpected_chars(cmap, tests.get_filter('cmap/unexpected')) return cmap def check_variants(): if not tests.check('cmap/variants'): return cmap = font_data.get_cmap(font) variant_cps = unicode_data.variant_data_cps() cps_with_variants = set(cmap.keys()) & variant_cps if not cps_with_variants: return vs_cmap = font_data.get_variation_sequence_cmap(font) if not vs_cmap: num = len(cps_with_variants) info = lint_config.write_int_ranges(cps_with_variants, sep=', ') if len(info) > 50: info = "not shown" warn("cmap/variants", "Variants", "Font contains %d characters with standard variants, but has " "no variation selector cmap table (%s)." % (num, info)) return for cp in sorted(cps_with_variants): for sel, varcp, _ in sorted(unicode_data.get_variant_data(cp)): if not sel in vs_cmap.uvsDict: warn("cmap/variants", "Variants", "Char %04x has standard variant selector %04x, but " "this selector is not in the variant table." % (cp, sel), check_test=False ) continue sel_info = None for t in vs_cmap.uvsDict[sel]: if t[0] == cp: sel_info = t break if not sel_info: warn("cmap/variants", "Variants", "Char %04x has no variant for selector %04x." % (cp, sel), check_test=False) continue if varcp != -1: if varcp not in cmap: warn("cmap/variants", "Variants", "Char %04x and selector %04x should map to the " "same glyph as char %04x, but %04x is not in the " "cmap." % (cp, sel, varcp, varcp), check_test=False) continue expected_glyphid = cmap[varcp] sel_glyphid = sel_info[1] if sel_info[1] else cmap[cp] if expected_glyphid != sel_glyphid: warn("cmap/variants", "Variants", "Char %04x and selector %04x map to glyph %s, " "which should be the same glyph as is mapped to " "by %04x, but its glyph is %s." % (cp, sel, sel_glyphid, varcp, expected_glyphid), check_test=False) def check_head_tables(cmap): if not tests.check('head'): return def check_ul_unicode_range(): if not tests.check('head/os2/unicoderange'): return bitmap = font_data.get_os2_unicoderange_bitmap(font) expected_info = opentype_data.collect_unicoderange_info(cmap) expected_bitmap = font_data.unicoderange_info_to_bitmap(expected_info) difference = bitmap ^ expected_bitmap if not difference: return for bucket_index in range(128): if difference & (1 << bucket_index): bucket_info = opentype_data.unicoderange_bucket_index_to_info(bucket_index) range_name = opentype_data.unicoderange_bucket_info_name(bucket_info) chars_in_bucket = sum(t[0] for t in expected_info if t[1][2] == bucket_index) size_of_bucket = opentype_data.unicoderange_bucket_info_size(bucket_info) set_unset = "not be set" if bitmap & (1 << bucket_index) else "be set" warn("head/os2/unicoderange", "Range bit", "ulUnicodeRange bit %d (%s) should %s (cmap has " "%d of %d codepoints in this range)" % (bucket_index, range_name, set_unset, chars_in_bucket, size_of_bucket), check_test=False) # print printable_unicode_range(set(cmap.keys())) # print "expected %s" % font_data.unicoderange_bitmap_to_string(expected_bitmap) # print "have %s" % font_data.unicoderange_bitmap_to_string(bitmap) hhea_table = font["hhea"] upem = font['head'].unitsPerEm if upem == 2048: ui_ascent = UI_ASCENT ui_descent = UI_DESCENT else: ui_ascent = int(math.ceil(UI_ASCENT * upem / 2048.0)) ui_descent = int(math.floor(UI_DESCENT * upem / 2048.0)) if tests.check('head/hhea'): if font_props.is_UI_metrics: if hhea_table.ascent > ui_ascent: warn("head/hhea/ascent", "Bounds", "Value of ascent in 'hhea' table is %d, but should be %d." % (hhea_table.ascent, ui_ascent)) if hhea_table.descent < ui_descent: warn("head/hhea/descent", "Bounds", "Value of descent in 'hhea' table is %d, but should be %d." % (hhea_table.descent, ui_descent)) if hhea_table.lineGap != 0: warn("head/hhea/linegap", "Line Gap", "Value of lineGap in 'hhea' table is %d, but should be 0." % hhea_table.lineGap) vhea_table = font.get("vhea") if tests.check('head/vhea') and vhea_table: if vhea_table.lineGap != 0: warn("head/vhea/linegap", "Line Gap", "Value of lineGap in 'vhea' table is %d, but should be 0." % vhea_table.lineGap) os2_table = font["OS/2"] if tests.check('head/os2'): if os2_table.fsType != 0: warn("head/os2/fstype", "OS/2", "Value of fsType in the 'OS/2' table is 0x%04X, but should " "be 0." % os2_table.fsType) if os2_table.sTypoAscender != hhea_table.ascent: warn("head/os2/ascender", "OS/2", "Value of sTypoAscender in 'OS/2' table (%d) is different " "from the value of Ascent in 'hhea' table (%d), " "but they should be equal." % (os2_table.sTypoAscender, hhea_table.ascent)) if os2_table.sTypoDescender != hhea_table.descent: warn("head/os2/descender", "OS/2", "Value of sTypoDescender in 'OS/2' table (%d) is different " "from the value of Descent in 'hhea' table (%d), " "but they should be equal." % (os2_table.sTypoDescender, hhea_table.descent)) if os2_table.sTypoLineGap != 0: warn("head/os2/linegap", "OS/2", "Value of sTypoLineGap in 'OS/2' table is %d, but " "should be 0." % os2_table.sTypoLineGap) if os2_table.usWinAscent != hhea_table.ascent: warn("head/os2/winascent", "OS/2", "Value of usWinAscent in 'OS/2' table (%d) is " "different from the value of Ascent in 'hhea' table (%d), " "but they should be equal." % (os2_table.usWinAscent, hhea_table.ascent)) if os2_table.usWinDescent != -hhea_table.descent: warn("head/os2/windescent", "OS/2", "Value of usWinDescent in 'OS/2' table (%d) is different " "from the opposite of value of Descent in 'hhea' table (%d), " "but they should be opposites." % (os2_table.usWinDescent, hhea_table.descent)) if font_props.is_google and os2_table.achVendID != 'GOOG': warn("head/os2/achvendid", "OS/2", "Value of achVendID in the 'OS/2' table is %s, " "but should be GOOG." % os2_table.achVendID) expected_weight = noto_fonts.WEIGHTS.get(font_props.weight, None) if not expected_weight: raise ValueError('unexpected weight: %s' % font_props.weight) # hack for windows GDI # remove this for phase 3 if noto_phase <= 2: expected_weight = max(expected_weight, 250) if os2_table.usWeightClass != expected_weight: warn("head/os2/weight_class", "OS/2", "Value of usWeightClass in 'OS/2' table is %d, but should " "be %d." % (os2_table.usWeightClass, expected_weight)) OS2_SEL_ITALIC_MASK = 1 OS2_SEL_BOLD_MASK = 1 << 5 OS2_SEL_REGULAR_MASK = 1 << 6 OS2_SEL_USE_TYPO_METRICS_MASK = 1 << 7 OS2_SEL_WWS_MASK = 1 << 8 if os2_table.fsSelection & OS2_SEL_REGULAR_MASK: if os2_table.fsSelection & OS2_SEL_ITALIC_MASK: warn("head/os2/fsselection", "OS/2", "fsSelection Regular bit is set, so the Italic bit should be clear.") if os2_table.fsSelection & OS2_SEL_BOLD_MASK: warn("head/os2/fsselection", "OS/2", "fsSelection Regular bit is set, so the Bold bit should be clear.") if os2_table.fsSelection & OS2_SEL_USE_TYPO_METRICS_MASK: warn("head/os2/fsselection", "OS/2", "UseTypoMetrics bit in fsSelection is set, but should be clear.") check_ul_unicode_range() if os2_table.panose.bFamilyType != 2: warn("head/os2/panose/family", "OS/2", "Panose family value is %s but expected 2" % os2_table.panose.bSerifStyle) expect_serif = noto_font.style == 'Serif' or noto_font.family in [ 'Cousine', 'Tinos'] expected_serif_range_str = '2-10' if expect_serif else '11-15' serif_val = os2_table.panose.bSerifStyle is_serif = 1 < serif_val < 11 if serif_val == 1: warn("head/os2/panose/serif", "OS/2", "Panose serif value is 1 (no_fit) but expected 0 or %s" % expected_serif_range_str) elif serif_val != 0 and expect_serif != is_serif: warn("head/os2/panose/serif", "OS/2", "Panose serif value is %s but expected %s" % (serif_val, expected_serif_range_str)) # TODO(dougfelt): check condensed, semicondensed proportions? expect_mono = noto_font.is_mono or noto_font.family == 'Cousine' expect_mono_range_str = '9' if expect_mono else '2-4' proportion_val = os2_table.panose.bProportion is_mono = proportion_val == 9 if proportion_val <= 1: warn("head/os2/panose/proportion", "OS/2", "Panose proportion value is %s (%s) but " "expected %s" % ( proportion_val, 'no_fit' if proportion_val == 1 else 'any', expect_mono_range_str)) elif expect_mono != is_mono: warn("head/os2/panose/proportion", "OS/2", "Panose proportion value is %s but expected %s" % (proportion_val, expect_mono_range_str)) def check_vertical_limits(): if 'glyf' not in font: return if not tests.check('bounds'): return upem = font['head'].unitsPerEm if upem == 2048: max_ui_height = MAX_UI_HEIGHT min_ui_height = MIN_UI_HEIGHT else: max_ui_height = int(math.ceil(MAX_UI_HEIGHT * upem / 2048.0)) min_ui_height = int(math.floor(MIN_UI_HEIGHT * upem / 2048.0)) glyf_table = font['glyf'] us_win_ascent = font['OS/2'].usWinAscent us_win_descent = font['OS/2'].usWinDescent typo_ascent = font['OS/2'].sTypoAscender typo_descent = font['OS/2'].sTypoDescender # Build win ansi glyph set. These we compare against usWinAscent/Descent, the # rest we compare against sTypoAscender/Descender. Of course, these should be # the same, and it's still ok for glyphs to exceed the typo ascender/descender-- # but it should be exceptional. tmp_gids = set() cmap = font_data.get_cmap(font) for cp in lint_config.parse_int_ranges(WIN_ANSI_CODEPOINTS, True): if cp in cmap: tmp_gids.add(font.getGlyphID(cmap[cp], requireReal=True)) win_ansi_gids = frozenset(tmp_gids) font_ymin = None font_ymax = None glyph_set = font.getGlyphSet() for glyph_index in range(len(glyf_table.glyphOrder)): glyph_name = glyf_table.glyphOrder[glyph_index] glyph = glyf_table[glyph_name] # Compute the ink's yMin and yMax ttglyph = glyph_set[glyph_name] ymin, ymax = render.get_glyph_cleaned_extents(ttglyph, glyph_set) font_ymin = render.min_with_none(font_ymin, ymin) font_ymax = render.max_with_none(font_ymax, ymax) if not tests.check('bounds/glyph'): continue is_win_ansi = glyph_index in win_ansi_gids if is_win_ansi: ascent_limit = us_win_ascent ascent_name = 'usWinAscent' descent_limit = -us_win_descent descent_name = 'usWinDescent' else: ascent_limit = typo_ascent ascent_name = 'sTypoAscent' descent_limit = typo_descent descent_name = 'sTypoDescent' if font_props.is_UI_metrics: if (tests.checkvalue('bounds/glyph/ui_ymax', glyph_index) and ymax is not None and ymax > max_ui_height): warn("bounds/glyph/ui_ymax", "UI Bounds", "Real yMax for glyph %d (%s) is %d, which is more than " "max ui height %d." % ( glyph_index, glyph_name, ymax, max_ui_height), check_test=False) if (tests.checkvalue('bounds/glyph/ui_ymin', glyph_index) and ymin is not None and ymin < min_ui_height): warn("bounds/glyph/ui_ymin", "UI Bounds", "Real yMin for glyph %d (%s) is %d, which is less than " "min ui height %d." % ( glyph_index, glyph_name, ymin, min_ui_height), check_test=False) if (tests.checkvalue('bounds/glyph/ymax', glyph_index) and ymax is not None and ymax > ascent_limit): warn("bounds/glyph/ymax", "Bounds", "Real yMax for glyph %d (%s) is %d, which is higher than " "the font's %s (%d), resulting in clipping." % (glyph_index, glyph_name, ymax, ascent_name, ascent_limit), check_test=False) if (tests.checkvalue('bounds/glyph/ymin', glyph_index) and ymin is not None and ymin < descent_limit): warn("bounds/glyph/ymin", "Bounds", "Real yMin for glyph %d (%s) is %d, which is lower than " "the font's %s (%d), resulting in clipping." % (glyph_index, glyph_name, ymin, descent_name, descent_limit), check_test=False) if tests.check('bounds/font'): if font_props.is_UI_metrics: if font_ymax > max_ui_height: warn("bounds/font/ui_ymax", "UI Bounds", "Real yMax is %d, but it should be less " "than or equal to %d." % (font_ymax, max_ui_height)) if font_ymin < min_ui_height: warn("bounds/font/ui_ymin", "UI Bounds", "Real yMin is %d, but it should be greater than or equal " "to %d." % (font_ymin, min_ui_height)) else: hhea_table = font["hhea"] if font_ymax > hhea_table.ascent: warn("bounds/font/ymax", "Bounds", "Real yMax %d, but it should be less " "than or equal to the value of Ascent in 'hhea' table, " "which is %d." % (font_ymax, hhea_table.ascent)) if font_ymin < hhea_table.descent: warn("bounds/font/ymin", "Bounds", "Real yMin is %d, but it should be greater " "than or equal to the value of Descent in 'hhea' table, " "which is %d." % (font_ymin, hhea_table.descent)) def check_for_intersections_and_off_curve_extrema(): if 'glyf' not in font: return if variable: # ignore these for variable font masters return if not tests.check('paths'): return glyf_table = font['glyf'] for glyph_index in range(len(glyf_table.glyphOrder)): glyph_name = glyf_table.glyphOrder[glyph_index] glyph = glyf_table[glyph_name] check_extrema = tests.check('paths/extrema') check_intersection = tests.check('paths/intersection') if glyph.numberOfContours not in [0, -1]: # not empty or composite all_contours = [] start_point = 0 for contour in range(glyph.numberOfContours): end_point = glyph.endPtsOfContours[contour] # TODO(roozbeh): See if this matters, and potentially # re-enable. # # if glyph.flags[start_point] == 0: # warn("Off-curve start", "The glyph '%s' has an " # "off-curve starting point in "its contour #%d." # % (glyph_name, contour+1)) curves_in_contour = [] for point in range(start_point, end_point + 1): if glyph.flags[point] == 1: # on-curve next_point = point while True: next_point = next_circular_point( next_point, start_point, end_point) if glyph.flags[next_point] == 1: # on-curve break curve = curve_between( glyph.coordinates, point, next_point, start_point, end_point) curves_in_contour.append(curve) if not check_extrema: continue out_of_box = curve_has_off_curve_extrema(curve) if out_of_box > 0: warn("paths/extrema", "Extrema", "The glyph '%s' is missing on-curve extreme points " "in the segment between point %d=%s and point %d=%s " "by %f units." % (glyph_name, point, glyph.coordinates[point], next_point, glyph.coordinates[next_point], out_of_box), extrema_details, check_test=False) start_point = end_point + 1 all_contours.append(curves_in_contour) if check_intersection: result = curves_intersect(all_contours) if result: warn("paths/intersection", "Intersection", "The glyph '%s' has intersecting " "outlines: %s" % (glyph_name, result), check_test=False) def check_gdef_table(cmap): """Validate the GDEF table.""" if not tests.check('gdef'): return mark_glyphs = [code for code in cmap if unicode_data.category(code) == 'Mn'] try: class_def = font["GDEF"].table.GlyphClassDef.classDefs except (KeyError, AttributeError): class_def = None if tests.check('gdef/classdef'): names_of_classes = [ "default class", "base glyph", "ligature glyph", "mark glyph", "component glyph"] if mark_glyphs and not class_def: warn("gdef/classdef/not_present", "Glyph Class", "There is no GlyphClassDef subtable of GDEF table in the " "font, while there are non-spacing combining characters: %s." % printable_unicode_range(mark_glyphs), is_error=False) elif mark_glyphs and not is_indic: for code in mark_glyphs: glyph = cmap[code] if glyph not in class_def: if tests.checkvalue('gdef/classdef/unlisted', code): warn("gdef/classdef/unlisted", "Glyph Class", "Glyph %s (U+%04X %s) is a combining mark, but is not " "assigned a value in the GDEF/GlyphClassDef table." % (glyph, code, unicode_data.name(code)), is_error=False, check_test=False) elif (tests.checkvalue('gdef/classdef/combining_mismatch', code) and class_def[glyph] != 3): warn("gdef/classdef/combining_mismatch", "Glyph Class", "Glyph %s (U+%04X %s) is a combining mark, but is " "defined as class %d (%s) in the GDEF/GlyphClassDef " "table." % ( glyph, code, unicode_data.name(code), class_def[glyph], names_of_classes[class_def[glyph]]), is_error=False, check_test=False) if class_def and not is_indic: for code in cmap: glyph = cmap[code] if glyph in class_def: klass = class_def[glyph] if (tests.checkvalue('gdef/classdef/not_combining_mismatch', code) and klass == 3 and unicode_data.category(code) != "Mn" and code not in noto_data.ACCEPTABLE_AS_COMBINING): warn("gdef/classdef/not_combining_mismatch", "Glyph Class", "Glyph %s (U+%04X %s) is defined as class 3 " "(non-spacing) in the GDEF/GlyphClassDef table, " "but is of general category %s." % ( cmap[code], code, unicode_data.name(code), unicode_data.category(code)), is_error=False, check_test=False) if tests.check('gdef/attachlist'): # check for duplicate attachment points in AttachList table # See https://code.google.com/p/noto/issues/detail?id=128#c20 try: attach_point_list = font["GDEF"].table.AttachList.AttachPoint except (KeyError, AttributeError): attach_point_list = [] for index, attach_point in enumerate(attach_point_list): points = attach_point.PointIndex if len(set(points)) != len(points): warn("gdef/attachlist/duplicates", "Attach List", "Entry #%d in GDEF.AttachList has duplicate points," "resulting in being rejected as a web font." % index) elif sorted(points) != points: warn("gdef/attachlists/out_of_order", "Attach List", "Points in entry #%d in GDEF.AttachList are not in " "increasing order." % index) if tests.check('gdef/ligcaretlist'): # check that every ligature has a ligature caret in GDEF ligatures = [] if class_def: for glyph in class_def: if class_def[glyph] == 2: ligatures.append(glyph) if ligatures: try: lig_caret_list_coverage = ( font["GDEF"].table.LigCaretList.Coverage) except (KeyError, AttributeError): lig_caret_list_coverage = None if not lig_caret_list_coverage: if not is_indic: warn("gdef/ligcaretlist/not_present", "Ligature Class", "There is no LigCaretList data in the GDEF table, but " "there are ligatures defined in GDEF: %s." % ", ".join(ligatures)) else: if set(lig_caret_list_coverage.glyphs) - set(ligatures): warn("gdef/ligcaretlist/not_ligature", "Ligature Class", "Some glyphs are defined to have ligature carets in " "GDEF table, but are not defined as ligatures in the " "table: %s." % ", ".join(sorted( set(lig_caret_list_coverage.glyphs) - set(ligatures)))) elif set(ligatures) - set(lig_caret_list_coverage.glyphs): if not is_indic: warn("gdef/ligcaretlist/unlisted", "Ligature Class", "Some glyphs are defined as ligatures in " "the GDEF table, but don't have ligature carets: %s." % ", ".join(sorted( set(ligatures) - set(lig_caret_list_coverage.glyphs)))) def check_complex_stylistic_set_name_ids(gsub_or_gpos): GSUB_OR_GPOS = gsub_or_gpos.upper() table = font[GSUB_OR_GPOS].table if not table.FeatureList: return name_id_set = None for index in range(table.FeatureList.FeatureCount): record = table.FeatureList.FeatureRecord[index] params = record.Feature.FeatureParams if isinstance(params, otTables.FeatureParamsStylisticSet): if not name_id_set: name_id_set = {r.nameID for r in font['name'].names} if not params.UINameID in name_id_set: warn("complex/%s/ui_name_id" % gsub_or_gpos, GSUB_OR_GPOS, "Feature index %s (%s) has UINameID %d but it is not in the name table" % ( index, record.FeatureTag, params.UINameID)) def check_shaping(font_file, strs, context, errors): text = '\n'.join(strs) temp_file = tempfile.NamedTemporaryFile(suffix='.txt') try: temp_file.write(text.encode("utf-8")) temp_file.flush() command = ['hb-shape', '--font-file=%s' % font_file, '--text-file=%s' % temp_file.name] features = [] if context != 'isol': features.append('-isol') if context: features.append(context) command.append('--features=%s' % ','.join(features)) # print "command: %s" % ' '.join(command) result = subprocess.check_output(command) for src, res in zip(strs, result.splitlines()): if res.find('|') != -1: errors.append((src, context, res)) finally: temp_file.close() def check_gsub_variants(): """Checks if harfbuzz can use GSUB to generate standard variants""" if not tests.check("complex/gsub/variants"): return cmap = font_data.get_cmap(font) variant_cps = unicode_data.variant_data_cps() cps_with_variants = set(cmap.keys()) & variant_cps any_strs = [] isolate_strs = [] initial_strs = [] medial_strs = [] final_strs = [] for cp in sorted(cps_with_variants): data = unicode_data.get_variant_data(cp) for sel, _, ctx in sorted(data): line = unichr(cp) + unichr(sel); if ctx == 0: any_strs.append(line) continue if ctx & 1: isolate_strs.append(line) if ctx & 2: initial_strs.append(line) if ctx & 4: medial_strs.append(line) if ctx & 8: final_strs.append(line) errors = [] font_file = font_props.filepath check_shaping(font_file, any_strs, '', errors) check_shaping(font_file, isolate_strs, 'isol', errors) check_shaping(font_file, initial_strs, 'init', errors) check_shaping(font_file, medial_strs, 'medi', errors) check_shaping(font_file, final_strs, 'fina', errors) if errors: erroritems = [] for src, context, res in errors: srctext = ' '.join("%04x" % ord(cp) for cp in src) ctx = (" (%s)" % context) if context else '' erroritems.append("%s%s: %s" % (srctext, ctx, res)) errorinfo = ', '.join(erroritems) warn("complex/gsub/variants", "GSUB", "Expected GSUB to generate all standard variants, but %d " "cases did not (%s)" % (len(errors), errorinfo)) def check_gpos_and_gsub_tables(): if not tests.check('complex'): return whitelist = [ 'Hluw', # Anatolian Hieroglyphs 'Cari', # Carian 'Xsux', # Cuneiform 'Cprt', # Cypriot 'Dsrt', # Deseret 'Egyp', # Egyptian Hieroglyphs 'Armi', # Imperial Aramaic 'Linb', # Linear B 'Lisu', # Lisu 'Lyci', # Lycian 'Lydi', # Lydian 'Ogam', # Ogham 'Olck', # Ol Chiki 'Ital', # Old Italic 'Xpeo', # Old Persian 'Sarb', # Old South Arabian 'Orkh', # Old Turkic 'Osma', # Osmanya 'Phnx', # Phoenician 'Runr', # Runic 'Shaw', # Shavian 'Ugar', # Ugaritic 'Vaii', # Vai 'Yiii', # Yi ] if font_props.script in whitelist: return if "GPOS" not in font: warn("complex/gpos/missing", "GPOS", "There is no GPOS table in the font.") else: check_complex_stylistic_set_name_ids('gpos') # Assume no GSUB necessary for Adlm if font_props.script == 'Adlm': return if "GSUB" not in font: warn("complex/gsub/missing", "GSUB", "There is no GSUB table in the font.") else: check_complex_stylistic_set_name_ids('gsub') check_gsub_variants() #TODO: Add more script-specific checks def check_for_bidi_pairs(cmap): """Checks for proper support of bidi mirroring in the font. For each bidi mirroring character in the font, we wake sure that: if it is in OMPL, its mirror pair should also be in the cmap, and the first character should not mapped by 'rtlm'. If the character is not in OMPL, it should be mapped by 'rtlm'. Only the first 'rtlm' feature in the font is used. """ if not tests.check('bidi'): return # need to discuss this with Adobe rtlm = {} if "GSUB" in font: try: feature_record = font["GSUB"].table.FeatureList.FeatureRecord except AttributeError: warn("bidi", "bidi", "GSUB table with no feature record", is_error=False) feature_record = [] for record in feature_record: if record.FeatureTag == "rtlm": # FIXME for lookup_number in record.Feature.LookupListIndex: lookup = font["GSUB"].table.LookupList.Lookup[ lookup_number] lookup_type = lookup.LookupType if lookup_type == 7: # GSUB extension assert lookup.SubTableCount == 1 lookup_type = lookup.SubTable[0].ExtensionLookupType subtables = [lookup.SubTable[0].ExtSubTable] else: subtables = lookup.SubTable assert lookup_type == 1, ( "Don't know how to handle 'rtlm' features with " "lookup type other than 1.") for subtable in subtables: for key in subtable.mapping.keys(): rtlm[key] = subtable.mapping[key] break ompl = opentype_data.OMPL for code in sorted(cmap): if (unicode_data.is_private_use(code) or not unicode_data.mirrored(code)): if cmap[code] in rtlm: warn("bidi/rtlm_non_mirrored", "Bidi", "The 'rtlm' feature in the font applies to the glyph " "for U+%04X (%s), but it shouldn't, since the " "character is not bidi mirroring." % ( code, cmap[code])) continue # skip the rest of the tests # The following tests are only applied to bidi mirroring characters if code in ompl: if cmap[code] in rtlm: warn("bidi/ompl_rtlm", "Bidi", "The 'rtlm' feature in the font applies to the glyph " "for U+%04X (%s), but it shouldn't, since the " "character is in the OMPL list." % (code, cmap[code])) mirrored_pair = ompl[code] if mirrored_pair not in cmap: warn("bidi/ompl_missing_pair", "Bidi", "The character U+%04X (%s) is supported in the font, " "but its bidi mirrored pair U+%04X (%s) is not." % ( code, unicode_data.name(code), mirrored_pair, unicode_data.name(mirrored_pair))) else: if cmap[code] not in rtlm: warn("bidi/rtlm_unlisted", "Bidi", "No 'rtlm' feature is applied to the glyph " "for U+%04X (%s), but one should be applied, since " "the character is a bidi mirroring character that is " "not in the OMPL list." % ( code, cmap[code])) def check_hints(): if not 'glyf' in font: return if not tests.check('hints'): return expected_to_be_hinted = font_props.is_hinted expected_to_be_unhinted = not expected_to_be_hinted # There should be no fpgm, prep, or cvt tables in unhinted fonts if expected_to_be_unhinted: for table_name in ['fpgm', 'prep', 'cvt']: if table_name in font: warn("hints/unexpected_tables", "Hints", "The font is supposed to be unhinted, but it has " "a '%s' table." % table_name) glyf_table = font['glyf'] check_unexpected_bytecode = tests.check('hints/unexpected_bytecode') for glyph_index in range(len(glyf_table.glyphOrder)): glyph_name = glyf_table.glyphOrder[glyph_index] glyph = glyf_table[glyph_name] if glyph.numberOfContours > 0: bytecode = glyph.program.bytecode if expected_to_be_unhinted: if check_unexpected_bytecode and bytecode: warn("hints/unexpected_bytecode", "Hints", "The font is supposed to be unhinted, but " "glyph '%s' has hints." % glyph_name, check_test=False) else: if not bytecode and tests.checkvalue('hints/missing_bytecode', glyph_index): warn("hints/missing_bytecode", "Hints", "The font is supposed to be hinted, but " "glyph '%s' (%d) doesn't have hints." % (glyph_name, glyph_index), check_test=False) def check_explicit_advances(): """Check some cases where we expect advances to be explicitly related.""" if not tests.check('advances'): return cmap = font_data.get_cmap(font) def get_horizontal_advance(codepoint): return font_data.get_glyph_horizontal_advance(font, cmap[codepoint]) def expect_width(codepoint, expected, low_divisor=None, high_divisor=None, label='advances/whitespace', is_error=True): # it is ok if the font does not support the tested codepoint if codepoint not in cmap: return # no low divisor means exact match of the expected advance if not low_divisor: low_divisor = 1 slop = 0 else: slop = 1 adv = get_horizontal_advance(codepoint) if not high_divisor: exp = int(round(float(expected) / low_divisor)) if abs(adv - exp) > slop: glyph_name = cmap[codepoint] glyph_id = font.getGlyphID(glyph_name) warn(label, "Advances", "The advance of U+%04x (%s, glyph %d) is %d, but expected %d." % (codepoint, glyph_name, glyph_id, adv, exp), check_test=False, is_error=is_error) else: # note name switch, since the higher divisor returns the lower value high_exp = int(round(float(expected) / low_divisor)) low_exp = int(round(float(expected) / high_divisor)) if not (low_exp - slop <= adv <= high_exp + slop): glyph_name = cmap[codepoint] glyph_id = font.getGlyphID(glyph_name) warn(label, "Advances", "The advance of U+%04x (%s, glyph %d) is %d, but expected between " "%d and %d." % (codepoint, glyph_name, glyph_id, adv, low_exp, high_exp), check_test=False, is_error=is_error) digit_char = ord('0') period_char = ord('.') comma_char = ord(',') space_char = ord(' ') tab_char = ord('\t') nbsp_char = 0x00a0 if digit_char in cmap: digit_width = get_horizontal_advance(digit_char) if tests.check('advances/digits'): for i in range(10): digit = ord('0') + i width = get_horizontal_advance(digit) if width != digit_width: warn("advances/digits", "Advances", "The advance of '%s' (%d) is different from that of '0' (%d)." % (chr(digit), width, digit_width), check_test=False) if period_char in cmap: period_width = get_horizontal_advance(period_char) if tests.check('advances/comma_period') and comma_char in cmap: expect_width(comma_char, period_width, label='advances/comma_period', is_error=False) if tests.check('advances/whitespace'): if font_props.is_mono: space_width = get_horizontal_advance(space_char) cps = [ tab_char, nbsp_char ] + range(0x2000, 0x200B) for cp in cps: if cp in cmap: expect_width(cp, space_width) else: if tab_char in cmap or nbsp_char in cmap: space_width = get_horizontal_advance(space_char); if tab_char in cmap: # see https://www.microsoft.com/typography/otspec/recom.htm expect_width(tab_char, space_width) if nbsp_char in cmap: expect_width(nbsp_char, space_width) em_width = font['head'].unitsPerEm expect_width(0x2000, em_width, 2) # en_quad expect_width(0x2001, em_width) # em_quad expect_width(0x2002, em_width, 2) # en_space expect_width(0x2003, em_width) # em_space expect_width(0x2004, em_width, 3) # three-per-em space expect_width(0x2005, em_width, 4) # four-per-em space expect_width(0x2006, em_width, 6) # six-per-em space if digit_char in cmap: expect_width(0x2007, digit_width) # figure space if period_char in cmap: expect_width(0x2008, period_width) # punctuation space # see http://unicode.org/charts/PDF/U2000.pdf, but microsoft (below) # says French uses 1/8 em. expect_width(0x2009, em_width, 5, 6) # thin space # see http://www.microsoft.com/typography/developers/fdsspec/spaces.htm expect_width(0x200A, em_width, 10, 16) # hair space expect_width(0x200B, 0) # zero width space if tests.check('advances/spacing_marks'): spacing_marks = lint_config.parse_int_ranges( "02C8 02CA-02D7 02DE 02DF 02EC 02ED 02EF-02F2 02F4-02FF", True) for cp in spacing_marks: if cp not in cmap: continue if not get_horizontal_advance(cp): warn("advances/spacing_marks", "Advances", "The spacing mark %s (%04x) should have a non-zero advance." % ( unichr(cp), cp)); def check_stems(cmap): if not 'glyf' in font: return if not tests.check('stem'): return # Only implemented for Ogham, currently # FIXME: Add support for Arabic, Syriac, Mongolian, Phags-Pa, # Devanagari, Bengali, etc joins_to_right = set(range(0x1680, 0x169B+1)) joins_to_left = set(range(0x1680, 0x169A+1) + [0x169C]) all_joining = joins_to_right | joins_to_left glyf_table = font['glyf'] metrics_dict = font['hmtx'].metrics check_left_joining = tests.check('stem/left_joining') check_right_joining = tests.check('stem/right_joining') for code in all_joining & set(cmap): glyph_name = cmap[code] advance_width, lsb = metrics_dict[glyph_name] if check_left_joining and code in joins_to_left: if lsb != 0: warn("stem/left_joining", "Stem", "The glyph for U+%04X (%s) is supposed to have a stem " "connecting to the left, but its left side bearing " "is %d instead of 0." % (code, unicode_data.name(code), lsb), check_test=False) if check_right_joining and code in joins_to_right: glyph = glyf_table[glyph_name] rsb = advance_width - (lsb + glyph.xMax - glyph.xMin) if rsb != -70: warn("stem/right_joining", "Stem", "The glyph for U+%04X (%s) is supposed to have a stem " "connecting to the right, but it's right side bearing " "is %d instead of -70." % (code, unicode_data.name(code), rsb), check_test=False) def check_accessiblity(cmap): """Test if all glyphs are accessible through cmap, decomps, or GSUB. This is done using the font subsetter. We ask the subsetter to subset for all Unicode characters in the cmap table, and see if every glyph is covered after subsetting. """ if not tests.check('reachable'): return test_filter = tests.get_filter('reachable') glyph_name_to_id = font.getReverseGlyphMap().copy() all_glyphs = set(font.getGlyphOrder()) subsetter = subset.Subsetter() subsetter.populate(unicodes=cmap.keys()) try: subsetter._closure_glyphs(font) except Exception as e: warn("reachable", "Reachability", "Subsetter failure, bad/missing tables?: '%s'" % e) return unreachable_glyphs = all_glyphs - subsetter.glyphs_all if unreachable_glyphs: reported_glyphs = set() reported_list = [] for glyph_name in unreachable_glyphs: glyph_id = glyph_name_to_id[glyph_name] if not test_filter or test_filter[1].accept(glyph_id): if glyph_name not in reported_glyphs: reported_glyphs.add(glyph_name) reported_list.append((glyph_name, glyph_id)) if reported_list: report_info = ', '.join('%s (%d)' % t for t in sorted(reported_list)) warn("reachable", "Reachability", "The following %d glyphs are unreachable in the font: %s." % (len(reported_glyphs), report_info), check_test=False) ### actual start of check_font fn # python 2.7 does not have nonlocal, so hack around it suppressed_err_count = [0] err_count = [0] suppressed_warn_count = [0] warn_count = [0] font_path = path.expanduser(font_props.filepath) font = ttLib.TTFont(font_path) is_indic = font_props.script in { "Deva", "Beng", "Guru", "Gujr", "Orya", "Taml", "Telu", "Knda", "Mlym", "Sinh", "Khmr" } fi = lint_config.FontInfo( filename=path.basename(font_path), name=font_props.family, style=font_props.style, script=font_props.script, variant=font_props.variant, weight=font_props.weight, monospace=font_props.is_mono, hinted=font_props.is_hinted, vendor=font_props.vendor, version=printable_font_revision(font, accuracy=3 if font_props.vendor == 'Adobe' else 2)) tests = lint_spec.get_tests(fi) if filename_error: if filename_error == 'script': warn("filename/script", "File name", "Style %s also needs a script mentioned in the " "file name." % font_props.style) elif filename_error == 'name': warn("filename/name", "File name", "File name '%s' does not match the Noto font naming guidelines." % path.basename(font_props.filepath)) check_name_table() cmap = check_cmap_table() check_variants() check_head_tables(cmap) check_vertical_limits() check_for_intersections_and_off_curve_extrema() check_gdef_table(cmap) check_gpos_and_gsub_tables() check_for_bidi_pairs(cmap) check_hints() check_explicit_advances() check_stems(cmap) # This must be done at the very end, since the subsetter may change the font check_accessiblity(cmap) warn("info", "info", "supported characters: " + printable_unicode_range(cmap.keys()), check_test=False) if runlog: log = sorted(tests.runlog()) count = len(log) if count: print 'Ran %d test%s:\n %s' % (count, 's' if count != 1 else '', '\n '.join(log)) else: print 'Ran no tests.' if skiplog: log = sorted(tests.skiplog()) count = len(log) if len(log): print 'Skipped %d test/group%s:\n %s' % (count, 's' if count != 1 else '', '\n '.join(log)) else: print 'Skipped no tests' # TODO(roozbeh): # * Check that hintedness based on data in the glyf table # matches metadata (file location, header data) # * Check GSUB coverage, based on script # * Check gasp values # * Add support for TTC fonts # * Check ulCodePageRange values def get_lint_spec(spec_file, extra_specs): """Return a LintSpec from spec_file supplemented with extra_specs. If spec_file is None, only use extra_specs.""" spec = None if spec_file != 'None': spec = lint_config.parse_spec_file(spec_file) return lint_config.parse_spec(extra_specs, spec) def parse_font_props(font_props_file): """Return a list of FontProps objects.""" with open(font_props_file) as f: font_spec = f.read() spec_data = json.loads(font_spec) return [FontProps(**m) for m in spec_data] def write_font_props(font_props): print json.dumps(font_props._asdict()) def main(): default_config_file = notoconfig.get( 'lint_config', '[tools]/nototools/data/lint_config.txt') parser = argparse.ArgumentParser() parser.add_argument( "--csv", help="produces csv output to import into a spreadsheet", action="store_true") parser.add_argument( "--info", help="includes informational messages in the output", action="store_true") parser.add_argument( "--suppress_extrema_details", dest="extrema_details", default=True, action="store_false", help="only summarize extrema issues") parser.add_argument( "--csv_header", help="write header line when generating csv output", action="store_true") parser.add_argument( "font_files", metavar="font", nargs="*", help="a font file to check, can omit if font_spec is provided") parser.add_argument( "--font_props_file", metavar="file", help="file containing json describing font file paths and expected properties") parser.add_argument( "--config_file", help="location of config file (default %s, 'None' for none)" % default_config_file, metavar='file', default=default_config_file) parser.add_argument( "--config", help="extra config spec to process after config file", metavar='lint_spec') parser.add_argument( "--runlog", help="show tags of run tests", action="store_true") parser.add_argument( "--skiplog", help="show tags of skipped tests", action="store_true") parser.add_argument( "--dump_font_props", help="write font props for files", action="store_true") parser.add_argument( "-nw", "--nowarn", help="suppress warning messages", action="store_true") parser.add_argument( "-q", "--quiet", help="don't print file names unless there are errors or warnings", action="store_true") parser.add_argument( "-p", "--phase", help="set noto phase for lint compatibility (default 3)", metavar='phase', type=int, default=3) parser.add_argument( "-v", "--variable", help="do checks appropriate to masters for variable fonts.", action="store_true") arguments = parser.parse_args() if arguments.dump_font_props: for font_file_path in arguments.font_files: font_file_path = tool_utils.resolve_path(font_file_path) font_props, filename_error = get_font_properties_with_fallback( font_file_path, phase=arguments.phase) if filename_error: print '#Error for %s: %s' % (font_file_path, filename_error) else: write_font_props(font_props) return config_file = tool_utils.resolve_path(arguments.config_file) lint_spec = get_lint_spec(config_file, arguments.config) if arguments.csv and arguments.csv_header: print("Type,Script,Style,Variant,Subfamily,Manufacturer,Category," "Hint Status,File Name,Revision,Issue") for font_file_path in arguments.font_files: font_file_path = tool_utils.resolve_path(font_file_path) font_props, filename_error = get_font_properties_with_fallback( font_file_path, phase=arguments.phase) if not font_props: print '## ERROR: cannot parse %s' % font_file_path else: check_font(font_props, filename_error, lint_spec, arguments.runlog, arguments.skiplog, arguments.csv, arguments.info, arguments.extrema_details, arguments.nowarn, arguments.quiet, arguments.phase, arguments.variable) if arguments.font_props_file: font_props_list = parse_font_props(arguments.font_props_file) for font_props in font_props_list: check_font(font_props, '', lint_spec, arguments.runlog, arguments.skiplog, arguments.csv, arguments.info, arguments.extrema_details, arguments.nowarn, arguments.quiet, arguments.phase, arguments.variable) if not arguments.csv: print "------" if _processed_files == 1: print "Finished linting 1 file." else: print "Finished linting %d files." % _processed_files if _processed_files > 1: if _processed_files_with_errors: print "%d file%s had errors." % ( _processed_files_with_errors, '' if _processed_files_with_errors == 1 else 's') if _processed_files_with_warnings: print "%d file%s had warnings." % ( _processed_files_with_warnings, '' if _processed_files_with_warnings == 1 else 's') if __name__ == "__main__": main() nototools-2017-09-25-tooling-for-phase3-update/nototools/noto_names.py000077500000000000000000001035171316231664500256520ustar00rootroot00000000000000#!/usr/bin/env python # Copyright 2016 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Determine how the names of members of noto families should be represented. There are two groups of routines, and a tool api. One set of routines generates information about family names from a collection of noto fonts. This information looks at all the subfamilies of a family and generates a FamilyNameInfo object representing general information about that family. For instance, families with only regular/bold, normal/italic subfamilies can use the original opentype name fields and don't require preferred names. These routines also read/write an xml version of this data. The other set of routines generates name information for a noto font, using the family name info. The family name info is required. For example, familes that have no_style_linking set will put Bold and Regular in the original family name and not the subfamily. The tool api lets you generate the family info file, and/or use it to show how one or more fonts' names would be generated. This of necessity incorporates noto naming conventions-- it expects file names that follow noto conventions, and generates the corresponding name table names. So it is not useful for non-noto fonts. """ import argparse import collections import datetime import glob from os import path import re import sys from nototools import cldr_data from nototools import noto_fonts from nototools import tool_utils from nototools import unicode_data from xml.etree import ElementTree as ET # Standard values used in Noto fonts. # Maximum number of characters in the original name field. ORIGINAL_FAMILY_LIMIT = 32 # Regex values returned in NameTableData must start with ^ and end with $, # since lint uses this to understand the value is a regex. GOOGLE_COPYRIGHT_RE = r'^Copyright 20\d\d Google Inc. All Rights Reserved\.$' ADOBE_COPYRIGHT_RE = ( u"^Copyright \u00a9 2014(?:, 20\d\d)? Adobe Systems Incorporated " u"\(http://www.adobe.com/\)\.$") NOTO_URL = "http://www.google.com/get/noto/" SIL_LICENSE = ( "This Font Software is licensed under the SIL Open Font License, " "Version 1.1. This Font Software is distributed on an \"AS IS\" " "BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express " "or implied. See the SIL Open Font License for the specific language, " "permissions and limitations governing your use of this Font Software.") SIL_LICENSE_URL = "http://scripts.sil.org/OFL" APACHE_LICENSE = "Licensed under the Apache License, Version 2.0" APACHE_LICENSE_URL = "http://www.apache.org/licenses/LICENSE-2.0" # default files where we store family name info FAMILY_NAME_INFO_FILE='family_name_info.xml' PHASE_2_FAMILY_NAME_INFO_FILE = '[tools]/nototools/data/family_name_info_p2.xml' PHASE_3_FAMILY_NAME_INFO_FILE = '[tools]/nototools/data/family_name_info_p3.xml' # Represents how we write family names in the name table. # # If no_style_linking is true, 'Bold' and 'Regular' weights become # part of the family name and the subfamily is 'Regular' or 'Italic', # otherwise 'Bold' and 'Regular' are not in the family name and # go into the subfamily ('Regular' does not if 'Italic' is there). # no_style_linking should not be set if there are no extra weights # or widths. # # If use_preferred is true, there are subfamilies that don't fit into # Regular Bold BoldItalic Italic, so generate the preferred names. # Preferred names are actually WWS names, non-wws fields are promoted # to the family and WWS name fields are never populated. # # If include_regular is true, postscript and full names include the subfamily # when it is 'Regular' (CJK behavior) for phase 2. Always included for # phase 3. FamilyNameInfo = collections.namedtuple( 'FamilyNameInfo', 'no_style_linking, use_preferred, include_regular, family_name_style') # Represents expected name table data for a font. # Fields expected to be empty are None. Fields that are expected # to be present but can have any value are '-'. NameTableData = collections.namedtuple( 'NameTableData', 'copyright_re, original_family, original_subfamily, unique_id, ' 'full_name, version_re, postscript_name, trademark, manufacturer, ' 'designer, description_re, vendor_url, designer_url, license_text, ' 'license_url, preferred_family, preferred_subfamily, wws_family, ' 'wws_subfamily') _SCRIPT_KEY_TO_FONT_NAME = { 'Aran': 'Urdu', 'HST': 'Historic', 'LGC': None, 'Zsye': None, 'MONO': None, 'SYM2': 'Symbols2', } # copied from noto_lint, we should have a better place for it. def preferred_script_name(script_key): try: return unicode_data.human_readable_script_name(script_key) except KeyError: return cldr_data.get_english_script_name(script_key) # copied from cmap_data, it has a dependency on lint, lint has one # on this, and python gives an unhelpful error message when there's # circular dependencies. def _prettify(root, indent=''): """Pretty-print the root element if it has no text and children by adding to the root text and each child's tail.""" if not root.text and len(root): indent += ' ' sfx = '\n' + indent root.text = sfx for elem in root: elem.tail = sfx _prettify(elem, indent) elem.tail = sfx[:-2] def _preferred_cjk_parts(noto_font): # CJK treats mono as part of the family name. This is odd # but we will go with the current Adobe naming. family_parts = [ noto_font.family, noto_font.style, 'Mono' if noto_font.is_mono else None] if noto_font.subset: family_parts.append(noto_font.subset) else: family_parts.append('CJK') cjk_script_to_name = { 'Jpan': 'JP', 'Kore': 'KR', 'Hans': 'SC', 'Hant': 'TC' } family_parts.append(cjk_script_to_name[noto_font.script]) subfamily_parts = [ noto_font.weight, noto_font.slope] return family_parts, subfamily_parts def _preferred_non_cjk_parts(noto_font): """Return a tuple of preferred_family, preferred_subfamily). The preferred family is based on the family, style, script, and variant, the preferred_subfamily is based on the remainder. """ family_parts = [ noto_font.family, 'Color' if noto_font.variant == 'color' else None, noto_font.style] script = noto_font.script if script in _SCRIPT_KEY_TO_FONT_NAME: # special case script key portion of name family_parts.append(_SCRIPT_KEY_TO_FONT_NAME[script]) else: family_parts.append(preferred_script_name(script)) if noto_font.variant != 'color': family_parts.append(noto_font.variant) include_weight = (noto_font.weight != 'Regular' or (not noto_font.width and not noto_font.slope)) subfamily_parts = [ 'Mono' if noto_font.is_mono else None, 'UI' if noto_font.is_UI else None, 'Display' if noto_font.is_display else None, noto_font.width, noto_font.weight if include_weight else None, noto_font.slope] return family_parts, subfamily_parts def _preferred_parts(noto_font): if noto_font.is_cjk: parts_pair = _preferred_cjk_parts(noto_font) else: parts_pair = _preferred_non_cjk_parts(noto_font) return filter(None, parts_pair[0]), filter(None, parts_pair[1]) def _shift_parts(family_parts, subfamily_parts, stop_fn): """Iterate over subfamily parts, removing from subfamily and appending to family, until stop_fn(part) returns true. If subfamily_parts is empty, add 'Regular'. This works because for both original and wws subfamilies the order of parts is such that all parts that fail the stop_fn precede any that pass. Does not modify the input parts lists.""" result_family_parts = family_parts[:] limit = len(subfamily_parts) i = 0 while i < limit: part = subfamily_parts[i] if stop_fn(part): break result_family_parts.append(part) i += 1 result_subfamily_parts = subfamily_parts[i:] if not result_subfamily_parts: result_subfamily_parts.append('Regular') return result_family_parts, result_subfamily_parts _WWS_RE = re.compile( '(?:(?:Semi|Extra)?Condensed|%s|Italic)$' % '|'.join(noto_fonts.WEIGHTS)) def _is_wws_part(part): return _WWS_RE.match(part) def _wws_parts(family_parts, subfamily_parts): return _shift_parts(family_parts, subfamily_parts, _is_wws_part) _ORIGINAL_RE = re.compile('(?:Bold|Italic|Regular)$') def _is_original_part(part): return _ORIGINAL_RE.match(part) _LIMITED_ORIGINAL_RE = re.compile('(?:Italic)$') def _is_limited_original_part(part): return _LIMITED_ORIGINAL_RE.match(part) def _original_parts(family_parts, subfamily_parts, no_style_linking=False): """Set no_style_linking to true if weight should be in the family and not the subfamily.""" stop_fn = _is_limited_original_part if no_style_linking else _is_original_part return _shift_parts(family_parts, subfamily_parts, stop_fn) _SHORT_NAMES = { 'Condensed': 'Cond', 'SemiCondensed': 'SemCond', 'ExtraCondensed': 'ExtCond', 'DemiLight': 'DemLt', 'ExtraLight': 'ExtLt', 'Medium': 'Med', 'SemiBold': 'SemBd', 'ExtraBold': 'ExtBd', 'Black': 'Blk', 'Display': 'Disp', } _VERY_SHORT_NAMES = { 'Condensed': 'Cn', 'SemiCondensed': 'SmCn', 'ExtraCondensed': 'XCn', 'Thin': 'Th', 'Light': 'Lt', 'DemiLight': 'DmLt', 'ExtraLight': 'XLt', 'Medium': 'Md', 'Bold': 'Bd', 'SemiBold': 'SmBd', 'ExtraBold': 'XBd', 'Black': 'Bk', 'Display': 'D', } # Only adjusts scripts whose names are > 10 chars in length. # This is keyed off the full name since that's all we have when we # need it. If the name data changes this can break. _SHORT_SCRIPTS = { 'Anatolian Hieroglyphs': 'AnatoHiero', # Hluw 'Pahawh Hmong': 'PahHmong', # Hmng 'New Tai Lue': 'NewTaiLue', # Talu 'Syloti Nagri': 'SyloNagri', # Sylo 'Imperial Aramaic': 'ImpAramaic', # Armi 'SignWriting': 'SignWrit', # Sgnw 'Warang Citi': 'WarangCiti', # Wara 'Canadian Aboriginal': 'CanAborig', # Cans 'Egyptian Hieroglyphs': 'EgyptHiero', # Egyp 'Mende Kikakui': 'MendKik', # Mend 'Old Persian': 'OldPersian', # Xpeo 'Old North Arabian': 'OldNorArab', # Narb 'Caucasian Albanian': 'CaucAlban', # Aghb 'Meroitic Hieroglyphs': 'MeroHiero', # Mero 'Meroitic Cursive': 'MeroCursiv', # Merc 'Inscriptional Pahlavi': 'InsPahlavi', # Phli 'Old South Arabian': 'OldSouArab', # Sarb 'Psalter Pahlavi': 'PsaPahlavi', # Phlp 'Meetei Mayek': 'MeetMayek', # Mtei 'Sora Sompeng': 'SoraSomp', # Sora 'Inscriptional Parthian': 'InsParthi', # Prti 'Pau Cin Hau': 'PauCinHau', # Pauc 'Old Hungarian': 'OldHung', # Hung } def _name_style_for_length(parts, limit): """Return a value indicating whether to use normal, short, very short, or extra short names to represent these parts, depending on what is required to ensure the length <= limit.""" if limit == 0: return 'normal' name = ' '.join(parts) if len(name) <= limit: return 'normal' # shorten script names short_parts = [_SHORT_SCRIPTS.get(n, n) for n in parts] name = ' '.join(_SHORT_NAMES.get(n, n) for n in short_parts) if len(name) <= limit: return 'short' name = ' '.join(_VERY_SHORT_NAMES.get(n, n) for n in short_parts) if len(name) <= limit: return 'very short' name = name.replace(' ', '') if len(name) <= limit: return 'extra short' raise ValueError('cannot fit %s to length %d' % (parts, limit)) def _name_with_style(parts, name_style): """Return a name from parts, using the limit key to determine the style.""" if name_style == 'normal': return ' '.join(parts) # preemtively shorten script names short_parts = [_SHORT_SCRIPTS.get(n, n) for n in parts] if name_style == 'short': return ' '.join(_SHORT_NAMES.get(n, n) for n in short_parts) name = ' '.join(_VERY_SHORT_NAMES.get(n, n) for n in short_parts) if name_style != 'very short': # 'extra short' name = name.replace(' ', '') return name def _names(family_parts, subfamily_parts, family_name_style='normal'): family = _name_with_style(family_parts, family_name_style) subfamily = ' '.join(subfamily_parts) return family, subfamily def _preferred_names(preferred_family, preferred_subfamily, use_preferred): # Preferred names are actually WWS names if use_preferred: return _names(*_wws_parts(preferred_family, preferred_subfamily)) return None, None def _original_names( preferred_family, preferred_subfamily, no_style_linking, family_name_style): return _names(*_original_parts( preferred_family, preferred_subfamily, no_style_linking=no_style_linking), family_name_style=family_name_style) def _copyright_re(noto_font): # See comment at top of file about regex values if noto_font.manufacturer == 'Adobe': return ADOBE_COPYRIGHT_RE else: return GOOGLE_COPYRIGHT_RE def _full_name(preferred_family, preferred_subfamily, include_regular): wws_family, wws_subfamily = _wws_parts(preferred_family, preferred_subfamily) result = wws_family[:] for n in wws_subfamily: if n not in result and (include_regular or n != 'Regular'): result.append(n) return ' '.join(result) def _postscript_name(preferred_family, preferred_subfamily, include_regular): wws_family, wws_subfamily = _wws_parts(preferred_family, preferred_subfamily) # fix for names with punctuation punct_re = re.compile("[\s'-]") result = ''.join(punct_re.sub('', p) for p in wws_family) tail = [n for n in wws_subfamily if n not in wws_family] if tail: result += '-' + ''.join(tail) # fix for CJK def repl_fn(m): return 'CJK' + m.group(1).lower() result = re.sub('CJK(JP|KR|SC|TC)', repl_fn, result) if len(result) > 63: print >> sys.stderr, 'postscript name longer than 63 characters:\n"%s"' % ( result) return result def _version_re(noto_font, phase): # See comment at top of file about regex values if noto_font.manufacturer == 'Adobe': sub_len = 3 hint_ext = '' ttfautohint_tag = '' else: if phase < 3: sub_len = 2 ttfautohint_tag = '' if noto_font.manufacturer == 'Google': hint_ext = '' # no 'uh' suffix for unhinted Color Emoji font else: hint_ext = '' if noto_font.is_hinted else ' uh' else: sub_len = 3 # in phase 3 we don't annotate the primary part of the version string, # but expect 'ttfautohint' to be present somewhere after a semicolon. hint_ext = '' ttfautohint_tag = 'ttfautohint' if noto_font.is_hinted else '' return r'^Version ([0-2])\.(\d{%d})%s(?:;.*%s.*)?$' % ( sub_len, hint_ext, ttfautohint_tag) def _trademark(noto_font): return '%s is a trademark of Google Inc.' % noto_font.family def _manufacturer(noto_font): if noto_font.manufacturer == 'Adobe': return 'Adobe Systems Incorporated' if noto_font.manufacturer == 'Monotype': return 'Monotype Imaging Inc.' if noto_font.manufacturer == 'Khmertype': return 'Danh Hong' if noto_font.manufacturer == 'Google': return 'Google, Inc.' raise ValueError('unknown manufacturer "%s"' % noto_font.manufacturer) DESIGNER_STRINGS = { 'mti-chahine': 'Nadine Chahine - Monotype Design Team', 'mti-bosma': 'Jelle Bosma - Monotype Design Team', 'mti-hong': 'Danh Hong and the Monotype Design Team', 'mti': 'Monotype Design Team', } FAMILY_ID_TO_DESIGNER_KEY_P3 = { 'sans-arab': 'mti-chahine', 'sans-deva': 'mti-bosma', 'sans-khmr': 'mti-hong', 'serif-khmr': 'mti-hong', 'sans-sinh': 'mti-bosma', 'serif-sinh': 'mti-bosma', } def _designer(noto_font, phase): if noto_font.manufacturer == 'Adobe': return '-' if noto_font.manufacturer == 'Monotype': if phase == 3: family_id = noto_fonts.noto_font_to_family_id(noto_font) designer_key = FAMILY_ID_TO_DESIGNER_KEY_P3.get(family_id) if designer_key: return DESIGNER_STRINGS[designer_key] if noto_font.family == 'Noto': if noto_font.style == 'Serif' and noto_font.script in [ 'Beng', 'Gujr', 'Knda', 'Mlym', 'Taml', 'Telu']: return 'Indian Type Foundry' if noto_font.script == 'Arab' and phase == 3: return 'Nadine Chahine' return 'Monotype Design Team' if noto_font.family in ['Arimo', 'Cousine', 'Tinos']: return 'Steve Matteson' raise ValueError('unknown family "%s"' % noto_font.family) if noto_font.manufacturer == 'Khmertype': return 'Danh Hong' if noto_font.manufacturer == 'Google': return 'Google, Inc.' raise ValueError('unknown manufacturer "%s"' % noto_font.manufacturer) def _designer_url(noto_font): if noto_font.manufacturer == 'Adobe': return 'http://www.adobe.com/type/' if noto_font.manufacturer == 'Monotype': return 'http://www.monotype.com/studio' if noto_font.manufacturer == 'Khmertype': return 'http://www.khmertype.org' if noto_font.manufacturer == 'Google': return 'http://www.google.com/get/noto/' raise ValueError('unknown manufacturer "%s"' % noto_font.manufacturer) def _description_re(noto_font, phase): # See comment at top of file about regex values if noto_font.manufacturer == 'Adobe': return '-' if noto_font.manufacturer == 'Google' and noto_font.variant == 'color': return 'Color emoji font using CBDT glyph data.' if phase < 3: hint_prefix = 'Data %shinted.' % ( '' if noto_font.is_hinted else 'un') else: # In phase 3 no hint prefix at all regardless of hinted or unhinted. hint_prefix = '' designer = '' if noto_font.manufacturer == 'Monotype': if noto_font.family == 'Noto': designer = 'Designed by Monotype design team.' if hint_prefix: hint_prefix += ' ' else: # Arimo, Tinos, and Cousine don't currently mention hinting in their # descriptions, but they probably should. # TODO(dougfelt): swat them to fix this. return '-' return '^%s%s$' % (hint_prefix, designer) def _license_text(noto_font): if noto_font.license_type == 'sil': return SIL_LICENSE if noto_font.license_type == 'apache': return APACHE_LICENSE raise ValueError('unknown license type "%s"' % noto_font.license_type) def _license_url(noto_font): if noto_font.license_type == 'sil': return SIL_LICENSE_URL if noto_font.license_type == 'apache': return APACHE_LICENSE_URL raise ValueError('unknown license type "%s"' % noto_font.license_type) def name_table_data(noto_font, family_to_name_info, phase): """Returns a NameTableData for this font given the family_to_name_info.""" family_id = noto_fonts.noto_font_to_wws_family_id(noto_font) try: info = family_to_name_info[family_id] except KeyError: print >> sys.stderr, 'no family name info for "%s"' % family_id return None family_parts, subfamily_parts = _wws_parts(*_preferred_parts(noto_font)) if not info.use_preferred and subfamily_parts not in [ ['Regular'], ['Bold'], ['Italic'], ['Bold', 'Italic']]: print >> sys.stderr, ( 'Error in family name info: %s requires preferred names, but info ' 'says none are required.' % path.basename(noto_font.filepath)) print >> sys.stderr, subfamily_parts return None # for phase 3 we'll now force include_regular include_regular = phase == 3 or info.include_regular ofn, osfn = _original_names( family_parts, subfamily_parts, info.no_style_linking, info.family_name_style) # If we limit the original names (to put weights into the original family) # then we need a preferred name to undo this. When info is read or generated, # the code should ensure use_preferred is set. pfn, psfn = _preferred_names( family_parts, subfamily_parts, info.use_preferred) if pfn and pfn == ofn: pfn = None if psfn and psfn == osfn: psfn = None return NameTableData( copyright_re=_copyright_re(noto_font), original_family=ofn, original_subfamily=osfn, unique_id='-', full_name=_full_name(family_parts, subfamily_parts, include_regular), version_re=_version_re(noto_font, phase), postscript_name=_postscript_name( family_parts, subfamily_parts, include_regular), trademark=_trademark(noto_font), manufacturer=_manufacturer(noto_font), designer=_designer(noto_font, phase), description_re=_description_re(noto_font, phase), vendor_url=NOTO_URL, designer_url=_designer_url(noto_font), license_text=_license_text(noto_font), license_url=_license_url(noto_font), preferred_family=pfn, preferred_subfamily=psfn, wws_family=None, wws_subfamily=None) def _create_family_to_subfamilies(notofonts): """Return a map from preferred family name to set of preferred subfamilies. Note these are WWS family/subfamilies now.""" family_to_subfamilies = collections.defaultdict(set) for noto_font in notofonts: family, subfamily = _names(*_wws_parts(*_preferred_parts(noto_font))) family_to_subfamilies[family].add(subfamily) return family_to_subfamilies _NON_ORIGINAL_WEIGHT_PARTS = frozenset( w for w in noto_fonts.WEIGHTS if w not in ['Bold', 'Regular']) _ORIGINAL_PARTS = frozenset(['Bold', 'Regular', 'Italic']) _WWS_PARTS = frozenset( ['SemiCondensed', 'ExtraCondensed', 'Condensed', 'Italic'] + list(noto_fonts.WEIGHTS)) def _select_name_style(styles): for style in ['extra short', 'very short', 'short']: if style in styles: return style return 'normal' def create_family_to_name_info(notofonts, phase, extra_styles): if phase not in [2, 3]: raise ValueError('expected phase 2 or 3 but got "%s"' % phase) family_to_parts = collections.defaultdict(set) family_to_name_styles = collections.defaultdict(set) cjk_families = set() for noto_font in notofonts: family_id = noto_fonts.noto_font_to_wws_family_id(noto_font) preferred_family, preferred_subfamily = _preferred_parts(noto_font) _, subfamily_parts = _wws_parts(preferred_family, preferred_subfamily) family_to_parts[family_id].update(subfamily_parts) # It's been asserted that the family name can't be longer than 32 chars. # Assume this is only true for nameID 1 and not nameID 16 or 17. family_parts, _ = _original_parts(preferred_family, preferred_subfamily) family_name_style = _name_style_for_length( family_parts, ORIGINAL_FAMILY_LIMIT) family_to_name_styles[family_id].add(family_name_style) if noto_font.is_cjk: cjk_families.add(family_id) # If extra_styles is true, we assume all wws styles are present. The # practical import of this is that use_preferred will be true, and the # family name style will be short enough to accommodate the longest # wws style name. So we just synthesize this and run each font through # one more time with those styles. # For a given wws id the fonts should all be wws variants. Since we # substitute fixed wws values, any font with the same wws id will do. # # This is a kludge, as it duplicates a lot of the above code. if extra_styles: seen_ids = set() for noto_font in notofonts: if noto_font.is_cjk: # Don't do this for cjk continue family_id = noto_fonts.noto_font_to_wws_family_id(noto_font) if family_id in seen_ids: continue seen_ids.add(family_id) preferred_family, _ = _preferred_parts(noto_font) preferred_subfamily = filter(None, [ 'Mono' if noto_font.is_mono else None, 'UI' if noto_font.is_UI else None, 'Display' if noto_font.is_display else None, 'ExtraCondensed', # longest width name 'ExtraLight', # longest weight name 'Italic']) # longest slope name _, subfamily_parts = _wws_parts(preferred_family, preferred_subfamily) family_to_parts[family_id].update(subfamily_parts) family_parts, _ = _original_parts(preferred_family, preferred_subfamily) family_name_style = _name_style_for_length( family_parts, ORIGINAL_FAMILY_LIMIT) family_to_name_styles[family_id].add(family_name_style) result = {} for family_id, part_set in family_to_parts.iteritems(): # Even through CJK mono fonts are in their own families and have only # bold and regular weights, they behave like they have more weights like # the rest of CJK. family_is_cjk = family_id in cjk_families no_style_linking = phase == 2 and family_is_cjk use_preferred = no_style_linking or bool(part_set - _ORIGINAL_PARTS) # Keep 'Regular' in the postscript/full name only for CJK in phase 2, # or always if phase 3. include_regular = phase == 3 or family_is_cjk name_style = 'normal' if phase == 2 else _select_name_style( family_to_name_styles[family_id]) result[family_id] = FamilyNameInfo( no_style_linking, use_preferred, include_regular, name_style) return result def _build_info_element(family, info): attrs = {'family': family} for attr in FamilyNameInfo._fields: val = getattr(info, attr) if attr == 'family_name_style': # only write family length style if not 'normal' if val != 'normal': attrs[attr] = val elif val: attrs[attr] = 't' # Don't have to write it out since no_style_linking implies use_preferred if 'no_style_linking' in attrs and 'use_preferred' in attrs: del attrs['use_preferred'] return ET.Element('info', attrs) def _build_tree(family_to_name_info, pretty=False): date = str(datetime.date.today()) root = ET.Element('family_name_data', date=date) for family in sorted(family_to_name_info): info = family_to_name_info[family] root.append(_build_info_element(family, info)) if pretty: _prettify(root) root.tail='\n' return ET.ElementTree(element=root) def _read_info_element(info_node): def bval(attr): return bool(info_node.get(attr, False)) def nval(attr): return info_node.get(attr, 'normal') # no_style_linking implies use_preferred return FamilyNameInfo( bval('no_style_linking'), bval('no_style_linking') or bval('use_preferred') or bval('use_wws'), bval('include_regular'), nval('family_name_style')) def _read_tree(root): family_to_name_info = {} for node in root: if node.tag != 'info': raise ValueError('unknown node in tree: "%s"' % node.tag) family = node.get('family').strip() family_to_name_info[family] = _read_info_element(node) return family_to_name_info def write_family_name_info_file(family_to_name_info, filename, pretty=False): filename = tool_utils.resolve_path(filename) _build_tree(family_to_name_info, pretty).write( filename, encoding='utf8', xml_declaration=True) def write_family_name_info(family_to_name_info, pretty=False): return ET.tostring( _build_tree(family_to_name_info, pretty).getroot(), encoding='utf-8') _PHASE_TO_NAME_INFO_CACHE = {} _PHASE_TO_FILENAME = { 2: PHASE_2_FAMILY_NAME_INFO_FILE, 3: PHASE_3_FAMILY_NAME_INFO_FILE } def family_to_name_info_for_phase(phase): """Phase is an int, either 2 or 3.""" result = _PHASE_TO_NAME_INFO_CACHE.get(phase, None) if not result: filename = _PHASE_TO_FILENAME[phase] result = read_family_name_info_file(filename) _PHASE_TO_NAME_INFO_CACHE[phase] = result return result def read_family_name_info_file(filename): """Returns a map from preferred family name to FontNameInfo.""" filename = tool_utils.resolve_path(filename) return _read_tree(ET.parse(filename).getroot()) def read_family_name_info(text): """Returns a map from preferred family name to FontNameInfo.""" return _read_tree(ET.fromstring(text)) def _create_family_to_faces(notofonts, name_fn): """Notofonts is a collection of NotoFonts. Return a map from preferred family to a list of preferred subfamily.""" family_to_faces = collections.defaultdict(set) for noto_font in notofonts: if noto_font.fmt == 'ttc': continue family, subfamily = name_fn(noto_font) family_to_faces[family].add(subfamily) return family_to_faces def _dump_family_to_faces(family_to_faces): for family in sorted(family_to_faces): print '%s:\n %s' % ( family, '\n '.join(sorted(family_to_faces[family]))) def _dump_name_data(name_data): if not name_data: print ' Error: no name data' return True err = False for attr in NameTableData._fields: value = getattr(name_data, attr) if value: if attr == 'original_family' and len(value) > ORIGINAL_FAMILY_LIMIT: print '## family too long (%2d): %s' % (len(value), value) err = True print ' %20s: %s' % (attr, value) else: print ' %20s: ' % attr return err def _dump_family_names(notofonts, family_to_name_info, phase): err_names = [] for font in sorted(notofonts, key=lambda f: f.filepath): name_data = name_table_data(font, family_to_name_info, phase) print print font.filepath if _dump_name_data(name_data): err_names.append(font.filepath) if err_names: print '## %d names too long:\n %s' % ( len(err_names), '\n '.join(err_names)) def _dump(fonts, info_file, phase): """Display information about fonts, using name info from info_file.""" family_to_name_info = read_family_name_info_file(info_file) _dump_family_names(fonts, family_to_name_info, phase) def _write(fonts, info_file, phase, extra_styles): """Build family name info from font_paths and write to info_file. Write to stdout if info_file is None.""" family_to_name_info = create_family_to_name_info(fonts, phase, extra_styles) if info_file: write_family_name_info_file(family_to_name_info, info_file, pretty=True) else: print write_family_name_info(family_to_name_info, pretty=True) def _test(fonts, phase, extra_styles): """Build name info from font_paths and dump the names for them.""" family_to_name_info = create_family_to_name_info(fonts, phase, extra_styles) print write_family_name_info(family_to_name_info, pretty=True) _dump_family_names(fonts, family_to_name_info, phase) def _info(fonts): """Group fonts into families and list the subfamilies for each.""" family_to_subfamilies = _create_family_to_subfamilies(fonts) for family in sorted(family_to_subfamilies): print '%s:\n %s' % ( family, '\n '.join(sorted(family_to_subfamilies[family]))) def _read_filename_list(filenames): with open(filenames, 'r') as f: return [n.strip() for n in f if n] def _collect_paths(dirs, files): paths = [] if dirs: for d in dirs: d = tool_utils.resolve_path(d) paths.extend(n for n in glob.glob(path.join(d, '*'))) if files: for fname in files: if fname[0] == '@': paths.extend(_read_filename_list(fname[1:])) else: paths.append(tool_utils.resolve_path(fname)) return paths def _get_noto_fonts(font_paths): FMTS = frozenset(['ttf', 'otf']) SCRIPTS = frozenset(['CJK', 'HST']) fonts = [] for p in font_paths: font = noto_fonts.get_noto_font(p) if font and font.fmt in FMTS and font.script not in SCRIPTS: fonts.append(font) return fonts def main(): CMDS = ['dump', 'write', 'test', 'info'] HELP = """ dump - read the family info file, and display the names to generate for some fonts. write - collect all the names of the provided fonts, and write a family name info file if one was provided (via -i or -p), else write to stdout. test - collect all the names of the provided fonts, show the family name info file that would be generated, and show the names to generate for those fonts. info - collect the preferred names of the provided fonts, and display them. """ parser = argparse.ArgumentParser( epilog=HELP, formatter_class=argparse.RawDescriptionHelpFormatter) parser.add_argument( '-i', '--info_file', metavar='fname', help='name of xml family info file, overrides name based on phase, ' 'use \'-\' to write to stdout') parser.add_argument( '-p', '--phase', metavar = 'phase', type=int, help='determine info file name by phase (2 or 3)') parser.add_argument( '-d', '--dirs', metavar='dir', help='font directories to examine ' '(use "[noto]" for noto fonts/cjk/emoji font dirs)', nargs='+') parser.add_argument( '-f', '--files', metavar='fname', help='fonts to examine, prefix with' '\'@\' to read list from file', nargs='+') parser.add_argument( '-x', '--extra_styles', help='assume all wws styles for write/test', action='store_true') parser.add_argument( 'cmd', metavar='cmd', help='operation to perform (%s)' % ', '.join(CMDS), choices=CMDS) args = parser.parse_args() if args.dirs: for i in range(len(args.dirs)): if args.dirs[i] == '[noto]': args.dirs[i] = None args.dirs.extend(noto_fonts.NOTO_FONT_PATHS) args.dirs = filter(None, args.dirs) break paths = _collect_paths(args.dirs, args.files) fonts = _get_noto_fonts(paths) if not fonts: print 'Please specify at least one directory or file' return if not args.info_file: if args.phase: args.info_file = _PHASE_TO_FILENAME[args.phase] print 'using name info file: "%s"' % args.info_file if args.cmd == 'dump': if not args.info_file: print 'must specify an info file to dump' return info_file = tool_utils.resolve_path(args.info_file) if not path.exists(info_file): print '"%s" does not exist.' % args.info_file return _dump(fonts, info_file, args.phase) elif args.cmd == 'write': if not args.phase: print 'Must specify phase when generating info.' return out = None if args.info_file == '-' else args.info_file _write(fonts, out, args.phase, args.extra_styles) elif args.cmd == 'test': _test(fonts, args.phase, args.extra_styles) elif args.cmd == 'info': _info(fonts) if __name__ == "__main__": main() nototools-2017-09-25-tooling-for-phase3-update/nototools/notoconfig.py000077500000000000000000000101411316231664500256430ustar00rootroot00000000000000#!/usr/bin/env python # Copyright 2015 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Read config file for noto tools. One could also just define some environment variables, but using Python for this lets you keep your environment and shell prefs clean. This expects a file named '.notoconfig' in the users home directory. It should contain lines consisting of a name, '=' and a path. The expected names are 'noto_tools', 'noto_fonts', 'noto_cjk', 'noto_emoji', and 'noto_source'. The values are absolute paths to the base directories of these noto repositories. Formerly these were a single repository so the paths could all be reached from a single root, but that is no longer the case. """ import os from os import path _ERR_MSG = """ Could not find ~/.notoconfig or /usr/local/share/noto/config. Nototools uses this file to locate resources it uses, since many resources such as fonts and sample_texts are not installed in locations relative to the nototools python files and scripts. Please create one of the above config files containing a line like the following, where the absolute path to the root of the git repo on your machine follows the '=' character: noto_tools=/path/to/root/of/nototools If you use any of the other noto repos, add similar lines for 'noto_emoji', 'noto_fonts', 'noto_cjk', 'noto_source', or 'noto_fonts_alpha'. """ _values = {} _config_path = None # so we know def _setup(): """The config consists of lines of the form = . values will hold a mapping from the to value. Blank lines and lines starting with '#' are ignored.""" global _config_path paths = [path.expanduser('~/.notoconfig'), '/usr/local/share/noto/config'] for configfile in paths: if path.exists(configfile): with open(configfile, "r") as f: for line in f: line = line.strip() if not line or line.startswith('#'): continue k, v = line.split('=', 1) _values[k.strip()] = v.strip() _config_path = configfile break # This needs to be silent. It causes a makefile error in noto-emoji, # which expects stdout to consist only of the output of a python # script it runs. _setup() # convenience for names we expect. # By default we allow running without a config, since many small tools don't # require it. But if you run code that calls noto_tools and provides no # default, we assume you do require it and raise an exception. def noto_tools(default=''): """Local path to nototools git repo. If this is called, we require config to be set up.""" result = _values.get('noto_tools', default) if result: return result raise Exception(_ERR_MSG) def noto_fonts(default=''): """Local path to noto-font git repo""" return _values.get('noto_fonts', default) def noto_cjk(default=''): """Local path to noto-cjk git repo""" return _values.get('noto_cjk', default) def noto_emoji(default=''): """Local path to noto-emoji git repo""" return _values.get('noto_emoji', default) def noto_source(default=''): """Local path to noto-source git repo""" return _values.get('noto_source', default) def noto_fonts_alpha(default=''): """Local path to noto-fonts-alpha git repo""" return _values.get('noto_fonts_alpha', default) def get(key, default=''): return _values.get(key, default) if __name__ == '__main__': keyset = set(_values.keys()) if not keyset: print 'no keys defined, probably no notoconfig file was found.' else: wid = max(len(k) for k in keyset) fmt = '%%%ds: %%s' % wid for k in sorted(keyset): print fmt % (k, get(k)) print 'config: %s' % _config_path nototools-2017-09-25-tooling-for-phase3-update/nototools/notodiff.py000066400000000000000000000171031316231664500253100ustar00rootroot00000000000000# Copyright 2016 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Provides the command-line utility `notodiff`. Leverages various DiffFinder classes, depending on what's given via the `diff_type` argument. Can compare multiple font pairs via the `match` argument. For shaping comparisons, all results are sorted together and the largest differences from all pairs are shown first. For GPOS the pairs are still compared separately. """ from __future__ import print_function import argparse import glob import logging import os import sys from nototools import gpos_diff, gsub_diff, shape_diff logger = logging.getLogger('notodiff') def _shape( path_a, path_b, stats, diff_type, font_size, render_path, diff_threshold=0): """Do a shape comparison (glyph area or rendered) and add results to stats. path_a and b refer to binary font files (OTF or TTF). stats should be a list (possibly empty) of tuples, for sorting. diff_type and render_path are passed through from the original call to notodiff. """ diff_finder = shape_diff.ShapeDiffFinder( path_a, path_b, stats, ratio_diffs=True, diff_threshold=diff_threshold) if diff_type == 'area': diff_finder.find_area_diffs() elif diff_type == 'shape': diff_finder.find_shape_diffs() elif diff_type == 'area-shape-product': diff_finder.find_area_shape_diff_products() else: diff_finder.find_rendered_diffs(font_size, render_path) def _gpos(path_a, path_b, error_bound, out_lines, print_font=False): """Do a GPOS table comparison and print results. path_a and b refer to binaries from which ttxn output is made. print_font is a boolean flag designating whether to print path_a (useful if _gpos is being called multiple times in succession). """ if print_font: print('-- %s --' % os.path.basename(path_a)) diff_finder = gpos_diff.GposDiffFinder(path_a, path_b, error_bound, out_lines) print(diff_finder.find_kerning_diffs()) print(diff_finder.find_mark_class_diffs()) print(diff_finder.find_positioning_diffs()) print(diff_finder.find_positioning_diffs(mark_type='mark')) print() def _gsub(path_a, path_b, out_lines, print_font=False): """Do a GSUB table comparison and print results. path_a and b refer to binaries from which ttxn output is made. print_font is a boolean flag designating whether to print path_a (useful if _gsub is being called multiple times in succession). """ if print_font: print('-- %s --' % os.path.basename(path_a)) diff_finder = gsub_diff.GsubDiffFinder(path_a, path_b, out_lines) print(diff_finder.find_gsub_diffs()) print() def _run_multiple(func, filematch, dir_a, dir_b, *args): """Run a comparison function (probably _shape or _gpos) multiple times. Runs the given function "func" for each file in dir_a matching filematch, comparing it with a respective file of the same name in dir_b. Variable arguments are passed through when calling func. """ compared = 0 for path_a in glob.glob(os.path.join(dir_a, filematch)): path_b = path_a.replace(dir_a, dir_b) if os.path.exists(path_b): compared += 1 tail = path_a[len(dir_a):] if tail.startswith('/'): tail = tail[1:] logger.info('Compare %s' % tail) func(path_a, path_b, *args) logger.info('Compared %d fonts' % compared) def _validate_paths(before_path, after_path): valid_paths = True if not os.path.exists(before_path): print('Before path is invalid: %s' % before_path) valid_paths = False if not os.path.exists(after_path): print('After path is invalid: %s' % after_path) valid_paths = False return valid_paths def main(): parser = argparse.ArgumentParser( description='Compare fonts.') parser.add_argument('--before', required=True, help='first font, or directory if match is used') parser.add_argument('--after', required=True, help='second font, or directory if match is used') parser.add_argument('-t', '--diff-type', default='area', choices=('area', 'shape', 'area-shape-product', 'rendered', 'gpos', 'gsub'), help='type of comparison to run (defaults to "area")') parser.add_argument('-m', '--match', help='glob to match files under the BEFORE directory, ' 'to compare against those with the same names under ' 'the AFTER directory.') parser.add_argument('-l', '--out-lines', type=int, default=20, help='number of differences to print (default 20)') parser.add_argument('-w', '--whitelist', nargs='+', default=(), help='list of one or more glyph names to ignore for ' 'area or rendered differences') parser.add_argument('--font-size', type=int, default=128, help='if DIFF_TYPE is "rendered", size to render ' 'samples at (default 128)') parser.add_argument('--render-path', help='if provided and DIFF_TYPE is ' '"rendered", saves comparison renderings here') parser.add_argument('--diff-threshold', type=float, default=0, help='minimal diff to report (default 0)') parser.add_argument('--verbose', default='WARNING') args = parser.parse_args() logging.basicConfig(level=getattr(logging, args.verbose.upper())) if not _validate_paths(args.before, args.after): return 1 if args.diff_type in ('area', 'shape', 'area-shape-product', 'rendered'): stats = {} if args.match: _run_multiple(_shape, args.match, args.before, args.after, stats, args.diff_type, args.font_size, args.render_path, args.diff_threshold) else: _shape(args.before, args.after, stats, args.diff_type, args.font_size, args.render_path, args.diff_threshold) if stats: print(shape_diff.ShapeDiffFinder.dump( stats, args.whitelist, args.out_lines, include_vals=(args.diff_type in ('area', 'area-shape-product')), multiple_fonts=bool(args.match))) elif args.diff_type == 'gpos': if args.match: _run_multiple(_gpos, args.match, args.before, args.after, args.diff_threshold, args.out_lines, True) else: _gpos(args.before, args.after, args.diff_threshold, args.out_lines) elif args.diff_type == 'gsub': if args.match: _run_multiple(_gsub, args.match, args.before, args.after, args.out_lines, True) else: _gsub(args.before, args.after, args.out_lines) else: assert 0, 'Got unhandled diff type "%s"' % args.diff_type if __name__ == '__main__': sys.exit(main()) nototools-2017-09-25-tooling-for-phase3-update/nototools/opentype_data.py000077500000000000000000000252631316231664500263450ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """OpenType-related data.""" __author__ = 'roozbeh@google.com (Roozbeh Pournader)' from nototools import unicode_data OMPL = {} def _set_ompl(): """Set up OMPL. OMPL is defined to be the list of mirrored pairs in Unicode 5.1: http://www.microsoft.com/typography/otspec/ttochap1.htm#ltrrtl """ global OMPL unicode_data.load_data() bmg_data = unicode_data._bidi_mirroring_glyph_data OMPL = {char:bmg for (char, bmg) in bmg_data.items() if float(unicode_data.age(char)) <= 5.1} ZWSP = [0x200B] JOINERS = [0x200C, 0x200D] BIDI_MARKS = [0x200E, 0x200F] DOTTED_CIRCLE = [0x25CC] # From the various script-specific specs at # http://www.microsoft.com/typography/SpecificationsOverview.mspx SPECIAL_CHARACTERS_NEEDED = { 'Arab': JOINERS + BIDI_MARKS + DOTTED_CIRCLE, 'Beng': ZWSP + JOINERS + DOTTED_CIRCLE, 'Bugi': ZWSP + JOINERS + DOTTED_CIRCLE, 'Deva': ZWSP + JOINERS + DOTTED_CIRCLE, 'Gujr': ZWSP + JOINERS + DOTTED_CIRCLE, 'Guru': ZWSP + JOINERS + DOTTED_CIRCLE, # Hangul may not need the special characters: # https://code.google.com/p/noto/issues/detail?id=147#c2 # 'Hang': ZWSP + JOINERS, 'Hebr': BIDI_MARKS + DOTTED_CIRCLE, 'Java': ZWSP + JOINERS + DOTTED_CIRCLE, 'Khmr': ZWSP + JOINERS + DOTTED_CIRCLE, 'Knda': ZWSP + JOINERS + DOTTED_CIRCLE, 'Laoo': ZWSP + DOTTED_CIRCLE, 'Mlym': ZWSP + JOINERS + DOTTED_CIRCLE, 'Mymr': ZWSP + JOINERS + DOTTED_CIRCLE, 'Orya': ZWSP + JOINERS + DOTTED_CIRCLE, 'Sinh': ZWSP + JOINERS + DOTTED_CIRCLE, 'Syrc': JOINERS + BIDI_MARKS + DOTTED_CIRCLE, 'Taml': ZWSP + JOINERS + DOTTED_CIRCLE, 'Telu': ZWSP + JOINERS + DOTTED_CIRCLE, 'Thaa': BIDI_MARKS + DOTTED_CIRCLE, 'Thai': ZWSP + DOTTED_CIRCLE, 'Tibt': ZWSP + JOINERS + DOTTED_CIRCLE, } # www.microsoft.com/typography/otspec/os2.html#ur # bit, block name, block range _unicoderange_data = """0\tBasic Latin\t0000-007F 1\tLatin-1 Supplement\t0080-00FF 2\tLatin Extended-A\t0100-017F 3\tLatin Extended-B\t0180-024F 4\tIPA Extensions\t0250-02AF \tPhonetic Extensions\t1D00-1D7F \tPhonetic Extensions Supplement\t1D80-1DBF 5\tSpacing Modifier Letters\t02B0-02FF \tModifier Tone Letters\tA700-A71F 6\tCombining Diacritical Marks\t0300-036F \tCombining Diacritical Marks Supplement\t1DC0-1DFF 7\tGreek and Coptic\t0370-03FF 8\tCoptic\t2C80-2CFF 9\tCyrillic\t0400-04FF \tCyrillic Supplement\t0500-052F \tCyrillic Extended-A\t2DE0-2DFF \tCyrillic Extended-B\tA640-A69F 10\tArmenian\t0530-058F 11\tHebrew\t0590-05FF 12\tVai\tA500-A63F 13\tArabic\t0600-06FF \tArabic Supplement\t0750-077F 14\tNKo\t07C0-07FF 15\tDevanagari\t0900-097F 16\tBengali\t0980-09FF 17\tGurmukhi\t0A00-0A7F 18\tGujarati\t0A80-0AFF 19\tOriya\t0B00-0B7F 20\tTamil\t0B80-0BFF 21\tTelugu\t0C00-0C7F 22\tKannada\t0C80-0CFF 23\tMalayalam\t0D00-0D7F 24\tThai\t0E00-0E7F 25\tLao\t0E80-0EFF 26\tGeorgian\t10A0-10FF \tGeorgian Supplement\t2D00-2D2F 27\tBalinese\t1B00-1B7F 28\tHangul Jamo\t1100-11FF 29\tLatin Extended Additional\t1E00-1EFF \tLatin Extended-C\t2C60-2C7F \tLatin Extended-D\tA720-A7FF 30\tGreek Extended\t1F00-1FFF 31\tGeneral Punctuation\t2000-206F \tSupplemental Punctuation\t2E00-2E7F 32\tSuperscripts And Subscripts\t2070-209F 33\tCurrency Symbols\t20A0-20CF 34\tCombining Diacritical Marks For Symbols\t20D0-20FF 35\tLetterlike Symbols\t2100-214F 36\tNumber Forms\t2150-218F 37\tArrows\t2190-21FF \tSupplemental Arrows-A\t27F0-27FF \tSupplemental Arrows-B\t2900-297F \tMiscellaneous Symbols and Arrows\t2B00-2BFF 38\tMathematical Operators\t2200-22FF \tSupplemental Mathematical Operators\t2A00-2AFF \tMiscellaneous Mathematical Symbols-A\t27C0-27EF \tMiscellaneous Mathematical Symbols-B\t2980-29FF 39\tMiscellaneous Technical\t2300-23FF 40\tControl Pictures\t2400-243F 41\tOptical Character Recognition\t2440-245F 42\tEnclosed Alphanumerics\t2460-24FF 43\tBox Drawing\t2500-257F 44\tBlock Elements\t2580-259F 45\tGeometric Shapes\t25A0-25FF 46\tMiscellaneous Symbols\t2600-26FF 47\tDingbats\t2700-27BF 48\tCJK Symbols And Punctuation\t3000-303F 49\tHiragana\t3040-309F 50\tKatakana\t30A0-30FF \tKatakana Phonetic Extensions\t31F0-31FF 51\tBopomofo\t3100-312F \tBopomofo Extended\t31A0-31BF 52\tHangul Compatibility Jamo\t3130-318F 53\tPhags-pa\tA840-A87F 54\tEnclosed CJK Letters And Months\t3200-32FF 55\tCJK Compatibility\t3300-33FF 56\tHangul Syllables\tAC00-D7AF 57\tNon-Plane 0 *\tD800-DFFF 58\tPhoenician\t10900-1091F 59\tCJK Unified Ideographs\t4E00-9FFF \tCJK Radicals Supplement\t2E80-2EFF \tKangxi Radicals\t2F00-2FDF \tIdeographic Description Characters\t2FF0-2FFF \tCJK Unified Ideographs Extension A\t3400-4DBF \tCJK Unified Ideographs Extension B\t20000-2A6DF \tKanbun\t3190-319F 60\tPrivate Use Area (plane 0)\tE000-F8FF 61\tCJK Strokes\t31C0-31EF \tCJK Compatibility Ideographs\tF900-FAFF \tCJK Compatibility Ideographs Supplement\t2F800-2FA1F 62\tAlphabetic Presentation Forms\tFB00-FB4F 63\tArabic Presentation Forms-A\tFB50-FDFF 64\tCombining Half Marks\tFE20-FE2F 65\tVertical Forms\tFE10-FE1F \tCJK Compatibility Forms\tFE30-FE4F 66\tSmall Form Variants\tFE50-FE6F 67\tArabic Presentation Forms-B\tFE70-FEFF 68\tHalfwidth And Fullwidth Forms\tFF00-FFEF 69\tSpecials\tFFF0-FFFF 70\tTibetan\t0F00-0FFF 71\tSyriac\t0700-074F 72\tThaana\t0780-07BF 73\tSinhala\t0D80-0DFF 74\tMyanmar\t1000-109F 75\tEthiopic\t1200-137F \tEthiopic Supplement\t1380-139F \tEthiopic Extended\t2D80-2DDF 76\tCherokee\t13A0-13FF 77\tUnified Canadian Aboriginal Syllabics\t1400-167F 78\tOgham\t1680-169F 79\tRunic\t16A0-16FF 80\tKhmer\t1780-17FF \tKhmer Symbols\t19E0-19FF 81\tMongolian\t1800-18AF 82\tBraille Patterns\t2800-28FF 83\tYi Syllables\tA000-A48F \tYi Radicals\tA490-A4CF 84\tTagalog\t1700-171F \tHanunoo\t1720-173F \tBuhid\t1740-175F \tTagbanwa\t1760-177F 85\tOld Italic\t10300-1032F 86\tGothic\t10330-1034F 87\tDeseret\t10400-1044F 88\tByzantine Musical Symbols\t1D000-1D0FF \tMusical Symbols\t1D100-1D1FF \tAncient Greek Musical Notation\t1D200-1D24F 89\tMathematical Alphanumeric Symbols\t1D400-1D7FF 90\tPrivate Use (plane 15)\tFF000-FFFFD \tPrivate Use (plane 16)\t100000-10FFFD 91\tVariation Selectors\tFE00-FE0F \tVariation Selectors Supplement\tE0100-E01EF 92\tTags\tE0000-E007F 93\tLimbu\t1900-194F 94\tTai Le\t1950-197F 95\tNew Tai Lue\t1980-19DF 96\tBuginese\t1A00-1A1F 97\tGlagolitic\t2C00-2C5F 98\tTifinagh\t2D30-2D7F 99\tYijing Hexagram Symbols\t4DC0-4DFF 100\tSyloti Nagri\tA800-A82F 101\tLinear B Syllabary\t10000-1007F \tLinear B Ideograms\t10080-100FF \tAegean Numbers\t10100-1013F 102\tAncient Greek Numbers\t10140-1018F 103\tUgaritic\t10380-1039F 104\tOld Persian\t103A0-103DF 105\tShavian\t10450-1047F 106\tOsmanya\t10480-104AF 107\tCypriot Syllabary\t10800-1083F 108\tKharoshthi\t10A00-10A5F 109\tTai Xuan Jing Symbols\t1D300-1D35F 110\tCuneiform\t12000-123FF \tCuneiform Numbers and Punctuation\t12400-1247F 111\tCounting Rod Numerals\t1D360-1D37F 112\tSundanese\t1B80-1BBF 113\tLepcha\t1C00-1C4F 114\tOl Chiki\t1C50-1C7F 115\tSaurashtra\tA880-A8DF 116\tKayah Li\tA900-A92F 117\tRejang\tA930-A95F 118\tCham\tAA00-AA5F 119\tAncient Symbols\t10190-101CF 120\tPhaistos Disc\t101D0-101FF 121\tCarian\t102A0-102DF \tLycian\t10280-1029F \tLydian\t10920-1093F 122\tDomino Tiles\t1F030-1F09F \tMahjong Tiles\t1F000-1F02F """ ur_data = [] ur_bucket_info = [[] for i in range(128)] def _setup_unicoderange_data(): """The unicoderange data used in the os/2 table consists of slightly under 128 'buckets', each of which consists of one or more 'ranges' of codepoints. Each range has a name, start, and end. Bucket 57 is special, it consists of all non-BMP codepoints and overlaps the other ranges, though in the data it corresponds to the high and low UTF-16 surrogate code units. The other ranges are all disjoint. We build two tables. ur_data is a list of the ranges, consisting of the start, end, bucket index, and name. It is sorted by range start. ur_bucket_info is a list of buckets in bucket index order; each entry is a list of the tuples in ur_data that belong to that bucket. This is called by functions that require these tables. On first use it builds ur_data and ur_bucket_info, which should remain unchanged thereafter.""" if ur_data: return index = 0 for line in _unicoderange_data.splitlines(): index_str, name, urange = line.split('\t') range_start_str, range_end_str = urange.split('-') range_start = int(range_start_str, 16) range_end = int(range_end_str, 16) if index_str: index = int(index_str) tup = (range_start, range_end, index, name) ur_data.append(tup) ur_bucket_info[index].append(tup) ur_data.sort() def collect_unicoderange_info(cmap): """Return a list of 2-tuples, the first element a count of the characters in a range, the second element the 4-tuple of information about that range: start, end, bucket number, and name. Only ranges for which the cmap has a character are included.""" _setup_unicoderange_data() range_count = 0 index = 0 limit = len(ur_data) result = [] for cp in sorted(cmap): while index < limit: tup = ur_data[index] if cp <= tup[1]: # the ranges are disjoint and some characters fall into no # range, e.g. Javanese. if cp >= tup[0]: range_count += 1 break if range_count: result.append((range_count, ur_data[index])) range_count = 0 index += 1 if range_count: result.append((range_count, ur_data[index])) return result def unicoderange_bucket_info_name(bucket_info): return ', '.join(t[3] for t in bucket_info) def unicoderange_bucket_info_size(bucket_info): return sum(t[1] - t[0] + 1 for t in bucket_info) def unicoderange_bucket_index_to_info(bucket_index): if bucket_index < 0 or bucket_index >= 128: raise ValueError('bucket_index %s out of range' % bucket_index) _setup_unicoderange_data() return ur_bucket_info[bucket_index] def unicoderange_bucket_index_to_name(bucket_index): return unicoderange_bucket_info_name(unicoderange_bucket_index_to_info(bucket_index)) if not OMPL: _set_ompl() nototools-2017-09-25-tooling-for-phase3-update/nototools/render.py000077500000000000000000000151451316231664500247660ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Rendering-related test routines.""" __author__ = 'roozbeh@google.com (Roozbeh Pournader)' import json import os import subprocess import font_caching from fontTools.pens.boundsPen import BoundsPen def min_with_none(first, second): """Returns the minimum of the two inputs, ignoring Nones.""" if first is None: return second elif second is None: return first else: return min(first, second) def max_with_none(first, second): """Returns the maximum of the two inputs, ignoring Nones.""" if first is None: return second elif second is None: return first else: return max(first, second) def transform_y(transform, y_value): """Applies a transform matrix to a y coordinate.""" return int(round(y_value * transform[1][1])) def get_glyph_cleaned_extents(ttglyph, glyf_set): pen = BoundsPen(glyf_set, ignoreSinglePoints=True) ttglyph.draw(pen) if not pen.bounds: return None, None return pen.bounds[1], pen.bounds[3] def get_glyph_cleaned_extents_OLD(glyph, glyf_table): """Get the vertical extent of glyphs, ignoring single-point contours. This is take care of weirdness in the various fonts, who may need the single-point contours for hinting or glyph positioning, or may have forgotten to clean them up.""" try: return glyph.cleanedYMin, glyph.cleanedYMax except AttributeError: glyph.expand(glyf_table) if glyph.numberOfContours == 0: # is empty glyph.cleanedYMin = None glyph.cleanedYMax = None return None, None elif glyph.numberOfContours == -1: # has components max_height = None min_height = None for component in glyph.components: component_ymin, component_ymax = get_glyph_cleaned_extents( glyf_table.glyphs[component.glyphName], glyf_table) if hasattr(component, 'transform'): transform = component.transform assert transform[1][0] == transform[0][1] == 0, ( "Can't handle complex transforms") else: transform = [[1, 0], [0, 1]] max_height = max_with_none( max_height, transform_y(transform, component_ymax) + component.y) min_height = min_with_none( min_height, transform_y(transform, component_ymin) + component.y) else: # Set points_to_ignore to the list of all single-point contours points_to_ignore = set() previous_end_point = -1 for end_point in glyph.endPtsOfContours: if end_point == previous_end_point + 1: points_to_ignore.add(end_point) previous_end_point = end_point max_height = None min_height = None for index, point in enumerate(glyph.coordinates): if index in points_to_ignore: continue y_value = point[1] max_height = max_with_none(max_height, y_value) min_height = min_with_none(min_height, y_value) glyph.cleanedYMin = min_height glyph.cleanedYMax = max_height return min_height, max_height def get_glyph_vertical_extents(glyph_id, font_file_name): """Returns visible vertical extents given a glyph ID and font name.""" font = font_caching.open_font(font_file_name) glyf_set = font.getGlyphSet() glyph_name = font.getGlyphName(glyph_id) ttglyph = glyf_set[glyph_name] return get_glyph_cleaned_extents(ttglyph, glyf_set) # FIXME: figure out how to make this configurable HARFBUZZ_DIR = os.getenv('HOME') + os.sep + 'harfbuzz' HB_SHAPE_PATH = HARFBUZZ_DIR + os.sep + 'util' + os.sep + 'hb-shape' def run_harfbuzz_on_text(text, font_file_name, language, extra_parameters=None): """Runs HarfBuzz on input text and return JSON shaping information.""" hb_parameters = [ HB_SHAPE_PATH, '--output-format=json', '--no-glyph-names', # Some fonts have empty glyph names '--font-file=%s' % font_file_name] if language: hb_parameters.append('--language=%s' % language) if extra_parameters is not None: hb_parameters += extra_parameters hb_process = subprocess.Popen( hb_parameters, stdin=subprocess.PIPE, stdout=subprocess.PIPE) return hb_process.communicate(input=text.encode('UTF-8'))[0] def get_line_extents_from_json(json_data, font_file_name): """Find the vertical extents of a line based on HarfBuzz JSON output.""" max_height = None min_height = None for glyph_position in json.loads(json_data): glyph_id = glyph_position['g'] glyph_ymin, glyph_ymax = get_glyph_vertical_extents( glyph_id, font_file_name) if glyph_ymax is not None: glyph_vertical_offset = glyph_position['dy'] max_height = max_with_none( max_height, glyph_ymax + glyph_vertical_offset) min_height = min_with_none( min_height, glyph_ymin + glyph_vertical_offset) return min_height, max_height def test_text_vertical_extents( text, font_file_name, min_allowed, max_allowed, language=None): """Runs given text through HarfBuzz to find cases that go out of bounds.""" hb_output = run_harfbuzz_on_text(text, font_file_name, language) split_text = text.split('\n') exceeding_lines = [] for line_no, output_line in enumerate(hb_output.split('\n')): if not output_line: continue min_height, max_height = get_line_extents_from_json( output_line, font_file_name) if min_height is None: continue if min_height < min_allowed or max_height > max_allowed: exceeding_lines.append(((min_height, max_height), split_text[line_no])) return exceeding_lines nototools-2017-09-25-tooling-for-phase3-update/nototools/report_coverage_data.py000077500000000000000000000222171316231664500276640ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2016 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import argparse import codecs import csv import math from os import path import sys from nototools import cmap_data from nototools import coverage from nototools import generate_coverage_data from nototools import tool_utils from nototools import unicode_data from fontTools import ttLib default_version=6.0 default_coverage_file = 'noto_cmap_phase2.xml' def get_defined_cps(version=default_version, exclude_ranges=None): defined_cps = unicode_data.defined_characters(version) if exclude_ranges: defined_cps -= tool_utils.parse_int_ranges(exclude_ranges) return defined_cps def get_coverages(coverage_files): return [generate_coverage_data.read(f) for f in coverage_files] def get_block_data(defined_cps, coverages, no_empty=False): block_data = [] covered_cps_list = [ tool_utils.parse_int_ranges(cov.cmapdata.ranges) for cov in coverages] for block_name in unicode_data.block_names(): block_range = unicode_data.block_range(block_name) block_cps = unicode_data.block_chars(block_name) block_cps &= defined_cps if not block_cps: continue cov_info = [] all_empty = True for covered_cps in covered_cps_list: block_covered_cps = covered_cps & block_cps if block_covered_cps: all_empty = False cov_info.append(block_covered_cps) if no_empty and all_empty: continue block_data.append(block_range + (block_name, block_cps, cov_info)) return block_data def write_block_coverage_html(block_data, names, msg, out_file=sys.stdout): cp_limit = 1000 chart_width = 250 chart_row_height = 8 HEADER = """ Block coverage

Block coverage

""" % (chart_width, chart_row_height) FOOTER = """ """ out_file.write(HEADER) if msg: out_file.write('

') out_file.write(msg) out_file.write('\n') block_data.sort() out_file.write( ' \n' ' ') out_file.write('
 ') for name in names: out_file.write('%s' % name) out_file.write('\n') out_file.write( '
RangeBlock NameCount') for _ in names: out_file.write('CountPctChart') out_file.write('\n') max_block_size = max(len(t[3]) for t in block_data) if max_block_size > cp_limit: max_block_size = cp_limit for start, end, name, block_cps, block_covered_cps_list in block_data: range_str = '%04x-%04x' % (start, end) num_in_block = len(block_cps) tot_ht = 1 + int(math.floor(float(num_in_block) / cp_limit)) tot_px = int(float(chart_width) * num_in_block / max_block_size / tot_ht) vir_cp_limit = int(float(num_in_block) / tot_ht) out_file.write('
%s' % range_str) out_file.write('%s' % name) out_file.write('%s' % num_in_block) for block_covered_cps in block_covered_cps_list: num_covered = len(block_covered_cps) pct = '%d%%' % int(100.0 * num_covered / num_in_block) bar_ht = min( tot_ht, 1 + int(math.floor(float(num_covered) / vir_cp_limit))) bar_px = int(float(chart_width) * num_covered / max_block_size / bar_ht) out_file.write('%s' % num_covered) out_file.write('%s' % pct) out_file.write('
') out_file.write('
' % ( tot_px, tot_ht * chart_row_height)) out_file.write('
' % ( bar_px, bar_ht * chart_row_height)) out_file.write('
\n') out_file.write(FOOTER) def write_block_coverage_text(block_data, names, msg, out_file=sys.stdout): block_data.sort() print >> out_file, msg name_len = max(len(t[2]) for t in block_data) fmt_str = '%%%ds' % name_len fmt_str = '%13s ' + fmt_str + ' %5s' header_fmts = [ '%%%ds' % max(10, len(name)) for name in names] header_parts = [] header_parts.append(fmt_str % ('range', 'block name', 'count')) for fmt, name in zip(header_fmts, names): header_parts.append(fmt % name) print >> out_file, ' '.join(header_parts) for start, end, name, block_cps, block_covered_cps_list in block_data: line_parts = [] range_str = '%04x-%04x' % (start, end) num_in_block = len(block_cps) line_parts.append(fmt_str % (range_str, name, num_in_block)) for fmt, covered_cps in zip(header_fmts, block_covered_cps_list): num_covered = len(covered_cps) pct = '%d%%' % int(100.0 * num_covered / num_in_block) part_str = '%5d %4s' % (num_covered, pct) line_parts.append(fmt % part_str) print >> out_file, ' '.join(line_parts) out_file.flush() def write_block_coverage_csv(block_data, names, msg, out_file=sys.stdout): block_data.sort() # nowhere to write msg csv_writer = csv.writer(out_file, delimiter=',') headers = ['range', 'block name', 'count'] for name in names: headers.append(name + ' count') headers.append(name + ' pct') csv_writer.writerow(headers) for start, end, name, block_cps, block_covered_cps_list in block_data: range_str = '%04x-%04x' % (start, end) num_in_block = len(block_cps) row_parts = [range_str, name, num_in_block] for block_covered_cps in block_covered_cps_list: num_covered = len(block_covered_cps) pct = '%d%%' % int(100.0 * num_covered / num_in_block) row_parts.append(num_covered) row_parts.append(pct) csv_writer.writerow(row_parts) def write_block_coverage(block_data, names, msg, fmt=None, out_file=sys.stdout): if not fmt: if not out_file: fmt = 'text' else: ext = path.splitext(out_file)[1] if not ext or ext in ['.txt', '.text']: fmt = 'text' elif ext in ['.htm', '.html']: fmt = 'html' elif ext in ['.csv']: fmt = 'csv' if out_file: tool_utils.ensure_dir_exists(path.dirname(out_file)) with codecs.open(out_file, 'w', 'utf-8') as f: _write_block_coverage_fmt(block_data, names, msg, fmt, f) else: _write_block_coverage_fmt(block_data, names, msg, fmt, sys.stdout) def _write_block_coverage_fmt(block_data, names, msg, fmt, out_file): if fmt == 'text': write_block_coverage_text(block_data, names, msg, out_file) elif fmt == 'html': write_block_coverage_html(block_data, names, msg, out_file) elif fmt == 'csv': write_block_coverage_csv(block_data, names, msg, out_file) else: raise ValueError('unknown format "%s"' % fmt) def main(): format_choices = 'text', 'html', 'csv' parser = argparse.ArgumentParser() parser.add_argument( '-uv', '--unicode_version', help='version of unicode to compare against ' '(default %3.1f)' % default_version, metavar='version', type=float, default=default_version) parser.add_argument( '-ex', '--exclude_ranges', help='ranges to exclude', nargs='*', metavar='range') parser.add_argument( '-o', '--output_file', help='name of file to output (format defaults ' 'based on suffix)', metavar='file') parser.add_argument( '-fmt', '--format', help='format of output, defaults to text if no file', choices=format_choices) parser.add_argument( '-ne', '--no_empty', help='exclude empty blocks', action='store_true') parser.add_argument( '-c', '--coverage_data', help='coverage data files', nargs='+', metavar='file', required=True) parser.add_argument( '-m', '--message', help='message header for output', nargs='?', metavar='msg', const='--uv--') args = parser.parse_args() if args.exclude_ranges is None: args.exclude_ranges = [] elif not args.exclude_ranges: # exclude c0-c1 controls if args is passed but no ranges specified args.exclude_ranges = ['0-1f 7f 80-9f'] defined_cps = get_defined_cps( args.unicode_version, ' '.join(args.exclude_ranges)) coverages = get_coverages(args.coverage_data) if args.message == '--uv--': args.message = 'Unicode version: %3.1f' % args.unicode_version block_data = get_block_data(defined_cps, coverages, args.no_empty) names = [cov.cmapdata.name for cov in coverages] write_block_coverage( block_data, names, args.message, args.format, args.output_file) if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/nototools/sample_with_font.py000077500000000000000000000112451316231664500270460ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2015 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Interactively generate sample text for a font. Often in bug reports people will describe text using character names. Replicating the sample text they describe can be a bit tedious. This lets you interactively search characters in the font by name to assemble a string and save it to a file.""" import argparse import codecs import readline from nototools import coverage from nototools import unicode_data from fontTools import ttLib def _help(): print ('enter a string to match or one of the following:\n' ' \'quit\' to exit,\n' ' \'help\' to show these options,\n' ' \'names\' for names,\n' ' \'dump\' to dump the current text,\n' ' \'clear\' to clear the current text,\n' ' \'write\' to be prompted for a filename to write the text to.') def _build_text(name_map, initial_text=''): text = initial_text print 'build text using map of length %d' % len(name_map) while True: line = raw_input('> ') if not line: continue if line == 'quit': break if line == 'help': _help() continue if line == 'names': print 'names:\n ' + '\n '.join(sorted(name_map.keys())) continue if line == 'dump': print 'dump: \'%s\'' % text for cp in text: print '%06x %s' % (ord(cp), unicode_data.name(ord(cp))) continue if line == 'clear': text = '' continue if line == 'write': line = raw_input('file name> ') if line: _write_text(line, text) continue matches = [] for name, cp in sorted(name_map.iteritems()): if line in name: matches.append(name) if not matches: print 'no match for "%s"'% line continue if len(matches) == 1: print matches[0] text += unichr(name_map[matches[0]]) continue # if we match a full line, then use that if line in matches: print line text += unichr(name_map[line]) continue new_matches = [] for m in matches: if line in m.split(' '): new_matches.append(m) # if we match a full word, and only one line has this full word, use that if len(new_matches) == 1: print new_matches[0] text += unichr(name_map[new_matches[0]]) continue select_multiple = True while select_multiple: print 'multiple matches:\n ' + '\n '.join( '[%2d] %s' % (i, n) for i, n in enumerate(matches)) while True: line = raw_input('0-%d or q to skip> ' % (len(matches) - 1)) if line == 'q': select_multiple = False break try: n = int(line) break except ValueError: continue if not select_multiple: # q break if n < 0 or n >= len(matches): print '%d out of range' % n continue text += unichr(name_map[matches[n]]) select_multiple = False print 'done.' return text def _get_char_names(charset): name_map = {} if charset: for cp in charset: try: name = unicode_data.name(cp) except: name = None if not name or name == '': name = '%04x' % cp else: name = '%04x %s' % (cp, name.lower()) name_map[name] = cp return name_map def _write_text(filename, text): with codecs.open(filename, 'w', 'utf-8') as f: f.write(text) print 'wrote %s' % filename def main(): parser = argparse.ArgumentParser() parser.add_argument( '-f', '--font', help='font whose character map to restrict text to', required=True) parser.add_argument( '-t', '--text', help='initial text, prepend @ to read from file') args = parser.parse_args() if args.text: if args.text[0] == '@': with codecs.open(args.text[1:], 'r', 'utf-8') as f: text = f.read() else: text = args.text else: text = '' if args.font: charset = coverage.character_set(args.font) name_map = _get_char_names(charset) text = _build_text(name_map, text) print 'text: ' + text else: charset = None if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/nototools/scale.py000077500000000000000000000021341316231664500245700ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Routines for scaling a font.""" __author__ = 'roozbeh@google.com (Roozbeh Pournader)' import sys from fontTools import ttLib def scale_font(font, factor): """Scales a font by a factor like 0.95 to make it 5% smaller.""" head_table = font['head'] head_table.unitsPerEm = int(round(head_table.unitsPerEm/float(factor))) def main(argv): font = ttLib.TTFont(argv[2]) scale_font(font, float(argv[1])) font.save(argv[3]) if __name__ == "__main__": main(sys.argv) nototools-2017-09-25-tooling-for-phase3-update/nototools/shape_diff.py000066400000000000000000000360671316231664500256020ustar00rootroot00000000000000# Copyright 2016 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Provides ShapeDiffFinder, which finds differences in OTF/TTF glyph shapes. ShapeDiffFinder takes in two paths, to font binaries. It then provides methods that compare these fonts, storing results in a report dictionary. These methods are `find_area_diffs`, which compares glyph areas, `find_rendered_diffs`, which compares harfbuzz output using PIL, and `find_shape_diffs`, which takes the difference of shapes and calculates the area. Some caveats: glyph areas can be the same even if the shapes are wildly different (though they're useful for shapes that should be identical except for some offset). Image comparison is usually either slow (hi-res) or inaccurate (lo-res). Still, these are usually useful for raising red flags and catching large errors. """ from __future__ import division import os from PIL import Image import re import StringIO import subprocess import tempfile import booleanOperations from defcon import Glyph from fontTools.pens.basePen import BasePen from fontTools.ttLib import TTFont from ufoLib.pointPen import PointToSegmentPen from nototools.glyph_area_pen import GlyphAreaPen from nototools import hb_input GDEF_UNDEF = 0 GDEF_MARK = 3 GDEF_LABELS = ['no class', 'base', 'ligature', 'mark', 'component'] class ShapeDiffFinder: """Provides methods to report diffs in glyph shapes between OT Fonts.""" def __init__( self, file_a, file_b, stats, ratio_diffs=False, diff_threshold=0): self.path_a = file_a self.font_a = TTFont(self.path_a) self.glyph_set_a = self.font_a.getGlyphSet() self.gdef_a = {} if 'GDEF' in self.font_a and not self.font_a['GDEF'].table.GlyphClassDef is None: self.gdef_a = self.font_a['GDEF'].table.GlyphClassDef.classDefs self.path_b = file_b self.font_b = TTFont(self.path_b) self.glyph_set_b = self.font_b.getGlyphSet() self.gdef_b = {} if 'GDEF' in self.font_b and not self.font_b['GDEF'].table.GlyphClassDef is None: self.gdef_b = self.font_b['GDEF'].table.GlyphClassDef.classDefs for stat_type in ( 'compared', 'untested', 'unmatched', 'unicode_mismatch', 'gdef_mark_mismatch', 'zero_width_mismatch', 'input_mismatch'): if stat_type not in stats: stats[stat_type] = [] self.stats = stats self.ratio_diffs = ratio_diffs self.diff_threshold = diff_threshold self.basepath = os.path.basename(file_a) def find_area_diffs(self): """Report differences in glyph areas.""" self.build_names() pen_a = GlyphAreaPen(self.glyph_set_a) pen_b = GlyphAreaPen(self.glyph_set_b) mismatched = {} for name in self.names: self.glyph_set_a[name].draw(pen_a) area_a = pen_a.pop() self.glyph_set_b[name].draw(pen_b) area_b = pen_b.pop() if area_a != area_b: mismatched[name] = (area_a, area_b) stats = self.stats['compared'] calc = self._calc_ratio if self.ratio_diffs else self._calc_diff for name, areas in mismatched.items(): stats.append((calc(areas), name, self.basepath, areas[0], areas[1])) def find_rendered_diffs(self, font_size=128, render_path=None): """Find diffs of glyphs as rendered by harfbuzz.""" hb_input_generator_a = hb_input.HbInputGenerator(self.font_a) hb_input_generator_b = hb_input.HbInputGenerator(self.font_b) if render_path: font_name, _ = os.path.splitext(self.basepath) render_path = os.path.join(render_path, font_name) if not os.path.exists(render_path): os.makedirs(render_path) self.build_names() diffs = [] for name in self.names: class_a = self.gdef_a.get(name, GDEF_UNDEF) class_b = self.gdef_b.get(name, GDEF_UNDEF) if GDEF_MARK in (class_a, class_b) and class_a != class_b: self.stats['gdef_mark_mismatch'].append(( self.basepath, name, GDEF_LABELS[class_a], GDEF_LABELS[class_b])) continue width_a = self.glyph_set_a[name].width width_b = self.glyph_set_b[name].width zwidth_a = width_a == 0 zwidth_b = width_b == 0 if zwidth_a != zwidth_b: self.stats['zero_width_mismatch'].append(( self.basepath, name, width_a, width_b)) continue hb_args_a = hb_input_generator_a.input_from_name(name, pad=zwidth_a) hb_args_b = hb_input_generator_b.input_from_name(name, pad=zwidth_b) if hb_args_a != hb_args_b: self.stats['input_mismatch'].append(( self.basepath, name, hb_args_a, hb_args_b)) continue # ignore unreachable characters if not hb_args_a: self.stats['untested'].append((self.basepath, name)) continue features, text = hb_args_a # ignore null character if unichr(0) in text: continue img_file_a = StringIO.StringIO(subprocess.check_output([ 'hb-view', '--font-size=%d' % font_size, '--features=%s' % ','.join(features), self.path_a, text])) img_file_b = StringIO.StringIO(subprocess.check_output([ 'hb-view', '--font-size=%d' % font_size, '--features=%s' % ','.join(features), self.path_b, text])) img_a = Image.open(img_file_a) img_b = Image.open(img_file_b) width_a, height_a = img_a.size width_b, height_b = img_b.size data_a = img_a.getdata() data_b = img_b.getdata() img_file_a.close() img_file_b.close() width, height = max(width_a, width_b), max(height_a, height_b) offset_ax = (width - width_a) // 2 offset_ay = (height - height_a) // 2 offset_bx = (width - width_b) // 2 offset_by = (height - height_b) // 2 diff = 0 for y in range(height): for x in range(width): ax, ay = x - offset_ax, y - offset_ay bx, by = x - offset_bx, y - offset_by if (ax < 0 or bx < 0 or ax >= width_a or bx >= width_b or ay < 0 or by < 0 or ay >= height_a or by >= height_b): diff += 1 else: diff += abs(data_a[ax + ay * width_a] - data_b[bx + by * width_b]) / 255 if self.ratio_diffs: diff /= (width * height) if render_path and diff > self.diff_threshold: img_cmp = Image.new('RGB', (width, height)) data_cmp = list(img_cmp.getdata()) self._project(data_a, width_a, height_a, data_cmp, width, height, 1) self._project(data_b, width_b, height_b, data_cmp, width, height, 0) for y in range(height): for x in range(width): i = x + y * width r, g, b = data_cmp[i] assert b == 0 data_cmp[i] = r, g, min(r, g) img_cmp.putdata(data_cmp) img_cmp.save(self._rendered_png(render_path, name)) diffs.append((name, diff)) mismatched = {} for name, diff in diffs: if diff > self.diff_threshold: mismatched[name] = diff stats = self.stats['compared'] for name, diff in mismatched.items(): stats.append((diff, name, self.basepath)) def _project( self, src_data, src_width, src_height, dst_data, width, height, channel): """Project a single-channel image onto a channel of an RGB image.""" offset_x = (width - src_width) // 2 offset_y = (height - src_height) // 2 for y in range(src_height): for x in range(src_width): src_i = x + y * src_width dst_i = x + offset_x + (y + offset_y) * width pixel = list(dst_data[dst_i]) pixel[channel] = src_data[src_i] dst_data[dst_i] = tuple(pixel) def find_shape_diffs(self): """Report differences in glyph shapes, using BooleanOperations.""" self.build_names() area_pen = GlyphAreaPen(None) pen = PointToSegmentPen(area_pen) mismatched = {} for name in self.names: glyph_a = Glyph() glyph_b = Glyph() self.glyph_set_a[name].draw( Qu2CuPen(glyph_a.getPen(), self.glyph_set_a)) self.glyph_set_b[name].draw( Qu2CuPen(glyph_b.getPen(), self.glyph_set_b)) booleanOperations.xor(list(glyph_a), list(glyph_b), pen) area = abs(area_pen.pop()) if area: mismatched[name] = (area) stats = self.stats['compared'] for name, area in mismatched.items(): stats.append((area, name, self.basepath)) def find_area_shape_diff_products(self): """Report product of differences in glyph areas and glyph shapes.""" self.find_area_diffs() old_compared = self.stats['compared'] self.stats['compared'] = [] self.find_shape_diffs() new_compared = {n: d for d, n, _ in self.stats['compared']} for i, (diff, name, font, area_a, area_b) in enumerate(old_compared): if font != self.basepath: continue new_diff = diff * new_compared.get(name, 0) old_compared[i] = new_diff, name, font, area_a, area_b self.stats['compared'] = old_compared def build_names(self): """Build a list of glyph names shared between the fonts.""" if hasattr(self, 'names'): return stats = self.stats['unmatched'] names_a = set(self.font_a.getGlyphOrder()) names_b = set(self.font_b.getGlyphOrder()) if names_a != names_b: stats.append((self.basepath, names_a - names_b, names_b - names_a)) self.names = names_a & names_b stats = self.stats['unicode_mismatch'] reverse_cmap_a = hb_input.build_reverse_cmap(self.font_a) reverse_cmap_b = hb_input.build_reverse_cmap(self.font_b) mismatched = {} for name in self.names: unival_a = reverse_cmap_a.get(name) unival_b = reverse_cmap_b.get(name) if unival_a != unival_b: mismatched[name] = (unival_a, unival_b) if mismatched: stats.append((self.basepath, mismatched.items())) self.names -= set(mismatched.keys()) @staticmethod def dump(stats, whitelist, out_lines, include_vals, multiple_fonts): """Return the results of run diffs. Args: stats: List of tuples with diff data which is sorted and printed. whitelist: Names of glyphs to exclude from report. out_lines: Number of diff lines to print. include_vals: Include the values that have been diffed in report. multiple_fonts: Designates whether stats have been accumulated from multiple fonts, if so then font names will be printed as well. """ report = [] compared = sorted( s for s in stats['compared'] if s[1] not in whitelist) compared.reverse() fmt = '%s %s' if include_vals: fmt += ' (%s vs %s)' if multiple_fonts: fmt = '%s ' + fmt report.append('%d differences in glyph shape' % len(compared)) for line in compared[:out_lines]: # print ; stats are sorted in reverse priority line = tuple(reversed(line[:3])) + tuple(line[3:]) # ignore font name if just one pair of fonts was compared if not multiple_fonts: line = line[1:] report.append(fmt % line) report.append('') for font, set_a, set_b in stats['unmatched']: report.append("Glyph coverage doesn't match in %s" % font) report.append(' in A but not B: %s' % sorted(set_a)) report.append(' in B but not A: %s' % sorted(set_b)) report.append('') for font, mismatches in stats['unicode_mismatch']: report.append("Glyph unicode values don't match in %s" % font) for name, univals in sorted(mismatches): univals = [(('0x%04X' % v) if v else str(v)) for v in univals] report.append(' %s: %s in A, %s in B' % (name, univals[0], univals[1])) report.append('') ShapeDiffFinder._add_simple_report( report, stats['gdef_mark_mismatch'], '%s: Mark class mismatch for %s (%s vs %s)') ShapeDiffFinder._add_simple_report( report, stats['zero_width_mismatch'], '%s: Zero-width mismatch for %s (%d vs %d)') ShapeDiffFinder._add_simple_report( report, stats['input_mismatch'], '%s: Harfbuzz input mismatch for %s (%s vs %s)') ShapeDiffFinder._add_simple_report( report, stats['untested'], '%s: %s not tested (unreachable?)') return '\n'.join(report) @staticmethod def _add_simple_report(report, stats, fmt): for stat in sorted(stats): report.append(fmt % stat) if stats: report.append('') def _calc_diff(self, vals): """Calculate an area difference.""" a, b = vals return abs(a - b) def _calc_ratio(self, vals): """Calculate an area ratio.""" a, b = vals if not (a or b): return 0 if abs(a) > abs(b): a, b = b, a return 1 - a / b def _rendered_png(self, render_path, glyph_name): glyph_filename = re.sub(r'([A-Z_])', r'\1_', glyph_name) + '.png' return os.path.join(render_path, glyph_filename) class Qu2CuPen(BasePen): def __init__(self, pen, glyphSet): BasePen.__init__(self, glyphSet) self.pen = pen def _moveTo(self, pt): self.pen.moveTo(pt) def _lineTo(self, pt): self.pen.lineTo(pt) def _curveToOne(self, pt1, pt2, pt3): self.pen.curveTo(pt1, pt2, pt3) def _closePath(self): self.pen.closePath() def _endPath(self): self.pen.endPath() nototools-2017-09-25-tooling-for-phase3-update/nototools/spreadsheet.py000077500000000000000000000126531316231664500260170ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2015 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Get information from the status spreadsheet with MTI""" SPREADSHEET_NAME = ('Noto Project Status (Phase II)- go-noto - ' 'Unicode-Monotype (1).csv') import argparse import csv import os from os import path import re from fontTools import ttLib from nototools import font_data from nototools import noto_fonts def check_spreadsheet(src_file): filenames = set() prev_script_name = None fontdata = {} filedata = {} with open(src_file) as csvfile: reader = csv.DictReader(csvfile) for index, row in enumerate(reader): font = row['Fonts'].replace('\xc2\xa0', ' ').strip() hinting = row['Hinting'].strip() status = row['Status'].strip() accepted_version = row['Accepted Version'].strip() note = row['Note'].strip() # family script style (variant UI) weight, mostly m = re.match( r'Noto (Kufi|Naskh|Color Emoji|Emoji|Sans|Serif|Nastaliq)' r'(?: (.*?))?' r'(?: (UI))?' r' (Thin|Light|DemiLight|Regular|Medium|Bold Italic' r'|Bold|Black|Italic)(?: \(merged\))?$', font) if not m: m = re.match(r'Noto (Sans) (Myanmar) (UI)(.*)', font) if not m: print 'could not parse Myanmar exception: "%s"' % font continue style, script, ui, weight = m.groups() weight = weight or 'Regular' weight = weight.replace(' ', '') ui = ui or '' script = script or '' script = re.sub('-| ', '', script) style = style.replace(' ', '') ext = 'ttf' if script == 'CJK': ext = 'ttc' elif script.startswith('TTC'): ext = 'ttc' script = '' elif script == '(LGC)': script = '' elif script == 'UI': ui = 'UI' script = '' elif script == 'Phagspa': script = 'PhagsPa' elif script == 'SumeroAkkadianCuneiform': script = 'Cuneiform' fontname = ''.join(['Noto', style, script, ui, '-', weight, '.', ext]) # print '%s:\n--> %s\n--> %s' % ( # font, str((style, script, ui, weight)), fontname) if not hinting in [ 'hinted', 'hinted (CFF)', 'unhinted']: print 'unrecognized hinting value \'%s\' on line %d (%s)' % ( hinting, index, fontname) continue hinted = 'hinted' if hinting in ['hinted', 'hinted (CFF)'] else 'unhinted' if not status in [ 'In finishing', 'Released w. lint errors', 'Approved & Released', 'Approved & Not Released', 'In design', 'Design approved', 'Design re-approved', 'Released']: print 'unrecognized status value \'%s\' on line %d (%s)' % ( status, index, fontname) continue expect_font = status in [ 'Released w. lint errors', 'Approved & Released', 'Approved & Not Released', 'Released'] data = (fontname, (index, font, style, script, ui, weight), hinted, status, accepted_version, note, expect_font) filedata[hinted + '/' + fontname] = data # ok, now let's see if we can find these files all_noto = noto_fonts.get_noto_fonts() notodata = { ('hinted' if f.is_hinted else 'unhinted') + '/' + path.basename(f.filepath) : f for f in all_noto } noto_filenames = frozenset(notodata.keys()) spreadsheet_filenames = frozenset(k for k in filedata if filedata[k][6]) spreadsheet_extra = spreadsheet_filenames - noto_filenames spreadsheet_missing = noto_filenames - spreadsheet_filenames if spreadsheet_extra: print 'spreadsheet extra:\n ' + '\n '.join( sorted(spreadsheet_extra)) if spreadsheet_missing: print 'spreadsheet missing:\n ' + '\n '.join( sorted(spreadsheet_missing)) spreadsheet_match = spreadsheet_filenames & noto_filenames for filename in sorted(spreadsheet_match): data = filedata[filename] filepath = notodata[filename].filepath ttfont = ttLib.TTFont(filepath, fontNumber=0) font_version = font_data.printable_font_revision(ttfont) approved_version = data[4] if approved_version: warn = '!!!' if approved_version != font_version else '' print '%s%s version: %s approved: %s' % ( warn, filename, font_version, approved_version) else: print '%s version: %s' % (filename, font_version) def main(): default_file = path.expanduser(path.join('~/Downloads', SPREADSHEET_NAME)) parser = argparse.ArgumentParser() parser.add_argument('-sf', '--src_file', help='path to tracking spreadsheet csv', metavar='fname', default=default_file) args = parser.parse_args() check_spreadsheet(args.src_file) if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/nototools/subset.py000077500000000000000000000055071316231664500250150ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Routines for subsetting fonts.""" __author__ = 'roozbeh@google.com (Roozbeh Pournader)' import sys from fontTools import subset import coverage def subset_font(source_file, target_file, include=None, exclude=None, options=None): """Subsets a font file. Subsets a font file based on a specified character set. If only include is specified, only characters from that set would be included in the output font. If only exclude is specified, all characters except those in that set will be included. If neither is specified, the character set will remain the same, but inaccessible glyphs will be removed. Args: source_file: Input file name. target_file: Output file name include: The list of characters to include from the source font. exclude: The list of characters to exclude from the source font. options: A dictionary listing which options should be different from the default. Raises: NotImplementedError: Both include and exclude were specified. """ opt = subset.Options() opt.name_IDs = ['*'] opt.name_legacy = True opt.name_languages = ['*'] opt.layout_features = ['*'] opt.notdef_outline = True opt.recalc_bounds = True opt.recalc_timestamp = True opt.canonical_order = True opt.drop_tables = ['+TTFA'] if options is not None: for name, value in options.iteritems(): setattr(opt, name, value) if include is not None: if exclude is not None: raise NotImplementedError( 'Subset cannot include and exclude a set at the same time.') target_charset = include else: if exclude is None: exclude = [] source_charset = coverage.character_set(source_file) target_charset = source_charset - set(exclude) font = subset.load_font(source_file, opt) subsetter = subset.Subsetter(options=opt) subsetter.populate(unicodes=target_charset) subsetter.subset(font) subset.save_font(font, target_file, opt) def main(argv): """Subset the first argument to second, dropping unused parts of the font. """ subset_font(argv[1], argv[2]) if __name__ == '__main__': main(sys.argv) nototools-2017-09-25-tooling-for-phase3-update/nototools/subset_font_cmap.py000077500000000000000000000064111316231664500270360ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2016 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Like subset.py, but with command-line options.""" import argparse from os import path from fontTools import subset from nototools import coverage from nototools import font_data from nototools import swat_license from nototools import tool_utils def _get_default_options(): opt = subset.Options() opt.name_IDs = ['*'] opt.name_legacy = True opt.name_languages = ['*'] opt.layout_features = ['*'] opt.notdef_outline = True opt.recalc_bounds = True opt.recalc_timestamp = True opt.canonical_order = True return opt _DEFAULT_OPTIONS = _get_default_options() _VERSION_ID = 5 # name table version string ID def subset_font_cmap( srcname, dstname, exclude=None, include=None, bump_version=True): opt = _DEFAULT_OPTIONS font = subset.load_font(srcname, opt) target_charset = set(font_data.get_cmap(font).keys()) if include is not None: target_charset &= include if exclude is not None: target_charset -= exclude subsetter = subset.Subsetter(options=opt) subsetter.populate(unicodes=target_charset) subsetter.subset(font) if bump_version: # assume version string has 'uh' if unhinted, else hinted. revision, version_string = swat_license.get_bumped_version(font) font['head'].fontRevision = revision font_data.set_name_record(font, _VERSION_ID, version_string) subset.save_font(font, dstname, opt) def subset_fonts_cmap( fonts, dstdir, exclude=None, include=None, bump_version=True): dstdir = tool_utils.ensure_dir_exists(dstdir) for srcname in fonts: dstname = path.join(dstdir, path.basename(srcname)) subset_font_cmap(srcname, dstname, exclude, include, bump_version) def main(): parser = argparse.ArgumentParser() parser.add_argument( '-i', '--include', help='ranges of characters to include', metavar='range', nargs='+') parser.add_argument( '-e', '--exclude', help='ranges of characters to exclude ' '(applied after include)', metavar='range', nargs='+') parser.add_argument( '-d', '--dstdir', help='directory to write new files to', metavar='dir') parser.add_argument( '-b', '--bump_version', help='bump version (default true)', metavar='bool', type=bool, default=True) parser.add_argument( 'fonts', help='fonts to subset', metavar='font', nargs='+') args = parser.parse_args() if args.exclude: args.exclude = tool_utils.parse_int_ranges(' '.join(args.exclude)) if args.include: args.include = tool_utils.parse_int_ranges(' '.join(args.include)) subset_fonts_cmap( args.fonts, args.dstdir, exclude=args.exclude, include=args.include, bump_version=args.bump_version) if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/nototools/subset_symbols.py000077500000000000000000000040731316231664500265620ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Create a curated subset of NotoSansSymbols.""" __author__ = 'roozbeh@google.com (Roozbeh Pournader)' import sys import subset def main(argv): """Subset the Noto Symbols font which is given as the argument.""" source_file_name = argv[1] target_coverage = { 0x20BA, # TURKISH LIRA SIGN 0x20BC, # MANAT SIGN 0x20BD, # RUBLE SIGN 0x22EE, # VERTICAL ELLIPSIS 0x25AB, # WHITE SMALL SQUARE 0x25FB, # WHITE MEDIUM SQUARE 0x25FC, # BLACK MEDIUM SQUARE 0x25FD, # WHITE MEDIUM SMALL SQUARE 0x25FE, # BLACK MEDIUM SMALL SQUARE 0x2600, # BLACK SUN WITH RAYS 0x266B, # BEAMED EIGHTH NOTES 0x26AA, # MEDIUM WHITE CIRCLE 0x26AB, # MEDIUM BLACK CIRCLE 0x2757, # HEAVY EXCLAMATION MARK SYMBOL 0x2934, # ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS 0x2935, # ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS 0x2B05, # LEFTWARDS BLACK ARROW 0x2B06, # UPWARDS BLACK ARROW 0x2B07, # DOWNWARDS BLACK ARROW 0x2B1B, # BLACK LARGE SQUARE 0x2B1C, # WHITE LARGE SQUARE 0x2B50, # WHITE MEDIUM STAR 0x2B55, # HEAVY LARGE CIRCLE } target_coverage.update(range(0x2800, 0x28FF+1)) # Braille symbols subset.subset_font( source_file_name, 'NotoSansSymbols-Regular-Subsetted.ttf', include=target_coverage) if __name__ == '__main__': main(sys.argv) nototools-2017-09-25-tooling-for-phase3-update/nototools/substitute_linemetrics.py000066400000000000000000000050061316231664500303100ustar00rootroot00000000000000# Copyright 2017 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Substitutes the line metrics in a font by using the one in another font. """ from fontTools.ttLib import TTFont from argparse import ArgumentParser def main(arg=None): parser = ArgumentParser() parser.add_argument('source', help='Path to font whose line metrics will be replaced.') parser.add_argument('linemetrics', help='Path to font whose line metrics will be used.') parser.add_argument('-o', '--output', dest='output', default='output.ttf', help='Path to output font file. The line metrics of output are\ extracted from and all other data are copied from ') args = parser.parse_args(arg) font = TTFont(args.linemetrics) metrics = read_line_metrics(font) font.close() font = TTFont(args.source) set_line_metrics(font, metrics) font.save(args.output) font.close() def read_line_metrics(font): metrics = {} metrics['ascent'] = font['hhea'].ascent metrics['descent'] = font['hhea'].descent metrics['usWinAscent'] = font['OS/2'].usWinAscent metrics['usWinDescent'] = font['OS/2'].usWinDescent metrics['sTypoAscender'] = font['OS/2'].sTypoAscender metrics['sTypoDescender'] = font['OS/2'].sTypoDescender metrics['sxHeight'] = font['OS/2'].sxHeight metrics['sCapHeight'] = font['OS/2'].sCapHeight metrics['sTypoLineGap'] = font['OS/2'].sTypoLineGap return metrics def set_line_metrics(font, metrics): font['hhea'].ascent = metrics['ascent'] font['hhea'].descent = metrics['descent'] font['OS/2'].usWinAscent = metrics['usWinAscent'] font['OS/2'].usWinDescent = metrics['usWinDescent'] font['OS/2'].sTypoAscender = metrics['sTypoAscender'] font['OS/2'].sTypoDescender = metrics['sTypoDescender'] font['OS/2'].sxHeight = metrics['sxHeight'] font['OS/2'].sCapHeight = metrics['sCapHeight'] font['OS/2'].sTypoLineGap = metrics['sTypoLineGap'] if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/nototools/summary.py000077500000000000000000000110061316231664500251740ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Quick summary of ttf files in noto file tree""" __author__ = "dougfelt@google.com (Doug Felt)" import argparse import os import os.path import re import sys from fontTools import ttLib import noto_lint import font_data def get_largest_cmap(font): cmap_table = font['cmap'] cmap = None for table in cmap_table.tables: tup = (table.format, table.platformID, table.platEncID) if tup == (4, 3, 1): # Continue scan because we prefer the other cmap if it exists. cmap = table.cmap elif tup == (12, 3, 10): # Stop scan if we find this cmap. Should be strictly larger than the other. cmap = table.cmap break return cmap def cmap_count(font): return len(get_largest_cmap(font)) def summarize_file(root, path): font = ttLib.TTFont(path) table_info = {} reader = font.reader for tag in reader.keys(): entry = reader.tables[tag] entry_len = entry.length entry_checkSum = int(entry.checkSum) if entry_checkSum < 0: entry_checkSum += 0x100000000 table_info[tag] = (entry_len, entry_checkSum) relpath = path[len(root) + 1:] size = os.path.getsize(path) # Printable_font_revision requires you specify the accuracy of digits. # ttLib apparently reads the fixed values as a float, so it loses the info. # Adobe fonts use 3 digits, so the default from printable_font_revision of 2 # is insufficient. # Assume that the name from the name table is accurate, and use it instead. version_string = noto_lint.font_version(font); match = re.match(r'Version (\d+\.\d+)', version_string) if match: version = match.group(1) else: version = noto_lint.printable_font_revision(font) # default 2 num_glyphs = len(font.getGlyphOrder()) full_name = font_data.get_name_records(font)[4] cmap = set(get_largest_cmap(font).keys()) # copy needed? what's the lifespan? num_chars = len(cmap) font.close() return (relpath, version, full_name, size, num_glyphs, num_chars, cmap, table_info) def summarize(root, name=None): result = [] name_re = re.compile(name) if name else None for parent, _, files in os.walk(root): for f in sorted(files): if f.endswith('.ttf') or f.endswith('.otf'): path = os.path.join(parent, f) if name_re: relpath = path[len(root) + 1:] if not name_re.search(relpath): continue result.append(summarize_file(root, path)) return result def print_tup(tup, short): def to_str(idx, val): if idx == 7 and type(val) == type({}): parts = [] for tag in sorted(val): parts.append('%s=%s' % (tag, val[tag][0])) result = ', '.join(parts) else: if idx == 6 and type(val) == type(set()): result = noto_lint.printable_unicode_range(val) else: result = str(val) if ' ' in result: result = '"%s"' % result return result line = [to_str(idx, val) for idx, val in enumerate(tup) if not (short and (idx == 3 or idx == 6 or idx == 7))] print '\t'.join(line) def print_summary(summary_list, short): labels = ('path', 'version', 'name', 'size', 'num_glyphs', 'num_chars', 'cmap', 'table_info') print_tup(labels, short) for tup in summary_list: print_tup(tup, short) def main(): parser = argparse.ArgumentParser() parser.add_argument('root', help='root of directory tree') parser.add_argument('--name', help='only report files where name regex matches ' 'some portion of the path under root'), parser.add_argument('-s', '--short', help='shorter summary format', action='store_true') args = parser.parse_args() if not os.path.isdir(args.root): print '%s does not exist or is not a directory' % args.root else: root = os.path.abspath(args.root) print "root: %s, name: %s" % (root, args.name if args.name else '[all]') print_summary(summarize(root, name=args.name), args.short) if __name__ == "__main__": main() nototools-2017-09-25-tooling-for-phase3-update/nototools/swat_license.py000077500000000000000000000355011316231664500261650ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2015 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Swat copyright, bump version.""" import argparse import collections import os from os import path import re from nototools import autofix_for_release from nototools import cldr_data from nototools import font_data from nototools import noto_fonts from nototools import ttc_utils from fontTools import ttLib from fontTools import misc _COPYRIGHT_ID = 0 _VERSION_ID = 5 _TRADEMARK_ID = 7 _MANUFACTURER_ID = 8 _DESIGNER_ID = 9 _DESCRIPTION_ID = 10 _VENDOR_URL_ID = 11 _DESIGNER_URL_ID = 12 _LICENSE_ID = 13 _LICENSE_URL_ID = 14 _NAME_ID_LABELS = { _COPYRIGHT_ID: 'copyright', _VERSION_ID: 'version', _TRADEMARK_ID: 'trademark', _MANUFACTURER_ID: 'manufacturer', _DESIGNER_ID: 'designer', _DESCRIPTION_ID: 'description', _VENDOR_URL_ID: 'vendor url', _DESIGNER_URL_ID: 'designer url', _LICENSE_ID: 'license', _LICENSE_URL_ID: 'license url', } _SIL_LICENSE = ( 'This Font Software is licensed under the SIL Open Font License, ' 'Version 1.1. This Font Software is distributed on an "AS IS" ' 'BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express ' 'or implied. See the SIL Open Font License for the specific language, ' 'permissions and limitations governing your use of this Font Software.') _SIL_LICENSE_URL = "http://scripts.sil.org/OFL" _NOTO_URL = "http://www.google.com/get/noto/" _SCRIPT_KEYS = { 'Aran': 'Urdu', 'HST': 'Historic', 'LGC': '' } _FAMILY_KEYS = { 'Arimo': 'a', 'Cousine':'b', 'Tinos': 'c', 'Noto': 'd', } _HINTED_TABLES_TO_DROP = autofix_for_release.TABLES_TO_DROP _UNHINTED_TABLES_TO_DROP = (autofix_for_release.TABLES_TO_DROP + ['fpgm', 'prep', 'cvt']) _changes = {} _autofix = collections.defaultdict(list) _ttc_fonts = {} def _swat_fonts(dst_root, dry_run): def family_key(family): return _FAMILY_KEYS.get(family, 'x' + family) def script_key(script): return (_SCRIPT_KEYS.get(script, None) or cldr_data.get_english_script_name(script)) def compare_key(font): return (family_key(font.family), font.style, script_key(font.script), 'a' if font.is_hinted else '', font.variant if font.variant else '', 'UI' if font.is_UI else '', '' if font.weight == 'Regular' else font.weight, font.slope or '', font.fmt) fonts = noto_fonts.get_noto_fonts() for font in sorted(fonts, key=compare_key): _swat_font(font, dst_root, dry_run) if _ttc_fonts: _construct_ttc_fonts(fonts, dst_root, dry_run) def _noto_relative_path(filepath): """Return relative path from some noto root, or None""" x = filepath.find('noto-fonts') if x == -1: x = filepath.find('noto-cjk') if x == -1: x = filepath.find('noto-emoji') if x == -1: return None return filepath[x:] def get_bumped_version(ttfont, is_hinted=None): """Return bumped values for the header and name tables.""" names = font_data.get_name_records(ttfont) version = names[_VERSION_ID] m = re.match(r'Version (\d{1,5})\.(\d{1,5})( uh)?(;.*)?', version) if not m: print '! Could not match version string (%s)' % version return None, None major_version = m.group(1) minor_version = m.group(2) print 'old version: "%s"' % version if is_hinted == None: is_hinted = not bool(m.group(3)) print 'computed hinted = %s' % is_hinted version_remainder = m.group(4) accuracy = len(minor_version) print_revision = font_data.printable_font_revision(ttfont, accuracy) # sanity check expected_revision = major_version + '.' + minor_version if expected_revision != print_revision: raise ValueError('! Expected revision \'%s\' but got revision \'%s\'' % ( expected_revision, print_revision)) # bump the minor version keeping significant digits: new_minor_version = str(int(minor_version) + 1).zfill(accuracy) new_revision = major_version + '.' + new_minor_version print 'Update revision from \'%s\' to \'%s\'' % ( expected_revision, new_revision) # double check we are going to properly round-trip this value float_revision = float(new_revision) fixed_revision = misc.fixedTools.floatToFixed(float_revision, 16) rt_float_rev = misc.fixedTools.fixedToFloat(fixed_revision, 16) rt_float_rev_int = int(rt_float_rev) rt_float_rev_frac = int(round((rt_float_rev - rt_float_rev_int) * 10 ** accuracy)) rt_new_revision = (str(rt_float_rev_int) + '.' + str(rt_float_rev_frac).zfill(accuracy)) if new_revision != rt_new_revision: raise ValueError( '! Could not update new revision, expected \'%s\' but got \'%s\'' % ( new_revision, rt_new_revision)) new_version_string = 'Version ' + new_revision if not is_hinted: new_version_string += ' uh' if version_remainder: new_version_string += version_remainder return float_revision, new_version_string def _swat_font(noto_font, dst_root, dry_run): filepath = noto_font.filepath basename = path.basename(filepath) if noto_font.is_cjk: print '# Skipping cjk font %s' % basename return if noto_font.fmt == 'ttc': print '# Deferring ttc font %s' % basename _ttc_fonts[noto_font] = ttc_utils.ttcfile_filenames(filepath) return ttfont = ttLib.TTFont(filepath, fontNumber=0) names = font_data.get_name_records(ttfont) # create relative root path rel_filepath = _noto_relative_path(filepath) if not rel_filepath: raise ValueError('Could not identify noto root of %s' % filepath) print '-----\nUpdating %s' % rel_filepath dst_file = path.join(dst_root, rel_filepath) try: new_revision, new_version_string = get_bumped_version( ttfont, noto_font.is_hinted) except ValueError as e: print e return print '%s: %s' % ('Would write' if dry_run else 'Writing', dst_file) new_trademark = "%s is a trademark of Google Inc." % noto_font.family # description field should be set. # Roozbeh has note, make sure design field has information # on whether the font is hinted. # Missing in Lao and Khmer, default in Cham. if (cldr_data.get_english_script_name(noto_font.script) in ['Lao', 'Khmer', 'Cham']): new_description = 'Data %shinted.' % ('' if noto_font.is_hinted else 'un') # elif noto_font.vendor is 'Monotype': elif not noto_font.is_cjk and noto_font.family == 'Noto': new_description = ( 'Data %shinted. Designed by Monotype design team.' % ('' if noto_font.is_hinted else 'un')) else: new_description = None if re.match(r'^Copyright 201\d Google Inc. All Rights Reserved\.$', names[_COPYRIGHT_ID]): new_copyright = None else: new_copyright = '!!' if names.get(_DESIGNER_ID) in [ 'Steve Matteson', 'Monotype Design Team', 'Danh Hong', ]: new_designer = None elif names.get(_DESIGNER_ID) == 'Monotype Design team': new_designer = 'Monotype Design Team' elif (_DESIGNER_ID not in names and cldr_data.get_english_script_name(noto_font.script) == 'Khmer'): new_designer = 'Danh Hong' else: new_designer = '!!' if names.get(_DESIGNER_URL_ID) in [ 'http://www.monotype.com/studio', 'http://www.khmertype.org', ]: new_designer_url = None elif names.get(_DESIGNER_URL_ID) in [ 'http://www.monotypeimaging.com/ProductsServices/TypeDesignerShowcase', ]: new_designer_url = 'http://www.monotype.com/studio' elif names.get(_DESIGNER_URL_ID) in [ 'http://www.khmertype.blogspot.com', 'http://www.khmertype.blogspot.com/', 'http://khmertype.blogspot.com/', 'http://wwwkhmertype.blogspot.com.com/', ]: new_designer_url = 'http://www.khmertype.org' else: new_designer_url = '!!!' if names.get(_MANUFACTURER_ID) in [ 'Monotype Imaging Inc.', 'Danh Hong', ]: new_manufacturer = None else: new_manufacturer = '!!!' def update(name_id, new, newText=None): old = names.get(name_id) if new and (new != old): if not dry_run and not '!!!' in new: font_data.set_name_record(ttfont, name_id, new, addIfMissing='win') label = _NAME_ID_LABELS[name_id] oldText = '\'%s\'' % old if old else 'None' newText = newText or ('\'%s\'' % new) print '%s:\n old: %s\n new: %s' % (label, oldText, newText or new) label_change = _changes.get(label) if not label_change: label_change = {} _changes[label] = label_change new_val_change = label_change.get(new) if not new_val_change: new_val_change = {} label_change[new] = new_val_change old_val_fonts = new_val_change.get(old) if not old_val_fonts: old_val_fonts = [] new_val_change[old] = old_val_fonts old_val_fonts.append(noto_font.filepath) update(_COPYRIGHT_ID, new_copyright) update(_VERSION_ID, new_version_string) update(_TRADEMARK_ID, new_trademark) update(_MANUFACTURER_ID, new_manufacturer) update(_DESIGNER_ID, new_designer) update(_DESCRIPTION_ID, new_description) update(_VENDOR_URL_ID, _NOTO_URL) update(_DESIGNER_URL_ID, new_designer_url) update(_LICENSE_ID, _SIL_LICENSE, newText='(OFL)') update(_LICENSE_URL_ID, _SIL_LICENSE_URL) if autofix_for_release.fix_fstype(ttfont): _autofix['fstype'].append(noto_font.filepath) if autofix_for_release.fix_vendor_id(ttfont): _autofix['vendor_id'].append(noto_font.filepath) if autofix_for_release.fix_attachlist(ttfont): _autofix['attachlist'].append(noto_font.filepath) if noto_font.is_hinted: tables_to_drop = _HINTED_TABLES_TO_DROP else: tables_to_drop = _UNHINTED_TABLES_TO_DROP if autofix_for_release.drop_hints(ttfont): _autofix['drop_hints'].append(noto_font.filepath) if autofix_for_release.drop_tables(ttfont, tables_to_drop): _autofix['drop_tables'].append(noto_font.filepath) if noto_font.family == 'Noto': if autofix_for_release.fix_linegap(ttfont): _autofix['linegap'].append(noto_font.filepath) if autofix_for_release.fix_os2_unicoderange(ttfont): _autofix['os2_unicoderange'].append(noto_font.filepath) if dry_run: return ttfont['head'].fontRevision = float_revision dst_dir = path.dirname(dst_file) if not path.isdir(dst_dir): os.makedirs(dst_dir) ttfont.save(dst_file) print 'Wrote file.' def _construct_ttc_fonts(fonts, dst_root, dry_run): # _ttc_fonts contains a map from a font path to a list of likely names # of the component fonts. The component names are based off the # postscript name in the name table of the component, so 1) might not # accurately represent the font, and 2) don't indicate whether the # component is hinted. We deal with the former by rejecting and # reporting ttcs where any name fails to match, and with the latter # by assuming all the components are hinted or not based on whether # the original is in a 'hinted' or 'unhinted' directory. # build a map from basename to a list of noto_font objects basename_to_fonts = collections.defaultdict(list) for font in fonts: if font.fmt != 'ttc': basename = path.basename(font.filepath) basename_to_fonts[basename].append(font) for ttcfont, components in sorted(_ttc_fonts.iteritems()): rel_filepath = _noto_relative_path(ttcfont.filepath) print '-----\nBuilding %s' % rel_filepath component_list = [] # note the component order must match the original ttc, so # we must process in the provided order. for component in components: possible_components = basename_to_fonts.get(component) if not possible_components: print '! no match for component named %s in %s' % ( component, rel_path) component_list = [] break matched_possible_component = None for possible_component in possible_components: if possible_component.is_hinted == ttcfont.is_hinted: if matched_possible_component: print '! already matched possible component %s for %s' % ( matched_possible_component.filename, possible_component_filename) matched_possible_component = None break matched_possible_component = possible_component if not matched_possible_component: print 'no matched component named %s' % component component_list = [] break component_list.append(matched_possible_component) if not component_list: print '! cannot generate ttc font %s' % rel_path continue print 'components:\n ' + '\n '.join( _noto_relative_path(font.filepath) for font in component_list) if dry_run: continue dst_ttc = path.join(dst_root, rel_filepath) src_files = [path.join(dst_root, _noto_relative_path(font.filepath)) for font in component_list] ttc_utils.build_ttc(dst_ttc, src_files) print 'Built %s' % dst_ttc def main(): parser = argparse.ArgumentParser() parser.add_argument('-n', '--dry_run', help='Do not write fonts', action='store_true') parser.add_argument('--dst_root', help='root of destination (default /tmp/swat)', metavar='dst', default='/tmp/swat') parser.add_argument('--details', help='show change details', action='store_true') args = parser.parse_args() _swat_fonts(args.dst_root, args.dry_run) print '------\nchange summary\n' for name_key in sorted(_changes): print '%s:' % name_key new_vals = _changes[name_key] for new_val in sorted(new_vals): print ' change to \'%s\':' % new_val old_vals = new_vals[new_val] for old_val in sorted(old_vals): print ' from %s (%d files)%s' % ( '\'%s\'' % old_val if old_val else 'None', len(old_vals[old_val]), ':' if args.details else '') if args.details: for file_name in sorted(old_vals[old_val]): x = file_name.rfind('/') if x > 0: x = file_name.rfind('/', 0, x) print ' ' + file_name[x:] print '------\nautofix summary\n' for fix_key in sorted(_autofix): fixed_files = _autofix[fix_key] print '%s (%d):' % (fix_key, len(fixed_files)) for file_name in sorted(fixed_files): x = file_name.rfind('/') if x > 0: x = file_name.rfind('/', 0, x) print ' ' + file_name[x:] if __name__ == "__main__": main() nototools-2017-09-25-tooling-for-phase3-update/nototools/sync_repos.py000077500000000000000000000100211316231664500256570ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2017 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Sync the noto repos to the given tags. This helps prepare for generating website data. We have the option of requiring that the noto-fonts, noto-emoji, and noto-cjk repos are at tagged releases. This tool lets you specify release names, ensures the release names are valid, and checks out those releases. Main exits with error code 100 if there is a failure.""" import argparse import sys from nototools import tool_utils _REPOS = 'fonts emoji cjk'.split() _REPO_PATHS = [tool_utils.resolve_path('[%s]' % r) for r in _REPOS] def noto_check_clean(): errors = [] for r, p in zip(_REPOS, _REPO_PATHS): if not tool_utils.git_is_clean(p): errors.append(r) if errors: print >> sys.stderr, '%s %s not clean' % ( ' '.join(errors), 'is' if len(errors) == 1 else 'are') return False return True def noto_checkout_master(dry_run=False): """Check out the noto repos at master. Return True if ok, else log error and return False.""" if not noto_check_clean(): return False if not dry_run: for p in _REPO_PATHS: tool_utils.git_checkout(p, 'master') else: print 'would have checked out master in %s' % (', '.join(_REPOS)) return True def noto_checkout( fonts_tag='latest', emoji_tag='latest', cjk_tag='latest', verbose=False, dry_run=False): """Check out the noto repos at the provided tags. Return True if ok, else log error and return False. Default is 'latest' for the latest tag.""" if not noto_check_clean(): return False requested_tags = [fonts_tag, emoji_tag, cjk_tag] failed_tags = [] resolved_tags = [] for r, p, t in zip(_REPOS, _REPO_PATHS, requested_tags): found = False tag_info = tool_utils.git_tags(p) for _, tag, _ in tag_info: if t == 'latest' or tag == t: resolved_tags.append(tag) found = True break if not found: failed_tags.append('%s: %s' % (r, t)) if failed_tags: print >> sys.stderr, 'failed to find:\n %s' % '\n '.join(failed_tags) return False if not dry_run: for p, t in zip(_REPO_PATHS, resolved_tags): tool_utils.git_checkout(p, t) if verbose or dry_run: print '%schecked out:\n %s' % ( 'would have ' if dry_run else '', '\n '.join('%s: %s' % (r, t) for r, t in zip(_REPOS, resolved_tags))) return True def main(): parser = argparse.ArgumentParser() parser.add_argument( '-f', '--fonts_tag', help='tag for noto fonts repo (default latest)', metavar='tag', default='latest') parser.add_argument( '-e', '--emoji_tag', help='tag for noto emoji repo (default latest)', metavar='tag', default='latest') parser.add_argument( '-c', '--cjk_tag', help='tag for noto cjk repo (default latest)', metavar='tag', default='latest') parser.add_argument( '-m', '--master', help='use master branch for all repos', action='store_true') parser.add_argument( '-v', '--verbose', help='report tags chosen on success', action='store_true') parser.add_argument( '-n', '--dry_run', help='report tags chosen but take no other action', action='store_true') args = parser.parse_args() if args.master: result = noto_checkout_master(args.dry_run) else: result = noto_checkout( fonts_tag=args.fonts_tag, emoji_tag=args.emoji_tag, cjk_tag=args.cjk_tag, verbose=args.verbose, dry_run=args.dry_run) sys.exit(0 if result else 100) if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/nototools/test_vertical_extents.py000077500000000000000000000125741316231664500301340ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Tests vertical extents of fonts for fitting in specified boundaries. Usage: test_vertical_extents.py font.ttf [language [ymin ymax]] < sample_text.[txt|xtb] specifying the language is useful when language-specific features are supported in the font, like in the case of Marathi, Persian, and Urdu. Typically, ymin and ymax shouldn't be specified. If not specified, they will be checked according to Noto specs. For fonts that don't have UI in their files name but should be tested according to UI specs, ymin and ymax should be specified on the command line. """ __author__ = 'roozbeh@google.com (Roozbeh Pournader)' import itertools import os import re import sys import xml.etree.ElementTree import coverage import font_caching import render def _regular_expression_from_set(character_set): """Returns a regexp matching any sequence of a set of input characters. """ character_set -= set(range(0x00, 0x20)) # Remove ASCII controls literal_list = [] for code in character_set: char = unichr(code) if char in ['\\', '[', ']', '^', '-']: char = '\\' + char literal_list.append(char) regexp = '[' + ''.join(literal_list) + ']+' return re.compile(regexp) def test_rendering( data, font_file_name, min_allowed, max_allowed, language=None): """Test the rendering of the input data in a given font. The input data is first filtered for sequences supported in the font. """ font_characters = coverage.character_set(font_file_name) # Hack to add ASCII digits, even if the font doesn't have them, # to keep potential frequency info in the input intact font_characters |= set(range(ord('0'), ord('9')+1)) supported_chars_regex = _regular_expression_from_set(font_characters) harfbuzz_input = [] for match in supported_chars_regex.finditer(data): harfbuzz_input.append(match.group(0)) harfbuzz_input = '\n'.join(harfbuzz_input) return render.test_text_vertical_extents( harfbuzz_input, font_file_name, min_allowed, max_allowed, language) def test_rendering_from_file( file_handle, font_file_name, min_allowed, max_allowed, language=None): """Test the rendering of the contents of a file for vertical extents. Supports both text files and XTB files. """ input_data = file_handle.read() if input_data.startswith(' 2: language = argv[2] else: language = None if len(argv) > 4: ymin = int(argv[3]) ymax = int(argv[4]) else: font = font_caching.open_font(font_file_name) ymin = -font['OS/2'].usWinDescent ymax = font['OS/2'].usWinAscent if _is_noto_ui_font(font_file_name): ymin = max(ymin, -555) ymax = min(ymax, 2163) exceeding_lines = test_rendering_from_file( sys.stdin, font_file_name, ymin, ymax, language) for line_bounds, text_piece in exceeding_lines: print text_piece.encode('UTF-8'), line_bounds # print test_all_combinations(3, font_file_name, ymin, ymax) if __name__ == '__main__': main(sys.argv) nototools-2017-09-25-tooling-for-phase3-update/nototools/tool_utils.py000066400000000000000000000501441316231664500256770ustar00rootroot00000000000000# Copyright 2015 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Some common utilities for tools to use.""" import codecs import contextlib import glob import logging import os import os.path as path import re import shutil import subprocess import sys import time import zipfile from nototools import notoconfig @contextlib.contextmanager def temp_chdir(path): """Usage: with temp_chdir(path): do_something """ saved_dir = os.getcwd() try: os.chdir(path) yield finally: os.chdir(saved_dir) noto_re = re.compile( r'\[(tools|fonts|fonts_alpha|emoji|cjk|source|adobe|mti|afdko)\](.*)') def resolve_path(somepath): """Resolve a path that might start with noto path shorthand. If the path is empty, is '-', or the shorthand is not defined, returns None. Example: '[fonts]/hinted'.""" if not somepath or somepath == '-': return None m = noto_re.match(somepath) if m: base, rest = m.groups() if base == 'adobe': key = 'adobe_data' elif base == 'mti': key = 'monotype_data' elif base == 'afdko': key = 'afdko' else: key = 'noto_' + base base = notoconfig.get(key) while rest.startswith(path.sep): rest = rest[len(path.sep):] somepath = path.join(base, rest) return path.realpath(path.abspath(path.expanduser(somepath))) def commonpathprefix(paths): """Return the common path prefix and a tuple of the relative subpaths for the provided paths. Uses resolve_path to convert to absolute paths and returns the common absolute path. Some subpaths might be the empty string and joining these will produce paths ending in '/', use normpath if you don't want this. Python 2.7 only has path.commonprefix, which returns a common string prefix, not a common path prefix. """ norm_paths = [resolve_path(p) + path.sep for p in paths] prefix = path.dirname(path.commonprefix(norm_paths)) prefix_len = len(prefix) if prefix_len > 1: prefix_len += 1 # not '/' so does not end in '/', strip from subpaths subpaths = tuple(p[prefix_len:-1] for p in norm_paths) return prefix, subpaths def _name_to_key(keyname): if keyname == 'adobe_data': return 'adobe' if keyname == 'monotype_data': return 'mti', if keyname.startswith('noto_'): return keyname[5:] return keyname def short_path(somepath, basedir=os.getcwd()): """Return a short version of somepath, either relative to one of the noto path shorthands or to the provided base directory (defaults to current). For logging/debugging output of file paths.""" shortest = somepath if basedir and somepath.startswith(basedir): shortest = '.' + somepath[len(basedir):] for k, v in notoconfig.values.items(): if somepath.startswith(v): test = ('[%s]' % _name_to_key(k)) + somepath[len(v):] if len(test) < len(shortest): shortest = test return shortest def check_dir_exists(dirpath): if not os.path.isdir(dirpath): raise ValueError('%s does not exist or is not a directory' % dirpath) def check_file_exists(filepath): if not os.path.isfile(filepath): raise ValueError('%s does not exist or is not a file' % filepath) def ensure_dir_exists(path, clean=False): path = os.path.realpath(path) if not os.path.isdir(path): if os.path.exists(path): raise ValueError('%s exists and is not a directory' % path) print "making '%s'" % path os.makedirs(path) elif clean: shutil.rmtree(path) os.makedirs(path) return path def generate_zip_with_7za(root_dir, file_paths, archive_path): """file_paths is a list of files relative to root_dir, these will be the names in the archive at archive_path.""" arg_list = ['7za', 'a', archive_path, '-tzip', '-mx=7', '-bd', '--'] arg_list.extend(file_paths) with temp_chdir(root_dir): # capture but discard output subprocess.check_output(arg_list) def generate_zip_with_7za_from_filepairs(pairs, archive_path): """Pairs are source/destination path pairs. The source will be put into the zip with name destination.""" staging_dir = '/tmp/stage_7za' if os.path.exists(staging_dir): shutil.rmtree(staging_dir) os.makedirs(staging_dir) pair_map = {} for source, dest in pairs: if not source.endswith(dest): staging_source = os.path.join(staging_dir, dest) shutil.copyfile(source, staging_source) source_root = staging_dir else: source_root = source[:-len(dest)] if source_root not in pair_map: pair_map[source_root] = set() pair_map[source_root].add(dest) for source_root, dest_set in pair_map.iteritems(): generate_zip_with_7za(source_root, sorted(dest_set), archive_path) def dos2unix(root_dir, glob_list): """Convert dos line endings to unix ones in place.""" with temp_chdir(root_dir): for g in glob_list: file_list = glob.glob(g) if file_list: subprocess.check_call(['dos2unix', '-k', '-q', '-o'] + file_list) def zip_extract_with_timestamp(zippath, dstdir): zip = zipfile.ZipFile(zippath) with temp_chdir(dstdir): for info in zip.infolist(): zip.extract(info.filename) # of course, time zones mess this up, so don't expect precision date_time = time.mktime(info.date_time + (0, 0, -1)) os.utime(info.filename, (date_time, date_time)) def git_checkout(repo, branch_or_tag, verbose=False): """checkout the branch or tag""" with temp_chdir(repo): result = subprocess.check_output( ['git', 'checkout', branch_or_tag], stderr=subprocess.STDOUT) if verbose: print '%s:\n%s\n-----' % (repo, result) def git_mv(repo, old, new): """Rename old to new in repo""" with temp_chdir(repo): return subprocess.check_output( ['git', 'mv', old, new]) def git_file_lastlog(repo, filepath): """Return a string containing the short hash, date, author email, and title of most recent commit of filepath, separated by tab.""" with temp_chdir(repo): return subprocess.check_output( ['git', 'log', '-n', '1', '--format=%h\t%ad\t%ae\t%s', '--date=short', '--', filepath]) def git_tags(repo): """Return a list of info about annotated tags. The list consists of tuples of the commit hash (as a string), the tag name, and the time, sorted in in reverse chronological order (most recent first). The hash is for the referenced commit and not the tag itself, but the date is the tag date.""" with temp_chdir(repo): text = subprocess.check_output([ 'git', 'tag', '-l', '--format=%(*objectname)|%(refname:strip=2)|' '%(taggerdate:format:%Y-%m-%d %T %Z)', '--sort=-taggerdate']) return [tuple(line.split('|')) for line in text.splitlines() if not line.strip().startswith('|')] def git_tag_info(repo, tag_name): """Return the annotation for this tag in the repo. It is limited to no more than 50 lines.""" # Unfortunately, I can't get the other formatted tag info and also limit # to the tag annotation without more serious munging of tag or show output. with temp_chdir(repo): text = subprocess.check_output(['git', 'tag', '-l', '-n50', tag_name]) lines = text[len(tag_name):].strip().splitlines() return '\n'.join(l.strip() for l in lines) def get_tool_generated(repo, subdir, commit_title_prefix='Updated by tool'): """ Return a list of the names of tool-generated files in the provided directory. The idea is that when we check in files that are generated by a tool, the commit will start with the given prefix. If a files' most recent log entry matches this, it means that we've not applied patches or fixes to the file since it was generated, so we can overwrite it with new tool-generated data. The motivation for this is mantaining the sample texts. The original source for most of these is UDHR data, but subsequently we have fixed things in some of the samples. We generally do not want to blindly overwrite these fixes, but do want to be able to regenerate the samples if we get new source data. """ files_not_under_version_control = []; protected_files = [] tool_generated_files = [] for f in sorted(os.listdir(path.join(repo, subdir))): relpath = path.join(subdir, f) lastlog_str = git_file_lastlog(repo, relpath) if not lastlog_str: files_not_under_version_control.append(f) continue commit, date, author, title = lastlog_str.split('\t') if title.startswith(commit_title_prefix): tool_generated_files.append(f) else: protected_files.append(f) if files_not_under_version_control: print >> sys.stderr, '%d files were not under version control:\n %s' % ( len(files_not_under_version_control), ', '.join(files_not_under_version_control)) if protected_files: print >> sys.stderr, '%d files protected:\n %s' % ( len(protected_files), ', '.join(protected_files)) return tool_generated_files def git_get_branch(repo): try: with temp_chdir(repo): with open(os.devnull) as trash: return subprocess.check_output( ['git', 'symbolic-ref', '--short', 'HEAD'], stderr=trash).strip() except: return '' def git_is_clean(repo, print_errors=False): """Ensure there are no unstaged or uncommitted changes in the repo.""" def capture_and_show_errors(cmd): def dumplines(msg, text, limit): if text: lines = text.splitlines() print '%s (%d lines):\n %s' % ( msg, len(lines), '\n '.join(lines[:limit])) if len(lines) > limit: print ' ...' p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) out, err = p.communicate() dumplines('out', out, 20) dumplines('err', err, 20) result = True with temp_chdir(repo): subprocess.check_call( ['git', 'update-index', '-q', '--ignore-submodules', '--refresh']) if subprocess.call( ['git', 'diff-files', '--quiet', '--ignore-submodules', '--']): if (print_errors): print 'There are unstaged changes:' capture_and_show_errors( ['git', 'diff-files', '--name-status', '-r', '--ignore-submodules', '--']) result = False if subprocess.call( ['git', 'diff-index', '--cached', '--quiet', 'HEAD', '--ignore-submodules', '--']): if (print_errors): print 'There are uncommitted changes:' capture_and_show_errors( ['git', 'diff-index', '--cached', '--name-status', '-r', 'HEAD', '--ignore-submodules', '--']) result = False return result def git_head_commit(repo): """Return the commit hash at head, the date and time of the commit as YYYY-mm-dd HH:MM:SS, and the subject line, as a tuple of three strings.""" with temp_chdir(repo): text = subprocess.check_output( ['git', 'show', '-s', '--date=format:%Y-%m-%d %H:%M:%S', '--no-expand-tabs', '--pretty=format:%H\t%cd\t%s', 'HEAD']) return tuple(text.strip().split('\t', 2)) def git_check_remote_commit(repo, commit, remote='upstream', branch='master'): """Return true if the commit exists in the remote repo at the given branch (or any branch if branch is None). This has the side effect of calling 'git fetch {remote}'.""" with temp_chdir(repo): subprocess.check_call(['git', 'fetch', remote]) # the following will throw an exception if commit is unrecognized text = subprocess.check_output( ['git', 'branch', '-r', '--contains', commit]) lines = [line.strip() for line in text.splitlines()] if branch: if branch == 'HEAD': # assume a link, it will be reported as one expected = remote + '/HEAD ->' return any(line.startswith(expected) for line in lines) expected = remote + '/' + branch return expected in lines else: expected = remote + '/' return any(line.startswith(remote) for line in lines) def git_add_all(repo_subdir): """Add all changed, deleted, and new files in subdir to the staging area.""" # git can now add everything, even removed files with temp_chdir(repo_subdir): subprocess.check_call(['git', 'add', '--', '.']) def svn_get_version(repo): with temp_chdir(repo): version_string = subprocess.check_output(['svnversion', '-c']).strip() colon_index = version_string.find(':') if colon_index >= 0: version_string = version_string[colon_index + 1:] return version_string def svn_update(repo): with temp_chdir(repo): subprocess.check_call(['svn', 'up'], stderr=subprocess.STDOUT) def parse_int_ranges( range_string, is_hex=True, sep=None, allow_duplicates=False, return_set=True, allow_compressed=False): """Returns a set/list of ints from a string of numbers or ranges separated by sep. A range is two values separated by hyphen with no intervening separator; ranges are inclusive. If allow_compressed is true, '/' is also allowed as a separator, and ranges following it or hyphen are interpreted as suffixes that replace the same number of characters at the end of the previous value. '-' generates the range of intervening characters as before, while '/' does not. Returns a set or a list depending on return_set. For example, with compressed ranges the following: 1ee42/7/9/b/d-f 1ee51-2/4/7/9/b/d/f expands to: 1ee42 1ee47 1ee49 1ee4b 1ee4d-1ee4f 1ee51-1ee52 1ee54 1ee57 1ee59 1ee5b 1ee5d 1ee5f """ base = 16 if is_hex else 10 vals = [] def _add_segment(prev_str, suffix, is_range): slen = len(suffix) if prev_str == None: next_str = suffix next_val = int(next_str, base) else: if slen > len(prev_str): raise ValueError( 'suffix \'%s\' is longer than previous \'%s\'' % (suffix, prev_str)) next_str = prev_str[:-slen] + suffix next_val = int(next_str, base) if next_val <= vals[-1]: raise ValueError( 'next value \'%s\' is not greater than previous \'%s\'' % ( next_str, prev_str)) if is_range: start_val = vals[-1] + 1 vals.extend(range(start_val, next_val)) vals.append(next_val) return next_str def _add_range(r): stops = '-/' if len(r) == 0: raise ValueError('empty range') if r[0] in stops: raise ValueError('range "%s" has leading separator' % r) if r[-1] in stops: raise ValueError('range "%s" has trailing separator' % r) r = r + '/' prev_str = None is_range = False start = 0 len_limit = -1 for i in xrange(len(r)): cp = r[i] if cp not in stops: continue if i == start: raise ValueError('range "%s" has two separators together' % r) if is_range and cp == '-': raise ValueError('range "%s" has two \'-\' in sequence' % r) if not allow_compressed: if start == 0: len_limit = i elif i - start > len_limit: raise ValueError( 'segment \'%s\' longer than previous segment' % r[start: i]) else: len_limit = i - start prev_str = _add_segment(prev_str, r[start: i], is_range) is_range = cp == '-' start = i + 1 # main # handle comments and multiline input if '\n' in range_string or '#' in range_string: # strip comments and turn into single line def strip_comment(line): x = line.find('#') if x >= 0: line = line[:x] return line.strip() join_char = ' ' if sep == None else sep range_string = join_char.join( filter( None, (strip_comment(line) for line in range_string.splitlines()))) if not allow_compressed and '/' != sep and range_string.find('/') != -1: raise ValueError('\'/\' only allowed in compressed range format') # collect ordered list of values for r in range_string.split(sep): _add_range(r) # check for duplicates and/or convert to set if return_set or not allow_duplicates: range_set = set(vals) if not allow_duplicates and len(range_set) != len(vals): fail = set() seen = set() for v in vals: if v in seen: fail.add(v) else: seen.add(v) raise ValueError('range "%s" has %d duplicates: %s' % ( range_string, len(fail), write_int_ranges(fail))) return range_set if return_set else vals def write_int_ranges(int_values, in_hex=True, sep=' '): """From a set or list of ints, generate a string representation that can be parsed by parse_int_ranges to return the original values (not order_preserving).""" if not int_values: return '' num_list = [] if type(int_values) is not list: int_values = [v for v in int_values] int_values.sort() start = prev = int_values[0] single_fmt = '%04x' if in_hex else '%d' pair_fmt = single_fmt + '-' + single_fmt def emit(): if prev == start: num_list.append(single_fmt % prev) else: num_list.append(pair_fmt % (start, prev)) for v in int_values[1:]: if v == prev + 1: prev += 1 continue else: emit() start = prev = v emit() return sep.join(num_list) def setup_logging(loglevel, quiet_ttx=True): """Set up logging to stream to stdout. The loglevel is a logging level name or a level value (int or string). ttx/fontTools uses 'info' to report when it is reading/writing tables, but when we want 'info' in our own tools we usually don't want this detail. When quiet_ttx is true, set up logging to treat 'info' logs from fontTools misc.xmlReader and ttLib as though they were at level 19.""" try: loglevel = int(loglevel) except: loglevel = getattr(logging, loglevel.upper(), loglevel) if not isinstance(loglevel, int): print ('Could not set log level, should be one of debug, info, warning, ' 'error, critical, or a numeric value') return logging.basicConfig(level=loglevel) if quiet_ttx and loglevel == logging.INFO: for logger_name in ['fontTools.misc.xmlReader', 'fontTools.ttLib']: logger = logging.getLogger(logger_name) logger.setLevel(loglevel + 1) def write_lines(lines, outfile): """Write lines as utf-8 to outfile, separated by and ending with newline""" ensure_dir_exists(path.dirname(outfile)) with codecs.open(outfile, 'w', 'utf-8') as f: f.write('\n'.join(lines + [''])) def read_lines(infile, ignore_comments=True, strip=True, skip_empty=True): """Read lines from infile and return as a list, optionally stripping comments, whitespace, and/or skipping blank lines.""" lines = [] with codecs.open(infile, 'r', 'utf-8') as f: for line in f: if ignore_comments: ix = line.find('#') if ix >= 0: line = line[:ix] if strip: line = line.strip() if not line and skip_empty: continue lines.append(line) return lines def _read_filename_list(filenames): with open(filenames, 'r') as f: return [resolve_path(n.strip()) for n in f if n] # see noto_fonts.NOTO_FONT_PATHS NOTO_FONT_PATHS = [ '[fonts]/hinted', '[fonts]/unhinted', '[emoji]/fonts', '[cjk]'] def collect_paths(dirs, files): """Return a collection of all files in any of the listed dirs, and the listed files. Can use noto short paths. A file name starting with '@' is interpreted as the name of a file containing a list of filenames one per line. The short name '[noto]' refers to the noto (phase 2) font paths.""" paths = [] if dirs: for i in xrange(len(dirs)): # special case '[noto]' to include all noto font dirs if dirs[i] == '[noto]': dirs[i] = None dirs.extend(NOTO_FONT_PATHS) dirs = filter(None, args.dirs) break for d in dirs: d = resolve_path(d) paths.extend(n for n in glob.glob(path.join(d, '*'))) if files: for fname in files: if fname[0] == '@': paths.extend(_read_filename_list(fname[1:])) else: paths.append(resolve_path(fname)) return paths nototools-2017-09-25-tooling-for-phase3-update/nototools/ttc_utils.py000077500000000000000000000244121316231664500255160ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2015 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # """Utilities for working with .ttc files.""" import argparse import collections import os from os import path import struct import subprocess from fontTools.ttLib.tables._n_a_m_e import table__n_a_m_e as NameTable from nototools import tool_utils _ttcHeader = '>4sLL' _ttcHeaderSize = struct.calcsize(_ttcHeader) _sfntHeader = '>LHHHH' _sfntHeaderSize = struct.calcsize(_sfntHeader) _sfntHeaderEntry = '>4sLLL' _sfntHeaderEntrySize = struct.calcsize(_sfntHeaderEntry) FontEntry = collections.namedtuple('FontEntry', 'fmt,tables') TableEntry = collections.namedtuple('TableEntry', 'tag,offset,length') _EXTRACT_TOOL_PATH='[afdko]/FDK/Tools/linux/otc2otf' _BUILD_TOOL_PATH='[afdko]/FDK/Tools/linux/otf2otc' class TTCFile(object): """Holds some information from the sfnt headers in a .ttc file. - fonts is a list of FontEntry objects, in order. It holds the format ('ttf' or 'otf') and a list of indices into the tables list. - tables is the list of TableEntry objects, in order. Each holds the table tag, offset, and length. Offsets are relative to the very start of the data. There is one entry for each unique table in the ttc. """ def __init__(self, data=None): if data: self._build(data) else: self.fonts = [] self.tables = [] def _build(self, data): tag, version, font_count = struct.unpack(_ttcHeader, data[:_ttcHeaderSize]) if tag not in ['ttcf']: raise ValueError('not a font collection') if version not in [0x10000, 0x20000]: raise ValueError('unrecognized version %s' % version) self.fonts = [] self.tables = [] for i in range(font_count): pos = _ttcHeaderSize + i * 4 offset = struct.unpack('>L', data[pos:pos + 4])[0] self._build_font_entry(data, offset) def _build_font_entry(self, data, offset): limit = offset + _sfntHeaderSize version, num_tables = struct.unpack(_sfntHeader, data[offset:limit])[:2] if version == 0x10000: version_str = '1.0' font_fmt = 'ttf' elif version == 0x4f54544f: version_str = 'OTTO' font_fmt = 'otf' else: raise ValueError('unrecognized sfnt version %x' % version) font_table_indices = [] for j in range(num_tables): entry_pos = limit + j * _sfntHeaderEntrySize font_table_indices.append(self._build_table_entry(data, entry_pos)) self.fonts.append(FontEntry(font_fmt, font_table_indices)) def _build_table_entry(self, data, offset): limit = offset + _sfntHeaderEntrySize tag, checksum, offset, length = struct.unpack( _sfntHeaderEntry, data[offset:limit]) entry = TableEntry(tag, offset, length) for i, e in enumerate(self.tables): if e == entry: return i self.tables.append(entry) return len(self.tables) - 1 def ttcfile_dump(ttcfile): """Reads the file and dumps the information.""" with open(ttcfile, 'rb') as f: data = f.read() ttc = TTCFile(data=data) ttc_dump(ttc, data) def ttc_dump(ttc, data): """Dumps the ttc information. It provides a likely filename for each file, and lists the tables, providing either the TableEntry data, or the table tag and index of the file that first referenced the table. """ names = ttc_filenames(ttc, data) table_map = {} for font_index, font_entry in enumerate(ttc.fonts): print '[%2d] %s' % (font_index, names[font_index]) for table_index, table_entry in enumerate(font_entry.tables): table = ttc.tables[table_entry] if table_entry not in table_map: table_map[table_entry] = (font_index, table_index) print ' [%2d] %s %8d %8d' % ( table_index, table.tag, table.offset, table.length) else: table_from = table_map[table_entry] print ' [%2d] %s @%d.%d' % ( table_index, table.tag, table_from[0], table_from[1]) def ttcfile_filenames(ttcfile): """Reads the file and returns the filenames.""" with open(ttcfile, 'rb') as f: data = f.read() ttc = TTCFile(data=data) return ttc_filenames(ttc, data) def ttc_filenames(ttc, data): """Returns likely filenames for each ttc file. The filenames are based on the postscript name from the name table for each font. When there is no information, the string '' is provided with either 'ttf' or 'otf' in place of 'x' depending on the info in the sfnt header. """ names = [] for font_entry in ttc.fonts: name_entry = None file_name = None for ix in font_entry.tables: if ttc.tables[ix].tag == 'name': name_entry = ttc.tables[ix] break if name_entry: offset = name_entry.offset limit = offset + name_entry.length name_table = NameTable() name_table.decompile(data[offset:limit], None) ps_name = None for r in name_table.names: if (r.nameID, r.platformID, r.platEncID, r.langID) == (6, 3, 1, 0x409): ps_name = unicode(r.string, 'UTF-16BE') break if ps_name: file_name = ps_name if '-' not in ps_name: file_name += '-Regular' file_name += '.' + font_entry.fmt names.append(file_name or ('' % font_entry.fmt)) return names def ttcfile_build(output_ttc_path, fontpath_list, tool_path=_BUILD_TOOL_PATH): """Build a .ttc from a list of font files.""" otf2otc = tool_utils.resolve_path(tool_path) if not otf2otc: raise ValueError('can not resolve %s' % tool_path) tool_utils.ensure_dir_exists(path.dirname(output_ttc_path)) # capture and discard standard output, the tool is noisy subprocess.check_output([otf2otc, '-o', output_ttc_path] + fontpath_list) def ttc_namesfile_name(ttc_path): return path.splitext(path.basename(ttc_path))[0] + '_names.txt' def ttcfile_build_from_namesfile( output_ttc_path, file_dir, namesfile_name=None, tool_path=_BUILD_TOOL_PATH): """Read names of files from namesfile and pass them to build_ttc to build a .ttc file. The names file will default to one named after output_ttc and located in file_dir.""" output_ttc_path = tool_utils.resolve_path(output_ttc_path) if not namesfile_name: namesfile_name = ttc_namesfile_name(output_ttc_path) namesfile_path = path.join(file_dir, namesfile_name) if not path.isfile(namesfile_path): raise ValueError('could not find names file %s' % namesfile_path) filenames = tool_utils.read_lines(namesfile_path) with tool_utils.temp_chdir(file_dir): # resolve filenames relative to file_dir fontpath_list = [tool_utils.resolve_path(n) for n in filenames] missing = [n for n in fontpath_list if not path.isfile(n)] if missing: raise ValueError( '%d files were missing:\n %s' % ( len(missing), '\n '.join(missing))) ttcfile_build(output_ttc_path, fontpath_list) def ttcfile_extract(input_ttc_path, output_dir, tool_path=_EXTRACT_TOOL_PATH): """Extract .ttf/.otf fonts from a .ttc file, and return a list of the names of the extracted fonts.""" otc2otf = tool_utils.resolve_path(tool_path) if not otc2otf: raise ValueError('can not resolve %s' % tool_path) input_ttc_path = tool_utils.resolve_path(input_ttc_path) output_dir = tool_utils.ensure_dir_exists(output_dir) with tool_utils.temp_chdir(output_dir): # capture and discard standard output, the tool is noisy subprocess.check_output([otc2otf, input_ttc_path]) return ttcfile_filenames(input_ttc_path) def ttcfile_extract_and_write_namesfile( input_ttc_path, output_dir, namesfile_name=None, extract_tool=_EXTRACT_TOOL_PATH): """Call ttcfile_extract and in addition write a file to output dir containing the names of the extracted files. The name of the names file will default to one based on the basename of the input path. It is written to output_dir.""" names = ttcfile_extract(input_ttc_path, output_dir, extract_tool) if not namesfile_name: namesfile_name = ttc_namesfile_name(input_ttc_path) tool_utils.write_lines(names, path.join(output_dir, namesfile_name)) def main(): epilog=""" names (default action) print just the name of each font in the ttc, in order. dump print, in order, the name of each font in the ttc followed by a list of its tables and where they come from-- either an offset in the ttc and length, or "@xx.yy" where xx is the index of the font that first referenced that table data, and yy the index of the table in that font. extract extract the contents of the .ttc to a directory. An additional file named after the .ttc with a suffix of '_names.txt' lists the file names in the order in which they were in the .ttc. build build the .ttc using the contents of a directory. The name of the .ttc is used to look in the directory for a list of font file names (like that built by 'extract'); these fonts are included in the .ttc in the listed order. """ parser = argparse.ArgumentParser( description='Use afdko to operate on ttc files.', epilog=epilog, formatter_class=argparse.RawDescriptionHelpFormatter) parser.add_argument( '-f', '--ttcfile', help='ttc file to operate on', metavar='ttc', required=True) parser.add_argument( '-d', '--dir', dest='filedir', help='directory for individual files', metavar='dir', default='.') parser.add_argument( '-o', '--op', help='operation to perform (names, dump, extract, build)', metavar='op', choices='names dump extract build'.split(), default='names') args = parser.parse_args() if args.op == 'dump': ttcfile_dump(args.ttcfile) elif args.op == 'names': print '\n'.join(ttcfile_filenames(args.ttcfile)) elif args.op == 'extract': ttcfile_extract_and_write_namesfile(args.ttcfile, args.filedir) elif args.op=='build': ttcfile_build_from_namesfile(args.ttcfile, args.filedir) if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/nototools/unicode_data.py000077500000000000000000001447251316231664500261350ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*-# # Copyright 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Bleeding-edge version of Unicode Character Database. Provides an interface similar to Python's own unicodedata package, but with the bleeding-edge data. The implementation is not efficient at all, it's just done this way for the ease of use. The data is coming from bleeding edge version of the Unicode Standard not yet published, so it is expected to be unstable and sometimes inconsistent. """ __author__ = ( "roozbeh@google.com (Roozbeh Pournader) and " "cibu@google.com (Cibu Johny)") import codecs import collections import os from os import path import re import sys from fontTools.misc.py23 import unichr try: import unicodedata2 as unicodedata # Unicode 8 compliant native lib except ImportError: import unicodedata # Python's internal library from nototools import tool_utils # parse_int_ranges _data_is_loaded = False _property_value_aliases_data = {} _character_names_data = {} _general_category_data = {} _combining_class_data = {} _decomposition_data = {} _bidi_mirroring_characters = set() _script_data = {} _script_extensions_data = {} _block_data = {} _block_range = {} _block_names = [] _age_data = {} _bidi_mirroring_glyph_data = {} _core_properties_data = {} _indic_positional_data = {} _indic_syllabic_data = {} _defined_characters = set() _script_code_to_long_name = {} _folded_script_name_to_code = {} _lower_to_upper_case = {} # emoji data _presentation_default_emoji = None _presentation_default_text = None _emoji_modifier_base = None _emoji = None _emoji_variants = None _emoji_variants_proposed = None # non-emoji variant data _variant_data = None _variant_data_cps = None # proposed emoji _proposed_emoji_data = None _proposed_emoji_data_cps = None # emoji sequences _emoji_sequence_data = None _emoji_non_vs_to_canonical = None _emoji_group_data = None # nameslist/namealiases _nameslist_see_also = None _namealiases_alt_names = None def load_data(): """Loads the data files needed for the module. Could be used by processes that care about controlling when the data is loaded. Otherwise, data will be loaded the first time it's needed. """ global _data_is_loaded if not _data_is_loaded: _load_property_value_aliases_txt() _load_unicode_data_txt() _load_scripts_txt() _load_script_extensions_txt() _load_blocks_txt() _load_derived_age_txt() _load_derived_core_properties_txt() _load_bidi_mirroring_txt() _load_indic_data() _load_emoji_data() _load_emoji_sequence_data() _load_unicode_emoji_variants() _load_variant_data() _load_proposed_emoji_data() _load_nameslist_data() _load_namealiases_data() _data_is_loaded = True def name(char, *args): """Returns the name of a character. Raises a ValueError exception if the character is undefined, unless an extra argument is given, in which case it will return that argument. """ if type(char) is int: char = unichr(char) # First try and get the name from unidata, which is faster and supports # CJK and Hangul automatic names try: return unicodedata.name(char) except ValueError as val_error: cp = ord(char) load_data() if cp in _character_names_data: return _character_names_data[cp] elif (cp,) in _emoji_sequence_data: return _emoji_sequence_data[(cp,)][0] elif args: return args[0] else: raise Exception('no name for "%0x"' % ord(char)) def _char_to_int(char): """Converts a potential character to its scalar value.""" if type(char) in [str, unicode]: return ord(char) else: return char def derived_props(): load_data() return frozenset(_core_properties_data.keys()) def chars_with_property(propname): load_data() return frozenset(_core_properties_data[propname]) def category(char): """Returns the general category of a character.""" load_data() char = _char_to_int(char) try: return _general_category_data[char] except KeyError: return "Cn" # Unassigned def combining(char): """Returns the canonical combining class of a character.""" load_data() char = _char_to_int(char) try: return _combining_class_data[char] except KeyError: return 0 def to_upper(char): """Returns the upper case for a lower case character. This is not full upper casing, but simply reflects the 1-1 mapping in UnicodeData.txt.""" load_data() cp = _char_to_int(char) try: if _general_category_data[cp] == 'Ll': return unichr(_lower_to_upper_case[cp]) except KeyError: pass return char def canonical_decomposition(char): """Returns the canonical decomposition of a character as a Unicode string. """ load_data() char = _char_to_int(char) try: return _decomposition_data[char] except KeyError: return u"" def script(char): """Returns the script property of a character as a four-letter code.""" load_data() char = _char_to_int(char) try: return _script_data[char] except KeyError: return "Zzzz" # Unknown def script_extensions(char): """Returns the script extensions property of a character. The return value is a frozenset of four-letter script codes. """ load_data() char = _char_to_int(char) try: return _script_extensions_data[char] except KeyError: return frozenset([script(char)]) def block(char): """Returns the block property of a character.""" load_data() char = _char_to_int(char) try: return _block_data[char] except KeyError: return "No_Block" def block_range(block): """Returns a range (first, last) of the named block.""" load_data() return _block_range[block] def block_chars(block): """Returns a frozenset of the cps in the named block.""" load_data() first, last = _block_range[block] return frozenset(xrange(first, last + 1)) def block_names(): """Returns the names of the blocks in block order.""" load_data() return _block_names[:] def age(char): """Returns the age property of a character as a string. Returns None if the character is unassigned.""" load_data() char = _char_to_int(char) try: return _age_data[char] except KeyError: return None # Uniscribe treats these ignorables (Hangul fillers) as spacing. UNISCRIBE_USED_IGNORABLES = frozenset([0x115f, 0x1160, 0x3164, 0xffa0]) def is_default_ignorable(char): """Returns true if the character has the Default_Ignorable property.""" load_data() if type(char) in [str, unicode]: char = ord(char) return char in _core_properties_data["Default_Ignorable_Code_Point"] def default_ignorables(): load_data() return frozenset(_core_properties_data["Default_Ignorable_Code_Point"]) def is_defined(char): """Returns true if the character is defined in the Unicode Standard.""" load_data() if type(char) in [str, unicode]: char = ord(char) return char in _defined_characters def is_private_use(char): """Returns true if the characters is a private use character.""" return category(char) == "Co" def mirrored(char): """Returns 1 if the characters is bidi mirroring, 0 otherwise.""" load_data() if type(char) in [str, unicode]: char = ord(char) return int(char in _bidi_mirroring_characters) def bidi_mirroring_glyph(char): """Returns the bidi mirroring glyph property of a character.""" load_data() if type(char) in [str, unicode]: char = ord(char) try: return _bidi_mirroring_glyph_data[char] except KeyError: return None def mirrored_chars(): return frozenset(_bidi_mirroring_glyph_data.keys()) def indic_positional_category(char): """Returns the Indic positional category of a character.""" load_data() if type(char) in [str, unicode]: char = ord(char) try: return _indic_positional_data[char] except KeyError: return "NA" def indic_syllabic_category(char): """Returns the Indic syllabic category of a character.""" load_data() if type(char) in [str, unicode]: char = ord(char) try: return _bidi_syllabic_data[char] except KeyError: return "Other" def create_script_to_chars(): """Returns a mapping from script to defined characters, based on script and extensions, for all scripts.""" load_data() result = collections.defaultdict(set) for cp in _defined_characters: if cp in _script_data: result[_script_data[cp]].add(cp) if cp in _script_extensions_data: for script in _script_extensions_data[cp]: result[script].add(cp) return result _DEFINED_CHARACTERS_CACHE = {} def defined_characters(version=None, scr=None): """Returns the set of all defined characters in the Unicode Standard.""" load_data() # handle common error where version is passed as string, the age test # will always pass if version is not None: version = float(version) try: return _DEFINED_CHARACTERS_CACHE[(version, scr)] except KeyError: pass characters = _defined_characters if version is not None: characters = {char for char in characters if age(char) is not None and float(age(char)) <= version} if scr is not None: characters = {char for char in characters if script(char) == scr or scr in script_extensions(char)} characters = frozenset(characters) _DEFINED_CHARACTERS_CACHE[(version, scr)] = characters return characters _strip_re = re.compile(r"[-'_ ]+") def _folded_script_name(script_name): """Folds a script name to its bare bones for comparison.""" # string.translate is changed by codecs, the method no longer takes two # parameters and so script_name.translate(None, "'-_ ") fails to compile return _strip_re.sub('', script_name).lower() def script_code(script_name): """Returns the four-letter ISO 15924 code of a script from its long name. """ load_data() folded_script_name = _folded_script_name(script_name) try: return _HARD_CODED_FOLDED_SCRIPT_NAME_TO_CODE[folded_script_name] except: return _folded_script_name_to_code.get(folded_script_name, 'Zzzz') # We use some standard script codes that are not assigned to a codepoint # by unicode, e.g. Zsym. The data based off Scripts.txt doesn't contain # these so we add them here. There are also a few names with punctuation # that we special-case _HARD_CODED_HUMAN_READABLE_SCRIPT_NAMES = { 'Aran': 'Nastaliq', # not assigned 'Nkoo': 'N\'Ko', 'Phag': 'Phags-Pa', 'Piqd': 'Klingon', # not assigned 'Zmth': 'Math', # not assigned 'Zsye': 'Emoji', # not assigned 'Zsym': 'Symbols', # not assigned } _HARD_CODED_FOLDED_SCRIPT_NAME_TO_CODE = { _folded_script_name(name): code for code, name in _HARD_CODED_HUMAN_READABLE_SCRIPT_NAMES.iteritems() } def human_readable_script_name(code): """Returns a human-readable name for the script code.""" try: return _HARD_CODED_HUMAN_READABLE_SCRIPT_NAMES[code] except KeyError: load_data() return _script_code_to_long_name[code] def all_scripts(): """Return a frozenset of all four-letter script codes.""" load_data() return frozenset(_script_code_to_long_name.keys()) _DATA_DIR_PATH = path.join(path.abspath(path.dirname(__file__)), os.pardir, "third_party", "ucd") def open_unicode_data_file(data_file_name): """Opens a Unicode data file. Args: data_file_name: A string containing the filename of the data file. Returns: A file handle to the data file. """ return codecs.open(path.join(_DATA_DIR_PATH, data_file_name), "r", 'utf-8') def _parse_code_ranges(input_data): """Reads Unicode code ranges with properties from an input string. Reads a Unicode data file already imported into a string. The format is the typical Unicode data file format with either one character or a range of characters separated by a semicolon with a property value (and potentially comments after a number sign, that will be ignored). Example source data file: http://www.unicode.org/Public/UNIDATA/Scripts.txt Example data: 0000..001F ; Common # Cc [32] .. 0020 ; Common # Zs SPACE Args: input_data: An input string, containing the data. Returns: A list of tuples corresponding to the input data, with each tuple containing the beginning of the range, the end of the range, and the property value for the range. For example: [(0, 31, 'Common'), (32, 32, 'Common')] """ ranges = [] line_regex = re.compile( r"^" r"([0-9A-F]{4,6})" # first character code r"(?:\.\.([0-9A-F]{4,6}))?" # optional second character code r"\s*;\s*" r"([^#]+)") # the data, up until the potential comment for line in input_data.split("\n"): match = line_regex.match(line) if not match: continue first, last, data = match.groups() if last is None: last = first first = int(first, 16) last = int(last, 16) data = data.rstrip() ranges.append((first, last, data)) return ranges def _parse_semicolon_separated_data(input_data): """Reads semicolon-separated Unicode data from an input string. Reads a Unicode data file already imported into a string. The format is the Unicode data file format with a list of values separated by semicolons. The number of the values on different lines may be different from another. Example source data file: http://www.unicode.org/Public/UNIDATA/PropertyValueAliases.txt Example data: sc; Cher ; Cherokee sc; Copt ; Coptic ; Qaac Args: input_data: An input string, containing the data. Returns: A list of lists corresponding to the input data, with each individual list containing the values as strings. For example: [['sc', 'Cher', 'Cherokee'], ['sc', 'Copt', 'Coptic', 'Qaac']] """ all_data = [] for line in input_data.split('\n'): line = line.split('#', 1)[0].strip() # remove the comment if not line: continue fields = line.split(';') fields = [field.strip() for field in fields] all_data.append(fields) return all_data def _load_unicode_data_txt(): """Load character data from UnicodeData.txt.""" global _defined_characters global _bidi_mirroring_characters if _defined_characters: return with open_unicode_data_file("UnicodeData.txt") as unicode_data_txt: unicode_data = _parse_semicolon_separated_data(unicode_data_txt.read()) for line in unicode_data: code = int(line[0], 16) char_name = line[1] general_category = line[2] combining_class = int(line[3]) decomposition = line[5] if decomposition.startswith('<'): # We only care about canonical decompositions decomposition = '' decomposition = decomposition.split() decomposition = [unichr(int(char, 16)) for char in decomposition] decomposition = ''.join(decomposition) bidi_mirroring = (line[9] == 'Y') if general_category == 'Ll': upcode = line[12] if upcode: upper_case = int(upcode, 16) _lower_to_upper_case[code] = upper_case if char_name.endswith("First>"): last_range_opener = code elif char_name.endswith("Last>"): # Ignore surrogates if "Surrogate" not in char_name: for char in xrange(last_range_opener, code+1): _general_category_data[char] = general_category _combining_class_data[char] = combining_class if bidi_mirroring: _bidi_mirroring_characters.add(char) _defined_characters.add(char) else: _character_names_data[code] = char_name _general_category_data[code] = general_category _combining_class_data[code] = combining_class if bidi_mirroring: _bidi_mirroring_characters.add(code) _decomposition_data[code] = decomposition _defined_characters.add(code) _defined_characters = frozenset(_defined_characters) _bidi_mirroring_characters = frozenset(_bidi_mirroring_characters) def _load_scripts_txt(): """Load script property from Scripts.txt.""" with open_unicode_data_file("Scripts.txt") as scripts_txt: script_ranges = _parse_code_ranges(scripts_txt.read()) for first, last, script_name in script_ranges: folded_script_name = _folded_script_name(script_name) script = _folded_script_name_to_code[folded_script_name] for char_code in xrange(first, last+1): _script_data[char_code] = script def _load_script_extensions_txt(): """Load script property from ScriptExtensions.txt.""" with open_unicode_data_file("ScriptExtensions.txt") as se_txt: script_extensions_ranges = _parse_code_ranges(se_txt.read()) for first, last, script_names in script_extensions_ranges: script_set = frozenset(script_names.split(' ')) for character_code in xrange(first, last+1): _script_extensions_data[character_code] = script_set def _load_blocks_txt(): """Load block name from Blocks.txt.""" with open_unicode_data_file("Blocks.txt") as blocks_txt: block_ranges = _parse_code_ranges(blocks_txt.read()) for first, last, block_name in block_ranges: _block_names.append(block_name) _block_range[block_name] = (first, last) for character_code in xrange(first, last + 1): _block_data[character_code] = block_name def _load_derived_age_txt(): """Load age property from DerivedAge.txt.""" with open_unicode_data_file("DerivedAge.txt") as derived_age_txt: age_ranges = _parse_code_ranges(derived_age_txt.read()) for first, last, char_age in age_ranges: for char_code in xrange(first, last+1): _age_data[char_code] = char_age def _load_derived_core_properties_txt(): """Load derived core properties from Blocks.txt.""" with open_unicode_data_file("DerivedCoreProperties.txt") as dcp_txt: dcp_ranges = _parse_code_ranges(dcp_txt.read()) for first, last, property_name in dcp_ranges: for character_code in xrange(first, last+1): try: _core_properties_data[property_name].add(character_code) except KeyError: _core_properties_data[property_name] = {character_code} def _load_property_value_aliases_txt(): """Load property value aliases from PropertyValueAliases.txt.""" with open_unicode_data_file("PropertyValueAliases.txt") as pva_txt: aliases = _parse_semicolon_separated_data(pva_txt.read()) for data_item in aliases: if data_item[0] == 'sc': # Script code = data_item[1] long_name = data_item[2] _script_code_to_long_name[code] = long_name.replace('_', ' ') folded_name = _folded_script_name(long_name) _folded_script_name_to_code[folded_name] = code def _load_bidi_mirroring_txt(): """Load bidi mirroring glyphs from BidiMirroring.txt.""" with open_unicode_data_file("BidiMirroring.txt") as bidi_mirroring_txt: bmg_pairs = _parse_semicolon_separated_data(bidi_mirroring_txt.read()) for char, bmg in bmg_pairs: char = int(char, 16) bmg = int(bmg, 16) _bidi_mirroring_glyph_data[char] = bmg def _load_indic_data(): """Load Indic properties from Indic(Positional|Syllabic)Category.txt.""" with open_unicode_data_file("IndicPositionalCategory.txt") as inpc_txt: positional_ranges = _parse_code_ranges(inpc_txt.read()) for first, last, char_position in positional_ranges: for char_code in xrange(first, last+1): _indic_positional_data[char_code] = char_position with open_unicode_data_file("IndicSyllabicCategory.txt") as insc_txt: syllabic_ranges = _parse_code_ranges(insc_txt.read()) for first, last, char_syllabic_category in syllabic_ranges: for char_code in xrange(first, last+1): _indic_syllabic_data[char_code] = char_syllabic_category def _load_emoji_data(): """Parse the new draft format of emoji-data.txt""" global _presentation_default_emoji, _presentation_default_text global _emoji, _emoji_modifier_base if _presentation_default_emoji: return emoji_sets = { 'Emoji': set(), 'Emoji_Presentation': set(), 'Emoji_Modifier': set(), 'Emoji_Modifier_Base': set(), 'Emoji_Regional_Indicator': set(), 'Emoji_Component': set(), } set_names = '|'.join(sorted(emoji_sets.keys())) line_re = re.compile( r'([0-9A-F]{4,6})(?:\.\.([0-9A-F]{4,6}))?\s*;\s*' r'(%s)\s*#.*$' % set_names) with open_unicode_data_file('emoji-data.txt') as f: for line in f: line = line.strip() if not line or line[0] == '#': continue m = line_re.match(line) if not m: raise ValueError('Did not match "%s"' % line) start = int(m.group(1), 16) end = start if not m.group(2) else int(m.group(2), 16) emoji_set = emoji_sets.get(m.group(3)) emoji_set.update(range(start, end + 1)) _presentation_default_emoji = frozenset( emoji_sets['Emoji_Presentation']) _presentation_default_text = frozenset( emoji_sets['Emoji'] - emoji_sets['Emoji_Presentation']) _emoji_modifier_base = frozenset( emoji_sets['Emoji_Modifier_Base']) _emoji = frozenset( emoji_sets['Emoji']) # we have no real use for the 'Emoji_Regional_Indicator' and # 'Emoji_Component' sets, and they're not documented, so ignore them. # The regional indicator set is just the 26 regional indicator # symbols, and the component set is number sign, asterisk, ASCII digits, # the regional indicators, and the skin tone modifiers. ZWJ = 0x200d EMOJI_VS = 0xfe0f EMOJI_SEQUENCE_TYPES = frozenset([ 'Emoji_Keycap_Sequence', 'Emoji_Combining_Sequence', 'Emoji_Flag_Sequence', 'Emoji_Tag_Sequence', 'Emoji_Modifier_Sequence', 'Emoji_ZWJ_Sequence', 'Emoji_Single_Sequence']) def _read_emoji_data(lines): """Parse lines of emoji data and return a map from sequence to tuples of name, age, type.""" line_re = re.compile( r'([0-9A-F ]+);\s*(%s)\s*;\s*([^#]*)\s*#\s*(\d+\.\d+).*' % '|'.join(EMOJI_SEQUENCE_TYPES)) result = {} for line in lines: line = line.strip() if not line or line[0] == '#': continue m = line_re.match(line) if not m: raise ValueError('Did not match "%s"' % line) # discourage lots of redundant copies of seq_type seq_type = intern(m.group(2).strip().encode('ascii')) seq = tuple(int(s, 16) for s in m.group(1).split()) name = m.group(3).strip() age = float(m.group(4)) result[seq] = (name, age, seq_type) return result def _read_emoji_data_file(filename): with open_unicode_data_file(filename) as f: return _read_emoji_data(f.readlines()) _EMOJI_QUAL_TYPES = ['fully-qualified', 'non-fully-qualified'] def _read_emoji_test_data(data_string): """Parse the emoji-test.txt data. This has names of proposed emoji that are not yet in the full Unicode data file. Returns a list of tuples of sequence, group, subgroup, name. The data is a string.""" line_re = re.compile( r'([0-9a-fA-F ]+)\s*;\s*(%s)\s*#\s*(?:[^\s]+)\s+(.*)\s*' % '|'.join(_EMOJI_QUAL_TYPES) ) result = [] GROUP_PREFIX = '# group: ' SUBGROUP_PREFIX = '# subgroup: ' group = None subgroup = None for line in data_string.splitlines(): line = line.strip() if not line: continue if line[0] == '#': if line.startswith(GROUP_PREFIX): group = line[len(GROUP_PREFIX):].strip().encode('ascii') subgroup = None elif line.startswith(SUBGROUP_PREFIX): subgroup = line[len(SUBGROUP_PREFIX):].strip().encode('ascii') continue m = line_re.match(line) if not m: raise ValueError('Did not match "%s" in emoji-test.txt' % line) if m.group(2) == _EMOJI_QUAL_TYPES[1]: # we only want fully-qualified sequences, as those are 'canonical'. # Information for the non-fully-qualified sequences should be # redundant. At the moment we don't verify this so if the file # changes we won't catch that. continue seq = tuple(int(s, 16) for s in m.group(1).split()) name = m.group(3).strip() if not (group and subgroup): raise Exception( 'sequence %s missing group or subgroup' % seq_to_string(seq)) result.append((seq, group, subgroup, name)) return result _SUPPLEMENTAL_EMOJI_GROUP_DATA = """ # group: Misc # subgroup: used with keycaps 0023 fe0f ; fully-qualified # ? number sign 002a fe0f ; fully-qualified # ? asterisk 0030 fe0f ; fully-qualified # ? digit zero 0031 fe0f ; fully-qualified # ? digit one 0032 fe0f ; fully-qualified # ? digit two 0033 fe0f ; fully-qualified # ? digit three 0034 fe0f ; fully-qualified # ? digit four 0035 fe0f ; fully-qualified # ? digit five 0036 fe0f ; fully-qualified # ? digit six 0037 fe0f ; fully-qualified # ? digit seven 0038 fe0f ; fully-qualified # ? digit eight 0039 fe0f ; fully-qualified # ? digit nine 20e3 ; fully-qualified # ? combining enclosing keycap # subgroup: skin-tone modifiers 1f3fb ; fully-qualified # ? emoji modifier fitzpatrick type-1-2 1f3fc ; fully-qualified # ? emoji modifier fitzpatrick type-3 1f3fd ; fully-qualified # ? emoji modifier fitzpatrick type-4 1f3fe ; fully-qualified # ? emoji modifier fitzpatrick type-5 1f3ff ; fully-qualified # ? emoji modifier fitzpatrick type-6 # subgroup: regional indicator symbols 1f1e6 ; fully-qualified # ? regional indicator symbol letter A 1f1e7 ; fully-qualified # ? regional indicator symbol letter B 1f1e8 ; fully-qualified # ? regional indicator symbol letter C 1f1e9 ; fully-qualified # ? regional indicator symbol letter D 1f1ea ; fully-qualified # ? regional indicator symbol letter E 1f1eb ; fully-qualified # ? regional indicator symbol letter F 1f1ec ; fully-qualified # ? regional indicator symbol letter G 1f1ed ; fully-qualified # ? regional indicator symbol letter H 1f1ee ; fully-qualified # ? regional indicator symbol letter I 1f1ef ; fully-qualified # ? regional indicator symbol letter J 1f1f0 ; fully-qualified # ? regional indicator symbol letter K 1f1f1 ; fully-qualified # ? regional indicator symbol letter L 1f1f2 ; fully-qualified # ? regional indicator symbol letter M 1f1f3 ; fully-qualified # ? regional indicator symbol letter N 1f1f4 ; fully-qualified # ? regional indicator symbol letter O 1f1f5 ; fully-qualified # ? regional indicator symbol letter P 1f1f6 ; fully-qualified # ? regional indicator symbol letter Q 1f1f7 ; fully-qualified # ? regional indicator symbol letter R 1f1f8 ; fully-qualified # ? regional indicator symbol letter S 1f1f9 ; fully-qualified # ? regional indicator symbol letter T 1f1fa ; fully-qualified # ? regional indicator symbol letter U 1f1fb ; fully-qualified # ? regional indicator symbol letter V 1f1fc ; fully-qualified # ? regional indicator symbol letter W 1f1fd ; fully-qualified # ? regional indicator symbol letter X 1f1fe ; fully-qualified # ? regional indicator symbol letter Y 1f1ff ; fully-qualified # ? regional indicator symbol letter Z #subgroup: unknown flag fe82b ; fully-qualified # ? unknown flag PUA codepoint """ # These are skin tone sequences that Unicode decided not to define. Android # shipped with them, so we're stuck with them forever regardless of what # Unicode says. # # This data is in the format of emoji-sequences.txt and emoji-zwj-sequences.txt _LEGACY_ANDROID_SEQUENCES = """ 1F91D 1F3FB ; Emoji_Modifier_Sequence; handshake: light skin tone # 9.0 1F91D 1F3FC ; Emoji_Modifier_Sequence; handshake: medium-light skin tone # 9.0 1F91D 1F3FD ; Emoji_Modifier_Sequence; handshake: medium skin tone # 9.0 1F91D 1F3FE ; Emoji_Modifier_Sequence; handshake: medium-dark skin tone # 9.0 1F91D 1F3FF ; Emoji_Modifier_Sequence; handshake: dark skin tone # 9.0 1F93C 1F3FB ; Emoji_Modifier_Sequence ; people wrestling: light skin tone # 9.0 1F93C 1F3FC ; Emoji_Modifier_Sequence ; people wrestling: medium-light skin tone # 9.0 1F93C 1F3FD ; Emoji_Modifier_Sequence ; people wrestling: medium skin tone # 9.0 1F93C 1F3FE ; Emoji_Modifier_Sequence ; people wrestling: medium-dark skin tone # 9.0 1F93C 1F3FF ; Emoji_Modifier_Sequence ; people wrestling: dark skin tone # 9.0 1F93C 1F3FB 200D 2642 FE0F ; Emoji_ZWJ_Sequence ; men wrestling: light skin tone # 9.0 1F93C 1F3FC 200D 2642 FE0F ; Emoji_ZWJ_Sequence ; men wrestling: medium-light skin tone # 9.0 1F93C 1F3FD 200D 2642 FE0F ; Emoji_ZWJ_Sequence ; men wrestling: medium skin tone # 9.0 1F93C 1F3FE 200D 2642 FE0F ; Emoji_ZWJ_Sequence ; men wrestling: medium-dark skin tone # 9.0 1F93C 1F3FF 200D 2642 FE0F ; Emoji_ZWJ_Sequence ; men wrestling: dark skin tone # 9.0 1F93C 1F3FB 200D 2640 FE0F ; Emoji_ZWJ_Sequence ; women wrestling: light skin tone # 9.0 1F93C 1F3FC 200D 2640 FE0F ; Emoji_ZWJ_Sequence ; women wrestling: medium-light skin tone # 9.0 1F93C 1F3FD 200D 2640 FE0F ; Emoji_ZWJ_Sequence ; women wrestling: medium skin tone # 9.0 1F93C 1F3FE 200D 2640 FE0F ; Emoji_ZWJ_Sequence ; women wrestling: medium-dark skin tone # 9.0 1F93C 1F3FF 200D 2640 FE0F ; Emoji_ZWJ_Sequence ; women wrestling: dark skin tone # 9.0 """ # Defines how to insert the new sequences into the standard order data. Would # have been nice to merge it into the above legacy data but that would have # required a format change. _LEGACY_ANDROID_ORDER = """ -1F91D # handshake 1F91D 1F3FB 1F91D 1F3FC 1F91D 1F3FD 1F91D 1F3FE 1F91D 1F3FF -1F93C # people wrestling 1F93C 1F3FB 1F93C 1F3FC 1F93C 1F3FD 1F93C 1F3FE 1F93C 1F3FF -1F93C 200D 2642 FE0F # men wrestling 1F93C 1F3FB 200D 2642 FE0F 1F93C 1F3FC 200D 2642 FE0F 1F93C 1F3FD 200D 2642 FE0F 1F93C 1F3FE 200D 2642 FE0F 1F93C 1F3FF 200D 2642 FE0F -1F93C 200D 2640 FE0F # women wrestling 1F93C 1F3FB 200D 2640 FE0F 1F93C 1F3FC 200D 2640 FE0F 1F93C 1F3FD 200D 2640 FE0F 1F93C 1F3FE 200D 2640 FE0F 1F93C 1F3FF 200D 2640 FE0F """ def _get_order_patch(order_text, seq_to_name): """Create a mapping from a key sequence to a list of sequence, name tuples. This will be used to insert additional sequences after the key sequence in the order data. seq_to_name is a mapping from new sequence to name, so the names don't have to be duplicated in the order data.""" patch_map = {} patch_key = None patch_list = None def get_sequence(seqtext): return tuple([int(s, 16) for s in seqtext.split()]) for line in order_text.splitlines(): ix = line.find('#') if ix >= 0: line = line[:ix] line = line.strip() if not line: continue if line.startswith('-'): if patch_list and patch_key: patch_map[patch_key] = patch_list patch_key = get_sequence(line[1:]) patch_list = [] else: seq = get_sequence(line) name = seq_to_name[seq] # exception if seq is not in sequence_text patch_list.append((seq, name)) if patch_list and patch_key: patch_map[patch_key] = patch_list return patch_map def _get_android_order_patch(): """Get an order patch using the legacy android data.""" # maps from sequence to (name, age, type), we only need the name seq_data = _read_emoji_data(_LEGACY_ANDROID_SEQUENCES.splitlines()) seq_to_name = {k: v[0] for k, v in seq_data.iteritems()} return _get_order_patch(_LEGACY_ANDROID_ORDER, seq_to_name) def _apply_order_patch(patch, group_list): """patch is a map from a key sequence to list of sequence, name pairs, and group_list is an ordered list of sequence, group, subgroup, name tuples. Iterate through the group list appending each item to a new list, and after appending an item matching a key sequence, also append all of its associated sequences in order using the same group and subgroup. Return the new list. If there are any unused patches, raise an exception.""" result = [] patched = set() for t in group_list: result.append(t) if t[0] in patch: patched.add(t[0]) _, group, subgroup, _ = t for seq, name in patch[t[0]]: result.append((seq, group, subgroup, name)) unused = set(patch.keys()) - patched if unused: raise Exception('%d unused patch%s\n %s: ' % ( len(unused), '' if len(unused) == 1 else 'es', '\n '.join(seq_to_string(seq) for seq in sorted(unused)))) return result def _load_emoji_group_data(): global _emoji_group_data if _emoji_group_data: return _emoji_group_data = {} with open_unicode_data_file('emoji-test.txt') as f: text = f.read() group_list = _read_emoji_test_data(text) # patch with android items patch = _get_android_order_patch() group_list = _apply_order_patch(patch, group_list) group_list.extend(_read_emoji_test_data(_SUPPLEMENTAL_EMOJI_GROUP_DATA)) for i, (seq, group, subgroup, name) in enumerate(group_list): _emoji_group_data[seq] = (i, group, subgroup, name) assert len(group_list) == len(_emoji_group_data) def get_emoji_group_data(seq): """Return group data for the canonical sequence seq, or None. Group data is a tuple of index, group, subgroup, and name. The index is a unique global sort index for the sequence among all sequences in the group data.""" _load_emoji_group_data() return _emoji_group_data.get(seq, None) def get_emoji_groups(): """Return the main emoji groups, in order.""" _load_emoji_group_data() groups = [] group = None for _, g, _, _ in sorted(_emoji_group_data.values()): if g != group: group = g groups.append(group) return groups def get_emoji_subgroups(group): """Return the subgroups of this group, in order, or None if the group is not recognized.""" _load_emoji_group_data() subgroups = [] subgroup = None for _, g, sg, _ in sorted(_emoji_group_data.values()): if g == group: if sg != subgroup: subgroup = sg subgroups.append(subgroup) return subgroups if subgroups else None def get_emoji_in_group(group, subgroup=None): """Return the sorted list of the emoji sequences in the group (limiting to subgroup if subgroup is not None). Returns None if group does not exist, and an empty list if subgroup does not exist in group.""" _load_emoji_group_data() result = None for seq, (index, g, sg, _) in _emoji_group_data.iteritems(): if g == group: if result == None: result = [] if subgroup and sg != subgroup: continue result.append(seq) result.sort(key=lambda s: _emoji_group_data[s][0]) return result def get_sorted_emoji_sequences(seqs): """Seqs is a collection of canonical emoji sequences. Returns a list of these sequences in the canonical emoji group order. Sequences that are not canonical are placed at the end, in unicode code point order. """ _load_emoji_group_data() return sorted(seqs, key=lambda s: (_emoji_group_data.get(s, 100000), s)) def _load_emoji_sequence_data(): """Ensure the emoji sequence data is initialized.""" global _emoji_sequence_data, _emoji_non_vs_to_canonical if _emoji_sequence_data is not None: return _emoji_sequence_data = {} _emoji_non_vs_to_canonical = {} def add_data(data): for k, t in data.iteritems(): if k in _emoji_sequence_data: print 'already have data for sequence:', seq_to_string(k), t _emoji_sequence_data[k] = t if EMOJI_VS in k: _emoji_non_vs_to_canonical[strip_emoji_vs(k)] = k for datafile in ['emoji-zwj-sequences.txt', 'emoji-sequences.txt']: add_data(_read_emoji_data_file(datafile)) add_data(_read_emoji_data(_LEGACY_ANDROID_SEQUENCES.splitlines())) _load_unicode_data_txt() # ensure character_names_data is populated _load_emoji_data() # ensure presentation_default_text is populated _load_emoji_group_data() # ensure group data is populated # Get names for single emoji from the test data. We will prefer these over # those in UnicodeData (e.g. prefer "one o'clock" to "clock face one oclock"), # and if they're not in UnicodeData these are proposed new emoji. for seq, (_, _, _, emoji_name) in _emoji_group_data.iteritems(): non_vs_seq = strip_emoji_vs(seq) if len(non_vs_seq) > 1: continue cp = non_vs_seq[0] # If it's not in character names data, it's a proposed emoji. if cp not in _character_names_data: # use 'ignore' to strip curly quotes etc if they exist, unicode # character names are ASCII, and it's probably best to keep it that way. cp_name = emoji_name.encode('ascii', 'ignore').upper() _character_names_data[cp] = cp_name is_default_text_presentation = cp in _presentation_default_text if is_default_text_presentation: seq = (cp, EMOJI_VS) current_data = _emoji_sequence_data.get(seq) or ( emoji_name, 10.0, 'Emoji_Single_Sequence') current_version = current_data[1] or 10.0 if is_default_text_presentation: emoji_name = '(emoji) ' + emoji_name _emoji_sequence_data[seq] = (emoji_name, current_version, current_data[2]) # Fill in sequences of single emoji, handling non-canonical to canonical also. for k in _emoji: non_vs_seq = (k,) is_default_text_presentation = k in _presentation_default_text if is_default_text_presentation: canonical_seq = (k, EMOJI_VS) _emoji_non_vs_to_canonical[non_vs_seq] = canonical_seq else: canonical_seq = non_vs_seq if canonical_seq in _emoji_sequence_data: # Prefer names we have where they exist emoji_name, emoji_age, seq_type = _emoji_sequence_data[canonical_seq] else: emoji_name = name(k, 'unnamed').lower() if name == 'unnamed': continue emoji_age = age(k) seq_type = 'Emoji_Single_Sequence' if is_default_text_presentation and not emoji_name.startswith('(emoji) '): emoji_name = '(emoji) ' + emoji_name _emoji_sequence_data[canonical_seq] = (emoji_name, emoji_age, seq_type) def get_emoji_sequences(age=None, types=None): """Return the set of canonical emoji sequences, filtering to those <= age if age is not None, and those with type in types (if not a string) or type == types (if type is a string) if types is not None. By default all sequences are returned, including those for single emoji.""" _load_emoji_sequence_data() result = _emoji_sequence_data.keys() if types is not None: if isinstance(types, basestring): types = frozenset([types]) result = [k for k in result if _emoji_sequence_data[k][1] in types] if age is not None: age = float(age) result = [k for k in result if _emoji_sequence_data[k][0] <= age] return result def get_emoji_sequence_data(seq): """Return a tuple of the name, age, and type for the (possibly non-canonical) sequence, or None if not recognized as a sequence.""" _load_emoji_sequence_data() seq = get_canonical_emoji_sequence(seq) if not seq or seq not in _emoji_sequence_data: return None return _emoji_sequence_data[seq] def get_emoji_sequence_name(seq): """Return the name of the (possibly non-canonical) sequence, or None if not recognized as a sequence.""" data = get_emoji_sequence_data(seq) return None if not data else data[0] def get_emoji_sequence_age(seq): """Return the age of the (possibly non-canonical) sequence, or None if not recognized as a sequence. Proposed sequences have 1000.0 as the age.""" # floats are a pain since the actual values are decimal. maybe use # strings to represent age. data = get_emoji_sequence_data(seq) return None if not data else data[1] def get_emoji_sequence_type(seq): """Return the type of the (possibly non-canonical) sequence, or None if not recognized as a sequence. Types are in EMOJI_SEQUENCE_TYPES.""" data = get_emoji_sequence_data(seq) return None if not data else data[2] def is_canonical_emoji_sequence(seq): """Return true if this is a canonical emoji sequence (has 'vs' where Unicode says it should), and is known.""" _load_emoji_sequence_data() return seq in _emoji_sequence_data def get_canonical_emoji_sequence(seq): """Return the canonical version of this emoji sequence if the sequence is known, or None.""" if is_canonical_emoji_sequence(seq): return seq seq = strip_emoji_vs(seq) return _emoji_non_vs_to_canonical.get(seq, None) def strip_emoji_vs(seq): """Return a version of this emoji sequence with emoji variation selectors stripped. This is the 'non-canonical' version used by the color emoji font, which doesn't care how the sequence is represented in text.""" if EMOJI_VS in seq: return tuple([cp for cp in seq if cp != EMOJI_VS]) return seq def seq_to_string(seq): """Return a string representation of the codepoint sequence.""" return '_'.join('%04x' % cp for cp in seq) def string_to_seq(seq_str): """Return a codepoint sequence (tuple) given its string representation.""" return tuple([int(s, 16) for s in seq_str.split('_')]) def is_cp_seq(seq): return all(0 <= n <= 0x10ffff for n in seq) _REGIONAL_INDICATOR_START = 0x1f1e6 _REGIONAL_INDICATOR_END = 0x1f1ff def is_regional_indicator(cp): return _REGIONAL_INDICATOR_START <= cp <= _REGIONAL_INDICATOR_END def is_regional_indicator_seq(cps): return len(cps) == 2 and all(is_regional_indicator(cp) for cp in cps) def regional_indicator_to_ascii(cp): assert is_regional_indicator(cp) return chr(cp - _REGIONAL_INDICATOR_START + ord('A')) def ascii_to_regional_indicator(ch): assert 'A' <= ch <= 'Z' return ord(ch) - ord('A') + _REGIONAL_INDICATOR_START def string_to_regional_indicator_seq(s): assert len(s) == 2 return ascii_to_regional_indicator(s[0]), ascii_to_regional_indicator(s[1]) def regional_indicator_seq_to_string(cps): assert len(cps) == 2 return ''.join(regional_indicator_to_ascii(cp) for cp in cps) def is_tag(cp): return 0xe0020 < cp < 0xe0080 or cp == 0xe0001 def tag_character_to_ascii(cp): assert is_tag(cp) if cp == 0xe0001: return '[begin]' if cp == 0xe007f: return '[end]' return chr(cp - 0xe0000) def is_regional_tag_seq(seq): return (seq[0] == 0x1f3f4 and seq[-1] == 0xe007f and all(0xe0020 < cp < 0xe007e for cp in seq[1:-1])) _FITZ_START = 0x1F3FB _FITZ_END = 0x1F3FF def is_skintone_modifier(cp): return _FITZ_START <= cp <= _FITZ_END def get_presentation_default_emoji(): _load_emoji_data() return _presentation_default_emoji def get_presentation_default_text(): _load_emoji_data() return _presentation_default_text def get_emoji(): _load_emoji_data() return _emoji def is_emoji(cp): _load_emoji_data() return cp in _emoji def is_emoji_modifier_base(cp): _load_emoji_data() return cp in _emoji_modifier_base def _load_unicode_emoji_variants(): """Parse StandardizedVariants.txt and initialize a set of characters that have a defined emoji variant presentation. All such characters also have a text variant presentation so a single set works for both.""" global _emoji_variants, _emoji_variants_proposed if _emoji_variants: return emoji_variants = set() line_re = re.compile(r'([0-9A-F]{4,6})\s+FE0F\s*;\s*emoji style\s*;') with open_unicode_data_file('StandardizedVariants.txt') as f: for line in f: m = line_re.match(line) if m: emoji_variants.add(int(m.group(1), 16)) # temporarily hard-code in some post-9.0 proposed exceptions used # in gendered emoji sequences emoji_variants.union(set([0x2640, 0x2642, 0x2695])) _emoji_variants = frozenset(emoji_variants) with open_unicode_data_file('proposed-variants.txt') as f: for line in f: m = line_re.match(line) if m: emoji_variants.add(int(m.group(1), 16)) _emoji_variants_proposed = frozenset(emoji_variants) def get_unicode_emoji_variants(include_proposed='proposed'): """Returns the emoji characters that have both emoji and text presentations. If include_proposed is 'proposed', include the ones proposed in 2016/08. If include_proposed is 'proposed_extra', also include the emoji Noto proposes for text presentation treatment to align related characters. Else include_proposed should resolve to boolean False.""" _load_unicode_emoji_variants() if not include_proposed: return _emoji_variants elif include_proposed == 'proposed': return _emoji_variants_proposed elif include_proposed == 'proposed_extra': extra = tool_utils.parse_int_ranges( '1f4b9 1f4c8-1f4ca 1f507 1f509-1f50a 1f44c') return _emoji_variants_proposed | extra else: raise Exception( "include_proposed is %s which is not in ['proposed', 'proposed_extra']" % include_proposed) def _load_variant_data(): """Parse StandardizedVariants.txt and initialize all non-emoji variant data. The data is a mapping from codepoint to a list of tuples of: - variant selector - compatibility character (-1 if there is none) - shaping context (bitmask, 1 2 4 8 for isolate initial medial final) The compatibility character is for cjk mappings that map to 'the same' glyph as another CJK character.""" global _variant_data, _variant_data_cps if _variant_data: return compatibility_re = re.compile( r'\s*CJK COMPATIBILITY IDEOGRAPH-([0-9A-Fa-f]+)') variants = collections.defaultdict(list) with open_unicode_data_file('StandardizedVariants.txt') as f: for line in f: x = line.find('#') if x >= 0: line = line[:x] line = line.strip() if not line: continue tokens = line.split(';'); cp, var = tokens[0].split(' ') cp = int(cp, 16) varval = int(var, 16) if varval in [0xfe0e, 0xfe0f]: continue # ignore emoji variants m = compatibility_re.match(tokens[1].strip()) compat = int(m.group(1), 16) if m else -1 context = 0 if tokens[2]: ctx = tokens[2] if ctx.find('isolate') != -1: context += 1 if ctx.find('initial') != -1: context += 2 if ctx.find('medial') != -1: context += 4 if ctx.find('final') != -1: context += 8 variants[cp].append((varval, compat, context)) _variant_data_cps = frozenset(variants.keys()) _variant_data = variants def has_variant_data(cp): _load_variant_data() return cp in _variant_data def get_variant_data(cp): _load_variant_data() return _variant_data[cp][:] if cp in _variant_data else None def variant_data_cps(): _load_variant_data() return _variant_data_cps # proposed emoji def _load_proposed_emoji_data(): """Parse proposed-emoji-10.txt to get cps/names of proposed emoji that are not yet approved for Unicode 10.""" global _proposed_emoji_data, _proposed_emoji_data_cps if _proposed_emoji_data: return _proposed_emoji_data = {} line_re = re.compile( r'^U\+([a-zA-z0-9]{4,5})\s.*\s\d{4}Q\d\s+(.*)$') with open_unicode_data_file('proposed-emoji-10.txt') as f: for line in f: line = line.strip() if not line or line[0] == '#' or line.startswith(u'\u2022'): continue m = line_re.match(line) if not m: raise ValueError('did not match "%s"' % line) cp = int(m.group(1), 16) name = m.group(2) if cp in _proposed_emoji_data: raise ValueError('duplicate emoji %x, old name: %s, new name: %s' % ( cp, _proposed_emoji_data[cp], name)) _proposed_emoji_data[cp] = name _proposed_emoji_data_cps = frozenset(_proposed_emoji_data.keys()) def proposed_emoji_name(cp): _load_proposed_emoji_data() return _proposed_emoji_data.get(cp, '') def proposed_emoji_cps(): _load_proposed_emoji_data() return _proposed_emoji_data_cps def is_proposed_emoji(cp): _load_proposed_emoji_data() return cp in _proposed_emoji_data_cps def read_codeset(text): line_re = re.compile(r'^0x([0-9a-fA-F]{2,6})\s+0x([0-9a-fA-F]{4,6})\s+.*') codeset = set() for line in text.splitlines(): m = line_re.match(line) if m: cp = int(m.group(2), 16) codeset.add(cp) return codeset def codeset(cpname): """Return a set of the unicode codepoints in the code page named cpname, or None.""" filename = ('%s.txt' % cpname).upper() filepath = path.join( path.dirname(__file__), os.pardir, 'third_party', 'unicode', filename) if not path.isfile(filepath): return None with open(filepath, 'r') as f: return read_codeset(f.read()) def _dump_emoji_presentation(): """Dump presentation info, for testing.""" text_p = 0 emoji_p = 0 for cp in sorted(get_emoji()): cp_name = name(cp, '') if cp in get_presentation_default_emoji(): presentation = 'emoji' emoji_p += 1 elif cp in get_presentation_default_text(): presentation = 'text' text_p += 1 else: presentation = '' print '%s%04x %5s %s' % ( ' ' if cp < 0x10000 else '', cp, presentation, cp_name) print '%d total emoji, %d text presentation, %d emoji presentation' % ( len(get_emoji()), text_p, emoji_p) def _load_nameslist_data(): global _nameslist_see_also if _nameslist_see_also is not None: return _nameslist_see_also = collections.defaultdict(set) cp = None line_re = re.compile(r'^(?:(?:([0-9A-F]{4,6})\t.*)|(?:^\s+([x=])\s+(.*)))$') see_also_re = re.compile( r'\s*(?:\(.*\s-\s+([0-9A-F]{4,6})\))|([0-9A-F]{4,6})') with open_unicode_data_file('NamesList.txt') as f: for line in f: m = line_re.match(line) if not m: continue if m.group(1): cp = int(m.group(1), 16) else: rel = m.group(2).strip() val = m.group(3).strip() if rel != 'x': continue m = see_also_re.match(val) if not m: raise Exception( 'could not match see also val "%s" in line "%s"' % (val, line)) ref_cp = int(m.group(1) or m.group(2), 16) _nameslist_see_also[cp].add(ref_cp) def see_also(cp): _load_nameslist_data() return frozenset(_nameslist_see_also.get(cp)) def _load_namealiases_data(): global _namealiases_alt_names if _namealiases_alt_names is not None: return _namealiases_alt_names = collections.defaultdict(list) line_re = re.compile(r'([0-9A-F]{4,6});([^;]+);(.*)$') with open_unicode_data_file('NameAliases.txt') as f: for line in f: m = line_re.match(line) if not m: continue cp = int(m.group(1), 16) name = m.group(2).strip() name_type = m.group(3).strip() if not name_type in [ 'correction', 'control', 'alternate', 'figment', 'abbreviation']: raise Exception('unknown name type in "%s"' % line) if name_type == 'figment': continue _namealiases_alt_names[cp].append((name, name_type)) def alt_names(cp): """Return list of name, nametype tuples for cp, or None.""" _load_namealiases_data() return tuple(_namealiases_alt_names.get(cp)) if __name__ == '__main__': for k in sorted(get_emoji_sequences()): if not get_emoji_group_data(k): print 'no data:', seq_to_string(k) for group in get_emoji_groups(): print 'group:', group for subgroup in get_emoji_subgroups(group): print ' subgroup:', subgroup print ' %d items' % len(get_emoji_in_group(group, subgroup)) nototools-2017-09-25-tooling-for-phase3-update/nototools/unittests/000077500000000000000000000000001316231664500251665ustar00rootroot00000000000000nototools-2017-09-25-tooling-for-phase3-update/nototools/unittests/__init__.py000066400000000000000000000000001316231664500272650ustar00rootroot00000000000000nototools-2017-09-25-tooling-for-phase3-update/nototools/unittests/font_tests.py000066400000000000000000000741711316231664500277420ustar00rootroot00000000000000# coding=UTF-8 # # Copyright 2015 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import glob from os import path import unittest from fontTools import ttLib import freetype from nototools import coverage from nototools import font_data from nototools import noto_fonts from nototools import unicode_data from nototools.glyph_area_pen import GlyphAreaPen from nototools.unittests import layout def get_rendered_char_height(font_filename, font_size, char, target='mono'): if target == 'mono': render_params = freetype.FT_LOAD_TARGET_MONO elif target == 'lcd': render_params = freetype.FT_LOAD_TARGET_LCD render_params |= freetype.FT_LOAD_RENDER face = freetype.Face(font_filename) face.set_char_size(font_size*64) face.load_char(char, render_params) return face.glyph.bitmap.rows def load_fonts(patterns, expected_count=None, font_class=None): """Load all fonts specified in the patterns. Also assert that the number of the fonts found is exactly the same as expected_count.""" if font_class is None: font_class = ttLib.TTFont all_font_files = [] for pattern in patterns: all_font_files += glob.glob(pattern) all_fonts = [font_class(font) for font in all_font_files] if expected_count: assert len(all_font_files) == expected_count, "got %d fonts, expected %d." % (len(all_font_files), expected_count) return all_font_files, all_fonts class FontTest(unittest.TestCase): """Parent class for all font tests.""" loaded_fonts = None class TestItalicAngle(FontTest): """Test the italic angle of fonts.""" def setUp(self): _, self.fonts = self.loaded_fonts def test_italic_angle(self): """Tests the italic angle of fonts to be correct.""" for font in self.fonts: post_table = font['post'] if 'Italic' in font_data.font_name(font): expected_angle = self.expected_italic_angle else: expected_angle = 0.0 self.assertEqual(post_table.italicAngle, expected_angle) class TestMetaInfo(FontTest): """Test various meta information.""" mark_heavier_as_bold = False mark_italic_as_oblique = False def setUp(self): _, self.fonts = self.loaded_fonts def parse_metadata(self, font): """Parse font name to infer weight and slope.""" font_name = font_data.font_name(font) bold = ('Bold' in font_name) or ( self.mark_heavier_as_bold and 'Black' in font_name) italic = 'Italic' in font_name return bold, italic def test_mac_style(self): """Tests the macStyle of the fonts to be correct.""" for font in self.fonts: bold, italic = self.parse_metadata(font) expected_mac_style = (italic << 1) | bold self.assertEqual(font['head'].macStyle, expected_mac_style) def test_fs_selection(self): """Tests the fsSelection to be correct.""" for font in self.fonts: bold, italic = self.parse_metadata(font) expected_fs_type = ((bold << 5) | italic) or (1 << 6) if italic and self.mark_italic_as_oblique: expected_fs_type |= (1 << 9) self.assertEqual(font['OS/2'].fsSelection, expected_fs_type) def test_fs_type(self): """Tests the fsType of the fonts.""" for font in self.fonts: self.assertEqual(font['OS/2'].fsType, self.expected_os2_fsType) def test_vendor_id(self): """Tests the vendor ID of the fonts.""" for font in self.fonts: self.assertEqual(font['OS/2'].achVendID, self.expected_os2_achVendID) def test_us_weight(self): "Tests the usWeight of the fonts to be correct.""" for font in self.fonts: weight = noto_fonts.parse_weight(font_data.font_name(font)) expected_numeric_weight = noto_fonts.WEIGHTS[weight] # hack for windows GDI expected_numeric_weight = max(expected_numeric_weight, 250) self.assertEqual( font['OS/2'].usWeightClass, expected_numeric_weight) def test_version_numbers(self): "Tests the two version numbers of the font to be correct.""" for font in self.fonts: version = font_data.font_version(font) usable_part_of_version = version.split(';')[0] self.assertEqual(usable_part_of_version, 'Version ' + self.expected_version) revision = font_data.printable_font_revision(font, accuracy=3) self.assertEqual(revision, self.expected_version) class TestNames(FontTest): """Tests various strings in the name table.""" mark_heavier_as_bold = False def setUp(self): font_files, self.fonts = self.loaded_fonts self.font_files = [path.basename(f) for f in font_files] self.condensed_family_name = self.family_name + ' Condensed' self.names = [] for font in self.fonts: self.names.append(font_data.get_name_records(font)) def test_copyright(self): """Tests the copyright message.""" for records in self.names: self.assertEqual(records[0], self.expected_copyright) def parse_filename(self, filename): """Parse expected name attributes from filename.""" name_nosp = self.family_name.replace(' ', '') condensed_name_nosp = self.condensed_family_name.replace(' ', '') family_names = '%s|%s' % (condensed_name_nosp, name_nosp) filename_match = noto_fonts.match_filename(filename, family_names) family, _, _, _, _, _, _, _, weight, slope, _ = filename_match.groups() if family == condensed_name_nosp: family = self.condensed_family_name else: # family == name_nosp family = self.family_name if not weight: weight = 'Regular' return family, weight, slope def build_style(self, weight, slope): """Build style (typographic subfamily) out of weight and slope.""" style = weight if slope: if style == 'Regular': style = 'Italic' else: style += ' ' + slope return style def test_family_name(self): """Tests the family name.""" for font_file, records in zip(self.font_files, self.names): family, weight, _ = self.parse_filename(font_file) # check that family name includes weight, if not regular or bold if weight not in ['Regular', 'Bold']: self.assertEqual(records[1], '%s %s' % (family, weight)) # check typographic name, if present self.assertIn(16, records) self.assertEqual(records[16], family) # check that family name does not include weight, if regular or bold else: self.assertEqual(records[1], family) def test_subfamily_name(self): """Tests the subfamily name.""" for font_file, records in zip(self.font_files, self.names): _, weight, slope = self.parse_filename(font_file) subfam = records[2] # check that subfamily is just a combination of bold and italic self.assertIn(subfam, ['Regular', 'Bold', 'Italic', 'Bold Italic']) # check that subfamily weight/slope are consistent with filename bold = (weight == 'Bold') or ( self.mark_heavier_as_bold and noto_fonts.WEIGHTS[weight] > noto_fonts.WEIGHTS['Bold']) self.assertEqual(bold, subfam.startswith('Bold')) self.assertEqual(slope == 'Italic', subfam.endswith('Italic')) # check typographic name, if present if weight not in ['Regular', 'Bold']: self.assertIn(17, records) self.assertEqual(records[17], self.build_style(weight, slope)) def test_unique_identifier_and_full_name(self): """Tests the unique identifier and full name.""" for font_file, records in zip(self.font_files, self.names): family, weight, slope = self.parse_filename(font_file) style = self.build_style(weight, slope) expected_name = family if style != 'Regular': expected_name += ' ' + style self.assertEqual(records[3], self.expected_unique_id(family, style)) self.assertEqual(records[4], expected_name) self.assertFalse(records.has_key(18)) def test_postscript_name(self): """Tests the postscript name.""" for font_file, records in zip(self.font_files, self.names): family, weight, slope = self.parse_filename(font_file) style = self.build_style(weight, slope) expected_name = (family + '-' + style).replace(' ', '') self.assertEqual(records[6], expected_name) def test_postscript_name_for_spaces(self): """Tests that there are no spaces in PostScript names.""" for records in self.names: self.assertFalse(' ' in records[6]) class TestDigitWidths(FontTest): """Tests the width of digits.""" def setUp(self): self.font_files, self.fonts = self.loaded_fonts self.digits = [ 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'] def test_digit_widths(self): """Tests all decimal digits to make sure they have the same width.""" for font in self.fonts: hmtx_table = font['hmtx'] widths = [hmtx_table[digit][0] for digit in self.digits] self.assertEqual(len(set(widths)), 1) def test_superscript_digits(self): """Tests that 'numr' features maps digits to Unicode superscripts.""" ascii_digits = '0123456789' superscript_digits = u'⁰¹²³⁴⁵⁶⁷⁸⁹' for font_file in self.font_files: numr_glyphs = layout.get_advances( ascii_digits, font_file, '--features=numr') superscript_glyphs = layout.get_advances( superscript_digits, font_file) self.assertEqual(superscript_glyphs, numr_glyphs) class TestCharacterCoverage(FontTest): """Tests character coverage.""" def setUp(self): _, self.fonts = self.loaded_fonts def test_inclusion(self): """Tests for characters which should be included.""" for font in self.fonts: charset = coverage.character_set(font) for char in self.include: self.assertIn(char, charset) def test_exclusion(self): """Tests that characters which should be excluded are absent.""" for font in self.fonts: charset = coverage.character_set(font) for char in self.exclude: self.assertNotIn(char, charset) def test_format_4_cmap_preset(self): """Test that fonts contain a MS Unicode BMP encoded cmap, as recommended by the spec: https://www.microsoft.com/typography/otspec/cmap.htm """ for font in self.fonts: found = False for cmap in font['cmap'].tables: if (cmap.format, cmap.platformID, cmap.platEncID) == (4, 3, 1): found = True self.assertTrue(found) class TestLigatures(FontTest): """Tests formation or lack of formation of ligatures. Must have the following attributes: active: List of (parameters, (sequence, sequence, ...)) tuples, for which each sequence should form a ligature when shaped with the given parameters. inactive: Similar list of tuples, for parameter-sequence cases which should not ligate. """ def setUp(self): self.fontfiles, _ = self.loaded_fonts def test_active_ligatures(self): """Tests that some ligatures are formed by certain features.""" self._run_ligature_test(self.active, True) def test_inactive_ligatures(self): """Tests that some ligatures are not formed by certain features.""" self._run_ligature_test(self.inactive, False) def _run_ligature_test(self, sequences_with_params, active): for fontfile in self.fontfiles: for params, sequences in sequences_with_params: for sequence in sequences: if params: output = layout.get_glyphs(sequence, fontfile, params) else: output = layout.get_glyphs(sequence, fontfile) if active: # should ligate with parameters applied expected = 1 err_msg = '%s not ligated in %s with parameters: %s' else: # should not ligate with parameters applied expected = len(sequence) err_msg = '%s ligated in %s with parameters: %s' self.assertEqual(len(output), expected, err_msg % ( sequence, fontfile, params)) class TestFeatures(FontTest): """Tests typographic features.""" def setUp(self): self.fontfiles, self.fonts = self.loaded_fonts def test_num_features(self): """Tests that lnum/onum/pnum/tnum features behave appropriately.""" def run_test(glyph_order, glyph_set, fontfile, tags, proportional=False, oldstyle=False): num = glyph_order[layout.get_glyphs('1', fontfile)[0]] styled = glyph_order[layout.get_glyphs( '1', fontfile, '--features=' + ','.join(tags))[0]] if not (proportional or oldstyle): self.assertEqual(num, styled) else: num, styled = glyph_set[num], glyph_set[styled] if proportional: self.assertNotEqual(num.width, styled.width) if oldstyle: self.assertNotEqual(num._glyph.yMax, styled._glyph.yMax) for fontfile, font in zip(self.fontfiles, self.fonts): go = font.getGlyphOrder() gs = font.getGlyphSet() # test individual tags run_test(go, gs, fontfile, ['lnum']) run_test(go, gs, fontfile, ['tnum']) run_test(go, gs, fontfile, ['pnum'], proportional=True) run_test(go, gs, fontfile, ['onum'], oldstyle=True) # test standard combinations run_test(go, gs, fontfile, ['lnum', 'tnum']) run_test(go, gs, fontfile, ['lnum', 'pnum'], proportional=True) run_test(go, gs, fontfile, ['onum', 'tnum'], oldstyle=True) run_test(go, gs, fontfile, ['onum', 'pnum'], oldstyle=True, proportional=True) # test that defaults take precedence run_test(go, gs, fontfile, ['lnum', 'onum']) run_test(go, gs, fontfile, ['pnum', 'tnum']) run_test(go, gs, fontfile, ['lnum', 'onum', 'tnum']) run_test(go, gs, fontfile, ['lnum', 'onum', 'pnum'], proportional=True) run_test(go, gs, fontfile, ['lnum', 'pnum', 'tnum']) run_test(go, gs, fontfile, ['onum', 'pnum', 'tnum'], oldstyle=True) run_test(go, gs, fontfile, ['lnum', 'onum', 'pnum', 'tnum']) def run_sub_coverage_test(self, feature, reqs_path): """Tests that a substitution feature is supported for a required set.""" with open(reqs_path) as reqs_file: reqs_list = [] for line in reqs_file.readlines(): input_cp, output_name = line[:line.index(' #')].split() reqs_list.append((unichr(int(input_cp, 16)), output_name)) for fontfile, font in zip(self.fontfiles, self.fonts): glyph_order = font.getGlyphOrder() chars_with_no_sub = [] for char, expected_name in reqs_list: sub = layout.get_glyphs(char, fontfile, '--features=%s' % feature) if glyph_order[sub[0]] != expected_name: chars_with_no_sub.append(char) self.assertEqual( chars_with_no_sub, [], ("%s feature is not applied correctly to '%s'" % (feature, u''.join(chars_with_no_sub).encode('UTF-8')))) def test_smcp_coverage(self): """Tests that smcp is supported for a required set.""" self.run_sub_coverage_test('smcp', self.smcp_reqs_path) def test_c2sc_coverage(self): """Tests that c2sc is supported for a required set.""" self.run_sub_coverage_test('c2sc', self.c2sc_reqs_path) def test_unic_coverage(self): """Tests that unic is supported for a required set.""" self.run_sub_coverage_test('unic', self.unic_reqs_path) class TestVerticalMetrics(FontTest): """Test the vertical metrics of fonts.""" def setUp(self): self.font_files, self.fonts = self.loaded_fonts def test_ymin_ymax(self): """Tests yMin and yMax to be equal to expected values.""" for font in self.fonts: head_table = font['head'] self.assertEqual(head_table.yMin, self.expected_head_yMin) self.assertEqual(head_table.yMax, self.expected_head_yMax) def test_glyphs_ymin_ymax(self): """Tests yMin and yMax of all glyphs to not go outside the range.""" out_of_bounds = [] for font_file, font in zip(self.font_files, self.fonts): glyf_table = font['glyf'] for glyph_name in glyf_table.glyphOrder: try: y_min = glyf_table[glyph_name].yMin y_max = glyf_table[glyph_name].yMax except AttributeError: continue if (y_min < self.expected_head_yMin or y_max > self.expected_head_yMax): out_of_bounds.append((font_file, glyph_name, y_min, y_max)) self.assertFalse( out_of_bounds, 'Vertical metrics exceed the acceptable range ' 'yMin=%d, yMax=%d:%s' % ( self.expected_head_yMin, self.expected_head_yMax, ''.join('\n%s %s yMin=%d yMax=%d' % g for g in out_of_bounds))) def test_hhea_table_metrics(self): """Tests ascent, descent, and lineGap to be equal to expected values.""" for font in self.fonts: hhea_table = font['hhea'] self.assertEqual(hhea_table.descent, self.expected_hhea_descent) self.assertEqual(hhea_table.ascent, self.expected_hhea_ascent) self.assertEqual(hhea_table.lineGap, self.expected_hhea_lineGap) def test_os2_metrics(self): """Tests OS/2 vertical metrics to be equal to expected values.""" for font in self.fonts: os2_table = font['OS/2'] self.assertEqual(os2_table.sTypoDescender, self.expected_os2_sTypoDescender) self.assertEqual(os2_table.sTypoAscender, self.expected_os2_sTypoAscender) self.assertEqual(os2_table.sTypoLineGap, self.expected_os2_sTypoLineGap) self.assertEqual(os2_table.usWinDescent, self.expected_os2_usWinDescent) self.assertEqual(os2_table.usWinAscent, self.expected_os2_usWinAscent) class TestHints(FontTest): """Tests hints.""" def setUp(self): self.fontfiles, self.fonts = self.loaded_fonts def test_existance_of_hints(self): """Tests all glyphs and makes sure non-composite ones have hints.""" missing_hints = [] for font in self.fonts: glyf_table = font['glyf'] for glyph_name in font.getGlyphOrder(): glyph = glyf_table[glyph_name] if glyph.numberOfContours <= 0: # composite or empty glyph continue if len(glyph.program.bytecode) <= 0: missing_hints.append( (glyph_name, font_data.font_name(font))) self.assertTrue(missing_hints == []) def test_height_of_lowercase_o(self): """Tests the height of the lowercase o in low resolutions.""" for fontfile in self.fontfiles: for size in range(8, 30): # Kind of arbitrary o_height = get_rendered_char_height( fontfile, size, 'o') n_height = get_rendered_char_height( fontfile, size, 'n') self.assertEqual(o_height, n_height) class TestGlyphBounds(FontTest): """Tests that certain glyphs do or don't go outside of given bounds. Glyphs must be designated with two class attribute lists "should_exceed" and "should_not_exceed", both containing tuples each with the following four elements: - names: a list containing glyph names as strings. - bounds: a list (xmin, ymin, xmax, ymax), values can be None. - multiplier: a value which, when multiplied by a font's weight class value minus 400 (regular), gives a bound adjustment for that font. Adjustment is outward (e.g. left for xMin and right for xMax) when positive and inward when negative. - errmsg: a string to print alongside the standard error message. """ def setUp(self): self.fontfiles, self.fonts = self.loaded_fonts def test_should_not_exceed(self): for names, bounds, multiplier, errmsg in self.should_not_exceed: self._run_test(names, bounds, multiplier, errmsg, False) def test_should_exceed(self): for names, bounds, multiplier, errmsg in self.should_exceed: self._run_test(names, bounds, multiplier, errmsg, True) def _run_test(self, names, bounds, multiplier, errmsg, should_exceed): errmsg_format = "%%s's %%s %%s %s %%d (%s)" % ( 'does not exceed' if should_exceed else 'exceeds', errmsg) for fontfile, font in zip(self.fontfiles, self.fonts): glyph_set = font.getGlyphSet() # offset applied to each bound, allowing for per-weight bounds offset = (font['OS/2'].usWeightClass - 400) * multiplier xmin, ymin, xmax, ymax = bounds for name in names: glyph = glyph_set[name]._glyph for attr, expected in ( ('xMin', xmin), ('yMin', ymin), ('xMax', xmax), ('yMax', ymax)): if expected is None: continue is_min = attr.endswith('Min') actual = getattr(glyph, attr) # try to always apply offset away (if positive) or towards # (if negative) a central value expected = expected + (-offset if is_min else offset) exceeds = actual < expected if is_min else actual > expected self.assertEqual(exceeds, should_exceed, errmsg_format % ( fontfile, name, attr, expected)) class TestGlyphAreas(unittest.TestCase): """Tests that glyph areas between weights have the right ratios. Must have the following attributes: master/instance_glyph_sets: Tuples each containing a list of font filenames and a list of glyph sets corresponding to those fonts. master/instance_glyphs_to_test: Lists of glyph names. master/instance_weights_to_test: Lists of weights as strings, should have exactly two master weights and >1 instance weight. exclude: List containing strings which if found in a font filename will exclude that font from testing, e.g. "Condensed", "Italic". whitelist: List containing names of glyphs to not test. Glyph sets are used instead of font objects so that either TTFs or UFOs can be tested. `exclude` should be used carefully so that only one master/instance per weight is included from the given glyph sets. """ def setUp(self): """Determine which glyphs are intentionally unchanged.""" self.unchanged = set() master_a, master_b = self.getGlyphSets( self.master_glyph_sets, self.master_weights_to_test) pen_a = GlyphAreaPen(master_a) pen_b = GlyphAreaPen(master_b) for name in self.master_glyphs_to_test: if name in self.whitelist: continue master_a[name].draw(pen_a) area_a = pen_a.pop() master_b[name].draw(pen_b) area_b = pen_b.pop() if area_a == area_b: if area_a: self.unchanged.add(name) else: assert area_a and area_b def getGlyphSets(self, glyph_sets, weights): """Filter glyph sets to only those with certain weights.""" glyph_set_map = { noto_fonts.parse_weight(font_file): glyph_set for font_file, glyph_set in zip(*glyph_sets) if all(style not in font_file for style in self.exclude)} return [glyph_set_map[w] for w in weights] def test_output(self): """Test that empty or intentionally unchanged glyphs are unchanged, and everything else is changed. """ glyph_sets = self.getGlyphSets( self.instance_glyph_sets, self.instance_weights_to_test) standard = glyph_sets[0] pen = GlyphAreaPen(standard) areas = {} for name in self.instance_glyphs_to_test: standard[name].draw(pen) areas[name] = pen.pop() errors = [] for other in glyph_sets[1:]: other_pen = GlyphAreaPen(other) for name, area in areas.iteritems(): if name in self.whitelist: continue other[name].draw(other_pen) other_area = other_pen.pop() if name in self.unchanged or not area: if area != other_area: errors.append( "%s has changed, but should not have: %s vs. %s." % (name, area, other_area)) else: if area == other_area: errors.append( "%s has not changed, but should have: %s vs. %s." % (name, area, other_area)) self.assertFalse(errors, '\n'.join([''] + errors)) class TestSpacingMarks(FontTest): """Tests that spacing marks are indeed spacing.""" def setUp(self): self.font_files, _ = self.loaded_fonts charset = coverage.character_set(self.font_files[0]) self.marks_to_test = [char for char in charset if unicode_data.category(char) in ['Lm', 'Sk']] self.advance_cache = {} def test_individual_spacing_marks(self): """Tests that spacing marks are spacing by themselves.""" for font in self.font_files: print 'Testing %s for stand-alone spacing marks...' % font for mark in self.marks_to_test: mark = unichr(mark) advances = layout.get_advances(mark, font) assert len(advances) == 1 self.assertNotEqual(advances[0], 0) def test_spacing_marks_in_combination(self): """Tests that spacing marks do not combine with base letters.""" for font in self.font_files: print 'Testing %s for spacing marks in combination...' % font for base_letter in (u'A\u00C6BCDEFGHIJKLMNO\u00D8\u01A0PRST' u'U\u01AFVWXYZ' u'a\u00E6bcdefghi\u0131j\u0237klmn' u'o\u00F8\u01A1prs\u017Ftu\u01B0vwxyz' u'\u03D2'): print 'Testing %s combinations' % base_letter for mark in self.marks_to_test: if mark == 0x02DE: # Skip rhotic hook, as it's perhaps OK for it to form # ligatures continue mark = unichr(mark) advances = layout.get_advances(base_letter + mark, font) self.assertEqual(len(advances), 2, 'The sequence <%04X, %04X> combines, ' 'but it should not' % (ord(base_letter), ord(mark))) class TestSoftDottedChars(FontTest): """Tests that soft-dotted characters lose their dots.""" def setUp(self): self.font_files, _ = self.loaded_fonts charset = coverage.character_set(self.font_files[0]) self.marks_to_test = [char for char in charset if unicode_data.combining(char) == 230] self.advance_cache = {} def test_combinations(self): """Tests that soft-dotted characters lose their dots when combined.""" for font in self.font_files: print 'Testing %s for soft-dotted combinations...' % font # TODO: replace the following list with actual derivation based on # Unicode's soft-dotted property for base_letter in (u'ij\u012F\u0249\u0268\u029D\u02B2\u03F3\u0456' u'\u0458\u1D62\u1D96\u1DA4\u1DA8\u1E2D\u1ECB' u'\u2071\u2C7C'): print 'Testing %s combinations' % base_letter.encode('UTF-8') for mark in self.marks_to_test: mark = unichr(mark) letter_only = layout.get_glyphs(base_letter, font) combination = layout.get_glyphs(base_letter + mark, font) self.assertNotEqual(combination[0], letter_only[0], "The sequence <%04X, %04X> doesn't lose its dot, " "but it should" % (ord(base_letter), ord(mark))) nototools-2017-09-25-tooling-for-phase3-update/nototools/unittests/layout.py000066400000000000000000000037061316231664500270630ustar00rootroot00000000000000# Copyright 2015 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Test general health of the fonts.""" import json from nototools import render def _run_harfbuzz(text, font, language, extra_parameters=None): """Run harfbuzz on some text and return the shaped list.""" try: # if extra_parameters is a string, split it into a list extra_parameters = extra_parameters.split(' ') except AttributeError: pass hb_output = render.run_harfbuzz_on_text( text, font, language, extra_parameters) return json.loads(hb_output) _advance_cache = {} def get_advances(text, font, extra_parameters=None): """Get a list of horizontal advances for text rendered in a font.""" try: return _advance_cache[(text, font, extra_parameters)] except KeyError: pass hb_output = _run_harfbuzz(text, font, None, extra_parameters) advances = [glyph['ax'] for glyph in hb_output] _advance_cache[(text, font, extra_parameters)] = advances return advances _shape_cache = {} def get_glyphs(text, font, extra_parameters=None): """Get a list of shaped glyphs for text rendered in a font.""" try: return _shape_cache[(text, font, extra_parameters)] except KeyError: pass hb_output = _run_harfbuzz(text, font, None, extra_parameters) shapes = [glyph['g'] for glyph in hb_output] _shape_cache[(text, font, extra_parameters)] = shapes return shapes nototools-2017-09-25-tooling-for-phase3-update/nototools/update_alpha.py000077500000000000000000000137401316231664500261350ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2015 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Update internal svn repo with .ttf files from unpacked font drops. This checks the font files direct from the vendor to our internal repo. Other files are not checked in at the moment. This uses compare_summary to generate a comment for the submit, since we can't view the file contents, just so we have some idea of what is going in.""" __author__ = 'dougfelt@google.com (Doug Felt)' import argparse import filecmp import os import os.path import re import shutil import subprocess import sys import notoconfig import compare_summary class RedirectStdout(object): """Redirect stdout to file.""" def __init__(self, filename): self._filename = filename def __enter__(self): self._stdout = sys.stdout sys.stdout = open(self._filename, 'w') def __exit__(self, etype, evalue, etraceback): file = sys.stdout sys.stdout = self._stdout try: file.close() except e: if not etype: raise e # else raise the original exception def push_to_noto_alpha(alphadir, srcdir, dry_run): # strip possible trailing slash for later relpath manipulations alphadir = os.path.abspath(alphadir) srcdir = os.path.abspath(srcdir) # could try to use pysvn, but that would be a separate dependency # poke svn first in case there's some issue with username/pw, etc. os.chdir(alphadir) subprocess.check_call(['svn', 'up'], stderr=subprocess.STDOUT) # TODO(dougfelt): make sure there's nothing already staged in the # repo, and that there's no files in the alpha tree that aren't # actually part of the repo. # collect file info, we do this so we can generate msg header font_paths = [] added = 0 updated = 0 for root, dirs, files in os.walk(srcdir): for file in files: if file.endswith('.ttf'): src_path = os.path.join(root, file) rel_path = src_path[len(srcdir)+1:] dst_path = os.path.join(alphadir, rel_path) # skip files that are the same as targets if not os.path.exists(dst_path): added += 1 font_paths.append(src_path) elif not filecmp.cmp(src_path, dst_path): updated += 1 font_paths.append(src_path) if not font_paths: print 'All .ttf files compare identical. Exiting.' return # summarize fonts in this commit name_rx = re.compile(r'.*/Noto(?:Sans|Serif)?(.+?)(?:UI)?-.*') name_info = {} for f in font_paths: hinted = f.find('unhinted') == -1 result = name_rx.match(f) if not result: raise ValueError('Could not match root font name in %s' % f) root_name = result.group(1) new_label = 'h' if hinted else 'u' cur_label = name_info.get(root_name, None) if cur_label: if cur_label.find(new_label) != -1: new_label = None else: # Using 'uh' would cause find to fail, if we processed unhinted first. # Which we don't, but relying on that is kind of obscure. new_label = 'h/u' if new_label: name_info[root_name] = new_label names = ', '.join(sorted(['%s(%s)' % (k, v) for k, v in name_info.iteritems()])) # get date of the drop from srcdir result = re.search(r'\d{4}_\d{2}_\d{2}', srcdir) if not result: raise ValuError('no date in ' + srcdir) date_str = result.group().replace('_', '/') if added: if updated: operation = 'Add/Update' else: operation = 'Add' else: operation = 'Update' one_line_msg = '%s %s from delivery on %s.' % (operation, names, date_str) # generate compare file to use as checkin log checkin_msg_file = '/tmp/svn_checkin.txt' with RedirectStdout(checkin_msg_file): print one_line_msg print compare_summary.compare_summary( alphadir, srcdir, None, compare_summary.tuple_compare, True, False, False, False) # make the changes for src_path in font_paths: rel_path = src_path[len(srcdir)+1:] dst_path = os.path.join(alphadir, rel_path) need_add = not os.path.exists(dst_path) # assume if it exists, its under version control if not dry_run: shutil.copy2(src_path, dst_path) if need_add: subprocess.check_call(['svn', 'add', rel_path], stderr=subprocess.STDOUT) # commit the change # leave this out for now, it's useful to check before the commit to make sure # nothing screwed up. # subprocess.check_call(['svn', 'commit', '-F', checkin_msg_file], # stderr=subprocess.STDOUT) with open(checkin_msg_file) as f: checkin_msg = f.read().strip(); print '%s\n-----\n%s\n-----' % ('dry run' if dry_run else 'summary', checkin_msg) if not dry_run: print 'command to update: svn commit -F \'%s\'' % checkin_msg_file def main(): values = notoconfig.values default_alpha = values.get('alpha') parser = argparse.ArgumentParser() parser.add_argument('srcdir', help='source to push to noto-alpha') parser.add_argument('--alpha', help='local noto-alpha svn repo (default %s)' % default_alpha, default=default_alpha) parser.add_argument('--dry-run', dest='dry_run', help='do not stage changes for svn', action='store_true') args = parser.parse_args() if not os.path.isdir(args.srcdir): print '%s does not exist or is not a directory' % args.srcdir return if not os.path.exists(args.alpha): print '%s does not exist or is not a directory' % args.alpha return push_to_noto_alpha(args.alpha, args.srcdir, args.dry_run) if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/nototools/update_cldr.py000077500000000000000000000077141316231664500260000ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: UTF-8 -*- # # Copyright 2015 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Update cldr data under third_party from local svn snapshot.""" import argparse import contextlib import os import shutil import string import subprocess import notoconfig import tool_utils CLDR_SUBDIRS = [ 'common/main', 'common/properties', 'exemplars/main', 'seed/main'] CLDR_FILES = [ 'common/supplemental/likelySubtags.xml', 'common/supplemental/supplementalData.xml'] README_TEMPLATE = """URL: http://unicode.org/cldr/trac/export/$version/trunk Version: r$version $tag License: Unicode License File: LICENSE Description: CLDR data files for language and country information. Local Modifications: No Modifications. """ def update_cldr(noto_repo, cldr_repo, update=False, cldr_tag=''): """Copy needed directories/files from cldr_repo to noto_repo/third_party/cldr.""" noto_repo = os.path.abspath(noto_repo) cldr_repo = os.path.abspath(cldr_repo) noto_cldr = os.path.join(noto_repo, 'third_party/cldr') tool_utils.check_dir_exists(noto_cldr) tool_utils.check_dir_exists(cldr_repo) if not tool_utils.git_is_clean(noto_repo): print 'Please fix' return if update: tool_utils.svn_update(cldr_repo) # get version of cldr. Unfortunately, this doesn't know about tags. cldr_version = tool_utils.svn_get_version(cldr_repo) # prepare and create README.third_party readme_text = string.Template(README_TEMPLATE).substitute(version=cldr_version, tag=cldr_tag) with open(os.path.join(noto_cldr, 'README.third_party'), 'w') as f: f.write(readme_text) # remove/replace directories for subdir in CLDR_SUBDIRS: src = os.path.join(cldr_repo, subdir) dst = os.path.join(noto_cldr, subdir) print 'replacing directory %s...' % subdir shutil.rmtree(dst) shutil.copytree(src, dst) # replace files for f in CLDR_FILES: print 'replacing file %s...' % f src = os.path.join(cldr_repo, f) dst = os.path.join(noto_cldr, f) shutil.copy(src, dst) # stage changes in cldr dir tool_utils.git_add_all(noto_cldr) # print commit message tag_string = (' tag %s' % cldr_tag) if cldr_tag else '' print 'Update CLDR data to SVN r%s%s.' % (cldr_version, tag_string) def main(): default_noto = notoconfig.values.get('noto') default_cldr = notoconfig.values.get('cldr') parser = argparse.ArgumentParser() parser.add_argument('--cldr', help='directory of local cldr svn repo (default %s)' % default_cldr, default=default_cldr) parser.add_argument('--update_cldr', help='update cldr before running', action='store_true') parser.add_argument('--cldr_tag', help='tag name to use for cldr (default empty)', default='') parser.add_argument('--noto', help='directory of local noto git repo (default %s)' % default_noto, default=default_noto) parser.add_argument('--branch', help='confirm current branch of noto git repo') args = parser.parse_args() if not args.cldr or not args.noto: print "Missing either or both of cldr and noto locations." return if args.branch: cur_branch = tool_utils.git_get_branch(args.noto) if cur_branch != args.branch: print "Expected branch '%s' but %s is in branch '%s'." % (args.branch, args.noto, cur_branch) return update_cldr(args.noto, args.cldr, args.update_cldr, args.cldr_tag) if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/nototools/update_udhr_samples.py000077500000000000000000000770441316231664500275450ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright 2015 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Grab Universal Declaration of Human Rights data from unicode.org/udhr, extract the text of Article 1 where it seems ok, and generate text files using the bcp47 name (including script) for the language of that sample.""" import argparse import codecs import collections import datetime import difflib import generate_website_data import os import re import shutil import unicode_data import urllib import xml.etree.ElementTree as ET import zipfile from nototools import cldr_data from nototools import tool_utils DIR_URL = 'http://unicode.org/udhr/d' UDHR_XML_ZIP_NAME = 'udhr_xml.zip' UDHR_XML_ZIP_URL = 'http://unicode.org/udhr/assemblies/' + UDHR_XML_ZIP_NAME def fetch_udhr(fetch_dir): """Fetch UDHR xml bundle from unicode.org to fetch_dir.""" fetch_dir = tool_utils.ensure_dir_exists(fetch_dir) dstfile = os.path.join(fetch_dir, UDHR_XML_ZIP_NAME) result = urllib.urlretrieve(UDHR_XML_ZIP_URL, dstfile) print 'Fetched: ' + result[0] def update_udhr(udhr_dir, fetch_dir, in_repo): """Delete udhr_dir and rebuild with files extracted from udhr_xml.zip in fetch_dir. Stage if udhr_dir is in the repo.""" zippath = os.path.join(fetch_dir, UDHR_XML_ZIP_NAME) tool_utils.check_file_exists(zippath) if in_repo and os.path.isdir(udhr_dir) and not tool_utils.git_is_clean(udhr_dir): raise ValueError('Please clean %s.' % udhr_dir) if os.path.isdir(udhr_dir): shutil.rmtree(udhr_dir) os.makedirs(udhr_dir) tool_utils.zip_extract_with_timestamp(zippath, udhr_dir) # dos line endings, sheesh tool_utils.dos2unix(udhr_dir, ['*.xml', '*.rnc', '*.rng']) if in_repo: tool_utils.git_add_all(udhr_dir) date = datetime.datetime.now().strftime('%Y-%m-%d') dst = 'in %s ' % udhr_dir if not in_repo else '' print 'Update UDHR files %sfrom %s as of %s.' % (dst, fetch_dir, date) def parse_index(src_dir): """Parse the index.xml file in src_dir and return a map from bcp to a set of file codes, and a map from file code to ohchr code. Skip files at stages 1 (missing) or 2 (not started). Stage 3 files have article 1, which is what we want. Stage 4 and 5 are ok, the vast majority are unreviewed (4). In some cases more than one file is mapped to the same bcp47 code, this gets dealt with in fix_index.""" tree = ET.parse(os.path.join(src_dir, 'index.xml')) bcp_to_codes = collections.defaultdict(set) code_to_ohchr = {} for e in tree.getroot().iter('udhr'): s = int(e.attrib.get('stage')) if s < 3: continue code = e.attrib.get('f') bcp = e.attrib.get('bcp47') if not bcp: # don't know what to do with this, maybe we could supply a mapping. print 'no bcp for %s' % code continue script = e.attrib.get('iso15924') if script: # the bcp codes are minimized, and include scripts only if they are # not the default (for some version of default), however they will # include variants. # if the script code is not present in the bcp code, patch it in # after the lang. script = '-' + script if bcp.find(script) == -1: ix = bcp.find('-') if ix == -1: bcp += script else: bcp = bcp[:ix] + script + bcp[ix:] ohchr = e.attrib.get('ohchr') bcp_to_codes[bcp].add(code) # we use the ohchr code to identify an attribution if ohchr: code_to_ohchr[code] = ohchr return bcp_to_codes, code_to_ohchr # These handle cases in which the unicode udhr data has multiple files with the # same bcp47 code. # # In some cases, we pick just the one code to use, more or less arbitrarily. # In other cases, we use multiple codes by adding a region or variant tag to the # shared bcp47 code. # # This map contains all the bcp47 codes that we expect udhr assigns to multple # files. For each file we either assign a code, or None if we don't use that # file. # # Possible errors are: # 1) udhr has multiple files for a code, but we don't list the code. # 2) udhr has multiple files for a code, but we have a different set of files # (in which case we might have ones they don't have, and they might have ones # we don't have) # 3) udhr has a single file for a code, but we list the code # # We also need to make sure we don't assign a new code that udhr already uses. BCP_FIXES = { 'acu-Latn': { 'acu': 'acu-Latn', 'acu_1': None, }, 'ak': { 'ak_asante': 'ak', 'ak_fante': 'ak-fante', }, 'chr-Cher': { 'chr_cased': 'chr-Cher-cased', 'chr_uppercase': 'chr-Cher-monocase', }, 'cjk-Latn': { 'cjk': 'cjk-Latn', 'cjk_AO': 'cjk-Latn-AO', }, 'ht-Latn': { 'hat_popular': 'ht-Latn-popular', 'hat_kreyol': 'ht-Latn-kreyol', }, 'hus-Latn': { 'hus': 'hus-Latn', 'hva': None, 'hsf': None, }, 'kg-Latn': { 'kng': 'kg-Latn', 'kng_AO': 'kg-Latn-AO', }, 'kmb-Latn': { '009': None, 'kmb': 'kmb-Latn', }, 'la-Latn': { 'lat': 'la-Latn', 'lat_1': None, }, 'ln-Latn': { 'lin_tones': 'ln-Latn', 'lin': None, }, 'ny-Latn': { 'nya_chinyanja': 'ny-Latn-chinyan', # max 8 chars in bcp47 'nya_chechewa': 'ny-Latn-chechewa', }, 'oc-Latn': { 'lnc': 'oc-Latn', 'auv': None, 'oci_1': None, 'oci_2': None, 'oci_3': None, 'oci_4': None, 'prv': None, }, 'pov-Latn': { '008': None, 'pov': 'pov-Latn', }, 'ro-Latn': { 'ron_2006': 'ro-Latn', 'ron_1993': None, 'ron_1953': None, }, 'rom-Latn': { 'rmn': 'rom-Latn', 'rmn_1': None, }, 'th-Thai': { 'tha': 'th-Thai', 'tha2': None, }, 'ts-Latn': { 'tso_MZ': 'ts-Latn-MZ', 'tso_ZW': 'ts-Latn-ZW', }, 'umb-Latn': { '011': None, 'umb': 'umb-Latn', }, 'ur-Arab': { 'urd': 'ur-Arab', 'urd_2': None, }, } def fix_index(bcp_to_codes): """Take a mapping from bcp47 to a set of file codes, and select the mappings we want using a whitelist. We return a mapping from one bcp47 code to one file code. We use this opportunity to validate the whitelist, and if there are any errors, we fail once we're finished.""" errors = [] used_fixes = set() result = {} for k in sorted(bcp_to_codes): if k == 'und' or k.startswith('und-'): # we don't handle undefined languages continue v = bcp_to_codes[k] if len(v) == 1: udhr_code = next(iter(v)) if k in result: errors.append('%s: udhr assigns %s but we already applied %' % ( k, udhr_code, result[k])) continue if k in BCP_FIXES: errors.append( '%s: udhr assigns %s but we have fixes %s' % ( k, result[k], ', '.join(BCP_FIXES[k].keys))) continue # normal case here result[k] = next(iter(v)) continue if k not in BCP_FIXES: errors.append( '%s: no fixes for udhr multiple codes %s' % ( k, ', '.join(sorted(v)))) continue fixes = BCP_FIXES[k] fixes_keys = set(fixes.keys()); unused_fixes = fixes_keys - v unknown_codes = v - fixes_keys if unused_fixes: errors.append( '%s: unused fixes %s' % ( k, ', '.join(sorted(unused_fixes)))) if unknown_codes: errors.append( '%s: unknown codes %s' % ( k, ', '.join(sorted(unknown_codes)))) if unused_fixes or unknown_codes: continue # apply all of our fixes for code, new_bcp in sorted(fixes.items()): if not new_bcp: continue if new_bcp in result: errors.append( '%s: fix defines %s as %s but already assigned %s' % ( k, code, new_bcp, result[new_bcp])) continue # normal fix result[new_bcp] = code if errors: print 'fix_index had %d errors:' % len(errors) for e in errors: print ' ', e raise Exception('correct the fixes whitelist') return result # The likely script data doesn't always match the samples, so we override it # here. Probably should always get the samples first and apply the script # later, but for now we just check after the fact. CODE_TO_BCP = { 'evn': 'evn-Cyrl', 'ojb': 'oj-Cans'} def add_likely_scripts(bcp_to_code): """Add script subtags where they are not present in the bcp code. If we don't know the script""" result= {} for bcp, code in bcp_to_code.iteritems(): if code in CODE_TO_BCP: new_bcp = CODE_TO_BCP[code] else: new_bcp = bcp parts = bcp.split('-') try: script = generate_website_data.find_likely_script(parts[0]) if len(parts) == 1: new_bcp = '%s-%s' % (bcp, script) elif len(parts[1]) != 4 or parts[1].isdigit(): # assume a region or variant. Some 4-char values are years, e.g. '1996' new_bcp = '%s-%s-%s' % (parts[0], script, '-'.join(parts[1:])) # otherwise, we assume the 4-char value is a script, and leave it alone. except KeyError: # if we can't provide a script, it's no use for a script sample, so exclude it print 'no likely subtag (script) data for %s, excluding' % parts[0] continue result[new_bcp] = code return result # These have been fixed/changed in the noto repo. We do not want to replace them # with the UDHR samples, which (as of now, anyway) do not reflect these # improvements. Our th-Thai is a more colloquial translation than the formal one # in the UDHR repo. EXCLUDE_BCP = frozenset([ 'fa-Arab', 'ar-Arab', 'th-Thai']) # The data for these is bad. The kwi.xml has no article 1 text (only '[?]') # and the cbi.xml article 1 text has '. mitya, tsenr)1in ' in it, which just looks # broken. EXCLUDE_CODES = frozenset([ 'kwi', 'cbi']) def filter_bcp_to_code(bcp_to_code): """Exclude entries for samples improved in noto/sample_texts and for bad samples.""" return {k: v for k, v in bcp_to_code.iteritems() if k not in EXCLUDE_BCP and v not in EXCLUDE_CODES} # Pick a default sample to use when only lang and script are provided. OPTION_MAP = { 'ak-Latn': 'ak-Latn-asante', 'chr-Cher': 'chr-Cher-cased', 'de-Latn': 'de-Latn-1996', 'el-Grek': 'el-Grek-monoton', 'ha-Latn': 'ha-Latn-NG', 'ht-Latn': 'ht-Latn-kreyol', 'ny-Latn': 'ny-Latn-chechewa', 'pt-Latn': 'pt-Latn-BR', 'ts-Latn': 'ts-Latn-MZ', # arbitrarily select Mozambque 'tw-Latn': 'tw-Latn-akuapem', # 'prestige' dialect according to wikipedia } def add_default_lang_script(bcp_to_code_attrib_sample): """When we query this data, typically we have only language and script. Some of the bcp codes have variants or regions as well, and in particular sometimes none of these has just a language and script. Select one of these to be used for that, and update the map.""" errors = [] options = collections.defaultdict(set) long_keys = {} for key in bcp_to_code_attrib_sample: tags = key.split('-') if len(tags) > 2: long_keys[key] = tags for key in sorted(long_keys): tags = long_keys[key] lang_scr = tags[0] + '-' + tags[1] options[lang_scr].add(key) for lang_scr in sorted(options): if lang_scr in bcp_to_code_attrib_sample: print '%s exists with variants %s' % ( lang_scr, ', '.join(sorted(options[lang_scr]))) del options[lang_scr] for lang_scr in sorted(options): print '%s options: %s' % (lang_scr, options[lang_scr]) if not lang_scr in OPTION_MAP: errors.append('%s missing from option map' % lang_scr) elif not OPTION_MAP[lang_scr] in options[lang_scr]: errors.append('%s selected option for %s not available' % ( lang_scr, OPTION_MAP[lang_scr])) else: alias = OPTION_MAP[lang_scr] print 'adding %s (from %s)' % (lang_scr, alias) bcp_to_code_attrib_sample[lang_scr] = bcp_to_code_attrib_sample[alias] if errors: print 'add_default_lang_script encountered %d errors:' % len(errors) for e in errors: print ' ', e raise Exception('oops') def get_code_to_attrib(src_dir): code_to_attrib = {} code_file = 'attributions.tsv' with open(os.path.join(src_dir, code_file)) as f: for line in f.readlines(): line = line.strip() if not line or line.startswith('#'): continue code, attrib_key, lang, attrib = line.split('\t') code_to_attrib[code] = attrib_key return code_to_attrib def get_bcp_to_code_attrib_sample(src_dir, ohchr_dir): """Return a mapping from bcp47 to code (for debugging), attribution, and sample. The process is: 1) parse the index.xml file to determine a mapping from bcp47 to code. the bcp47 code has at least lang and script, and perhaps region/variant. Multiple codes might share the same bcp47 code. 2) Use a whitelist to fix cases where a bcp47 code maps to multiple codes, either by selecting one code, or assigning a separate bcp47 value to other codes. 3) Load samples for each bcp47 code using article 1 from the file identified by the code. If there is no article 1, skip that bcp47 code. 4) Do more checking on the samples to make sure they look legit and in particular contain only the scripts we expect them to have based on the script code in the bcp47 code. 5) Add an attribution based on the code and the attributions file. 6) Find cases where all the bcp47's sharing a lang and script have regions and/or variants, and select one of these to assign to the lang_script bcp47 code.""" bcp_to_codes, code_to_ohchr = parse_index(src_dir) bcp_to_code = fix_index(bcp_to_codes) bcp_to_sample = get_bcp_to_sample(src_dir, bcp_to_code) check_bcp_to_sample(bcp_to_sample) code_to_attrib = get_code_to_attrib(ohchr_dir) bcp_to_code_attrib_sample = {} for bcp in bcp_to_sample: code = bcp_to_code[bcp] ohchr = code_to_ohchr.get(code) attr = code_to_attrib.get(ohchr) if not attr: attr = 'none' print '%s (%s) not in ohchr attribution data' % (code, ohchr) sample = bcp_to_sample[bcp] bcp_to_code_attrib_sample[bcp] = (code, attr, sample) add_default_lang_script(bcp_to_code_attrib_sample) return bcp_to_code_attrib_sample def print_bcp_to_code_attrib_sample(bcp_to_code_attrib_sample): print 'index size: %s' % len(bcp_to_code_attrib_sample) for bcp, (code, attrib, sample) in sorted( bcp_to_code_attrib_sample.iteritems()): print '%s: %s, %s\n "%s"' % (bcp, code, attrib, sample) def extract_para(src_path): """Extract the text of article 1 from the sample, or None if we can't find it.""" tree = ET.parse(src_path) root = tree.getroot() ns = {'udhr': 'http://www.unhchr.ch/udhr'} article = root.find('udhr:article[@number="1"]', ns) if article is None: # file kjh.xml is damaged, arrgh. Cyrillic small 'ie' looks just like 'e', and # the 'number' attribute is written with the Cyrillic e! article = root.find(u'udhr:article[@numb\u0435r="1"]', ns) if article is not None: text = '\n'.join([para.text for para in article.findall('udhr:para', ns)]) return text.strip() + '\n' return None def fix_sample(sample, bcp): """Fix samples that have known fixable issues.""" new_sample = None if bcp == 'zh-Hans': new_sample = sample.replace(u',', u'\uff0c') elif bcp == 'hu-Latn': new_sample = sample.replace(u'Minden.', u'Minden') if not new_sample: return sample if new_sample == sample: print 'sample for %s was not changed by fix' % bcp else: print 'fixed sample for %s' % bcp return new_sample def get_sample_for_code(udhr_dir, code): """Get a sample named for code.""" src_file = 'udhr_%s.xml' % code src_path = os.path.join(udhr_dir, src_file) sample = extract_para(src_path) if not sample: print 'unable to get sample from %s' % src_file return None return sample def get_bcp_to_sample(src_dir, bcp_to_code): """Return a map from bcp to sample, for codes that have a sample.""" bcp_to_sample = {} for bcp in sorted(bcp_to_code): code = bcp_to_code[bcp] sample = get_sample_for_code(src_dir, code) if not sample: print 'bcp %s: no sample found (code %s)' % (bcp, code) else: bcp_to_sample[bcp] = sample return bcp_to_sample bcp_script_re = re.compile(r'^(?:[A-Z][a-z]{3}|\d{3})$') def get_bcp_script(bcp): """Return the script portion of the bcp tag if it exists, or None.""" parts = bcp.split('-'); if len(parts) == 1: return None return parts[1] if bcp_script_re.match(parts[1]) else None def check_bcp_sample(bcp, sample): """Return error msg if fails, or 'OK'.""" def info_str(script_data): v = {data[0]: script for script, data in script_data.items()} return ', '.join( '%2d: %s' % tup for tup in sorted(v.items(), reverse=True)) def info_data(bad_scripts, script_data): errs = [] for s in sorted(bad_scripts): count, chars = script_data[s] errs.append('%s (%d) %s' % ( s, count, ','.join('%04x (%s)' % (ord(cp), cp) for cp in sorted(chars)))) return '; '.join(errs) script_data = get_script_histogram(sample) if len(sample) < 5: return 'bcp %s: sample too short (%d): %s' % ( bcp, len(sample), info_str(script_data)) script = get_bcp_script(bcp) # can include non-unicode scripts like Jpan if not script: # formerly we were going to generate a script based on the sample if we # didn't alredy have one, but at the moment all the samples include a script # in index.xml. raise Exception('no script for %s' % bcp) required, accepted = accept_scripts(script) # unicode scripts allowed = set(['Zyyy']) # common is ok if required: allowed |= required if accepted: allowed |= accepted if required: if required & frozenset(script_data.keys()) != required: return 'bcp %s: required script %s but had (%s)' % ( bcp, ', '.join(sorted(required)), info_str(script_data)) elif not accepted: # my problem raise Exception('Script %s has neither required nor accepted' % script) disallowed = set(script_data.keys()) - allowed if disallowed: return 'bcp %s: script(s) {%s} not in allowed {%s}, %s' % ( bcp, ', '.join(sorted(disallowed)), ', '.join(sorted(allowed)), info_data(disallowed, script_data)) # ok, the sample passes. return 'OK' def check_bcp_to_sample(bcp_to_sample): """For each bcp/sample pair, check the sample script histogram. If anything looks funny (mismatching scripts, bcp script doesn't match histogram), delete the mapping, and if there are any rejects, at the end report them.""" errors = [] for bcp in sorted(bcp_to_sample): sample = bcp_to_sample[bcp] result = check_bcp_sample(bcp, sample) if result != 'OK': errors.append(result) del bcp_to_sample[bcp] if errors: print 'found %d errors in samples' % len(errors) for e in errors: print ' ', e def update_samples( sample_dir, udhr_dir, bcp_to_code_attrib_sample, in_repo, no_stage): """Create samples in sample_dir based on the bcp to c_a_s map. Stage if sample_dir is in the repo. If sample_dir is in the repo, don't overwrite samples whose most recent log entry does not start with 'Updated by tool'.""" tool_utils.check_dir_exists(udhr_dir) if (in_repo and not no_stage and os.path.isdir(sample_dir) and not tool_utils.git_is_clean(sample_dir)): raise ValueError('Please clean %s.' % sample_dir) if in_repo: repo, subdir = os.path.split(sample_dir) tool_samples = frozenset(tool_utils.get_tool_generated(repo, subdir)) print 'allowing overwrite of %d files:\n %s' % ( len(tool_samples), ', '.join(sorted(tool_samples))) comments = [ '# Attributions for sample excerpts:', '# original - in the public domain, no attribution', '# UN - UN, OHCHR, or affiliate, attribute to UN', '# other - not a UN translation', '# none - not on ohchr, not a UN translation' ] sample_attrib_list = [] sample_dir = tool_utils.ensure_dir_exists(sample_dir) count = 0 for bcp, (code, attrib, sample) in bcp_to_code_attrib_sample.iteritems(): dst_file = '%s_udhr.txt' % bcp dst_path = os.path.join(sample_dir, dst_file) if in_repo and os.path.isfile(dst_path) and dst_file not in tool_samples: print 'Not overwriting modified file %s' % dst_file else: with codecs.open(dst_path, 'w', 'utf8') as f: f.write(sample) count += 1 sample_attrib_list.append('%s: %s' % (dst_file, attrib)) print 'Created %d samples' % count # Some existing samples that we don't overwrite are not in # bcp_to_code_attrib_sample, so they're not listed. Readers of the # attributions.txt file will need to default these to 'none'. attrib_data = '\n'.join(comments + sorted(sample_attrib_list)) + '\n' with open(os.path.join(sample_dir, 'attributions.txt'), 'w') as f: f.write(attrib_data) if in_repo and not no_stage: tool_utils.git_add_all(sample_dir) date = datetime.datetime.now().strftime('%Y-%m-%d') dst = 'in %s ' % sample_dir if not in_repo else '' noto_ix = udhr_dir.find('nototools') src = udhr_dir if noto_ix == -1 else udhr_dir[noto_ix:] # prefix of this sample commit message indicates that these were # tool-generated print 'Updated by tool - sample files %sfrom %s as of %s.' % (dst, src, date) def get_scripts(text): """Return the set of scripts in this text. Excludes some common chars.""" # ignore these chars, we assume they are ok in any script exclusions = {0x00, 0x0A, 0x0D, 0x20, 0xA0, 0xFEFF} zyyy_chars = set() scripts = set() ustr = unicode(text, 'utf8') for cp in ustr: if ord(cp) in exclusions: continue script = unicode_data.script(cp) if script == 'Zyyy': # common/undetermined zyyy_chars.add(cp if cp < '\u00fe' else ord(cp)) elif not script == 'Zinh': # inherited scripts.add(script) return scripts, zyyy_chars def get_script_histogram(utext): """Return a map from script to character count + chars, excluding some common whitespace, and inherited characters. utext is a unicode string.""" exclusions = {0x00, 0x0A, 0x0D, 0x20, 0xA0, 0xFEFF} result = {} for cp in utext: if ord(cp) in exclusions: continue script = unicode_data.script(cp) if script == 'Zinh': continue if script not in result: result[script] = [1, set([cp])] else: r = result[script] r[0] += 1 r[1].add(cp) return result # required, allowed sets SCRIPT_MAP = { 'Kore':(None, frozenset(['Hang'])), 'Jpan':(None, frozenset(['Hani', 'Hira'])), 'Hant':(None, frozenset(['Hani'])), 'Hans':(None, frozenset(['Hani']))} def accept_scripts(script): if script in SCRIPT_MAP: required, allowed = SCRIPT_MAP.get(script) else: required, allowed = frozenset([script]), None return required, allowed def test_sample_scripts(sample_dir): tested = 0 errors = 0 for filename in os.listdir(sample_dir): filepath = os.path.join(sample_dir, filename) if not (os.path.isfile(filepath) and filename.endswith('_udhr.txt')): continue tested += 1 with open(filepath, 'rb') as f: textbytes = f.read() scripts, zyyy = get_scripts(textbytes) bcp = filename[:-len('_udhr.txt')] # trim off extension expected_script = bcp.split('-')[1] required, allowed = accept_scripts(expected_script) if required and required - scripts: required_name = ', '.join(sorted([s for s in required])) scripts_name = ', '.join(sorted([s for s in scripts])) print '%s requires %s but contains only %s' % (filename, required_name, scripts_name) errors += 1 else: remainder = scripts if allowed: remainder -= allowed if required: remainder -= required if remainder: allowed_name = '' if not allowed else ', '.join( sorted([s for s in allowed])) scripts_name = ', '.join(sorted([s for s in scripts])) print '%s allows %s but contains %s' % (filename, allowed_name, scripts_name) errors += 1 print 'Found %d errors in %d files tested.' % (errors, tested) def compare_samples(src_dir, trg_dir, trg_to_src_name=lambda x: x, opts=None): """Report on differences between samples in source and target directories. The trg_to_src_name fn takes a target file name and returns the source file name to use in the comparisons.""" if not os.path.isdir(src_dir): print 'Original sample dir \'%s\' does not exist' % src_dir return if not os.path.isdir(trg_dir): print 'New sample dir \'%s\' does not exist' % trg_dir return print 'Base dir: %s' % src_dir print 'Target dir: %s' % trg_dir show_missing = opts and 'missing' in opts show_diffs = opts and 'diffs' in opts for trg_name in os.listdir(trg_dir): if trg_name == 'attributions.txt': continue trg_path = os.path.join(trg_dir, trg_name) if not (os.path.isfile(trg_path) and trg_name.endswith('.txt')): continue src_name = trg_to_src_name(trg_name) src_path = os.path.join(src_dir, src_name) if not os.path.exists(src_path): if show_missing: print 'source does not exist: %s' % src_name continue src_text = None dst_text = None with codecs.open(src_path, 'r', 'utf8') as f: src_text = f.read() with codecs.open(trg_path, 'r', 'utf8') as f: trg_text = f.read() if not src_text: print 'source text (%s) is empty' % k continue if not trg_text: print 'target text is empty: %s' % trg_path continue if src_text.find(trg_text) == -1: print 'target (%s) text not in source (%s)' % (src_name, trg_name) if show_diffs: # In scripts that use space for word break it might be better to compare # word by word, but this suffices. sm = difflib.SequenceMatcher(None, src_text, trg_text, autojunk=False) lines = [] for tag, i1, i2, j1, j2 in sm.get_opcodes(): if tag == 'delete': lines.append('[%s/]' % src_text[i1:i2]) elif tag == 'equal': lines.append(src_text[i1:i2]) elif tag == 'insert': lines.append('[/%s]' % trg_text[j1:j2]) else: lines.append('[%s/%s]' % (src_text[i1:i2], trg_text[j1:j2])) print ''.join(lines) def update_repo(repo_samples, new_samples): # Verify directory is clean. if not tool_utils.git_is_clean(new_samples): print 'Please fix.' return # Copy samples into git repo for filename in os.listdir(new_samples): filepath = os.path.join(new_samples, filename) if not os.path.isfile(filepath): continue shutil.copy2(filename, repo_samples) # Stage changes. tool_utils.git_add_all(new_samples) # Sample commit message. print 'Update UDHR sample data.' def main(): fetch = '/tmp/udhr/zip' udhr = '[tools]/third_party/udhr' samples = '[tools]/sample_texts' epilog = """The general flow is as follows: 1) ensure attributions.tsv is in [tools]/third_party/ohchr, using extract_ohchr_attributions.py. 2) use -uu to fetch and stage changes to [tools]/third_party/udhr 3) use -us --sample_dir=/tmp/foo to generate samples 4) use -c --sample_dir=/tmp/foo to compare the staged samples 5) tweak the mapping, use -m to see that it's doing what we want 6) use --us to generate the samples and stage them to [tools]/sample_texts This will not overwrite samples whose most recent log entry does not start with 'Updated by tool'. """ parser = argparse.ArgumentParser(epilog=epilog, formatter_class=argparse.RawTextHelpFormatter) parser.add_argument('--fetch_dir', help='directory into which to fetch xml.zip ' '(default %s)' % fetch, metavar='dir', default=fetch) parser.add_argument('--udhr_dir', help='location into which to unpack udhr files ' '(default %s)' % udhr, metavar='dir', default=udhr) parser.add_argument('--sample_dir', help='directory into which to extract samples ' '(default %s)' % samples, metavar='dir', default=samples) parser.add_argument('-f', '--fetch', help='fetch files from unicode.org/udhr to fetch dir', action='store_true') parser.add_argument('-uu', '--update_udhr', help='unpack from fetched files to clean udhr dir\n' '(will stage if in repo and not no_stage)', action='store_true') parser.add_argument('-us', '--update_sample', help='extract samples from udhr to sample dir, ' 'using the bcp to code mapping\n(will stage if in repo and not no_stage)', action='store_true') parser.add_argument('-m', '--mapping', help='print the bcp to code mapping generated from the ' 'udhr dir', action='store_true') parser.add_argument('-c', '--compare', help='compare sample changes from base dir ' '(default %s)\nto sample dir' % samples, metavar='base_dir', nargs='?', const=samples, dest='base_sample_dir') parser.add_argument('-co', '--compare_opts', help='options for comparison, provide any of:\n' ' \'missing\' to show samples files not in base, and/or\n' ' \'diffs\' to show full diffs of samples', metavar='opt', nargs='+') parser.add_argument('-ts', '--test_script', help='test script of samples in sample dir', action='store_true') parser.add_argument('-n', '--no_stage', help='do not stage changes in repo', action='store_true') args = parser.parse_args() # Check arguments if not (args.fetch or args.update_udhr or args.update_sample or args.mapping or args.base_sample_dir or args.test_script): print 'nothing to do.' return def fix_noto_prefix(argname): newval = tool_utils.resolve_path(getattr(args, argname)) setattr(args, argname, newval) if args.update_udhr or args.update_sample or args.mapping: fix_noto_prefix('udhr_dir') if args.update_sample or args.base_sample_dir or args.test_script: fix_noto_prefix('sample_dir') if args.base_sample_dir: fix_noto_prefix('base_sample_dir') if args.sample_dir == args.base_sample_dir: parser.error('Compare is no-op when base and target sample dirs are the same.') # Perform operations. Some might still fail despite arg checks. try: if args.fetch: fetch_udhr(args.fetch_dir) if args.update_udhr: in_repo = args.udhr_dir == tool_utils.resolve_path(udhr) update_udhr(args.udhr_dir, args.fetch_dir, in_repo and not args.no_stage) if args.update_sample or args.mapping: ohchr_dir = tool_utils.resolve_path('[tools]/third_party/ohchr') bcp_to_code_attrib_sample = get_bcp_to_code_attrib_sample( args.udhr_dir, ohchr_dir) if args.update_sample: in_repo = args.sample_dir == tool_utils.resolve_path(samples) update_samples( args.sample_dir, args.udhr_dir, bcp_to_code_attrib_sample, in_repo, args.no_stage) if args.mapping: print_bcp_to_code_attrib(bcp_to_code_attrib) if args.base_sample_dir: compare_samples( args.base_sample_dir, args.sample_dir, opts=args.compare_opts) if args.test_script: test_sample_scripts(args.sample_dir) except ValueError as e: print 'Error:', e if __name__ == '__main__': main() nototools-2017-09-25-tooling-for-phase3-update/requirements.txt000066400000000000000000000001451316231664500243500ustar00rootroot00000000000000booleanOperations==0.7.0 defcon==0.3.1 fonttools==3.9.1 Pillow==4.0.0 pyclipper==1.0.6 ufoLib==2.0.0 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/000077500000000000000000000000001316231664500235745ustar00rootroot00000000000000nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ab-Cyrl_udhr.txt000066400000000000000000000004201316231664500266440ustar00rootroot00000000000000Дарбанзаалак ауаҩы дшоуп ихы дақәиҭны. Ауаа зегь зинлеи патулеи еиҟароуп. Урҭ ирымоуп ахшыҩи аламыси, дара дарагь аешьеи аешьеи реиҧш еизыҟазароуп. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ace-Latn_udhr.txt000066400000000000000000000002231316231664500270000ustar00rootroot00000000000000Bandum manusia lahee bebah merdeka deungon hak ngon martabat nyang sama. Ngon akai taseumikee, ngon atee tameurasa bandum geutanyoe lagee syedara. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/acu-Latn_udhr.txt000066400000000000000000000005401316231664500270220ustar00rootroot00000000000000Aints ainauti mash metek nuwanmaya akiinawaitji. Turasha angkan pengker pujusmi tusar akiinawaitji. Aintstikia mash ji nintijai paan nintimratnuitji, turasha pengker aa nu nekaatnuitji. Turasha pase aa nusha nekaatnuitji. Turasha ji pataachiri ainaujai pengker nintimtunisar pujaj ina nunisrik chikich ainauj aisha pengker nintimtunisar pujustinuitji. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ada-Latn_udhr.txt000066400000000000000000000003661316231664500270050ustar00rootroot00000000000000Adesahi tsuo ɔ, a bɔ mɛ nɛ nɔ fɛɛ nɔ e ye e he, nɛ nɔ tsuaa nɔsɔ ngɛ odehe si himi kɛ he blɔhi a blɔ fa mi. A bɔ mɛ kɛ nɔ́ se kɔmi kɛ he nule juɛmi, nɛ e hia kaa nɔ fɛɛ nɔ nɛ e na nyɛmi suɔmi kɛ ha nɔ tsuaa nɔ. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ady-Cyrl_udhr.txt000066400000000000000000000004521316231664500270440ustar00rootroot00000000000000ЦIыф пстэури шъхьэфитэу, ялъытэныгъэрэ яфэшъуашэхэмрэкIэ зэфэдэу къалъфы. Акъылрэ зэхэшIыкI гъуазэрэ яIэшъы, зыр зым зэкъош зэхашІэ азфагу дэлъэу зэфыщытынхэ фае. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/af-Latn_udhr.txt000066400000000000000000000002431316231664500266400ustar00rootroot00000000000000Alle menslike wesens word vry, met gelyke waardigheid en regte, gebore. Hulle het rede en gewete en behoort in die gees van broederskap teenoor mekaar op te tree. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/agr-Latn_udhr.txt000066400000000000000000000003741316231664500270300ustar00rootroot00000000000000Ashi aents aidauk agkan akinui, betek eme anentsa aentsmasa diyam atanmash, tuja aents anentaibau, aents dutikatasa wakej amu yupichu dutimainnum, tuja ni wakejamun takakush tikish bakushminnum, nuniak tikish aidaujaish shiig yatsuta anmamut ati tusa. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/aii-Syrc_udhr.txt000066400000000000000000000003231316231664500270350ustar00rootroot00000000000000ܟܠ ܒܪܢܫܐ ܒܪܝܠܗ ܚܐܪܐ ܘܒܪܒܪ ܓܘ ܐܝܩܪܐ ܘܙܕܩܐ. ܘܦܝܫܝܠܗ ܝܗܒܐ ܗܘܢܐ ܘܐܢܝܬ. ܒܘܕ ܕܐܗܐ ܓܫܩܬܝ ܥܠ ܐܚܪܢܐ ܓܪܓ ܗܘܝܐ ܒܚܕ ܪܘܚܐ ܕܐܚܢܘܬܐ. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ain-Jpan_chars.txt000066400000000000000000000007001316231664500271470ustar00rootroot00000000000000゠ ァ ア ィ イ ゥ ウ ェ エ ォ オ カ ガ キ ギ ク グ ケ ゲ コ ゴ サ ザ シ ジ ス ズ セ ゼ ソ ゾ タ ダ チ ヂ ッ ツ ヅ テ デ ト ド ナ ニ ヌ ネ ノ ハ バ パ ヒ ビ ピ フ ブ プ ヘ ベ ペ ホ ボ ポ マ ミ ム メ モ ャ ヤ ュ ユ ョ ヨ ラ リ ル レ ロ ヮ ワ ヰ ヱ ヲ ン ヴ ヵ ヶ ヷ ヸ ヹ ヺ ・ ー ヽ ヾ ヿ ㇰ ㇱ ㇲ ㇳ ㇴ ㇵ ㇶ ㇷ ㇸ ㇹ ㇺ ㇻ ㇼ ㇽ ㇾ ㇿ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ajg-Latn_udhr.txt000066400000000000000000000002701316231664500270130ustar00rootroot00000000000000Agbetɔwo pleŋu vanɔ gbɛmɛ ko vovoɖeka gbeswɛgbeswɛ, sɔto amɛnyinyi ko acɛwo gomɛ; wo xɔnɔ susunywin ko jimɛnywi so esexwe. Wo ɖo a wɛ nɔvi ɖaɖa wowo nɔnɔwo gbɔ. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ak-Latn-asante_udhr.txt000066400000000000000000000002111316231664500301110ustar00rootroot00000000000000Nnipa nyinaa yɛ pɛ. Na wɔde adwene ne nyansa na abɔ obiara. Ɛno nti, ɛsɛ sɛ obiara dɔ ne yɔnko, bu ne yɔnko, di ne yɔnko ni. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ak-Latn-fante_udhr.txt000066400000000000000000000003021316231664500277340ustar00rootroot00000000000000Wɔwo adasa nyina to fahodzi mu, na hɔn nyina yɛ pɛr wɔ enyimnyam na ndzinoa mu. Wɔmaa hɔn nyina adwen na tsibowa, na ɔwɔ dɛ hɔn nkitahodzi mu ndzeyɛɛ da no edzi dɛ wɔyɛ enuanom. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ak-Latn_udhr.txt000066400000000000000000000002111316231664500266400ustar00rootroot00000000000000Nnipa nyinaa yɛ pɛ. Na wɔde adwene ne nyansa na abɔ obiara. Ɛno nti, ɛsɛ sɛ obiara dɔ ne yɔnko, bu ne yɔnko, di ne yɔnko ni. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/alt-Cyrl_udhr.txt000066400000000000000000000004461316231664500270520ustar00rootroot00000000000000Ончо улус ак‐јарыкка јайым ла теҥ‐тай тап‐эриктӱ туулат. Олор санааукаалу ла чек кӱӱн‐тапту болуп бӱткен ле бой‐бойын карындаш кирези кӧрӧр лӧ јӱрер учурлу. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/am-Ethi_udhr.txt000066400000000000000000000005401316231664500266420ustar00rootroot00000000000000የሰው ፡ ልጅ ፡ ሁሉ ፡ ሲወለድ ፡ ነጻና ፡ በክብርና ፡ በመብትም ፡ እኩልነት ፡ ያለው ፡ ነው ፡ የተፈፕሮ ፡ የማስተዋልና ፡ ሕሊናው ፡ ስላለው ፡ አንዱ ፡ ሌላውን ፡ በወንድማማችነት ፡ መንፍስ ፡ መመልከት ፡ የገባዋል ። nototools-2017-09-25-tooling-for-phase3-update/sample_texts/amc-Latn_udhr.txt000066400000000000000000000004541316231664500270160ustar00rootroot00000000000000Tzovan jato jumahaito hinaayamanonmun vacunoxcanquihnucanpu. Tzovan jato zinaayamanonmun vacunoxcanquihnucanpu. Jonitzan derechocavizyahtoxrivimun vacunoxcanquihqui. Quiyoovinin shinanquin hiromaquin jaucuzahavorahquiqui shinantimunhcanquihqui. Vacurazixquicavizhi quiyoovinixjatimunhcanquihnucanpu. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ame-Latn_udhr.txt000066400000000000000000000007451316231664500270230ustar00rootroot00000000000000Allohueney ñeñtey arromñatey att̃o ye'ñalletyesa arr patsro e'ñe att̃ecma cohuen yesherb̃a'yen. Ñam̃a yechyen allpon derechos att̃och e'ñech cohueno'tsa'yeney arr patsro. Ñam̃a allohuen att̃ecma yechyen alloch yoct̃ape' chyen cohuen ñam̃a yeñotyen yeyoc̈hro ñeñt ̃e'ne pocte' enten acheñenesha' ñam̃a ñeñt ̃ama pocteye' enteneto. Yeñoteñ añ poctetsa e'ñe yemo'nasheñ yep̃annena ama't ora allohuen allpon acheñenesha' ñeñt ̃añe patsro'tsa'yeney. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ami-Latn_udhr.txt000066400000000000000000000002231316231664500270160ustar00rootroot00000000000000Chiyu mahufuchay tu tamlaw, maemin pingdeng ichunyan a kngli. Iraay chaira lishing a naay a naay a harateng, pimaulahsha u harateng nu kaka shafa. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/amr-Latn_udhr.txt000066400000000000000000000004451316231664500270350ustar00rootroot00000000000000Aya'da aratbut katepi' eka'ta' on'pakpo ka'dik o̱'ne. Nog aratbut huadak o̱'nepo ko̱nigti opudo̱mey huadak mo'e̱. Aya'da huadak eka' nopoe̱'dik o̱'ne kenpa'ti dakhuea' eka' nopoe̱'dik o̱'ne kenpa'ti ko̱nig huama'buytaj o 'tihuapokika' ko̱nigti nogo̱meytaj tihuapokika 'dik o̱'ne. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ar-Arab_udhr.txt000066400000000000000000000003311316231664500266210ustar00rootroot00000000000000يولد جميع الناس أحرارًا متساوين في الكرامة و الحقوق. و قد وهبوا عقلًا و ضميرًا و عليهم أن يعامل بعضهم بعضًا بروح الإخاء. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/arl-Latn_udhr.txt000066400000000000000000000003451316231664500270330ustar00rootroot00000000000000Pueyano pa quishacari, puetunu pajaniyajanaa mariyata miishiya maninia, maja sooshiya tamonu. Puetunu pueyajanaari niishitiajaraca, jiuujiaaracanio pueyacua pa taraajenura. Naarate maninia pa jiyanootioore juhua pa tapueyocuaca. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/arn-Latn_udhr.txt000066400000000000000000000002241316231664500270310ustar00rootroot00000000000000Kom pu mogence kisuzuam mvlekey, kom cegeygvn, logkogeygvn ka piwkegeygvn, nieygvn kimvn fey mew mvley tañi yamniewael ka epuñpvle kejuwael egvn. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ast-Latn_udhr.txt000066400000000000000000000002471316231664500270450ustar00rootroot00000000000000Tolos seres humanos nacen llibres y iguales en dignidá y drechos y, pola mor de la razón y la conciencia de so, han comportase hermaniblemente los unos colos otros. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/attributions.txt000066400000000000000000000240631316231664500270710ustar00rootroot00000000000000# Attributions for sample excerpts: # original - in the public domain, no attribution # UN - UN, OHCHR, or affiliate, attribute to UN # other - not a UN translation # none - not on ohchr, not a UN translation ab-Cyrl_udhr.txt: UN ace-Latn_udhr.txt: other acu-Latn_udhr.txt: other ada-Latn_udhr.txt: UN af-Latn_udhr.txt: UN agr-Latn_udhr.txt: other aii-Syrc_udhr.txt: other ajg-Latn_udhr.txt: other alt-Cyrl_udhr.txt: UN am-Ethi_udhr.txt: other amc-Latn_udhr.txt: other ame-Latn_udhr.txt: other ami-Latn_udhr.txt: none amr-Latn_udhr.txt: other ar-Arab_udhr.txt: original arl-Latn_udhr.txt: other arn-Latn_udhr.txt: UN ast-Latn_udhr.txt: other auc-Latn_udhr.txt: UN ay-Latn_udhr.txt: other az-Cyrl_udhr.txt: UN az-Latn_udhr.txt: UN ban-Latn_udhr.txt: UN bax-Latn_udhr.txt: none bba-Latn_udhr.txt: other bci-Latn_udhr.txt: other be-Cyrl_udhr.txt: UN bem-Latn_udhr.txt: UN bfa-Latn_udhr.txt: UN bg-Cyrl_udhr.txt: UN bho-Deva_udhr.txt: UN bi-Latn_udhr.txt: other bik-Latn_udhr.txt: other bin-Latn_udhr.txt: UN blt-Tavt_udhr.txt: none bm-Latn_udhr.txt: other bn-Beng_udhr.txt: UN bo-Tibt_udhr.txt: other boa-Latn_udhr.txt: other br-Latn_udhr.txt: other bs-Cyrl_udhr.txt: UN bs-Latn_udhr.txt: UN buc-Latn_udhr.txt: other bug-Latn_udhr.txt: UN bum-Latn_udhr.txt: UN ca-Latn_udhr.txt: UN cab-Latn_udhr.txt: other cak-Latn_udhr.txt: other cbi-Latn_udhr.txt: UN cbr-Latn_udhr.txt: other cbs-Latn_udhr.txt: other cbt-Latn_udhr.txt: other cbu-Latn_udhr.txt: other ccp-Cakm_udhr.txt: none ceb-Latn_udhr.txt: UN cfm-Latn_udhr.txt: UN ch-Latn_udhr.txt: UN chj-Latn_udhr.txt: other chk-Latn_udhr.txt: UN chr-Cher-cased_udhr.txt: none chr-Cher-monocase_udhr.txt: none chr-Cher_udhr.txt: none cic-Latn_udhr.txt: other cjk-Latn-AO_udhr.txt: other cjk-Latn_udhr.txt: other cjs-Cyrl_udhr.txt: UN cjy-Hans_udhr.txt: none cnh-Latn_udhr.txt: UN cni-Latn_udhr.txt: other co-Latn_udhr.txt: other cof-Latn_udhr.txt: UN cot-Latn_udhr.txt: other cpu-Latn_udhr.txt: other cri-Latn_udhr.txt: other crs-Latn_udhr.txt: other cs-Latn_udhr.txt: UN csa-Latn_udhr.txt: UN csw-Cans_udhr.txt: UN ctd-Latn_udhr.txt: UN cy-Latn_udhr.txt: UN da-Latn_udhr.txt: UN dag-Latn_udhr.txt: UN ddn-Latn_udhr.txt: other de-Latn-1901_udhr.txt: other de-Latn-1996_udhr.txt: none de-Latn_udhr.txt: none dga-Latn_udhr.txt: UN dip-Latn_udhr.txt: UN duu-Latn_udhr.txt: none dv-Thaa_udhr.txt: other dyo-Latn_udhr.txt: other dyu-Latn_udhr.txt: UN dz-Tibt_udhr.txt: UN ee-Latn_udhr.txt: UN el-Grek-monoton_udhr.txt: UN el-Grek-polyton_udhr.txt: none el-Grek_udhr.txt: UN emk-Latn_udhr.txt: other eml-Latn_udhr.txt: other en-Latn_udhr.txt: original eo-Latn_udhr.txt: other es-Latn_udhr.txt: original et-Latn_udhr.txt: other eu-Latn_udhr.txt: UN eve-Cyrl_udhr.txt: other evn-Cyrl_udhr.txt: UN fa-Arab-AF_udhr.txt: other fa-Arab_udhr.txt: UN fat-Latn_udhr.txt: UN fi-Latn_udhr.txt: UN fj-Latn_udhr.txt: UN fo-Latn_udhr.txt: UN fon-Latn_udhr.txt: other fr-Latn_udhr.txt: original fur-Latn_udhr.txt: other fuv-Latn_udhr.txt: other fy-Latn_udhr.txt: UN ga-Latn_udhr.txt: UN gaa-Latn_udhr.txt: UN gag-Latn_udhr.txt: other gan-Hans_udhr.txt: none gd-Latn_udhr.txt: other gjn-Latn_udhr.txt: UN gl-Latn_udhr.txt: UN gld-Cyrl_udhr.txt: UN gn-Latn_udhr.txt: other gu-Gujr_udhr.txt: UN guc-Latn_udhr.txt: other guu-Latn_udhr.txt: other gv-Latn_udhr.txt: none gyr-Latn_udhr.txt: other ha-Latn-NE_udhr.txt: other ha-Latn-NG_udhr.txt: other ha-Latn_udhr.txt: other hak-Hans_udhr.txt: none haw-Latn_udhr.txt: other he-Hebr_udhr.txt: UN hea-Latn_udhr.txt: UN hi-Deva_udhr.txt: UN hil-Latn_udhr.txt: UN hlt-Latn_udhr.txt: other hms-Latn_udhr.txt: UN hna-Latn_udhr.txt: other hni-Latn_udhr.txt: UN hnj-Latn_udhr.txt: UN hns-Latn_udhr.txt: other hr-Latn_udhr.txt: UN hsb-Latn_udhr.txt: UN ht-Latn-kreyol_udhr.txt: UN ht-Latn-popular_udhr.txt: UN ht-Latn_udhr.txt: UN hu-Latn_udhr.txt: UN hus-Latn_udhr.txt: UN huu-Latn_udhr.txt: other hy-Armn_udhr.txt: UN ia-Latn_udhr.txt: other ibb-Latn_udhr.txt: UN id-Latn_udhr.txt: UN ig-Latn_udhr.txt: other ii-Yiii_udhr.txt: UN ilo-Latn_udhr.txt: other io-Latn_udhr.txt: other is-Latn_udhr.txt: UN it-Latn_udhr.txt: UN iu-Cans_udhr.txt: UN ja-Jpan_udhr.txt: UN jiv-Latn_udhr.txt: UN jv-Latn_udhr.txt: UN ka-Geor_udhr.txt: other kbd-Cyrl_udhr.txt: other kbp-Latn_udhr.txt: UN kde-Latn_udhr.txt: UN kdh-Latn_udhr.txt: none kea-Latn_udhr.txt: other kek-Latn_udhr.txt: other kg-Latn-AO_udhr.txt: other kg-Latn_udhr.txt: UN kha-Latn_udhr.txt: other kjh-Cyrl_udhr.txt: UN kk-Cyrl_udhr.txt: UN kkh-Lana_udhr.txt: none kl-Latn_udhr.txt: UN km-Khmr_udhr.txt: other kmb-Latn_udhr.txt: UN kmr-Latn_udhr.txt: UN kn-Knda_udhr.txt: other knc-Latn_udhr.txt: UN ko-Hang_udhr.txt: UN koi-Cyrl_udhr.txt: UN koo-Latn_udhr.txt: other kpe-Latn_udhr.txt: other kqn-Latn_udhr.txt: UN kri-Latn_udhr.txt: other krl-Latn_udhr.txt: UN ktu-Latn_udhr.txt: none ku-Latn_udhr.txt: other ky-Cyrl_udhr.txt: UN la-Latn_udhr.txt: other lad-Latn_udhr.txt: other lb-Latn_udhr.txt: other lg-Latn_udhr.txt: other lia-Latn_udhr.txt: other lij-Latn_udhr.txt: other lld-Latn_udhr.txt: other ln-Latn_udhr.txt: none lns-Latn_udhr.txt: other lo-Laoo_udhr.txt: UN lob-Latn_udhr.txt: UN lot-Latn_udhr.txt: UN loz-Latn_udhr.txt: UN lt-Latn_udhr.txt: other lua-Latn_udhr.txt: other lue-Latn_udhr.txt: UN lun-Latn_udhr.txt: UN lus-Latn_udhr.txt: other lv-Latn_udhr.txt: other mad-Latn_udhr.txt: UN mag-Deva_udhr.txt: UN mai-Deva_udhr.txt: none mam-Latn_udhr.txt: other maz-Latn_udhr.txt: UN mcd-Latn_udhr.txt: other mcf-Latn_udhr.txt: other men-Latn_udhr.txt: other mg-Latn_udhr.txt: UN mh-Latn_udhr.txt: UN mi-Latn_udhr.txt: other mic-Latn_udhr.txt: UN min-Latn_udhr.txt: UN miq-Latn_udhr.txt: other mk-Cyrl_udhr.txt: other ml-Mlym_udhr.txt: UN mn-Cyrl_udhr.txt: other mnw-Mymr_udhr.txt: none mos-Latn_udhr.txt: other mr-Deva_udhr.txt: UN mt-Latn_udhr.txt: other mto-Latn_udhr.txt: other mxi-Latn_udhr.txt: other mxv-Latn_udhr.txt: UN my-Mymr_udhr.txt: UN mzi-Latn_udhr.txt: UN nah-Latn_udhr.txt: UN nan-Hans_udhr.txt: none nb-Latn_udhr.txt: UN nba-Latn_udhr.txt: UN nds-Latn_udhr.txt: other ng-Latn_udhr.txt: UN nio-Cyrl_udhr.txt: UN njo-Latn_udhr.txt: other nku-Latn_udhr.txt: UN nl-Latn_udhr.txt: UN nn-Latn_udhr.txt: other not-Latn_udhr.txt: other npi-Deva_udhr.txt: UN nr-Latn_udhr.txt: UN nso-Latn_udhr.txt: other nv-Latn_udhr.txt: other ny-Latn-chechewa_udhr.txt: other ny-Latn-chinyan_udhr.txt: UN ny-Latn_udhr.txt: other nym-Latn_udhr.txt: UN nyn-Latn_udhr.txt: other nzi-Latn_udhr.txt: UN oc-Latn_udhr.txt: other oj-Cans_udhr.txt: UN oki-Latn_udhr.txt: other om-Latn_udhr.txt: other orh-Latn_udhr.txt: none os-Cyrl_udhr.txt: other ote-Latn_udhr.txt: other pa-Guru_udhr.txt: UN pam-Latn_udhr.txt: other pap-Latn_udhr.txt: other pau-Latn_udhr.txt: UN pbb-Latn_udhr.txt: other pcd-Latn_udhr.txt: other pcm-Latn_udhr.txt: UN pis-Latn_udhr.txt: UN piu-Latn_udhr.txt: none pl-Latn_udhr.txt: UN pnb-Arab_udhr.txt: none pon-Latn_udhr.txt: UN pov-Latn_udhr.txt: other ppl-Latn_udhr.txt: UN prq-Latn_udhr.txt: other ps-Arab_udhr.txt: UN pt-Latn-BR_udhr.txt: none pt-Latn-PT_udhr.txt: UN pt-Latn_udhr.txt: none qu-Latn_udhr.txt: other quc-Latn_udhr.txt: other qug-Latn_udhr.txt: UN quh-Latn_udhr.txt: UN quy-Latn_udhr.txt: other quz-Latn_udhr.txt: other qva-Latn_udhr.txt: other qvc-Latn_udhr.txt: other qvh-Latn_udhr.txt: other qvm-Latn_udhr.txt: other qvn-Latn_udhr.txt: other qwh-Latn_udhr.txt: other qxn-Latn_udhr.txt: other qxu-Latn_udhr.txt: other rar-Latn_udhr.txt: other rm-Latn-puter_udhr.txt: none rm-Latn-rumgr_udhr.txt: other rm-Latn-surmiran_udhr.txt: none rm-Latn-sursilv_udhr.txt: none rm-Latn-sutsilv_udhr.txt: none rm-Latn-vallader_udhr.txt: none rm-Latn_udhr.txt: none rn-Latn_udhr.txt: other ro-Latn_udhr.txt: none rom-Latn_udhr.txt: none ru-Cyrl_udhr.txt: original rup-Latn_udhr.txt: other rw-Latn_udhr.txt: UN sa-Deva_udhr.txt: UN sah-Cyrl_udhr.txt: UN sc-Latn_udhr.txt: other sco-Latn_udhr.txt: other se-Latn_udhr.txt: other sey-Latn_udhr.txt: UN sg-Latn_udhr.txt: UN shk-Latn_udhr.txt: UN shn-Mymr_udhr.txt: UN shp-Latn_udhr.txt: other si-Sinh_udhr.txt: other sk-Latn_udhr.txt: UN skr-Arab_udhr.txt: other sl-Latn_udhr.txt: UN sm-Latn_udhr.txt: UN sn-Latn_udhr.txt: UN snk-Latn_udhr.txt: other snn-Latn_udhr.txt: UN so-Latn_udhr.txt: other sq-Latn_udhr.txt: UN sr-Cyrl_udhr.txt: UN sr-Latn_udhr.txt: UN srr-Latn_udhr.txt: UN ss-Latn_udhr.txt: UN st-Latn_udhr.txt: other su-Latn_udhr.txt: UN suk-Latn_udhr.txt: UN sus-Latn_udhr.txt: other sv-Latn_udhr.txt: UN sw-Latn_udhr.txt: UN swb-Latn_udhr.txt: other ta-Taml-LK_udhr.txt: none ta-Taml_udhr.txt: other taj-Deva_udhr.txt: other tbz-Latn_udhr.txt: other tca-Latn_udhr.txt: other tdt-Latn_udhr.txt: none te-Telu_udhr.txt: UN tem-Latn_udhr.txt: other tet-Latn_udhr.txt: other tg-Cyrl_udhr.txt: other th-Thai_udhr.txt: UN ti-Ethi_udhr.txt: other tiv-Latn_udhr.txt: UN tk-Cyrl_udhr.txt: other tk-Latn_udhr.txt: none tl-Latn_udhr.txt: UN tly-Latn_udhr.txt: other tn-Latn_udhr.txt: other to-Latn_udhr.txt: other tob-Latn_udhr.txt: UN toi-Latn_udhr.txt: UN toj-Latn_udhr.txt: UN top-Latn_udhr.txt: UN tpi-Latn_udhr.txt: other tr-Latn_udhr.txt: other ts-Latn-MZ_udhr.txt: other ts-Latn-ZW_udhr.txt: none ts-Latn_udhr.txt: other tsz-Latn_udhr.txt: UN tt-Cyrl_udhr.txt: other tw-Latn-akuapem_udhr.txt: other tw-Latn-asante_udhr.txt: other tw-Latn_udhr.txt: other ty-Latn_udhr.txt: other tyv-Cyrl_udhr.txt: UN tzh-Latn_udhr.txt: UN tzm-Latn_udhr.txt: other tzo-Latn_udhr.txt: UN ug-Arab_udhr.txt: UN ug-Latn_udhr.txt: none uk-Cyrl_udhr.txt: other umb-Latn_udhr.txt: UN ur-Arab_udhr.txt: UN ura-Latn_udhr.txt: other uzn-Cyrl_udhr.txt: UN uzn-Latn_udhr.txt: UN vai-Vaii_udhr.txt: other ve-Latn_udhr.txt: other vec-Latn_udhr.txt: none vep-Latn_udhr.txt: UN vi-Hani_udhr.txt: none vi-Latn_udhr.txt: UN vmw-Latn_udhr.txt: other wa-Latn_udhr.txt: other war-Latn_udhr.txt: other wo-Latn_udhr.txt: UN wuu-Hans_udhr.txt: none wwa-Latn_udhr.txt: other xh-Latn_udhr.txt: other xsm-Latn_udhr.txt: UN yad-Latn_udhr.txt: other yao-Latn_udhr.txt: UN yap-Latn_udhr.txt: UN yi-Hebr_udhr.txt: other yo-Latn_udhr.txt: other yua-Latn_udhr.txt: UN yue-Hani_udhr.txt: none za-Latn_udhr.txt: UN zam-Latn_udhr.txt: UN zdj-Latn_udhr.txt: none zgh-Tfng_udhr.txt: other zh-Hans_udhr.txt: original zh-Hant_udhr.txt: none zlm-Arab_udhr.txt: none zlm-Latn_udhr.txt: other zro-Latn_udhr.txt: UN ztu-Latn_udhr.txt: other zu-Latn_udhr.txt: other nototools-2017-09-25-tooling-for-phase3-update/sample_texts/auc-Latn_udhr.txt000066400000000000000000000002101316231664500270140ustar00rootroot00000000000000Tomamo waomo ekame wee anamay inani tomemo kewengi beye tomamo neemompa noynga impa aye anobay impa wadani inanite wakeki beye angampa. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ay-Latn_udhr.txt000066400000000000000000000002171316231664500266640ustar00rootroot00000000000000Taqpach jaqejh khuskat uñjatatäpjhewa munañapansa, lurañapansa, amuyasiñapansa, ukatwa jilani sullkanípjhaspas ukham uñjasipjhañapawa. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/az-Arab_udhr.txt000066400000000000000000000005011316231664500266300ustar00rootroot00000000000000بوتون اينسانلار حيثييت و حاقلار باخيميندان دنك (برابر) و اركين (آزاد) دوغولارلار. اوس (عقل) و اويات (ويجدان) ييهﺳﻴﺪيرلر و بير بيرلرينه قارشى قارداشليق روحو ايله داوراماليدرلار. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/az-Cyrl_udhr.txt000066400000000000000000000004711316231664500267020ustar00rootroot00000000000000Бүтүн инсанлар ләјагәт вә һүгугларына ҝөрә азад бәрабәр доғулурлар. Онларын шүурлары вә виҹданлары вар вә бир-бирләринә мүнасибәтдә гардашлыг руһунда давранмалыдырлар. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/az-Latn_udhr.txt000066400000000000000000000003041316231664500266620ustar00rootroot00000000000000Bütün insanlar ləyaqət və hüquqlarına görə azad bərabər doğulurlar. Onarın şüuralrı və vicdanları var və bir-birlərinə münasibətdə qardaşlıq runhunda davranmalıdırlar. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ban-Latn_udhr.txt000066400000000000000000000002661316231664500270170ustar00rootroot00000000000000Sami manusane sane nyruwadi wantah merdeka tur maduwe kautamaan lan hak-hak sane pateh. Sami kalugrain papineh lan idep tur mangdane pada masawitra melarapan semangat pakulawargaan. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/bax-Latn_udhr.txt000066400000000000000000000003721316231664500270270ustar00rootroot00000000000000Pe nâ mvé gú puen nyütu pô te mbe kú ghét ngam pua ngúenengúe mbe te wûme nsebe pua pa mféékêt. Pen â ntúm te mbe kú rem ngam pua fabshe ngam, a nshi njîr’ap ne yi nshâne ngétne nga shap pô te wupme pontâ. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/bba-Latn_udhr.txt000066400000000000000000000002141316231664500267740ustar00rootroot00000000000000Ba tɔmbu kpuro marawa ba tii mɔ, ba nɛ, girima ka saria sɔɔ. Ba ra bwisiku, ba dasabu mɔ, ma n weene ba n waasinɛ mɛrobisiru sɔɔ. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/bci-Latn_udhr.txt000066400000000000000000000002451316231664500270110ustar00rootroot00000000000000Sran mun be ngba, kɛ be wu be ɔ, be ngba be sɛ, fɔndi nun, sran-mmala nun. Be si akundanbu, be si su ɔ fata kɛ sran mun be tran'n, be tran aniaan nun tranlɛ. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/be-Cyrl_udhr.txt000066400000000000000000000004201316231664500266500ustar00rootroot00000000000000Усе людзi нараджаюцца свабоднымi i роўнымi ў сваёй годнасцi i правах. Яны надзелены розумам i сумленнем i павiнны ставiцца адзiн да аднаго ў духу брацтва. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/be-Latn_udhr.txt000066400000000000000000000002501316231664500266360ustar00rootroot00000000000000Usie ludzi naradžajucca svabodnymi i roŭnymi ŭ svajoj hodnasci i pravach. Jany nadzieleny rozumam i sumleńniem i pavinny stavicca adzin da adnaho ŭ duchu bractva. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/bem-Latn_udhr.txt000066400000000000000000000002441316231664500270160ustar00rootroot00000000000000Abantu bonse bafyalwa abalubuka nokulingana mu mucinshi nensambu. Balikwata amano nokutontonkanya, eico bafwile ukulacita ifintu ku banabo mu mutima wa bwananyina. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/bfa-Latn_udhr.txt000066400000000000000000000002431316231664500270020ustar00rootroot00000000000000Ŋutu liŋ a yuŋwe kana, jojo i toďiri ko ďekesi ko ti se tokitaki ko ‘börik ko mulökötyo lo toluŋaseran. Se a ďoka ko denet na kulya na’but ko narok. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/bg-Cyrl_udhr.txt000066400000000000000000000004101316231664500266510ustar00rootroot00000000000000Всички хора се раждат свободни и равни по достойнство и права. Tе са надарени с разум и съвест и следва да се отнасят помежду си в дух на братство. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/bho-Deva_udhr.txt000066400000000000000000000007431316231664500270100ustar00rootroot00000000000000सबहि लोकानि आजादे जम्मेला आओर ओखिनियो के बराबर सम्मान आओर अधिकार प्राप्त हवे। ओखिनियो के पास समझ-बूझ आओर अंत:करण के आवाज होखता आओर हुनको के दोसरा के साथ भाईचारा के बेवहार करे के होखला। nototools-2017-09-25-tooling-for-phase3-update/sample_texts/bi-Latn_udhr.txt000066400000000000000000000002251316231664500266440ustar00rootroot00000000000000Evri man mo woman i bon fri mo ikwol long respek mo ol raet. Oli gat risen mo tingting mo oli mas tritim wanwan long olgeta olsem ol brata mo sista. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/bik-Latn_udhr.txt000066400000000000000000000003151316231664500270170ustar00rootroot00000000000000An gabos na tawo ipinangaking may katalinkasan asin parantay sa dignidad asin derechos. Sinda gabos tinawan nin pag-isip asin conciencia kaya dapat na makipag-iriba sa lambang saro bilang mga magturugang. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/bin-Latn_udhr.txt000066400000000000000000000003211316231664500270170ustar00rootroot00000000000000Emwan ne agbon hia ne a biere, a bie iran noyan-egbe iran kevbe wee, umwon-mwen o ree etin hia ne o kheke iran khin. A ye ewaen kevbe ekhoe ne o maa wu iran, ne iran gha yin da egbe vbe orhion oghe eten-okpa. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/blt-Tavt_udhr.txt000066400000000000000000000006561316231664500270630ustar00rootroot00000000000000ꪹꪕꪸꪉ ꪀꪱ ꪋꪴ ꫛ ꪎꪲꪉ ꪮꪮꪀ ꪣꪱ ꪻꪠ ꪁꪷ ꪻꪬ ꪼꪒ ꪕꪳ ꪕꪱꪉ ꪀꪾꪚ ꪹꪋꪷꪉ ꪝꪸꪉ ꪕꪮꪥ ꪩꪾ ꫛ ꪶꪔꪙ ꪠꪴ - ꪋꪴ ꪬꪺ ꫛ ꪻꪠ ꪁꪷ ꪻꪬ ꪣꪲ ꪁꪫꪸꪙ ꪎꪱꪉ ꪶꪎꪣ ꪩꪺꪉ ꪹꪥꪸꪒ ꫛ ꪀꪾꪚ ꪹꪥꪸꪒ ꪻꪊ ꪚꪴꪙ ꪀꪾꪚ ꪼꪒ ꪹꪚꪷꪉ ꪒꪲ ꪀꪾꪚ ꪫꪸꪀ ꪭꪰꪀ ꪵꪝꪉ ꪹꪏꪉ ꪹꪭꪙ ꪒꪸꪫ. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/bm-Latn_udhr.txt000066400000000000000000000002301316231664500266440ustar00rootroot00000000000000Hadamaden bɛɛ danmakɛɲɛnen bɛ bange, danbe ni josira la. Hakili ni taasi b’u bɛɛ la, wa u ka kan ka badenɲasira de waleya u ni ɲɔgɔn cɛ. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/bn-Beng_udhr.txt000066400000000000000000000007051316231664500266310ustar00rootroot00000000000000সমস্ত মানুষ স্বাধীনভাবে সমান মর্যাদা এবং অধিকার নিয়ে জন্মগ্রহণ করে। তাঁদের বিবেক এবং বুদ্ধি আছে; সুতরাং সকলেরই একে অপরের প্রতি ভ্রাতৃত্বসুলভ মনোভাব নিয়ে আচরণ করা উচিত। nototools-2017-09-25-tooling-for-phase3-update/sample_texts/bo-Tibt_udhr.txt000066400000000000000000000014121316231664500266550ustar00rootroot00000000000000འགྲོ་བ་མིའི་རིགས་རྒྱུད་ཡོངས་ལ་སྐྱེས་ཙམ་ཉིད་ནས་ཆེ་མཐོངས་དང༌། ཐོབ་ཐངགི་རང་དབང་འདྲ་མཉམ་དུ་ཡོད་ལ། ཁོང་ཚོར་རང་བྱུང་གི་བློ་རྩལ་དང་བསམ་ཚུལ་བཟང་པོ་འདོན་པའི་འོས་བབས་ཀྱང་ཡོད། དེ་བཞིན་ཕན་ཚུན་གཅིག་གིས་གཅིག་ལ་བུ་སྤུན་གྱི་འདུ་ཤེས་འཛིན་པའི་བྱ་སྤྱོད་ཀྱང་ལག་ལེན་བསྟར་དགོས་པ་ཡིན༎ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/boa-Latn_udhr.txt000066400000000000000000000004201316231664500270100ustar00rootroot00000000000000Pámeere ííñújɨri meíjcyame tsá múhójɨ́sɨ́ pañé ɨ́cubáhrádú meíjcyáítyuróne. Pámeere tsahdúré imí meíjcyame mewájyújcatsíñe mépɨ́áábójcatsíiyá tsaatéké éhdɨ́Ȉ́válletúmé éhne múu mépañétúéné nahbémuma meíjcyadu. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/br-Latn_udhr.txt000066400000000000000000000002471316231664500266610ustar00rootroot00000000000000Dieub ha par en o dellezegezh hag o gwirioù eo ganet an holl dud. Poell ha skiant zo dezho ha dleout a reont bevañ an eil gant egile en ur spered a genvreudeuriezh. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/bs-Cyrl_udhr.txt000066400000000000000000000004521316231664500266730ustar00rootroot00000000000000Сва људска биђа рађају се слободна и једнака у достојанству и правима. Она су обдарена разумом и свијешђу и треба да једно према другоме поступају у духу братства. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/bs-Latn_udhr.txt000066400000000000000000000002511316231664500266550ustar00rootroot00000000000000Sva ljudska bića rađaju se slobodna i jednaka u dostojanstvu i pravima. Ona su obdarena razumom i sviješću i treba da jedno prema drugome postupaju u duhu bratstva. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/buc-Latn_udhr.txt000066400000000000000000000003111316231664500270170ustar00rootroot00000000000000Ɓinadamu djabi nitirahinyi an-nafasi, reu bokeu miraŋa amin’ni usheu ndreka haki. Reu teraka ndreka ãkili ndreka hikima, amin’ni zenyi, reu nikulazimu nisi tweraŋa nin-fihavaŋa reu sambi reu. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/bug-Latn_udhr.txt000066400000000000000000000003061316231664500270270ustar00rootroot00000000000000Sininna rupa tau ri jajiangngi rilinoe nappunnai manengngi riasengnge alebbireng . Nappunai riasengnge akkaleng, nappunai riasengnge ati marennni na sibole bolena pada sipakatau pada massalasureng. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/bum-Latn_udhr.txt000066400000000000000000000003631316231664500270400ustar00rootroot00000000000000Abiali bod bese, tege ai sesala, bene etie dzia a mis memvende y'enyiñ, dzom dzia etu fili nkóbó, fili ntsogan, fili mboan. Ve abiali te, mod ose ayem dze ene abe, dze ene mbeñ asu e mod mbog antoa ai mfi na enyiñ ewulu mezen mene sosoo. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ca-Latn_udhr.txt000066400000000000000000000002531316231664500266360ustar00rootroot00000000000000Tots els éssers humans neixen lliures i iguals en dignitat i en drets. Són dotats de raó i de consciència, i han de comportar-se fraternalment els uns amb els altres. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/cab-Latn_udhr.txt000066400000000000000000000002211316231664500267730ustar00rootroot00000000000000Sun gürigia nasíruati yuti lun, lidan úarani, lawiwanduní libágari kai le aubai labúsienra, gatu giñe lanagun lungua buidu hadan líbegu. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/cak-Latn_udhr.txt000066400000000000000000000003401316231664500270060ustar00rootroot00000000000000Konojel ri winaqi' kan kalaxib'en pe ri kolotajïk, ri junan kiq'ij, ri junan kejqalen, junan kich'ojib'al pa kik'aslen, xa achi'el k'a ri kik'ojlen, ri kinojib'al kichajin xa tik'amun k'a chi nimaläj konojel xtikajo' ki'. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/cbi-Latn_udhr.txt000066400000000000000000000005771316231664500270210ustar00rootroot00000000000000Naaju chachilla bain mu' chachilla bain na kayatu tichiba bulla jutyu naakendya'ba kenu deechu taa na kayamu deju, tsenminya,naaju juñu bain ne tsaave ti', uukavinu jutyu naa, tideechu juuchi bain, mubain mubain tsaren dejuve, tsenmin shilli pensangenu pude deju'. mitya, tsenr)1in ura' kendu bain ura' kendyu' bain mide' mitya muba mu bain veta' veta' ura' keewaawaa kenuu dejuve. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/cbr-Latn_udhr.txt000066400000000000000000000006041316231664500270210ustar00rootroot00000000000000Ui uni cara 'iti icë axbi ca bëtsi unibë gobiernonën iscëx sënën ití icën. Ui cara ain tita ain papa 'iaxa quixun sinanquinma ca gobiernonën sinancëx ax bëtsibë sënën 'icën. Camaxunbi ca sinanti 'unanin. Camaxunbi ca añu ñu ati cara asábi 'icën, añu ñu 'ati cara 'aisama 'icë quixun 'unanti 'icën. Usa 'ain ca camaxbi ain xucënbë 'icësaribiti nuiananti 'icën. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/cbs-Latn_udhr.txt000066400000000000000000000001211316231664500270140ustar00rootroot00000000000000Yudabu dasibi jabiaskadi akin, xinantidubuki. Javen taea jau jaibunamenunbunven. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/cbt-Latn_udhr.txt000066400000000000000000000002461316231664500270250ustar00rootroot00000000000000Ya'ipi piyapinpoa' capini noya ninosorocaso' ya'huërin. Ya'ipinpoa' yonquirëhua'. Noya nicacaso' nitotërëhua'. Napoaton iyanpoa pochin ninosorocaso' ya 'huërin. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/cbu-Latn_udhr.txt000066400000000000000000000002701316231664500270230ustar00rootroot00000000000000Iy tpotsini ichigoroni kis tamam zadkini, vatam tpotsiniva. Vatam ichigoroni magini tarova; ashiriya chinakaniya. Ashirocha, zovalliatsich tamaparia-ashiros sanpata chinagtsa atiniya. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ccp-Cakm_udhr.txt000066400000000000000000000011171316231664500267750ustar00rootroot00000000000000𑄝𑄬𑄇𑄴 𑄟𑄚𑄪𑄌𑄴 𑄚𑄨𑄢𑄨𑄞𑄨𑄣𑄨 𑄥𑄧𑄁 𑄃𑄨𑄌𑄴𑄎𑄮𑄖𑄴 𑄃𑄳𑄃 𑄃𑄇𑄴𑄇𑄥𑄁 𑄚𑄨𑄚𑄬𑄭 𑄎𑄧𑄚𑄴𑄟𑄚𑄴𑅁 𑄖𑄢𑄢𑄴 𑄃𑄬𑄘 𑄃𑄳𑄃 𑄝𑄪𑄖𑄴𑄙𑄨 𑄃𑄊𑄬; 𑄥𑄬𑄚𑄧𑄖𑄳𑄠𑄴 𑄝𑄬𑄇𑄴𑄅𑄚𑄧𑄢𑄴 𑄃𑄬𑄇𑄴𑄎𑄧𑄚𑄴 𑄃𑄢𑄬𑄇𑄴 𑄎𑄧𑄚𑄧𑄢𑄴 𑄛𑄳𑄢𑄧𑄖𑄨 𑄉𑄧𑄟𑄴 𑄘𑄮𑄣𑄴 𑄌𑄨𑄘𑄳𑄠𑄬 𑄚𑄨𑄚𑄬𑄭 𑄌𑄧𑄣𑄚 𑄅𑄪𑄌𑄨𑄖𑄴𑅁 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ceb-Latn_udhr.txt000066400000000000000000000002701316231664500270030ustar00rootroot00000000000000Ang tanang katawhan gipakatawo nga may kagawasan ug managsama sa kabililhon. Sila gigasahan sa salabutan ug tanlag og mag-ilhanay isip managsoon sa usa'g-usa diha sa diwa sa ospiritu. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/cfm-Latn_udhr.txt000066400000000000000000000003431316231664500270200ustar00rootroot00000000000000Mikip in bangrep ii zalen nak le sunlawih nak thawn, bangrep in covo nei in, asuak mi kan si. Anmah in hleidan thei nak fim nak le nuncan neih thei nak ruah nak nei ii, pakhat le pakhat duh dawt nak, pawl awk nak nei ding asi. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ch-Latn_udhr.txt000066400000000000000000000002671316231664500266520ustar00rootroot00000000000000Todo taotao siha man mafanago libertao yan pareho gi dignidad yan derecho siha, man manae siha hinaso yan consiencia yan debe de ufatinas contra uno yan otro gi un espiritun chumelo. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/chj-Latn_udhr.txt000066400000000000000000000001421316231664500270140ustar00rootroot00000000000000La juu dsa lu siä –Dsa kö ñi ba dsa, nía kö ni' ba na lu' dsa e dsa tï é li jnia' roö'. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/chk-Latn_udhr.txt000066400000000000000000000003051316231664500270160ustar00rootroot00000000000000Esap wor och mettoch epwe appeti aramas seni fansoun ar uputiu non ar tufich me rait. Ar ekiek epwe mecheres o esap pet ren och sakkun mettoch pun ir repwe nonnomfengen non kinamwe o pwipwi annim. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/chr-Cher-cased_udhr.txt000066400000000000000000000005341316231664500300710ustar00rootroot00000000000000Ꮒꭶꮣ ꭰꮒᏼꮻ ꭴꮎꮥꮕꭲ ꭴꮎꮪꮣꮄꮣ ꭰꮄ ꭱꮷꮃꭽꮙ ꮎꭲ ꭰꮲꮙꮩꮧ ꭰꮄ ꭴꮒꮂ ꭲᏻꮎꮫꮧꭲ. Ꮎꮝꭹꮎꮓ ꭴꮅꮝꭺꮈꮤꮕꭹ ꭴꮰꮿꮝꮧ ꮕᏸꮅꮫꭹ ꭰꮄ ꭰꮣꮕꮦꮯꮣꮝꮧ ꭰꮄ ꭱꮅꮝꮧ ꮟᏼꮻꭽ ꮒꮪꮎꮣꮫꮎꮥꭼꭹ ꮎ ꮧꮎꮣꮕꮯ ꭰꮣꮕꮩ ꭼꮧ. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/chr-Cher-monocase_udhr.txt000066400000000000000000000005341316231664500306160ustar00rootroot00000000000000ᏂᎦᏓ ᎠᏂᏴᏫ ᎤᎾᏕᏅᎢ ᎤᎾᏚᏓᎴᏓ ᎠᎴ ᎡᏧᎳᎭᏉ ᎾᎢ ᎠᏢᏉᏙᏗ ᎠᎴ ᎤᏂᎲ ᎢᏳᎾᏛᏗᎢ. ᎾᏍᎩᎾᏃ ᎤᎵᏍᎪᎸᏔᏅᎩ ᎤᏠᏯᏍᏗ ᏅᏰᎵᏛᎩ ᎠᎴ ᎠᏓᏅᏖᏟᏓᏍᏗ ᎠᎴ ᎡᎵᏍᏗ ᏏᏴᏫᎭ ᏂᏚᎾᏓᏛᎾᏕᎬᎩ Ꮎ ᏗᎾᏓᏅᏟ ᎠᏓᏅᏙ ᎬᏗ. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/chr-Cher_udhr.txt000066400000000000000000000003551316231664500270150ustar00rootroot00000000000000ᏂᎦᏓ ᎠᏂᏴᏫ ᏂᎨᎫᏓᎸᎾ ᎠᎴ ᎤᏂᏠᏱ ᎤᎾᏕᎿ ᏚᏳᎧᏛ ᎨᏒᎢ. ᎨᏥᏁᎳ ᎤᎾᏓᏅᏖᏗ ᎠᎴ ᎤᏃᏟᏍᏗ ᎠᎴ ᏌᏊ ᎨᎡ ᏧᏂᎸᏫᏍᏓᏁᏗ ᎠᎾᏟᏅᏢ ᎠᏓᏅᏙ ᎬᏗ. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/cic-Latn_udhr.txt000066400000000000000000000002171316231664500270110ustar00rootroot00000000000000Himmaka' nittakookano hattak yokasht toksalicha'nikat ki'yo. Hattak mó̱makat ittíllawwi bíyyi'kacha nanna mó̱maka̱ ittibaachaffa'hitok. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/cjk-Latn-AO_udhr.txt000066400000000000000000000002051316231664500273140ustar00rootroot00000000000000Athu eswe kakusemuka ngwe akwo, ku vumbi nyi hakusakula.Kali nyi mana,mba mahasa kulinga umwu hali mukwo nyi espiritu ya kuli kuasa. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/cjk-Latn_udhr.txt000066400000000000000000000003111316231664500270150ustar00rootroot00000000000000Mwese yoze masemuka katela ukulungunga ulengunga ulemu nyi vumbi eswe ci mwikha. Eswe kalingile kupwa nyi usambe nyi mangana nyi kuhasa kulimika nyumwe nyi mukwo nyi kulita nyi mbunge ya ulemu wa utu. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/cjs-Cyrl_udhr.txt000066400000000000000000000003621316231664500270460ustar00rootroot00000000000000Парчын кижи, по чарыққа туғчадып, тең, пош туғча. Кижилер сағыштығ, ақтығ туғчалар, кижилерге пашқа кижилербе арғыштаныштарға керек. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/cjy-Hans_udhr.txt000066400000000000000000000002021316231664500270250ustar00rootroot00000000000000人人生而自由,在尊严和权利上一律平等。他们赋有理性和良心,并应以弟兄关系的精神相对待。 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/cnh-Latn_udhr.txt000066400000000000000000000004451316231664500270260ustar00rootroot00000000000000Mi vialte hna cu zalong te, ai tluk te le upat tihzah awktlak le thiltikhawhnak tinvo a ngei in a chuak mi kan si dih. Minung cu a chia a tha thleidang khomi ruahnak le theihthiamnak ziaza tha a ngeimi kan si caah pakhat le pakhat dawtnak he i pehtlaihnak le i hawikawmhnak ngeih ding kan si. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/cni-Latn_udhr.txt000066400000000000000000000004651316231664500270310ustar00rootroot00000000000000Aquempetavacaajeita maaroni atiri. Timatsi aquenqueshirejeitantari maaroni, timatsi amejeitari, ayojeiti paitarica ocameetsati antajeitiri: te oncameetsateji intsaneapitsajeiteero itsipapee. Te oncameetsateji imperanajeitee, te oncameetsateji iroashinoncaajeitee, irointi ocameetsati aacameetsatavacaajeitea. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/co-Latn_udhr.txt000066400000000000000000000002261316231664500266540ustar00rootroot00000000000000Nascinu tutti l’omi libari è pari di dignità è di diritti. Pussedinu a raghjoni è a cuscenza è li tocca ad agiscia trà elli di modu fraternu. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/cof-Latn_udhr.txt000066400000000000000000000002061316231664500270200ustar00rootroot00000000000000Piyanle tsa'chila, mankarijun, junshi manta tan, in tobi jaminlajoyoe, titi mi, tenka kano min, junshi, tsa'chila tala, sen jono min. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/cot-Latn_udhr.txt000066400000000000000000000004131316231664500270360ustar00rootroot00000000000000Aquejetavacaajiaca maasano caquinte. Chooca aquenquejantaca maasano, chooca amejigaca, atsajiaque taaca opajitapae ocameetsataque antajiguica. Tee oncameetsateji iromperaperanajicaji, tee oncameetsateji irogashinoncajajiacaji. Jero cameetsatatsica aavacaj aiaquempa. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/cpu-Latn_udhr.txt000066400000000000000000000011461316231664500270440ustar00rootroot00000000000000Maaroni atziripayeeni, ovaquera intzimapaaque, eero ocantzi iñaashitacaavaitaityaari iromperanataityaari. Eejatzi oquemitari iroñaaca te apantyaaro amanitashireteri atziri ancanteri: "Te pirjiperote eeroca, iriima irinta iriitaque ñaaperori". Eejatzi oquemitari te oncameethate intzime aparoni atziri antayetashityaarone caari ishinetaacairi pashine irantero. Tema maaroni ayotziro ampampithashirvaayeta, ayotziro tsicarica otzimayetzi cameethatatsiri anteri o tsicarica otzimi caariperotatsiri, irootaque ocovaperotantari iroñaaca entacotavacaayetya anquemitacaantanaquero arentzitavacaatyeeyaami ocaaquiini. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/cri-Latn_udhr.txt000066400000000000000000000002361316231664500270310ustar00rootroot00000000000000Tudu nguê di mundu ca nancê livli e igual ni dignidade e ni dirêtu. Punda nen ca pensá e nen tê cunxensa, selá nen fé tudu cuá cu tençón de lumón. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/crs-Latn_udhr.txt000066400000000000000000000002651316231664500270450ustar00rootroot00000000000000Nou tou imen nou’n ne dan laliberte ek legalite, dan nou dignite ek nou bann drwa. Nou tou nou annan kapasite pou rezonnen, e fodre nou azir anver lezot avek en lespri fraternel. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/cs-Latn_udhr.txt000066400000000000000000000002301316231664500266530ustar00rootroot00000000000000Všichni lidé se rodí svobodní a sobě rovní co do důstojnosti a práv. Jsou nadáni rozumem a svědomím a mají spolu jednat v duchu bratrství. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/csa-Latn_udhr.txt000066400000000000000000000001671316231664500270250ustar00rootroot00000000000000Lej†̎ ni sou tsa lisia̱ ija̱a sia ikou' ne kojo̱ jï ne juso̱ ne jmo' re ju i s†̍' jmo' nö sala̱ ne sasno. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/csw-Cans_udhr.txt000066400000000000000000000005741316231664500270430ustar00rootroot00000000000000ᒥᓯᐌ ᐃᓂᓂᐤ ᑎᐯᓂᒥᑎᓱᐎᓂᐠ ᐁᔑ ᓂᑕᐎᑭᐟ ᓀᐢᑕ ᐯᔭᑾᐣ ᑭᒋ ᐃᔑ ᑲᓇᐗᐸᒥᑯᐎᓯᐟ ᑭᐢᑌᓂᒥᑎᓱᐎᓂᐠ ᓀᐢᑕ ᒥᓂᑯᐎᓯᐎᓇ᙮ ᐁ ᐸᑭᑎᓇᒪᒋᐠ ᑲᑫᑕᐌᓂᑕᒧᐎᓂᓂᐤ ᓀᐢᑕ ᒥᑐᓀᓂᒋᑲᓂᓂᐤ ᓀᐢᑕ ᐎᒋᑴᓯᑐᐎᓂᐠ ᑭᒋ ᐃᔑ ᑲᓇᐗᐸᒥᑐᒋᐠ᙮ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ctd-Latn_udhr.txt000066400000000000000000000003361316231664500270270ustar00rootroot00000000000000Mihingte khempeuh in thupitak leh thuneihna tawh suakta tak leh akibang in kipiang ciat ahi hi. Asia leh apha khentel thei thungaihsutna nei ciat uh ahihman in khat leh khat sanggam unau lungsim tawh kithuah khop ding hi. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/cy-Latn_udhr.txt000066400000000000000000000002541316231664500266670ustar00rootroot00000000000000Genir pawb yn rhydd ac yn gydradd â'i gilydd mewn urddas a hawliau. Fe'u cynysgaeddir â rheswm a chydwybod, a dylai pawb ymddwyn y naill at y llall mewn ysbryd cymodlon. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/da-Latn_udhr.txt000066400000000000000000000002471316231664500266420ustar00rootroot00000000000000Alle mennesker er født frie og lige i værdighed og rettigheder. De er udstyret med fornuft og samvittighed, og de bør handle mod hverandre i en broderskabets ånd. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/dag-Latn_udhr.txt000066400000000000000000000003551316231664500270110ustar00rootroot00000000000000Sal' la sala. Bɛhig' be sokam sanimi, din pa la amii. Suhizɔbo be sokam sani; ka nambɔɣu beni. Suhubɔhibo mi bi lan kɔŋ yigunaadam kam sani. Dinzuɣu dimbɔŋɔ zaa wuhiya ka dama di tu kamaata ka ti zaa yu tab' hali ni ti puuni. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ddn-Latn_udhr.txt000066400000000000000000000002401316231664500270140ustar00rootroot00000000000000Aduniya kuna n gu ibuna damayo hɛi nɔ dei-dei nn daama nna n burucinitɛrɛ fɔ, n lasabu nna laakari ya nam nn mɔ huro cɛrɛ kuna nyanze tɛrɛ bɔŋɔɔ. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/de-Latn-1901_udhr.txt000066400000000000000000000002471316231664500272360ustar00rootroot00000000000000Alle Menschen sind frei und gleich an Würde und Rechten geboren. Sie sind mit Vernunft und Gewissen begabt und sollen einander im Geist der Brüderlichkeit begegnen. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/de-Latn-1996_udhr.txt000066400000000000000000000002471316231664500272540ustar00rootroot00000000000000Alle Menschen sind frei und gleich an Würde und Rechten geboren. Sie sind mit Vernunft und Gewissen begabt und sollen einander im Geist der Brüderlichkeit begegnen. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/de-Latn_udhr.txt000066400000000000000000000002471316231664500266460ustar00rootroot00000000000000Alle Menschen sind frei und gleich an Würde und Rechten geboren. Sie sind mit Vernunft und Gewissen begabt und sollen einander im Geist der Brüderlichkeit begegnen. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/dga-Latn_udhr.txt000066400000000000000000000003221316231664500270030ustar00rootroot00000000000000Nengsaala zaa ba nang dɔge so la o menga, ka o ne o taaba zaa sengtaa noba emmo ane yɛlɛsoobo sobic poɔ. Ba dɔgɛɛ ba zaa ne yɛng ane yɛlɛ-iruu k'a da seng ka ba erɛ yɛlɛ korɔ taa a nga yɔɔmine. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/dip-Latn_udhr.txt000066400000000000000000000002171316231664500270270ustar00rootroot00000000000000Raan thök eben aye dhëëth ka lau nhöm kua thöŋ nhiim eyithiic, kua thɛ̈kic, kua ci yëknhiethku puou, ku bik cëŋ ka ke ye mith etik. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/duu-Latn_udhr.txt000066400000000000000000000001731316231664500270510ustar00rootroot00000000000000Avzangf max pyvccuf byv syvnax zyxyyv ef, lifxingx ningx lyangvxinx alf, taixrav angvnikxrav gwanxxix mix syv av duixdaix. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/dv-Thaa_udhr.txt000066400000000000000000000011131316231664500266370ustar00rootroot00000000000000ހުރިހާ އިންސާނުންވެސް ދުނިޔެއަށް އުފަންވަނީ، މިނިވަންކަމުގައި، ހަމަހަމަ ޙައްޤުތަކަކާއެކު، ހަމަހަމަ ދަރަޖައެއްގައި ކަމޭހިތެވިގެންވާ ބައެއްގެ ގޮތުގައެވެ. ހެޔޮ ވިސްނުމާއި، ހެޔޮބުއްދީގެ ބާރު އެމީހުންނަށް ލިބިގެންވެއެވެ. އަދި އެކަކު އަނެކަކާމެދު އެމީހުން މުޢާމަލާތް ކުރަންވާނީ، އުޚުއްވަތްތެރިކަމުގެ ރޫޙެއްގައެވެ. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/dyo-Latn_udhr.txt000066400000000000000000000001431316231664500270440ustar00rootroot00000000000000Bukanak búrom nan kuwolimi kurere kererer di waafaw búrom. Kubabaj poop búyejet di karampenoor. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/dyu-Latn_udhr.txt000066400000000000000000000003031316231664500270500ustar00rootroot00000000000000Wólo’ lá, hádamaden’ bɛɛ ye hɔrɔn ye, bɛɛ ká kán lànbe ní hákɛyaw Mɔgɔ bɛɛ ye hákilitigi ye, bɛɛ ye hákilima ye ; ò là, ù ká kán kà ɲgɔn mína ní bádenya ye. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/dz-Tibt_udhr.txt000066400000000000000000000012611316231664500266740ustar00rootroot00000000000000འགྲོ་བ་མི་ཚུ་ག་ར་དལ་དབང་གི་ཐོག་ལས་སྐྱེས་ཏེ་ཡོདཔ་ལས་ ག་ར་ལུ་བརྩི་མཐོང་དང་ཐོབ་དབང་འདྲ་མཉམ་སྦེ་ཡོད། མི་ཚུ་ག་ར་སྨྲ་ཤེས་དོན་གོ་བའི་མཚན་ཉིད་དང་ལྡནམ་ལས་ ག་ར་གིས་ལཱ་ག་ཅི་ར་འབད་རུང་ གཅིག་གིས་གཅིག་ལུ་སྤུན་ཆའི་འདུ་ཤེས་བསྐྱེད་ཐོག་ལས་ལཱ་འབད་དགོ། nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ee-Latn_udhr.txt000066400000000000000000000002661316231664500266500ustar00rootroot00000000000000Wodzi amegbetɔwo katã ablɔɖeviwoe eye wodzena bubu kple gomekpɔkpɔ sɔsɔe. Susu kple dzitsinya le wo dometɔ ɖesiaɖe si eyata wodze be woanɔ anyi le ɖekawɔwɔ blibo me. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/el-Grek-monoton_udhr.txt000066400000000000000000000005501316231664500303340ustar00rootroot00000000000000Όλοι οι άνθρωποι γεννιούνται ελεύθεροι και ίσοι στην αξιοπρέπεια και τα δικαιώματα. Είναι προικισμένοι με λογική και συνείδηση, και οφείλουν να συμπεριφέρονται μεταξύ τους με πνεύμα αδελφοσύνης. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/el-Grek-polyton_udhr.txt000066400000000000000000000006061316231664500303510ustar00rootroot00000000000000Ὅλοι οἱ ἄνθρωποι γεννιοῦνται ἐλεύθεροι καὶ ἴσοι στὴν ἀξιοπρέπεια καὶ τὰ δικαιώματα. Εἶναι προικισμένοι μὲ λογικὴ καὶ συνείδηση, καὶ ὀφείλουν νὰ συμπεριφέρονται μεταξύ τους μὲ πνεῦμα ἀδελφοσύνης. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/el-Grek_udhr.txt000066400000000000000000000005501316231664500266450ustar00rootroot00000000000000Όλοι οι άνθρωποι γεννιούνται ελεύθεροι και ίσοι στην αξιοπρέπεια και τα δικαιώματα. Είναι προικισμένοι με λογική και συνείδηση, και οφείλουν να συμπεριφέρονται μεταξύ τους με πνεύμα αδελφοσύνης. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/emk-Latn_udhr.txt000066400000000000000000000002751316231664500270330ustar00rootroot00000000000000Adamadennu bɛɛ sɔdɔnɲa kakan, hɔrɔya dɔ, fabadenɲa dɔ ani sariya ta fan dɔ. Hankili ni sɔnɔmɛ ye alu bɛɛ ma, a kakan wo dɔ alu ye bakelenɲa sila lataaman alu ɲɔɔn tɛ. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/eml-Latn_udhr.txt000066400000000000000000000002671316231664500270350ustar00rootroot00000000000000Tot j essèri umèn i nàs lébri e cumpagn in dignità e dirét. Lou i è dutid ad rasoun e ad cuscinza e i à da operè, ognun ti cunfrunt at ch'j ilt, sa sentimint ad fratelènza. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/en-Latn_udhr.txt000066400000000000000000000002531316231664500266550ustar00rootroot00000000000000All human beings are born free and equal in dignity and rights. They are endowed with reason and conscience and should act towards one another in a spirit of brotherhood. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/eo-Latn_udhr.txt000066400000000000000000000002351316231664500266560ustar00rootroot00000000000000Ĉiuj homoj estas denaske liberaj kaj egalaj laŭ digno kaj rajtoj. Ili posedas racion kaj konsciencon, kaj devus konduti unu al alia en spirito de frateco. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/es-Latn_udhr.txt000066400000000000000000000002561316231664500266650ustar00rootroot00000000000000Todos los seres humanos nacen libres e iguales en dignidad y derechos y, dotados como están de razón y conciencia, deben comportarse fraternalmente los unos con los otros. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/et-Latn_udhr.txt000066400000000000000000000002711316231664500266630ustar00rootroot00000000000000Kõik inimesed sünnivad vabadena ja võrdsetena oma väärikuselt ja õigustelt. Neile on antud mõistus ja südametunnistus ja nende suhtumist üksteisesse peab kandma vendluse vaim. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/eu-Latn_udhr.txt000066400000000000000000000002631316231664500266650ustar00rootroot00000000000000Gizon-emakume guztiak aske jaiotzen dira, duintasun eta eskubide berberak dituztela; eta ezaguera eta kontzientzia dutenez gero, elkarren artean senide legez jokatu beharra dute. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/eve-Cyrl_udhr.txt000066400000000000000000000003561316231664500270510ustar00rootroot00000000000000Бэйил бокэтчур омэн хилкич нян урумкэр балдаритно, теми ноҥардук эгдьэн ҥи‐да ачча. Бэйил бөкэтчур мэн долан акагчимур биннэтын. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/evn-Cyrl_udhr.txt000066400000000000000000000004041316231664500270540ustar00rootroot00000000000000Упкат илэл ты̄нмукирди, урэ̄лди мэ̄нңи са̄рича̄ди балдыдяра. Нуңартын дялитви, һалдяндыви биси, мэмэгӣлвэр аяралды̄дяна тэдет о̄мамачитын. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/fa-Arab-AF_udhr.txt000066400000000000000000000004131316231664500270720ustar00rootroot00000000000000تمام افراد بشر آزاد به دنیا می‌آیند و از لحاظ حیثیت و حقوق با هم برابرند. همه دارای عقل و وجدان هستند و باید نسبت به یکدیگر با روح برادری رفتار کنند. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/fa-Arab_udhr.txt000066400000000000000000000003741316231664500266140ustar00rootroot00000000000000تمام افراد بشر آزاد به دنیا می‌آیند و از لحاظ حیثیت و حقوق با هم برابرند، همه عقل و وجدان دارند و باید نسبت به یک‌دیگر برادرانه رفتار کنند. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/fat-Latn_udhr.txt000066400000000000000000000003021316231664500270200ustar00rootroot00000000000000Wɔwo adasa nyina to fahodzi mu, na hɔn nyina yɛ pɛr wɔ enyimnyam na ndzinoa mu. Wɔmaa hɔn nyina adwen na tsibowa, na ɔwɔ dɛ hɔn nkitahodzi mu ndzeyɛɛ da no edzi dɛ wɔyɛ enuanom. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/fi-Latn_udhr.txt000066400000000000000000000002641316231664500266530ustar00rootroot00000000000000Kaikki ihmiset syntyvät vapaina ja tasavertaisina arvoltaan ja oikeuksiltaan. Heille on annettu järki ja omatunto, ja heidän on toimittava toisiaan kohtaan veljeyden hengessä. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/fj-Latn_udhr.txt000066400000000000000000000002751316231664500266560ustar00rootroot00000000000000Era sucu ena galala na tamata yadua, era tautauvata ena nodra dokai kei na nodra dodonu. E tiko na nodra vakasama kei na nodra lewaeloma, sa dodonu mera veidokadokai ena yalo ni veitacini. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/fo-Latn_udhr.txt000066400000000000000000000002301316231664500266520ustar00rootroot00000000000000Øll menniskju eru fødd fræls og jøvn til virðingar og mannarættindi. Tey hava skil og samvitsku og eiga at fara hvørt um annað í bróðuranda. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/fon-Latn_udhr.txt000066400000000000000000000002561316231664500270400ustar00rootroot00000000000000Acɛ, susu kpo sisi ɖokpo ɔ kpo wɛ gbɛtɔ bi ɖo ɖò gbɛwiwa tɔn hwenu; ye ɖo linkpɔn bɔ ayi yetɔn mɛ kpe lo bɔ ye ɖo na do alɔ yeɖee ɖi nɔvinɔvi ɖɔhun. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/fr-Latn_udhr.txt000066400000000000000000000003001316231664500266530ustar00rootroot00000000000000Tous les êtres humains naissent libres et égaux en dignité et en droits. Ils sont doués de raison et de conscience et doivent agir les uns envers les autres dans un esprit de fraternité. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/fur-Latn_udhr.txt000066400000000000000000000002131316231664500270430ustar00rootroot00000000000000Ducj i oms a nassin libars e compagns come dignitât e derits. A an sintiment e cussience e bisugne che si tratin un culaltri come fradis. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/fuv-Latn_udhr.txt000066400000000000000000000002331316231664500270510ustar00rootroot00000000000000Innama aadeeji fof poti, ndimɗidi e jibinannde to bannge hakkeeji. Eɓe ngoodi miijo e hakkilantaagal ete eɓe poti huufo ndirde e nder ɓ iynguyummaagu. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/fy-Latn_udhr.txt000066400000000000000000000002721316231664500266720ustar00rootroot00000000000000Alle minsken wurde frij en gelyk yn weardigens en rjochten berne. Hja hawwe ferstân en gewisse meikrigen en hearre har foar inoar oer yn in geast fan bruorskip te hâlden en te dragen. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ga-Latn_udhr.txt000066400000000000000000000003051316231664500266400ustar00rootroot00000000000000Saoláitear na daoine uile saor agus comhionann ina ndínit agus ina gcearta. Tá bauidh an réasúin agus an choinsiasa acu agus dlíd iad féin d'iompar de mheon bhrthreachais i leith a chéile. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/gaa-Latn_udhr.txt000066400000000000000000000003001316231664500267740ustar00rootroot00000000000000Afɔ gbɔmɔ fɛɛ gbɔmɔ yɛ agbojee mli, kɛ hegbɛ ko ni damɔ ŋɛlɛ koome nɔ. Gbɔmɛi fɛɛ yɛ jwɛŋmɔ kɛ henilee, ni no hewɔ lɛ esa akɛ amɛhe ahi shi yɛ nyɛmi suɔmɔ mli. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/gag-Latn_udhr.txt000066400000000000000000000002631316231664500270120ustar00rootroot00000000000000Insannar hepsi duuêrlar serbest hem birtakım kendi kıymetindä hem haklarında. Onnara verilmiş akıl hem üz da läazım biri-birinä davransınnar kardaşlık ruhuna uygun. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/gan-Hans_udhr.txt000066400000000000000000000001741316231664500270150ustar00rootroot00000000000000人人生而自由,在志向跟权利上一律平等。渠们赋有理性跟良心,并理当以弟兄义气相对待。 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/gd-Latn_udhr.txt000066400000000000000000000003361316231664500266470ustar00rootroot00000000000000Tha gach uile dhuine air a bhreth saor agus co-ionnan ann an urram 's ann an còirichean. Tha iad air am breth le reusan is le cogais agus mar sin bu chòir dhaibh a bhith beò nam measg fhein ann an spiorad bràthaireil, nototools-2017-09-25-tooling-for-phase3-update/sample_texts/gjn-Latn_udhr.txt000066400000000000000000000002621316231664500270310ustar00rootroot00000000000000Bu kurwe dimedi kikɛ mobe kumu so, nɛ mobe, eyilikpa, kesheŋ nɛ kashinteŋ maŋ kɔr eko peyɛ to. Nyinpela sa dimedi kikɛ lakal nɛ mfɛra fanɛ bu chena abarso kelepo so. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/gl-Latn_udhr.txt000066400000000000000000000002461316231664500266570ustar00rootroot00000000000000Tódolos seres humanos nacen libres e iguais en dignidade e dereitos e, dotados como están de razón e conciencia, díbense comportar fraternalmente uns cos outros. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/gld-Cyrl_udhr.txt000066400000000000000000000003721316231664500270360ustar00rootroot00000000000000Хэмту найсал гипалин, мэнэ гэбудиэри, правосалдиари эмуту балдичи. Нёанчи муруӈку, дэрэлку, диа диавари а-нэу-мэт бодомари тагилайчи. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/gn-Latn_udhr.txt000066400000000000000000000003121316231664500266530ustar00rootroot00000000000000Mayma yvypóra ou ko yvy ári iñapytl'yre ha eteĩcha dignidad ha derecho jeguerekópe; ha ikatu rupi oikuaa añetéva ha añete'yva, iporãva ha ivaíva, tekotevê pehenguéicha oiko oñondivekuéra. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/gu-Gujr_udhr.txt000066400000000000000000000006661316231664500267070ustar00rootroot00000000000000પ્રતિષ્ઠા અને અધિકારોની દૃષ્ટિએ સર્વ માનવો જન્મથી સ્વતંત્ર અને સમાન હોય છે. તેમનામાં વિચારશક્તિ અને અંતઃકરણ હોય છે અને તેમણે પરસ્પર બંધુત્વની ભાવનાથી વર્તવું જોઇએ. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/guc-Latn_udhr.txt000066400000000000000000000002121316231664500270240ustar00rootroot00000000000000Naa wayuukana jemeishi süpüla taashi süma wanawa sülu'u nakua'ipa, aka müin yaa epijainjana sünain anajiranawaa a'in nama napüshi. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/guu-Latn_udhr.txt000066400000000000000000000004251316231664500270540ustar00rootroot00000000000000Kõmi thë pë rë përiprawë rë piyëkëi, he usukuwë thë pë keprou ai thë ã rëamaihã no ã heparohowë, totihitawë thë pë riã rẽ thaiwehei hami, thë pë puhi tao kãi përihiwëha, thë pë puhi kãi katehewëha hawë kama thë pë mashi shĩro përihimopë. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/gv-Latn_udhr.txt000066400000000000000000000003231316231664500266650ustar00rootroot00000000000000Ta dy chooilley ghooinney ruggit seyr as corrym rish dy chooilley ghooinney elley ayns ooashley as ayns cairys. Ta resoon as cooinsheanse stowit orroo as lhisagh ad dellal rish y cheilley lesh spyrryd braaragh. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/gyr-Latn_udhr.txt000066400000000000000000000002511316231664500270520ustar00rootroot00000000000000Opakatu ava yoro’a nda’ei tembigwaigwa oyoyatupri, sekotupri, vaëra, imboeteisara, oikatu ipi’a yemoñeta, imbaekua, ndiyai yurekorairai ñepëi pëi ambua rese. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ha-Latn-NE_udhr.txt000066400000000000000000000003461316231664500271460ustar00rootroot00000000000000Su dai ƴan‐adam, ana haifuwarsu ne duka ƴantattu, kuma kowannensu na da mutunci da hakkoki daidai da na kowa. Suna da hankali da tunani, saboda haka duk abin da za su aikata wa juna, ya kamata su yi shi a cikin ƴan‐uwanci. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ha-Latn-NG_udhr.txt000066400000000000000000000003501316231664500271430ustar00rootroot00000000000000Su dai ‘yan-adam, ana haifuwarsu ne duka ‘yantattu, kuma kowannensu na da mutunci da hakkoki daidai da na kowa. Suna da hankali da tunani, saboda haka duk abin da za su aikata wa juna, ya kamata su yi shi a cikin ‘yan-uwanci. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ha-Latn_udhr.txt000066400000000000000000000003501316231664500266410ustar00rootroot00000000000000Su dai ‘yan-adam, ana haifuwarsu ne duka ‘yantattu, kuma kowannensu na da mutunci da hakkoki daidai da na kowa. Suna da hankali da tunani, saboda haka duk abin da za su aikata wa juna, ya kamata su yi shi a cikin ‘yan-uwanci. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/hak-Hans_udhr.txt000066400000000000000000000002101316231664500270020ustar00rootroot00000000000000人人生而自由,在尊严同权利上一律平等。佢丁人赋有理性同好心田,并应以兄弟关系个精神相对待。 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/haw-Latn_udhr.txt000066400000000000000000000003561316231664500270360ustar00rootroot00000000000000Hānau kū’oko’a ‘ia nā kānaka apau loa, a ua kau like ka hanohano a me nā pono kīvila ma luna o kākou pākahi. Ua ku’u mai ka no’ono’o pono a me ka ‘ike pono ma luna o kākou, no laila, e aloha kākou kekahi i kekahi. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/he-Hebr_udhr.txt000066400000000000000000000003511316231664500266300ustar00rootroot00000000000000כל בני האדם נולדו בני חורין ושווים בערכם ובזכויותיהם. כולם חוננו בתבונה ובמצפון, לפיכך חובה עליהם לנהוג איש ברעהו ברוח של אחווה. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/hea-Latn_udhr.txt000066400000000000000000000003441316231664500270110ustar00rootroot00000000000000Laix laix diangl dangt lol sob dab yangx ghax maix zit yef, niangb diot gid zenb nieef haib gid quaif lit gid nongd jus diel pinf denx. Nenx dol maix laib lix xent haib jox hvib vut, nenx dol nongt liek bed ut id xit deit dait. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/hi-Deva_udhr.txt000066400000000000000000000007621316231664500266410ustar00rootroot00000000000000सभी मनुष्यों को गौरव और अधिकारों के मामले में जन्मजात स्वतन्त्रता और समानता प्राप्त है। उन्हें बुद्धि और अन्तरात्मा की देन प्राप्त है और परस्पर उन्हें भाईचारे के भाव से बर्ताव करना चाहिए। nototools-2017-09-25-tooling-for-phase3-update/sample_texts/hil-Latn_udhr.txt000066400000000000000000000003071316231664500270270ustar00rootroot00000000000000Ang tanan nga tao ginbun-ag nga hilway kag may pag-alalangay sa dungog kag katarungan. Sila ginhatagan sang pagpamat-od kag konsensya kag nagakadapat nga magbinuligay sa kahulugan sang pag-inuturay. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/hlt-Latn_udhr.txt000066400000000000000000000003761316231664500270500ustar00rootroot00000000000000Thlangboeih he rhimomna, vanpitna, yalpona hamhmoel ka tawn thlang la cuun la ng’om u. Thlanghing he athae-then paekboe thaina neh yakming thaina moeiboe ka tawn thlang la n’om u dong ah khat neh khat lungvat na neh thloehlan voekhlak u thae ham om. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/hms-Latn_udhr.txt000066400000000000000000000002341316231664500270410ustar00rootroot00000000000000Leb leb nis zib youl nangs, mex ad sheit nangd zend yanl nhangs njanl lib. Mix mex lix xinb gaot liangt send, leb leb lies nhangs ghob nab ghob geud nangd. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/hna-Latn_udhr.txt000066400000000000000000000003051316231664500270170ustar00rootroot00000000000000Agbetɔwo kpata le jijimɛa, ɖo vosinɔnɔ, nyi gbèsɔɛ́mɛ́wó le nujɔnunnyi ku goɖoejisewo, amɛbusewo mɛ. Tagbɔ le woa si, eye wɔnawo sɔdoda woanɔnɔwo gbɔa la nyi nɔ́visilélé. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/hni-Latn_udhr.txt000066400000000000000000000002631316231664500270320ustar00rootroot00000000000000Aqsol liq yoqdeivq yoqpyuq bo, meeqyaovq ssolnei colpyuq qiq kov dei. Davqtavcolssaq neenyuq bel neema meeq ya siq, laongaoq meilnaol nadul meil e gaq ssol hhyul hha bavqduv nia. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/hnj-Latn_udhr.txt000066400000000000000000000004061316231664500270320ustar00rootroot00000000000000Cuat lenx cuat dol bongb deul ndax dex douf muax zif youx, nyaob shout zunb yinx tab ndas dos id, dax zis ib suk. Nil buab daf lol jaox muax lid xinf hlub hout tab liangx xinb shab nzhuk, yinf gaib keuk suk gud dix mol lol nit jinb shenx lol shib daf shib hlad. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/hns-Latn_udhr.txt000066400000000000000000000002661316231664500270470ustar00rootroot00000000000000Sab djanne aadjádi aur barabar paidaa bhailèn, iddjat aur hak mê. Ohi djanne ke lage sab ke samadj-boedj aur hierdaai hai aur doesare se sab soemmat sè, djaane-maane ke chaahin. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/hr-Latn_udhr.txt000066400000000000000000000002501316231664500266610ustar00rootroot00000000000000Sva ljudska bića rađaju se slobodna i jednaka u dostojanstvu i pravima. Ona su obdarena razumom i sviješću i trebaju jedna prema drugima postupati u duhu bratstva. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/hsb-Latn_udhr.txt000066400000000000000000000002571316231664500270330ustar00rootroot00000000000000Wšitcy čłowjekojo su wot naroda swobodni a su jenacy po dostojnosći a prawach. Woni su z rozumom a swědomjom wobdarjeni a maja mjezsobu w duchu bratrowstwa wobchadźeć. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ht-Latn-kreyol_udhr.txt000066400000000000000000000002241316231664500301670ustar00rootroot00000000000000Tout moun fèt lib, egal ego pou diyite kou wè dwa. Nou gen la rezon ak la konsyans epi nou fèt pou nou aji youn ak lot ak yon lespri fwatènite. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ht-Latn-popular_udhr.txt000066400000000000000000000003301316231664500303420ustar00rootroot00000000000000Tout moun sou tè a fèt tou lib. Tout gen menm valè (nan je lasosyete), tout moun gen menm dwa devan Lalwa. Tout moun fèt ak yon bonsans, tout fèt ak yon konsyans epi youn fèt pou trete lòt tankou frè ak sè. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ht-Latn_udhr.txt000066400000000000000000000002241316231664500266640ustar00rootroot00000000000000Tout moun fèt lib, egal ego pou diyite kou wè dwa. Nou gen la rezon ak la konsyans epi nou fèt pou nou aji youn ak lot ak yon lespri fwatènite. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/hu-Latn_udhr.txt000066400000000000000000000003021316231664500266620ustar00rootroot00000000000000Minden emberi lény szabadon születik és egyenlő méltósága és joga van. Az emberek, ésszel és lelkiismerettel bírván, egymással szemben testvéri szellemben kell hogy viseltessenek. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/hus-Latn_udhr.txt000066400000000000000000000001641316231664500270530ustar00rootroot00000000000000Ejtal an kw'ajiiltsik u wa'chinal kweteem ani chu'udh k'al an chu'uxtalaab ani yajat ka k'aak'naaxin juun ani juun. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/huu-Latn_udhr.txt000066400000000000000000000002771316231664500270620ustar00rootroot00000000000000Nana caɨ comuillamona dama caɨ abido itɨcaɨ. Caɨ comuillamona jɨaɨmɨe anamo iñedɨcaɨ. Nana daje facaiconi itɨcaɨ. Abɨ uiñuanona comuidɨcaɨ. Danɨ coninɨrie caɨ nabairilla. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/hy-Armn_udhr.txt000066400000000000000000000004421316231664500266720ustar00rootroot00000000000000Բոլոր մարդիկ ծնվում են ազատ ու հավասար իրենց արժանապատվությամբ ու իրավունքներով։ Նրանք ունեն բանականություն ու խիղճ և միմյանց պետք է եղբայրաբար վերաբերվեն։ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ia-Latn_udhr.txt000066400000000000000000000002661316231664500266500ustar00rootroot00000000000000Tote le esseres human nasce libere e equal in dignitate e in derectos. Illes es dotate de ration e de conscientia e debe ager le unes verso le alteres in un spirito de fraternitate. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ibb-Latn_udhr.txt000066400000000000000000000002751316231664500270130ustar00rootroot00000000000000Kpukpuru owo emana nte amanison, enyun enyene ukem ukem uku ye unen. Eyoho mmo ye ukeme ndikere nkpo, ndinyun nyene esit, ke ntre, mmo enyene ndiman nkpo mbana kiet eken ke esit ndito eka. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/id-Latn_udhr.txt000066400000000000000000000002661316231664500266530ustar00rootroot00000000000000Semua orang dilahirkan merdeka dan mempunyai martabat dan hak-hak yang sama. Mereka dikaruniai akal dan hati nurani dan hendaknya bergaul satu sama lain dalam semangat persaudaraan. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ig-Latn_udhr.txt000066400000000000000000000002521316231664500266510ustar00rootroot00000000000000A mụrụ mmadụ nile n'ohere nakwa nha anya ugwu na ikike. E nyere ha uche na mmụọ ime ihe ziri ezi nke na ha kwesiri ịkpaso ibe ha agwa n'obi nwanne na nwanne. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ii-Yiii_udhr.txt000066400000000000000000000001711316231664500266600ustar00rootroot00000000000000ꊿꂷꃅꄿꐨꐥ,ꌅꅍꀂꏽꐯꒈꃅꐥꌐ。ꊿꊇꉪꍆꌋꆀꁨꉌꑌꐥ,ꄷꀋꁨꂛꊨꅫꃀꃅꐥꄡꑟ。 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ilo-Latn_udhr.txt000066400000000000000000000003471316231664500270420ustar00rootroot00000000000000Amin nga tao nga sibibiag ket naiyanak a siwawayawaya ken addaan iti agpapada nga dayaw ken kalintegan. Naikkanda ti panagikalintegan ken konsensya a nasken ti panagtitinnulong iti meysa ken meysa iti espiritu nga nainkak-absatan. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/io-Latn_udhr.txt000066400000000000000000000002241316231664500266600ustar00rootroot00000000000000Omna homi naskas libera ed egala relate digneso e yuri. Li es dotita per raciono e koncienco e devas agar vers l'una l'altra en spirito di frateso. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/is-Latn_udhr.txt000066400000000000000000000002541316231664500266670ustar00rootroot00000000000000Hver maður er borinn frjáls og jafn öðrum að virðingu og réttindum. Menn eru gæddir vitsmunum og samvisku, og ber þeim að breyta bróðurlega hverjum við annan. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/it-Latn_udhr.txt000066400000000000000000000002641316231664500266710ustar00rootroot00000000000000Tutti gli esseri umani nascono liberi ed eguali in dignità e diritti. Essi sono dotati di ragione e di coscienza e devono agire gli uni verso gli altri in spirito di fratellanza. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/iu-Cans_udhr.txt000066400000000000000000000005361316231664500266620ustar00rootroot00000000000000ᐃᓅᔪᓕᒫᑦ ᐊᓂᖅᑎᕆᔪᓕᒫᑦ ᐃᓅᓚᐅᕐᒪᑕ ᐃᓱᒪᕐᓱᕐᖢᑎᒃ ᐊᒻᒪᓗ ᐊᔾᔨᐅᖃᑎᒌᒃᖢᑎᒃ ᓂᕐᓱᐊᖑᓂᒃᑯᑦ ᐊᒻᒪᓗ ᐱᔪᓐᓇᐃᑎᑎᒍᑦ. ᐃᓱᖃᖅᑐᖁᑎᖃᕐᑎᑕᐅᕙᓕᕐᐳᑦ ᐱᔾᔪᑎᖃᕐᓂᒃᑯᑦ ᖃᑕᙳᑎᒌᑦᑎᐊᕆᐊᖃᕐᓂᒃᑯᓪᓗ. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ja-Jpan_udhr.txt000066400000000000000000000004001316231664500266310ustar00rootroot00000000000000すべての人間は、生まれながらにして自由であり、かつ、尊厳と権利とについて平等である。人間は、理性と良心とを授けられており、互いに同胞の精神をもって行動しなければならない。 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/jiv-Latn_udhr.txt000066400000000000000000000004321316231664500270420ustar00rootroot00000000000000Aents yajá nunkanam akínia asamtaish, metekrak ainiaji. Tumasha ni chichamenka tuke amiktin aíniawai. Ni iniakmamuri, ní chichamejaituke aniakmamsar chichakartin aíniawai. Tuma asamtai aents mash nekawar, penker metekrak, nuamtak wará warat shiir pujusarmi tusar aárma awai. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/jv-Latn_udhr.txt000066400000000000000000000003011316231664500266640ustar00rootroot00000000000000Saben uwong kalairake kanthi mardika lan darbe martabat lan hak-hak kang padha. Kabeh pinaringan akal lan kalbu sarta kaajab pasrawungan anggone memitran siji lan sijine kanthi jiwo sumadulur. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ka-Geor_udhr.txt000066400000000000000000000007301316231664500266440ustar00rootroot00000000000000ყველა ადამიანი იბადება თავისუფალი და თანასწორი თავისი ღირსებითა და უფლებებით. მათ მინიჭებული აქვთ გონება და სინდისი და ერთმანეთის მიმართ უნდა იქცეოდნენ ძმობის სულისკვეთებით. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/kbd-Cyrl_udhr.txt000066400000000000000000000004451316231664500270310ustar00rootroot00000000000000Цӏыху псори щхьэхуиту, я щӏыхьымрэ я хуэфащэхэмрэкӏэ зэхуэдэу къалъхур. Акъылрэ зэхэщӏыкӏ гъуазэрэ яӏэщи, зыр зым зэкъуэш зэхащІэ яку дэлъу зэхущытын хуейхэщ. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/kbp-Latn_udhr.txt000066400000000000000000000003041316231664500270240ustar00rootroot00000000000000Palʊlʊʊ ɛyaaa nɛ pa-tɩ yɔɔ wɛʊ kpaagbaa nɛ pɛwɛɛ kɩmaŋ wala ɛsɩndaa. Palʊlʊʊ-wɛ nɛ pɔ-lɔŋ nɛ pa-maɣzɩm; mbʊ yekina nɛ pɔsɔɔlɩ ɖama se pɛkɛ ɛyaa pa-tɩŋgɛ. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/kde-Latn_udhr.txt000066400000000000000000000001431316231664500270140ustar00rootroot00000000000000Vanu vohevohe vaidile n’chilambo valendene. Vanijaliwa ulimala vene. Pavele vanu pave na ulongo. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/kdh-Latn_udhr.txt000066400000000000000000000003461316231664500270240ustar00rootroot00000000000000Bánlʊrʊ́ʊ ɩrʊ́ báa weení na kezéńbíídi gɛ bɩka bɛdɛ́ɛ ɖɔɔzɩ́tɩ na yíkowá kɛgɛ́ɛ ɖéyí-ɖéyí gɛ. Bɔwɛná laakárɩ na ɩrʊ́tɩ bɩka bɩɩbɔ́ɔ́zɩ bɔcɔɔná ɖamá koobíre cɔwʊrɛ. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/kea-Latn_udhr.txt000066400000000000000000000003011316231664500270050ustar00rootroot00000000000000Tudo ser humano na ês mundo nacê libri e igual na sê dignidade e na sês drêto. Na sês razon e na sês concénça, tudo arguem debê porcêdê pa co tudo guenti na sprito di fraternidadi. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/kek-Latn_udhr.txt000066400000000000000000000002561316231664500270300ustar00rootroot00000000000000Chijunil li poyanam juntaq'eet wankil xloq'al naq nake'yo'la, ut kama' ak reheb' naq wan xna'leb'eb ut nake'reek'a rib', tento naq te'xk'am rib' sa' usilal chirib'ilrib'eb'. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/kg-Latn-AO_udhr.txt000066400000000000000000000002661316231664500271550ustar00rootroot00000000000000Bizingi bioso bisiwu ti batu bambutukanga mu kidedi ki buzitu ayi kibumswa. Bizingi-bene, batu, badi diela ayi tsi-ntima, bafwene kuzingila mbatzi-na-mbatzi-yandi mu mtima bukhomba. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/kg-Latn_udhr.txt000066400000000000000000000002531316231664500266540ustar00rootroot00000000000000Bantu nyonso, na mbutukulu kevwandaka na kimpwanza ya bawu, ngenda mpe baluve ya mutindu mosi. Mayela na mbanzulu je na bawu, ni yawu yina bafwana kusalasana na bumpangi. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/kha-Latn_udhr.txt000066400000000000000000000003111316231664500270110ustar00rootroot00000000000000Ïa ki bynriew baroh la kha laitluid bad ki ïaryngkat ha ka burom bad ki hok. Ha ki la bsiap da ka bor pyrkhat bad ka jingïatiplem bad ha ka mynsiem jingsngew shipara ki dei ban ïatrei bynrap lang. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/kjh-Cyrl_udhr.txt000066400000000000000000000005031316231664500270400ustar00rootroot00000000000000Полған на кізі пос паза тиң тјріпче паза тиң постың синін пілінгенін паза тјрелерініңде полча. Олардың сағынғаны паза арығ сағыс пар паза харындастар чіли тудынарға киректер. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/kk-Arab_udhr.txt000066400000000000000000000006331316231664500266310ustar00rootroot00000000000000بارلىق ادامدار تۋمىسىنان ازات جانە قادىر‐قاسىييەتى مەن كۇقىقتارى تەڭ بولىپ دۇنىييەگە كەلەدى. ادامدارعا اقىل‐پاراسات، ار‐وجدان بەرىلگەن، سوندىقتان ولار بىر‐بىرىمەن تۋىستىق، باۋىرمالدىق قارىم‐قاتىناس جاساۋلارى ٴتىيىس. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/kk-Cyrl_udhr.txt000066400000000000000000000006021316231664500266710ustar00rootroot00000000000000Барлық адамдар тумысынан азат және қадір-қасиеті мен кұқықтары тең болып дүниеге келеді. Адамдарға ақыл-парасат, ар-ождан берілген, сондықтан олар бір-бірімен туыстық, бауырмалдық қарым-қатынас жасаулары тиіс. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/kk-Latn_udhr.txt000066400000000000000000000003521316231664500266600ustar00rootroot00000000000000Barlıq adamdar twmısınan azat jäne qadir-qasïyeti men quqıqtarı teñ bolıp dünïyege keledi. Adamdarğa aqıl-parasat, ar-ojdan berilgen, sondıqtan olar bir-birimen twıstıq, bawırmaldıq qarım-qatınas jasawları tïis. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/kkh-Lana_udhr.txt000066400000000000000000000006101316231664500270020ustar00rootroot00000000000000ᨾᨶᩩᩔ᩼ᨴ᩠ᨦᩢᩉᩖᩣ᩠ᨿᨠᩮ᩠ᨯᩨᨾᩣᨾᩦᨻ᩠ᨦᩈᩁᩓᩢᨹ᩠ᨿ᩵ᨦᨻ᩠ᨿᨦᨠ᩠ᨶᩢ ᨶᩱᨠᩥᨲ᩠ᨲᩥᩈ᩠ᨠᩢ ᩓᩢᩈᩥᨴ᩠ᨵᩥ ᨲ᩵ᩣ᩠ᨦᨣᩳ᩶ᨣᩢᨾᩦᨾᨶᩮᩣᨵᨾ᩠ᨾ᩼ᩓᩢ ᨣ᩠ᩅᩁᨷᨭᩥᨷ᩠ᨲᩢᨲᩳ᩵ᨠ᩠ᨶᩢᨯᩢ᩠ᩅ᩠ᨿᨣ᩠ᩅᩣ᩠ᨾᨹ᩠ᨿ᩵ᨦᨻ᩠ᨿᨦᨠ᩠ᨶᩢ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/kl-Latn_udhr.txt000066400000000000000000000004171316231664500266630ustar00rootroot00000000000000Inuit tamarmik inunngorput nammineersinnaassuseqarlutik assigiimmillu ataqqinassuseqarlutillu pisinnaatitaaffeqarlutik. Solaqassusermik tarnillu nalunngissusianik pilersugaapput, imminnullu iliorfigeqatigiittariaqaraluarput qatanngutigiittut peqatigiinnerup anersaavani. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/km-Khmr_udhr.txt000066400000000000000000000010561316231664500266670ustar00rootroot00000000000000មនុស្សទាំងអស់ កើតមកមានសេរីភាព និងសមភាព ក្នុងផ្នែកសេចក្ដីថ្លៃថ្នូរនិងសិទ្ធិ។ មនុស្ស មានវិចារណញ្ញាណនិងសតិសម្បជញ្ញៈជាប់ពីកំណើត ហើយគប្បីប្រព្រឹត្ដចំពោះគ្នាទៅវិញទៅមក ក្នុង ស្មារតីភាតរភាពជាបងប្អូន។ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/kmb-Latn_udhr.txt000066400000000000000000000002311316231664500270200ustar00rootroot00000000000000O athu woso avwala abhuluka ni kusokela mu kijingu ni mu itekelu. Ene ala ni ulungilu ni kilunji ni atokala kulaya kumoxi nya akwa mu mixima ya undandu. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/kmr-Latn_udhr.txt000066400000000000000000000002231316231664500270410ustar00rootroot00000000000000Hemû mirov azad û di weqar û mafan de wekhev tên dinyayê. Ew xwedî hiş û şuûr in û divê li hember hev bi zihniyeteke bratiyê bilivin. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/kn-Knda_udhr.txt000066400000000000000000000007011316231664500266400ustar00rootroot00000000000000ಎಲ್ಲಾ ಮಾನವರೂ ಸ್ವತಂತ್ರರಾಗಿಯೇ ಜನಿಸಿದ್ದಾರೆ. ಹಾಗೂ ಘನತೆ ಮತ್ತು ಹಕ್ಕು ಗಳಲ್ಲಿ ಸಮಾನರಾಗಿದ್ದರೆ. ವಿವೇಕ ಮತ್ತು ಅಂತಃಕರಣ ಗಳನ್ನು ಪಡೆದವರಾದ್ದರಿಂದ ಅವರು ಪರಸ್ಪರ ಸಹೋದರ ಭಾವದಿಂದ ವರ್ತಿಸಬೇಕು. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/knc-Latn_udhr.txt000066400000000000000000000002221316231664500270220ustar00rootroot00000000000000Adamgana woso kambe katambo ye daraja-a hakkiwa-ason kalkalye. Hankal-a nazaru-asoro kəzəpkə ye suro hal nəmharamiben kamazasoga letaiyin ye. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ko-Hang_udhr.txt000066400000000000000000000003341316231664500266430ustar00rootroot00000000000000모든 인간은 태어날 때부터 자유로우며 그 존엄과 권리에 있어 동등하다. 인간은 천부적으로 이성과 양심을 부여받았으며 서로 형제애의 정신으로 행동하여야 한다. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ko-Kore_text.txt000066400000000000000000000013131316231664500267060ustar00rootroot00000000000000나랏〮말〯ᄊᆞ미〮 中듀ᇰ國귁〮에〮달아〮 文문字ᄍᆞᆼ〮와〮로〮서르ᄉᆞᄆᆞᆺ디〮아니〮ᄒᆞᆯᄊᆡ〮 이〮런젼ᄎᆞ〮로〮어린〮百ᄇᆡᆨ姓셔ᇰ〮이〮니르고〮져〮호ᇙ〮배〮이셔〮도〮 ᄆᆞᄎᆞᆷ〮내〯제ᄠᅳ〮들〮시러〮펴디〮몯〯ᄒᆞᇙ노〮미〮하니〮라〮 내〮이〮ᄅᆞᆯ〮爲윙〮ᄒᆞ〮야〮어〯엿비〮너겨〮 새〮로〮스〮믈〮여듧〮字ᄍᆞᆼ〮ᄅᆞᆯ〮ᄆᆡᇰᄀᆞ〮노니〮 사〯ᄅᆞᆷ마〯다〮ᄒᆡ〯ᅇᅧ〮수〯ᄫᅵ〮니겨〮날〮로〮ᄡᅮ〮메〮便뼌安ᅙᅡᆫ킈〮ᄒᆞ고〮져〮ᄒᆞᇙᄯᆞᄅᆞ미〮니라〮 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ko-Kore_udhr.txt000066400000000000000000000003341316231664500266660ustar00rootroot00000000000000모든 인간은 태어날 때부터 자유로우며 그 존엄과 권리에 있어 동등하다. 인간은 천부적으로 이성과 양심을 부여받았으며 서로 형제애의 정신으로 행동하여야 한다. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/koi-Cyrl_udhr.txt000066400000000000000000000003751316231664500270550ustar00rootroot00000000000000Быдӧс отирыс чужӧны вольнӧйезӧн да ӧткоддезӧн достоинствоын да правоэзын. Нылӧ сетӧм мывкыд да совесть овны ӧтамӧдныскӧт кыдз воннэзлӧ. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/koo-Latn_udhr.txt000066400000000000000000000003521316231664500270430ustar00rootroot00000000000000Abandu omububuthiranwa bakabuthawa ibanawithe obuthoki nobuholho obulingirirene, mobahangikwa ibanawithe amenge, neryo ibakathoka erighabania abathya ekibuya nekisandire. Nokweryo buli muyima atholere eryanza munyikiwe ngababuthenwe. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/kpe-Latn_udhr.txt000066400000000000000000000003071316231664500270320ustar00rootroot00000000000000Nukan gele kaa pələ kaa tanɔn, yiliɓa nu kəle maawiyə pələ da tɔɔi gaa ɲei yɛnɛyii hu kɛpələ kaalɔ tanɔn; di kɛmɛni a nukan ŋaa ɓə gɛɛ hwəkɛli wɛlikɛmaa ə lɔ di luwai. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/kqn-Latn_udhr.txt000066400000000000000000000002171316231664500270440ustar00rootroot00000000000000Bonse bantu basemwa bakasuluka kabiji baesakena pamo mubuneme. Baji na maana a kulanguluka kabiji bobila bantu bakwabo byubilo bakwibasekesha. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/kri-Latn_udhr.txt000066400000000000000000000002641316231664500270420ustar00rootroot00000000000000ɛvribɔdi bɔn fri ɛn gɛt in yon rayt, nɔn wan nɔ pas in kɔmpin. Wi ɔl ebul fɔ tink ɛn fɛnɔt wetin rayt ɛn rɔŋ pantap dat wi fɔ sabi aw fɔ liv lɛk wan big famili. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/krl-Latn_udhr.txt000066400000000000000000000002631316231664500270440ustar00rootroot00000000000000Kai rahvas roittahes vällinny da taza-arvozinnu omas arvos da oigevuksis. Jogahizele heis on annettu mieli da omatundo da heil vältämättäh pidäy olla keskenäh, kui vellil. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ktu-Latn_udhr.txt000066400000000000000000000002531316231664500270560ustar00rootroot00000000000000Bantu nyonso, na mbutukulu kevwandaka na kimpwanza ya bawu, ngenda mpe baluve ya mutindu mosi. Mayela na mbanzulu je na bawu, ni yawu yina bafwana kusalasana na bumpangi. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ku-Latn_udhr.txt000066400000000000000000000002231316231664500266670ustar00rootroot00000000000000Hemû mirov azad û di weqar û mafan de wekhev tên dinyayê. Ew xwedî hiş û şuûr in û divê li hember hev bi zihniyeteke bratiyê bilivin. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ky-Cyrl_udhr.txt000066400000000000000000000004771316231664500267210ustar00rootroot00000000000000Бардык адамдар өз беделинде жана укуктарында эркин жана тең укуктуу болуп жаралат. Алардын аң‐сезими менен абийири бар жана бири‐бирине бир туугандык мамилекылууга тийиш. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/la-Latn_udhr.txt000066400000000000000000000002241316231664500266450ustar00rootroot00000000000000Omnes homines dignitate et iure liberi et pares nascuntur, rationis et conscientiae participes sunt, quibus inter se concordiae studio est agendum. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/lad-Latn_udhr.txt000066400000000000000000000002441316231664500270130ustar00rootroot00000000000000Todos los umanos nasen libres i iguales en dinyidad i derechos i, komo estan ekipados de razon i konsensia, deven komportarsen kon ermandad los unos kon los otros. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/lb-Latn_udhr.txt000066400000000000000000000003371316231664500266530ustar00rootroot00000000000000All Mënsch kënnt fräi a mat deer selwechter Dignitéit an dene selwechte Rechter op d'Welt. Jiddereen huet säi Verstand a säi Gewësse krut an soll an engem Geescht vu Bridderlechkeet denen anere géintiwwer handelen. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/lg-Latn_udhr.txt000066400000000000000000000003011316231664500266470ustar00rootroot00000000000000Abantu bazaalibwa nga balina eddembe n'obuyinza ebyenkanankana, batondebwa nga balina amagezi era nga basobola okwawula ekirungi n'ekibi bwebatyo, buli omu agwana okuyisa munne nga muganda we. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/lia-Latn_udhr.txt000066400000000000000000000002151316231664500270160ustar00rootroot00000000000000Biya-mɛti fooma be kiyo ka kuyankaŋ iŋ kasɛmbɛ mɛnɛ in ka yiki. Bindɛ kiŋ ba niyɔ in masimɔkɔ, maka yiina wo ka hu wɛndi yande. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/lij-Latn_udhr.txt000066400000000000000000000002501316231664500270260ustar00rootroot00000000000000Tutte e personn-e nascian libere e pæge in dignitæ e driti. Son dotæ de raxon e coscensa e gh’an da agî l’unn-a verso l’atra inte ’n spirito de fradelansa. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/lld-Latn_udhr.txt000066400000000000000000000002611316231664500270250ustar00rootroot00000000000000Dötes les porsones nasc lëdies y cun la medema dignité y i medemi dërć. Ares à na rajun y na cosciënza y mëss s’incuntè öna cun l’atra te n spirit de fraternité. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ln-Latn_udhr.txt000066400000000000000000000002671316231664500266710ustar00rootroot00000000000000Bato nyɔ́nsɔ na mbótama bazalí nsɔ́mí mpé bakókání na limɛmya mpé makokí. Bazalí na mayɛ́lɛ mpé basengélí kovánda na bondeko o káti na bangó. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/lns-Latn_udhr.txt000066400000000000000000000003471316231664500270530ustar00rootroot00000000000000Á dzə̀ə́ wir dzə̀m réŋréŋ fó ghvəm wùn à fó ghày, á yo’ dzə̀ə́ wir msòŋ ji kwàn. Wìr dzə̀m k̀m k fómo woo fó kwà’tì wùn à fó vifii, a wù kér fó a yiì e wùmò’ woo wír moo fə́r və. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/lo-Laoo_udhr.txt000066400000000000000000000010101316231664500266510ustar00rootroot00000000000000ມະນຸດທຸກຄົນເກີດມາມີກຽດສັກສີ, ສິດທິ, ເສຣີພາບແລະຄວາມສເມີພາບເທົ່າທຽມກັນ. ທຸກໆຄົນມີເຫດຜົນແລະຄວາມຄິດຄວາມເຫັນສ່ວນຕົວຂອງໃຜຂອງມັນ, ແຕ່ວ່າມະນຸດທຸກໆຄົນຄວນປະພຶດຕໍ່ກັນຄືກັນກັບເປັນອ້າຍນ້ອງກັນ. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/lob-Latn_udhr.txt000066400000000000000000000002701316231664500270260ustar00rootroot00000000000000Teehuu sʋnɔ n ther ɛɛ nɩɩ bʋnɔ wa n do deeaʔ sɩ wʋ n makha samɩnɩ na nà hʋ tɩnɛpar rà. Thangba ti yɛr à pɛ yɛr jɩɩr nà fɩlwɛ sɩ a teena waan fʋkha omkhaa. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/lot-Latn_udhr.txt000066400000000000000000000002521316231664500270500ustar00rootroot00000000000000lsiuni aati dang iko ahodc hade ihaniere erre boo ve isi orrijori dang to nelotulo. Owoni isi iko negigilita bwo ve iko ataja. Ongida isi ihanie awatek hosi ihwo elarak. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/loz-Latn_udhr.txt000066400000000000000000000002351316231664500270570ustar00rootroot00000000000000Batu kaufela ba pepilwe inge ba lukuluhile ni liswanelo ze swana. Ba ba ni swanelo ya ku nahana mi ba swanela ku ba ni likezo za buzwale ku mutu yo mung'wi. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/lt-Latn_udhr.txt000066400000000000000000000002331316231664500266700ustar00rootroot00000000000000Visi žmonės gimsta laisvi ir lygūs savo orumu ir teisėmis. Jiems suteiktas protas ir sąžinė ir jie turi elgtis vienas kito atžvilgiu kaip broliai. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/lua-Latn_udhr.txt000066400000000000000000000002321316231664500270310ustar00rootroot00000000000000Bantu bonsu badi baledibwa badikadile ne badi ne makokeshi amwe. Badi ne lungenyi lwa bumuntu ne kondo ka moyo, badi ne bwa kwenzelangana malu mu buwetu. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/lue-Latn_udhr.txt000066400000000000000000000002211316231664500270330ustar00rootroot00000000000000Vatu vosena vasemuka yapwa hohamwe nakweseka mukuyoya chavo. Vatwama nachiyoyelo chalusesa chajingolo chakuzanga kulivwashana muchiyoyelo chavo. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/lun-Latn_udhr.txt000066400000000000000000000002071316231664500270500ustar00rootroot00000000000000Muntu wejima wasemuka walukbuka wesekana hamu ni akwawu mukumulemesha. Wenkewa kutong'ojoka nikuzatila hamu nimukwawu muntu muwunta'a. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/lus-Latn_udhr.txt000066400000000000000000000003271316231664500270600ustar00rootroot00000000000000Mi zawng zawng hi zalêna piang kan ni a, zahawmna leh dikna chanvoah intluk tlâng vek kan ni. Chhia leh tha hriatna fîm neia siam kan nih avangin kan mihring puite chungah inunauna thinlung kan pu tlat tur a ni. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/lv-Latn_udhr.txt000066400000000000000000000002721316231664500266750ustar00rootroot00000000000000Visi cilvēki piedzimst brīvi un vienlīdzīgi savā pašcieņā un tiesībās. Viņi ir apveltīti ar saprātu un sirdsapziņu, un viņiem jāizturas citam pret citu brālības garā. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/lzh-Hant_text.txt000066400000000000000000000003341316231664500270660ustar00rootroot00000000000000昔者莊周夢為胡蝶,栩栩然胡蝶也,自喻適志與!不知周也。俄然覺,則蘧蘧然周也。不知周之夢為胡蝶與,胡蝶之夢為周與?周與胡蝶,則必有分矣。此之謂物化。 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/mad-Latn_udhr.txt000066400000000000000000000002331316231664500270120ustar00rootroot00000000000000Sadajana oreng lahir mardika e sarenge drajat klaban hak-hak se dha-padha. Sadajana eparenge akal sareng nurani ban kodu areng-sareng akanca kadi taretan. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/mag-Deva_udhr.txt000066400000000000000000000006421316231664500270020ustar00rootroot00000000000000सब लोग आजादे जन्म लेब हई तथा सब के बराबरे सम्मान और अधिकार हइ। हुनखो के पास समझ-बूझ और अंत:करण के आवाज होब हई। और हुनका दोसरो के साथ भाईचारा के व्यवहार करे पड़ हई। nototools-2017-09-25-tooling-for-phase3-update/sample_texts/mai-Deva_udhr.txt000066400000000000000000000006301316231664500270010ustar00rootroot00000000000000सभ मानव जन्मतः स्वतन्त्र अछि तथा गरिमा आʼ अधिकारमे समान अछि। सभकेँ अपन–अपन बुद्धि आʼ विवेक छैक आओर सभकेँ एक दोसराक प्रति सौहार्दपूर्ण व्यवहार करबाक चाही। nototools-2017-09-25-tooling-for-phase3-update/sample_texts/mam-Latn_udhr.txt000066400000000000000000000002211316231664500270200ustar00rootroot00000000000000Kyaqiilqe winaq nchi itz'aj tuj kopib'il, juunx kychuwiinqal b'ix kyokleen, kyja'tzan tuj tb'aanal xiinv'il tu'n kyanq'iin tuj b'ank'u'j kyxool. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/maz-Latn_udhr.txt000066400000000000000000000001621316231664500270410ustar00rootroot00000000000000Texe yo nte̱'e̱ chjetrjoji, angezeji ximi xo'oji ñeje k'inchiji, nesta ra ngara na jo'o k'o dyaja e nte̱'e̱. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/mcd-Latn_udhr.txt000066400000000000000000000004441316231664500270200ustar00rootroot00000000000000Nantifin naanno rasisin cainnifoquin. Tsoan mato iscahuatiroma cuscan, -Manfin uhuunnacoinquin. Ahuua tsacatama rarama shara ninonfo ishon. Nantififain aton mapo shinantirofoquin. Ato nomuranrin chaca iyamarain sharamainqui icashon. Ascanrifiantan nantifin manifoti yorahuan tanannon icashu. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/mcf-Latn_udhr.txt000066400000000000000000000004411316231664500270170ustar00rootroot00000000000000Chidon tishaido yec matses abitedimbo bëdamboec isnanac bëdambo ictsiash. Chieshnanac icsambo ictsiash. Abitedimbo bëdamboec tabadac bëdambo ictsiash. Shubu abentsëcquidën tabadac birnboec abitedi tabadac bëdambo ictsiash - quequin chuipanëdash nidaid abitedinoësh cho-choquidon. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/men-Latn_udhr.txt000066400000000000000000000003051316231664500270300ustar00rootroot00000000000000Numuvuisia Kpɛlɛɛ ta ti le tɛ yɛ nduwɔ ya hu, tao ti nuvuu yei kɛɛ ti lɔnyi maa hɛwungɔ. Kiiya kɛɛ hindaluahu gɔɔla a yɛlɔ ti hun. Fale mahoungɔ ti ti nyɔnyɔhu hoi kia ndeegaa. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/mg-Latn_udhr.txt000066400000000000000000000002221316231664500266520ustar00rootroot00000000000000Teraka afaka sy mitovy zo sy fahamendrehana ny olombelona rehetra. Samy manan-tsaina sy fieritreretana ka tokony hifampitondra am- pirahalahiana. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/mh-Latn_udhr.txt000066400000000000000000000003411316231664500266550ustar00rootroot00000000000000Armij otemjej rej rujlok ilo anemkwoj im jonon utiej eo im maron ko air wot juon. Emwij lelok non ir maron in bukot non ir make im bareinwot boklikot kin men ko rej tomaki im bwe jerbal non dron ilo juon jitobon jimpenjatin. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/mi-Latn_udhr.txt000066400000000000000000000005671316231664500266700ustar00rootroot00000000000000Ko te katoa o nga tangata i te whanaungatanga mai e watea ana i nga here katoa; e tauriterite ana hoki nga mana me nga tika. E whakawhiwhia ana hoki ki a ratou te ngakau whai whakaaro me te hinengaro mohio ki te tika me te he, a e tika ana kia meinga te mahi a tetahi ki tetahi me ma roto atu i te wairua o te noho tahi, ano he teina he tuakana i ringa i te whakaaro kotahi. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/mic-Latn_udhr.txt000066400000000000000000000001751316231664500270260ustar00rootroot00000000000000Msit mimajulnu’k weskwijinu’ltijik alsumsultijik aqq newte’ tett wkpimte’tmut aqq koqwajo’taqnn wejkul’aqmititl. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/min-Latn_udhr.txt000066400000000000000000000002531316231664500270360ustar00rootroot00000000000000Sadonyo manusia dilahiakan mardeka dan punyo martabat sarato hak-hak nan samo. Mareka dikaruniai aka jo hati nurani, supayo satu samo lain bagaul sarupo urang badunsanak. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/miq-Latn_udhr.txt000066400000000000000000000002551316231664500270430ustar00rootroot00000000000000Upla sut ba kulkanka lakara, airaitka nanira bara pri, sin, aikuki, baku takisa. Bamna sins laka bri baku, lukanka bain pri baku aimuihni lakara, pana pana tabaikan kaiasa. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/mk-Cyrl_udhr.txt000066400000000000000000000004431316231664500266760ustar00rootroot00000000000000Ситe чoвeчки суштeствa сe рaѓaaт слoбoдни и eднaкви пo дoстoинствo и прaвa. Tиe сe oбдaрeни сo рaзум и сoвeст и трeбa дa сe oднeсувaaт eдeн кoн друг вo дуxoт нa oпштo чoвeчкaтa припaднoст. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ml-Mlym_udhr.txt000066400000000000000000000010301316231664500266750ustar00rootroot00000000000000മനുഷ്യരെല്ലാവരും തുല്യാവകാശങ്ങളോടും അന്തസ്സോടും സ്വാതന്ത്ര്യത്തോടുംകൂടി ജനിച്ചവരാണ്. അന്യോന്യം ഭ്രാതൃഭാവത്തോടെ പെരുമാറുവാനാണ് മനുഷ്യന്നു വിവേകബുദ്ധിയും മനസ്സാക്ഷിയും സിദ്ധമായിരിക്കുന്നത്. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/mn-Cyrl_udhr.txt000066400000000000000000000005051316231664500267000ustar00rootroot00000000000000Хүн бүр төрж мэндлэхдээ эрх чөлөөтэй, адилхан нэр төртэй, ижил эрхтэй байдаг. Оюун ухаан нандин чанар заяасан хүн гэгч өөр хоорондоо ахан дүүгийн үзэл санаагаар харьцах учиртай. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/mn-Mong_udhr.txt000066400000000000000000000010641316231664500266700ustar00rootroot00000000000000ᠬᠦᠮᠦᠨ ᠪᠦᠷ ᠲᠥᠷᠥᠵᠦ ᠮᠡᠨᠳᠡᠯᠡᠬᠦ ᠡᠷᠬᠡ ᠴᠢᠯᠥᠭᠡ ᠲᠡᠢ᠂ ᠠᠳᠠᠯᠢᠬᠠᠨ ᠨᠡᠷ᠎ᠡ ᠲᠥᠷᠥ ᠲᠡᠢ᠂ ᠢᠵᠢᠯ ᠡᠷᠬᠡ ᠲᠡᠢ ᠪᠠᠢᠠᠭ᠃ ᠣᠶᠤᠨ ᠤᠬᠠᠭᠠᠨ᠂ ᠨᠠᠨᠳᠢᠨ ᠴᠢᠨᠠᠷ ᠵᠠᠶᠠᠭᠠᠰᠠᠨ ᠬᠦᠮᠦᠨ ᠬᠡᠭᠴᠢ ᠥᠭᠡᠷ᠎ᠡ ᠬᠣᠭᠣᠷᠣᠨᠳᠣ᠎ᠨ ᠠᠬᠠᠨ ᠳᠡᠭᠦᠦ ᠢᠨ ᠦᠵᠢᠯ ᠰᠠᠨᠠᠭᠠ ᠥᠠᠷ ᠬᠠᠷᠢᠴᠠᠬᠥ ᠤᠴᠢᠷ ᠲᠠᠢ᠃ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/mnw-Mymr_udhr.txt000066400000000000000000000013351316231664500271040ustar00rootroot00000000000000မၞိဟ်ဂမၠိုၚ် အိုဿီုတအ်ဝွံ စနူသၠးတိတ် နူဂဝ်ဂၞဴ ဒှ်မၞိဟ်သၠးပွးအိုတ်တုဲ အခေါၚ်အရာ ကေုာံ သိက္ခာမၞိဟ်တအ် တုပ် သၟဟ်ရ။ မၞိဟ်တအ်ဂှ် နွံကဵုဓရ်စၚ်ခြၚ်ကေုာံ သမ္တီညာဏ် ဓဝ်ပါ်ပဲါ ခိုဟ်ပရေံနွံတုဲ ညးမွဲ ကေုာံ ညးမွဲ ထေက်ကဵု သ္ဒးဒ္ဂေတ်ဗက် ဆက်ဆောံညးသ္ကအ် နစိုတ်ဓာတ်ကောံဒေံအရေ။ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/mos-Latn_udhr.txt000066400000000000000000000003371316231664500270540ustar00rootroot00000000000000Ninsaalbã fãa sã n doge, ned fãa so a menga, ned pa rogd n yaa yamb ye, nebã fãa zema taab b yel-segdɩ la b burkĩndlem wɛɛngẽ. Nebã fãa tara yam la tagsgo, ned fãa togame n vɩɩnd ne a to saam-biir pʊgẽ. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/mr-Deva_udhr.txt000066400000000000000000000007741316231664500266620ustar00rootroot00000000000000सर्व मनुष्यजात जन्मतःच स्वतंत्र आहे व सर्वजणांना समान प्रतिष्ठा व समान अधिकार आहेत. त्यांना विचारशक्ती व सद्सद्विवेकबुद्धी लाभलेली आहे व त्यांनी एकमेकांशी बंधुत्वाच्या भावनेने आचरण करावे. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ms-Arab_udhr.txt000066400000000000000000000004461316231664500266450ustar00rootroot00000000000000سموا مأنسي دلاهيركن بيبس دان سامرات دري سڬي كموليأن دان حق٢. مريك ممڤوڽاي ڤميكيرن دان ڤراسأن هاتي دان هندقله برتيندق د انتارا ساتو سام لائن دڠن سماڠت ڤرساودارأن. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ms-Latn_udhr.txt000066400000000000000000000003111316231664500266650ustar00rootroot00000000000000Semua manusia dilahirkan bebas dan samarata dari segi kemuliaan dan hak-hak. Mereka mempunyai pemikiran dan perasaan hati dan hendaklah bertindak di antara satu sama lain dengan semangat persaudaraan. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/mt-Latn_udhr.txt000066400000000000000000000002631316231664500266740ustar00rootroot00000000000000Il-bnedmin kollha jitwieldu ħielsa u ugwali fid-dinjità u d-drittijiet. Huma mogħnija bir-raġuni u bil-kuxjenza u għandhom iġibu ruħhom ma’ xulxin bi spirtu ta’ aħwa. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/mto-Latn_udhr.txt000066400000000000000000000002721316231664500270530ustar00rootroot00000000000000Tum akijpxa xa ve’e jayu kye’ex, ve’em ax jö’n tyukidaakjüva tijaty mëkin; ve’empa axjö’n jä jyööjtykin di yaknaxy, jats oy myujatyöö’tëjk di mëët nayjavajüt. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/mxi-Latn_udhr.txt000066400000000000000000000002701316231664500270470ustar00rootroot00000000000000Totos les esseres humanos nascent libberos et eguales in dignitate e dretos e, dotatos commo stant de racione e conscientia, devent comportarse in germanitate les unos con les altros. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/mxv-Latn_udhr.txt000066400000000000000000000002101316231664500270560ustar00rootroot00000000000000Taka ma ñayi nguiakoi ñayivi ñatu na ja'a tnu'u ja kusa'a ndeva'ña-i, su'uva kajito va'aña-i, yuka ku ja jiniñu'u ja kukototna-i. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/my-Mymr_udhr.txt000066400000000000000000000013531316231664500267300ustar00rootroot00000000000000လူတိုင်းသည် တူညီ လွတ်လပ်သော ဂုဏ်သိက္ခာဖြင့် လည်းကောင်း၊ တူညီလွတ်လပ်သော အခွင့်အရေးများဖြင့် လည်းကောင်း၊ မွေးဖွားလာသူများ ဖြစ်သည်။ ထိုသူတို့၌ ပိုင်းခြား ဝေဖန်တတ်သော ဉာဏ်နှင့် ကျင့်ဝတ် သိတတ်သော စိတ်တို့ရှိကြ၍ ထိုသူတို့သည် အချင်းချင်း မေတ္တာထား၍ ဆက်ဆံကျင့်သုံးသင့်၏။ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/mzi-Latn_udhr.txt000066400000000000000000000002421316231664500270500ustar00rootroot00000000000000Nga ndindie xuta ngatsen de’e ko ngondsejen ngatjin-kjua nga xchandinkon nt’a ngondsejen ngatjin kokjin-tokon,kotjinkjua nga takie engajan skuendinkon xkjin. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/nah-Latn_udhr.txt000066400000000000000000000003251316231664500270210ustar00rootroot00000000000000Nochi tlakamej uan siuamej kipiaj manoj kuali tlakatisej, nochi san se totlatechpouiltilis uan titlatepanitalojkej, yeka moneki kuali ma timouikakaj, ma timoiknelikaj, ma timotlasojtlakaj uan ma timotlepanitakaj. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/nan-Hans_udhr.txt000066400000000000000000000001771316231664500270270ustar00rootroot00000000000000人人生而自由,在尊严合权利上一律平等。因赋有脾胃合道行,并着以兄弟关系的精神相对待。 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/nb-Latn_udhr.txt000066400000000000000000000002521316231664500266510ustar00rootroot00000000000000Alle mennesker er født frie og med samme menneskeverd og menneskerettigheter. De er utstyrt med fornuft og samvittighet og bør handle mot hverandre i brorskapets ånd. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/nba-Latn_udhr.txt000066400000000000000000000002521316231664500270120ustar00rootroot00000000000000Vanu voxe vakasemuka mu cizango co mumo lika mu vulemu co kulimanena. Vakevo vakala na mangana co na mbunge co vana pande kulinga vamo na vakwavo na mbunge ya vuna yina. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/nds-Latn_udhr.txt000066400000000000000000000002031316231664500270320ustar00rootroot00000000000000All de Minschen sünd frie un gliek an Wüürd un Rechten baren. Se hebbt Vernunft un een Geweten un se schüllt sik Bröder sien. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ne-Deva_udhr.txt000066400000000000000000000007031316231664500266360ustar00rootroot00000000000000सबै व्यक्तिहरू जन्मजात स्वतन्त्र हुन् ती सबैको समान अधिकार र महत्व छ। निजहरूमा विचार शक्ति र सद्विचार भएकोले निजहरूले आपस्तमा भ्रातृत्वको भावनाबाट व्यवहार गर्नु पर्छ। nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ng-Latn_udhr.txt000066400000000000000000000002451316231664500266600ustar00rootroot00000000000000Aantu ayehe oya valwa ye na emanguluko noye na ondilo yi thike pamwe osho wo uuthemba. Oye na omaipulo goondunge neiuvo onkene naa kalathane mombepo yuumwainathana. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/nio-Cyrl_udhr.txt000066400000000000000000000004341316231664500270540ustar00rootroot00000000000000Бәнде” ӈанасанә” ӈәтукәнды” нендя”туо” ӈонә хонсы хелиде” ӈиле мәнәй (правай). Сытыӈ хонды” ӈиле ӈонда ӈонә сяру, дүзытәндыӈ ихүтүӈ нягәә” сүөарусә”. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/njo-Latn_udhr.txt000066400000000000000000000002721316231664500270420ustar00rootroot00000000000000Meimchir ajak temeten aser tashi kasa nüji nung asor. Parnok dak bilemtettsü shisatsü aser tangatetba kasa agüja aliba jagi külem adianu rongnung tanela ka nung lungjema alitsüla. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/nku-Latn_udhr.txt000066400000000000000000000001521316231664500270460ustar00rootroot00000000000000Igooyoo pɛɛ hʋn taa. Bɔ pɛɛ jabaga bɔrɔ. Hɔ ya gʋʋn’n bɔɔ hɛ pɛɛ, hɔ hɛ gusɛgɛ’n. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/nl-Latn_udhr.txt000066400000000000000000000002741316231664500266670ustar00rootroot00000000000000Alle mensen worden vrij en gelijk in waardigheid en rechten geboren. Zij zijn begiftigd met verstand en geweten, en behoren zich jegens elkander in een geest van broederschap te gedragen. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/nn-Latn_udhr.txt000066400000000000000000000002251316231664500266650ustar00rootroot00000000000000Alle menneske er fødde til fridom og med same menneskeverd og menneskerettar. Dei har fått fornuft og samvit og skal leve med kvarandre som brør. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/no-Latn_udhr.txt000066400000000000000000000002521316231664500266660ustar00rootroot00000000000000Alle mennesker er født frie og med samme menneskeverd og menneskerettigheter. De er utstyrt med fornuft og samvittighet og bør handle mot hverandre i brorskapets ånd. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/not-Latn_udhr.txt000066400000000000000000000004701316231664500270540ustar00rootroot00000000000000Antagaisati matsiguenga ibogaiguë matsiguengasonorl. Aisati icantaigaca. Teni iromerataiguengani. Antagaisati iquengaigui aisati igóiguiro ora caninaro aisati igóiguiro ora te onganinate. Iroro caninataque omagaro matsiguenga iraniacaninataigueri ira basiniati matsiguenga aisati ingantaiguerí ora caninaro. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/npi-Deva_udhr.txt000066400000000000000000000006661316231664500270320ustar00rootroot00000000000000सबै व्यक्ति हरू जन्मजात स्वतन्त्र हुन ती सबैको समान अधिकार र महत्व छ। निजहरूमा विचार शक्ति र सद्धिचार भएकोले निजहरूले आपसमा भातृत्वको भावना बाट व्यवहार गर्नु पर्छ। nototools-2017-09-25-tooling-for-phase3-update/sample_texts/nr-Latn_udhr.txt000066400000000000000000000002311316231664500266660ustar00rootroot00000000000000Abantu bonke bazalwa bekhululekile njalo belingana kumalungelo abo. Balesipho sikanembeza, ngakho bamele baphathane ngomoya otshengisa ubuhlobo lobunye. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/nso-Latn_udhr.txt000066400000000000000000000002531316231664500270520ustar00rootroot00000000000000Batho ka moka ba belegwe ba lokologile le gona ba na le seriti sa go lekana le ditokelo. Ba filwe monagano le letswalo mme ba swanetše go swarana ka moya wa bana ba mpa. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/nv-Latn_udhr.txt000066400000000000000000000003561316231664500267020ustar00rootroot00000000000000Bilaʼashdaʼii tʼáá ałtsoh yiníkʼehgo bidizhchįh dóó aheełtʼeego ílį́į́go bee baahóchįʼ. Eíí háníʼ dóó hánítshakees hwiihdaasyaʼ eíí binahjį́ʼ ahidiníłnáhgo álíleekʼehgo kʼé bee ahił niidlį́. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ny-Latn-chechewa_udhr.txt000066400000000000000000000002551316231664500304500ustar00rootroot00000000000000Anthu onse amabadwa aufulu ndiponso ofanana mu ulemu ndi ufulu wao. Iwowa ndi wodalitsidwa ndi mphamvu zoganiza ndi chikumbumtima ndipo achitirane wina ndi mnzake mwaubale. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ny-Latn-chinyan_udhr.txt000066400000000000000000000002331316231664500303260ustar00rootroot00000000000000Anthu onse amabadwa mwa ufulu ndiponso olinganga m' makhalidwe ao. Iwo amakhala ndi nzeru za cibadwidwe kotero ayenera kucitirana zabwino wina ndi mnzace. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ny-Latn-chinyanj_udhr.txt000066400000000000000000000002331316231664500305000ustar00rootroot00000000000000Anthu onse amabadwa mwa ufulu ndiponso olinganga m' makhalidwe ao. Iwo amakhala ndi nzeru za cibadwidwe kotero ayenera kucitirana zabwino wina ndi mnzace. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ny-Latn_udhr.txt000066400000000000000000000002551316231664500267030ustar00rootroot00000000000000Anthu onse amabadwa aufulu ndiponso ofanana mu ulemu ndi ufulu wao. Iwowa ndi wodalitsidwa ndi mphamvu zoganiza ndi chikumbumtima ndipo achitirane wina ndi mnzake mwaubale. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/nym-Latn_udhr.txt000066400000000000000000000001021316231664500270470ustar00rootroot00000000000000Banhu bose bubyalagwa biyagalulile, n’ikujo haki zilenganelile. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/nyn-Latn_udhr.txt000066400000000000000000000002771316231664500270650ustar00rootroot00000000000000Abantu nibazaarwa baine obugabe nobushoborozi ebiri kwingana nibahangwa baine obwengye kandi barikubasa kwahura ekirungi nekibi, nahabwekyo abantu bashemereire kutuura kumwe nkabanya Uganda. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/nzi-Latn_udhr.txt000066400000000000000000000002551316231664500270550ustar00rootroot00000000000000Menli muala di bɛ ti anwo na eza noko bɛsɛ wɔ dibilɛ nee adenlenyianlɛ nu. Bɛlɛ ndwenlenwo nee adwenle, yemɔti ɔwɔ kɛ bɛkile adiemayɛlɛ bɛmaa bɛ nwo ngoko. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/oc-Latn_udhr.txt000066400000000000000000000002741316231664500266570ustar00rootroot00000000000000Totes los èssers umans naisson liures e egals en dignitat e en dreches. Son dotats de rason e de consciéncia e se devon comportar los unes amb los autres dins un esperit de fraternitat. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/oj-Cans_udhr.txt000066400000000000000000000004671316231664500266600ustar00rootroot00000000000000ᑭᑲᓇᐌᓀᓐ ᑲᐱᒪᑎᓯᐗᑦ ᓂᑕᐎᑭᐗᒃ ᑎᐯᓂᒥᑎᓱᐎᓂᒃ ᒥᓇ ᑕᐱᑕ ᑭᒋᐃᓀᑕᑯᓯᐎᓐ ᑲᔦ ᑌᐸᑫᑕᑯᓯᐎᓐ. ᐅᑕᔦᓇᐗ ᒥᑲᐎᐎᓐ ᑲᔦ ᓂᑄᑲᐎᓐ ᒥᓇᐗ ᑕᔥ ᒋᐃᔑᑲᓇᐗᐸᑎᐗᐸᓐ ᐊᒐᑯ ᒥᓄᐎᒋᐎᑎᐎᓂᒃ. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/oki-Latn_udhr.txt000066400000000000000000000002411316231664500270320ustar00rootroot00000000000000Piik togol kosigotiik en katiagetapkei koguyet ak imandanyuwan koyuyosin togol kogigigochi ngomnotet ak koperuret en iyon konyolu koyochigei oteptop tupchondit. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/om-Latn_udhr.txt000066400000000000000000000003001316231664500266570ustar00rootroot00000000000000Namooti hundinuu birmaduu ta'anii mirgaa fi ulfinaanis wal-qixxee ta'anii dhalatan. Sammuu fi qalbii ittiin yaadan waan uumamaan kennameef, hafuura obbolummaatiin walii-wajjin jiraachuu qabu. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/orh-Latn_udhr.txt000066400000000000000000000002641316231664500270450ustar00rootroot00000000000000Beyel bambur zhiyu bishi, zhunyan-du bineken chuanli-du bambur pingdeng bishi. Nugartin lishing bineken liangshin bishi, akin nekun guanshi-ngi chingshen-du-in duidai-meet-ki-tin. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/os-Cyrl_udhr.txt000066400000000000000000000004161316231664500267100ustar00rootroot00000000000000Адӕймӕгтӕ се 'ппӕт дӕр райгуырынц сӕрибарӕй ӕмӕ ӕмхуызонӕй сӕ барты. Уыдон ӕххӕст сты зонд ӕмӕ намысӕй, ӕмӕ кӕрӕдзийӕн хъуамӕ уой ӕфсымӕрты хуызӕн. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/osa-Osge_text.txt000066400000000000000000000005141316231664500270560ustar00rootroot00000000000000𐒻𐒷 𐓈𐓂𐒷 𐒷𐒼𐒻𐓄𐓇𐒷 𐒼𐓂͘𐒴𐒰. 𐓒𐒰𐓁𐒻 𐓏𐒰𐓏𐒻𐒹𐓃 𐓄𐒻 𐒼𐓂͘𐒴𐒰. 𐓏𐒰𐓓𐒰𐓓𐒷 𐒻𐒷 𐓏𐒰͘𐓍𐒰𐒼𐒻𐒼𐒰͘ 𐒼𐓂͘𐒴𐒰. 𐓍𐒰𐒿𐒻 𐓓𐒰𐓀𐒻𐒷. 𐒰͘𐓏𐒰𐓇𐒼𐒰͘ 𐓈𐒳͘ 𐒰͘𐒼𐒰𐓍𐒷. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ote-Latn_udhr.txt000066400000000000000000000002131316231664500270360ustar00rootroot00000000000000Gotho nu kja'ni i mu̱i ra zoo i gotho ro kuchti, i tu'ni nu ro ña padä bini i da budi, da mu̱i ra zoo koyu gotho yu kja'ni i yo kuadi. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/pa-Guru_udhr.txt000066400000000000000000000011261316231664500266770ustar00rootroot00000000000000ਸਾਰਾ ਮਨੁੱਖੀ ਪਰਿਵਾਰ ਆਪਣੀ ਮਹਿਮਾ, ਸ਼ਾਨ ਅਤੇ ਹੱਕਾਂ ਦੇ ਪੱਖੋਂ ਜਨਮ ਤੋਂ ਹੀ ਆਜ਼ਾਦ ਹੈ ਅਤੇ ਸੁੱਤੇ ਸਿੱਧ ਸਾਰੇ ਲੋਕ ਬਰਾਬਰ ਹਨ। ਉਨ੍ਹਾਂ ਸਭਨਾਂ ਨੂੰ ਤਰਕ ਅਤੇ ਜ਼ਮੀਰ ਦੀ ਸੌਗਾਤ ਮਿਲੀ ਹੋਈ ਹੈ ਅਤੇ ਉਨ੍ਹਾਂ ਨੂੰ ਭਰਾਤਰੀਭਾਵ ਦੀ ਭਾਵਨਾ ਰੱਖਦਿਆਂ ਆਪਸ ਵਿੱਚ ਵਿਚਰਣਾ ਚਾਹੀਦਾ ਹੈ। nototools-2017-09-25-tooling-for-phase3-update/sample_texts/pam-Latn_udhr.txt000066400000000000000000000002541316231664500270310ustar00rootroot00000000000000Ding sablang tau mibait lang malaya at pante-pante king karangalan at karapatan. Ila mipagkaluban lang katuliran at konsensiya ay dapat misaupan king diwang pamikapatiran. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/pap-Latn_udhr.txt000066400000000000000000000002461316231664500270350ustar00rootroot00000000000000Tur ser humano ta nace liber y igual den dignidad y den derecho. Nan ta dota cu rason y cu consenshi y nan mester comporta nan den spirito di fraternidad pa cu otro. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/pau-Latn_udhr.txt000066400000000000000000000002561316231664500270430ustar00rootroot00000000000000A rogui 'l chad el mechell a ngarngii a ilmokl er tir ra diosisiu el llemalt. Ngarngii er tir a uldesuir mete mo meruul el mo rar bebil lokiu a ungil 'l omeruul ra klauchad. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/pbb-Latn_udhr.txt000066400000000000000000000003251316231664500270160ustar00rootroot00000000000000Ya'nwe'wewa'te' maa nasapa ha'dacehk hi'pku up'hi', wëtte u'huwa'hi'pta', eena' eena' f'i'zewa' hi'pta', üus hi'pta' d'ik'the hi'pta' naapa'kate. Sa' h'ukaysa üus hi'pcehktha'w sa' pyakhna'we f'i'ze hi'ptha'w. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/pcd-Latn_udhr.txt000066400000000000000000000003121316231664500270150ustar00rootroot00000000000000Tos lès-omes vinèt å monde lîbes èt égåls po çou qu'èst d' leû dignité èt d' leûs dreûts. Leû re°zon èt leû consyince elzî fe°t on d'vwér di s'kidûre inte di zèle come dès frès nototools-2017-09-25-tooling-for-phase3-update/sample_texts/pcm-Latn_udhr.txt000066400000000000000000000003711316231664500270330ustar00rootroot00000000000000Everi human being, naim dem born free and dem de equal for dignity and di rights wey we get, as human beings, God come give us beta sense wey we de take tink well, well and beta mind, sake for dis, we must to treat each other like broda and sister. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/pis-Latn_udhr.txt000066400000000000000000000002671316231664500270530ustar00rootroot00000000000000Evri man en mere olketa born frii en ikwol lo digniti en raits blo olketa. Olketa evriwan olketa garem maeni fo tingting en olketa sapos fo treatim isada wittim spirit blo bradahood. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/piu-Latn_udhr.txt000066400000000000000000000006211316231664500270470ustar00rootroot00000000000000Nganana maru tjuta, tjulkura tjuta, manta yurungka parrari nyinapayi tjutanya liipulala nyinanyi, nganana yanangu maru tjuta wiya kuyakuya. Yuwankarrangkuya palya nintingku kulini. Tjanaya palya kutjupa tjutaku tjukarurru nyinanytjaku, walytja tjuta nguwanpa, mingarrtjuwiya. Tjungungku palyangku kurrunpa kutjungku. Wangka ngaangku nganananya tjakultjunanyi rapa ngaranytjaku kutjupa tjuta nguwanpa. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/pl-Latn_udhr.txt000066400000000000000000000002421316231664500266640ustar00rootroot00000000000000Wszyscy ludzie rodzą się wolni i równi w swojej godności i prawach. Są obdarzeni rozumem i sumieniem i powinni postępować wobec siebie w duchu braterstwa. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/pnb-Arab_udhr.txt000066400000000000000000000005311316231664500270000ustar00rootroot00000000000000سارے انسان آزاد تے حقوق تے عزت دے لحاظ نال برابر پیدا ہوندے نیں ۔ ۔ اوہ عقل سمجھ تے چنگے مندے دی پچھان تے احساس رکھدے نے ایس واسطے اوہناں نوں اک دوجے نال بھائی چارے والا سلوک کرنا چاہی دا اے ۔ ۔ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/pon-Latn_udhr.txt000066400000000000000000000002561316231664500270520ustar00rootroot00000000000000Tohn sampa karos ipwiwei nan saledek oh duwepenehte nan arail wasa oh arail pwung. Arail marain oh pehm ih utakerail kahrehda korusie konehng sawaspene nin duwen pirien ehu. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/pov-Latn_udhr.txt000066400000000000000000000002371316231664500270610ustar00rootroot00000000000000Tudu pekaduris ta padidu libri i igual na balur suma na diritus. Suma e dadu kapasidadi di pensa, e tene tambi konsiensia, e dibi di trata ñutru suma ermons. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ppl-Latn_udhr.txt000066400000000000000000000001741316231664500270500ustar00rootroot00000000000000Muchi ne tay gen tu weyga nestiwit tamagixti genga tik ekneliat wan ipal wan gichiwtiwit ipal ma munegigan ne se pal ne se. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/prq-Latn_udhr.txt000066400000000000000000000001211316231664500270470ustar00rootroot00000000000000Yudabu dasibi jabiaskadi akin, xinantidubuki. Javen taea jau jaibunamenunbunven. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ps-Arab_udhr.txt000066400000000000000000000004221316231664500266420ustar00rootroot00000000000000د بشر ټول افراد آزاد نړۍ ته راځی او د حيثيت او حقوقو له پلوه سره برابر دی. ټول د عقل او وجدان خاوندان دی او يو له بل سره د ورورۍ په روحيې سره بايد چلند کړی. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/pt-Latn-BR_udhr.txt000066400000000000000000000002651316231664500272020ustar00rootroot00000000000000Todos os seres humanos nascem livres e iguais em dignidade e direitos. São dotados de razão e consciência e devem agir em relação uns aos outros com espírito de fraternidade. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/pt-Latn-PT_udhr.txt000066400000000000000000000002571316231664500272230ustar00rootroot00000000000000Todos os seres humanos nascem livres e iguais em dignidade e em direitos. Dotados de razão e de consciência, devem agir uns para com os outros em espírito de fraternidade. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/pt-Latn_udhr.txt000066400000000000000000000002651316231664500267010ustar00rootroot00000000000000Todos os seres humanos nascem livres e iguais em dignidade e direitos. São dotados de razão e consciência e devem agir em relação uns aos outros com espírito de fraternidade. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/qu-Latn_udhr.txt000066400000000000000000000002231316231664500266750ustar00rootroot00000000000000Tucuy runacuna quishpirihuán huiñán, pactacunahuampes, pay pura, umahuán, ayahuán chay shucuna shina, chaymantami shuclla shina causangacuna. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/quc-Latn_udhr.txt000066400000000000000000000004041316231664500270410ustar00rootroot00000000000000Konojel ri winaq are taq ke'alaxik pa junaman ya'tal chkech kakechab'ej ronojel ri utzil; utz kakib'ano, kakichomaj, kakib'ij jasa je' ri k'o pa kanima, rumal che ri junam kib'antajik. Rajawaxik xuqe' kakimulij kib' che utzukuxuk ri loq'ob'al pa we uwachulew. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/qug-Latn_udhr.txt000066400000000000000000000003431316231664500270470ustar00rootroot00000000000000Tukuy runakunami maypipash kishpirishka, sumaykaypi(dignidad) paktapakta wacharin. Chay wawakunaka sumak yuyaykuna, tiksiyuyay (fundamental), huntami kan; chaymantami runapuraka shukllashina tukushpa, yanaparishpa kawsana kan. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/quh-Latn_udhr.txt000066400000000000000000000004031316231664500270450ustar00rootroot00000000000000Tukuy kay pachaman paqarimujkuna libres nasekuntu tukuypunitaj kikin obligacionesniycjllataj, jinakamalla honorniyojtaj atiyniyojtaj, chantaqa razonwantaj concienciawantaj dotasqa kasqankurayku, kawsaqe masipura jina, tukuy uj munakuyllapi kawsakunanku tian. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/quy-Latn_udhr.txt000066400000000000000000000002741316231664500270740ustar00rootroot00000000000000Lliw runakunam nacesqanchikmantapacha libre kanchik, lliw derechonchikpipas iguallataqmi kanchik. Yuyayniyoq kasqanchikraykum hawkalla aylluntin hina kawsayta debenchik llapa runakunawan. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/quz-Latn_udhr.txt000066400000000000000000000003131316231664500270670ustar00rootroot00000000000000Llapa runan kay pachapi paqarin qispisqa, "libre" flisqa, allin kausaypi, chaninchasqa kausaypi kananpaq, yuyayniyoq, yachayniyoq runa kasqanman jina. Llapa runamasinwantaqmi wauqentin jina munanakunan. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/qva-Latn_udhr.txt000066400000000000000000000003741316231664500270460ustar00rootroot00000000000000Lapan runa kay pachach'u yurin libri kawananpaq, lapanchinuy iwal respetasha kananpaqmi, mana pipis jarupänanpaq, lapanpis iwal yarpach'akuy yach'aqmi, alita mana alita tantiyar kawananpaq. Chaynuy runa masinwan juknin jukninwan kuyanakur kapäkuchun nototools-2017-09-25-tooling-for-phase3-update/sample_texts/qvc-Latn_udhr.txt000066400000000000000000000003721316231664500270460ustar00rootroot00000000000000Yumbay ollqokuna, warmikuna pullalla kashun leyninchiqkunawan. Manam ni pipapis kriyadunchu kanchiqllapa. Suqninchiq, suqninchiq atinchiqllapa yuyayta "imam alli, imam mana allichu" nishpa. Chayshina kaptin, shumaqta tiyashunllapa suq ayllushinalla. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/qvh-Latn_udhr.txt000066400000000000000000000003751316231664500270560ustar00rootroot00000000000000Lapan runakunapis yurikuyan librimi y wakinkaqkunanaw rispitashqa, mana jarukushqa kayänanpaq. Saynawmi runakunaqa yuriyan shumaq yarpayyuq, alitapis mana alitapis reqiykar y seqay kuyapäkuyyuq. Saymi runakuna ali kawakuyänan jukninwan jukninwanpis. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/qvm-Latn_udhr.txt000066400000000000000000000002741316231664500270610ustar00rootroot00000000000000Lapantsikunapis Iibrimi yurishqantsi. Bälintsimi y derëchuntsikunapis wakinkaqkunanoqlapami. Yarpaynintsikunapis kaykanmi runa mayintsikunawan juk wawqinoq kuyanakur kawapäkunantsipaq. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/qvn-Latn_udhr.txt000066400000000000000000000004361316231664500270620ustar00rootroot00000000000000Lapan runas kay pachachru nasimun juk rantisha runanuy mana pitas sirbinanpaqmi, alipa rikasha kananpaqmi, washasha kananpaqmi. Lapan runakunas nasipaakamun yarpayniyoqmi naatan tantiyayniyoqmi ima lutanta rurapaakurursi tantiyakunanpaq. Lapan runakunas kawapaakunaman juk wawqenuylam. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/qwh-Latn_udhr.txt000066400000000000000000000003771316231664500270610ustar00rootroot00000000000000Meyqan nunapis manam pipa sirweqnin nuna kananpaqtsu yurikushqa. I nuna karninmi meyqan nunapis juk láyatsu kayanman derëchunkunachowpis. I yarpachakiyta yacharninmi i allita mana allita shonqonkunachow mákurninmi nunakuna jukninta wiyanakur kayanman. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/qxn-Latn_udhr.txt000066400000000000000000000003631316231664500270630ustar00rootroot00000000000000Mayqan runapis manam pipa isklabun kananpaqtsu yurishqa. Y runa karninmi llapan runakuna iwal kayanman dirichunkunachawpis. Y yarpayta yacharninmi y allita mana allita shunqunkunachaw makurninmi runakuna huknin hukninta rispitanakur kayanman. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/qxu-Latn_udhr.txt000066400000000000000000000005471316231664500270760ustar00rootroot00000000000000Kanmi derechonchiskuna llapanchispa, nacesqanchismanta. Kantaqmi llapanchispa runa kayninchis. Manan runa kanchu manay derechoyoq. Huk runaq derecho hukpawan kaqllan kan. Kanmi derechonchis llapanchispa allin kawsay libre tiyananchispaq. Llapan runaqpan kan yuyayninchis yachanapaq. Llapanchis kasun llapa runa masinchiskunawan munanakunapaq, huk ayllu hina. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/rar-Latn_udhr.txt000066400000000000000000000003411316231664500270350ustar00rootroot00000000000000Kua anau rangatira ia te tangata katoatoa ma te aiteite i te au tikaanga e te tu ngateitei tiratiratu.  Kua ki ia ratou e te mero kimi ravenga e te akavangakau e kia akono tetai i tetai, i roto i te vaerua piri anga taeake. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/rm-Latn-puter_udhr.txt000066400000000000000000000002461316231664500300300ustar00rootroot00000000000000Tuot ils umauns naschan libers ed eguels in dignited ed in drets. Els sun dotos cun radschun e conscienza e dessan agir ün invers l’oter in spiert da fraternited. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/rm-Latn-rumgr_udhr.txt000066400000000000000000000002421316231664500300210ustar00rootroot00000000000000Tut ils umans naschan libers ed eguals en dignitad ed en dretgs. Els èn dotads cun raschun e conscienza e duain agir in vers l’auter en spiert da fraternitad. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/rm-Latn-surmiran_udhr.txt000066400000000000000000000002571316231664500305330ustar00rootroot00000000000000Tot igls carstgangs neschan libers ed eguals an dignitad ed an dretgs. Els èn dotos cun raschung e schientscha e duessan ager l’egn vers l’oter an spiert da fraternitad. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/rm-Latn-sursilv_udhr.txt000066400000000000000000000002441316231664500303760ustar00rootroot00000000000000Tut ils humans neschan libers ed eguals en dignitad ed en dretgs. Els ein dotai cun raschun e cunscienzia e duein agir in viers l’auter en spért da fraternitad. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/rm-Latn-sutsilv_udhr.txt000066400000000000000000000002441316231664500304000ustar00rootroot00000000000000Tut igls humans neschan libers ad eguals an dignitad ad an dretgs. Els en dotos cun raschùn a cunzienzia a den agir egn anviers l’oter an spiert da fraternitad. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/rm-Latn-vallader_udhr.txt000066400000000000000000000002521316231664500304600ustar00rootroot00000000000000Tuot ils umans naschan libers ed eguals in dignità ed in drets. Els sun dotats cun radschun e conscienza e dessan agir ün invers l’oter in ün spiert da fraternità. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/rm-Latn_udhr.txt000066400000000000000000000002321316231664500266660ustar00rootroot00000000000000Tuots umans naschan libers ed eguals in dignità e drets. Els sun dotats cun intellet e conscienza e dessan agir tanter per in uin spiert da fraternità. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/rn-Latn_udhr.txt000066400000000000000000000002341316231664500266710ustar00rootroot00000000000000Abantu bose bavuka bishira bakizana kandi bangana mu gateka no mu ngingo zibubahiriza. Bafise ubwenge n'umutima kandi bategerezwa kwubahana nk'abavandimwe. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ro-Latn_udhr.txt000066400000000000000000000003231316231664500266710ustar00rootroot00000000000000Toate ființele umane se nasc libere și egale în demnitate și în drepturi. Ele sunt înzestrate cu rațiune și conștiință și trebuie să se comporte unele față de altele în spiritul fraternității. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/rom-Latn_udhr.txt000066400000000000000000000002551316231664500270520ustar00rootroot00000000000000Savorre manuśa biandõn meste thaj barabar k-o demnipen aj k-e hakaja. Si len godi aj somzanipen thaj si len te trąden pen jekh karing o aver and-o vogi e phralimnasqoro. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ru-Cyrl_udhr.txt000066400000000000000000000004461316231664500267200ustar00rootroot00000000000000Все люди рождаются свободными и равными в своем достоинстве и правах. Они наделены разумом и совестью и должны поступать в отношении друг друга в духе братства. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/rup-Latn_udhr.txt000066400000000000000000000002771316231664500270670ustar00rootroot00000000000000Tuti iatsâli umineshtsâ s-fac liberi shi egali la nâmuzea shi-ndrepturli. Eali suntu hârziti cu fichiri shi sinidisi shi lipseashti un cu alantu sh-si poartâ tu duhlu-a frâtsâljiljei. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/rw-Latn_udhr.txt000066400000000000000000000001741316231664500267050ustar00rootroot00000000000000Abantu bose bavuka aliko bakwiye agaciro no kwubahwa kimwe. Bose bavukana ubwenge n'umutima, bagomba kugilirana kivandimwe. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ryu-Jpan_chars.txt000066400000000000000000000002011316231664500272130ustar00rootroot00000000000000イ エ ア オ ウ ヤ ヨ ユ ワ ン ヒ ヘ ハ ホ フ ヒャ ヒョ ヒュ フヮ ギ ゲ ガ ゴ グ ギャ グヱ グヮ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/sa-Deva_udhr.txt000066400000000000000000000010161316231664500266350ustar00rootroot00000000000000सर्वे मानवा: स्वतन्त्रा: समुत्पन्ना: वर्तन्ते अपि च, गौरवदृशा अधिकारदृशा च समाना: एव वर्तन्ते। एते सर्वे चेतना-तर्क-शक्तिभ्यां सुसम्पन्ना: सन्ति। अपि च, सर्वेऽपि बन्धुत्व-भावनया परस्परं व्यवहरन्तु। nototools-2017-09-25-tooling-for-phase3-update/sample_texts/sah-Cyrl_udhr.txt000066400000000000000000000006011316231664500270360ustar00rootroot00000000000000Дьон барыта бэйэ суолтатыгар уонна быраабыгар тэҥ буолан төрүүллэр. Кинилэр бары өркөн өйдөөх, суобастаах буолан төрүүллэр, уонна бэйэ бэйэлэригэр тылга кииринигэс быһыылара доҕордоһуу тыыннаах буолуохтаах. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/sc-Latn_udhr.txt000066400000000000000000000002731316231664500266620ustar00rootroot00000000000000Totu sos èsseres umanos naschint lìberos e eguales in dinnidade e in deretos. Issos tenent sa resone e sa cussèntzia e depent operare s'unu cun s'àteru cun ispìritu de fraternidade. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/sco-Latn_udhr.txt000066400000000000000000000002541316231664500270400ustar00rootroot00000000000000Aw human sowels is born free and equal in dignity and richts. They are tochered wi mense and conscience and shuld guide theirsels ane til ither in a speirit o britherheid. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/se-Latn_udhr.txt000066400000000000000000000001471316231664500266640ustar00rootroot00000000000000Buot olbmot leat riegádan friddjan ja olmmošárvvu ja olmmošvuoigatvuođaid dáfus dássásaččat, nototools-2017-09-25-tooling-for-phase3-update/sample_texts/sey-Latn_udhr.txt000066400000000000000000000002461316231664500270550ustar00rootroot00000000000000Si'apai aide'oyë kua'ye peoye kui'ne siayë'kë maka pa'iye kui'ne tutupaye koni, jaje kuasase'sëtepi kuaju'i'ne peoye ñese saiye pa'iji ko̱kaijë yekë paireje. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/sg-Latn_udhr.txt000066400000000000000000000003071316231664500266640ustar00rootroot00000000000000Adü âzo kûê yamba, ngâ âla lîngbi terê na lêgë tî nëngö-terê na tî ângangü. Ala kûê awara ndarä na börö-li sï âla lîngbi tî dutï na âmbâ tî âla gï na lêngö söngö. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/shk-Latn_udhr.txt000066400000000000000000000002611316231664500270370ustar00rootroot00000000000000Dhanhø bëne ba anywølø e path ki bäng, ge pär ki yij bëëdø geki dyërø. gïn-a dwaddi kiper gen yï gen da rumi ki bëëdø mø göög gen ki pyëw akyel ga nyimëgg. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/shn-Mymr_udhr.txt000066400000000000000000000012371316231664500270740ustar00rootroot00000000000000ၵူၼ်းၵူႊၵေႃႉၼႆႉ ပဵၼ်ဢၼ်ၵိူတ်ႇမႃးလူၺ်ႈၵုင်ႇမုၼ်ဢၼ်လွတ်ႈလႅဝ်းၽဵင်ႇပဵင်းၵၼ် လႄႈ သုၼ်ႇလႆႈဢၼ် လွတ်ႈလႅဝ်းၽဵင်ႇ ပဵင်းၵၼ်။ ၶဝ်ၼႆႉ မီးၺၢၼ်ႇဢၼ်မေႃထတ်းသၢင် လႄႈ ၸႂ်ဢၼ်ႁူႉၸၵ်းၾိင်ႈတိုဝ်းၵမ် ၼၼ်ႉလႄႈ ထုၵ်ႇဝႆႉၸႂ်ပီႈဢွၵ်ႇ ၼွင်ႉၶႆႇၵၼ်သေ တိတ်းတေႃႇၵၼ်။ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/shp-Latn_udhr.txt000066400000000000000000000010031316231664500270370ustar00rootroot00000000000000Jatíbi joninra huetsa jonibaon yoiai nincáresti iqui, jahueraquibi jaconmai iamaquin; jainoash jahuen queena jacon jahuéquibo ati jahuequescamabi iqui, tsonbira amayamatima iqui. Jaticashbira jascara aresti jacon shinanya iti jahuequescamabi iqui, jahuequescarainoash picota joni inonbi. Huestiora huestiorabora jahuéqui ati shinanya iqui; jainshon onanribique jahueratoqui jacon iqui jainoash jaconma iqui ishon. Ja copira huetsa jonibires inonbi non jato jaconharesti iqui, non huetsabi non acai quescaaquin. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/si-Sinh_udhr.txt000066400000000000000000000010071316231664500266670ustar00rootroot00000000000000සියලු මනුෂ්‍යයෝ නිදහස්ව උපත ලබා ඇත. ගරුත්වයෙන් හා අයිතිවාසිකම්වලින් සමාන වෙති. යුක්ති අයුක්ති පිළිබඳ හැඟීමෙන් හා හෘදය සාක්ෂියෙන් යුත් ඔවුන්, ඔවුනොවුන්ට සැළකිය යුත්තේ සහෝදරත්වය පිළිබඳ හැඟීමෙනි. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/sk-Latn_udhr.txt000066400000000000000000000002321316231664500266650ustar00rootroot00000000000000Všetci ľudia sa rodia slobodní a sebe rovní, čo sa týka ich dostôjnosti a práv. Sú obdarení rozumom a majú navzájom jednať v bratskom duchu. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/skr-Arab_udhr.txt000066400000000000000000000004541316231664500270240ustar00rootroot00000000000000سارے انسان ازادا تے حقوق تے عزت دے اعتبار نال ہکو ڄئے پیدا تھیندن ۔ قدرت ولوں انہاں کوں عقل تے سمجھ عطا تھیندی اے ۔ ہیں کیتے ہک ڋوجھے نال بھرپی داسلوک کرڻا چاہی دا اے ۔ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/sl-Latn_udhr.txt000066400000000000000000000002361316231664500266720ustar00rootroot00000000000000Vsi ljudje se rodijo svobodni in imajo enako dostojanstvo in enake pravice. Obdarjeni so z razumom in vestjo in bi morali ravnati drug z drugim kakor bratje. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/sm-Latn_udhr.txt000066400000000000000000000003651316231664500266760ustar00rootroot00000000000000O tagata soifua uma ua saoloto lo latou fananau mai, ma e tutusa o latou tulaga aloaia faapea a latou aia tatau. Ua faaeeina atu i a latou le mafaufau lelei ma le loto fuatiaifo ma e tatau ona faatino le agaga faauso i le va o le tasi i le isi, nototools-2017-09-25-tooling-for-phase3-update/sample_texts/sn-Latn_udhr.txt000066400000000000000000000002731316231664500266750ustar00rootroot00000000000000Vanhu vese vanoberekwa vakasununguka uyewo vakaenzana pahunhu nekodzero dzavo. Vanhu vese vanechipo chokufunga nekuziva chakaipa nechakanaka saka vanofanira kubatana nomweya wohusahwira. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/snk-Latn_udhr.txt000066400000000000000000000003051316231664500270440ustar00rootroot00000000000000Haadama renme su saareyen ŋa an na du-kitten ña, an nta sere komaaxu, an do soron su yan yekka dorontaaxu do taqu. Haqilen, wa sere su, a do soro kuttu nan siri terene doome kappalengaaxu kanma. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/snn-Latn_udhr.txt000066400000000000000000000002741316231664500270540ustar00rootroot00000000000000Sia'bai̱ aideo'yë goa'ye beoye gu̱i'ne sia'yë'quë maca bai'ye gu̱i'ne quëco baye co̱ni, ja̱je̱ goachase'sëte goa'ju̱i'ñe beoye ñese saiye bai'ji co̱caijë yequë bai̱reje. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/so-Latn_udhr.txt000066400000000000000000000003061316231664500266730ustar00rootroot00000000000000Aadanaha dhammaantiis wuxuu dhashaa isagoo xor ah kana siman xagga sharafta iyo xuquuqada Waxaa Alle (Ilaah) siiyay aqoon iyo wacyi, waana in qof la arkaa qofka kale ula dhaqmaa si walaaltinimo ah. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/sq-Latn_udhr.txt000066400000000000000000000002751316231664500267020ustar00rootroot00000000000000Të gjithë njerëzit lindin të lirë dhe të barabartë në dinjitet dhe në të drejta. Ata kanë arsye dhe ndërgjegje dhe duhet të sillen ndaj njëri tjetrit me frymë vëllazërimi. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/sr-Cyrl_udhr.txt000066400000000000000000000003731316231664500267150ustar00rootroot00000000000000Cвa људскa бићa рaђajу сe слoбoднa и jeднaкa у дoстojaнству и прaвимa. Oнa су oбдaрeнa рaзумoм и свeшћу и трeбa jeдни прeмa другимa дa пoступajу у духу брaтствa. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/sr-Latn_udhr.txt000066400000000000000000000002471316231664500267020ustar00rootroot00000000000000Sva ljudska bića rađaju se slobodna i jednaka u dostojanstvu i pravima. Ona su obdarena razumom i svešću i treba jedni prema drugima da postupaju u duhu bratstva. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/srr-Latn_udhr.txt000066400000000000000000000002421316231664500270570ustar00rootroot00000000000000Wiin we naa ñoowaa na adna, den fop mbodu no ke war na oxnu refna na den a jega o ngalaat umpi yiif um, le mbarin o meƭtootaa baa mbaag o ñoow den fop no fog. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ss-Latn_udhr.txt000066400000000000000000000003231316231664500266760ustar00rootroot00000000000000Bonkhe bantfu batalwa bakhululekile balingana ngalokufananako ngesitfunti nangemalungelo. Baphiwe ingcondvo nekucondza kanye nanembeza ngakoke bafanele batiphatse nekutsi baphatse nalabanye ngemoya webuzalwane. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/st-Latn_udhr.txt000066400000000000000000000002511316231664500266770ustar00rootroot00000000000000Batho bohle ba tswetswe ba lokolohile mme ba lekana ka botho le ditokelo. Ba tswetswe le monahano le letswalo mme ba tlamehile ho phedisana le ba bang ka moya wa boena. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/su-Latn_udhr.txt000066400000000000000000000003061316231664500267010ustar00rootroot00000000000000Sakumna jalma gubrag ka alam dunya teh sifatna merdika jeung boga martabat katut hak-hak anu sarua . Maranehna dibere akal jeung hate nurani, campur-gaul jeung sasamana aya dina sumanget duduluran. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/suk-Latn_udhr.txt000066400000000000000000000003021316231664500270500ustar00rootroot00000000000000Banhu bose bakabyalagwa na wiyabi na bakabizaga na makujo na sekge jabo jilenganilile. Banhu bose bakabizaga na masala na buhabuji; hukuyomba balidakilwa gubi na witogwa gidi bana ba myaji umo. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/sus-Latn_udhr.txt000066400000000000000000000002251316231664500270640ustar00rootroot00000000000000Adamadie birin barixinɛ e lan yɛtɛralui kui, yɛtɛ kolonyi nun yɛtɛ suxu kima. Fondoe nun faxamui na e bɛ boresuxu kima bariboreya fanyi kui. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/sv-Latn_udhr.txt000066400000000000000000000002551316231664500267050ustar00rootroot00000000000000Alla människor är födda fria och lika i värdighet och rättigheter. De är utrustade med förnuft och samvete och bör handla gentemot varandra i en anda av broderskap. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/sw-Latn_udhr.txt000066400000000000000000000001711316231664500267030ustar00rootroot00000000000000Watu wote wamezaliwa huru, hadhi na haki zao ni sawa. Wote wamejaliwa akili na dhamiri, hivyo yapasa watendeane kindugu. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/swb-Latn_udhr.txt000066400000000000000000000002211316231664500270410ustar00rootroot00000000000000Wanadamu piya udzalwa huru tsena sawa ha ufahari na ha haki. Na wawo wana ãkili na hisi, esa ilazimu wadzivhinge na wanyao ha fikira ya unanya. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ta-Taml-LK_udhr.txt000066400000000000000000000012311316231664500271570ustar00rootroot00000000000000மனிதப் பிறிவியினர் சகலரும் சுதந்திரமாகவே பிறக்கின்றனர்; அவர்கள் மதிப்பிலும், உரிமைகளிலும் சமமானவர்கள், அவர்கள் நியாயத்தையும் மனச்சாட்சியையும் இயற்பண்பாகப் பெற்றவர்கள். அவர்கள் ஒருவருடனொருவர் சகோதர உணர்வுப் பாங்கில் நடந்துகொள்ளல் வேண்டும். nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ta-Taml_udhr.txt000066400000000000000000000012171316231664500266570ustar00rootroot00000000000000மனிதப் பிறவியினர் சகலரும் சுதந்திரமாகவே பிறக்கின்றனர்; அவர்கள் மதிப்பிலும் உரிமைகளிலும் சமமானவர்கள். அவர்கள் நியாயத்தையும் மனசாட்சியையும் இயற்பண்பாகப் பெற்றவர்கள். அவர்கள் ஒருவருடனொருவர் சகோதர உணர்வுப் பாங்கில் நடந்துகொள்ளல் வேண்டும். nototools-2017-09-25-tooling-for-phase3-update/sample_texts/taj-Deva_udhr.txt000066400000000000000000000013511316231664500270120ustar00rootroot00000000000000म्होक्कोन (गोदोप) नोन म्हीम केपान्हापा हेन्छे नुन हाङपाङवा (स्वतन्त्र) याङवा हीन्ना । थे म्होक्कोनला (गोदोपला) च्योच्यो याङताम थेन महत्व मुला । थेनीकादेरी सेमबाङ (विचार शक्ति) देन थु-सेमसाङ मुबासे थेनीजुगुसे ह्राङन्हाङरी नुन थेत्माला सेमलेङमोग्याम्से (भवनाबाट) ग्ये लातोबान मुला । nototools-2017-09-25-tooling-for-phase3-update/sample_texts/tbz-Latn_udhr.txt000066400000000000000000000003171316231664500270530ustar00rootroot00000000000000Oniti ti pɛi nɖɛ omɔũ yi kpaatri otɔu, kɛ yɛ̃ oniti ba we, o yi ɖo nnɛ fɛhɔ̃fɛ; o mɔkɛmu mɛcii kɛhã mɛyɛmmɛ. Ti tú nɛ ɖo kenyari ti tɔbɛ mbɛ kɛ yie mii ba nkwuɔ ko otɔu ɖau. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/tca-Latn_udhr.txt000066400000000000000000000003521316231664500270220ustar00rootroot00000000000000Ngẽxguma nabuxgu i duü̃xü̃gü rü guxü̃ma nawüxigu, rü tataxuma ya texé ya togüarü yexera ixĩsẽ. Rü guxü̃ma naxããẽgü rü ngẽmaca̱x rü name nixĩ na nügümaã namecümaxü̃ ĩ guxü̃ma ĩ duü̃xü̃gü. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/tdt-Latn_udhr.txt000066400000000000000000000002141316231664500270430ustar00rootroot00000000000000Ema tomak moris hanesan, ema tomak hanesan, iha direitu hanesan. Ema tomak iha otak ho neon, hotu-hotu sei buka moris hanesan maun ho alin. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/te-Telu_udhr.txt000066400000000000000000000006601316231664500267000ustar00rootroot00000000000000ప్రతిపత్తిస్వత్వముల విషయమున మానవులెల్లరును జన్మతః స్వతంత్రులును సమానులును నగుదురు. వారు వివేదనాంతఃకరణ సంపన్నులగుటచే పరస్పరము భ్రాతృభావముతో వర్తింపవలయును. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/tem-Latn_udhr.txt000066400000000000000000000002741316231664500270430ustar00rootroot00000000000000A kom aŋfəm akəpet bɛ ŋa athənʌnɛ yi rʌwankom. Ɔwa aŋ ba məmari məthənʌnɛ. Ɔwa aŋ ba məfith yi təchemp. Chiyaŋ, aŋ yi təkə gbasi aŋkos ŋaŋ mɔ kəpa ŋa təkom. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/tet-Latn_udhr.txt000066400000000000000000000002131316231664500270430ustar00rootroot00000000000000Ema hotu hotu moris hanesan ho dignidade ho direitu. Sira hotu iha hanoin, konsiensia n'e duni tenki hare malu hanesan espiritu maun-alin. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/tg-Cyrl_udhr.txt000066400000000000000000000004401316231664500266760ustar00rootroot00000000000000Тамоми одамон озод ва аз лиҳози шарафу ҳуқуқ ба ҳам баробар ба дунё меоянд. Онҳо соҳиби ақлу виҷдонанд ва бояд бо якдигар муносибати бародарона дошта бошанд. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/th-Thai_udhr.txt000066400000000000000000000005051316231664500266550ustar00rootroot00000000000000เราทุกคนเกิดมาอย่างอิสระ เราทุกคนมีความคิดและความเข้าใจเป็นของเราเอง เราทุกคนควรได้รับการปฏิบัติในทางเดียวกัน. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ti-Ethi_udhr.txt000066400000000000000000000004271316231664500266650ustar00rootroot00000000000000ብመንፅር ክብርን መሰልን ኩሎም ሰባት እንትውለዱ ነፃን ማዕሪን እዮም፡፡ ምስትውዓልን ሕልናን ዝተዓደሎም ብምዃኖም ንሕድሕዶም ብሕውነታዊ መንፈስ ክተሓላለዩ ኦለዎም፡፡ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/tiv-Latn_udhr.txt000066400000000000000000000002471316231664500270600ustar00rootroot00000000000000I mar maor ken kpan ga, nan ngu a icivir man mbamkpeiyol cii. I na nan mhen man ishima i kaven kwagh; nahan gba keng u nana tema a orgen ken mtem u angbian a angbian. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/tk-Cyrl_udhr.txt000066400000000000000000000005051316231664500267040ustar00rootroot00000000000000Хемме адамлар өз мертебеси ве хукуклары боюнча дең ягдайда дүнйә инйәрлер. Олара аң хем выҗдан берлендир ве олар бир‐бирлери билен доганлык рухундакы гарайышда болмалыдырлар. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/tk-Latn_udhr.txt000066400000000000000000000003421316231664500266700ustar00rootroot00000000000000Adamlaryň hemmesi azat dogulýarlar we öz mertebesi hem‐de hukuklary boýunça ilkibaşdan deňdirler. Olara ozal‐başdan aň, ynsap berlendir we biri‐birine özara doganlyk ruhunda çemeleşmek olaryň ýaraşygydyr. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/tl-Latn_udhr.txt000066400000000000000000000003011316231664500266640ustar00rootroot00000000000000Ang lahat ng tao'y isinilang na malaya at pantay-pantay sa karangalan at mga karapatan. Sila'y pinagkalooban ng katwiran at budhi at dapat magpalagayan ang isa't isa sa diwa ng pagkakapatiran. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/tly-Latn_udhr.txt000066400000000000000000000003021316231664500270560ustar00rootroot00000000000000Həmmə insonon bəştə ləyoğəti iyən həxonro ozod iyən bərobər movardə bedən. Çəvon şuur iyən vicdon hese, əve ki, deyəndı mınasibətədə bənə bıvə rəftor kardəninin. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/tn-Latn_udhr.txt000066400000000000000000000002531316231664500266740ustar00rootroot00000000000000Batho botlhe ba tsetswe ba gololosegile le go lekalekana ka seriti le ditshwanelo. Ba abetswe go akanya le maikutlo, mme ba tshwanetse go direlana ka mowa wa bokaulengwe. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/to-Latn_udhr.txt000066400000000000000000000004071316231664500266760ustar00rootroot00000000000000Ko e kotoa ‘o ha’a tangata ‘oku fanau’i mai ‘oku tau’ataina pea tatau ‘i he ngeia mo e ngaahi totonu. Na’e fakanaunau’i kinautolu ‘aki ‘a e ‘atamai mo e konisenisi pea ‘oku totonu ke nau feohi ‘i he laumalie ‘o e nofo fakatautehina. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/tob-Latn_udhr.txt000066400000000000000000000003641316231664500270420ustar00rootroot00000000000000'Enauac na naaxat shiỹaxauapi na mayipi huesochiguii qataq 'eeta'a't da l'amaqchic qataq da 'enec qataq ỹataqta ỹaỹate'n naua lataxaco qataq nua no'o'n nvilỹaxaco, qaq ỹoqo'oyi iuen da i 'oonolec ỹataqta itauan ichoxoden ca lỹa nototools-2017-09-25-tooling-for-phase3-update/sample_texts/toi-Latn_udhr.txt000066400000000000000000000002641316231664500270500ustar00rootroot00000000000000Bantu boonse balazyalwa kabaangulukide alimwi kabeelene alimwi akwaanguluka kucita zyobayanda. Balazyalwa amaanu akuyeeya, aakusala alimwi beelede kulanga bambi mbuli banabokwabo. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/toj-Latn_udhr.txt000066400000000000000000000003731316231664500270520ustar00rootroot00000000000000Spetsanal ja swinkil ja lu’um k’inali junxta wax jul schonjel, sok ja sijpanub’ali, ja yuj ojni b’ob’ sk’u’luk ja jas sk’ana-i ja b’as lekilali, ja yuj ja ay sk’ujoli sok ay spensari t’ilan oj yilsb’aje lek sok ja smoj jumasa. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/top-Latn_udhr.txt000066400000000000000000000003461316231664500270600ustar00rootroot00000000000000Wakg lakch'ixkuwin talakgawan nak ka'unin niti ka'akgch'apawalinit nachuna wakg takg'alhi ixtamaxanatkan chu tu kaminini, je'e wanp'utun xlakata wakg talakpuwanan, talalakgk'atsan liwakg, talakask'ini xlakata wakg natalamakgtaya. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/tpi-Latn_udhr.txt000066400000000000000000000003771316231664500270560ustar00rootroot00000000000000Yumi olgeta mama karim umi long stap fri na wankain long wei yumi lukim i gutpela na strepela tru. Uumi olgeta igat ting ting bilong wanem samting I rait na rong na mipela olgeta I mas mekim gutpela pasin long ol narapela long tingting bilong brata susa. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/tr-Latn_udhr.txt000066400000000000000000000002541316231664500267010ustar00rootroot00000000000000Bütün insanlar hür, haysiyet ve haklar bakımından eşit doğarlar. Akıl ve vicdana sahiptirler ve birbirlerine karşı kardeşlik zihniyeti ile hareket etmelidirler. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ts-Latn-MZ_udhr.txt000066400000000000000000000003131316231664500272220ustar00rootroot00000000000000Vanhu hin'kwavu va psaliwili na va khululekìle, funthsi va fana hi lisima ni tinfaneno. Và psaliwili ni nyiko ya ku pimisa ni ku yehleketa; hi kolahu, va fanela ku hanya hi moya wa umbìlu ni unghani. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ts-Latn-ZW_udhr.txt000066400000000000000000000003201316231664500272320ustar00rootroot00000000000000Vanhu hinkwavo va tswariwa va tshunxekile naswona va ringanile eka tifanelo na xindzhuti. Va havaxerile miehleketo na tshiriti kumbe ku tiva xo biha ni xta kahle nakambe va fanele va kombana moya wa vukwavo. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ts-Latn_udhr.txt000066400000000000000000000003131316231664500266760ustar00rootroot00000000000000Vanhu hin'kwavu va psaliwili na va khululekìle, funthsi va fana hi lisima ni tinfaneno. Và psaliwili ni nyiko ya ku pimisa ni ku yehleketa; hi kolahu, va fanela ku hanya hi moya wa umbìlu ni unghani. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/tsz-Latn_udhr.txt000066400000000000000000000003101316231664500270650ustar00rootroot00000000000000Iamendu k'uiripuecha janguarhiparini ka majku jarhati ka jurhimbekuecha jingoni kueraaŋasondikso ka, juajtakuarhisïndiksï ambakiti eratsekua ka kaxumbikua, jatsistiksï eskaksï sesi arhijperaaka. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/tt-Cyrl_udhr.txt000066400000000000000000000005271316231664500267210ustar00rootroot00000000000000Барлык кешеләр дә азат һәм үз абруйлары һәм хокуклары ягыннан тиң булып туалар. Аларга акыл һәм вөҗдан бирелгән һәм бер-берсенә карата туганарча [туганнарча] мөнәсәбәттә булырга тиешләр. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/tw-Latn-akuapem_udhr.txt000066400000000000000000000002401316231664500303220ustar00rootroot00000000000000Wɔawo adesamma nyinaa sɛ nnipa a wɔwɔ ahofadi. Wɔn nyinaa wɔ nidi ne kyɛfa koro. Wɔwɔ adwene ne ahonim, na ɛsɛ sɛ wobu wɔn ho wɔn ho sɛ anuanom. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/tw-Latn-asante_udhr.txt000066400000000000000000000002111316231664500301500ustar00rootroot00000000000000Nnipa nyinaa yɛ pɛ. Na wɔde adwene ne nyansa na abɔ obiara. Ɛno nti, ɛsɛ sɛ obiara dɔ ne yɔnko, bu ne yɔnko, di ne yɔnko ni. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/tw-Latn_udhr.txt000066400000000000000000000002401316231664500267010ustar00rootroot00000000000000Wɔawo adesamma nyinaa sɛ nnipa a wɔwɔ ahofadi. Wɔn nyinaa wɔ nidi ne kyɛfa koro. Wɔwɔ adwene ne ahonim, na ɛsɛ sɛ wobu wɔn ho wɔn ho sɛ anuanom. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ty-Latn_udhr.txt000066400000000000000000000003111316231664500267020ustar00rootroot00000000000000E fanauhia te tā'āto'ara'a o te ta'ata-tupu ma te ti'amā e te ti'amanara'a 'aifaito. Ua 'ī te mana'o pa'ari e i te manava e ma te 'a'au taea'e 'oia ta ratou ha'a i rotopū ia ratou iho, e ti'a ai; nototools-2017-09-25-tooling-for-phase3-update/sample_texts/tyv-Cyrl_udhr.txt000066400000000000000000000005561316231664500271160ustar00rootroot00000000000000Бүгү кижилер хостуг база мөзүзү болгаш эргелери дең кылдыр төрүттүнер. Оларга угаансарыыл болгаш арын-нүүр бердинген болур болгаш олар бот-боттарынга акы-дуңмалышкы хамаарылганы көргүзер ужурлуг. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/tzh-Latn_udhr.txt000066400000000000000000000003051316231664500270560ustar00rootroot00000000000000Spisil winiketik te ya xbejk´ajik ta k´inalil ay jrerechotik, mayuk mach´a chukul ya xbejka, ya jnatik stojol te jpisiltik ay snopibal sok sbijil joltik, ja´ me k´ux ya kaibatik ta jujun tul. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/tzm-Latn_udhr.txt000066400000000000000000000002161316231664500270640ustar00rootroot00000000000000Imdanen, akken ma llan ttlalen d ilelliyen msawan di lḥweṛma d yizerfan- ghur sen tamsakwit d lâquel u yessefk ad-tili tegmatt gar asen. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/tzo-Latn_udhr.txt000066400000000000000000000003011316231664500270610ustar00rootroot00000000000000Skotol vinik o ants ta spejel balumile k’olem x-hayan i ko’ol ta sch’ulal i sderechoetik i, skotol k’ux-elan oyike oy srasonik y slekilalik, sventa skuxijik leknóo ta ju jun ju ju vo. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ug-Arab_udhr.txt000066400000000000000000000005431316231664500266370ustar00rootroot00000000000000ھەممە ئادەم زانىدىنلا ئەركىن، ئىززەت-ھۆرمەت ۋە ھوقۇقتا باپباراۋەر بولۇپ تۇغۇلغان. ئۇلار ئەقىلغە ۋە ۋىجدانغا ئىگە ھەمدە بىر-بىرىگە قېرىنداشلىق مۇناسىۋىتىگە خاس روھ بىلەن موئامىلە قىلىشى كېرەك. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ug-Latn_udhr.txt000066400000000000000000000003031316231664500266620ustar00rootroot00000000000000hemme adem zatidinla erkin, izzet-hörmet we hoquqta babbarawer bolup tughulghan. ular eqilghe we wijdan'gha ige hemde bir-birige qérindashliq munasiwitige xas roh bilen muamile qilishi kérek. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/uk-Cyrl_udhr.txt000066400000000000000000000004531316231664500267070ustar00rootroot00000000000000Всі люди народжуються вільними і рівними у своїй гідності та правах. Вони наділені розумом і совістю і повинні діяти у відношенні один до одного в дусі братерства. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/umb-Latn_udhr.txt000066400000000000000000000003011316231664500270300ustar00rootroot00000000000000Omanu vosi vacitiwa valipwa kwenda valisoka kovina vyosikwenda komoko. Ovo vakwete esunga kwenda, kwenda olondunge kwenje ovo vatêla okuliteywila kuvamwe kwenda vakwavo vesokolwilo lyocisola. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Adlm_chars.txt000066400000000000000000000006311316231664500271560ustar00rootroot00000000000000‮‮‮𞤀 𞤁 𞤂 𞤃 𞤄 𞤅 𞤆 𞤇 𞤈 𞤉 𞤊 𞤋 𞤌 𞤍 𞤎 𞤏 𞤐 𞤑 𞤒 𞤓 𞤔 𞤕 𞤖 𞤗 𞤘 𞤙 𞤚 𞤛 𞤜 𞤝 𞤞 𞤟 𞤠 𞤡 𞤢 𞤣 𞤤 𞤥 𞤦 𞤧 𞤨 𞤩 𞤪 𞤫 𞤬 𞤭 𞤮 𞤯 𞤰 𞤱 𞤲 𞤳 𞤴 𞤵 𞤶 𞤷 𞤸 𞤹 𞤺 𞤻 𞤼 𞤽 𞤾 𞤿 𞥀 𞥁 𞥂 𞥃 𞥞 𞥟 𞥐 𞥑 𞥒 𞥓 𞥔 𞥕 𞥖 𞥗 𞥘 𞥙 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Adlm_text.txt000066400000000000000000000005121316231664500270400ustar00rootroot00000000000000‮‮‮𞤀𞤁𞤂𞤃𞤄𞤅𞤆𞤇𞤈𞤉𞤊𞤋𞤌𞤍𞤎𞤏𞤐𞤑𞤒𞤓𞤔𞤕𞤖𞤗𞤘𞤙𞤚𞤛𞤜𞤝𞤞𞤟𞤠𞤡𞤢𞤣𞤤𞤥𞤦𞤧𞤨𞤩𞤪𞤫𞤬𞤭𞤮𞤯𞤰𞤱𞤲𞤳𞤴𞤵𞤶𞤷𞤸𞤹𞤺𞤻𞤼𞤽𞤾𞤿𞥀𞥁𞥂𞥃𞥞𞥟𞥐𞥑𞥒𞥓𞥔𞥕𞥖𞥗𞥘𞥙 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Arab_chars.txt000066400000000000000000000002641316231664500271500ustar00rootroot00000000000000ء أ ؤ إ ئ آ ٲ ٮ پ ݒ ݖ ة ث ٹ ڃ چ ڇ ح څ ذ ڈ ڑ ڕ ږ ژ ڙ ښ ݜ ص ض ط ظ ݝ ڢ ڤ ك ګ ڱ ڳ ڴ ݢ ں ݧ ݩ ه ھ ہ ۂ ٶ ۄ ۅ ٷ ۈ ۉ ۏ ی ى ێ ے ۓ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Armi_chars.txt000066400000000000000000000002321316231664500271660ustar00rootroot00000000000000𐡀 𐡁 𐡂 𐡃 𐡄 𐡅 𐡆 𐡇 𐡈 𐡉 𐡊 𐡋 𐡌 𐡍 𐡎 𐡏𐡐 𐡑 𐡒 𐡓 𐡔 𐡕 𐡗 𐡘 𐡙 𐡚 𐡛 𐡜 𐡝 𐡞 𐡟 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Armn_chars.txt000066400000000000000000000003471316231664500272020ustar00rootroot00000000000000ա բ գ դ ե զ է ը թ ժ ի լ խ ծ կ հ ձ ղ ճ մ յ ն շ ո չ պ ջ ռ ս վ տ ր ց ւ փ ք և օ ֆ Ա Բ Գ Դ Ե Զ Է Ը Թ Ժ Ի Լ Խ Ծ Կ Հ Ձ Ղ Ճ Մ Յ Ն Շ Ո Չ Պ Ջ Ռ Ս Վ Տ Ր Ց Ւ Փ Ք Օ Ֆ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Avst_chars.txt000066400000000000000000000004161316231664500272170ustar00rootroot00000000000000𐬀 𐬁 𐬂 𐬃 𐬄 𐬅 𐬆 𐬇 𐬈 𐬉 𐬊 𐬋 𐬌 𐬍 𐬎 𐬏 𐬐 𐬑 𐬒 𐬓 𐬔 𐬕 𐬖 𐬗 𐬘 𐬙 𐬚 𐬛 𐬜 𐬝 𐬞 𐬟 𐬠 𐬡 𐬢 𐬣 𐬤 𐬥 𐬦 𐬧 𐬨 𐬩 𐬪 𐬫 𐬬 𐬭 𐬮 𐬯 𐬰 𐬱 𐬲 𐬳 𐬴 𐬵 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Bali_chars.txt000066400000000000000000000002741316231664500271530ustar00rootroot00000000000000ᬅ ᬆ ᬇ ᬈ ᬉ ᬊ ᬋ ᬌ ᬍ ᬎ ᬏ ᬐ ᬑ ᬒ ᬓ ᬔ ᬕ ᬖ ᬗ ᬘ ᬙ ᬚ ᬛ ᬜ ᬝ ᬞ ᬟ ᬠ ᬡ ᬢ ᬣ ᬤ ᬥ ᬦ ᬧ ᬨ ᬩ ᬪ ᬫ ᬬ ᬭ ᬮ ᬯ ᬰ ᬱ ᬲ ᬳ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Bamu_chars.txt000066400000000000000000000003601316231664500271640ustar00rootroot00000000000000ꚠ ꚡ ꚢ ꚣ ꚤ ꚥ ꚦ ꚧ ꚨ ꚩ ꚪ ꚫ ꚬ ꚭ ꚮ ꚯ ꚰ ꚱ ꚲ ꚳ ꚴ ꚵ ꚶ ꚷ ꚸ ꚹ ꚺ ꚻ ꚼ ꚽ ꚾ ꚿ ꛀ ꛁ ꛂ ꛃ ꛄ ꛅ ꛆ ꛇ ꛈ ꛉ ꛊ ꛋ ꛌ ꛍ ꛎ ꛏ ꛐ ꛑ ꛒ ꛓ ꛔ ꛕ ꛖ ꛗ ꛘ ꛙ ꛚ ꛛ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Batk_chars.txt000066400000000000000000000003351316231664500271630ustar00rootroot00000000000000ᯀ ᯁ ᯂ ᯃ ᯄ ᯅ ᯆ ᯇ ᯈ ᯉ ᯊ ᯋ ᯌ ᯍ ᯎ ᯏᯐ ᯑ ᯒ ᯓ ᯔ ᯕ ᯖ ᯗ ᯘ ᯙ ᯚ ᯛ ᯜ ᯝ ᯞ ᯟᯠ ᯡ ᯢ ᯣ ᯤ ᯥ ᯦ ᯧ ᯨ ᯩ ᯪ ᯫ ᯬ ᯭ ᯮ ᯯᯰ ᯱ ᯲ ᯳ ᯼ ᯽ ᯾ ᯿ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Beng_chars.txt000066400000000000000000000003201316231664500271470ustar00rootroot00000000000000অ আ ই ঈ উ ঊ ঋ ৠ ঌ ৡ এ ঐ ও ঔ ক খ গ ঘ ঙ চ ছ জ ঝ ঞ ট ঠ ড ড় ঢ ঢ় ণ ত ৎ থ দ ধ ন প ফ ব ভ ম য র ৰ ল ৱ শ ষ স হ ঽ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Bopo_chars.txt000066400000000000000000000002441316231664500272000ustar00rootroot00000000000000ㄅ ㄆ ㄇ ㄈ ㄉ ㄊ ㄋ ㄌ ㄍ ㄎ ㄏ ㄐ ㄑ ㄒ ㄓ ㄔ ㄕ ㄖ ㄗ ㄘ ㄙ ㄚ ㄛ ㄜ ㄝ ㄞ ㄟ ㄠ ㄡ ㄢ ㄣ ㄤ ㄥ ㄦ ㄧ ㄨ ㄩ ㄪ ㄫ ㄬ ㄭ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Brah_chars.txt000066400000000000000000000010261316231664500271540ustar00rootroot00000000000000𑀀 𑀁 𑀂 𑀃 𑀄 𑀅 𑀆 𑀇 𑀈 𑀉 𑀊 𑀋 𑀌 𑀍 𑀎 𑀏𑀐 𑀑 𑀒 𑀓 𑀔 𑀕 𑀖 𑀗 𑀘 𑀙 𑀚 𑀛 𑀜 𑀝 𑀞 𑀟𑀠 𑀡 𑀢 𑀣 𑀤 𑀥 𑀦 𑀧 𑀨 𑀩 𑀪 𑀫 𑀬 𑀭 𑀮 𑀯𑀰 𑀱 𑀲 𑀳 𑀴 𑀵 𑀶 𑀷 𑀸 𑀹 𑀺 𑀻 𑀼 𑀽 𑀾 𑀿𑁀 𑁁 𑁂 𑁃 𑁄 𑁅 𑁆 𑁇 𑁈 𑁉 𑁊 𑁋 𑁌 𑁍𑁒 𑁓 𑁔 𑁕 𑁖 𑁗 𑁘 𑁙 𑁚 𑁛 𑁜 𑁝 𑁞 𑁟𑁠 𑁡 𑁢 𑁣 𑁤 𑁥 𑁦 𑁧 𑁨 𑁩 𑁪 𑁫 𑁬 𑁭 𑁮 𑁯 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Bugi_chars.txt000066400000000000000000000001711316231664500271660ustar00rootroot00000000000000ᨀ ᨁ ᨂ ᨃ ᨄ ᨅ ᨆ ᨇ ᨈ ᨉ ᨊ ᨋ ᨌ ᨍ ᨎ ᨏ ᨐ ᨑ ᨒ ᨓ ᨔ ᨕ ᨖ ᨗ ᨘ ᨙ ᨚ ᨛ ᨞ ᨟ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Buhd_chars.txt000066400000000000000000000000751316231664500271650ustar00rootroot00000000000000ᝀᝁᝂᝃᝄᝅᝆᝇᝈᝉᝊᝋᝌᝍᝎᝏᝐᝑᝒᝓ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Cans_chars.txt000066400000000000000000000003601316231664500271640ustar00rootroot00000000000000ᐃ ᐄ ᐅ ᐆ ᐊ ᐋ ᐱ ᐲ ᐳ ᐴ ᐸ ᐹ ᑉ ᑎ ᑏ ᑐ ᑑ ᑕ ᑖ ᑦ ᑭ ᑮ ᑯ ᑰ ᑲ ᑳ ᒃ ᒋ ᒌ ᒍ ᒎ ᒐ ᒑ ᒡ ᒥ ᒦ ᒧ ᒨ ᒪ ᒫ ᒻ ᓂ ᓃ ᓄ ᓅ ᓇ ᓈ ᓐ ᓕ ᓖ ᓗ ᓘ ᓚ ᓛ ᓪ ᓯ ᓰ ᓱ ᓲ ᓴ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Cari_chars.txt000066400000000000000000000003651316231664500271630ustar00rootroot00000000000000𐊠 𐊡 𐊢 𐊣 𐊤 𐊥 𐊦 𐊧 𐊨 𐊩 𐊪 𐊫 𐊬 𐊭 𐊮 𐊯 𐊰 𐊱 𐊲 𐊳 𐊴 𐊵 𐊶 𐊷 𐊸 𐊹 𐊺 𐊻 𐊼 𐊽 𐊾 𐊿 𐋀 𐋁 𐋂 𐋃 𐋄 𐋅 𐋆 𐋇 𐋈 𐋉 𐋊 𐋋 𐋌 𐋍 𐋎 𐋏 𐋐 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Cham_chars.txt000066400000000000000000000003141316231664500271470ustar00rootroot00000000000000ꨀ ꨁ ꨂ ꨃ ꨄ ꨅ ꨆ ꨇ ꨈ ꨉ ꨊ ꨋ ꨌ ꨍ ꨎ ꨏ ꨐ ꨑ ꨒ ꨓ ꨔ ꨕ ꨖ ꨗ ꨘ ꨙ ꨚ ꨛ ꨜ ꨝ ꨞ ꨟ ꨠ ꨡ ꨢ ꨣ ꨤ ꨥ ꨦ ꨧ ꨨ ꩐ ꩑ ꩒ ꩓ ꩔ ꩕ ꩖ ꩗ ꩘ ꩙ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Cher_chars.txt000066400000000000000000000003601316231664500271610ustar00rootroot00000000000000Ꭰ Ꭱ Ꭲ Ꭳ Ꭴ Ꭵ Ꭶ Ꭷ Ꭸ Ꭹ Ꭺ Ꭻ Ꭼ Ꭽ Ꭾ Ꭿ Ꮀ Ꮁ Ꮂ Ꮃ Ꮄ Ꮅ Ꮆ Ꮇ Ꮈ Ꮉ Ꮊ Ꮋ Ꮌ Ꮍ Ꮎ Ꮏ Ꮐ Ꮑ Ꮒ Ꮓ Ꮔ Ꮕ Ꮖ Ꮗ Ꮘ Ꮙ Ꮚ Ꮛ Ꮜ Ꮝ Ꮞ Ꮟ Ꮠ Ꮡ Ꮢ Ꮣ Ꮤ Ꮥ Ꮦ Ꮧ Ꮨ Ꮩ Ꮪ Ꮫ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Copt_chars.txt000066400000000000000000000003101316231664500272000ustar00rootroot00000000000000Ⲁ ⲁ Ⲃ ⲃ Ⲅ ⲅ Ⲇ ⲇ Ⲉ ⲉ Ⲋ ⲋ Ⲍ ⲍ Ⲏ ⲏ Ⲑ ⲑ Ⲓ ⲓ Ⲕ ⲕ Ⲗ ⲗ Ⲙ ⲙ Ⲛ ⲛ Ⲝ ⲝ Ⲟ ⲟ Ⲡ ⲡ Ⲣ ⲣ Ⲥ ⲥ Ⲧ ⲧ Ⲩ ⲩ Ⲫ ⲫ Ⲭ ⲭ Ⲯ ⲯ Ⲱ ⲱ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Cprt_chars.txt000066400000000000000000000004201316231664500272050ustar00rootroot00000000000000𐠀 𐠁 𐠂 𐠃 𐠄 𐠅 𐠈 𐠊 𐠋 𐠌 𐠍 𐠎 𐠏𐠐 𐠑 𐠒 𐠓 𐠔 𐠕 𐠖 𐠗 𐠘 𐠙 𐠚 𐠛 𐠜 𐠝 𐠞 𐠟𐠠 𐠡 𐠢 𐠣 𐠤 𐠥 𐠦 𐠧 𐠨 𐠩 𐠪 𐠫 𐠬 𐠭 𐠮 𐠯𐠰 𐠱 𐠲 𐠳 𐠴 𐠵 𐠷 𐠸 𐠼 𐠿 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Cyrl_chars.txt000066400000000000000000000005451316231664500272160ustar00rootroot00000000000000а ә ӕ б в ѓ ґ ғ ҕ ђ ҙ е ё є ж җ з ѕ и ӣ і ї й ј ќ қ ҡ ҝ љ ӊ ң ҥ њ ө ҫ ћ ў ӯ ү ұ ф ҳ һ ѡ ц ҷ ҹ џ ш щ ъ ы ь ѣ э ю я ѧ ѫ ʼ А Ә Ӕ Б В Ѓ Ґ Ғ Ҕ Ђ Ҙ Е Ё Є Ж Җ З Ѕ И Ӣ І Ї Й Ј Ќ Қ Ҡ Ҝ Љ Ӊ Ң Ҥ Њ Ө Ҫ Ћ Ў Ӯ Ү Ұ Ф Ҳ Һ Ѡ Ц Ҷ Ҹ Џ Ш Щ Ъ Ы Ь Ѣ Э Ю Я Ѧ Ѫ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Deva_chars.txt000066400000000000000000000003601316231664500271570ustar00rootroot00000000000000० १ २ ३ ४ ५ ६ ७ ८ ९ अ आ इ ई उ ऊ ऋ ॠ ऌ ॡ ऍ ए ऐ ऑ ओ औ क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त थ द ध न प फ ब भ म य र ल ळ व श ष स ऽ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Dsrt_chars.txt000066400000000000000000000006201316231664500272130ustar00rootroot00000000000000𐐨 𐐩 𐐪 𐐫 𐐬 𐐭 𐐮 𐐯 𐐰 𐐱 𐐲 𐐳 𐐴 𐐵 𐐶 𐐷 𐐸 𐐹 𐐺 𐐻 𐐼 𐐽 𐐾 𐐿 𐑀 𐑁 𐑂 𐑃 𐑄 𐑅 𐑆 𐑇 𐑈 𐑉 𐑊 𐑋 𐑌 𐑍 𐑎 𐑏 𐐀 𐐁 𐐂 𐐃 𐐄 𐐅 𐐆 𐐇 𐐈 𐐉 𐐊 𐐋 𐐌 𐐍 𐐎 𐐏 𐐐 𐐑 𐐒 𐐓 𐐔 𐐕 𐐖 𐐗 𐐘 𐐙 𐐚 𐐛 𐐜 𐐝 𐐞 𐐟 𐐠 𐐡 𐐢 𐐣 𐐤 𐐥 𐐦 𐐧 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Egyp_chars.txt000066400000000000000000000004541316231664500272100ustar00rootroot00000000000000𓀀 𓀁 𓀂 𓀃 𓀄 𓀅 𓀆 𓀇 𓀈 𓀉 𓀊 𓀋 𓀌 𓀍 𓀎 𓀏 𓀐 𓀑 𓀒 𓀓 𓀔 𓀕 𓀖 𓀗 𓀘 𓀙 𓀚 𓀛 𓀜 𓀝 𓀞 𓀟 𓀠 𓀡 𓀢 𓀣 𓀤 𓀥 𓀦 𓀧 𓀨 𓀩 𓀪 𓀫 𓀬 𓀭 𓀮 𓀯 𓀰 𓀱 𓀲 𓀳 𓀴 𓀵 𓀶 𓀷 𓀸 𓀹 𓀺 𓀻 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Ethi_chars.txt000066400000000000000000000003601316231664500271710ustar00rootroot00000000000000ም ሞ ሧ ሩ ሪ ራ ሬ ር ሮ ሱ ሲ ሳ ሴ ስ ሶ ቁ ቂ ቃ ቄ ቅ ቆ ቱ ቲ ታ ቴ ት ቶ ኑ ኒ ና ኔ ን ኖ ኡ ኢ ኤ ኦ ኩ ኪ ካ ኬ ክ ኮ ዉ ዊ ዋ ዿ ጘ ጟ ⶓ ⶔ ጷ ፇ ፘ ፙ ፚ ⶠ ⶨ ⶰ ⶸ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Geor_chars.txt000066400000000000000000000002041316231664500271710ustar00rootroot00000000000000ა ბ გ დ ე ვ ზ თ ი კ ლ მ ნ ო პ ჟ რ ს ტ უ ფ ქ ღ ყ შ ჩ ც ძ წ ჭ ხ ჯ ჰ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Glag_chars.txt000066400000000000000000000004001316231664500271450ustar00rootroot00000000000000Ⰰ Ⰱ Ⰲ Ⰳ Ⰴ Ⰵ Ⰶ Ⰷ Ⰸ Ⰹ Ⰺ Ⰻ Ⰼ Ⰽ Ⰾ Ⰿ Ⱀ Ⱁ Ⱂ Ⱃ Ⱄ Ⱅ Ⱆ Ⱇ Ⱈ Ⱉ Ⱊ Ⱋ Ⱌ Ⱍ Ⱎ Ⱏ Ⱐ Ⱑ Ⱒ Ⱓ Ⱔ Ⱕ Ⱖ Ⱗ Ⱘ Ⱙ Ⱚ Ⱛ Ⱜ Ⱝ Ⱞ ⰰ ⰱ ⰲ ⰳ ⰴ ⰵ ⰶ ⰷ ⰸ ⰹ ⰺ ⰻ ⰼ ⰽ ⰾ ⰿ ⱀ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Goth_chars.txt000066400000000000000000000002241316231664500272000ustar00rootroot00000000000000̄ ̅ ̈ ̱ 𐌰 𐌱 𐌲 𐌳 𐌴 𐌵 𐌶 𐌷 𐌸 𐌹 𐌺 𐌻 𐌼 𐌽 𐌾 𐌿 𐍀 𐍁 𐍂 𐍃 𐍄 𐍅 𐍆 𐍇 𐍈 𐍉 𐍊 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Grek_chars.txt000066400000000000000000000005521316231664500271730ustar00rootroot00000000000000α ά ὰ ᾶ β γ δ ε έ ὲ ζ η ή ὴ ῆ θ ι ί ὶ ῖ ϊ ΐ ῒ ῗ κ λ μ ν ξ ο ό ὸ π ρ σ ς τ υ ὖ ὗ ύ ὺ ῦ ϋ ΰ ῢ ῧ φ χ ψ ω ὤ ὢ ὦ ὥ ὣ ὧ ώ ὼ ῶ Α Ά Ὰ Β Γ Δ Ε Έ Ὲ Ζ Η Ή Ὴ Θ Ι Ί Ὶ Ϊ Κ Λ Μ Ν Ξ Ο Ό Ὸ Π Ρ Σ Σ Τ Υ Ὗ Ύ Ὺ Ϋ Φ Χ Ψ Ω Ὤ Ὢ Ὦ Ὥ Ὣ Ὧ Ώ Ὼ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Gujr_chars.txt000066400000000000000000000003101316231664500272020ustar00rootroot00000000000000ૐ અ આ ઇ ઈ ઉ ઊ ઋ ૠ ઍ એ ઐ ઑ ઓ ઔ ક ખ ગ ઘ ઙ ચ છ જ ઝ ઞ ટ ઠ ડ ઢ ણ ત થ દ ધ ન પ ફ બ ભ મ ય ર લ વ શ ષ સ હ ળ ઽ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Guru_chars.txt000066400000000000000000000003341316231664500272230ustar00rootroot00000000000000੦ ੧ ੨ ੩ ੪ ੫ ੬ ੭ ੮ ੯ ੴ ੳ ਉ ਊ ਓ ਅ ਆ ਐ ਔ ੲ ਇ ਈ ਏ ਸ ਹ ਕ ਖ ਗ ਘ ਙ ਚ ਛ ਜ ਝ ਞ ਟ ਠ ਡ ਢ ਣ ਤ ਥ ਦ ਧ ਨ ਪ ਫ ਬ ਭ ਮ ਯ ਰ ਲ ਵ ੜ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Hano_chars.txt000066400000000000000000000001331316231664500271630ustar00rootroot00000000000000ᜠ ᜡ ᜢ ᜣ ᜤ ᜥ ᜦ ᜧ ᜨ ᜩ ᜪ ᜫ ᜬ ᜭ ᜮ ᜯᜰ ᜱ ᜲ ᜳ ᜴ ᜵ ᜶ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Hans_chars.txt000066400000000000000000000003601316231664500271710ustar00rootroot00000000000000一 丁 七 万 丈 三 上 下 丌 不 与 丑 专 且 世 丘 丙 业 东 丝 丢 两 严 丧 个 中 丰 串 临 丸 丹 为 主 丽 举 乃 久 么 义 之 乌 乍 乎 乏 乐 乔 乖 乘 乙 九 也 习 乡 书 买 乱 乾 了 予 争 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Hant_chars.txt000066400000000000000000000003601316231664500271720ustar00rootroot00000000000000一 丁 七 丈 三 上 下 丌 不 丑 且 世 丘 丙 丟 並 中 串 丸 丹 主 乃 久 么 之 乎 乏 乖 乘 乙 九 也 乾 亂 了 予 事 二 于 云 互 五 井 些 亞 亡 交 亥 亦 亨 享 京 亮 人 什 仁 仇 今 介 仍 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Hebr_chars.txt000066400000000000000000000001211316231664500271530ustar00rootroot00000000000000א ב ג ד ה ו ז ח ט י כ ך ל מ ם נ ן ס ע פ ף צ ץ ק ר ש ת nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Hira_chars.txt000066400000000000000000000003601316231664500271630ustar00rootroot00000000000000ぁ あ ぃ い ぅ う ぇ え ぉ お か が き ぎ く ぐ け げ こ ご さ ざ し じ す ず せ ぜ そ ぞ た だ ち ぢ っ つ づ て で と ど な に ぬ ね の は ば ぱ ひ び ぴ ふ ぶ ぷ へ べ ぺ ほ ぼ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Hluw_chars.txt000066400000000000000000000002011316231664500272110ustar00rootroot00000000000000𔐈𔒟𔑯𔑒𔒚𔕳𔓀𔑺𔓑𔑭𔐫𔑶𔐉𔔉𔑳𔒂𔑛𔕛𔑀𔕃𔑈𔖖𔔙𔐀𔑮𔑘𔘔𔐝𔐚𔐰𔐿𔐘 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Ital_chars.txt000066400000000000000000000002551316231664500271740ustar00rootroot00000000000000𐌀 𐌁 𐌂 𐌃 𐌄 𐌅 𐌆 𐌇 𐌈 𐌉 𐌊 𐌋 𐌌 𐌍 𐌎 𐌏𐌐 𐌑 𐌒 𐌓 𐌔 𐌕 𐌖 𐌗 𐌘 𐌙 𐌚 𐌛 𐌜 𐌝 𐌞𐌠 𐌡 𐌢 𐌣 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Java_chars.txt000066400000000000000000000002741316231664500271650ustar00rootroot00000000000000ꦄ ꦅ ꦆ ꦇ ꦈ ꦉ ꦊ ꦋ ꦌ ꦍ ꦎ ꦏ ꦐ ꦑ ꦒ ꦓ ꦔ ꦕ ꦖ ꦗ ꦘ ꦙ ꦚ ꦛ ꦜ ꦝ ꦞ ꦟ ꦠ ꦡ ꦢ ꦣ ꦤ ꦥ ꦦ ꦧ ꦨ ꦩ ꦪ ꦫ ꦬ ꦭ ꦮ ꦯ ꦰ ꦱ ꦲ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Jpan_chars.txt000066400000000000000000000003601316231664500271700ustar00rootroot00000000000000々 ゝ ゞ ー ヽ ヾ ぁ あ ァ ア ぃ い ィ イ ぅ う ゥ ウ ヴ ぇ え ェ エ ぉ お ォ オ か ヵ カ が ガ き キ ぎ ギ く ク ぐ グ け ヶ ケ げ ゲ こ コ ご ゴ さ サ ざ ザ し シ じ ジ す ス ず nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Kali_chars.txt000066400000000000000000000002301316231664500271540ustar00rootroot00000000000000ꤊ ꤋ ꤌ ꤍ ꤎ ꤏ ꤐ ꤑ ꤒ ꤓ ꤔ ꤕ ꤖ ꤗ ꤘ ꤙ ꤚ ꤛ ꤜ ꤝ ꤞ ꤟ ꤠ ꤡ ꤢ ꤣ ꤤ ꤥ ꤀ ꤁ ꤂ ꤃ ꤄ ꤅ ꤆ ꤇ ꤈ ꤉ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Kana_chars.txt000066400000000000000000000003601316231664500271520ustar00rootroot00000000000000ァ ア ィ イ ゥ ウ ェ エ ォ オ カ ガ キ ギ ク グ ケ ゲ コ ゴ サ ザ シ ジ ス ズ セ ゼ ソ ゾ タ ダ チ ヂ ッ ツ ヅ テ デ ト ド ナ ニ ヌ ネ ノ ハ バ パ ヒ ビ ピ フ ブ プ ヘ ベ ペ ホ ボ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Khar_chars.txt000066400000000000000000000002521316231664500271650ustar00rootroot00000000000000𐨐 𐨑 𐨒 𐨓 𐨕 𐨖 𐨗 𐨙 𐨚 𐨛 𐨜 𐨝 𐨞 𐨟 𐨠 𐨡 𐨢 𐨣 𐨤 𐨥 𐨦 𐨧 𐨨 𐨩 𐨪 𐨫 𐨬 𐨭 𐨮 𐨯 𐨰 𐨱 𐨲 𐨳 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Khmr_chars.txt000066400000000000000000000002741316231664500272050ustar00rootroot00000000000000ក ខ គ ឃ ង ច ឆ ជ ឈ ញ ដ ឋ ឌ ឍ ណ ត ថ ទ ធ ន ប ផ ព ភ ម យ រ ឫ ឬ ល ឭ ឮ វ ស ហ ឡ អ ឥ ឦ ឧ ឩ ឪ ឯ ឰ ឱ ឲ ឳ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Knda_chars.txt000066400000000000000000000003601316231664500271550ustar00rootroot00000000000000೦ ೧ ೨ ೩ ೪ ೫ ೬ ೭ ೮ ೯ ಅ ಆ ಇ ಈ ಉ ಊ ಋ ೠ ಌ ೡ ಎ ಏ ಐ ಒ ಓ ಔ ಕ ಖ ಗ ಘ ಙ ಚ ಛ ಜ ಝ ಞ ಟ ಠ ಡ ಢ ಣ ತ ಥ ದ ಧ ನ ಪ ಫ ಬ ಭ ಮ ಯ ರ ಱ ಲ ವ ಶ ಷ ಸ ಹ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Kore_chars.txt000066400000000000000000000003601316231664500272000ustar00rootroot00000000000000가 각 갂 갃 간 갅 갆 갇 갈 갉 갊 갋 갌 갍 갎 갏 감 갑 값 갓 갔 강 갖 갗 갘 같 갚 갛 개 객 갞 갟 갠 갡 갢 갣 갤 갥 갦 갧 갨 갩 갪 갫 갬 갭 갮 갯 갰 갱 갲 갳 갴 갵 갶 갷 갸 갹 갺 갻 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Kthi_chars.txt000066400000000000000000000003411316231664500271760ustar00rootroot00000000000000𑂃 𑂄 𑂅 𑂆 𑂇 𑂈 𑂉 𑂊 𑂋 𑂌 𑂍 𑂎 𑂏 𑂐 𑂑 𑂒 𑂓 𑂔 𑂕 𑂖 𑂗 𑂘 𑂙 𑂚 𑂛 𑂜 𑂝 𑂞 𑂟 𑂠 𑂡 𑂢 𑂣 𑂤 𑂥 𑂦 𑂧 𑂨 𑂩 𑂪 𑂫 𑂬 𑂭 𑂮 𑂯 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Lana_chars.txt000066400000000000000000000002641316231664500271560ustar00rootroot00000000000000ᨠ ᨡ ᨢ ᨣ ᨤ ᨥ ᨦ ᨧ ᨨ ᨩ ᨪ ᨫ ᨬ ᨭ ᨮ ᨯ ᨰ ᨱ ᨲ ᨳ ᨴ ᨵ ᨶ ᨷ ᨸ ᨹ ᨺ ᨻ ᨼ ᨽ ᨾ ᨿ ᩀ ᩁ ᩂ ᩃ ᩄ ᩅ ᩆ ᩇ ᩈ ᩉ ᩊ ᩋ ᩌ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Laoo_chars.txt000066400000000000000000000002401316231664500271670ustar00rootroot00000000000000ໆ ກ ຂ ຄ ງ ຈ ສ ຊ ຍ ດ ຕ ຖ ທ ນ ບ ປ ຜ ຝ ພ ຟ ມ ຢ ຣ ລ ວ ຫ ໜ ໝ ອ ຮ ຯ ະ າ ຳ ຽ ເ ແ ໂ ໃ ໄ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Latn_chars.txt000066400000000000000000000005461316231664500272040ustar00rootroot00000000000000á à â ấ ầ ẩ ä ã ą ā ả ɓ c ď ɗ é è ê ë ę ə ɛ ğ í ì î İ ı ɨ ɩ ñ ṅ ŋ ó ò ô ö ő œ ɔ q ř ś ṣ ș ß ť ú ù û ů ü ű ū ʋ x ÿ ź ʼ ꞌ Á À  Ấ Ầ Ẩ Ä Ã Ą Ā Ả Ɓ C Ď Ɗ É È Ê Ë Ę Ə Ɛ Ğ Í Ì Î I Ɨ Ɩ Ñ Ṅ Ŋ Ó Ò Ô Ö Ő Œ Ɔ Q Ř Ś Ṣ Ș Ť Ú Ù Û Ů Ü Ű Ū Ʋ X Ÿ Ź Ꞌ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Lepc_chars.txt000066400000000000000000000002201316231664500271560ustar00rootroot00000000000000ᰀ ᰁ ᰂ ᰃ ᰄ ᰅ ᰆ ᰇ ᰈ ᰉ ᰊ ᰋ ᰌ ᰍ ᰎ ᰏ ᰐ ᰑ ᰒ ᰓ ᰔ ᰕ ᰖ ᰗ ᰘ ᰙ ᰚ ᰛ ᰜ ᰝ ᰞ ᰟ ᰠ ᰡ ᰢ ᰣ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Limb_chars.txt000066400000000000000000000004041316231664500271620ustar00rootroot00000000000000ᤀ ᤁ ᤂ ᤃ ᤄ ᤅ ᤆ ᤇ ᤈ ᤉ ᤊ ᤋ ᤌ ᤍ ᤎ ᤏᤐ ᤑ ᤒ ᤓ ᤔ ᤕ ᤖ ᤗ ᤘ ᤙ ᤚ ᤛ ᤜᤠ ᤡ ᤢ ᤣ ᤤ ᤥ ᤦ ᤧ ᤨ ᤩ ᤪ ᤫᤰ ᤱ ᤲ ᤳ ᤴ ᤵ ᤶ ᤷ ᤸ ᤹ ᤺ ᤻᥀ ᥄ ᥅ ᥆ ᥇ ᥈ ᥉ ᥊ ᥋ ᥌ ᥍ ᥎ ᥏ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Linb_chars.txt000066400000000000000000000003341316231664500271650ustar00rootroot00000000000000𐀀 𐀁 𐀂 𐀃 𐀄 𐀅 𐀆 𐀇 𐀈 𐀉 𐀊 𐀋 𐂀 𐂁 𐂂 𐂃 𐂄 𐂅 𐂆 𐂇 𐂈 𐂉 𐂊 𐂋 𐂌 𐂍 𐂎 𐂏 𐂐 𐂑 𐂒 𐂓 𐂔 𐂕 𐂖 𐂗 𐂘 𐂙 𐂚 𐂛 𐂜 𐂝 𐂞 𐂟 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Lisu_chars.txt000066400000000000000000000002211316231664500272100ustar00rootroot00000000000000ꓐꓑꓒꓓꓔꓕꓖꓗꓘꓙꓚꓛꓜꓝꓞꓟꓠꓡꓢꓣꓤꓥꓦꓧꓨꓩꓪꓫꓬꓭꓮꓯꓰꓱꓲꓳꓴꓵꓶꓷꓸꓹꓺꓻꓼꓽ꓾꓿ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Lyci_chars.txt000066400000000000000000000002201316231664500271730ustar00rootroot00000000000000𐊀 𐊁 𐊂 𐊃 𐊄 𐊅 𐊆 𐊇 𐊈 𐊉 𐊊 𐊋 𐊌 𐊍 𐊎 𐊏𐊐 𐊑 𐊒 𐊓 𐊔 𐊕 𐊖 𐊗 𐊘 𐊙 𐊚 𐊛 𐊜 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Lydi_chars.txt000066400000000000000000000002061316231664500272000ustar00rootroot00000000000000𐤠 𐤡 𐤢 𐤣 𐤤 𐤥 𐤦 𐤧 𐤨 𐤩 𐤪 𐤫 𐤬 𐤭 𐤮 𐤯𐤰 𐤱 𐤲 𐤳 𐤴 𐤵 𐤶 𐤷 𐤸 𐤹 𐤿 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Mand_chars.txt000066400000000000000000000001441316231664500271570ustar00rootroot00000000000000ࡀ ࡁ ࡂ ࡃ ࡄ ࡅ ࡆ ࡇ ࡈ ࡉ ࡊ ࡋ ࡌ ࡍ ࡎ ࡏ ࡐ ࡑ ࡒ ࡓ ࡔ ࡕ ࡖ ࡗ ࡘ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Mlym_chars.txt000066400000000000000000000003501316231664500272150ustar00rootroot00000000000000അ ആ ഇ ഈ ഉ ഊ ഋ ൠ ഌ ൡ എ ഏ ഐ ഒ ഓ ഔ ക ൿ ഖ ഗ ഘ ങ ച ഛ ജ ഝ ഞ ട ഠ ഡ ഢ ണ ൺ ത ഥ ദ ധ ന ൻ പ ഫ ബ ഭ മ യ ര ർ ല ൽ വ ശ ഷ സ ഹ ള ൾ ഴ റ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Mong_chars.txt000066400000000000000000000002641316231664500272030ustar00rootroot00000000000000᠐ ᠑ ᠒ ᠓ ᠔ ᠕ ᠖ ᠗ ᠘ ᠙ ᠠ ᠡ ᠢ ᠣ ᠤ ᠥ ᠦ ᠧ ᠨ ᠩ ᠪ ᠫ ᠬ ᠭ ᠮ ᠯ ᠰ ᠱ ᠲ ᠳ ᠴ ᠵ ᠶ ᠷ ᠸ ᠹ ᠺ ᠻ ᠼ ᠽ ᠾ ᠿ ᡀ ᡁ ᡂ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Mtei_chars.txt000066400000000000000000000002141316231664500271740ustar00rootroot00000000000000ꯀ ꯁ ꯂ ꯃ ꯄ ꯅ ꯆ ꯇ ꯈ ꯉ ꯊ ꯋ ꯌ ꯍ ꯎ ꯏ ꯐ ꯑ ꯒ ꯓ ꯔ ꯕ ꯖ ꯗ ꯘ ꯙ ꯚ ꯛ ꯜ ꯝ ꯞ ꯟ ꯠ ꯡ ꯢ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Mymr_chars.txt000066400000000000000000000002501316231664500272220ustar00rootroot00000000000000က ခ ဂ ဃ င စ ဆ ဇ ဈ ဉ ည ဋ ဌ ဍ ဎ ဏ တ ထ ဒ ဓ န ပ ဖ ဗ ဘ မ ယ ရ လ ဝ သ ဟ ဠ အ ဣ ဤ ဥ ဦ ဧ ဩ ဪ ဿ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Nkoo_chars.txt000066400000000000000000000001211316231664500272010ustar00rootroot00000000000000ߊ ߋ ߌ ߍ ߎ ߏ ߐ ߒ ߓ ߔ ߕ ߖ ߗ ߘ ߙ ߚ ߛ ߜ ߝ ߞ ߟ ߡ ߢ ߣ ߤ ߥ ߦ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Ogam_chars.txt000066400000000000000000000001611316231664500271620ustar00rootroot00000000000000ᚁ ᚂ ᚃ ᚄ ᚅ ᚆ ᚇ ᚈ ᚉ ᚊ ᚋ ᚌ ᚍ ᚎ ᚏ ᚐ ᚑ ᚒ ᚓ ᚔ ᚕ ᚖ ᚗ ᚘ ᚙ ᚚ ᚛ ᚜ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Olck_chars.txt000066400000000000000000000003011316231664500271630ustar00rootroot00000000000000᱐ ᱑ ᱒ ᱓ ᱔ ᱕ ᱖ ᱗ ᱘ ᱙ ᱚ ᱛ ᱜ ᱝ ᱞ ᱟ ᱠ ᱡ ᱢ ᱣ ᱤ ᱥ ᱦ ᱧ ᱨ ᱩ ᱪ ᱫ ᱬ ᱭ ᱮ ᱯ ᱰ ᱱ ᱲ ᱳ ᱴ ᱵ ᱶ ᱷ ᱸ ᱹ ᱺ ᱻ ᱼ ᱽ ᱾ ᱿ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Orkh_chars.txt000066400000000000000000000004541316231664500272070ustar00rootroot00000000000000𐰀 𐰁 𐰂 𐰃 𐰄 𐰅 𐰆 𐰇 𐰈 𐰉 𐰊 𐰋 𐰌 𐰍 𐰎 𐰏 𐰐 𐰑 𐰒 𐰓 𐰔 𐰕 𐰖 𐰗 𐰘 𐰙 𐰚 𐰛 𐰜 𐰝 𐰞 𐰟 𐰠 𐰡 𐰢 𐰣 𐰤 𐰥 𐰦 𐰧 𐰨 𐰩 𐰪 𐰫 𐰬 𐰭 𐰮 𐰯 𐰰 𐰱 𐰲 𐰳 𐰴 𐰵 𐰶 𐰷 𐰸 𐰹 𐰺 𐰻 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Orya_chars.txt000066400000000000000000000002741316231664500272160ustar00rootroot00000000000000ଅ ଆ ଇ ଈ ଉ ଊ ଋ ଏ ଐ ଓ ଔ କ ଖ ଗ ଘ ଙ ଚ ଛ ଜ ଝ ଞ ଟ ଠ ଡ ଢ ଣ ତ ଥ ଦ ଧ ନ ପ ଫ ବ ଭ ମ ଯ ୟ ର ଲ ଳ ଵ ୱ ଶ ଷ ସ ହ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Osma_chars.txt000066400000000000000000000003061316231664500271770ustar00rootroot00000000000000𐒀 𐒁 𐒂 𐒃 𐒄 𐒅 𐒆 𐒇 𐒈 𐒉 𐒊 𐒋 𐒌 𐒍 𐒎 𐒏𐒐 𐒑 𐒒 𐒓 𐒔 𐒕 𐒖 𐒗 𐒘 𐒙 𐒚 𐒛 𐒜 𐒝𐒠 𐒡 𐒢 𐒣 𐒤 𐒥 𐒦 𐒧 𐒨 𐒩 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Phag_chars.txt000066400000000000000000000003201316231664500271530ustar00rootroot00000000000000ꡀ ꡁ ꡂ ꡃ ꡄ ꡅ ꡆ ꡇ ꡈ ꡉ ꡊ ꡋ ꡌ ꡍ ꡎ ꡏ ꡐ ꡑ ꡒ ꡓ ꡔ ꡕ ꡖ ꡗ ꡘ ꡙ ꡚ ꡛ ꡜ ꡝ ꡞ ꡟ ꡠ ꡡ ꡢ ꡣ ꡤ ꡥ ꡦ ꡧ ꡨ ꡩ ꡪ ꡫ ꡬ ꡭ ꡮ ꡯ ꡰ ꡱ ꡲ ꡳ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Phli_chars.txt000066400000000000000000000002061316231664500271730ustar00rootroot00000000000000𐭠 𐭡 𐭢 𐭣 𐭤 𐭥 𐭦 𐭧 𐭨 𐭩 𐭪 𐭫 𐭬 𐭭 𐭮 𐭯𐭰 𐭱 𐭲 𐭸 𐭹 𐭺 𐭻 𐭼 𐭽 𐭾 𐭿 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Phnx_chars.txt000066400000000000000000000002201316231664500272100ustar00rootroot00000000000000𐤀 𐤁 𐤂 𐤃 𐤄 𐤅 𐤆 𐤇 𐤈 𐤉 𐤊 𐤋 𐤌 𐤍 𐤎 𐤏𐤐 𐤑 𐤒 𐤓 𐤔 𐤕 𐤖 𐤗 𐤘 𐤙 𐤚 𐤛 𐤟 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Prti_chars.txt000066400000000000000000000002251316231664500272160ustar00rootroot00000000000000𐭀 𐭁 𐭂 𐭃 𐭄 𐭅 𐭆 𐭇 𐭈 𐭉 𐭊 𐭋 𐭌 𐭍 𐭎 𐭏𐭐 𐭑 𐭒 𐭓 𐭔 𐭕 𐭘 𐭙 𐭚 𐭛 𐭜 𐭝 𐭞 𐭟 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Rjng_chars.txt000066400000000000000000000002251316231664500272000ustar00rootroot00000000000000ꤰ ꤱ ꤲ ꤳ ꤴ ꤵ ꤶ ꤷ ꤸ ꤹ ꤺ ꤻ ꤼ ꤽ ꤾ ꤿ ꥀ ꥁ ꥂ ꥃ ꥄ ꥅ ꥆ ꥇ ꥈ ꥉ ꥊ ꥋ ꥌ ꥍ ꥎ ꥏ ꥐ ꥑ ꥒ ꥓ ꥟ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Runr_chars.txt000066400000000000000000000003641316231664500272320ustar00rootroot00000000000000ᚠᚡᚢᚣᚤᚥᚦᚧᚨᚩᚪᚫᚬᚭᚮᚯᚰᚱᚲᚳᚴᚵᚶᚷᚸᚹᚺᚻᚼᚽᚾᚿᛀᛁᛂᛃᛄᛅᛆᛇᛈᛉᛊᛋᛌᛍᛎᛏᛐᛑᛒᛓᛔᛕᛖᛗᛘᛙᛚᛛᛜᛝᛞᛟᛠᛡᛢᛣᛤᛥᛦᛧᛨᛩᛪ᛫᛬᛭ᛮᛯᛰ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Samr_chars.txt000066400000000000000000000003651316231664500272070ustar00rootroot00000000000000ࠀ ࠁ ࠂ ࠃ ࠄ ࠅ ࠆ ࠇ ࠈ ࠉ ࠊ ࠋ ࠌ ࠍ ࠎ ࠏ ࠐ ࠑ ࠒ ࠓ ࠔ ࠕ ࠖ ࠗ ࠘ ࠙ ࠚ ࠛ ࠜ ࠝ ࠞ ࠟ ࠠ ࠡ ࠢ ࠣ ࠤ ࠥ ࠦ ࠧ ࠨ ࠩ ࠪ ࠫ ࠬ ࠭ ࠰ ࠱ ࠲ ࠳ ࠴ ࠵ ࠶ ࠷ ࠸ ࠹ ࠺ ࠻ ࠼ ࠽ ࠾ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Sarb_chars.txt000066400000000000000000000002371316231664500271720ustar00rootroot00000000000000𐩠 𐩡 𐩢 𐩣 𐩤 𐩥 𐩦 𐩧 𐩨 𐩩 𐩪 𐩫 𐩬 𐩭 𐩮 𐩯𐩰 𐩱 𐩲 𐩳 𐩴 𐩵 𐩶 𐩷 𐩸 𐩹 𐩺 𐩻 𐩼 𐩽 𐩾 𐩿 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Saur_chars.txt000066400000000000000000000003101316231664500272050ustar00rootroot00000000000000ꢂ ꢃ ꢄ ꢅ ꢆ ꢇ ꢈ ꢉ ꢊ ꢋ ꢌ ꢍ ꢎ ꢏ ꢐ ꢑ ꢒ ꢓ ꢔ ꢕ ꢖ ꢗ ꢘ ꢙ ꢚ ꢛ ꢜ ꢝ ꢞ ꢟ ꢠ ꢡ ꢢ ꢣ ꢤ ꢥ ꢦ ꢧ ꢨ ꢩ ꢪ ꢫ ꢬ ꢭ ꢮ ꢯ ꢰ ꢱ ꢲ ꢳ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Shaw_chars.txt000066400000000000000000000003601316231664500272020ustar00rootroot00000000000000𐑐 𐑑 𐑒 𐑓 𐑔 𐑕 𐑖 𐑗 𐑘 𐑙 𐑚 𐑛 𐑜 𐑝 𐑞 𐑟 𐑠 𐑡 𐑢 𐑣 𐑤 𐑥 𐑦 𐑧 𐑨 𐑩 𐑪 𐑫 𐑬 𐑭 𐑮 𐑯 𐑰 𐑱 𐑲 𐑳 𐑴 𐑵 𐑶 𐑷 𐑸 𐑹 𐑺 𐑻 𐑼 𐑽 𐑾 𐑿 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Sinh_chars.txt000066400000000000000000000003341316231664500272020ustar00rootroot00000000000000අ ආ ඇ ඈ ඉ ඊ උ ඌ ඍ එ ඒ ඓ ඔ ඕ ඖ ක ඛ ග ඝ ඞ ඟ ච ඡ ජ ඣ ඥ ඤ ට ඨ ඩ ඪ ණ ඬ ත ථ ද ධ න ඳ ප ඵ බ භ ම ඹ ය ර ල ව ශ ෂ ස හ ළ ෆ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Sund_chars.txt000066400000000000000000000001701316231664500272100ustar00rootroot00000000000000ᮃ ᮄ ᮅ ᮆ ᮇ ᮈ ᮉ ᮊ ᮋ ᮌ ᮍ ᮎ ᮏ ᮐ ᮑ ᮒ ᮓ ᮔ ᮕ ᮖ ᮗ ᮘ ᮙ ᮚ ᮛ ᮜ ᮝ ᮞ ᮟ ᮠ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Sylo_chars.txt000066400000000000000000000002001316231664500272170ustar00rootroot00000000000000ꠀ ꠁ ꠃ ꠄ ꠅ ꠇ ꠈ ꠉ ꠊ ꠌ ꠍ ꠎ ꠏ ꠐ ꠑ ꠒ ꠓ ꠔ ꠕ ꠖ ꠗ ꠘ ꠙ ꠚ ꠛ ꠜ ꠝ ꠞ ꠟ ꠠ ꠡ ꠢ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Syrc_chars.txt000066400000000000000000000001241316231664500272160ustar00rootroot00000000000000ܐ ܒ ܓ ܔ ܖ ܕ ܗ ܘ ܙ ܚ ܛ ܜ ܝ ܞ ܟ ܠ ܡ ܢ ܣ ܤ ܥ ܦ ܧ ܨ ܩ ܪ ܫ ܬ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Tagb_chars.txt000066400000000000000000000000671316231664500271610ustar00rootroot00000000000000ᝠᝡᝢᝣᝤᝥᝦᝧᝨᝩᝪᝫᝬᝮᝯᝰᝲᝳ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Tale_chars.txt000066400000000000000000000002451316231664500271670ustar00rootroot00000000000000ᥐ ᥑ ᥒ ᥓ ᥔ ᥕ ᥖ ᥗ ᥘ ᥙ ᥚ ᥛ ᥜ ᥝ ᥞ ᥟ ᥠ ᥡ ᥢ ᥣ ᥤ ᥥ ᥦ ᥧ ᥨ ᥩ ᥪ ᥫ ᥬ ᥭ ᥰ ᥱ ᥲ ᥳ ᥴ 、 。 〈 〉 《 》 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Talu_chars.txt000066400000000000000000000004001316231664500272000ustar00rootroot00000000000000ᦀ ᦁ ᦂ ᦃ ᦄ ᦅ ᦆ ᦇ ᦈ ᦉ ᦊ ᦋ ᦌ ᦍ ᦎ ᦏ ᦐ ᦑ ᦒ ᦓ ᦔ ᦕ ᦖ ᦗ ᦘ ᦙ ᦚ ᦛ ᦜ ᦝ ᦞ ᦟ ᦠ ᦡ ᦢ ᦣ ᦤ ᦥ ᦦ ᦧ ᦨ ᦩ ᦪ ᦫ ᦰ ᦱ ᦲ ᦳ ᦴ ᦵ ᦶ ᦷ ᦸ ᦹ ᦺ ᦻ ᦼ ᦽ ᦾ ᦿ ᧀ ᧁ ᧂ ᧃ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Taml_chars.txt000066400000000000000000000002141316231664500271730ustar00rootroot00000000000000அ ஆ இ ஈ உ ஊ எ ஏ ஐ ஒ ஓ ஔ ஃ க ங ச ஞ ட ண த ந ப ம ய ர ல வ ழ ள ற ன ஜ ஷ ஸ ஹ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Tavt_chars.txt000066400000000000000000000003141316231664500272150ustar00rootroot00000000000000ꪀ ꪁ ꪂ ꪃ ꪄ ꪅ ꪆ ꪇ ꪈ ꪉ ꪊ ꪋ ꪌ ꪍ ꪎ ꪏ ꪐ ꪑ ꪒ ꪓ ꪔ ꪕ ꪖ ꪗ ꪘ ꪙ ꪚ ꪛ ꪜ ꪝ ꪞ ꪟ ꪠ ꪡ ꪢ ꪣ ꪤ ꪥ ꪦ ꪧ ꪨ ꪩ ꪪ ꪫ ꪬ ꪭ ꪮ ꪯ ꫛ ꫜ ꫝ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Telu_chars.txt000066400000000000000000000003141316231664500272100ustar00rootroot00000000000000అ ఆ ఇ ఈ ఉ ఊ ఋ ౠ ఌ ౡ ఎ ఏ ఐ ఒ ఓ ఔ క ఖ గ ఘ ఙ చ ఛ జ ఝ ఞ ట ఠ డ ఢ ణ త థ ద ధ న ప ఫ బ భ మ య ర ఱ ల వ శ ష స హ ళ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Tfng_chars.txt000066400000000000000000000002401316231664500271730ustar00rootroot00000000000000ⴰ ⴱ ⴳ ⴶ ⴷ ⴹ ⴻ ⴼ ⴽ ⴾ ⵀ ⵂ ⵃ ⵄ ⵅ ⵆ ⵇ ⵈ ⵉ ⵊ ⵌ ⵍ ⵎ ⵏ ⵑ ⵓ ⵔ ⵕ ⵖ ⵗ ⵙ ⵚ ⵛ ⵜ ⵟ ⵡ ⵢ ⵣ ⵤ ⵥ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Tglg_chars.txt000066400000000000000000000001201316231664500271670ustar00rootroot00000000000000ᜀ ᜁ ᜂ ᜃ ᜄ ᜅ ᜆ ᜇ ᜈ ᜉ ᜊ ᜋ ᜌ ᜎ ᜏ ᜐ ᜑ ᜒ ᜓ ᜔ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Thaa_chars.txt000066400000000000000000000001101316231664500271460ustar00rootroot00000000000000ހ ށ ނ ރ ބ ޅ ކ އ ވ މ ފ ދ ތ ލ ގ ޏ ސ ޑ ޒ ޓ ޔ ޕ ޖ ޗ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Thai_chars.txt000066400000000000000000000003441316231664500271670ustar00rootroot00000000000000ๆ ก ข ฃ ค ฅ ฆ ง จ ฉ ช ซ ฌ ญ ฎ ฏ ฐ ฑ ฒ ณ ด ต ถ ท ธ น บ ป ผ ฝ พ ฟ ภ ม ย ร ฤ ล ฦ ว ศ ษ ส ห ฬ อ ฮ ฯ ะ า ำ เ แ โ ใ ไ ๅ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Tibt_chars.txt000066400000000000000000000002201316231664500271750ustar00rootroot00000000000000ཀ ཁ ག ང ཅ ཆ ཇ ཉ ཊ ཋ ཌ ཎ ཏ ཐ ད ན པ ཕ བ མ ཙ ཚ ཛ ཝ ཞ ཟ འ ཡ ར ཪ ལ ཤ ཥ ས ཧ ཨ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Ugar_chars.txt000066400000000000000000000002261316231664500271770ustar00rootroot00000000000000𐎀 𐎁 𐎂 𐎃 𐎄 𐎅 𐎆 𐎇 𐎈 𐎉 𐎊 𐎋 𐎌 𐎍 𐎎 𐎏 𐎐 𐎑 𐎒 𐎓 𐎔 𐎕 𐎖 𐎗 𐎘 𐎙 𐎚 𐎛 𐎜 𐎝 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Vaii_chars.txt000066400000000000000000000003601316231664500271700ustar00rootroot00000000000000ꔀ ꔁ ꔂ ꔃ ꔄ ꔅ ꔆ ꔇ ꔈ ꔉ ꔊ ꔋ ꔌ ꔍ ꔎ ꔏ ꔐ ꔑ ꔒ ꔓ ꔔ ꔕ ꔖ ꔗ ꔘ ꔙ ꔚ ꔛ ꔜ ꔝ ꔞ ꔟ ꔠ ꔡ ꔢ ꔣ ꔤ ꔥ ꔦ ꔧ ꔨ ꔩ ꔪ ꔫ ꔬ ꔭ ꔮ ꔯ ꔰ ꔱ ꔲ ꔳ ꔴ ꔵ ꔶ ꔷ ꔸ ꔹ ꔺ ꔻ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Xpeo_chars.txt000066400000000000000000000003671316231664500272220ustar00rootroot00000000000000𐎠 𐎡 𐎢 𐎣 𐎤 𐎥 𐎦 𐎧 𐎨 𐎩 𐎪 𐎫 𐎬 𐎭 𐎮 𐎯𐎰 𐎱 𐎲 𐎳 𐎴 𐎵 𐎶 𐎷 𐎸 𐎹 𐎺 𐎻 𐎼 𐎽 𐎾 𐎿𐏀 𐏁 𐏂 𐏃 𐏈 𐏉 𐏊 𐏋 𐏌 𐏍 𐏎 𐏏𐏐 𐏑 𐏒 𐏓 𐏔 𐏕 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Xsux_chars.txt000066400000000000000000000003601316231664500272470ustar00rootroot00000000000000𒀀 𒀁 𒀂 𒀃 𒀄 𒀅 𒀆 𒀇 𒀈 𒀉 𒀊 𒀋 𒀌 𒀍 𒀎 𒀏 𒀐 𒀑 𒀒 𒀓 𒀔 𒀕 𒀖 𒀗 𒀘 𒀙 𒀚 𒀛 𒀜 𒀝 𒀞 𒀟 𒀠 𒀡 𒀢 𒀣 𒀤 𒀥 𒀦 𒀧 𒀨 𒀩 𒀪 𒀫 𒀬 𒀭 𒀮 𒀯 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Yiii_chars.txt000066400000000000000000000003601316231664500272030ustar00rootroot00000000000000ꀀ ꀁ ꀂ ꀃ ꀄ ꀅ ꀆ ꀇ ꀈ ꀉ ꀊ ꀋ ꀌ ꀍ ꀎ ꀏ ꀐ ꀑ ꀒ ꀓ ꀔ ꀕ ꀖ ꀗ ꀘ ꀙ ꀚ ꀛ ꀜ ꀝ ꀞ ꀟ ꀠ ꀡ ꀢ ꀣ ꀤ ꀥ ꀦ ꀧ ꀨ ꀩ ꀪ ꀫ ꀬ ꀭ ꀮ ꀯ ꀰ ꀱ ꀲ ꀳ ꀴ ꀵ ꀶ ꀷ ꀸ ꀹ ꀺ ꀻ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Zsye_chars.txt000066400000000000000000000006611316231664500272360ustar00rootroot00000000000000😀😂🤓🤗🙄🤔🤐🤕🕵💑👩‍❤️‍👩👨‍❤️‍👨👪👨‍👩‍👧‍👦👩‍👩‍👦👩‍👩‍👧‍👦👨‍👨‍👦👨‍👨‍👧‍👦⛑🕶🕴👌🖖👅🐶🐭🦁🐵🦄🕷🦂🦃🕊🐿☘🌻🕸☀️⛅️🌦⛈🌨🌬🌪🌶🧀🌭🍕🌮🌯🍜🍾🍼🏌🏏🎿⛷🏹🏅🛫⛴💺🏗🏔🏕🛣🏖🏙🏡🏯💒🏛🕌🕋⛩🕉☯🃏 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Zsym-sym1_chars.txt000066400000000000000000000002221316231664500301260ustar00rootroot00000000000000A⃝B⃞C⃟D⃠E⃤☊☓☤☮☺☿♌♬♳⚒⚧⚭⚵⛥⛹🜋⑳➉⓴❿➓⓾ⓏⓉ🄬🅩🄭🅉🆉🆞🆋⒇🄩⒵⒛🄊🅪Ⅶ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Zsym-sym2_chars.txt000066400000000000000000000007631316231664500301410ustar00rootroot000000000000009⃣◌⃢❄❇❉✥🞯🞵❊✳✺▴⯅△⏶🞁◢◭●○◖◑◉🞆◙◘❏■□◩▩🞖🞑❖⬗🞛🞠⬮🞥✛🞭🙾▱❙⯏🟂🟅✫🟋❂🟔➣⮛►🢖🢒🡩⮡⬌⬀⮉🡂➥🗘⮂🠕🠞🠶🡅➵🢙⮱🡙🢩🠺⭬⭾⭼⯮⮍❴❀🙵☘🙫🙤🙕🙛🖑☝🖝🖞⏻⏮🔊⌚◴⌘🗑✓🗷☕☣⛓🗠🖆☼☎🌦🎧🐿🏝🕗🚔🙭🗫🚲🏋🙻␀⢟𝍧𐋷𐅄𐆒𐹢𐇧⑆𝌁☷𝌖䷃♘⚂⛁🀽🂋🀀🂡🃠♣☗⚈ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/und-Zsym_chars.txt000066400000000000000000000003461316231664500272460ustar00rootroot00000000000000€ ₹ ℃ ℉ ℕ № ℚ ℞ ™ ⇐ ⇑ ⇒ ⇓ ∃ ∅ ∇ ∈ ∏ ∞ ≈ ⊄ ⌚ ⏣ ⏳ ␀ ① Ⓐ ┣ ┳ ☂ ☎ ☕ ☜ ☷ ☺ ♏ ♖ ♣ ♫ ♻ ♿ ⛹ ✈ ❀ ❢ ⩫ ⪓ ⩤ ⸙ ䷃ 𐄷 𐅻 𐇯 𝄢 𝅗𝅥 𝅘𝅥𝅯 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ur-Arab_udhr.txt000066400000000000000000000004351316231664500266520ustar00rootroot00000000000000تمام انسان آزاد اور حقوق و عزت کے اعتبار سے برابر پیدا ہوۓ ہیں۔ انہیں ضمیر اور عقل ودیعت ہوئی ہے۔ اسلیۓ انہیں ایک دوسرے کے ساتھ بھائی چارے کا سلوک کرنا چاہیۓ۔ nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ura-Latn_udhr.txt000066400000000000000000000001741316231664500270440ustar00rootroot00000000000000Ita rijiicha itolere cacha. Aihana jaun, ita belaain, naojoain neuruhine laurilaurichuru nenacaauru aina itolere cachaauru. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/uz-Cyrl_udhr.txt000066400000000000000000000004431316231664500267250ustar00rootroot00000000000000Барча одамлар эрҝин, қадр-қиммат ва ҳуқуқларда танг бўлиб туғиладилар. Улар ақл ва виждон соҳибидирлар ва бир-бирларига биродарларча муомала қилишлари зарур. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/uz-Latn_udhr.txt000066400000000000000000000002431316231664500267100ustar00rootroot00000000000000Barcha odamlar erkin, qadr-qimmat va huquqlarda tang bo'lib tug'iladilar. Ular aql va vijdon sohibidirlar va bir-birlariga birodarlarcha muomala qilishlari zarur. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/uzn-Cyrl_udhr.txt000066400000000000000000000004471316231664500271070ustar00rootroot00000000000000Барча одамлар эркин, қадр‐қиммат ва ҳуқуқларда тенг бўлиб туғиладилар. Улар ақл ва виждон соҳибидирлар ва бир‐бирларига биродарларча муомала қилишлари зарур. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/uzn-Latn_udhr.txt000066400000000000000000000002511316231664500270650ustar00rootroot00000000000000Barcha odamlar erkin, qadr‐qimmat va huquqlarda teng boʻlib tugʻiladilar. Ular aql va vijdon sohibidirlar va bir‐birlariga birodarlarcha muomala qilishlari zarur. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/vai-Vaii_udhr.txt000066400000000000000000000004531316231664500270260ustar00rootroot00000000000000ꕉꕜꕮ ꔔꘋ ꖸ ꔰ ꗋꘋ ꕮꕨ ꔔꘋ ꖸ ꕎ ꕉꖸꕊ ꕴꖃ ꕃꔤꘂ ꗱ, ꕉꖷ ꗪꗡ ꔻꔤ ꗏꗒꗡ ꕎ ꗪ ꕉꖸꕊ ꖏꕎ. ꕉꕡ ꖏ ꗳꕮꕊ ꗏ ꕪ ꗓ ꕉꖷ ꕉꖸ ꕘꕞ ꗪ. ꖏꖷ ꕉꖸꔧ ꖏ ꖸ ꕚꕌꘂ ꗷꔤ ꕞ ꘃꖷ ꘉꔧ ꗠꖻ ꕞ ꖴꘋ ꔳꕩ ꕉꖸ ꗳ. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ve-Latn_udhr.txt000066400000000000000000000003071316231664500266650ustar00rootroot00000000000000Vhathu vhoṱhe vha bebwa vhe na mbofholowo nahone vha tshi lingana siani ḽa tshirunzi na pfanelo. Vhathu vhoṱhe vho ṋewa mihumbulo na mvalo ngauralo vha tea u konou farana sa vhathu vhathihi. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/vec-Latn_udhr.txt000066400000000000000000000002451316231664500270310ustar00rootroot00000000000000Tuti i essari Umani nasse liberi e uguaƚi in teƚa dignità e diriti. I xe dotai de raxón e de cosiensa e i gà da agire cò spirito de fraternità lun l’altro. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/vep-Latn_udhr.txt000066400000000000000000000002771316231664500270530ustar00rootroot00000000000000Kaik mehed sünduba joudajin i kohtaižin, ühtejiččin ičeze arvokahudes i oiktusiš. Heile om anttud mel’ i huiktusentund i heile tariž kožuda toine toiženke kut vel’l’kundad. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/vi-Hani_udhr.txt000066400000000000000000000002171316231664500266520ustar00rootroot00000000000000畢哿每𠊛生𠚢調得自由吧平等𧗱人品吧權。每𡥵𠊛調得造化頒朱理智吧良心吧勤沛對處𢭲膮𥪝情朋友。 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/vi-Latn_udhr.txt000066400000000000000000000003751316231664500266760ustar00rootroot00000000000000Tất cả mọi người sinh ra đều được tự do và bình đẳng về nhân phẩm và quyền lợi. Mọi con người đều được tạo hóa ban cho lý trí và lương tâm và cần phải đối xử với nhau trong tình anh em. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/vmw-Latn_udhr.txt000066400000000000000000000002661316231664500270700ustar00rootroot00000000000000Atthu othene aniyaria oolikana ni owilamula moota ontthunaya okhala, variyari v’edignidade ni edireito. Akhalanne esaria ni otthokelela, ahaana akhalasaka othene saya vamurettele. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/wa-Latn_udhr.txt000066400000000000000000000003771316231664500266710ustar00rootroot00000000000000Tos lès-omes vinèt-st-å monde lîbes, èt so-l'minme pîd po çou qu'ènn'èst d'leu dignité èt d'leus dreûts. I n'sont nin foû rêzon èt-z-ont-i leû consyince po zèls, çou qu'èlzès deût miner a s'kidûre onk' po l'ôte tot come dès frés. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/war-Latn_udhr.txt000066400000000000000000000003261316231664500270450ustar00rootroot00000000000000Nga an ngatanan nga mga tawo, nahimugso talwas ug katpong ha ira dignidad ug katdungan. Hira natawo dinhi ha tuna mayda konsensya ug isip ug kaangayan gud la nga an ira pagtagad ha tagsatagsa sugad hin magburugto. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/wo-Latn_udhr.txt000066400000000000000000000002551316231664500267020ustar00rootroot00000000000000Doomi aadama yépp danuy juddu, yam ci tawfeex ci sag ak sañ-sañ. Nekk na it ku xam dëgg te ànd na ak xelam, te war naa jëflante ak nawleen, te teg ko ci wàllu mbokk. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/wuu-Hans_udhr.txt000066400000000000000000000002051316231664500270630ustar00rootroot00000000000000人人生而自由,拉尊严脱仔权利上一律平等。伊拉有理性脱仔良心,并应以兄弟关系个精神相对待。 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/wwa-Latn_udhr.txt000066400000000000000000000001341316231664500270470ustar00rootroot00000000000000Yiriba na bà sikindo dare bà mɛɛri, da seena yirimma mii bà ta da i nɛki bà tɔɔba. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/xh-Latn_udhr.txt000066400000000000000000000002601316231664500266700ustar00rootroot00000000000000Bonke abantu bazalwa bekhululekile belingana ngesidima nangokweemfanelo. Bonke abantu banesiphiwo sesazela nesizathu sokwenza isenzo ongathanda ukuba senziwe kumzalwane wakho. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/xsm-Latn_udhr.txt000066400000000000000000000002541316231664500270630ustar00rootroot00000000000000Ba loge nɔɔna maama se ba taa ye bedwe mo ba ŋwea de ba chega seini, ye fefeo teira kɔtaa. Wɛ pɛ ba swa de boboŋa mo se ba taa ye nubiu daane ye ba jege da ŋwaŋa. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/yad-Latn_udhr.txt000066400000000000000000000002421316231664500270260ustar00rootroot00000000000000Ne sarupay nijyami cumudeju darvantyamuy javatyasjiu. Jachipiyadati mirvara samirva, mirvamuy ne samirva. Ramunltiy sarivichanichara samirvariy jityunu vichavay. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/yao-Latn_udhr.txt000066400000000000000000000002761316231664500270500ustar00rootroot00000000000000Wandu wosope akasapagwa ni ufulu ni uchimbichimbi wakulandana. Asapagwa ni lunda, niwakupakombola ganisya, m'yoyo kukusosekwa kuti mundu jwalijose am'woneje mundu jwimwe mpela mlongomjakwe. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/yap-Latn_udhr.txt000066400000000000000000000002441316231664500270440ustar00rootroot00000000000000Gubine gidii mani gargeleg nga faileng nibapuf mattʼawen nge rogon. Bay laniyan nipii e nam, ere ngauda ted mattʼaawen e chaa niba chugur ngoded nimod walag dad. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/yi-Hebr_udhr.txt000066400000000000000000000004771316231664500266660ustar00rootroot00000000000000יעדער מענטש װערט געבױרן פֿרײַ און גלײַך אין כּבֿוד און רעכט. יעדער װערט באַשאָנקן מיט פֿאַרשטאַנד און געװיסן; יעדער זאָל זיך פֿירן מיט אַ צװײטן אין אַ געמיט פֿון ברודערשאַפֿט. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/yo-Latn_udhr.txt000066400000000000000000000003471316231664500267060ustar00rootroot00000000000000Gbogbo ènìyàn ni a bí ní òmìnira; iyì àti è̩tó̩ kò̩ò̩kan sì dó̩gba. Wó̩n ní è̩bùn ti làákàyè àti ti è̩rí‐o̩kàn, ó sì ye̩ kí wo̩n ó máa hùwà sí ara wo̩n gé̩gé̩ bí o̩mo̩ ìyá. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/yua-Latn_udhr.txt000066400000000000000000000003311316231664500270460ustar00rootroot00000000000000Tuláakal wíinik ku síijil jáalkʼab yetel keet u tsiikul yetel Najmal Sijnalil, beytun xan naʼataʼan sijnalil yetel noʼojaʼanil u tuukuloʼ, kʼaʼabet u bisikuba bey láaktzilil yetel tuláakal u baatzileʼ. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/yue-Hani_udhr.txt000066400000000000000000000002131316231664500270320ustar00rootroot00000000000000人人生而平等,喺尊严同埋权利上一律平等。佢哋有理性同埋良心,而且应当以兄弟关系嘅精神相对待。 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/za-Latn_udhr.txt000066400000000000000000000002651316231664500266700ustar00rootroot00000000000000Boux boux ma daengz lajmbwn couh miz cwyouz, cinhyenz caeuq genzli bouxboux Bingzdaengj. gyoengq vunz miz lijsing caeuq liengzsim, wngdang daih gyoengq de lumj beixnuengx ityiengh. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/zam-Latn_udhr.txt000066400000000000000000000001001316231664500270310ustar00rootroot00000000000000Diti mien ndied xa yent kuan nkie xa nak rieti xa diba xa rola. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/zdj-Latn_udhr.txt000066400000000000000000000002401316231664500270360ustar00rootroot00000000000000Wo wanadamu piya wo uzalwa na uhuriya na usawa waki undru na uhaki. Wo upwawa ankili na urambuzi hayizo yilazimu warwaliyane hazitrendwa na fikira zaki unanya. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/zgh-Tfng_udhr.txt000066400000000000000000000005271316231664500270470ustar00rootroot00000000000000ⴰⵔ ⴷ ⵜⵜⵍⴰⵍⴰⵏ ⵎⵉⴷⴷⵏ ⴳⴰⵏ ⵉⵍⴻⵍⵍⵉⵜⵏ ⵎⴳⴰⴷⴷⴰⵏ ⵖ ⵡⴰⴷⴷⵓⵔ ⴷ ⵉⵣⵔⴼⴰⵏ, ⵢⵉⵍⵉ ⴰⴽⵯ ⴷⴰⵔⵙⵏ ⵓⵏⵍⵍⵉ ⴷ ⵓⴼⵔⴰⴽ, ⵉⵍⵍⴰ ⴼⵍⵍⴰ ⵙⵏ ⴰⴷ ⵜⵜⵎⵢⴰⵡⴰⵙⵏ ⵏⴳⵔⴰⵜⵙⵏ ⵙ ⵜⴰⴳⵎⴰⵜ. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/zh-Hans_udhr.txt000066400000000000000000000002021316231664500266610ustar00rootroot00000000000000人人生而自由,在尊严和权利上一律平等。他们赋有理性和良心,并应以兄弟关系的精神相对待。 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/zh-Hant_udhr.txt000066400000000000000000000002021316231664500266620ustar00rootroot00000000000000人人生而自由,在尊嚴和權利上一律平等。他們賦有理性和良心,並應以兄弟關係的精神相對待。 nototools-2017-09-25-tooling-for-phase3-update/sample_texts/zlm-Arab_udhr.txt000066400000000000000000000004461316231664500270300ustar00rootroot00000000000000سموا مأنسي دلاهيركن بيبس دان سامرات دري سڬي كموليأن دان حق٢. مريك ممڤوڽاي ڤميكيرن دان ڤراسأن هاتي دان هندقله برتيندق د انتارا ساتو سام لائن دڠن سماڠت ڤرساودارأن. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/zlm-Latn_udhr.txt000066400000000000000000000003111316231664500270500ustar00rootroot00000000000000Semua manusia dilahirkan bebas dan samarata dari segi kemuliaan dan hak-hak. Mereka mempunyai pemikiran dan perasaan hati dan hendaklah bertindak di antara satu sama lain dengan semangat persaudaraan. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/zro-Latn_udhr.txt000066400000000000000000000002051316231664500270620ustar00rootroot00000000000000Kawiriaja kayapuina ichaukui ta nuka pucha panicha kupanimajicha cha nuka nishima ikicha kiniana panicha tamanuka kanata ikimajicha. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/ztu-Latn_udhr.txt000066400000000000000000000002371316231664500270770ustar00rootroot00000000000000Ra'ta ra bu:unny ra:aaly liebr cëhnn te'bloh deree'ch cëhnn dignidaa. Ra:alyne:erih gahll ri:e:eny cëhnn saalyb, chiru' na:a pahr ga:annza'crih loh sa'rih. nototools-2017-09-25-tooling-for-phase3-update/sample_texts/zu-Latn_udhr.txt000066400000000000000000000002321316231664500267060ustar00rootroot00000000000000Bonke abantu bazalwa bekhululekile belingana ngesithunzi nangamalungelo. Bahlanganiswe wumcabango nangunembeza futhi kufanele baphathane ngomoya wobunye. nototools-2017-09-25-tooling-for-phase3-update/setup.py000077500000000000000000000041741316231664500226070ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- from setuptools import setup, find_packages #with open("README.rst", 'r') as readme_file: # readme = readme_file.read() readme = """Noto font tools are a set of scripts useful for release engineering of Noto and similar fonts""" setup(name='nototools', version='0.0.1', description='Noto font tools', license="Apache", long_description=readme, author='Noto Authors', author_email='noto-font@googlegroups.com', url='https://code.google.com/p/noto/', # more examples here http://docs.python.org/distutils/examples.html#pure-python-distribution-by-package packages=find_packages() + ['third_party'], include_package_data=True, install_requires=[ 'fontTools', # On Mac OS X these need to be installed with homebrew # 'cairo', # 'pango', # 'pygtk', # 'imagemagick' ], dependency_links=['https://github.com/behdad/fontTools/tarball/master#egg=fontTools-3.0'], package_data={ 'nototools': [ '*.sh', 'data/*', ] }, # $ grep "def main(" nototools/* | cut -d: -f1 scripts=['nototools/autofix_for_release.py', 'nototools/add_vs_cmap.py', 'nototools/create_image.py', 'nototools/decompose_ttc.py', 'nototools/drop_hints.py', 'nototools/dump_otl.py', 'nototools/fix_khmer_and_lao_coverage.py', 'nototools/fix_noto_cjk_thin.py', 'nototools/generate_sample_text.py', 'nototools/generate_website_2_data.py', 'nototools/merge_noto.py', 'nototools/merge_fonts.py', 'nototools/noto_lint.py', 'nototools/scale.py', 'nototools/subset.py', 'nototools/subset_symbols.py', 'nototools/test_vertical_extents.py'], entry_points={ 'console_scripts': [ 'notodiff = nototools.notodiff:main', 'notocoverage = nototools.coverage:main', ] }) nototools-2017-09-25-tooling-for-phase3-update/tests/000077500000000000000000000000001316231664500222265ustar00rootroot00000000000000nototools-2017-09-25-tooling-for-phase3-update/tests/coverage_test.py000077500000000000000000000025171316231664500254420ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Tests for coverage.py.""" __author__ = 'roozbeh@google.com (Roozbeh Pournader)' import os from os import path import tempfile import unittest from nototools import coverage from hb_input_test import make_font class CharacterSetTest(unittest.TestCase): """Test class for coverage.character_set.""" def test_sanity(self): """Test basic sanity of the method.""" font_file = tempfile.NamedTemporaryFile() font = make_font('') font.save(font_file.name) charset = coverage.character_set(font_file.name) self.assertTrue(ord(' ') in charset) self.assertTrue(ord('A') in charset) self.assertFalse(0x10B00 in charset) if __name__ == '__main__': unittest.main() nototools-2017-09-25-tooling-for-phase3-update/tests/data/000077500000000000000000000000001316231664500231375ustar00rootroot00000000000000nototools-2017-09-25-tooling-for-phase3-update/tests/data/font1.ttf000066400000000000000000006116541316231664500247220ustar00rootroot00000000000000`GDEF4(cGPOSeGSUBF # L `OS/2SCh`cmapO'hgaspc glyfK><S 9head[r6hhea O$$hmtx=x%loca -%maxp H name]postifc \ٓY_< 4( b   o pRT`33f GOOG@X J 'D+3dmfRf=hTf%TR%db\+qZdf%%?fsfy1w3}s'}R/`1B?}?}dhsqN3N}^qqqqF{qqNh!J;%P 9h Bf'Byhy1dBRfRdm{f1#=q%LBPRGR.R y3 }ssss<R<=?}?}?}?}?}?} }^}^}^}^}^}^^qqqqqqqqqqqfq}^}^}^}q}q}q}qq=qsqsqsqsqsq}q}q}q}q,R3RR/`FF11\111?}q?}q?}qm}oNNbN~dhhdhhdhhdhhs!s!s!qJNPNPNP}^ ^?}qdhh+m#%31)sN?{RBqH?}JsohomBN<qXq % oXqqFV`oqFqqqhBsqBss1%}dhR</`}31 sN%%B?}}sohLT#=j-}^uw'qD%%;qq)o;%/?%9;y!qwqh;B}qJqJqJRRRJff?fT{T jdD{R{P y-m\D5/)o)/#BNfRER#RGRfb) Hfd%w `fffjo{=93Vy%TTf B{}^ zsF}q=dM1s%q%'f`wo= =omB}q!! }q}Fq{o'%{qhu))HF/=/y5D;^ND\uR/F% B;}#q}qs) j%)7R-7R-R{ LV R}^}^ ^sqyhyhNDH%%%%?}qB}qB}q=;=w9=/yf%;%q71o=HyNHLNV}#q?)mX}^}^}^}%}^}^}^}^}^}^}^}^sqsqsqsqsN?sqsqsqR{R?}q?}q?}q?}T?}q?}q?}qF}qF}qF}qF}qF}q=d=d=d=d=dqjjfqqqf-s!?}q={hqos{yo'}yFFV=B}}q{d`\Jy!!sBLVNPHqF9bHDJ!!!' V q`B!D%}^?}qh}^}^ ^}q}qF?}q?}qH V q}qJ}^}^sqsq1?}q?}qN#NNq^wqNP}^sq?}q?}q?}q?}q qq}q1shP}3sq/`#}qN}qD?bqqhhhXD3DqoqqJ B{{{qqBsoNNNNN%yyh-!=JPVPhh5hq?}\q=F{qhh5qqBq!!!L11'sfff5+5+PP!H3H3H'H++!!5+5+oBj+DXXXXXXXJhh%}}}})))V dfdf33LL-))) ~9Y}5Yj5}/}W~BW BF%T=TT'w=TTBBTTT )))DqD%?fo3}q}qqFsb+f={dsq5^d`31)T!}qs)3qqB}q;}B?}??}qqJ7hJ-yJV3+y-H33jhuyy7171+NLNN)VDd !5m?hqqodqy;TDbqmq'h%yZyh'bh}h}bXHfRhFhh\1X-;fbhh-;bhhqq{NF%V! q=oFR{NRhd;%P}^qqqXD1hDDhNZhHD/f'H!N!Nhbfb\1'D-RR^R-h}BBZT333}qqqqqqsqsqsqsqsq'}qZ>)FFF1111B{B{?}q?}q?}q?}qNNNNdhhdhhdhhdhhdhhs!s!s!s!qJqJ;%;%NPNPNP!J}^qqqqqqqqXXXXXX%VL##8qqqqqqBsBsBsBsBsBsBsBsqqXXDqqBsBsqqqqqqqq d X   w w BsBsBsBsBsBsBsBs {      w wqqqqqqq!?h,+hBsBsBsBsBs N!LRh N%')#yZ}hhL'}bJds{\'1}d}"d =R.R1-F y%dj#f{mmb))s+jVFR?;?;fBhf11}^!  7yNP#}%oDq!'''%f'' +VVVVVNVRVNVNVFFV5V5VPV-VH-V%V%V%V'V/%VVV5V5V/)VPVLVLVLV^LVVVVVPVLVFVLVLLV/V9V?V?V??V5V5V5V5V55VLVLVLVLVLhVLVFVLVLVLLVVVVVVVVVXVVVV\V7V7V7V7V77VHVFVFVFVFFVVV9V9V99VVVVVLVVVVVLVLVLVLVPPV/V5V5VV)V/V'V%V%V%%VHV-VPV5V5-VFVNVNVRVNFVVVVqqqqqqqq 3j3j3j3jd3^3^3j3j3^3^3^3^ysD- !;%#)u`f# \`` ~ac67"#ou~  OP\_'=?EMWY[]}  " & / 0 4 : < > D ^ p y  !!!!"!&!.!N!T!^!!!"""""""")"+"H"a"e###!%%% %%%%%$%,%4%<%l%%%%%%%%%%%%%%%&<&@&B&`&c&f&k&o),m,w.!# bd78#$tz PQ]`>@ HPY[]_  & * 0 2 9 < > D ^ j t  !!!!"!&!.!M!S![!!!"""""""")"+"H"`"d### %%% %%%%%$%,%4%<%P%%%%%%%%%%%%%%%&:&@&B&`&c&e&j&o),`,q. ^IvedAeY @SQzKIzx?wZI we%" {ob`aa` kLP>:6&$&8F0(.@@<"$ IJ$%KLM`abVPQWXYRh X Y Z [ \ ]STUV     ;<=>r i,-03PQ45Z[))))d4/iHgLkY  Z a  j 0 M DM'Y#Pw*Ve&^ syPQ~Q2X~)v' !)!g!""D"""#/#]##$$7$W$$$%%)%A%&&&&>&V&n&&&&&'D'\'t''''((((()))f)***2*H*^*t+'+?+U+k++++++,},,,,,--N---..%.;....///2/J/b/x/////00040D000111/1G1_1w1111122212I2a2y22363N3f3~333334 4$4<4T4l444455 565N5f5|55566-6C6[6q6667 7g7777778b999/9G9_9w99999:::3:I:_:u:::;6;N;d;|;;;;;<<<4}?P?h?????@@C@^@@A A@AABBaByBBBBBCCC7CGCWCwCCCCD)D9DIDDDDDE EEVEfEvEFF[FFFGG%G;GSGiGHnHICIJ$JiJK KKKKLdLtLMMMNNbNONOP(P@PVPlPPPQ Q$QQQQQRARRRSSCSSSSSTTTmTU'U?UpUUUUUVVV%VyVVVW W8WpWXX]XY:YYZZZZZ[R[[\ \=\|\]]]5]E]U]{]^^^@^^^_5__`'```adazaaab bbbc8cNcdccccd d%d=dUdmdddddee6e\eeef-flfgg,ghkh{hhhhii[iij}jkklllmTmtmmmnWnnno o8opppqqJqqqqrrErprrs=scssssssssssssssuvv)v9vw(wwwwxxxbxyy.yzzyzzz{ {G{s{{{{|u|}F}~~~`dx5M 193KO=_@P8LZISci4c#t=y^.'/?Wo8#n1|6F^tXhJ'7G_u/G]HRahE k yZC1Iay@Xx&&>Vn,D7Og'?WoXp ":Rh&>Tl*BZplHB0HN^M*tf–¦[IĴ.ŏƑ_o Ȃl1ʜʬqˮP̽`UάY3Њ<ёѫ 9Yyґҩ !7Ogӕӭ #;Skԃ.F^vx֐֦־&D\t׌פ׼<ؙر'?Woهٟٷ/G_wڏڧڿۍۥ۽܈ 0H`xݐݨ 8Ph~`q1rTdb qRUk]m} yN^- i)9hF+aUTA3(E~8f+ Q;*nhB=srL ! f   B {   z      2 c     * Q a s      #5GYk:T7Ux1CS{_$B_}1CUgwBv0Zz4U} 1CUx(CUEi Qcu4 & 8   !$!!!!"c"""""#A#x#$ $b$$% %b%&&a&&' '@'g''''''(((()Q)**_**+*+,,},-a-.@.//[/0[01B12.223D3334 44*4:4J4Z445Y5i55555666\67]788[889P999:(:n:;;T;;3>>>?-?q?@]@@AAeAB6BVBBBC CSCCDFDDE$EUEEF F=FyFFGGMGH HNHHHIWIJ7JK8KKLMLLMYMNNFNNO@OOOP?PPQQoQR RvRS9STTITTTTTU!U3UEUVqWWXXXYZZt[[[\t\] ]]^#^__` ``aab$bc ccdqde3eefjfgghiiijGjkkwkllm mm_mmmnCnvnnoRooopEppqQqqrIrssfst'tdttuuiuvvvwNwxx'xJxmxxxyyJyyyyzz&z>z^z|zzzzz{ {${:{R{j{{{{{{||*|J|h||||||}}&}>}V}l}}}}}}~~*~B~Z~r~~~~~*BZr2Jbz ":Rj2Ph(@`(@Xp0H^v6Ld| ":Rh #;Qg}9Sm)C]w3I_y/E[s9Sm-C[u #9Oe{)AYq9Sm #;Qg}7So'Ik +Ig +Mo3Ss9[} ;QmIYi,J`~K6Nf~G+AWo1?Ww+P 7Pj?nnS/yJ\n-Ra)8QICV 4Tt/e>T+D^~%Im?s#M5hHzGhç$?iDžǰ8țe%z͍/Κ.πϼ r'd҃2ӞӮEԑgտ<5[ׁRؑ7r٬ 0BڍڳM۱Lyܦ*Y݇ݯ 5dޖApߡ.U@e"Pu!P.]Cr.S|@eJqJ{(W9a%Jw6]AiCs%M~5b!Hm,T7_'?Wo/G_w7Ogk*Y^ H[*; k.@C P  R      # 9 !!7!!IhyJh#34632#"&Nu3A>>AC<=BBGI@@LJ#!#H)q)9(q)3!!#!#!5!!5!3!3!!!?TTPNA+RR'RR%@}TTHNNH &-#5&&'5&&546753&'4&'6˼rDKcͪʭ8J^sVj^b##3AG= Z6`{dHU( IZ&uZdB  ,032#"#"&546323265#"#"&54632#GNNGɝGNQMNGɞ՝+LJڧH"Jm 36654&#"27%467.54632673#'#"&GP|ffQYiVaMA$Ƴ]3E+rAOE~QL\^S\qhWek;m\lݬfZH#H)q)R) 73#&R1 ή26= #654'31:1T{%'%7)󰮞+wo`f`Dof) !!#!5!3hhZT%#67{7yA%RBu5!Rՠ 74632#"&A<=DD=;BoBGGBAKJ#!Jd/ #"3232#"/ꑞr~r!74" !#47'3װ fy^tUcy3b)!!5>54&#"'632!)9p7xZe`FQt]pc?`L/9Ydof)%!"'532667##"&5432"326654&&)`tDMgo pՖyZTOFЪ &I|Edef 74632#"&4632#"&A<=DD=;B?>?BD=;BoBGGBAKJBIHC@KJ?f%#674632#"&h4|A ?>D=;Bh2\BIBIJf+%5+;fs5!5!sVThf+5f;BnfXD'5467>54&#"'632432#"&L`mDxP_?վ(QycA:CD98G7wP\PP5cj(.eJrfeUo["ӉEDCIBwJ6@#"&'##"&54663232654$#"!27# $!232&#"YiUt 'dkȀECYn>/lQ INیcOS_˲u,ҭXTd߶5 !!#3'\;:ZF!;DhxcE!! #!!2654&##!2654&#&' Hnxj}}"327# 4$32&9]p?J):"hTVPZ!!! !#3 ZuiU|R !!!!!!!1Ty8 !#!!!!1R};!# 4$32&# !27!BtWF 3%&cVVT#% !#!#3!3%VjRb !!57'5!bj')jj)n'`{u "'532653^:GMdd{yra !##373~ /F33!Ǹ{!##!3!#47#LRJN!###33&53N - QGs'B9} ! ! 32#"_G>b|nheq,&%)o !##! 32654&##o꨸%Ķ!}! ! 32#"^3_G>b|FJheq,&%)32654&###! #۲ѸEeq\h%# '532654&&'&&54$32&#"]`<ˮ۸99LE(.~nI^R4JɟRNpeH_N2?%xGq=^ (%26554&#"7##"32373#"'53265Poy +u) 2FVL!4&#"#336632w 1q8Z@PZ5s!#34632#"&b=-*??*-=J)<66<;88s "'5326534632#"&-^@ECNI%=-*??*-=UW_<66<;883773##3`=F_D}5NTs+mmӲb!#3b^"!#"#4&#"#33663 36632#ߙmt /jN 5tÂJPZX`5L^!4&#"#336632w 3oJQY5qh^ #"&53232654&# h| ã'ҋ +{^!"'##336632"32654&w @n)N==6ZP۸#q=^ %26754&#""32373#47#Rou s%Օ,  /n</^2&#"#3366I8=:WT?^ `gJmphy^##"'532654&'.54632&#"yـ|w~;=ptd>/EXXJAZ:73`E D_Jy` !'3J!&'##3376733673/2* Ӻhm Ľ  @jMbJkZW>Zk#OMILJ%J 33##1bJJ336673#"'532677K @'EKJ2FVx&9J_%=o _cPsJ !!5!5!!sNTwG9665463&&54 v׿tpslvn΁y]`/^_' |jdX-hY3#閖B#565475&54&'53zvmπzVgϚ)' '+dYiXfL+X"56323267#"&'&&P56dFwQI^.66fH~HI^C6l"@9n! ^3##"&54632w3A>>AD;;DHCFEDBIH%#5&5%53&#"3267qv5eY?9>55#BH2&#"!!!!5655#5346@uz_AKTNy`-/׈/y'47'76327'#"''7&732654&#"HddyhcHH`gzbbHooonulaGGaotc`EG`lwoprs33!!!#!5!5!533Hnd5˰6i3#3#閖y.:467&&54632&&#"#"'532654&'&&7654&'VLJR\k7aJsmt҈WMjŏ6yAR)W$(pT{*';=8T7Cl\PC'-JG=O=I3KF>LoQm:c1 q 4632#"&%4632#"&18('::'(88&'::'&8s5//552255//5522dD&6"327#"&54632&4$32#"$732$54$#"}wu_x}6^ZƬ֭+*Bw!'#"&5467754&#"&'632%3255^aqsNDdjzNnbobVcdggj-=<5>&b/9Rs %RX])JKJKf)#!5)RBudD&632654&#####!24$32#"$732$54$#"fQYRZdVJ^^m+*լ֭PAIASysb^ZƬ֭+*!5! {V 4632#"&732654&#"{{sOQnnQPrOqrNPqpf) !!#!5!35!hh!Z71Ju!576654&#"'632!sGK>>d5H4SJn{qEAB0(^qo.OQ\#9!#"'53254##532654&#"'6632wtuug_MBh{JJQ9,:FqNA;BN^7.y! 6673#&u(,?w0N@1NJ32653#'##"'##3b mݒZ <\J6qd####"&563!dvw>T1Z3H^ 4632#"&A<>CD=;BAJK@@KJ#"'532654'73A%$HKMXw5cl p '3Ym&LJ 3#47'V.G5Cs&]dB #"&5463232654&#"íXfdZZddZmywwyyttPs '7'7]hZeK_^JdeK_^JdG'&{;).'L&{t^ -'';su3w`^%327#"&546676655#"&54632ZJdFw?(Rxg=>?I46I5uTonT`mXbIqfgZoX!/GBIBBs&$CRs&$vRs&$K'R3&$R R)&$j9R$#!#&&54632'4&#"326m<35I"(BL\dE(.GhGK}W?i57\3NVT^!&DC^!&Dv1^!&DK^&DR^&Dj^&DP^^(3:%754&#"'66326632!!267# '#"&732655"!4&^qt8Gg+6pB5X^Xf}RƈhVw }1NEzvT(6S]U]o!+' |k\Vcj*q^&FzLq!&HCq!&HvPq!&HKq&Hj p!&CQC!&v$c!&K*&jqh'#"54327&''7&'774&#"326h^ ;MVbIfN˗3wֱp:3{IKnuu菦L&QRqh!&RCqh!&RvZqh!&RK qh&RRqh&Rjf+ 5!432#"&432#"&fspB.0CspB.0C{{B;;{{B;;qh"#"''7&327&# 4'326hqRv\ uPy]1Il/=El'CsP +JsN`r4`d/D!&XCD!&XvuD!&XKD&Xj!!&\v{!6632#"'##3%"3 4&dCjx >%[Mҟ(56FN'&\j&$MBR^j&DM>&$N/R^&DN=&$Q^=\&DQ}s&&vRq!&FvH}s&&KRq!&FK}7&&ORq&FON}s&&LRq!&FLZs&'LXRq&G8=Zq("323&&55!5!533##'#'26554&#"3w  Ls£& *n(})#&(MRqj&HM>&(N Rq&HN&(Of5q&HOR=&(QmqZ^&HQbs&(L Rq!&HL};s&*KRq=!&JK };>&*NRq=&JN};7&*OXRq=&JOZ};;&*9%q=!&J:%s&+KRL&KK!53!533##!##55!ǸǸmV/L!4&#"##5353!!36632wN 5lՇX@UU^3&,RR&R,&,MR<j&M>&,NRG&NR=b&,Q3=&LQRb7&,OPRbJ!#3bJR{+&,-&LM `{us&-KR]!&7K;&.9;3&N913J3##379a TJoJ㋉fs&/vnRA&Ov";&/93\;b&O9&/8%&O8;&/Oi&OOL8 3'73%!eGI9zgX># 7#'73TLϴiIf[yDHBys"Ns&1vRL!&Qv};N&19;L^&Q9XNs&1LRL!&QL#'Q{N"'53267##33&53b:GUfm {unmVN^"'53254&#"#336632'V;<>w} 4nȏkJRX}&2MRqhj&RM}>&2NRqh&RN }s&2SRqh!&RS\}!!# !2!!!!!"327&f`YAjZ%L5uVUig8#\!o'\*1 '#"326632!!26732654&#"%"!4&ހ?ш><~'DZh],={ qr4 +romtm-(;՟s&5v{R/!&Uv;&59b;/^&U9s&5LR~2!&ULzhs&6vNRhy!&Vvhs&6KRhy!&VKh&6z+hy^&Vzhs&6LRhy!&VL;\&79!;F&W9\s&7LR!&W8s\!5!!!!#!59H70и1ᤤf!F%27# 5#535#5773!!!!!U@k9ċHk=+U ^VHjk3&8RsRD&XR&8MRDj&XM>&8NRD&XN&8PRD&XP's&8SRD!&XSq=&8Q#=iJ&XQVs&:KVR3!&ZKs&<KR!&\K)&<jRNDs&=vBRPs!&]vND7&=O=RPs&]ONDs&=LRPs!&]L "#!2&^Wkdh/Zuvb'"'53265#5754632&#"!!JICF;\Lע]u-f9^N`sT>+!dy>".#!#&54632&'6673#4&#"326q6-dxgg/(9_?y@31A;73@A^!w6bwx6=kh\C'**7;;76=;^%1=G!'##"&5%754&#"'6632%2655#"&546324&#"3265667!T#R|lwWD7S` i}fgyxhe~qA12A;83?.j gINA}w4 ,2}cjrV\7evvcavva6==66==]*x iDs&vTR^!&v}s&vRqh!&vXh;&69h;y^&V9! 6673#&'#}g4ZX{+e58! 3673#&'{ri~a3<!Js~?`f+j!!+`j "&'332673X nTsebq يG;?Cs 4632#"&=-*??*-=s<66<;88m/ #"&546324&#"326/}fgxxge~qA12A;83?evudbuva6==66==#=u327#"54731+,7E:ӠFF.. swBm".#"#663232673+ROI"12h ta-UNH 01g t%+%;bk+tX4^sG<|)&,j R)&<jRqq&~TXq&TLq&T?q&Ty&U;q^ ,%26554&# "323673327#"&'#Rۍ{y6 )1# A"WZ< XЕ* +TT\8EfV?4 VQWP(2#"&'#46 3 4&##532654&ȻoJGhPmXз3ǻ!$4%/-y J#47336673!<-C%A Aٻj-7["{>]0(MHuof*&&54632&&#"#"$544&'326sǩhNeWR`mլ]wªOb.@80LAEk[uҳw|I-֡X^%# 3267#"&54675&&54632&&#"!וʔUdqcjoWDcJ9Y]'/Kc& ]%),qq$#654&&'&&54>7#5!1nY.Ty9T;{Re(-&#g`vG"qL^4&#"#336632v 3oJQYIqR #"322!"!R  s nzl((  J3267#"&5ZJT,bp6Jcb 3JV!"#'.#"5632327#"&'&'# 7"1C1>5DC^|[8b/$%2CJZ U!P5YB! <%96 J[S~NJw J3363# #"J%ac[Moq04675&5467##5!#"33#"#6654&'&&oٌg>6}2\R{7Bw* >s/ N]piNa;#!nYJ26;"qh^RJ%27#"!##57!#5%1V/ߓXLNHJf^#"'##32%"32654&fy t%\D  Йdqq^#6654&&'&&532&#"+9{4G/qZR99lN"o\E4&-((9"4qJ #"5!!!3265'#"f{Tť?!>J!327#"&5!57ThF'q0ٖJuPHyJ"&3!2654&'3u-%' Xћ|q\^"$746324&#"66ыYO^܈sxeGO!*`u{#b &)rr\P 23327#"&'#&&#"56:P?-:R)QB,0A>s<ӨE4(5P-YtTkQv}lHR\ 6654&'3#$3h$@dsȃ&  !ysJ'"4733265332654'3#"'#;>B;uj_fe]hz;BB7зE A( Ԏ|6ʀǝٸ&jy&j7qhq&RT#yq&T)sq&T)&(j!RT"'5326554&#!#!5!!!2g4;XcdDvn|m!ms&av^R}"!!327# !2&B3 ʞxQK):;m]ZTh6Rb,<|)&,j R`{u-/#!!!#"'53266!3 32654&##/8USmE@4=:Q8GHy!NbWul!z\!!!#3!33 32654&##\sw!PbVj!zT!2#4&#!#!5!!۸w {l#s&vRb&6FR !!#!3!34@۶$ !!!!3 32654&##TdTἩ8t%a Z #!#36!3!!Zq%Hlh(333###N//Jű<<<NF'! '532654&##532654&#"'6!2'cbןrmX`O/1{j{6G}`333#47##ɬ  $ͬ U*Jh)?`b&6R !##33k<:!#!#"'5326!1?^J;4=O]m7 V{0%+}2no3}&\7"'5326733773%qV[fk=^-S)d?/9R+꺪Phs; %3#!3!3۶!##"&5332673ϸh޸|_X5'Gvu6 !!3!3!3DHJ33!3!33#Ǹ9;! #!!5!3 32654&##!I  #z #!33 32654&###3}P 粦"xV #!3! ! 4&## f'{="'632!"&'53 !5!&$ۧL9qeVc 9)NVn##! !#3!! 32#" ^P2XqnPV5Lr,&%)-V #&&54$!!##"!3ݷq^2ΞJ^^\Du\"76%36632#" !"uw荐 :m)Io#o4-/& Qaf}jG8J %!3!3!3۴/ٵJNJ%!33#!3!3۲FٵL{JN%#J ! !!!5!4&#!! 7/A:y/ ZPJ !2#!34&#!! #3b7 w JYSJTJ ! #!34&#!!26bF>|6ɤJXT\;^"'53 !5!&&#"'663 ^zPi3@L ;>g6"?^#"'!#3!663232654&#"?鴴򎝝' J7!J 3#&&5463!#!!!!"9~η sw wPjZq&HjN'"'53254&#"##5353!!366321P97:w}v 1sʐBׅ=[N\L!&vq^"32&#"!!3267{T;5u ]>x!(!4%;hy^VsL,&jsMPJ3 !!!#"'532!4&##326F``vCk%P}ㄉcYQ\J32!!!#3!3 54&#J\ }J;J7ZPL!4&#"##5353!!36632wN 5lՇX@UU^#!&v?&\6RJ !!3!3!#-<JN3!#fm-/P!#!3PBJ?Vs&:CR3!&ZCuVs&:vR3!&Zv!V)&:jdR3&Zjs&<CR!&\CaRu5!R\ՠRu5!R\ՠRu5!R\ՠ9N!5!5!5!NRR9N'673% b8B%Z yN#7?4|F ?u%#7f0C$P#&'7%B-m^e'673!'673j.C$ f6C$j`Sr#7!#67=1A#;1B d4]%#67!#67B0A%;0>h&h %#53%31J13__{%%#553%%?_21X++X12_+{$|d 4632#"&tonuwlnuzzz "74632#"&%432#"&%4632#"&A<=DD=;B},BA **N_T .##"&5463232654#"%"&54632&#"327՞+XVSYg[#SOgXiJswwsٲ%k#ko$%273#"&5556746324#"6}iPpNrxεP{A>wөy&ꐟNgx!UgV'+!###33&53#"&5463232654&#"5!^"PZZNNZYQ`mL3quuqrmm###5!###33#7#s!T{Ǻcnn+T+/NvfH"&546632!3267&&#"y1RQHbٓ2Xz#5Fi)|5BuE'd&{>j#''>uG'&< >}f'N'>u=-b9'#"&546327!"5663227&&#"9챰Y.:;=C#}Pcaa74QEL*(!:Vl{t~)} 73!!&)͸'3+CqEoȂ%!#!m`^H 55!!!HrH9q+r f+5!f%##5!3s% ^w-+#"'#"&54632632267&&#""32654&-|}y|?l41kEM_^?k51lDL`_φ԰ӮWa^ZiQQelY_^ZhPNj 2&#"#"'5325S.;8O==>崹l`/#/"56323267#"&'&&"56323267#"&'&&N69lDvSI_/5}9iCoXK\067j?lbAa5<|3hEvOYW@9n#B9m%A7m)F3n !%f)%7!5!!5!!!!!iTy3l}ߒ=f+ %5 5!+;;fmf+ 55!f;BofXj= 3# jN>N^5!4&IL#&IO "&'332673H [qgc ْhRXbbJ "'532653-^@ECNIUW{ 6673#' V1bB35Ho;u 6673#o6a3bT3B?<{! #566734c2d;:8=J ##5!533!547}p}ZkCͿkd=72#"&'532654&#"&'!!6NJ)86\mlc6K"!As{"&QYOUp 9J!5!\;]J{d39"-2#"&5467&&54632654&''"6654&h~JTG1HT;GFBIHCHEVW/2A1R~X8*P:/5K6DpJ;?HI>@IHc!&7LN *4!"&547654#"'6323 4'$$546323%.#"jD,0'^an+`NY_F94t=ooR++wwCb;,ǑދkWH766632&#"#3?E9L]@:$#-E}##۟"l2Ka/J("&54!57!##"'#32655332654'7p˾EG{lt\hj[tijNH븸έ}{u&0vT!&Pv&$X;^\&DXzG @s7 #"&546324&#"3267}hgxzecrB13@:93@cxudduud8;;86==f,&&#"36632#"&54!&#"32665i%$#[7? :j瓸ɶWTpa2aQ;vk]L M]Ŭ۟'|+BJ.|.j&I'IL&I'IO}q ! ! 665332#"aEED?h]~qjh|'+'$*q+##"&532>5332654&#"h| lB2; ~jEÞ'ҋ +IDCej'6653! 533265RM!ԹŴ  Jľ326536653#'##"&5Xw}PI  2tH?:y OVM!C!vRw#'6654#"563 w oJX5-%L׌&m .0Rj 1} 4632#"&1?,+?;/0;<77<5=<s&(CR`s&CfRq!&HCu!&C2"'632!"&'## 32&&#"3267332<_,I~tKIs|J,^<˺>|1ḅ%+Ta2222uSxT+'%=LE,!-J"#3367673363#&-"u6XdjKa پ}ioJlV@%acYOPK!53!!3 !!!32654&##:b5gӬ`5gu'!!! #!#5353!2654&#Z5)J˥\YYQ%!"!!327# !#3!%2&&G ]q V o2ڵJi):"mQV/N^3%^!"'!#3!6$32&#"!!3267 紴 ᣄ5r Y<=J7;4%w !####3!'&'ꐨbcIP: .\\JBƖd'J #####!&'#Ӹlqƹc  JJ+g#Do####!#3!3#!'&'kal>J<AVVVjJJĘ\^1J#####!#3!#!'&`Ѷlk͸߰cs($8 :#JJ5ySY"#.####"#>75!7_sf]W BcRQa?"ć.brgKo#Mia+J)]o?śM J ##.####"#>75!SlH/!7OF BO7#6NqYJi2Ni>LUDBXPb9 bi$'#.####"#767!#3!5!N`sd.$BeV~s+'[Q#\n$oM;n](Lb?;%V㇦FJ%(#.####"#67!#3!5!;SkH/!8QC DQ8"-%ϰ+Ji1Nh>LTDBVPt(J7`i=JBK327632&#"#"&5467665!#532654&#"'67&'536632&#"TX`xxADFBlmhź=ןmcZ3\]A70',o0Ŀ`v652'3 {j{b^ D nheqM qh^ #"&532267!"!h|  -'ҋ +TFHR"#367>32&=N4MF!E;TnY*W8+hXBLT!33676632&#"B !6op&.).9r)5_k RVRs&}sRL!&~so}  .! ! 32#"%33673#"'532677ZE,'EmD N۾+ENJ7BUw*9rljs*(''GxQs \fq^&R\w}-(#"'$%6326632654'#"'w|-|v .)úI6i$¹nqu+oo(95+ll,u*0&V*+((XV(q+#"&'&547663266326'#"&' @89? >96B V <5f=46= w'&5.-8$(!$6**8&;*"J<\U>*!"+{DEW#".#"#54632326732#"&'632!"&'# 32&&#"56654.54632Wxc*j|m:qwN#^;>YΣ&5-9D#*#tnn%-%J?@IJ'!-Z>Vb//0.vUvV>Z-ZPuJ2&'Fo *?N"'#"32&#"!2673 #"'6632#".#"#5463235654'&54327a/pS?x*;[Erm)9rGt}'G[;){?RWxb*56zp:pwM}ww11b9DE %' + 4d%/T4 $*$7>nk$,$QtH(:,NF &i hf-&j h{"327# 4$32&HoGGK'jnXVPq^&32&#"3267#sM=5dBY)*4dhu'%7%7%{D!Ey!FC7C@ubw=E¦uu#"&5463!6632#*05)*6,03-,6-2455+//158*27632#54#"##5xQmzj+dxVh;:kn!d$+$94632&F9/3$w9H)':$L:95654.54632w$4.9D:L%9')H) (6DR_m2#&&#"#62#&&#"#662#&&#"#66!2#&&#"#662#&&#"#66!2#&&#"#662#&&#"#6!2#&&#"#66]qO{T!!! #!#5353!2654&#b/4'!ɤ[ZYQ}'###! 327'7654&##}riuib_8fqv8XVF{^("'##336632'"327'7654&w @npjDr,&wp}] =6YQT۸# Tg/ !!!##53qZ}NJ !!!##53!NX#݋"#!!63 !"&'53 4$7^ZRf_x>XUF{w  1 J"'53 4&#"#!!63 Njn~ N< R<  <=/J 3333####N//°fű<<<=J333####3;gȮb%%;Ja{--5N=F&|^D=^&| =%3###373p~ /FVJ33###37+wXJ_}-J#3733##}}}Z^}k+^FHJ&'#3733##N%s7N)JyJl3/3533#3#&'##/Z݃{Ǯ^f1353!!37673###w@,^D}\[.s+km !3##! X+%J !3##!%+J-%3##!#3!3%Vj J!33##!#bTJ7N{Ju !#!#3!!uVjJ !!!#!#bTJ7ɔJJ) !#!#!63 #"&'532654&#"ݶXL1POF~+}a כ1 J%#"'5324&#"#!#!632ÄcjoG8yM:;<=3NJ' })5327#"'# !2&&# 327&54324&#"66rBUN=8]fH;\1f2?2*P^ǰúdXYdZNapVd$Vy#  _RAq^ 46654#""'#"&532&#"327&54632327C:BQEH^|hvz_M'FA>i[2>B3,\/*kxfO(/ ۬~=}=&&|'q=^&F|\ !5!!3##7J7)J !5!!3##y{<J#336673bRO =RN_9@Z3!!#!5!53D}-ӹ/9\1J#!5!33673!bTN}G8 333673##u/}t}sGzqZ:JT@)J3673##5#"&5Lyp~ny Jn)TW3$32#4&#"#Ǹ߹|f\-vv"2;NJ!4#"#36632_hcl5@+JD;f7P%47333! !3267# "&"!7o")H(4_qݏ`M:-CeGOh2 )"aKv-\$"'$5473336632!!267"!4&PhPdd[ 1G4%Eem *' ݟ7P!($"&547333! !3267#"!4&o"P'5_P` ](vwM:-Ce?Wn2 B-\ '&'$5473336632!!267#"!4&hPddH[J 1G4%Eem *"DRb,b&6R&6'"#3737 #"&'53254$d_IcS~J{q<Rכ1 5J%#"'532654&#"#335oˈc/lDQ_5;<%HJ%3##!#"'5326!Ǔӟ1?^J;4=O]m7 VJ%3##!#"'532!𼃶}`v="l#{a %%!"&'53 !#3!3%T}L{1Vj jJ"'53265!#3!3ц_ni}tR :;J7%3##!#3!3%ɖӠVj'J!33##!#bT~J7N{J!##3#"&5332673ϲh޸|_%5'Gvu69J32673##3#"&5L\enlJp7>QG8B!##!3!3##47#Lǔբ]wRJ%6733###&&'#3.較?4%mtN{;^-wJC]Rb,b&$6=R^&D6)&$j?R^&Dj^^b&(6Rq&H6 yj"5663 ! 5!27!}ڀLr/+T,"pqyvFbh^Hyj)&jsRh&Hj)&jR&jNF)&jRD&jH;! '53265!#5!5!dbA]B O00ФJ#"'532654&##5!5! ̢xFɐ|HV}`&MRuj&M7`)&jRu&jB})&2jRqh&Rj}{qh^|})&{jRqh&|j=)&jR;&jS&M/Rj&\M)&j9R&\js&SR!&\S )&jhR9&j !!3##GqJJ !!3##J{)&jR&j/j&}jNJ"'53255##53!!!!3.9b\+jkJ1bZ!33!!##!}3wfgu9}wV`?L{%J!33!!##!s c`{b1J; !33! $#"33FaٽjJyq=G}""&54$!3332653#"'#"!265L("fsֹbp"ϻzj{m̧tio ,%2653#"&'#"323''3!26754&# ri.S}i< iꈁ3WknV)  0MUNT#XH*#532654&#"'663232653#"&'&&ǿғca\abhztmj{9B{JNĥ3Ӑ}x)̓N^%%23# &&##53 54#"'6632Jײ~s!NO;Rnjv3IdY$"'%9}dH$3##4&##532654&#"''6632 ¸ߠgk-/ebj{8C?T4lpݴ6wm"̓s);J323#"&5!#"'532!fsϴ`v="l#|59a f"&5!#3!3326539Ƕlonm-Vjσux)J!3323#"&55!#b>hsϲ´J79}3nJ}!! 4$32&&# 3265!b@Ty]FYa XaU0*'/q^!! !2&#"3265!B"ݪ=ƽHF),PJ֜5!!3253#"&5>5spsu))J"&5!5!!32653jjshk;̓}z9smd'4$32&&#"33#"327! $54675&& pbgjǶǯϺ\EKB5yl{\MǖX^j"'53255#!#"'5326!3;?.8b1?^J;4=O]m7 jkVjJ"'53255#!#"'532!3(* \ edbfo\yb6o60w4;DhxcE$.2js$/1jsBbSQ(* \ elOkbXm ;DhxcE$.2hq$/1grE<@A^ &D{N&$'N1bd^&D&Nd&(dq^&Hd&(cRq&Hc3&(RRq&HRz&(tRql&HtN&(uR?&HuAJ&(vRq+&Hvb #2!!!!!!!".#"#663232673#&'#576731Ty$GC@(*] dL%IE>(* \ edbfo\yb6o60w48$.2js$/1jsBbSQ! ! 32#"".#"#663232673#&'#57673_G>b|g$GC@(*] dL%IE>(* \ edbfo\yb6o60w4nheq,&%)$.2js$/1jsBbSQbyV9FAe`F=JY[suXj #&'#56673#'6654#"5632dpcrae3w0GT ;>c/8K[eA:EgxfO %>Tf&".#"#663232673#&'#57673-$GC@(*] dL%IE>(* \ edbfo\yb6o60w43$.2js$/1jsBbSQCBq#&'53 332673bwV.O9lQi`Zm ^qeh G>ADq#'6654#"5632 3326731}T 9>a%$>lQi`Zm yc)\ #=P G>ADf $".#"#663232673 332673-$GC@(*] dL%IE>(* \ elOkbXm 3$.2hq$/1grE<@A-=q4'3#"'5326݋id@7#5%3gw[js /j "'53253;?.8bjk3\&7zF!F&Wz{)2#"&'###5353!!36"32654&o7K oǦ\POxׇ=qqh$-"#&&5463! #!!2654&##!2654&#5} &'g=1B} /nxj}{#2#"&'##!!36"32654&o7^V oǦ\POxqq 32654&##3! # qż  { u"3363232654&#" o⧓(qq3н? #"&'532#"'6D[qWJv!:<5PV}$"327# 4$3254632&#"&&9]p?|tn~==19`JD):"hTch1q^!"3254632&#"&#"327f 8Mm~(*0"<-=QӈHL2MA(633773##32&#"`=F_D}CB/;/2NTs+mm6A 3###533b\+ՇV!&#''7&&#"56327327#"&'&'# /'D;>5DCm3&n/$%2CJZ U!P5A=.( VcDB96 J[S~u$3265332653#'##"&'##"&5qvw 3w- :~tJWedhbj N33&53###"'53265-  B1*3H9Gs'B9JQ%SUL^}{}'! ! 6632#4&#"32#"O6#9{¸vl'mqieXc>?,&%)q^%#"&5326632##"32654&# 5vف5W>G'Ӌ ,KHIZ32654&##7 !###"#&&5463#Ķ$騹5} ׍Rg=1B}{ -2&#"36632#"'##"32654&CB/;/2 @nw 裑6A=N)ZPҟ)N==#332654&###33 #۲Ѹ+~Eqep\`%4667>54&#"'632327#"$`R}7:ϟ>E{cr?4M_GepNRʫK:R^Cn~a"-\m^#46676654&#"'632327# \>ftpg>;~ls0J/LnX4EO=>GFJLjU<)@?-PRXEJ^p""&546323267#"&5"3354&{zJS'em4d,$eO2Vxmnvoda 51RH?!F"'53255# #5773!!3267&$R^&DTs&(sRq!&Hs>&(bRq&HVds&,sR1!&sV>&,\RE&}s&2sqRqh!&Rs}>&2!Rqh&Rms&5sR#/!&UsH>&5}R/&Us&8sXRD!&Xs>&8RD&XyNF^(2654&#"'6632#"'532654&##5=~V=Z_򂂥[aΡӏqq(+ŭ},*͖|L+/%s&+LRL&KLN{3 #33663 #4&#\ B}-5]tdǶq'Ew%26553!"$&5%&533265! 엞1縠༹èc0ћyA]_*Jqh(2653#"5%&&5332654&#"my^i i\yᓞ'3ٞKb'NjD&=}PjsJ7&$OR^&DO5&(z{q^&Hzo}&2 L!mqh&R Lm}&2 Mmqh&R Mj}7&2ORqh&ROb}&2 Oqh&R Nm&<MRj&\M3632#"&''672654&#"?M|^&'JV7<3?6>?mrG<=o=m=-561^",632#"''674&#"#3366322654&#"L?L|S(JVw 3oă4:>6>?mr9s=mJQY55561F$#5773!!632#"&''672654&#"Hk=?L|^&(KT84:>6>?VHmrG<9s=j55561qV'3"323&&533632# % 4&#"!2654&#"Vw  orr-" .9qqмVqV^(42#"'##47##"3 66 3265!"32654&qv  kr:kӑᐟ^ҡ#Ki^pq* %|ZϽ߿f#!###37&'3щӎ;>V(!l\N_;Tq^xcE }f&&'327#"'#7&4$327"&y'=@JI#zI[]p_b5C?NJ(p :"RbT SJqV"&'327#"'#&33#"զ9+7?#9Hr]] L2@;PP+ g 33!!!!#\ɳ9}f\3###!5!7#)-`Ϗ^7Y-^P#C^/h^23267#"&'&'&'532654&'.54632&#"%"'YF`E,|w~;=ptd>6b "XXJAZ:YXj[mkZ-kbZT`VL99m-' Nu6ʸO``{"'53265#5333#^:GMdd{yr{m!"'53265#5333#4632#"&-^@ECNI%=-*??*-=UWC`_<66<;88}7-"326654&&47##"$5!2373327# ʞ[\" 9奻G#; :G2*/C+\<[6]`pVancWQBq^ (%26754&#"47##"32373327#"R su-8@&*e%՘n<,  /#pU!V##53! #%32654&##۲\\eq\/^!##53336632&#"3d?eI8=:ump !33###533!RƏ{y{'/1)J!#533!33##"'5326?6!͹‰uEKJ2FVx&9Xo?= Nkk _cj6I\D}Hq=^"32373#'#'26554&#"3wsƤ( .!{^@J{*32&#"3632#"&'##"32654&EB/;/2 oo7ꦐ6ArqqPOxǼDf^732654&#"'6632#"'V7271^r@";b^'"''67&532&# 632"32654&}+ +@N T28bŽ~wRWiQbQa?~n+"4`iNs^M<09q',327# 5467##"323&&5326554&#"=1DI,/m  vw  j[!Vw*  .ym!q)32&#"#'##"323&&526554&#"H?/;/2sw  Ǥ6A( .y#!h^GH@h^2#"55!&&#"566267!Xj[^ m-' !h^#+#"#"55%&&#"5663273272665s{KXj[m ,#>.RT9\F N ȅ-' Ŵ/zUK7NYX^D^D3^0 54#"'6327327#"'#"'532654&##57O_?ԑ*o">.OW'1}?L/}v򄷽(L[U{UK7"._$$gGV^\^[qq^#"3 54&##53 54%2# (V98u и^[9$g((J333##"'53265#^@ECNIC`UWo%2326557##"323&5532&#"#"'26554&#"Šoy F?/;cV+) 2u@wF%+q=^Jq^%#"!2&# 327#5!xj#{Bi9+"#+JH`-J$%#"&546733>34&'326mQ4gj9L`<*  $+B)#$(--EooOv.!^n22:<2;42^ 1%4'326#"&5467&#"563236776632&#"RLL--ll8S&.%.:4G'. !D'I2;-%."XgkR1+)kg~~iHo5 )7I! `gkrJ327# 5467##"'73266533AL)/n >dI8A6WUlY!Vkr `gJ/^2&#"#3366I8=:WT?^ `g6mp/^336632&#"327#"&5?eI8=:WTHT=@DRJmp `g#da!^34632&&#"R^N8HG!Zc%^4&#"'632jGH8N^RcZ! XJ !#!2#4&#!! m΂~9vt LJx 3U[XJGoJ@hy^/#"'327#"&532654&'.54632&#"y^FHS=@DQ|w~;=ptd>/ da!kXXJAZ:H7!Yl\V!YkL3#!"'53265#53!2&&#"b]2/;H7\4>H7n!Yl<V!YkL^4&#"56323267# 87../V}}6I>4\dS!PlY!VL!3!2&&#"3##"&5463267#"\4>H7B5ZV!Yk9k{Upcb-Z"5663 3#5!5!4&OKi0BHj>ZVH{\i!F27# #5773!!`9f5Hk=[ TVVH_fJ!33##'##"&55#53267!X7 1wɎwJNNOVы7=J#"&&5467!5!32654'5!mjoh뚘P2-H^4&#"5632#"&33265=P:;F;ߴlQoJ #&'##qF)J\`{LJ3J3673#&&'##'##-("-- ,} &1JeiiJi(W&AJ!#&'##6632&#"HDCW?5D^t"9fhjϲ fXJ!#33Bsw{P\J!!5!5!!3267#"&5NT5HCN+}wGj[ PNBJ!'7!5!5!36632!"3254&),1NYviO7e6,ogxvtS[| uddBoZ:FZr6,fj90>K336654#"'632G?CǺ66.s̻Ww5OGh@3#"'73254&'ОC>FɴmVr.69q^"!2&#"327fP37br!4@;}&2yXJ\\^" !3# !2654&' !"&54675&54697:V)uǚЗحg%9q%%#"!254632&#"&# 327#5!xj#lVn~;?/;`Bi9+"#+bH`-jJ=#33##"&54633267#"4632#"&zXh9-Ny=-*??*-=JmzVocb<66<;88J#373#7O4$|} i8ulNVJ3!!XJLq',!2&#"#467##"323&&526554&#"m/,ID1  vw  ǤV![iMw*  .y#!3!#536654#"'6323#G?C߿P86.s̻W5P35&54632&&#"3###ݯӜD>FţYs.67Pq^%("323&&53!!!'#'26554&#"3w  TNsƤ{L( .y6ȋ!=Eq-:#"'532654&##5!#'##"323&&53!26554&#" ̢ysw  ɐ|HV}N( .y6!qN-%25>%36632!#'67!'##"323&&53!26554&#""3254& Wwi(!9sw  {L8e6,}XT^9P)( .y6!=EZam1!F/#! #5773!632&#"2654&'.547!3Hk%TX>otdN{t~;!`L/TjVHJFG>H7U>[!Yl SVHV!Yk+_f!F/:6632# '# #5773!!3267&532&# "32654&_]ǡycHk=RCKm- T28bk>eRWiQ!OKF;sZISVHXm;Rp+"40G{M<09?1"'53254&#"#!##5754632&#"!36632W;>=v}il0]F[X 6jȏkBT>?%xGVT&#"'#33 54&'.54632&#"ꬴ@w~;=ptd>/VBlAZ:>/]~ 0o lE@gU1y?"'732653#';>B*]~ 0ty leW1!3267#"547#"'732653?'?/]:kM;>B*]~+B? !ABhT l 3#!334##326Z\yRG{Xv@{@'&'#3673773D uv^Ff@3@II_7Y1g'RT!\373#"'53277$66nQ4I(q3&-_EZwdN NP + J 2#52654&#+hxzf2A;8Juderf;66:+ J "&5463"3 fzxh2A;8teavg:66;'!5654&#"'632RH/l*-n8;J"jDoMk!8!GH@3RI%5%~R3P3RI%%53~P3'^?3#'3P^_@#33P@+}!v!C+_}ydM^^!J!lJ!-JJ+ \+ \VV-7!!R{\7 327#"'9">/QT%p}KZ%zUK7N3#Z #"&546736634&'326.4oXXn.4½! ż  X?VspY=_7R=)T--T&'P#3Pjy!#"'53254&'.54632&#"ᵩnxMo_/;eJKBpsw9Nh*;)0@Q;jy=:,&%428s+d 33##`7/hX+D&&54632&&#"dB8z1Exa'-g*!#!5!o!#!5!3oR!#!5!3o^!#!5!3oV!!5!33!!3!!#odiLN\ #3dۢ%93##d%=hj/%5%jNdۍhj/75%%hN/d܎D #&&'53wCh-D476>?673#%6673#S\!ByP&h FyZj;30G68? #&&'53#&&'53yA &c&y?#j!?39P.06M(}".#"#663232673(OLG-2fqZ)QME,-h n#+#5>|#)#3>|hs!##Tmsmhs#5#5hmsmh;33mTmh;!5353hmm)V!3!53nsuVR)V!3!nsVR) 5!!+Rdy{[!K2jMV+!!VV?NjO  jwc Po!S[!LR#RO #!#ROO= "&'3326734632#"& nTtda p =-08:.-=يF<>Du<7>56=8= 2#&&#"#66 n Uqg`p 슉I8@Ad'63 4|B%f#67 4|B%d#'73%B|4 f#67 4|B%3^ #&&'53yK%v3^<89<3^ 6673#5m!,?wwD?@1LB353#5#ᇇᾅ{LB##33ᇇDžmj!#!ڈjg-q6653ps"3s "&5463"3sgyxh2A;83vcavf;66:)V3!535DRb{{)V5#5!#DV{{)- 53533##5ד{{2eMV "'53253><.8bk7jV "3327b8.<-k ej 0PW~;99zY=Q6`RBm!#5!#ڈ6b}#"'#"&53326533265wjo55ohwop3@bs3@}q|GGzsBEBEi[Lg[K?N=xR2eM5H!5!jŃY9]N".#"#663232673&HEA,* h eU(KE?**g d%+%;w++L9}j#py3s 2#52654&#mhxxh2A;8udbug:66;Bm!3!53m&ʈB\5-!!35#fٴ-}4632632#4#"#4#"}wjo56nhwnq3@bs3?q|HHzsBEBE/3 77''7V{yX{{Xy{VyX{{Xy{VyyV{}463"#52654.r<;%+%t<;%+%FK]g.5>G(L^h,8>EW[S!C4K!v,xR~n93>xU=B!#5!#B|W9[ `B!#5#|{w-"''7&#"#66327326739[L\J-11i sa:LE\C0$01g v/}8x;sknqo5/4#"#36632^Y#o95iz*68wG 54#"#4#"#366326632fvZLyTO} )_9=#vBzz5idkxd?2y<=xG)52&#"#366w)9AKj'Z t]TH)/32653#'#"&5^Y} &k<NlubVc2=w5X 3673N 5sWA\<V5T 373#'#T򤤢N)o673#)VD;8we*)=#5673,XywC;f=Df^Cq^&FObDf^&COd?ffJ(36632#"4632#"2654&#""32654&R/3}v~^ft1 £_+E[fdsGYo~zyuȋ}T{D}RF $.?3;D'TQ)&QjRo\^)"'53255$47#654&#"'63 3327/D@3+9VT5qD^!32654&'&&5!2&#"#"'sX\gnUe>zɪrNPB7: PNû} #!#!!}XjJ #!!!#!d6RD)#!654&#"'632!327#"&547v4*0$/CP%9{5-9.(@C'1*.qf>eweI"<=~8uOBq\S3!4''&''&#"'663 }{O5Rl\?V[~D\y/!R;V J64D9,Sf%4''%&''%&$''#-*M+/wȫ:L VL](?~[fu.%##"&'##"&533265332653#!5!26546 3w- :~vw zWedhbj tc䢓~*B)J,%# '##"&533265332653#!5!2655472hN 5tߘntFSWX`=^=:BFs&#"32653#47##"5432;cnͺ =؂x/J/`\k1q?`"32653#47##"32&!y} 2qY#/1ո8TFQY(& !#36632!"&'53 #"G]UF{w^L>=g1s6E #J6632#"'532654&#"#3b<~Sljn~d}.2<=b#J`-"&&546323267#"$54667>54&H{{ϟ>acR}7)crL@mBɬK:R^Cn~<9dcr?4M_Ggn1^*&54632327#"$546676654&#"=ڻۼƄ?YYʋswfps+bU;cmQ^.-nZ32&#"!!)U/0##!/D?X~G8JZ<@D0!"2B.1'qCcoY.E]dDo!!3^"7!&#"!5'&&#"'663276632dw.7"_d$2% -1+F`)^\&`G8CZ (2{{f3# =:9<}!"3663 ! ! & !"/6Tۘ'LoC'JB)XNdZuVPb˶qb^#"!2&&# 32654!"56632m0ı6ILL3-i~&;;!Pӌv.(#/xj)J 2#6654&####"#&546333)Gm?}/Ekj#\+2 6632#"&'#"55!!"5664&#"326267!!?Јz>< \cPے| \psqpns m} ,%#ԟuJ#26553#"&547&553!2654! 3gnHSϘm~qhd+SݰΪRTƔgrzmy'Z 4&#"#32۪' 'y' #"33265ᆲ') J ###! 32654&##i9X|w`J`i`^1J #&&5463!##"339shHz~F*pQ]1J#"333!"&54673Ӌ~zhs\Rp*E+J!#!5!!7`J#"&533265綂J==}~N`!2654&#!5!#!NJQY5w 3oN` ,!2654&#!5!#!2#"&5462#"&546JRX56//642246//6422y 4m8('::'(88&'::'&8NB"!2654&#!5! 54&#!5!#!N‚JPZX`53lsᙌ /iN 4tJ 3673## kJGdFVY)J!#&'#3673673Ӯվ ŰU4-`=Jh@YKVlG]@`VyJ !!5!5!!y3By;yDJ!5!#"'532654&##5j 򄷽!ƟGVgdfZdFX#46676654&#"'6323267#"&d?Z]]b7̅grqDV-JnW30RF?OBDu;8W@KS,&A!Z!327#"&'#"'53267&&54632D,7?2U[X\YS6J9{J|sȢB\evsvs]ddHJ!#HJLJJ !#&'#3$  j@TZLJJ!#!#!bJJJmJ!##"&&53!3 3## ij˔Dezquq|eJ!#!#"'532667!2Gvi>=@**30IlwQ!#3&'%{ym  j114E !!#!!!!!!#pu012 !2#!32654&##3254#5TPůpamw~Rr9RFPJ?`##53!23##!3254#'32654&##5PơMů箦pamw~aADhFPJ?!!!24&##3 Luイ !!!!!!^Jco !!5!!5!!odJ`=Fq!#"5432&#"327#\%;Eo5AAʹ #!#3!3Ө!ߨ3\T !57'5!kwwxx```D "'532653'=@G4<=JF% ##3663R#k`Hy/+B3!#33#47h+1\AmQF ##3&53blZo= 33#47#ӅT'EqB #"543232654&#"Bߡm$26553#"&547&&5533254#"_hBNZiùEFfZj_](#jM&XahT ###! 32654&##T`!Rr|n{VeXX32654&###!2#Lpgnq}-ǼWWYK)hL='H#!5!! !o#"&533265ըt~sȳs}u%^#&'#3673773Hؠ겞  R-&,"lTB^6bJ(Z#'#"&54%754&#"'632%2655j.q[{oIC7t61`m\yoBV4.zm VB)uH}qi^3BG62#66323267#"&5"76654&3sTzoIB8r81s`mZzpBT7+|m UB(wG|oj^4AG64h3"&5463273#''26554&#"`)l3YeVpi}L !At *w8?X  RJxp65j]3AVb^2#"'#366"324&T}/f6f]_hZͿsg5U<;:vxh3"&54632&53#''2554&#"Ni) 6k0`hVa\л=8MHi@55}h"&54632!3267"!&&qgE{HuN\ [OзݿXpu 3aXTeb2#"&55!&&#"5627!¢rgtpWиۼVqt=6bX`X #"327#"&547&&54632&#"39{¶ulBUIQ>tkqnH7zi1W?ar%{8[bH254#"'632#"'53254##5;ǚ;g?9l{b[{qGJP%504#"#4#"#36632632\eU^Y .lAAVxpZxrrG8h="'53254#"#3632^9@A(Lkb blhgNwpjwmhP #"&54632324&#"PǰŰchcjef7պֶ}F632#"'732#"VV}c1*c%bs0ӿ/ 5h5P 4&#"#4632he˨Ư5ضhP5 323#"&5ͨƱ5Թh^2#"&'#366"32654&Mj(1n2`i[]]ξ=8HNNh=8~~1#`267#"&5#57733#MT&|umq3m6%z zxN3{c>;532653#'#"&51HLka -yDTPzq9DXf!2654&#!5!#!XSPyoq9D HKkb -yD3265332653#'#"'#"&5/dW_Y .lAC)KwpwqG6DC 3673=կ@>n]O!327#"&&'#"'532667&54632uYMJT2,$E;HI'9nOF%1)&.5utECd w80B?y,$sh$2#"'#46"3254&##532654&sjhixk^P\fc򒅷2/ꔝ5>3bcXTNNh#4673673'!Ŭ-&!%h:`qrFHlVfN)467&&54632&#"#"&%4&'326fSK~K^Hq50Coǰ@VLx|mZdkt,3hEbl#,}M-"*D:QrXn&eYirhh &&54746324&#"66״9B˄rЯJ9Tdsh@ϯϽVF^"ҫ}qhH 23327#"&''#&&#"56-<.%P˰0$$0/>Yj,TLs)"/:ZtG0 yRq`F!37y`By#3'4632#"&76($77$(61--1---`yo2&#"#3662?31Vu/co efcKU5caccNo%#"'#4632%"32654&NnS`[HpeZY/8dսS;hrHe^%,"&'#"&5332653632!3267"!&&oH4約}uXmX /^j_c=}sm-&!ߦ{,9"'3632#"&'##&#"#66325332673"32654& oo7!++ i eU)+f f qqPOx ;?%xG;<~^+4=!"%#$'##66733663 3663266735#"%54&#"#-/i`] /jN 5t2+ g aaFBߙICmt+B* .2`xǖPZX`Ӟ 5,azZP):-[^ +!&'&'##667336632667354&#"a]Z ic\ 3o0.g]`w)) cpxQYϦ:5&d &+ {^,9"'#5&#"#6632336632#"'#32673"32654&#++ i eU @nw *+f f ;.8cmil0]F[X[jkT>?%xGo ^)6%7##"32373!#"'53255!#"'53265%26554&#"oy /TkEXXJAZ:H7k!Yl\V!YkjJ33>73!#"'53255!E D.8b1bekJPjsJ#"'53255!5!5!!sH7BmH;YlV!YkjfJ!326533327#"5#'##"&5Xw}Z641-*YL 1wJ=6($77$(6nlrTLYS2?:1--1-..h 327#"&57X%P?F|ruwyzzh3 #"'532653szF?N&/)szzy<;3!!Zh'#"'53254#"#4#"#366326326:>/eU^Y .lAAV7AqxpZxrrG8h 3265332653#47#"'#"&5/dW_Y .lACXwpw:E>G6h;#"'532653663 #4#"7B4< & &Rjc\{4CXt=Dyh3267#"54#"#3632;);C"̖jc e^?8 { Byrp}L ##3&5Lh)9`f'!33##'#"&55#53267!1`mm -yDdd:faH'}q9DQ}'qlGTPDs#"&5467#5!32654&'5!KQǰRJjIUhcbk]Em5-Y³q7t mozzqet92653#"&53\WW'ixNRxi94&#"5632#"&533265",43B;ufPbaRB.v|ͰRvkhy #&'#--WU\PAR !5!5!!4v`'{lRhH!5!5!!3267#"&5D4v&A 4Ec^`'{lC4{x|R55'77#5!5!36632#7"32654&6x4vREZMc8?8E5,1*$`'{l\XCb!-h#"'532654&##5!5!ٴp54.54>54#"'632Z!(!!(!#+#2,.C6h & $$ZN?  7=   q"#"&55332>33dNwp:n|k*cxWT%-%nmu#+#7!7!%Ej/!%7!/E%ٚ7!'!JEߙ/!'%!/EJNB%7%'E(EÛB'%7E(EHZ2&#"#36d'%&JCyiABn Y[PZTR &'5673_x-uHmgiG:,g#&&'537673%#567&'5 NRh*=*#hd/_'nO=[T2:&('N Rz{q&H&Nzo7&)O\R`&IO{};&*MRq=j&JM%7&+ORL7&KOR%&+dZL&Kd%)&+jRL+&KjdTZ%&+z=>L&Kz!%&+NL&KN&,R&LR)wJ&,JRD&s&.vR3&Nv{{&.d3&Nd&.Mq3&NM&/ds&Odm&/'MRd:&O'Mdm&/M8&OMg&/Kgc&OK{7&0OR&PO{&0d^&Pd!N7&1ORL&QON&1doL^&QdN&1ML^&QMgN&1KgL^&QK}^&2 HRqh &R Hj}&2 FRqh&R Fj}^&2 IRqh &R Ij}^&2 JRqh &R Jjos&3vXR{!&Svo7&3ObR{&SO7&5OsR/&UO&5d/^&Udm&5'M!Rd/j&U&Mdm&5MJ/^&UMh7&6O=Rhy&VOh&6dhy^&Vd9hs&6 CVRhy!&V Ch&6 DFRhy&V Dh7&6'O=Rdhy&V'Od9\7&7O/R!&WO+\&7d!F&Wd/\&7M!F&WM]g\&7K!g F&WKQ&8jDJ&Xj&8RsDJ&XRg&8KgDJ&XK^&8 HRD &X Hy&8 ERD&X Ew3&9RR&YR&9dJ&YdmV7&:OR3&ZOV&:d3J&Zd7&;ONR%&[O)&;jR%&[j7&<O9R&\ONDs&=KRPs!&]KND&=dPsJ&]dFND&=MPsJ&]ML&KM!&Wj3&ZP&\P^J&D`&AO{d"&&#"#4! #"'53265!#?&w&~lU\9POSŴNO.2 q1&~sq1&~Hq1&~q1&~q1&~ q1&~q&~q&~&$&$Њ'$'$'$'$|'$|'$X1&)X1&X1&X1&X1&X1&'(p'(c'('('('(L1&L1&L1&'L1&BL1&7L1&%L&BL&B'+p'+c'+'+'+'+|'+|'+1&1&1&1&81&1&&&R',pE',cd',Z',',5',5|',=|',=qh1&Rhqh1&R\qh1&Rqh1&R3qh1&Rqh1&R 8&2upJ'2c}'2s'26'2s6'2sy1&{y1&dy1&#y1&;y1&y1& y&3y&'<5c'<?'<T|'<s1&s1&s1&s1&s1&s1&s&s&k&vup'vc'v'vs'v}}'vg|'vqg|'vqq&~q&~X&X&L&+L&HD&&qh&Rqh&R%y&y&-s&s&q=1&~'s q=1&~'H q=1&~& q=1&~& q=1&~&  q=1&~& q=&~& q=&~& &&$&Њ&$''$''$c''$c''$k|''$k|''$L1&'L1&'L1&&'L1&&BL1&&7L1&&%L&&BL&&B @'+'p 3'+'c q'+' g'+' R'+' R'+' y|'+' e|'+'s=1&'s=1&'s=1&'s=1&'s=1&'s=1&'s=&'s=&' V&vu'p s'v'c 'v' 'v' ^'v}' i'v' R|'vq' R|'vq'q&~Nqj&~Mq=&~& q=^&~ q=&~& q&~Rq=&~&R >&$N/R&$MBR&$&$Y&$s14632565"&=-27jxy-=4.D5mz K U.= 327#"&55$,6GJXo-) w^eYsR#/".#"#6632326734632#"&%4632#"&+SNI"21^ ja-UNG /2\ m8('::'(88&'::'&8$6.l}$6.qx6..651156..6511L&&+L^&L&&HL&RL&&R'(:'('+:'+&+?b1#&'53%4632565"&bVED=-27jxy-=٥j4.D5mz K U.h14632565"&673#w=-27jxy-=DP{V4.D5mz K U.j$".#"#6632326734632565"+SNI"21^ ja-UNG /2\ m64iqqyj$6.l}$6.qxs*.j]] D6&Nj&M9&9&&R&>&,NR,&,MR/',:T',+D1#&'53%#&&54632DVC>>-ywj71->٩2.U K zm5D.h1#&&54632673#;=-yxj72-=:DP{V2.U K zm5D.j#".#"#663232673#&&5432+SNI"21^ ja-UNG /2\ mjyrohj$6.l}$6.qxsV6D ^\jy&N+yj&M-y9&%y9&%f1&f1&\y&Ry&>&<NR&<MR'<):'<%'3c9#&&'53%4632#"&%432#"&V?q@H6(&88&(6_%92,*5N7{@6./55225d/5-:29673#'4632#"&%432#"&:#q=V6(&88&(6_%92,*5 ;KX6./55225d/5-:2#&'53VCD٩js=&'s=J&s=&'s&Rs=&'RR'2:&2D'v::&vDN&vB 673#>CV1#&&54632q>-yxi71->2.U K zm5D.+#+V!#'7'77'+V5555X7777 '7##!'77RJ75}o}7L) ##'7!)T77L}57}RB'5!R `'_ _#&'7##&'7`$C-j$C6e ^mrY#!+ToPN)5!#NTP###!V ###!!!VtP !!5!###tVPN6& q #/74632#"&4632#"&4632#"&4632#"&@?=BD;=B@?=BD;=BA>=BD;=B@?=BD;=BoBIHCCIJyBIHCBIJDHHDBIJyBIHCCIJ3#5!#3###VPPN !!!##eX`RN\V9`mZUnhUphUPp'`#b %33##Fﻶź{ybUpJF!!#"5432&#"33!!!!!F'ɟ~BofzVq@:ϲdh"*0&'27##7&'#&47737327"& )FAG;%DžQj%'YG/<'#H.%-'DX)Zx -9! %~S4R,́9sL&2&#"667# !2&&#"36;>B+]~J_Vb@٦J;b~ _ l #l\V13qT'632##"##54&#"#3366325R^ߙmt /jUT!5uJPZ!%*/5#533333#3#####5%#3!3'#3''# 4񢠠)== VZ VG{e{߿ X <#!2#'32654&###"'53254&'.54632&&#"X+nk!s|^59Gol^.W;B9e9GNIqj^.\Џ2q\~A%1=R@Lol)^~% htjXrHRz@&"%-!"+#"'532654 #&546324#"6vlcHRRH=P~&PUqu;.}j!YWf-9xR_!&,#3#####535#53! 34'!!6%!&##267!7r?U-'J׏hy*V%J'Eo#on#))=VAJ}\;!5$%53&'!67R-FBvS?"OGRO3C + "!!3##!##537!5!3!'!73'&'8=˜ªî<4;-I"P僨#υOP0667!5!654&#"'6323#!!327#"$547#59z6:kZ3?E{c/L-9_epNRʫXBV?9^n~a"-ܿFA}\5$%53&'67BԛJܤU@MG LFf56!&&##5!!!!#53267!-P}b}- sZrgN1{Zdu"` dD"23254&###!2#%4$32#"$732$54$#"吪SY/^^m+*լ֭ۢQIE^ZƬ֭+*  26'##3''#"&'53254&&'&&54632&&#"#HIEF>t%'3??i\w;y+#&i-968\qZݕ"@3CF[i}N"!#$_P[hm)+-&aJ=J 3!5!!5!nCJ_.'`&{u1-'&tuFX"'632#"&'532654&pE'bDrBH1d^D #&'5673!9>HH>9)DH$HDV 5673&'#DH$HDV:=HH=:#d^D &'3#67!59>HH>9#DH$HDV %67#&'53+DH$HDV9>HH>9d^D#&'5673!&'3#679>HH>99>HH>9)DH$HDDH$HD5673&'67#&'5DH$HDDH$HD:=HH=:9>HH>9H!!5673&'67#&'5 DH$HDDH$HDhPX:=HH=:9>HH>9yH^y`3!!^j8^46632#4&#"rуwfŠdHP 5!5!5!d8d7 3%!{RVj-Gn@##4632#"'&'&#"}?L3% &!" @/)3 )''#i3#"&546323265#9P3## #>/'5)%375! h3#בK7!!#'k7n75!# )3!!n5!3 3!!#knn5!3# K75!!# kn5!3! n 5!3!!# knn5!5! BZ3#3#ّiK K !!!!#'kkב"7 !###ؑ7nn# !!#!!#iro" 5!5!5!# i)ג(7 5!### ݑؑn #!5#!5!ӑtt(F(ޑ 3!!!!k#ב 3!!33B%n#n 3!!3!!ّJ%i# 5!5!5!3 iג) !5!333#ؑn !5!3!3!5!#LF 3!!!!#kk#ב" 3!!#3#Bnn K #3!!#3!!jr " # 5!5!5!3# iגK 5!3#3# 㑑iK#K 3#3!5!#!5!B㑑tK (ޑ 5!!#5! ki"h7 5!!### ؑnn #!5!3!!#!5jtrrBޑ"ؒ 5!3!5! BZ# 5!333! ؑnn 3!!3!5!5!B#o5!5!5!3!!!!# ikkג#ב"3!!###!5!33Bؑnnnn 3!!#!5!3!!#3!5!Bؑtr#ޑ" !!V!!V!!V !!+ !!+ *fw% #'+/37;?CGKOSW[_cgkosw{3#%3#%3#3#%3#%3#3#%3#%3#3#%3#%3#3#%3#%3#3#%3#%3#3#%3#%3#3#%3#%3#3#%3#%3#3#%3#%3#3#%3#%3#3#%3#%3#3#3#3#3#3#3#fiiiiffiihhffff^iibiiff`hh`iiiiiiffff`hh`iiiiiiffiihhffff^iibiiiihhffiihhffiiiiffffffffffffffbbbbbc^^^^^``````e^^^^^`aaaaad^^^^^`cccccb\\\\\bccccc^`````bbbbb%`````b`acc`Tw% #'+/37;?CGKOSW[_cgkosw{ #'+/37;?CGKO3#73#73#73#73#73#3#73#73#73#73#73#3#73#73#73#73#73#3#73#73#73#73#73#3#73#73#73#73#73#3#%3#73#73#73#%3#3#'3#'3#'3#'3#'3#3#73#73#73#73#73#3#'3#'3#'3#'3#'3#3#73#73#73#73#73#3#73#73#73#73#73#3#73#73#73#73#73#3#3#3#3#3#3#3#3#3#3#3#3#fiiiiiihhffffffffffhhiiiiZiiiiiihhffffffffffhhiiiiZiiiiiihhffffffffhhiiiiffffffhhiiiiiifffffffhhiiiiiffffhhiiiiiifffffffhhiiiiffffffhhiiiiZiiiiiihhffffffiiiiffiiiiffiiiiffiiiiffiiiiiiffbbbbbbbbbbbc^^^^^^^^^^^````````````e^^^^^^^^^^^`aaaaaaaaaaad^^^^^^^^^^^`cccccccccccb\\\\\\\\\\\bccccccccccc^```````````bbbbbbbbbbb%```````````bc^``e^`ad^`cb\bc^`b%`C%IMQUY]aeimquy}  !%)-159=AEIMQ!35#35#35#35#35#353353353353353353353#3#3#3#3#3#335335335335#3'#3'#3'#335335335335#373533533535!355#%355##5##5##5#353353353355##5##5##5#35335335335#3'#3'#3'#3#3'#3'#3'#335335#3'#335335#3735355#5##5#353355##5#35335#3'#3#3'#3+jjjjjjjjjjjkjkjkjmkjkjjkkkkkkkkkkkkkkjkjkjmkkkjjjjjjkjkjkjmjjkjkjmkk?kkmkkmjkjkjkkjkjkjmkkmjkjkjkkjkjkjmkkkjjjjjjmmkkkkkkjkjjjjkkjkjjkkjjWjjjjkjjkjjjjkjjkjjjjkkjjjjj!c c"a c!b!`````````````b^^^\`h^^^^^^^^cccccccb^^^^^^^^aaaaaaaa^^^^^^^^^^ccccccccb\\\\\\\\cccccccc^````````bbbbbbb bbbbbbb^^^^cccb^^^^aaaa^^^^^ccccb\\\\cccc^````bbb bbb{Z!!{!!!!!7L17}1mh{!!hmh{!!!hKPb!!L!XVRZ 7L LRZZ79e-)46632#"&&7326654&&#"wx{yy{xwV`bcb`c``dyyyyxyy{b``bcbbbV^R'/7?GOW_gow#"5432'#"5432#"5432#"5432#"5432#"5432#"5432#"5432#"5432#"5432#"5432#"5432#"5432%#"5432#"5432'#"5432377349947575#3773865567557R75577667377349944976#58856556\677675577667667+557775555885Z557w55763:C558337775555776557737+558# 2#"5466jmsoujlw)3!326654&&#")wvuwwwvu}Bwwwutww)#3!46632#"&&'326654&&#")R`babbab`Nwvuwwwvu}B`bb`c``cwwwutwwsbu #"&546324&#"326bcfdiFIKgFEgcIN_}khfJHfFffFHdhy $0:#"'4! 4#"32#"&54632#"&54632327#"'ybbZٗ31Z-!!--!!-+!!//!!+LL=`bHgj34V// -- // --# #-#"'4! 4&#"326%4&#"326327'#"'bc0!--!0.!//!.bb>KLHgj{ -- // -- //ۺ#Fs;)5373#'#5&''7&'#5367'767"32654&BAe;-VL12WXByd+N P)opÉ;'--qt>}`+%* J-d}>^1N =LJŇP'$&&54632!!#!5!"327654&qqwTVhL%Xw{TV;>wBh}VTylFFxUVy>=TVwR,8&'&54763327632"&&'#"&54632"32654&+ !C5'#"&54672&'&5463267632#"&&'Fw^69Zs\=e% qtET'iCJt8v_=1op#8wL/yuzs3B'$'ykVb'NKuu2Qi}x6fZy&&''&&546326632bZ[K6dV'!XaXoV{eAkswwucVB &'6J{FT+t}FiRmX;3#654&'#"&54632Ll^/9r@k99}M+/dyyw {7-Ns#"54632#"&54632%%5_s{N/+ىs9:wJ6.'DeQovt5-Luguf7##57573%377```J`X=@`^``F\^` Z 35#533!!!!!!#\\ɳX꒶ݤ3###535#5333#b?"'!!&#"#6632332673V,* h dU#**g dNN ;]I#!#&'#3673676632&#"ǻ? 6}.865ra:$#%' KsHrgZ ,'{^(!#&'##3376733676632&#"Ӽ2* Ӻhm Ľ  ;g`RC2%LjMbJkZW>Zk#OMIGTR oh $654&#"#527&546323673#2('3>Oxk)3rqwdKT'WO@+99TZpit4{T!#3!sVyJ!#3!y鴴J7q\^ 746324&#"66ыYO^xeGO?*`u{#^Qrr!'%'JII)IImmml!h`34632#"&ӕ+?,+?:0,?!?#;77;6=8{4632#"&5ij?,+?:0,?ii;77;6=8!!4632#"&@?,+?:0,?ok;77;6=85!53llT;!#!b;{ T!3! #34632#"&Nu3A>>AB==BX7BGI@?LJ3##"&54632u3C<?BD=;B;BHHB@KJBIHC@KJfu-!55!-9#3Nu35#3Nu35- #"&54632#"&54632'673#3..2:&)88'.2:&'8 09y3046.52255/6.522dY #"&54632#"&546327#&'533..2:&)88'.2:&'8y903046.52255/6.522gYd+G* @ 3 #"#6$!3 N`" zt3 3 #&$## #bO 3Ľtz &&#"#!2Oh. !#!5!3d+\+ !#!5!3d+%F !#!5!3n!ZZ!#!5!3n!DN!#73g\=H`3R !#!7!3bH3o`RN!#73^J^sN !#573gRۇjh0hF!#73qZyfkFq!#73q_ZGd)5!#73RkGHyN!5 !#73Rk`/L-!P !#!7!3ysdH^- !#73`wcFFH!#73vq=Df-q!#73qFsGVH!%!#73>{GHZ1#% !#7533X3'5g% !#73D{rVJ1}q' !#!7!3by R1X/!#73HՇH7%q!#573q>{G\1#!#736}MH)R/) !#7530XAuP/j5 !#73NN-qT+o5 !#7%3Nu7T+}/!!733+NT-)q!#73qB=T-)P!#!'!`sboL !#'3\H6fy3L !#'3VH)hy?L !#5'3THhy-^!#'3P5fy=Lq!#'3q^hy!#!5!3qT; !#!5!3`/h{T !#!5!35%!#!5!3@P!#73i``ybVL !#73e`;H`FF !#!7!3gb+\t]^L!#73^'ezL!#73e\هseRdZLq!#73qe^=ddZ/!#73Hu7T`H?9 !#753Ru9HpHF? !#73Mw\sX=T9H? !#!7!3lwo V=1?!#73\w߇5:=?q!#73qXw1-B=+5!#73N}5H)1q5 !#753N}<Au1]j5 !#73NN-q -+o5 !#7%3Nu7 -5!!7331N߇ -P5q!#73qN3 -yL!#!'!nwJ{L !#'3nH J{3L !#'3nH)T?J{?L !#5'3nHu^J{-L!#'3n5RjJ{=hq!#'3qo;L{L!#'3kNf{F !#!'!3bj\L !#'3\H5gyFL !#'3VHiyPL!#'3ifrq\%Lq!#'53q^g!#!5!3XV9ZB^ !#!5!3cf)9% !#!5!3b-%w!#!5!3ZV!#73f^ q%^`V !#753o^h^xX !#73q\3Hmg1ZV !#!7!3bL+Vm\V!#73'^{^\q!#73qu\/3g7!#73=q+\=LD7 !#753Po+^-L i7 !#73Po?J?LL)7 !#73PqX/XLBb7!!7331PqLb7q!#73qPq?L{H!##'!y\1F !#'3{Ny1PF !#'3{Hb1F !#5'3{HtD1\F!#'3{HX1)Fq!#'3q{91!#'3wbL^=5 !##'!3ws;s=9 !#'3uHXqHETJ9 !#5'3uHHG}9!#'3uHHG9q!#'53qw>K!#'3[VHZdbVs'53#/[{b !#!'!3[HVbk^ !#'3[VHB1by!#'3_VHLdy}Lq!#'3q^d+!#!5!3LR= !#!5!3aNA%1o5 !#!5!3qÇ!5!3#d+VL!#73e\-yfL !#753e\ }VyfL !#73e\j?yf)L !#73e\=J3yf6P!!7!31i\y whPq!#73qi\;wh/!##'!l-T5 !#%'3H{-T75 !#'3HJ-T+ !#5'3H/P%!#'3}H)/R))q!#'3qÁ)-T/!#'3TH7H' !##'!3eyT19% !#'3{Nq}1JV% !#5'33h5@%!#'3{H#1Z%q!#'53q{Šy1H!#'3vfD=- !#'3mwbFFcP !#!'!3sXdH^5 !#'3kL!-L5!#'3kL!Ny-q!#'3qs!HVF!#'3RZZjfyN !#'53LRHh0hjN!#'3}^s^JR !#!'!3bqlV`sN!#'3\H3`Fq!#'3qZ)d!#!5!3D !#!5!53'ه) !#!5!3sD !#!5!33\+Շ\q&~ ?q&~ @q&~ Aq&~ Bq;&~ Wq;&~ Vq;&~ Uq;&~ T& ?x& @x& Ax& Bx;& Wx;& Vx;& Ux;& Txy& ?y& @y& Ay& By;& Wy;& Vy;& Uy;& T& Sx& Rx& Qx& Pxy& Sy& Ry& Qy& P{ %#"'532654&#"#336632 Ͼb:GUfo 6s un;\u{N"'53267##33&53b:GUfm {unmV"!"55332654&#"#336632㹶 5uĵɾռ[v&!2654&##532654&# '4632#"$5bPmXϴȻӝy з3ǻj#&'53%46325665"&!!VCC=-27jx8A-=4_4.D5mz L0+/j!!46325665"&673#j_F>-17ix8A->:"CVZ4.D5mz L0+/j !!%#&'53%#&&54632j_:VCC=-A8xj72-=Zݩ2/+0L zm5D.j!!#&&54632673#j_ >-A8xi71->9:"CVZ2/+0L zm5D.h! 4632#"&6673#8(.2:&(8+r%)Ews5/6.522L7I=6Z 4632#"&3673#&'`8(/1:&(8{ri~a3<h6/8-422Js~?`f1 4632#"&%4632#"&!!8('::'(88&'::'&8q`h6//642246//6422o /4632#"&%4632#"&".#"#6632326738('::'(88&'::'&8:+SOI"11_ o\-UNH /2] nh6//642246//6422$6.pz%6/rx?G,d@X  ".#"#6632326737673#'MIF&*h hU*PIC+&f e1n#7w$,8pz%6/pz5;~EO1  !!%#&'53`y71Yd1  !!6673#`s= aw[#.KZ (#"&54632#"&5463236673#&''3..2:&)88'.2:&'8{5s38q6B(,@3046.52255/6.522#N78M#@KJ@/ #"&54632#"&54632!!3..2:&)88'.2:&'8`3046.52255/6.522HX".#"#663232673!!'MIF&*h hU*PIC+&f e`$,8pz%6/pzב/ 4632#"&!!h=-08:.-=`L<6=56=8)/ 4632#"&!!h=-08:.-=`<6=56=8^ $,4632#"&%4632#"&#"&'3327673#{8(/1:&(88&/1:&&8q Vg R-[qe76/8-42246/8-422xz96ol`wX^ $,4632#"&%4632#"&#"&'3327#&'53{8(/1:&(88&/1:&&8q Vg neq[3L76/8-42246/8-422xz96oXwm_j #4632#"&%4632#"&!!7673#{8(/1:&(88&/1:&&8p_R-[qe76/8-42246/8-422jl`wXj #4632#"&%4632#"&!!%#&'53{8(/1:&(88&/1:&&8p_eq[3L76/8-42246/8-422jXwm_^; %#"&'33267#&&54632673#q Pn]]>-A8xi71->9:"CVv~x5/22)1/+0L zn4D-^; %#"&'332677#&'53%#&&54632q Pn]]DVCC=-A8xj72,>v~x5/2231/+0L zn4D.^; %#"&'3326746325665"&673#q Pn]]P>-17ix8A->:"CVv~x5/22)5-D4nz L0+/^; %#"&'332677#&'53%46325665"&q Pn]]RVCC>,27jx8A-=v~x5/2234.D4nz L0+/!##!#"'5326!3}w9NQnEB4=;Q>T4fi<{6wm"=HTJ##"'532!3##_v="l#1c bJj3#!##! 32654&##o&-Mը%ĶH!f^'"'##3366323#"32654&w @n٣)N==6ZP۸#-!!!!!!#&&54$!!#"!3Ty ݷq8^2Ξӝ!^'.3#&&5463!632!3267#"$'!!3!"%"!&&9~ηvXmXo swӁ/ wwm-&!PjZq!##3'773'kjgi<m˰m#J##3'773ɢZV-J!XZ,63 #"&'532654&#"#!#"'53266!}L1PMJ~+z8USmE@4=:Q8GH כ1Wul PJ$63 #"'53 4&#"#!#"'532!R;Ќjl N;`vCk%Nq <=/cq$63 #"&'532654&#"#!#3!3%L1PMJ~+z כ1Vj J 63 #"'53 4&#"#!#3!3R;  Ќjn~ M<q <=/J7 %##!#!%IJ %##!#!ȴ{PJN%##4&#"#3$32|f-vv"2;\V%##4&#"#336632w 1qʘ{8Z@PZ #'##'##'5R!11!11!P!ffff!)V23#"'575573%%ZZtD۰Zj&(LJJJp͑u=G@ G.@`/#G/@f)G0@G@#G@ ^ ^ p 8~ ^   D *( (R `z > < T 4Copyright 2012 Google Inc. All Rights Reserved.Noto SansRegularMonotype Imaging - Noto SansVersion 1.06 uhNotoSansNoto is a trademark of Google Inc.Monotype Imaging Inc.Monotype Design TeamData unhinted. Designed by Monotype design team.http://www.google.com/get/noto/http://www.monotype.com/studioThis Font Software is licensed under the SIL Open Font License, Version 1.1. This Font Software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the SIL Open Font License for the specific language, permissions and limitations governing your use of this Font Software.http://scripts.sil.org/OFLff 34566778:;YZ[\_`ders}~NOGHTU > ? W X o 45Z[  `bddss!#$$%%&()+,-/1256689::BNHIJJKQRRSSTT Ncyrlgrek$latn4 kern8kern>kernDmarkJmarkPmarkfmkmk|mkmkmkmk        *:JZjz  %~ & )` +B @" P Q ^ _V b  de dF`bddss  %(3!-:/6G8:OBNRHT_%$=D]4KBj77NNSV\_27 BI^alq~!WYZkl""(UZW]f]kngqk{QQbhssvvl $****0*****************6<***BBHN*N6**T**TT****Z**T`````````````ff*lT* &,28>DJPV\bhntzbn,bn "(h.4:@FLRnX^d4jpv|JJ"J<jp. $  *0:6<<<BBHNTZ`ffflr>r>rx>~x>,,,,f""""n:4:nnnn &.,2,2,2,282&.&.&.>.DJ(DJPV\nBVbnhRntz@bnF,FlRnt "(.,24:&,2v|@>FL>RF~>F8XJ^~>djVpv|V"hnbhJ^bhnbhnbhnJ 22$*06<BHNTZ<`nfnnlrxb(~nN,.,.,..,.,$n*n  n6&  ,6  268>DJ$J$PV$n\*dbhzntzRn.RnnRnnl2n>8J2 ,"(.4.b*:@nFL*nR*X^h.d.jp.vV|@ Vj|xdj.(T0>V\p"J<@ Nd.L""$*06<xBXHNTbn2* 0,6Z@0`flrx~R( &<,nr2>8,,>&.Dn"JPV\bhn4tz,t\D,n, l tx, <\nBbnf"lr(>.~>.4:bn@FLR>X^<Rdjpv.|v..|2\Fpv0nBnRn8n,n* $ *06<B6Hbhn>N~0,TpBZ`Bf,lrxZ~D|4v@b,n*n..F4@L(Zn4@4@4@N>>RndjZ4RnnJJ &,22t8>:D JPZ.BVBZ.*N\N\bh$n"~<*<*ntz<b*.2B $pr0,T0,0`T0`T<BXdx4n"4,@JnRZ(<BXdj\ "(.4:@pFLpR8X8XvhFL.X^d^N~0,6Rdhj4pv|djdj2.vhFLX^4J^N~4~0,Rn4FRn~~nJZN, (h.  ( "   " FL@ $FL * $FL * 0FL 6 <FL~ BRn BRn H N^ T Z ` f l,2|&, rv| l,2&, xv|&, rv|8 ~J\ "V  V  bhJ h bhJbh BJ z Dtz D   @&X N N  N n ~b *~ n r n  *l~!!!!>!! !&!! !&!,! !2,",!8,!8!>R!D!JPV$!P!Vl!\!bl!\!bnR*!h !nr!t !z0,! !z0,!v|!x>!!$!!*!n!!x!Z!B bhnJbhn!ZD!Rn!!:~:OfdtL~L  XX44[[|FDD| P  < ll::gg:jII00vhv\h8Dh8lh,0hlLvv H%%l0~R XXl[[l l  llLX0@0:Dx@\D@D@@v@l@lv @ $DD,<Dn ,:,XNNN,llX,X<bbHH8X\lflfb,b4<DTDl@[0[[<<|Xn,pnl<0<DhD<h l, <l< nl l`L,4< <p,,H,:> >:0v,vvLx<v<%,,DlI,I0\h%@l%@|@D$(D DPXX [ 4P[ l  <lPv vLPD jP:vH,h0`,h|[,0,lvxw,hTbth!!&&5 6,@ `@FFp<n< V 8 .8pDN${ {55IIN&S@ + 94,,,<,l,@ l(,N@("\",aIppCCD@ll|hq p:dnnXpp/XXzd~TG0G,,$|,,T@@@|jhVThTV]]It  \\,rlblpvp@p0pppp]h]pDpHHH|h|HHlvTl>>pXpblHRRl[p0@0"Xl,  p@D4:l,:,:pppglg%Il@IJ%dd## Pb`aHNTTHNTZ`flrx~Xl0ll *l \+D,l XN,0 $=D]4;CHNOPQ?ARCCUGGVJKWMMYSSZWW[YY\de]xy_{{ab  &,28>DJDPV\bhntVzVVtPPPPPPhhhhzzzzV `~du~uTWS&n~B~x>~H-J:J@J\J:JJJJJfJ<J6;JJ  *^JTJrJbJ X^ $=D]4679;<*+>FI@^aDH "(.4:@"FFLRX"^"@djpv||^^^vvv^^vv-x~x!qL{wJxdxyX*\\#9p8J^J\J^@R%mF@JJJJ`J ;A$=D]4KBj77NNSV\_q~]""eU&QQ'bh(ss/vv0   1      & , 2 8 > D J P V \ b h n t z    "(.4:@FLRLRX^LRdj@F pv|@F            J J J J                   $"(.(.(.(.LRLRLRLR @F @F@F@F@F      " " " "   *0 (. (. (.  (. (.6 26 26 2 , 2< >BF 8 >@F JLR JLR JLR D JLR JLRHNTZ` VLR \ bX^X^f nlR h nLR h nLR h nrx h nLR @F @F @F~ @F    pv pv pv | | | |      @F @F @F @F @F @F           LRLR zdj                           (. (. (. . . . . (. JLR D JLR                @F @F&,2&,2&,2&,2,2       8>HN  DJ  PV\b  hntz &6 2 D J \ bX^LR @F |       "(.4:@FLRX^djpv|   JLR  @F(.$ , 26 2 b^   :@FLR6 2 @F     (. (. JLR JLR   pv pv @F @Ftz< >BF 8 >    (.   " h n  |  $*  (. P VLR06 pv  "<B(.(.HNTZ LR`f@F@F@FLRlrx~djdjdj@F@F  $pvpvpvpvpvlrlr|LRLRLRLR@F   `fLRX^ &,28>DJPVPV\bhnDJtz4:dj@Fpvlr| LRlr 4:X^LRdj@Fpv| (.LR"LR@F    "          . .  (.  (. (. &:6 2< >BF 8 >@F< >BF 8 >@F 8 >@F D JLR JlR b^ \ bX^ \ bX^ h nLRf nlR h nLR h nLR zdj t zdj @F @F @F @F           pv pv pv pv | | | | |        @F @F @F BF BF          @F   h nLR h n  i<iJJ(N33ss''//11BB??ddqq}}FF{{NNJJ;;0 0 0s0000?000  000,/0100mm0d0q00B0FF==;;}h}0h0h0F0=0dd{{yyVV==BB{{yy V0 V  ``!!DD%%0F00 VJJ^^  }}##??BByyhh{{BBLL%%dd1130'00000Jhh0 $=D]4KBj77NNSV\_q~]""eU&QQ'bh(ss/vv0   1      & , & 2 8 > D J P V \ b h n h t z h , h h     & & & & & & > > > > V , b b b b b b n t t t t , , , , , , , h b b b n n n n h t t t t t h h h h             & , & , & , 2 2 2 8 8 8 8 > > > > > > J V V \ \ \  \ J J J V  b     b b b b b b b b b b b b t t t t t t t t   & , & , & , & , & , & , & ,           > >  "  "  "  "  " V V V h h h ( . 4 h h : @ F L R X   ^ d j p v | h 2 8 L   j D V ^ \           j     b  & , > t h h  & , & ,      h   b b t t   & , & , 2 2 > > F  h  , \ b t & , V      n    >  t   h 2 V b h h h n  h h t t $ *  D h h 0 6 < B H N T , j Z 6 6 ` ` , f l ^   r r r x &  D 0 ~  h r r              h h z h 6 h  P  6 h  , h h z  h  b h h t    n  h h h n h h h h h t t t t t z h            & , & , & , & , , h , h 2 2 2 2 8 8 8 8 8 > > > > > D D J J P P V \ \ \ b      , 2 b Z J003000s0'0000/0010B00?000d000q0000}0000000F0{0N0000J0;000 0 0000000m000F00=0;0d000{00000y00V0=0B000{0y000000 V0 00`0!0D0%0000J0^0 00000}00#0?000000000B00y000h000{000B0000L0000%000d001000 Z`"$&(*,./125678DFHJLNOQRUVWXL"LRX^djpv|jppdppX ,D  5D\N $=D]4KBj77NNSV\_q~]""eU&QQ'bh(ss/vv0j1jpv| $*06<BHNTZ`fljjjjjjrx|~NNNNf6fjjvvvv||$*`BBBHHNNNNNZflllZZZf$$0jNjjjjjjjjjjjj &,282828>NNNNNN>NDfffJppv|PV\bphnt*z6BHflB6jN  *     " ( . 4jjNN : @ F\ L Rj X ^f d jH p vjv |  p $ f  BB$      x6       N $ * 0 6 < B H N N$ T Z< ` f l r x ~ * <  F 06BHl   6  6 $   p    x | & , 2 8   > > D J  P V** \ b b h n J t00 z  66  nB BB H 2  J  T ZZ``fl h HZf xz%{N4RjHLbH$b=&Db@HE4HPHpppp(pbp\H`HupNpDpp\pDpH>2(bRHf  \Hd0L#3DH Hh]1 RHHH~_ pv 0H3HHH HHH=llHDHH\HhHH`u=HHHH)BHHjL H3tHH H/|@HHJ3DHpppbrhhppppJ 0lppR\/4p:bDXE 6@EGIKMQSZ ]]4:6<BHNTZ`flT6rfx~VVV V=VVpLV,bVV= VVDVbVVsV p`bss!#%% )+!/1$66'::(BN)HI6KQ8SS?`bss!#%% )+!/1$66'::(BN)HI6KQ8SS?@@ $***06<B***6HN**TZHTT`Tff*fffllfffff<<x:Ot`Txx@::@:0@TD d, djdd  $$&(,- 25"89&JJ(RR)TT*dd  $$&(,- 25"89&JJ(RR)TT*+    $*06<0 6000BHN6*00HTZ666666* +~t`V4\4H $ BHfl )`dos""PEKNO<-2"FEKNOFtsdtdpqt2200 0"""<"^^4 ,TT,T 0 0 0 0 0 0"""""""4<zTT 0 0 0"",,"""^T4T4 0""z   " !"!<!B!DFHIKKNNPS UU$WW%Y\&^^*+78=DJNORST^_`adnostwxyz{|}~$(**,,..0022446;==??CEGGVV[bddffhimmooqvxy{|~~      !! PQ UV]]__ggimosuuwwy 1P\bhjlpq{AFJLLNNPPRRUUWWYY[[]^cceeggiikq~//$79:< DFGHJPQRSTUVX  !$&+-/13568 : CDFHJV_biyz{~ TUV]_gopz|  "#$%&'()*+,-./013579=?AGIKOQSUWY[]_acegikl n p ~-Z&*24789:<$&*,.02468:GfmqrsuxQ\^iy{}    FHJLNPRTVXZ\^`bdfhjlnp~7$&q~< &*-2479:<$&68:G \FHJLNPRTVXZ\lnp~4$79:;<=$&68:;=?C U "$&(*,.0lnp~%&*24G\FHJLNPRTVXZ\-<$C U "$&(*,.0N &*24789:<$&*,.02468:G \^FHJLNPRTVXZ\^`bdfhjlnp~!~~$;=;=?C~ ~U "$&(*,.0"$&*247DFGHJPQRSTUVXYZ[\] !$&+-/1357<>@CDFGHJ TUV\]_ "#$%&'()*+,-./013579=?AFGHIJKLNOPQRSTUVWXYZ[\]_acegikm~$C U "$&(*,.0"$&*24DFGHJPQRSTUVX !+-/135CDFGHJ TUV\]_ "#$%&'()*+,-./013579=?AFGHIJKLNOPQRSTUVWXYZ[\]_acegik"$&*24DFGHJPQRSTUVX] !+-/135<>@CDFGHJ TUV\]_ "#$%&'()*+,-./013579=?AFGHIJKLNOPQRSTUVWXYZ[\]_acegik%&*24G\FHJLNPRTVXZ\   YZ[\]7<>@ m  < << <4FGHRTH]3579=?AGIKOQSUWY[]U( (DFGHJRTDFH( (V]#%')+-/13579=?AGIKOQSUWY[] ( ("( (   ( ( F@F`F( (  fmqrsux QV_bdipqrtux Q%V_bfimsvyz{|}~ !qrxQV_bi -V_bfimsvyz{|}~ !Pfmfms~~V_bi~ ~ V_birx Q V_bfim    y~ y~ y~    y~ 6  ky}     ghijnoprtvz{|~   i{    #iy{  N22 giop{|22 /  ky}      oy  }  n  = opwy}  !~~~ ~ops7 opw}  % gp| g|       p'  j~       I(W(Y2Z2[2\22%('(72224(5(Z([(m2(I2W2Y2Z2[2\22%2'272224252Z2[2m22  y}  5  gjz|~      op ghinoprtvz{|   ! gp| %  y}        %nixz{  g|   )  y}      j~  }   ghinoprtvz{|     p*  y}        }  )  jy}~    @  osy}         o}    +  oy}   Lcyrlgrek"latn0aalt2ccmp8ccmpBccmpLligaVrtlm\rtlmbrtlmh 0@P`ph< T"*2:BJRZbjpx&.6<DLT\djrz^fnv~ (0 $*2:BJRX`hpx$,4<DLRZbj                           LMW`bss!#%% )+!/1$66'::(BN)HI6KQ8SS? (B~FPZdnx  (2<FP ` a ` a ` a !` "a #` $a %` &a '` (a )` *a 3` 4a 5` 6a +` ,a -` .a /` 0a 1` 2a 7` 8a 9` :a Y G k l m j n o '*,./0I 4L5OZIL[IO  ; < = > V 7LMWnototools-2017-09-25-tooling-for-phase3-update/tests/data/font2.ttf000066400000000000000000003072701316231664500247170ustar00rootroot00000000000000`GDEF9,6GPOSþx,),GSUBIjV8OS/2}nh`cmap@<gasp, glyf0%%(`head 86hhea{ $$hmtxdDJlocaQ]c maxpH nameAb&post2, U_< 5kc{d: dt 332 GOOG@R: qPqqqq )qq Zqq q qq q1q q q yqq %qPq}qRqyqqq9qq Dq;qPqdq yq yq q Nq yq q q q q jq mq 9 qq  q {qq oq q X qDq Xq  qq q Zqq Nq 5 q 7 q qqqRqqFqwq wqwq q q q s q q H ;q D q 7q q q q L qq ! q  q q q B q B qj/qq?/ qq= qqquq5/q5/ q9qqd9 qqb -q q)qq9 ;q9 qPLqqPq )q P Zqq q  qq Rq 1P q P yqP !qLqyqNqqqPqP ?qN`qbq#` qq!qPqqXq`qB` qjqjjjqjjjjj;jdjjjqjjH-qqH-qqH q-qZq/qVqqHhqH !qH q-qZqqVqqHhqH !q y{qqyoq qy 1q q y q 1q ^q 3q Zq q y #q y %qy Dqoq q qqq q9y qy bqybq q y 7qbq q dqq qy Tq y Vqy Pq{qq }qqqFyqy oq =q q ^q q 3q ^q q q q q Pq Rq q =q w jq s q fq q q qwq q q q w q q L ?q H q ;q q Nq q q q H q \q q q q ^q q Rq 9 q ;q w q q L ?q H q ;q q q q } q q R q q ' q # q q q o q q q L qq ! q  q q q B q B qw7q q }7 q q R7 q q P q  q q q o7 q q7 q L7 qq J q y q q q u7 q j7 qHqqLHq `q !H qq  qN qq qH )q ?H qLHq `qH fq q H ;q fq q hq q q H Xq H Zq !H qq  qN qo VqH )q ?H qfHq {q ;H qq 9 q h q )q q XH q ZH qH qq Lq !qqqqH ZqH q=)qq=q q u= qq s =q qbq q= Lq = qZ=q)qVq+q{qq=dq= q%qq^q sq 3 qq 1 q ? qq hq { q R q q%q Rq qNqq `q qBqq1qq q1q ^qqZqqN q %q1qqoq q D qq B q 3 q q yq q b q q1q ^qqZqqN q %q)q q q)q Vq} qRq q q q qBqoqqjqq }q 5q/qDqoq q Dqoq q qq q9 q bqqq q Fqqq q !qq q bq dq uqqqPqq9qjq# qTHqhqDHq Xq H qq  q yqq Nq`H q 7H q)Hqq'qqq^qHqHHq =q q ^q q 3q ^q q q q q Pq Rq q =q w jq s q fq q q q^q qmq q jq q ?q jq q Xq q q  q ^q Bqmq q Zqq q oq `q Bq q q Bq oq /q jq q ^q 5q 3q^q q `qqq) q Rq^q q Bq q q Bq oq q jq q ^q 5q 3q^q q 7qqq) q RqHqq qHq uq Jqqqq ;q ;qo)qFq)q\q+)q ?q ) qqq q- qo 5qf) q ) qZ)qqX#qqoq)qy)q;)qPq) qqq=qoFqX)q/) q)qqB qqqoyq)qb)qBRqqB 'qRqqTq{qqBdqB Fq`?qq`Zqq` q q w` q q u ?q q oq q ` q ` q` /qZq q \qq 'q%` q` Nq#`q 7q ` hqq q % qq `q ` q ` q` q?qmqBqq q `{q` 3q`?qq#`q 7q ` hqq q % qq -q ` q ` q` q?qmqBqq q `{q` 3q`?qq`Zq q ` /qZq q ;qq q ` wq ` Nq` q?qmq!qhqq `{q` 3qRqqRq'qRXqqqqoqNRqRwqRyqqR Nqyq q {qo q%R qR mqR/qqqqoqNRqRwq q )q Zq q q +q q q P q  yqfq{qq q Z qq / #q + q q q w q y q; qq q }qqqq qZ qq1q-q q  q-q Zqw q-q q q  !q bqqqHqqqXq qTHqhq^Hq sq 3H qq 1 q ` qq hq {H q RH q)H qq'qVqq^qH qHH qfq3qf dqqq!qq)qZfqf q= q Rq  q q q Tq q Hq ; q 1 q`qqX`qqV!qqoq`/qw`q`qqX`qqV!qqoq`/qw`q;qPqDq Xq  qq q Zqq Nq 5 q 7 q qqqRqqFqwq wqqsqq qqqqqqq q q f q q d /q q +q q =q q5qJq {qqq7qo?qqq)qqqqR)q; qoq}fmqfq3H\q1RqR>j  7?IO% ;@M%ce|ooOO/O$d/oo/Oy/?Xdp+7GSco (8DTP\ht!-=MYjv(4@L\lx%1BN^jz_kw 0<L\hy ! - 9 E U e q : F R ^ n ~  # / ; G S _   & 2 C O _ k {   $ 4 @ P \ l  )5EQam} %1=IUam'}Zo=) '7CT`p|%11=IUeu.:KWgs*6BN^nz'3DP`l|  &6BR^n~ GS_kd v !!""#"#$5$%R%&D&P&\&&&&&'''$'0'@'L'\'h'x'''''''''(((!(1(=(M((((((()))$)0)@)L)\)h)x)))))))))***!*1****+ ++#+3+C+O+`+l+|+++++++++,,,%,5,A,Q,],m,y,,,,,-]-.[./m/0}01o112 23!34 44$444444444555"5.5>5J5Z5f5v555555555666r6~6666666667 77'737C7O7_7o7{77777777788)858o8{888888888999$909@9L9\9l9x999999999:>:J:V::::::;;; ;0;<;L;X;h;t;;;;;;;;;<<? ?@@AA}B BCCD.DxDDDDE EE%E5EAERE^EnEzEEEEEEEEEF FF'F3FCFOF_FkF{FFFFGGGG/G;GKGWGgGsGGGGGGGGGHHH H,HcJcZcfcvcccccccccdddd/dqd}ddddeee'e3eDePe`ele|eeeeeeeeef ff%f5fAfQf]fmffffffffg gg2gBgVghh h4hDhXhhhhhhhhhiii+i7iGiSicioiiiiiiiiijj jjkjwjjjjjjjjjkkk k,k~a~~~~#x4Zg} !!7!!IhyJhq($#"&5467'6327654#"327՗G Is\XaIfVߨu?Pk9)a@=EL7;VBHhq"qq"q&.7'7#"&5467'632654'7'654#"327T2AXټ%%Iu=^X1-`oNbbߤs=kR)ja9;=93dN7;TBDhq)"qq"q"q 1"#qq!)"#q5"q V5##D"q +"#qsqRo"qo"#q q"q "#qfqn"q "#qq"q"#qPq!"#q`5"q+5##D"q"#qsqo"qo"#q q/"q"#qq9"q"#qP #"&&54%326654&'lT3\_csq"$qq"$*$54&#"#"&&54%632'$6654&'3^CJGuF1y+T}`d\A_csuqs"'qq "'-:'&''654#"#"&&54%63 654'76654&'3`o&[A7A+RCudm;HX1T'31X _t\-9_csuq "*qq "* "*q %"#*q yq! "#*q V5"*q J5##D* R"*q "#q*q Fo"*q o"#q* `"*q "#*q / b"*q "#*q y "'dq "#'qq!s"#'q5"'q 5##D'"'q "#q'qo"'q o"#q' "'dq w"#'q"'dq /"#'q#0'###"&&54%632654'76654&'3`n-n>#)x'+3X2PT%9sz\ 9_csuqX"Gqq "G "GDq `"#Gqq!X"#Gq 5"Gq 5##DG"Gq "#qGqo"Gq o"#qG "Gq "#Gqj "GDq "#Gq"$;q X"#$qq!"#$qV5"$qJ5##D$R"$q"#q$qo"$qo"#q$ m"$q"#$q;l"$q"#$q!$543 3!2'65!"#! Z ZJ恎FF{ `i`qX"dqq "d B6'##'65!"#! $543 3!272654'7 Ban-o=J恎FZ Z)3X1%9!`i`s{ 9q "gqq V"g J"g q "#gq q! "#gq- 5"gq 5##Dg "gq Y"#qgq "gq L"#qg "g Tq g"#gq "g q h"#gq  #"dwq "#dqq!X"#dq- 5"dq 5##Dd"dq "#qdq"dq 4"#qd "dq "#dqw "dNq "#dq/"6632#"&&'#536654&&#"37wہwͅ%TTNNTTNFߪ߬yyyyqL"qq"/"jq "#qq!L"#q'5"qy5##D"q"#q!qo"qo"#q /"q "#qj/"Bq "#q9X"-#"&&#"'54#"563236632'#6325{u{{svzw!!w{CD3\3%%3Pk\5-bTTb-Z< LL q"qql"9;"q "#qq!"#q9+5"q5##DZ"q"#qsqo"qbo"#q 91"q"#q9"q Z"#qD"D0"Dm"V D%"D:"#y"+D)"P &! 56%$'5! 7@A Jdwwd :T)JdH5:F#"'73265 '#&47!#&47#53673!6733##"&5463sȁcAJ+7y#sbiFMHN#PT!P#PT!<<-1;;1I1ׁ;;Z;;Z;ĢĢ:97<<79:qd5##D#%dw 0<47#&47!#&47#53673!6733##"&5463/o{uFNHN"PT O#PT <<-1;;1b1u9P;Z;;Z;ĢĢ:97<<79:qd 0<H47#&47!#&47#53673!6733#$&&547#"&5463ozuENGN#PT!P#PT!%/1)r;;-1<<1b1u9P;Z;;Z;ĢĢ%SNI^pӌL:97<<79:qdo:F6573 %!"'3##&47!#&47#53673!673#"&5463X+ANX-!ENGN#PT!P#P;;-1<<1;N%+[^$/ߗTb;Z;;Z;ĢĢ:97<<79:qdo:FR$573 %!"'3##&47!#&47#53673!673&&547#"&54639X+BNX-!FNHN#OT!P"P%/1)r[;;.1;;1;N%+[^$/ߗTb;Z;;Z;ĢĢ%SNI^pӌL:97<<79:Hd^7C#"'7326657#&47!#&47#53673!6733##"&5463^bAI+8^R#FNHN#PT O#PT <<-1;;1u1ZT;Z;;Z;ĢĢ:97<<79:qd7CO#"'7326657#&47!#&47#53673!6733#$&&547#"&5463ρbBJ+7_R#ENGN#PT!P#PT!%/1)r;;-1<<1u1ZT;Z;;Z;ĢĢ%SNI^pӌL:97<<79:Hd#IU32#"'732654''>54#"'3##&47!#&47#53673!673#"&5463JBH{ٌbBJ+7gJbXAnkl\ FNHN#PT O#P<<-1;;1Š}pzr1Է8=Puh>yVV;Z;;Z;ĢĢ:97<<79:qd#IUa32#"'732654''>54#"'3##&47!#&47#53673!673&&547#"&5463AH{ًbBJ+7fJbXBojm\!ENGN#PT!P#P%/1)r;;-1<<1Š}pzr1Է8=Puh>yVV;Z;;Z;ĢĢ%SNI^pӌL:97<<79:Hh"q"#q-q!"#qH5"q5##D:"q"#q5qo"qo"#q H^"q"#q-H"q"#q-y);#"&'&#"#&547&547327#"'3 7'#"'32325HBLBtPw/PN8XmϝbTFR\-5^FFX1- u%%3PyAoC%-19r)M!q"qq"y6J#"'327632'654&#"#"&'&#"#&547&547327&'#"'32325bL#R"yDJ$L1'BtPw/PN8Xmϝr#1FZ-5^FFX1 Az G{F%%3PyAoC%-GqJ)M!q "qq"yHdEX'&''64#"#"&'&#"#&547&547327#"'32763 654'7&'"'32325d`n'ZB7A+R jPBtPw/PN8XmϝbL#ۉj/ ZܼN77Z h87ZA3X2Nk# `R%9C>`uuL=Vw9V01I[q "Rqq "R "R q "#Rq ^q! "#RqX ;5"Rq /5##DR 7"Rq "#qRq +"Rq "#qR F"R q "#Rq  H"R q "#Rq ^ y"Oq "#Oq =q!"#OqX 5"Oq 5##DO"Oq P"#qOq"Oq C"#qO "O\q o"#Oq "Oq n"#Oq !# #!"5%!263! 4'7[ZJEh `i`qX"oqq "od?"qd 1=I632'654&#"# #!"5%!263! 4'7&&547#"&5463z87yCJZZJF%/1)r<<-1;;1LA}Xj `i`SNI^pӌL:97<<79:qd T <HT'7632'654&#"# #!"5%!263! 4'7&&547#"&5463ozu+{87yCJZZIF%/1)r;;-1<<1ƟP3AbA}Xj `i`SNI^pӌL:97<<79:d N1EQ632'654&#"# #!"5%!263! 4'7473&&'##"&5463%{77yDJ[ZJEuwp} jLLb;;.1;;1LA}Xj `i`mچt7o"{VdZq!:97<<79:qd 1EQ]632'654&#"# #!"5%!263! 4'7473&&'#&&547#"&5463z87yCJZZJFuwq} kKKc%/1)r<<-1;;1LA}Xj `i`mچt7o"{VdZqSNI^pӌL:97<<79:q 1=IW632'654&#"# #!"5%!263! 4'7&&547#"&5463232&#"'z87yCJZZJF%/1)r2<-1;;1-:T)Jd 5"#fqd 5FR^#"'73265 '632'654&#"# #!"5%!263! 4'7&&547#"&5463sɁbAI+8x#rciwz87yCJZZJF%/1)r#<<-1;;1I1ׁA}Xj `i`7TNJ_qӋL:97<<79:d  <H47632'654&#"# #!"5%!263! 4'7#"&5463/o{u{77xDJZZJE<<-1;;1b1u9P?A}Xj `i`o:97<<79:qd V <HT47632'654&#"# #!"5%!263! 4'7&&547#"&5463ozu{87yCJZZJF%/1)r;;-1<<1b1u9P?A}Xj `i`SNI^pӌL:97<<79:qd GS! %&57! $7632'654&#"# #!"5%!263! 4'7#"&5463FNX\XYZ+{87yCJZZJF<<-1;;1o3+ߗTN'654#"'#"&5463%{77yDJ[ZJEHAH{ًcAJ+7fJcXBojm\F;;.1;;1LA}Xj `i`}pzr1Է8=Puh>yV:97<<79:qd m1Uam632'654&#"# #!"5%!263! 4'732#"'732654''>54#"'&&547#"&5463z87yCJZZJFHBH{ٌbBJ+8gJbXAnkl\%/1)r<<-1;;1LA}Xj `i`}pzr1Է8=Puh>yVySNI^pӌL:97<<79:?1632'654&#"# #!"5%!263! 4'7%{77yDJ[ZJELA}Xj `i`q "qq S" A'&''654#"# #!"5%!263! 4'763 654'7 an'ZB8B+R[ZJE:T)Jd5ELX#"'73265 ''65###"&55#5354&#"5632!54632&#"3325#"&5463sȁcAJ+7y#sbi;x+׾FJ39/?Ф?-;/JF+Y;;-1<<1I1ׁ}CA'ǛjaĬaj:97<<79:qd 5EQXd#"'73265 ''65###"&55#5354&#"5632!54632&#"3&&547325#"&5463sɁbAI+8x#rci;y+׾EJ3:/@Ѥ?-;/JF+%/1)r';;-1<<1I1ׁ}CA'ǛjaĬajTNJ_qӋL`:97<<79:d ;BN47'65###"&55#5354&#"5632!54632&#"3325#"&5463/o{uy+׿FJ1;/?ѣ?-;/JE+X<<-1;;1b1u9PBCA'ǛjaĬaj:97<<79:qd \ ;GNZ47'65###"&55#5354&#"5632!54632&#"3$&&547325#"&5463ozuy+׾EJ154#"''65###"&55#5354&#"5632!54632&#"3325#"&5463٪AH{ًcAJ+7fJcXBojm\gx+׿FJ39/?ѣ?-;/JE+X<<-1;;1Š}pzr1Է8=Puh>yVwCA'ǛjaĬaj:97<<79:qd #T`gs32#"'732654''>54#"''65###"&55#5354&#"5632!54632&#"3$&&547325#"&5463JBH{ٌbBJ+7gJbXAnkl\gy+׾EJ3:/@Ѥ@-;/JF+ %/1)r;;-1<<1Š}pzr1Է8=Puh>yVwCA'ǛjaĬajSNI^pӌL:97<<79:H07'65###"&55#5354&#"5632!54632&#"3325x+׿FJ1;/?ѣ?-;/JE+XCA'ǛjaĬajqZ"qq"H/BI'&''654###"&55#5354&#"5632!54632&#"3 654'7325an'ZB8B+m ׿FJ1;/?ѣ?-;/JE5##DO"Oq"#qORq:o"Oqo"#qO V"Oq"#Oq%"Oq "#Oq%$!"'327#"$&547327#"'3 7徵_ȨusXmϝbYA$'hὰ?%-19q"oqq"od"qd2>J#"'327632'654&#"#"'327#"$&547327&&547#"&5463~cXˁL#yDI!N^ɨd^XmΞ%/1)r;;-2;;2 Az Ahὰ?%-SNI^pӌL:97<<79:qd =IU'7#"'327632'654&#"#"'327#"$&547327&&547#"&5463ozubXˁL"yDJ N^ɨd^XlϞ%/1)r<<-1;;1ƟP3Ab Az Ahὰ?%-SNI^pӌL:97<<79:dm2FR#"'327632'654&#"#"'327#"$&547327473&&'##"&5463bYˁL#yCJ!N_Ȩe_Xmϝuuwq} kLLc;;-1<<1 Az Ahὰ?%-چt7o"{VdZq!:97<<79:qd 2FR^#"'327632'654&#"#"'327#"$&547327473&&'#&&547#"&5463~cXˁL#yDI!N^ɨd^XmΞuuvq} jLLb|%/1)r;;-2;;2 Az Ahὰ?%-چt7o"{VdZqSNI^pӌL:97<<79:q2>JX#"'327632'654&#"#"'327#"$&547327&&547#"&5463232&#"'~cXˁL#yDI!N^ɨd^XmΞ%/1)r;-2;;2-;u:T)JdZ5GS#"'73265 '#"'327632'654&#"#"'327#"$&547327#"&5463sȁcAJ+7y#sbibYˁL#yCJ!N_ȨeaXmϝ;;-1<<1I1ׁ Az Ahὰ?%-+:97<<79:qd %5GS_#"'73265 '#"'327632'654&#"#"'327#"$&547327&&547#"&5463sɁbAI+8x#rcicXˁL#yDI!N^ɨd`XmΞ`%/1)r ;;-2;;2I1ׁ Az Ahὰ?%-TNJ_qӋL:97<<79:dL =I47#"'327632'654&#"#"'327#"$&547327#"&5463/o{uZbXˁL#yDI!N^ɨd^XmΞ;;.1;;1b1u9P Az Ahὰ?%-+:97<<79:qd =IU47#"'327632'654&#"#"'327#"$&547327&&547#"&5463ozuZbXʁK#xDJ!M^ɧd^XlϞ%/1)r<<-1;;1b1u9P Az Ahὰ?%-SNI^pӌL:97<<79:qd!oGS!"'&573 %#"'327632'654&#"#"'327#"$&547327#"&5463uANX\X+bXˁL#yDI!N^ɨd^XmΞ;;.1;;1o$/ߗTN%+[! Az Ahὰ?%-+:97<<79:qdoGS_!"'&573 %#"'327632'654&#"#"'327#"$&547327&&547#"&5463BNX]X+bXʁK#xDJ!M^ɧd^XlϞ%/1)rw<<-1;;1o$/ߗTN%+[! Az Ahὰ?%-SNI^pӌL:97<<79:dDP#"'7326657#"'327632'654&#"#"'327#"$&547327#"&5463cAI+8^RbYˁL#yCJ!N_Ȩe_Xmϝ;;-1<<1u1ZT Az Ahὰ?%-+:97<<79:qd %DP\#"'7326657#"'327632'654&#"#"'327#"$&547327&&547#"&5463 %bBJ+7_R~cXˁL#yDI!N^ɨd^XmΞ%/1)r;;-2;;2u1ZT Az Ahὰ?%-SNI^pӌL:97<<79:d#Vb32#"'732654''>54#"'#"'327632'654&#"#"'327#"$&547327#"&5463NBH{ٌbAI+8gIcXAnkl\bYˁL#yCJ!N_ȨeaXmϝ;;-1<<1Š}pzr1Է8=Puh>yVh Az Ahὰ?%-+:97<<79:qd #Vbn32#"'732654''>54#"'#"'327632'654&#"#"'327#"$&547327&&547#"&5463BG{ًbBJ+7fJbXAojm\~cXˁL#yDI!N^ɨd`XmΞ%/1)r;;-2;;2Š}pzr1Է8=Puh>yVh Az Ahὰ?%-SNI^pӌL:97<<79:2#"'327632'654&#"#"'327#"$&547327bYˁL#yCJ!N_Ȩe_Xmϝ Az Ahὰ?%-q"qq"B'&''64#"#"'327#"$&547327#"'32763 654'7`n'ZB8B+R AVe_yXmϝbY˃d+o"q o"#q X"q "#q' Z"q "#qq"/q L"#qq!"#q5"q5##D"qD"#q!qo"q-o"#q "/qB"#q"/q"#qH632#654#"'327#"'!){˘ݞסuc3ZZѰuc--1q+"qq"H-'&'#"'632#654#"'327654'7`n%uh}uc3){˘ݞסX2V3{`ZZѰuc--ٰ9qX"qq"H"Dq `"#qq!X"#q5"q 5##D"q "#q5qo"qo"#q H"%q 8"#qH"Dq "#qH"Tqq"#qq!+"#q5"qX5##D"q"#q5qo"qN"#q H"Tqg"#qH"Tq"#q9!32327#"$5%64&#"5ZZܼL97ZۼL9Ö`uuq"qq M" 7'##327#"$5%64&#"5632632654'7 `n-n> ZܼL97ZۼL97ZA3X2%9C>`uu9q "qq " " q "#q ^q! "#qX ;5"q /5##D 7"q "#qq +"q "#q F" q "#q  H" q "#q ^ y"q "#q =q!"#qX 5"q 5##D"q P"#qq"q C"#q "\q o"#q "q n"#q ^#,#"&547#&5767# %5! 75%3u=ȯ3T+e\^stmPN>e\\i sfFAAjVRq"/qqr"/,5! %'654&'#"&547#&5767# %5%325}uH/NHq=ȯ3T^s}A%tT$ pmPN>e\\i sfFVRq "2qq "2=F'''654'#"&547#&5767 %5! %654'7%325anL)G8kAȯ3T}uJX1=^s3;Z"jqPN>e\\i sfFAA9VRq "5qq "5 "5q "#5q jq! "#5qV q5"5q <5##D5 "5q "#q5^q 8o"5q o"#q5 }"5q "#5q L T"5q "#5q j "2q "#2qmq! "#2qP m5"2q 85##D2"2q "#q2^q4o"2q o"#q2 e"2q "#2q3 V"2q "#2qmu4='&'#"&547#&5767# %5! 7654'7%325uan%vibu=ȯ3T+e\X1f^sV3{tmPN>e\\i sfFAAٰ9VRq"Rqq "R }"Rq "#Rq Bq!"#RqV H5"Rq 5##DR c"Rq "#qR^q o"Rq o"#qR T"Rq "#Rq # +"Rq "#Rq B"/q "#/q^q!"#/qV15"/q5##D/`"/q"#q/sqo"/qho"#q/ "/q "#/q^H"/q "#/q^^#,!##65%#"&54$7&'&'5! 7654'3H+T3޶>t\d+^fsi\\eQ>NPͤmt)AAlRVq"oqqr"ou4='&'!##65%#"&54$7&'&'5! 7654'7654'3uan%ti+T3޶>t\dX1+^V3{5fsi\\eQ>NPͤmt)AAٰ9RVq"rqq "r }"rq "#rq Bq!"#rqy H5"rq 5##Dr N"rq "#qrJq o"rq o"#qr T"rq "#rq # +"rq "#rq B"oq "#oq^q!"#oqy15"oq5##Do7"oq"#qoJqo"oqho"#qo "oq "#oq^H"oq "#oq^\$65$32#"&547332654&#"#5ijyɶ^TcjJ tݲ[5>MRVzk͌q"qqp""q "#qHq"#q{/5"q5##D^"q"#qsqo"qfo"#q 1"q"#q1"q "#qH)327#&#"'5׸T\Ě4E-υo 1q"qq")#327'654'#&#"'5ouyosT\Ě4E6PB۸مo 1q"qq")-'&'#'654'#&#"'5327654'7`o3`8+1T\Ě4E擢٭)X13-˃݅o 1-69q@"qq")"+q H"#qq!@"#qR5"q m5##D"q B"#qsoiN"qN"#q )"+q >"#q)"+q "#q)1"q"#qq!"#qR5"q5##D%"q"#qsoN"q-N"#q )"Lq^"#q)"qP"#q)"''#&#"'5327654'7`o/^T\Ě4E擢׸É7X1V9#o 1--9qP"qq")";q X"#qq!P"#qR5"q}5##D"qR"#qsoyN"qN"#q )"q/"#q)";q "#q)"Fqb"#qq!"#qR5"q5##D"q"#qsoJN"qN"#q )"oq"#q)"oq9"#qB{$#&&'&'5! 7d?8ĸզ/1Nj z 8AAq"qq"B"q"#qRq!"#qN5"q5##D}"q"#qsqo"qo"#q BZ"q"#q)B;"q"#qR`o,#"'.#"#&546323254&'# '5! 7tfJc D3FB+'1RE{BPw#E0/d; NX^uh1XHAAq"qq"`;632'654&###"'.#"#&546323254&'# '5! 7tN#+yCJ c D3FB+'1RE{BPw#E0/e7A}+?; NX^uh1XHAAq"qq"`FL'&''654#"#"'.#"#&546323254&'# '5! 763 654'7Fan'ZA8B+R  c D3FB+'1RE{BPw#E0/]tG'X];HX142X-?; NX^uh1XHAA[I :q"qq Z"` N"q "#q qJ"#q) 5"q 5##D H"q "#qsq o"q o"#q=`"Xq k"#q` "q l"#q `"q "#qZqJ"#q)Z5"q %5##D"q"#qsqTo"qo"#q=`"q"#qZ`C"q "#qZ`C'#"#"'.#"#&546323254&'# '5! 7632654'7an-wB c D3FB+'1RE{BPw#E0/]tE%/:4X1: +A; NX^uh1XHAAXD:q8"qq "` "#q ?"#qqJ8"#q) 5"q e5##D"q :"#qsqo"q o"#q=`{"q "#qJ` }"#q "#q`{"q"#q?qJ"#q)B5"q 5##Dq"q"#qsqo"qo"#q=`q"q"#q?`)"q"#q?`o#7#"'.#"#&547&547&'5! 7&'#"'632325tfJc D3FB+'<+ZF0/Pw#EQ581RE{Bd; NX^uhRsAAPG1q"/qq"/`:N'#"#"'.#"#&547&547&'5! 7632654'754&'#"'6323an-wB c D3FB+'<+ZF0/]tE%/:4X1Pw#EQ581RE{B: +A; NX^uhRsAAXD:/XPG1q8"2qq "2` "2#q ?"#2qqJ8"#2q) 5"2q e5##D2"2q :"#q2sqao"2q o"#q2 `{"2q "#2qJ` }"2#q "#2q`{"/q"#/q?qJ"#/q)B5"/q 5##D/q"/q"#q/sqo"/qo"#q/=`q"/q"#/q?`)"/q"#/q?`o,!"'3276632#654&#"#"&5467&'5! 7E#wPB{ER1'+BFD- bJfu\//X1hu^XN;dAAq"Oqq"O`='&'#"'3276632#654&#"#"&5467&'5! 7654'7`o%uhE#wPB{ER1'+BFD- bJfu\//сX1V3{5X1hu^XN;dAAٰ9q"Rqq "R` "Rq "#RqZqJ"#Rq) `5"Rq +5##DRn"Rq "#qRRq'o"Rq o"#qR `m"Rq "#Rq;` C"Rq "#RqZ`{"Oq"#Oq?qJ"#Oq)B5"Oq 5##DOP"Oq"#qORqo"Oqo"#qO `q"Oq"#Oq?`)"Oq"#Oq?R!"'#6553 77CN%Z}\P55qZ"oqq"oRd"oqdZ"#oqqd"#3oRd#"oqd/"##oqqZ"#oq#d5"#oqd5##D#od"#!oqd\"#q#osodN'3!"'473 7!"'#6553 7#"&5463yӽNXrs"yDNd<<-1;;1o ZǦTK+:9%Z}\P55+:97<<79:qdN'3?!"'473 7!"'#6553 7&&547#"&5463ӼNXss#xCM%/1)r;;-1<<1o ZǦTK+:9%Z}\P55SNI^pӌL:97<<79:Rd#"oqd%"##oqRdl#"oqd"##oqR"''#"'#6553 7654'7`o5kӬCNʊ7X1V9@!%Z}\P559q"qq"R"q %"#qyq!"#q5"q J5##D"q "#qsoFN"qN"#q R"q"#qZRb"q "#qyR"oq"#oqZq!Z"#oq5"oq5##Do"oq\"#qosoN"oqN"#qo R"oq%"#oqRl"oq"#oq9$#"4$32&#"325332655332654'3#"'##"'#V;ABђ=DXXDJRS; o1   0ʹr\RXT}`qhiݍjpq 4"qq " "q 1"#q q! 4"#q m5"q a5##D i"q "#qq ]"q "#q "q '"#q n"q "#q 3#"'##"'!27#"4632&#"3265533254'3>^3&0r\>qX:@C7XZ@EJeTdp3?3!du??XVaTq"qq(")B''#"'##"'!27#"4632&#"3265533254'3654'7)`o9yn>^3&0r\>qX:@C7XZ@EX113srTdp3?3!du??XVaTٰ9q"qq =" 1"q "#qq!"#q 5"q 5##D"q @"#qqo"q 3o"#q ";q N"#q "q P"#q"fq "#qq!"#q5"q5##D"q+"#qqo"qo"#q "fqy"#q"fq 1"#q#"&' 32654&'75QRGgAw'/ L2?X}%D7!5)w}x9q"qq t" h"q "#q-q!"#q 35"q 5##D"q "#q+qo"qq Ao"#q"sq "#q "q "#q-"q 9"#qq!Z"#q5"q5##D"q"#q+qo"qqo"#q"q/"#qw"q"#qH '32#"'#&57&5473654&#"3)î=3#)pZ\17Hog!=žy?Bu\Veq}"qq "H+6'&'#"'#&57&547332654'7654&#"3`o'o%=3#)))Çc1X1Z\173ۨ?Bu\bog!=9Veqs"qq "H "^q {"#qq!s"#q 5"q 5##D "q u"#qsqo"q o"#q H"?q R"#qH "^q )"#qH"Tq q"#qq!}"#q5"q5##D"q"#qsqo"qo"#q H"Tqg"#qH"Tq "#qf##"5467&'5! 7&'#"'! Nq^TT_weIFVj^43^kVRRBBH}cq)"qq"f"q ;"#qq!)"#q5"qV5##D"q+"#qsqo"qo"#q f"q1"#qfy"q"#q7A54632327#"'#"'##"4$32&#"!265533275$54&#"7JbHHbpLӨV;AB ;u`<9RLLR1`'0t? R``RXq q"qq " "=q Z"#q q! q"#q 5"q 5##D "q "#qq "q "#q "q "#q q "=q "#q `1#67!5!&'#"'53273 TT)FT{̓¢s1--q"/qqE"/`/"/q"#/qq!"#/q5"/q5##D/3"/q"#q/soN"/q;N"#q/ `%"/q"#/q`"/qN"#/q`1$3##67!5!654'!5!&'#"'53273ly%+-T{̓¢V7H׮ɏ15Yh1--ɏq"?qqE"?`/"?q"#?qq!"#?q5"?q5##D?3"?q"#q?soN"?q;N"#q? `%"?q"#?q`"?qN"#?q #"&&54%&'!3267!7QA3\"\\rŗq"Oqq"O#*1'###"&&54%632654'7&'!3267!`n-n>#)x'+3X2QA%9sz\ 9ÿ\\rŗqX"Rqq "R "RDq `"#Rqq!X"#Rq 5"Rq 5##DR"Rq "#qRqo"Rq o"#qR "Rq "#Rqj "RDq "#Rq"O;q X"#Oqq!"#OqV5"OqJ5##DOR"Oq"#qOqo"Oqo"#qO m"Oq"#Oq;l"Oq"#Oqq5#Dq_"qq"uqo"qq-"uqo"uq-"uq:"uq"uq1"uh6AK#"#"&547&#"#"&5475&#"#&4$32632632654&'3'3265!sF7dmtX$i]k͠cGuR=@RKRLMP٠ŠۍݠŠߓ7HHPPg\^1dVegiXgeXq "yqq |"y ="yq "#yq q! "#yq ;5"yq 5##Dy j"yq "#qysq "yq r"#qy 3"yq "#yq  "yq \"#yq "54632&#"327!27#"&54675ĖׅFу#"3FNk!q8"qq""5qR"#qq!8"#q5"qe5##D"q:"#qsoaN"qN"#q "5qH"#q"5q"#qqf &&547%/1)rϐSNI^pӌLq $7'&&5477ozug%/1)r3AbƟPSNI^pӌLRfuH '654&'7uy1:{Bg`Nh-'&'7654'7h`n+xX23vٰ9)473&&'#twq} jLLb Hچt7o"{VdZq5#"'73265 'sȁcAJ+7y#sbi1ׁŶ 47/o{ub1u9Pqo6573 %!"'X+ANX;N%+[^$/ߗT 326657#"'77^RbBJDžZT1Z#32#"'732654''>54#"'AH{ًbBJ+7fJbXBojm\Š}pzr1Է8=Puh>yVq657! $7! %XYZ+NX;N'6b96\5-*3 #"'732654&#"'632654&#"'%׃!V5_IVѸo1|oײo1ǤqNNKwD5L5JL)VmqF=JK)Vl6p͍{mZhshqf͍{mZhsh!q3?#"$'732654&&''̰m TXD~IfꋕTLDy^⽗tH5'654&'76654&'7t+d}s!{jb{1vyoՑoZ]{{s{nq5V# 2&$##!2\w]_T}7=ymT^RL654&#"432'@cZϒrͲO}ofYlu܆z1 ӮmjRwL %'7}}T}JI}plpyysms"q\33VRb !-'747#"&5463#"&5463n{uo{t'<<-1;;1-<<-1;;1ƟP3Abb3s9Pj:97<<79:39:7;;7:9>wEL")#j'/7?#"543#"543 #"543#"543 #"543#"543 #"543#"543F>99;99N<;;9<<;<<;99N<;;>999<<9d<;;<<;;<:;;::;;:<;;<<;;#piyh4M2-7!pi+)$%-+%!+15!b+djJ #"&5463/;;-1;;1:97<<79:D #"''7327}ydZ[nsZZBMbVg>!b 632&#"'st;mrsL5=9T)J ^  ^ ~ F  ^   D  *P (z ` > <@ | 4Copyright 2013 Google Inc. All Rights Reserved.Noto Sans LepchaRegularMonotype Imaging - Noto Sans LepchaVersion 1.03 uhNotoSansLepchaNoto is a trademark of Google Inc.Monotype Imaging Inc.Monotype Design TeamData unhinted. Designed by Monotype design team.http://www.google.com/get/noto/http://www.monotype.com/studioThis Font Software is licensed under the SIL Open Font License, Version 1.1. This Font Software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the SIL Open Font License for the specific language, permissions and limitations governing your use of this Font Software.http://scripts.sil.org/OFL2   "JDFLTkernmarkmkmk  ((R   :@^FLXRX^dn /o)))/)2) R1331$*Gdg2ORoRr25Rr2ROR1$$**GGddgg22OORRooRRrr2255RRrr22RROORR  9$$''**GGddggOORRoorr// 22 OO RR oorr2255RRoo rr   //OO RR ooOORR 8bnqd #Z#Z#Z#Z#Z#Z#Z"#Z"V\zV\zV\"\X>dDpJ|P"!V\V\V\"\X>dDpJ|P"!V\V\!~!!!!6!JV"!ntnthnt&hnt&hnt"t,28>DJPV ""D!hnthnthnt"t,28>DJPV ""D!hnthnthnt&hnt"t,28>DJPV\"b!hnthnthnt"t,28>DJPV\"b!hnthnt!B!H!B!H"zTf ""t"zTf " !! 4! 4""!""!RXnt ."X(t."X(t(t:! &F"!"X(t"X(tRXnt .RXnt .RXnt"t4:!!@&"FL"b!RXntRXntRXnt"t4:!!@&"FL"b!RXntRXntRXnt .RXnt"t4:!!@&"FL"b!RXntRXntRXnt"t4:!!@&"FL"b!RXntRXnt^`^`"djpv| 2"!^`"djpv| 2"!"djpv| 2"!"N"!"N""tHN",THN",THN",T"T $*06<"B"HN",THN",THN",T"T $*06<"B"HN",THN",T &  @Z`x ~!Tx ~"~ fl(r"!x ~x ~ @" @!6D"! @ @ &  &"& "! & & &"& "! & &tz,2tz,2tz"8>DJPV\bh"n!tztztz"8>DJPV\bh"n!tztz""!:@FL:@FL:@FL:@FL"L "(."4"t:@FL:@FL:@FL"L "(."4"t:@FL:@FL:@FL:@FL"L "(."4"t:@FL:@FL:@FL"L "(."4"t:@FL:@FLzR"X^djpv|"!6B6B6B6B"B "J"!6B6B6B"B "J"!6B6B6B6B"B "J"!6B6B6B"B "J"!6B6B06<B06<B06<B"B "J"!06<B06<B06<B"B "J$"*!06<B06<BHNHN"TZ`flr!<x"~!"TZ`flr!<x"~! &,2&2&2"2""t&2&2 &,2 &,2"2""t &,2 &,2 &,2"2""t &,2 &,2ntz 8ntz">D!!JPV\b"h"ntzntz   " ","2 " !   " ","2 " !   X X"","2""" "&"!"","2""" "&"!"z " ","z " ","z " " "8"D"P"\ "h""n!"z " "z " "z " " "8"D"P"\ "h""n!"z " "z "  ^ d j p   ^ d j p" p " ( . 4 : @ F L R" X! ^ d j p ^ d j p v | " " " !!$!*!0 !!$!*!0"!0 !!! !"!"t!!$!*!0!!$!*!0!!$!*!0 !!$!*!0"!0 !!! !"!"t!!$!*!0!!$!*!0!~!!!!6!"D"J"P"V"\"b"h""n"t"z""""z"""""""""DsqTTf''b99B q;ooomm   X  %   F  Z%ZP%L}fZbV-ffZZ//V--uJ HquuJJ H/^^\\7-wBh=wwh=B51Z?T`5+?h\d/5'}=!PDVXjVh R?yf){{{{{^{{{{\yu?T{RhD'sV {qT)B) )q));))o))}))s);)B) j)q)5))h)o)u)u3))B)B))j)`)`)33!)!!))++LLTTH##f}Hbb--)3355)sJ1`7h^5HH;;DD7y7u-B1TTBBJ??XXFFNDDX\ *  &N"""""""""(.4oF ,DFLTccmp82jJ~J ~ * ^ bBv"V#$&'F)+&,Z.:./1*2^23n34~56:66677777777@FLT\fnx &,     ! #"?*4@HRZdlv~ &.8@JPX^fltz%&()+,.-1032547698/*;:>=@?BADCFE<'HIKJNMPORQTSVULGXW[Z]\_^a`cbY@FLT\fnx &,efhikjnmporqtsvulgxw{z}|~y &,4:BHPV^dlrz &,4:BHPV^dlrz@FLT\fnx &, &,4:BHPV^dlrz@FLTZbhpv~ &,     ?*4@HRZdlv~ &.8@JPX^fltz "!$#&%)(+*-,/.10'346598;:=<?>A@72CBFEHGJILKNMD@FLT\fnx &,PQSTVUYX[Z]\_^a`WRcbfehgjilknmdO(4>JT`hrz"*4<FNX`jpx~&0<FR\hppqstvuyx{z}|~wr@FLT\fnx &,O(4>JT`hrz"*4<FNX`jpx~&0<FR\hp     ! #"&%('*),+.-$@FLT\fnx &,01346598;:=<?>A@72CBFEHGJILKNMD@FLT\fnx &,PQSTVUYX[Z]\_^a`WRcbfehgjilknmdO(4>JT`hrz"*4<FNX`jpx~&0<FR\hppqstvuyx{z}|~wr/`flt|$,6>HPZblt~@FLT\fnx &,     @FLT\fnx &,! #"&%('*),+.-$?*4@HRZdlv~ &.8@JPX^fltz01346798<;>=@?BADC:5FEIHKJMLONQPG2STVUYX[Z]\_^a`WRcbfehgjilknmd@FLT\fnx &,pqstvuyx{z}|~wr &,4:BHPV^dlrz?*4@HRZdlv~ &.8@JPX^fltz &,4:BHPV^dlrz?*4@HRZdlv~ &.8@JPX^fltz     ! #"&%('*),+.-$@FLT\fnx &,01346598;:=<?>A@72CBFEHGJILKNMD@FLT\fnx &,PQSTVUYX[Z]\_^a`WRcbfehgjilknmd/`flt|"*08>FLT\fnxpqstvuyx{z}|~wr &,4:BHPV^dlrz@FLT\fnx &,@FLT\fnx &,@FLT\fnx &,      &,4:BHPV^dlrz &,4:BHPV^dlrz !#"&%('*),+.-$ &,4:BHPV^dlrz01326587:9<;>=4 &,4:BHPV^dlrz@ACBFEHGJILKNMD@FLT\fnx &,PQSTVUYX[Z]\_^a`WRcbfehgjilknmd &,4:BHPV^dlrzz{}|~ &,4:BHPV^dlrzop$*06<rqstuvwx*06<BHNTZ`flrx~2$dOo/Oo/o/Oo/?Oynototools-2017-09-25-tooling-for-phase3-update/tests/gpos_diff_test.py000066400000000000000000000050101316231664500255730ustar00rootroot00000000000000# Copyright 2016 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import tempfile import unittest from nototools.gpos_diff import GposDiffFinder from hb_input_test import make_font class GposDiffFinderText(unittest.TestCase): def _expect_kerning_diffs(self, source_a, source_b, pairs, values): font_a = make_font('feature kern {\n%s\n} kern;' % source_a) font_b = make_font('feature kern {\n%s\n} kern;' % source_b) file_a = tempfile.NamedTemporaryFile() file_b = tempfile.NamedTemporaryFile() font_a.save(file_a.name) font_b.save(file_b.name) finder = GposDiffFinder(file_a.name, file_b.name, 0, 100) diffs = finder.find_kerning_diffs() self.assertIn('%d differences in kerning pairs' % len(pairs), diffs) for pair_diff in pairs: self.assertIn('%s pos %s %s %s' % pair_diff, diffs) self.assertIn('%d differences in kerning values' % len(values), diffs) for value_diff in values: self.assertIn('pos %s %s: %s vs %s' % value_diff, diffs) def test_simple(self): self._expect_kerning_diffs(''' pos a b -10; pos a c -20; ''', ''' pos a b -30; pos a d -40; ''', [('-', 'a', 'c', [-20]), ('+', 'a', 'd', [-40])], [('a', 'b', [-10], [-30])]) def test_multiple_rules(self): self._expect_kerning_diffs(''' @a_b = [a b]; pos a d -10; pos @a_b d -20; ''', ''' pos a d -30; ''', [('-', 'b', 'd', [-20])], [('a', 'd', [-10, -20], [-30])]) def test_single_vs_class(self): self._expect_kerning_diffs(''' pos a d -10; ''', ''' @a_b = [a b]; pos @a_b d -20; ''', [('+', 'b', 'd', [-20])], [('a', 'd', [-10], [-20])]) if __name__ == '__main__': unittest.main() nototools-2017-09-25-tooling-for-phase3-update/tests/hb_input_test.py000066400000000000000000000264451316231664500254620ustar00rootroot00000000000000# Copyright 2016 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from __future__ import print_function, unicode_literals import unittest from fontTools.agl import AGL2UV from fontTools.feaLib.builder import addOpenTypeFeaturesFromString from fontTools.misc import UnicodeIO from fontTools import mtiLib from fontTools.pens.ttGlyphPen import TTGlyphPen from fontTools.ttLib import newTable, TTFont from fontTools.ttLib.tables._c_m_a_p import cmap_format_4 from nototools.hb_input import HbInputGenerator def make_font(feature_source, fea_type='fea'): """Return font with GSUB compiled from given source. Adds a bunch of filler tables so the font can be saved if needed, for debugging purposes. """ # copied from fontTools' feaLib/builder_test. glyphs = """ .notdef space slash fraction semicolon period comma ampersand quotedblleft quotedblright quoteleft quoteright zero one two three four five six seven eight nine zero.oldstyle one.oldstyle two.oldstyle three.oldstyle four.oldstyle five.oldstyle six.oldstyle seven.oldstyle eight.oldstyle nine.oldstyle onequarter onehalf threequarters onesuperior twosuperior threesuperior ordfeminine ordmasculine A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z A.sc B.sc C.sc D.sc E.sc F.sc G.sc H.sc I.sc J.sc K.sc L.sc M.sc N.sc O.sc P.sc Q.sc R.sc S.sc T.sc U.sc V.sc W.sc X.sc Y.sc Z.sc A.alt1 A.alt2 A.alt3 B.alt1 B.alt2 B.alt3 C.alt1 C.alt2 C.alt3 a.alt1 a.alt2 a.alt3 a.end b.alt c.mid d.alt d.mid e.begin e.mid e.end m.begin n.end s.end z.end Eng Eng.alt1 Eng.alt2 Eng.alt3 A.swash B.swash C.swash D.swash E.swash F.swash G.swash H.swash I.swash J.swash K.swash L.swash M.swash N.swash O.swash P.swash Q.swash R.swash S.swash T.swash U.swash V.swash W.swash X.swash Y.swash Z.swash f_l c_h c_k c_s c_t f_f f_f_i f_f_l f_i o_f_f_i s_t f_i.begin a_n_d T_h T_h.swash germandbls ydieresis yacute breve grave acute dieresis macron circumflex cedilla umlaut ogonek caron damma hamza sukun kasratan lam_meem_jeem noon.final noon.initial by feature lookup sub table """.split() font = TTFont() font.setGlyphOrder(glyphs) glyph_order = font.getGlyphOrder() font['cmap'] = cmap = newTable('cmap') table = cmap_format_4(4) table.platformID = 3 table.platEncID = 1 table.language = 0 table.cmap = {AGL2UV[n]: n for n in glyph_order if n in AGL2UV} cmap.tableVersion = 0 cmap.tables = [table] font['glyf'] = glyf = newTable('glyf') glyf.glyphs = {} glyf.glyphOrder = glyph_order for name in glyph_order: pen = TTGlyphPen(None) glyf[name] = pen.glyph() font['head'] = head = newTable('head') head.tableVersion = 1.0 head.fontRevision = 1.0 head.flags = head.checkSumAdjustment = head.magicNumber =\ head.created = head.modified = head.macStyle = head.lowestRecPPEM =\ head.fontDirectionHint = head.indexToLocFormat =\ head.glyphDataFormat =\ head.xMin = head.xMax = head.yMin = head.yMax = 0 head.unitsPerEm = 1000 font['hhea'] = hhea = newTable('hhea') hhea.tableVersion = 0x00010000 hhea.ascent = hhea.descent = hhea.lineGap =\ hhea.caretSlopeRise = hhea.caretSlopeRun = hhea.caretOffset =\ hhea.reserved0 = hhea.reserved1 = hhea.reserved2 = hhea.reserved3 =\ hhea.metricDataFormat = hhea.advanceWidthMax = hhea.xMaxExtent =\ hhea.minLeftSideBearing = hhea.minRightSideBearing =\ hhea.numberOfHMetrics = 0 font['hmtx'] = hmtx = newTable('hmtx') hmtx.metrics = {} for name in glyph_order: hmtx[name] = (600, 50) font['loca'] = newTable('loca') font['maxp'] = maxp = newTable('maxp') maxp.tableVersion = 0x00005000 maxp.numGlyphs = 0 font['post'] = post = newTable('post') post.formatType = 2.0 post.extraNames = [] post.mapping = {} post.glyphOrder = glyph_order post.italicAngle = post.underlinePosition = post.underlineThickness =\ post.isFixedPitch = post.minMemType42 = post.maxMemType42 =\ post.minMemType1 = post.maxMemType1 = 0 if fea_type == 'fea': addOpenTypeFeaturesFromString(font, feature_source) elif fea_type == 'mti': font['GSUB'] = mtiLib.build(UnicodeIO(feature_source), font) return font class HbInputGeneratorTest(unittest.TestCase): def _make_generator(self, feature_source, fea_type='fea'): """Return input generator for GSUB compiled from given source.""" font = make_font(feature_source, fea_type) return HbInputGenerator(font) def test_no_gsub(self): g = self._make_generator('') self.assertEqual(g.input_from_name('a'), ((), 'a')) self.assertEqual(g.input_from_name('acute', pad=True), ((), ' \u00b4')) def test_input_not_found(self): g = self._make_generator('') self.assertEqual(g.input_from_name('A.sc'), None) def test_cyclic_rules_not_followed(self): g = self._make_generator(''' feature onum { sub zero by zero.oldstyle; } onum; feature lnum { sub zero.oldstyle by zero; } lnum; ''') self.assertEqual(g.input_from_name('zero.oldstyle'), (('onum',), '0')) def test_onum_after_lnum(self): g = self._make_generator(''' feature onum { sub zero by zero.oldstyle; } onum; ''') self.assertEqual(g.input_from_name('zero'), ((), '0')) self.assertEqual(g.input_from_name('zero.oldstyle'), (('onum',), '0')) g = self._make_generator(''' feature onum { sub zero by zero.oldstyle; } onum; feature lnum { sub zero.oldstyle by zero; } lnum; ''') self.assertEqual(g.input_from_name('zero'), ((), '0')) self.assertEqual(g.input_from_name('zero.oldstyle'), (('onum',), '0')) def test_lnum_after_onum(self): g = self._make_generator(''' feature onum { sub zero by zero.oldstyle; } onum; ''') self.assertEqual(g.input_from_name('zero.oldstyle'), (('onum',), '0')) self.assertEqual(g.input_from_name('zero'), ((), '0')) def test_contextual_substitution_type1(self): g = self._make_generator(''' FontDame GSUB table feature table begin 0\ttest\ttest-lookup-ctx feature table end lookup\ttest-lookup-ctx\tcontext glyph\tb,a\t1,test-lookup-sub lookup end lookup\ttest-lookup-sub\tsingle a\tA.sc lookup end ''', fea_type='mti') self.assertEqual(g.input_from_name('A.sc'), (('test',), 'ba')) def test_contextual_substitution_type2(self): g = self._make_generator(''' FontDame GSUB table feature table begin 0\ttest\ttest-lookup-ctx feature table end lookup\ttest-lookup-ctx\tcontext class definition begin a\t1 b\t2 c\t3 d\t1 class definition end class\t1,2,3,1\t1,test-lookup-sub lookup end lookup\ttest-lookup-sub\tligature A.sc\ta\tb\tc D.sc\td\tb\tc lookup end ''', fea_type='mti') self.assertEqual(g.input_from_name('A.sc'), (('test',), 'abca')) self.assertEqual(g.input_from_name('D.sc'), (('test',), 'dbca')) def test_chaining_substitution_type1(self): g = self._make_generator(''' FontDame GSUB table feature table begin 0\ttest\ttest-lookup-ctx feature table end lookup\ttest-lookup-ctx\tchained glyph\tb\ta\tc\t1,test-lookup-sub lookup end lookup\ttest-lookup-sub\tsingle a\tA.sc lookup end ''', fea_type='mti') self.assertEqual(g.input_from_name('A.sc'), (('test',), 'bac')) def test_chaining_substitution_type3(self): g = self._make_generator(''' lookup CNTXT_LIGS { substitute f i by f_i; substitute c t by c_t; } CNTXT_LIGS; lookup CNTXT_SUB { substitute n by n.end; substitute s by s.end; } CNTXT_SUB; feature test { substitute [a e i o u] f' lookup CNTXT_LIGS i' n' lookup CNTXT_SUB; substitute [a e i o u] c' lookup CNTXT_LIGS t' s' lookup CNTXT_SUB; } test; ''') self.assertEqual(g.input_from_name('f_i'), (('test',), 'afin')) self.assertEqual(g.input_from_name('c_t'), (('test',), 'acts')) self.assertEqual(g.input_from_name('n.end'), (('test',), 'afin')) self.assertEqual(g.input_from_name('s.end'), (('test',), 'acts')) g = self._make_generator(''' feature test { substitute [a e n] d' by d.alt; } test; ''') self.assertEqual(g.input_from_name('d.alt'), (('test',), 'ad')) def test_no_feature_rule_takes_precedence(self): g = self._make_generator(''' feature test { substitute [A-Z] [A.sc-Z.sc]' by [a-z]; } test; ''') self.assertEqual(g.input_from_name('a'), ((), 'a')) g = self._make_generator(''' feature test { substitute [e e.begin]' t' c by ampersand; } test; ''') self.assertEqual(g.input_from_name('ampersand'), ((), '&')) def test_chaining_substitution_backtrack_reversed(self): g = self._make_generator(''' feature test { substitute [b e] [c f] a' [d g] by A.sc; } test; ''') self.assertEqual(g.input_from_name('A.sc'), (('test',), 'bcad')) def test_is_sublist(self): g = self._make_generator('') self.assertTrue(g._is_sublist([], [])) self.assertFalse(g._is_sublist([], [1])) self.assertTrue(g._is_sublist([1, 2, 3], [2, 3])) self.assertFalse(g._is_sublist([1, 2, 3], [1, 3])) def test_min_permutation(self): g = self._make_generator('') self.assertEqual(g._min_permutation( [[1, 2], [3, 4], [5, 6]], [2, 3]), [2, 3, 5]) self.assertEqual(g._min_permutation( [[1, 2], [3, 4], [5, 6]], [3, 6]), [1, 3, 6]) self.assertEqual(g._min_permutation( [[1, 2], [3, 4], [5, 6]], [1, 4, 5]), [1, 4, 5]) self.assertEqual(g._min_permutation( [[1], [], [2]], [1]), []) if __name__ == '__main__': unittest.main() nototools-2017-09-25-tooling-for-phase3-update/tests/ipa-combinations.txt000066400000000000000000000012451316231664500262250ustar00rootroot00000000000000# From the IPA handbook 1999 # page ix k͡p t͜s ŋ̊ n̥ d̥ s̬ t̬ tʰ dʰ ɔ̹ ɔ̜ u̟ e̠ e̽ n̩ e̯ ə˞ a˞ b̤ a̤ b̰ a̰ t̼ d̼ tʷ dʷ tʲ dʲ tˠ dˠ tˤ dˤ t̪ d̪ t̺ d̺ t̻ d̻ dⁿ dˡ d̚ e̝ ɹ̝ e̞ β̞ e̘ e̙ eː eˑ e̋ e᷄ e᷅ e᷈ # page 10 ɓ̥ k͡ǂ g͡ǂ ŋ͡ǂ q͡ǃ # page 13 ë̞ # page 14 ˥˩ ˩˥ ˦˥˦ # page 15 ˨˩˧ a᷄ a᷅ i̇́ ɔ̀ ɔ́ eːː ɹ̥ r̥ e̥ k̬ z̥ # page 16 u̜ ʉ̠ a̽ ä̝ t̞ x̟ n̠ ɑ˞ n̪ # page 17 ɛ̃ ɹ̃ tⁿ tˡ ɫ̩ g̚ # page 18 ɑ̃ uː # page 19 àː ɛ̀ # page 20 ɐ̃ æː k͡ʘ k͡ǀ k͡ǃ # page 21 k͡ǁʰ ɶː # page 22 g̊ t͡ʃ tː ɑː # page 23 aː aˑ iː iˑ ə̆ t͜a ɛ̋ ɪ́ nototools-2017-09-25-tooling-for-phase3-update/tests/run_tests000077500000000000000000000001541316231664500242020ustar00rootroot00000000000000#!/bin/bash for f in *_test.py; do python "$f" if [[ "$?" != 0 ]]; then exit 1 fi done nototools-2017-09-25-tooling-for-phase3-update/tests/substitute_linemetrics_test.py000077500000000000000000000057441316231664500304650ustar00rootroot00000000000000# Copyright 2017 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import os.path import unittest import tempfile import hashlib from fontTools.ttLib import TTFont import nototools.substitute_linemetrics class LineMetricsTest(unittest.TestCase): def setUp(self): current_dir = os.path.abspath(os.path.dirname( os.path.realpath(__file__))) data_dir = os.path.join(current_dir, 'data') self.fontfile1 = data_dir + '/font1.ttf' self.fontfile2 = data_dir + '/font2.ttf' self.output_file = tempfile.gettempdir() + '/' + 'output.ttf' if os.path.isfile(self.output_file): os.remove(self.output_file) def test_basic(self): self.assertFalse(os.path.isfile(self.output_file)) nototools.substitute_linemetrics.main([self.fontfile1, self.fontfile2, '-o', self.output_file]) self.assertTrue(os.path.isfile(self.output_file)) font1 = TTFont(self.fontfile1) font2 = TTFont(self.fontfile2) output = TTFont(self.output_file) assert dump_linemetrics(font1) != dump_linemetrics(font2),\ 'linemetrics for the two test fonts should be different.' self.assertEqual(dump_linemetrics(font2), dump_linemetrics(output)) # checks other data in output should be the same as that in font1 self.assertEqual(len(font1.__dict__), len(output.__dict__)) cmap1 = font1['cmap'] cmapo = output['cmap'] self.assertEqual(len(cmap1.tables), len(cmapo.tables)) t1 = cmap1.tables[0] to = cmapo.tables[0] self.assertEqual(t1.data, to.data) #FIXEME? Probably we need to check more tables to see if they are equal. # However, considering this is a fairly simple script, we shouldn't spend # much time on it so far. font1.close() font2.close() output.close() def dump_linemetrics(font): metrics = {} metrics['ascent'] = font['hhea'].ascent metrics['descent'] = font['hhea'].descent metrics['usWinAscent'] = font['OS/2'].usWinAscent metrics['usWinDescent'] = font['OS/2'].usWinDescent metrics['sTypoAscender'] = font['OS/2'].sTypoAscender metrics['sTypoDescender'] = font['OS/2'].sTypoDescender metrics['sxHeight'] = font['OS/2'].sxHeight metrics['sCapHeight'] = font['OS/2'].sCapHeight metrics['sTypoLineGap'] = font['OS/2'].sTypoLineGap return metrics if __name__ == '__main__': import sys sys.exit(unittest.main()) nototools-2017-09-25-tooling-for-phase3-update/tests/telugu-ui.html000066400000000000000000000011541316231664500250350ustar00rootroot00000000000000 Latin text తెలుగు లిపి Latin text తెలుగు లిపి nototools-2017-09-25-tooling-for-phase3-update/tests/unicode_data_test.py000077500000000000000000000154621316231664500262710ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Tests for unicode_data.py.""" __author__ = 'roozbeh@google.com (Roozbeh Pournader)' import unittest from nototools import unicode_data class UnicodeDataTest(unittest.TestCase): """Tests for unicode_data module.""" def test_name(self): """Tests the name() method.""" self.assertEqual('WARANG CITI OM', unicode_data.name(0x118FF)) def test_category(self): """Tests the category() method.""" self.assertEqual('Co', unicode_data.category(0xF0001)) self.assertEqual('Cn', unicode_data.category(0xE01F0)) def test_canonical_decomposition(self): """Tests the canonical_decomposition() method.""" self.assertEqual('', unicode_data.canonical_decomposition(0x0627)) self.assertEqual(u'\u064A\u0654', unicode_data.canonical_decomposition(0x0626)) self.assertEqual(u'\U000226D4', unicode_data.canonical_decomposition(0x2F8A4)) def test_script(self): """Tests the script() method.""" self.assertEqual('Latn', unicode_data.script(0xA794)) self.assertEqual('Zzzz', unicode_data.script(0xE006)) def test_block(self): """Tests the block() method.""" self.assertEqual('Emoticons', unicode_data.block(0x1F600)) def test_default_ignorable(self): """Tests the is_default_ignorable() method.""" self.assertTrue(unicode_data.is_default_ignorable(0x061C)) self.assertFalse(unicode_data.is_default_ignorable(0x0020)) def test_defined(self): """Tests the is_defined() method.""" self.assertTrue(unicode_data.is_defined(0x20BD)) self.assertFalse(unicode_data.is_defined(0xFDD0)) # CJK ranges self.assertTrue(unicode_data.is_defined(0x3400)) self.assertTrue(unicode_data.is_defined(0x4DB5)) self.assertFalse(unicode_data.is_defined(0x4DB6)) def test_defined_characters(self): """Tests the defined_characters() method.""" self.assertIn(0x20BD, unicode_data.defined_characters()) self.assertNotIn(0xFDD0, unicode_data.defined_characters()) # Version-restricted self.assertNotIn(0x20BD, unicode_data.defined_characters(6.3)) self.assertIn(0x20BD, unicode_data.defined_characters(7.0)) # Script restricted self.assertIn(0x1CD1, unicode_data.defined_characters(scr='Deva')) self.assertNotIn( 0x1CD1, unicode_data.defined_characters(version=5.1, scr='Deva')) self.assertIn(0x0964, unicode_data.defined_characters(scr='Beng')) self.assertIn(0xA92E, unicode_data.defined_characters(scr='Latn')) self.assertNotIn( 0x0363, unicode_data.defined_characters(scr='Arab')) def test_private_use(self): """Tests the is_private_use method.""" self.assertTrue(unicode_data.is_private_use(0xE000)) self.assertTrue(unicode_data.is_private_use(0xF8FF)) self.assertFalse(unicode_data.is_private_use(0x9000)) self.assertTrue(unicode_data.is_private_use(0xF0000)) self.assertTrue(unicode_data.is_private_use(0x10FFFD)) self.assertFalse(unicode_data.is_private_use(0x10FFFE)) def test_mirrored(self): """Tests the mirrored method.""" self.assertNotIsInstance(unicode_data.mirrored(0x0000), bool) self.assertEqual(unicode_data.mirrored(0x0028), 1) self.assertEqual(unicode_data.mirrored(0x2140), 1) self.assertEqual(unicode_data.mirrored(0x0029), 1) self.assertEqual(unicode_data.mirrored(0x1D7C3), 1) self.assertEqual(unicode_data.mirrored(0x0020), 0) self.assertEqual(unicode_data.mirrored(0x27CB), 1) self.assertEqual(unicode_data.mirrored(0x27CD), 1) def test_age(self): """Tests the age method.""" self.assertEqual(unicode_data.age(0xE000), '1.1') self.assertEqual(unicode_data.age(0xE0021), '3.1') self.assertEqual(unicode_data.age(0x20BD), '7.0') self.assertEqual(unicode_data.age(0x2B820), '8.0') self.assertEqual(unicode_data.age(0x104B0), '9.0') def test_bidi_mirroring_glyph(self): """Tests the bidi_mirroring_glyph() method.""" self.assertEqual(unicode_data.bidi_mirroring_glyph(0x0028), 0x0029) self.assertEqual(unicode_data.bidi_mirroring_glyph(0x0029), 0x0028) self.assertEqual(unicode_data.bidi_mirroring_glyph(0x27CB), 0x27CD) self.assertEqual(unicode_data.bidi_mirroring_glyph(0x27CD), 0x27CB) self.assertIsNone(unicode_data.bidi_mirroring_glyph(0x2140)) def test_script_code(self): """Tests the script_code method.""" self.assertEqual(unicode_data.script_code('NKo'), 'Nkoo') self.assertEqual(unicode_data.script_code("N'Ko"), 'Nkoo') self.assertEqual(unicode_data.script_code('NewTaiLue'), 'Talu') self.assertEqual(unicode_data.script_code('Klingon'), 'Piqd') def test_human_readable_script_name(self): """Tests the human_readable_script_name method.""" self.assertEqual(unicode_data.human_readable_script_name('Grek'), 'Greek') self.assertEqual(unicode_data.human_readable_script_name('Talu'), 'New Tai Lue') self.assertEqual(unicode_data.human_readable_script_name('Nkoo'), 'N\'Ko') self.assertEqual(unicode_data.human_readable_script_name('Zsye'), 'Emoji') self.assertEqual(unicode_data.human_readable_script_name('Zsym'), 'Symbols') self.assertEqual(unicode_data.human_readable_script_name('Zzzz'), 'Unknown') def test_all_scripts(self): """Tests the all_scripts() method.""" self.assertIn('Latn', unicode_data.all_scripts()) self.assertNotIn('Japn', unicode_data.all_scripts()) def test_parse_code_ranges(self): """Tests the _parse_code_ranges method.""" source = ( '0000..001F ; Common # Cc [32] ..\n' '0020 ; Common # Zs SPACE\n') self.assertEqual( [(0, 31, 'Common'), (32, 32, 'Common')], unicode_data._parse_code_ranges(source)) if __name__ == '__main__': unittest.main() nototools-2017-09-25-tooling-for-phase3-update/third_party/000077500000000000000000000000001316231664500234155ustar00rootroot00000000000000nototools-2017-09-25-tooling-for-phase3-update/third_party/ucd/000077500000000000000000000000001316231664500241705ustar00rootroot00000000000000nototools-2017-09-25-tooling-for-phase3-update/third_party/ucd/BidiMirroring.txt000066400000000000000000000603001316231664500274700ustar00rootroot00000000000000# BidiMirroring-9.0.0.txt # Date: 2016-01-21, 22:00:00 GMT [KW, LI] # © 2016 Unicode®, Inc. # For terms of use, see http://www.unicode.org/terms_of_use.html # # Unicode Character Database # For documentation, see http://www.unicode.org/reports/tr44/ # # Bidi_Mirroring_Glyph Property # # This file is an informative contributory data file in the # Unicode Character Database. # # This data file lists characters that have the Bidi_Mirrored=Yes property # value, for which there is another Unicode character that typically has a glyph # that is the mirror image of the original character's glyph. # # The repertoire covered by the file is Unicode 9.0.0. # # The file contains a list of lines with mappings from one code point # to another one for character-based mirroring. # Note that for "real" mirroring, a rendering engine needs to select # appropriate alternative glyphs, and that many Unicode characters do not # have a mirror-image Unicode character. # # Each mapping line contains two fields, separated by a semicolon (';'). # Each of the two fields contains a code point represented as a # variable-length hexadecimal value with 4 to 6 digits. # A comment indicates where the characters are "BEST FIT" mirroring. # # Code points for which Bidi_Mirrored=Yes, but for which no appropriate # characters exist with mirrored glyphs, are # listed as comments at the end of the file. # # Formally, the default value of the Bidi_Mirroring_Glyph property # for each code point is , unless a mapping to # some other character is specified in this data file. When a code # point has the default value for the Bidi_Mirroring_Glyph property, # that means that no other character exists whose glyph is suitable # for character-based mirroring. # # For information on bidi mirroring, see UAX #9: Unicode Bidirectional Algorithm, # at http://www.unicode.org/unicode/reports/tr9/ # # This file was originally created by Markus Scherer. # Extended for Unicode 3.2, 4.0, 4.1, 5.0, 5.1, 5.2, and 6.0 by Ken Whistler, # and for subsequent versions by Ken Whistler and Laurentiu Iancu. # # ############################################################ # # Property: Bidi_Mirroring_Glyph # # @missing: 0000..10FFFF; 0028; 0029 # LEFT PARENTHESIS 0029; 0028 # RIGHT PARENTHESIS 003C; 003E # LESS-THAN SIGN 003E; 003C # GREATER-THAN SIGN 005B; 005D # LEFT SQUARE BRACKET 005D; 005B # RIGHT SQUARE BRACKET 007B; 007D # LEFT CURLY BRACKET 007D; 007B # RIGHT CURLY BRACKET 00AB; 00BB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 00BB; 00AB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 0F3A; 0F3B # TIBETAN MARK GUG RTAGS GYON 0F3B; 0F3A # TIBETAN MARK GUG RTAGS GYAS 0F3C; 0F3D # TIBETAN MARK ANG KHANG GYON 0F3D; 0F3C # TIBETAN MARK ANG KHANG GYAS 169B; 169C # OGHAM FEATHER MARK 169C; 169B # OGHAM REVERSED FEATHER MARK 2039; 203A # SINGLE LEFT-POINTING ANGLE QUOTATION MARK 203A; 2039 # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK 2045; 2046 # LEFT SQUARE BRACKET WITH QUILL 2046; 2045 # RIGHT SQUARE BRACKET WITH QUILL 207D; 207E # SUPERSCRIPT LEFT PARENTHESIS 207E; 207D # SUPERSCRIPT RIGHT PARENTHESIS 208D; 208E # SUBSCRIPT LEFT PARENTHESIS 208E; 208D # SUBSCRIPT RIGHT PARENTHESIS 2208; 220B # ELEMENT OF 2209; 220C # NOT AN ELEMENT OF 220A; 220D # SMALL ELEMENT OF 220B; 2208 # CONTAINS AS MEMBER 220C; 2209 # DOES NOT CONTAIN AS MEMBER 220D; 220A # SMALL CONTAINS AS MEMBER 2215; 29F5 # DIVISION SLASH 223C; 223D # TILDE OPERATOR 223D; 223C # REVERSED TILDE 2243; 22CD # ASYMPTOTICALLY EQUAL TO 2252; 2253 # APPROXIMATELY EQUAL TO OR THE IMAGE OF 2253; 2252 # IMAGE OF OR APPROXIMATELY EQUAL TO 2254; 2255 # COLON EQUALS 2255; 2254 # EQUALS COLON 2264; 2265 # LESS-THAN OR EQUAL TO 2265; 2264 # GREATER-THAN OR EQUAL TO 2266; 2267 # LESS-THAN OVER EQUAL TO 2267; 2266 # GREATER-THAN OVER EQUAL TO 2268; 2269 # [BEST FIT] LESS-THAN BUT NOT EQUAL TO 2269; 2268 # [BEST FIT] GREATER-THAN BUT NOT EQUAL TO 226A; 226B # MUCH LESS-THAN 226B; 226A # MUCH GREATER-THAN 226E; 226F # [BEST FIT] NOT LESS-THAN 226F; 226E # [BEST FIT] NOT GREATER-THAN 2270; 2271 # [BEST FIT] NEITHER LESS-THAN NOR EQUAL TO 2271; 2270 # [BEST FIT] NEITHER GREATER-THAN NOR EQUAL TO 2272; 2273 # [BEST FIT] LESS-THAN OR EQUIVALENT TO 2273; 2272 # [BEST FIT] GREATER-THAN OR EQUIVALENT TO 2274; 2275 # [BEST FIT] NEITHER LESS-THAN NOR EQUIVALENT TO 2275; 2274 # [BEST FIT] NEITHER GREATER-THAN NOR EQUIVALENT TO 2276; 2277 # LESS-THAN OR GREATER-THAN 2277; 2276 # GREATER-THAN OR LESS-THAN 2278; 2279 # [BEST FIT] NEITHER LESS-THAN NOR GREATER-THAN 2279; 2278 # [BEST FIT] NEITHER GREATER-THAN NOR LESS-THAN 227A; 227B # PRECEDES 227B; 227A # SUCCEEDS 227C; 227D # PRECEDES OR EQUAL TO 227D; 227C # SUCCEEDS OR EQUAL TO 227E; 227F # [BEST FIT] PRECEDES OR EQUIVALENT TO 227F; 227E # [BEST FIT] SUCCEEDS OR EQUIVALENT TO 2280; 2281 # [BEST FIT] DOES NOT PRECEDE 2281; 2280 # [BEST FIT] DOES NOT SUCCEED 2282; 2283 # SUBSET OF 2283; 2282 # SUPERSET OF 2284; 2285 # [BEST FIT] NOT A SUBSET OF 2285; 2284 # [BEST FIT] NOT A SUPERSET OF 2286; 2287 # SUBSET OF OR EQUAL TO 2287; 2286 # SUPERSET OF OR EQUAL TO 2288; 2289 # [BEST FIT] NEITHER A SUBSET OF NOR EQUAL TO 2289; 2288 # [BEST FIT] NEITHER A SUPERSET OF NOR EQUAL TO 228A; 228B # [BEST FIT] SUBSET OF WITH NOT EQUAL TO 228B; 228A # [BEST FIT] SUPERSET OF WITH NOT EQUAL TO 228F; 2290 # SQUARE IMAGE OF 2290; 228F # SQUARE ORIGINAL OF 2291; 2292 # SQUARE IMAGE OF OR EQUAL TO 2292; 2291 # SQUARE ORIGINAL OF OR EQUAL TO 2298; 29B8 # CIRCLED DIVISION SLASH 22A2; 22A3 # RIGHT TACK 22A3; 22A2 # LEFT TACK 22A6; 2ADE # ASSERTION 22A8; 2AE4 # TRUE 22A9; 2AE3 # FORCES 22AB; 2AE5 # DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE 22B0; 22B1 # PRECEDES UNDER RELATION 22B1; 22B0 # SUCCEEDS UNDER RELATION 22B2; 22B3 # NORMAL SUBGROUP OF 22B3; 22B2 # CONTAINS AS NORMAL SUBGROUP 22B4; 22B5 # NORMAL SUBGROUP OF OR EQUAL TO 22B5; 22B4 # CONTAINS AS NORMAL SUBGROUP OR EQUAL TO 22B6; 22B7 # ORIGINAL OF 22B7; 22B6 # IMAGE OF 22C9; 22CA # LEFT NORMAL FACTOR SEMIDIRECT PRODUCT 22CA; 22C9 # RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT 22CB; 22CC # LEFT SEMIDIRECT PRODUCT 22CC; 22CB # RIGHT SEMIDIRECT PRODUCT 22CD; 2243 # REVERSED TILDE EQUALS 22D0; 22D1 # DOUBLE SUBSET 22D1; 22D0 # DOUBLE SUPERSET 22D6; 22D7 # LESS-THAN WITH DOT 22D7; 22D6 # GREATER-THAN WITH DOT 22D8; 22D9 # VERY MUCH LESS-THAN 22D9; 22D8 # VERY MUCH GREATER-THAN 22DA; 22DB # LESS-THAN EQUAL TO OR GREATER-THAN 22DB; 22DA # GREATER-THAN EQUAL TO OR LESS-THAN 22DC; 22DD # EQUAL TO OR LESS-THAN 22DD; 22DC # EQUAL TO OR GREATER-THAN 22DE; 22DF # EQUAL TO OR PRECEDES 22DF; 22DE # EQUAL TO OR SUCCEEDS 22E0; 22E1 # [BEST FIT] DOES NOT PRECEDE OR EQUAL 22E1; 22E0 # [BEST FIT] DOES NOT SUCCEED OR EQUAL 22E2; 22E3 # [BEST FIT] NOT SQUARE IMAGE OF OR EQUAL TO 22E3; 22E2 # [BEST FIT] NOT SQUARE ORIGINAL OF OR EQUAL TO 22E4; 22E5 # [BEST FIT] SQUARE IMAGE OF OR NOT EQUAL TO 22E5; 22E4 # [BEST FIT] SQUARE ORIGINAL OF OR NOT EQUAL TO 22E6; 22E7 # [BEST FIT] LESS-THAN BUT NOT EQUIVALENT TO 22E7; 22E6 # [BEST FIT] GREATER-THAN BUT NOT EQUIVALENT TO 22E8; 22E9 # [BEST FIT] PRECEDES BUT NOT EQUIVALENT TO 22E9; 22E8 # [BEST FIT] SUCCEEDS BUT NOT EQUIVALENT TO 22EA; 22EB # [BEST FIT] NOT NORMAL SUBGROUP OF 22EB; 22EA # [BEST FIT] DOES NOT CONTAIN AS NORMAL SUBGROUP 22EC; 22ED # [BEST FIT] NOT NORMAL SUBGROUP OF OR EQUAL TO 22ED; 22EC # [BEST FIT] DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL 22F0; 22F1 # UP RIGHT DIAGONAL ELLIPSIS 22F1; 22F0 # DOWN RIGHT DIAGONAL ELLIPSIS 22F2; 22FA # ELEMENT OF WITH LONG HORIZONTAL STROKE 22F3; 22FB # ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE 22F4; 22FC # SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE 22F6; 22FD # ELEMENT OF WITH OVERBAR 22F7; 22FE # SMALL ELEMENT OF WITH OVERBAR 22FA; 22F2 # CONTAINS WITH LONG HORIZONTAL STROKE 22FB; 22F3 # CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE 22FC; 22F4 # SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE 22FD; 22F6 # CONTAINS WITH OVERBAR 22FE; 22F7 # SMALL CONTAINS WITH OVERBAR 2308; 2309 # LEFT CEILING 2309; 2308 # RIGHT CEILING 230A; 230B # LEFT FLOOR 230B; 230A # RIGHT FLOOR 2329; 232A # LEFT-POINTING ANGLE BRACKET 232A; 2329 # RIGHT-POINTING ANGLE BRACKET 2768; 2769 # MEDIUM LEFT PARENTHESIS ORNAMENT 2769; 2768 # MEDIUM RIGHT PARENTHESIS ORNAMENT 276A; 276B # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT 276B; 276A # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT 276C; 276D # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT 276D; 276C # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT 276E; 276F # HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT 276F; 276E # HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT 2770; 2771 # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT 2771; 2770 # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT 2772; 2773 # LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT 2773; 2772 # LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT 2774; 2775 # MEDIUM LEFT CURLY BRACKET ORNAMENT 2775; 2774 # MEDIUM RIGHT CURLY BRACKET ORNAMENT 27C3; 27C4 # OPEN SUBSET 27C4; 27C3 # OPEN SUPERSET 27C5; 27C6 # LEFT S-SHAPED BAG DELIMITER 27C6; 27C5 # RIGHT S-SHAPED BAG DELIMITER 27C8; 27C9 # REVERSE SOLIDUS PRECEDING SUBSET 27C9; 27C8 # SUPERSET PRECEDING SOLIDUS 27CB; 27CD # MATHEMATICAL RISING DIAGONAL 27CD; 27CB # MATHEMATICAL FALLING DIAGONAL 27D5; 27D6 # LEFT OUTER JOIN 27D6; 27D5 # RIGHT OUTER JOIN 27DD; 27DE # LONG RIGHT TACK 27DE; 27DD # LONG LEFT TACK 27E2; 27E3 # WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK 27E3; 27E2 # WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK 27E4; 27E5 # WHITE SQUARE WITH LEFTWARDS TICK 27E5; 27E4 # WHITE SQUARE WITH RIGHTWARDS TICK 27E6; 27E7 # MATHEMATICAL LEFT WHITE SQUARE BRACKET 27E7; 27E6 # MATHEMATICAL RIGHT WHITE SQUARE BRACKET 27E8; 27E9 # MATHEMATICAL LEFT ANGLE BRACKET 27E9; 27E8 # MATHEMATICAL RIGHT ANGLE BRACKET 27EA; 27EB # MATHEMATICAL LEFT DOUBLE ANGLE BRACKET 27EB; 27EA # MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET 27EC; 27ED # MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET 27ED; 27EC # MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET 27EE; 27EF # MATHEMATICAL LEFT FLATTENED PARENTHESIS 27EF; 27EE # MATHEMATICAL RIGHT FLATTENED PARENTHESIS 2983; 2984 # LEFT WHITE CURLY BRACKET 2984; 2983 # RIGHT WHITE CURLY BRACKET 2985; 2986 # LEFT WHITE PARENTHESIS 2986; 2985 # RIGHT WHITE PARENTHESIS 2987; 2988 # Z NOTATION LEFT IMAGE BRACKET 2988; 2987 # Z NOTATION RIGHT IMAGE BRACKET 2989; 298A # Z NOTATION LEFT BINDING BRACKET 298A; 2989 # Z NOTATION RIGHT BINDING BRACKET 298B; 298C # LEFT SQUARE BRACKET WITH UNDERBAR 298C; 298B # RIGHT SQUARE BRACKET WITH UNDERBAR 298D; 2990 # LEFT SQUARE BRACKET WITH TICK IN TOP CORNER 298E; 298F # RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER 298F; 298E # LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER 2990; 298D # RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER 2991; 2992 # LEFT ANGLE BRACKET WITH DOT 2992; 2991 # RIGHT ANGLE BRACKET WITH DOT 2993; 2994 # LEFT ARC LESS-THAN BRACKET 2994; 2993 # RIGHT ARC GREATER-THAN BRACKET 2995; 2996 # DOUBLE LEFT ARC GREATER-THAN BRACKET 2996; 2995 # DOUBLE RIGHT ARC LESS-THAN BRACKET 2997; 2998 # LEFT BLACK TORTOISE SHELL BRACKET 2998; 2997 # RIGHT BLACK TORTOISE SHELL BRACKET 29B8; 2298 # CIRCLED REVERSE SOLIDUS 29C0; 29C1 # CIRCLED LESS-THAN 29C1; 29C0 # CIRCLED GREATER-THAN 29C4; 29C5 # SQUARED RISING DIAGONAL SLASH 29C5; 29C4 # SQUARED FALLING DIAGONAL SLASH 29CF; 29D0 # LEFT TRIANGLE BESIDE VERTICAL BAR 29D0; 29CF # VERTICAL BAR BESIDE RIGHT TRIANGLE 29D1; 29D2 # BOWTIE WITH LEFT HALF BLACK 29D2; 29D1 # BOWTIE WITH RIGHT HALF BLACK 29D4; 29D5 # TIMES WITH LEFT HALF BLACK 29D5; 29D4 # TIMES WITH RIGHT HALF BLACK 29D8; 29D9 # LEFT WIGGLY FENCE 29D9; 29D8 # RIGHT WIGGLY FENCE 29DA; 29DB # LEFT DOUBLE WIGGLY FENCE 29DB; 29DA # RIGHT DOUBLE WIGGLY FENCE 29F5; 2215 # REVERSE SOLIDUS OPERATOR 29F8; 29F9 # BIG SOLIDUS 29F9; 29F8 # BIG REVERSE SOLIDUS 29FC; 29FD # LEFT-POINTING CURVED ANGLE BRACKET 29FD; 29FC # RIGHT-POINTING CURVED ANGLE BRACKET 2A2B; 2A2C # MINUS SIGN WITH FALLING DOTS 2A2C; 2A2B # MINUS SIGN WITH RISING DOTS 2A2D; 2A2E # PLUS SIGN IN LEFT HALF CIRCLE 2A2E; 2A2D # PLUS SIGN IN RIGHT HALF CIRCLE 2A34; 2A35 # MULTIPLICATION SIGN IN LEFT HALF CIRCLE 2A35; 2A34 # MULTIPLICATION SIGN IN RIGHT HALF CIRCLE 2A3C; 2A3D # INTERIOR PRODUCT 2A3D; 2A3C # RIGHTHAND INTERIOR PRODUCT 2A64; 2A65 # Z NOTATION DOMAIN ANTIRESTRICTION 2A65; 2A64 # Z NOTATION RANGE ANTIRESTRICTION 2A79; 2A7A # LESS-THAN WITH CIRCLE INSIDE 2A7A; 2A79 # GREATER-THAN WITH CIRCLE INSIDE 2A7D; 2A7E # LESS-THAN OR SLANTED EQUAL TO 2A7E; 2A7D # GREATER-THAN OR SLANTED EQUAL TO 2A7F; 2A80 # LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE 2A80; 2A7F # GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE 2A81; 2A82 # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE 2A82; 2A81 # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE 2A83; 2A84 # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT 2A84; 2A83 # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT 2A8B; 2A8C # LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN 2A8C; 2A8B # GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN 2A91; 2A92 # LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL 2A92; 2A91 # GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL 2A93; 2A94 # LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL 2A94; 2A93 # GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL 2A95; 2A96 # SLANTED EQUAL TO OR LESS-THAN 2A96; 2A95 # SLANTED EQUAL TO OR GREATER-THAN 2A97; 2A98 # SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE 2A98; 2A97 # SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE 2A99; 2A9A # DOUBLE-LINE EQUAL TO OR LESS-THAN 2A9A; 2A99 # DOUBLE-LINE EQUAL TO OR GREATER-THAN 2A9B; 2A9C # DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN 2A9C; 2A9B # DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN 2AA1; 2AA2 # DOUBLE NESTED LESS-THAN 2AA2; 2AA1 # DOUBLE NESTED GREATER-THAN 2AA6; 2AA7 # LESS-THAN CLOSED BY CURVE 2AA7; 2AA6 # GREATER-THAN CLOSED BY CURVE 2AA8; 2AA9 # LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL 2AA9; 2AA8 # GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL 2AAA; 2AAB # SMALLER THAN 2AAB; 2AAA # LARGER THAN 2AAC; 2AAD # SMALLER THAN OR EQUAL TO 2AAD; 2AAC # LARGER THAN OR EQUAL TO 2AAF; 2AB0 # PRECEDES ABOVE SINGLE-LINE EQUALS SIGN 2AB0; 2AAF # SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN 2AB3; 2AB4 # PRECEDES ABOVE EQUALS SIGN 2AB4; 2AB3 # SUCCEEDS ABOVE EQUALS SIGN 2ABB; 2ABC # DOUBLE PRECEDES 2ABC; 2ABB # DOUBLE SUCCEEDS 2ABD; 2ABE # SUBSET WITH DOT 2ABE; 2ABD # SUPERSET WITH DOT 2ABF; 2AC0 # SUBSET WITH PLUS SIGN BELOW 2AC0; 2ABF # SUPERSET WITH PLUS SIGN BELOW 2AC1; 2AC2 # SUBSET WITH MULTIPLICATION SIGN BELOW 2AC2; 2AC1 # SUPERSET WITH MULTIPLICATION SIGN BELOW 2AC3; 2AC4 # SUBSET OF OR EQUAL TO WITH DOT ABOVE 2AC4; 2AC3 # SUPERSET OF OR EQUAL TO WITH DOT ABOVE 2AC5; 2AC6 # SUBSET OF ABOVE EQUALS SIGN 2AC6; 2AC5 # SUPERSET OF ABOVE EQUALS SIGN 2ACD; 2ACE # SQUARE LEFT OPEN BOX OPERATOR 2ACE; 2ACD # SQUARE RIGHT OPEN BOX OPERATOR 2ACF; 2AD0 # CLOSED SUBSET 2AD0; 2ACF # CLOSED SUPERSET 2AD1; 2AD2 # CLOSED SUBSET OR EQUAL TO 2AD2; 2AD1 # CLOSED SUPERSET OR EQUAL TO 2AD3; 2AD4 # SUBSET ABOVE SUPERSET 2AD4; 2AD3 # SUPERSET ABOVE SUBSET 2AD5; 2AD6 # SUBSET ABOVE SUBSET 2AD6; 2AD5 # SUPERSET ABOVE SUPERSET 2ADE; 22A6 # SHORT LEFT TACK 2AE3; 22A9 # DOUBLE VERTICAL BAR LEFT TURNSTILE 2AE4; 22A8 # VERTICAL BAR DOUBLE LEFT TURNSTILE 2AE5; 22AB # DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE 2AEC; 2AED # DOUBLE STROKE NOT SIGN 2AED; 2AEC # REVERSED DOUBLE STROKE NOT SIGN 2AF7; 2AF8 # TRIPLE NESTED LESS-THAN 2AF8; 2AF7 # TRIPLE NESTED GREATER-THAN 2AF9; 2AFA # DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO 2AFA; 2AF9 # DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO 2E02; 2E03 # LEFT SUBSTITUTION BRACKET 2E03; 2E02 # RIGHT SUBSTITUTION BRACKET 2E04; 2E05 # LEFT DOTTED SUBSTITUTION BRACKET 2E05; 2E04 # RIGHT DOTTED SUBSTITUTION BRACKET 2E09; 2E0A # LEFT TRANSPOSITION BRACKET 2E0A; 2E09 # RIGHT TRANSPOSITION BRACKET 2E0C; 2E0D # LEFT RAISED OMISSION BRACKET 2E0D; 2E0C # RIGHT RAISED OMISSION BRACKET 2E1C; 2E1D # LEFT LOW PARAPHRASE BRACKET 2E1D; 2E1C # RIGHT LOW PARAPHRASE BRACKET 2E20; 2E21 # LEFT VERTICAL BAR WITH QUILL 2E21; 2E20 # RIGHT VERTICAL BAR WITH QUILL 2E22; 2E23 # TOP LEFT HALF BRACKET 2E23; 2E22 # TOP RIGHT HALF BRACKET 2E24; 2E25 # BOTTOM LEFT HALF BRACKET 2E25; 2E24 # BOTTOM RIGHT HALF BRACKET 2E26; 2E27 # LEFT SIDEWAYS U BRACKET 2E27; 2E26 # RIGHT SIDEWAYS U BRACKET 2E28; 2E29 # LEFT DOUBLE PARENTHESIS 2E29; 2E28 # RIGHT DOUBLE PARENTHESIS 3008; 3009 # LEFT ANGLE BRACKET 3009; 3008 # RIGHT ANGLE BRACKET 300A; 300B # LEFT DOUBLE ANGLE BRACKET 300B; 300A # RIGHT DOUBLE ANGLE BRACKET 300C; 300D # [BEST FIT] LEFT CORNER BRACKET 300D; 300C # [BEST FIT] RIGHT CORNER BRACKET 300E; 300F # [BEST FIT] LEFT WHITE CORNER BRACKET 300F; 300E # [BEST FIT] RIGHT WHITE CORNER BRACKET 3010; 3011 # LEFT BLACK LENTICULAR BRACKET 3011; 3010 # RIGHT BLACK LENTICULAR BRACKET 3014; 3015 # LEFT TORTOISE SHELL BRACKET 3015; 3014 # RIGHT TORTOISE SHELL BRACKET 3016; 3017 # LEFT WHITE LENTICULAR BRACKET 3017; 3016 # RIGHT WHITE LENTICULAR BRACKET 3018; 3019 # LEFT WHITE TORTOISE SHELL BRACKET 3019; 3018 # RIGHT WHITE TORTOISE SHELL BRACKET 301A; 301B # LEFT WHITE SQUARE BRACKET 301B; 301A # RIGHT WHITE SQUARE BRACKET FE59; FE5A # SMALL LEFT PARENTHESIS FE5A; FE59 # SMALL RIGHT PARENTHESIS FE5B; FE5C # SMALL LEFT CURLY BRACKET FE5C; FE5B # SMALL RIGHT CURLY BRACKET FE5D; FE5E # SMALL LEFT TORTOISE SHELL BRACKET FE5E; FE5D # SMALL RIGHT TORTOISE SHELL BRACKET FE64; FE65 # SMALL LESS-THAN SIGN FE65; FE64 # SMALL GREATER-THAN SIGN FF08; FF09 # FULLWIDTH LEFT PARENTHESIS FF09; FF08 # FULLWIDTH RIGHT PARENTHESIS FF1C; FF1E # FULLWIDTH LESS-THAN SIGN FF1E; FF1C # FULLWIDTH GREATER-THAN SIGN FF3B; FF3D # FULLWIDTH LEFT SQUARE BRACKET FF3D; FF3B # FULLWIDTH RIGHT SQUARE BRACKET FF5B; FF5D # FULLWIDTH LEFT CURLY BRACKET FF5D; FF5B # FULLWIDTH RIGHT CURLY BRACKET FF5F; FF60 # FULLWIDTH LEFT WHITE PARENTHESIS FF60; FF5F # FULLWIDTH RIGHT WHITE PARENTHESIS FF62; FF63 # [BEST FIT] HALFWIDTH LEFT CORNER BRACKET FF63; FF62 # [BEST FIT] HALFWIDTH RIGHT CORNER BRACKET # The following characters have no appropriate mirroring character. # For these characters it is up to the rendering system # to provide mirrored glyphs. # 2140; DOUBLE-STRUCK N-ARY SUMMATION # 2201; COMPLEMENT # 2202; PARTIAL DIFFERENTIAL # 2203; THERE EXISTS # 2204; THERE DOES NOT EXIST # 2211; N-ARY SUMMATION # 2216; SET MINUS # 221A; SQUARE ROOT # 221B; CUBE ROOT # 221C; FOURTH ROOT # 221D; PROPORTIONAL TO # 221F; RIGHT ANGLE # 2220; ANGLE # 2221; MEASURED ANGLE # 2222; SPHERICAL ANGLE # 2224; DOES NOT DIVIDE # 2226; NOT PARALLEL TO # 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 # 2239; EXCESS # 223B; HOMOTHETIC # 223E; INVERTED LAZY S # 223F; SINE WAVE # 2240; WREATH PRODUCT # 2241; NOT TILDE # 2242; MINUS TILDE # 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 # 225F; QUESTIONED EQUAL TO # 2260; NOT EQUAL TO # 2262; NOT IDENTICAL TO # 228C; MULTISET # 22A7; MODELS # 22AA; TRIPLE VERTICAL BAR RIGHT TURNSTILE # 22AC; DOES NOT PROVE # 22AD; NOT TRUE # 22AE; DOES NOT FORCE # 22AF; NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE # 22B8; MULTIMAP # 22BE; RIGHT ANGLE WITH ARC # 22BF; RIGHT TRIANGLE # 22F5; ELEMENT OF WITH DOT ABOVE # 22F8; ELEMENT OF WITH UNDERBAR # 22F9; ELEMENT OF WITH TWO HORIZONTAL STROKES # 22FF; Z NOTATION BAG MEMBERSHIP # 2320; TOP HALF INTEGRAL # 2321; BOTTOM HALF INTEGRAL # 27C0; THREE DIMENSIONAL ANGLE # 27CC; LONG DIVISION # 27D3; LOWER RIGHT CORNER WITH DOT # 27D4; UPPER LEFT CORNER WITH DOT # 27DC; LEFT MULTIMAP # 299B; MEASURED ANGLE OPENING LEFT # 299C; RIGHT ANGLE VARIANT WITH SQUARE # 299D; MEASURED RIGHT ANGLE WITH DOT # 299E; ANGLE WITH S INSIDE # 299F; ACUTE ANGLE # 29A0; SPHERICAL ANGLE OPENING LEFT # 29A1; SPHERICAL ANGLE OPENING UP # 29A2; TURNED ANGLE # 29A3; REVERSED ANGLE # 29A4; ANGLE WITH UNDERBAR # 29A5; REVERSED ANGLE WITH UNDERBAR # 29A6; OBLIQUE ANGLE OPENING UP # 29A7; OBLIQUE ANGLE OPENING DOWN # 29A8; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT # 29A9; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT # 29AA; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT # 29AB; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT # 29AC; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP # 29AD; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP # 29AE; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN # 29AF; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN # 29C2; CIRCLE WITH SMALL CIRCLE TO THE RIGHT # 29C3; CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT # 29C9; TWO JOINED SQUARES # 29CE; RIGHT TRIANGLE ABOVE LEFT TRIANGLE # 29DC; INCOMPLETE INFINITY # 29E1; INCREASES AS # 29E3; EQUALS SIGN AND SLANTED PARALLEL # 29E4; EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE # 29E5; IDENTICAL TO AND SLANTED PARALLEL # 29E8; DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK # 29E9; DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK # 29F4; RULE-DELAYED # 29F6; SOLIDUS WITH OVERBAR # 29F7; REVERSE SOLIDUS WITH HORIZONTAL STROKE # 2A0A; MODULO TWO SUM # 2A0B; SUMMATION WITH INTEGRAL # 2A0C; QUADRUPLE INTEGRAL OPERATOR # 2A0D; FINITE PART INTEGRAL # 2A0E; INTEGRAL WITH DOUBLE STROKE # 2A0F; INTEGRAL AVERAGE WITH SLASH # 2A10; CIRCULATION FUNCTION # 2A11; ANTICLOCKWISE INTEGRATION # 2A12; LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE # 2A13; LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE # 2A14; LINE INTEGRATION NOT INCLUDING THE POLE # 2A15; INTEGRAL AROUND A POINT OPERATOR # 2A16; QUATERNION INTEGRAL OPERATOR # 2A17; INTEGRAL WITH LEFTWARDS ARROW WITH HOOK # 2A18; INTEGRAL WITH TIMES SIGN # 2A19; INTEGRAL WITH INTERSECTION # 2A1A; INTEGRAL WITH UNION # 2A1B; INTEGRAL WITH OVERBAR # 2A1C; INTEGRAL WITH UNDERBAR # 2A1E; LARGE LEFT TRIANGLE OPERATOR # 2A1F; Z NOTATION SCHEMA COMPOSITION # 2A20; Z NOTATION SCHEMA PIPING # 2A21; Z NOTATION SCHEMA PROJECTION # 2A24; PLUS SIGN WITH TILDE ABOVE # 2A26; PLUS SIGN WITH TILDE BELOW # 2A29; MINUS SIGN WITH COMMA ABOVE # 2A3E; Z NOTATION RELATIONAL COMPOSITION # 2A57; SLOPING LARGE OR # 2A58; SLOPING LARGE AND # 2A6A; TILDE OPERATOR WITH DOT ABOVE # 2A6B; TILDE OPERATOR WITH RISING DOTS # 2A6C; SIMILAR MINUS SIMILAR # 2A6D; CONGRUENT WITH DOT ABOVE # 2A6F; ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT # 2A70; APPROXIMATELY EQUAL OR EQUAL TO # 2A73; EQUALS SIGN ABOVE TILDE OPERATOR # 2A74; DOUBLE COLON EQUAL # 2A7B; LESS-THAN WITH QUESTION MARK ABOVE # 2A7C; GREATER-THAN WITH QUESTION MARK ABOVE # 2A85; LESS-THAN OR APPROXIMATE # 2A86; GREATER-THAN OR APPROXIMATE # 2A87; LESS-THAN AND SINGLE-LINE NOT EQUAL TO # 2A88; GREATER-THAN AND SINGLE-LINE NOT EQUAL TO # 2A89; LESS-THAN AND NOT APPROXIMATE # 2A8A; GREATER-THAN AND NOT APPROXIMATE # 2A8D; LESS-THAN ABOVE SIMILAR OR EQUAL # 2A8E; GREATER-THAN ABOVE SIMILAR OR EQUAL # 2A8F; LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN # 2A90; GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN # 2A9D; SIMILAR OR LESS-THAN # 2A9E; SIMILAR OR GREATER-THAN # 2A9F; SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN # 2AA0; SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN # 2AA3; DOUBLE NESTED LESS-THAN WITH UNDERBAR # 2AB1; PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO # 2AB2; SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO # 2AB5; PRECEDES ABOVE NOT EQUAL TO # 2AB6; SUCCEEDS ABOVE NOT EQUAL TO # 2AB7; PRECEDES ABOVE ALMOST EQUAL TO # 2AB8; SUCCEEDS ABOVE ALMOST EQUAL TO # 2AB9; PRECEDES ABOVE NOT ALMOST EQUAL TO # 2ABA; SUCCEEDS ABOVE NOT ALMOST EQUAL TO # 2AC7; SUBSET OF ABOVE TILDE OPERATOR # 2AC8; SUPERSET OF ABOVE TILDE OPERATOR # 2AC9; SUBSET OF ABOVE ALMOST EQUAL TO # 2ACA; SUPERSET OF ABOVE ALMOST EQUAL TO # 2ACB; SUBSET OF ABOVE NOT EQUAL TO # 2ACC; SUPERSET OF ABOVE NOT EQUAL TO # 2ADC; FORKING # 2AE2; VERTICAL BAR TRIPLE RIGHT TURNSTILE # 2AE6; LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL # 2AEE; DOES NOT DIVIDE WITH REVERSED NEGATION SLASH # 2AF3; PARALLEL WITH TILDE OPERATOR # 2AFB; TRIPLE SOLIDUS BINARY RELATION # 2AFD; DOUBLE SOLIDUS OPERATOR # 1D6DB; MATHEMATICAL BOLD PARTIAL DIFFERENTIAL # 1D715; MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL # 1D74F; MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL # 1D789; MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL # 1D7C3; MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL # EOF nototools-2017-09-25-tooling-for-phase3-update/third_party/ucd/Blocks.txt000066400000000000000000000220731316231664500261520ustar00rootroot00000000000000# Blocks-9.0.0.txt # Date: 2016-02-05, 23:48:00 GMT [KW] # © 2016 Unicode®, Inc. # For terms of use, see http://www.unicode.org/terms_of_use.html # # Unicode Character Database # For documentation, see http://www.unicode.org/reports/tr44/ # # Format: # Start Code..End Code; Block Name # ================================================ # Note: When comparing block names, casing, whitespace, hyphens, # and underbars are ignored. # For example, "Latin Extended-A" and "latin extended a" are equivalent. # For more information on the comparison of property values, # see UAX #44: http://www.unicode.org/reports/tr44/ # # All block ranges start with a value where (cp MOD 16) = 0, # and end with a value where (cp MOD 16) = 15. In other words, # the last hexadecimal digit of the start of range is ...0 # and the last hexadecimal digit of the end of range is ...F. # This constraint on block ranges guarantees that allocations # are done in terms of whole columns, and that code chart display # never involves splitting columns in the charts. # # All code points not explicitly listed for Block # have the value No_Block. # Property: Block # # @missing: 0000..10FFFF; No_Block 0000..007F; Basic Latin 0080..00FF; Latin-1 Supplement 0100..017F; Latin Extended-A 0180..024F; Latin Extended-B 0250..02AF; IPA Extensions 02B0..02FF; Spacing Modifier Letters 0300..036F; Combining Diacritical Marks 0370..03FF; Greek and Coptic 0400..04FF; Cyrillic 0500..052F; Cyrillic Supplement 0530..058F; Armenian 0590..05FF; Hebrew 0600..06FF; Arabic 0700..074F; Syriac 0750..077F; Arabic Supplement 0780..07BF; Thaana 07C0..07FF; NKo 0800..083F; Samaritan 0840..085F; Mandaic 08A0..08FF; Arabic Extended-A 0900..097F; Devanagari 0980..09FF; Bengali 0A00..0A7F; Gurmukhi 0A80..0AFF; Gujarati 0B00..0B7F; Oriya 0B80..0BFF; Tamil 0C00..0C7F; Telugu 0C80..0CFF; Kannada 0D00..0D7F; Malayalam 0D80..0DFF; Sinhala 0E00..0E7F; Thai 0E80..0EFF; Lao 0F00..0FFF; Tibetan 1000..109F; Myanmar 10A0..10FF; Georgian 1100..11FF; Hangul Jamo 1200..137F; Ethiopic 1380..139F; Ethiopic Supplement 13A0..13FF; Cherokee 1400..167F; Unified Canadian Aboriginal Syllabics 1680..169F; Ogham 16A0..16FF; Runic 1700..171F; Tagalog 1720..173F; Hanunoo 1740..175F; Buhid 1760..177F; Tagbanwa 1780..17FF; Khmer 1800..18AF; Mongolian 18B0..18FF; Unified Canadian Aboriginal Syllabics Extended 1900..194F; Limbu 1950..197F; Tai Le 1980..19DF; New Tai Lue 19E0..19FF; Khmer Symbols 1A00..1A1F; Buginese 1A20..1AAF; Tai Tham 1AB0..1AFF; Combining Diacritical Marks Extended 1B00..1B7F; Balinese 1B80..1BBF; Sundanese 1BC0..1BFF; Batak 1C00..1C4F; Lepcha 1C50..1C7F; Ol Chiki 1C80..1C8F; Cyrillic Extended-C 1CC0..1CCF; Sundanese Supplement 1CD0..1CFF; Vedic Extensions 1D00..1D7F; Phonetic Extensions 1D80..1DBF; Phonetic Extensions Supplement 1DC0..1DFF; Combining Diacritical Marks Supplement 1E00..1EFF; Latin Extended Additional 1F00..1FFF; Greek Extended 2000..206F; General Punctuation 2070..209F; Superscripts and Subscripts 20A0..20CF; Currency Symbols 20D0..20FF; Combining Diacritical Marks for Symbols 2100..214F; Letterlike Symbols 2150..218F; Number Forms 2190..21FF; Arrows 2200..22FF; Mathematical Operators 2300..23FF; Miscellaneous Technical 2400..243F; Control Pictures 2440..245F; Optical Character Recognition 2460..24FF; Enclosed Alphanumerics 2500..257F; Box Drawing 2580..259F; Block Elements 25A0..25FF; Geometric Shapes 2600..26FF; Miscellaneous Symbols 2700..27BF; Dingbats 27C0..27EF; Miscellaneous Mathematical Symbols-A 27F0..27FF; Supplemental Arrows-A 2800..28FF; Braille Patterns 2900..297F; Supplemental Arrows-B 2980..29FF; Miscellaneous Mathematical Symbols-B 2A00..2AFF; Supplemental Mathematical Operators 2B00..2BFF; Miscellaneous Symbols and Arrows 2C00..2C5F; Glagolitic 2C60..2C7F; Latin Extended-C 2C80..2CFF; Coptic 2D00..2D2F; Georgian Supplement 2D30..2D7F; Tifinagh 2D80..2DDF; Ethiopic Extended 2DE0..2DFF; Cyrillic Extended-A 2E00..2E7F; Supplemental Punctuation 2E80..2EFF; CJK Radicals Supplement 2F00..2FDF; Kangxi Radicals 2FF0..2FFF; Ideographic Description Characters 3000..303F; CJK Symbols and Punctuation 3040..309F; Hiragana 30A0..30FF; Katakana 3100..312F; Bopomofo 3130..318F; Hangul Compatibility Jamo 3190..319F; Kanbun 31A0..31BF; Bopomofo Extended 31C0..31EF; CJK Strokes 31F0..31FF; Katakana Phonetic Extensions 3200..32FF; Enclosed CJK Letters and Months 3300..33FF; CJK Compatibility 3400..4DBF; CJK Unified Ideographs Extension A 4DC0..4DFF; Yijing Hexagram Symbols 4E00..9FFF; CJK Unified Ideographs A000..A48F; Yi Syllables A490..A4CF; Yi Radicals A4D0..A4FF; Lisu A500..A63F; Vai A640..A69F; Cyrillic Extended-B A6A0..A6FF; Bamum A700..A71F; Modifier Tone Letters A720..A7FF; Latin Extended-D A800..A82F; Syloti Nagri A830..A83F; Common Indic Number Forms A840..A87F; Phags-pa A880..A8DF; Saurashtra A8E0..A8FF; Devanagari Extended A900..A92F; Kayah Li A930..A95F; Rejang A960..A97F; Hangul Jamo Extended-A A980..A9DF; Javanese A9E0..A9FF; Myanmar Extended-B AA00..AA5F; Cham AA60..AA7F; Myanmar Extended-A AA80..AADF; Tai Viet AAE0..AAFF; Meetei Mayek Extensions AB00..AB2F; Ethiopic Extended-A AB30..AB6F; Latin Extended-E AB70..ABBF; Cherokee Supplement ABC0..ABFF; Meetei Mayek AC00..D7AF; Hangul Syllables D7B0..D7FF; Hangul Jamo Extended-B D800..DB7F; High Surrogates DB80..DBFF; High Private Use Surrogates DC00..DFFF; Low Surrogates E000..F8FF; Private Use Area F900..FAFF; CJK Compatibility Ideographs FB00..FB4F; Alphabetic Presentation Forms FB50..FDFF; Arabic Presentation Forms-A FE00..FE0F; Variation Selectors FE10..FE1F; Vertical Forms FE20..FE2F; Combining Half Marks FE30..FE4F; CJK Compatibility Forms FE50..FE6F; Small Form Variants FE70..FEFF; Arabic Presentation Forms-B FF00..FFEF; Halfwidth and Fullwidth Forms FFF0..FFFF; Specials 10000..1007F; Linear B Syllabary 10080..100FF; Linear B Ideograms 10100..1013F; Aegean Numbers 10140..1018F; Ancient Greek Numbers 10190..101CF; Ancient Symbols 101D0..101FF; Phaistos Disc 10280..1029F; Lycian 102A0..102DF; Carian 102E0..102FF; Coptic Epact Numbers 10300..1032F; Old Italic 10330..1034F; Gothic 10350..1037F; Old Permic 10380..1039F; Ugaritic 103A0..103DF; Old Persian 10400..1044F; Deseret 10450..1047F; Shavian 10480..104AF; Osmanya 104B0..104FF; Osage 10500..1052F; Elbasan 10530..1056F; Caucasian Albanian 10600..1077F; Linear A 10800..1083F; Cypriot Syllabary 10840..1085F; Imperial Aramaic 10860..1087F; Palmyrene 10880..108AF; Nabataean 108E0..108FF; Hatran 10900..1091F; Phoenician 10920..1093F; Lydian 10980..1099F; Meroitic Hieroglyphs 109A0..109FF; Meroitic Cursive 10A00..10A5F; Kharoshthi 10A60..10A7F; Old South Arabian 10A80..10A9F; Old North Arabian 10AC0..10AFF; Manichaean 10B00..10B3F; Avestan 10B40..10B5F; Inscriptional Parthian 10B60..10B7F; Inscriptional Pahlavi 10B80..10BAF; Psalter Pahlavi 10C00..10C4F; Old Turkic 10C80..10CFF; Old Hungarian 10E60..10E7F; Rumi Numeral Symbols 11000..1107F; Brahmi 11080..110CF; Kaithi 110D0..110FF; Sora Sompeng 11100..1114F; Chakma 11150..1117F; Mahajani 11180..111DF; Sharada 111E0..111FF; Sinhala Archaic Numbers 11200..1124F; Khojki 11280..112AF; Multani 112B0..112FF; Khudawadi 11300..1137F; Grantha 11400..1147F; Newa 11480..114DF; Tirhuta 11580..115FF; Siddham 11600..1165F; Modi 11660..1167F; Mongolian Supplement 11680..116CF; Takri 11700..1173F; Ahom 118A0..118FF; Warang Citi 11AC0..11AFF; Pau Cin Hau 11C00..11C6F; Bhaiksuki 11C70..11CBF; Marchen 12000..123FF; Cuneiform 12400..1247F; Cuneiform Numbers and Punctuation 12480..1254F; Early Dynastic Cuneiform 13000..1342F; Egyptian Hieroglyphs 14400..1467F; Anatolian Hieroglyphs 16800..16A3F; Bamum Supplement 16A40..16A6F; Mro 16AD0..16AFF; Bassa Vah 16B00..16B8F; Pahawh Hmong 16F00..16F9F; Miao 16FE0..16FFF; Ideographic Symbols and Punctuation 17000..187FF; Tangut 18800..18AFF; Tangut Components 1B000..1B0FF; Kana Supplement 1BC00..1BC9F; Duployan 1BCA0..1BCAF; Shorthand Format Controls 1D000..1D0FF; Byzantine Musical Symbols 1D100..1D1FF; Musical Symbols 1D200..1D24F; Ancient Greek Musical Notation 1D300..1D35F; Tai Xuan Jing Symbols 1D360..1D37F; Counting Rod Numerals 1D400..1D7FF; Mathematical Alphanumeric Symbols 1D800..1DAAF; Sutton SignWriting 1E000..1E02F; Glagolitic Supplement 1E800..1E8DF; Mende Kikakui 1E900..1E95F; Adlam 1EE00..1EEFF; Arabic Mathematical Alphabetic Symbols 1F000..1F02F; Mahjong Tiles 1F030..1F09F; Domino Tiles 1F0A0..1F0FF; Playing Cards 1F100..1F1FF; Enclosed Alphanumeric Supplement 1F200..1F2FF; Enclosed Ideographic Supplement 1F300..1F5FF; Miscellaneous Symbols and Pictographs 1F600..1F64F; Emoticons 1F650..1F67F; Ornamental Dingbats 1F680..1F6FF; Transport and Map Symbols 1F700..1F77F; Alchemical Symbols 1F780..1F7FF; Geometric Shapes Extended 1F800..1F8FF; Supplemental Arrows-C 1F900..1F9FF; Supplemental Symbols and Pictographs 20000..2A6DF; CJK Unified Ideographs Extension B 2A700..2B73F; CJK Unified Ideographs Extension C 2B740..2B81F; CJK Unified Ideographs Extension D 2B820..2CEAF; CJK Unified Ideographs Extension E 2F800..2FA1F; CJK Compatibility Ideographs Supplement E0000..E007F; Tags E0100..E01EF; Variation Selectors Supplement F0000..FFFFF; Supplementary Private Use Area-A 100000..10FFFF; Supplementary Private Use Area-B # EOF nototools-2017-09-25-tooling-for-phase3-update/third_party/ucd/DerivedAge.txt000066400000000000000000003177541316231664500267510ustar00rootroot00000000000000# DerivedAge-9.0.0.txt # Date: 2016-02-08, 10:26:18 GMT # © 2016 Unicode®, Inc. # For terms of use, see http://www.unicode.org/terms_of_use.html # # Unicode Character Database # For documentation, see http://www.unicode.org/reports/tr44/ # # Unicode Character Database: Derived Property Data # This file shows when various code points were first assigned in Unicode. # # Notes: # # - The term 'assigned' means that a previously reserved code point was assigned # to be a character (graphic, format, control, or private-use); # a noncharacter code point; or a surrogate code point. # For more information, see The Unicode Standard Section 2.4 # # - Versions are only tracked from 1.1 onwards, since version 1.0 # predated changes required by the ISO 10646 merger. # # - The Hangul Syllables that were removed from 2.0 are not included in the 1.1 listing. # # - The supplementary private use code points and the non-character code points # were assigned in version 2.0, but not specifically listed in the UCD # until versions 3.0 and 3.1 respectively. # # - Contiguous ranges are broken into separate lines where they would cross code point # types: graphic, format, control, private-use, surrogate, noncharacter # # For details on the contents of each version, see # http://www.unicode.org/versions/enumeratedversions.html. # ================================================ # Property: Age # # Note: When using the Age property in regular expressions, # an expression such as "\p{age=3.0}" matches all of the code points # assigned in Version 3.0--that is, all the code points with a value # less than or equal to 3.0 for the Age property. # For more information, see [http://www.unicode.org/reports/tr18/]. # All code points not explicitly listed for Age # have the value Unassigned (NA). # @missing: 0000..10FFFF; Unassigned # ================================================ # Age=V1_1 # Assigned as of Unicode 1.1.0 (June, 1993) # [excluding removed Hangul Syllables] 0000..001F ; 1.1 # [32] .. 0020..007E ; 1.1 # [95] SPACE..TILDE 007F..009F ; 1.1 # [33] .. 00A0..00AC ; 1.1 # [13] NO-BREAK SPACE..NOT SIGN 00AD ; 1.1 # SOFT HYPHEN 00AE..01F5 ; 1.1 # [328] REGISTERED SIGN..LATIN SMALL LETTER G WITH ACUTE 01FA..0217 ; 1.1 # [30] LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE..LATIN SMALL LETTER U WITH INVERTED BREVE 0250..02A8 ; 1.1 # [89] LATIN SMALL LETTER TURNED A..LATIN SMALL LETTER TC DIGRAPH WITH CURL 02B0..02DE ; 1.1 # [47] MODIFIER LETTER SMALL H..MODIFIER LETTER RHOTIC HOOK 02E0..02E9 ; 1.1 # [10] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER EXTRA-LOW TONE BAR 0300..0345 ; 1.1 # [70] COMBINING GRAVE ACCENT..COMBINING GREEK YPOGEGRAMMENI 0360..0361 ; 1.1 # [2] COMBINING DOUBLE TILDE..COMBINING DOUBLE INVERTED BREVE 0374..0375 ; 1.1 # [2] GREEK NUMERAL SIGN..GREEK LOWER NUMERAL SIGN 037A ; 1.1 # GREEK YPOGEGRAMMENI 037E ; 1.1 # GREEK QUESTION MARK 0384..038A ; 1.1 # [7] GREEK TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS 038C ; 1.1 # GREEK CAPITAL LETTER OMICRON WITH TONOS 038E..03A1 ; 1.1 # [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO 03A3..03CE ; 1.1 # [44] GREEK CAPITAL LETTER SIGMA..GREEK SMALL LETTER OMEGA WITH TONOS 03D0..03D6 ; 1.1 # [7] GREEK BETA SYMBOL..GREEK PI SYMBOL 03DA ; 1.1 # GREEK LETTER STIGMA 03DC ; 1.1 # GREEK LETTER DIGAMMA 03DE ; 1.1 # GREEK LETTER KOPPA 03E0 ; 1.1 # GREEK LETTER SAMPI 03E2..03F3 ; 1.1 # [18] COPTIC CAPITAL LETTER SHEI..GREEK LETTER YOT 0401..040C ; 1.1 # [12] CYRILLIC CAPITAL LETTER IO..CYRILLIC CAPITAL LETTER KJE 040E..044F ; 1.1 # [66] CYRILLIC CAPITAL LETTER SHORT U..CYRILLIC SMALL LETTER YA 0451..045C ; 1.1 # [12] CYRILLIC SMALL LETTER IO..CYRILLIC SMALL LETTER KJE 045E..0486 ; 1.1 # [41] CYRILLIC SMALL LETTER SHORT U..COMBINING CYRILLIC PSILI PNEUMATA 0490..04C4 ; 1.1 # [53] CYRILLIC CAPITAL LETTER GHE WITH UPTURN..CYRILLIC SMALL LETTER KA WITH HOOK 04C7..04C8 ; 1.1 # [2] CYRILLIC CAPITAL LETTER EN WITH HOOK..CYRILLIC SMALL LETTER EN WITH HOOK 04CB..04CC ; 1.1 # [2] CYRILLIC CAPITAL LETTER KHAKASSIAN CHE..CYRILLIC SMALL LETTER KHAKASSIAN CHE 04D0..04EB ; 1.1 # [28] CYRILLIC CAPITAL LETTER A WITH BREVE..CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS 04EE..04F5 ; 1.1 # [8] CYRILLIC CAPITAL LETTER U WITH MACRON..CYRILLIC SMALL LETTER CHE WITH DIAERESIS 04F8..04F9 ; 1.1 # [2] CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS..CYRILLIC SMALL LETTER YERU WITH DIAERESIS 0531..0556 ; 1.1 # [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH 0559..055F ; 1.1 # [7] ARMENIAN MODIFIER LETTER LEFT HALF RING..ARMENIAN ABBREVIATION MARK 0561..0587 ; 1.1 # [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN 0589 ; 1.1 # ARMENIAN FULL STOP 05B0..05B9 ; 1.1 # [10] HEBREW POINT SHEVA..HEBREW POINT HOLAM 05BB..05C3 ; 1.1 # [9] HEBREW POINT QUBUTS..HEBREW PUNCTUATION SOF PASUQ 05D0..05EA ; 1.1 # [27] HEBREW LETTER ALEF..HEBREW LETTER TAV 05F0..05F4 ; 1.1 # [5] HEBREW LIGATURE YIDDISH DOUBLE VAV..HEBREW PUNCTUATION GERSHAYIM 060C ; 1.1 # ARABIC COMMA 061B ; 1.1 # ARABIC SEMICOLON 061F ; 1.1 # ARABIC QUESTION MARK 0621..063A ; 1.1 # [26] ARABIC LETTER HAMZA..ARABIC LETTER GHAIN 0640..0652 ; 1.1 # [19] ARABIC TATWEEL..ARABIC SUKUN 0660..066D ; 1.1 # [14] ARABIC-INDIC DIGIT ZERO..ARABIC FIVE POINTED STAR 0670..06B7 ; 1.1 # [72] ARABIC LETTER SUPERSCRIPT ALEF..ARABIC LETTER LAM WITH THREE DOTS ABOVE 06BA..06BE ; 1.1 # [5] ARABIC LETTER NOON GHUNNA..ARABIC LETTER HEH DOACHASHMEE 06C0..06CE ; 1.1 # [15] ARABIC LETTER HEH WITH YEH ABOVE..ARABIC LETTER YEH WITH SMALL V 06D0..06DC ; 1.1 # [13] ARABIC LETTER E..ARABIC SMALL HIGH SEEN 06DD ; 1.1 # ARABIC END OF AYAH 06DE..06ED ; 1.1 # [16] ARABIC START OF RUB EL HIZB..ARABIC SMALL LOW MEEM 06F0..06F9 ; 1.1 # [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE 0901..0903 ; 1.1 # [3] DEVANAGARI SIGN CANDRABINDU..DEVANAGARI SIGN VISARGA 0905..0939 ; 1.1 # [53] DEVANAGARI LETTER A..DEVANAGARI LETTER HA 093C..094D ; 1.1 # [18] DEVANAGARI SIGN NUKTA..DEVANAGARI SIGN VIRAMA 0950..0954 ; 1.1 # [5] DEVANAGARI OM..DEVANAGARI ACUTE ACCENT 0958..0970 ; 1.1 # [25] DEVANAGARI LETTER QA..DEVANAGARI ABBREVIATION SIGN 0981..0983 ; 1.1 # [3] BENGALI SIGN CANDRABINDU..BENGALI SIGN VISARGA 0985..098C ; 1.1 # [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L 098F..0990 ; 1.1 # [2] BENGALI LETTER E..BENGALI LETTER AI 0993..09A8 ; 1.1 # [22] BENGALI LETTER O..BENGALI LETTER NA 09AA..09B0 ; 1.1 # [7] BENGALI LETTER PA..BENGALI LETTER RA 09B2 ; 1.1 # BENGALI LETTER LA 09B6..09B9 ; 1.1 # [4] BENGALI LETTER SHA..BENGALI LETTER HA 09BC ; 1.1 # BENGALI SIGN NUKTA 09BE..09C4 ; 1.1 # [7] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN VOCALIC RR 09C7..09C8 ; 1.1 # [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI 09CB..09CD ; 1.1 # [3] BENGALI VOWEL SIGN O..BENGALI SIGN VIRAMA 09D7 ; 1.1 # BENGALI AU LENGTH MARK 09DC..09DD ; 1.1 # [2] BENGALI LETTER RRA..BENGALI LETTER RHA 09DF..09E3 ; 1.1 # [5] BENGALI LETTER YYA..BENGALI VOWEL SIGN VOCALIC LL 09E6..09FA ; 1.1 # [21] BENGALI DIGIT ZERO..BENGALI ISSHAR 0A02 ; 1.1 # GURMUKHI SIGN BINDI 0A05..0A0A ; 1.1 # [6] GURMUKHI LETTER A..GURMUKHI LETTER UU 0A0F..0A10 ; 1.1 # [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI 0A13..0A28 ; 1.1 # [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA 0A2A..0A30 ; 1.1 # [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA 0A32..0A33 ; 1.1 # [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA 0A35..0A36 ; 1.1 # [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA 0A38..0A39 ; 1.1 # [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA 0A3C ; 1.1 # GURMUKHI SIGN NUKTA 0A3E..0A42 ; 1.1 # [5] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN UU 0A47..0A48 ; 1.1 # [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI 0A4B..0A4D ; 1.1 # [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA 0A59..0A5C ; 1.1 # [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA 0A5E ; 1.1 # GURMUKHI LETTER FA 0A66..0A74 ; 1.1 # [15] GURMUKHI DIGIT ZERO..GURMUKHI EK ONKAR 0A81..0A83 ; 1.1 # [3] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN VISARGA 0A85..0A8B ; 1.1 # [7] GUJARATI LETTER A..GUJARATI LETTER VOCALIC R 0A8D ; 1.1 # GUJARATI VOWEL CANDRA E 0A8F..0A91 ; 1.1 # [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O 0A93..0AA8 ; 1.1 # [22] GUJARATI LETTER O..GUJARATI LETTER NA 0AAA..0AB0 ; 1.1 # [7] GUJARATI LETTER PA..GUJARATI LETTER RA 0AB2..0AB3 ; 1.1 # [2] GUJARATI LETTER LA..GUJARATI LETTER LLA 0AB5..0AB9 ; 1.1 # [5] GUJARATI LETTER VA..GUJARATI LETTER HA 0ABC..0AC5 ; 1.1 # [10] GUJARATI SIGN NUKTA..GUJARATI VOWEL SIGN CANDRA E 0AC7..0AC9 ; 1.1 # [3] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN CANDRA O 0ACB..0ACD ; 1.1 # [3] GUJARATI VOWEL SIGN O..GUJARATI SIGN VIRAMA 0AD0 ; 1.1 # GUJARATI OM 0AE0 ; 1.1 # GUJARATI LETTER VOCALIC RR 0AE6..0AEF ; 1.1 # [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE 0B01..0B03 ; 1.1 # [3] ORIYA SIGN CANDRABINDU..ORIYA SIGN VISARGA 0B05..0B0C ; 1.1 # [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L 0B0F..0B10 ; 1.1 # [2] ORIYA LETTER E..ORIYA LETTER AI 0B13..0B28 ; 1.1 # [22] ORIYA LETTER O..ORIYA LETTER NA 0B2A..0B30 ; 1.1 # [7] ORIYA LETTER PA..ORIYA LETTER RA 0B32..0B33 ; 1.1 # [2] ORIYA LETTER LA..ORIYA LETTER LLA 0B36..0B39 ; 1.1 # [4] ORIYA LETTER SHA..ORIYA LETTER HA 0B3C..0B43 ; 1.1 # [8] ORIYA SIGN NUKTA..ORIYA VOWEL SIGN VOCALIC R 0B47..0B48 ; 1.1 # [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI 0B4B..0B4D ; 1.1 # [3] ORIYA VOWEL SIGN O..ORIYA SIGN VIRAMA 0B56..0B57 ; 1.1 # [2] ORIYA AI LENGTH MARK..ORIYA AU LENGTH MARK 0B5C..0B5D ; 1.1 # [2] ORIYA LETTER RRA..ORIYA LETTER RHA 0B5F..0B61 ; 1.1 # [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL 0B66..0B70 ; 1.1 # [11] ORIYA DIGIT ZERO..ORIYA ISSHAR 0B82..0B83 ; 1.1 # [2] TAMIL SIGN ANUSVARA..TAMIL SIGN VISARGA 0B85..0B8A ; 1.1 # [6] TAMIL LETTER A..TAMIL LETTER UU 0B8E..0B90 ; 1.1 # [3] TAMIL LETTER E..TAMIL LETTER AI 0B92..0B95 ; 1.1 # [4] TAMIL LETTER O..TAMIL LETTER KA 0B99..0B9A ; 1.1 # [2] TAMIL LETTER NGA..TAMIL LETTER CA 0B9C ; 1.1 # TAMIL LETTER JA 0B9E..0B9F ; 1.1 # [2] TAMIL LETTER NYA..TAMIL LETTER TTA 0BA3..0BA4 ; 1.1 # [2] TAMIL LETTER NNA..TAMIL LETTER TA 0BA8..0BAA ; 1.1 # [3] TAMIL LETTER NA..TAMIL LETTER PA 0BAE..0BB5 ; 1.1 # [8] TAMIL LETTER MA..TAMIL LETTER VA 0BB7..0BB9 ; 1.1 # [3] TAMIL LETTER SSA..TAMIL LETTER HA 0BBE..0BC2 ; 1.1 # [5] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN UU 0BC6..0BC8 ; 1.1 # [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI 0BCA..0BCD ; 1.1 # [4] TAMIL VOWEL SIGN O..TAMIL SIGN VIRAMA 0BD7 ; 1.1 # TAMIL AU LENGTH MARK 0BE7..0BF2 ; 1.1 # [12] TAMIL DIGIT ONE..TAMIL NUMBER ONE THOUSAND 0C01..0C03 ; 1.1 # [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA 0C05..0C0C ; 1.1 # [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L 0C0E..0C10 ; 1.1 # [3] TELUGU LETTER E..TELUGU LETTER AI 0C12..0C28 ; 1.1 # [23] TELUGU LETTER O..TELUGU LETTER NA 0C2A..0C33 ; 1.1 # [10] TELUGU LETTER PA..TELUGU LETTER LLA 0C35..0C39 ; 1.1 # [5] TELUGU LETTER VA..TELUGU LETTER HA 0C3E..0C44 ; 1.1 # [7] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN VOCALIC RR 0C46..0C48 ; 1.1 # [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI 0C4A..0C4D ; 1.1 # [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA 0C55..0C56 ; 1.1 # [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK 0C60..0C61 ; 1.1 # [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL 0C66..0C6F ; 1.1 # [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE 0C82..0C83 ; 1.1 # [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA 0C85..0C8C ; 1.1 # [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L 0C8E..0C90 ; 1.1 # [3] KANNADA LETTER E..KANNADA LETTER AI 0C92..0CA8 ; 1.1 # [23] KANNADA LETTER O..KANNADA LETTER NA 0CAA..0CB3 ; 1.1 # [10] KANNADA LETTER PA..KANNADA LETTER LLA 0CB5..0CB9 ; 1.1 # [5] KANNADA LETTER VA..KANNADA LETTER HA 0CBE..0CC4 ; 1.1 # [7] KANNADA VOWEL SIGN AA..KANNADA VOWEL SIGN VOCALIC RR 0CC6..0CC8 ; 1.1 # [3] KANNADA VOWEL SIGN E..KANNADA VOWEL SIGN AI 0CCA..0CCD ; 1.1 # [4] KANNADA VOWEL SIGN O..KANNADA SIGN VIRAMA 0CD5..0CD6 ; 1.1 # [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK 0CDE ; 1.1 # KANNADA LETTER FA 0CE0..0CE1 ; 1.1 # [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL 0CE6..0CEF ; 1.1 # [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE 0D02..0D03 ; 1.1 # [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA 0D05..0D0C ; 1.1 # [8] MALAYALAM LETTER A..MALAYALAM LETTER VOCALIC L 0D0E..0D10 ; 1.1 # [3] MALAYALAM LETTER E..MALAYALAM LETTER AI 0D12..0D28 ; 1.1 # [23] MALAYALAM LETTER O..MALAYALAM LETTER NA 0D2A..0D39 ; 1.1 # [16] MALAYALAM LETTER PA..MALAYALAM LETTER HA 0D3E..0D43 ; 1.1 # [6] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN VOCALIC R 0D46..0D48 ; 1.1 # [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI 0D4A..0D4D ; 1.1 # [4] MALAYALAM VOWEL SIGN O..MALAYALAM SIGN VIRAMA 0D57 ; 1.1 # MALAYALAM AU LENGTH MARK 0D60..0D61 ; 1.1 # [2] MALAYALAM LETTER VOCALIC RR..MALAYALAM LETTER VOCALIC LL 0D66..0D6F ; 1.1 # [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE 0E01..0E3A ; 1.1 # [58] THAI CHARACTER KO KAI..THAI CHARACTER PHINTHU 0E3F..0E5B ; 1.1 # [29] THAI CURRENCY SYMBOL BAHT..THAI CHARACTER KHOMUT 0E81..0E82 ; 1.1 # [2] LAO LETTER KO..LAO LETTER KHO SUNG 0E84 ; 1.1 # LAO LETTER KHO TAM 0E87..0E88 ; 1.1 # [2] LAO LETTER NGO..LAO LETTER CO 0E8A ; 1.1 # LAO LETTER SO TAM 0E8D ; 1.1 # LAO LETTER NYO 0E94..0E97 ; 1.1 # [4] LAO LETTER DO..LAO LETTER THO TAM 0E99..0E9F ; 1.1 # [7] LAO LETTER NO..LAO LETTER FO SUNG 0EA1..0EA3 ; 1.1 # [3] LAO LETTER MO..LAO LETTER LO LING 0EA5 ; 1.1 # LAO LETTER LO LOOT 0EA7 ; 1.1 # LAO LETTER WO 0EAA..0EAB ; 1.1 # [2] LAO LETTER SO SUNG..LAO LETTER HO SUNG 0EAD..0EB9 ; 1.1 # [13] LAO LETTER O..LAO VOWEL SIGN UU 0EBB..0EBD ; 1.1 # [3] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN NYO 0EC0..0EC4 ; 1.1 # [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI 0EC6 ; 1.1 # LAO KO LA 0EC8..0ECD ; 1.1 # [6] LAO TONE MAI EK..LAO NIGGAHITA 0ED0..0ED9 ; 1.1 # [10] LAO DIGIT ZERO..LAO DIGIT NINE 0EDC..0EDD ; 1.1 # [2] LAO HO NO..LAO HO MO 10A0..10C5 ; 1.1 # [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE 10D0..10F6 ; 1.1 # [39] GEORGIAN LETTER AN..GEORGIAN LETTER FI 10FB ; 1.1 # GEORGIAN PARAGRAPH SEPARATOR 1100..1159 ; 1.1 # [90] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG YEORINHIEUH 115F..11A2 ; 1.1 # [68] HANGUL CHOSEONG FILLER..HANGUL JUNGSEONG SSANGARAEA 11A8..11F9 ; 1.1 # [82] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG YEORINHIEUH 1E00..1E9A ; 1.1 # [155] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER A WITH RIGHT HALF RING 1EA0..1EF9 ; 1.1 # [90] LATIN CAPITAL LETTER A WITH DOT BELOW..LATIN SMALL LETTER Y WITH TILDE 1F00..1F15 ; 1.1 # [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA 1F18..1F1D ; 1.1 # [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA 1F20..1F45 ; 1.1 # [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA 1F48..1F4D ; 1.1 # [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA 1F50..1F57 ; 1.1 # [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI 1F59 ; 1.1 # GREEK CAPITAL LETTER UPSILON WITH DASIA 1F5B ; 1.1 # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA 1F5D ; 1.1 # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA 1F5F..1F7D ; 1.1 # [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA 1F80..1FB4 ; 1.1 # [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI 1FB6..1FC4 ; 1.1 # [15] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI 1FC6..1FD3 ; 1.1 # [14] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA 1FD6..1FDB ; 1.1 # [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA 1FDD..1FEF ; 1.1 # [19] GREEK DASIA AND VARIA..GREEK VARIA 1FF2..1FF4 ; 1.1 # [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI 1FF6..1FFE ; 1.1 # [9] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK DASIA 2000..200A ; 1.1 # [11] EN QUAD..HAIR SPACE 200B..200F ; 1.1 # [5] ZERO WIDTH SPACE..RIGHT-TO-LEFT MARK 2010..2027 ; 1.1 # [24] HYPHEN..HYPHENATION POINT 2028..202E ; 1.1 # [7] LINE SEPARATOR..RIGHT-TO-LEFT OVERRIDE 2030..2046 ; 1.1 # [23] PER MILLE SIGN..RIGHT SQUARE BRACKET WITH QUILL 206A..206F ; 1.1 # [6] INHIBIT SYMMETRIC SWAPPING..NOMINAL DIGIT SHAPES 2070 ; 1.1 # SUPERSCRIPT ZERO 2074..208E ; 1.1 # [27] SUPERSCRIPT FOUR..SUBSCRIPT RIGHT PARENTHESIS 20A0..20AA ; 1.1 # [11] EURO-CURRENCY SIGN..NEW SHEQEL SIGN 20D0..20E1 ; 1.1 # [18] COMBINING LEFT HARPOON ABOVE..COMBINING LEFT RIGHT ARROW ABOVE 2100..2138 ; 1.1 # [57] ACCOUNT OF..DALET SYMBOL 2153..2182 ; 1.1 # [48] VULGAR FRACTION ONE THIRD..ROMAN NUMERAL TEN THOUSAND 2190..21EA ; 1.1 # [91] LEFTWARDS ARROW..UPWARDS WHITE ARROW FROM BAR 2200..22F1 ; 1.1 # [242] FOR ALL..DOWN RIGHT DIAGONAL ELLIPSIS 2300 ; 1.1 # DIAMETER SIGN 2302..237A ; 1.1 # [121] HOUSE..APL FUNCTIONAL SYMBOL ALPHA 2400..2424 ; 1.1 # [37] SYMBOL FOR NULL..SYMBOL FOR NEWLINE 2440..244A ; 1.1 # [11] OCR HOOK..OCR DOUBLE BACKSLASH 2460..24EA ; 1.1 # [139] CIRCLED DIGIT ONE..CIRCLED DIGIT ZERO 2500..2595 ; 1.1 # [150] BOX DRAWINGS LIGHT HORIZONTAL..RIGHT ONE EIGHTH BLOCK 25A0..25EF ; 1.1 # [80] BLACK SQUARE..LARGE CIRCLE 2600..2613 ; 1.1 # [20] BLACK SUN WITH RAYS..SALTIRE 261A..266F ; 1.1 # [86] BLACK LEFT POINTING INDEX..MUSIC SHARP SIGN 2701..2704 ; 1.1 # [4] UPPER BLADE SCISSORS..WHITE SCISSORS 2706..2709 ; 1.1 # [4] TELEPHONE LOCATION SIGN..ENVELOPE 270C..2727 ; 1.1 # [28] VICTORY HAND..WHITE FOUR POINTED STAR 2729..274B ; 1.1 # [35] STRESS OUTLINED WHITE STAR..HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK 274D ; 1.1 # SHADOWED WHITE CIRCLE 274F..2752 ; 1.1 # [4] LOWER RIGHT DROP-SHADOWED WHITE SQUARE..UPPER RIGHT SHADOWED WHITE SQUARE 2756 ; 1.1 # BLACK DIAMOND MINUS WHITE X 2758..275E ; 1.1 # [7] LIGHT VERTICAL BAR..HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT 2761..2767 ; 1.1 # [7] CURVED STEM PARAGRAPH SIGN ORNAMENT..ROTATED FLORAL HEART BULLET 2776..2794 ; 1.1 # [31] DINGBAT NEGATIVE CIRCLED DIGIT ONE..HEAVY WIDE-HEADED RIGHTWARDS ARROW 2798..27AF ; 1.1 # [24] HEAVY SOUTH EAST ARROW..NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW 27B1..27BE ; 1.1 # [14] NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW..OPEN-OUTLINED RIGHTWARDS ARROW 3000..3037 ; 1.1 # [56] IDEOGRAPHIC SPACE..IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL 303F ; 1.1 # IDEOGRAPHIC HALF FILL SPACE 3041..3094 ; 1.1 # [84] HIRAGANA LETTER SMALL A..HIRAGANA LETTER VU 3099..309E ; 1.1 # [6] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..HIRAGANA VOICED ITERATION MARK 30A1..30FE ; 1.1 # [94] KATAKANA LETTER SMALL A..KATAKANA VOICED ITERATION MARK 3105..312C ; 1.1 # [40] BOPOMOFO LETTER B..BOPOMOFO LETTER GN 3131..318E ; 1.1 # [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE 3190..319F ; 1.1 # [16] IDEOGRAPHIC ANNOTATION LINKING MARK..IDEOGRAPHIC ANNOTATION MAN MARK 3200..321C ; 1.1 # [29] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED HANGUL CIEUC U 3220..3243 ; 1.1 # [36] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH REACH 3260..327B ; 1.1 # [28] CIRCLED HANGUL KIYEOK..CIRCLED HANGUL HIEUH A 327F..32B0 ; 1.1 # [50] KOREAN STANDARD SYMBOL..CIRCLED IDEOGRAPH NIGHT 32C0..32CB ; 1.1 # [12] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER 32D0..32FE ; 1.1 # [47] CIRCLED KATAKANA A..CIRCLED KATAKANA WO 3300..3376 ; 1.1 # [119] SQUARE APAATO..SQUARE PC 337B..33DD ; 1.1 # [99] SQUARE ERA NAME HEISEI..SQUARE WB 33E0..33FE ; 1.1 # [31] IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE..IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE 4E00..9FA5 ; 1.1 # [20902] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FA5 E000..F8FF ; 1.1 # [6400] .. F900..FA2D ; 1.1 # [302] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA2D FB00..FB06 ; 1.1 # [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST FB13..FB17 ; 1.1 # [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH FB1E..FB36 ; 1.1 # [25] HEBREW POINT JUDEO-SPANISH VARIKA..HEBREW LETTER ZAYIN WITH DAGESH FB38..FB3C ; 1.1 # [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH FB3E ; 1.1 # HEBREW LETTER MEM WITH DAGESH FB40..FB41 ; 1.1 # [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH FB43..FB44 ; 1.1 # [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH FB46..FBB1 ; 1.1 # [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM FBD3..FD3F ; 1.1 # [365] ARABIC LETTER NG ISOLATED FORM..ORNATE RIGHT PARENTHESIS FD50..FD8F ; 1.1 # [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM FD92..FDC7 ; 1.1 # [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM FDF0..FDFB ; 1.1 # [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU FE20..FE23 ; 1.1 # [4] COMBINING LIGATURE LEFT HALF..COMBINING DOUBLE TILDE RIGHT HALF FE30..FE44 ; 1.1 # [21] PRESENTATION FORM FOR VERTICAL TWO DOT LEADER..PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET FE49..FE52 ; 1.1 # [10] DASHED OVERLINE..SMALL FULL STOP FE54..FE66 ; 1.1 # [19] SMALL SEMICOLON..SMALL EQUALS SIGN FE68..FE6B ; 1.1 # [4] SMALL REVERSE SOLIDUS..SMALL COMMERCIAL AT FE70..FE72 ; 1.1 # [3] ARABIC FATHATAN ISOLATED FORM..ARABIC DAMMATAN ISOLATED FORM FE74 ; 1.1 # ARABIC KASRATAN ISOLATED FORM FE76..FEFC ; 1.1 # [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM FEFF ; 1.1 # ZERO WIDTH NO-BREAK SPACE FF01..FF5E ; 1.1 # [94] FULLWIDTH EXCLAMATION MARK..FULLWIDTH TILDE FF61..FFBE ; 1.1 # [94] HALFWIDTH IDEOGRAPHIC FULL STOP..HALFWIDTH HANGUL LETTER HIEUH FFC2..FFC7 ; 1.1 # [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E FFCA..FFCF ; 1.1 # [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE FFD2..FFD7 ; 1.1 # [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU FFDA..FFDC ; 1.1 # [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I FFE0..FFE6 ; 1.1 # [7] FULLWIDTH CENT SIGN..FULLWIDTH WON SIGN FFE8..FFEE ; 1.1 # [7] HALFWIDTH FORMS LIGHT VERTICAL..HALFWIDTH WHITE CIRCLE FFFD ; 1.1 # REPLACEMENT CHARACTER FFFE..FFFF ; 1.1 # [2] .. # Total code points: 33979 # ================================================ # Age=V2_0 # Newly assigned in Unicode 2.0.0 (July, 1996) 0591..05A1 ; 2.0 # [17] HEBREW ACCENT ETNAHTA..HEBREW ACCENT PAZER 05A3..05AF ; 2.0 # [13] HEBREW ACCENT MUNAH..HEBREW MARK MASORA CIRCLE 05C4 ; 2.0 # HEBREW MARK UPPER DOT 0F00..0F47 ; 2.0 # [72] TIBETAN SYLLABLE OM..TIBETAN LETTER JA 0F49..0F69 ; 2.0 # [33] TIBETAN LETTER NYA..TIBETAN LETTER KSSA 0F71..0F8B ; 2.0 # [27] TIBETAN VOWEL SIGN AA..TIBETAN SIGN GRU MED RGYINGS 0F90..0F95 ; 2.0 # [6] TIBETAN SUBJOINED LETTER KA..TIBETAN SUBJOINED LETTER CA 0F97 ; 2.0 # TIBETAN SUBJOINED LETTER JA 0F99..0FAD ; 2.0 # [21] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER WA 0FB1..0FB7 ; 2.0 # [7] TIBETAN SUBJOINED LETTER YA..TIBETAN SUBJOINED LETTER HA 0FB9 ; 2.0 # TIBETAN SUBJOINED LETTER KSSA 1E9B ; 2.0 # LATIN SMALL LETTER LONG S WITH DOT ABOVE 20AB ; 2.0 # DONG SIGN AC00..D7A3 ; 2.0 # [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH D800..DFFF ; 2.0 # [2048] .. 1FFFE..1FFFF ; 2.0 # [2] .. 2FFFE..2FFFF ; 2.0 # [2] .. 3FFFE..3FFFF ; 2.0 # [2] .. 4FFFE..4FFFF ; 2.0 # [2] .. 5FFFE..5FFFF ; 2.0 # [2] .. 6FFFE..6FFFF ; 2.0 # [2] .. 7FFFE..7FFFF ; 2.0 # [2] .. 8FFFE..8FFFF ; 2.0 # [2] .. 9FFFE..9FFFF ; 2.0 # [2] .. AFFFE..AFFFF ; 2.0 # [2] .. BFFFE..BFFFF ; 2.0 # [2] .. CFFFE..CFFFF ; 2.0 # [2] .. DFFFE..DFFFF ; 2.0 # [2] .. EFFFE..EFFFF ; 2.0 # [2] .. F0000..FFFFD ; 2.0 # [65534] .. FFFFE..FFFFF ; 2.0 # [2] .. 100000..10FFFD; 2.0 # [65534] .. 10FFFE..10FFFF; 2.0 # [2] .. # Total code points: 144521 # ================================================ # Age=V2_1 # Newly assigned in Unicode 2.1.2 (May, 1998) 20AC ; 2.1 # EURO SIGN FFFC ; 2.1 # OBJECT REPLACEMENT CHARACTER # Total code points: 2 # ================================================ # Age=V3_0 # Newly assigned in Unicode 3.0.0 (September, 1999) 01F6..01F9 ; 3.0 # [4] LATIN CAPITAL LETTER HWAIR..LATIN SMALL LETTER N WITH GRAVE 0218..021F ; 3.0 # [8] LATIN CAPITAL LETTER S WITH COMMA BELOW..LATIN SMALL LETTER H WITH CARON 0222..0233 ; 3.0 # [18] LATIN CAPITAL LETTER OU..LATIN SMALL LETTER Y WITH MACRON 02A9..02AD ; 3.0 # [5] LATIN SMALL LETTER FENG DIGRAPH..LATIN LETTER BIDENTAL PERCUSSIVE 02DF ; 3.0 # MODIFIER LETTER CROSS ACCENT 02EA..02EE ; 3.0 # [5] MODIFIER LETTER YIN DEPARTING TONE MARK..MODIFIER LETTER DOUBLE APOSTROPHE 0346..034E ; 3.0 # [9] COMBINING BRIDGE ABOVE..COMBINING UPWARDS ARROW BELOW 0362 ; 3.0 # COMBINING DOUBLE RIGHTWARDS ARROW BELOW 03D7 ; 3.0 # GREEK KAI SYMBOL 03DB ; 3.0 # GREEK SMALL LETTER STIGMA 03DD ; 3.0 # GREEK SMALL LETTER DIGAMMA 03DF ; 3.0 # GREEK SMALL LETTER KOPPA 03E1 ; 3.0 # GREEK SMALL LETTER SAMPI 0400 ; 3.0 # CYRILLIC CAPITAL LETTER IE WITH GRAVE 040D ; 3.0 # CYRILLIC CAPITAL LETTER I WITH GRAVE 0450 ; 3.0 # CYRILLIC SMALL LETTER IE WITH GRAVE 045D ; 3.0 # CYRILLIC SMALL LETTER I WITH GRAVE 0488..0489 ; 3.0 # [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN 048C..048F ; 3.0 # [4] CYRILLIC CAPITAL LETTER SEMISOFT SIGN..CYRILLIC SMALL LETTER ER WITH TICK 04EC..04ED ; 3.0 # [2] CYRILLIC CAPITAL LETTER E WITH DIAERESIS..CYRILLIC SMALL LETTER E WITH DIAERESIS 058A ; 3.0 # ARMENIAN HYPHEN 0653..0655 ; 3.0 # [3] ARABIC MADDAH ABOVE..ARABIC HAMZA BELOW 06B8..06B9 ; 3.0 # [2] ARABIC LETTER LAM WITH THREE DOTS BELOW..ARABIC LETTER NOON WITH DOT BELOW 06BF ; 3.0 # ARABIC LETTER TCHEH WITH DOT ABOVE 06CF ; 3.0 # ARABIC LETTER WAW WITH DOT ABOVE 06FA..06FE ; 3.0 # [5] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC SIGN SINDHI POSTPOSITION MEN 0700..070D ; 3.0 # [14] SYRIAC END OF PARAGRAPH..SYRIAC HARKLEAN ASTERISCUS 070F ; 3.0 # SYRIAC ABBREVIATION MARK 0710..072C ; 3.0 # [29] SYRIAC LETTER ALAPH..SYRIAC LETTER TAW 0730..074A ; 3.0 # [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH 0780..07B0 ; 3.0 # [49] THAANA LETTER HAA..THAANA SUKUN 0D82..0D83 ; 3.0 # [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA 0D85..0D96 ; 3.0 # [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA 0D9A..0DB1 ; 3.0 # [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA 0DB3..0DBB ; 3.0 # [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA 0DBD ; 3.0 # SINHALA LETTER DANTAJA LAYANNA 0DC0..0DC6 ; 3.0 # [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA 0DCA ; 3.0 # SINHALA SIGN AL-LAKUNA 0DCF..0DD4 ; 3.0 # [6] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA 0DD6 ; 3.0 # SINHALA VOWEL SIGN DIGA PAA-PILLA 0DD8..0DDF ; 3.0 # [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA 0DF2..0DF4 ; 3.0 # [3] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA PUNCTUATION KUNDDALIYA 0F6A ; 3.0 # TIBETAN LETTER FIXED-FORM RA 0F96 ; 3.0 # TIBETAN SUBJOINED LETTER CHA 0FAE..0FB0 ; 3.0 # [3] TIBETAN SUBJOINED LETTER ZHA..TIBETAN SUBJOINED LETTER -A 0FB8 ; 3.0 # TIBETAN SUBJOINED LETTER A 0FBA..0FBC ; 3.0 # [3] TIBETAN SUBJOINED LETTER FIXED-FORM WA..TIBETAN SUBJOINED LETTER FIXED-FORM RA 0FBE..0FCC ; 3.0 # [15] TIBETAN KU RU KHA..TIBETAN SYMBOL NOR BU BZHI -KHYIL 0FCF ; 3.0 # TIBETAN SIGN RDEL NAG GSUM 1000..1021 ; 3.0 # [34] MYANMAR LETTER KA..MYANMAR LETTER A 1023..1027 ; 3.0 # [5] MYANMAR LETTER I..MYANMAR LETTER E 1029..102A ; 3.0 # [2] MYANMAR LETTER O..MYANMAR LETTER AU 102C..1032 ; 3.0 # [7] MYANMAR VOWEL SIGN AA..MYANMAR VOWEL SIGN AI 1036..1039 ; 3.0 # [4] MYANMAR SIGN ANUSVARA..MYANMAR SIGN VIRAMA 1040..1059 ; 3.0 # [26] MYANMAR DIGIT ZERO..MYANMAR VOWEL SIGN VOCALIC LL 1200..1206 ; 3.0 # [7] ETHIOPIC SYLLABLE HA..ETHIOPIC SYLLABLE HO 1208..1246 ; 3.0 # [63] ETHIOPIC SYLLABLE LA..ETHIOPIC SYLLABLE QO 1248 ; 3.0 # ETHIOPIC SYLLABLE QWA 124A..124D ; 3.0 # [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE 1250..1256 ; 3.0 # [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO 1258 ; 3.0 # ETHIOPIC SYLLABLE QHWA 125A..125D ; 3.0 # [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE 1260..1286 ; 3.0 # [39] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XO 1288 ; 3.0 # ETHIOPIC SYLLABLE XWA 128A..128D ; 3.0 # [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE 1290..12AE ; 3.0 # [31] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KO 12B0 ; 3.0 # ETHIOPIC SYLLABLE KWA 12B2..12B5 ; 3.0 # [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE 12B8..12BE ; 3.0 # [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO 12C0 ; 3.0 # ETHIOPIC SYLLABLE KXWA 12C2..12C5 ; 3.0 # [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE 12C8..12CE ; 3.0 # [7] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE WO 12D0..12D6 ; 3.0 # [7] ETHIOPIC SYLLABLE PHARYNGEAL A..ETHIOPIC SYLLABLE PHARYNGEAL O 12D8..12EE ; 3.0 # [23] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE YO 12F0..130E ; 3.0 # [31] ETHIOPIC SYLLABLE DA..ETHIOPIC SYLLABLE GO 1310 ; 3.0 # ETHIOPIC SYLLABLE GWA 1312..1315 ; 3.0 # [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE 1318..131E ; 3.0 # [7] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE GGO 1320..1346 ; 3.0 # [39] ETHIOPIC SYLLABLE THA..ETHIOPIC SYLLABLE TZO 1348..135A ; 3.0 # [19] ETHIOPIC SYLLABLE FA..ETHIOPIC SYLLABLE FYA 1361..137C ; 3.0 # [28] ETHIOPIC WORDSPACE..ETHIOPIC NUMBER TEN THOUSAND 13A0..13F4 ; 3.0 # [85] CHEROKEE LETTER A..CHEROKEE LETTER YV 1401..1676 ; 3.0 # [630] CANADIAN SYLLABICS E..CANADIAN SYLLABICS NNGAA 1680..169C ; 3.0 # [29] OGHAM SPACE MARK..OGHAM REVERSED FEATHER MARK 16A0..16F0 ; 3.0 # [81] RUNIC LETTER FEHU FEOH FE F..RUNIC BELGTHOR SYMBOL 1780..17DC ; 3.0 # [93] KHMER LETTER KA..KHMER SIGN AVAKRAHASANYA 17E0..17E9 ; 3.0 # [10] KHMER DIGIT ZERO..KHMER DIGIT NINE 1800..180D ; 3.0 # [14] MONGOLIAN BIRGA..MONGOLIAN FREE VARIATION SELECTOR THREE 180E ; 3.0 # MONGOLIAN VOWEL SEPARATOR 1810..1819 ; 3.0 # [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE 1820..1877 ; 3.0 # [88] MONGOLIAN LETTER A..MONGOLIAN LETTER MANCHU ZHA 1880..18A9 ; 3.0 # [42] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI DAGALGA 202F ; 3.0 # NARROW NO-BREAK SPACE 2048..204D ; 3.0 # [6] QUESTION EXCLAMATION MARK..BLACK RIGHTWARDS BULLET 20AD..20AF ; 3.0 # [3] KIP SIGN..DRACHMA SIGN 20E2..20E3 ; 3.0 # [2] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING KEYCAP 2139..213A ; 3.0 # [2] INFORMATION SOURCE..ROTATED CAPITAL Q 2183 ; 3.0 # ROMAN NUMERAL REVERSED ONE HUNDRED 21EB..21F3 ; 3.0 # [9] UPWARDS WHITE ARROW ON PEDESTAL..UP DOWN WHITE ARROW 2301 ; 3.0 # ELECTRIC ARROW 237B ; 3.0 # NOT CHECK MARK 237D..239A ; 3.0 # [30] SHOULDERED OPEN BOX..CLEAR SCREEN SYMBOL 2425..2426 ; 3.0 # [2] SYMBOL FOR DELETE FORM TWO..SYMBOL FOR SUBSTITUTE FORM TWO 25F0..25F7 ; 3.0 # [8] WHITE SQUARE WITH UPPER LEFT QUADRANT..WHITE CIRCLE WITH UPPER RIGHT QUADRANT 2619 ; 3.0 # REVERSED ROTATED FLORAL HEART BULLET 2670..2671 ; 3.0 # [2] WEST SYRIAC CROSS..EAST SYRIAC CROSS 2800..28FF ; 3.0 # [256] BRAILLE PATTERN BLANK..BRAILLE PATTERN DOTS-12345678 2E80..2E99 ; 3.0 # [26] CJK RADICAL REPEAT..CJK RADICAL RAP 2E9B..2EF3 ; 3.0 # [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE 2F00..2FD5 ; 3.0 # [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE 2FF0..2FFB ; 3.0 # [12] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID 3038..303A ; 3.0 # [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY 303E ; 3.0 # IDEOGRAPHIC VARIATION INDICATOR 31A0..31B7 ; 3.0 # [24] BOPOMOFO LETTER BU..BOPOMOFO FINAL LETTER H 3400..4DB5 ; 3.0 # [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 A000..A48C ; 3.0 # [1165] YI SYLLABLE IT..YI SYLLABLE YYR A490..A4A1 ; 3.0 # [18] YI RADICAL QOT..YI RADICAL GA A4A4..A4B3 ; 3.0 # [16] YI RADICAL DDUR..YI RADICAL JO A4B5..A4C0 ; 3.0 # [12] YI RADICAL JJY..YI RADICAL SHAT A4C2..A4C4 ; 3.0 # [3] YI RADICAL SHOP..YI RADICAL ZZIET A4C6 ; 3.0 # YI RADICAL KE FB1D ; 3.0 # HEBREW LETTER YOD WITH HIRIQ FFF9..FFFB ; 3.0 # [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR # Total code points: 10307 # ================================================ # Age=V3_1 # Newly assigned in Unicode 3.1.0 (March, 2001) 03F4..03F5 ; 3.1 # [2] GREEK CAPITAL THETA SYMBOL..GREEK LUNATE EPSILON SYMBOL FDD0..FDEF ; 3.1 # [32] .. 10300..1031E ; 3.1 # [31] OLD ITALIC LETTER A..OLD ITALIC LETTER UU 10320..10323 ; 3.1 # [4] OLD ITALIC NUMERAL ONE..OLD ITALIC NUMERAL FIFTY 10330..1034A ; 3.1 # [27] GOTHIC LETTER AHSA..GOTHIC LETTER NINE HUNDRED 10400..10425 ; 3.1 # [38] DESERET CAPITAL LETTER LONG I..DESERET CAPITAL LETTER ENG 10428..1044D ; 3.1 # [38] DESERET SMALL LETTER LONG I..DESERET SMALL LETTER ENG 1D000..1D0F5 ; 3.1 # [246] BYZANTINE MUSICAL SYMBOL PSILI..BYZANTINE MUSICAL SYMBOL GORGON NEO KATO 1D100..1D126 ; 3.1 # [39] MUSICAL SYMBOL SINGLE BARLINE..MUSICAL SYMBOL DRUM CLEF-2 1D12A..1D172 ; 3.1 # [73] MUSICAL SYMBOL DOUBLE SHARP..MUSICAL SYMBOL COMBINING FLAG-5 1D173..1D17A ; 3.1 # [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE 1D17B..1D1DD ; 3.1 # [99] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL PES SUBPUNCTIS 1D400..1D454 ; 3.1 # [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G 1D456..1D49C ; 3.1 # [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A 1D49E..1D49F ; 3.1 # [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D 1D4A2 ; 3.1 # MATHEMATICAL SCRIPT CAPITAL G 1D4A5..1D4A6 ; 3.1 # [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K 1D4A9..1D4AC ; 3.1 # [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q 1D4AE..1D4B9 ; 3.1 # [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D 1D4BB ; 3.1 # MATHEMATICAL SCRIPT SMALL F 1D4BD..1D4C0 ; 3.1 # [4] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL K 1D4C2..1D4C3 ; 3.1 # [2] MATHEMATICAL SCRIPT SMALL M..MATHEMATICAL SCRIPT SMALL N 1D4C5..1D505 ; 3.1 # [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B 1D507..1D50A ; 3.1 # [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G 1D50D..1D514 ; 3.1 # [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q 1D516..1D51C ; 3.1 # [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y 1D51E..1D539 ; 3.1 # [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B 1D53B..1D53E ; 3.1 # [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G 1D540..1D544 ; 3.1 # [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M 1D546 ; 3.1 # MATHEMATICAL DOUBLE-STRUCK CAPITAL O 1D54A..1D550 ; 3.1 # [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y 1D552..1D6A3 ; 3.1 # [338] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL MONOSPACE SMALL Z 1D6A8..1D7C9 ; 3.1 # [290] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL 1D7CE..1D7FF ; 3.1 # [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE 20000..2A6D6 ; 3.1 # [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 2F800..2FA1D ; 3.1 # [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D E0001 ; 3.1 # LANGUAGE TAG E0020..E007F ; 3.1 # [96] TAG SPACE..CANCEL TAG # Total code points: 44978 # ================================================ # Age=V3_2 # Newly assigned in Unicode 3.2.0 (March, 2002) 0220 ; 3.2 # LATIN CAPITAL LETTER N WITH LONG RIGHT LEG 034F ; 3.2 # COMBINING GRAPHEME JOINER 0363..036F ; 3.2 # [13] COMBINING LATIN SMALL LETTER A..COMBINING LATIN SMALL LETTER X 03D8..03D9 ; 3.2 # [2] GREEK LETTER ARCHAIC KOPPA..GREEK SMALL LETTER ARCHAIC KOPPA 03F6 ; 3.2 # GREEK REVERSED LUNATE EPSILON SYMBOL 048A..048B ; 3.2 # [2] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER SHORT I WITH TAIL 04C5..04C6 ; 3.2 # [2] CYRILLIC CAPITAL LETTER EL WITH TAIL..CYRILLIC SMALL LETTER EL WITH TAIL 04C9..04CA ; 3.2 # [2] CYRILLIC CAPITAL LETTER EN WITH TAIL..CYRILLIC SMALL LETTER EN WITH TAIL 04CD..04CE ; 3.2 # [2] CYRILLIC CAPITAL LETTER EM WITH TAIL..CYRILLIC SMALL LETTER EM WITH TAIL 0500..050F ; 3.2 # [16] CYRILLIC CAPITAL LETTER KOMI DE..CYRILLIC SMALL LETTER KOMI TJE 066E..066F ; 3.2 # [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF 07B1 ; 3.2 # THAANA LETTER NAA 10F7..10F8 ; 3.2 # [2] GEORGIAN LETTER YN..GEORGIAN LETTER ELIFI 1700..170C ; 3.2 # [13] TAGALOG LETTER A..TAGALOG LETTER YA 170E..1714 ; 3.2 # [7] TAGALOG LETTER LA..TAGALOG SIGN VIRAMA 1720..1736 ; 3.2 # [23] HANUNOO LETTER A..PHILIPPINE DOUBLE PUNCTUATION 1740..1753 ; 3.2 # [20] BUHID LETTER A..BUHID VOWEL SIGN U 1760..176C ; 3.2 # [13] TAGBANWA LETTER A..TAGBANWA LETTER YA 176E..1770 ; 3.2 # [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA 1772..1773 ; 3.2 # [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U 2047 ; 3.2 # DOUBLE QUESTION MARK 204E..2052 ; 3.2 # [5] LOW ASTERISK..COMMERCIAL MINUS SIGN 2057 ; 3.2 # QUADRUPLE PRIME 205F ; 3.2 # MEDIUM MATHEMATICAL SPACE 2060..2063 ; 3.2 # [4] WORD JOINER..INVISIBLE SEPARATOR 2071 ; 3.2 # SUPERSCRIPT LATIN SMALL LETTER I 20B0..20B1 ; 3.2 # [2] GERMAN PENNY SIGN..PESO SIGN 20E4..20EA ; 3.2 # [7] COMBINING ENCLOSING UPWARD POINTING TRIANGLE..COMBINING LEFTWARDS ARROW OVERLAY 213D..214B ; 3.2 # [15] DOUBLE-STRUCK SMALL GAMMA..TURNED AMPERSAND 21F4..21FF ; 3.2 # [12] RIGHT ARROW WITH SMALL CIRCLE..LEFT RIGHT OPEN-HEADED ARROW 22F2..22FF ; 3.2 # [14] ELEMENT OF WITH LONG HORIZONTAL STROKE..Z NOTATION BAG MEMBERSHIP 237C ; 3.2 # RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW 239B..23CE ; 3.2 # [52] LEFT PARENTHESIS UPPER HOOK..RETURN SYMBOL 24EB..24FE ; 3.2 # [20] NEGATIVE CIRCLED NUMBER ELEVEN..DOUBLE CIRCLED NUMBER TEN 2596..259F ; 3.2 # [10] QUADRANT LOWER LEFT..QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT 25F8..25FF ; 3.2 # [8] UPPER LEFT TRIANGLE..LOWER RIGHT TRIANGLE 2616..2617 ; 3.2 # [2] WHITE SHOGI PIECE..BLACK SHOGI PIECE 2672..267D ; 3.2 # [12] UNIVERSAL RECYCLING SYMBOL..PARTIALLY-RECYCLED PAPER SYMBOL 2680..2689 ; 3.2 # [10] DIE FACE-1..BLACK CIRCLE WITH TWO WHITE DOTS 2768..2775 ; 3.2 # [14] MEDIUM LEFT PARENTHESIS ORNAMENT..MEDIUM RIGHT CURLY BRACKET ORNAMENT 27D0..27EB ; 3.2 # [28] WHITE DIAMOND WITH CENTRED DOT..MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET 27F0..27FF ; 3.2 # [16] UPWARDS QUADRUPLE ARROW..LONG RIGHTWARDS SQUIGGLE ARROW 2900..2AFF ; 3.2 # [512] RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE..N-ARY WHITE VERTICAL BAR 303B..303D ; 3.2 # [3] VERTICAL IDEOGRAPHIC ITERATION MARK..PART ALTERNATION MARK 3095..3096 ; 3.2 # [2] HIRAGANA LETTER SMALL KA..HIRAGANA LETTER SMALL KE 309F..30A0 ; 3.2 # [2] HIRAGANA DIGRAPH YORI..KATAKANA-HIRAGANA DOUBLE HYPHEN 30FF ; 3.2 # KATAKANA DIGRAPH KOTO 31F0..31FF ; 3.2 # [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO 3251..325F ; 3.2 # [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE 32B1..32BF ; 3.2 # [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY A4A2..A4A3 ; 3.2 # [2] YI RADICAL ZUP..YI RADICAL CYT A4B4 ; 3.2 # YI RADICAL NZUP A4C1 ; 3.2 # YI RADICAL ZUR A4C5 ; 3.2 # YI RADICAL NBIE FA30..FA6A ; 3.2 # [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A FDFC ; 3.2 # RIAL SIGN FE00..FE0F ; 3.2 # [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 FE45..FE46 ; 3.2 # [2] SESAME DOT..WHITE SESAME DOT FE73 ; 3.2 # ARABIC TAIL FRAGMENT FF5F..FF60 ; 3.2 # [2] FULLWIDTH LEFT WHITE PARENTHESIS..FULLWIDTH RIGHT WHITE PARENTHESIS # Total code points: 1016 # ================================================ # Age=V4_0 # Newly assigned in Unicode 4.0.0 (April, 2003) 0221 ; 4.0 # LATIN SMALL LETTER D WITH CURL 0234..0236 ; 4.0 # [3] LATIN SMALL LETTER L WITH CURL..LATIN SMALL LETTER T WITH CURL 02AE..02AF ; 4.0 # [2] LATIN SMALL LETTER TURNED H WITH FISHHOOK..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL 02EF..02FF ; 4.0 # [17] MODIFIER LETTER LOW DOWN ARROWHEAD..MODIFIER LETTER LOW LEFT ARROW 0350..0357 ; 4.0 # [8] COMBINING RIGHT ARROWHEAD ABOVE..COMBINING RIGHT HALF RING ABOVE 035D..035F ; 4.0 # [3] COMBINING DOUBLE BREVE..COMBINING DOUBLE MACRON BELOW 03F7..03FB ; 4.0 # [5] GREEK CAPITAL LETTER SHO..GREEK SMALL LETTER SAN 0600..0603 ; 4.0 # [4] ARABIC NUMBER SIGN..ARABIC SIGN SAFHA 060D..0615 ; 4.0 # [9] ARABIC DATE SEPARATOR..ARABIC SMALL HIGH TAH 0656..0658 ; 4.0 # [3] ARABIC SUBSCRIPT ALEF..ARABIC MARK NOON GHUNNA 06EE..06EF ; 4.0 # [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V 06FF ; 4.0 # ARABIC LETTER HEH WITH INVERTED V 072D..072F ; 4.0 # [3] SYRIAC LETTER PERSIAN BHETH..SYRIAC LETTER PERSIAN DHALATH 074D..074F ; 4.0 # [3] SYRIAC LETTER SOGDIAN ZHAIN..SYRIAC LETTER SOGDIAN FE 0904 ; 4.0 # DEVANAGARI LETTER SHORT A 09BD ; 4.0 # BENGALI SIGN AVAGRAHA 0A01 ; 4.0 # GURMUKHI SIGN ADAK BINDI 0A03 ; 4.0 # GURMUKHI SIGN VISARGA 0A8C ; 4.0 # GUJARATI LETTER VOCALIC L 0AE1..0AE3 ; 4.0 # [3] GUJARATI LETTER VOCALIC LL..GUJARATI VOWEL SIGN VOCALIC LL 0AF1 ; 4.0 # GUJARATI RUPEE SIGN 0B35 ; 4.0 # ORIYA LETTER VA 0B71 ; 4.0 # ORIYA LETTER WA 0BF3..0BFA ; 4.0 # [8] TAMIL DAY SIGN..TAMIL NUMBER SIGN 0CBC..0CBD ; 4.0 # [2] KANNADA SIGN NUKTA..KANNADA SIGN AVAGRAHA 17DD ; 4.0 # KHMER SIGN ATTHACAN 17F0..17F9 ; 4.0 # [10] KHMER SYMBOL LEK ATTAK SON..KHMER SYMBOL LEK ATTAK PRAM-BUON 1900..191C ; 4.0 # [29] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER HA 1920..192B ; 4.0 # [12] LIMBU VOWEL SIGN A..LIMBU SUBJOINED LETTER WA 1930..193B ; 4.0 # [12] LIMBU SMALL LETTER KA..LIMBU SIGN SA-I 1940 ; 4.0 # LIMBU SIGN LOO 1944..196D ; 4.0 # [42] LIMBU EXCLAMATION MARK..TAI LE LETTER AI 1970..1974 ; 4.0 # [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6 19E0..19FF ; 4.0 # [32] KHMER SYMBOL PATHAMASAT..KHMER SYMBOL DAP-PRAM ROC 1D00..1D6B ; 4.0 # [108] LATIN LETTER SMALL CAPITAL A..LATIN SMALL LETTER UE 2053..2054 ; 4.0 # [2] SWUNG DASH..INVERTED UNDERTIE 213B ; 4.0 # FACSIMILE SIGN 23CF..23D0 ; 4.0 # [2] EJECT SYMBOL..VERTICAL LINE EXTENSION 24FF ; 4.0 # NEGATIVE CIRCLED DIGIT ZERO 2614..2615 ; 4.0 # [2] UMBRELLA WITH RAIN DROPS..HOT BEVERAGE 268A..2691 ; 4.0 # [8] MONOGRAM FOR YANG..BLACK FLAG 26A0..26A1 ; 4.0 # [2] WARNING SIGN..HIGH VOLTAGE SIGN 2B00..2B0D ; 4.0 # [14] NORTH EAST WHITE ARROW..UP DOWN BLACK ARROW 321D..321E ; 4.0 # [2] PARENTHESIZED KOREAN CHARACTER OJEON..PARENTHESIZED KOREAN CHARACTER O HU 3250 ; 4.0 # PARTNERSHIP SIGN 327C..327D ; 4.0 # [2] CIRCLED KOREAN CHARACTER CHAMKO..CIRCLED KOREAN CHARACTER JUEUI 32CC..32CF ; 4.0 # [4] SQUARE HG..LIMITED LIABILITY SIGN 3377..337A ; 4.0 # [4] SQUARE DM..SQUARE IU 33DE..33DF ; 4.0 # [2] SQUARE V OVER M..SQUARE A OVER M 33FF ; 4.0 # SQUARE GAL 4DC0..4DFF ; 4.0 # [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION FDFD ; 4.0 # ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM FE47..FE48 ; 4.0 # [2] PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET..PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET 10000..1000B ; 4.0 # [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE 1000D..10026 ; 4.0 # [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO 10028..1003A ; 4.0 # [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO 1003C..1003D ; 4.0 # [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE 1003F..1004D ; 4.0 # [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO 10050..1005D ; 4.0 # [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089 10080..100FA ; 4.0 # [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305 10100..10102 ; 4.0 # [3] AEGEAN WORD SEPARATOR LINE..AEGEAN CHECK MARK 10107..10133 ; 4.0 # [45] AEGEAN NUMBER ONE..AEGEAN NUMBER NINETY THOUSAND 10137..1013F ; 4.0 # [9] AEGEAN WEIGHT BASE UNIT..AEGEAN MEASURE THIRD SUBUNIT 10380..1039D ; 4.0 # [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU 1039F ; 4.0 # UGARITIC WORD DIVIDER 10426..10427 ; 4.0 # [2] DESERET CAPITAL LETTER OI..DESERET CAPITAL LETTER EW 1044E..1049D ; 4.0 # [80] DESERET SMALL LETTER OI..OSMANYA LETTER OO 104A0..104A9 ; 4.0 # [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE 10800..10805 ; 4.0 # [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA 10808 ; 4.0 # CYPRIOT SYLLABLE JO 1080A..10835 ; 4.0 # [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO 10837..10838 ; 4.0 # [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE 1083C ; 4.0 # CYPRIOT SYLLABLE ZA 1083F ; 4.0 # CYPRIOT SYLLABLE ZO 1D300..1D356 ; 4.0 # [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING 1D4C1 ; 4.0 # MATHEMATICAL SCRIPT SMALL L E0100..E01EF ; 4.0 # [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 # Total code points: 1226 # ================================================ # Age=V4_1 # Newly assigned in Unicode 4.1.0 (March, 2005) 0237..0241 ; 4.1 # [11] LATIN SMALL LETTER DOTLESS J..LATIN CAPITAL LETTER GLOTTAL STOP 0358..035C ; 4.1 # [5] COMBINING DOT ABOVE RIGHT..COMBINING DOUBLE BREVE BELOW 03FC..03FF ; 4.1 # [4] GREEK RHO WITH STROKE SYMBOL..GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL 04F6..04F7 ; 4.1 # [2] CYRILLIC CAPITAL LETTER GHE WITH DESCENDER..CYRILLIC SMALL LETTER GHE WITH DESCENDER 05A2 ; 4.1 # HEBREW ACCENT ATNAH HAFUKH 05C5..05C7 ; 4.1 # [3] HEBREW MARK LOWER DOT..HEBREW POINT QAMATS QATAN 060B ; 4.1 # AFGHANI SIGN 061E ; 4.1 # ARABIC TRIPLE DOT PUNCTUATION MARK 0659..065E ; 4.1 # [6] ARABIC ZWARAKAY..ARABIC FATHA WITH TWO DOTS 0750..076D ; 4.1 # [30] ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW..ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE 097D ; 4.1 # DEVANAGARI LETTER GLOTTAL STOP 09CE ; 4.1 # BENGALI LETTER KHANDA TA 0BB6 ; 4.1 # TAMIL LETTER SHA 0BE6 ; 4.1 # TAMIL DIGIT ZERO 0FD0..0FD1 ; 4.1 # [2] TIBETAN MARK BSKA- SHOG GI MGO RGYAN..TIBETAN MARK MNYAM YIG GI MGO RGYAN 10F9..10FA ; 4.1 # [2] GEORGIAN LETTER TURNED GAN..GEORGIAN LETTER AIN 10FC ; 4.1 # MODIFIER LETTER GEORGIAN NAR 1207 ; 4.1 # ETHIOPIC SYLLABLE HOA 1247 ; 4.1 # ETHIOPIC SYLLABLE QOA 1287 ; 4.1 # ETHIOPIC SYLLABLE XOA 12AF ; 4.1 # ETHIOPIC SYLLABLE KOA 12CF ; 4.1 # ETHIOPIC SYLLABLE WOA 12EF ; 4.1 # ETHIOPIC SYLLABLE YOA 130F ; 4.1 # ETHIOPIC SYLLABLE GOA 131F ; 4.1 # ETHIOPIC SYLLABLE GGWAA 1347 ; 4.1 # ETHIOPIC SYLLABLE TZOA 135F..1360 ; 4.1 # [2] ETHIOPIC COMBINING GEMINATION MARK..ETHIOPIC SECTION MARK 1380..1399 ; 4.1 # [26] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC TONAL MARK KURT 1980..19A9 ; 4.1 # [42] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW XVA 19B0..19C9 ; 4.1 # [26] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE TONE MARK-2 19D0..19D9 ; 4.1 # [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE 19DE..19DF ; 4.1 # [2] NEW TAI LUE SIGN LAE..NEW TAI LUE SIGN LAEV 1A00..1A1B ; 4.1 # [28] BUGINESE LETTER KA..BUGINESE VOWEL SIGN AE 1A1E..1A1F ; 4.1 # [2] BUGINESE PALLAWA..BUGINESE END OF SECTION 1D6C..1DC3 ; 4.1 # [88] LATIN SMALL LETTER B WITH MIDDLE TILDE..COMBINING SUSPENSION MARK 2055..2056 ; 4.1 # [2] FLOWER PUNCTUATION MARK..THREE DOT PUNCTUATION 2058..205E ; 4.1 # [7] FOUR DOT PUNCTUATION..VERTICAL FOUR DOTS 2090..2094 ; 4.1 # [5] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER SCHWA 20B2..20B5 ; 4.1 # [4] GUARANI SIGN..CEDI SIGN 20EB ; 4.1 # COMBINING LONG DOUBLE SOLIDUS OVERLAY 213C ; 4.1 # DOUBLE-STRUCK SMALL PI 214C ; 4.1 # PER SIGN 23D1..23DB ; 4.1 # [11] METRICAL BREVE..FUSE 2618 ; 4.1 # SHAMROCK 267E..267F ; 4.1 # [2] PERMANENT PAPER SIGN..WHEELCHAIR SYMBOL 2692..269C ; 4.1 # [11] HAMMER AND PICK..FLEUR-DE-LIS 26A2..26B1 ; 4.1 # [16] DOUBLED FEMALE SIGN..FUNERAL URN 27C0..27C6 ; 4.1 # [7] THREE DIMENSIONAL ANGLE..RIGHT S-SHAPED BAG DELIMITER 2B0E..2B13 ; 4.1 # [6] RIGHTWARDS ARROW WITH TIP DOWNWARDS..SQUARE WITH BOTTOM HALF BLACK 2C00..2C2E ; 4.1 # [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE 2C30..2C5E ; 4.1 # [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE 2C80..2CEA ; 4.1 # [107] COPTIC CAPITAL LETTER ALFA..COPTIC SYMBOL SHIMA SIMA 2CF9..2D25 ; 4.1 # [45] COPTIC OLD NUBIAN FULL STOP..GEORGIAN SMALL LETTER HOE 2D30..2D65 ; 4.1 # [54] TIFINAGH LETTER YA..TIFINAGH LETTER YAZZ 2D6F ; 4.1 # TIFINAGH MODIFIER LETTER LABIALIZATION MARK 2D80..2D96 ; 4.1 # [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE 2DA0..2DA6 ; 4.1 # [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO 2DA8..2DAE ; 4.1 # [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO 2DB0..2DB6 ; 4.1 # [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO 2DB8..2DBE ; 4.1 # [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO 2DC0..2DC6 ; 4.1 # [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO 2DC8..2DCE ; 4.1 # [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO 2DD0..2DD6 ; 4.1 # [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO 2DD8..2DDE ; 4.1 # [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO 2E00..2E17 ; 4.1 # [24] RIGHT ANGLE SUBSTITUTION MARKER..DOUBLE OBLIQUE HYPHEN 2E1C..2E1D ; 4.1 # [2] LEFT LOW PARAPHRASE BRACKET..RIGHT LOW PARAPHRASE BRACKET 31C0..31CF ; 4.1 # [16] CJK STROKE T..CJK STROKE N 327E ; 4.1 # CIRCLED HANGUL IEUNG U 9FA6..9FBB ; 4.1 # [22] CJK UNIFIED IDEOGRAPH-9FA6..CJK UNIFIED IDEOGRAPH-9FBB A700..A716 ; 4.1 # [23] MODIFIER LETTER CHINESE TONE YIN PING..MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR A800..A82B ; 4.1 # [44] SYLOTI NAGRI LETTER A..SYLOTI NAGRI POETRY MARK-4 FA70..FAD9 ; 4.1 # [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 FE10..FE19 ; 4.1 # [10] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS 10140..1018A ; 4.1 # [75] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ZERO SIGN 103A0..103C3 ; 4.1 # [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA 103C8..103D5 ; 4.1 # [14] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN NUMBER HUNDRED 10A00..10A03 ; 4.1 # [4] KHAROSHTHI LETTER A..KHAROSHTHI VOWEL SIGN VOCALIC R 10A05..10A06 ; 4.1 # [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O 10A0C..10A13 ; 4.1 # [8] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI LETTER GHA 10A15..10A17 ; 4.1 # [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA 10A19..10A33 ; 4.1 # [27] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER TTTHA 10A38..10A3A ; 4.1 # [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW 10A3F..10A47 ; 4.1 # [9] KHAROSHTHI VIRAMA..KHAROSHTHI NUMBER ONE THOUSAND 10A50..10A58 ; 4.1 # [9] KHAROSHTHI PUNCTUATION DOT..KHAROSHTHI PUNCTUATION LINES 1D200..1D245 ; 4.1 # [70] GREEK VOCAL NOTATION SYMBOL-1..GREEK MUSICAL LEIMMA 1D6A4..1D6A5 ; 4.1 # [2] MATHEMATICAL ITALIC SMALL DOTLESS I..MATHEMATICAL ITALIC SMALL DOTLESS J # Total code points: 1273 # ================================================ # Age=V5_0 # Newly assigned in Unicode 5.0.0 (July, 2006) 0242..024F ; 5.0 # [14] LATIN SMALL LETTER GLOTTAL STOP..LATIN SMALL LETTER Y WITH STROKE 037B..037D ; 5.0 # [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL 04CF ; 5.0 # CYRILLIC SMALL LETTER PALOCHKA 04FA..04FF ; 5.0 # [6] CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK..CYRILLIC SMALL LETTER HA WITH STROKE 0510..0513 ; 5.0 # [4] CYRILLIC CAPITAL LETTER REVERSED ZE..CYRILLIC SMALL LETTER EL WITH HOOK 05BA ; 5.0 # HEBREW POINT HOLAM HASER FOR VAV 07C0..07FA ; 5.0 # [59] NKO DIGIT ZERO..NKO LAJANYALAN 097B..097C ; 5.0 # [2] DEVANAGARI LETTER GGA..DEVANAGARI LETTER JJA 097E..097F ; 5.0 # [2] DEVANAGARI LETTER DDDA..DEVANAGARI LETTER BBA 0CE2..0CE3 ; 5.0 # [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL 0CF1..0CF2 ; 5.0 # [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA 1B00..1B4B ; 5.0 # [76] BALINESE SIGN ULU RICEM..BALINESE LETTER ASYURA SASAK 1B50..1B7C ; 5.0 # [45] BALINESE DIGIT ZERO..BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING 1DC4..1DCA ; 5.0 # [7] COMBINING MACRON-ACUTE..COMBINING LATIN SMALL LETTER R BELOW 1DFE..1DFF ; 5.0 # [2] COMBINING LEFT ARROWHEAD ABOVE..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW 20EC..20EF ; 5.0 # [4] COMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDS..COMBINING RIGHT ARROW BELOW 214D..214E ; 5.0 # [2] AKTIESELSKAB..TURNED SMALL F 2184 ; 5.0 # LATIN SMALL LETTER REVERSED C 23DC..23E7 ; 5.0 # [12] TOP PARENTHESIS..ELECTRICAL INTERSECTION 26B2 ; 5.0 # NEUTER 27C7..27CA ; 5.0 # [4] OR WITH DOT INSIDE..VERTICAL BAR WITH HORIZONTAL STROKE 2B14..2B1A ; 5.0 # [7] SQUARE WITH UPPER RIGHT DIAGONAL HALF BLACK..DOTTED SQUARE 2B20..2B23 ; 5.0 # [4] WHITE PENTAGON..HORIZONTAL BLACK HEXAGON 2C60..2C6C ; 5.0 # [13] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN SMALL LETTER Z WITH DESCENDER 2C74..2C77 ; 5.0 # [4] LATIN SMALL LETTER V WITH CURL..LATIN SMALL LETTER TAILLESS PHI A717..A71A ; 5.0 # [4] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOWER RIGHT CORNER ANGLE A720..A721 ; 5.0 # [2] MODIFIER LETTER STRESS AND HIGH TONE..MODIFIER LETTER STRESS AND LOW TONE A840..A877 ; 5.0 # [56] PHAGS-PA LETTER KA..PHAGS-PA MARK DOUBLE SHAD 10900..10919 ; 5.0 # [26] PHOENICIAN LETTER ALF..PHOENICIAN NUMBER ONE HUNDRED 1091F ; 5.0 # PHOENICIAN WORD SEPARATOR 12000..1236E ; 5.0 # [879] CUNEIFORM SIGN A..CUNEIFORM SIGN ZUM 12400..12462 ; 5.0 # [99] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER 12470..12473 ; 5.0 # [4] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON 1D360..1D371 ; 5.0 # [18] COUNTING ROD UNIT DIGIT ONE..COUNTING ROD TENS DIGIT NINE 1D7CA..1D7CB ; 5.0 # [2] MATHEMATICAL BOLD CAPITAL DIGAMMA..MATHEMATICAL BOLD SMALL DIGAMMA # Total code points: 1369 # ================================================ # Age=V5_1 # Newly assigned in Unicode 5.1.0 (March, 2008) 0370..0373 ; 5.1 # [4] GREEK CAPITAL LETTER HETA..GREEK SMALL LETTER ARCHAIC SAMPI 0376..0377 ; 5.1 # [2] GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA..GREEK SMALL LETTER PAMPHYLIAN DIGAMMA 03CF ; 5.1 # GREEK CAPITAL KAI SYMBOL 0487 ; 5.1 # COMBINING CYRILLIC POKRYTIE 0514..0523 ; 5.1 # [16] CYRILLIC CAPITAL LETTER LHA..CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK 0606..060A ; 5.1 # [5] ARABIC-INDIC CUBE ROOT..ARABIC-INDIC PER TEN THOUSAND SIGN 0616..061A ; 5.1 # [5] ARABIC SMALL HIGH LIGATURE ALEF WITH LAM WITH YEH..ARABIC SMALL KASRA 063B..063F ; 5.1 # [5] ARABIC LETTER KEHEH WITH TWO DOTS ABOVE..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE 076E..077F ; 5.1 # [18] ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH BELOW..ARABIC LETTER KAF WITH TWO DOTS ABOVE 0971..0972 ; 5.1 # [2] DEVANAGARI SIGN HIGH SPACING DOT..DEVANAGARI LETTER CANDRA A 0A51 ; 5.1 # GURMUKHI SIGN UDAAT 0A75 ; 5.1 # GURMUKHI SIGN YAKASH 0B44 ; 5.1 # ORIYA VOWEL SIGN VOCALIC RR 0B62..0B63 ; 5.1 # [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL 0BD0 ; 5.1 # TAMIL OM 0C3D ; 5.1 # TELUGU SIGN AVAGRAHA 0C58..0C59 ; 5.1 # [2] TELUGU LETTER TSA..TELUGU LETTER DZA 0C62..0C63 ; 5.1 # [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL 0C78..0C7F ; 5.1 # [8] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU SIGN TUUMU 0D3D ; 5.1 # MALAYALAM SIGN AVAGRAHA 0D44 ; 5.1 # MALAYALAM VOWEL SIGN VOCALIC RR 0D62..0D63 ; 5.1 # [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL 0D70..0D75 ; 5.1 # [6] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE QUARTERS 0D79..0D7F ; 5.1 # [7] MALAYALAM DATE MARK..MALAYALAM LETTER CHILLU K 0F6B..0F6C ; 5.1 # [2] TIBETAN LETTER KKA..TIBETAN LETTER RRA 0FCE ; 5.1 # TIBETAN SIGN RDEL NAG RDEL DKAR 0FD2..0FD4 ; 5.1 # [3] TIBETAN MARK NYIS TSHEG..TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA 1022 ; 5.1 # MYANMAR LETTER SHAN A 1028 ; 5.1 # MYANMAR LETTER MON E 102B ; 5.1 # MYANMAR VOWEL SIGN TALL AA 1033..1035 ; 5.1 # [3] MYANMAR VOWEL SIGN MON II..MYANMAR VOWEL SIGN E ABOVE 103A..103F ; 5.1 # [6] MYANMAR SIGN ASAT..MYANMAR LETTER GREAT SA 105A..1099 ; 5.1 # [64] MYANMAR LETTER MON NGA..MYANMAR SHAN DIGIT NINE 109E..109F ; 5.1 # [2] MYANMAR SYMBOL SHAN ONE..MYANMAR SYMBOL SHAN EXCLAMATION 18AA ; 5.1 # MONGOLIAN LETTER MANCHU ALI GALI LHA 1B80..1BAA ; 5.1 # [43] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PAMAAEH 1BAE..1BB9 ; 5.1 # [12] SUNDANESE LETTER KHA..SUNDANESE DIGIT NINE 1C00..1C37 ; 5.1 # [56] LEPCHA LETTER KA..LEPCHA SIGN NUKTA 1C3B..1C49 ; 5.1 # [15] LEPCHA PUNCTUATION TA-ROL..LEPCHA DIGIT NINE 1C4D..1C7F ; 5.1 # [51] LEPCHA LETTER TTA..OL CHIKI PUNCTUATION DOUBLE MUCAAD 1DCB..1DE6 ; 5.1 # [28] COMBINING BREVE-MACRON..COMBINING LATIN SMALL LETTER Z 1E9C..1E9F ; 5.1 # [4] LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE..LATIN SMALL LETTER DELTA 1EFA..1EFF ; 5.1 # [6] LATIN CAPITAL LETTER MIDDLE-WELSH LL..LATIN SMALL LETTER Y WITH LOOP 2064 ; 5.1 # INVISIBLE PLUS 20F0 ; 5.1 # COMBINING ASTERISK ABOVE 214F ; 5.1 # SYMBOL FOR SAMARITAN SOURCE 2185..2188 ; 5.1 # [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND 269D ; 5.1 # OUTLINED WHITE STAR 26B3..26BC ; 5.1 # [10] CERES..SESQUIQUADRATE 26C0..26C3 ; 5.1 # [4] WHITE DRAUGHTS MAN..BLACK DRAUGHTS KING 27CC ; 5.1 # LONG DIVISION 27EC..27EF ; 5.1 # [4] MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET..MATHEMATICAL RIGHT FLATTENED PARENTHESIS 2B1B..2B1F ; 5.1 # [5] BLACK LARGE SQUARE..BLACK PENTAGON 2B24..2B4C ; 5.1 # [41] BLACK LARGE CIRCLE..RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR 2B50..2B54 ; 5.1 # [5] WHITE MEDIUM STAR..WHITE RIGHT-POINTING PENTAGON 2C6D..2C6F ; 5.1 # [3] LATIN CAPITAL LETTER ALPHA..LATIN CAPITAL LETTER TURNED A 2C71..2C73 ; 5.1 # [3] LATIN SMALL LETTER V WITH RIGHT HOOK..LATIN SMALL LETTER W WITH HOOK 2C78..2C7D ; 5.1 # [6] LATIN SMALL LETTER E WITH NOTCH..MODIFIER LETTER CAPITAL V 2DE0..2DFF ; 5.1 # [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS 2E18..2E1B ; 5.1 # [4] INVERTED INTERROBANG..TILDE WITH RING ABOVE 2E1E..2E30 ; 5.1 # [19] TILDE WITH DOT ABOVE..RING POINT 312D ; 5.1 # BOPOMOFO LETTER IH 31D0..31E3 ; 5.1 # [20] CJK STROKE H..CJK STROKE Q 9FBC..9FC3 ; 5.1 # [8] CJK UNIFIED IDEOGRAPH-9FBC..CJK UNIFIED IDEOGRAPH-9FC3 A500..A62B ; 5.1 # [300] VAI SYLLABLE EE..VAI SYLLABLE NDOLE DO A640..A65F ; 5.1 # [32] CYRILLIC CAPITAL LETTER ZEMLYA..CYRILLIC SMALL LETTER YN A662..A673 ; 5.1 # [18] CYRILLIC CAPITAL LETTER SOFT DE..SLAVONIC ASTERISK A67C..A697 ; 5.1 # [28] COMBINING CYRILLIC KAVYKA..CYRILLIC SMALL LETTER SHWE A71B..A71F ; 5.1 # [5] MODIFIER LETTER RAISED UP ARROW..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK A722..A78C ; 5.1 # [107] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN SMALL LETTER SALTILLO A7FB..A7FF ; 5.1 # [5] LATIN EPIGRAPHIC LETTER REVERSED F..LATIN EPIGRAPHIC LETTER ARCHAIC M A880..A8C4 ; 5.1 # [69] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VIRAMA A8CE..A8D9 ; 5.1 # [12] SAURASHTRA DANDA..SAURASHTRA DIGIT NINE A900..A953 ; 5.1 # [84] KAYAH LI DIGIT ZERO..REJANG VIRAMA A95F ; 5.1 # REJANG SECTION MARK AA00..AA36 ; 5.1 # [55] CHAM LETTER A..CHAM CONSONANT SIGN WA AA40..AA4D ; 5.1 # [14] CHAM LETTER FINAL K..CHAM CONSONANT SIGN FINAL H AA50..AA59 ; 5.1 # [10] CHAM DIGIT ZERO..CHAM DIGIT NINE AA5C..AA5F ; 5.1 # [4] CHAM PUNCTUATION SPIRAL..CHAM PUNCTUATION TRIPLE DANDA FE24..FE26 ; 5.1 # [3] COMBINING MACRON LEFT HALF..COMBINING CONJOINING MACRON 10190..1019B ; 5.1 # [12] ROMAN SEXTANS SIGN..ROMAN CENTURIAL SIGN 101D0..101FD ; 5.1 # [46] PHAISTOS DISC SIGN PEDESTRIAN..PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE 10280..1029C ; 5.1 # [29] LYCIAN LETTER A..LYCIAN LETTER X 102A0..102D0 ; 5.1 # [49] CARIAN LETTER A..CARIAN LETTER UUU3 10920..10939 ; 5.1 # [26] LYDIAN LETTER A..LYDIAN LETTER C 1093F ; 5.1 # LYDIAN TRIANGULAR MARK 1D129 ; 5.1 # MUSICAL SYMBOL MULTIPLE MEASURE REST 1F000..1F02B ; 5.1 # [44] MAHJONG TILE EAST WIND..MAHJONG TILE BACK 1F030..1F093 ; 5.1 # [100] DOMINO TILE HORIZONTAL BACK..DOMINO TILE VERTICAL-06-06 # Total code points: 1624 # ================================================ # Age=V5_2 # Newly assigned in Unicode 5.2.0 (October, 2009) 0524..0525 ; 5.2 # [2] CYRILLIC CAPITAL LETTER PE WITH DESCENDER..CYRILLIC SMALL LETTER PE WITH DESCENDER 0800..082D ; 5.2 # [46] SAMARITAN LETTER ALAF..SAMARITAN MARK NEQUDAA 0830..083E ; 5.2 # [15] SAMARITAN PUNCTUATION NEQUDAA..SAMARITAN PUNCTUATION ANNAAU 0900 ; 5.2 # DEVANAGARI SIGN INVERTED CANDRABINDU 094E ; 5.2 # DEVANAGARI VOWEL SIGN PRISHTHAMATRA E 0955 ; 5.2 # DEVANAGARI VOWEL SIGN CANDRA LONG E 0979..097A ; 5.2 # [2] DEVANAGARI LETTER ZHA..DEVANAGARI LETTER HEAVY YA 09FB ; 5.2 # BENGALI GANDA MARK 0FD5..0FD8 ; 5.2 # [4] RIGHT-FACING SVASTI SIGN..LEFT-FACING SVASTI SIGN WITH DOTS 109A..109D ; 5.2 # [4] MYANMAR SIGN KHAMTI TONE-1..MYANMAR VOWEL SIGN AITON AI 115A..115E ; 5.2 # [5] HANGUL CHOSEONG KIYEOK-TIKEUT..HANGUL CHOSEONG TIKEUT-RIEUL 11A3..11A7 ; 5.2 # [5] HANGUL JUNGSEONG A-EU..HANGUL JUNGSEONG O-YAE 11FA..11FF ; 5.2 # [6] HANGUL JONGSEONG KIYEOK-NIEUN..HANGUL JONGSEONG SSANGNIEUN 1400 ; 5.2 # CANADIAN SYLLABICS HYPHEN 1677..167F ; 5.2 # [9] CANADIAN SYLLABICS WOODS-CREE THWEE..CANADIAN SYLLABICS BLACKFOOT W 18B0..18F5 ; 5.2 # [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S 19AA..19AB ; 5.2 # [2] NEW TAI LUE LETTER HIGH SUA..NEW TAI LUE LETTER LOW SUA 19DA ; 5.2 # NEW TAI LUE THAM DIGIT ONE 1A20..1A5E ; 5.2 # [63] TAI THAM LETTER HIGH KA..TAI THAM CONSONANT SIGN SA 1A60..1A7C ; 5.2 # [29] TAI THAM SIGN SAKOT..TAI THAM SIGN KHUEN-LUE KARAN 1A7F..1A89 ; 5.2 # [11] TAI THAM COMBINING CRYPTOGRAMMIC DOT..TAI THAM HORA DIGIT NINE 1A90..1A99 ; 5.2 # [10] TAI THAM THAM DIGIT ZERO..TAI THAM THAM DIGIT NINE 1AA0..1AAD ; 5.2 # [14] TAI THAM SIGN WIANG..TAI THAM SIGN CAANG 1CD0..1CF2 ; 5.2 # [35] VEDIC TONE KARSHANA..VEDIC SIGN ARDHAVISARGA 1DFD ; 5.2 # COMBINING ALMOST EQUAL TO BELOW 20B6..20B8 ; 5.2 # [3] LIVRE TOURNOIS SIGN..TENGE SIGN 2150..2152 ; 5.2 # [3] VULGAR FRACTION ONE SEVENTH..VULGAR FRACTION ONE TENTH 2189 ; 5.2 # VULGAR FRACTION ZERO THIRDS 23E8 ; 5.2 # DECIMAL EXPONENT SYMBOL 269E..269F ; 5.2 # [2] THREE LINES CONVERGING RIGHT..THREE LINES CONVERGING LEFT 26BD..26BF ; 5.2 # [3] SOCCER BALL..SQUARED KEY 26C4..26CD ; 5.2 # [10] SNOWMAN WITHOUT SNOW..DISABLED CAR 26CF..26E1 ; 5.2 # [19] PICK..RESTRICTED LEFT ENTRY-2 26E3 ; 5.2 # HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE 26E8..26FF ; 5.2 # [24] BLACK CROSS ON SHIELD..WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE 2757 ; 5.2 # HEAVY EXCLAMATION MARK SYMBOL 2B55..2B59 ; 5.2 # [5] HEAVY LARGE CIRCLE..HEAVY CIRCLED SALTIRE 2C70 ; 5.2 # LATIN CAPITAL LETTER TURNED ALPHA 2C7E..2C7F ; 5.2 # [2] LATIN CAPITAL LETTER S WITH SWASH TAIL..LATIN CAPITAL LETTER Z WITH SWASH TAIL 2CEB..2CF1 ; 5.2 # [7] COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI..COPTIC COMBINING SPIRITUS LENIS 2E31 ; 5.2 # WORD SEPARATOR MIDDLE DOT 3244..324F ; 5.2 # [12] CIRCLED IDEOGRAPH QUESTION..CIRCLED NUMBER EIGHTY ON BLACK SQUARE 9FC4..9FCB ; 5.2 # [8] CJK UNIFIED IDEOGRAPH-9FC4..CJK UNIFIED IDEOGRAPH-9FCB A4D0..A4FF ; 5.2 # [48] LISU LETTER BA..LISU PUNCTUATION FULL STOP A6A0..A6F7 ; 5.2 # [88] BAMUM LETTER A..BAMUM QUESTION MARK A830..A839 ; 5.2 # [10] NORTH INDIC FRACTION ONE QUARTER..NORTH INDIC QUANTITY MARK A8E0..A8FB ; 5.2 # [28] COMBINING DEVANAGARI DIGIT ZERO..DEVANAGARI HEADSTROKE A960..A97C ; 5.2 # [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH A980..A9CD ; 5.2 # [78] JAVANESE SIGN PANYANGGA..JAVANESE TURNED PADA PISELEH A9CF..A9D9 ; 5.2 # [11] JAVANESE PANGRANGKEP..JAVANESE DIGIT NINE A9DE..A9DF ; 5.2 # [2] JAVANESE PADA TIRTA TUMETES..JAVANESE PADA ISEN-ISEN AA60..AA7B ; 5.2 # [28] MYANMAR LETTER KHAMTI GA..MYANMAR SIGN PAO KAREN TONE AA80..AAC2 ; 5.2 # [67] TAI VIET LETTER LOW KO..TAI VIET TONE MAI SONG AADB..AADF ; 5.2 # [5] TAI VIET SYMBOL KON..TAI VIET SYMBOL KOI KOI ABC0..ABED ; 5.2 # [46] MEETEI MAYEK LETTER KOK..MEETEI MAYEK APUN IYEK ABF0..ABF9 ; 5.2 # [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE D7B0..D7C6 ; 5.2 # [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E D7CB..D7FB ; 5.2 # [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH FA6B..FA6D ; 5.2 # [3] CJK COMPATIBILITY IDEOGRAPH-FA6B..CJK COMPATIBILITY IDEOGRAPH-FA6D 10840..10855 ; 5.2 # [22] IMPERIAL ARAMAIC LETTER ALEPH..IMPERIAL ARAMAIC LETTER TAW 10857..1085F ; 5.2 # [9] IMPERIAL ARAMAIC SECTION SIGN..IMPERIAL ARAMAIC NUMBER TEN THOUSAND 1091A..1091B ; 5.2 # [2] PHOENICIAN NUMBER TWO..PHOENICIAN NUMBER THREE 10A60..10A7F ; 5.2 # [32] OLD SOUTH ARABIAN LETTER HE..OLD SOUTH ARABIAN NUMERIC INDICATOR 10B00..10B35 ; 5.2 # [54] AVESTAN LETTER A..AVESTAN LETTER HE 10B39..10B55 ; 5.2 # [29] AVESTAN ABBREVIATION MARK..INSCRIPTIONAL PARTHIAN LETTER TAW 10B58..10B72 ; 5.2 # [27] INSCRIPTIONAL PARTHIAN NUMBER ONE..INSCRIPTIONAL PAHLAVI LETTER TAW 10B78..10B7F ; 5.2 # [8] INSCRIPTIONAL PAHLAVI NUMBER ONE..INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND 10C00..10C48 ; 5.2 # [73] OLD TURKIC LETTER ORKHON A..OLD TURKIC LETTER ORKHON BASH 10E60..10E7E ; 5.2 # [31] RUMI DIGIT ONE..RUMI FRACTION TWO THIRDS 11080..110BC ; 5.2 # [61] KAITHI SIGN CANDRABINDU..KAITHI ENUMERATION SIGN 110BD ; 5.2 # KAITHI NUMBER SIGN 110BE..110C1 ; 5.2 # [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA 13000..1342E ; 5.2 # [1071] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH AA032 1F100..1F10A ; 5.2 # [11] DIGIT ZERO FULL STOP..DIGIT NINE COMMA 1F110..1F12E ; 5.2 # [31] PARENTHESIZED LATIN CAPITAL LETTER A..CIRCLED WZ 1F131 ; 5.2 # SQUARED LATIN CAPITAL LETTER B 1F13D ; 5.2 # SQUARED LATIN CAPITAL LETTER N 1F13F ; 5.2 # SQUARED LATIN CAPITAL LETTER P 1F142 ; 5.2 # SQUARED LATIN CAPITAL LETTER S 1F146 ; 5.2 # SQUARED LATIN CAPITAL LETTER W 1F14A..1F14E ; 5.2 # [5] SQUARED HV..SQUARED PPV 1F157 ; 5.2 # NEGATIVE CIRCLED LATIN CAPITAL LETTER H 1F15F ; 5.2 # NEGATIVE CIRCLED LATIN CAPITAL LETTER P 1F179 ; 5.2 # NEGATIVE SQUARED LATIN CAPITAL LETTER J 1F17B..1F17C ; 5.2 # [2] NEGATIVE SQUARED LATIN CAPITAL LETTER L..NEGATIVE SQUARED LATIN CAPITAL LETTER M 1F17F ; 5.2 # NEGATIVE SQUARED LATIN CAPITAL LETTER P 1F18A..1F18D ; 5.2 # [4] CROSSED NEGATIVE SQUARED LATIN CAPITAL LETTER P..NEGATIVE SQUARED SA 1F190 ; 5.2 # SQUARE DJ 1F200 ; 5.2 # SQUARE HIRAGANA HOKA 1F210..1F231 ; 5.2 # [34] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-6253 1F240..1F248 ; 5.2 # [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557 2A700..2B734 ; 5.2 # [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 # Total code points: 6648 # ================================================ # Age=V6_0 # Newly assigned in Unicode 6.0.0 (October, 2010) 0526..0527 ; 6.0 # [2] CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER..CYRILLIC SMALL LETTER SHHA WITH DESCENDER 0620 ; 6.0 # ARABIC LETTER KASHMIRI YEH 065F ; 6.0 # ARABIC WAVY HAMZA BELOW 0840..085B ; 6.0 # [28] MANDAIC LETTER HALQA..MANDAIC GEMINATION MARK 085E ; 6.0 # MANDAIC PUNCTUATION 093A..093B ; 6.0 # [2] DEVANAGARI VOWEL SIGN OE..DEVANAGARI VOWEL SIGN OOE 094F ; 6.0 # DEVANAGARI VOWEL SIGN AW 0956..0957 ; 6.0 # [2] DEVANAGARI VOWEL SIGN UE..DEVANAGARI VOWEL SIGN UUE 0973..0977 ; 6.0 # [5] DEVANAGARI LETTER OE..DEVANAGARI LETTER UUE 0B72..0B77 ; 6.0 # [6] ORIYA FRACTION ONE QUARTER..ORIYA FRACTION THREE SIXTEENTHS 0D29 ; 6.0 # MALAYALAM LETTER NNNA 0D3A ; 6.0 # MALAYALAM LETTER TTTA 0D4E ; 6.0 # MALAYALAM LETTER DOT REPH 0F8C..0F8F ; 6.0 # [4] TIBETAN SIGN INVERTED MCHU CAN..TIBETAN SUBJOINED SIGN INVERTED MCHU CAN 0FD9..0FDA ; 6.0 # [2] TIBETAN MARK LEADING MCHAN RTAGS..TIBETAN MARK TRAILING MCHAN RTAGS 135D..135E ; 6.0 # [2] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING VOWEL LENGTH MARK 1BC0..1BF3 ; 6.0 # [52] BATAK LETTER A..BATAK PANONGONAN 1BFC..1BFF ; 6.0 # [4] BATAK SYMBOL BINDU NA METEK..BATAK SYMBOL BINDU PANGOLAT 1DFC ; 6.0 # COMBINING DOUBLE INVERTED BREVE BELOW 2095..209C ; 6.0 # [8] LATIN SUBSCRIPT SMALL LETTER H..LATIN SUBSCRIPT SMALL LETTER T 20B9 ; 6.0 # INDIAN RUPEE SIGN 23E9..23F3 ; 6.0 # [11] BLACK RIGHT-POINTING DOUBLE TRIANGLE..HOURGLASS WITH FLOWING SAND 26CE ; 6.0 # OPHIUCHUS 26E2 ; 6.0 # ASTRONOMICAL SYMBOL FOR URANUS 26E4..26E7 ; 6.0 # [4] PENTAGRAM..INVERTED PENTAGRAM 2705 ; 6.0 # WHITE HEAVY CHECK MARK 270A..270B ; 6.0 # [2] RAISED FIST..RAISED HAND 2728 ; 6.0 # SPARKLES 274C ; 6.0 # CROSS MARK 274E ; 6.0 # NEGATIVE SQUARED CROSS MARK 2753..2755 ; 6.0 # [3] BLACK QUESTION MARK ORNAMENT..WHITE EXCLAMATION MARK ORNAMENT 275F..2760 ; 6.0 # [2] HEAVY LOW SINGLE COMMA QUOTATION MARK ORNAMENT..HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT 2795..2797 ; 6.0 # [3] HEAVY PLUS SIGN..HEAVY DIVISION SIGN 27B0 ; 6.0 # CURLY LOOP 27BF ; 6.0 # DOUBLE CURLY LOOP 27CE..27CF ; 6.0 # [2] SQUARED LOGICAL AND..SQUARED LOGICAL OR 2D70 ; 6.0 # TIFINAGH SEPARATOR MARK 2D7F ; 6.0 # TIFINAGH CONSONANT JOINER 31B8..31BA ; 6.0 # [3] BOPOMOFO LETTER GH..BOPOMOFO LETTER ZY A660..A661 ; 6.0 # [2] CYRILLIC CAPITAL LETTER REVERSED TSE..CYRILLIC SMALL LETTER REVERSED TSE A78D..A78E ; 6.0 # [2] LATIN CAPITAL LETTER TURNED H..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT A790..A791 ; 6.0 # [2] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER N WITH DESCENDER A7A0..A7A9 ; 6.0 # [10] LATIN CAPITAL LETTER G WITH OBLIQUE STROKE..LATIN SMALL LETTER S WITH OBLIQUE STROKE A7FA ; 6.0 # LATIN LETTER SMALL CAPITAL TURNED M AB01..AB06 ; 6.0 # [6] ETHIOPIC SYLLABLE TTHU..ETHIOPIC SYLLABLE TTHO AB09..AB0E ; 6.0 # [6] ETHIOPIC SYLLABLE DDHU..ETHIOPIC SYLLABLE DDHO AB11..AB16 ; 6.0 # [6] ETHIOPIC SYLLABLE DZU..ETHIOPIC SYLLABLE DZO AB20..AB26 ; 6.0 # [7] ETHIOPIC SYLLABLE CCHHA..ETHIOPIC SYLLABLE CCHHO AB28..AB2E ; 6.0 # [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO FBB2..FBC1 ; 6.0 # [16] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL SMALL TAH BELOW 11000..1104D ; 6.0 # [78] BRAHMI SIGN CANDRABINDU..BRAHMI PUNCTUATION LOTUS 11052..1106F ; 6.0 # [30] BRAHMI NUMBER ONE..BRAHMI DIGIT NINE 16800..16A38 ; 6.0 # [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ 1B000..1B001 ; 6.0 # [2] KATAKANA LETTER ARCHAIC E..HIRAGANA LETTER ARCHAIC YE 1F0A0..1F0AE ; 6.0 # [15] PLAYING CARD BACK..PLAYING CARD KING OF SPADES 1F0B1..1F0BE ; 6.0 # [14] PLAYING CARD ACE OF HEARTS..PLAYING CARD KING OF HEARTS 1F0C1..1F0CF ; 6.0 # [15] PLAYING CARD ACE OF DIAMONDS..PLAYING CARD BLACK JOKER 1F0D1..1F0DF ; 6.0 # [15] PLAYING CARD ACE OF CLUBS..PLAYING CARD WHITE JOKER 1F130 ; 6.0 # SQUARED LATIN CAPITAL LETTER A 1F132..1F13C ; 6.0 # [11] SQUARED LATIN CAPITAL LETTER C..SQUARED LATIN CAPITAL LETTER M 1F13E ; 6.0 # SQUARED LATIN CAPITAL LETTER O 1F140..1F141 ; 6.0 # [2] SQUARED LATIN CAPITAL LETTER Q..SQUARED LATIN CAPITAL LETTER R 1F143..1F145 ; 6.0 # [3] SQUARED LATIN CAPITAL LETTER T..SQUARED LATIN CAPITAL LETTER V 1F147..1F149 ; 6.0 # [3] SQUARED LATIN CAPITAL LETTER X..SQUARED LATIN CAPITAL LETTER Z 1F14F..1F156 ; 6.0 # [8] SQUARED WC..NEGATIVE CIRCLED LATIN CAPITAL LETTER G 1F158..1F15E ; 6.0 # [7] NEGATIVE CIRCLED LATIN CAPITAL LETTER I..NEGATIVE CIRCLED LATIN CAPITAL LETTER O 1F160..1F169 ; 6.0 # [10] NEGATIVE CIRCLED LATIN CAPITAL LETTER Q..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z 1F170..1F178 ; 6.0 # [9] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER I 1F17A ; 6.0 # NEGATIVE SQUARED LATIN CAPITAL LETTER K 1F17D..1F17E ; 6.0 # [2] NEGATIVE SQUARED LATIN CAPITAL LETTER N..NEGATIVE SQUARED LATIN CAPITAL LETTER O 1F180..1F189 ; 6.0 # [10] NEGATIVE SQUARED LATIN CAPITAL LETTER Q..NEGATIVE SQUARED LATIN CAPITAL LETTER Z 1F18E..1F18F ; 6.0 # [2] NEGATIVE SQUARED AB..NEGATIVE SQUARED WC 1F191..1F19A ; 6.0 # [10] SQUARED CL..SQUARED VS 1F1E6..1F1FF ; 6.0 # [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z 1F201..1F202 ; 6.0 # [2] SQUARED KATAKANA KOKO..SQUARED KATAKANA SA 1F232..1F23A ; 6.0 # [9] SQUARED CJK UNIFIED IDEOGRAPH-7981..SQUARED CJK UNIFIED IDEOGRAPH-55B6 1F250..1F251 ; 6.0 # [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT 1F300..1F320 ; 6.0 # [33] CYCLONE..SHOOTING STAR 1F330..1F335 ; 6.0 # [6] CHESTNUT..CACTUS 1F337..1F37C ; 6.0 # [70] TULIP..BABY BOTTLE 1F380..1F393 ; 6.0 # [20] RIBBON..GRADUATION CAP 1F3A0..1F3C4 ; 6.0 # [37] CAROUSEL HORSE..SURFER 1F3C6..1F3CA ; 6.0 # [5] TROPHY..SWIMMER 1F3E0..1F3F0 ; 6.0 # [17] HOUSE BUILDING..EUROPEAN CASTLE 1F400..1F43E ; 6.0 # [63] RAT..PAW PRINTS 1F440 ; 6.0 # EYES 1F442..1F4F7 ; 6.0 # [182] EAR..CAMERA 1F4F9..1F4FC ; 6.0 # [4] VIDEO CAMERA..VIDEOCASSETTE 1F500..1F53D ; 6.0 # [62] TWISTED RIGHTWARDS ARROWS..DOWN-POINTING SMALL RED TRIANGLE 1F550..1F567 ; 6.0 # [24] CLOCK FACE ONE OCLOCK..CLOCK FACE TWELVE-THIRTY 1F5FB..1F5FF ; 6.0 # [5] MOUNT FUJI..MOYAI 1F601..1F610 ; 6.0 # [16] GRINNING FACE WITH SMILING EYES..NEUTRAL FACE 1F612..1F614 ; 6.0 # [3] UNAMUSED FACE..PENSIVE FACE 1F616 ; 6.0 # CONFOUNDED FACE 1F618 ; 6.0 # FACE THROWING A KISS 1F61A ; 6.0 # KISSING FACE WITH CLOSED EYES 1F61C..1F61E ; 6.0 # [3] FACE WITH STUCK-OUT TONGUE AND WINKING EYE..DISAPPOINTED FACE 1F620..1F625 ; 6.0 # [6] ANGRY FACE..DISAPPOINTED BUT RELIEVED FACE 1F628..1F62B ; 6.0 # [4] FEARFUL FACE..TIRED FACE 1F62D ; 6.0 # LOUDLY CRYING FACE 1F630..1F633 ; 6.0 # [4] FACE WITH OPEN MOUTH AND COLD SWEAT..FLUSHED FACE 1F635..1F640 ; 6.0 # [12] DIZZY FACE..WEARY CAT FACE 1F645..1F64F ; 6.0 # [11] FACE WITH NO GOOD GESTURE..PERSON WITH FOLDED HANDS 1F680..1F6C5 ; 6.0 # [70] ROCKET..LEFT LUGGAGE 1F700..1F773 ; 6.0 # [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE 2B740..2B81D ; 6.0 # [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D # Total code points: 2088 # ================================================ # Age=V6_1 # Newly assigned in Unicode 6.1.0 (January, 2012) 058F ; 6.1 # ARMENIAN DRAM SIGN 0604 ; 6.1 # ARABIC SIGN SAMVAT 08A0 ; 6.1 # ARABIC LETTER BEH WITH SMALL V BELOW 08A2..08AC ; 6.1 # [11] ARABIC LETTER JEEM WITH TWO DOTS ABOVE..ARABIC LETTER ROHINGYA YEH 08E4..08FE ; 6.1 # [27] ARABIC CURLY FATHA..ARABIC DAMMA WITH DOT 0AF0 ; 6.1 # GUJARATI ABBREVIATION SIGN 0EDE..0EDF ; 6.1 # [2] LAO LETTER KHMU GO..LAO LETTER KHMU NYO 10C7 ; 6.1 # GEORGIAN CAPITAL LETTER YN 10CD ; 6.1 # GEORGIAN CAPITAL LETTER AEN 10FD..10FF ; 6.1 # [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN 1BAB..1BAD ; 6.1 # [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA 1BBA..1BBF ; 6.1 # [6] SUNDANESE AVAGRAHA..SUNDANESE LETTER FINAL M 1CC0..1CC7 ; 6.1 # [8] SUNDANESE PUNCTUATION BINDU SURYA..SUNDANESE PUNCTUATION BINDU BA SATANGA 1CF3..1CF6 ; 6.1 # [4] VEDIC SIGN ROTATED ARDHAVISARGA..VEDIC SIGN UPADHMANIYA 27CB ; 6.1 # MATHEMATICAL RISING DIAGONAL 27CD ; 6.1 # MATHEMATICAL FALLING DIAGONAL 2CF2..2CF3 ; 6.1 # [2] COPTIC CAPITAL LETTER BOHAIRIC KHEI..COPTIC SMALL LETTER BOHAIRIC KHEI 2D27 ; 6.1 # GEORGIAN SMALL LETTER YN 2D2D ; 6.1 # GEORGIAN SMALL LETTER AEN 2D66..2D67 ; 6.1 # [2] TIFINAGH LETTER YE..TIFINAGH LETTER YO 2E32..2E3B ; 6.1 # [10] TURNED COMMA..THREE-EM DASH 9FCC ; 6.1 # CJK UNIFIED IDEOGRAPH-9FCC A674..A67B ; 6.1 # [8] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC LETTER OMEGA A69F ; 6.1 # COMBINING CYRILLIC LETTER IOTIFIED E A792..A793 ; 6.1 # [2] LATIN CAPITAL LETTER C WITH BAR..LATIN SMALL LETTER C WITH BAR A7AA ; 6.1 # LATIN CAPITAL LETTER H WITH HOOK A7F8..A7F9 ; 6.1 # [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE AAE0..AAF6 ; 6.1 # [23] MEETEI MAYEK LETTER E..MEETEI MAYEK VIRAMA FA2E..FA2F ; 6.1 # [2] CJK COMPATIBILITY IDEOGRAPH-FA2E..CJK COMPATIBILITY IDEOGRAPH-FA2F 10980..109B7 ; 6.1 # [56] MEROITIC HIEROGLYPHIC LETTER A..MEROITIC CURSIVE LETTER DA 109BE..109BF ; 6.1 # [2] MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN 110D0..110E8 ; 6.1 # [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE 110F0..110F9 ; 6.1 # [10] SORA SOMPENG DIGIT ZERO..SORA SOMPENG DIGIT NINE 11100..11134 ; 6.1 # [53] CHAKMA SIGN CANDRABINDU..CHAKMA MAAYYAA 11136..11143 ; 6.1 # [14] CHAKMA DIGIT ZERO..CHAKMA QUESTION MARK 11180..111C8 ; 6.1 # [73] SHARADA SIGN CANDRABINDU..SHARADA SEPARATOR 111D0..111D9 ; 6.1 # [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE 11680..116B7 ; 6.1 # [56] TAKRI LETTER A..TAKRI SIGN NUKTA 116C0..116C9 ; 6.1 # [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE 16F00..16F44 ; 6.1 # [69] MIAO LETTER PA..MIAO LETTER HHA 16F50..16F7E ; 6.1 # [47] MIAO LETTER NASALIZATION..MIAO VOWEL SIGN NG 16F8F..16F9F ; 6.1 # [17] MIAO TONE RIGHT..MIAO LETTER REFORMED TONE-8 1EE00..1EE03 ; 6.1 # [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL 1EE05..1EE1F ; 6.1 # [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF 1EE21..1EE22 ; 6.1 # [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM 1EE24 ; 6.1 # ARABIC MATHEMATICAL INITIAL HEH 1EE27 ; 6.1 # ARABIC MATHEMATICAL INITIAL HAH 1EE29..1EE32 ; 6.1 # [10] ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF 1EE34..1EE37 ; 6.1 # [4] ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH 1EE39 ; 6.1 # ARABIC MATHEMATICAL INITIAL DAD 1EE3B ; 6.1 # ARABIC MATHEMATICAL INITIAL GHAIN 1EE42 ; 6.1 # ARABIC MATHEMATICAL TAILED JEEM 1EE47 ; 6.1 # ARABIC MATHEMATICAL TAILED HAH 1EE49 ; 6.1 # ARABIC MATHEMATICAL TAILED YEH 1EE4B ; 6.1 # ARABIC MATHEMATICAL TAILED LAM 1EE4D..1EE4F ; 6.1 # [3] ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN 1EE51..1EE52 ; 6.1 # [2] ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF 1EE54 ; 6.1 # ARABIC MATHEMATICAL TAILED SHEEN 1EE57 ; 6.1 # ARABIC MATHEMATICAL TAILED KHAH 1EE59 ; 6.1 # ARABIC MATHEMATICAL TAILED DAD 1EE5B ; 6.1 # ARABIC MATHEMATICAL TAILED GHAIN 1EE5D ; 6.1 # ARABIC MATHEMATICAL TAILED DOTLESS NOON 1EE5F ; 6.1 # ARABIC MATHEMATICAL TAILED DOTLESS QAF 1EE61..1EE62 ; 6.1 # [2] ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM 1EE64 ; 6.1 # ARABIC MATHEMATICAL STRETCHED HEH 1EE67..1EE6A ; 6.1 # [4] ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF 1EE6C..1EE72 ; 6.1 # [7] ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF 1EE74..1EE77 ; 6.1 # [4] ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH 1EE79..1EE7C ; 6.1 # [4] ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH 1EE7E ; 6.1 # ARABIC MATHEMATICAL STRETCHED DOTLESS FEH 1EE80..1EE89 ; 6.1 # [10] ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH 1EE8B..1EE9B ; 6.1 # [17] ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN 1EEA1..1EEA3 ; 6.1 # [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL 1EEA5..1EEA9 ; 6.1 # [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH 1EEAB..1EEBB ; 6.1 # [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN 1EEF0..1EEF1 ; 6.1 # [2] ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL..ARABIC MATHEMATICAL OPERATOR HAH WITH DAL 1F16A..1F16B ; 6.1 # [2] RAISED MC SIGN..RAISED MD SIGN 1F540..1F543 ; 6.1 # [4] CIRCLED CROSS POMMEE..NOTCHED LEFT SEMICIRCLE WITH THREE DOTS 1F600 ; 6.1 # GRINNING FACE 1F611 ; 6.1 # EXPRESSIONLESS FACE 1F615 ; 6.1 # CONFUSED FACE 1F617 ; 6.1 # KISSING FACE 1F619 ; 6.1 # KISSING FACE WITH SMILING EYES 1F61B ; 6.1 # FACE WITH STUCK-OUT TONGUE 1F61F ; 6.1 # WORRIED FACE 1F626..1F627 ; 6.1 # [2] FROWNING FACE WITH OPEN MOUTH..ANGUISHED FACE 1F62C ; 6.1 # GRIMACING FACE 1F62E..1F62F ; 6.1 # [2] FACE WITH OPEN MOUTH..HUSHED FACE 1F634 ; 6.1 # SLEEPING FACE # Total code points: 732 # ================================================ # Age=V6_2 # Newly assigned in Unicode 6.2.0 (September, 2012) 20BA ; 6.2 # TURKISH LIRA SIGN # Total code points: 1 # ================================================ # Age=V6_3 # Newly assigned in Unicode 6.3.0 (September, 2013) 061C ; 6.3 # ARABIC LETTER MARK 2066..2069 ; 6.3 # [4] LEFT-TO-RIGHT ISOLATE..POP DIRECTIONAL ISOLATE # Total code points: 5 # ================================================ # Age=V7_0 # Newly assigned in Unicode 7.0.0 (June, 2014) 037F ; 7.0 # GREEK CAPITAL LETTER YOT 0528..052F ; 7.0 # [8] CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK..CYRILLIC SMALL LETTER EL WITH DESCENDER 058D..058E ; 7.0 # [2] RIGHT-FACING ARMENIAN ETERNITY SIGN..LEFT-FACING ARMENIAN ETERNITY SIGN 0605 ; 7.0 # ARABIC NUMBER MARK ABOVE 08A1 ; 7.0 # ARABIC LETTER BEH WITH HAMZA ABOVE 08AD..08B2 ; 7.0 # [6] ARABIC LETTER LOW ALEF..ARABIC LETTER ZAIN WITH INVERTED V ABOVE 08FF ; 7.0 # ARABIC MARK SIDEWAYS NOON GHUNNA 0978 ; 7.0 # DEVANAGARI LETTER MARWARI DDA 0980 ; 7.0 # BENGALI ANJI 0C00 ; 7.0 # TELUGU SIGN COMBINING CANDRABINDU ABOVE 0C34 ; 7.0 # TELUGU LETTER LLLA 0C81 ; 7.0 # KANNADA SIGN CANDRABINDU 0D01 ; 7.0 # MALAYALAM SIGN CANDRABINDU 0DE6..0DEF ; 7.0 # [10] SINHALA LITH DIGIT ZERO..SINHALA LITH DIGIT NINE 16F1..16F8 ; 7.0 # [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC 191D..191E ; 7.0 # [2] LIMBU LETTER GYAN..LIMBU LETTER TRA 1AB0..1ABE ; 7.0 # [15] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES OVERLAY 1CF8..1CF9 ; 7.0 # [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE 1DE7..1DF5 ; 7.0 # [15] COMBINING LATIN SMALL LETTER ALPHA..COMBINING UP TACK ABOVE 20BB..20BD ; 7.0 # [3] NORDIC MARK SIGN..RUBLE SIGN 23F4..23FA ; 7.0 # [7] BLACK MEDIUM LEFT-POINTING TRIANGLE..BLACK CIRCLE FOR RECORD 2700 ; 7.0 # BLACK SAFETY SCISSORS 2B4D..2B4F ; 7.0 # [3] DOWNWARDS TRIANGLE-HEADED ZIGZAG ARROW..SHORT BACKSLANTED SOUTH ARROW 2B5A..2B73 ; 7.0 # [26] SLANTED NORTH ARROW WITH HOOKED HEAD..DOWNWARDS TRIANGLE-HEADED ARROW TO BAR 2B76..2B95 ; 7.0 # [32] NORTH WEST TRIANGLE-HEADED ARROW TO BAR..RIGHTWARDS BLACK ARROW 2B98..2BB9 ; 7.0 # [34] THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..UP ARROWHEAD IN A RECTANGLE BOX 2BBD..2BC8 ; 7.0 # [12] BALLOT BOX WITH LIGHT X..BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED 2BCA..2BD1 ; 7.0 # [8] TOP HALF BLACK CIRCLE..UNCERTAINTY SIGN 2E3C..2E42 ; 7.0 # [7] STENOGRAPHIC FULL STOP..DOUBLE LOW-REVERSED-9 QUOTATION MARK A698..A69D ; 7.0 # [6] CYRILLIC CAPITAL LETTER DOUBLE O..MODIFIER LETTER CYRILLIC SOFT SIGN A794..A79F ; 7.0 # [12] LATIN SMALL LETTER C WITH PALATAL HOOK..LATIN SMALL LETTER VOLAPUK UE A7AB..A7AD ; 7.0 # [3] LATIN CAPITAL LETTER REVERSED OPEN E..LATIN CAPITAL LETTER L WITH BELT A7B0..A7B1 ; 7.0 # [2] LATIN CAPITAL LETTER TURNED K..LATIN CAPITAL LETTER TURNED T A7F7 ; 7.0 # LATIN EPIGRAPHIC LETTER SIDEWAYS I A9E0..A9FE ; 7.0 # [31] MYANMAR LETTER SHAN GHA..MYANMAR LETTER TAI LAING BHA AA7C..AA7F ; 7.0 # [4] MYANMAR SIGN TAI LAING TONE-2..MYANMAR LETTER SHWE PALAUNG SHA AB30..AB5F ; 7.0 # [48] LATIN SMALL LETTER BARRED ALPHA..MODIFIER LETTER SMALL U WITH LEFT HOOK AB64..AB65 ; 7.0 # [2] LATIN SMALL LETTER INVERTED ALPHA..GREEK LETTER SMALL CAPITAL OMEGA FE27..FE2D ; 7.0 # [7] COMBINING LIGATURE LEFT HALF BELOW..COMBINING CONJOINING MACRON BELOW 1018B..1018C ; 7.0 # [2] GREEK ONE QUARTER SIGN..GREEK SINUSOID SIGN 101A0 ; 7.0 # GREEK SYMBOL TAU RHO 102E0..102FB ; 7.0 # [28] COPTIC EPACT THOUSANDS MARK..COPTIC EPACT NUMBER NINE HUNDRED 1031F ; 7.0 # OLD ITALIC LETTER ESS 10350..1037A ; 7.0 # [43] OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII 10500..10527 ; 7.0 # [40] ELBASAN LETTER A..ELBASAN LETTER KHE 10530..10563 ; 7.0 # [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW 1056F ; 7.0 # CAUCASIAN ALBANIAN CITATION MARK 10600..10736 ; 7.0 # [311] LINEAR A SIGN AB001..LINEAR A SIGN A664 10740..10755 ; 7.0 # [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE 10760..10767 ; 7.0 # [8] LINEAR A SIGN A800..LINEAR A SIGN A807 10860..1089E ; 7.0 # [63] PALMYRENE LETTER ALEPH..NABATAEAN LETTER TAW 108A7..108AF ; 7.0 # [9] NABATAEAN NUMBER ONE..NABATAEAN NUMBER ONE HUNDRED 10A80..10A9F ; 7.0 # [32] OLD NORTH ARABIAN LETTER HEH..OLD NORTH ARABIAN NUMBER TWENTY 10AC0..10AE6 ; 7.0 # [39] MANICHAEAN LETTER ALEPH..MANICHAEAN ABBREVIATION MARK BELOW 10AEB..10AF6 ; 7.0 # [12] MANICHAEAN NUMBER ONE..MANICHAEAN PUNCTUATION LINE FILLER 10B80..10B91 ; 7.0 # [18] PSALTER PAHLAVI LETTER ALEPH..PSALTER PAHLAVI LETTER TAW 10B99..10B9C ; 7.0 # [4] PSALTER PAHLAVI SECTION MARK..PSALTER PAHLAVI FOUR DOTS WITH DOT 10BA9..10BAF ; 7.0 # [7] PSALTER PAHLAVI NUMBER ONE..PSALTER PAHLAVI NUMBER ONE HUNDRED 1107F ; 7.0 # BRAHMI NUMBER JOINER 11150..11176 ; 7.0 # [39] MAHAJANI LETTER A..MAHAJANI LIGATURE SHRI 111CD ; 7.0 # SHARADA SUTRA MARK 111DA ; 7.0 # SHARADA EKAM 111E1..111F4 ; 7.0 # [20] SINHALA ARCHAIC DIGIT ONE..SINHALA ARCHAIC NUMBER ONE THOUSAND 11200..11211 ; 7.0 # [18] KHOJKI LETTER A..KHOJKI LETTER JJA 11213..1123D ; 7.0 # [43] KHOJKI LETTER NYA..KHOJKI ABBREVIATION SIGN 112B0..112EA ; 7.0 # [59] KHUDAWADI LETTER A..KHUDAWADI SIGN VIRAMA 112F0..112F9 ; 7.0 # [10] KHUDAWADI DIGIT ZERO..KHUDAWADI DIGIT NINE 11301..11303 ; 7.0 # [3] GRANTHA SIGN CANDRABINDU..GRANTHA SIGN VISARGA 11305..1130C ; 7.0 # [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L 1130F..11310 ; 7.0 # [2] GRANTHA LETTER EE..GRANTHA LETTER AI 11313..11328 ; 7.0 # [22] GRANTHA LETTER OO..GRANTHA LETTER NA 1132A..11330 ; 7.0 # [7] GRANTHA LETTER PA..GRANTHA LETTER RA 11332..11333 ; 7.0 # [2] GRANTHA LETTER LA..GRANTHA LETTER LLA 11335..11339 ; 7.0 # [5] GRANTHA LETTER VA..GRANTHA LETTER HA 1133C..11344 ; 7.0 # [9] GRANTHA SIGN NUKTA..GRANTHA VOWEL SIGN VOCALIC RR 11347..11348 ; 7.0 # [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI 1134B..1134D ; 7.0 # [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA 11357 ; 7.0 # GRANTHA AU LENGTH MARK 1135D..11363 ; 7.0 # [7] GRANTHA SIGN PLUTA..GRANTHA VOWEL SIGN VOCALIC LL 11366..1136C ; 7.0 # [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX 11370..11374 ; 7.0 # [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA 11480..114C7 ; 7.0 # [72] TIRHUTA ANJI..TIRHUTA OM 114D0..114D9 ; 7.0 # [10] TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE 11580..115B5 ; 7.0 # [54] SIDDHAM LETTER A..SIDDHAM VOWEL SIGN VOCALIC RR 115B8..115C9 ; 7.0 # [18] SIDDHAM VOWEL SIGN E..SIDDHAM END OF TEXT MARK 11600..11644 ; 7.0 # [69] MODI LETTER A..MODI SIGN HUVA 11650..11659 ; 7.0 # [10] MODI DIGIT ZERO..MODI DIGIT NINE 118A0..118F2 ; 7.0 # [83] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI NUMBER NINETY 118FF ; 7.0 # WARANG CITI OM 11AC0..11AF8 ; 7.0 # [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL 1236F..12398 ; 7.0 # [42] CUNEIFORM SIGN KAP ELAMITE..CUNEIFORM SIGN UM TIMES ME 12463..1246E ; 7.0 # [12] CUNEIFORM NUMERIC SIGN ONE QUARTER GUR..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM 12474 ; 7.0 # CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON 16A40..16A5E ; 7.0 # [31] MRO LETTER TA..MRO LETTER TEK 16A60..16A69 ; 7.0 # [10] MRO DIGIT ZERO..MRO DIGIT NINE 16A6E..16A6F ; 7.0 # [2] MRO DANDA..MRO DOUBLE DANDA 16AD0..16AED ; 7.0 # [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I 16AF0..16AF5 ; 7.0 # [6] BASSA VAH COMBINING HIGH TONE..BASSA VAH FULL STOP 16B00..16B45 ; 7.0 # [70] PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG SIGN CIM TSOV ROG 16B50..16B59 ; 7.0 # [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE 16B5B..16B61 ; 7.0 # [7] PAHAWH HMONG NUMBER TENS..PAHAWH HMONG NUMBER TRILLIONS 16B63..16B77 ; 7.0 # [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS 16B7D..16B8F ; 7.0 # [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ 1BC00..1BC6A ; 7.0 # [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M 1BC70..1BC7C ; 7.0 # [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK 1BC80..1BC88 ; 7.0 # [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL 1BC90..1BC99 ; 7.0 # [10] DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW 1BC9C..1BC9F ; 7.0 # [4] DUPLOYAN SIGN O WITH CROSS..DUPLOYAN PUNCTUATION CHINOOK FULL STOP 1BCA0..1BCA3 ; 7.0 # [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP 1E800..1E8C4 ; 7.0 # [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON 1E8C7..1E8D6 ; 7.0 # [16] MENDE KIKAKUI DIGIT ONE..MENDE KIKAKUI COMBINING NUMBER MILLIONS 1F0BF ; 7.0 # PLAYING CARD RED JOKER 1F0E0..1F0F5 ; 7.0 # [22] PLAYING CARD FOOL..PLAYING CARD TRUMP-21 1F10B..1F10C ; 7.0 # [2] DINGBAT CIRCLED SANS-SERIF DIGIT ZERO..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO 1F321..1F32C ; 7.0 # [12] THERMOMETER..WIND BLOWING FACE 1F336 ; 7.0 # HOT PEPPER 1F37D ; 7.0 # FORK AND KNIFE WITH PLATE 1F394..1F39F ; 7.0 # [12] HEART WITH TIP ON THE LEFT..ADMISSION TICKETS 1F3C5 ; 7.0 # SPORTS MEDAL 1F3CB..1F3CE ; 7.0 # [4] WEIGHT LIFTER..RACING CAR 1F3D4..1F3DF ; 7.0 # [12] SNOW CAPPED MOUNTAIN..STADIUM 1F3F1..1F3F7 ; 7.0 # [7] WHITE PENNANT..LABEL 1F43F ; 7.0 # CHIPMUNK 1F441 ; 7.0 # EYE 1F4F8 ; 7.0 # CAMERA WITH FLASH 1F4FD..1F4FE ; 7.0 # [2] FILM PROJECTOR..PORTABLE STEREO 1F53E..1F53F ; 7.0 # [2] LOWER RIGHT SHADOWED WHITE CIRCLE..UPPER RIGHT SHADOWED WHITE CIRCLE 1F544..1F54A ; 7.0 # [7] NOTCHED RIGHT SEMICIRCLE WITH THREE DOTS..DOVE OF PEACE 1F568..1F579 ; 7.0 # [18] RIGHT SPEAKER..JOYSTICK 1F57B..1F5A3 ; 7.0 # [41] LEFT HAND TELEPHONE RECEIVER..BLACK DOWN POINTING BACKHAND INDEX 1F5A5..1F5FA ; 7.0 # [86] DESKTOP COMPUTER..WORLD MAP 1F641..1F642 ; 7.0 # [2] SLIGHTLY FROWNING FACE..SLIGHTLY SMILING FACE 1F650..1F67F ; 7.0 # [48] NORTH WEST POINTING LEAF..REVERSE CHECKER BOARD 1F6C6..1F6CF ; 7.0 # [10] TRIANGLE WITH ROUNDED CORNERS..BED 1F6E0..1F6EC ; 7.0 # [13] HAMMER AND WRENCH..AIRPLANE ARRIVING 1F6F0..1F6F3 ; 7.0 # [4] SATELLITE..PASSENGER SHIP 1F780..1F7D4 ; 7.0 # [85] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..HEAVY TWELVE POINTED PINWHEEL STAR 1F800..1F80B ; 7.0 # [12] LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD..DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD 1F810..1F847 ; 7.0 # [56] LEFTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD..DOWNWARDS HEAVY ARROW 1F850..1F859 ; 7.0 # [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW 1F860..1F887 ; 7.0 # [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW 1F890..1F8AD ; 7.0 # [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS # Total code points: 2834 # ================================================ # Age=V8_0 # Newly assigned in Unicode 8.0.0 (June, 2015) 08B3..08B4 ; 8.0 # [2] ARABIC LETTER AIN WITH THREE DOTS BELOW..ARABIC LETTER KAF WITH DOT BELOW 08E3 ; 8.0 # ARABIC TURNED DAMMA BELOW 0AF9 ; 8.0 # GUJARATI LETTER ZHA 0C5A ; 8.0 # TELUGU LETTER RRRA 0D5F ; 8.0 # MALAYALAM LETTER ARCHAIC II 13F5 ; 8.0 # CHEROKEE LETTER MV 13F8..13FD ; 8.0 # [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV 20BE ; 8.0 # LARI SIGN 218A..218B ; 8.0 # [2] TURNED DIGIT TWO..TURNED DIGIT THREE 2BEC..2BEF ; 8.0 # [4] LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS..DOWNWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS 9FCD..9FD5 ; 8.0 # [9] CJK UNIFIED IDEOGRAPH-9FCD..CJK UNIFIED IDEOGRAPH-9FD5 A69E ; 8.0 # COMBINING CYRILLIC LETTER EF A78F ; 8.0 # LATIN LETTER SINOLOGICAL DOT A7B2..A7B7 ; 8.0 # [6] LATIN CAPITAL LETTER J WITH CROSSED-TAIL..LATIN SMALL LETTER OMEGA A8FC..A8FD ; 8.0 # [2] DEVANAGARI SIGN SIDDHAM..DEVANAGARI JAIN OM AB60..AB63 ; 8.0 # [4] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER UO AB70..ABBF ; 8.0 # [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA FE2E..FE2F ; 8.0 # [2] COMBINING CYRILLIC TITLO LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF 108E0..108F2 ; 8.0 # [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH 108F4..108F5 ; 8.0 # [2] HATRAN LETTER SHIN..HATRAN LETTER TAW 108FB..108FF ; 8.0 # [5] HATRAN NUMBER ONE..HATRAN NUMBER ONE HUNDRED 109BC..109BD ; 8.0 # [2] MEROITIC CURSIVE FRACTION ELEVEN TWELFTHS..MEROITIC CURSIVE FRACTION ONE HALF 109C0..109CF ; 8.0 # [16] MEROITIC CURSIVE NUMBER ONE..MEROITIC CURSIVE NUMBER SEVENTY 109D2..109FF ; 8.0 # [46] MEROITIC CURSIVE NUMBER ONE HUNDRED..MEROITIC CURSIVE FRACTION TEN TWELFTHS 10C80..10CB2 ; 8.0 # [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US 10CC0..10CF2 ; 8.0 # [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US 10CFA..10CFF ; 8.0 # [6] OLD HUNGARIAN NUMBER ONE..OLD HUNGARIAN NUMBER ONE THOUSAND 111C9..111CC ; 8.0 # [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK 111DB..111DF ; 8.0 # [5] SHARADA SIGN SIDDHAM..SHARADA SECTION MARK-2 11280..11286 ; 8.0 # [7] MULTANI LETTER A..MULTANI LETTER GA 11288 ; 8.0 # MULTANI LETTER GHA 1128A..1128D ; 8.0 # [4] MULTANI LETTER CA..MULTANI LETTER JJA 1128F..1129D ; 8.0 # [15] MULTANI LETTER NYA..MULTANI LETTER BA 1129F..112A9 ; 8.0 # [11] MULTANI LETTER BHA..MULTANI SECTION MARK 11300 ; 8.0 # GRANTHA SIGN COMBINING ANUSVARA ABOVE 11350 ; 8.0 # GRANTHA OM 115CA..115DD ; 8.0 # [20] SIDDHAM SECTION MARK WITH TRIDENT AND U-SHAPED ORNAMENTS..SIDDHAM VOWEL SIGN ALTERNATE UU 11700..11719 ; 8.0 # [26] AHOM LETTER KA..AHOM LETTER JHA 1171D..1172B ; 8.0 # [15] AHOM CONSONANT SIGN MEDIAL LA..AHOM SIGN KILLER 11730..1173F ; 8.0 # [16] AHOM DIGIT ZERO..AHOM SYMBOL VI 12399 ; 8.0 # CUNEIFORM SIGN U U 12480..12543 ; 8.0 # [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU 14400..14646 ; 8.0 # [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 1D1DE..1D1E8 ; 8.0 # [11] MUSICAL SYMBOL KIEVAN C CLEF..MUSICAL SYMBOL KIEVAN FLAT SIGN 1D800..1DA8B ; 8.0 # [652] SIGNWRITING HAND-FIST INDEX..SIGNWRITING PARENTHESIS 1DA9B..1DA9F ; 8.0 # [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 1DAA1..1DAAF ; 8.0 # [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 1F32D..1F32F ; 8.0 # [3] HOT DOG..BURRITO 1F37E..1F37F ; 8.0 # [2] BOTTLE WITH POPPING CORK..POPCORN 1F3CF..1F3D3 ; 8.0 # [5] CRICKET BAT AND BALL..TABLE TENNIS PADDLE AND BALL 1F3F8..1F3FF ; 8.0 # [8] BADMINTON RACQUET AND SHUTTLECOCK..EMOJI MODIFIER FITZPATRICK TYPE-6 1F4FF ; 8.0 # PRAYER BEADS 1F54B..1F54F ; 8.0 # [5] KAABA..BOWL OF HYGIEIA 1F643..1F644 ; 8.0 # [2] UPSIDE-DOWN FACE..FACE WITH ROLLING EYES 1F6D0 ; 8.0 # PLACE OF WORSHIP 1F910..1F918 ; 8.0 # [9] ZIPPER-MOUTH FACE..SIGN OF THE HORNS 1F980..1F984 ; 8.0 # [5] CRAB..UNICORN FACE 1F9C0 ; 8.0 # CHEESE WEDGE 2B820..2CEA1 ; 8.0 # [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 # Total code points: 7716 # ================================================ # Age=V9_0 # Newly assigned in Unicode 9.0.0 (June, 2016) 08B6..08BD ; 9.0 # [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON 08D4..08E1 ; 9.0 # [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA 08E2 ; 9.0 # ARABIC DISPUTED END OF AYAH 0C80 ; 9.0 # KANNADA SIGN SPACING CANDRABINDU 0D4F ; 9.0 # MALAYALAM SIGN PARA 0D54..0D56 ; 9.0 # [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL 0D58..0D5E ; 9.0 # [7] MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH..MALAYALAM FRACTION ONE FIFTH 0D76..0D78 ; 9.0 # [3] MALAYALAM FRACTION ONE SIXTEENTH..MALAYALAM FRACTION THREE SIXTEENTHS 1C80..1C88 ; 9.0 # [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK 1DFB ; 9.0 # COMBINING DELETION MARK 23FB..23FE ; 9.0 # [4] POWER SYMBOL..POWER SLEEP SYMBOL 2E43..2E44 ; 9.0 # [2] DASH WITH LEFT UPTURN..DOUBLE SUSPENSION MARK A7AE ; 9.0 # LATIN CAPITAL LETTER SMALL CAPITAL I A8C5 ; 9.0 # SAURASHTRA SIGN CANDRABINDU 1018D..1018E ; 9.0 # [2] GREEK INDICTION SIGN..NOMISMA SIGN 104B0..104D3 ; 9.0 # [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA 104D8..104FB ; 9.0 # [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA 1123E ; 9.0 # KHOJKI SIGN SUKUN 11400..11459 ; 9.0 # [90] NEWA LETTER A..NEWA DIGIT NINE 1145B ; 9.0 # NEWA PLACEHOLDER MARK 1145D ; 9.0 # NEWA INSERTION SIGN 11660..1166C ; 9.0 # [13] MONGOLIAN BIRGA WITH ORNAMENT..MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT 11C00..11C08 ; 9.0 # [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L 11C0A..11C36 ; 9.0 # [45] BHAIKSUKI LETTER E..BHAIKSUKI VOWEL SIGN VOCALIC L 11C38..11C45 ; 9.0 # [14] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI GAP FILLER-2 11C50..11C6C ; 9.0 # [29] BHAIKSUKI DIGIT ZERO..BHAIKSUKI HUNDREDS UNIT MARK 11C70..11C8F ; 9.0 # [32] MARCHEN HEAD MARK..MARCHEN LETTER A 11C92..11CA7 ; 9.0 # [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA 11CA9..11CB6 ; 9.0 # [14] MARCHEN SUBJOINED LETTER YA..MARCHEN SIGN CANDRABINDU 16FE0 ; 9.0 # TANGUT ITERATION MARK 17000..187EC ; 9.0 # [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC 18800..18AF2 ; 9.0 # [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755 1E000..1E006 ; 9.0 # [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE 1E008..1E018 ; 9.0 # [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU 1E01B..1E021 ; 9.0 # [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI 1E023..1E024 ; 9.0 # [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS 1E026..1E02A ; 9.0 # [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA 1E900..1E94A ; 9.0 # [75] ADLAM CAPITAL LETTER ALIF..ADLAM NUKTA 1E950..1E959 ; 9.0 # [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE 1E95E..1E95F ; 9.0 # [2] ADLAM INITIAL EXCLAMATION MARK..ADLAM INITIAL QUESTION MARK 1F19B..1F1AC ; 9.0 # [18] SQUARED THREE D..SQUARED VOD 1F23B ; 9.0 # SQUARED CJK UNIFIED IDEOGRAPH-914D 1F57A ; 9.0 # MAN DANCING 1F5A4 ; 9.0 # BLACK HEART 1F6D1..1F6D2 ; 9.0 # [2] OCTAGONAL SIGN..SHOPPING TROLLEY 1F6F4..1F6F6 ; 9.0 # [3] SCOOTER..CANOE 1F919..1F91E ; 9.0 # [6] CALL ME HAND..HAND WITH INDEX AND MIDDLE FINGERS CROSSED 1F920..1F927 ; 9.0 # [8] FACE WITH COWBOY HAT..SNEEZING FACE 1F930 ; 9.0 # PREGNANT WOMAN 1F933..1F93E ; 9.0 # [12] SELFIE..HANDBALL 1F940..1F94B ; 9.0 # [12] WILTED FLOWER..MARTIAL ARTS UNIFORM 1F950..1F95E ; 9.0 # [15] CROISSANT..PANCAKES 1F985..1F991 ; 9.0 # [13] EAGLE..SQUID # Total code points: 7500 # EOF nototools-2017-09-25-tooling-for-phase3-update/third_party/ucd/DerivedCoreProperties.txt000066400000000000000000034627531316231664500312250ustar00rootroot00000000000000# DerivedCoreProperties-9.0.0.txt # Date: 2016-02-09, 18:49:05 GMT # © 2016 Unicode®, Inc. # For terms of use, see http://www.unicode.org/terms_of_use.html # # Unicode Character Database # For documentation, see http://www.unicode.org/reports/tr44/ # ================================================ # Derived Property: Math # Generated from: Sm + Other_Math 002B ; Math # Sm PLUS SIGN 003C..003E ; Math # Sm [3] LESS-THAN SIGN..GREATER-THAN SIGN 005E ; Math # Sk CIRCUMFLEX ACCENT 007C ; Math # Sm VERTICAL LINE 007E ; Math # Sm TILDE 00AC ; Math # Sm NOT SIGN 00B1 ; Math # Sm PLUS-MINUS SIGN 00D7 ; Math # Sm MULTIPLICATION SIGN 00F7 ; Math # Sm DIVISION SIGN 03D0..03D2 ; Math # L& [3] GREEK BETA SYMBOL..GREEK UPSILON WITH HOOK SYMBOL 03D5 ; Math # L& GREEK PHI SYMBOL 03F0..03F1 ; Math # L& [2] GREEK KAPPA SYMBOL..GREEK RHO SYMBOL 03F4..03F5 ; Math # L& [2] GREEK CAPITAL THETA SYMBOL..GREEK LUNATE EPSILON SYMBOL 03F6 ; Math # Sm GREEK REVERSED LUNATE EPSILON SYMBOL 0606..0608 ; Math # Sm [3] ARABIC-INDIC CUBE ROOT..ARABIC RAY 2016 ; Math # Po DOUBLE VERTICAL LINE 2032..2034 ; Math # Po [3] PRIME..TRIPLE PRIME 2040 ; Math # Pc CHARACTER TIE 2044 ; Math # Sm FRACTION SLASH 2052 ; Math # Sm COMMERCIAL MINUS SIGN 2061..2064 ; Math # Cf [4] FUNCTION APPLICATION..INVISIBLE PLUS 207A..207C ; Math # Sm [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN 207D ; Math # Ps SUPERSCRIPT LEFT PARENTHESIS 207E ; Math # Pe SUPERSCRIPT RIGHT PARENTHESIS 208A..208C ; Math # Sm [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN 208D ; Math # Ps SUBSCRIPT LEFT PARENTHESIS 208E ; Math # Pe SUBSCRIPT RIGHT PARENTHESIS 20D0..20DC ; Math # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE 20E1 ; Math # Mn COMBINING LEFT RIGHT ARROW ABOVE 20E5..20E6 ; Math # Mn [2] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING DOUBLE VERTICAL STROKE OVERLAY 20EB..20EF ; Math # Mn [5] COMBINING LONG DOUBLE SOLIDUS OVERLAY..COMBINING RIGHT ARROW BELOW 2102 ; Math # L& DOUBLE-STRUCK CAPITAL C 2107 ; Math # L& EULER CONSTANT 210A..2113 ; Math # L& [10] SCRIPT SMALL G..SCRIPT SMALL L 2115 ; Math # L& DOUBLE-STRUCK CAPITAL N 2118 ; Math # Sm SCRIPT CAPITAL P 2119..211D ; Math # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R 2124 ; Math # L& DOUBLE-STRUCK CAPITAL Z 2128 ; Math # L& BLACK-LETTER CAPITAL Z 2129 ; Math # So TURNED GREEK SMALL LETTER IOTA 212C..212D ; Math # L& [2] SCRIPT CAPITAL B..BLACK-LETTER CAPITAL C 212F..2131 ; Math # L& [3] SCRIPT SMALL E..SCRIPT CAPITAL F 2133..2134 ; Math # L& [2] SCRIPT CAPITAL M..SCRIPT SMALL O 2135..2138 ; Math # Lo [4] ALEF SYMBOL..DALET SYMBOL 213C..213F ; Math # L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI 2140..2144 ; Math # Sm [5] DOUBLE-STRUCK N-ARY SUMMATION..TURNED SANS-SERIF CAPITAL Y 2145..2149 ; Math # L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J 214B ; Math # Sm TURNED AMPERSAND 2190..2194 ; Math # Sm [5] LEFTWARDS ARROW..LEFT RIGHT ARROW 2195..2199 ; Math # So [5] UP DOWN ARROW..SOUTH WEST ARROW 219A..219B ; Math # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE 219C..219F ; Math # So [4] LEFTWARDS WAVE ARROW..UPWARDS TWO HEADED ARROW 21A0 ; Math # Sm RIGHTWARDS TWO HEADED ARROW 21A1..21A2 ; Math # So [2] DOWNWARDS TWO HEADED ARROW..LEFTWARDS ARROW WITH TAIL 21A3 ; Math # Sm RIGHTWARDS ARROW WITH TAIL 21A4..21A5 ; Math # So [2] LEFTWARDS ARROW FROM BAR..UPWARDS ARROW FROM BAR 21A6 ; Math # Sm RIGHTWARDS ARROW FROM BAR 21A7 ; Math # So DOWNWARDS ARROW FROM BAR 21A9..21AD ; Math # So [5] LEFTWARDS ARROW WITH HOOK..LEFT RIGHT WAVE ARROW 21AE ; Math # Sm LEFT RIGHT ARROW WITH STROKE 21B0..21B1 ; Math # So [2] UPWARDS ARROW WITH TIP LEFTWARDS..UPWARDS ARROW WITH TIP RIGHTWARDS 21B6..21B7 ; Math # So [2] ANTICLOCKWISE TOP SEMICIRCLE ARROW..CLOCKWISE TOP SEMICIRCLE ARROW 21BC..21CD ; Math # So [18] LEFTWARDS HARPOON WITH BARB UPWARDS..LEFTWARDS DOUBLE ARROW WITH STROKE 21CE..21CF ; Math # Sm [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE 21D0..21D1 ; Math # So [2] LEFTWARDS DOUBLE ARROW..UPWARDS DOUBLE ARROW 21D2 ; Math # Sm RIGHTWARDS DOUBLE ARROW 21D3 ; Math # So DOWNWARDS DOUBLE ARROW 21D4 ; Math # Sm LEFT RIGHT DOUBLE ARROW 21D5..21DB ; Math # So [7] UP DOWN DOUBLE ARROW..RIGHTWARDS TRIPLE ARROW 21DD ; Math # So RIGHTWARDS SQUIGGLE ARROW 21E4..21E5 ; Math # So [2] LEFTWARDS ARROW TO BAR..RIGHTWARDS ARROW TO BAR 21F4..22FF ; Math # Sm [268] RIGHT ARROW WITH SMALL CIRCLE..Z NOTATION BAG MEMBERSHIP 2308 ; Math # Ps LEFT CEILING 2309 ; Math # Pe RIGHT CEILING 230A ; Math # Ps LEFT FLOOR 230B ; Math # Pe RIGHT FLOOR 2320..2321 ; Math # Sm [2] TOP HALF INTEGRAL..BOTTOM HALF INTEGRAL 237C ; Math # Sm RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW 239B..23B3 ; Math # Sm [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM 23B4..23B5 ; Math # So [2] TOP SQUARE BRACKET..BOTTOM SQUARE BRACKET 23B7 ; Math # So RADICAL SYMBOL BOTTOM 23D0 ; Math # So VERTICAL LINE EXTENSION 23DC..23E1 ; Math # Sm [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET 23E2 ; Math # So WHITE TRAPEZIUM 25A0..25A1 ; Math # So [2] BLACK SQUARE..WHITE SQUARE 25AE..25B6 ; Math # So [9] BLACK VERTICAL RECTANGLE..BLACK RIGHT-POINTING TRIANGLE 25B7 ; Math # Sm WHITE RIGHT-POINTING TRIANGLE 25BC..25C0 ; Math # So [5] BLACK DOWN-POINTING TRIANGLE..BLACK LEFT-POINTING TRIANGLE 25C1 ; Math # Sm WHITE LEFT-POINTING TRIANGLE 25C6..25C7 ; Math # So [2] BLACK DIAMOND..WHITE DIAMOND 25CA..25CB ; Math # So [2] LOZENGE..WHITE CIRCLE 25CF..25D3 ; Math # So [5] BLACK CIRCLE..CIRCLE WITH UPPER HALF BLACK 25E2 ; Math # So BLACK LOWER RIGHT TRIANGLE 25E4 ; Math # So BLACK UPPER LEFT TRIANGLE 25E7..25EC ; Math # So [6] SQUARE WITH LEFT HALF BLACK..WHITE UP-POINTING TRIANGLE WITH DOT 25F8..25FF ; Math # Sm [8] UPPER LEFT TRIANGLE..LOWER RIGHT TRIANGLE 2605..2606 ; Math # So [2] BLACK STAR..WHITE STAR 2640 ; Math # So FEMALE SIGN 2642 ; Math # So MALE SIGN 2660..2663 ; Math # So [4] BLACK SPADE SUIT..BLACK CLUB SUIT 266D..266E ; Math # So [2] MUSIC FLAT SIGN..MUSIC NATURAL SIGN 266F ; Math # Sm MUSIC SHARP SIGN 27C0..27C4 ; Math # Sm [5] THREE DIMENSIONAL ANGLE..OPEN SUPERSET 27C5 ; Math # Ps LEFT S-SHAPED BAG DELIMITER 27C6 ; Math # Pe RIGHT S-SHAPED BAG DELIMITER 27C7..27E5 ; Math # Sm [31] OR WITH DOT INSIDE..WHITE SQUARE WITH RIGHTWARDS TICK 27E6 ; Math # Ps MATHEMATICAL LEFT WHITE SQUARE BRACKET 27E7 ; Math # Pe MATHEMATICAL RIGHT WHITE SQUARE BRACKET 27E8 ; Math # Ps MATHEMATICAL LEFT ANGLE BRACKET 27E9 ; Math # Pe MATHEMATICAL RIGHT ANGLE BRACKET 27EA ; Math # Ps MATHEMATICAL LEFT DOUBLE ANGLE BRACKET 27EB ; Math # Pe MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET 27EC ; Math # Ps MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET 27ED ; Math # Pe MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET 27EE ; Math # Ps MATHEMATICAL LEFT FLATTENED PARENTHESIS 27EF ; Math # Pe MATHEMATICAL RIGHT FLATTENED PARENTHESIS 27F0..27FF ; Math # Sm [16] UPWARDS QUADRUPLE ARROW..LONG RIGHTWARDS SQUIGGLE ARROW 2900..2982 ; Math # Sm [131] RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE..Z NOTATION TYPE COLON 2983 ; Math # Ps LEFT WHITE CURLY BRACKET 2984 ; Math # Pe RIGHT WHITE CURLY BRACKET 2985 ; Math # Ps LEFT WHITE PARENTHESIS 2986 ; Math # Pe RIGHT WHITE PARENTHESIS 2987 ; Math # Ps Z NOTATION LEFT IMAGE BRACKET 2988 ; Math # Pe Z NOTATION RIGHT IMAGE BRACKET 2989 ; Math # Ps Z NOTATION LEFT BINDING BRACKET 298A ; Math # Pe Z NOTATION RIGHT BINDING BRACKET 298B ; Math # Ps LEFT SQUARE BRACKET WITH UNDERBAR 298C ; Math # Pe RIGHT SQUARE BRACKET WITH UNDERBAR 298D ; Math # Ps LEFT SQUARE BRACKET WITH TICK IN TOP CORNER 298E ; Math # Pe RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER 298F ; Math # Ps LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER 2990 ; Math # Pe RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER 2991 ; Math # Ps LEFT ANGLE BRACKET WITH DOT 2992 ; Math # Pe RIGHT ANGLE BRACKET WITH DOT 2993 ; Math # Ps LEFT ARC LESS-THAN BRACKET 2994 ; Math # Pe RIGHT ARC GREATER-THAN BRACKET 2995 ; Math # Ps DOUBLE LEFT ARC GREATER-THAN BRACKET 2996 ; Math # Pe DOUBLE RIGHT ARC LESS-THAN BRACKET 2997 ; Math # Ps LEFT BLACK TORTOISE SHELL BRACKET 2998 ; Math # Pe RIGHT BLACK TORTOISE SHELL BRACKET 2999..29D7 ; Math # Sm [63] DOTTED FENCE..BLACK HOURGLASS 29D8 ; Math # Ps LEFT WIGGLY FENCE 29D9 ; Math # Pe RIGHT WIGGLY FENCE 29DA ; Math # Ps LEFT DOUBLE WIGGLY FENCE 29DB ; Math # Pe RIGHT DOUBLE WIGGLY FENCE 29DC..29FB ; Math # Sm [32] INCOMPLETE INFINITY..TRIPLE PLUS 29FC ; Math # Ps LEFT-POINTING CURVED ANGLE BRACKET 29FD ; Math # Pe RIGHT-POINTING CURVED ANGLE BRACKET 29FE..2AFF ; Math # Sm [258] TINY..N-ARY WHITE VERTICAL BAR 2B30..2B44 ; Math # Sm [21] LEFT ARROW WITH SMALL CIRCLE..RIGHTWARDS ARROW THROUGH SUPERSET 2B47..2B4C ; Math # Sm [6] REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW..RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR FB29 ; Math # Sm HEBREW LETTER ALTERNATIVE PLUS SIGN FE61 ; Math # Po SMALL ASTERISK FE62 ; Math # Sm SMALL PLUS SIGN FE63 ; Math # Pd SMALL HYPHEN-MINUS FE64..FE66 ; Math # Sm [3] SMALL LESS-THAN SIGN..SMALL EQUALS SIGN FE68 ; Math # Po SMALL REVERSE SOLIDUS FF0B ; Math # Sm FULLWIDTH PLUS SIGN FF1C..FF1E ; Math # Sm [3] FULLWIDTH LESS-THAN SIGN..FULLWIDTH GREATER-THAN SIGN FF3C ; Math # Po FULLWIDTH REVERSE SOLIDUS FF3E ; Math # Sk FULLWIDTH CIRCUMFLEX ACCENT FF5C ; Math # Sm FULLWIDTH VERTICAL LINE FF5E ; Math # Sm FULLWIDTH TILDE FFE2 ; Math # Sm FULLWIDTH NOT SIGN FFE9..FFEC ; Math # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW 1D400..1D454 ; Math # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G 1D456..1D49C ; Math # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A 1D49E..1D49F ; Math # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D 1D4A2 ; Math # L& MATHEMATICAL SCRIPT CAPITAL G 1D4A5..1D4A6 ; Math # L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K 1D4A9..1D4AC ; Math # L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q 1D4AE..1D4B9 ; Math # L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D 1D4BB ; Math # L& MATHEMATICAL SCRIPT SMALL F 1D4BD..1D4C3 ; Math # L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N 1D4C5..1D505 ; Math # L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B 1D507..1D50A ; Math # L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G 1D50D..1D514 ; Math # L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q 1D516..1D51C ; Math # L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y 1D51E..1D539 ; Math # L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B 1D53B..1D53E ; Math # L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G 1D540..1D544 ; Math # L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M 1D546 ; Math # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O 1D54A..1D550 ; Math # L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y 1D552..1D6A5 ; Math # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J 1D6A8..1D6C0 ; Math # L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA 1D6C1 ; Math # Sm MATHEMATICAL BOLD NABLA 1D6C2..1D6DA ; Math # L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA 1D6DB ; Math # Sm MATHEMATICAL BOLD PARTIAL DIFFERENTIAL 1D6DC..1D6FA ; Math # L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA 1D6FB ; Math # Sm MATHEMATICAL ITALIC NABLA 1D6FC..1D714 ; Math # L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA 1D715 ; Math # Sm MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL 1D716..1D734 ; Math # L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA 1D735 ; Math # Sm MATHEMATICAL BOLD ITALIC NABLA 1D736..1D74E ; Math # L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA 1D74F ; Math # Sm MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL 1D750..1D76E ; Math # L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA 1D76F ; Math # Sm MATHEMATICAL SANS-SERIF BOLD NABLA 1D770..1D788 ; Math # L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA 1D789 ; Math # Sm MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL 1D78A..1D7A8 ; Math # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA 1D7A9 ; Math # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA 1D7AA..1D7C2 ; Math # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA 1D7C3 ; Math # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL 1D7C4..1D7CB ; Math # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA 1D7CE..1D7FF ; Math # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE 1EE00..1EE03 ; Math # Lo [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL 1EE05..1EE1F ; Math # Lo [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF 1EE21..1EE22 ; Math # Lo [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM 1EE24 ; Math # Lo ARABIC MATHEMATICAL INITIAL HEH 1EE27 ; Math # Lo ARABIC MATHEMATICAL INITIAL HAH 1EE29..1EE32 ; Math # Lo [10] ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF 1EE34..1EE37 ; Math # Lo [4] ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH 1EE39 ; Math # Lo ARABIC MATHEMATICAL INITIAL DAD 1EE3B ; Math # Lo ARABIC MATHEMATICAL INITIAL GHAIN 1EE42 ; Math # Lo ARABIC MATHEMATICAL TAILED JEEM 1EE47 ; Math # Lo ARABIC MATHEMATICAL TAILED HAH 1EE49 ; Math # Lo ARABIC MATHEMATICAL TAILED YEH 1EE4B ; Math # Lo ARABIC MATHEMATICAL TAILED LAM 1EE4D..1EE4F ; Math # Lo [3] ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN 1EE51..1EE52 ; Math # Lo [2] ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF 1EE54 ; Math # Lo ARABIC MATHEMATICAL TAILED SHEEN 1EE57 ; Math # Lo ARABIC MATHEMATICAL TAILED KHAH 1EE59 ; Math # Lo ARABIC MATHEMATICAL TAILED DAD 1EE5B ; Math # Lo ARABIC MATHEMATICAL TAILED GHAIN 1EE5D ; Math # Lo ARABIC MATHEMATICAL TAILED DOTLESS NOON 1EE5F ; Math # Lo ARABIC MATHEMATICAL TAILED DOTLESS QAF 1EE61..1EE62 ; Math # Lo [2] ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM 1EE64 ; Math # Lo ARABIC MATHEMATICAL STRETCHED HEH 1EE67..1EE6A ; Math # Lo [4] ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF 1EE6C..1EE72 ; Math # Lo [7] ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF 1EE74..1EE77 ; Math # Lo [4] ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH 1EE79..1EE7C ; Math # Lo [4] ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH 1EE7E ; Math # Lo ARABIC MATHEMATICAL STRETCHED DOTLESS FEH 1EE80..1EE89 ; Math # Lo [10] ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH 1EE8B..1EE9B ; Math # Lo [17] ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN 1EEA1..1EEA3 ; Math # Lo [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL 1EEA5..1EEA9 ; Math # Lo [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH 1EEAB..1EEBB ; Math # Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN 1EEF0..1EEF1 ; Math # Sm [2] ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL..ARABIC MATHEMATICAL OPERATOR HAH WITH DAL # Total code points: 2310 # ================================================ # Derived Property: Alphabetic # Generated from: Uppercase + Lowercase + Lt + Lm + Lo + Nl + Other_Alphabetic 0041..005A ; Alphabetic # L& [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z 0061..007A ; Alphabetic # L& [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z 00AA ; Alphabetic # Lo FEMININE ORDINAL INDICATOR 00B5 ; Alphabetic # L& MICRO SIGN 00BA ; Alphabetic # Lo MASCULINE ORDINAL INDICATOR 00C0..00D6 ; Alphabetic # L& [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS 00D8..00F6 ; Alphabetic # L& [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS 00F8..01BA ; Alphabetic # L& [195] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER EZH WITH TAIL 01BB ; Alphabetic # Lo LATIN LETTER TWO WITH STROKE 01BC..01BF ; Alphabetic # L& [4] LATIN CAPITAL LETTER TONE FIVE..LATIN LETTER WYNN 01C0..01C3 ; Alphabetic # Lo [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK 01C4..0293 ; Alphabetic # L& [208] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER EZH WITH CURL 0294 ; Alphabetic # Lo LATIN LETTER GLOTTAL STOP 0295..02AF ; Alphabetic # L& [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL 02B0..02C1 ; Alphabetic # Lm [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP 02C6..02D1 ; Alphabetic # Lm [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON 02E0..02E4 ; Alphabetic # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP 02EC ; Alphabetic # Lm MODIFIER LETTER VOICING 02EE ; Alphabetic # Lm MODIFIER LETTER DOUBLE APOSTROPHE 0345 ; Alphabetic # Mn COMBINING GREEK YPOGEGRAMMENI 0370..0373 ; Alphabetic # L& [4] GREEK CAPITAL LETTER HETA..GREEK SMALL LETTER ARCHAIC SAMPI 0374 ; Alphabetic # Lm GREEK NUMERAL SIGN 0376..0377 ; Alphabetic # L& [2] GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA..GREEK SMALL LETTER PAMPHYLIAN DIGAMMA 037A ; Alphabetic # Lm GREEK YPOGEGRAMMENI 037B..037D ; Alphabetic # L& [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL 037F ; Alphabetic # L& GREEK CAPITAL LETTER YOT 0386 ; Alphabetic # L& GREEK CAPITAL LETTER ALPHA WITH TONOS 0388..038A ; Alphabetic # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS 038C ; Alphabetic # L& GREEK CAPITAL LETTER OMICRON WITH TONOS 038E..03A1 ; Alphabetic # L& [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO 03A3..03F5 ; Alphabetic # L& [83] GREEK CAPITAL LETTER SIGMA..GREEK LUNATE EPSILON SYMBOL 03F7..0481 ; Alphabetic # L& [139] GREEK CAPITAL LETTER SHO..CYRILLIC SMALL LETTER KOPPA 048A..052F ; Alphabetic # L& [166] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER EL WITH DESCENDER 0531..0556 ; Alphabetic # L& [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH 0559 ; Alphabetic # Lm ARMENIAN MODIFIER LETTER LEFT HALF RING 0561..0587 ; Alphabetic # L& [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN 05B0..05BD ; Alphabetic # Mn [14] HEBREW POINT SHEVA..HEBREW POINT METEG 05BF ; Alphabetic # Mn HEBREW POINT RAFE 05C1..05C2 ; Alphabetic # Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT 05C4..05C5 ; Alphabetic # Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT 05C7 ; Alphabetic # Mn HEBREW POINT QAMATS QATAN 05D0..05EA ; Alphabetic # Lo [27] HEBREW LETTER ALEF..HEBREW LETTER TAV 05F0..05F2 ; Alphabetic # Lo [3] HEBREW LIGATURE YIDDISH DOUBLE VAV..HEBREW LIGATURE YIDDISH DOUBLE YOD 0610..061A ; Alphabetic # Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA 0620..063F ; Alphabetic # Lo [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE 0640 ; Alphabetic # Lm ARABIC TATWEEL 0641..064A ; Alphabetic # Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH 064B..0657 ; Alphabetic # Mn [13] ARABIC FATHATAN..ARABIC INVERTED DAMMA 0659..065F ; Alphabetic # Mn [7] ARABIC ZWARAKAY..ARABIC WAVY HAMZA BELOW 066E..066F ; Alphabetic # Lo [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF 0670 ; Alphabetic # Mn ARABIC LETTER SUPERSCRIPT ALEF 0671..06D3 ; Alphabetic # Lo [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE 06D5 ; Alphabetic # Lo ARABIC LETTER AE 06D6..06DC ; Alphabetic # Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN 06E1..06E4 ; Alphabetic # Mn [4] ARABIC SMALL HIGH DOTLESS HEAD OF KHAH..ARABIC SMALL HIGH MADDA 06E5..06E6 ; Alphabetic # Lm [2] ARABIC SMALL WAW..ARABIC SMALL YEH 06E7..06E8 ; Alphabetic # Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON 06ED ; Alphabetic # Mn ARABIC SMALL LOW MEEM 06EE..06EF ; Alphabetic # Lo [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V 06FA..06FC ; Alphabetic # Lo [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW 06FF ; Alphabetic # Lo ARABIC LETTER HEH WITH INVERTED V 0710 ; Alphabetic # Lo SYRIAC LETTER ALAPH 0711 ; Alphabetic # Mn SYRIAC LETTER SUPERSCRIPT ALAPH 0712..072F ; Alphabetic # Lo [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH 0730..073F ; Alphabetic # Mn [16] SYRIAC PTHAHA ABOVE..SYRIAC RWAHA 074D..07A5 ; Alphabetic # Lo [89] SYRIAC LETTER SOGDIAN ZHAIN..THAANA LETTER WAAVU 07A6..07B0 ; Alphabetic # Mn [11] THAANA ABAFILI..THAANA SUKUN 07B1 ; Alphabetic # Lo THAANA LETTER NAA 07CA..07EA ; Alphabetic # Lo [33] NKO LETTER A..NKO LETTER JONA RA 07F4..07F5 ; Alphabetic # Lm [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE 07FA ; Alphabetic # Lm NKO LAJANYALAN 0800..0815 ; Alphabetic # Lo [22] SAMARITAN LETTER ALAF..SAMARITAN LETTER TAAF 0816..0817 ; Alphabetic # Mn [2] SAMARITAN MARK IN..SAMARITAN MARK IN-ALAF 081A ; Alphabetic # Lm SAMARITAN MODIFIER LETTER EPENTHETIC YUT 081B..0823 ; Alphabetic # Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A 0824 ; Alphabetic # Lm SAMARITAN MODIFIER LETTER SHORT A 0825..0827 ; Alphabetic # Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U 0828 ; Alphabetic # Lm SAMARITAN MODIFIER LETTER I 0829..082C ; Alphabetic # Mn [4] SAMARITAN VOWEL SIGN LONG I..SAMARITAN VOWEL SIGN SUKUN 0840..0858 ; Alphabetic # Lo [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN 08A0..08B4 ; Alphabetic # Lo [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW 08B6..08BD ; Alphabetic # Lo [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON 08D4..08DF ; Alphabetic # Mn [12] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH WORD WAQFA 08E3..08E9 ; Alphabetic # Mn [7] ARABIC TURNED DAMMA BELOW..ARABIC CURLY KASRATAN 08F0..0902 ; Alphabetic # Mn [19] ARABIC OPEN FATHATAN..DEVANAGARI SIGN ANUSVARA 0903 ; Alphabetic # Mc DEVANAGARI SIGN VISARGA 0904..0939 ; Alphabetic # Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA 093A ; Alphabetic # Mn DEVANAGARI VOWEL SIGN OE 093B ; Alphabetic # Mc DEVANAGARI VOWEL SIGN OOE 093D ; Alphabetic # Lo DEVANAGARI SIGN AVAGRAHA 093E..0940 ; Alphabetic # Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II 0941..0948 ; Alphabetic # Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI 0949..094C ; Alphabetic # Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU 094E..094F ; Alphabetic # Mc [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW 0950 ; Alphabetic # Lo DEVANAGARI OM 0955..0957 ; Alphabetic # Mn [3] DEVANAGARI VOWEL SIGN CANDRA LONG E..DEVANAGARI VOWEL SIGN UUE 0958..0961 ; Alphabetic # Lo [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL 0962..0963 ; Alphabetic # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL 0971 ; Alphabetic # Lm DEVANAGARI SIGN HIGH SPACING DOT 0972..0980 ; Alphabetic # Lo [15] DEVANAGARI LETTER CANDRA A..BENGALI ANJI 0981 ; Alphabetic # Mn BENGALI SIGN CANDRABINDU 0982..0983 ; Alphabetic # Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA 0985..098C ; Alphabetic # Lo [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L 098F..0990 ; Alphabetic # Lo [2] BENGALI LETTER E..BENGALI LETTER AI 0993..09A8 ; Alphabetic # Lo [22] BENGALI LETTER O..BENGALI LETTER NA 09AA..09B0 ; Alphabetic # Lo [7] BENGALI LETTER PA..BENGALI LETTER RA 09B2 ; Alphabetic # Lo BENGALI LETTER LA 09B6..09B9 ; Alphabetic # Lo [4] BENGALI LETTER SHA..BENGALI LETTER HA 09BD ; Alphabetic # Lo BENGALI SIGN AVAGRAHA 09BE..09C0 ; Alphabetic # Mc [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II 09C1..09C4 ; Alphabetic # Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR 09C7..09C8 ; Alphabetic # Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI 09CB..09CC ; Alphabetic # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU 09CE ; Alphabetic # Lo BENGALI LETTER KHANDA TA 09D7 ; Alphabetic # Mc BENGALI AU LENGTH MARK 09DC..09DD ; Alphabetic # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA 09DF..09E1 ; Alphabetic # Lo [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL 09E2..09E3 ; Alphabetic # Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL 09F0..09F1 ; Alphabetic # Lo [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL 0A01..0A02 ; Alphabetic # Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI 0A03 ; Alphabetic # Mc GURMUKHI SIGN VISARGA 0A05..0A0A ; Alphabetic # Lo [6] GURMUKHI LETTER A..GURMUKHI LETTER UU 0A0F..0A10 ; Alphabetic # Lo [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI 0A13..0A28 ; Alphabetic # Lo [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA 0A2A..0A30 ; Alphabetic # Lo [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA 0A32..0A33 ; Alphabetic # Lo [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA 0A35..0A36 ; Alphabetic # Lo [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA 0A38..0A39 ; Alphabetic # Lo [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA 0A3E..0A40 ; Alphabetic # Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II 0A41..0A42 ; Alphabetic # Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU 0A47..0A48 ; Alphabetic # Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI 0A4B..0A4C ; Alphabetic # Mn [2] GURMUKHI VOWEL SIGN OO..GURMUKHI VOWEL SIGN AU 0A51 ; Alphabetic # Mn GURMUKHI SIGN UDAAT 0A59..0A5C ; Alphabetic # Lo [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA 0A5E ; Alphabetic # Lo GURMUKHI LETTER FA 0A70..0A71 ; Alphabetic # Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK 0A72..0A74 ; Alphabetic # Lo [3] GURMUKHI IRI..GURMUKHI EK ONKAR 0A75 ; Alphabetic # Mn GURMUKHI SIGN YAKASH 0A81..0A82 ; Alphabetic # Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA 0A83 ; Alphabetic # Mc GUJARATI SIGN VISARGA 0A85..0A8D ; Alphabetic # Lo [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E 0A8F..0A91 ; Alphabetic # Lo [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O 0A93..0AA8 ; Alphabetic # Lo [22] GUJARATI LETTER O..GUJARATI LETTER NA 0AAA..0AB0 ; Alphabetic # Lo [7] GUJARATI LETTER PA..GUJARATI LETTER RA 0AB2..0AB3 ; Alphabetic # Lo [2] GUJARATI LETTER LA..GUJARATI LETTER LLA 0AB5..0AB9 ; Alphabetic # Lo [5] GUJARATI LETTER VA..GUJARATI LETTER HA 0ABD ; Alphabetic # Lo GUJARATI SIGN AVAGRAHA 0ABE..0AC0 ; Alphabetic # Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II 0AC1..0AC5 ; Alphabetic # Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E 0AC7..0AC8 ; Alphabetic # Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI 0AC9 ; Alphabetic # Mc GUJARATI VOWEL SIGN CANDRA O 0ACB..0ACC ; Alphabetic # Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU 0AD0 ; Alphabetic # Lo GUJARATI OM 0AE0..0AE1 ; Alphabetic # Lo [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL 0AE2..0AE3 ; Alphabetic # Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL 0AF9 ; Alphabetic # Lo GUJARATI LETTER ZHA 0B01 ; Alphabetic # Mn ORIYA SIGN CANDRABINDU 0B02..0B03 ; Alphabetic # Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA 0B05..0B0C ; Alphabetic # Lo [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L 0B0F..0B10 ; Alphabetic # Lo [2] ORIYA LETTER E..ORIYA LETTER AI 0B13..0B28 ; Alphabetic # Lo [22] ORIYA LETTER O..ORIYA LETTER NA 0B2A..0B30 ; Alphabetic # Lo [7] ORIYA LETTER PA..ORIYA LETTER RA 0B32..0B33 ; Alphabetic # Lo [2] ORIYA LETTER LA..ORIYA LETTER LLA 0B35..0B39 ; Alphabetic # Lo [5] ORIYA LETTER VA..ORIYA LETTER HA 0B3D ; Alphabetic # Lo ORIYA SIGN AVAGRAHA 0B3E ; Alphabetic # Mc ORIYA VOWEL SIGN AA 0B3F ; Alphabetic # Mn ORIYA VOWEL SIGN I 0B40 ; Alphabetic # Mc ORIYA VOWEL SIGN II 0B41..0B44 ; Alphabetic # Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR 0B47..0B48 ; Alphabetic # Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI 0B4B..0B4C ; Alphabetic # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU 0B56 ; Alphabetic # Mn ORIYA AI LENGTH MARK 0B57 ; Alphabetic # Mc ORIYA AU LENGTH MARK 0B5C..0B5D ; Alphabetic # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA 0B5F..0B61 ; Alphabetic # Lo [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL 0B62..0B63 ; Alphabetic # Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL 0B71 ; Alphabetic # Lo ORIYA LETTER WA 0B82 ; Alphabetic # Mn TAMIL SIGN ANUSVARA 0B83 ; Alphabetic # Lo TAMIL SIGN VISARGA 0B85..0B8A ; Alphabetic # Lo [6] TAMIL LETTER A..TAMIL LETTER UU 0B8E..0B90 ; Alphabetic # Lo [3] TAMIL LETTER E..TAMIL LETTER AI 0B92..0B95 ; Alphabetic # Lo [4] TAMIL LETTER O..TAMIL LETTER KA 0B99..0B9A ; Alphabetic # Lo [2] TAMIL LETTER NGA..TAMIL LETTER CA 0B9C ; Alphabetic # Lo TAMIL LETTER JA 0B9E..0B9F ; Alphabetic # Lo [2] TAMIL LETTER NYA..TAMIL LETTER TTA 0BA3..0BA4 ; Alphabetic # Lo [2] TAMIL LETTER NNA..TAMIL LETTER TA 0BA8..0BAA ; Alphabetic # Lo [3] TAMIL LETTER NA..TAMIL LETTER PA 0BAE..0BB9 ; Alphabetic # Lo [12] TAMIL LETTER MA..TAMIL LETTER HA 0BBE..0BBF ; Alphabetic # Mc [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I 0BC0 ; Alphabetic # Mn TAMIL VOWEL SIGN II 0BC1..0BC2 ; Alphabetic # Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU 0BC6..0BC8 ; Alphabetic # Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI 0BCA..0BCC ; Alphabetic # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU 0BD0 ; Alphabetic # Lo TAMIL OM 0BD7 ; Alphabetic # Mc TAMIL AU LENGTH MARK 0C00 ; Alphabetic # Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE 0C01..0C03 ; Alphabetic # Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA 0C05..0C0C ; Alphabetic # Lo [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L 0C0E..0C10 ; Alphabetic # Lo [3] TELUGU LETTER E..TELUGU LETTER AI 0C12..0C28 ; Alphabetic # Lo [23] TELUGU LETTER O..TELUGU LETTER NA 0C2A..0C39 ; Alphabetic # Lo [16] TELUGU LETTER PA..TELUGU LETTER HA 0C3D ; Alphabetic # Lo TELUGU SIGN AVAGRAHA 0C3E..0C40 ; Alphabetic # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II 0C41..0C44 ; Alphabetic # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR 0C46..0C48 ; Alphabetic # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI 0C4A..0C4C ; Alphabetic # Mn [3] TELUGU VOWEL SIGN O..TELUGU VOWEL SIGN AU 0C55..0C56 ; Alphabetic # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK 0C58..0C5A ; Alphabetic # Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA 0C60..0C61 ; Alphabetic # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL 0C62..0C63 ; Alphabetic # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL 0C80 ; Alphabetic # Lo KANNADA SIGN SPACING CANDRABINDU 0C81 ; Alphabetic # Mn KANNADA SIGN CANDRABINDU 0C82..0C83 ; Alphabetic # Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA 0C85..0C8C ; Alphabetic # Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L 0C8E..0C90 ; Alphabetic # Lo [3] KANNADA LETTER E..KANNADA LETTER AI 0C92..0CA8 ; Alphabetic # Lo [23] KANNADA LETTER O..KANNADA LETTER NA 0CAA..0CB3 ; Alphabetic # Lo [10] KANNADA LETTER PA..KANNADA LETTER LLA 0CB5..0CB9 ; Alphabetic # Lo [5] KANNADA LETTER VA..KANNADA LETTER HA 0CBD ; Alphabetic # Lo KANNADA SIGN AVAGRAHA 0CBE ; Alphabetic # Mc KANNADA VOWEL SIGN AA 0CBF ; Alphabetic # Mn KANNADA VOWEL SIGN I 0CC0..0CC4 ; Alphabetic # Mc [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR 0CC6 ; Alphabetic # Mn KANNADA VOWEL SIGN E 0CC7..0CC8 ; Alphabetic # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI 0CCA..0CCB ; Alphabetic # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO 0CCC ; Alphabetic # Mn KANNADA VOWEL SIGN AU 0CD5..0CD6 ; Alphabetic # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK 0CDE ; Alphabetic # Lo KANNADA LETTER FA 0CE0..0CE1 ; Alphabetic # Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL 0CE2..0CE3 ; Alphabetic # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL 0CF1..0CF2 ; Alphabetic # Lo [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA 0D01 ; Alphabetic # Mn MALAYALAM SIGN CANDRABINDU 0D02..0D03 ; Alphabetic # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA 0D05..0D0C ; Alphabetic # Lo [8] MALAYALAM LETTER A..MALAYALAM LETTER VOCALIC L 0D0E..0D10 ; Alphabetic # Lo [3] MALAYALAM LETTER E..MALAYALAM LETTER AI 0D12..0D3A ; Alphabetic # Lo [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA 0D3D ; Alphabetic # Lo MALAYALAM SIGN AVAGRAHA 0D3E..0D40 ; Alphabetic # Mc [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II 0D41..0D44 ; Alphabetic # Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR 0D46..0D48 ; Alphabetic # Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI 0D4A..0D4C ; Alphabetic # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU 0D4E ; Alphabetic # Lo MALAYALAM LETTER DOT REPH 0D54..0D56 ; Alphabetic # Lo [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL 0D57 ; Alphabetic # Mc MALAYALAM AU LENGTH MARK 0D5F..0D61 ; Alphabetic # Lo [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL 0D62..0D63 ; Alphabetic # Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL 0D7A..0D7F ; Alphabetic # Lo [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K 0D82..0D83 ; Alphabetic # Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA 0D85..0D96 ; Alphabetic # Lo [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA 0D9A..0DB1 ; Alphabetic # Lo [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA 0DB3..0DBB ; Alphabetic # Lo [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA 0DBD ; Alphabetic # Lo SINHALA LETTER DANTAJA LAYANNA 0DC0..0DC6 ; Alphabetic # Lo [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA 0DCF..0DD1 ; Alphabetic # Mc [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA 0DD2..0DD4 ; Alphabetic # Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA 0DD6 ; Alphabetic # Mn SINHALA VOWEL SIGN DIGA PAA-PILLA 0DD8..0DDF ; Alphabetic # Mc [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA 0DF2..0DF3 ; Alphabetic # Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA 0E01..0E30 ; Alphabetic # Lo [48] THAI CHARACTER KO KAI..THAI CHARACTER SARA A 0E31 ; Alphabetic # Mn THAI CHARACTER MAI HAN-AKAT 0E32..0E33 ; Alphabetic # Lo [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM 0E34..0E3A ; Alphabetic # Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU 0E40..0E45 ; Alphabetic # Lo [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO 0E46 ; Alphabetic # Lm THAI CHARACTER MAIYAMOK 0E4D ; Alphabetic # Mn THAI CHARACTER NIKHAHIT 0E81..0E82 ; Alphabetic # Lo [2] LAO LETTER KO..LAO LETTER KHO SUNG 0E84 ; Alphabetic # Lo LAO LETTER KHO TAM 0E87..0E88 ; Alphabetic # Lo [2] LAO LETTER NGO..LAO LETTER CO 0E8A ; Alphabetic # Lo LAO LETTER SO TAM 0E8D ; Alphabetic # Lo LAO LETTER NYO 0E94..0E97 ; Alphabetic # Lo [4] LAO LETTER DO..LAO LETTER THO TAM 0E99..0E9F ; Alphabetic # Lo [7] LAO LETTER NO..LAO LETTER FO SUNG 0EA1..0EA3 ; Alphabetic # Lo [3] LAO LETTER MO..LAO LETTER LO LING 0EA5 ; Alphabetic # Lo LAO LETTER LO LOOT 0EA7 ; Alphabetic # Lo LAO LETTER WO 0EAA..0EAB ; Alphabetic # Lo [2] LAO LETTER SO SUNG..LAO LETTER HO SUNG 0EAD..0EB0 ; Alphabetic # Lo [4] LAO LETTER O..LAO VOWEL SIGN A 0EB1 ; Alphabetic # Mn LAO VOWEL SIGN MAI KAN 0EB2..0EB3 ; Alphabetic # Lo [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM 0EB4..0EB9 ; Alphabetic # Mn [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU 0EBB..0EBC ; Alphabetic # Mn [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO 0EBD ; Alphabetic # Lo LAO SEMIVOWEL SIGN NYO 0EC0..0EC4 ; Alphabetic # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI 0EC6 ; Alphabetic # Lm LAO KO LA 0ECD ; Alphabetic # Mn LAO NIGGAHITA 0EDC..0EDF ; Alphabetic # Lo [4] LAO HO NO..LAO LETTER KHMU NYO 0F00 ; Alphabetic # Lo TIBETAN SYLLABLE OM 0F40..0F47 ; Alphabetic # Lo [8] TIBETAN LETTER KA..TIBETAN LETTER JA 0F49..0F6C ; Alphabetic # Lo [36] TIBETAN LETTER NYA..TIBETAN LETTER RRA 0F71..0F7E ; Alphabetic # Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO 0F7F ; Alphabetic # Mc TIBETAN SIGN RNAM BCAD 0F80..0F81 ; Alphabetic # Mn [2] TIBETAN VOWEL SIGN REVERSED I..TIBETAN VOWEL SIGN REVERSED II 0F88..0F8C ; Alphabetic # Lo [5] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN INVERTED MCHU CAN 0F8D..0F97 ; Alphabetic # Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA 0F99..0FBC ; Alphabetic # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA 1000..102A ; Alphabetic # Lo [43] MYANMAR LETTER KA..MYANMAR LETTER AU 102B..102C ; Alphabetic # Mc [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA 102D..1030 ; Alphabetic # Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU 1031 ; Alphabetic # Mc MYANMAR VOWEL SIGN E 1032..1036 ; Alphabetic # Mn [5] MYANMAR VOWEL SIGN AI..MYANMAR SIGN ANUSVARA 1038 ; Alphabetic # Mc MYANMAR SIGN VISARGA 103B..103C ; Alphabetic # Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA 103D..103E ; Alphabetic # Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA 103F ; Alphabetic # Lo MYANMAR LETTER GREAT SA 1050..1055 ; Alphabetic # Lo [6] MYANMAR LETTER SHA..MYANMAR LETTER VOCALIC LL 1056..1057 ; Alphabetic # Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR 1058..1059 ; Alphabetic # Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL 105A..105D ; Alphabetic # Lo [4] MYANMAR LETTER MON NGA..MYANMAR LETTER MON BBE 105E..1060 ; Alphabetic # Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA 1061 ; Alphabetic # Lo MYANMAR LETTER SGAW KAREN SHA 1062 ; Alphabetic # Mc MYANMAR VOWEL SIGN SGAW KAREN EU 1065..1066 ; Alphabetic # Lo [2] MYANMAR LETTER WESTERN PWO KAREN THA..MYANMAR LETTER WESTERN PWO KAREN PWA 1067..1068 ; Alphabetic # Mc [2] MYANMAR VOWEL SIGN WESTERN PWO KAREN EU..MYANMAR VOWEL SIGN WESTERN PWO KAREN UE 106E..1070 ; Alphabetic # Lo [3] MYANMAR LETTER EASTERN PWO KAREN NNA..MYANMAR LETTER EASTERN PWO KAREN GHWA 1071..1074 ; Alphabetic # Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE 1075..1081 ; Alphabetic # Lo [13] MYANMAR LETTER SHAN KA..MYANMAR LETTER SHAN HA 1082 ; Alphabetic # Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA 1083..1084 ; Alphabetic # Mc [2] MYANMAR VOWEL SIGN SHAN AA..MYANMAR VOWEL SIGN SHAN E 1085..1086 ; Alphabetic # Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y 108E ; Alphabetic # Lo MYANMAR LETTER RUMAI PALAUNG FA 109C ; Alphabetic # Mc MYANMAR VOWEL SIGN AITON A 109D ; Alphabetic # Mn MYANMAR VOWEL SIGN AITON AI 10A0..10C5 ; Alphabetic # L& [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE 10C7 ; Alphabetic # L& GEORGIAN CAPITAL LETTER YN 10CD ; Alphabetic # L& GEORGIAN CAPITAL LETTER AEN 10D0..10FA ; Alphabetic # Lo [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN 10FC ; Alphabetic # Lm MODIFIER LETTER GEORGIAN NAR 10FD..1248 ; Alphabetic # Lo [332] GEORGIAN LETTER AEN..ETHIOPIC SYLLABLE QWA 124A..124D ; Alphabetic # Lo [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE 1250..1256 ; Alphabetic # Lo [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO 1258 ; Alphabetic # Lo ETHIOPIC SYLLABLE QHWA 125A..125D ; Alphabetic # Lo [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE 1260..1288 ; Alphabetic # Lo [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA 128A..128D ; Alphabetic # Lo [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE 1290..12B0 ; Alphabetic # Lo [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA 12B2..12B5 ; Alphabetic # Lo [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE 12B8..12BE ; Alphabetic # Lo [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO 12C0 ; Alphabetic # Lo ETHIOPIC SYLLABLE KXWA 12C2..12C5 ; Alphabetic # Lo [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE 12C8..12D6 ; Alphabetic # Lo [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O 12D8..1310 ; Alphabetic # Lo [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA 1312..1315 ; Alphabetic # Lo [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE 1318..135A ; Alphabetic # Lo [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA 135F ; Alphabetic # Mn ETHIOPIC COMBINING GEMINATION MARK 1380..138F ; Alphabetic # Lo [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE 13A0..13F5 ; Alphabetic # L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV 13F8..13FD ; Alphabetic # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV 1401..166C ; Alphabetic # Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA 166F..167F ; Alphabetic # Lo [17] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS BLACKFOOT W 1681..169A ; Alphabetic # Lo [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH 16A0..16EA ; Alphabetic # Lo [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X 16EE..16F0 ; Alphabetic # Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL 16F1..16F8 ; Alphabetic # Lo [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC 1700..170C ; Alphabetic # Lo [13] TAGALOG LETTER A..TAGALOG LETTER YA 170E..1711 ; Alphabetic # Lo [4] TAGALOG LETTER LA..TAGALOG LETTER HA 1712..1713 ; Alphabetic # Mn [2] TAGALOG VOWEL SIGN I..TAGALOG VOWEL SIGN U 1720..1731 ; Alphabetic # Lo [18] HANUNOO LETTER A..HANUNOO LETTER HA 1732..1733 ; Alphabetic # Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U 1740..1751 ; Alphabetic # Lo [18] BUHID LETTER A..BUHID LETTER HA 1752..1753 ; Alphabetic # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U 1760..176C ; Alphabetic # Lo [13] TAGBANWA LETTER A..TAGBANWA LETTER YA 176E..1770 ; Alphabetic # Lo [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA 1772..1773 ; Alphabetic # Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U 1780..17B3 ; Alphabetic # Lo [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU 17B6 ; Alphabetic # Mc KHMER VOWEL SIGN AA 17B7..17BD ; Alphabetic # Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA 17BE..17C5 ; Alphabetic # Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU 17C6 ; Alphabetic # Mn KHMER SIGN NIKAHIT 17C7..17C8 ; Alphabetic # Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU 17D7 ; Alphabetic # Lm KHMER SIGN LEK TOO 17DC ; Alphabetic # Lo KHMER SIGN AVAKRAHASANYA 1820..1842 ; Alphabetic # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI 1843 ; Alphabetic # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN 1844..1877 ; Alphabetic # Lo [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA 1880..1884 ; Alphabetic # Lo [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA 1885..1886 ; Alphabetic # Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA 1887..18A8 ; Alphabetic # Lo [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA 18A9 ; Alphabetic # Mn MONGOLIAN LETTER ALI GALI DAGALGA 18AA ; Alphabetic # Lo MONGOLIAN LETTER MANCHU ALI GALI LHA 18B0..18F5 ; Alphabetic # Lo [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S 1900..191E ; Alphabetic # Lo [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA 1920..1922 ; Alphabetic # Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U 1923..1926 ; Alphabetic # Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU 1927..1928 ; Alphabetic # Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O 1929..192B ; Alphabetic # Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA 1930..1931 ; Alphabetic # Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA 1932 ; Alphabetic # Mn LIMBU SMALL LETTER ANUSVARA 1933..1938 ; Alphabetic # Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA 1950..196D ; Alphabetic # Lo [30] TAI LE LETTER KA..TAI LE LETTER AI 1970..1974 ; Alphabetic # Lo [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6 1980..19AB ; Alphabetic # Lo [44] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW SUA 19B0..19C9 ; Alphabetic # Lo [26] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE TONE MARK-2 1A00..1A16 ; Alphabetic # Lo [23] BUGINESE LETTER KA..BUGINESE LETTER HA 1A17..1A18 ; Alphabetic # Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U 1A19..1A1A ; Alphabetic # Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O 1A1B ; Alphabetic # Mn BUGINESE VOWEL SIGN AE 1A20..1A54 ; Alphabetic # Lo [53] TAI THAM LETTER HIGH KA..TAI THAM LETTER GREAT SA 1A55 ; Alphabetic # Mc TAI THAM CONSONANT SIGN MEDIAL RA 1A56 ; Alphabetic # Mn TAI THAM CONSONANT SIGN MEDIAL LA 1A57 ; Alphabetic # Mc TAI THAM CONSONANT SIGN LA TANG LAI 1A58..1A5E ; Alphabetic # Mn [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA 1A61 ; Alphabetic # Mc TAI THAM VOWEL SIGN A 1A62 ; Alphabetic # Mn TAI THAM VOWEL SIGN MAI SAT 1A63..1A64 ; Alphabetic # Mc [2] TAI THAM VOWEL SIGN AA..TAI THAM VOWEL SIGN TALL AA 1A65..1A6C ; Alphabetic # Mn [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW 1A6D..1A72 ; Alphabetic # Mc [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI 1A73..1A74 ; Alphabetic # Mn [2] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN MAI KANG 1AA7 ; Alphabetic # Lm TAI THAM SIGN MAI YAMOK 1B00..1B03 ; Alphabetic # Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG 1B04 ; Alphabetic # Mc BALINESE SIGN BISAH 1B05..1B33 ; Alphabetic # Lo [47] BALINESE LETTER AKARA..BALINESE LETTER HA 1B35 ; Alphabetic # Mc BALINESE VOWEL SIGN TEDUNG 1B36..1B3A ; Alphabetic # Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA 1B3B ; Alphabetic # Mc BALINESE VOWEL SIGN RA REPA TEDUNG 1B3C ; Alphabetic # Mn BALINESE VOWEL SIGN LA LENGA 1B3D..1B41 ; Alphabetic # Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG 1B42 ; Alphabetic # Mn BALINESE VOWEL SIGN PEPET 1B43 ; Alphabetic # Mc BALINESE VOWEL SIGN PEPET TEDUNG 1B45..1B4B ; Alphabetic # Lo [7] BALINESE LETTER KAF SASAK..BALINESE LETTER ASYURA SASAK 1B80..1B81 ; Alphabetic # Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR 1B82 ; Alphabetic # Mc SUNDANESE SIGN PANGWISAD 1B83..1BA0 ; Alphabetic # Lo [30] SUNDANESE LETTER A..SUNDANESE LETTER HA 1BA1 ; Alphabetic # Mc SUNDANESE CONSONANT SIGN PAMINGKAL 1BA2..1BA5 ; Alphabetic # Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU 1BA6..1BA7 ; Alphabetic # Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG 1BA8..1BA9 ; Alphabetic # Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG 1BAC..1BAD ; Alphabetic # Mn [2] SUNDANESE CONSONANT SIGN PASANGAN MA..SUNDANESE CONSONANT SIGN PASANGAN WA 1BAE..1BAF ; Alphabetic # Lo [2] SUNDANESE LETTER KHA..SUNDANESE LETTER SYA 1BBA..1BE5 ; Alphabetic # Lo [44] SUNDANESE AVAGRAHA..BATAK LETTER U 1BE7 ; Alphabetic # Mc BATAK VOWEL SIGN E 1BE8..1BE9 ; Alphabetic # Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE 1BEA..1BEC ; Alphabetic # Mc [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O 1BED ; Alphabetic # Mn BATAK VOWEL SIGN KARO O 1BEE ; Alphabetic # Mc BATAK VOWEL SIGN U 1BEF..1BF1 ; Alphabetic # Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H 1C00..1C23 ; Alphabetic # Lo [36] LEPCHA LETTER KA..LEPCHA LETTER A 1C24..1C2B ; Alphabetic # Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU 1C2C..1C33 ; Alphabetic # Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T 1C34..1C35 ; Alphabetic # Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG 1C4D..1C4F ; Alphabetic # Lo [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA 1C5A..1C77 ; Alphabetic # Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH 1C78..1C7D ; Alphabetic # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD 1C80..1C88 ; Alphabetic # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK 1CE9..1CEC ; Alphabetic # Lo [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL 1CEE..1CF1 ; Alphabetic # Lo [4] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ANUSVARA UBHAYATO MUKHA 1CF2..1CF3 ; Alphabetic # Mc [2] VEDIC SIGN ARDHAVISARGA..VEDIC SIGN ROTATED ARDHAVISARGA 1CF5..1CF6 ; Alphabetic # Lo [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA 1D00..1D2B ; Alphabetic # L& [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL 1D2C..1D6A ; Alphabetic # Lm [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI 1D6B..1D77 ; Alphabetic # L& [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G 1D78 ; Alphabetic # Lm MODIFIER LETTER CYRILLIC EN 1D79..1D9A ; Alphabetic # L& [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK 1D9B..1DBF ; Alphabetic # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA 1DE7..1DF4 ; Alphabetic # Mn [14] COMBINING LATIN SMALL LETTER ALPHA..COMBINING LATIN SMALL LETTER U WITH DIAERESIS 1E00..1F15 ; Alphabetic # L& [278] LATIN CAPITAL LETTER A WITH RING BELOW..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA 1F18..1F1D ; Alphabetic # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA 1F20..1F45 ; Alphabetic # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA 1F48..1F4D ; Alphabetic # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA 1F50..1F57 ; Alphabetic # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI 1F59 ; Alphabetic # L& GREEK CAPITAL LETTER UPSILON WITH DASIA 1F5B ; Alphabetic # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA 1F5D ; Alphabetic # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA 1F5F..1F7D ; Alphabetic # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA 1F80..1FB4 ; Alphabetic # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI 1FB6..1FBC ; Alphabetic # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI 1FBE ; Alphabetic # L& GREEK PROSGEGRAMMENI 1FC2..1FC4 ; Alphabetic # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI 1FC6..1FCC ; Alphabetic # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI 1FD0..1FD3 ; Alphabetic # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA 1FD6..1FDB ; Alphabetic # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA 1FE0..1FEC ; Alphabetic # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA 1FF2..1FF4 ; Alphabetic # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI 1FF6..1FFC ; Alphabetic # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI 2071 ; Alphabetic # Lm SUPERSCRIPT LATIN SMALL LETTER I 207F ; Alphabetic # Lm SUPERSCRIPT LATIN SMALL LETTER N 2090..209C ; Alphabetic # Lm [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T 2102 ; Alphabetic # L& DOUBLE-STRUCK CAPITAL C 2107 ; Alphabetic # L& EULER CONSTANT 210A..2113 ; Alphabetic # L& [10] SCRIPT SMALL G..SCRIPT SMALL L 2115 ; Alphabetic # L& DOUBLE-STRUCK CAPITAL N 2119..211D ; Alphabetic # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R 2124 ; Alphabetic # L& DOUBLE-STRUCK CAPITAL Z 2126 ; Alphabetic # L& OHM SIGN 2128 ; Alphabetic # L& BLACK-LETTER CAPITAL Z 212A..212D ; Alphabetic # L& [4] KELVIN SIGN..BLACK-LETTER CAPITAL C 212F..2134 ; Alphabetic # L& [6] SCRIPT SMALL E..SCRIPT SMALL O 2135..2138 ; Alphabetic # Lo [4] ALEF SYMBOL..DALET SYMBOL 2139 ; Alphabetic # L& INFORMATION SOURCE 213C..213F ; Alphabetic # L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI 2145..2149 ; Alphabetic # L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J 214E ; Alphabetic # L& TURNED SMALL F 2160..2182 ; Alphabetic # Nl [35] ROMAN NUMERAL ONE..ROMAN NUMERAL TEN THOUSAND 2183..2184 ; Alphabetic # L& [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C 2185..2188 ; Alphabetic # Nl [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND 24B6..24E9 ; Alphabetic # So [52] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN SMALL LETTER Z 2C00..2C2E ; Alphabetic # L& [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE 2C30..2C5E ; Alphabetic # L& [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE 2C60..2C7B ; Alphabetic # L& [28] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN LETTER SMALL CAPITAL TURNED E 2C7C..2C7D ; Alphabetic # Lm [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V 2C7E..2CE4 ; Alphabetic # L& [103] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC SYMBOL KAI 2CEB..2CEE ; Alphabetic # L& [4] COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI..COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA 2CF2..2CF3 ; Alphabetic # L& [2] COPTIC CAPITAL LETTER BOHAIRIC KHEI..COPTIC SMALL LETTER BOHAIRIC KHEI 2D00..2D25 ; Alphabetic # L& [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE 2D27 ; Alphabetic # L& GEORGIAN SMALL LETTER YN 2D2D ; Alphabetic # L& GEORGIAN SMALL LETTER AEN 2D30..2D67 ; Alphabetic # Lo [56] TIFINAGH LETTER YA..TIFINAGH LETTER YO 2D6F ; Alphabetic # Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK 2D80..2D96 ; Alphabetic # Lo [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE 2DA0..2DA6 ; Alphabetic # Lo [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO 2DA8..2DAE ; Alphabetic # Lo [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO 2DB0..2DB6 ; Alphabetic # Lo [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO 2DB8..2DBE ; Alphabetic # Lo [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO 2DC0..2DC6 ; Alphabetic # Lo [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO 2DC8..2DCE ; Alphabetic # Lo [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO 2DD0..2DD6 ; Alphabetic # Lo [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO 2DD8..2DDE ; Alphabetic # Lo [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO 2DE0..2DFF ; Alphabetic # Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS 2E2F ; Alphabetic # Lm VERTICAL TILDE 3005 ; Alphabetic # Lm IDEOGRAPHIC ITERATION MARK 3006 ; Alphabetic # Lo IDEOGRAPHIC CLOSING MARK 3007 ; Alphabetic # Nl IDEOGRAPHIC NUMBER ZERO 3021..3029 ; Alphabetic # Nl [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE 3031..3035 ; Alphabetic # Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF 3038..303A ; Alphabetic # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY 303B ; Alphabetic # Lm VERTICAL IDEOGRAPHIC ITERATION MARK 303C ; Alphabetic # Lo MASU MARK 3041..3096 ; Alphabetic # Lo [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE 309D..309E ; Alphabetic # Lm [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK 309F ; Alphabetic # Lo HIRAGANA DIGRAPH YORI 30A1..30FA ; Alphabetic # Lo [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO 30FC..30FE ; Alphabetic # Lm [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK 30FF ; Alphabetic # Lo KATAKANA DIGRAPH KOTO 3105..312D ; Alphabetic # Lo [41] BOPOMOFO LETTER B..BOPOMOFO LETTER IH 3131..318E ; Alphabetic # Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE 31A0..31BA ; Alphabetic # Lo [27] BOPOMOFO LETTER BU..BOPOMOFO LETTER ZY 31F0..31FF ; Alphabetic # Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO 3400..4DB5 ; Alphabetic # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 4E00..9FD5 ; Alphabetic # Lo [20950] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FD5 A000..A014 ; Alphabetic # Lo [21] YI SYLLABLE IT..YI SYLLABLE E A015 ; Alphabetic # Lm YI SYLLABLE WU A016..A48C ; Alphabetic # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR A4D0..A4F7 ; Alphabetic # Lo [40] LISU LETTER BA..LISU LETTER OE A4F8..A4FD ; Alphabetic # Lm [6] LISU LETTER TONE MYA TI..LISU LETTER TONE MYA JEU A500..A60B ; Alphabetic # Lo [268] VAI SYLLABLE EE..VAI SYLLABLE NG A60C ; Alphabetic # Lm VAI SYLLABLE LENGTHENER A610..A61F ; Alphabetic # Lo [16] VAI SYLLABLE NDOLE FA..VAI SYMBOL JONG A62A..A62B ; Alphabetic # Lo [2] VAI SYLLABLE NDOLE MA..VAI SYLLABLE NDOLE DO A640..A66D ; Alphabetic # L& [46] CYRILLIC CAPITAL LETTER ZEMLYA..CYRILLIC SMALL LETTER DOUBLE MONOCULAR O A66E ; Alphabetic # Lo CYRILLIC LETTER MULTIOCULAR O A674..A67B ; Alphabetic # Mn [8] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC LETTER OMEGA A67F ; Alphabetic # Lm CYRILLIC PAYEROK A680..A69B ; Alphabetic # L& [28] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER CROSSED O A69C..A69D ; Alphabetic # Lm [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN A69E..A69F ; Alphabetic # Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E A6A0..A6E5 ; Alphabetic # Lo [70] BAMUM LETTER A..BAMUM LETTER KI A6E6..A6EF ; Alphabetic # Nl [10] BAMUM LETTER MO..BAMUM LETTER KOGHOM A717..A71F ; Alphabetic # Lm [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK A722..A76F ; Alphabetic # L& [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN SMALL LETTER CON A770 ; Alphabetic # Lm MODIFIER LETTER US A771..A787 ; Alphabetic # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T A788 ; Alphabetic # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT A78B..A78E ; Alphabetic # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT A78F ; Alphabetic # Lo LATIN LETTER SINOLOGICAL DOT A790..A7AE ; Alphabetic # L& [31] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER SMALL CAPITAL I A7B0..A7B7 ; Alphabetic # L& [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA A7F7 ; Alphabetic # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I A7F8..A7F9 ; Alphabetic # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE A7FA ; Alphabetic # L& LATIN LETTER SMALL CAPITAL TURNED M A7FB..A801 ; Alphabetic # Lo [7] LATIN EPIGRAPHIC LETTER REVERSED F..SYLOTI NAGRI LETTER I A803..A805 ; Alphabetic # Lo [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O A807..A80A ; Alphabetic # Lo [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO A80C..A822 ; Alphabetic # Lo [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO A823..A824 ; Alphabetic # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I A825..A826 ; Alphabetic # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E A827 ; Alphabetic # Mc SYLOTI NAGRI VOWEL SIGN OO A840..A873 ; Alphabetic # Lo [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU A880..A881 ; Alphabetic # Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA A882..A8B3 ; Alphabetic # Lo [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA A8B4..A8C3 ; Alphabetic # Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU A8C5 ; Alphabetic # Mn SAURASHTRA SIGN CANDRABINDU A8F2..A8F7 ; Alphabetic # Lo [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA A8FB ; Alphabetic # Lo DEVANAGARI HEADSTROKE A8FD ; Alphabetic # Lo DEVANAGARI JAIN OM A90A..A925 ; Alphabetic # Lo [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO A926..A92A ; Alphabetic # Mn [5] KAYAH LI VOWEL UE..KAYAH LI VOWEL O A930..A946 ; Alphabetic # Lo [23] REJANG LETTER KA..REJANG LETTER A A947..A951 ; Alphabetic # Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R A952 ; Alphabetic # Mc REJANG CONSONANT SIGN H A960..A97C ; Alphabetic # Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH A980..A982 ; Alphabetic # Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR A983 ; Alphabetic # Mc JAVANESE SIGN WIGNYAN A984..A9B2 ; Alphabetic # Lo [47] JAVANESE LETTER A..JAVANESE LETTER HA A9B4..A9B5 ; Alphabetic # Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG A9B6..A9B9 ; Alphabetic # Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT A9BA..A9BB ; Alphabetic # Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE A9BC ; Alphabetic # Mn JAVANESE VOWEL SIGN PEPET A9BD..A9BF ; Alphabetic # Mc [3] JAVANESE CONSONANT SIGN KERET..JAVANESE CONSONANT SIGN CAKRA A9CF ; Alphabetic # Lm JAVANESE PANGRANGKEP A9E0..A9E4 ; Alphabetic # Lo [5] MYANMAR LETTER SHAN GHA..MYANMAR LETTER SHAN BHA A9E6 ; Alphabetic # Lm MYANMAR MODIFIER LETTER SHAN REDUPLICATION A9E7..A9EF ; Alphabetic # Lo [9] MYANMAR LETTER TAI LAING NYA..MYANMAR LETTER TAI LAING NNA A9FA..A9FE ; Alphabetic # Lo [5] MYANMAR LETTER TAI LAING LLA..MYANMAR LETTER TAI LAING BHA AA00..AA28 ; Alphabetic # Lo [41] CHAM LETTER A..CHAM LETTER HA AA29..AA2E ; Alphabetic # Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE AA2F..AA30 ; Alphabetic # Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI AA31..AA32 ; Alphabetic # Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE AA33..AA34 ; Alphabetic # Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA AA35..AA36 ; Alphabetic # Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA AA40..AA42 ; Alphabetic # Lo [3] CHAM LETTER FINAL K..CHAM LETTER FINAL NG AA43 ; Alphabetic # Mn CHAM CONSONANT SIGN FINAL NG AA44..AA4B ; Alphabetic # Lo [8] CHAM LETTER FINAL CH..CHAM LETTER FINAL SS AA4C ; Alphabetic # Mn CHAM CONSONANT SIGN FINAL M AA4D ; Alphabetic # Mc CHAM CONSONANT SIGN FINAL H AA60..AA6F ; Alphabetic # Lo [16] MYANMAR LETTER KHAMTI GA..MYANMAR LETTER KHAMTI FA AA70 ; Alphabetic # Lm MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION AA71..AA76 ; Alphabetic # Lo [6] MYANMAR LETTER KHAMTI XA..MYANMAR LOGOGRAM KHAMTI HM AA7A ; Alphabetic # Lo MYANMAR LETTER AITON RA AA7E..AAAF ; Alphabetic # Lo [50] MYANMAR LETTER SHWE PALAUNG CHA..TAI VIET LETTER HIGH O AAB0 ; Alphabetic # Mn TAI VIET MAI KANG AAB1 ; Alphabetic # Lo TAI VIET VOWEL AA AAB2..AAB4 ; Alphabetic # Mn [3] TAI VIET VOWEL I..TAI VIET VOWEL U AAB5..AAB6 ; Alphabetic # Lo [2] TAI VIET VOWEL E..TAI VIET VOWEL O AAB7..AAB8 ; Alphabetic # Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA AAB9..AABD ; Alphabetic # Lo [5] TAI VIET VOWEL UEA..TAI VIET VOWEL AN AABE ; Alphabetic # Mn TAI VIET VOWEL AM AAC0 ; Alphabetic # Lo TAI VIET TONE MAI NUENG AAC2 ; Alphabetic # Lo TAI VIET TONE MAI SONG AADB..AADC ; Alphabetic # Lo [2] TAI VIET SYMBOL KON..TAI VIET SYMBOL NUENG AADD ; Alphabetic # Lm TAI VIET SYMBOL SAM AAE0..AAEA ; Alphabetic # Lo [11] MEETEI MAYEK LETTER E..MEETEI MAYEK LETTER SSA AAEB ; Alphabetic # Mc MEETEI MAYEK VOWEL SIGN II AAEC..AAED ; Alphabetic # Mn [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI AAEE..AAEF ; Alphabetic # Mc [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU AAF2 ; Alphabetic # Lo MEETEI MAYEK ANJI AAF3..AAF4 ; Alphabetic # Lm [2] MEETEI MAYEK SYLLABLE REPETITION MARK..MEETEI MAYEK WORD REPETITION MARK AAF5 ; Alphabetic # Mc MEETEI MAYEK VOWEL SIGN VISARGA AB01..AB06 ; Alphabetic # Lo [6] ETHIOPIC SYLLABLE TTHU..ETHIOPIC SYLLABLE TTHO AB09..AB0E ; Alphabetic # Lo [6] ETHIOPIC SYLLABLE DDHU..ETHIOPIC SYLLABLE DDHO AB11..AB16 ; Alphabetic # Lo [6] ETHIOPIC SYLLABLE DZU..ETHIOPIC SYLLABLE DZO AB20..AB26 ; Alphabetic # Lo [7] ETHIOPIC SYLLABLE CCHHA..ETHIOPIC SYLLABLE CCHHO AB28..AB2E ; Alphabetic # Lo [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO AB30..AB5A ; Alphabetic # L& [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG AB5C..AB5F ; Alphabetic # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK AB60..AB65 ; Alphabetic # L& [6] LATIN SMALL LETTER SAKHA YAT..GREEK LETTER SMALL CAPITAL OMEGA AB70..ABBF ; Alphabetic # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA ABC0..ABE2 ; Alphabetic # Lo [35] MEETEI MAYEK LETTER KOK..MEETEI MAYEK LETTER I LONSUM ABE3..ABE4 ; Alphabetic # Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP ABE5 ; Alphabetic # Mn MEETEI MAYEK VOWEL SIGN ANAP ABE6..ABE7 ; Alphabetic # Mc [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP ABE8 ; Alphabetic # Mn MEETEI MAYEK VOWEL SIGN UNAP ABE9..ABEA ; Alphabetic # Mc [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG AC00..D7A3 ; Alphabetic # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH D7B0..D7C6 ; Alphabetic # Lo [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E D7CB..D7FB ; Alphabetic # Lo [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH F900..FA6D ; Alphabetic # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D FA70..FAD9 ; Alphabetic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 FB00..FB06 ; Alphabetic # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST FB13..FB17 ; Alphabetic # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH FB1D ; Alphabetic # Lo HEBREW LETTER YOD WITH HIRIQ FB1E ; Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA FB1F..FB28 ; Alphabetic # Lo [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV FB2A..FB36 ; Alphabetic # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH FB38..FB3C ; Alphabetic # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH FB3E ; Alphabetic # Lo HEBREW LETTER MEM WITH DAGESH FB40..FB41 ; Alphabetic # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH FB43..FB44 ; Alphabetic # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH FB46..FBB1 ; Alphabetic # Lo [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM FBD3..FD3D ; Alphabetic # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM FD50..FD8F ; Alphabetic # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM FD92..FDC7 ; Alphabetic # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM FDF0..FDFB ; Alphabetic # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU FE70..FE74 ; Alphabetic # Lo [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM FE76..FEFC ; Alphabetic # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM FF21..FF3A ; Alphabetic # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z FF41..FF5A ; Alphabetic # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z FF66..FF6F ; Alphabetic # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU FF70 ; Alphabetic # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK FF71..FF9D ; Alphabetic # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N FF9E..FF9F ; Alphabetic # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK FFA0..FFBE ; Alphabetic # Lo [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH FFC2..FFC7 ; Alphabetic # Lo [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E FFCA..FFCF ; Alphabetic # Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE FFD2..FFD7 ; Alphabetic # Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU FFDA..FFDC ; Alphabetic # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I 10000..1000B ; Alphabetic # Lo [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE 1000D..10026 ; Alphabetic # Lo [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO 10028..1003A ; Alphabetic # Lo [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO 1003C..1003D ; Alphabetic # Lo [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE 1003F..1004D ; Alphabetic # Lo [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO 10050..1005D ; Alphabetic # Lo [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089 10080..100FA ; Alphabetic # Lo [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305 10140..10174 ; Alphabetic # Nl [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS 10280..1029C ; Alphabetic # Lo [29] LYCIAN LETTER A..LYCIAN LETTER X 102A0..102D0 ; Alphabetic # Lo [49] CARIAN LETTER A..CARIAN LETTER UUU3 10300..1031F ; Alphabetic # Lo [32] OLD ITALIC LETTER A..OLD ITALIC LETTER ESS 10330..10340 ; Alphabetic # Lo [17] GOTHIC LETTER AHSA..GOTHIC LETTER PAIRTHRA 10341 ; Alphabetic # Nl GOTHIC LETTER NINETY 10342..10349 ; Alphabetic # Lo [8] GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL 1034A ; Alphabetic # Nl GOTHIC LETTER NINE HUNDRED 10350..10375 ; Alphabetic # Lo [38] OLD PERMIC LETTER AN..OLD PERMIC LETTER IA 10376..1037A ; Alphabetic # Mn [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII 10380..1039D ; Alphabetic # Lo [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU 103A0..103C3 ; Alphabetic # Lo [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA 103C8..103CF ; Alphabetic # Lo [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH 103D1..103D5 ; Alphabetic # Nl [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED 10400..1044F ; Alphabetic # L& [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW 10450..1049D ; Alphabetic # Lo [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO 104B0..104D3 ; Alphabetic # L& [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA 104D8..104FB ; Alphabetic # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA 10500..10527 ; Alphabetic # Lo [40] ELBASAN LETTER A..ELBASAN LETTER KHE 10530..10563 ; Alphabetic # Lo [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW 10600..10736 ; Alphabetic # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664 10740..10755 ; Alphabetic # Lo [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE 10760..10767 ; Alphabetic # Lo [8] LINEAR A SIGN A800..LINEAR A SIGN A807 10800..10805 ; Alphabetic # Lo [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA 10808 ; Alphabetic # Lo CYPRIOT SYLLABLE JO 1080A..10835 ; Alphabetic # Lo [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO 10837..10838 ; Alphabetic # Lo [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE 1083C ; Alphabetic # Lo CYPRIOT SYLLABLE ZA 1083F..10855 ; Alphabetic # Lo [23] CYPRIOT SYLLABLE ZO..IMPERIAL ARAMAIC LETTER TAW 10860..10876 ; Alphabetic # Lo [23] PALMYRENE LETTER ALEPH..PALMYRENE LETTER TAW 10880..1089E ; Alphabetic # Lo [31] NABATAEAN LETTER FINAL ALEPH..NABATAEAN LETTER TAW 108E0..108F2 ; Alphabetic # Lo [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH 108F4..108F5 ; Alphabetic # Lo [2] HATRAN LETTER SHIN..HATRAN LETTER TAW 10900..10915 ; Alphabetic # Lo [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU 10920..10939 ; Alphabetic # Lo [26] LYDIAN LETTER A..LYDIAN LETTER C 10980..109B7 ; Alphabetic # Lo [56] MEROITIC HIEROGLYPHIC LETTER A..MEROITIC CURSIVE LETTER DA 109BE..109BF ; Alphabetic # Lo [2] MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN 10A00 ; Alphabetic # Lo KHAROSHTHI LETTER A 10A01..10A03 ; Alphabetic # Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R 10A05..10A06 ; Alphabetic # Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O 10A0C..10A0F ; Alphabetic # Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA 10A10..10A13 ; Alphabetic # Lo [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA 10A15..10A17 ; Alphabetic # Lo [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA 10A19..10A33 ; Alphabetic # Lo [27] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER TTTHA 10A60..10A7C ; Alphabetic # Lo [29] OLD SOUTH ARABIAN LETTER HE..OLD SOUTH ARABIAN LETTER THETH 10A80..10A9C ; Alphabetic # Lo [29] OLD NORTH ARABIAN LETTER HEH..OLD NORTH ARABIAN LETTER ZAH 10AC0..10AC7 ; Alphabetic # Lo [8] MANICHAEAN LETTER ALEPH..MANICHAEAN LETTER WAW 10AC9..10AE4 ; Alphabetic # Lo [28] MANICHAEAN LETTER ZAYIN..MANICHAEAN LETTER TAW 10B00..10B35 ; Alphabetic # Lo [54] AVESTAN LETTER A..AVESTAN LETTER HE 10B40..10B55 ; Alphabetic # Lo [22] INSCRIPTIONAL PARTHIAN LETTER ALEPH..INSCRIPTIONAL PARTHIAN LETTER TAW 10B60..10B72 ; Alphabetic # Lo [19] INSCRIPTIONAL PAHLAVI LETTER ALEPH..INSCRIPTIONAL PAHLAVI LETTER TAW 10B80..10B91 ; Alphabetic # Lo [18] PSALTER PAHLAVI LETTER ALEPH..PSALTER PAHLAVI LETTER TAW 10C00..10C48 ; Alphabetic # Lo [73] OLD TURKIC LETTER ORKHON A..OLD TURKIC LETTER ORKHON BASH 10C80..10CB2 ; Alphabetic # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US 10CC0..10CF2 ; Alphabetic # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US 11000 ; Alphabetic # Mc BRAHMI SIGN CANDRABINDU 11001 ; Alphabetic # Mn BRAHMI SIGN ANUSVARA 11002 ; Alphabetic # Mc BRAHMI SIGN VISARGA 11003..11037 ; Alphabetic # Lo [53] BRAHMI SIGN JIHVAMULIYA..BRAHMI LETTER OLD TAMIL NNNA 11038..11045 ; Alphabetic # Mn [14] BRAHMI VOWEL SIGN AA..BRAHMI VOWEL SIGN AU 11082 ; Alphabetic # Mc KAITHI SIGN VISARGA 11083..110AF ; Alphabetic # Lo [45] KAITHI LETTER A..KAITHI LETTER HA 110B0..110B2 ; Alphabetic # Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II 110B3..110B6 ; Alphabetic # Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI 110B7..110B8 ; Alphabetic # Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU 110D0..110E8 ; Alphabetic # Lo [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE 11100..11102 ; Alphabetic # Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA 11103..11126 ; Alphabetic # Lo [36] CHAKMA LETTER AA..CHAKMA LETTER HAA 11127..1112B ; Alphabetic # Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU 1112C ; Alphabetic # Mc CHAKMA VOWEL SIGN E 1112D..11132 ; Alphabetic # Mn [6] CHAKMA VOWEL SIGN AI..CHAKMA AU MARK 11150..11172 ; Alphabetic # Lo [35] MAHAJANI LETTER A..MAHAJANI LETTER RRA 11176 ; Alphabetic # Lo MAHAJANI LIGATURE SHRI 11180..11181 ; Alphabetic # Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA 11182 ; Alphabetic # Mc SHARADA SIGN VISARGA 11183..111B2 ; Alphabetic # Lo [48] SHARADA LETTER A..SHARADA LETTER HA 111B3..111B5 ; Alphabetic # Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II 111B6..111BE ; Alphabetic # Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O 111BF ; Alphabetic # Mc SHARADA VOWEL SIGN AU 111C1..111C4 ; Alphabetic # Lo [4] SHARADA SIGN AVAGRAHA..SHARADA OM 111DA ; Alphabetic # Lo SHARADA EKAM 111DC ; Alphabetic # Lo SHARADA HEADSTROKE 11200..11211 ; Alphabetic # Lo [18] KHOJKI LETTER A..KHOJKI LETTER JJA 11213..1122B ; Alphabetic # Lo [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA 1122C..1122E ; Alphabetic # Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II 1122F..11231 ; Alphabetic # Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI 11232..11233 ; Alphabetic # Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU 11234 ; Alphabetic # Mn KHOJKI SIGN ANUSVARA 11237 ; Alphabetic # Mn KHOJKI SIGN SHADDA 1123E ; Alphabetic # Mn KHOJKI SIGN SUKUN 11280..11286 ; Alphabetic # Lo [7] MULTANI LETTER A..MULTANI LETTER GA 11288 ; Alphabetic # Lo MULTANI LETTER GHA 1128A..1128D ; Alphabetic # Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA 1128F..1129D ; Alphabetic # Lo [15] MULTANI LETTER NYA..MULTANI LETTER BA 1129F..112A8 ; Alphabetic # Lo [10] MULTANI LETTER BHA..MULTANI LETTER RHA 112B0..112DE ; Alphabetic # Lo [47] KHUDAWADI LETTER A..KHUDAWADI LETTER HA 112DF ; Alphabetic # Mn KHUDAWADI SIGN ANUSVARA 112E0..112E2 ; Alphabetic # Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II 112E3..112E8 ; Alphabetic # Mn [6] KHUDAWADI VOWEL SIGN U..KHUDAWADI VOWEL SIGN AU 11300..11301 ; Alphabetic # Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU 11302..11303 ; Alphabetic # Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA 11305..1130C ; Alphabetic # Lo [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L 1130F..11310 ; Alphabetic # Lo [2] GRANTHA LETTER EE..GRANTHA LETTER AI 11313..11328 ; Alphabetic # Lo [22] GRANTHA LETTER OO..GRANTHA LETTER NA 1132A..11330 ; Alphabetic # Lo [7] GRANTHA LETTER PA..GRANTHA LETTER RA 11332..11333 ; Alphabetic # Lo [2] GRANTHA LETTER LA..GRANTHA LETTER LLA 11335..11339 ; Alphabetic # Lo [5] GRANTHA LETTER VA..GRANTHA LETTER HA 1133D ; Alphabetic # Lo GRANTHA SIGN AVAGRAHA 1133E..1133F ; Alphabetic # Mc [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I 11340 ; Alphabetic # Mn GRANTHA VOWEL SIGN II 11341..11344 ; Alphabetic # Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR 11347..11348 ; Alphabetic # Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI 1134B..1134C ; Alphabetic # Mc [2] GRANTHA VOWEL SIGN OO..GRANTHA VOWEL SIGN AU 11350 ; Alphabetic # Lo GRANTHA OM 11357 ; Alphabetic # Mc GRANTHA AU LENGTH MARK 1135D..11361 ; Alphabetic # Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL 11362..11363 ; Alphabetic # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL 11400..11434 ; Alphabetic # Lo [53] NEWA LETTER A..NEWA LETTER HA 11435..11437 ; Alphabetic # Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II 11438..1143F ; Alphabetic # Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI 11440..11441 ; Alphabetic # Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU 11443..11444 ; Alphabetic # Mn [2] NEWA SIGN CANDRABINDU..NEWA SIGN ANUSVARA 11445 ; Alphabetic # Mc NEWA SIGN VISARGA 11447..1144A ; Alphabetic # Lo [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI 11480..114AF ; Alphabetic # Lo [48] TIRHUTA ANJI..TIRHUTA LETTER HA 114B0..114B2 ; Alphabetic # Mc [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II 114B3..114B8 ; Alphabetic # Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL 114B9 ; Alphabetic # Mc TIRHUTA VOWEL SIGN E 114BA ; Alphabetic # Mn TIRHUTA VOWEL SIGN SHORT E 114BB..114BE ; Alphabetic # Mc [4] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN AU 114BF..114C0 ; Alphabetic # Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA 114C1 ; Alphabetic # Mc TIRHUTA SIGN VISARGA 114C4..114C5 ; Alphabetic # Lo [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG 114C7 ; Alphabetic # Lo TIRHUTA OM 11580..115AE ; Alphabetic # Lo [47] SIDDHAM LETTER A..SIDDHAM LETTER HA 115AF..115B1 ; Alphabetic # Mc [3] SIDDHAM VOWEL SIGN AA..SIDDHAM VOWEL SIGN II 115B2..115B5 ; Alphabetic # Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR 115B8..115BB ; Alphabetic # Mc [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU 115BC..115BD ; Alphabetic # Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA 115BE ; Alphabetic # Mc SIDDHAM SIGN VISARGA 115D8..115DB ; Alphabetic # Lo [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U 115DC..115DD ; Alphabetic # Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU 11600..1162F ; Alphabetic # Lo [48] MODI LETTER A..MODI LETTER LLA 11630..11632 ; Alphabetic # Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II 11633..1163A ; Alphabetic # Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI 1163B..1163C ; Alphabetic # Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU 1163D ; Alphabetic # Mn MODI SIGN ANUSVARA 1163E ; Alphabetic # Mc MODI SIGN VISARGA 11640 ; Alphabetic # Mn MODI SIGN ARDHACANDRA 11644 ; Alphabetic # Lo MODI SIGN HUVA 11680..116AA ; Alphabetic # Lo [43] TAKRI LETTER A..TAKRI LETTER RRA 116AB ; Alphabetic # Mn TAKRI SIGN ANUSVARA 116AC ; Alphabetic # Mc TAKRI SIGN VISARGA 116AD ; Alphabetic # Mn TAKRI VOWEL SIGN AA 116AE..116AF ; Alphabetic # Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II 116B0..116B5 ; Alphabetic # Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU 11700..11719 ; Alphabetic # Lo [26] AHOM LETTER KA..AHOM LETTER JHA 1171D..1171F ; Alphabetic # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA 11720..11721 ; Alphabetic # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA 11722..11725 ; Alphabetic # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU 11726 ; Alphabetic # Mc AHOM VOWEL SIGN E 11727..1172A ; Alphabetic # Mn [4] AHOM VOWEL SIGN AW..AHOM VOWEL SIGN AM 118A0..118DF ; Alphabetic # L& [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO 118FF ; Alphabetic # Lo WARANG CITI OM 11AC0..11AF8 ; Alphabetic # Lo [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL 11C00..11C08 ; Alphabetic # Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L 11C0A..11C2E ; Alphabetic # Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA 11C2F ; Alphabetic # Mc BHAIKSUKI VOWEL SIGN AA 11C30..11C36 ; Alphabetic # Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L 11C38..11C3B ; Alphabetic # Mc [4] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI VOWEL SIGN AU 11C3C..11C3D ; Alphabetic # Mn [2] BHAIKSUKI SIGN CANDRABINDU..BHAIKSUKI SIGN ANUSVARA 11C3E ; Alphabetic # Mc BHAIKSUKI SIGN VISARGA 11C3F ; Alphabetic # Mn BHAIKSUKI SIGN VIRAMA 11C40 ; Alphabetic # Lo BHAIKSUKI SIGN AVAGRAHA 11C72..11C8F ; Alphabetic # Lo [30] MARCHEN LETTER KA..MARCHEN LETTER A 11C92..11CA7 ; Alphabetic # Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA 11CA9..11CB0 ; Alphabetic # Mn [8] MARCHEN SUBJOINED LETTER YA..MARCHEN VOWEL SIGN AA 11CB1 ; Alphabetic # Mc MARCHEN VOWEL SIGN I 11CB2..11CB3 ; Alphabetic # Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E 11CB4 ; Alphabetic # Mc MARCHEN VOWEL SIGN O 11CB5..11CB6 ; Alphabetic # Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU 12000..12399 ; Alphabetic # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U 12400..1246E ; Alphabetic # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM 12480..12543 ; Alphabetic # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU 13000..1342E ; Alphabetic # Lo [1071] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH AA032 14400..14646 ; Alphabetic # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 16800..16A38 ; Alphabetic # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ 16A40..16A5E ; Alphabetic # Lo [31] MRO LETTER TA..MRO LETTER TEK 16AD0..16AED ; Alphabetic # Lo [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I 16B00..16B2F ; Alphabetic # Lo [48] PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG CONSONANT CAU 16B30..16B36 ; Alphabetic # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM 16B40..16B43 ; Alphabetic # Lm [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM 16B63..16B77 ; Alphabetic # Lo [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS 16B7D..16B8F ; Alphabetic # Lo [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ 16F00..16F44 ; Alphabetic # Lo [69] MIAO LETTER PA..MIAO LETTER HHA 16F50 ; Alphabetic # Lo MIAO LETTER NASALIZATION 16F51..16F7E ; Alphabetic # Mc [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG 16F93..16F9F ; Alphabetic # Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8 16FE0 ; Alphabetic # Lm TANGUT ITERATION MARK 17000..187EC ; Alphabetic # Lo [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC 18800..18AF2 ; Alphabetic # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755 1B000..1B001 ; Alphabetic # Lo [2] KATAKANA LETTER ARCHAIC E..HIRAGANA LETTER ARCHAIC YE 1BC00..1BC6A ; Alphabetic # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M 1BC70..1BC7C ; Alphabetic # Lo [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK 1BC80..1BC88 ; Alphabetic # Lo [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL 1BC90..1BC99 ; Alphabetic # Lo [10] DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW 1BC9E ; Alphabetic # Mn DUPLOYAN DOUBLE MARK 1D400..1D454 ; Alphabetic # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G 1D456..1D49C ; Alphabetic # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A 1D49E..1D49F ; Alphabetic # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D 1D4A2 ; Alphabetic # L& MATHEMATICAL SCRIPT CAPITAL G 1D4A5..1D4A6 ; Alphabetic # L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K 1D4A9..1D4AC ; Alphabetic # L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q 1D4AE..1D4B9 ; Alphabetic # L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D 1D4BB ; Alphabetic # L& MATHEMATICAL SCRIPT SMALL F 1D4BD..1D4C3 ; Alphabetic # L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N 1D4C5..1D505 ; Alphabetic # L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B 1D507..1D50A ; Alphabetic # L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G 1D50D..1D514 ; Alphabetic # L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q 1D516..1D51C ; Alphabetic # L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y 1D51E..1D539 ; Alphabetic # L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B 1D53B..1D53E ; Alphabetic # L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G 1D540..1D544 ; Alphabetic # L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M 1D546 ; Alphabetic # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O 1D54A..1D550 ; Alphabetic # L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y 1D552..1D6A5 ; Alphabetic # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J 1D6A8..1D6C0 ; Alphabetic # L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA 1D6C2..1D6DA ; Alphabetic # L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA 1D6DC..1D6FA ; Alphabetic # L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA 1D6FC..1D714 ; Alphabetic # L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA 1D716..1D734 ; Alphabetic # L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA 1D736..1D74E ; Alphabetic # L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA 1D750..1D76E ; Alphabetic # L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA 1D770..1D788 ; Alphabetic # L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA 1D78A..1D7A8 ; Alphabetic # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA 1D7AA..1D7C2 ; Alphabetic # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA 1D7C4..1D7CB ; Alphabetic # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA 1E000..1E006 ; Alphabetic # Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE 1E008..1E018 ; Alphabetic # Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU 1E01B..1E021 ; Alphabetic # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI 1E023..1E024 ; Alphabetic # Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS 1E026..1E02A ; Alphabetic # Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA 1E800..1E8C4 ; Alphabetic # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON 1E900..1E943 ; Alphabetic # L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA 1E947 ; Alphabetic # Mn ADLAM HAMZA 1EE00..1EE03 ; Alphabetic # Lo [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL 1EE05..1EE1F ; Alphabetic # Lo [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF 1EE21..1EE22 ; Alphabetic # Lo [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM 1EE24 ; Alphabetic # Lo ARABIC MATHEMATICAL INITIAL HEH 1EE27 ; Alphabetic # Lo ARABIC MATHEMATICAL INITIAL HAH 1EE29..1EE32 ; Alphabetic # Lo [10] ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF 1EE34..1EE37 ; Alphabetic # Lo [4] ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH 1EE39 ; Alphabetic # Lo ARABIC MATHEMATICAL INITIAL DAD 1EE3B ; Alphabetic # Lo ARABIC MATHEMATICAL INITIAL GHAIN 1EE42 ; Alphabetic # Lo ARABIC MATHEMATICAL TAILED JEEM 1EE47 ; Alphabetic # Lo ARABIC MATHEMATICAL TAILED HAH 1EE49 ; Alphabetic # Lo ARABIC MATHEMATICAL TAILED YEH 1EE4B ; Alphabetic # Lo ARABIC MATHEMATICAL TAILED LAM 1EE4D..1EE4F ; Alphabetic # Lo [3] ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN 1EE51..1EE52 ; Alphabetic # Lo [2] ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF 1EE54 ; Alphabetic # Lo ARABIC MATHEMATICAL TAILED SHEEN 1EE57 ; Alphabetic # Lo ARABIC MATHEMATICAL TAILED KHAH 1EE59 ; Alphabetic # Lo ARABIC MATHEMATICAL TAILED DAD 1EE5B ; Alphabetic # Lo ARABIC MATHEMATICAL TAILED GHAIN 1EE5D ; Alphabetic # Lo ARABIC MATHEMATICAL TAILED DOTLESS NOON 1EE5F ; Alphabetic # Lo ARABIC MATHEMATICAL TAILED DOTLESS QAF 1EE61..1EE62 ; Alphabetic # Lo [2] ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM 1EE64 ; Alphabetic # Lo ARABIC MATHEMATICAL STRETCHED HEH 1EE67..1EE6A ; Alphabetic # Lo [4] ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF 1EE6C..1EE72 ; Alphabetic # Lo [7] ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF 1EE74..1EE77 ; Alphabetic # Lo [4] ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH 1EE79..1EE7C ; Alphabetic # Lo [4] ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH 1EE7E ; Alphabetic # Lo ARABIC MATHEMATICAL STRETCHED DOTLESS FEH 1EE80..1EE89 ; Alphabetic # Lo [10] ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH 1EE8B..1EE9B ; Alphabetic # Lo [17] ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN 1EEA1..1EEA3 ; Alphabetic # Lo [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL 1EEA5..1EEA9 ; Alphabetic # Lo [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH 1EEAB..1EEBB ; Alphabetic # Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN 1F130..1F149 ; Alphabetic # So [26] SQUARED LATIN CAPITAL LETTER A..SQUARED LATIN CAPITAL LETTER Z 1F150..1F169 ; Alphabetic # So [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z 1F170..1F189 ; Alphabetic # So [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z 20000..2A6D6 ; Alphabetic # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 2A700..2B734 ; Alphabetic # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 2B740..2B81D ; Alphabetic # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D 2B820..2CEA1 ; Alphabetic # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 2F800..2FA1D ; Alphabetic # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D # Total code points: 118241 # ================================================ # Derived Property: Lowercase # Generated from: Ll + Other_Lowercase 0061..007A ; Lowercase # L& [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z 00AA ; Lowercase # Lo FEMININE ORDINAL INDICATOR 00B5 ; Lowercase # L& MICRO SIGN 00BA ; Lowercase # Lo MASCULINE ORDINAL INDICATOR 00DF..00F6 ; Lowercase # L& [24] LATIN SMALL LETTER SHARP S..LATIN SMALL LETTER O WITH DIAERESIS 00F8..00FF ; Lowercase # L& [8] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER Y WITH DIAERESIS 0101 ; Lowercase # L& LATIN SMALL LETTER A WITH MACRON 0103 ; Lowercase # L& LATIN SMALL LETTER A WITH BREVE 0105 ; Lowercase # L& LATIN SMALL LETTER A WITH OGONEK 0107 ; Lowercase # L& LATIN SMALL LETTER C WITH ACUTE 0109 ; Lowercase # L& LATIN SMALL LETTER C WITH CIRCUMFLEX 010B ; Lowercase # L& LATIN SMALL LETTER C WITH DOT ABOVE 010D ; Lowercase # L& LATIN SMALL LETTER C WITH CARON 010F ; Lowercase # L& LATIN SMALL LETTER D WITH CARON 0111 ; Lowercase # L& LATIN SMALL LETTER D WITH STROKE 0113 ; Lowercase # L& LATIN SMALL LETTER E WITH MACRON 0115 ; Lowercase # L& LATIN SMALL LETTER E WITH BREVE 0117 ; Lowercase # L& LATIN SMALL LETTER E WITH DOT ABOVE 0119 ; Lowercase # L& LATIN SMALL LETTER E WITH OGONEK 011B ; Lowercase # L& LATIN SMALL LETTER E WITH CARON 011D ; Lowercase # L& LATIN SMALL LETTER G WITH CIRCUMFLEX 011F ; Lowercase # L& LATIN SMALL LETTER G WITH BREVE 0121 ; Lowercase # L& LATIN SMALL LETTER G WITH DOT ABOVE 0123 ; Lowercase # L& LATIN SMALL LETTER G WITH CEDILLA 0125 ; Lowercase # L& LATIN SMALL LETTER H WITH CIRCUMFLEX 0127 ; Lowercase # L& LATIN SMALL LETTER H WITH STROKE 0129 ; Lowercase # L& LATIN SMALL LETTER I WITH TILDE 012B ; Lowercase # L& LATIN SMALL LETTER I WITH MACRON 012D ; Lowercase # L& LATIN SMALL LETTER I WITH BREVE 012F ; Lowercase # L& LATIN SMALL LETTER I WITH OGONEK 0131 ; Lowercase # L& LATIN SMALL LETTER DOTLESS I 0133 ; Lowercase # L& LATIN SMALL LIGATURE IJ 0135 ; Lowercase # L& LATIN SMALL LETTER J WITH CIRCUMFLEX 0137..0138 ; Lowercase # L& [2] LATIN SMALL LETTER K WITH CEDILLA..LATIN SMALL LETTER KRA 013A ; Lowercase # L& LATIN SMALL LETTER L WITH ACUTE 013C ; Lowercase # L& LATIN SMALL LETTER L WITH CEDILLA 013E ; Lowercase # L& LATIN SMALL LETTER L WITH CARON 0140 ; Lowercase # L& LATIN SMALL LETTER L WITH MIDDLE DOT 0142 ; Lowercase # L& LATIN SMALL LETTER L WITH STROKE 0144 ; Lowercase # L& LATIN SMALL LETTER N WITH ACUTE 0146 ; Lowercase # L& LATIN SMALL LETTER N WITH CEDILLA 0148..0149 ; Lowercase # L& [2] LATIN SMALL LETTER N WITH CARON..LATIN SMALL LETTER N PRECEDED BY APOSTROPHE 014B ; Lowercase # L& LATIN SMALL LETTER ENG 014D ; Lowercase # L& LATIN SMALL LETTER O WITH MACRON 014F ; Lowercase # L& LATIN SMALL LETTER O WITH BREVE 0151 ; Lowercase # L& LATIN SMALL LETTER O WITH DOUBLE ACUTE 0153 ; Lowercase # L& LATIN SMALL LIGATURE OE 0155 ; Lowercase # L& LATIN SMALL LETTER R WITH ACUTE 0157 ; Lowercase # L& LATIN SMALL LETTER R WITH CEDILLA 0159 ; Lowercase # L& LATIN SMALL LETTER R WITH CARON 015B ; Lowercase # L& LATIN SMALL LETTER S WITH ACUTE 015D ; Lowercase # L& LATIN SMALL LETTER S WITH CIRCUMFLEX 015F ; Lowercase # L& LATIN SMALL LETTER S WITH CEDILLA 0161 ; Lowercase # L& LATIN SMALL LETTER S WITH CARON 0163 ; Lowercase # L& LATIN SMALL LETTER T WITH CEDILLA 0165 ; Lowercase # L& LATIN SMALL LETTER T WITH CARON 0167 ; Lowercase # L& LATIN SMALL LETTER T WITH STROKE 0169 ; Lowercase # L& LATIN SMALL LETTER U WITH TILDE 016B ; Lowercase # L& LATIN SMALL LETTER U WITH MACRON 016D ; Lowercase # L& LATIN SMALL LETTER U WITH BREVE 016F ; Lowercase # L& LATIN SMALL LETTER U WITH RING ABOVE 0171 ; Lowercase # L& LATIN SMALL LETTER U WITH DOUBLE ACUTE 0173 ; Lowercase # L& LATIN SMALL LETTER U WITH OGONEK 0175 ; Lowercase # L& LATIN SMALL LETTER W WITH CIRCUMFLEX 0177 ; Lowercase # L& LATIN SMALL LETTER Y WITH CIRCUMFLEX 017A ; Lowercase # L& LATIN SMALL LETTER Z WITH ACUTE 017C ; Lowercase # L& LATIN SMALL LETTER Z WITH DOT ABOVE 017E..0180 ; Lowercase # L& [3] LATIN SMALL LETTER Z WITH CARON..LATIN SMALL LETTER B WITH STROKE 0183 ; Lowercase # L& LATIN SMALL LETTER B WITH TOPBAR 0185 ; Lowercase # L& LATIN SMALL LETTER TONE SIX 0188 ; Lowercase # L& LATIN SMALL LETTER C WITH HOOK 018C..018D ; Lowercase # L& [2] LATIN SMALL LETTER D WITH TOPBAR..LATIN SMALL LETTER TURNED DELTA 0192 ; Lowercase # L& LATIN SMALL LETTER F WITH HOOK 0195 ; Lowercase # L& LATIN SMALL LETTER HV 0199..019B ; Lowercase # L& [3] LATIN SMALL LETTER K WITH HOOK..LATIN SMALL LETTER LAMBDA WITH STROKE 019E ; Lowercase # L& LATIN SMALL LETTER N WITH LONG RIGHT LEG 01A1 ; Lowercase # L& LATIN SMALL LETTER O WITH HORN 01A3 ; Lowercase # L& LATIN SMALL LETTER OI 01A5 ; Lowercase # L& LATIN SMALL LETTER P WITH HOOK 01A8 ; Lowercase # L& LATIN SMALL LETTER TONE TWO 01AA..01AB ; Lowercase # L& [2] LATIN LETTER REVERSED ESH LOOP..LATIN SMALL LETTER T WITH PALATAL HOOK 01AD ; Lowercase # L& LATIN SMALL LETTER T WITH HOOK 01B0 ; Lowercase # L& LATIN SMALL LETTER U WITH HORN 01B4 ; Lowercase # L& LATIN SMALL LETTER Y WITH HOOK 01B6 ; Lowercase # L& LATIN SMALL LETTER Z WITH STROKE 01B9..01BA ; Lowercase # L& [2] LATIN SMALL LETTER EZH REVERSED..LATIN SMALL LETTER EZH WITH TAIL 01BD..01BF ; Lowercase # L& [3] LATIN SMALL LETTER TONE FIVE..LATIN LETTER WYNN 01C6 ; Lowercase # L& LATIN SMALL LETTER DZ WITH CARON 01C9 ; Lowercase # L& LATIN SMALL LETTER LJ 01CC ; Lowercase # L& LATIN SMALL LETTER NJ 01CE ; Lowercase # L& LATIN SMALL LETTER A WITH CARON 01D0 ; Lowercase # L& LATIN SMALL LETTER I WITH CARON 01D2 ; Lowercase # L& LATIN SMALL LETTER O WITH CARON 01D4 ; Lowercase # L& LATIN SMALL LETTER U WITH CARON 01D6 ; Lowercase # L& LATIN SMALL LETTER U WITH DIAERESIS AND MACRON 01D8 ; Lowercase # L& LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE 01DA ; Lowercase # L& LATIN SMALL LETTER U WITH DIAERESIS AND CARON 01DC..01DD ; Lowercase # L& [2] LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE..LATIN SMALL LETTER TURNED E 01DF ; Lowercase # L& LATIN SMALL LETTER A WITH DIAERESIS AND MACRON 01E1 ; Lowercase # L& LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON 01E3 ; Lowercase # L& LATIN SMALL LETTER AE WITH MACRON 01E5 ; Lowercase # L& LATIN SMALL LETTER G WITH STROKE 01E7 ; Lowercase # L& LATIN SMALL LETTER G WITH CARON 01E9 ; Lowercase # L& LATIN SMALL LETTER K WITH CARON 01EB ; Lowercase # L& LATIN SMALL LETTER O WITH OGONEK 01ED ; Lowercase # L& LATIN SMALL LETTER O WITH OGONEK AND MACRON 01EF..01F0 ; Lowercase # L& [2] LATIN SMALL LETTER EZH WITH CARON..LATIN SMALL LETTER J WITH CARON 01F3 ; Lowercase # L& LATIN SMALL LETTER DZ 01F5 ; Lowercase # L& LATIN SMALL LETTER G WITH ACUTE 01F9 ; Lowercase # L& LATIN SMALL LETTER N WITH GRAVE 01FB ; Lowercase # L& LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE 01FD ; Lowercase # L& LATIN SMALL LETTER AE WITH ACUTE 01FF ; Lowercase # L& LATIN SMALL LETTER O WITH STROKE AND ACUTE 0201 ; Lowercase # L& LATIN SMALL LETTER A WITH DOUBLE GRAVE 0203 ; Lowercase # L& LATIN SMALL LETTER A WITH INVERTED BREVE 0205 ; Lowercase # L& LATIN SMALL LETTER E WITH DOUBLE GRAVE 0207 ; Lowercase # L& LATIN SMALL LETTER E WITH INVERTED BREVE 0209 ; Lowercase # L& LATIN SMALL LETTER I WITH DOUBLE GRAVE 020B ; Lowercase # L& LATIN SMALL LETTER I WITH INVERTED BREVE 020D ; Lowercase # L& LATIN SMALL LETTER O WITH DOUBLE GRAVE 020F ; Lowercase # L& LATIN SMALL LETTER O WITH INVERTED BREVE 0211 ; Lowercase # L& LATIN SMALL LETTER R WITH DOUBLE GRAVE 0213 ; Lowercase # L& LATIN SMALL LETTER R WITH INVERTED BREVE 0215 ; Lowercase # L& LATIN SMALL LETTER U WITH DOUBLE GRAVE 0217 ; Lowercase # L& LATIN SMALL LETTER U WITH INVERTED BREVE 0219 ; Lowercase # L& LATIN SMALL LETTER S WITH COMMA BELOW 021B ; Lowercase # L& LATIN SMALL LETTER T WITH COMMA BELOW 021D ; Lowercase # L& LATIN SMALL LETTER YOGH 021F ; Lowercase # L& LATIN SMALL LETTER H WITH CARON 0221 ; Lowercase # L& LATIN SMALL LETTER D WITH CURL 0223 ; Lowercase # L& LATIN SMALL LETTER OU 0225 ; Lowercase # L& LATIN SMALL LETTER Z WITH HOOK 0227 ; Lowercase # L& LATIN SMALL LETTER A WITH DOT ABOVE 0229 ; Lowercase # L& LATIN SMALL LETTER E WITH CEDILLA 022B ; Lowercase # L& LATIN SMALL LETTER O WITH DIAERESIS AND MACRON 022D ; Lowercase # L& LATIN SMALL LETTER O WITH TILDE AND MACRON 022F ; Lowercase # L& LATIN SMALL LETTER O WITH DOT ABOVE 0231 ; Lowercase # L& LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON 0233..0239 ; Lowercase # L& [7] LATIN SMALL LETTER Y WITH MACRON..LATIN SMALL LETTER QP DIGRAPH 023C ; Lowercase # L& LATIN SMALL LETTER C WITH STROKE 023F..0240 ; Lowercase # L& [2] LATIN SMALL LETTER S WITH SWASH TAIL..LATIN SMALL LETTER Z WITH SWASH TAIL 0242 ; Lowercase # L& LATIN SMALL LETTER GLOTTAL STOP 0247 ; Lowercase # L& LATIN SMALL LETTER E WITH STROKE 0249 ; Lowercase # L& LATIN SMALL LETTER J WITH STROKE 024B ; Lowercase # L& LATIN SMALL LETTER Q WITH HOOK TAIL 024D ; Lowercase # L& LATIN SMALL LETTER R WITH STROKE 024F..0293 ; Lowercase # L& [69] LATIN SMALL LETTER Y WITH STROKE..LATIN SMALL LETTER EZH WITH CURL 0295..02AF ; Lowercase # L& [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL 02B0..02B8 ; Lowercase # Lm [9] MODIFIER LETTER SMALL H..MODIFIER LETTER SMALL Y 02C0..02C1 ; Lowercase # Lm [2] MODIFIER LETTER GLOTTAL STOP..MODIFIER LETTER REVERSED GLOTTAL STOP 02E0..02E4 ; Lowercase # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP 0345 ; Lowercase # Mn COMBINING GREEK YPOGEGRAMMENI 0371 ; Lowercase # L& GREEK SMALL LETTER HETA 0373 ; Lowercase # L& GREEK SMALL LETTER ARCHAIC SAMPI 0377 ; Lowercase # L& GREEK SMALL LETTER PAMPHYLIAN DIGAMMA 037A ; Lowercase # Lm GREEK YPOGEGRAMMENI 037B..037D ; Lowercase # L& [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL 0390 ; Lowercase # L& GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS 03AC..03CE ; Lowercase # L& [35] GREEK SMALL LETTER ALPHA WITH TONOS..GREEK SMALL LETTER OMEGA WITH TONOS 03D0..03D1 ; Lowercase # L& [2] GREEK BETA SYMBOL..GREEK THETA SYMBOL 03D5..03D7 ; Lowercase # L& [3] GREEK PHI SYMBOL..GREEK KAI SYMBOL 03D9 ; Lowercase # L& GREEK SMALL LETTER ARCHAIC KOPPA 03DB ; Lowercase # L& GREEK SMALL LETTER STIGMA 03DD ; Lowercase # L& GREEK SMALL LETTER DIGAMMA 03DF ; Lowercase # L& GREEK SMALL LETTER KOPPA 03E1 ; Lowercase # L& GREEK SMALL LETTER SAMPI 03E3 ; Lowercase # L& COPTIC SMALL LETTER SHEI 03E5 ; Lowercase # L& COPTIC SMALL LETTER FEI 03E7 ; Lowercase # L& COPTIC SMALL LETTER KHEI 03E9 ; Lowercase # L& COPTIC SMALL LETTER HORI 03EB ; Lowercase # L& COPTIC SMALL LETTER GANGIA 03ED ; Lowercase # L& COPTIC SMALL LETTER SHIMA 03EF..03F3 ; Lowercase # L& [5] COPTIC SMALL LETTER DEI..GREEK LETTER YOT 03F5 ; Lowercase # L& GREEK LUNATE EPSILON SYMBOL 03F8 ; Lowercase # L& GREEK SMALL LETTER SHO 03FB..03FC ; Lowercase # L& [2] GREEK SMALL LETTER SAN..GREEK RHO WITH STROKE SYMBOL 0430..045F ; Lowercase # L& [48] CYRILLIC SMALL LETTER A..CYRILLIC SMALL LETTER DZHE 0461 ; Lowercase # L& CYRILLIC SMALL LETTER OMEGA 0463 ; Lowercase # L& CYRILLIC SMALL LETTER YAT 0465 ; Lowercase # L& CYRILLIC SMALL LETTER IOTIFIED E 0467 ; Lowercase # L& CYRILLIC SMALL LETTER LITTLE YUS 0469 ; Lowercase # L& CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS 046B ; Lowercase # L& CYRILLIC SMALL LETTER BIG YUS 046D ; Lowercase # L& CYRILLIC SMALL LETTER IOTIFIED BIG YUS 046F ; Lowercase # L& CYRILLIC SMALL LETTER KSI 0471 ; Lowercase # L& CYRILLIC SMALL LETTER PSI 0473 ; Lowercase # L& CYRILLIC SMALL LETTER FITA 0475 ; Lowercase # L& CYRILLIC SMALL LETTER IZHITSA 0477 ; Lowercase # L& CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT 0479 ; Lowercase # L& CYRILLIC SMALL LETTER UK 047B ; Lowercase # L& CYRILLIC SMALL LETTER ROUND OMEGA 047D ; Lowercase # L& CYRILLIC SMALL LETTER OMEGA WITH TITLO 047F ; Lowercase # L& CYRILLIC SMALL LETTER OT 0481 ; Lowercase # L& CYRILLIC SMALL LETTER KOPPA 048B ; Lowercase # L& CYRILLIC SMALL LETTER SHORT I WITH TAIL 048D ; Lowercase # L& CYRILLIC SMALL LETTER SEMISOFT SIGN 048F ; Lowercase # L& CYRILLIC SMALL LETTER ER WITH TICK 0491 ; Lowercase # L& CYRILLIC SMALL LETTER GHE WITH UPTURN 0493 ; Lowercase # L& CYRILLIC SMALL LETTER GHE WITH STROKE 0495 ; Lowercase # L& CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK 0497 ; Lowercase # L& CYRILLIC SMALL LETTER ZHE WITH DESCENDER 0499 ; Lowercase # L& CYRILLIC SMALL LETTER ZE WITH DESCENDER 049B ; Lowercase # L& CYRILLIC SMALL LETTER KA WITH DESCENDER 049D ; Lowercase # L& CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE 049F ; Lowercase # L& CYRILLIC SMALL LETTER KA WITH STROKE 04A1 ; Lowercase # L& CYRILLIC SMALL LETTER BASHKIR KA 04A3 ; Lowercase # L& CYRILLIC SMALL LETTER EN WITH DESCENDER 04A5 ; Lowercase # L& CYRILLIC SMALL LIGATURE EN GHE 04A7 ; Lowercase # L& CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK 04A9 ; Lowercase # L& CYRILLIC SMALL LETTER ABKHASIAN HA 04AB ; Lowercase # L& CYRILLIC SMALL LETTER ES WITH DESCENDER 04AD ; Lowercase # L& CYRILLIC SMALL LETTER TE WITH DESCENDER 04AF ; Lowercase # L& CYRILLIC SMALL LETTER STRAIGHT U 04B1 ; Lowercase # L& CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE 04B3 ; Lowercase # L& CYRILLIC SMALL LETTER HA WITH DESCENDER 04B5 ; Lowercase # L& CYRILLIC SMALL LIGATURE TE TSE 04B7 ; Lowercase # L& CYRILLIC SMALL LETTER CHE WITH DESCENDER 04B9 ; Lowercase # L& CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE 04BB ; Lowercase # L& CYRILLIC SMALL LETTER SHHA 04BD ; Lowercase # L& CYRILLIC SMALL LETTER ABKHASIAN CHE 04BF ; Lowercase # L& CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER 04C2 ; Lowercase # L& CYRILLIC SMALL LETTER ZHE WITH BREVE 04C4 ; Lowercase # L& CYRILLIC SMALL LETTER KA WITH HOOK 04C6 ; Lowercase # L& CYRILLIC SMALL LETTER EL WITH TAIL 04C8 ; Lowercase # L& CYRILLIC SMALL LETTER EN WITH HOOK 04CA ; Lowercase # L& CYRILLIC SMALL LETTER EN WITH TAIL 04CC ; Lowercase # L& CYRILLIC SMALL LETTER KHAKASSIAN CHE 04CE..04CF ; Lowercase # L& [2] CYRILLIC SMALL LETTER EM WITH TAIL..CYRILLIC SMALL LETTER PALOCHKA 04D1 ; Lowercase # L& CYRILLIC SMALL LETTER A WITH BREVE 04D3 ; Lowercase # L& CYRILLIC SMALL LETTER A WITH DIAERESIS 04D5 ; Lowercase # L& CYRILLIC SMALL LIGATURE A IE 04D7 ; Lowercase # L& CYRILLIC SMALL LETTER IE WITH BREVE 04D9 ; Lowercase # L& CYRILLIC SMALL LETTER SCHWA 04DB ; Lowercase # L& CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS 04DD ; Lowercase # L& CYRILLIC SMALL LETTER ZHE WITH DIAERESIS 04DF ; Lowercase # L& CYRILLIC SMALL LETTER ZE WITH DIAERESIS 04E1 ; Lowercase # L& CYRILLIC SMALL LETTER ABKHASIAN DZE 04E3 ; Lowercase # L& CYRILLIC SMALL LETTER I WITH MACRON 04E5 ; Lowercase # L& CYRILLIC SMALL LETTER I WITH DIAERESIS 04E7 ; Lowercase # L& CYRILLIC SMALL LETTER O WITH DIAERESIS 04E9 ; Lowercase # L& CYRILLIC SMALL LETTER BARRED O 04EB ; Lowercase # L& CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS 04ED ; Lowercase # L& CYRILLIC SMALL LETTER E WITH DIAERESIS 04EF ; Lowercase # L& CYRILLIC SMALL LETTER U WITH MACRON 04F1 ; Lowercase # L& CYRILLIC SMALL LETTER U WITH DIAERESIS 04F3 ; Lowercase # L& CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE 04F5 ; Lowercase # L& CYRILLIC SMALL LETTER CHE WITH DIAERESIS 04F7 ; Lowercase # L& CYRILLIC SMALL LETTER GHE WITH DESCENDER 04F9 ; Lowercase # L& CYRILLIC SMALL LETTER YERU WITH DIAERESIS 04FB ; Lowercase # L& CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK 04FD ; Lowercase # L& CYRILLIC SMALL LETTER HA WITH HOOK 04FF ; Lowercase # L& CYRILLIC SMALL LETTER HA WITH STROKE 0501 ; Lowercase # L& CYRILLIC SMALL LETTER KOMI DE 0503 ; Lowercase # L& CYRILLIC SMALL LETTER KOMI DJE 0505 ; Lowercase # L& CYRILLIC SMALL LETTER KOMI ZJE 0507 ; Lowercase # L& CYRILLIC SMALL LETTER KOMI DZJE 0509 ; Lowercase # L& CYRILLIC SMALL LETTER KOMI LJE 050B ; Lowercase # L& CYRILLIC SMALL LETTER KOMI NJE 050D ; Lowercase # L& CYRILLIC SMALL LETTER KOMI SJE 050F ; Lowercase # L& CYRILLIC SMALL LETTER KOMI TJE 0511 ; Lowercase # L& CYRILLIC SMALL LETTER REVERSED ZE 0513 ; Lowercase # L& CYRILLIC SMALL LETTER EL WITH HOOK 0515 ; Lowercase # L& CYRILLIC SMALL LETTER LHA 0517 ; Lowercase # L& CYRILLIC SMALL LETTER RHA 0519 ; Lowercase # L& CYRILLIC SMALL LETTER YAE 051B ; Lowercase # L& CYRILLIC SMALL LETTER QA 051D ; Lowercase # L& CYRILLIC SMALL LETTER WE 051F ; Lowercase # L& CYRILLIC SMALL LETTER ALEUT KA 0521 ; Lowercase # L& CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK 0523 ; Lowercase # L& CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK 0525 ; Lowercase # L& CYRILLIC SMALL LETTER PE WITH DESCENDER 0527 ; Lowercase # L& CYRILLIC SMALL LETTER SHHA WITH DESCENDER 0529 ; Lowercase # L& CYRILLIC SMALL LETTER EN WITH LEFT HOOK 052B ; Lowercase # L& CYRILLIC SMALL LETTER DZZHE 052D ; Lowercase # L& CYRILLIC SMALL LETTER DCHE 052F ; Lowercase # L& CYRILLIC SMALL LETTER EL WITH DESCENDER 0561..0587 ; Lowercase # L& [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN 13F8..13FD ; Lowercase # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV 1C80..1C88 ; Lowercase # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK 1D00..1D2B ; Lowercase # L& [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL 1D2C..1D6A ; Lowercase # Lm [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI 1D6B..1D77 ; Lowercase # L& [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G 1D78 ; Lowercase # Lm MODIFIER LETTER CYRILLIC EN 1D79..1D9A ; Lowercase # L& [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK 1D9B..1DBF ; Lowercase # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA 1E01 ; Lowercase # L& LATIN SMALL LETTER A WITH RING BELOW 1E03 ; Lowercase # L& LATIN SMALL LETTER B WITH DOT ABOVE 1E05 ; Lowercase # L& LATIN SMALL LETTER B WITH DOT BELOW 1E07 ; Lowercase # L& LATIN SMALL LETTER B WITH LINE BELOW 1E09 ; Lowercase # L& LATIN SMALL LETTER C WITH CEDILLA AND ACUTE 1E0B ; Lowercase # L& LATIN SMALL LETTER D WITH DOT ABOVE 1E0D ; Lowercase # L& LATIN SMALL LETTER D WITH DOT BELOW 1E0F ; Lowercase # L& LATIN SMALL LETTER D WITH LINE BELOW 1E11 ; Lowercase # L& LATIN SMALL LETTER D WITH CEDILLA 1E13 ; Lowercase # L& LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW 1E15 ; Lowercase # L& LATIN SMALL LETTER E WITH MACRON AND GRAVE 1E17 ; Lowercase # L& LATIN SMALL LETTER E WITH MACRON AND ACUTE 1E19 ; Lowercase # L& LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW 1E1B ; Lowercase # L& LATIN SMALL LETTER E WITH TILDE BELOW 1E1D ; Lowercase # L& LATIN SMALL LETTER E WITH CEDILLA AND BREVE 1E1F ; Lowercase # L& LATIN SMALL LETTER F WITH DOT ABOVE 1E21 ; Lowercase # L& LATIN SMALL LETTER G WITH MACRON 1E23 ; Lowercase # L& LATIN SMALL LETTER H WITH DOT ABOVE 1E25 ; Lowercase # L& LATIN SMALL LETTER H WITH DOT BELOW 1E27 ; Lowercase # L& LATIN SMALL LETTER H WITH DIAERESIS 1E29 ; Lowercase # L& LATIN SMALL LETTER H WITH CEDILLA 1E2B ; Lowercase # L& LATIN SMALL LETTER H WITH BREVE BELOW 1E2D ; Lowercase # L& LATIN SMALL LETTER I WITH TILDE BELOW 1E2F ; Lowercase # L& LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE 1E31 ; Lowercase # L& LATIN SMALL LETTER K WITH ACUTE 1E33 ; Lowercase # L& LATIN SMALL LETTER K WITH DOT BELOW 1E35 ; Lowercase # L& LATIN SMALL LETTER K WITH LINE BELOW 1E37 ; Lowercase # L& LATIN SMALL LETTER L WITH DOT BELOW 1E39 ; Lowercase # L& LATIN SMALL LETTER L WITH DOT BELOW AND MACRON 1E3B ; Lowercase # L& LATIN SMALL LETTER L WITH LINE BELOW 1E3D ; Lowercase # L& LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW 1E3F ; Lowercase # L& LATIN SMALL LETTER M WITH ACUTE 1E41 ; Lowercase # L& LATIN SMALL LETTER M WITH DOT ABOVE 1E43 ; Lowercase # L& LATIN SMALL LETTER M WITH DOT BELOW 1E45 ; Lowercase # L& LATIN SMALL LETTER N WITH DOT ABOVE 1E47 ; Lowercase # L& LATIN SMALL LETTER N WITH DOT BELOW 1E49 ; Lowercase # L& LATIN SMALL LETTER N WITH LINE BELOW 1E4B ; Lowercase # L& LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW 1E4D ; Lowercase # L& LATIN SMALL LETTER O WITH TILDE AND ACUTE 1E4F ; Lowercase # L& LATIN SMALL LETTER O WITH TILDE AND DIAERESIS 1E51 ; Lowercase # L& LATIN SMALL LETTER O WITH MACRON AND GRAVE 1E53 ; Lowercase # L& LATIN SMALL LETTER O WITH MACRON AND ACUTE 1E55 ; Lowercase # L& LATIN SMALL LETTER P WITH ACUTE 1E57 ; Lowercase # L& LATIN SMALL LETTER P WITH DOT ABOVE 1E59 ; Lowercase # L& LATIN SMALL LETTER R WITH DOT ABOVE 1E5B ; Lowercase # L& LATIN SMALL LETTER R WITH DOT BELOW 1E5D ; Lowercase # L& LATIN SMALL LETTER R WITH DOT BELOW AND MACRON 1E5F ; Lowercase # L& LATIN SMALL LETTER R WITH LINE BELOW 1E61 ; Lowercase # L& LATIN SMALL LETTER S WITH DOT ABOVE 1E63 ; Lowercase # L& LATIN SMALL LETTER S WITH DOT BELOW 1E65 ; Lowercase # L& LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE 1E67 ; Lowercase # L& LATIN SMALL LETTER S WITH CARON AND DOT ABOVE 1E69 ; Lowercase # L& LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE 1E6B ; Lowercase # L& LATIN SMALL LETTER T WITH DOT ABOVE 1E6D ; Lowercase # L& LATIN SMALL LETTER T WITH DOT BELOW 1E6F ; Lowercase # L& LATIN SMALL LETTER T WITH LINE BELOW 1E71 ; Lowercase # L& LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW 1E73 ; Lowercase # L& LATIN SMALL LETTER U WITH DIAERESIS BELOW 1E75 ; Lowercase # L& LATIN SMALL LETTER U WITH TILDE BELOW 1E77 ; Lowercase # L& LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW 1E79 ; Lowercase # L& LATIN SMALL LETTER U WITH TILDE AND ACUTE 1E7B ; Lowercase # L& LATIN SMALL LETTER U WITH MACRON AND DIAERESIS 1E7D ; Lowercase # L& LATIN SMALL LETTER V WITH TILDE 1E7F ; Lowercase # L& LATIN SMALL LETTER V WITH DOT BELOW 1E81 ; Lowercase # L& LATIN SMALL LETTER W WITH GRAVE 1E83 ; Lowercase # L& LATIN SMALL LETTER W WITH ACUTE 1E85 ; Lowercase # L& LATIN SMALL LETTER W WITH DIAERESIS 1E87 ; Lowercase # L& LATIN SMALL LETTER W WITH DOT ABOVE 1E89 ; Lowercase # L& LATIN SMALL LETTER W WITH DOT BELOW 1E8B ; Lowercase # L& LATIN SMALL LETTER X WITH DOT ABOVE 1E8D ; Lowercase # L& LATIN SMALL LETTER X WITH DIAERESIS 1E8F ; Lowercase # L& LATIN SMALL LETTER Y WITH DOT ABOVE 1E91 ; Lowercase # L& LATIN SMALL LETTER Z WITH CIRCUMFLEX 1E93 ; Lowercase # L& LATIN SMALL LETTER Z WITH DOT BELOW 1E95..1E9D ; Lowercase # L& [9] LATIN SMALL LETTER Z WITH LINE BELOW..LATIN SMALL LETTER LONG S WITH HIGH STROKE 1E9F ; Lowercase # L& LATIN SMALL LETTER DELTA 1EA1 ; Lowercase # L& LATIN SMALL LETTER A WITH DOT BELOW 1EA3 ; Lowercase # L& LATIN SMALL LETTER A WITH HOOK ABOVE 1EA5 ; Lowercase # L& LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE 1EA7 ; Lowercase # L& LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE 1EA9 ; Lowercase # L& LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE 1EAB ; Lowercase # L& LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE 1EAD ; Lowercase # L& LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW 1EAF ; Lowercase # L& LATIN SMALL LETTER A WITH BREVE AND ACUTE 1EB1 ; Lowercase # L& LATIN SMALL LETTER A WITH BREVE AND GRAVE 1EB3 ; Lowercase # L& LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE 1EB5 ; Lowercase # L& LATIN SMALL LETTER A WITH BREVE AND TILDE 1EB7 ; Lowercase # L& LATIN SMALL LETTER A WITH BREVE AND DOT BELOW 1EB9 ; Lowercase # L& LATIN SMALL LETTER E WITH DOT BELOW 1EBB ; Lowercase # L& LATIN SMALL LETTER E WITH HOOK ABOVE 1EBD ; Lowercase # L& LATIN SMALL LETTER E WITH TILDE 1EBF ; Lowercase # L& LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE 1EC1 ; Lowercase # L& LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE 1EC3 ; Lowercase # L& LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE 1EC5 ; Lowercase # L& LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE 1EC7 ; Lowercase # L& LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW 1EC9 ; Lowercase # L& LATIN SMALL LETTER I WITH HOOK ABOVE 1ECB ; Lowercase # L& LATIN SMALL LETTER I WITH DOT BELOW 1ECD ; Lowercase # L& LATIN SMALL LETTER O WITH DOT BELOW 1ECF ; Lowercase # L& LATIN SMALL LETTER O WITH HOOK ABOVE 1ED1 ; Lowercase # L& LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE 1ED3 ; Lowercase # L& LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE 1ED5 ; Lowercase # L& LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE 1ED7 ; Lowercase # L& LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE 1ED9 ; Lowercase # L& LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW 1EDB ; Lowercase # L& LATIN SMALL LETTER O WITH HORN AND ACUTE 1EDD ; Lowercase # L& LATIN SMALL LETTER O WITH HORN AND GRAVE 1EDF ; Lowercase # L& LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE 1EE1 ; Lowercase # L& LATIN SMALL LETTER O WITH HORN AND TILDE 1EE3 ; Lowercase # L& LATIN SMALL LETTER O WITH HORN AND DOT BELOW 1EE5 ; Lowercase # L& LATIN SMALL LETTER U WITH DOT BELOW 1EE7 ; Lowercase # L& LATIN SMALL LETTER U WITH HOOK ABOVE 1EE9 ; Lowercase # L& LATIN SMALL LETTER U WITH HORN AND ACUTE 1EEB ; Lowercase # L& LATIN SMALL LETTER U WITH HORN AND GRAVE 1EED ; Lowercase # L& LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE 1EEF ; Lowercase # L& LATIN SMALL LETTER U WITH HORN AND TILDE 1EF1 ; Lowercase # L& LATIN SMALL LETTER U WITH HORN AND DOT BELOW 1EF3 ; Lowercase # L& LATIN SMALL LETTER Y WITH GRAVE 1EF5 ; Lowercase # L& LATIN SMALL LETTER Y WITH DOT BELOW 1EF7 ; Lowercase # L& LATIN SMALL LETTER Y WITH HOOK ABOVE 1EF9 ; Lowercase # L& LATIN SMALL LETTER Y WITH TILDE 1EFB ; Lowercase # L& LATIN SMALL LETTER MIDDLE-WELSH LL 1EFD ; Lowercase # L& LATIN SMALL LETTER MIDDLE-WELSH V 1EFF..1F07 ; Lowercase # L& [9] LATIN SMALL LETTER Y WITH LOOP..GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI 1F10..1F15 ; Lowercase # L& [6] GREEK SMALL LETTER EPSILON WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA 1F20..1F27 ; Lowercase # L& [8] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI 1F30..1F37 ; Lowercase # L& [8] GREEK SMALL LETTER IOTA WITH PSILI..GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI 1F40..1F45 ; Lowercase # L& [6] GREEK SMALL LETTER OMICRON WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA 1F50..1F57 ; Lowercase # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI 1F60..1F67 ; Lowercase # L& [8] GREEK SMALL LETTER OMEGA WITH PSILI..GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI 1F70..1F7D ; Lowercase # L& [14] GREEK SMALL LETTER ALPHA WITH VARIA..GREEK SMALL LETTER OMEGA WITH OXIA 1F80..1F87 ; Lowercase # L& [8] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI 1F90..1F97 ; Lowercase # L& [8] GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI 1FA0..1FA7 ; Lowercase # L& [8] GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI 1FB0..1FB4 ; Lowercase # L& [5] GREEK SMALL LETTER ALPHA WITH VRACHY..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI 1FB6..1FB7 ; Lowercase # L& [2] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI 1FBE ; Lowercase # L& GREEK PROSGEGRAMMENI 1FC2..1FC4 ; Lowercase # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI 1FC6..1FC7 ; Lowercase # L& [2] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI 1FD0..1FD3 ; Lowercase # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA 1FD6..1FD7 ; Lowercase # L& [2] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI 1FE0..1FE7 ; Lowercase # L& [8] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI 1FF2..1FF4 ; Lowercase # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI 1FF6..1FF7 ; Lowercase # L& [2] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI 2071 ; Lowercase # Lm SUPERSCRIPT LATIN SMALL LETTER I 207F ; Lowercase # Lm SUPERSCRIPT LATIN SMALL LETTER N 2090..209C ; Lowercase # Lm [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T 210A ; Lowercase # L& SCRIPT SMALL G 210E..210F ; Lowercase # L& [2] PLANCK CONSTANT..PLANCK CONSTANT OVER TWO PI 2113 ; Lowercase # L& SCRIPT SMALL L 212F ; Lowercase # L& SCRIPT SMALL E 2134 ; Lowercase # L& SCRIPT SMALL O 2139 ; Lowercase # L& INFORMATION SOURCE 213C..213D ; Lowercase # L& [2] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK SMALL GAMMA 2146..2149 ; Lowercase # L& [4] DOUBLE-STRUCK ITALIC SMALL D..DOUBLE-STRUCK ITALIC SMALL J 214E ; Lowercase # L& TURNED SMALL F 2170..217F ; Lowercase # Nl [16] SMALL ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND 2184 ; Lowercase # L& LATIN SMALL LETTER REVERSED C 24D0..24E9 ; Lowercase # So [26] CIRCLED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z 2C30..2C5E ; Lowercase # L& [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE 2C61 ; Lowercase # L& LATIN SMALL LETTER L WITH DOUBLE BAR 2C65..2C66 ; Lowercase # L& [2] LATIN SMALL LETTER A WITH STROKE..LATIN SMALL LETTER T WITH DIAGONAL STROKE 2C68 ; Lowercase # L& LATIN SMALL LETTER H WITH DESCENDER 2C6A ; Lowercase # L& LATIN SMALL LETTER K WITH DESCENDER 2C6C ; Lowercase # L& LATIN SMALL LETTER Z WITH DESCENDER 2C71 ; Lowercase # L& LATIN SMALL LETTER V WITH RIGHT HOOK 2C73..2C74 ; Lowercase # L& [2] LATIN SMALL LETTER W WITH HOOK..LATIN SMALL LETTER V WITH CURL 2C76..2C7B ; Lowercase # L& [6] LATIN SMALL LETTER HALF H..LATIN LETTER SMALL CAPITAL TURNED E 2C7C..2C7D ; Lowercase # Lm [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V 2C81 ; Lowercase # L& COPTIC SMALL LETTER ALFA 2C83 ; Lowercase # L& COPTIC SMALL LETTER VIDA 2C85 ; Lowercase # L& COPTIC SMALL LETTER GAMMA 2C87 ; Lowercase # L& COPTIC SMALL LETTER DALDA 2C89 ; Lowercase # L& COPTIC SMALL LETTER EIE 2C8B ; Lowercase # L& COPTIC SMALL LETTER SOU 2C8D ; Lowercase # L& COPTIC SMALL LETTER ZATA 2C8F ; Lowercase # L& COPTIC SMALL LETTER HATE 2C91 ; Lowercase # L& COPTIC SMALL LETTER THETHE 2C93 ; Lowercase # L& COPTIC SMALL LETTER IAUDA 2C95 ; Lowercase # L& COPTIC SMALL LETTER KAPA 2C97 ; Lowercase # L& COPTIC SMALL LETTER LAULA 2C99 ; Lowercase # L& COPTIC SMALL LETTER MI 2C9B ; Lowercase # L& COPTIC SMALL LETTER NI 2C9D ; Lowercase # L& COPTIC SMALL LETTER KSI 2C9F ; Lowercase # L& COPTIC SMALL LETTER O 2CA1 ; Lowercase # L& COPTIC SMALL LETTER PI 2CA3 ; Lowercase # L& COPTIC SMALL LETTER RO 2CA5 ; Lowercase # L& COPTIC SMALL LETTER SIMA 2CA7 ; Lowercase # L& COPTIC SMALL LETTER TAU 2CA9 ; Lowercase # L& COPTIC SMALL LETTER UA 2CAB ; Lowercase # L& COPTIC SMALL LETTER FI 2CAD ; Lowercase # L& COPTIC SMALL LETTER KHI 2CAF ; Lowercase # L& COPTIC SMALL LETTER PSI 2CB1 ; Lowercase # L& COPTIC SMALL LETTER OOU 2CB3 ; Lowercase # L& COPTIC SMALL LETTER DIALECT-P ALEF 2CB5 ; Lowercase # L& COPTIC SMALL LETTER OLD COPTIC AIN 2CB7 ; Lowercase # L& COPTIC SMALL LETTER CRYPTOGRAMMIC EIE 2CB9 ; Lowercase # L& COPTIC SMALL LETTER DIALECT-P KAPA 2CBB ; Lowercase # L& COPTIC SMALL LETTER DIALECT-P NI 2CBD ; Lowercase # L& COPTIC SMALL LETTER CRYPTOGRAMMIC NI 2CBF ; Lowercase # L& COPTIC SMALL LETTER OLD COPTIC OOU 2CC1 ; Lowercase # L& COPTIC SMALL LETTER SAMPI 2CC3 ; Lowercase # L& COPTIC SMALL LETTER CROSSED SHEI 2CC5 ; Lowercase # L& COPTIC SMALL LETTER OLD COPTIC SHEI 2CC7 ; Lowercase # L& COPTIC SMALL LETTER OLD COPTIC ESH 2CC9 ; Lowercase # L& COPTIC SMALL LETTER AKHMIMIC KHEI 2CCB ; Lowercase # L& COPTIC SMALL LETTER DIALECT-P HORI 2CCD ; Lowercase # L& COPTIC SMALL LETTER OLD COPTIC HORI 2CCF ; Lowercase # L& COPTIC SMALL LETTER OLD COPTIC HA 2CD1 ; Lowercase # L& COPTIC SMALL LETTER L-SHAPED HA 2CD3 ; Lowercase # L& COPTIC SMALL LETTER OLD COPTIC HEI 2CD5 ; Lowercase # L& COPTIC SMALL LETTER OLD COPTIC HAT 2CD7 ; Lowercase # L& COPTIC SMALL LETTER OLD COPTIC GANGIA 2CD9 ; Lowercase # L& COPTIC SMALL LETTER OLD COPTIC DJA 2CDB ; Lowercase # L& COPTIC SMALL LETTER OLD COPTIC SHIMA 2CDD ; Lowercase # L& COPTIC SMALL LETTER OLD NUBIAN SHIMA 2CDF ; Lowercase # L& COPTIC SMALL LETTER OLD NUBIAN NGI 2CE1 ; Lowercase # L& COPTIC SMALL LETTER OLD NUBIAN NYI 2CE3..2CE4 ; Lowercase # L& [2] COPTIC SMALL LETTER OLD NUBIAN WAU..COPTIC SYMBOL KAI 2CEC ; Lowercase # L& COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI 2CEE ; Lowercase # L& COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA 2CF3 ; Lowercase # L& COPTIC SMALL LETTER BOHAIRIC KHEI 2D00..2D25 ; Lowercase # L& [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE 2D27 ; Lowercase # L& GEORGIAN SMALL LETTER YN 2D2D ; Lowercase # L& GEORGIAN SMALL LETTER AEN A641 ; Lowercase # L& CYRILLIC SMALL LETTER ZEMLYA A643 ; Lowercase # L& CYRILLIC SMALL LETTER DZELO A645 ; Lowercase # L& CYRILLIC SMALL LETTER REVERSED DZE A647 ; Lowercase # L& CYRILLIC SMALL LETTER IOTA A649 ; Lowercase # L& CYRILLIC SMALL LETTER DJERV A64B ; Lowercase # L& CYRILLIC SMALL LETTER MONOGRAPH UK A64D ; Lowercase # L& CYRILLIC SMALL LETTER BROAD OMEGA A64F ; Lowercase # L& CYRILLIC SMALL LETTER NEUTRAL YER A651 ; Lowercase # L& CYRILLIC SMALL LETTER YERU WITH BACK YER A653 ; Lowercase # L& CYRILLIC SMALL LETTER IOTIFIED YAT A655 ; Lowercase # L& CYRILLIC SMALL LETTER REVERSED YU A657 ; Lowercase # L& CYRILLIC SMALL LETTER IOTIFIED A A659 ; Lowercase # L& CYRILLIC SMALL LETTER CLOSED LITTLE YUS A65B ; Lowercase # L& CYRILLIC SMALL LETTER BLENDED YUS A65D ; Lowercase # L& CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS A65F ; Lowercase # L& CYRILLIC SMALL LETTER YN A661 ; Lowercase # L& CYRILLIC SMALL LETTER REVERSED TSE A663 ; Lowercase # L& CYRILLIC SMALL LETTER SOFT DE A665 ; Lowercase # L& CYRILLIC SMALL LETTER SOFT EL A667 ; Lowercase # L& CYRILLIC SMALL LETTER SOFT EM A669 ; Lowercase # L& CYRILLIC SMALL LETTER MONOCULAR O A66B ; Lowercase # L& CYRILLIC SMALL LETTER BINOCULAR O A66D ; Lowercase # L& CYRILLIC SMALL LETTER DOUBLE MONOCULAR O A681 ; Lowercase # L& CYRILLIC SMALL LETTER DWE A683 ; Lowercase # L& CYRILLIC SMALL LETTER DZWE A685 ; Lowercase # L& CYRILLIC SMALL LETTER ZHWE A687 ; Lowercase # L& CYRILLIC SMALL LETTER CCHE A689 ; Lowercase # L& CYRILLIC SMALL LETTER DZZE A68B ; Lowercase # L& CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK A68D ; Lowercase # L& CYRILLIC SMALL LETTER TWE A68F ; Lowercase # L& CYRILLIC SMALL LETTER TSWE A691 ; Lowercase # L& CYRILLIC SMALL LETTER TSSE A693 ; Lowercase # L& CYRILLIC SMALL LETTER TCHE A695 ; Lowercase # L& CYRILLIC SMALL LETTER HWE A697 ; Lowercase # L& CYRILLIC SMALL LETTER SHWE A699 ; Lowercase # L& CYRILLIC SMALL LETTER DOUBLE O A69B ; Lowercase # L& CYRILLIC SMALL LETTER CROSSED O A69C..A69D ; Lowercase # Lm [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN A723 ; Lowercase # L& LATIN SMALL LETTER EGYPTOLOGICAL ALEF A725 ; Lowercase # L& LATIN SMALL LETTER EGYPTOLOGICAL AIN A727 ; Lowercase # L& LATIN SMALL LETTER HENG A729 ; Lowercase # L& LATIN SMALL LETTER TZ A72B ; Lowercase # L& LATIN SMALL LETTER TRESILLO A72D ; Lowercase # L& LATIN SMALL LETTER CUATRILLO A72F..A731 ; Lowercase # L& [3] LATIN SMALL LETTER CUATRILLO WITH COMMA..LATIN LETTER SMALL CAPITAL S A733 ; Lowercase # L& LATIN SMALL LETTER AA A735 ; Lowercase # L& LATIN SMALL LETTER AO A737 ; Lowercase # L& LATIN SMALL LETTER AU A739 ; Lowercase # L& LATIN SMALL LETTER AV A73B ; Lowercase # L& LATIN SMALL LETTER AV WITH HORIZONTAL BAR A73D ; Lowercase # L& LATIN SMALL LETTER AY A73F ; Lowercase # L& LATIN SMALL LETTER REVERSED C WITH DOT A741 ; Lowercase # L& LATIN SMALL LETTER K WITH STROKE A743 ; Lowercase # L& LATIN SMALL LETTER K WITH DIAGONAL STROKE A745 ; Lowercase # L& LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE A747 ; Lowercase # L& LATIN SMALL LETTER BROKEN L A749 ; Lowercase # L& LATIN SMALL LETTER L WITH HIGH STROKE A74B ; Lowercase # L& LATIN SMALL LETTER O WITH LONG STROKE OVERLAY A74D ; Lowercase # L& LATIN SMALL LETTER O WITH LOOP A74F ; Lowercase # L& LATIN SMALL LETTER OO A751 ; Lowercase # L& LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER A753 ; Lowercase # L& LATIN SMALL LETTER P WITH FLOURISH A755 ; Lowercase # L& LATIN SMALL LETTER P WITH SQUIRREL TAIL A757 ; Lowercase # L& LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER A759 ; Lowercase # L& LATIN SMALL LETTER Q WITH DIAGONAL STROKE A75B ; Lowercase # L& LATIN SMALL LETTER R ROTUNDA A75D ; Lowercase # L& LATIN SMALL LETTER RUM ROTUNDA A75F ; Lowercase # L& LATIN SMALL LETTER V WITH DIAGONAL STROKE A761 ; Lowercase # L& LATIN SMALL LETTER VY A763 ; Lowercase # L& LATIN SMALL LETTER VISIGOTHIC Z A765 ; Lowercase # L& LATIN SMALL LETTER THORN WITH STROKE A767 ; Lowercase # L& LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER A769 ; Lowercase # L& LATIN SMALL LETTER VEND A76B ; Lowercase # L& LATIN SMALL LETTER ET A76D ; Lowercase # L& LATIN SMALL LETTER IS A76F ; Lowercase # L& LATIN SMALL LETTER CON A770 ; Lowercase # Lm MODIFIER LETTER US A771..A778 ; Lowercase # L& [8] LATIN SMALL LETTER DUM..LATIN SMALL LETTER UM A77A ; Lowercase # L& LATIN SMALL LETTER INSULAR D A77C ; Lowercase # L& LATIN SMALL LETTER INSULAR F A77F ; Lowercase # L& LATIN SMALL LETTER TURNED INSULAR G A781 ; Lowercase # L& LATIN SMALL LETTER TURNED L A783 ; Lowercase # L& LATIN SMALL LETTER INSULAR R A785 ; Lowercase # L& LATIN SMALL LETTER INSULAR S A787 ; Lowercase # L& LATIN SMALL LETTER INSULAR T A78C ; Lowercase # L& LATIN SMALL LETTER SALTILLO A78E ; Lowercase # L& LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT A791 ; Lowercase # L& LATIN SMALL LETTER N WITH DESCENDER A793..A795 ; Lowercase # L& [3] LATIN SMALL LETTER C WITH BAR..LATIN SMALL LETTER H WITH PALATAL HOOK A797 ; Lowercase # L& LATIN SMALL LETTER B WITH FLOURISH A799 ; Lowercase # L& LATIN SMALL LETTER F WITH STROKE A79B ; Lowercase # L& LATIN SMALL LETTER VOLAPUK AE A79D ; Lowercase # L& LATIN SMALL LETTER VOLAPUK OE A79F ; Lowercase # L& LATIN SMALL LETTER VOLAPUK UE A7A1 ; Lowercase # L& LATIN SMALL LETTER G WITH OBLIQUE STROKE A7A3 ; Lowercase # L& LATIN SMALL LETTER K WITH OBLIQUE STROKE A7A5 ; Lowercase # L& LATIN SMALL LETTER N WITH OBLIQUE STROKE A7A7 ; Lowercase # L& LATIN SMALL LETTER R WITH OBLIQUE STROKE A7A9 ; Lowercase # L& LATIN SMALL LETTER S WITH OBLIQUE STROKE A7B5 ; Lowercase # L& LATIN SMALL LETTER BETA A7B7 ; Lowercase # L& LATIN SMALL LETTER OMEGA A7F8..A7F9 ; Lowercase # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE A7FA ; Lowercase # L& LATIN LETTER SMALL CAPITAL TURNED M AB30..AB5A ; Lowercase # L& [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG AB5C..AB5F ; Lowercase # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK AB60..AB65 ; Lowercase # L& [6] LATIN SMALL LETTER SAKHA YAT..GREEK LETTER SMALL CAPITAL OMEGA AB70..ABBF ; Lowercase # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA FB00..FB06 ; Lowercase # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST FB13..FB17 ; Lowercase # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH FF41..FF5A ; Lowercase # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z 10428..1044F ; Lowercase # L& [40] DESERET SMALL LETTER LONG I..DESERET SMALL LETTER EW 104D8..104FB ; Lowercase # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA 10CC0..10CF2 ; Lowercase # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US 118C0..118DF ; Lowercase # L& [32] WARANG CITI SMALL LETTER NGAA..WARANG CITI SMALL LETTER VIYO 1D41A..1D433 ; Lowercase # L& [26] MATHEMATICAL BOLD SMALL A..MATHEMATICAL BOLD SMALL Z 1D44E..1D454 ; Lowercase # L& [7] MATHEMATICAL ITALIC SMALL A..MATHEMATICAL ITALIC SMALL G 1D456..1D467 ; Lowercase # L& [18] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL ITALIC SMALL Z 1D482..1D49B ; Lowercase # L& [26] MATHEMATICAL BOLD ITALIC SMALL A..MATHEMATICAL BOLD ITALIC SMALL Z 1D4B6..1D4B9 ; Lowercase # L& [4] MATHEMATICAL SCRIPT SMALL A..MATHEMATICAL SCRIPT SMALL D 1D4BB ; Lowercase # L& MATHEMATICAL SCRIPT SMALL F 1D4BD..1D4C3 ; Lowercase # L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N 1D4C5..1D4CF ; Lowercase # L& [11] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL SCRIPT SMALL Z 1D4EA..1D503 ; Lowercase # L& [26] MATHEMATICAL BOLD SCRIPT SMALL A..MATHEMATICAL BOLD SCRIPT SMALL Z 1D51E..1D537 ; Lowercase # L& [26] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL FRAKTUR SMALL Z 1D552..1D56B ; Lowercase # L& [26] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL DOUBLE-STRUCK SMALL Z 1D586..1D59F ; Lowercase # L& [26] MATHEMATICAL BOLD FRAKTUR SMALL A..MATHEMATICAL BOLD FRAKTUR SMALL Z 1D5BA..1D5D3 ; Lowercase # L& [26] MATHEMATICAL SANS-SERIF SMALL A..MATHEMATICAL SANS-SERIF SMALL Z 1D5EE..1D607 ; Lowercase # L& [26] MATHEMATICAL SANS-SERIF BOLD SMALL A..MATHEMATICAL SANS-SERIF BOLD SMALL Z 1D622..1D63B ; Lowercase # L& [26] MATHEMATICAL SANS-SERIF ITALIC SMALL A..MATHEMATICAL SANS-SERIF ITALIC SMALL Z 1D656..1D66F ; Lowercase # L& [26] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z 1D68A..1D6A5 ; Lowercase # L& [28] MATHEMATICAL MONOSPACE SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J 1D6C2..1D6DA ; Lowercase # L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA 1D6DC..1D6E1 ; Lowercase # L& [6] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL BOLD PI SYMBOL 1D6FC..1D714 ; Lowercase # L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA 1D716..1D71B ; Lowercase # L& [6] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL ITALIC PI SYMBOL 1D736..1D74E ; Lowercase # L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA 1D750..1D755 ; Lowercase # L& [6] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC PI SYMBOL 1D770..1D788 ; Lowercase # L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA 1D78A..1D78F ; Lowercase # L& [6] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD PI SYMBOL 1D7AA..1D7C2 ; Lowercase # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA 1D7C4..1D7C9 ; Lowercase # L& [6] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL 1D7CB ; Lowercase # L& MATHEMATICAL BOLD SMALL DIGAMMA 1E922..1E943 ; Lowercase # L& [34] ADLAM SMALL LETTER ALIF..ADLAM SMALL LETTER SHA # Total code points: 2252 # ================================================ # Derived Property: Uppercase # Generated from: Lu + Other_Uppercase 0041..005A ; Uppercase # L& [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z 00C0..00D6 ; Uppercase # L& [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS 00D8..00DE ; Uppercase # L& [7] LATIN CAPITAL LETTER O WITH STROKE..LATIN CAPITAL LETTER THORN 0100 ; Uppercase # L& LATIN CAPITAL LETTER A WITH MACRON 0102 ; Uppercase # L& LATIN CAPITAL LETTER A WITH BREVE 0104 ; Uppercase # L& LATIN CAPITAL LETTER A WITH OGONEK 0106 ; Uppercase # L& LATIN CAPITAL LETTER C WITH ACUTE 0108 ; Uppercase # L& LATIN CAPITAL LETTER C WITH CIRCUMFLEX 010A ; Uppercase # L& LATIN CAPITAL LETTER C WITH DOT ABOVE 010C ; Uppercase # L& LATIN CAPITAL LETTER C WITH CARON 010E ; Uppercase # L& LATIN CAPITAL LETTER D WITH CARON 0110 ; Uppercase # L& LATIN CAPITAL LETTER D WITH STROKE 0112 ; Uppercase # L& LATIN CAPITAL LETTER E WITH MACRON 0114 ; Uppercase # L& LATIN CAPITAL LETTER E WITH BREVE 0116 ; Uppercase # L& LATIN CAPITAL LETTER E WITH DOT ABOVE 0118 ; Uppercase # L& LATIN CAPITAL LETTER E WITH OGONEK 011A ; Uppercase # L& LATIN CAPITAL LETTER E WITH CARON 011C ; Uppercase # L& LATIN CAPITAL LETTER G WITH CIRCUMFLEX 011E ; Uppercase # L& LATIN CAPITAL LETTER G WITH BREVE 0120 ; Uppercase # L& LATIN CAPITAL LETTER G WITH DOT ABOVE 0122 ; Uppercase # L& LATIN CAPITAL LETTER G WITH CEDILLA 0124 ; Uppercase # L& LATIN CAPITAL LETTER H WITH CIRCUMFLEX 0126 ; Uppercase # L& LATIN CAPITAL LETTER H WITH STROKE 0128 ; Uppercase # L& LATIN CAPITAL LETTER I WITH TILDE 012A ; Uppercase # L& LATIN CAPITAL LETTER I WITH MACRON 012C ; Uppercase # L& LATIN CAPITAL LETTER I WITH BREVE 012E ; Uppercase # L& LATIN CAPITAL LETTER I WITH OGONEK 0130 ; Uppercase # L& LATIN CAPITAL LETTER I WITH DOT ABOVE 0132 ; Uppercase # L& LATIN CAPITAL LIGATURE IJ 0134 ; Uppercase # L& LATIN CAPITAL LETTER J WITH CIRCUMFLEX 0136 ; Uppercase # L& LATIN CAPITAL LETTER K WITH CEDILLA 0139 ; Uppercase # L& LATIN CAPITAL LETTER L WITH ACUTE 013B ; Uppercase # L& LATIN CAPITAL LETTER L WITH CEDILLA 013D ; Uppercase # L& LATIN CAPITAL LETTER L WITH CARON 013F ; Uppercase # L& LATIN CAPITAL LETTER L WITH MIDDLE DOT 0141 ; Uppercase # L& LATIN CAPITAL LETTER L WITH STROKE 0143 ; Uppercase # L& LATIN CAPITAL LETTER N WITH ACUTE 0145 ; Uppercase # L& LATIN CAPITAL LETTER N WITH CEDILLA 0147 ; Uppercase # L& LATIN CAPITAL LETTER N WITH CARON 014A ; Uppercase # L& LATIN CAPITAL LETTER ENG 014C ; Uppercase # L& LATIN CAPITAL LETTER O WITH MACRON 014E ; Uppercase # L& LATIN CAPITAL LETTER O WITH BREVE 0150 ; Uppercase # L& LATIN CAPITAL LETTER O WITH DOUBLE ACUTE 0152 ; Uppercase # L& LATIN CAPITAL LIGATURE OE 0154 ; Uppercase # L& LATIN CAPITAL LETTER R WITH ACUTE 0156 ; Uppercase # L& LATIN CAPITAL LETTER R WITH CEDILLA 0158 ; Uppercase # L& LATIN CAPITAL LETTER R WITH CARON 015A ; Uppercase # L& LATIN CAPITAL LETTER S WITH ACUTE 015C ; Uppercase # L& LATIN CAPITAL LETTER S WITH CIRCUMFLEX 015E ; Uppercase # L& LATIN CAPITAL LETTER S WITH CEDILLA 0160 ; Uppercase # L& LATIN CAPITAL LETTER S WITH CARON 0162 ; Uppercase # L& LATIN CAPITAL LETTER T WITH CEDILLA 0164 ; Uppercase # L& LATIN CAPITAL LETTER T WITH CARON 0166 ; Uppercase # L& LATIN CAPITAL LETTER T WITH STROKE 0168 ; Uppercase # L& LATIN CAPITAL LETTER U WITH TILDE 016A ; Uppercase # L& LATIN CAPITAL LETTER U WITH MACRON 016C ; Uppercase # L& LATIN CAPITAL LETTER U WITH BREVE 016E ; Uppercase # L& LATIN CAPITAL LETTER U WITH RING ABOVE 0170 ; Uppercase # L& LATIN CAPITAL LETTER U WITH DOUBLE ACUTE 0172 ; Uppercase # L& LATIN CAPITAL LETTER U WITH OGONEK 0174 ; Uppercase # L& LATIN CAPITAL LETTER W WITH CIRCUMFLEX 0176 ; Uppercase # L& LATIN CAPITAL LETTER Y WITH CIRCUMFLEX 0178..0179 ; Uppercase # L& [2] LATIN CAPITAL LETTER Y WITH DIAERESIS..LATIN CAPITAL LETTER Z WITH ACUTE 017B ; Uppercase # L& LATIN CAPITAL LETTER Z WITH DOT ABOVE 017D ; Uppercase # L& LATIN CAPITAL LETTER Z WITH CARON 0181..0182 ; Uppercase # L& [2] LATIN CAPITAL LETTER B WITH HOOK..LATIN CAPITAL LETTER B WITH TOPBAR 0184 ; Uppercase # L& LATIN CAPITAL LETTER TONE SIX 0186..0187 ; Uppercase # L& [2] LATIN CAPITAL LETTER OPEN O..LATIN CAPITAL LETTER C WITH HOOK 0189..018B ; Uppercase # L& [3] LATIN CAPITAL LETTER AFRICAN D..LATIN CAPITAL LETTER D WITH TOPBAR 018E..0191 ; Uppercase # L& [4] LATIN CAPITAL LETTER REVERSED E..LATIN CAPITAL LETTER F WITH HOOK 0193..0194 ; Uppercase # L& [2] LATIN CAPITAL LETTER G WITH HOOK..LATIN CAPITAL LETTER GAMMA 0196..0198 ; Uppercase # L& [3] LATIN CAPITAL LETTER IOTA..LATIN CAPITAL LETTER K WITH HOOK 019C..019D ; Uppercase # L& [2] LATIN CAPITAL LETTER TURNED M..LATIN CAPITAL LETTER N WITH LEFT HOOK 019F..01A0 ; Uppercase # L& [2] LATIN CAPITAL LETTER O WITH MIDDLE TILDE..LATIN CAPITAL LETTER O WITH HORN 01A2 ; Uppercase # L& LATIN CAPITAL LETTER OI 01A4 ; Uppercase # L& LATIN CAPITAL LETTER P WITH HOOK 01A6..01A7 ; Uppercase # L& [2] LATIN LETTER YR..LATIN CAPITAL LETTER TONE TWO 01A9 ; Uppercase # L& LATIN CAPITAL LETTER ESH 01AC ; Uppercase # L& LATIN CAPITAL LETTER T WITH HOOK 01AE..01AF ; Uppercase # L& [2] LATIN CAPITAL LETTER T WITH RETROFLEX HOOK..LATIN CAPITAL LETTER U WITH HORN 01B1..01B3 ; Uppercase # L& [3] LATIN CAPITAL LETTER UPSILON..LATIN CAPITAL LETTER Y WITH HOOK 01B5 ; Uppercase # L& LATIN CAPITAL LETTER Z WITH STROKE 01B7..01B8 ; Uppercase # L& [2] LATIN CAPITAL LETTER EZH..LATIN CAPITAL LETTER EZH REVERSED 01BC ; Uppercase # L& LATIN CAPITAL LETTER TONE FIVE 01C4 ; Uppercase # L& LATIN CAPITAL LETTER DZ WITH CARON 01C7 ; Uppercase # L& LATIN CAPITAL LETTER LJ 01CA ; Uppercase # L& LATIN CAPITAL LETTER NJ 01CD ; Uppercase # L& LATIN CAPITAL LETTER A WITH CARON 01CF ; Uppercase # L& LATIN CAPITAL LETTER I WITH CARON 01D1 ; Uppercase # L& LATIN CAPITAL LETTER O WITH CARON 01D3 ; Uppercase # L& LATIN CAPITAL LETTER U WITH CARON 01D5 ; Uppercase # L& LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON 01D7 ; Uppercase # L& LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE 01D9 ; Uppercase # L& LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON 01DB ; Uppercase # L& LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE 01DE ; Uppercase # L& LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON 01E0 ; Uppercase # L& LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON 01E2 ; Uppercase # L& LATIN CAPITAL LETTER AE WITH MACRON 01E4 ; Uppercase # L& LATIN CAPITAL LETTER G WITH STROKE 01E6 ; Uppercase # L& LATIN CAPITAL LETTER G WITH CARON 01E8 ; Uppercase # L& LATIN CAPITAL LETTER K WITH CARON 01EA ; Uppercase # L& LATIN CAPITAL LETTER O WITH OGONEK 01EC ; Uppercase # L& LATIN CAPITAL LETTER O WITH OGONEK AND MACRON 01EE ; Uppercase # L& LATIN CAPITAL LETTER EZH WITH CARON 01F1 ; Uppercase # L& LATIN CAPITAL LETTER DZ 01F4 ; Uppercase # L& LATIN CAPITAL LETTER G WITH ACUTE 01F6..01F8 ; Uppercase # L& [3] LATIN CAPITAL LETTER HWAIR..LATIN CAPITAL LETTER N WITH GRAVE 01FA ; Uppercase # L& LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE 01FC ; Uppercase # L& LATIN CAPITAL LETTER AE WITH ACUTE 01FE ; Uppercase # L& LATIN CAPITAL LETTER O WITH STROKE AND ACUTE 0200 ; Uppercase # L& LATIN CAPITAL LETTER A WITH DOUBLE GRAVE 0202 ; Uppercase # L& LATIN CAPITAL LETTER A WITH INVERTED BREVE 0204 ; Uppercase # L& LATIN CAPITAL LETTER E WITH DOUBLE GRAVE 0206 ; Uppercase # L& LATIN CAPITAL LETTER E WITH INVERTED BREVE 0208 ; Uppercase # L& LATIN CAPITAL LETTER I WITH DOUBLE GRAVE 020A ; Uppercase # L& LATIN CAPITAL LETTER I WITH INVERTED BREVE 020C ; Uppercase # L& LATIN CAPITAL LETTER O WITH DOUBLE GRAVE 020E ; Uppercase # L& LATIN CAPITAL LETTER O WITH INVERTED BREVE 0210 ; Uppercase # L& LATIN CAPITAL LETTER R WITH DOUBLE GRAVE 0212 ; Uppercase # L& LATIN CAPITAL LETTER R WITH INVERTED BREVE 0214 ; Uppercase # L& LATIN CAPITAL LETTER U WITH DOUBLE GRAVE 0216 ; Uppercase # L& LATIN CAPITAL LETTER U WITH INVERTED BREVE 0218 ; Uppercase # L& LATIN CAPITAL LETTER S WITH COMMA BELOW 021A ; Uppercase # L& LATIN CAPITAL LETTER T WITH COMMA BELOW 021C ; Uppercase # L& LATIN CAPITAL LETTER YOGH 021E ; Uppercase # L& LATIN CAPITAL LETTER H WITH CARON 0220 ; Uppercase # L& LATIN CAPITAL LETTER N WITH LONG RIGHT LEG 0222 ; Uppercase # L& LATIN CAPITAL LETTER OU 0224 ; Uppercase # L& LATIN CAPITAL LETTER Z WITH HOOK 0226 ; Uppercase # L& LATIN CAPITAL LETTER A WITH DOT ABOVE 0228 ; Uppercase # L& LATIN CAPITAL LETTER E WITH CEDILLA 022A ; Uppercase # L& LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON 022C ; Uppercase # L& LATIN CAPITAL LETTER O WITH TILDE AND MACRON 022E ; Uppercase # L& LATIN CAPITAL LETTER O WITH DOT ABOVE 0230 ; Uppercase # L& LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON 0232 ; Uppercase # L& LATIN CAPITAL LETTER Y WITH MACRON 023A..023B ; Uppercase # L& [2] LATIN CAPITAL LETTER A WITH STROKE..LATIN CAPITAL LETTER C WITH STROKE 023D..023E ; Uppercase # L& [2] LATIN CAPITAL LETTER L WITH BAR..LATIN CAPITAL LETTER T WITH DIAGONAL STROKE 0241 ; Uppercase # L& LATIN CAPITAL LETTER GLOTTAL STOP 0243..0246 ; Uppercase # L& [4] LATIN CAPITAL LETTER B WITH STROKE..LATIN CAPITAL LETTER E WITH STROKE 0248 ; Uppercase # L& LATIN CAPITAL LETTER J WITH STROKE 024A ; Uppercase # L& LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL 024C ; Uppercase # L& LATIN CAPITAL LETTER R WITH STROKE 024E ; Uppercase # L& LATIN CAPITAL LETTER Y WITH STROKE 0370 ; Uppercase # L& GREEK CAPITAL LETTER HETA 0372 ; Uppercase # L& GREEK CAPITAL LETTER ARCHAIC SAMPI 0376 ; Uppercase # L& GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA 037F ; Uppercase # L& GREEK CAPITAL LETTER YOT 0386 ; Uppercase # L& GREEK CAPITAL LETTER ALPHA WITH TONOS 0388..038A ; Uppercase # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS 038C ; Uppercase # L& GREEK CAPITAL LETTER OMICRON WITH TONOS 038E..038F ; Uppercase # L& [2] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER OMEGA WITH TONOS 0391..03A1 ; Uppercase # L& [17] GREEK CAPITAL LETTER ALPHA..GREEK CAPITAL LETTER RHO 03A3..03AB ; Uppercase # L& [9] GREEK CAPITAL LETTER SIGMA..GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA 03CF ; Uppercase # L& GREEK CAPITAL KAI SYMBOL 03D2..03D4 ; Uppercase # L& [3] GREEK UPSILON WITH HOOK SYMBOL..GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL 03D8 ; Uppercase # L& GREEK LETTER ARCHAIC KOPPA 03DA ; Uppercase # L& GREEK LETTER STIGMA 03DC ; Uppercase # L& GREEK LETTER DIGAMMA 03DE ; Uppercase # L& GREEK LETTER KOPPA 03E0 ; Uppercase # L& GREEK LETTER SAMPI 03E2 ; Uppercase # L& COPTIC CAPITAL LETTER SHEI 03E4 ; Uppercase # L& COPTIC CAPITAL LETTER FEI 03E6 ; Uppercase # L& COPTIC CAPITAL LETTER KHEI 03E8 ; Uppercase # L& COPTIC CAPITAL LETTER HORI 03EA ; Uppercase # L& COPTIC CAPITAL LETTER GANGIA 03EC ; Uppercase # L& COPTIC CAPITAL LETTER SHIMA 03EE ; Uppercase # L& COPTIC CAPITAL LETTER DEI 03F4 ; Uppercase # L& GREEK CAPITAL THETA SYMBOL 03F7 ; Uppercase # L& GREEK CAPITAL LETTER SHO 03F9..03FA ; Uppercase # L& [2] GREEK CAPITAL LUNATE SIGMA SYMBOL..GREEK CAPITAL LETTER SAN 03FD..042F ; Uppercase # L& [51] GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL..CYRILLIC CAPITAL LETTER YA 0460 ; Uppercase # L& CYRILLIC CAPITAL LETTER OMEGA 0462 ; Uppercase # L& CYRILLIC CAPITAL LETTER YAT 0464 ; Uppercase # L& CYRILLIC CAPITAL LETTER IOTIFIED E 0466 ; Uppercase # L& CYRILLIC CAPITAL LETTER LITTLE YUS 0468 ; Uppercase # L& CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS 046A ; Uppercase # L& CYRILLIC CAPITAL LETTER BIG YUS 046C ; Uppercase # L& CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS 046E ; Uppercase # L& CYRILLIC CAPITAL LETTER KSI 0470 ; Uppercase # L& CYRILLIC CAPITAL LETTER PSI 0472 ; Uppercase # L& CYRILLIC CAPITAL LETTER FITA 0474 ; Uppercase # L& CYRILLIC CAPITAL LETTER IZHITSA 0476 ; Uppercase # L& CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT 0478 ; Uppercase # L& CYRILLIC CAPITAL LETTER UK 047A ; Uppercase # L& CYRILLIC CAPITAL LETTER ROUND OMEGA 047C ; Uppercase # L& CYRILLIC CAPITAL LETTER OMEGA WITH TITLO 047E ; Uppercase # L& CYRILLIC CAPITAL LETTER OT 0480 ; Uppercase # L& CYRILLIC CAPITAL LETTER KOPPA 048A ; Uppercase # L& CYRILLIC CAPITAL LETTER SHORT I WITH TAIL 048C ; Uppercase # L& CYRILLIC CAPITAL LETTER SEMISOFT SIGN 048E ; Uppercase # L& CYRILLIC CAPITAL LETTER ER WITH TICK 0490 ; Uppercase # L& CYRILLIC CAPITAL LETTER GHE WITH UPTURN 0492 ; Uppercase # L& CYRILLIC CAPITAL LETTER GHE WITH STROKE 0494 ; Uppercase # L& CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK 0496 ; Uppercase # L& CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER 0498 ; Uppercase # L& CYRILLIC CAPITAL LETTER ZE WITH DESCENDER 049A ; Uppercase # L& CYRILLIC CAPITAL LETTER KA WITH DESCENDER 049C ; Uppercase # L& CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE 049E ; Uppercase # L& CYRILLIC CAPITAL LETTER KA WITH STROKE 04A0 ; Uppercase # L& CYRILLIC CAPITAL LETTER BASHKIR KA 04A2 ; Uppercase # L& CYRILLIC CAPITAL LETTER EN WITH DESCENDER 04A4 ; Uppercase # L& CYRILLIC CAPITAL LIGATURE EN GHE 04A6 ; Uppercase # L& CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK 04A8 ; Uppercase # L& CYRILLIC CAPITAL LETTER ABKHASIAN HA 04AA ; Uppercase # L& CYRILLIC CAPITAL LETTER ES WITH DESCENDER 04AC ; Uppercase # L& CYRILLIC CAPITAL LETTER TE WITH DESCENDER 04AE ; Uppercase # L& CYRILLIC CAPITAL LETTER STRAIGHT U 04B0 ; Uppercase # L& CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE 04B2 ; Uppercase # L& CYRILLIC CAPITAL LETTER HA WITH DESCENDER 04B4 ; Uppercase # L& CYRILLIC CAPITAL LIGATURE TE TSE 04B6 ; Uppercase # L& CYRILLIC CAPITAL LETTER CHE WITH DESCENDER 04B8 ; Uppercase # L& CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE 04BA ; Uppercase # L& CYRILLIC CAPITAL LETTER SHHA 04BC ; Uppercase # L& CYRILLIC CAPITAL LETTER ABKHASIAN CHE 04BE ; Uppercase # L& CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER 04C0..04C1 ; Uppercase # L& [2] CYRILLIC LETTER PALOCHKA..CYRILLIC CAPITAL LETTER ZHE WITH BREVE 04C3 ; Uppercase # L& CYRILLIC CAPITAL LETTER KA WITH HOOK 04C5 ; Uppercase # L& CYRILLIC CAPITAL LETTER EL WITH TAIL 04C7 ; Uppercase # L& CYRILLIC CAPITAL LETTER EN WITH HOOK 04C9 ; Uppercase # L& CYRILLIC CAPITAL LETTER EN WITH TAIL 04CB ; Uppercase # L& CYRILLIC CAPITAL LETTER KHAKASSIAN CHE 04CD ; Uppercase # L& CYRILLIC CAPITAL LETTER EM WITH TAIL 04D0 ; Uppercase # L& CYRILLIC CAPITAL LETTER A WITH BREVE 04D2 ; Uppercase # L& CYRILLIC CAPITAL LETTER A WITH DIAERESIS 04D4 ; Uppercase # L& CYRILLIC CAPITAL LIGATURE A IE 04D6 ; Uppercase # L& CYRILLIC CAPITAL LETTER IE WITH BREVE 04D8 ; Uppercase # L& CYRILLIC CAPITAL LETTER SCHWA 04DA ; Uppercase # L& CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS 04DC ; Uppercase # L& CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS 04DE ; Uppercase # L& CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS 04E0 ; Uppercase # L& CYRILLIC CAPITAL LETTER ABKHASIAN DZE 04E2 ; Uppercase # L& CYRILLIC CAPITAL LETTER I WITH MACRON 04E4 ; Uppercase # L& CYRILLIC CAPITAL LETTER I WITH DIAERESIS 04E6 ; Uppercase # L& CYRILLIC CAPITAL LETTER O WITH DIAERESIS 04E8 ; Uppercase # L& CYRILLIC CAPITAL LETTER BARRED O 04EA ; Uppercase # L& CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS 04EC ; Uppercase # L& CYRILLIC CAPITAL LETTER E WITH DIAERESIS 04EE ; Uppercase # L& CYRILLIC CAPITAL LETTER U WITH MACRON 04F0 ; Uppercase # L& CYRILLIC CAPITAL LETTER U WITH DIAERESIS 04F2 ; Uppercase # L& CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE 04F4 ; Uppercase # L& CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS 04F6 ; Uppercase # L& CYRILLIC CAPITAL LETTER GHE WITH DESCENDER 04F8 ; Uppercase # L& CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS 04FA ; Uppercase # L& CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK 04FC ; Uppercase # L& CYRILLIC CAPITAL LETTER HA WITH HOOK 04FE ; Uppercase # L& CYRILLIC CAPITAL LETTER HA WITH STROKE 0500 ; Uppercase # L& CYRILLIC CAPITAL LETTER KOMI DE 0502 ; Uppercase # L& CYRILLIC CAPITAL LETTER KOMI DJE 0504 ; Uppercase # L& CYRILLIC CAPITAL LETTER KOMI ZJE 0506 ; Uppercase # L& CYRILLIC CAPITAL LETTER KOMI DZJE 0508 ; Uppercase # L& CYRILLIC CAPITAL LETTER KOMI LJE 050A ; Uppercase # L& CYRILLIC CAPITAL LETTER KOMI NJE 050C ; Uppercase # L& CYRILLIC CAPITAL LETTER KOMI SJE 050E ; Uppercase # L& CYRILLIC CAPITAL LETTER KOMI TJE 0510 ; Uppercase # L& CYRILLIC CAPITAL LETTER REVERSED ZE 0512 ; Uppercase # L& CYRILLIC CAPITAL LETTER EL WITH HOOK 0514 ; Uppercase # L& CYRILLIC CAPITAL LETTER LHA 0516 ; Uppercase # L& CYRILLIC CAPITAL LETTER RHA 0518 ; Uppercase # L& CYRILLIC CAPITAL LETTER YAE 051A ; Uppercase # L& CYRILLIC CAPITAL LETTER QA 051C ; Uppercase # L& CYRILLIC CAPITAL LETTER WE 051E ; Uppercase # L& CYRILLIC CAPITAL LETTER ALEUT KA 0520 ; Uppercase # L& CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK 0522 ; Uppercase # L& CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK 0524 ; Uppercase # L& CYRILLIC CAPITAL LETTER PE WITH DESCENDER 0526 ; Uppercase # L& CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER 0528 ; Uppercase # L& CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK 052A ; Uppercase # L& CYRILLIC CAPITAL LETTER DZZHE 052C ; Uppercase # L& CYRILLIC CAPITAL LETTER DCHE 052E ; Uppercase # L& CYRILLIC CAPITAL LETTER EL WITH DESCENDER 0531..0556 ; Uppercase # L& [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH 10A0..10C5 ; Uppercase # L& [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE 10C7 ; Uppercase # L& GEORGIAN CAPITAL LETTER YN 10CD ; Uppercase # L& GEORGIAN CAPITAL LETTER AEN 13A0..13F5 ; Uppercase # L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV 1E00 ; Uppercase # L& LATIN CAPITAL LETTER A WITH RING BELOW 1E02 ; Uppercase # L& LATIN CAPITAL LETTER B WITH DOT ABOVE 1E04 ; Uppercase # L& LATIN CAPITAL LETTER B WITH DOT BELOW 1E06 ; Uppercase # L& LATIN CAPITAL LETTER B WITH LINE BELOW 1E08 ; Uppercase # L& LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE 1E0A ; Uppercase # L& LATIN CAPITAL LETTER D WITH DOT ABOVE 1E0C ; Uppercase # L& LATIN CAPITAL LETTER D WITH DOT BELOW 1E0E ; Uppercase # L& LATIN CAPITAL LETTER D WITH LINE BELOW 1E10 ; Uppercase # L& LATIN CAPITAL LETTER D WITH CEDILLA 1E12 ; Uppercase # L& LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW 1E14 ; Uppercase # L& LATIN CAPITAL LETTER E WITH MACRON AND GRAVE 1E16 ; Uppercase # L& LATIN CAPITAL LETTER E WITH MACRON AND ACUTE 1E18 ; Uppercase # L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW 1E1A ; Uppercase # L& LATIN CAPITAL LETTER E WITH TILDE BELOW 1E1C ; Uppercase # L& LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE 1E1E ; Uppercase # L& LATIN CAPITAL LETTER F WITH DOT ABOVE 1E20 ; Uppercase # L& LATIN CAPITAL LETTER G WITH MACRON 1E22 ; Uppercase # L& LATIN CAPITAL LETTER H WITH DOT ABOVE 1E24 ; Uppercase # L& LATIN CAPITAL LETTER H WITH DOT BELOW 1E26 ; Uppercase # L& LATIN CAPITAL LETTER H WITH DIAERESIS 1E28 ; Uppercase # L& LATIN CAPITAL LETTER H WITH CEDILLA 1E2A ; Uppercase # L& LATIN CAPITAL LETTER H WITH BREVE BELOW 1E2C ; Uppercase # L& LATIN CAPITAL LETTER I WITH TILDE BELOW 1E2E ; Uppercase # L& LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE 1E30 ; Uppercase # L& LATIN CAPITAL LETTER K WITH ACUTE 1E32 ; Uppercase # L& LATIN CAPITAL LETTER K WITH DOT BELOW 1E34 ; Uppercase # L& LATIN CAPITAL LETTER K WITH LINE BELOW 1E36 ; Uppercase # L& LATIN CAPITAL LETTER L WITH DOT BELOW 1E38 ; Uppercase # L& LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON 1E3A ; Uppercase # L& LATIN CAPITAL LETTER L WITH LINE BELOW 1E3C ; Uppercase # L& LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW 1E3E ; Uppercase # L& LATIN CAPITAL LETTER M WITH ACUTE 1E40 ; Uppercase # L& LATIN CAPITAL LETTER M WITH DOT ABOVE 1E42 ; Uppercase # L& LATIN CAPITAL LETTER M WITH DOT BELOW 1E44 ; Uppercase # L& LATIN CAPITAL LETTER N WITH DOT ABOVE 1E46 ; Uppercase # L& LATIN CAPITAL LETTER N WITH DOT BELOW 1E48 ; Uppercase # L& LATIN CAPITAL LETTER N WITH LINE BELOW 1E4A ; Uppercase # L& LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW 1E4C ; Uppercase # L& LATIN CAPITAL LETTER O WITH TILDE AND ACUTE 1E4E ; Uppercase # L& LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS 1E50 ; Uppercase # L& LATIN CAPITAL LETTER O WITH MACRON AND GRAVE 1E52 ; Uppercase # L& LATIN CAPITAL LETTER O WITH MACRON AND ACUTE 1E54 ; Uppercase # L& LATIN CAPITAL LETTER P WITH ACUTE 1E56 ; Uppercase # L& LATIN CAPITAL LETTER P WITH DOT ABOVE 1E58 ; Uppercase # L& LATIN CAPITAL LETTER R WITH DOT ABOVE 1E5A ; Uppercase # L& LATIN CAPITAL LETTER R WITH DOT BELOW 1E5C ; Uppercase # L& LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON 1E5E ; Uppercase # L& LATIN CAPITAL LETTER R WITH LINE BELOW 1E60 ; Uppercase # L& LATIN CAPITAL LETTER S WITH DOT ABOVE 1E62 ; Uppercase # L& LATIN CAPITAL LETTER S WITH DOT BELOW 1E64 ; Uppercase # L& LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE 1E66 ; Uppercase # L& LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE 1E68 ; Uppercase # L& LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE 1E6A ; Uppercase # L& LATIN CAPITAL LETTER T WITH DOT ABOVE 1E6C ; Uppercase # L& LATIN CAPITAL LETTER T WITH DOT BELOW 1E6E ; Uppercase # L& LATIN CAPITAL LETTER T WITH LINE BELOW 1E70 ; Uppercase # L& LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW 1E72 ; Uppercase # L& LATIN CAPITAL LETTER U WITH DIAERESIS BELOW 1E74 ; Uppercase # L& LATIN CAPITAL LETTER U WITH TILDE BELOW 1E76 ; Uppercase # L& LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW 1E78 ; Uppercase # L& LATIN CAPITAL LETTER U WITH TILDE AND ACUTE 1E7A ; Uppercase # L& LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS 1E7C ; Uppercase # L& LATIN CAPITAL LETTER V WITH TILDE 1E7E ; Uppercase # L& LATIN CAPITAL LETTER V WITH DOT BELOW 1E80 ; Uppercase # L& LATIN CAPITAL LETTER W WITH GRAVE 1E82 ; Uppercase # L& LATIN CAPITAL LETTER W WITH ACUTE 1E84 ; Uppercase # L& LATIN CAPITAL LETTER W WITH DIAERESIS 1E86 ; Uppercase # L& LATIN CAPITAL LETTER W WITH DOT ABOVE 1E88 ; Uppercase # L& LATIN CAPITAL LETTER W WITH DOT BELOW 1E8A ; Uppercase # L& LATIN CAPITAL LETTER X WITH DOT ABOVE 1E8C ; Uppercase # L& LATIN CAPITAL LETTER X WITH DIAERESIS 1E8E ; Uppercase # L& LATIN CAPITAL LETTER Y WITH DOT ABOVE 1E90 ; Uppercase # L& LATIN CAPITAL LETTER Z WITH CIRCUMFLEX 1E92 ; Uppercase # L& LATIN CAPITAL LETTER Z WITH DOT BELOW 1E94 ; Uppercase # L& LATIN CAPITAL LETTER Z WITH LINE BELOW 1E9E ; Uppercase # L& LATIN CAPITAL LETTER SHARP S 1EA0 ; Uppercase # L& LATIN CAPITAL LETTER A WITH DOT BELOW 1EA2 ; Uppercase # L& LATIN CAPITAL LETTER A WITH HOOK ABOVE 1EA4 ; Uppercase # L& LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE 1EA6 ; Uppercase # L& LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE 1EA8 ; Uppercase # L& LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE 1EAA ; Uppercase # L& LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE 1EAC ; Uppercase # L& LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW 1EAE ; Uppercase # L& LATIN CAPITAL LETTER A WITH BREVE AND ACUTE 1EB0 ; Uppercase # L& LATIN CAPITAL LETTER A WITH BREVE AND GRAVE 1EB2 ; Uppercase # L& LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE 1EB4 ; Uppercase # L& LATIN CAPITAL LETTER A WITH BREVE AND TILDE 1EB6 ; Uppercase # L& LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW 1EB8 ; Uppercase # L& LATIN CAPITAL LETTER E WITH DOT BELOW 1EBA ; Uppercase # L& LATIN CAPITAL LETTER E WITH HOOK ABOVE 1EBC ; Uppercase # L& LATIN CAPITAL LETTER E WITH TILDE 1EBE ; Uppercase # L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE 1EC0 ; Uppercase # L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE 1EC2 ; Uppercase # L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE 1EC4 ; Uppercase # L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE 1EC6 ; Uppercase # L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW 1EC8 ; Uppercase # L& LATIN CAPITAL LETTER I WITH HOOK ABOVE 1ECA ; Uppercase # L& LATIN CAPITAL LETTER I WITH DOT BELOW 1ECC ; Uppercase # L& LATIN CAPITAL LETTER O WITH DOT BELOW 1ECE ; Uppercase # L& LATIN CAPITAL LETTER O WITH HOOK ABOVE 1ED0 ; Uppercase # L& LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE 1ED2 ; Uppercase # L& LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE 1ED4 ; Uppercase # L& LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE 1ED6 ; Uppercase # L& LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE 1ED8 ; Uppercase # L& LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW 1EDA ; Uppercase # L& LATIN CAPITAL LETTER O WITH HORN AND ACUTE 1EDC ; Uppercase # L& LATIN CAPITAL LETTER O WITH HORN AND GRAVE 1EDE ; Uppercase # L& LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE 1EE0 ; Uppercase # L& LATIN CAPITAL LETTER O WITH HORN AND TILDE 1EE2 ; Uppercase # L& LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW 1EE4 ; Uppercase # L& LATIN CAPITAL LETTER U WITH DOT BELOW 1EE6 ; Uppercase # L& LATIN CAPITAL LETTER U WITH HOOK ABOVE 1EE8 ; Uppercase # L& LATIN CAPITAL LETTER U WITH HORN AND ACUTE 1EEA ; Uppercase # L& LATIN CAPITAL LETTER U WITH HORN AND GRAVE 1EEC ; Uppercase # L& LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE 1EEE ; Uppercase # L& LATIN CAPITAL LETTER U WITH HORN AND TILDE 1EF0 ; Uppercase # L& LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW 1EF2 ; Uppercase # L& LATIN CAPITAL LETTER Y WITH GRAVE 1EF4 ; Uppercase # L& LATIN CAPITAL LETTER Y WITH DOT BELOW 1EF6 ; Uppercase # L& LATIN CAPITAL LETTER Y WITH HOOK ABOVE 1EF8 ; Uppercase # L& LATIN CAPITAL LETTER Y WITH TILDE 1EFA ; Uppercase # L& LATIN CAPITAL LETTER MIDDLE-WELSH LL 1EFC ; Uppercase # L& LATIN CAPITAL LETTER MIDDLE-WELSH V 1EFE ; Uppercase # L& LATIN CAPITAL LETTER Y WITH LOOP 1F08..1F0F ; Uppercase # L& [8] GREEK CAPITAL LETTER ALPHA WITH PSILI..GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI 1F18..1F1D ; Uppercase # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA 1F28..1F2F ; Uppercase # L& [8] GREEK CAPITAL LETTER ETA WITH PSILI..GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI 1F38..1F3F ; Uppercase # L& [8] GREEK CAPITAL LETTER IOTA WITH PSILI..GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI 1F48..1F4D ; Uppercase # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA 1F59 ; Uppercase # L& GREEK CAPITAL LETTER UPSILON WITH DASIA 1F5B ; Uppercase # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA 1F5D ; Uppercase # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA 1F5F ; Uppercase # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI 1F68..1F6F ; Uppercase # L& [8] GREEK CAPITAL LETTER OMEGA WITH PSILI..GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI 1FB8..1FBB ; Uppercase # L& [4] GREEK CAPITAL LETTER ALPHA WITH VRACHY..GREEK CAPITAL LETTER ALPHA WITH OXIA 1FC8..1FCB ; Uppercase # L& [4] GREEK CAPITAL LETTER EPSILON WITH VARIA..GREEK CAPITAL LETTER ETA WITH OXIA 1FD8..1FDB ; Uppercase # L& [4] GREEK CAPITAL LETTER IOTA WITH VRACHY..GREEK CAPITAL LETTER IOTA WITH OXIA 1FE8..1FEC ; Uppercase # L& [5] GREEK CAPITAL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA 1FF8..1FFB ; Uppercase # L& [4] GREEK CAPITAL LETTER OMICRON WITH VARIA..GREEK CAPITAL LETTER OMEGA WITH OXIA 2102 ; Uppercase # L& DOUBLE-STRUCK CAPITAL C 2107 ; Uppercase # L& EULER CONSTANT 210B..210D ; Uppercase # L& [3] SCRIPT CAPITAL H..DOUBLE-STRUCK CAPITAL H 2110..2112 ; Uppercase # L& [3] SCRIPT CAPITAL I..SCRIPT CAPITAL L 2115 ; Uppercase # L& DOUBLE-STRUCK CAPITAL N 2119..211D ; Uppercase # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R 2124 ; Uppercase # L& DOUBLE-STRUCK CAPITAL Z 2126 ; Uppercase # L& OHM SIGN 2128 ; Uppercase # L& BLACK-LETTER CAPITAL Z 212A..212D ; Uppercase # L& [4] KELVIN SIGN..BLACK-LETTER CAPITAL C 2130..2133 ; Uppercase # L& [4] SCRIPT CAPITAL E..SCRIPT CAPITAL M 213E..213F ; Uppercase # L& [2] DOUBLE-STRUCK CAPITAL GAMMA..DOUBLE-STRUCK CAPITAL PI 2145 ; Uppercase # L& DOUBLE-STRUCK ITALIC CAPITAL D 2160..216F ; Uppercase # Nl [16] ROMAN NUMERAL ONE..ROMAN NUMERAL ONE THOUSAND 2183 ; Uppercase # L& ROMAN NUMERAL REVERSED ONE HUNDRED 24B6..24CF ; Uppercase # So [26] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN CAPITAL LETTER Z 2C00..2C2E ; Uppercase # L& [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE 2C60 ; Uppercase # L& LATIN CAPITAL LETTER L WITH DOUBLE BAR 2C62..2C64 ; Uppercase # L& [3] LATIN CAPITAL LETTER L WITH MIDDLE TILDE..LATIN CAPITAL LETTER R WITH TAIL 2C67 ; Uppercase # L& LATIN CAPITAL LETTER H WITH DESCENDER 2C69 ; Uppercase # L& LATIN CAPITAL LETTER K WITH DESCENDER 2C6B ; Uppercase # L& LATIN CAPITAL LETTER Z WITH DESCENDER 2C6D..2C70 ; Uppercase # L& [4] LATIN CAPITAL LETTER ALPHA..LATIN CAPITAL LETTER TURNED ALPHA 2C72 ; Uppercase # L& LATIN CAPITAL LETTER W WITH HOOK 2C75 ; Uppercase # L& LATIN CAPITAL LETTER HALF H 2C7E..2C80 ; Uppercase # L& [3] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC CAPITAL LETTER ALFA 2C82 ; Uppercase # L& COPTIC CAPITAL LETTER VIDA 2C84 ; Uppercase # L& COPTIC CAPITAL LETTER GAMMA 2C86 ; Uppercase # L& COPTIC CAPITAL LETTER DALDA 2C88 ; Uppercase # L& COPTIC CAPITAL LETTER EIE 2C8A ; Uppercase # L& COPTIC CAPITAL LETTER SOU 2C8C ; Uppercase # L& COPTIC CAPITAL LETTER ZATA 2C8E ; Uppercase # L& COPTIC CAPITAL LETTER HATE 2C90 ; Uppercase # L& COPTIC CAPITAL LETTER THETHE 2C92 ; Uppercase # L& COPTIC CAPITAL LETTER IAUDA 2C94 ; Uppercase # L& COPTIC CAPITAL LETTER KAPA 2C96 ; Uppercase # L& COPTIC CAPITAL LETTER LAULA 2C98 ; Uppercase # L& COPTIC CAPITAL LETTER MI 2C9A ; Uppercase # L& COPTIC CAPITAL LETTER NI 2C9C ; Uppercase # L& COPTIC CAPITAL LETTER KSI 2C9E ; Uppercase # L& COPTIC CAPITAL LETTER O 2CA0 ; Uppercase # L& COPTIC CAPITAL LETTER PI 2CA2 ; Uppercase # L& COPTIC CAPITAL LETTER RO 2CA4 ; Uppercase # L& COPTIC CAPITAL LETTER SIMA 2CA6 ; Uppercase # L& COPTIC CAPITAL LETTER TAU 2CA8 ; Uppercase # L& COPTIC CAPITAL LETTER UA 2CAA ; Uppercase # L& COPTIC CAPITAL LETTER FI 2CAC ; Uppercase # L& COPTIC CAPITAL LETTER KHI 2CAE ; Uppercase # L& COPTIC CAPITAL LETTER PSI 2CB0 ; Uppercase # L& COPTIC CAPITAL LETTER OOU 2CB2 ; Uppercase # L& COPTIC CAPITAL LETTER DIALECT-P ALEF 2CB4 ; Uppercase # L& COPTIC CAPITAL LETTER OLD COPTIC AIN 2CB6 ; Uppercase # L& COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE 2CB8 ; Uppercase # L& COPTIC CAPITAL LETTER DIALECT-P KAPA 2CBA ; Uppercase # L& COPTIC CAPITAL LETTER DIALECT-P NI 2CBC ; Uppercase # L& COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI 2CBE ; Uppercase # L& COPTIC CAPITAL LETTER OLD COPTIC OOU 2CC0 ; Uppercase # L& COPTIC CAPITAL LETTER SAMPI 2CC2 ; Uppercase # L& COPTIC CAPITAL LETTER CROSSED SHEI 2CC4 ; Uppercase # L& COPTIC CAPITAL LETTER OLD COPTIC SHEI 2CC6 ; Uppercase # L& COPTIC CAPITAL LETTER OLD COPTIC ESH 2CC8 ; Uppercase # L& COPTIC CAPITAL LETTER AKHMIMIC KHEI 2CCA ; Uppercase # L& COPTIC CAPITAL LETTER DIALECT-P HORI 2CCC ; Uppercase # L& COPTIC CAPITAL LETTER OLD COPTIC HORI 2CCE ; Uppercase # L& COPTIC CAPITAL LETTER OLD COPTIC HA 2CD0 ; Uppercase # L& COPTIC CAPITAL LETTER L-SHAPED HA 2CD2 ; Uppercase # L& COPTIC CAPITAL LETTER OLD COPTIC HEI 2CD4 ; Uppercase # L& COPTIC CAPITAL LETTER OLD COPTIC HAT 2CD6 ; Uppercase # L& COPTIC CAPITAL LETTER OLD COPTIC GANGIA 2CD8 ; Uppercase # L& COPTIC CAPITAL LETTER OLD COPTIC DJA 2CDA ; Uppercase # L& COPTIC CAPITAL LETTER OLD COPTIC SHIMA 2CDC ; Uppercase # L& COPTIC CAPITAL LETTER OLD NUBIAN SHIMA 2CDE ; Uppercase # L& COPTIC CAPITAL LETTER OLD NUBIAN NGI 2CE0 ; Uppercase # L& COPTIC CAPITAL LETTER OLD NUBIAN NYI 2CE2 ; Uppercase # L& COPTIC CAPITAL LETTER OLD NUBIAN WAU 2CEB ; Uppercase # L& COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI 2CED ; Uppercase # L& COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA 2CF2 ; Uppercase # L& COPTIC CAPITAL LETTER BOHAIRIC KHEI A640 ; Uppercase # L& CYRILLIC CAPITAL LETTER ZEMLYA A642 ; Uppercase # L& CYRILLIC CAPITAL LETTER DZELO A644 ; Uppercase # L& CYRILLIC CAPITAL LETTER REVERSED DZE A646 ; Uppercase # L& CYRILLIC CAPITAL LETTER IOTA A648 ; Uppercase # L& CYRILLIC CAPITAL LETTER DJERV A64A ; Uppercase # L& CYRILLIC CAPITAL LETTER MONOGRAPH UK A64C ; Uppercase # L& CYRILLIC CAPITAL LETTER BROAD OMEGA A64E ; Uppercase # L& CYRILLIC CAPITAL LETTER NEUTRAL YER A650 ; Uppercase # L& CYRILLIC CAPITAL LETTER YERU WITH BACK YER A652 ; Uppercase # L& CYRILLIC CAPITAL LETTER IOTIFIED YAT A654 ; Uppercase # L& CYRILLIC CAPITAL LETTER REVERSED YU A656 ; Uppercase # L& CYRILLIC CAPITAL LETTER IOTIFIED A A658 ; Uppercase # L& CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS A65A ; Uppercase # L& CYRILLIC CAPITAL LETTER BLENDED YUS A65C ; Uppercase # L& CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS A65E ; Uppercase # L& CYRILLIC CAPITAL LETTER YN A660 ; Uppercase # L& CYRILLIC CAPITAL LETTER REVERSED TSE A662 ; Uppercase # L& CYRILLIC CAPITAL LETTER SOFT DE A664 ; Uppercase # L& CYRILLIC CAPITAL LETTER SOFT EL A666 ; Uppercase # L& CYRILLIC CAPITAL LETTER SOFT EM A668 ; Uppercase # L& CYRILLIC CAPITAL LETTER MONOCULAR O A66A ; Uppercase # L& CYRILLIC CAPITAL LETTER BINOCULAR O A66C ; Uppercase # L& CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O A680 ; Uppercase # L& CYRILLIC CAPITAL LETTER DWE A682 ; Uppercase # L& CYRILLIC CAPITAL LETTER DZWE A684 ; Uppercase # L& CYRILLIC CAPITAL LETTER ZHWE A686 ; Uppercase # L& CYRILLIC CAPITAL LETTER CCHE A688 ; Uppercase # L& CYRILLIC CAPITAL LETTER DZZE A68A ; Uppercase # L& CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK A68C ; Uppercase # L& CYRILLIC CAPITAL LETTER TWE A68E ; Uppercase # L& CYRILLIC CAPITAL LETTER TSWE A690 ; Uppercase # L& CYRILLIC CAPITAL LETTER TSSE A692 ; Uppercase # L& CYRILLIC CAPITAL LETTER TCHE A694 ; Uppercase # L& CYRILLIC CAPITAL LETTER HWE A696 ; Uppercase # L& CYRILLIC CAPITAL LETTER SHWE A698 ; Uppercase # L& CYRILLIC CAPITAL LETTER DOUBLE O A69A ; Uppercase # L& CYRILLIC CAPITAL LETTER CROSSED O A722 ; Uppercase # L& LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF A724 ; Uppercase # L& LATIN CAPITAL LETTER EGYPTOLOGICAL AIN A726 ; Uppercase # L& LATIN CAPITAL LETTER HENG A728 ; Uppercase # L& LATIN CAPITAL LETTER TZ A72A ; Uppercase # L& LATIN CAPITAL LETTER TRESILLO A72C ; Uppercase # L& LATIN CAPITAL LETTER CUATRILLO A72E ; Uppercase # L& LATIN CAPITAL LETTER CUATRILLO WITH COMMA A732 ; Uppercase # L& LATIN CAPITAL LETTER AA A734 ; Uppercase # L& LATIN CAPITAL LETTER AO A736 ; Uppercase # L& LATIN CAPITAL LETTER AU A738 ; Uppercase # L& LATIN CAPITAL LETTER AV A73A ; Uppercase # L& LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR A73C ; Uppercase # L& LATIN CAPITAL LETTER AY A73E ; Uppercase # L& LATIN CAPITAL LETTER REVERSED C WITH DOT A740 ; Uppercase # L& LATIN CAPITAL LETTER K WITH STROKE A742 ; Uppercase # L& LATIN CAPITAL LETTER K WITH DIAGONAL STROKE A744 ; Uppercase # L& LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE A746 ; Uppercase # L& LATIN CAPITAL LETTER BROKEN L A748 ; Uppercase # L& LATIN CAPITAL LETTER L WITH HIGH STROKE A74A ; Uppercase # L& LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY A74C ; Uppercase # L& LATIN CAPITAL LETTER O WITH LOOP A74E ; Uppercase # L& LATIN CAPITAL LETTER OO A750 ; Uppercase # L& LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER A752 ; Uppercase # L& LATIN CAPITAL LETTER P WITH FLOURISH A754 ; Uppercase # L& LATIN CAPITAL LETTER P WITH SQUIRREL TAIL A756 ; Uppercase # L& LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER A758 ; Uppercase # L& LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE A75A ; Uppercase # L& LATIN CAPITAL LETTER R ROTUNDA A75C ; Uppercase # L& LATIN CAPITAL LETTER RUM ROTUNDA A75E ; Uppercase # L& LATIN CAPITAL LETTER V WITH DIAGONAL STROKE A760 ; Uppercase # L& LATIN CAPITAL LETTER VY A762 ; Uppercase # L& LATIN CAPITAL LETTER VISIGOTHIC Z A764 ; Uppercase # L& LATIN CAPITAL LETTER THORN WITH STROKE A766 ; Uppercase # L& LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER A768 ; Uppercase # L& LATIN CAPITAL LETTER VEND A76A ; Uppercase # L& LATIN CAPITAL LETTER ET A76C ; Uppercase # L& LATIN CAPITAL LETTER IS A76E ; Uppercase # L& LATIN CAPITAL LETTER CON A779 ; Uppercase # L& LATIN CAPITAL LETTER INSULAR D A77B ; Uppercase # L& LATIN CAPITAL LETTER INSULAR F A77D..A77E ; Uppercase # L& [2] LATIN CAPITAL LETTER INSULAR G..LATIN CAPITAL LETTER TURNED INSULAR G A780 ; Uppercase # L& LATIN CAPITAL LETTER TURNED L A782 ; Uppercase # L& LATIN CAPITAL LETTER INSULAR R A784 ; Uppercase # L& LATIN CAPITAL LETTER INSULAR S A786 ; Uppercase # L& LATIN CAPITAL LETTER INSULAR T A78B ; Uppercase # L& LATIN CAPITAL LETTER SALTILLO A78D ; Uppercase # L& LATIN CAPITAL LETTER TURNED H A790 ; Uppercase # L& LATIN CAPITAL LETTER N WITH DESCENDER A792 ; Uppercase # L& LATIN CAPITAL LETTER C WITH BAR A796 ; Uppercase # L& LATIN CAPITAL LETTER B WITH FLOURISH A798 ; Uppercase # L& LATIN CAPITAL LETTER F WITH STROKE A79A ; Uppercase # L& LATIN CAPITAL LETTER VOLAPUK AE A79C ; Uppercase # L& LATIN CAPITAL LETTER VOLAPUK OE A79E ; Uppercase # L& LATIN CAPITAL LETTER VOLAPUK UE A7A0 ; Uppercase # L& LATIN CAPITAL LETTER G WITH OBLIQUE STROKE A7A2 ; Uppercase # L& LATIN CAPITAL LETTER K WITH OBLIQUE STROKE A7A4 ; Uppercase # L& LATIN CAPITAL LETTER N WITH OBLIQUE STROKE A7A6 ; Uppercase # L& LATIN CAPITAL LETTER R WITH OBLIQUE STROKE A7A8 ; Uppercase # L& LATIN CAPITAL LETTER S WITH OBLIQUE STROKE A7AA..A7AE ; Uppercase # L& [5] LATIN CAPITAL LETTER H WITH HOOK..LATIN CAPITAL LETTER SMALL CAPITAL I A7B0..A7B4 ; Uppercase # L& [5] LATIN CAPITAL LETTER TURNED K..LATIN CAPITAL LETTER BETA A7B6 ; Uppercase # L& LATIN CAPITAL LETTER OMEGA FF21..FF3A ; Uppercase # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z 10400..10427 ; Uppercase # L& [40] DESERET CAPITAL LETTER LONG I..DESERET CAPITAL LETTER EW 104B0..104D3 ; Uppercase # L& [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA 10C80..10CB2 ; Uppercase # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US 118A0..118BF ; Uppercase # L& [32] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI CAPITAL LETTER VIYO 1D400..1D419 ; Uppercase # L& [26] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL BOLD CAPITAL Z 1D434..1D44D ; Uppercase # L& [26] MATHEMATICAL ITALIC CAPITAL A..MATHEMATICAL ITALIC CAPITAL Z 1D468..1D481 ; Uppercase # L& [26] MATHEMATICAL BOLD ITALIC CAPITAL A..MATHEMATICAL BOLD ITALIC CAPITAL Z 1D49C ; Uppercase # L& MATHEMATICAL SCRIPT CAPITAL A 1D49E..1D49F ; Uppercase # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D 1D4A2 ; Uppercase # L& MATHEMATICAL SCRIPT CAPITAL G 1D4A5..1D4A6 ; Uppercase # L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K 1D4A9..1D4AC ; Uppercase # L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q 1D4AE..1D4B5 ; Uppercase # L& [8] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT CAPITAL Z 1D4D0..1D4E9 ; Uppercase # L& [26] MATHEMATICAL BOLD SCRIPT CAPITAL A..MATHEMATICAL BOLD SCRIPT CAPITAL Z 1D504..1D505 ; Uppercase # L& [2] MATHEMATICAL FRAKTUR CAPITAL A..MATHEMATICAL FRAKTUR CAPITAL B 1D507..1D50A ; Uppercase # L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G 1D50D..1D514 ; Uppercase # L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q 1D516..1D51C ; Uppercase # L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y 1D538..1D539 ; Uppercase # L& [2] MATHEMATICAL DOUBLE-STRUCK CAPITAL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B 1D53B..1D53E ; Uppercase # L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G 1D540..1D544 ; Uppercase # L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M 1D546 ; Uppercase # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O 1D54A..1D550 ; Uppercase # L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y 1D56C..1D585 ; Uppercase # L& [26] MATHEMATICAL BOLD FRAKTUR CAPITAL A..MATHEMATICAL BOLD FRAKTUR CAPITAL Z 1D5A0..1D5B9 ; Uppercase # L& [26] MATHEMATICAL SANS-SERIF CAPITAL A..MATHEMATICAL SANS-SERIF CAPITAL Z 1D5D4..1D5ED ; Uppercase # L& [26] MATHEMATICAL SANS-SERIF BOLD CAPITAL A..MATHEMATICAL SANS-SERIF BOLD CAPITAL Z 1D608..1D621 ; Uppercase # L& [26] MATHEMATICAL SANS-SERIF ITALIC CAPITAL A..MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z 1D63C..1D655 ; Uppercase # L& [26] MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z 1D670..1D689 ; Uppercase # L& [26] MATHEMATICAL MONOSPACE CAPITAL A..MATHEMATICAL MONOSPACE CAPITAL Z 1D6A8..1D6C0 ; Uppercase # L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA 1D6E2..1D6FA ; Uppercase # L& [25] MATHEMATICAL ITALIC CAPITAL ALPHA..MATHEMATICAL ITALIC CAPITAL OMEGA 1D71C..1D734 ; Uppercase # L& [25] MATHEMATICAL BOLD ITALIC CAPITAL ALPHA..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA 1D756..1D76E ; Uppercase # L& [25] MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA 1D790..1D7A8 ; Uppercase # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA 1D7CA ; Uppercase # L& MATHEMATICAL BOLD CAPITAL DIGAMMA 1E900..1E921 ; Uppercase # L& [34] ADLAM CAPITAL LETTER ALIF..ADLAM CAPITAL LETTER SHA 1F130..1F149 ; Uppercase # So [26] SQUARED LATIN CAPITAL LETTER A..SQUARED LATIN CAPITAL LETTER Z 1F150..1F169 ; Uppercase # So [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z 1F170..1F189 ; Uppercase # So [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z # Total code points: 1822 # ================================================ # Derived Property: Cased (Cased) # As defined by Unicode Standard Definition D135 # C has the Lowercase or Uppercase property or has a General_Category value of Titlecase_Letter. 0041..005A ; Cased # L& [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z 0061..007A ; Cased # L& [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z 00AA ; Cased # Lo FEMININE ORDINAL INDICATOR 00B5 ; Cased # L& MICRO SIGN 00BA ; Cased # Lo MASCULINE ORDINAL INDICATOR 00C0..00D6 ; Cased # L& [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS 00D8..00F6 ; Cased # L& [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS 00F8..01BA ; Cased # L& [195] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER EZH WITH TAIL 01BC..01BF ; Cased # L& [4] LATIN CAPITAL LETTER TONE FIVE..LATIN LETTER WYNN 01C4..0293 ; Cased # L& [208] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER EZH WITH CURL 0295..02AF ; Cased # L& [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL 02B0..02B8 ; Cased # Lm [9] MODIFIER LETTER SMALL H..MODIFIER LETTER SMALL Y 02C0..02C1 ; Cased # Lm [2] MODIFIER LETTER GLOTTAL STOP..MODIFIER LETTER REVERSED GLOTTAL STOP 02E0..02E4 ; Cased # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP 0345 ; Cased # Mn COMBINING GREEK YPOGEGRAMMENI 0370..0373 ; Cased # L& [4] GREEK CAPITAL LETTER HETA..GREEK SMALL LETTER ARCHAIC SAMPI 0376..0377 ; Cased # L& [2] GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA..GREEK SMALL LETTER PAMPHYLIAN DIGAMMA 037A ; Cased # Lm GREEK YPOGEGRAMMENI 037B..037D ; Cased # L& [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL 037F ; Cased # L& GREEK CAPITAL LETTER YOT 0386 ; Cased # L& GREEK CAPITAL LETTER ALPHA WITH TONOS 0388..038A ; Cased # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS 038C ; Cased # L& GREEK CAPITAL LETTER OMICRON WITH TONOS 038E..03A1 ; Cased # L& [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO 03A3..03F5 ; Cased # L& [83] GREEK CAPITAL LETTER SIGMA..GREEK LUNATE EPSILON SYMBOL 03F7..0481 ; Cased # L& [139] GREEK CAPITAL LETTER SHO..CYRILLIC SMALL LETTER KOPPA 048A..052F ; Cased # L& [166] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER EL WITH DESCENDER 0531..0556 ; Cased # L& [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH 0561..0587 ; Cased # L& [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN 10A0..10C5 ; Cased # L& [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE 10C7 ; Cased # L& GEORGIAN CAPITAL LETTER YN 10CD ; Cased # L& GEORGIAN CAPITAL LETTER AEN 13A0..13F5 ; Cased # L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV 13F8..13FD ; Cased # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV 1C80..1C88 ; Cased # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK 1D00..1D2B ; Cased # L& [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL 1D2C..1D6A ; Cased # Lm [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI 1D6B..1D77 ; Cased # L& [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G 1D78 ; Cased # Lm MODIFIER LETTER CYRILLIC EN 1D79..1D9A ; Cased # L& [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK 1D9B..1DBF ; Cased # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA 1E00..1F15 ; Cased # L& [278] LATIN CAPITAL LETTER A WITH RING BELOW..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA 1F18..1F1D ; Cased # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA 1F20..1F45 ; Cased # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA 1F48..1F4D ; Cased # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA 1F50..1F57 ; Cased # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI 1F59 ; Cased # L& GREEK CAPITAL LETTER UPSILON WITH DASIA 1F5B ; Cased # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA 1F5D ; Cased # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA 1F5F..1F7D ; Cased # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA 1F80..1FB4 ; Cased # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI 1FB6..1FBC ; Cased # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI 1FBE ; Cased # L& GREEK PROSGEGRAMMENI 1FC2..1FC4 ; Cased # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI 1FC6..1FCC ; Cased # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI 1FD0..1FD3 ; Cased # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA 1FD6..1FDB ; Cased # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA 1FE0..1FEC ; Cased # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA 1FF2..1FF4 ; Cased # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI 1FF6..1FFC ; Cased # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI 2071 ; Cased # Lm SUPERSCRIPT LATIN SMALL LETTER I 207F ; Cased # Lm SUPERSCRIPT LATIN SMALL LETTER N 2090..209C ; Cased # Lm [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T 2102 ; Cased # L& DOUBLE-STRUCK CAPITAL C 2107 ; Cased # L& EULER CONSTANT 210A..2113 ; Cased # L& [10] SCRIPT SMALL G..SCRIPT SMALL L 2115 ; Cased # L& DOUBLE-STRUCK CAPITAL N 2119..211D ; Cased # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R 2124 ; Cased # L& DOUBLE-STRUCK CAPITAL Z 2126 ; Cased # L& OHM SIGN 2128 ; Cased # L& BLACK-LETTER CAPITAL Z 212A..212D ; Cased # L& [4] KELVIN SIGN..BLACK-LETTER CAPITAL C 212F..2134 ; Cased # L& [6] SCRIPT SMALL E..SCRIPT SMALL O 2139 ; Cased # L& INFORMATION SOURCE 213C..213F ; Cased # L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI 2145..2149 ; Cased # L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J 214E ; Cased # L& TURNED SMALL F 2160..217F ; Cased # Nl [32] ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND 2183..2184 ; Cased # L& [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C 24B6..24E9 ; Cased # So [52] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN SMALL LETTER Z 2C00..2C2E ; Cased # L& [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE 2C30..2C5E ; Cased # L& [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE 2C60..2C7B ; Cased # L& [28] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN LETTER SMALL CAPITAL TURNED E 2C7C..2C7D ; Cased # Lm [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V 2C7E..2CE4 ; Cased # L& [103] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC SYMBOL KAI 2CEB..2CEE ; Cased # L& [4] COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI..COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA 2CF2..2CF3 ; Cased # L& [2] COPTIC CAPITAL LETTER BOHAIRIC KHEI..COPTIC SMALL LETTER BOHAIRIC KHEI 2D00..2D25 ; Cased # L& [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE 2D27 ; Cased # L& GEORGIAN SMALL LETTER YN 2D2D ; Cased # L& GEORGIAN SMALL LETTER AEN A640..A66D ; Cased # L& [46] CYRILLIC CAPITAL LETTER ZEMLYA..CYRILLIC SMALL LETTER DOUBLE MONOCULAR O A680..A69B ; Cased # L& [28] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER CROSSED O A69C..A69D ; Cased # Lm [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN A722..A76F ; Cased # L& [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN SMALL LETTER CON A770 ; Cased # Lm MODIFIER LETTER US A771..A787 ; Cased # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T A78B..A78E ; Cased # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT A790..A7AE ; Cased # L& [31] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER SMALL CAPITAL I A7B0..A7B7 ; Cased # L& [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA A7F8..A7F9 ; Cased # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE A7FA ; Cased # L& LATIN LETTER SMALL CAPITAL TURNED M AB30..AB5A ; Cased # L& [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG AB5C..AB5F ; Cased # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK AB60..AB65 ; Cased # L& [6] LATIN SMALL LETTER SAKHA YAT..GREEK LETTER SMALL CAPITAL OMEGA AB70..ABBF ; Cased # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA FB00..FB06 ; Cased # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST FB13..FB17 ; Cased # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH FF21..FF3A ; Cased # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z FF41..FF5A ; Cased # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z 10400..1044F ; Cased # L& [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW 104B0..104D3 ; Cased # L& [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA 104D8..104FB ; Cased # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA 10C80..10CB2 ; Cased # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US 10CC0..10CF2 ; Cased # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US 118A0..118DF ; Cased # L& [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO 1D400..1D454 ; Cased # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G 1D456..1D49C ; Cased # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A 1D49E..1D49F ; Cased # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D 1D4A2 ; Cased # L& MATHEMATICAL SCRIPT CAPITAL G 1D4A5..1D4A6 ; Cased # L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K 1D4A9..1D4AC ; Cased # L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q 1D4AE..1D4B9 ; Cased # L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D 1D4BB ; Cased # L& MATHEMATICAL SCRIPT SMALL F 1D4BD..1D4C3 ; Cased # L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N 1D4C5..1D505 ; Cased # L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B 1D507..1D50A ; Cased # L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G 1D50D..1D514 ; Cased # L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q 1D516..1D51C ; Cased # L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y 1D51E..1D539 ; Cased # L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B 1D53B..1D53E ; Cased # L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G 1D540..1D544 ; Cased # L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M 1D546 ; Cased # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O 1D54A..1D550 ; Cased # L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y 1D552..1D6A5 ; Cased # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J 1D6A8..1D6C0 ; Cased # L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA 1D6C2..1D6DA ; Cased # L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA 1D6DC..1D6FA ; Cased # L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA 1D6FC..1D714 ; Cased # L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA 1D716..1D734 ; Cased # L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA 1D736..1D74E ; Cased # L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA 1D750..1D76E ; Cased # L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA 1D770..1D788 ; Cased # L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA 1D78A..1D7A8 ; Cased # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA 1D7AA..1D7C2 ; Cased # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA 1D7C4..1D7CB ; Cased # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA 1E900..1E943 ; Cased # L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA 1F130..1F149 ; Cased # So [26] SQUARED LATIN CAPITAL LETTER A..SQUARED LATIN CAPITAL LETTER Z 1F150..1F169 ; Cased # So [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z 1F170..1F189 ; Cased # So [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z # Total code points: 4105 # ================================================ # Derived Property: Case_Ignorable (CI) # As defined by Unicode Standard Definition D136 # C is defined to be case-ignorable if # Word_Break(C) = MidLetter or MidNumLet or Single_Quote, or # General_Category(C) = Nonspacing_Mark (Mn), Enclosing_Mark (Me), Format (Cf), Modifier_Letter (Lm), or Modifier_Symbol (Sk). 0027 ; Case_Ignorable # Po APOSTROPHE 002E ; Case_Ignorable # Po FULL STOP 003A ; Case_Ignorable # Po COLON 005E ; Case_Ignorable # Sk CIRCUMFLEX ACCENT 0060 ; Case_Ignorable # Sk GRAVE ACCENT 00A8 ; Case_Ignorable # Sk DIAERESIS 00AD ; Case_Ignorable # Cf SOFT HYPHEN 00AF ; Case_Ignorable # Sk MACRON 00B4 ; Case_Ignorable # Sk ACUTE ACCENT 00B7 ; Case_Ignorable # Po MIDDLE DOT 00B8 ; Case_Ignorable # Sk CEDILLA 02B0..02C1 ; Case_Ignorable # Lm [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP 02C2..02C5 ; Case_Ignorable # Sk [4] MODIFIER LETTER LEFT ARROWHEAD..MODIFIER LETTER DOWN ARROWHEAD 02C6..02D1 ; Case_Ignorable # Lm [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON 02D2..02DF ; Case_Ignorable # Sk [14] MODIFIER LETTER CENTRED RIGHT HALF RING..MODIFIER LETTER CROSS ACCENT 02E0..02E4 ; Case_Ignorable # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP 02E5..02EB ; Case_Ignorable # Sk [7] MODIFIER LETTER EXTRA-HIGH TONE BAR..MODIFIER LETTER YANG DEPARTING TONE MARK 02EC ; Case_Ignorable # Lm MODIFIER LETTER VOICING 02ED ; Case_Ignorable # Sk MODIFIER LETTER UNASPIRATED 02EE ; Case_Ignorable # Lm MODIFIER LETTER DOUBLE APOSTROPHE 02EF..02FF ; Case_Ignorable # Sk [17] MODIFIER LETTER LOW DOWN ARROWHEAD..MODIFIER LETTER LOW LEFT ARROW 0300..036F ; Case_Ignorable # Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X 0374 ; Case_Ignorable # Lm GREEK NUMERAL SIGN 0375 ; Case_Ignorable # Sk GREEK LOWER NUMERAL SIGN 037A ; Case_Ignorable # Lm GREEK YPOGEGRAMMENI 0384..0385 ; Case_Ignorable # Sk [2] GREEK TONOS..GREEK DIALYTIKA TONOS 0387 ; Case_Ignorable # Po GREEK ANO TELEIA 0483..0487 ; Case_Ignorable # Mn [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE 0488..0489 ; Case_Ignorable # Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN 0559 ; Case_Ignorable # Lm ARMENIAN MODIFIER LETTER LEFT HALF RING 0591..05BD ; Case_Ignorable # Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG 05BF ; Case_Ignorable # Mn HEBREW POINT RAFE 05C1..05C2 ; Case_Ignorable # Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT 05C4..05C5 ; Case_Ignorable # Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT 05C7 ; Case_Ignorable # Mn HEBREW POINT QAMATS QATAN 05F4 ; Case_Ignorable # Po HEBREW PUNCTUATION GERSHAYIM 0600..0605 ; Case_Ignorable # Cf [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE 0610..061A ; Case_Ignorable # Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA 061C ; Case_Ignorable # Cf ARABIC LETTER MARK 0640 ; Case_Ignorable # Lm ARABIC TATWEEL 064B..065F ; Case_Ignorable # Mn [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW 0670 ; Case_Ignorable # Mn ARABIC LETTER SUPERSCRIPT ALEF 06D6..06DC ; Case_Ignorable # Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN 06DD ; Case_Ignorable # Cf ARABIC END OF AYAH 06DF..06E4 ; Case_Ignorable # Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA 06E5..06E6 ; Case_Ignorable # Lm [2] ARABIC SMALL WAW..ARABIC SMALL YEH 06E7..06E8 ; Case_Ignorable # Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON 06EA..06ED ; Case_Ignorable # Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM 070F ; Case_Ignorable # Cf SYRIAC ABBREVIATION MARK 0711 ; Case_Ignorable # Mn SYRIAC LETTER SUPERSCRIPT ALAPH 0730..074A ; Case_Ignorable # Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH 07A6..07B0 ; Case_Ignorable # Mn [11] THAANA ABAFILI..THAANA SUKUN 07EB..07F3 ; Case_Ignorable # Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE 07F4..07F5 ; Case_Ignorable # Lm [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE 07FA ; Case_Ignorable # Lm NKO LAJANYALAN 0816..0819 ; Case_Ignorable # Mn [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH 081A ; Case_Ignorable # Lm SAMARITAN MODIFIER LETTER EPENTHETIC YUT 081B..0823 ; Case_Ignorable # Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A 0824 ; Case_Ignorable # Lm SAMARITAN MODIFIER LETTER SHORT A 0825..0827 ; Case_Ignorable # Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U 0828 ; Case_Ignorable # Lm SAMARITAN MODIFIER LETTER I 0829..082D ; Case_Ignorable # Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA 0859..085B ; Case_Ignorable # Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK 08D4..08E1 ; Case_Ignorable # Mn [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA 08E2 ; Case_Ignorable # Cf ARABIC DISPUTED END OF AYAH 08E3..0902 ; Case_Ignorable # Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA 093A ; Case_Ignorable # Mn DEVANAGARI VOWEL SIGN OE 093C ; Case_Ignorable # Mn DEVANAGARI SIGN NUKTA 0941..0948 ; Case_Ignorable # Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI 094D ; Case_Ignorable # Mn DEVANAGARI SIGN VIRAMA 0951..0957 ; Case_Ignorable # Mn [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE 0962..0963 ; Case_Ignorable # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL 0971 ; Case_Ignorable # Lm DEVANAGARI SIGN HIGH SPACING DOT 0981 ; Case_Ignorable # Mn BENGALI SIGN CANDRABINDU 09BC ; Case_Ignorable # Mn BENGALI SIGN NUKTA 09C1..09C4 ; Case_Ignorable # Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR 09CD ; Case_Ignorable # Mn BENGALI SIGN VIRAMA 09E2..09E3 ; Case_Ignorable # Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL 0A01..0A02 ; Case_Ignorable # Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI 0A3C ; Case_Ignorable # Mn GURMUKHI SIGN NUKTA 0A41..0A42 ; Case_Ignorable # Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU 0A47..0A48 ; Case_Ignorable # Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI 0A4B..0A4D ; Case_Ignorable # Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA 0A51 ; Case_Ignorable # Mn GURMUKHI SIGN UDAAT 0A70..0A71 ; Case_Ignorable # Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK 0A75 ; Case_Ignorable # Mn GURMUKHI SIGN YAKASH 0A81..0A82 ; Case_Ignorable # Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA 0ABC ; Case_Ignorable # Mn GUJARATI SIGN NUKTA 0AC1..0AC5 ; Case_Ignorable # Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E 0AC7..0AC8 ; Case_Ignorable # Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI 0ACD ; Case_Ignorable # Mn GUJARATI SIGN VIRAMA 0AE2..0AE3 ; Case_Ignorable # Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL 0B01 ; Case_Ignorable # Mn ORIYA SIGN CANDRABINDU 0B3C ; Case_Ignorable # Mn ORIYA SIGN NUKTA 0B3F ; Case_Ignorable # Mn ORIYA VOWEL SIGN I 0B41..0B44 ; Case_Ignorable # Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR 0B4D ; Case_Ignorable # Mn ORIYA SIGN VIRAMA 0B56 ; Case_Ignorable # Mn ORIYA AI LENGTH MARK 0B62..0B63 ; Case_Ignorable # Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL 0B82 ; Case_Ignorable # Mn TAMIL SIGN ANUSVARA 0BC0 ; Case_Ignorable # Mn TAMIL VOWEL SIGN II 0BCD ; Case_Ignorable # Mn TAMIL SIGN VIRAMA 0C00 ; Case_Ignorable # Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE 0C3E..0C40 ; Case_Ignorable # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II 0C46..0C48 ; Case_Ignorable # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI 0C4A..0C4D ; Case_Ignorable # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA 0C55..0C56 ; Case_Ignorable # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK 0C62..0C63 ; Case_Ignorable # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL 0C81 ; Case_Ignorable # Mn KANNADA SIGN CANDRABINDU 0CBC ; Case_Ignorable # Mn KANNADA SIGN NUKTA 0CBF ; Case_Ignorable # Mn KANNADA VOWEL SIGN I 0CC6 ; Case_Ignorable # Mn KANNADA VOWEL SIGN E 0CCC..0CCD ; Case_Ignorable # Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA 0CE2..0CE3 ; Case_Ignorable # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL 0D01 ; Case_Ignorable # Mn MALAYALAM SIGN CANDRABINDU 0D41..0D44 ; Case_Ignorable # Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR 0D4D ; Case_Ignorable # Mn MALAYALAM SIGN VIRAMA 0D62..0D63 ; Case_Ignorable # Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL 0DCA ; Case_Ignorable # Mn SINHALA SIGN AL-LAKUNA 0DD2..0DD4 ; Case_Ignorable # Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA 0DD6 ; Case_Ignorable # Mn SINHALA VOWEL SIGN DIGA PAA-PILLA 0E31 ; Case_Ignorable # Mn THAI CHARACTER MAI HAN-AKAT 0E34..0E3A ; Case_Ignorable # Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU 0E46 ; Case_Ignorable # Lm THAI CHARACTER MAIYAMOK 0E47..0E4E ; Case_Ignorable # Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN 0EB1 ; Case_Ignorable # Mn LAO VOWEL SIGN MAI KAN 0EB4..0EB9 ; Case_Ignorable # Mn [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU 0EBB..0EBC ; Case_Ignorable # Mn [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO 0EC6 ; Case_Ignorable # Lm LAO KO LA 0EC8..0ECD ; Case_Ignorable # Mn [6] LAO TONE MAI EK..LAO NIGGAHITA 0F18..0F19 ; Case_Ignorable # Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS 0F35 ; Case_Ignorable # Mn TIBETAN MARK NGAS BZUNG NYI ZLA 0F37 ; Case_Ignorable # Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS 0F39 ; Case_Ignorable # Mn TIBETAN MARK TSA -PHRU 0F71..0F7E ; Case_Ignorable # Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO 0F80..0F84 ; Case_Ignorable # Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA 0F86..0F87 ; Case_Ignorable # Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS 0F8D..0F97 ; Case_Ignorable # Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA 0F99..0FBC ; Case_Ignorable # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA 0FC6 ; Case_Ignorable # Mn TIBETAN SYMBOL PADMA GDAN 102D..1030 ; Case_Ignorable # Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU 1032..1037 ; Case_Ignorable # Mn [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW 1039..103A ; Case_Ignorable # Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT 103D..103E ; Case_Ignorable # Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA 1058..1059 ; Case_Ignorable # Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL 105E..1060 ; Case_Ignorable # Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA 1071..1074 ; Case_Ignorable # Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE 1082 ; Case_Ignorable # Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA 1085..1086 ; Case_Ignorable # Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y 108D ; Case_Ignorable # Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE 109D ; Case_Ignorable # Mn MYANMAR VOWEL SIGN AITON AI 10FC ; Case_Ignorable # Lm MODIFIER LETTER GEORGIAN NAR 135D..135F ; Case_Ignorable # Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK 1712..1714 ; Case_Ignorable # Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA 1732..1734 ; Case_Ignorable # Mn [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD 1752..1753 ; Case_Ignorable # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U 1772..1773 ; Case_Ignorable # Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U 17B4..17B5 ; Case_Ignorable # Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA 17B7..17BD ; Case_Ignorable # Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA 17C6 ; Case_Ignorable # Mn KHMER SIGN NIKAHIT 17C9..17D3 ; Case_Ignorable # Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT 17D7 ; Case_Ignorable # Lm KHMER SIGN LEK TOO 17DD ; Case_Ignorable # Mn KHMER SIGN ATTHACAN 180B..180D ; Case_Ignorable # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE 180E ; Case_Ignorable # Cf MONGOLIAN VOWEL SEPARATOR 1843 ; Case_Ignorable # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN 1885..1886 ; Case_Ignorable # Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA 18A9 ; Case_Ignorable # Mn MONGOLIAN LETTER ALI GALI DAGALGA 1920..1922 ; Case_Ignorable # Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U 1927..1928 ; Case_Ignorable # Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O 1932 ; Case_Ignorable # Mn LIMBU SMALL LETTER ANUSVARA 1939..193B ; Case_Ignorable # Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I 1A17..1A18 ; Case_Ignorable # Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U 1A1B ; Case_Ignorable # Mn BUGINESE VOWEL SIGN AE 1A56 ; Case_Ignorable # Mn TAI THAM CONSONANT SIGN MEDIAL LA 1A58..1A5E ; Case_Ignorable # Mn [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA 1A60 ; Case_Ignorable # Mn TAI THAM SIGN SAKOT 1A62 ; Case_Ignorable # Mn TAI THAM VOWEL SIGN MAI SAT 1A65..1A6C ; Case_Ignorable # Mn [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW 1A73..1A7C ; Case_Ignorable # Mn [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN 1A7F ; Case_Ignorable # Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT 1AA7 ; Case_Ignorable # Lm TAI THAM SIGN MAI YAMOK 1AB0..1ABD ; Case_Ignorable # Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW 1ABE ; Case_Ignorable # Me COMBINING PARENTHESES OVERLAY 1B00..1B03 ; Case_Ignorable # Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG 1B34 ; Case_Ignorable # Mn BALINESE SIGN REREKAN 1B36..1B3A ; Case_Ignorable # Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA 1B3C ; Case_Ignorable # Mn BALINESE VOWEL SIGN LA LENGA 1B42 ; Case_Ignorable # Mn BALINESE VOWEL SIGN PEPET 1B6B..1B73 ; Case_Ignorable # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG 1B80..1B81 ; Case_Ignorable # Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR 1BA2..1BA5 ; Case_Ignorable # Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU 1BA8..1BA9 ; Case_Ignorable # Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG 1BAB..1BAD ; Case_Ignorable # Mn [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA 1BE6 ; Case_Ignorable # Mn BATAK SIGN TOMPI 1BE8..1BE9 ; Case_Ignorable # Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE 1BED ; Case_Ignorable # Mn BATAK VOWEL SIGN KARO O 1BEF..1BF1 ; Case_Ignorable # Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H 1C2C..1C33 ; Case_Ignorable # Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T 1C36..1C37 ; Case_Ignorable # Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA 1C78..1C7D ; Case_Ignorable # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD 1CD0..1CD2 ; Case_Ignorable # Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA 1CD4..1CE0 ; Case_Ignorable # Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA 1CE2..1CE8 ; Case_Ignorable # Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL 1CED ; Case_Ignorable # Mn VEDIC SIGN TIRYAK 1CF4 ; Case_Ignorable # Mn VEDIC TONE CANDRA ABOVE 1CF8..1CF9 ; Case_Ignorable # Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE 1D2C..1D6A ; Case_Ignorable # Lm [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI 1D78 ; Case_Ignorable # Lm MODIFIER LETTER CYRILLIC EN 1D9B..1DBF ; Case_Ignorable # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA 1DC0..1DF5 ; Case_Ignorable # Mn [54] COMBINING DOTTED GRAVE ACCENT..COMBINING UP TACK ABOVE 1DFB..1DFF ; Case_Ignorable # Mn [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW 1FBD ; Case_Ignorable # Sk GREEK KORONIS 1FBF..1FC1 ; Case_Ignorable # Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI 1FCD..1FCF ; Case_Ignorable # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI 1FDD..1FDF ; Case_Ignorable # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI 1FED..1FEF ; Case_Ignorable # Sk [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA 1FFD..1FFE ; Case_Ignorable # Sk [2] GREEK OXIA..GREEK DASIA 200B..200F ; Case_Ignorable # Cf [5] ZERO WIDTH SPACE..RIGHT-TO-LEFT MARK 2018 ; Case_Ignorable # Pi LEFT SINGLE QUOTATION MARK 2019 ; Case_Ignorable # Pf RIGHT SINGLE QUOTATION MARK 2024 ; Case_Ignorable # Po ONE DOT LEADER 2027 ; Case_Ignorable # Po HYPHENATION POINT 202A..202E ; Case_Ignorable # Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE 2060..2064 ; Case_Ignorable # Cf [5] WORD JOINER..INVISIBLE PLUS 2066..206F ; Case_Ignorable # Cf [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES 2071 ; Case_Ignorable # Lm SUPERSCRIPT LATIN SMALL LETTER I 207F ; Case_Ignorable # Lm SUPERSCRIPT LATIN SMALL LETTER N 2090..209C ; Case_Ignorable # Lm [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T 20D0..20DC ; Case_Ignorable # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE 20DD..20E0 ; Case_Ignorable # Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH 20E1 ; Case_Ignorable # Mn COMBINING LEFT RIGHT ARROW ABOVE 20E2..20E4 ; Case_Ignorable # Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE 20E5..20F0 ; Case_Ignorable # Mn [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE 2C7C..2C7D ; Case_Ignorable # Lm [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V 2CEF..2CF1 ; Case_Ignorable # Mn [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS 2D6F ; Case_Ignorable # Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK 2D7F ; Case_Ignorable # Mn TIFINAGH CONSONANT JOINER 2DE0..2DFF ; Case_Ignorable # Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS 2E2F ; Case_Ignorable # Lm VERTICAL TILDE 3005 ; Case_Ignorable # Lm IDEOGRAPHIC ITERATION MARK 302A..302D ; Case_Ignorable # Mn [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK 3031..3035 ; Case_Ignorable # Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF 303B ; Case_Ignorable # Lm VERTICAL IDEOGRAPHIC ITERATION MARK 3099..309A ; Case_Ignorable # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK 309B..309C ; Case_Ignorable # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK 309D..309E ; Case_Ignorable # Lm [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK 30FC..30FE ; Case_Ignorable # Lm [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK A015 ; Case_Ignorable # Lm YI SYLLABLE WU A4F8..A4FD ; Case_Ignorable # Lm [6] LISU LETTER TONE MYA TI..LISU LETTER TONE MYA JEU A60C ; Case_Ignorable # Lm VAI SYLLABLE LENGTHENER A66F ; Case_Ignorable # Mn COMBINING CYRILLIC VZMET A670..A672 ; Case_Ignorable # Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN A674..A67D ; Case_Ignorable # Mn [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK A67F ; Case_Ignorable # Lm CYRILLIC PAYEROK A69C..A69D ; Case_Ignorable # Lm [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN A69E..A69F ; Case_Ignorable # Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E A6F0..A6F1 ; Case_Ignorable # Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS A700..A716 ; Case_Ignorable # Sk [23] MODIFIER LETTER CHINESE TONE YIN PING..MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR A717..A71F ; Case_Ignorable # Lm [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK A720..A721 ; Case_Ignorable # Sk [2] MODIFIER LETTER STRESS AND HIGH TONE..MODIFIER LETTER STRESS AND LOW TONE A770 ; Case_Ignorable # Lm MODIFIER LETTER US A788 ; Case_Ignorable # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT A789..A78A ; Case_Ignorable # Sk [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN A7F8..A7F9 ; Case_Ignorable # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE A802 ; Case_Ignorable # Mn SYLOTI NAGRI SIGN DVISVARA A806 ; Case_Ignorable # Mn SYLOTI NAGRI SIGN HASANTA A80B ; Case_Ignorable # Mn SYLOTI NAGRI SIGN ANUSVARA A825..A826 ; Case_Ignorable # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E A8C4..A8C5 ; Case_Ignorable # Mn [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU A8E0..A8F1 ; Case_Ignorable # Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA A926..A92D ; Case_Ignorable # Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU A947..A951 ; Case_Ignorable # Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R A980..A982 ; Case_Ignorable # Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR A9B3 ; Case_Ignorable # Mn JAVANESE SIGN CECAK TELU A9B6..A9B9 ; Case_Ignorable # Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT A9BC ; Case_Ignorable # Mn JAVANESE VOWEL SIGN PEPET A9CF ; Case_Ignorable # Lm JAVANESE PANGRANGKEP A9E5 ; Case_Ignorable # Mn MYANMAR SIGN SHAN SAW A9E6 ; Case_Ignorable # Lm MYANMAR MODIFIER LETTER SHAN REDUPLICATION AA29..AA2E ; Case_Ignorable # Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE AA31..AA32 ; Case_Ignorable # Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE AA35..AA36 ; Case_Ignorable # Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA AA43 ; Case_Ignorable # Mn CHAM CONSONANT SIGN FINAL NG AA4C ; Case_Ignorable # Mn CHAM CONSONANT SIGN FINAL M AA70 ; Case_Ignorable # Lm MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION AA7C ; Case_Ignorable # Mn MYANMAR SIGN TAI LAING TONE-2 AAB0 ; Case_Ignorable # Mn TAI VIET MAI KANG AAB2..AAB4 ; Case_Ignorable # Mn [3] TAI VIET VOWEL I..TAI VIET VOWEL U AAB7..AAB8 ; Case_Ignorable # Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA AABE..AABF ; Case_Ignorable # Mn [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK AAC1 ; Case_Ignorable # Mn TAI VIET TONE MAI THO AADD ; Case_Ignorable # Lm TAI VIET SYMBOL SAM AAEC..AAED ; Case_Ignorable # Mn [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI AAF3..AAF4 ; Case_Ignorable # Lm [2] MEETEI MAYEK SYLLABLE REPETITION MARK..MEETEI MAYEK WORD REPETITION MARK AAF6 ; Case_Ignorable # Mn MEETEI MAYEK VIRAMA AB5B ; Case_Ignorable # Sk MODIFIER BREVE WITH INVERTED BREVE AB5C..AB5F ; Case_Ignorable # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK ABE5 ; Case_Ignorable # Mn MEETEI MAYEK VOWEL SIGN ANAP ABE8 ; Case_Ignorable # Mn MEETEI MAYEK VOWEL SIGN UNAP ABED ; Case_Ignorable # Mn MEETEI MAYEK APUN IYEK FB1E ; Case_Ignorable # Mn HEBREW POINT JUDEO-SPANISH VARIKA FBB2..FBC1 ; Case_Ignorable # Sk [16] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL SMALL TAH BELOW FE00..FE0F ; Case_Ignorable # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 FE13 ; Case_Ignorable # Po PRESENTATION FORM FOR VERTICAL COLON FE20..FE2F ; Case_Ignorable # Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF FE52 ; Case_Ignorable # Po SMALL FULL STOP FE55 ; Case_Ignorable # Po SMALL COLON FEFF ; Case_Ignorable # Cf ZERO WIDTH NO-BREAK SPACE FF07 ; Case_Ignorable # Po FULLWIDTH APOSTROPHE FF0E ; Case_Ignorable # Po FULLWIDTH FULL STOP FF1A ; Case_Ignorable # Po FULLWIDTH COLON FF3E ; Case_Ignorable # Sk FULLWIDTH CIRCUMFLEX ACCENT FF40 ; Case_Ignorable # Sk FULLWIDTH GRAVE ACCENT FF70 ; Case_Ignorable # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK FF9E..FF9F ; Case_Ignorable # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK FFE3 ; Case_Ignorable # Sk FULLWIDTH MACRON FFF9..FFFB ; Case_Ignorable # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR 101FD ; Case_Ignorable # Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE 102E0 ; Case_Ignorable # Mn COPTIC EPACT THOUSANDS MARK 10376..1037A ; Case_Ignorable # Mn [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII 10A01..10A03 ; Case_Ignorable # Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R 10A05..10A06 ; Case_Ignorable # Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O 10A0C..10A0F ; Case_Ignorable # Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA 10A38..10A3A ; Case_Ignorable # Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW 10A3F ; Case_Ignorable # Mn KHAROSHTHI VIRAMA 10AE5..10AE6 ; Case_Ignorable # Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW 11001 ; Case_Ignorable # Mn BRAHMI SIGN ANUSVARA 11038..11046 ; Case_Ignorable # Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA 1107F..11081 ; Case_Ignorable # Mn [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA 110B3..110B6 ; Case_Ignorable # Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI 110B9..110BA ; Case_Ignorable # Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA 110BD ; Case_Ignorable # Cf KAITHI NUMBER SIGN 11100..11102 ; Case_Ignorable # Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA 11127..1112B ; Case_Ignorable # Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU 1112D..11134 ; Case_Ignorable # Mn [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA 11173 ; Case_Ignorable # Mn MAHAJANI SIGN NUKTA 11180..11181 ; Case_Ignorable # Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA 111B6..111BE ; Case_Ignorable # Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O 111CA..111CC ; Case_Ignorable # Mn [3] SHARADA SIGN NUKTA..SHARADA EXTRA SHORT VOWEL MARK 1122F..11231 ; Case_Ignorable # Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI 11234 ; Case_Ignorable # Mn KHOJKI SIGN ANUSVARA 11236..11237 ; Case_Ignorable # Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA 1123E ; Case_Ignorable # Mn KHOJKI SIGN SUKUN 112DF ; Case_Ignorable # Mn KHUDAWADI SIGN ANUSVARA 112E3..112EA ; Case_Ignorable # Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA 11300..11301 ; Case_Ignorable # Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU 1133C ; Case_Ignorable # Mn GRANTHA SIGN NUKTA 11340 ; Case_Ignorable # Mn GRANTHA VOWEL SIGN II 11366..1136C ; Case_Ignorable # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX 11370..11374 ; Case_Ignorable # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA 11438..1143F ; Case_Ignorable # Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI 11442..11444 ; Case_Ignorable # Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA 11446 ; Case_Ignorable # Mn NEWA SIGN NUKTA 114B3..114B8 ; Case_Ignorable # Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL 114BA ; Case_Ignorable # Mn TIRHUTA VOWEL SIGN SHORT E 114BF..114C0 ; Case_Ignorable # Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA 114C2..114C3 ; Case_Ignorable # Mn [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA 115B2..115B5 ; Case_Ignorable # Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR 115BC..115BD ; Case_Ignorable # Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA 115BF..115C0 ; Case_Ignorable # Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA 115DC..115DD ; Case_Ignorable # Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU 11633..1163A ; Case_Ignorable # Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI 1163D ; Case_Ignorable # Mn MODI SIGN ANUSVARA 1163F..11640 ; Case_Ignorable # Mn [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA 116AB ; Case_Ignorable # Mn TAKRI SIGN ANUSVARA 116AD ; Case_Ignorable # Mn TAKRI VOWEL SIGN AA 116B0..116B5 ; Case_Ignorable # Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU 116B7 ; Case_Ignorable # Mn TAKRI SIGN NUKTA 1171D..1171F ; Case_Ignorable # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA 11722..11725 ; Case_Ignorable # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU 11727..1172B ; Case_Ignorable # Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER 11C30..11C36 ; Case_Ignorable # Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L 11C3C..11C3D ; Case_Ignorable # Mn [2] BHAIKSUKI SIGN CANDRABINDU..BHAIKSUKI SIGN ANUSVARA 11C3F ; Case_Ignorable # Mn BHAIKSUKI SIGN VIRAMA 11C92..11CA7 ; Case_Ignorable # Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA 11CA9..11CB0 ; Case_Ignorable # Mn [8] MARCHEN SUBJOINED LETTER YA..MARCHEN VOWEL SIGN AA 11CB2..11CB3 ; Case_Ignorable # Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E 11CB5..11CB6 ; Case_Ignorable # Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU 16AF0..16AF4 ; Case_Ignorable # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE 16B30..16B36 ; Case_Ignorable # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM 16B40..16B43 ; Case_Ignorable # Lm [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM 16F8F..16F92 ; Case_Ignorable # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW 16F93..16F9F ; Case_Ignorable # Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8 16FE0 ; Case_Ignorable # Lm TANGUT ITERATION MARK 1BC9D..1BC9E ; Case_Ignorable # Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK 1BCA0..1BCA3 ; Case_Ignorable # Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP 1D167..1D169 ; Case_Ignorable # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3 1D173..1D17A ; Case_Ignorable # Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE 1D17B..1D182 ; Case_Ignorable # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE 1D185..1D18B ; Case_Ignorable # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE 1D1AA..1D1AD ; Case_Ignorable # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO 1D242..1D244 ; Case_Ignorable # Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME 1DA00..1DA36 ; Case_Ignorable # Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN 1DA3B..1DA6C ; Case_Ignorable # Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT 1DA75 ; Case_Ignorable # Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS 1DA84 ; Case_Ignorable # Mn SIGNWRITING LOCATION HEAD NECK 1DA9B..1DA9F ; Case_Ignorable # Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 1DAA1..1DAAF ; Case_Ignorable # Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 1E000..1E006 ; Case_Ignorable # Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE 1E008..1E018 ; Case_Ignorable # Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU 1E01B..1E021 ; Case_Ignorable # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI 1E023..1E024 ; Case_Ignorable # Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS 1E026..1E02A ; Case_Ignorable # Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA 1E8D0..1E8D6 ; Case_Ignorable # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS 1E944..1E94A ; Case_Ignorable # Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA 1F3FB..1F3FF ; Case_Ignorable # Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6 E0001 ; Case_Ignorable # Cf LANGUAGE TAG E0020..E007F ; Case_Ignorable # Cf [96] TAG SPACE..CANCEL TAG E0100..E01EF ; Case_Ignorable # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 # Total code points: 2237 # ================================================ # Derived Property: Changes_When_Lowercased (CWL) # Characters whose normalized forms are not stable under a toLowercase mapping. # For more information, see D139 in Section 3.13, "Default Case Algorithms". # Changes_When_Lowercased(X) is true when toLowercase(toNFD(X)) != toNFD(X) 0041..005A ; Changes_When_Lowercased # L& [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z 00C0..00D6 ; Changes_When_Lowercased # L& [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS 00D8..00DE ; Changes_When_Lowercased # L& [7] LATIN CAPITAL LETTER O WITH STROKE..LATIN CAPITAL LETTER THORN 0100 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER A WITH MACRON 0102 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER A WITH BREVE 0104 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER A WITH OGONEK 0106 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER C WITH ACUTE 0108 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER C WITH CIRCUMFLEX 010A ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER C WITH DOT ABOVE 010C ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER C WITH CARON 010E ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER D WITH CARON 0110 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER D WITH STROKE 0112 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER E WITH MACRON 0114 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER E WITH BREVE 0116 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER E WITH DOT ABOVE 0118 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER E WITH OGONEK 011A ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER E WITH CARON 011C ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER G WITH CIRCUMFLEX 011E ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER G WITH BREVE 0120 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER G WITH DOT ABOVE 0122 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER G WITH CEDILLA 0124 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER H WITH CIRCUMFLEX 0126 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER H WITH STROKE 0128 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER I WITH TILDE 012A ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER I WITH MACRON 012C ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER I WITH BREVE 012E ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER I WITH OGONEK 0130 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER I WITH DOT ABOVE 0132 ; Changes_When_Lowercased # L& LATIN CAPITAL LIGATURE IJ 0134 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER J WITH CIRCUMFLEX 0136 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER K WITH CEDILLA 0139 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER L WITH ACUTE 013B ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER L WITH CEDILLA 013D ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER L WITH CARON 013F ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER L WITH MIDDLE DOT 0141 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER L WITH STROKE 0143 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER N WITH ACUTE 0145 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER N WITH CEDILLA 0147 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER N WITH CARON 014A ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER ENG 014C ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER O WITH MACRON 014E ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER O WITH BREVE 0150 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER O WITH DOUBLE ACUTE 0152 ; Changes_When_Lowercased # L& LATIN CAPITAL LIGATURE OE 0154 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER R WITH ACUTE 0156 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER R WITH CEDILLA 0158 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER R WITH CARON 015A ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER S WITH ACUTE 015C ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER S WITH CIRCUMFLEX 015E ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER S WITH CEDILLA 0160 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER S WITH CARON 0162 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER T WITH CEDILLA 0164 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER T WITH CARON 0166 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER T WITH STROKE 0168 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER U WITH TILDE 016A ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER U WITH MACRON 016C ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER U WITH BREVE 016E ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER U WITH RING ABOVE 0170 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER U WITH DOUBLE ACUTE 0172 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER U WITH OGONEK 0174 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER W WITH CIRCUMFLEX 0176 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER Y WITH CIRCUMFLEX 0178..0179 ; Changes_When_Lowercased # L& [2] LATIN CAPITAL LETTER Y WITH DIAERESIS..LATIN CAPITAL LETTER Z WITH ACUTE 017B ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER Z WITH DOT ABOVE 017D ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER Z WITH CARON 0181..0182 ; Changes_When_Lowercased # L& [2] LATIN CAPITAL LETTER B WITH HOOK..LATIN CAPITAL LETTER B WITH TOPBAR 0184 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER TONE SIX 0186..0187 ; Changes_When_Lowercased # L& [2] LATIN CAPITAL LETTER OPEN O..LATIN CAPITAL LETTER C WITH HOOK 0189..018B ; Changes_When_Lowercased # L& [3] LATIN CAPITAL LETTER AFRICAN D..LATIN CAPITAL LETTER D WITH TOPBAR 018E..0191 ; Changes_When_Lowercased # L& [4] LATIN CAPITAL LETTER REVERSED E..LATIN CAPITAL LETTER F WITH HOOK 0193..0194 ; Changes_When_Lowercased # L& [2] LATIN CAPITAL LETTER G WITH HOOK..LATIN CAPITAL LETTER GAMMA 0196..0198 ; Changes_When_Lowercased # L& [3] LATIN CAPITAL LETTER IOTA..LATIN CAPITAL LETTER K WITH HOOK 019C..019D ; Changes_When_Lowercased # L& [2] LATIN CAPITAL LETTER TURNED M..LATIN CAPITAL LETTER N WITH LEFT HOOK 019F..01A0 ; Changes_When_Lowercased # L& [2] LATIN CAPITAL LETTER O WITH MIDDLE TILDE..LATIN CAPITAL LETTER O WITH HORN 01A2 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER OI 01A4 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER P WITH HOOK 01A6..01A7 ; Changes_When_Lowercased # L& [2] LATIN LETTER YR..LATIN CAPITAL LETTER TONE TWO 01A9 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER ESH 01AC ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER T WITH HOOK 01AE..01AF ; Changes_When_Lowercased # L& [2] LATIN CAPITAL LETTER T WITH RETROFLEX HOOK..LATIN CAPITAL LETTER U WITH HORN 01B1..01B3 ; Changes_When_Lowercased # L& [3] LATIN CAPITAL LETTER UPSILON..LATIN CAPITAL LETTER Y WITH HOOK 01B5 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER Z WITH STROKE 01B7..01B8 ; Changes_When_Lowercased # L& [2] LATIN CAPITAL LETTER EZH..LATIN CAPITAL LETTER EZH REVERSED 01BC ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER TONE FIVE 01C4..01C5 ; Changes_When_Lowercased # L& [2] LATIN CAPITAL LETTER DZ WITH CARON..LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON 01C7..01C8 ; Changes_When_Lowercased # L& [2] LATIN CAPITAL LETTER LJ..LATIN CAPITAL LETTER L WITH SMALL LETTER J 01CA..01CB ; Changes_When_Lowercased # L& [2] LATIN CAPITAL LETTER NJ..LATIN CAPITAL LETTER N WITH SMALL LETTER J 01CD ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER A WITH CARON 01CF ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER I WITH CARON 01D1 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER O WITH CARON 01D3 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER U WITH CARON 01D5 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON 01D7 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE 01D9 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON 01DB ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE 01DE ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON 01E0 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON 01E2 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER AE WITH MACRON 01E4 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER G WITH STROKE 01E6 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER G WITH CARON 01E8 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER K WITH CARON 01EA ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER O WITH OGONEK 01EC ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER O WITH OGONEK AND MACRON 01EE ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER EZH WITH CARON 01F1..01F2 ; Changes_When_Lowercased # L& [2] LATIN CAPITAL LETTER DZ..LATIN CAPITAL LETTER D WITH SMALL LETTER Z 01F4 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER G WITH ACUTE 01F6..01F8 ; Changes_When_Lowercased # L& [3] LATIN CAPITAL LETTER HWAIR..LATIN CAPITAL LETTER N WITH GRAVE 01FA ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE 01FC ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER AE WITH ACUTE 01FE ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER O WITH STROKE AND ACUTE 0200 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER A WITH DOUBLE GRAVE 0202 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER A WITH INVERTED BREVE 0204 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER E WITH DOUBLE GRAVE 0206 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER E WITH INVERTED BREVE 0208 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER I WITH DOUBLE GRAVE 020A ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER I WITH INVERTED BREVE 020C ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER O WITH DOUBLE GRAVE 020E ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER O WITH INVERTED BREVE 0210 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER R WITH DOUBLE GRAVE 0212 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER R WITH INVERTED BREVE 0214 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER U WITH DOUBLE GRAVE 0216 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER U WITH INVERTED BREVE 0218 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER S WITH COMMA BELOW 021A ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER T WITH COMMA BELOW 021C ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER YOGH 021E ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER H WITH CARON 0220 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER N WITH LONG RIGHT LEG 0222 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER OU 0224 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER Z WITH HOOK 0226 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER A WITH DOT ABOVE 0228 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER E WITH CEDILLA 022A ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON 022C ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER O WITH TILDE AND MACRON 022E ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER O WITH DOT ABOVE 0230 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON 0232 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER Y WITH MACRON 023A..023B ; Changes_When_Lowercased # L& [2] LATIN CAPITAL LETTER A WITH STROKE..LATIN CAPITAL LETTER C WITH STROKE 023D..023E ; Changes_When_Lowercased # L& [2] LATIN CAPITAL LETTER L WITH BAR..LATIN CAPITAL LETTER T WITH DIAGONAL STROKE 0241 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER GLOTTAL STOP 0243..0246 ; Changes_When_Lowercased # L& [4] LATIN CAPITAL LETTER B WITH STROKE..LATIN CAPITAL LETTER E WITH STROKE 0248 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER J WITH STROKE 024A ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL 024C ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER R WITH STROKE 024E ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER Y WITH STROKE 0370 ; Changes_When_Lowercased # L& GREEK CAPITAL LETTER HETA 0372 ; Changes_When_Lowercased # L& GREEK CAPITAL LETTER ARCHAIC SAMPI 0376 ; Changes_When_Lowercased # L& GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA 037F ; Changes_When_Lowercased # L& GREEK CAPITAL LETTER YOT 0386 ; Changes_When_Lowercased # L& GREEK CAPITAL LETTER ALPHA WITH TONOS 0388..038A ; Changes_When_Lowercased # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS 038C ; Changes_When_Lowercased # L& GREEK CAPITAL LETTER OMICRON WITH TONOS 038E..038F ; Changes_When_Lowercased # L& [2] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER OMEGA WITH TONOS 0391..03A1 ; Changes_When_Lowercased # L& [17] GREEK CAPITAL LETTER ALPHA..GREEK CAPITAL LETTER RHO 03A3..03AB ; Changes_When_Lowercased # L& [9] GREEK CAPITAL LETTER SIGMA..GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA 03CF ; Changes_When_Lowercased # L& GREEK CAPITAL KAI SYMBOL 03D8 ; Changes_When_Lowercased # L& GREEK LETTER ARCHAIC KOPPA 03DA ; Changes_When_Lowercased # L& GREEK LETTER STIGMA 03DC ; Changes_When_Lowercased # L& GREEK LETTER DIGAMMA 03DE ; Changes_When_Lowercased # L& GREEK LETTER KOPPA 03E0 ; Changes_When_Lowercased # L& GREEK LETTER SAMPI 03E2 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER SHEI 03E4 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER FEI 03E6 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER KHEI 03E8 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER HORI 03EA ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER GANGIA 03EC ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER SHIMA 03EE ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER DEI 03F4 ; Changes_When_Lowercased # L& GREEK CAPITAL THETA SYMBOL 03F7 ; Changes_When_Lowercased # L& GREEK CAPITAL LETTER SHO 03F9..03FA ; Changes_When_Lowercased # L& [2] GREEK CAPITAL LUNATE SIGMA SYMBOL..GREEK CAPITAL LETTER SAN 03FD..042F ; Changes_When_Lowercased # L& [51] GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL..CYRILLIC CAPITAL LETTER YA 0460 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER OMEGA 0462 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER YAT 0464 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER IOTIFIED E 0466 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER LITTLE YUS 0468 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS 046A ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER BIG YUS 046C ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS 046E ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER KSI 0470 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER PSI 0472 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER FITA 0474 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER IZHITSA 0476 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT 0478 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER UK 047A ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER ROUND OMEGA 047C ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER OMEGA WITH TITLO 047E ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER OT 0480 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER KOPPA 048A ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER SHORT I WITH TAIL 048C ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER SEMISOFT SIGN 048E ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER ER WITH TICK 0490 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER GHE WITH UPTURN 0492 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER GHE WITH STROKE 0494 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK 0496 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER 0498 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER ZE WITH DESCENDER 049A ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER KA WITH DESCENDER 049C ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE 049E ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER KA WITH STROKE 04A0 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER BASHKIR KA 04A2 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER EN WITH DESCENDER 04A4 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LIGATURE EN GHE 04A6 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK 04A8 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER ABKHASIAN HA 04AA ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER ES WITH DESCENDER 04AC ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER TE WITH DESCENDER 04AE ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER STRAIGHT U 04B0 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE 04B2 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER HA WITH DESCENDER 04B4 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LIGATURE TE TSE 04B6 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER CHE WITH DESCENDER 04B8 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE 04BA ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER SHHA 04BC ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER ABKHASIAN CHE 04BE ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER 04C0..04C1 ; Changes_When_Lowercased # L& [2] CYRILLIC LETTER PALOCHKA..CYRILLIC CAPITAL LETTER ZHE WITH BREVE 04C3 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER KA WITH HOOK 04C5 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER EL WITH TAIL 04C7 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER EN WITH HOOK 04C9 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER EN WITH TAIL 04CB ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER KHAKASSIAN CHE 04CD ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER EM WITH TAIL 04D0 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER A WITH BREVE 04D2 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER A WITH DIAERESIS 04D4 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LIGATURE A IE 04D6 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER IE WITH BREVE 04D8 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER SCHWA 04DA ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS 04DC ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS 04DE ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS 04E0 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER ABKHASIAN DZE 04E2 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER I WITH MACRON 04E4 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER I WITH DIAERESIS 04E6 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER O WITH DIAERESIS 04E8 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER BARRED O 04EA ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS 04EC ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER E WITH DIAERESIS 04EE ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER U WITH MACRON 04F0 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER U WITH DIAERESIS 04F2 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE 04F4 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS 04F6 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER GHE WITH DESCENDER 04F8 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS 04FA ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK 04FC ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER HA WITH HOOK 04FE ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER HA WITH STROKE 0500 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER KOMI DE 0502 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER KOMI DJE 0504 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER KOMI ZJE 0506 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER KOMI DZJE 0508 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER KOMI LJE 050A ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER KOMI NJE 050C ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER KOMI SJE 050E ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER KOMI TJE 0510 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER REVERSED ZE 0512 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER EL WITH HOOK 0514 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER LHA 0516 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER RHA 0518 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER YAE 051A ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER QA 051C ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER WE 051E ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER ALEUT KA 0520 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK 0522 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK 0524 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER PE WITH DESCENDER 0526 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER 0528 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK 052A ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER DZZHE 052C ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER DCHE 052E ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER EL WITH DESCENDER 0531..0556 ; Changes_When_Lowercased # L& [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH 10A0..10C5 ; Changes_When_Lowercased # L& [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE 10C7 ; Changes_When_Lowercased # L& GEORGIAN CAPITAL LETTER YN 10CD ; Changes_When_Lowercased # L& GEORGIAN CAPITAL LETTER AEN 13A0..13F5 ; Changes_When_Lowercased # L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV 1E00 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER A WITH RING BELOW 1E02 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER B WITH DOT ABOVE 1E04 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER B WITH DOT BELOW 1E06 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER B WITH LINE BELOW 1E08 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE 1E0A ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER D WITH DOT ABOVE 1E0C ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER D WITH DOT BELOW 1E0E ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER D WITH LINE BELOW 1E10 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER D WITH CEDILLA 1E12 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW 1E14 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER E WITH MACRON AND GRAVE 1E16 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER E WITH MACRON AND ACUTE 1E18 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW 1E1A ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER E WITH TILDE BELOW 1E1C ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE 1E1E ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER F WITH DOT ABOVE 1E20 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER G WITH MACRON 1E22 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER H WITH DOT ABOVE 1E24 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER H WITH DOT BELOW 1E26 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER H WITH DIAERESIS 1E28 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER H WITH CEDILLA 1E2A ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER H WITH BREVE BELOW 1E2C ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER I WITH TILDE BELOW 1E2E ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE 1E30 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER K WITH ACUTE 1E32 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER K WITH DOT BELOW 1E34 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER K WITH LINE BELOW 1E36 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER L WITH DOT BELOW 1E38 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON 1E3A ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER L WITH LINE BELOW 1E3C ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW 1E3E ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER M WITH ACUTE 1E40 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER M WITH DOT ABOVE 1E42 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER M WITH DOT BELOW 1E44 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER N WITH DOT ABOVE 1E46 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER N WITH DOT BELOW 1E48 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER N WITH LINE BELOW 1E4A ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW 1E4C ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER O WITH TILDE AND ACUTE 1E4E ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS 1E50 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER O WITH MACRON AND GRAVE 1E52 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER O WITH MACRON AND ACUTE 1E54 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER P WITH ACUTE 1E56 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER P WITH DOT ABOVE 1E58 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER R WITH DOT ABOVE 1E5A ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER R WITH DOT BELOW 1E5C ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON 1E5E ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER R WITH LINE BELOW 1E60 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER S WITH DOT ABOVE 1E62 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER S WITH DOT BELOW 1E64 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE 1E66 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE 1E68 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE 1E6A ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER T WITH DOT ABOVE 1E6C ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER T WITH DOT BELOW 1E6E ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER T WITH LINE BELOW 1E70 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW 1E72 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER U WITH DIAERESIS BELOW 1E74 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER U WITH TILDE BELOW 1E76 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW 1E78 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER U WITH TILDE AND ACUTE 1E7A ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS 1E7C ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER V WITH TILDE 1E7E ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER V WITH DOT BELOW 1E80 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER W WITH GRAVE 1E82 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER W WITH ACUTE 1E84 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER W WITH DIAERESIS 1E86 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER W WITH DOT ABOVE 1E88 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER W WITH DOT BELOW 1E8A ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER X WITH DOT ABOVE 1E8C ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER X WITH DIAERESIS 1E8E ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER Y WITH DOT ABOVE 1E90 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER Z WITH CIRCUMFLEX 1E92 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER Z WITH DOT BELOW 1E94 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER Z WITH LINE BELOW 1E9E ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER SHARP S 1EA0 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER A WITH DOT BELOW 1EA2 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER A WITH HOOK ABOVE 1EA4 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE 1EA6 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE 1EA8 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE 1EAA ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE 1EAC ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW 1EAE ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER A WITH BREVE AND ACUTE 1EB0 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER A WITH BREVE AND GRAVE 1EB2 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE 1EB4 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER A WITH BREVE AND TILDE 1EB6 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW 1EB8 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER E WITH DOT BELOW 1EBA ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER E WITH HOOK ABOVE 1EBC ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER E WITH TILDE 1EBE ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE 1EC0 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE 1EC2 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE 1EC4 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE 1EC6 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW 1EC8 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER I WITH HOOK ABOVE 1ECA ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER I WITH DOT BELOW 1ECC ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER O WITH DOT BELOW 1ECE ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER O WITH HOOK ABOVE 1ED0 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE 1ED2 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE 1ED4 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE 1ED6 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE 1ED8 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW 1EDA ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER O WITH HORN AND ACUTE 1EDC ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER O WITH HORN AND GRAVE 1EDE ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE 1EE0 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER O WITH HORN AND TILDE 1EE2 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW 1EE4 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER U WITH DOT BELOW 1EE6 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER U WITH HOOK ABOVE 1EE8 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER U WITH HORN AND ACUTE 1EEA ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER U WITH HORN AND GRAVE 1EEC ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE 1EEE ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER U WITH HORN AND TILDE 1EF0 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW 1EF2 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER Y WITH GRAVE 1EF4 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER Y WITH DOT BELOW 1EF6 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER Y WITH HOOK ABOVE 1EF8 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER Y WITH TILDE 1EFA ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER MIDDLE-WELSH LL 1EFC ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER MIDDLE-WELSH V 1EFE ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER Y WITH LOOP 1F08..1F0F ; Changes_When_Lowercased # L& [8] GREEK CAPITAL LETTER ALPHA WITH PSILI..GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI 1F18..1F1D ; Changes_When_Lowercased # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA 1F28..1F2F ; Changes_When_Lowercased # L& [8] GREEK CAPITAL LETTER ETA WITH PSILI..GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI 1F38..1F3F ; Changes_When_Lowercased # L& [8] GREEK CAPITAL LETTER IOTA WITH PSILI..GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI 1F48..1F4D ; Changes_When_Lowercased # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA 1F59 ; Changes_When_Lowercased # L& GREEK CAPITAL LETTER UPSILON WITH DASIA 1F5B ; Changes_When_Lowercased # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA 1F5D ; Changes_When_Lowercased # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA 1F5F ; Changes_When_Lowercased # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI 1F68..1F6F ; Changes_When_Lowercased # L& [8] GREEK CAPITAL LETTER OMEGA WITH PSILI..GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI 1F88..1F8F ; Changes_When_Lowercased # L& [8] GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI..GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI 1F98..1F9F ; Changes_When_Lowercased # L& [8] GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI..GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI 1FA8..1FAF ; Changes_When_Lowercased # L& [8] GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI..GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI 1FB8..1FBC ; Changes_When_Lowercased # L& [5] GREEK CAPITAL LETTER ALPHA WITH VRACHY..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI 1FC8..1FCC ; Changes_When_Lowercased # L& [5] GREEK CAPITAL LETTER EPSILON WITH VARIA..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI 1FD8..1FDB ; Changes_When_Lowercased # L& [4] GREEK CAPITAL LETTER IOTA WITH VRACHY..GREEK CAPITAL LETTER IOTA WITH OXIA 1FE8..1FEC ; Changes_When_Lowercased # L& [5] GREEK CAPITAL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA 1FF8..1FFC ; Changes_When_Lowercased # L& [5] GREEK CAPITAL LETTER OMICRON WITH VARIA..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI 2126 ; Changes_When_Lowercased # L& OHM SIGN 212A..212B ; Changes_When_Lowercased # L& [2] KELVIN SIGN..ANGSTROM SIGN 2132 ; Changes_When_Lowercased # L& TURNED CAPITAL F 2160..216F ; Changes_When_Lowercased # Nl [16] ROMAN NUMERAL ONE..ROMAN NUMERAL ONE THOUSAND 2183 ; Changes_When_Lowercased # L& ROMAN NUMERAL REVERSED ONE HUNDRED 24B6..24CF ; Changes_When_Lowercased # So [26] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN CAPITAL LETTER Z 2C00..2C2E ; Changes_When_Lowercased # L& [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE 2C60 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER L WITH DOUBLE BAR 2C62..2C64 ; Changes_When_Lowercased # L& [3] LATIN CAPITAL LETTER L WITH MIDDLE TILDE..LATIN CAPITAL LETTER R WITH TAIL 2C67 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER H WITH DESCENDER 2C69 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER K WITH DESCENDER 2C6B ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER Z WITH DESCENDER 2C6D..2C70 ; Changes_When_Lowercased # L& [4] LATIN CAPITAL LETTER ALPHA..LATIN CAPITAL LETTER TURNED ALPHA 2C72 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER W WITH HOOK 2C75 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER HALF H 2C7E..2C80 ; Changes_When_Lowercased # L& [3] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC CAPITAL LETTER ALFA 2C82 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER VIDA 2C84 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER GAMMA 2C86 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER DALDA 2C88 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER EIE 2C8A ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER SOU 2C8C ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER ZATA 2C8E ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER HATE 2C90 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER THETHE 2C92 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER IAUDA 2C94 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER KAPA 2C96 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER LAULA 2C98 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER MI 2C9A ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER NI 2C9C ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER KSI 2C9E ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER O 2CA0 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER PI 2CA2 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER RO 2CA4 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER SIMA 2CA6 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER TAU 2CA8 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER UA 2CAA ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER FI 2CAC ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER KHI 2CAE ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER PSI 2CB0 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER OOU 2CB2 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER DIALECT-P ALEF 2CB4 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER OLD COPTIC AIN 2CB6 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE 2CB8 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER DIALECT-P KAPA 2CBA ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER DIALECT-P NI 2CBC ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI 2CBE ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER OLD COPTIC OOU 2CC0 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER SAMPI 2CC2 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER CROSSED SHEI 2CC4 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER OLD COPTIC SHEI 2CC6 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER OLD COPTIC ESH 2CC8 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER AKHMIMIC KHEI 2CCA ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER DIALECT-P HORI 2CCC ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER OLD COPTIC HORI 2CCE ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER OLD COPTIC HA 2CD0 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER L-SHAPED HA 2CD2 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER OLD COPTIC HEI 2CD4 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER OLD COPTIC HAT 2CD6 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER OLD COPTIC GANGIA 2CD8 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER OLD COPTIC DJA 2CDA ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER OLD COPTIC SHIMA 2CDC ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER OLD NUBIAN SHIMA 2CDE ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER OLD NUBIAN NGI 2CE0 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER OLD NUBIAN NYI 2CE2 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER OLD NUBIAN WAU 2CEB ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI 2CED ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA 2CF2 ; Changes_When_Lowercased # L& COPTIC CAPITAL LETTER BOHAIRIC KHEI A640 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER ZEMLYA A642 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER DZELO A644 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER REVERSED DZE A646 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER IOTA A648 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER DJERV A64A ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER MONOGRAPH UK A64C ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER BROAD OMEGA A64E ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER NEUTRAL YER A650 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER YERU WITH BACK YER A652 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER IOTIFIED YAT A654 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER REVERSED YU A656 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER IOTIFIED A A658 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS A65A ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER BLENDED YUS A65C ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS A65E ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER YN A660 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER REVERSED TSE A662 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER SOFT DE A664 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER SOFT EL A666 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER SOFT EM A668 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER MONOCULAR O A66A ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER BINOCULAR O A66C ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O A680 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER DWE A682 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER DZWE A684 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER ZHWE A686 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER CCHE A688 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER DZZE A68A ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK A68C ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER TWE A68E ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER TSWE A690 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER TSSE A692 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER TCHE A694 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER HWE A696 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER SHWE A698 ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER DOUBLE O A69A ; Changes_When_Lowercased # L& CYRILLIC CAPITAL LETTER CROSSED O A722 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF A724 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER EGYPTOLOGICAL AIN A726 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER HENG A728 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER TZ A72A ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER TRESILLO A72C ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER CUATRILLO A72E ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER CUATRILLO WITH COMMA A732 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER AA A734 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER AO A736 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER AU A738 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER AV A73A ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR A73C ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER AY A73E ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER REVERSED C WITH DOT A740 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER K WITH STROKE A742 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER K WITH DIAGONAL STROKE A744 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE A746 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER BROKEN L A748 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER L WITH HIGH STROKE A74A ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY A74C ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER O WITH LOOP A74E ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER OO A750 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER A752 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER P WITH FLOURISH A754 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER P WITH SQUIRREL TAIL A756 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER A758 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE A75A ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER R ROTUNDA A75C ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER RUM ROTUNDA A75E ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER V WITH DIAGONAL STROKE A760 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER VY A762 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER VISIGOTHIC Z A764 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER THORN WITH STROKE A766 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER A768 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER VEND A76A ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER ET A76C ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER IS A76E ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER CON A779 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER INSULAR D A77B ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER INSULAR F A77D..A77E ; Changes_When_Lowercased # L& [2] LATIN CAPITAL LETTER INSULAR G..LATIN CAPITAL LETTER TURNED INSULAR G A780 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER TURNED L A782 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER INSULAR R A784 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER INSULAR S A786 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER INSULAR T A78B ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER SALTILLO A78D ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER TURNED H A790 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER N WITH DESCENDER A792 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER C WITH BAR A796 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER B WITH FLOURISH A798 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER F WITH STROKE A79A ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER VOLAPUK AE A79C ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER VOLAPUK OE A79E ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER VOLAPUK UE A7A0 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER G WITH OBLIQUE STROKE A7A2 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER K WITH OBLIQUE STROKE A7A4 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER N WITH OBLIQUE STROKE A7A6 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER R WITH OBLIQUE STROKE A7A8 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER S WITH OBLIQUE STROKE A7AA..A7AE ; Changes_When_Lowercased # L& [5] LATIN CAPITAL LETTER H WITH HOOK..LATIN CAPITAL LETTER SMALL CAPITAL I A7B0..A7B4 ; Changes_When_Lowercased # L& [5] LATIN CAPITAL LETTER TURNED K..LATIN CAPITAL LETTER BETA A7B6 ; Changes_When_Lowercased # L& LATIN CAPITAL LETTER OMEGA FF21..FF3A ; Changes_When_Lowercased # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z 10400..10427 ; Changes_When_Lowercased # L& [40] DESERET CAPITAL LETTER LONG I..DESERET CAPITAL LETTER EW 104B0..104D3 ; Changes_When_Lowercased # L& [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA 10C80..10CB2 ; Changes_When_Lowercased # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US 118A0..118BF ; Changes_When_Lowercased # L& [32] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI CAPITAL LETTER VIYO 1E900..1E921 ; Changes_When_Lowercased # L& [34] ADLAM CAPITAL LETTER ALIF..ADLAM CAPITAL LETTER SHA # Total code points: 1304 # ================================================ # Derived Property: Changes_When_Uppercased (CWU) # Characters whose normalized forms are not stable under a toUppercase mapping. # For more information, see D140 in Section 3.13, "Default Case Algorithms". # Changes_When_Uppercased(X) is true when toUppercase(toNFD(X)) != toNFD(X) 0061..007A ; Changes_When_Uppercased # L& [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z 00B5 ; Changes_When_Uppercased # L& MICRO SIGN 00DF..00F6 ; Changes_When_Uppercased # L& [24] LATIN SMALL LETTER SHARP S..LATIN SMALL LETTER O WITH DIAERESIS 00F8..00FF ; Changes_When_Uppercased # L& [8] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER Y WITH DIAERESIS 0101 ; Changes_When_Uppercased # L& LATIN SMALL LETTER A WITH MACRON 0103 ; Changes_When_Uppercased # L& LATIN SMALL LETTER A WITH BREVE 0105 ; Changes_When_Uppercased # L& LATIN SMALL LETTER A WITH OGONEK 0107 ; Changes_When_Uppercased # L& LATIN SMALL LETTER C WITH ACUTE 0109 ; Changes_When_Uppercased # L& LATIN SMALL LETTER C WITH CIRCUMFLEX 010B ; Changes_When_Uppercased # L& LATIN SMALL LETTER C WITH DOT ABOVE 010D ; Changes_When_Uppercased # L& LATIN SMALL LETTER C WITH CARON 010F ; Changes_When_Uppercased # L& LATIN SMALL LETTER D WITH CARON 0111 ; Changes_When_Uppercased # L& LATIN SMALL LETTER D WITH STROKE 0113 ; Changes_When_Uppercased # L& LATIN SMALL LETTER E WITH MACRON 0115 ; Changes_When_Uppercased # L& LATIN SMALL LETTER E WITH BREVE 0117 ; Changes_When_Uppercased # L& LATIN SMALL LETTER E WITH DOT ABOVE 0119 ; Changes_When_Uppercased # L& LATIN SMALL LETTER E WITH OGONEK 011B ; Changes_When_Uppercased # L& LATIN SMALL LETTER E WITH CARON 011D ; Changes_When_Uppercased # L& LATIN SMALL LETTER G WITH CIRCUMFLEX 011F ; Changes_When_Uppercased # L& LATIN SMALL LETTER G WITH BREVE 0121 ; Changes_When_Uppercased # L& LATIN SMALL LETTER G WITH DOT ABOVE 0123 ; Changes_When_Uppercased # L& LATIN SMALL LETTER G WITH CEDILLA 0125 ; Changes_When_Uppercased # L& LATIN SMALL LETTER H WITH CIRCUMFLEX 0127 ; Changes_When_Uppercased # L& LATIN SMALL LETTER H WITH STROKE 0129 ; Changes_When_Uppercased # L& LATIN SMALL LETTER I WITH TILDE 012B ; Changes_When_Uppercased # L& LATIN SMALL LETTER I WITH MACRON 012D ; Changes_When_Uppercased # L& LATIN SMALL LETTER I WITH BREVE 012F ; Changes_When_Uppercased # L& LATIN SMALL LETTER I WITH OGONEK 0131 ; Changes_When_Uppercased # L& LATIN SMALL LETTER DOTLESS I 0133 ; Changes_When_Uppercased # L& LATIN SMALL LIGATURE IJ 0135 ; Changes_When_Uppercased # L& LATIN SMALL LETTER J WITH CIRCUMFLEX 0137 ; Changes_When_Uppercased # L& LATIN SMALL LETTER K WITH CEDILLA 013A ; Changes_When_Uppercased # L& LATIN SMALL LETTER L WITH ACUTE 013C ; Changes_When_Uppercased # L& LATIN SMALL LETTER L WITH CEDILLA 013E ; Changes_When_Uppercased # L& LATIN SMALL LETTER L WITH CARON 0140 ; Changes_When_Uppercased # L& LATIN SMALL LETTER L WITH MIDDLE DOT 0142 ; Changes_When_Uppercased # L& LATIN SMALL LETTER L WITH STROKE 0144 ; Changes_When_Uppercased # L& LATIN SMALL LETTER N WITH ACUTE 0146 ; Changes_When_Uppercased # L& LATIN SMALL LETTER N WITH CEDILLA 0148..0149 ; Changes_When_Uppercased # L& [2] LATIN SMALL LETTER N WITH CARON..LATIN SMALL LETTER N PRECEDED BY APOSTROPHE 014B ; Changes_When_Uppercased # L& LATIN SMALL LETTER ENG 014D ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH MACRON 014F ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH BREVE 0151 ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH DOUBLE ACUTE 0153 ; Changes_When_Uppercased # L& LATIN SMALL LIGATURE OE 0155 ; Changes_When_Uppercased # L& LATIN SMALL LETTER R WITH ACUTE 0157 ; Changes_When_Uppercased # L& LATIN SMALL LETTER R WITH CEDILLA 0159 ; Changes_When_Uppercased # L& LATIN SMALL LETTER R WITH CARON 015B ; Changes_When_Uppercased # L& LATIN SMALL LETTER S WITH ACUTE 015D ; Changes_When_Uppercased # L& LATIN SMALL LETTER S WITH CIRCUMFLEX 015F ; Changes_When_Uppercased # L& LATIN SMALL LETTER S WITH CEDILLA 0161 ; Changes_When_Uppercased # L& LATIN SMALL LETTER S WITH CARON 0163 ; Changes_When_Uppercased # L& LATIN SMALL LETTER T WITH CEDILLA 0165 ; Changes_When_Uppercased # L& LATIN SMALL LETTER T WITH CARON 0167 ; Changes_When_Uppercased # L& LATIN SMALL LETTER T WITH STROKE 0169 ; Changes_When_Uppercased # L& LATIN SMALL LETTER U WITH TILDE 016B ; Changes_When_Uppercased # L& LATIN SMALL LETTER U WITH MACRON 016D ; Changes_When_Uppercased # L& LATIN SMALL LETTER U WITH BREVE 016F ; Changes_When_Uppercased # L& LATIN SMALL LETTER U WITH RING ABOVE 0171 ; Changes_When_Uppercased # L& LATIN SMALL LETTER U WITH DOUBLE ACUTE 0173 ; Changes_When_Uppercased # L& LATIN SMALL LETTER U WITH OGONEK 0175 ; Changes_When_Uppercased # L& LATIN SMALL LETTER W WITH CIRCUMFLEX 0177 ; Changes_When_Uppercased # L& LATIN SMALL LETTER Y WITH CIRCUMFLEX 017A ; Changes_When_Uppercased # L& LATIN SMALL LETTER Z WITH ACUTE 017C ; Changes_When_Uppercased # L& LATIN SMALL LETTER Z WITH DOT ABOVE 017E..0180 ; Changes_When_Uppercased # L& [3] LATIN SMALL LETTER Z WITH CARON..LATIN SMALL LETTER B WITH STROKE 0183 ; Changes_When_Uppercased # L& LATIN SMALL LETTER B WITH TOPBAR 0185 ; Changes_When_Uppercased # L& LATIN SMALL LETTER TONE SIX 0188 ; Changes_When_Uppercased # L& LATIN SMALL LETTER C WITH HOOK 018C ; Changes_When_Uppercased # L& LATIN SMALL LETTER D WITH TOPBAR 0192 ; Changes_When_Uppercased # L& LATIN SMALL LETTER F WITH HOOK 0195 ; Changes_When_Uppercased # L& LATIN SMALL LETTER HV 0199..019A ; Changes_When_Uppercased # L& [2] LATIN SMALL LETTER K WITH HOOK..LATIN SMALL LETTER L WITH BAR 019E ; Changes_When_Uppercased # L& LATIN SMALL LETTER N WITH LONG RIGHT LEG 01A1 ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH HORN 01A3 ; Changes_When_Uppercased # L& LATIN SMALL LETTER OI 01A5 ; Changes_When_Uppercased # L& LATIN SMALL LETTER P WITH HOOK 01A8 ; Changes_When_Uppercased # L& LATIN SMALL LETTER TONE TWO 01AD ; Changes_When_Uppercased # L& LATIN SMALL LETTER T WITH HOOK 01B0 ; Changes_When_Uppercased # L& LATIN SMALL LETTER U WITH HORN 01B4 ; Changes_When_Uppercased # L& LATIN SMALL LETTER Y WITH HOOK 01B6 ; Changes_When_Uppercased # L& LATIN SMALL LETTER Z WITH STROKE 01B9 ; Changes_When_Uppercased # L& LATIN SMALL LETTER EZH REVERSED 01BD ; Changes_When_Uppercased # L& LATIN SMALL LETTER TONE FIVE 01BF ; Changes_When_Uppercased # L& LATIN LETTER WYNN 01C5..01C6 ; Changes_When_Uppercased # L& [2] LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON..LATIN SMALL LETTER DZ WITH CARON 01C8..01C9 ; Changes_When_Uppercased # L& [2] LATIN CAPITAL LETTER L WITH SMALL LETTER J..LATIN SMALL LETTER LJ 01CB..01CC ; Changes_When_Uppercased # L& [2] LATIN CAPITAL LETTER N WITH SMALL LETTER J..LATIN SMALL LETTER NJ 01CE ; Changes_When_Uppercased # L& LATIN SMALL LETTER A WITH CARON 01D0 ; Changes_When_Uppercased # L& LATIN SMALL LETTER I WITH CARON 01D2 ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH CARON 01D4 ; Changes_When_Uppercased # L& LATIN SMALL LETTER U WITH CARON 01D6 ; Changes_When_Uppercased # L& LATIN SMALL LETTER U WITH DIAERESIS AND MACRON 01D8 ; Changes_When_Uppercased # L& LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE 01DA ; Changes_When_Uppercased # L& LATIN SMALL LETTER U WITH DIAERESIS AND CARON 01DC..01DD ; Changes_When_Uppercased # L& [2] LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE..LATIN SMALL LETTER TURNED E 01DF ; Changes_When_Uppercased # L& LATIN SMALL LETTER A WITH DIAERESIS AND MACRON 01E1 ; Changes_When_Uppercased # L& LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON 01E3 ; Changes_When_Uppercased # L& LATIN SMALL LETTER AE WITH MACRON 01E5 ; Changes_When_Uppercased # L& LATIN SMALL LETTER G WITH STROKE 01E7 ; Changes_When_Uppercased # L& LATIN SMALL LETTER G WITH CARON 01E9 ; Changes_When_Uppercased # L& LATIN SMALL LETTER K WITH CARON 01EB ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH OGONEK 01ED ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH OGONEK AND MACRON 01EF..01F0 ; Changes_When_Uppercased # L& [2] LATIN SMALL LETTER EZH WITH CARON..LATIN SMALL LETTER J WITH CARON 01F2..01F3 ; Changes_When_Uppercased # L& [2] LATIN CAPITAL LETTER D WITH SMALL LETTER Z..LATIN SMALL LETTER DZ 01F5 ; Changes_When_Uppercased # L& LATIN SMALL LETTER G WITH ACUTE 01F9 ; Changes_When_Uppercased # L& LATIN SMALL LETTER N WITH GRAVE 01FB ; Changes_When_Uppercased # L& LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE 01FD ; Changes_When_Uppercased # L& LATIN SMALL LETTER AE WITH ACUTE 01FF ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH STROKE AND ACUTE 0201 ; Changes_When_Uppercased # L& LATIN SMALL LETTER A WITH DOUBLE GRAVE 0203 ; Changes_When_Uppercased # L& LATIN SMALL LETTER A WITH INVERTED BREVE 0205 ; Changes_When_Uppercased # L& LATIN SMALL LETTER E WITH DOUBLE GRAVE 0207 ; Changes_When_Uppercased # L& LATIN SMALL LETTER E WITH INVERTED BREVE 0209 ; Changes_When_Uppercased # L& LATIN SMALL LETTER I WITH DOUBLE GRAVE 020B ; Changes_When_Uppercased # L& LATIN SMALL LETTER I WITH INVERTED BREVE 020D ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH DOUBLE GRAVE 020F ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH INVERTED BREVE 0211 ; Changes_When_Uppercased # L& LATIN SMALL LETTER R WITH DOUBLE GRAVE 0213 ; Changes_When_Uppercased # L& LATIN SMALL LETTER R WITH INVERTED BREVE 0215 ; Changes_When_Uppercased # L& LATIN SMALL LETTER U WITH DOUBLE GRAVE 0217 ; Changes_When_Uppercased # L& LATIN SMALL LETTER U WITH INVERTED BREVE 0219 ; Changes_When_Uppercased # L& LATIN SMALL LETTER S WITH COMMA BELOW 021B ; Changes_When_Uppercased # L& LATIN SMALL LETTER T WITH COMMA BELOW 021D ; Changes_When_Uppercased # L& LATIN SMALL LETTER YOGH 021F ; Changes_When_Uppercased # L& LATIN SMALL LETTER H WITH CARON 0223 ; Changes_When_Uppercased # L& LATIN SMALL LETTER OU 0225 ; Changes_When_Uppercased # L& LATIN SMALL LETTER Z WITH HOOK 0227 ; Changes_When_Uppercased # L& LATIN SMALL LETTER A WITH DOT ABOVE 0229 ; Changes_When_Uppercased # L& LATIN SMALL LETTER E WITH CEDILLA 022B ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH DIAERESIS AND MACRON 022D ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH TILDE AND MACRON 022F ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH DOT ABOVE 0231 ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON 0233 ; Changes_When_Uppercased # L& LATIN SMALL LETTER Y WITH MACRON 023C ; Changes_When_Uppercased # L& LATIN SMALL LETTER C WITH STROKE 023F..0240 ; Changes_When_Uppercased # L& [2] LATIN SMALL LETTER S WITH SWASH TAIL..LATIN SMALL LETTER Z WITH SWASH TAIL 0242 ; Changes_When_Uppercased # L& LATIN SMALL LETTER GLOTTAL STOP 0247 ; Changes_When_Uppercased # L& LATIN SMALL LETTER E WITH STROKE 0249 ; Changes_When_Uppercased # L& LATIN SMALL LETTER J WITH STROKE 024B ; Changes_When_Uppercased # L& LATIN SMALL LETTER Q WITH HOOK TAIL 024D ; Changes_When_Uppercased # L& LATIN SMALL LETTER R WITH STROKE 024F..0254 ; Changes_When_Uppercased # L& [6] LATIN SMALL LETTER Y WITH STROKE..LATIN SMALL LETTER OPEN O 0256..0257 ; Changes_When_Uppercased # L& [2] LATIN SMALL LETTER D WITH TAIL..LATIN SMALL LETTER D WITH HOOK 0259 ; Changes_When_Uppercased # L& LATIN SMALL LETTER SCHWA 025B..025C ; Changes_When_Uppercased # L& [2] LATIN SMALL LETTER OPEN E..LATIN SMALL LETTER REVERSED OPEN E 0260..0261 ; Changes_When_Uppercased # L& [2] LATIN SMALL LETTER G WITH HOOK..LATIN SMALL LETTER SCRIPT G 0263 ; Changes_When_Uppercased # L& LATIN SMALL LETTER GAMMA 0265..0266 ; Changes_When_Uppercased # L& [2] LATIN SMALL LETTER TURNED H..LATIN SMALL LETTER H WITH HOOK 0268..026C ; Changes_When_Uppercased # L& [5] LATIN SMALL LETTER I WITH STROKE..LATIN SMALL LETTER L WITH BELT 026F ; Changes_When_Uppercased # L& LATIN SMALL LETTER TURNED M 0271..0272 ; Changes_When_Uppercased # L& [2] LATIN SMALL LETTER M WITH HOOK..LATIN SMALL LETTER N WITH LEFT HOOK 0275 ; Changes_When_Uppercased # L& LATIN SMALL LETTER BARRED O 027D ; Changes_When_Uppercased # L& LATIN SMALL LETTER R WITH TAIL 0280 ; Changes_When_Uppercased # L& LATIN LETTER SMALL CAPITAL R 0283 ; Changes_When_Uppercased # L& LATIN SMALL LETTER ESH 0287..028C ; Changes_When_Uppercased # L& [6] LATIN SMALL LETTER TURNED T..LATIN SMALL LETTER TURNED V 0292 ; Changes_When_Uppercased # L& LATIN SMALL LETTER EZH 029D..029E ; Changes_When_Uppercased # L& [2] LATIN SMALL LETTER J WITH CROSSED-TAIL..LATIN SMALL LETTER TURNED K 0345 ; Changes_When_Uppercased # Mn COMBINING GREEK YPOGEGRAMMENI 0371 ; Changes_When_Uppercased # L& GREEK SMALL LETTER HETA 0373 ; Changes_When_Uppercased # L& GREEK SMALL LETTER ARCHAIC SAMPI 0377 ; Changes_When_Uppercased # L& GREEK SMALL LETTER PAMPHYLIAN DIGAMMA 037B..037D ; Changes_When_Uppercased # L& [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL 0390 ; Changes_When_Uppercased # L& GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS 03AC..03CE ; Changes_When_Uppercased # L& [35] GREEK SMALL LETTER ALPHA WITH TONOS..GREEK SMALL LETTER OMEGA WITH TONOS 03D0..03D1 ; Changes_When_Uppercased # L& [2] GREEK BETA SYMBOL..GREEK THETA SYMBOL 03D5..03D7 ; Changes_When_Uppercased # L& [3] GREEK PHI SYMBOL..GREEK KAI SYMBOL 03D9 ; Changes_When_Uppercased # L& GREEK SMALL LETTER ARCHAIC KOPPA 03DB ; Changes_When_Uppercased # L& GREEK SMALL LETTER STIGMA 03DD ; Changes_When_Uppercased # L& GREEK SMALL LETTER DIGAMMA 03DF ; Changes_When_Uppercased # L& GREEK SMALL LETTER KOPPA 03E1 ; Changes_When_Uppercased # L& GREEK SMALL LETTER SAMPI 03E3 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER SHEI 03E5 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER FEI 03E7 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER KHEI 03E9 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER HORI 03EB ; Changes_When_Uppercased # L& COPTIC SMALL LETTER GANGIA 03ED ; Changes_When_Uppercased # L& COPTIC SMALL LETTER SHIMA 03EF..03F3 ; Changes_When_Uppercased # L& [5] COPTIC SMALL LETTER DEI..GREEK LETTER YOT 03F5 ; Changes_When_Uppercased # L& GREEK LUNATE EPSILON SYMBOL 03F8 ; Changes_When_Uppercased # L& GREEK SMALL LETTER SHO 03FB ; Changes_When_Uppercased # L& GREEK SMALL LETTER SAN 0430..045F ; Changes_When_Uppercased # L& [48] CYRILLIC SMALL LETTER A..CYRILLIC SMALL LETTER DZHE 0461 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER OMEGA 0463 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER YAT 0465 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER IOTIFIED E 0467 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER LITTLE YUS 0469 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS 046B ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER BIG YUS 046D ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER IOTIFIED BIG YUS 046F ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER KSI 0471 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER PSI 0473 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER FITA 0475 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER IZHITSA 0477 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT 0479 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER UK 047B ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER ROUND OMEGA 047D ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER OMEGA WITH TITLO 047F ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER OT 0481 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER KOPPA 048B ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER SHORT I WITH TAIL 048D ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER SEMISOFT SIGN 048F ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER ER WITH TICK 0491 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER GHE WITH UPTURN 0493 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER GHE WITH STROKE 0495 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK 0497 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER ZHE WITH DESCENDER 0499 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER ZE WITH DESCENDER 049B ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER KA WITH DESCENDER 049D ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE 049F ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER KA WITH STROKE 04A1 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER BASHKIR KA 04A3 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER EN WITH DESCENDER 04A5 ; Changes_When_Uppercased # L& CYRILLIC SMALL LIGATURE EN GHE 04A7 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK 04A9 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER ABKHASIAN HA 04AB ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER ES WITH DESCENDER 04AD ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER TE WITH DESCENDER 04AF ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER STRAIGHT U 04B1 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE 04B3 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER HA WITH DESCENDER 04B5 ; Changes_When_Uppercased # L& CYRILLIC SMALL LIGATURE TE TSE 04B7 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER CHE WITH DESCENDER 04B9 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE 04BB ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER SHHA 04BD ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER ABKHASIAN CHE 04BF ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER 04C2 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER ZHE WITH BREVE 04C4 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER KA WITH HOOK 04C6 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER EL WITH TAIL 04C8 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER EN WITH HOOK 04CA ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER EN WITH TAIL 04CC ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER KHAKASSIAN CHE 04CE..04CF ; Changes_When_Uppercased # L& [2] CYRILLIC SMALL LETTER EM WITH TAIL..CYRILLIC SMALL LETTER PALOCHKA 04D1 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER A WITH BREVE 04D3 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER A WITH DIAERESIS 04D5 ; Changes_When_Uppercased # L& CYRILLIC SMALL LIGATURE A IE 04D7 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER IE WITH BREVE 04D9 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER SCHWA 04DB ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS 04DD ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER ZHE WITH DIAERESIS 04DF ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER ZE WITH DIAERESIS 04E1 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER ABKHASIAN DZE 04E3 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER I WITH MACRON 04E5 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER I WITH DIAERESIS 04E7 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER O WITH DIAERESIS 04E9 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER BARRED O 04EB ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS 04ED ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER E WITH DIAERESIS 04EF ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER U WITH MACRON 04F1 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER U WITH DIAERESIS 04F3 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE 04F5 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER CHE WITH DIAERESIS 04F7 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER GHE WITH DESCENDER 04F9 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER YERU WITH DIAERESIS 04FB ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK 04FD ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER HA WITH HOOK 04FF ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER HA WITH STROKE 0501 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER KOMI DE 0503 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER KOMI DJE 0505 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER KOMI ZJE 0507 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER KOMI DZJE 0509 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER KOMI LJE 050B ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER KOMI NJE 050D ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER KOMI SJE 050F ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER KOMI TJE 0511 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER REVERSED ZE 0513 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER EL WITH HOOK 0515 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER LHA 0517 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER RHA 0519 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER YAE 051B ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER QA 051D ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER WE 051F ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER ALEUT KA 0521 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK 0523 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK 0525 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER PE WITH DESCENDER 0527 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER SHHA WITH DESCENDER 0529 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER EN WITH LEFT HOOK 052B ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER DZZHE 052D ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER DCHE 052F ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER EL WITH DESCENDER 0561..0587 ; Changes_When_Uppercased # L& [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN 13F8..13FD ; Changes_When_Uppercased # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV 1C80..1C88 ; Changes_When_Uppercased # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK 1D79 ; Changes_When_Uppercased # L& LATIN SMALL LETTER INSULAR G 1D7D ; Changes_When_Uppercased # L& LATIN SMALL LETTER P WITH STROKE 1E01 ; Changes_When_Uppercased # L& LATIN SMALL LETTER A WITH RING BELOW 1E03 ; Changes_When_Uppercased # L& LATIN SMALL LETTER B WITH DOT ABOVE 1E05 ; Changes_When_Uppercased # L& LATIN SMALL LETTER B WITH DOT BELOW 1E07 ; Changes_When_Uppercased # L& LATIN SMALL LETTER B WITH LINE BELOW 1E09 ; Changes_When_Uppercased # L& LATIN SMALL LETTER C WITH CEDILLA AND ACUTE 1E0B ; Changes_When_Uppercased # L& LATIN SMALL LETTER D WITH DOT ABOVE 1E0D ; Changes_When_Uppercased # L& LATIN SMALL LETTER D WITH DOT BELOW 1E0F ; Changes_When_Uppercased # L& LATIN SMALL LETTER D WITH LINE BELOW 1E11 ; Changes_When_Uppercased # L& LATIN SMALL LETTER D WITH CEDILLA 1E13 ; Changes_When_Uppercased # L& LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW 1E15 ; Changes_When_Uppercased # L& LATIN SMALL LETTER E WITH MACRON AND GRAVE 1E17 ; Changes_When_Uppercased # L& LATIN SMALL LETTER E WITH MACRON AND ACUTE 1E19 ; Changes_When_Uppercased # L& LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW 1E1B ; Changes_When_Uppercased # L& LATIN SMALL LETTER E WITH TILDE BELOW 1E1D ; Changes_When_Uppercased # L& LATIN SMALL LETTER E WITH CEDILLA AND BREVE 1E1F ; Changes_When_Uppercased # L& LATIN SMALL LETTER F WITH DOT ABOVE 1E21 ; Changes_When_Uppercased # L& LATIN SMALL LETTER G WITH MACRON 1E23 ; Changes_When_Uppercased # L& LATIN SMALL LETTER H WITH DOT ABOVE 1E25 ; Changes_When_Uppercased # L& LATIN SMALL LETTER H WITH DOT BELOW 1E27 ; Changes_When_Uppercased # L& LATIN SMALL LETTER H WITH DIAERESIS 1E29 ; Changes_When_Uppercased # L& LATIN SMALL LETTER H WITH CEDILLA 1E2B ; Changes_When_Uppercased # L& LATIN SMALL LETTER H WITH BREVE BELOW 1E2D ; Changes_When_Uppercased # L& LATIN SMALL LETTER I WITH TILDE BELOW 1E2F ; Changes_When_Uppercased # L& LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE 1E31 ; Changes_When_Uppercased # L& LATIN SMALL LETTER K WITH ACUTE 1E33 ; Changes_When_Uppercased # L& LATIN SMALL LETTER K WITH DOT BELOW 1E35 ; Changes_When_Uppercased # L& LATIN SMALL LETTER K WITH LINE BELOW 1E37 ; Changes_When_Uppercased # L& LATIN SMALL LETTER L WITH DOT BELOW 1E39 ; Changes_When_Uppercased # L& LATIN SMALL LETTER L WITH DOT BELOW AND MACRON 1E3B ; Changes_When_Uppercased # L& LATIN SMALL LETTER L WITH LINE BELOW 1E3D ; Changes_When_Uppercased # L& LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW 1E3F ; Changes_When_Uppercased # L& LATIN SMALL LETTER M WITH ACUTE 1E41 ; Changes_When_Uppercased # L& LATIN SMALL LETTER M WITH DOT ABOVE 1E43 ; Changes_When_Uppercased # L& LATIN SMALL LETTER M WITH DOT BELOW 1E45 ; Changes_When_Uppercased # L& LATIN SMALL LETTER N WITH DOT ABOVE 1E47 ; Changes_When_Uppercased # L& LATIN SMALL LETTER N WITH DOT BELOW 1E49 ; Changes_When_Uppercased # L& LATIN SMALL LETTER N WITH LINE BELOW 1E4B ; Changes_When_Uppercased # L& LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW 1E4D ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH TILDE AND ACUTE 1E4F ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH TILDE AND DIAERESIS 1E51 ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH MACRON AND GRAVE 1E53 ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH MACRON AND ACUTE 1E55 ; Changes_When_Uppercased # L& LATIN SMALL LETTER P WITH ACUTE 1E57 ; Changes_When_Uppercased # L& LATIN SMALL LETTER P WITH DOT ABOVE 1E59 ; Changes_When_Uppercased # L& LATIN SMALL LETTER R WITH DOT ABOVE 1E5B ; Changes_When_Uppercased # L& LATIN SMALL LETTER R WITH DOT BELOW 1E5D ; Changes_When_Uppercased # L& LATIN SMALL LETTER R WITH DOT BELOW AND MACRON 1E5F ; Changes_When_Uppercased # L& LATIN SMALL LETTER R WITH LINE BELOW 1E61 ; Changes_When_Uppercased # L& LATIN SMALL LETTER S WITH DOT ABOVE 1E63 ; Changes_When_Uppercased # L& LATIN SMALL LETTER S WITH DOT BELOW 1E65 ; Changes_When_Uppercased # L& LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE 1E67 ; Changes_When_Uppercased # L& LATIN SMALL LETTER S WITH CARON AND DOT ABOVE 1E69 ; Changes_When_Uppercased # L& LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE 1E6B ; Changes_When_Uppercased # L& LATIN SMALL LETTER T WITH DOT ABOVE 1E6D ; Changes_When_Uppercased # L& LATIN SMALL LETTER T WITH DOT BELOW 1E6F ; Changes_When_Uppercased # L& LATIN SMALL LETTER T WITH LINE BELOW 1E71 ; Changes_When_Uppercased # L& LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW 1E73 ; Changes_When_Uppercased # L& LATIN SMALL LETTER U WITH DIAERESIS BELOW 1E75 ; Changes_When_Uppercased # L& LATIN SMALL LETTER U WITH TILDE BELOW 1E77 ; Changes_When_Uppercased # L& LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW 1E79 ; Changes_When_Uppercased # L& LATIN SMALL LETTER U WITH TILDE AND ACUTE 1E7B ; Changes_When_Uppercased # L& LATIN SMALL LETTER U WITH MACRON AND DIAERESIS 1E7D ; Changes_When_Uppercased # L& LATIN SMALL LETTER V WITH TILDE 1E7F ; Changes_When_Uppercased # L& LATIN SMALL LETTER V WITH DOT BELOW 1E81 ; Changes_When_Uppercased # L& LATIN SMALL LETTER W WITH GRAVE 1E83 ; Changes_When_Uppercased # L& LATIN SMALL LETTER W WITH ACUTE 1E85 ; Changes_When_Uppercased # L& LATIN SMALL LETTER W WITH DIAERESIS 1E87 ; Changes_When_Uppercased # L& LATIN SMALL LETTER W WITH DOT ABOVE 1E89 ; Changes_When_Uppercased # L& LATIN SMALL LETTER W WITH DOT BELOW 1E8B ; Changes_When_Uppercased # L& LATIN SMALL LETTER X WITH DOT ABOVE 1E8D ; Changes_When_Uppercased # L& LATIN SMALL LETTER X WITH DIAERESIS 1E8F ; Changes_When_Uppercased # L& LATIN SMALL LETTER Y WITH DOT ABOVE 1E91 ; Changes_When_Uppercased # L& LATIN SMALL LETTER Z WITH CIRCUMFLEX 1E93 ; Changes_When_Uppercased # L& LATIN SMALL LETTER Z WITH DOT BELOW 1E95..1E9B ; Changes_When_Uppercased # L& [7] LATIN SMALL LETTER Z WITH LINE BELOW..LATIN SMALL LETTER LONG S WITH DOT ABOVE 1EA1 ; Changes_When_Uppercased # L& LATIN SMALL LETTER A WITH DOT BELOW 1EA3 ; Changes_When_Uppercased # L& LATIN SMALL LETTER A WITH HOOK ABOVE 1EA5 ; Changes_When_Uppercased # L& LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE 1EA7 ; Changes_When_Uppercased # L& LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE 1EA9 ; Changes_When_Uppercased # L& LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE 1EAB ; Changes_When_Uppercased # L& LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE 1EAD ; Changes_When_Uppercased # L& LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW 1EAF ; Changes_When_Uppercased # L& LATIN SMALL LETTER A WITH BREVE AND ACUTE 1EB1 ; Changes_When_Uppercased # L& LATIN SMALL LETTER A WITH BREVE AND GRAVE 1EB3 ; Changes_When_Uppercased # L& LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE 1EB5 ; Changes_When_Uppercased # L& LATIN SMALL LETTER A WITH BREVE AND TILDE 1EB7 ; Changes_When_Uppercased # L& LATIN SMALL LETTER A WITH BREVE AND DOT BELOW 1EB9 ; Changes_When_Uppercased # L& LATIN SMALL LETTER E WITH DOT BELOW 1EBB ; Changes_When_Uppercased # L& LATIN SMALL LETTER E WITH HOOK ABOVE 1EBD ; Changes_When_Uppercased # L& LATIN SMALL LETTER E WITH TILDE 1EBF ; Changes_When_Uppercased # L& LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE 1EC1 ; Changes_When_Uppercased # L& LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE 1EC3 ; Changes_When_Uppercased # L& LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE 1EC5 ; Changes_When_Uppercased # L& LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE 1EC7 ; Changes_When_Uppercased # L& LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW 1EC9 ; Changes_When_Uppercased # L& LATIN SMALL LETTER I WITH HOOK ABOVE 1ECB ; Changes_When_Uppercased # L& LATIN SMALL LETTER I WITH DOT BELOW 1ECD ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH DOT BELOW 1ECF ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH HOOK ABOVE 1ED1 ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE 1ED3 ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE 1ED5 ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE 1ED7 ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE 1ED9 ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW 1EDB ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH HORN AND ACUTE 1EDD ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH HORN AND GRAVE 1EDF ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE 1EE1 ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH HORN AND TILDE 1EE3 ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH HORN AND DOT BELOW 1EE5 ; Changes_When_Uppercased # L& LATIN SMALL LETTER U WITH DOT BELOW 1EE7 ; Changes_When_Uppercased # L& LATIN SMALL LETTER U WITH HOOK ABOVE 1EE9 ; Changes_When_Uppercased # L& LATIN SMALL LETTER U WITH HORN AND ACUTE 1EEB ; Changes_When_Uppercased # L& LATIN SMALL LETTER U WITH HORN AND GRAVE 1EED ; Changes_When_Uppercased # L& LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE 1EEF ; Changes_When_Uppercased # L& LATIN SMALL LETTER U WITH HORN AND TILDE 1EF1 ; Changes_When_Uppercased # L& LATIN SMALL LETTER U WITH HORN AND DOT BELOW 1EF3 ; Changes_When_Uppercased # L& LATIN SMALL LETTER Y WITH GRAVE 1EF5 ; Changes_When_Uppercased # L& LATIN SMALL LETTER Y WITH DOT BELOW 1EF7 ; Changes_When_Uppercased # L& LATIN SMALL LETTER Y WITH HOOK ABOVE 1EF9 ; Changes_When_Uppercased # L& LATIN SMALL LETTER Y WITH TILDE 1EFB ; Changes_When_Uppercased # L& LATIN SMALL LETTER MIDDLE-WELSH LL 1EFD ; Changes_When_Uppercased # L& LATIN SMALL LETTER MIDDLE-WELSH V 1EFF..1F07 ; Changes_When_Uppercased # L& [9] LATIN SMALL LETTER Y WITH LOOP..GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI 1F10..1F15 ; Changes_When_Uppercased # L& [6] GREEK SMALL LETTER EPSILON WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA 1F20..1F27 ; Changes_When_Uppercased # L& [8] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI 1F30..1F37 ; Changes_When_Uppercased # L& [8] GREEK SMALL LETTER IOTA WITH PSILI..GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI 1F40..1F45 ; Changes_When_Uppercased # L& [6] GREEK SMALL LETTER OMICRON WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA 1F50..1F57 ; Changes_When_Uppercased # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI 1F60..1F67 ; Changes_When_Uppercased # L& [8] GREEK SMALL LETTER OMEGA WITH PSILI..GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI 1F70..1F7D ; Changes_When_Uppercased # L& [14] GREEK SMALL LETTER ALPHA WITH VARIA..GREEK SMALL LETTER OMEGA WITH OXIA 1F80..1FB4 ; Changes_When_Uppercased # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI 1FB6..1FB7 ; Changes_When_Uppercased # L& [2] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI 1FBC ; Changes_When_Uppercased # L& GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI 1FBE ; Changes_When_Uppercased # L& GREEK PROSGEGRAMMENI 1FC2..1FC4 ; Changes_When_Uppercased # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI 1FC6..1FC7 ; Changes_When_Uppercased # L& [2] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI 1FCC ; Changes_When_Uppercased # L& GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI 1FD0..1FD3 ; Changes_When_Uppercased # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA 1FD6..1FD7 ; Changes_When_Uppercased # L& [2] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI 1FE0..1FE7 ; Changes_When_Uppercased # L& [8] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI 1FF2..1FF4 ; Changes_When_Uppercased # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI 1FF6..1FF7 ; Changes_When_Uppercased # L& [2] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI 1FFC ; Changes_When_Uppercased # L& GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI 214E ; Changes_When_Uppercased # L& TURNED SMALL F 2170..217F ; Changes_When_Uppercased # Nl [16] SMALL ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND 2184 ; Changes_When_Uppercased # L& LATIN SMALL LETTER REVERSED C 24D0..24E9 ; Changes_When_Uppercased # So [26] CIRCLED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z 2C30..2C5E ; Changes_When_Uppercased # L& [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE 2C61 ; Changes_When_Uppercased # L& LATIN SMALL LETTER L WITH DOUBLE BAR 2C65..2C66 ; Changes_When_Uppercased # L& [2] LATIN SMALL LETTER A WITH STROKE..LATIN SMALL LETTER T WITH DIAGONAL STROKE 2C68 ; Changes_When_Uppercased # L& LATIN SMALL LETTER H WITH DESCENDER 2C6A ; Changes_When_Uppercased # L& LATIN SMALL LETTER K WITH DESCENDER 2C6C ; Changes_When_Uppercased # L& LATIN SMALL LETTER Z WITH DESCENDER 2C73 ; Changes_When_Uppercased # L& LATIN SMALL LETTER W WITH HOOK 2C76 ; Changes_When_Uppercased # L& LATIN SMALL LETTER HALF H 2C81 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER ALFA 2C83 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER VIDA 2C85 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER GAMMA 2C87 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER DALDA 2C89 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER EIE 2C8B ; Changes_When_Uppercased # L& COPTIC SMALL LETTER SOU 2C8D ; Changes_When_Uppercased # L& COPTIC SMALL LETTER ZATA 2C8F ; Changes_When_Uppercased # L& COPTIC SMALL LETTER HATE 2C91 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER THETHE 2C93 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER IAUDA 2C95 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER KAPA 2C97 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER LAULA 2C99 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER MI 2C9B ; Changes_When_Uppercased # L& COPTIC SMALL LETTER NI 2C9D ; Changes_When_Uppercased # L& COPTIC SMALL LETTER KSI 2C9F ; Changes_When_Uppercased # L& COPTIC SMALL LETTER O 2CA1 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER PI 2CA3 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER RO 2CA5 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER SIMA 2CA7 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER TAU 2CA9 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER UA 2CAB ; Changes_When_Uppercased # L& COPTIC SMALL LETTER FI 2CAD ; Changes_When_Uppercased # L& COPTIC SMALL LETTER KHI 2CAF ; Changes_When_Uppercased # L& COPTIC SMALL LETTER PSI 2CB1 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER OOU 2CB3 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER DIALECT-P ALEF 2CB5 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER OLD COPTIC AIN 2CB7 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER CRYPTOGRAMMIC EIE 2CB9 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER DIALECT-P KAPA 2CBB ; Changes_When_Uppercased # L& COPTIC SMALL LETTER DIALECT-P NI 2CBD ; Changes_When_Uppercased # L& COPTIC SMALL LETTER CRYPTOGRAMMIC NI 2CBF ; Changes_When_Uppercased # L& COPTIC SMALL LETTER OLD COPTIC OOU 2CC1 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER SAMPI 2CC3 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER CROSSED SHEI 2CC5 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER OLD COPTIC SHEI 2CC7 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER OLD COPTIC ESH 2CC9 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER AKHMIMIC KHEI 2CCB ; Changes_When_Uppercased # L& COPTIC SMALL LETTER DIALECT-P HORI 2CCD ; Changes_When_Uppercased # L& COPTIC SMALL LETTER OLD COPTIC HORI 2CCF ; Changes_When_Uppercased # L& COPTIC SMALL LETTER OLD COPTIC HA 2CD1 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER L-SHAPED HA 2CD3 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER OLD COPTIC HEI 2CD5 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER OLD COPTIC HAT 2CD7 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER OLD COPTIC GANGIA 2CD9 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER OLD COPTIC DJA 2CDB ; Changes_When_Uppercased # L& COPTIC SMALL LETTER OLD COPTIC SHIMA 2CDD ; Changes_When_Uppercased # L& COPTIC SMALL LETTER OLD NUBIAN SHIMA 2CDF ; Changes_When_Uppercased # L& COPTIC SMALL LETTER OLD NUBIAN NGI 2CE1 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER OLD NUBIAN NYI 2CE3 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER OLD NUBIAN WAU 2CEC ; Changes_When_Uppercased # L& COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI 2CEE ; Changes_When_Uppercased # L& COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA 2CF3 ; Changes_When_Uppercased # L& COPTIC SMALL LETTER BOHAIRIC KHEI 2D00..2D25 ; Changes_When_Uppercased # L& [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE 2D27 ; Changes_When_Uppercased # L& GEORGIAN SMALL LETTER YN 2D2D ; Changes_When_Uppercased # L& GEORGIAN SMALL LETTER AEN A641 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER ZEMLYA A643 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER DZELO A645 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER REVERSED DZE A647 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER IOTA A649 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER DJERV A64B ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER MONOGRAPH UK A64D ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER BROAD OMEGA A64F ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER NEUTRAL YER A651 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER YERU WITH BACK YER A653 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER IOTIFIED YAT A655 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER REVERSED YU A657 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER IOTIFIED A A659 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER CLOSED LITTLE YUS A65B ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER BLENDED YUS A65D ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS A65F ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER YN A661 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER REVERSED TSE A663 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER SOFT DE A665 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER SOFT EL A667 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER SOFT EM A669 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER MONOCULAR O A66B ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER BINOCULAR O A66D ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER DOUBLE MONOCULAR O A681 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER DWE A683 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER DZWE A685 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER ZHWE A687 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER CCHE A689 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER DZZE A68B ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK A68D ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER TWE A68F ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER TSWE A691 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER TSSE A693 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER TCHE A695 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER HWE A697 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER SHWE A699 ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER DOUBLE O A69B ; Changes_When_Uppercased # L& CYRILLIC SMALL LETTER CROSSED O A723 ; Changes_When_Uppercased # L& LATIN SMALL LETTER EGYPTOLOGICAL ALEF A725 ; Changes_When_Uppercased # L& LATIN SMALL LETTER EGYPTOLOGICAL AIN A727 ; Changes_When_Uppercased # L& LATIN SMALL LETTER HENG A729 ; Changes_When_Uppercased # L& LATIN SMALL LETTER TZ A72B ; Changes_When_Uppercased # L& LATIN SMALL LETTER TRESILLO A72D ; Changes_When_Uppercased # L& LATIN SMALL LETTER CUATRILLO A72F ; Changes_When_Uppercased # L& LATIN SMALL LETTER CUATRILLO WITH COMMA A733 ; Changes_When_Uppercased # L& LATIN SMALL LETTER AA A735 ; Changes_When_Uppercased # L& LATIN SMALL LETTER AO A737 ; Changes_When_Uppercased # L& LATIN SMALL LETTER AU A739 ; Changes_When_Uppercased # L& LATIN SMALL LETTER AV A73B ; Changes_When_Uppercased # L& LATIN SMALL LETTER AV WITH HORIZONTAL BAR A73D ; Changes_When_Uppercased # L& LATIN SMALL LETTER AY A73F ; Changes_When_Uppercased # L& LATIN SMALL LETTER REVERSED C WITH DOT A741 ; Changes_When_Uppercased # L& LATIN SMALL LETTER K WITH STROKE A743 ; Changes_When_Uppercased # L& LATIN SMALL LETTER K WITH DIAGONAL STROKE A745 ; Changes_When_Uppercased # L& LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE A747 ; Changes_When_Uppercased # L& LATIN SMALL LETTER BROKEN L A749 ; Changes_When_Uppercased # L& LATIN SMALL LETTER L WITH HIGH STROKE A74B ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH LONG STROKE OVERLAY A74D ; Changes_When_Uppercased # L& LATIN SMALL LETTER O WITH LOOP A74F ; Changes_When_Uppercased # L& LATIN SMALL LETTER OO A751 ; Changes_When_Uppercased # L& LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER A753 ; Changes_When_Uppercased # L& LATIN SMALL LETTER P WITH FLOURISH A755 ; Changes_When_Uppercased # L& LATIN SMALL LETTER P WITH SQUIRREL TAIL A757 ; Changes_When_Uppercased # L& LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER A759 ; Changes_When_Uppercased # L& LATIN SMALL LETTER Q WITH DIAGONAL STROKE A75B ; Changes_When_Uppercased # L& LATIN SMALL LETTER R ROTUNDA A75D ; Changes_When_Uppercased # L& LATIN SMALL LETTER RUM ROTUNDA A75F ; Changes_When_Uppercased # L& LATIN SMALL LETTER V WITH DIAGONAL STROKE A761 ; Changes_When_Uppercased # L& LATIN SMALL LETTER VY A763 ; Changes_When_Uppercased # L& LATIN SMALL LETTER VISIGOTHIC Z A765 ; Changes_When_Uppercased # L& LATIN SMALL LETTER THORN WITH STROKE A767 ; Changes_When_Uppercased # L& LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER A769 ; Changes_When_Uppercased # L& LATIN SMALL LETTER VEND A76B ; Changes_When_Uppercased # L& LATIN SMALL LETTER ET A76D ; Changes_When_Uppercased # L& LATIN SMALL LETTER IS A76F ; Changes_When_Uppercased # L& LATIN SMALL LETTER CON A77A ; Changes_When_Uppercased # L& LATIN SMALL LETTER INSULAR D A77C ; Changes_When_Uppercased # L& LATIN SMALL LETTER INSULAR F A77F ; Changes_When_Uppercased # L& LATIN SMALL LETTER TURNED INSULAR G A781 ; Changes_When_Uppercased # L& LATIN SMALL LETTER TURNED L A783 ; Changes_When_Uppercased # L& LATIN SMALL LETTER INSULAR R A785 ; Changes_When_Uppercased # L& LATIN SMALL LETTER INSULAR S A787 ; Changes_When_Uppercased # L& LATIN SMALL LETTER INSULAR T A78C ; Changes_When_Uppercased # L& LATIN SMALL LETTER SALTILLO A791 ; Changes_When_Uppercased # L& LATIN SMALL LETTER N WITH DESCENDER A793 ; Changes_When_Uppercased # L& LATIN SMALL LETTER C WITH BAR A797 ; Changes_When_Uppercased # L& LATIN SMALL LETTER B WITH FLOURISH A799 ; Changes_When_Uppercased # L& LATIN SMALL LETTER F WITH STROKE A79B ; Changes_When_Uppercased # L& LATIN SMALL LETTER VOLAPUK AE A79D ; Changes_When_Uppercased # L& LATIN SMALL LETTER VOLAPUK OE A79F ; Changes_When_Uppercased # L& LATIN SMALL LETTER VOLAPUK UE A7A1 ; Changes_When_Uppercased # L& LATIN SMALL LETTER G WITH OBLIQUE STROKE A7A3 ; Changes_When_Uppercased # L& LATIN SMALL LETTER K WITH OBLIQUE STROKE A7A5 ; Changes_When_Uppercased # L& LATIN SMALL LETTER N WITH OBLIQUE STROKE A7A7 ; Changes_When_Uppercased # L& LATIN SMALL LETTER R WITH OBLIQUE STROKE A7A9 ; Changes_When_Uppercased # L& LATIN SMALL LETTER S WITH OBLIQUE STROKE A7B5 ; Changes_When_Uppercased # L& LATIN SMALL LETTER BETA A7B7 ; Changes_When_Uppercased # L& LATIN SMALL LETTER OMEGA AB53 ; Changes_When_Uppercased # L& LATIN SMALL LETTER CHI AB70..ABBF ; Changes_When_Uppercased # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA FB00..FB06 ; Changes_When_Uppercased # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST FB13..FB17 ; Changes_When_Uppercased # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH FF41..FF5A ; Changes_When_Uppercased # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z 10428..1044F ; Changes_When_Uppercased # L& [40] DESERET SMALL LETTER LONG I..DESERET SMALL LETTER EW 104D8..104FB ; Changes_When_Uppercased # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA 10CC0..10CF2 ; Changes_When_Uppercased # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US 118C0..118DF ; Changes_When_Uppercased # L& [32] WARANG CITI SMALL LETTER NGAA..WARANG CITI SMALL LETTER VIYO 1E922..1E943 ; Changes_When_Uppercased # L& [34] ADLAM SMALL LETTER ALIF..ADLAM SMALL LETTER SHA # Total code points: 1396 # ================================================ # Derived Property: Changes_When_Titlecased (CWT) # Characters whose normalized forms are not stable under a toTitlecase mapping. # For more information, see D141 in Section 3.13, "Default Case Algorithms". # Changes_When_Titlecased(X) is true when toTitlecase(toNFD(X)) != toNFD(X) 0061..007A ; Changes_When_Titlecased # L& [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z 00B5 ; Changes_When_Titlecased # L& MICRO SIGN 00DF..00F6 ; Changes_When_Titlecased # L& [24] LATIN SMALL LETTER SHARP S..LATIN SMALL LETTER O WITH DIAERESIS 00F8..00FF ; Changes_When_Titlecased # L& [8] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER Y WITH DIAERESIS 0101 ; Changes_When_Titlecased # L& LATIN SMALL LETTER A WITH MACRON 0103 ; Changes_When_Titlecased # L& LATIN SMALL LETTER A WITH BREVE 0105 ; Changes_When_Titlecased # L& LATIN SMALL LETTER A WITH OGONEK 0107 ; Changes_When_Titlecased # L& LATIN SMALL LETTER C WITH ACUTE 0109 ; Changes_When_Titlecased # L& LATIN SMALL LETTER C WITH CIRCUMFLEX 010B ; Changes_When_Titlecased # L& LATIN SMALL LETTER C WITH DOT ABOVE 010D ; Changes_When_Titlecased # L& LATIN SMALL LETTER C WITH CARON 010F ; Changes_When_Titlecased # L& LATIN SMALL LETTER D WITH CARON 0111 ; Changes_When_Titlecased # L& LATIN SMALL LETTER D WITH STROKE 0113 ; Changes_When_Titlecased # L& LATIN SMALL LETTER E WITH MACRON 0115 ; Changes_When_Titlecased # L& LATIN SMALL LETTER E WITH BREVE 0117 ; Changes_When_Titlecased # L& LATIN SMALL LETTER E WITH DOT ABOVE 0119 ; Changes_When_Titlecased # L& LATIN SMALL LETTER E WITH OGONEK 011B ; Changes_When_Titlecased # L& LATIN SMALL LETTER E WITH CARON 011D ; Changes_When_Titlecased # L& LATIN SMALL LETTER G WITH CIRCUMFLEX 011F ; Changes_When_Titlecased # L& LATIN SMALL LETTER G WITH BREVE 0121 ; Changes_When_Titlecased # L& LATIN SMALL LETTER G WITH DOT ABOVE 0123 ; Changes_When_Titlecased # L& LATIN SMALL LETTER G WITH CEDILLA 0125 ; Changes_When_Titlecased # L& LATIN SMALL LETTER H WITH CIRCUMFLEX 0127 ; Changes_When_Titlecased # L& LATIN SMALL LETTER H WITH STROKE 0129 ; Changes_When_Titlecased # L& LATIN SMALL LETTER I WITH TILDE 012B ; Changes_When_Titlecased # L& LATIN SMALL LETTER I WITH MACRON 012D ; Changes_When_Titlecased # L& LATIN SMALL LETTER I WITH BREVE 012F ; Changes_When_Titlecased # L& LATIN SMALL LETTER I WITH OGONEK 0131 ; Changes_When_Titlecased # L& LATIN SMALL LETTER DOTLESS I 0133 ; Changes_When_Titlecased # L& LATIN SMALL LIGATURE IJ 0135 ; Changes_When_Titlecased # L& LATIN SMALL LETTER J WITH CIRCUMFLEX 0137 ; Changes_When_Titlecased # L& LATIN SMALL LETTER K WITH CEDILLA 013A ; Changes_When_Titlecased # L& LATIN SMALL LETTER L WITH ACUTE 013C ; Changes_When_Titlecased # L& LATIN SMALL LETTER L WITH CEDILLA 013E ; Changes_When_Titlecased # L& LATIN SMALL LETTER L WITH CARON 0140 ; Changes_When_Titlecased # L& LATIN SMALL LETTER L WITH MIDDLE DOT 0142 ; Changes_When_Titlecased # L& LATIN SMALL LETTER L WITH STROKE 0144 ; Changes_When_Titlecased # L& LATIN SMALL LETTER N WITH ACUTE 0146 ; Changes_When_Titlecased # L& LATIN SMALL LETTER N WITH CEDILLA 0148..0149 ; Changes_When_Titlecased # L& [2] LATIN SMALL LETTER N WITH CARON..LATIN SMALL LETTER N PRECEDED BY APOSTROPHE 014B ; Changes_When_Titlecased # L& LATIN SMALL LETTER ENG 014D ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH MACRON 014F ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH BREVE 0151 ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH DOUBLE ACUTE 0153 ; Changes_When_Titlecased # L& LATIN SMALL LIGATURE OE 0155 ; Changes_When_Titlecased # L& LATIN SMALL LETTER R WITH ACUTE 0157 ; Changes_When_Titlecased # L& LATIN SMALL LETTER R WITH CEDILLA 0159 ; Changes_When_Titlecased # L& LATIN SMALL LETTER R WITH CARON 015B ; Changes_When_Titlecased # L& LATIN SMALL LETTER S WITH ACUTE 015D ; Changes_When_Titlecased # L& LATIN SMALL LETTER S WITH CIRCUMFLEX 015F ; Changes_When_Titlecased # L& LATIN SMALL LETTER S WITH CEDILLA 0161 ; Changes_When_Titlecased # L& LATIN SMALL LETTER S WITH CARON 0163 ; Changes_When_Titlecased # L& LATIN SMALL LETTER T WITH CEDILLA 0165 ; Changes_When_Titlecased # L& LATIN SMALL LETTER T WITH CARON 0167 ; Changes_When_Titlecased # L& LATIN SMALL LETTER T WITH STROKE 0169 ; Changes_When_Titlecased # L& LATIN SMALL LETTER U WITH TILDE 016B ; Changes_When_Titlecased # L& LATIN SMALL LETTER U WITH MACRON 016D ; Changes_When_Titlecased # L& LATIN SMALL LETTER U WITH BREVE 016F ; Changes_When_Titlecased # L& LATIN SMALL LETTER U WITH RING ABOVE 0171 ; Changes_When_Titlecased # L& LATIN SMALL LETTER U WITH DOUBLE ACUTE 0173 ; Changes_When_Titlecased # L& LATIN SMALL LETTER U WITH OGONEK 0175 ; Changes_When_Titlecased # L& LATIN SMALL LETTER W WITH CIRCUMFLEX 0177 ; Changes_When_Titlecased # L& LATIN SMALL LETTER Y WITH CIRCUMFLEX 017A ; Changes_When_Titlecased # L& LATIN SMALL LETTER Z WITH ACUTE 017C ; Changes_When_Titlecased # L& LATIN SMALL LETTER Z WITH DOT ABOVE 017E..0180 ; Changes_When_Titlecased # L& [3] LATIN SMALL LETTER Z WITH CARON..LATIN SMALL LETTER B WITH STROKE 0183 ; Changes_When_Titlecased # L& LATIN SMALL LETTER B WITH TOPBAR 0185 ; Changes_When_Titlecased # L& LATIN SMALL LETTER TONE SIX 0188 ; Changes_When_Titlecased # L& LATIN SMALL LETTER C WITH HOOK 018C ; Changes_When_Titlecased # L& LATIN SMALL LETTER D WITH TOPBAR 0192 ; Changes_When_Titlecased # L& LATIN SMALL LETTER F WITH HOOK 0195 ; Changes_When_Titlecased # L& LATIN SMALL LETTER HV 0199..019A ; Changes_When_Titlecased # L& [2] LATIN SMALL LETTER K WITH HOOK..LATIN SMALL LETTER L WITH BAR 019E ; Changes_When_Titlecased # L& LATIN SMALL LETTER N WITH LONG RIGHT LEG 01A1 ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH HORN 01A3 ; Changes_When_Titlecased # L& LATIN SMALL LETTER OI 01A5 ; Changes_When_Titlecased # L& LATIN SMALL LETTER P WITH HOOK 01A8 ; Changes_When_Titlecased # L& LATIN SMALL LETTER TONE TWO 01AD ; Changes_When_Titlecased # L& LATIN SMALL LETTER T WITH HOOK 01B0 ; Changes_When_Titlecased # L& LATIN SMALL LETTER U WITH HORN 01B4 ; Changes_When_Titlecased # L& LATIN SMALL LETTER Y WITH HOOK 01B6 ; Changes_When_Titlecased # L& LATIN SMALL LETTER Z WITH STROKE 01B9 ; Changes_When_Titlecased # L& LATIN SMALL LETTER EZH REVERSED 01BD ; Changes_When_Titlecased # L& LATIN SMALL LETTER TONE FIVE 01BF ; Changes_When_Titlecased # L& LATIN LETTER WYNN 01C4 ; Changes_When_Titlecased # L& LATIN CAPITAL LETTER DZ WITH CARON 01C6..01C7 ; Changes_When_Titlecased # L& [2] LATIN SMALL LETTER DZ WITH CARON..LATIN CAPITAL LETTER LJ 01C9..01CA ; Changes_When_Titlecased # L& [2] LATIN SMALL LETTER LJ..LATIN CAPITAL LETTER NJ 01CC ; Changes_When_Titlecased # L& LATIN SMALL LETTER NJ 01CE ; Changes_When_Titlecased # L& LATIN SMALL LETTER A WITH CARON 01D0 ; Changes_When_Titlecased # L& LATIN SMALL LETTER I WITH CARON 01D2 ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH CARON 01D4 ; Changes_When_Titlecased # L& LATIN SMALL LETTER U WITH CARON 01D6 ; Changes_When_Titlecased # L& LATIN SMALL LETTER U WITH DIAERESIS AND MACRON 01D8 ; Changes_When_Titlecased # L& LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE 01DA ; Changes_When_Titlecased # L& LATIN SMALL LETTER U WITH DIAERESIS AND CARON 01DC..01DD ; Changes_When_Titlecased # L& [2] LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE..LATIN SMALL LETTER TURNED E 01DF ; Changes_When_Titlecased # L& LATIN SMALL LETTER A WITH DIAERESIS AND MACRON 01E1 ; Changes_When_Titlecased # L& LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON 01E3 ; Changes_When_Titlecased # L& LATIN SMALL LETTER AE WITH MACRON 01E5 ; Changes_When_Titlecased # L& LATIN SMALL LETTER G WITH STROKE 01E7 ; Changes_When_Titlecased # L& LATIN SMALL LETTER G WITH CARON 01E9 ; Changes_When_Titlecased # L& LATIN SMALL LETTER K WITH CARON 01EB ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH OGONEK 01ED ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH OGONEK AND MACRON 01EF..01F1 ; Changes_When_Titlecased # L& [3] LATIN SMALL LETTER EZH WITH CARON..LATIN CAPITAL LETTER DZ 01F3 ; Changes_When_Titlecased # L& LATIN SMALL LETTER DZ 01F5 ; Changes_When_Titlecased # L& LATIN SMALL LETTER G WITH ACUTE 01F9 ; Changes_When_Titlecased # L& LATIN SMALL LETTER N WITH GRAVE 01FB ; Changes_When_Titlecased # L& LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE 01FD ; Changes_When_Titlecased # L& LATIN SMALL LETTER AE WITH ACUTE 01FF ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH STROKE AND ACUTE 0201 ; Changes_When_Titlecased # L& LATIN SMALL LETTER A WITH DOUBLE GRAVE 0203 ; Changes_When_Titlecased # L& LATIN SMALL LETTER A WITH INVERTED BREVE 0205 ; Changes_When_Titlecased # L& LATIN SMALL LETTER E WITH DOUBLE GRAVE 0207 ; Changes_When_Titlecased # L& LATIN SMALL LETTER E WITH INVERTED BREVE 0209 ; Changes_When_Titlecased # L& LATIN SMALL LETTER I WITH DOUBLE GRAVE 020B ; Changes_When_Titlecased # L& LATIN SMALL LETTER I WITH INVERTED BREVE 020D ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH DOUBLE GRAVE 020F ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH INVERTED BREVE 0211 ; Changes_When_Titlecased # L& LATIN SMALL LETTER R WITH DOUBLE GRAVE 0213 ; Changes_When_Titlecased # L& LATIN SMALL LETTER R WITH INVERTED BREVE 0215 ; Changes_When_Titlecased # L& LATIN SMALL LETTER U WITH DOUBLE GRAVE 0217 ; Changes_When_Titlecased # L& LATIN SMALL LETTER U WITH INVERTED BREVE 0219 ; Changes_When_Titlecased # L& LATIN SMALL LETTER S WITH COMMA BELOW 021B ; Changes_When_Titlecased # L& LATIN SMALL LETTER T WITH COMMA BELOW 021D ; Changes_When_Titlecased # L& LATIN SMALL LETTER YOGH 021F ; Changes_When_Titlecased # L& LATIN SMALL LETTER H WITH CARON 0223 ; Changes_When_Titlecased # L& LATIN SMALL LETTER OU 0225 ; Changes_When_Titlecased # L& LATIN SMALL LETTER Z WITH HOOK 0227 ; Changes_When_Titlecased # L& LATIN SMALL LETTER A WITH DOT ABOVE 0229 ; Changes_When_Titlecased # L& LATIN SMALL LETTER E WITH CEDILLA 022B ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH DIAERESIS AND MACRON 022D ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH TILDE AND MACRON 022F ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH DOT ABOVE 0231 ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON 0233 ; Changes_When_Titlecased # L& LATIN SMALL LETTER Y WITH MACRON 023C ; Changes_When_Titlecased # L& LATIN SMALL LETTER C WITH STROKE 023F..0240 ; Changes_When_Titlecased # L& [2] LATIN SMALL LETTER S WITH SWASH TAIL..LATIN SMALL LETTER Z WITH SWASH TAIL 0242 ; Changes_When_Titlecased # L& LATIN SMALL LETTER GLOTTAL STOP 0247 ; Changes_When_Titlecased # L& LATIN SMALL LETTER E WITH STROKE 0249 ; Changes_When_Titlecased # L& LATIN SMALL LETTER J WITH STROKE 024B ; Changes_When_Titlecased # L& LATIN SMALL LETTER Q WITH HOOK TAIL 024D ; Changes_When_Titlecased # L& LATIN SMALL LETTER R WITH STROKE 024F..0254 ; Changes_When_Titlecased # L& [6] LATIN SMALL LETTER Y WITH STROKE..LATIN SMALL LETTER OPEN O 0256..0257 ; Changes_When_Titlecased # L& [2] LATIN SMALL LETTER D WITH TAIL..LATIN SMALL LETTER D WITH HOOK 0259 ; Changes_When_Titlecased # L& LATIN SMALL LETTER SCHWA 025B..025C ; Changes_When_Titlecased # L& [2] LATIN SMALL LETTER OPEN E..LATIN SMALL LETTER REVERSED OPEN E 0260..0261 ; Changes_When_Titlecased # L& [2] LATIN SMALL LETTER G WITH HOOK..LATIN SMALL LETTER SCRIPT G 0263 ; Changes_When_Titlecased # L& LATIN SMALL LETTER GAMMA 0265..0266 ; Changes_When_Titlecased # L& [2] LATIN SMALL LETTER TURNED H..LATIN SMALL LETTER H WITH HOOK 0268..026C ; Changes_When_Titlecased # L& [5] LATIN SMALL LETTER I WITH STROKE..LATIN SMALL LETTER L WITH BELT 026F ; Changes_When_Titlecased # L& LATIN SMALL LETTER TURNED M 0271..0272 ; Changes_When_Titlecased # L& [2] LATIN SMALL LETTER M WITH HOOK..LATIN SMALL LETTER N WITH LEFT HOOK 0275 ; Changes_When_Titlecased # L& LATIN SMALL LETTER BARRED O 027D ; Changes_When_Titlecased # L& LATIN SMALL LETTER R WITH TAIL 0280 ; Changes_When_Titlecased # L& LATIN LETTER SMALL CAPITAL R 0283 ; Changes_When_Titlecased # L& LATIN SMALL LETTER ESH 0287..028C ; Changes_When_Titlecased # L& [6] LATIN SMALL LETTER TURNED T..LATIN SMALL LETTER TURNED V 0292 ; Changes_When_Titlecased # L& LATIN SMALL LETTER EZH 029D..029E ; Changes_When_Titlecased # L& [2] LATIN SMALL LETTER J WITH CROSSED-TAIL..LATIN SMALL LETTER TURNED K 0345 ; Changes_When_Titlecased # Mn COMBINING GREEK YPOGEGRAMMENI 0371 ; Changes_When_Titlecased # L& GREEK SMALL LETTER HETA 0373 ; Changes_When_Titlecased # L& GREEK SMALL LETTER ARCHAIC SAMPI 0377 ; Changes_When_Titlecased # L& GREEK SMALL LETTER PAMPHYLIAN DIGAMMA 037B..037D ; Changes_When_Titlecased # L& [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL 0390 ; Changes_When_Titlecased # L& GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS 03AC..03CE ; Changes_When_Titlecased # L& [35] GREEK SMALL LETTER ALPHA WITH TONOS..GREEK SMALL LETTER OMEGA WITH TONOS 03D0..03D1 ; Changes_When_Titlecased # L& [2] GREEK BETA SYMBOL..GREEK THETA SYMBOL 03D5..03D7 ; Changes_When_Titlecased # L& [3] GREEK PHI SYMBOL..GREEK KAI SYMBOL 03D9 ; Changes_When_Titlecased # L& GREEK SMALL LETTER ARCHAIC KOPPA 03DB ; Changes_When_Titlecased # L& GREEK SMALL LETTER STIGMA 03DD ; Changes_When_Titlecased # L& GREEK SMALL LETTER DIGAMMA 03DF ; Changes_When_Titlecased # L& GREEK SMALL LETTER KOPPA 03E1 ; Changes_When_Titlecased # L& GREEK SMALL LETTER SAMPI 03E3 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER SHEI 03E5 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER FEI 03E7 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER KHEI 03E9 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER HORI 03EB ; Changes_When_Titlecased # L& COPTIC SMALL LETTER GANGIA 03ED ; Changes_When_Titlecased # L& COPTIC SMALL LETTER SHIMA 03EF..03F3 ; Changes_When_Titlecased # L& [5] COPTIC SMALL LETTER DEI..GREEK LETTER YOT 03F5 ; Changes_When_Titlecased # L& GREEK LUNATE EPSILON SYMBOL 03F8 ; Changes_When_Titlecased # L& GREEK SMALL LETTER SHO 03FB ; Changes_When_Titlecased # L& GREEK SMALL LETTER SAN 0430..045F ; Changes_When_Titlecased # L& [48] CYRILLIC SMALL LETTER A..CYRILLIC SMALL LETTER DZHE 0461 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER OMEGA 0463 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER YAT 0465 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER IOTIFIED E 0467 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER LITTLE YUS 0469 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS 046B ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER BIG YUS 046D ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER IOTIFIED BIG YUS 046F ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER KSI 0471 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER PSI 0473 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER FITA 0475 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER IZHITSA 0477 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT 0479 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER UK 047B ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER ROUND OMEGA 047D ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER OMEGA WITH TITLO 047F ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER OT 0481 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER KOPPA 048B ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER SHORT I WITH TAIL 048D ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER SEMISOFT SIGN 048F ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER ER WITH TICK 0491 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER GHE WITH UPTURN 0493 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER GHE WITH STROKE 0495 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK 0497 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER ZHE WITH DESCENDER 0499 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER ZE WITH DESCENDER 049B ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER KA WITH DESCENDER 049D ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE 049F ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER KA WITH STROKE 04A1 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER BASHKIR KA 04A3 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER EN WITH DESCENDER 04A5 ; Changes_When_Titlecased # L& CYRILLIC SMALL LIGATURE EN GHE 04A7 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK 04A9 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER ABKHASIAN HA 04AB ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER ES WITH DESCENDER 04AD ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER TE WITH DESCENDER 04AF ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER STRAIGHT U 04B1 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE 04B3 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER HA WITH DESCENDER 04B5 ; Changes_When_Titlecased # L& CYRILLIC SMALL LIGATURE TE TSE 04B7 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER CHE WITH DESCENDER 04B9 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE 04BB ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER SHHA 04BD ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER ABKHASIAN CHE 04BF ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER 04C2 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER ZHE WITH BREVE 04C4 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER KA WITH HOOK 04C6 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER EL WITH TAIL 04C8 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER EN WITH HOOK 04CA ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER EN WITH TAIL 04CC ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER KHAKASSIAN CHE 04CE..04CF ; Changes_When_Titlecased # L& [2] CYRILLIC SMALL LETTER EM WITH TAIL..CYRILLIC SMALL LETTER PALOCHKA 04D1 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER A WITH BREVE 04D3 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER A WITH DIAERESIS 04D5 ; Changes_When_Titlecased # L& CYRILLIC SMALL LIGATURE A IE 04D7 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER IE WITH BREVE 04D9 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER SCHWA 04DB ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS 04DD ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER ZHE WITH DIAERESIS 04DF ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER ZE WITH DIAERESIS 04E1 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER ABKHASIAN DZE 04E3 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER I WITH MACRON 04E5 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER I WITH DIAERESIS 04E7 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER O WITH DIAERESIS 04E9 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER BARRED O 04EB ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS 04ED ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER E WITH DIAERESIS 04EF ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER U WITH MACRON 04F1 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER U WITH DIAERESIS 04F3 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE 04F5 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER CHE WITH DIAERESIS 04F7 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER GHE WITH DESCENDER 04F9 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER YERU WITH DIAERESIS 04FB ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK 04FD ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER HA WITH HOOK 04FF ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER HA WITH STROKE 0501 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER KOMI DE 0503 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER KOMI DJE 0505 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER KOMI ZJE 0507 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER KOMI DZJE 0509 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER KOMI LJE 050B ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER KOMI NJE 050D ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER KOMI SJE 050F ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER KOMI TJE 0511 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER REVERSED ZE 0513 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER EL WITH HOOK 0515 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER LHA 0517 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER RHA 0519 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER YAE 051B ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER QA 051D ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER WE 051F ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER ALEUT KA 0521 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK 0523 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK 0525 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER PE WITH DESCENDER 0527 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER SHHA WITH DESCENDER 0529 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER EN WITH LEFT HOOK 052B ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER DZZHE 052D ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER DCHE 052F ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER EL WITH DESCENDER 0561..0587 ; Changes_When_Titlecased # L& [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN 13F8..13FD ; Changes_When_Titlecased # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV 1C80..1C88 ; Changes_When_Titlecased # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK 1D79 ; Changes_When_Titlecased # L& LATIN SMALL LETTER INSULAR G 1D7D ; Changes_When_Titlecased # L& LATIN SMALL LETTER P WITH STROKE 1E01 ; Changes_When_Titlecased # L& LATIN SMALL LETTER A WITH RING BELOW 1E03 ; Changes_When_Titlecased # L& LATIN SMALL LETTER B WITH DOT ABOVE 1E05 ; Changes_When_Titlecased # L& LATIN SMALL LETTER B WITH DOT BELOW 1E07 ; Changes_When_Titlecased # L& LATIN SMALL LETTER B WITH LINE BELOW 1E09 ; Changes_When_Titlecased # L& LATIN SMALL LETTER C WITH CEDILLA AND ACUTE 1E0B ; Changes_When_Titlecased # L& LATIN SMALL LETTER D WITH DOT ABOVE 1E0D ; Changes_When_Titlecased # L& LATIN SMALL LETTER D WITH DOT BELOW 1E0F ; Changes_When_Titlecased # L& LATIN SMALL LETTER D WITH LINE BELOW 1E11 ; Changes_When_Titlecased # L& LATIN SMALL LETTER D WITH CEDILLA 1E13 ; Changes_When_Titlecased # L& LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW 1E15 ; Changes_When_Titlecased # L& LATIN SMALL LETTER E WITH MACRON AND GRAVE 1E17 ; Changes_When_Titlecased # L& LATIN SMALL LETTER E WITH MACRON AND ACUTE 1E19 ; Changes_When_Titlecased # L& LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW 1E1B ; Changes_When_Titlecased # L& LATIN SMALL LETTER E WITH TILDE BELOW 1E1D ; Changes_When_Titlecased # L& LATIN SMALL LETTER E WITH CEDILLA AND BREVE 1E1F ; Changes_When_Titlecased # L& LATIN SMALL LETTER F WITH DOT ABOVE 1E21 ; Changes_When_Titlecased # L& LATIN SMALL LETTER G WITH MACRON 1E23 ; Changes_When_Titlecased # L& LATIN SMALL LETTER H WITH DOT ABOVE 1E25 ; Changes_When_Titlecased # L& LATIN SMALL LETTER H WITH DOT BELOW 1E27 ; Changes_When_Titlecased # L& LATIN SMALL LETTER H WITH DIAERESIS 1E29 ; Changes_When_Titlecased # L& LATIN SMALL LETTER H WITH CEDILLA 1E2B ; Changes_When_Titlecased # L& LATIN SMALL LETTER H WITH BREVE BELOW 1E2D ; Changes_When_Titlecased # L& LATIN SMALL LETTER I WITH TILDE BELOW 1E2F ; Changes_When_Titlecased # L& LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE 1E31 ; Changes_When_Titlecased # L& LATIN SMALL LETTER K WITH ACUTE 1E33 ; Changes_When_Titlecased # L& LATIN SMALL LETTER K WITH DOT BELOW 1E35 ; Changes_When_Titlecased # L& LATIN SMALL LETTER K WITH LINE BELOW 1E37 ; Changes_When_Titlecased # L& LATIN SMALL LETTER L WITH DOT BELOW 1E39 ; Changes_When_Titlecased # L& LATIN SMALL LETTER L WITH DOT BELOW AND MACRON 1E3B ; Changes_When_Titlecased # L& LATIN SMALL LETTER L WITH LINE BELOW 1E3D ; Changes_When_Titlecased # L& LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW 1E3F ; Changes_When_Titlecased # L& LATIN SMALL LETTER M WITH ACUTE 1E41 ; Changes_When_Titlecased # L& LATIN SMALL LETTER M WITH DOT ABOVE 1E43 ; Changes_When_Titlecased # L& LATIN SMALL LETTER M WITH DOT BELOW 1E45 ; Changes_When_Titlecased # L& LATIN SMALL LETTER N WITH DOT ABOVE 1E47 ; Changes_When_Titlecased # L& LATIN SMALL LETTER N WITH DOT BELOW 1E49 ; Changes_When_Titlecased # L& LATIN SMALL LETTER N WITH LINE BELOW 1E4B ; Changes_When_Titlecased # L& LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW 1E4D ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH TILDE AND ACUTE 1E4F ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH TILDE AND DIAERESIS 1E51 ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH MACRON AND GRAVE 1E53 ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH MACRON AND ACUTE 1E55 ; Changes_When_Titlecased # L& LATIN SMALL LETTER P WITH ACUTE 1E57 ; Changes_When_Titlecased # L& LATIN SMALL LETTER P WITH DOT ABOVE 1E59 ; Changes_When_Titlecased # L& LATIN SMALL LETTER R WITH DOT ABOVE 1E5B ; Changes_When_Titlecased # L& LATIN SMALL LETTER R WITH DOT BELOW 1E5D ; Changes_When_Titlecased # L& LATIN SMALL LETTER R WITH DOT BELOW AND MACRON 1E5F ; Changes_When_Titlecased # L& LATIN SMALL LETTER R WITH LINE BELOW 1E61 ; Changes_When_Titlecased # L& LATIN SMALL LETTER S WITH DOT ABOVE 1E63 ; Changes_When_Titlecased # L& LATIN SMALL LETTER S WITH DOT BELOW 1E65 ; Changes_When_Titlecased # L& LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE 1E67 ; Changes_When_Titlecased # L& LATIN SMALL LETTER S WITH CARON AND DOT ABOVE 1E69 ; Changes_When_Titlecased # L& LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE 1E6B ; Changes_When_Titlecased # L& LATIN SMALL LETTER T WITH DOT ABOVE 1E6D ; Changes_When_Titlecased # L& LATIN SMALL LETTER T WITH DOT BELOW 1E6F ; Changes_When_Titlecased # L& LATIN SMALL LETTER T WITH LINE BELOW 1E71 ; Changes_When_Titlecased # L& LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW 1E73 ; Changes_When_Titlecased # L& LATIN SMALL LETTER U WITH DIAERESIS BELOW 1E75 ; Changes_When_Titlecased # L& LATIN SMALL LETTER U WITH TILDE BELOW 1E77 ; Changes_When_Titlecased # L& LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW 1E79 ; Changes_When_Titlecased # L& LATIN SMALL LETTER U WITH TILDE AND ACUTE 1E7B ; Changes_When_Titlecased # L& LATIN SMALL LETTER U WITH MACRON AND DIAERESIS 1E7D ; Changes_When_Titlecased # L& LATIN SMALL LETTER V WITH TILDE 1E7F ; Changes_When_Titlecased # L& LATIN SMALL LETTER V WITH DOT BELOW 1E81 ; Changes_When_Titlecased # L& LATIN SMALL LETTER W WITH GRAVE 1E83 ; Changes_When_Titlecased # L& LATIN SMALL LETTER W WITH ACUTE 1E85 ; Changes_When_Titlecased # L& LATIN SMALL LETTER W WITH DIAERESIS 1E87 ; Changes_When_Titlecased # L& LATIN SMALL LETTER W WITH DOT ABOVE 1E89 ; Changes_When_Titlecased # L& LATIN SMALL LETTER W WITH DOT BELOW 1E8B ; Changes_When_Titlecased # L& LATIN SMALL LETTER X WITH DOT ABOVE 1E8D ; Changes_When_Titlecased # L& LATIN SMALL LETTER X WITH DIAERESIS 1E8F ; Changes_When_Titlecased # L& LATIN SMALL LETTER Y WITH DOT ABOVE 1E91 ; Changes_When_Titlecased # L& LATIN SMALL LETTER Z WITH CIRCUMFLEX 1E93 ; Changes_When_Titlecased # L& LATIN SMALL LETTER Z WITH DOT BELOW 1E95..1E9B ; Changes_When_Titlecased # L& [7] LATIN SMALL LETTER Z WITH LINE BELOW..LATIN SMALL LETTER LONG S WITH DOT ABOVE 1EA1 ; Changes_When_Titlecased # L& LATIN SMALL LETTER A WITH DOT BELOW 1EA3 ; Changes_When_Titlecased # L& LATIN SMALL LETTER A WITH HOOK ABOVE 1EA5 ; Changes_When_Titlecased # L& LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE 1EA7 ; Changes_When_Titlecased # L& LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE 1EA9 ; Changes_When_Titlecased # L& LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE 1EAB ; Changes_When_Titlecased # L& LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE 1EAD ; Changes_When_Titlecased # L& LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW 1EAF ; Changes_When_Titlecased # L& LATIN SMALL LETTER A WITH BREVE AND ACUTE 1EB1 ; Changes_When_Titlecased # L& LATIN SMALL LETTER A WITH BREVE AND GRAVE 1EB3 ; Changes_When_Titlecased # L& LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE 1EB5 ; Changes_When_Titlecased # L& LATIN SMALL LETTER A WITH BREVE AND TILDE 1EB7 ; Changes_When_Titlecased # L& LATIN SMALL LETTER A WITH BREVE AND DOT BELOW 1EB9 ; Changes_When_Titlecased # L& LATIN SMALL LETTER E WITH DOT BELOW 1EBB ; Changes_When_Titlecased # L& LATIN SMALL LETTER E WITH HOOK ABOVE 1EBD ; Changes_When_Titlecased # L& LATIN SMALL LETTER E WITH TILDE 1EBF ; Changes_When_Titlecased # L& LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE 1EC1 ; Changes_When_Titlecased # L& LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE 1EC3 ; Changes_When_Titlecased # L& LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE 1EC5 ; Changes_When_Titlecased # L& LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE 1EC7 ; Changes_When_Titlecased # L& LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW 1EC9 ; Changes_When_Titlecased # L& LATIN SMALL LETTER I WITH HOOK ABOVE 1ECB ; Changes_When_Titlecased # L& LATIN SMALL LETTER I WITH DOT BELOW 1ECD ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH DOT BELOW 1ECF ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH HOOK ABOVE 1ED1 ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE 1ED3 ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE 1ED5 ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE 1ED7 ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE 1ED9 ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW 1EDB ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH HORN AND ACUTE 1EDD ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH HORN AND GRAVE 1EDF ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE 1EE1 ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH HORN AND TILDE 1EE3 ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH HORN AND DOT BELOW 1EE5 ; Changes_When_Titlecased # L& LATIN SMALL LETTER U WITH DOT BELOW 1EE7 ; Changes_When_Titlecased # L& LATIN SMALL LETTER U WITH HOOK ABOVE 1EE9 ; Changes_When_Titlecased # L& LATIN SMALL LETTER U WITH HORN AND ACUTE 1EEB ; Changes_When_Titlecased # L& LATIN SMALL LETTER U WITH HORN AND GRAVE 1EED ; Changes_When_Titlecased # L& LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE 1EEF ; Changes_When_Titlecased # L& LATIN SMALL LETTER U WITH HORN AND TILDE 1EF1 ; Changes_When_Titlecased # L& LATIN SMALL LETTER U WITH HORN AND DOT BELOW 1EF3 ; Changes_When_Titlecased # L& LATIN SMALL LETTER Y WITH GRAVE 1EF5 ; Changes_When_Titlecased # L& LATIN SMALL LETTER Y WITH DOT BELOW 1EF7 ; Changes_When_Titlecased # L& LATIN SMALL LETTER Y WITH HOOK ABOVE 1EF9 ; Changes_When_Titlecased # L& LATIN SMALL LETTER Y WITH TILDE 1EFB ; Changes_When_Titlecased # L& LATIN SMALL LETTER MIDDLE-WELSH LL 1EFD ; Changes_When_Titlecased # L& LATIN SMALL LETTER MIDDLE-WELSH V 1EFF..1F07 ; Changes_When_Titlecased # L& [9] LATIN SMALL LETTER Y WITH LOOP..GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI 1F10..1F15 ; Changes_When_Titlecased # L& [6] GREEK SMALL LETTER EPSILON WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA 1F20..1F27 ; Changes_When_Titlecased # L& [8] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI 1F30..1F37 ; Changes_When_Titlecased # L& [8] GREEK SMALL LETTER IOTA WITH PSILI..GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI 1F40..1F45 ; Changes_When_Titlecased # L& [6] GREEK SMALL LETTER OMICRON WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA 1F50..1F57 ; Changes_When_Titlecased # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI 1F60..1F67 ; Changes_When_Titlecased # L& [8] GREEK SMALL LETTER OMEGA WITH PSILI..GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI 1F70..1F7D ; Changes_When_Titlecased # L& [14] GREEK SMALL LETTER ALPHA WITH VARIA..GREEK SMALL LETTER OMEGA WITH OXIA 1F80..1F87 ; Changes_When_Titlecased # L& [8] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI 1F90..1F97 ; Changes_When_Titlecased # L& [8] GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI 1FA0..1FA7 ; Changes_When_Titlecased # L& [8] GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI 1FB0..1FB4 ; Changes_When_Titlecased # L& [5] GREEK SMALL LETTER ALPHA WITH VRACHY..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI 1FB6..1FB7 ; Changes_When_Titlecased # L& [2] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI 1FBE ; Changes_When_Titlecased # L& GREEK PROSGEGRAMMENI 1FC2..1FC4 ; Changes_When_Titlecased # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI 1FC6..1FC7 ; Changes_When_Titlecased # L& [2] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI 1FD0..1FD3 ; Changes_When_Titlecased # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA 1FD6..1FD7 ; Changes_When_Titlecased # L& [2] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI 1FE0..1FE7 ; Changes_When_Titlecased # L& [8] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI 1FF2..1FF4 ; Changes_When_Titlecased # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI 1FF6..1FF7 ; Changes_When_Titlecased # L& [2] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI 214E ; Changes_When_Titlecased # L& TURNED SMALL F 2170..217F ; Changes_When_Titlecased # Nl [16] SMALL ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND 2184 ; Changes_When_Titlecased # L& LATIN SMALL LETTER REVERSED C 24D0..24E9 ; Changes_When_Titlecased # So [26] CIRCLED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z 2C30..2C5E ; Changes_When_Titlecased # L& [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE 2C61 ; Changes_When_Titlecased # L& LATIN SMALL LETTER L WITH DOUBLE BAR 2C65..2C66 ; Changes_When_Titlecased # L& [2] LATIN SMALL LETTER A WITH STROKE..LATIN SMALL LETTER T WITH DIAGONAL STROKE 2C68 ; Changes_When_Titlecased # L& LATIN SMALL LETTER H WITH DESCENDER 2C6A ; Changes_When_Titlecased # L& LATIN SMALL LETTER K WITH DESCENDER 2C6C ; Changes_When_Titlecased # L& LATIN SMALL LETTER Z WITH DESCENDER 2C73 ; Changes_When_Titlecased # L& LATIN SMALL LETTER W WITH HOOK 2C76 ; Changes_When_Titlecased # L& LATIN SMALL LETTER HALF H 2C81 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER ALFA 2C83 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER VIDA 2C85 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER GAMMA 2C87 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER DALDA 2C89 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER EIE 2C8B ; Changes_When_Titlecased # L& COPTIC SMALL LETTER SOU 2C8D ; Changes_When_Titlecased # L& COPTIC SMALL LETTER ZATA 2C8F ; Changes_When_Titlecased # L& COPTIC SMALL LETTER HATE 2C91 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER THETHE 2C93 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER IAUDA 2C95 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER KAPA 2C97 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER LAULA 2C99 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER MI 2C9B ; Changes_When_Titlecased # L& COPTIC SMALL LETTER NI 2C9D ; Changes_When_Titlecased # L& COPTIC SMALL LETTER KSI 2C9F ; Changes_When_Titlecased # L& COPTIC SMALL LETTER O 2CA1 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER PI 2CA3 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER RO 2CA5 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER SIMA 2CA7 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER TAU 2CA9 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER UA 2CAB ; Changes_When_Titlecased # L& COPTIC SMALL LETTER FI 2CAD ; Changes_When_Titlecased # L& COPTIC SMALL LETTER KHI 2CAF ; Changes_When_Titlecased # L& COPTIC SMALL LETTER PSI 2CB1 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER OOU 2CB3 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER DIALECT-P ALEF 2CB5 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER OLD COPTIC AIN 2CB7 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER CRYPTOGRAMMIC EIE 2CB9 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER DIALECT-P KAPA 2CBB ; Changes_When_Titlecased # L& COPTIC SMALL LETTER DIALECT-P NI 2CBD ; Changes_When_Titlecased # L& COPTIC SMALL LETTER CRYPTOGRAMMIC NI 2CBF ; Changes_When_Titlecased # L& COPTIC SMALL LETTER OLD COPTIC OOU 2CC1 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER SAMPI 2CC3 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER CROSSED SHEI 2CC5 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER OLD COPTIC SHEI 2CC7 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER OLD COPTIC ESH 2CC9 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER AKHMIMIC KHEI 2CCB ; Changes_When_Titlecased # L& COPTIC SMALL LETTER DIALECT-P HORI 2CCD ; Changes_When_Titlecased # L& COPTIC SMALL LETTER OLD COPTIC HORI 2CCF ; Changes_When_Titlecased # L& COPTIC SMALL LETTER OLD COPTIC HA 2CD1 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER L-SHAPED HA 2CD3 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER OLD COPTIC HEI 2CD5 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER OLD COPTIC HAT 2CD7 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER OLD COPTIC GANGIA 2CD9 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER OLD COPTIC DJA 2CDB ; Changes_When_Titlecased # L& COPTIC SMALL LETTER OLD COPTIC SHIMA 2CDD ; Changes_When_Titlecased # L& COPTIC SMALL LETTER OLD NUBIAN SHIMA 2CDF ; Changes_When_Titlecased # L& COPTIC SMALL LETTER OLD NUBIAN NGI 2CE1 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER OLD NUBIAN NYI 2CE3 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER OLD NUBIAN WAU 2CEC ; Changes_When_Titlecased # L& COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI 2CEE ; Changes_When_Titlecased # L& COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA 2CF3 ; Changes_When_Titlecased # L& COPTIC SMALL LETTER BOHAIRIC KHEI 2D00..2D25 ; Changes_When_Titlecased # L& [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE 2D27 ; Changes_When_Titlecased # L& GEORGIAN SMALL LETTER YN 2D2D ; Changes_When_Titlecased # L& GEORGIAN SMALL LETTER AEN A641 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER ZEMLYA A643 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER DZELO A645 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER REVERSED DZE A647 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER IOTA A649 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER DJERV A64B ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER MONOGRAPH UK A64D ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER BROAD OMEGA A64F ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER NEUTRAL YER A651 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER YERU WITH BACK YER A653 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER IOTIFIED YAT A655 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER REVERSED YU A657 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER IOTIFIED A A659 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER CLOSED LITTLE YUS A65B ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER BLENDED YUS A65D ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS A65F ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER YN A661 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER REVERSED TSE A663 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER SOFT DE A665 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER SOFT EL A667 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER SOFT EM A669 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER MONOCULAR O A66B ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER BINOCULAR O A66D ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER DOUBLE MONOCULAR O A681 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER DWE A683 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER DZWE A685 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER ZHWE A687 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER CCHE A689 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER DZZE A68B ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK A68D ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER TWE A68F ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER TSWE A691 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER TSSE A693 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER TCHE A695 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER HWE A697 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER SHWE A699 ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER DOUBLE O A69B ; Changes_When_Titlecased # L& CYRILLIC SMALL LETTER CROSSED O A723 ; Changes_When_Titlecased # L& LATIN SMALL LETTER EGYPTOLOGICAL ALEF A725 ; Changes_When_Titlecased # L& LATIN SMALL LETTER EGYPTOLOGICAL AIN A727 ; Changes_When_Titlecased # L& LATIN SMALL LETTER HENG A729 ; Changes_When_Titlecased # L& LATIN SMALL LETTER TZ A72B ; Changes_When_Titlecased # L& LATIN SMALL LETTER TRESILLO A72D ; Changes_When_Titlecased # L& LATIN SMALL LETTER CUATRILLO A72F ; Changes_When_Titlecased # L& LATIN SMALL LETTER CUATRILLO WITH COMMA A733 ; Changes_When_Titlecased # L& LATIN SMALL LETTER AA A735 ; Changes_When_Titlecased # L& LATIN SMALL LETTER AO A737 ; Changes_When_Titlecased # L& LATIN SMALL LETTER AU A739 ; Changes_When_Titlecased # L& LATIN SMALL LETTER AV A73B ; Changes_When_Titlecased # L& LATIN SMALL LETTER AV WITH HORIZONTAL BAR A73D ; Changes_When_Titlecased # L& LATIN SMALL LETTER AY A73F ; Changes_When_Titlecased # L& LATIN SMALL LETTER REVERSED C WITH DOT A741 ; Changes_When_Titlecased # L& LATIN SMALL LETTER K WITH STROKE A743 ; Changes_When_Titlecased # L& LATIN SMALL LETTER K WITH DIAGONAL STROKE A745 ; Changes_When_Titlecased # L& LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE A747 ; Changes_When_Titlecased # L& LATIN SMALL LETTER BROKEN L A749 ; Changes_When_Titlecased # L& LATIN SMALL LETTER L WITH HIGH STROKE A74B ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH LONG STROKE OVERLAY A74D ; Changes_When_Titlecased # L& LATIN SMALL LETTER O WITH LOOP A74F ; Changes_When_Titlecased # L& LATIN SMALL LETTER OO A751 ; Changes_When_Titlecased # L& LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER A753 ; Changes_When_Titlecased # L& LATIN SMALL LETTER P WITH FLOURISH A755 ; Changes_When_Titlecased # L& LATIN SMALL LETTER P WITH SQUIRREL TAIL A757 ; Changes_When_Titlecased # L& LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER A759 ; Changes_When_Titlecased # L& LATIN SMALL LETTER Q WITH DIAGONAL STROKE A75B ; Changes_When_Titlecased # L& LATIN SMALL LETTER R ROTUNDA A75D ; Changes_When_Titlecased # L& LATIN SMALL LETTER RUM ROTUNDA A75F ; Changes_When_Titlecased # L& LATIN SMALL LETTER V WITH DIAGONAL STROKE A761 ; Changes_When_Titlecased # L& LATIN SMALL LETTER VY A763 ; Changes_When_Titlecased # L& LATIN SMALL LETTER VISIGOTHIC Z A765 ; Changes_When_Titlecased # L& LATIN SMALL LETTER THORN WITH STROKE A767 ; Changes_When_Titlecased # L& LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER A769 ; Changes_When_Titlecased # L& LATIN SMALL LETTER VEND A76B ; Changes_When_Titlecased # L& LATIN SMALL LETTER ET A76D ; Changes_When_Titlecased # L& LATIN SMALL LETTER IS A76F ; Changes_When_Titlecased # L& LATIN SMALL LETTER CON A77A ; Changes_When_Titlecased # L& LATIN SMALL LETTER INSULAR D A77C ; Changes_When_Titlecased # L& LATIN SMALL LETTER INSULAR F A77F ; Changes_When_Titlecased # L& LATIN SMALL LETTER TURNED INSULAR G A781 ; Changes_When_Titlecased # L& LATIN SMALL LETTER TURNED L A783 ; Changes_When_Titlecased # L& LATIN SMALL LETTER INSULAR R A785 ; Changes_When_Titlecased # L& LATIN SMALL LETTER INSULAR S A787 ; Changes_When_Titlecased # L& LATIN SMALL LETTER INSULAR T A78C ; Changes_When_Titlecased # L& LATIN SMALL LETTER SALTILLO A791 ; Changes_When_Titlecased # L& LATIN SMALL LETTER N WITH DESCENDER A793 ; Changes_When_Titlecased # L& LATIN SMALL LETTER C WITH BAR A797 ; Changes_When_Titlecased # L& LATIN SMALL LETTER B WITH FLOURISH A799 ; Changes_When_Titlecased # L& LATIN SMALL LETTER F WITH STROKE A79B ; Changes_When_Titlecased # L& LATIN SMALL LETTER VOLAPUK AE A79D ; Changes_When_Titlecased # L& LATIN SMALL LETTER VOLAPUK OE A79F ; Changes_When_Titlecased # L& LATIN SMALL LETTER VOLAPUK UE A7A1 ; Changes_When_Titlecased # L& LATIN SMALL LETTER G WITH OBLIQUE STROKE A7A3 ; Changes_When_Titlecased # L& LATIN SMALL LETTER K WITH OBLIQUE STROKE A7A5 ; Changes_When_Titlecased # L& LATIN SMALL LETTER N WITH OBLIQUE STROKE A7A7 ; Changes_When_Titlecased # L& LATIN SMALL LETTER R WITH OBLIQUE STROKE A7A9 ; Changes_When_Titlecased # L& LATIN SMALL LETTER S WITH OBLIQUE STROKE A7B5 ; Changes_When_Titlecased # L& LATIN SMALL LETTER BETA A7B7 ; Changes_When_Titlecased # L& LATIN SMALL LETTER OMEGA AB53 ; Changes_When_Titlecased # L& LATIN SMALL LETTER CHI AB70..ABBF ; Changes_When_Titlecased # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA FB00..FB06 ; Changes_When_Titlecased # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST FB13..FB17 ; Changes_When_Titlecased # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH FF41..FF5A ; Changes_When_Titlecased # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z 10428..1044F ; Changes_When_Titlecased # L& [40] DESERET SMALL LETTER LONG I..DESERET SMALL LETTER EW 104D8..104FB ; Changes_When_Titlecased # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA 10CC0..10CF2 ; Changes_When_Titlecased # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US 118C0..118DF ; Changes_When_Titlecased # L& [32] WARANG CITI SMALL LETTER NGAA..WARANG CITI SMALL LETTER VIYO 1E922..1E943 ; Changes_When_Titlecased # L& [34] ADLAM SMALL LETTER ALIF..ADLAM SMALL LETTER SHA # Total code points: 1369 # ================================================ # Derived Property: Changes_When_Casefolded (CWCF) # Characters whose normalized forms are not stable under case folding. # For more information, see D142 in Section 3.13, "Default Case Algorithms". # Changes_When_Casefolded(X) is true when toCasefold(toNFD(X)) != toNFD(X) 0041..005A ; Changes_When_Casefolded # L& [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z 00B5 ; Changes_When_Casefolded # L& MICRO SIGN 00C0..00D6 ; Changes_When_Casefolded # L& [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS 00D8..00DF ; Changes_When_Casefolded # L& [8] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER SHARP S 0100 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER A WITH MACRON 0102 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER A WITH BREVE 0104 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER A WITH OGONEK 0106 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER C WITH ACUTE 0108 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER C WITH CIRCUMFLEX 010A ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER C WITH DOT ABOVE 010C ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER C WITH CARON 010E ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER D WITH CARON 0110 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER D WITH STROKE 0112 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER E WITH MACRON 0114 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER E WITH BREVE 0116 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER E WITH DOT ABOVE 0118 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER E WITH OGONEK 011A ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER E WITH CARON 011C ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER G WITH CIRCUMFLEX 011E ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER G WITH BREVE 0120 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER G WITH DOT ABOVE 0122 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER G WITH CEDILLA 0124 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER H WITH CIRCUMFLEX 0126 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER H WITH STROKE 0128 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER I WITH TILDE 012A ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER I WITH MACRON 012C ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER I WITH BREVE 012E ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER I WITH OGONEK 0130 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER I WITH DOT ABOVE 0132 ; Changes_When_Casefolded # L& LATIN CAPITAL LIGATURE IJ 0134 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER J WITH CIRCUMFLEX 0136 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER K WITH CEDILLA 0139 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER L WITH ACUTE 013B ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER L WITH CEDILLA 013D ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER L WITH CARON 013F ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER L WITH MIDDLE DOT 0141 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER L WITH STROKE 0143 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER N WITH ACUTE 0145 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER N WITH CEDILLA 0147 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER N WITH CARON 0149..014A ; Changes_When_Casefolded # L& [2] LATIN SMALL LETTER N PRECEDED BY APOSTROPHE..LATIN CAPITAL LETTER ENG 014C ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER O WITH MACRON 014E ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER O WITH BREVE 0150 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER O WITH DOUBLE ACUTE 0152 ; Changes_When_Casefolded # L& LATIN CAPITAL LIGATURE OE 0154 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER R WITH ACUTE 0156 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER R WITH CEDILLA 0158 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER R WITH CARON 015A ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER S WITH ACUTE 015C ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER S WITH CIRCUMFLEX 015E ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER S WITH CEDILLA 0160 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER S WITH CARON 0162 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER T WITH CEDILLA 0164 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER T WITH CARON 0166 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER T WITH STROKE 0168 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER U WITH TILDE 016A ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER U WITH MACRON 016C ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER U WITH BREVE 016E ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER U WITH RING ABOVE 0170 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER U WITH DOUBLE ACUTE 0172 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER U WITH OGONEK 0174 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER W WITH CIRCUMFLEX 0176 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER Y WITH CIRCUMFLEX 0178..0179 ; Changes_When_Casefolded # L& [2] LATIN CAPITAL LETTER Y WITH DIAERESIS..LATIN CAPITAL LETTER Z WITH ACUTE 017B ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER Z WITH DOT ABOVE 017D ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER Z WITH CARON 017F ; Changes_When_Casefolded # L& LATIN SMALL LETTER LONG S 0181..0182 ; Changes_When_Casefolded # L& [2] LATIN CAPITAL LETTER B WITH HOOK..LATIN CAPITAL LETTER B WITH TOPBAR 0184 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER TONE SIX 0186..0187 ; Changes_When_Casefolded # L& [2] LATIN CAPITAL LETTER OPEN O..LATIN CAPITAL LETTER C WITH HOOK 0189..018B ; Changes_When_Casefolded # L& [3] LATIN CAPITAL LETTER AFRICAN D..LATIN CAPITAL LETTER D WITH TOPBAR 018E..0191 ; Changes_When_Casefolded # L& [4] LATIN CAPITAL LETTER REVERSED E..LATIN CAPITAL LETTER F WITH HOOK 0193..0194 ; Changes_When_Casefolded # L& [2] LATIN CAPITAL LETTER G WITH HOOK..LATIN CAPITAL LETTER GAMMA 0196..0198 ; Changes_When_Casefolded # L& [3] LATIN CAPITAL LETTER IOTA..LATIN CAPITAL LETTER K WITH HOOK 019C..019D ; Changes_When_Casefolded # L& [2] LATIN CAPITAL LETTER TURNED M..LATIN CAPITAL LETTER N WITH LEFT HOOK 019F..01A0 ; Changes_When_Casefolded # L& [2] LATIN CAPITAL LETTER O WITH MIDDLE TILDE..LATIN CAPITAL LETTER O WITH HORN 01A2 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER OI 01A4 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER P WITH HOOK 01A6..01A7 ; Changes_When_Casefolded # L& [2] LATIN LETTER YR..LATIN CAPITAL LETTER TONE TWO 01A9 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER ESH 01AC ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER T WITH HOOK 01AE..01AF ; Changes_When_Casefolded # L& [2] LATIN CAPITAL LETTER T WITH RETROFLEX HOOK..LATIN CAPITAL LETTER U WITH HORN 01B1..01B3 ; Changes_When_Casefolded # L& [3] LATIN CAPITAL LETTER UPSILON..LATIN CAPITAL LETTER Y WITH HOOK 01B5 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER Z WITH STROKE 01B7..01B8 ; Changes_When_Casefolded # L& [2] LATIN CAPITAL LETTER EZH..LATIN CAPITAL LETTER EZH REVERSED 01BC ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER TONE FIVE 01C4..01C5 ; Changes_When_Casefolded # L& [2] LATIN CAPITAL LETTER DZ WITH CARON..LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON 01C7..01C8 ; Changes_When_Casefolded # L& [2] LATIN CAPITAL LETTER LJ..LATIN CAPITAL LETTER L WITH SMALL LETTER J 01CA..01CB ; Changes_When_Casefolded # L& [2] LATIN CAPITAL LETTER NJ..LATIN CAPITAL LETTER N WITH SMALL LETTER J 01CD ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER A WITH CARON 01CF ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER I WITH CARON 01D1 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER O WITH CARON 01D3 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER U WITH CARON 01D5 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON 01D7 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE 01D9 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON 01DB ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE 01DE ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON 01E0 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON 01E2 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER AE WITH MACRON 01E4 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER G WITH STROKE 01E6 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER G WITH CARON 01E8 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER K WITH CARON 01EA ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER O WITH OGONEK 01EC ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER O WITH OGONEK AND MACRON 01EE ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER EZH WITH CARON 01F1..01F2 ; Changes_When_Casefolded # L& [2] LATIN CAPITAL LETTER DZ..LATIN CAPITAL LETTER D WITH SMALL LETTER Z 01F4 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER G WITH ACUTE 01F6..01F8 ; Changes_When_Casefolded # L& [3] LATIN CAPITAL LETTER HWAIR..LATIN CAPITAL LETTER N WITH GRAVE 01FA ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE 01FC ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER AE WITH ACUTE 01FE ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER O WITH STROKE AND ACUTE 0200 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER A WITH DOUBLE GRAVE 0202 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER A WITH INVERTED BREVE 0204 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER E WITH DOUBLE GRAVE 0206 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER E WITH INVERTED BREVE 0208 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER I WITH DOUBLE GRAVE 020A ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER I WITH INVERTED BREVE 020C ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER O WITH DOUBLE GRAVE 020E ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER O WITH INVERTED BREVE 0210 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER R WITH DOUBLE GRAVE 0212 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER R WITH INVERTED BREVE 0214 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER U WITH DOUBLE GRAVE 0216 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER U WITH INVERTED BREVE 0218 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER S WITH COMMA BELOW 021A ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER T WITH COMMA BELOW 021C ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER YOGH 021E ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER H WITH CARON 0220 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER N WITH LONG RIGHT LEG 0222 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER OU 0224 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER Z WITH HOOK 0226 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER A WITH DOT ABOVE 0228 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER E WITH CEDILLA 022A ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON 022C ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER O WITH TILDE AND MACRON 022E ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER O WITH DOT ABOVE 0230 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON 0232 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER Y WITH MACRON 023A..023B ; Changes_When_Casefolded # L& [2] LATIN CAPITAL LETTER A WITH STROKE..LATIN CAPITAL LETTER C WITH STROKE 023D..023E ; Changes_When_Casefolded # L& [2] LATIN CAPITAL LETTER L WITH BAR..LATIN CAPITAL LETTER T WITH DIAGONAL STROKE 0241 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER GLOTTAL STOP 0243..0246 ; Changes_When_Casefolded # L& [4] LATIN CAPITAL LETTER B WITH STROKE..LATIN CAPITAL LETTER E WITH STROKE 0248 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER J WITH STROKE 024A ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL 024C ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER R WITH STROKE 024E ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER Y WITH STROKE 0345 ; Changes_When_Casefolded # Mn COMBINING GREEK YPOGEGRAMMENI 0370 ; Changes_When_Casefolded # L& GREEK CAPITAL LETTER HETA 0372 ; Changes_When_Casefolded # L& GREEK CAPITAL LETTER ARCHAIC SAMPI 0376 ; Changes_When_Casefolded # L& GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA 037F ; Changes_When_Casefolded # L& GREEK CAPITAL LETTER YOT 0386 ; Changes_When_Casefolded # L& GREEK CAPITAL LETTER ALPHA WITH TONOS 0388..038A ; Changes_When_Casefolded # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS 038C ; Changes_When_Casefolded # L& GREEK CAPITAL LETTER OMICRON WITH TONOS 038E..038F ; Changes_When_Casefolded # L& [2] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER OMEGA WITH TONOS 0391..03A1 ; Changes_When_Casefolded # L& [17] GREEK CAPITAL LETTER ALPHA..GREEK CAPITAL LETTER RHO 03A3..03AB ; Changes_When_Casefolded # L& [9] GREEK CAPITAL LETTER SIGMA..GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA 03C2 ; Changes_When_Casefolded # L& GREEK SMALL LETTER FINAL SIGMA 03CF..03D1 ; Changes_When_Casefolded # L& [3] GREEK CAPITAL KAI SYMBOL..GREEK THETA SYMBOL 03D5..03D6 ; Changes_When_Casefolded # L& [2] GREEK PHI SYMBOL..GREEK PI SYMBOL 03D8 ; Changes_When_Casefolded # L& GREEK LETTER ARCHAIC KOPPA 03DA ; Changes_When_Casefolded # L& GREEK LETTER STIGMA 03DC ; Changes_When_Casefolded # L& GREEK LETTER DIGAMMA 03DE ; Changes_When_Casefolded # L& GREEK LETTER KOPPA 03E0 ; Changes_When_Casefolded # L& GREEK LETTER SAMPI 03E2 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER SHEI 03E4 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER FEI 03E6 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER KHEI 03E8 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER HORI 03EA ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER GANGIA 03EC ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER SHIMA 03EE ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER DEI 03F0..03F1 ; Changes_When_Casefolded # L& [2] GREEK KAPPA SYMBOL..GREEK RHO SYMBOL 03F4..03F5 ; Changes_When_Casefolded # L& [2] GREEK CAPITAL THETA SYMBOL..GREEK LUNATE EPSILON SYMBOL 03F7 ; Changes_When_Casefolded # L& GREEK CAPITAL LETTER SHO 03F9..03FA ; Changes_When_Casefolded # L& [2] GREEK CAPITAL LUNATE SIGMA SYMBOL..GREEK CAPITAL LETTER SAN 03FD..042F ; Changes_When_Casefolded # L& [51] GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL..CYRILLIC CAPITAL LETTER YA 0460 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER OMEGA 0462 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER YAT 0464 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER IOTIFIED E 0466 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER LITTLE YUS 0468 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS 046A ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER BIG YUS 046C ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS 046E ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER KSI 0470 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER PSI 0472 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER FITA 0474 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER IZHITSA 0476 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT 0478 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER UK 047A ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER ROUND OMEGA 047C ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER OMEGA WITH TITLO 047E ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER OT 0480 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER KOPPA 048A ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER SHORT I WITH TAIL 048C ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER SEMISOFT SIGN 048E ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER ER WITH TICK 0490 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER GHE WITH UPTURN 0492 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER GHE WITH STROKE 0494 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK 0496 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER 0498 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER ZE WITH DESCENDER 049A ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER KA WITH DESCENDER 049C ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE 049E ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER KA WITH STROKE 04A0 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER BASHKIR KA 04A2 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER EN WITH DESCENDER 04A4 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LIGATURE EN GHE 04A6 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK 04A8 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER ABKHASIAN HA 04AA ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER ES WITH DESCENDER 04AC ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER TE WITH DESCENDER 04AE ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER STRAIGHT U 04B0 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE 04B2 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER HA WITH DESCENDER 04B4 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LIGATURE TE TSE 04B6 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER CHE WITH DESCENDER 04B8 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE 04BA ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER SHHA 04BC ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER ABKHASIAN CHE 04BE ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER 04C0..04C1 ; Changes_When_Casefolded # L& [2] CYRILLIC LETTER PALOCHKA..CYRILLIC CAPITAL LETTER ZHE WITH BREVE 04C3 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER KA WITH HOOK 04C5 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER EL WITH TAIL 04C7 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER EN WITH HOOK 04C9 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER EN WITH TAIL 04CB ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER KHAKASSIAN CHE 04CD ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER EM WITH TAIL 04D0 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER A WITH BREVE 04D2 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER A WITH DIAERESIS 04D4 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LIGATURE A IE 04D6 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER IE WITH BREVE 04D8 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER SCHWA 04DA ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS 04DC ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS 04DE ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS 04E0 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER ABKHASIAN DZE 04E2 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER I WITH MACRON 04E4 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER I WITH DIAERESIS 04E6 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER O WITH DIAERESIS 04E8 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER BARRED O 04EA ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS 04EC ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER E WITH DIAERESIS 04EE ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER U WITH MACRON 04F0 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER U WITH DIAERESIS 04F2 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE 04F4 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS 04F6 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER GHE WITH DESCENDER 04F8 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS 04FA ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK 04FC ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER HA WITH HOOK 04FE ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER HA WITH STROKE 0500 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER KOMI DE 0502 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER KOMI DJE 0504 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER KOMI ZJE 0506 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER KOMI DZJE 0508 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER KOMI LJE 050A ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER KOMI NJE 050C ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER KOMI SJE 050E ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER KOMI TJE 0510 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER REVERSED ZE 0512 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER EL WITH HOOK 0514 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER LHA 0516 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER RHA 0518 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER YAE 051A ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER QA 051C ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER WE 051E ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER ALEUT KA 0520 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK 0522 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK 0524 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER PE WITH DESCENDER 0526 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER 0528 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK 052A ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER DZZHE 052C ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER DCHE 052E ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER EL WITH DESCENDER 0531..0556 ; Changes_When_Casefolded # L& [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH 0587 ; Changes_When_Casefolded # L& ARMENIAN SMALL LIGATURE ECH YIWN 10A0..10C5 ; Changes_When_Casefolded # L& [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE 10C7 ; Changes_When_Casefolded # L& GEORGIAN CAPITAL LETTER YN 10CD ; Changes_When_Casefolded # L& GEORGIAN CAPITAL LETTER AEN 13F8..13FD ; Changes_When_Casefolded # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV 1C80..1C88 ; Changes_When_Casefolded # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK 1E00 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER A WITH RING BELOW 1E02 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER B WITH DOT ABOVE 1E04 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER B WITH DOT BELOW 1E06 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER B WITH LINE BELOW 1E08 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE 1E0A ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER D WITH DOT ABOVE 1E0C ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER D WITH DOT BELOW 1E0E ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER D WITH LINE BELOW 1E10 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER D WITH CEDILLA 1E12 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW 1E14 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER E WITH MACRON AND GRAVE 1E16 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER E WITH MACRON AND ACUTE 1E18 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW 1E1A ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER E WITH TILDE BELOW 1E1C ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE 1E1E ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER F WITH DOT ABOVE 1E20 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER G WITH MACRON 1E22 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER H WITH DOT ABOVE 1E24 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER H WITH DOT BELOW 1E26 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER H WITH DIAERESIS 1E28 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER H WITH CEDILLA 1E2A ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER H WITH BREVE BELOW 1E2C ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER I WITH TILDE BELOW 1E2E ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE 1E30 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER K WITH ACUTE 1E32 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER K WITH DOT BELOW 1E34 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER K WITH LINE BELOW 1E36 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER L WITH DOT BELOW 1E38 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON 1E3A ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER L WITH LINE BELOW 1E3C ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW 1E3E ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER M WITH ACUTE 1E40 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER M WITH DOT ABOVE 1E42 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER M WITH DOT BELOW 1E44 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER N WITH DOT ABOVE 1E46 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER N WITH DOT BELOW 1E48 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER N WITH LINE BELOW 1E4A ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW 1E4C ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER O WITH TILDE AND ACUTE 1E4E ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS 1E50 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER O WITH MACRON AND GRAVE 1E52 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER O WITH MACRON AND ACUTE 1E54 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER P WITH ACUTE 1E56 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER P WITH DOT ABOVE 1E58 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER R WITH DOT ABOVE 1E5A ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER R WITH DOT BELOW 1E5C ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON 1E5E ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER R WITH LINE BELOW 1E60 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER S WITH DOT ABOVE 1E62 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER S WITH DOT BELOW 1E64 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE 1E66 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE 1E68 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE 1E6A ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER T WITH DOT ABOVE 1E6C ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER T WITH DOT BELOW 1E6E ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER T WITH LINE BELOW 1E70 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW 1E72 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER U WITH DIAERESIS BELOW 1E74 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER U WITH TILDE BELOW 1E76 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW 1E78 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER U WITH TILDE AND ACUTE 1E7A ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS 1E7C ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER V WITH TILDE 1E7E ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER V WITH DOT BELOW 1E80 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER W WITH GRAVE 1E82 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER W WITH ACUTE 1E84 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER W WITH DIAERESIS 1E86 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER W WITH DOT ABOVE 1E88 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER W WITH DOT BELOW 1E8A ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER X WITH DOT ABOVE 1E8C ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER X WITH DIAERESIS 1E8E ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER Y WITH DOT ABOVE 1E90 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER Z WITH CIRCUMFLEX 1E92 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER Z WITH DOT BELOW 1E94 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER Z WITH LINE BELOW 1E9A..1E9B ; Changes_When_Casefolded # L& [2] LATIN SMALL LETTER A WITH RIGHT HALF RING..LATIN SMALL LETTER LONG S WITH DOT ABOVE 1E9E ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER SHARP S 1EA0 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER A WITH DOT BELOW 1EA2 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER A WITH HOOK ABOVE 1EA4 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE 1EA6 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE 1EA8 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE 1EAA ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE 1EAC ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW 1EAE ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER A WITH BREVE AND ACUTE 1EB0 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER A WITH BREVE AND GRAVE 1EB2 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE 1EB4 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER A WITH BREVE AND TILDE 1EB6 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW 1EB8 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER E WITH DOT BELOW 1EBA ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER E WITH HOOK ABOVE 1EBC ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER E WITH TILDE 1EBE ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE 1EC0 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE 1EC2 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE 1EC4 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE 1EC6 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW 1EC8 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER I WITH HOOK ABOVE 1ECA ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER I WITH DOT BELOW 1ECC ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER O WITH DOT BELOW 1ECE ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER O WITH HOOK ABOVE 1ED0 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE 1ED2 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE 1ED4 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE 1ED6 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE 1ED8 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW 1EDA ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER O WITH HORN AND ACUTE 1EDC ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER O WITH HORN AND GRAVE 1EDE ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE 1EE0 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER O WITH HORN AND TILDE 1EE2 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW 1EE4 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER U WITH DOT BELOW 1EE6 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER U WITH HOOK ABOVE 1EE8 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER U WITH HORN AND ACUTE 1EEA ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER U WITH HORN AND GRAVE 1EEC ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE 1EEE ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER U WITH HORN AND TILDE 1EF0 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW 1EF2 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER Y WITH GRAVE 1EF4 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER Y WITH DOT BELOW 1EF6 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER Y WITH HOOK ABOVE 1EF8 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER Y WITH TILDE 1EFA ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER MIDDLE-WELSH LL 1EFC ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER MIDDLE-WELSH V 1EFE ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER Y WITH LOOP 1F08..1F0F ; Changes_When_Casefolded # L& [8] GREEK CAPITAL LETTER ALPHA WITH PSILI..GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI 1F18..1F1D ; Changes_When_Casefolded # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA 1F28..1F2F ; Changes_When_Casefolded # L& [8] GREEK CAPITAL LETTER ETA WITH PSILI..GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI 1F38..1F3F ; Changes_When_Casefolded # L& [8] GREEK CAPITAL LETTER IOTA WITH PSILI..GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI 1F48..1F4D ; Changes_When_Casefolded # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA 1F59 ; Changes_When_Casefolded # L& GREEK CAPITAL LETTER UPSILON WITH DASIA 1F5B ; Changes_When_Casefolded # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA 1F5D ; Changes_When_Casefolded # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA 1F5F ; Changes_When_Casefolded # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI 1F68..1F6F ; Changes_When_Casefolded # L& [8] GREEK CAPITAL LETTER OMEGA WITH PSILI..GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI 1F80..1FAF ; Changes_When_Casefolded # L& [48] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI 1FB2..1FB4 ; Changes_When_Casefolded # L& [3] GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI 1FB7..1FBC ; Changes_When_Casefolded # L& [6] GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI 1FC2..1FC4 ; Changes_When_Casefolded # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI 1FC7..1FCC ; Changes_When_Casefolded # L& [6] GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI 1FD8..1FDB ; Changes_When_Casefolded # L& [4] GREEK CAPITAL LETTER IOTA WITH VRACHY..GREEK CAPITAL LETTER IOTA WITH OXIA 1FE8..1FEC ; Changes_When_Casefolded # L& [5] GREEK CAPITAL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA 1FF2..1FF4 ; Changes_When_Casefolded # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI 1FF7..1FFC ; Changes_When_Casefolded # L& [6] GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI 2126 ; Changes_When_Casefolded # L& OHM SIGN 212A..212B ; Changes_When_Casefolded # L& [2] KELVIN SIGN..ANGSTROM SIGN 2132 ; Changes_When_Casefolded # L& TURNED CAPITAL F 2160..216F ; Changes_When_Casefolded # Nl [16] ROMAN NUMERAL ONE..ROMAN NUMERAL ONE THOUSAND 2183 ; Changes_When_Casefolded # L& ROMAN NUMERAL REVERSED ONE HUNDRED 24B6..24CF ; Changes_When_Casefolded # So [26] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN CAPITAL LETTER Z 2C00..2C2E ; Changes_When_Casefolded # L& [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE 2C60 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER L WITH DOUBLE BAR 2C62..2C64 ; Changes_When_Casefolded # L& [3] LATIN CAPITAL LETTER L WITH MIDDLE TILDE..LATIN CAPITAL LETTER R WITH TAIL 2C67 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER H WITH DESCENDER 2C69 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER K WITH DESCENDER 2C6B ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER Z WITH DESCENDER 2C6D..2C70 ; Changes_When_Casefolded # L& [4] LATIN CAPITAL LETTER ALPHA..LATIN CAPITAL LETTER TURNED ALPHA 2C72 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER W WITH HOOK 2C75 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER HALF H 2C7E..2C80 ; Changes_When_Casefolded # L& [3] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC CAPITAL LETTER ALFA 2C82 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER VIDA 2C84 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER GAMMA 2C86 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER DALDA 2C88 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER EIE 2C8A ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER SOU 2C8C ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER ZATA 2C8E ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER HATE 2C90 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER THETHE 2C92 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER IAUDA 2C94 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER KAPA 2C96 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER LAULA 2C98 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER MI 2C9A ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER NI 2C9C ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER KSI 2C9E ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER O 2CA0 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER PI 2CA2 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER RO 2CA4 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER SIMA 2CA6 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER TAU 2CA8 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER UA 2CAA ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER FI 2CAC ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER KHI 2CAE ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER PSI 2CB0 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER OOU 2CB2 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER DIALECT-P ALEF 2CB4 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER OLD COPTIC AIN 2CB6 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE 2CB8 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER DIALECT-P KAPA 2CBA ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER DIALECT-P NI 2CBC ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI 2CBE ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER OLD COPTIC OOU 2CC0 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER SAMPI 2CC2 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER CROSSED SHEI 2CC4 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER OLD COPTIC SHEI 2CC6 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER OLD COPTIC ESH 2CC8 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER AKHMIMIC KHEI 2CCA ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER DIALECT-P HORI 2CCC ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER OLD COPTIC HORI 2CCE ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER OLD COPTIC HA 2CD0 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER L-SHAPED HA 2CD2 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER OLD COPTIC HEI 2CD4 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER OLD COPTIC HAT 2CD6 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER OLD COPTIC GANGIA 2CD8 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER OLD COPTIC DJA 2CDA ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER OLD COPTIC SHIMA 2CDC ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER OLD NUBIAN SHIMA 2CDE ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER OLD NUBIAN NGI 2CE0 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER OLD NUBIAN NYI 2CE2 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER OLD NUBIAN WAU 2CEB ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI 2CED ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA 2CF2 ; Changes_When_Casefolded # L& COPTIC CAPITAL LETTER BOHAIRIC KHEI A640 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER ZEMLYA A642 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER DZELO A644 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER REVERSED DZE A646 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER IOTA A648 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER DJERV A64A ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER MONOGRAPH UK A64C ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER BROAD OMEGA A64E ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER NEUTRAL YER A650 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER YERU WITH BACK YER A652 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER IOTIFIED YAT A654 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER REVERSED YU A656 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER IOTIFIED A A658 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS A65A ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER BLENDED YUS A65C ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS A65E ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER YN A660 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER REVERSED TSE A662 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER SOFT DE A664 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER SOFT EL A666 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER SOFT EM A668 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER MONOCULAR O A66A ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER BINOCULAR O A66C ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O A680 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER DWE A682 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER DZWE A684 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER ZHWE A686 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER CCHE A688 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER DZZE A68A ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK A68C ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER TWE A68E ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER TSWE A690 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER TSSE A692 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER TCHE A694 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER HWE A696 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER SHWE A698 ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER DOUBLE O A69A ; Changes_When_Casefolded # L& CYRILLIC CAPITAL LETTER CROSSED O A722 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF A724 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER EGYPTOLOGICAL AIN A726 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER HENG A728 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER TZ A72A ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER TRESILLO A72C ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER CUATRILLO A72E ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER CUATRILLO WITH COMMA A732 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER AA A734 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER AO A736 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER AU A738 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER AV A73A ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR A73C ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER AY A73E ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER REVERSED C WITH DOT A740 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER K WITH STROKE A742 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER K WITH DIAGONAL STROKE A744 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE A746 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER BROKEN L A748 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER L WITH HIGH STROKE A74A ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY A74C ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER O WITH LOOP A74E ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER OO A750 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER A752 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER P WITH FLOURISH A754 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER P WITH SQUIRREL TAIL A756 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER A758 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE A75A ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER R ROTUNDA A75C ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER RUM ROTUNDA A75E ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER V WITH DIAGONAL STROKE A760 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER VY A762 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER VISIGOTHIC Z A764 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER THORN WITH STROKE A766 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER A768 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER VEND A76A ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER ET A76C ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER IS A76E ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER CON A779 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER INSULAR D A77B ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER INSULAR F A77D..A77E ; Changes_When_Casefolded # L& [2] LATIN CAPITAL LETTER INSULAR G..LATIN CAPITAL LETTER TURNED INSULAR G A780 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER TURNED L A782 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER INSULAR R A784 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER INSULAR S A786 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER INSULAR T A78B ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER SALTILLO A78D ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER TURNED H A790 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER N WITH DESCENDER A792 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER C WITH BAR A796 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER B WITH FLOURISH A798 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER F WITH STROKE A79A ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER VOLAPUK AE A79C ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER VOLAPUK OE A79E ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER VOLAPUK UE A7A0 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER G WITH OBLIQUE STROKE A7A2 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER K WITH OBLIQUE STROKE A7A4 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER N WITH OBLIQUE STROKE A7A6 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER R WITH OBLIQUE STROKE A7A8 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER S WITH OBLIQUE STROKE A7AA..A7AE ; Changes_When_Casefolded # L& [5] LATIN CAPITAL LETTER H WITH HOOK..LATIN CAPITAL LETTER SMALL CAPITAL I A7B0..A7B4 ; Changes_When_Casefolded # L& [5] LATIN CAPITAL LETTER TURNED K..LATIN CAPITAL LETTER BETA A7B6 ; Changes_When_Casefolded # L& LATIN CAPITAL LETTER OMEGA AB70..ABBF ; Changes_When_Casefolded # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA FB00..FB06 ; Changes_When_Casefolded # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST FB13..FB17 ; Changes_When_Casefolded # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH FF21..FF3A ; Changes_When_Casefolded # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z 10400..10427 ; Changes_When_Casefolded # L& [40] DESERET CAPITAL LETTER LONG I..DESERET CAPITAL LETTER EW 104B0..104D3 ; Changes_When_Casefolded # L& [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA 10C80..10CB2 ; Changes_When_Casefolded # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US 118A0..118BF ; Changes_When_Casefolded # L& [32] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI CAPITAL LETTER VIYO 1E900..1E921 ; Changes_When_Casefolded # L& [34] ADLAM CAPITAL LETTER ALIF..ADLAM CAPITAL LETTER SHA # Total code points: 1377 # ================================================ # Derived Property: Changes_When_Casemapped (CWCM) # Characters whose normalized forms are not stable under case mapping. # For more information, see D143 in Section 3.13, "Default Case Algorithms". # Changes_When_Casemapped(X) is true when CWL(X), or CWT(X), or CWU(X) 0041..005A ; Changes_When_Casemapped # L& [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z 0061..007A ; Changes_When_Casemapped # L& [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z 00B5 ; Changes_When_Casemapped # L& MICRO SIGN 00C0..00D6 ; Changes_When_Casemapped # L& [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS 00D8..00F6 ; Changes_When_Casemapped # L& [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS 00F8..0137 ; Changes_When_Casemapped # L& [64] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER K WITH CEDILLA 0139..018C ; Changes_When_Casemapped # L& [84] LATIN CAPITAL LETTER L WITH ACUTE..LATIN SMALL LETTER D WITH TOPBAR 018E..019A ; Changes_When_Casemapped # L& [13] LATIN CAPITAL LETTER REVERSED E..LATIN SMALL LETTER L WITH BAR 019C..01A9 ; Changes_When_Casemapped # L& [14] LATIN CAPITAL LETTER TURNED M..LATIN CAPITAL LETTER ESH 01AC..01B9 ; Changes_When_Casemapped # L& [14] LATIN CAPITAL LETTER T WITH HOOK..LATIN SMALL LETTER EZH REVERSED 01BC..01BD ; Changes_When_Casemapped # L& [2] LATIN CAPITAL LETTER TONE FIVE..LATIN SMALL LETTER TONE FIVE 01BF ; Changes_When_Casemapped # L& LATIN LETTER WYNN 01C4..0220 ; Changes_When_Casemapped # L& [93] LATIN CAPITAL LETTER DZ WITH CARON..LATIN CAPITAL LETTER N WITH LONG RIGHT LEG 0222..0233 ; Changes_When_Casemapped # L& [18] LATIN CAPITAL LETTER OU..LATIN SMALL LETTER Y WITH MACRON 023A..0254 ; Changes_When_Casemapped # L& [27] LATIN CAPITAL LETTER A WITH STROKE..LATIN SMALL LETTER OPEN O 0256..0257 ; Changes_When_Casemapped # L& [2] LATIN SMALL LETTER D WITH TAIL..LATIN SMALL LETTER D WITH HOOK 0259 ; Changes_When_Casemapped # L& LATIN SMALL LETTER SCHWA 025B..025C ; Changes_When_Casemapped # L& [2] LATIN SMALL LETTER OPEN E..LATIN SMALL LETTER REVERSED OPEN E 0260..0261 ; Changes_When_Casemapped # L& [2] LATIN SMALL LETTER G WITH HOOK..LATIN SMALL LETTER SCRIPT G 0263 ; Changes_When_Casemapped # L& LATIN SMALL LETTER GAMMA 0265..0266 ; Changes_When_Casemapped # L& [2] LATIN SMALL LETTER TURNED H..LATIN SMALL LETTER H WITH HOOK 0268..026C ; Changes_When_Casemapped # L& [5] LATIN SMALL LETTER I WITH STROKE..LATIN SMALL LETTER L WITH BELT 026F ; Changes_When_Casemapped # L& LATIN SMALL LETTER TURNED M 0271..0272 ; Changes_When_Casemapped # L& [2] LATIN SMALL LETTER M WITH HOOK..LATIN SMALL LETTER N WITH LEFT HOOK 0275 ; Changes_When_Casemapped # L& LATIN SMALL LETTER BARRED O 027D ; Changes_When_Casemapped # L& LATIN SMALL LETTER R WITH TAIL 0280 ; Changes_When_Casemapped # L& LATIN LETTER SMALL CAPITAL R 0283 ; Changes_When_Casemapped # L& LATIN SMALL LETTER ESH 0287..028C ; Changes_When_Casemapped # L& [6] LATIN SMALL LETTER TURNED T..LATIN SMALL LETTER TURNED V 0292 ; Changes_When_Casemapped # L& LATIN SMALL LETTER EZH 029D..029E ; Changes_When_Casemapped # L& [2] LATIN SMALL LETTER J WITH CROSSED-TAIL..LATIN SMALL LETTER TURNED K 0345 ; Changes_When_Casemapped # Mn COMBINING GREEK YPOGEGRAMMENI 0370..0373 ; Changes_When_Casemapped # L& [4] GREEK CAPITAL LETTER HETA..GREEK SMALL LETTER ARCHAIC SAMPI 0376..0377 ; Changes_When_Casemapped # L& [2] GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA..GREEK SMALL LETTER PAMPHYLIAN DIGAMMA 037B..037D ; Changes_When_Casemapped # L& [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL 037F ; Changes_When_Casemapped # L& GREEK CAPITAL LETTER YOT 0386 ; Changes_When_Casemapped # L& GREEK CAPITAL LETTER ALPHA WITH TONOS 0388..038A ; Changes_When_Casemapped # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS 038C ; Changes_When_Casemapped # L& GREEK CAPITAL LETTER OMICRON WITH TONOS 038E..03A1 ; Changes_When_Casemapped # L& [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO 03A3..03D1 ; Changes_When_Casemapped # L& [47] GREEK CAPITAL LETTER SIGMA..GREEK THETA SYMBOL 03D5..03F5 ; Changes_When_Casemapped # L& [33] GREEK PHI SYMBOL..GREEK LUNATE EPSILON SYMBOL 03F7..03FB ; Changes_When_Casemapped # L& [5] GREEK CAPITAL LETTER SHO..GREEK SMALL LETTER SAN 03FD..0481 ; Changes_When_Casemapped # L& [133] GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL..CYRILLIC SMALL LETTER KOPPA 048A..052F ; Changes_When_Casemapped # L& [166] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER EL WITH DESCENDER 0531..0556 ; Changes_When_Casemapped # L& [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH 0561..0587 ; Changes_When_Casemapped # L& [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN 10A0..10C5 ; Changes_When_Casemapped # L& [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE 10C7 ; Changes_When_Casemapped # L& GEORGIAN CAPITAL LETTER YN 10CD ; Changes_When_Casemapped # L& GEORGIAN CAPITAL LETTER AEN 13A0..13F5 ; Changes_When_Casemapped # L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV 13F8..13FD ; Changes_When_Casemapped # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV 1C80..1C88 ; Changes_When_Casemapped # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK 1D79 ; Changes_When_Casemapped # L& LATIN SMALL LETTER INSULAR G 1D7D ; Changes_When_Casemapped # L& LATIN SMALL LETTER P WITH STROKE 1E00..1E9B ; Changes_When_Casemapped # L& [156] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER LONG S WITH DOT ABOVE 1E9E ; Changes_When_Casemapped # L& LATIN CAPITAL LETTER SHARP S 1EA0..1F15 ; Changes_When_Casemapped # L& [118] LATIN CAPITAL LETTER A WITH DOT BELOW..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA 1F18..1F1D ; Changes_When_Casemapped # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA 1F20..1F45 ; Changes_When_Casemapped # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA 1F48..1F4D ; Changes_When_Casemapped # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA 1F50..1F57 ; Changes_When_Casemapped # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI 1F59 ; Changes_When_Casemapped # L& GREEK CAPITAL LETTER UPSILON WITH DASIA 1F5B ; Changes_When_Casemapped # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA 1F5D ; Changes_When_Casemapped # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA 1F5F..1F7D ; Changes_When_Casemapped # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA 1F80..1FB4 ; Changes_When_Casemapped # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI 1FB6..1FBC ; Changes_When_Casemapped # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI 1FBE ; Changes_When_Casemapped # L& GREEK PROSGEGRAMMENI 1FC2..1FC4 ; Changes_When_Casemapped # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI 1FC6..1FCC ; Changes_When_Casemapped # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI 1FD0..1FD3 ; Changes_When_Casemapped # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA 1FD6..1FDB ; Changes_When_Casemapped # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA 1FE0..1FEC ; Changes_When_Casemapped # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA 1FF2..1FF4 ; Changes_When_Casemapped # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI 1FF6..1FFC ; Changes_When_Casemapped # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI 2126 ; Changes_When_Casemapped # L& OHM SIGN 212A..212B ; Changes_When_Casemapped # L& [2] KELVIN SIGN..ANGSTROM SIGN 2132 ; Changes_When_Casemapped # L& TURNED CAPITAL F 214E ; Changes_When_Casemapped # L& TURNED SMALL F 2160..217F ; Changes_When_Casemapped # Nl [32] ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND 2183..2184 ; Changes_When_Casemapped # L& [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C 24B6..24E9 ; Changes_When_Casemapped # So [52] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN SMALL LETTER Z 2C00..2C2E ; Changes_When_Casemapped # L& [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE 2C30..2C5E ; Changes_When_Casemapped # L& [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE 2C60..2C70 ; Changes_When_Casemapped # L& [17] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN CAPITAL LETTER TURNED ALPHA 2C72..2C73 ; Changes_When_Casemapped # L& [2] LATIN CAPITAL LETTER W WITH HOOK..LATIN SMALL LETTER W WITH HOOK 2C75..2C76 ; Changes_When_Casemapped # L& [2] LATIN CAPITAL LETTER HALF H..LATIN SMALL LETTER HALF H 2C7E..2CE3 ; Changes_When_Casemapped # L& [102] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC SMALL LETTER OLD NUBIAN WAU 2CEB..2CEE ; Changes_When_Casemapped # L& [4] COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI..COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA 2CF2..2CF3 ; Changes_When_Casemapped # L& [2] COPTIC CAPITAL LETTER BOHAIRIC KHEI..COPTIC SMALL LETTER BOHAIRIC KHEI 2D00..2D25 ; Changes_When_Casemapped # L& [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE 2D27 ; Changes_When_Casemapped # L& GEORGIAN SMALL LETTER YN 2D2D ; Changes_When_Casemapped # L& GEORGIAN SMALL LETTER AEN A640..A66D ; Changes_When_Casemapped # L& [46] CYRILLIC CAPITAL LETTER ZEMLYA..CYRILLIC SMALL LETTER DOUBLE MONOCULAR O A680..A69B ; Changes_When_Casemapped # L& [28] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER CROSSED O A722..A72F ; Changes_When_Casemapped # L& [14] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN SMALL LETTER CUATRILLO WITH COMMA A732..A76F ; Changes_When_Casemapped # L& [62] LATIN CAPITAL LETTER AA..LATIN SMALL LETTER CON A779..A787 ; Changes_When_Casemapped # L& [15] LATIN CAPITAL LETTER INSULAR D..LATIN SMALL LETTER INSULAR T A78B..A78D ; Changes_When_Casemapped # L& [3] LATIN CAPITAL LETTER SALTILLO..LATIN CAPITAL LETTER TURNED H A790..A793 ; Changes_When_Casemapped # L& [4] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER C WITH BAR A796..A7AE ; Changes_When_Casemapped # L& [25] LATIN CAPITAL LETTER B WITH FLOURISH..LATIN CAPITAL LETTER SMALL CAPITAL I A7B0..A7B7 ; Changes_When_Casemapped # L& [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA AB53 ; Changes_When_Casemapped # L& LATIN SMALL LETTER CHI AB70..ABBF ; Changes_When_Casemapped # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA FB00..FB06 ; Changes_When_Casemapped # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST FB13..FB17 ; Changes_When_Casemapped # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH FF21..FF3A ; Changes_When_Casemapped # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z FF41..FF5A ; Changes_When_Casemapped # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z 10400..1044F ; Changes_When_Casemapped # L& [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW 104B0..104D3 ; Changes_When_Casemapped # L& [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA 104D8..104FB ; Changes_When_Casemapped # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA 10C80..10CB2 ; Changes_When_Casemapped # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US 10CC0..10CF2 ; Changes_When_Casemapped # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US 118A0..118DF ; Changes_When_Casemapped # L& [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO 1E900..1E943 ; Changes_When_Casemapped # L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA # Total code points: 2669 # ================================================ # Derived Property: ID_Start # Characters that can start an identifier. # Generated from: # Lu + Ll + Lt + Lm + Lo + Nl # + Other_ID_Start # - Pattern_Syntax # - Pattern_White_Space # NOTE: See UAX #31 for more information 0041..005A ; ID_Start # L& [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z 0061..007A ; ID_Start # L& [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z 00AA ; ID_Start # Lo FEMININE ORDINAL INDICATOR 00B5 ; ID_Start # L& MICRO SIGN 00BA ; ID_Start # Lo MASCULINE ORDINAL INDICATOR 00C0..00D6 ; ID_Start # L& [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS 00D8..00F6 ; ID_Start # L& [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS 00F8..01BA ; ID_Start # L& [195] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER EZH WITH TAIL 01BB ; ID_Start # Lo LATIN LETTER TWO WITH STROKE 01BC..01BF ; ID_Start # L& [4] LATIN CAPITAL LETTER TONE FIVE..LATIN LETTER WYNN 01C0..01C3 ; ID_Start # Lo [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK 01C4..0293 ; ID_Start # L& [208] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER EZH WITH CURL 0294 ; ID_Start # Lo LATIN LETTER GLOTTAL STOP 0295..02AF ; ID_Start # L& [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL 02B0..02C1 ; ID_Start # Lm [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP 02C6..02D1 ; ID_Start # Lm [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON 02E0..02E4 ; ID_Start # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP 02EC ; ID_Start # Lm MODIFIER LETTER VOICING 02EE ; ID_Start # Lm MODIFIER LETTER DOUBLE APOSTROPHE 0370..0373 ; ID_Start # L& [4] GREEK CAPITAL LETTER HETA..GREEK SMALL LETTER ARCHAIC SAMPI 0374 ; ID_Start # Lm GREEK NUMERAL SIGN 0376..0377 ; ID_Start # L& [2] GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA..GREEK SMALL LETTER PAMPHYLIAN DIGAMMA 037A ; ID_Start # Lm GREEK YPOGEGRAMMENI 037B..037D ; ID_Start # L& [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL 037F ; ID_Start # L& GREEK CAPITAL LETTER YOT 0386 ; ID_Start # L& GREEK CAPITAL LETTER ALPHA WITH TONOS 0388..038A ; ID_Start # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS 038C ; ID_Start # L& GREEK CAPITAL LETTER OMICRON WITH TONOS 038E..03A1 ; ID_Start # L& [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO 03A3..03F5 ; ID_Start # L& [83] GREEK CAPITAL LETTER SIGMA..GREEK LUNATE EPSILON SYMBOL 03F7..0481 ; ID_Start # L& [139] GREEK CAPITAL LETTER SHO..CYRILLIC SMALL LETTER KOPPA 048A..052F ; ID_Start # L& [166] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER EL WITH DESCENDER 0531..0556 ; ID_Start # L& [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH 0559 ; ID_Start # Lm ARMENIAN MODIFIER LETTER LEFT HALF RING 0561..0587 ; ID_Start # L& [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN 05D0..05EA ; ID_Start # Lo [27] HEBREW LETTER ALEF..HEBREW LETTER TAV 05F0..05F2 ; ID_Start # Lo [3] HEBREW LIGATURE YIDDISH DOUBLE VAV..HEBREW LIGATURE YIDDISH DOUBLE YOD 0620..063F ; ID_Start # Lo [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE 0640 ; ID_Start # Lm ARABIC TATWEEL 0641..064A ; ID_Start # Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH 066E..066F ; ID_Start # Lo [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF 0671..06D3 ; ID_Start # Lo [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE 06D5 ; ID_Start # Lo ARABIC LETTER AE 06E5..06E6 ; ID_Start # Lm [2] ARABIC SMALL WAW..ARABIC SMALL YEH 06EE..06EF ; ID_Start # Lo [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V 06FA..06FC ; ID_Start # Lo [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW 06FF ; ID_Start # Lo ARABIC LETTER HEH WITH INVERTED V 0710 ; ID_Start # Lo SYRIAC LETTER ALAPH 0712..072F ; ID_Start # Lo [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH 074D..07A5 ; ID_Start # Lo [89] SYRIAC LETTER SOGDIAN ZHAIN..THAANA LETTER WAAVU 07B1 ; ID_Start # Lo THAANA LETTER NAA 07CA..07EA ; ID_Start # Lo [33] NKO LETTER A..NKO LETTER JONA RA 07F4..07F5 ; ID_Start # Lm [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE 07FA ; ID_Start # Lm NKO LAJANYALAN 0800..0815 ; ID_Start # Lo [22] SAMARITAN LETTER ALAF..SAMARITAN LETTER TAAF 081A ; ID_Start # Lm SAMARITAN MODIFIER LETTER EPENTHETIC YUT 0824 ; ID_Start # Lm SAMARITAN MODIFIER LETTER SHORT A 0828 ; ID_Start # Lm SAMARITAN MODIFIER LETTER I 0840..0858 ; ID_Start # Lo [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN 08A0..08B4 ; ID_Start # Lo [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW 08B6..08BD ; ID_Start # Lo [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON 0904..0939 ; ID_Start # Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA 093D ; ID_Start # Lo DEVANAGARI SIGN AVAGRAHA 0950 ; ID_Start # Lo DEVANAGARI OM 0958..0961 ; ID_Start # Lo [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL 0971 ; ID_Start # Lm DEVANAGARI SIGN HIGH SPACING DOT 0972..0980 ; ID_Start # Lo [15] DEVANAGARI LETTER CANDRA A..BENGALI ANJI 0985..098C ; ID_Start # Lo [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L 098F..0990 ; ID_Start # Lo [2] BENGALI LETTER E..BENGALI LETTER AI 0993..09A8 ; ID_Start # Lo [22] BENGALI LETTER O..BENGALI LETTER NA 09AA..09B0 ; ID_Start # Lo [7] BENGALI LETTER PA..BENGALI LETTER RA 09B2 ; ID_Start # Lo BENGALI LETTER LA 09B6..09B9 ; ID_Start # Lo [4] BENGALI LETTER SHA..BENGALI LETTER HA 09BD ; ID_Start # Lo BENGALI SIGN AVAGRAHA 09CE ; ID_Start # Lo BENGALI LETTER KHANDA TA 09DC..09DD ; ID_Start # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA 09DF..09E1 ; ID_Start # Lo [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL 09F0..09F1 ; ID_Start # Lo [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL 0A05..0A0A ; ID_Start # Lo [6] GURMUKHI LETTER A..GURMUKHI LETTER UU 0A0F..0A10 ; ID_Start # Lo [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI 0A13..0A28 ; ID_Start # Lo [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA 0A2A..0A30 ; ID_Start # Lo [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA 0A32..0A33 ; ID_Start # Lo [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA 0A35..0A36 ; ID_Start # Lo [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA 0A38..0A39 ; ID_Start # Lo [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA 0A59..0A5C ; ID_Start # Lo [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA 0A5E ; ID_Start # Lo GURMUKHI LETTER FA 0A72..0A74 ; ID_Start # Lo [3] GURMUKHI IRI..GURMUKHI EK ONKAR 0A85..0A8D ; ID_Start # Lo [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E 0A8F..0A91 ; ID_Start # Lo [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O 0A93..0AA8 ; ID_Start # Lo [22] GUJARATI LETTER O..GUJARATI LETTER NA 0AAA..0AB0 ; ID_Start # Lo [7] GUJARATI LETTER PA..GUJARATI LETTER RA 0AB2..0AB3 ; ID_Start # Lo [2] GUJARATI LETTER LA..GUJARATI LETTER LLA 0AB5..0AB9 ; ID_Start # Lo [5] GUJARATI LETTER VA..GUJARATI LETTER HA 0ABD ; ID_Start # Lo GUJARATI SIGN AVAGRAHA 0AD0 ; ID_Start # Lo GUJARATI OM 0AE0..0AE1 ; ID_Start # Lo [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL 0AF9 ; ID_Start # Lo GUJARATI LETTER ZHA 0B05..0B0C ; ID_Start # Lo [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L 0B0F..0B10 ; ID_Start # Lo [2] ORIYA LETTER E..ORIYA LETTER AI 0B13..0B28 ; ID_Start # Lo [22] ORIYA LETTER O..ORIYA LETTER NA 0B2A..0B30 ; ID_Start # Lo [7] ORIYA LETTER PA..ORIYA LETTER RA 0B32..0B33 ; ID_Start # Lo [2] ORIYA LETTER LA..ORIYA LETTER LLA 0B35..0B39 ; ID_Start # Lo [5] ORIYA LETTER VA..ORIYA LETTER HA 0B3D ; ID_Start # Lo ORIYA SIGN AVAGRAHA 0B5C..0B5D ; ID_Start # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA 0B5F..0B61 ; ID_Start # Lo [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL 0B71 ; ID_Start # Lo ORIYA LETTER WA 0B83 ; ID_Start # Lo TAMIL SIGN VISARGA 0B85..0B8A ; ID_Start # Lo [6] TAMIL LETTER A..TAMIL LETTER UU 0B8E..0B90 ; ID_Start # Lo [3] TAMIL LETTER E..TAMIL LETTER AI 0B92..0B95 ; ID_Start # Lo [4] TAMIL LETTER O..TAMIL LETTER KA 0B99..0B9A ; ID_Start # Lo [2] TAMIL LETTER NGA..TAMIL LETTER CA 0B9C ; ID_Start # Lo TAMIL LETTER JA 0B9E..0B9F ; ID_Start # Lo [2] TAMIL LETTER NYA..TAMIL LETTER TTA 0BA3..0BA4 ; ID_Start # Lo [2] TAMIL LETTER NNA..TAMIL LETTER TA 0BA8..0BAA ; ID_Start # Lo [3] TAMIL LETTER NA..TAMIL LETTER PA 0BAE..0BB9 ; ID_Start # Lo [12] TAMIL LETTER MA..TAMIL LETTER HA 0BD0 ; ID_Start # Lo TAMIL OM 0C05..0C0C ; ID_Start # Lo [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L 0C0E..0C10 ; ID_Start # Lo [3] TELUGU LETTER E..TELUGU LETTER AI 0C12..0C28 ; ID_Start # Lo [23] TELUGU LETTER O..TELUGU LETTER NA 0C2A..0C39 ; ID_Start # Lo [16] TELUGU LETTER PA..TELUGU LETTER HA 0C3D ; ID_Start # Lo TELUGU SIGN AVAGRAHA 0C58..0C5A ; ID_Start # Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA 0C60..0C61 ; ID_Start # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL 0C80 ; ID_Start # Lo KANNADA SIGN SPACING CANDRABINDU 0C85..0C8C ; ID_Start # Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L 0C8E..0C90 ; ID_Start # Lo [3] KANNADA LETTER E..KANNADA LETTER AI 0C92..0CA8 ; ID_Start # Lo [23] KANNADA LETTER O..KANNADA LETTER NA 0CAA..0CB3 ; ID_Start # Lo [10] KANNADA LETTER PA..KANNADA LETTER LLA 0CB5..0CB9 ; ID_Start # Lo [5] KANNADA LETTER VA..KANNADA LETTER HA 0CBD ; ID_Start # Lo KANNADA SIGN AVAGRAHA 0CDE ; ID_Start # Lo KANNADA LETTER FA 0CE0..0CE1 ; ID_Start # Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL 0CF1..0CF2 ; ID_Start # Lo [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA 0D05..0D0C ; ID_Start # Lo [8] MALAYALAM LETTER A..MALAYALAM LETTER VOCALIC L 0D0E..0D10 ; ID_Start # Lo [3] MALAYALAM LETTER E..MALAYALAM LETTER AI 0D12..0D3A ; ID_Start # Lo [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA 0D3D ; ID_Start # Lo MALAYALAM SIGN AVAGRAHA 0D4E ; ID_Start # Lo MALAYALAM LETTER DOT REPH 0D54..0D56 ; ID_Start # Lo [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL 0D5F..0D61 ; ID_Start # Lo [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL 0D7A..0D7F ; ID_Start # Lo [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K 0D85..0D96 ; ID_Start # Lo [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA 0D9A..0DB1 ; ID_Start # Lo [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA 0DB3..0DBB ; ID_Start # Lo [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA 0DBD ; ID_Start # Lo SINHALA LETTER DANTAJA LAYANNA 0DC0..0DC6 ; ID_Start # Lo [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA 0E01..0E30 ; ID_Start # Lo [48] THAI CHARACTER KO KAI..THAI CHARACTER SARA A 0E32..0E33 ; ID_Start # Lo [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM 0E40..0E45 ; ID_Start # Lo [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO 0E46 ; ID_Start # Lm THAI CHARACTER MAIYAMOK 0E81..0E82 ; ID_Start # Lo [2] LAO LETTER KO..LAO LETTER KHO SUNG 0E84 ; ID_Start # Lo LAO LETTER KHO TAM 0E87..0E88 ; ID_Start # Lo [2] LAO LETTER NGO..LAO LETTER CO 0E8A ; ID_Start # Lo LAO LETTER SO TAM 0E8D ; ID_Start # Lo LAO LETTER NYO 0E94..0E97 ; ID_Start # Lo [4] LAO LETTER DO..LAO LETTER THO TAM 0E99..0E9F ; ID_Start # Lo [7] LAO LETTER NO..LAO LETTER FO SUNG 0EA1..0EA3 ; ID_Start # Lo [3] LAO LETTER MO..LAO LETTER LO LING 0EA5 ; ID_Start # Lo LAO LETTER LO LOOT 0EA7 ; ID_Start # Lo LAO LETTER WO 0EAA..0EAB ; ID_Start # Lo [2] LAO LETTER SO SUNG..LAO LETTER HO SUNG 0EAD..0EB0 ; ID_Start # Lo [4] LAO LETTER O..LAO VOWEL SIGN A 0EB2..0EB3 ; ID_Start # Lo [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM 0EBD ; ID_Start # Lo LAO SEMIVOWEL SIGN NYO 0EC0..0EC4 ; ID_Start # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI 0EC6 ; ID_Start # Lm LAO KO LA 0EDC..0EDF ; ID_Start # Lo [4] LAO HO NO..LAO LETTER KHMU NYO 0F00 ; ID_Start # Lo TIBETAN SYLLABLE OM 0F40..0F47 ; ID_Start # Lo [8] TIBETAN LETTER KA..TIBETAN LETTER JA 0F49..0F6C ; ID_Start # Lo [36] TIBETAN LETTER NYA..TIBETAN LETTER RRA 0F88..0F8C ; ID_Start # Lo [5] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN INVERTED MCHU CAN 1000..102A ; ID_Start # Lo [43] MYANMAR LETTER KA..MYANMAR LETTER AU 103F ; ID_Start # Lo MYANMAR LETTER GREAT SA 1050..1055 ; ID_Start # Lo [6] MYANMAR LETTER SHA..MYANMAR LETTER VOCALIC LL 105A..105D ; ID_Start # Lo [4] MYANMAR LETTER MON NGA..MYANMAR LETTER MON BBE 1061 ; ID_Start # Lo MYANMAR LETTER SGAW KAREN SHA 1065..1066 ; ID_Start # Lo [2] MYANMAR LETTER WESTERN PWO KAREN THA..MYANMAR LETTER WESTERN PWO KAREN PWA 106E..1070 ; ID_Start # Lo [3] MYANMAR LETTER EASTERN PWO KAREN NNA..MYANMAR LETTER EASTERN PWO KAREN GHWA 1075..1081 ; ID_Start # Lo [13] MYANMAR LETTER SHAN KA..MYANMAR LETTER SHAN HA 108E ; ID_Start # Lo MYANMAR LETTER RUMAI PALAUNG FA 10A0..10C5 ; ID_Start # L& [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE 10C7 ; ID_Start # L& GEORGIAN CAPITAL LETTER YN 10CD ; ID_Start # L& GEORGIAN CAPITAL LETTER AEN 10D0..10FA ; ID_Start # Lo [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN 10FC ; ID_Start # Lm MODIFIER LETTER GEORGIAN NAR 10FD..1248 ; ID_Start # Lo [332] GEORGIAN LETTER AEN..ETHIOPIC SYLLABLE QWA 124A..124D ; ID_Start # Lo [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE 1250..1256 ; ID_Start # Lo [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO 1258 ; ID_Start # Lo ETHIOPIC SYLLABLE QHWA 125A..125D ; ID_Start # Lo [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE 1260..1288 ; ID_Start # Lo [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA 128A..128D ; ID_Start # Lo [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE 1290..12B0 ; ID_Start # Lo [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA 12B2..12B5 ; ID_Start # Lo [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE 12B8..12BE ; ID_Start # Lo [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO 12C0 ; ID_Start # Lo ETHIOPIC SYLLABLE KXWA 12C2..12C5 ; ID_Start # Lo [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE 12C8..12D6 ; ID_Start # Lo [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O 12D8..1310 ; ID_Start # Lo [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA 1312..1315 ; ID_Start # Lo [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE 1318..135A ; ID_Start # Lo [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA 1380..138F ; ID_Start # Lo [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE 13A0..13F5 ; ID_Start # L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV 13F8..13FD ; ID_Start # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV 1401..166C ; ID_Start # Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA 166F..167F ; ID_Start # Lo [17] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS BLACKFOOT W 1681..169A ; ID_Start # Lo [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH 16A0..16EA ; ID_Start # Lo [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X 16EE..16F0 ; ID_Start # Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL 16F1..16F8 ; ID_Start # Lo [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC 1700..170C ; ID_Start # Lo [13] TAGALOG LETTER A..TAGALOG LETTER YA 170E..1711 ; ID_Start # Lo [4] TAGALOG LETTER LA..TAGALOG LETTER HA 1720..1731 ; ID_Start # Lo [18] HANUNOO LETTER A..HANUNOO LETTER HA 1740..1751 ; ID_Start # Lo [18] BUHID LETTER A..BUHID LETTER HA 1760..176C ; ID_Start # Lo [13] TAGBANWA LETTER A..TAGBANWA LETTER YA 176E..1770 ; ID_Start # Lo [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA 1780..17B3 ; ID_Start # Lo [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU 17D7 ; ID_Start # Lm KHMER SIGN LEK TOO 17DC ; ID_Start # Lo KHMER SIGN AVAKRAHASANYA 1820..1842 ; ID_Start # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI 1843 ; ID_Start # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN 1844..1877 ; ID_Start # Lo [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA 1880..1884 ; ID_Start # Lo [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA 1885..1886 ; ID_Start # Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA 1887..18A8 ; ID_Start # Lo [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA 18AA ; ID_Start # Lo MONGOLIAN LETTER MANCHU ALI GALI LHA 18B0..18F5 ; ID_Start # Lo [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S 1900..191E ; ID_Start # Lo [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA 1950..196D ; ID_Start # Lo [30] TAI LE LETTER KA..TAI LE LETTER AI 1970..1974 ; ID_Start # Lo [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6 1980..19AB ; ID_Start # Lo [44] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW SUA 19B0..19C9 ; ID_Start # Lo [26] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE TONE MARK-2 1A00..1A16 ; ID_Start # Lo [23] BUGINESE LETTER KA..BUGINESE LETTER HA 1A20..1A54 ; ID_Start # Lo [53] TAI THAM LETTER HIGH KA..TAI THAM LETTER GREAT SA 1AA7 ; ID_Start # Lm TAI THAM SIGN MAI YAMOK 1B05..1B33 ; ID_Start # Lo [47] BALINESE LETTER AKARA..BALINESE LETTER HA 1B45..1B4B ; ID_Start # Lo [7] BALINESE LETTER KAF SASAK..BALINESE LETTER ASYURA SASAK 1B83..1BA0 ; ID_Start # Lo [30] SUNDANESE LETTER A..SUNDANESE LETTER HA 1BAE..1BAF ; ID_Start # Lo [2] SUNDANESE LETTER KHA..SUNDANESE LETTER SYA 1BBA..1BE5 ; ID_Start # Lo [44] SUNDANESE AVAGRAHA..BATAK LETTER U 1C00..1C23 ; ID_Start # Lo [36] LEPCHA LETTER KA..LEPCHA LETTER A 1C4D..1C4F ; ID_Start # Lo [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA 1C5A..1C77 ; ID_Start # Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH 1C78..1C7D ; ID_Start # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD 1C80..1C88 ; ID_Start # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK 1CE9..1CEC ; ID_Start # Lo [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL 1CEE..1CF1 ; ID_Start # Lo [4] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ANUSVARA UBHAYATO MUKHA 1CF5..1CF6 ; ID_Start # Lo [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA 1D00..1D2B ; ID_Start # L& [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL 1D2C..1D6A ; ID_Start # Lm [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI 1D6B..1D77 ; ID_Start # L& [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G 1D78 ; ID_Start # Lm MODIFIER LETTER CYRILLIC EN 1D79..1D9A ; ID_Start # L& [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK 1D9B..1DBF ; ID_Start # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA 1E00..1F15 ; ID_Start # L& [278] LATIN CAPITAL LETTER A WITH RING BELOW..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA 1F18..1F1D ; ID_Start # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA 1F20..1F45 ; ID_Start # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA 1F48..1F4D ; ID_Start # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA 1F50..1F57 ; ID_Start # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI 1F59 ; ID_Start # L& GREEK CAPITAL LETTER UPSILON WITH DASIA 1F5B ; ID_Start # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA 1F5D ; ID_Start # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA 1F5F..1F7D ; ID_Start # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA 1F80..1FB4 ; ID_Start # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI 1FB6..1FBC ; ID_Start # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI 1FBE ; ID_Start # L& GREEK PROSGEGRAMMENI 1FC2..1FC4 ; ID_Start # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI 1FC6..1FCC ; ID_Start # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI 1FD0..1FD3 ; ID_Start # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA 1FD6..1FDB ; ID_Start # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA 1FE0..1FEC ; ID_Start # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA 1FF2..1FF4 ; ID_Start # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI 1FF6..1FFC ; ID_Start # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI 2071 ; ID_Start # Lm SUPERSCRIPT LATIN SMALL LETTER I 207F ; ID_Start # Lm SUPERSCRIPT LATIN SMALL LETTER N 2090..209C ; ID_Start # Lm [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T 2102 ; ID_Start # L& DOUBLE-STRUCK CAPITAL C 2107 ; ID_Start # L& EULER CONSTANT 210A..2113 ; ID_Start # L& [10] SCRIPT SMALL G..SCRIPT SMALL L 2115 ; ID_Start # L& DOUBLE-STRUCK CAPITAL N 2118 ; ID_Start # Sm SCRIPT CAPITAL P 2119..211D ; ID_Start # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R 2124 ; ID_Start # L& DOUBLE-STRUCK CAPITAL Z 2126 ; ID_Start # L& OHM SIGN 2128 ; ID_Start # L& BLACK-LETTER CAPITAL Z 212A..212D ; ID_Start # L& [4] KELVIN SIGN..BLACK-LETTER CAPITAL C 212E ; ID_Start # So ESTIMATED SYMBOL 212F..2134 ; ID_Start # L& [6] SCRIPT SMALL E..SCRIPT SMALL O 2135..2138 ; ID_Start # Lo [4] ALEF SYMBOL..DALET SYMBOL 2139 ; ID_Start # L& INFORMATION SOURCE 213C..213F ; ID_Start # L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI 2145..2149 ; ID_Start # L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J 214E ; ID_Start # L& TURNED SMALL F 2160..2182 ; ID_Start # Nl [35] ROMAN NUMERAL ONE..ROMAN NUMERAL TEN THOUSAND 2183..2184 ; ID_Start # L& [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C 2185..2188 ; ID_Start # Nl [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND 2C00..2C2E ; ID_Start # L& [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE 2C30..2C5E ; ID_Start # L& [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE 2C60..2C7B ; ID_Start # L& [28] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN LETTER SMALL CAPITAL TURNED E 2C7C..2C7D ; ID_Start # Lm [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V 2C7E..2CE4 ; ID_Start # L& [103] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC SYMBOL KAI 2CEB..2CEE ; ID_Start # L& [4] COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI..COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA 2CF2..2CF3 ; ID_Start # L& [2] COPTIC CAPITAL LETTER BOHAIRIC KHEI..COPTIC SMALL LETTER BOHAIRIC KHEI 2D00..2D25 ; ID_Start # L& [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE 2D27 ; ID_Start # L& GEORGIAN SMALL LETTER YN 2D2D ; ID_Start # L& GEORGIAN SMALL LETTER AEN 2D30..2D67 ; ID_Start # Lo [56] TIFINAGH LETTER YA..TIFINAGH LETTER YO 2D6F ; ID_Start # Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK 2D80..2D96 ; ID_Start # Lo [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE 2DA0..2DA6 ; ID_Start # Lo [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO 2DA8..2DAE ; ID_Start # Lo [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO 2DB0..2DB6 ; ID_Start # Lo [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO 2DB8..2DBE ; ID_Start # Lo [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO 2DC0..2DC6 ; ID_Start # Lo [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO 2DC8..2DCE ; ID_Start # Lo [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO 2DD0..2DD6 ; ID_Start # Lo [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO 2DD8..2DDE ; ID_Start # Lo [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO 3005 ; ID_Start # Lm IDEOGRAPHIC ITERATION MARK 3006 ; ID_Start # Lo IDEOGRAPHIC CLOSING MARK 3007 ; ID_Start # Nl IDEOGRAPHIC NUMBER ZERO 3021..3029 ; ID_Start # Nl [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE 3031..3035 ; ID_Start # Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF 3038..303A ; ID_Start # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY 303B ; ID_Start # Lm VERTICAL IDEOGRAPHIC ITERATION MARK 303C ; ID_Start # Lo MASU MARK 3041..3096 ; ID_Start # Lo [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE 309B..309C ; ID_Start # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK 309D..309E ; ID_Start # Lm [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK 309F ; ID_Start # Lo HIRAGANA DIGRAPH YORI 30A1..30FA ; ID_Start # Lo [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO 30FC..30FE ; ID_Start # Lm [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK 30FF ; ID_Start # Lo KATAKANA DIGRAPH KOTO 3105..312D ; ID_Start # Lo [41] BOPOMOFO LETTER B..BOPOMOFO LETTER IH 3131..318E ; ID_Start # Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE 31A0..31BA ; ID_Start # Lo [27] BOPOMOFO LETTER BU..BOPOMOFO LETTER ZY 31F0..31FF ; ID_Start # Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO 3400..4DB5 ; ID_Start # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 4E00..9FD5 ; ID_Start # Lo [20950] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FD5 A000..A014 ; ID_Start # Lo [21] YI SYLLABLE IT..YI SYLLABLE E A015 ; ID_Start # Lm YI SYLLABLE WU A016..A48C ; ID_Start # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR A4D0..A4F7 ; ID_Start # Lo [40] LISU LETTER BA..LISU LETTER OE A4F8..A4FD ; ID_Start # Lm [6] LISU LETTER TONE MYA TI..LISU LETTER TONE MYA JEU A500..A60B ; ID_Start # Lo [268] VAI SYLLABLE EE..VAI SYLLABLE NG A60C ; ID_Start # Lm VAI SYLLABLE LENGTHENER A610..A61F ; ID_Start # Lo [16] VAI SYLLABLE NDOLE FA..VAI SYMBOL JONG A62A..A62B ; ID_Start # Lo [2] VAI SYLLABLE NDOLE MA..VAI SYLLABLE NDOLE DO A640..A66D ; ID_Start # L& [46] CYRILLIC CAPITAL LETTER ZEMLYA..CYRILLIC SMALL LETTER DOUBLE MONOCULAR O A66E ; ID_Start # Lo CYRILLIC LETTER MULTIOCULAR O A67F ; ID_Start # Lm CYRILLIC PAYEROK A680..A69B ; ID_Start # L& [28] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER CROSSED O A69C..A69D ; ID_Start # Lm [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN A6A0..A6E5 ; ID_Start # Lo [70] BAMUM LETTER A..BAMUM LETTER KI A6E6..A6EF ; ID_Start # Nl [10] BAMUM LETTER MO..BAMUM LETTER KOGHOM A717..A71F ; ID_Start # Lm [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK A722..A76F ; ID_Start # L& [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN SMALL LETTER CON A770 ; ID_Start # Lm MODIFIER LETTER US A771..A787 ; ID_Start # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T A788 ; ID_Start # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT A78B..A78E ; ID_Start # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT A78F ; ID_Start # Lo LATIN LETTER SINOLOGICAL DOT A790..A7AE ; ID_Start # L& [31] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER SMALL CAPITAL I A7B0..A7B7 ; ID_Start # L& [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA A7F7 ; ID_Start # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I A7F8..A7F9 ; ID_Start # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE A7FA ; ID_Start # L& LATIN LETTER SMALL CAPITAL TURNED M A7FB..A801 ; ID_Start # Lo [7] LATIN EPIGRAPHIC LETTER REVERSED F..SYLOTI NAGRI LETTER I A803..A805 ; ID_Start # Lo [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O A807..A80A ; ID_Start # Lo [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO A80C..A822 ; ID_Start # Lo [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO A840..A873 ; ID_Start # Lo [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU A882..A8B3 ; ID_Start # Lo [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA A8F2..A8F7 ; ID_Start # Lo [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA A8FB ; ID_Start # Lo DEVANAGARI HEADSTROKE A8FD ; ID_Start # Lo DEVANAGARI JAIN OM A90A..A925 ; ID_Start # Lo [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO A930..A946 ; ID_Start # Lo [23] REJANG LETTER KA..REJANG LETTER A A960..A97C ; ID_Start # Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH A984..A9B2 ; ID_Start # Lo [47] JAVANESE LETTER A..JAVANESE LETTER HA A9CF ; ID_Start # Lm JAVANESE PANGRANGKEP A9E0..A9E4 ; ID_Start # Lo [5] MYANMAR LETTER SHAN GHA..MYANMAR LETTER SHAN BHA A9E6 ; ID_Start # Lm MYANMAR MODIFIER LETTER SHAN REDUPLICATION A9E7..A9EF ; ID_Start # Lo [9] MYANMAR LETTER TAI LAING NYA..MYANMAR LETTER TAI LAING NNA A9FA..A9FE ; ID_Start # Lo [5] MYANMAR LETTER TAI LAING LLA..MYANMAR LETTER TAI LAING BHA AA00..AA28 ; ID_Start # Lo [41] CHAM LETTER A..CHAM LETTER HA AA40..AA42 ; ID_Start # Lo [3] CHAM LETTER FINAL K..CHAM LETTER FINAL NG AA44..AA4B ; ID_Start # Lo [8] CHAM LETTER FINAL CH..CHAM LETTER FINAL SS AA60..AA6F ; ID_Start # Lo [16] MYANMAR LETTER KHAMTI GA..MYANMAR LETTER KHAMTI FA AA70 ; ID_Start # Lm MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION AA71..AA76 ; ID_Start # Lo [6] MYANMAR LETTER KHAMTI XA..MYANMAR LOGOGRAM KHAMTI HM AA7A ; ID_Start # Lo MYANMAR LETTER AITON RA AA7E..AAAF ; ID_Start # Lo [50] MYANMAR LETTER SHWE PALAUNG CHA..TAI VIET LETTER HIGH O AAB1 ; ID_Start # Lo TAI VIET VOWEL AA AAB5..AAB6 ; ID_Start # Lo [2] TAI VIET VOWEL E..TAI VIET VOWEL O AAB9..AABD ; ID_Start # Lo [5] TAI VIET VOWEL UEA..TAI VIET VOWEL AN AAC0 ; ID_Start # Lo TAI VIET TONE MAI NUENG AAC2 ; ID_Start # Lo TAI VIET TONE MAI SONG AADB..AADC ; ID_Start # Lo [2] TAI VIET SYMBOL KON..TAI VIET SYMBOL NUENG AADD ; ID_Start # Lm TAI VIET SYMBOL SAM AAE0..AAEA ; ID_Start # Lo [11] MEETEI MAYEK LETTER E..MEETEI MAYEK LETTER SSA AAF2 ; ID_Start # Lo MEETEI MAYEK ANJI AAF3..AAF4 ; ID_Start # Lm [2] MEETEI MAYEK SYLLABLE REPETITION MARK..MEETEI MAYEK WORD REPETITION MARK AB01..AB06 ; ID_Start # Lo [6] ETHIOPIC SYLLABLE TTHU..ETHIOPIC SYLLABLE TTHO AB09..AB0E ; ID_Start # Lo [6] ETHIOPIC SYLLABLE DDHU..ETHIOPIC SYLLABLE DDHO AB11..AB16 ; ID_Start # Lo [6] ETHIOPIC SYLLABLE DZU..ETHIOPIC SYLLABLE DZO AB20..AB26 ; ID_Start # Lo [7] ETHIOPIC SYLLABLE CCHHA..ETHIOPIC SYLLABLE CCHHO AB28..AB2E ; ID_Start # Lo [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO AB30..AB5A ; ID_Start # L& [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG AB5C..AB5F ; ID_Start # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK AB60..AB65 ; ID_Start # L& [6] LATIN SMALL LETTER SAKHA YAT..GREEK LETTER SMALL CAPITAL OMEGA AB70..ABBF ; ID_Start # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA ABC0..ABE2 ; ID_Start # Lo [35] MEETEI MAYEK LETTER KOK..MEETEI MAYEK LETTER I LONSUM AC00..D7A3 ; ID_Start # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH D7B0..D7C6 ; ID_Start # Lo [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E D7CB..D7FB ; ID_Start # Lo [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH F900..FA6D ; ID_Start # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D FA70..FAD9 ; ID_Start # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 FB00..FB06 ; ID_Start # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST FB13..FB17 ; ID_Start # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH FB1D ; ID_Start # Lo HEBREW LETTER YOD WITH HIRIQ FB1F..FB28 ; ID_Start # Lo [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV FB2A..FB36 ; ID_Start # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH FB38..FB3C ; ID_Start # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH FB3E ; ID_Start # Lo HEBREW LETTER MEM WITH DAGESH FB40..FB41 ; ID_Start # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH FB43..FB44 ; ID_Start # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH FB46..FBB1 ; ID_Start # Lo [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM FBD3..FD3D ; ID_Start # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM FD50..FD8F ; ID_Start # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM FD92..FDC7 ; ID_Start # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM FDF0..FDFB ; ID_Start # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU FE70..FE74 ; ID_Start # Lo [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM FE76..FEFC ; ID_Start # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM FF21..FF3A ; ID_Start # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z FF41..FF5A ; ID_Start # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z FF66..FF6F ; ID_Start # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU FF70 ; ID_Start # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK FF71..FF9D ; ID_Start # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N FF9E..FF9F ; ID_Start # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK FFA0..FFBE ; ID_Start # Lo [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH FFC2..FFC7 ; ID_Start # Lo [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E FFCA..FFCF ; ID_Start # Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE FFD2..FFD7 ; ID_Start # Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU FFDA..FFDC ; ID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I 10000..1000B ; ID_Start # Lo [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE 1000D..10026 ; ID_Start # Lo [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO 10028..1003A ; ID_Start # Lo [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO 1003C..1003D ; ID_Start # Lo [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE 1003F..1004D ; ID_Start # Lo [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO 10050..1005D ; ID_Start # Lo [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089 10080..100FA ; ID_Start # Lo [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305 10140..10174 ; ID_Start # Nl [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS 10280..1029C ; ID_Start # Lo [29] LYCIAN LETTER A..LYCIAN LETTER X 102A0..102D0 ; ID_Start # Lo [49] CARIAN LETTER A..CARIAN LETTER UUU3 10300..1031F ; ID_Start # Lo [32] OLD ITALIC LETTER A..OLD ITALIC LETTER ESS 10330..10340 ; ID_Start # Lo [17] GOTHIC LETTER AHSA..GOTHIC LETTER PAIRTHRA 10341 ; ID_Start # Nl GOTHIC LETTER NINETY 10342..10349 ; ID_Start # Lo [8] GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL 1034A ; ID_Start # Nl GOTHIC LETTER NINE HUNDRED 10350..10375 ; ID_Start # Lo [38] OLD PERMIC LETTER AN..OLD PERMIC LETTER IA 10380..1039D ; ID_Start # Lo [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU 103A0..103C3 ; ID_Start # Lo [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA 103C8..103CF ; ID_Start # Lo [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH 103D1..103D5 ; ID_Start # Nl [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED 10400..1044F ; ID_Start # L& [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW 10450..1049D ; ID_Start # Lo [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO 104B0..104D3 ; ID_Start # L& [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA 104D8..104FB ; ID_Start # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA 10500..10527 ; ID_Start # Lo [40] ELBASAN LETTER A..ELBASAN LETTER KHE 10530..10563 ; ID_Start # Lo [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW 10600..10736 ; ID_Start # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664 10740..10755 ; ID_Start # Lo [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE 10760..10767 ; ID_Start # Lo [8] LINEAR A SIGN A800..LINEAR A SIGN A807 10800..10805 ; ID_Start # Lo [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA 10808 ; ID_Start # Lo CYPRIOT SYLLABLE JO 1080A..10835 ; ID_Start # Lo [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO 10837..10838 ; ID_Start # Lo [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE 1083C ; ID_Start # Lo CYPRIOT SYLLABLE ZA 1083F..10855 ; ID_Start # Lo [23] CYPRIOT SYLLABLE ZO..IMPERIAL ARAMAIC LETTER TAW 10860..10876 ; ID_Start # Lo [23] PALMYRENE LETTER ALEPH..PALMYRENE LETTER TAW 10880..1089E ; ID_Start # Lo [31] NABATAEAN LETTER FINAL ALEPH..NABATAEAN LETTER TAW 108E0..108F2 ; ID_Start # Lo [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH 108F4..108F5 ; ID_Start # Lo [2] HATRAN LETTER SHIN..HATRAN LETTER TAW 10900..10915 ; ID_Start # Lo [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU 10920..10939 ; ID_Start # Lo [26] LYDIAN LETTER A..LYDIAN LETTER C 10980..109B7 ; ID_Start # Lo [56] MEROITIC HIEROGLYPHIC LETTER A..MEROITIC CURSIVE LETTER DA 109BE..109BF ; ID_Start # Lo [2] MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN 10A00 ; ID_Start # Lo KHAROSHTHI LETTER A 10A10..10A13 ; ID_Start # Lo [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA 10A15..10A17 ; ID_Start # Lo [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA 10A19..10A33 ; ID_Start # Lo [27] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER TTTHA 10A60..10A7C ; ID_Start # Lo [29] OLD SOUTH ARABIAN LETTER HE..OLD SOUTH ARABIAN LETTER THETH 10A80..10A9C ; ID_Start # Lo [29] OLD NORTH ARABIAN LETTER HEH..OLD NORTH ARABIAN LETTER ZAH 10AC0..10AC7 ; ID_Start # Lo [8] MANICHAEAN LETTER ALEPH..MANICHAEAN LETTER WAW 10AC9..10AE4 ; ID_Start # Lo [28] MANICHAEAN LETTER ZAYIN..MANICHAEAN LETTER TAW 10B00..10B35 ; ID_Start # Lo [54] AVESTAN LETTER A..AVESTAN LETTER HE 10B40..10B55 ; ID_Start # Lo [22] INSCRIPTIONAL PARTHIAN LETTER ALEPH..INSCRIPTIONAL PARTHIAN LETTER TAW 10B60..10B72 ; ID_Start # Lo [19] INSCRIPTIONAL PAHLAVI LETTER ALEPH..INSCRIPTIONAL PAHLAVI LETTER TAW 10B80..10B91 ; ID_Start # Lo [18] PSALTER PAHLAVI LETTER ALEPH..PSALTER PAHLAVI LETTER TAW 10C00..10C48 ; ID_Start # Lo [73] OLD TURKIC LETTER ORKHON A..OLD TURKIC LETTER ORKHON BASH 10C80..10CB2 ; ID_Start # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US 10CC0..10CF2 ; ID_Start # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US 11003..11037 ; ID_Start # Lo [53] BRAHMI SIGN JIHVAMULIYA..BRAHMI LETTER OLD TAMIL NNNA 11083..110AF ; ID_Start # Lo [45] KAITHI LETTER A..KAITHI LETTER HA 110D0..110E8 ; ID_Start # Lo [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE 11103..11126 ; ID_Start # Lo [36] CHAKMA LETTER AA..CHAKMA LETTER HAA 11150..11172 ; ID_Start # Lo [35] MAHAJANI LETTER A..MAHAJANI LETTER RRA 11176 ; ID_Start # Lo MAHAJANI LIGATURE SHRI 11183..111B2 ; ID_Start # Lo [48] SHARADA LETTER A..SHARADA LETTER HA 111C1..111C4 ; ID_Start # Lo [4] SHARADA SIGN AVAGRAHA..SHARADA OM 111DA ; ID_Start # Lo SHARADA EKAM 111DC ; ID_Start # Lo SHARADA HEADSTROKE 11200..11211 ; ID_Start # Lo [18] KHOJKI LETTER A..KHOJKI LETTER JJA 11213..1122B ; ID_Start # Lo [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA 11280..11286 ; ID_Start # Lo [7] MULTANI LETTER A..MULTANI LETTER GA 11288 ; ID_Start # Lo MULTANI LETTER GHA 1128A..1128D ; ID_Start # Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA 1128F..1129D ; ID_Start # Lo [15] MULTANI LETTER NYA..MULTANI LETTER BA 1129F..112A8 ; ID_Start # Lo [10] MULTANI LETTER BHA..MULTANI LETTER RHA 112B0..112DE ; ID_Start # Lo [47] KHUDAWADI LETTER A..KHUDAWADI LETTER HA 11305..1130C ; ID_Start # Lo [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L 1130F..11310 ; ID_Start # Lo [2] GRANTHA LETTER EE..GRANTHA LETTER AI 11313..11328 ; ID_Start # Lo [22] GRANTHA LETTER OO..GRANTHA LETTER NA 1132A..11330 ; ID_Start # Lo [7] GRANTHA LETTER PA..GRANTHA LETTER RA 11332..11333 ; ID_Start # Lo [2] GRANTHA LETTER LA..GRANTHA LETTER LLA 11335..11339 ; ID_Start # Lo [5] GRANTHA LETTER VA..GRANTHA LETTER HA 1133D ; ID_Start # Lo GRANTHA SIGN AVAGRAHA 11350 ; ID_Start # Lo GRANTHA OM 1135D..11361 ; ID_Start # Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL 11400..11434 ; ID_Start # Lo [53] NEWA LETTER A..NEWA LETTER HA 11447..1144A ; ID_Start # Lo [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI 11480..114AF ; ID_Start # Lo [48] TIRHUTA ANJI..TIRHUTA LETTER HA 114C4..114C5 ; ID_Start # Lo [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG 114C7 ; ID_Start # Lo TIRHUTA OM 11580..115AE ; ID_Start # Lo [47] SIDDHAM LETTER A..SIDDHAM LETTER HA 115D8..115DB ; ID_Start # Lo [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U 11600..1162F ; ID_Start # Lo [48] MODI LETTER A..MODI LETTER LLA 11644 ; ID_Start # Lo MODI SIGN HUVA 11680..116AA ; ID_Start # Lo [43] TAKRI LETTER A..TAKRI LETTER RRA 11700..11719 ; ID_Start # Lo [26] AHOM LETTER KA..AHOM LETTER JHA 118A0..118DF ; ID_Start # L& [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO 118FF ; ID_Start # Lo WARANG CITI OM 11AC0..11AF8 ; ID_Start # Lo [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL 11C00..11C08 ; ID_Start # Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L 11C0A..11C2E ; ID_Start # Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA 11C40 ; ID_Start # Lo BHAIKSUKI SIGN AVAGRAHA 11C72..11C8F ; ID_Start # Lo [30] MARCHEN LETTER KA..MARCHEN LETTER A 12000..12399 ; ID_Start # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U 12400..1246E ; ID_Start # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM 12480..12543 ; ID_Start # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU 13000..1342E ; ID_Start # Lo [1071] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH AA032 14400..14646 ; ID_Start # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 16800..16A38 ; ID_Start # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ 16A40..16A5E ; ID_Start # Lo [31] MRO LETTER TA..MRO LETTER TEK 16AD0..16AED ; ID_Start # Lo [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I 16B00..16B2F ; ID_Start # Lo [48] PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG CONSONANT CAU 16B40..16B43 ; ID_Start # Lm [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM 16B63..16B77 ; ID_Start # Lo [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS 16B7D..16B8F ; ID_Start # Lo [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ 16F00..16F44 ; ID_Start # Lo [69] MIAO LETTER PA..MIAO LETTER HHA 16F50 ; ID_Start # Lo MIAO LETTER NASALIZATION 16F93..16F9F ; ID_Start # Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8 16FE0 ; ID_Start # Lm TANGUT ITERATION MARK 17000..187EC ; ID_Start # Lo [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC 18800..18AF2 ; ID_Start # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755 1B000..1B001 ; ID_Start # Lo [2] KATAKANA LETTER ARCHAIC E..HIRAGANA LETTER ARCHAIC YE 1BC00..1BC6A ; ID_Start # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M 1BC70..1BC7C ; ID_Start # Lo [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK 1BC80..1BC88 ; ID_Start # Lo [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL 1BC90..1BC99 ; ID_Start # Lo [10] DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW 1D400..1D454 ; ID_Start # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G 1D456..1D49C ; ID_Start # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A 1D49E..1D49F ; ID_Start # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D 1D4A2 ; ID_Start # L& MATHEMATICAL SCRIPT CAPITAL G 1D4A5..1D4A6 ; ID_Start # L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K 1D4A9..1D4AC ; ID_Start # L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q 1D4AE..1D4B9 ; ID_Start # L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D 1D4BB ; ID_Start # L& MATHEMATICAL SCRIPT SMALL F 1D4BD..1D4C3 ; ID_Start # L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N 1D4C5..1D505 ; ID_Start # L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B 1D507..1D50A ; ID_Start # L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G 1D50D..1D514 ; ID_Start # L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q 1D516..1D51C ; ID_Start # L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y 1D51E..1D539 ; ID_Start # L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B 1D53B..1D53E ; ID_Start # L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G 1D540..1D544 ; ID_Start # L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M 1D546 ; ID_Start # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O 1D54A..1D550 ; ID_Start # L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y 1D552..1D6A5 ; ID_Start # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J 1D6A8..1D6C0 ; ID_Start # L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA 1D6C2..1D6DA ; ID_Start # L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA 1D6DC..1D6FA ; ID_Start # L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA 1D6FC..1D714 ; ID_Start # L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA 1D716..1D734 ; ID_Start # L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA 1D736..1D74E ; ID_Start # L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA 1D750..1D76E ; ID_Start # L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA 1D770..1D788 ; ID_Start # L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA 1D78A..1D7A8 ; ID_Start # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA 1D7AA..1D7C2 ; ID_Start # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA 1D7C4..1D7CB ; ID_Start # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA 1E800..1E8C4 ; ID_Start # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON 1E900..1E943 ; ID_Start # L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA 1EE00..1EE03 ; ID_Start # Lo [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL 1EE05..1EE1F ; ID_Start # Lo [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF 1EE21..1EE22 ; ID_Start # Lo [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM 1EE24 ; ID_Start # Lo ARABIC MATHEMATICAL INITIAL HEH 1EE27 ; ID_Start # Lo ARABIC MATHEMATICAL INITIAL HAH 1EE29..1EE32 ; ID_Start # Lo [10] ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF 1EE34..1EE37 ; ID_Start # Lo [4] ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH 1EE39 ; ID_Start # Lo ARABIC MATHEMATICAL INITIAL DAD 1EE3B ; ID_Start # Lo ARABIC MATHEMATICAL INITIAL GHAIN 1EE42 ; ID_Start # Lo ARABIC MATHEMATICAL TAILED JEEM 1EE47 ; ID_Start # Lo ARABIC MATHEMATICAL TAILED HAH 1EE49 ; ID_Start # Lo ARABIC MATHEMATICAL TAILED YEH 1EE4B ; ID_Start # Lo ARABIC MATHEMATICAL TAILED LAM 1EE4D..1EE4F ; ID_Start # Lo [3] ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN 1EE51..1EE52 ; ID_Start # Lo [2] ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF 1EE54 ; ID_Start # Lo ARABIC MATHEMATICAL TAILED SHEEN 1EE57 ; ID_Start # Lo ARABIC MATHEMATICAL TAILED KHAH 1EE59 ; ID_Start # Lo ARABIC MATHEMATICAL TAILED DAD 1EE5B ; ID_Start # Lo ARABIC MATHEMATICAL TAILED GHAIN 1EE5D ; ID_Start # Lo ARABIC MATHEMATICAL TAILED DOTLESS NOON 1EE5F ; ID_Start # Lo ARABIC MATHEMATICAL TAILED DOTLESS QAF 1EE61..1EE62 ; ID_Start # Lo [2] ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM 1EE64 ; ID_Start # Lo ARABIC MATHEMATICAL STRETCHED HEH 1EE67..1EE6A ; ID_Start # Lo [4] ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF 1EE6C..1EE72 ; ID_Start # Lo [7] ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF 1EE74..1EE77 ; ID_Start # Lo [4] ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH 1EE79..1EE7C ; ID_Start # Lo [4] ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH 1EE7E ; ID_Start # Lo ARABIC MATHEMATICAL STRETCHED DOTLESS FEH 1EE80..1EE89 ; ID_Start # Lo [10] ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH 1EE8B..1EE9B ; ID_Start # Lo [17] ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN 1EEA1..1EEA3 ; ID_Start # Lo [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL 1EEA5..1EEA9 ; ID_Start # Lo [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH 1EEAB..1EEBB ; ID_Start # Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN 20000..2A6D6 ; ID_Start # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 2A700..2B734 ; ID_Start # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 2B740..2B81D ; ID_Start # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D 2B820..2CEA1 ; ID_Start # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 2F800..2FA1D ; ID_Start # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D # Total code points: 117007 # ================================================ # Derived Property: ID_Continue # Characters that can continue an identifier. # Generated from: # ID_Start # + Mn + Mc + Nd + Pc # + Other_ID_Continue # - Pattern_Syntax # - Pattern_White_Space # NOTE: See UAX #31 for more information 0030..0039 ; ID_Continue # Nd [10] DIGIT ZERO..DIGIT NINE 0041..005A ; ID_Continue # L& [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z 005F ; ID_Continue # Pc LOW LINE 0061..007A ; ID_Continue # L& [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z 00AA ; ID_Continue # Lo FEMININE ORDINAL INDICATOR 00B5 ; ID_Continue # L& MICRO SIGN 00B7 ; ID_Continue # Po MIDDLE DOT 00BA ; ID_Continue # Lo MASCULINE ORDINAL INDICATOR 00C0..00D6 ; ID_Continue # L& [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS 00D8..00F6 ; ID_Continue # L& [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS 00F8..01BA ; ID_Continue # L& [195] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER EZH WITH TAIL 01BB ; ID_Continue # Lo LATIN LETTER TWO WITH STROKE 01BC..01BF ; ID_Continue # L& [4] LATIN CAPITAL LETTER TONE FIVE..LATIN LETTER WYNN 01C0..01C3 ; ID_Continue # Lo [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK 01C4..0293 ; ID_Continue # L& [208] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER EZH WITH CURL 0294 ; ID_Continue # Lo LATIN LETTER GLOTTAL STOP 0295..02AF ; ID_Continue # L& [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL 02B0..02C1 ; ID_Continue # Lm [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP 02C6..02D1 ; ID_Continue # Lm [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON 02E0..02E4 ; ID_Continue # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP 02EC ; ID_Continue # Lm MODIFIER LETTER VOICING 02EE ; ID_Continue # Lm MODIFIER LETTER DOUBLE APOSTROPHE 0300..036F ; ID_Continue # Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X 0370..0373 ; ID_Continue # L& [4] GREEK CAPITAL LETTER HETA..GREEK SMALL LETTER ARCHAIC SAMPI 0374 ; ID_Continue # Lm GREEK NUMERAL SIGN 0376..0377 ; ID_Continue # L& [2] GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA..GREEK SMALL LETTER PAMPHYLIAN DIGAMMA 037A ; ID_Continue # Lm GREEK YPOGEGRAMMENI 037B..037D ; ID_Continue # L& [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL 037F ; ID_Continue # L& GREEK CAPITAL LETTER YOT 0386 ; ID_Continue # L& GREEK CAPITAL LETTER ALPHA WITH TONOS 0387 ; ID_Continue # Po GREEK ANO TELEIA 0388..038A ; ID_Continue # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS 038C ; ID_Continue # L& GREEK CAPITAL LETTER OMICRON WITH TONOS 038E..03A1 ; ID_Continue # L& [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO 03A3..03F5 ; ID_Continue # L& [83] GREEK CAPITAL LETTER SIGMA..GREEK LUNATE EPSILON SYMBOL 03F7..0481 ; ID_Continue # L& [139] GREEK CAPITAL LETTER SHO..CYRILLIC SMALL LETTER KOPPA 0483..0487 ; ID_Continue # Mn [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE 048A..052F ; ID_Continue # L& [166] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER EL WITH DESCENDER 0531..0556 ; ID_Continue # L& [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH 0559 ; ID_Continue # Lm ARMENIAN MODIFIER LETTER LEFT HALF RING 0561..0587 ; ID_Continue # L& [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN 0591..05BD ; ID_Continue # Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG 05BF ; ID_Continue # Mn HEBREW POINT RAFE 05C1..05C2 ; ID_Continue # Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT 05C4..05C5 ; ID_Continue # Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT 05C7 ; ID_Continue # Mn HEBREW POINT QAMATS QATAN 05D0..05EA ; ID_Continue # Lo [27] HEBREW LETTER ALEF..HEBREW LETTER TAV 05F0..05F2 ; ID_Continue # Lo [3] HEBREW LIGATURE YIDDISH DOUBLE VAV..HEBREW LIGATURE YIDDISH DOUBLE YOD 0610..061A ; ID_Continue # Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA 0620..063F ; ID_Continue # Lo [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE 0640 ; ID_Continue # Lm ARABIC TATWEEL 0641..064A ; ID_Continue # Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH 064B..065F ; ID_Continue # Mn [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW 0660..0669 ; ID_Continue # Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE 066E..066F ; ID_Continue # Lo [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF 0670 ; ID_Continue # Mn ARABIC LETTER SUPERSCRIPT ALEF 0671..06D3 ; ID_Continue # Lo [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE 06D5 ; ID_Continue # Lo ARABIC LETTER AE 06D6..06DC ; ID_Continue # Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN 06DF..06E4 ; ID_Continue # Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA 06E5..06E6 ; ID_Continue # Lm [2] ARABIC SMALL WAW..ARABIC SMALL YEH 06E7..06E8 ; ID_Continue # Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON 06EA..06ED ; ID_Continue # Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM 06EE..06EF ; ID_Continue # Lo [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V 06F0..06F9 ; ID_Continue # Nd [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE 06FA..06FC ; ID_Continue # Lo [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW 06FF ; ID_Continue # Lo ARABIC LETTER HEH WITH INVERTED V 0710 ; ID_Continue # Lo SYRIAC LETTER ALAPH 0711 ; ID_Continue # Mn SYRIAC LETTER SUPERSCRIPT ALAPH 0712..072F ; ID_Continue # Lo [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH 0730..074A ; ID_Continue # Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH 074D..07A5 ; ID_Continue # Lo [89] SYRIAC LETTER SOGDIAN ZHAIN..THAANA LETTER WAAVU 07A6..07B0 ; ID_Continue # Mn [11] THAANA ABAFILI..THAANA SUKUN 07B1 ; ID_Continue # Lo THAANA LETTER NAA 07C0..07C9 ; ID_Continue # Nd [10] NKO DIGIT ZERO..NKO DIGIT NINE 07CA..07EA ; ID_Continue # Lo [33] NKO LETTER A..NKO LETTER JONA RA 07EB..07F3 ; ID_Continue # Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE 07F4..07F5 ; ID_Continue # Lm [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE 07FA ; ID_Continue # Lm NKO LAJANYALAN 0800..0815 ; ID_Continue # Lo [22] SAMARITAN LETTER ALAF..SAMARITAN LETTER TAAF 0816..0819 ; ID_Continue # Mn [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH 081A ; ID_Continue # Lm SAMARITAN MODIFIER LETTER EPENTHETIC YUT 081B..0823 ; ID_Continue # Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A 0824 ; ID_Continue # Lm SAMARITAN MODIFIER LETTER SHORT A 0825..0827 ; ID_Continue # Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U 0828 ; ID_Continue # Lm SAMARITAN MODIFIER LETTER I 0829..082D ; ID_Continue # Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA 0840..0858 ; ID_Continue # Lo [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN 0859..085B ; ID_Continue # Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK 08A0..08B4 ; ID_Continue # Lo [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW 08B6..08BD ; ID_Continue # Lo [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON 08D4..08E1 ; ID_Continue # Mn [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA 08E3..0902 ; ID_Continue # Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA 0903 ; ID_Continue # Mc DEVANAGARI SIGN VISARGA 0904..0939 ; ID_Continue # Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA 093A ; ID_Continue # Mn DEVANAGARI VOWEL SIGN OE 093B ; ID_Continue # Mc DEVANAGARI VOWEL SIGN OOE 093C ; ID_Continue # Mn DEVANAGARI SIGN NUKTA 093D ; ID_Continue # Lo DEVANAGARI SIGN AVAGRAHA 093E..0940 ; ID_Continue # Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II 0941..0948 ; ID_Continue # Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI 0949..094C ; ID_Continue # Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU 094D ; ID_Continue # Mn DEVANAGARI SIGN VIRAMA 094E..094F ; ID_Continue # Mc [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW 0950 ; ID_Continue # Lo DEVANAGARI OM 0951..0957 ; ID_Continue # Mn [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE 0958..0961 ; ID_Continue # Lo [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL 0962..0963 ; ID_Continue # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL 0966..096F ; ID_Continue # Nd [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE 0971 ; ID_Continue # Lm DEVANAGARI SIGN HIGH SPACING DOT 0972..0980 ; ID_Continue # Lo [15] DEVANAGARI LETTER CANDRA A..BENGALI ANJI 0981 ; ID_Continue # Mn BENGALI SIGN CANDRABINDU 0982..0983 ; ID_Continue # Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA 0985..098C ; ID_Continue # Lo [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L 098F..0990 ; ID_Continue # Lo [2] BENGALI LETTER E..BENGALI LETTER AI 0993..09A8 ; ID_Continue # Lo [22] BENGALI LETTER O..BENGALI LETTER NA 09AA..09B0 ; ID_Continue # Lo [7] BENGALI LETTER PA..BENGALI LETTER RA 09B2 ; ID_Continue # Lo BENGALI LETTER LA 09B6..09B9 ; ID_Continue # Lo [4] BENGALI LETTER SHA..BENGALI LETTER HA 09BC ; ID_Continue # Mn BENGALI SIGN NUKTA 09BD ; ID_Continue # Lo BENGALI SIGN AVAGRAHA 09BE..09C0 ; ID_Continue # Mc [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II 09C1..09C4 ; ID_Continue # Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR 09C7..09C8 ; ID_Continue # Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI 09CB..09CC ; ID_Continue # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU 09CD ; ID_Continue # Mn BENGALI SIGN VIRAMA 09CE ; ID_Continue # Lo BENGALI LETTER KHANDA TA 09D7 ; ID_Continue # Mc BENGALI AU LENGTH MARK 09DC..09DD ; ID_Continue # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA 09DF..09E1 ; ID_Continue # Lo [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL 09E2..09E3 ; ID_Continue # Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL 09E6..09EF ; ID_Continue # Nd [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE 09F0..09F1 ; ID_Continue # Lo [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL 0A01..0A02 ; ID_Continue # Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI 0A03 ; ID_Continue # Mc GURMUKHI SIGN VISARGA 0A05..0A0A ; ID_Continue # Lo [6] GURMUKHI LETTER A..GURMUKHI LETTER UU 0A0F..0A10 ; ID_Continue # Lo [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI 0A13..0A28 ; ID_Continue # Lo [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA 0A2A..0A30 ; ID_Continue # Lo [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA 0A32..0A33 ; ID_Continue # Lo [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA 0A35..0A36 ; ID_Continue # Lo [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA 0A38..0A39 ; ID_Continue # Lo [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA 0A3C ; ID_Continue # Mn GURMUKHI SIGN NUKTA 0A3E..0A40 ; ID_Continue # Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II 0A41..0A42 ; ID_Continue # Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU 0A47..0A48 ; ID_Continue # Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI 0A4B..0A4D ; ID_Continue # Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA 0A51 ; ID_Continue # Mn GURMUKHI SIGN UDAAT 0A59..0A5C ; ID_Continue # Lo [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA 0A5E ; ID_Continue # Lo GURMUKHI LETTER FA 0A66..0A6F ; ID_Continue # Nd [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE 0A70..0A71 ; ID_Continue # Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK 0A72..0A74 ; ID_Continue # Lo [3] GURMUKHI IRI..GURMUKHI EK ONKAR 0A75 ; ID_Continue # Mn GURMUKHI SIGN YAKASH 0A81..0A82 ; ID_Continue # Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA 0A83 ; ID_Continue # Mc GUJARATI SIGN VISARGA 0A85..0A8D ; ID_Continue # Lo [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E 0A8F..0A91 ; ID_Continue # Lo [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O 0A93..0AA8 ; ID_Continue # Lo [22] GUJARATI LETTER O..GUJARATI LETTER NA 0AAA..0AB0 ; ID_Continue # Lo [7] GUJARATI LETTER PA..GUJARATI LETTER RA 0AB2..0AB3 ; ID_Continue # Lo [2] GUJARATI LETTER LA..GUJARATI LETTER LLA 0AB5..0AB9 ; ID_Continue # Lo [5] GUJARATI LETTER VA..GUJARATI LETTER HA 0ABC ; ID_Continue # Mn GUJARATI SIGN NUKTA 0ABD ; ID_Continue # Lo GUJARATI SIGN AVAGRAHA 0ABE..0AC0 ; ID_Continue # Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II 0AC1..0AC5 ; ID_Continue # Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E 0AC7..0AC8 ; ID_Continue # Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI 0AC9 ; ID_Continue # Mc GUJARATI VOWEL SIGN CANDRA O 0ACB..0ACC ; ID_Continue # Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU 0ACD ; ID_Continue # Mn GUJARATI SIGN VIRAMA 0AD0 ; ID_Continue # Lo GUJARATI OM 0AE0..0AE1 ; ID_Continue # Lo [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL 0AE2..0AE3 ; ID_Continue # Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL 0AE6..0AEF ; ID_Continue # Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE 0AF9 ; ID_Continue # Lo GUJARATI LETTER ZHA 0B01 ; ID_Continue # Mn ORIYA SIGN CANDRABINDU 0B02..0B03 ; ID_Continue # Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA 0B05..0B0C ; ID_Continue # Lo [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L 0B0F..0B10 ; ID_Continue # Lo [2] ORIYA LETTER E..ORIYA LETTER AI 0B13..0B28 ; ID_Continue # Lo [22] ORIYA LETTER O..ORIYA LETTER NA 0B2A..0B30 ; ID_Continue # Lo [7] ORIYA LETTER PA..ORIYA LETTER RA 0B32..0B33 ; ID_Continue # Lo [2] ORIYA LETTER LA..ORIYA LETTER LLA 0B35..0B39 ; ID_Continue # Lo [5] ORIYA LETTER VA..ORIYA LETTER HA 0B3C ; ID_Continue # Mn ORIYA SIGN NUKTA 0B3D ; ID_Continue # Lo ORIYA SIGN AVAGRAHA 0B3E ; ID_Continue # Mc ORIYA VOWEL SIGN AA 0B3F ; ID_Continue # Mn ORIYA VOWEL SIGN I 0B40 ; ID_Continue # Mc ORIYA VOWEL SIGN II 0B41..0B44 ; ID_Continue # Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR 0B47..0B48 ; ID_Continue # Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI 0B4B..0B4C ; ID_Continue # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU 0B4D ; ID_Continue # Mn ORIYA SIGN VIRAMA 0B56 ; ID_Continue # Mn ORIYA AI LENGTH MARK 0B57 ; ID_Continue # Mc ORIYA AU LENGTH MARK 0B5C..0B5D ; ID_Continue # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA 0B5F..0B61 ; ID_Continue # Lo [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL 0B62..0B63 ; ID_Continue # Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL 0B66..0B6F ; ID_Continue # Nd [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE 0B71 ; ID_Continue # Lo ORIYA LETTER WA 0B82 ; ID_Continue # Mn TAMIL SIGN ANUSVARA 0B83 ; ID_Continue # Lo TAMIL SIGN VISARGA 0B85..0B8A ; ID_Continue # Lo [6] TAMIL LETTER A..TAMIL LETTER UU 0B8E..0B90 ; ID_Continue # Lo [3] TAMIL LETTER E..TAMIL LETTER AI 0B92..0B95 ; ID_Continue # Lo [4] TAMIL LETTER O..TAMIL LETTER KA 0B99..0B9A ; ID_Continue # Lo [2] TAMIL LETTER NGA..TAMIL LETTER CA 0B9C ; ID_Continue # Lo TAMIL LETTER JA 0B9E..0B9F ; ID_Continue # Lo [2] TAMIL LETTER NYA..TAMIL LETTER TTA 0BA3..0BA4 ; ID_Continue # Lo [2] TAMIL LETTER NNA..TAMIL LETTER TA 0BA8..0BAA ; ID_Continue # Lo [3] TAMIL LETTER NA..TAMIL LETTER PA 0BAE..0BB9 ; ID_Continue # Lo [12] TAMIL LETTER MA..TAMIL LETTER HA 0BBE..0BBF ; ID_Continue # Mc [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I 0BC0 ; ID_Continue # Mn TAMIL VOWEL SIGN II 0BC1..0BC2 ; ID_Continue # Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU 0BC6..0BC8 ; ID_Continue # Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI 0BCA..0BCC ; ID_Continue # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU 0BCD ; ID_Continue # Mn TAMIL SIGN VIRAMA 0BD0 ; ID_Continue # Lo TAMIL OM 0BD7 ; ID_Continue # Mc TAMIL AU LENGTH MARK 0BE6..0BEF ; ID_Continue # Nd [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE 0C00 ; ID_Continue # Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE 0C01..0C03 ; ID_Continue # Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA 0C05..0C0C ; ID_Continue # Lo [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L 0C0E..0C10 ; ID_Continue # Lo [3] TELUGU LETTER E..TELUGU LETTER AI 0C12..0C28 ; ID_Continue # Lo [23] TELUGU LETTER O..TELUGU LETTER NA 0C2A..0C39 ; ID_Continue # Lo [16] TELUGU LETTER PA..TELUGU LETTER HA 0C3D ; ID_Continue # Lo TELUGU SIGN AVAGRAHA 0C3E..0C40 ; ID_Continue # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II 0C41..0C44 ; ID_Continue # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR 0C46..0C48 ; ID_Continue # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI 0C4A..0C4D ; ID_Continue # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA 0C55..0C56 ; ID_Continue # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK 0C58..0C5A ; ID_Continue # Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA 0C60..0C61 ; ID_Continue # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL 0C62..0C63 ; ID_Continue # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL 0C66..0C6F ; ID_Continue # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE 0C80 ; ID_Continue # Lo KANNADA SIGN SPACING CANDRABINDU 0C81 ; ID_Continue # Mn KANNADA SIGN CANDRABINDU 0C82..0C83 ; ID_Continue # Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA 0C85..0C8C ; ID_Continue # Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L 0C8E..0C90 ; ID_Continue # Lo [3] KANNADA LETTER E..KANNADA LETTER AI 0C92..0CA8 ; ID_Continue # Lo [23] KANNADA LETTER O..KANNADA LETTER NA 0CAA..0CB3 ; ID_Continue # Lo [10] KANNADA LETTER PA..KANNADA LETTER LLA 0CB5..0CB9 ; ID_Continue # Lo [5] KANNADA LETTER VA..KANNADA LETTER HA 0CBC ; ID_Continue # Mn KANNADA SIGN NUKTA 0CBD ; ID_Continue # Lo KANNADA SIGN AVAGRAHA 0CBE ; ID_Continue # Mc KANNADA VOWEL SIGN AA 0CBF ; ID_Continue # Mn KANNADA VOWEL SIGN I 0CC0..0CC4 ; ID_Continue # Mc [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR 0CC6 ; ID_Continue # Mn KANNADA VOWEL SIGN E 0CC7..0CC8 ; ID_Continue # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI 0CCA..0CCB ; ID_Continue # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO 0CCC..0CCD ; ID_Continue # Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA 0CD5..0CD6 ; ID_Continue # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK 0CDE ; ID_Continue # Lo KANNADA LETTER FA 0CE0..0CE1 ; ID_Continue # Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL 0CE2..0CE3 ; ID_Continue # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL 0CE6..0CEF ; ID_Continue # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE 0CF1..0CF2 ; ID_Continue # Lo [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA 0D01 ; ID_Continue # Mn MALAYALAM SIGN CANDRABINDU 0D02..0D03 ; ID_Continue # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA 0D05..0D0C ; ID_Continue # Lo [8] MALAYALAM LETTER A..MALAYALAM LETTER VOCALIC L 0D0E..0D10 ; ID_Continue # Lo [3] MALAYALAM LETTER E..MALAYALAM LETTER AI 0D12..0D3A ; ID_Continue # Lo [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA 0D3D ; ID_Continue # Lo MALAYALAM SIGN AVAGRAHA 0D3E..0D40 ; ID_Continue # Mc [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II 0D41..0D44 ; ID_Continue # Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR 0D46..0D48 ; ID_Continue # Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI 0D4A..0D4C ; ID_Continue # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU 0D4D ; ID_Continue # Mn MALAYALAM SIGN VIRAMA 0D4E ; ID_Continue # Lo MALAYALAM LETTER DOT REPH 0D54..0D56 ; ID_Continue # Lo [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL 0D57 ; ID_Continue # Mc MALAYALAM AU LENGTH MARK 0D5F..0D61 ; ID_Continue # Lo [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL 0D62..0D63 ; ID_Continue # Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL 0D66..0D6F ; ID_Continue # Nd [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE 0D7A..0D7F ; ID_Continue # Lo [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K 0D82..0D83 ; ID_Continue # Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA 0D85..0D96 ; ID_Continue # Lo [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA 0D9A..0DB1 ; ID_Continue # Lo [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA 0DB3..0DBB ; ID_Continue # Lo [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA 0DBD ; ID_Continue # Lo SINHALA LETTER DANTAJA LAYANNA 0DC0..0DC6 ; ID_Continue # Lo [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA 0DCA ; ID_Continue # Mn SINHALA SIGN AL-LAKUNA 0DCF..0DD1 ; ID_Continue # Mc [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA 0DD2..0DD4 ; ID_Continue # Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA 0DD6 ; ID_Continue # Mn SINHALA VOWEL SIGN DIGA PAA-PILLA 0DD8..0DDF ; ID_Continue # Mc [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA 0DE6..0DEF ; ID_Continue # Nd [10] SINHALA LITH DIGIT ZERO..SINHALA LITH DIGIT NINE 0DF2..0DF3 ; ID_Continue # Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA 0E01..0E30 ; ID_Continue # Lo [48] THAI CHARACTER KO KAI..THAI CHARACTER SARA A 0E31 ; ID_Continue # Mn THAI CHARACTER MAI HAN-AKAT 0E32..0E33 ; ID_Continue # Lo [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM 0E34..0E3A ; ID_Continue # Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU 0E40..0E45 ; ID_Continue # Lo [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO 0E46 ; ID_Continue # Lm THAI CHARACTER MAIYAMOK 0E47..0E4E ; ID_Continue # Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN 0E50..0E59 ; ID_Continue # Nd [10] THAI DIGIT ZERO..THAI DIGIT NINE 0E81..0E82 ; ID_Continue # Lo [2] LAO LETTER KO..LAO LETTER KHO SUNG 0E84 ; ID_Continue # Lo LAO LETTER KHO TAM 0E87..0E88 ; ID_Continue # Lo [2] LAO LETTER NGO..LAO LETTER CO 0E8A ; ID_Continue # Lo LAO LETTER SO TAM 0E8D ; ID_Continue # Lo LAO LETTER NYO 0E94..0E97 ; ID_Continue # Lo [4] LAO LETTER DO..LAO LETTER THO TAM 0E99..0E9F ; ID_Continue # Lo [7] LAO LETTER NO..LAO LETTER FO SUNG 0EA1..0EA3 ; ID_Continue # Lo [3] LAO LETTER MO..LAO LETTER LO LING 0EA5 ; ID_Continue # Lo LAO LETTER LO LOOT 0EA7 ; ID_Continue # Lo LAO LETTER WO 0EAA..0EAB ; ID_Continue # Lo [2] LAO LETTER SO SUNG..LAO LETTER HO SUNG 0EAD..0EB0 ; ID_Continue # Lo [4] LAO LETTER O..LAO VOWEL SIGN A 0EB1 ; ID_Continue # Mn LAO VOWEL SIGN MAI KAN 0EB2..0EB3 ; ID_Continue # Lo [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM 0EB4..0EB9 ; ID_Continue # Mn [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU 0EBB..0EBC ; ID_Continue # Mn [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO 0EBD ; ID_Continue # Lo LAO SEMIVOWEL SIGN NYO 0EC0..0EC4 ; ID_Continue # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI 0EC6 ; ID_Continue # Lm LAO KO LA 0EC8..0ECD ; ID_Continue # Mn [6] LAO TONE MAI EK..LAO NIGGAHITA 0ED0..0ED9 ; ID_Continue # Nd [10] LAO DIGIT ZERO..LAO DIGIT NINE 0EDC..0EDF ; ID_Continue # Lo [4] LAO HO NO..LAO LETTER KHMU NYO 0F00 ; ID_Continue # Lo TIBETAN SYLLABLE OM 0F18..0F19 ; ID_Continue # Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS 0F20..0F29 ; ID_Continue # Nd [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE 0F35 ; ID_Continue # Mn TIBETAN MARK NGAS BZUNG NYI ZLA 0F37 ; ID_Continue # Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS 0F39 ; ID_Continue # Mn TIBETAN MARK TSA -PHRU 0F3E..0F3F ; ID_Continue # Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES 0F40..0F47 ; ID_Continue # Lo [8] TIBETAN LETTER KA..TIBETAN LETTER JA 0F49..0F6C ; ID_Continue # Lo [36] TIBETAN LETTER NYA..TIBETAN LETTER RRA 0F71..0F7E ; ID_Continue # Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO 0F7F ; ID_Continue # Mc TIBETAN SIGN RNAM BCAD 0F80..0F84 ; ID_Continue # Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA 0F86..0F87 ; ID_Continue # Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS 0F88..0F8C ; ID_Continue # Lo [5] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN INVERTED MCHU CAN 0F8D..0F97 ; ID_Continue # Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA 0F99..0FBC ; ID_Continue # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA 0FC6 ; ID_Continue # Mn TIBETAN SYMBOL PADMA GDAN 1000..102A ; ID_Continue # Lo [43] MYANMAR LETTER KA..MYANMAR LETTER AU 102B..102C ; ID_Continue # Mc [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA 102D..1030 ; ID_Continue # Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU 1031 ; ID_Continue # Mc MYANMAR VOWEL SIGN E 1032..1037 ; ID_Continue # Mn [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW 1038 ; ID_Continue # Mc MYANMAR SIGN VISARGA 1039..103A ; ID_Continue # Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT 103B..103C ; ID_Continue # Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA 103D..103E ; ID_Continue # Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA 103F ; ID_Continue # Lo MYANMAR LETTER GREAT SA 1040..1049 ; ID_Continue # Nd [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE 1050..1055 ; ID_Continue # Lo [6] MYANMAR LETTER SHA..MYANMAR LETTER VOCALIC LL 1056..1057 ; ID_Continue # Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR 1058..1059 ; ID_Continue # Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL 105A..105D ; ID_Continue # Lo [4] MYANMAR LETTER MON NGA..MYANMAR LETTER MON BBE 105E..1060 ; ID_Continue # Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA 1061 ; ID_Continue # Lo MYANMAR LETTER SGAW KAREN SHA 1062..1064 ; ID_Continue # Mc [3] MYANMAR VOWEL SIGN SGAW KAREN EU..MYANMAR TONE MARK SGAW KAREN KE PHO 1065..1066 ; ID_Continue # Lo [2] MYANMAR LETTER WESTERN PWO KAREN THA..MYANMAR LETTER WESTERN PWO KAREN PWA 1067..106D ; ID_Continue # Mc [7] MYANMAR VOWEL SIGN WESTERN PWO KAREN EU..MYANMAR SIGN WESTERN PWO KAREN TONE-5 106E..1070 ; ID_Continue # Lo [3] MYANMAR LETTER EASTERN PWO KAREN NNA..MYANMAR LETTER EASTERN PWO KAREN GHWA 1071..1074 ; ID_Continue # Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE 1075..1081 ; ID_Continue # Lo [13] MYANMAR LETTER SHAN KA..MYANMAR LETTER SHAN HA 1082 ; ID_Continue # Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA 1083..1084 ; ID_Continue # Mc [2] MYANMAR VOWEL SIGN SHAN AA..MYANMAR VOWEL SIGN SHAN E 1085..1086 ; ID_Continue # Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y 1087..108C ; ID_Continue # Mc [6] MYANMAR SIGN SHAN TONE-2..MYANMAR SIGN SHAN COUNCIL TONE-3 108D ; ID_Continue # Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE 108E ; ID_Continue # Lo MYANMAR LETTER RUMAI PALAUNG FA 108F ; ID_Continue # Mc MYANMAR SIGN RUMAI PALAUNG TONE-5 1090..1099 ; ID_Continue # Nd [10] MYANMAR SHAN DIGIT ZERO..MYANMAR SHAN DIGIT NINE 109A..109C ; ID_Continue # Mc [3] MYANMAR SIGN KHAMTI TONE-1..MYANMAR VOWEL SIGN AITON A 109D ; ID_Continue # Mn MYANMAR VOWEL SIGN AITON AI 10A0..10C5 ; ID_Continue # L& [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE 10C7 ; ID_Continue # L& GEORGIAN CAPITAL LETTER YN 10CD ; ID_Continue # L& GEORGIAN CAPITAL LETTER AEN 10D0..10FA ; ID_Continue # Lo [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN 10FC ; ID_Continue # Lm MODIFIER LETTER GEORGIAN NAR 10FD..1248 ; ID_Continue # Lo [332] GEORGIAN LETTER AEN..ETHIOPIC SYLLABLE QWA 124A..124D ; ID_Continue # Lo [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE 1250..1256 ; ID_Continue # Lo [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO 1258 ; ID_Continue # Lo ETHIOPIC SYLLABLE QHWA 125A..125D ; ID_Continue # Lo [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE 1260..1288 ; ID_Continue # Lo [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA 128A..128D ; ID_Continue # Lo [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE 1290..12B0 ; ID_Continue # Lo [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA 12B2..12B5 ; ID_Continue # Lo [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE 12B8..12BE ; ID_Continue # Lo [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO 12C0 ; ID_Continue # Lo ETHIOPIC SYLLABLE KXWA 12C2..12C5 ; ID_Continue # Lo [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE 12C8..12D6 ; ID_Continue # Lo [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O 12D8..1310 ; ID_Continue # Lo [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA 1312..1315 ; ID_Continue # Lo [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE 1318..135A ; ID_Continue # Lo [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA 135D..135F ; ID_Continue # Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK 1369..1371 ; ID_Continue # No [9] ETHIOPIC DIGIT ONE..ETHIOPIC DIGIT NINE 1380..138F ; ID_Continue # Lo [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE 13A0..13F5 ; ID_Continue # L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV 13F8..13FD ; ID_Continue # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV 1401..166C ; ID_Continue # Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA 166F..167F ; ID_Continue # Lo [17] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS BLACKFOOT W 1681..169A ; ID_Continue # Lo [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH 16A0..16EA ; ID_Continue # Lo [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X 16EE..16F0 ; ID_Continue # Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL 16F1..16F8 ; ID_Continue # Lo [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC 1700..170C ; ID_Continue # Lo [13] TAGALOG LETTER A..TAGALOG LETTER YA 170E..1711 ; ID_Continue # Lo [4] TAGALOG LETTER LA..TAGALOG LETTER HA 1712..1714 ; ID_Continue # Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA 1720..1731 ; ID_Continue # Lo [18] HANUNOO LETTER A..HANUNOO LETTER HA 1732..1734 ; ID_Continue # Mn [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD 1740..1751 ; ID_Continue # Lo [18] BUHID LETTER A..BUHID LETTER HA 1752..1753 ; ID_Continue # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U 1760..176C ; ID_Continue # Lo [13] TAGBANWA LETTER A..TAGBANWA LETTER YA 176E..1770 ; ID_Continue # Lo [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA 1772..1773 ; ID_Continue # Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U 1780..17B3 ; ID_Continue # Lo [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU 17B4..17B5 ; ID_Continue # Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA 17B6 ; ID_Continue # Mc KHMER VOWEL SIGN AA 17B7..17BD ; ID_Continue # Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA 17BE..17C5 ; ID_Continue # Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU 17C6 ; ID_Continue # Mn KHMER SIGN NIKAHIT 17C7..17C8 ; ID_Continue # Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU 17C9..17D3 ; ID_Continue # Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT 17D7 ; ID_Continue # Lm KHMER SIGN LEK TOO 17DC ; ID_Continue # Lo KHMER SIGN AVAKRAHASANYA 17DD ; ID_Continue # Mn KHMER SIGN ATTHACAN 17E0..17E9 ; ID_Continue # Nd [10] KHMER DIGIT ZERO..KHMER DIGIT NINE 180B..180D ; ID_Continue # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE 1810..1819 ; ID_Continue # Nd [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE 1820..1842 ; ID_Continue # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI 1843 ; ID_Continue # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN 1844..1877 ; ID_Continue # Lo [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA 1880..1884 ; ID_Continue # Lo [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA 1885..1886 ; ID_Continue # Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA 1887..18A8 ; ID_Continue # Lo [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA 18A9 ; ID_Continue # Mn MONGOLIAN LETTER ALI GALI DAGALGA 18AA ; ID_Continue # Lo MONGOLIAN LETTER MANCHU ALI GALI LHA 18B0..18F5 ; ID_Continue # Lo [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S 1900..191E ; ID_Continue # Lo [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA 1920..1922 ; ID_Continue # Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U 1923..1926 ; ID_Continue # Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU 1927..1928 ; ID_Continue # Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O 1929..192B ; ID_Continue # Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA 1930..1931 ; ID_Continue # Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA 1932 ; ID_Continue # Mn LIMBU SMALL LETTER ANUSVARA 1933..1938 ; ID_Continue # Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA 1939..193B ; ID_Continue # Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I 1946..194F ; ID_Continue # Nd [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE 1950..196D ; ID_Continue # Lo [30] TAI LE LETTER KA..TAI LE LETTER AI 1970..1974 ; ID_Continue # Lo [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6 1980..19AB ; ID_Continue # Lo [44] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW SUA 19B0..19C9 ; ID_Continue # Lo [26] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE TONE MARK-2 19D0..19D9 ; ID_Continue # Nd [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE 19DA ; ID_Continue # No NEW TAI LUE THAM DIGIT ONE 1A00..1A16 ; ID_Continue # Lo [23] BUGINESE LETTER KA..BUGINESE LETTER HA 1A17..1A18 ; ID_Continue # Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U 1A19..1A1A ; ID_Continue # Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O 1A1B ; ID_Continue # Mn BUGINESE VOWEL SIGN AE 1A20..1A54 ; ID_Continue # Lo [53] TAI THAM LETTER HIGH KA..TAI THAM LETTER GREAT SA 1A55 ; ID_Continue # Mc TAI THAM CONSONANT SIGN MEDIAL RA 1A56 ; ID_Continue # Mn TAI THAM CONSONANT SIGN MEDIAL LA 1A57 ; ID_Continue # Mc TAI THAM CONSONANT SIGN LA TANG LAI 1A58..1A5E ; ID_Continue # Mn [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA 1A60 ; ID_Continue # Mn TAI THAM SIGN SAKOT 1A61 ; ID_Continue # Mc TAI THAM VOWEL SIGN A 1A62 ; ID_Continue # Mn TAI THAM VOWEL SIGN MAI SAT 1A63..1A64 ; ID_Continue # Mc [2] TAI THAM VOWEL SIGN AA..TAI THAM VOWEL SIGN TALL AA 1A65..1A6C ; ID_Continue # Mn [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW 1A6D..1A72 ; ID_Continue # Mc [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI 1A73..1A7C ; ID_Continue # Mn [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN 1A7F ; ID_Continue # Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT 1A80..1A89 ; ID_Continue # Nd [10] TAI THAM HORA DIGIT ZERO..TAI THAM HORA DIGIT NINE 1A90..1A99 ; ID_Continue # Nd [10] TAI THAM THAM DIGIT ZERO..TAI THAM THAM DIGIT NINE 1AA7 ; ID_Continue # Lm TAI THAM SIGN MAI YAMOK 1AB0..1ABD ; ID_Continue # Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW 1B00..1B03 ; ID_Continue # Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG 1B04 ; ID_Continue # Mc BALINESE SIGN BISAH 1B05..1B33 ; ID_Continue # Lo [47] BALINESE LETTER AKARA..BALINESE LETTER HA 1B34 ; ID_Continue # Mn BALINESE SIGN REREKAN 1B35 ; ID_Continue # Mc BALINESE VOWEL SIGN TEDUNG 1B36..1B3A ; ID_Continue # Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA 1B3B ; ID_Continue # Mc BALINESE VOWEL SIGN RA REPA TEDUNG 1B3C ; ID_Continue # Mn BALINESE VOWEL SIGN LA LENGA 1B3D..1B41 ; ID_Continue # Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG 1B42 ; ID_Continue # Mn BALINESE VOWEL SIGN PEPET 1B43..1B44 ; ID_Continue # Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG 1B45..1B4B ; ID_Continue # Lo [7] BALINESE LETTER KAF SASAK..BALINESE LETTER ASYURA SASAK 1B50..1B59 ; ID_Continue # Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE 1B6B..1B73 ; ID_Continue # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG 1B80..1B81 ; ID_Continue # Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR 1B82 ; ID_Continue # Mc SUNDANESE SIGN PANGWISAD 1B83..1BA0 ; ID_Continue # Lo [30] SUNDANESE LETTER A..SUNDANESE LETTER HA 1BA1 ; ID_Continue # Mc SUNDANESE CONSONANT SIGN PAMINGKAL 1BA2..1BA5 ; ID_Continue # Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU 1BA6..1BA7 ; ID_Continue # Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG 1BA8..1BA9 ; ID_Continue # Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG 1BAA ; ID_Continue # Mc SUNDANESE SIGN PAMAAEH 1BAB..1BAD ; ID_Continue # Mn [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA 1BAE..1BAF ; ID_Continue # Lo [2] SUNDANESE LETTER KHA..SUNDANESE LETTER SYA 1BB0..1BB9 ; ID_Continue # Nd [10] SUNDANESE DIGIT ZERO..SUNDANESE DIGIT NINE 1BBA..1BE5 ; ID_Continue # Lo [44] SUNDANESE AVAGRAHA..BATAK LETTER U 1BE6 ; ID_Continue # Mn BATAK SIGN TOMPI 1BE7 ; ID_Continue # Mc BATAK VOWEL SIGN E 1BE8..1BE9 ; ID_Continue # Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE 1BEA..1BEC ; ID_Continue # Mc [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O 1BED ; ID_Continue # Mn BATAK VOWEL SIGN KARO O 1BEE ; ID_Continue # Mc BATAK VOWEL SIGN U 1BEF..1BF1 ; ID_Continue # Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H 1BF2..1BF3 ; ID_Continue # Mc [2] BATAK PANGOLAT..BATAK PANONGONAN 1C00..1C23 ; ID_Continue # Lo [36] LEPCHA LETTER KA..LEPCHA LETTER A 1C24..1C2B ; ID_Continue # Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU 1C2C..1C33 ; ID_Continue # Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T 1C34..1C35 ; ID_Continue # Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG 1C36..1C37 ; ID_Continue # Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA 1C40..1C49 ; ID_Continue # Nd [10] LEPCHA DIGIT ZERO..LEPCHA DIGIT NINE 1C4D..1C4F ; ID_Continue # Lo [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA 1C50..1C59 ; ID_Continue # Nd [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE 1C5A..1C77 ; ID_Continue # Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH 1C78..1C7D ; ID_Continue # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD 1C80..1C88 ; ID_Continue # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK 1CD0..1CD2 ; ID_Continue # Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA 1CD4..1CE0 ; ID_Continue # Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA 1CE1 ; ID_Continue # Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA 1CE2..1CE8 ; ID_Continue # Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL 1CE9..1CEC ; ID_Continue # Lo [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL 1CED ; ID_Continue # Mn VEDIC SIGN TIRYAK 1CEE..1CF1 ; ID_Continue # Lo [4] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ANUSVARA UBHAYATO MUKHA 1CF2..1CF3 ; ID_Continue # Mc [2] VEDIC SIGN ARDHAVISARGA..VEDIC SIGN ROTATED ARDHAVISARGA 1CF4 ; ID_Continue # Mn VEDIC TONE CANDRA ABOVE 1CF5..1CF6 ; ID_Continue # Lo [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA 1CF8..1CF9 ; ID_Continue # Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE 1D00..1D2B ; ID_Continue # L& [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL 1D2C..1D6A ; ID_Continue # Lm [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI 1D6B..1D77 ; ID_Continue # L& [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G 1D78 ; ID_Continue # Lm MODIFIER LETTER CYRILLIC EN 1D79..1D9A ; ID_Continue # L& [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK 1D9B..1DBF ; ID_Continue # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA 1DC0..1DF5 ; ID_Continue # Mn [54] COMBINING DOTTED GRAVE ACCENT..COMBINING UP TACK ABOVE 1DFB..1DFF ; ID_Continue # Mn [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW 1E00..1F15 ; ID_Continue # L& [278] LATIN CAPITAL LETTER A WITH RING BELOW..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA 1F18..1F1D ; ID_Continue # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA 1F20..1F45 ; ID_Continue # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA 1F48..1F4D ; ID_Continue # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA 1F50..1F57 ; ID_Continue # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI 1F59 ; ID_Continue # L& GREEK CAPITAL LETTER UPSILON WITH DASIA 1F5B ; ID_Continue # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA 1F5D ; ID_Continue # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA 1F5F..1F7D ; ID_Continue # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA 1F80..1FB4 ; ID_Continue # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI 1FB6..1FBC ; ID_Continue # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI 1FBE ; ID_Continue # L& GREEK PROSGEGRAMMENI 1FC2..1FC4 ; ID_Continue # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI 1FC6..1FCC ; ID_Continue # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI 1FD0..1FD3 ; ID_Continue # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA 1FD6..1FDB ; ID_Continue # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA 1FE0..1FEC ; ID_Continue # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA 1FF2..1FF4 ; ID_Continue # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI 1FF6..1FFC ; ID_Continue # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI 203F..2040 ; ID_Continue # Pc [2] UNDERTIE..CHARACTER TIE 2054 ; ID_Continue # Pc INVERTED UNDERTIE 2071 ; ID_Continue # Lm SUPERSCRIPT LATIN SMALL LETTER I 207F ; ID_Continue # Lm SUPERSCRIPT LATIN SMALL LETTER N 2090..209C ; ID_Continue # Lm [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T 20D0..20DC ; ID_Continue # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE 20E1 ; ID_Continue # Mn COMBINING LEFT RIGHT ARROW ABOVE 20E5..20F0 ; ID_Continue # Mn [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE 2102 ; ID_Continue # L& DOUBLE-STRUCK CAPITAL C 2107 ; ID_Continue # L& EULER CONSTANT 210A..2113 ; ID_Continue # L& [10] SCRIPT SMALL G..SCRIPT SMALL L 2115 ; ID_Continue # L& DOUBLE-STRUCK CAPITAL N 2118 ; ID_Continue # Sm SCRIPT CAPITAL P 2119..211D ; ID_Continue # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R 2124 ; ID_Continue # L& DOUBLE-STRUCK CAPITAL Z 2126 ; ID_Continue # L& OHM SIGN 2128 ; ID_Continue # L& BLACK-LETTER CAPITAL Z 212A..212D ; ID_Continue # L& [4] KELVIN SIGN..BLACK-LETTER CAPITAL C 212E ; ID_Continue # So ESTIMATED SYMBOL 212F..2134 ; ID_Continue # L& [6] SCRIPT SMALL E..SCRIPT SMALL O 2135..2138 ; ID_Continue # Lo [4] ALEF SYMBOL..DALET SYMBOL 2139 ; ID_Continue # L& INFORMATION SOURCE 213C..213F ; ID_Continue # L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI 2145..2149 ; ID_Continue # L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J 214E ; ID_Continue # L& TURNED SMALL F 2160..2182 ; ID_Continue # Nl [35] ROMAN NUMERAL ONE..ROMAN NUMERAL TEN THOUSAND 2183..2184 ; ID_Continue # L& [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C 2185..2188 ; ID_Continue # Nl [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND 2C00..2C2E ; ID_Continue # L& [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE 2C30..2C5E ; ID_Continue # L& [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE 2C60..2C7B ; ID_Continue # L& [28] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN LETTER SMALL CAPITAL TURNED E 2C7C..2C7D ; ID_Continue # Lm [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V 2C7E..2CE4 ; ID_Continue # L& [103] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC SYMBOL KAI 2CEB..2CEE ; ID_Continue # L& [4] COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI..COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA 2CEF..2CF1 ; ID_Continue # Mn [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS 2CF2..2CF3 ; ID_Continue # L& [2] COPTIC CAPITAL LETTER BOHAIRIC KHEI..COPTIC SMALL LETTER BOHAIRIC KHEI 2D00..2D25 ; ID_Continue # L& [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE 2D27 ; ID_Continue # L& GEORGIAN SMALL LETTER YN 2D2D ; ID_Continue # L& GEORGIAN SMALL LETTER AEN 2D30..2D67 ; ID_Continue # Lo [56] TIFINAGH LETTER YA..TIFINAGH LETTER YO 2D6F ; ID_Continue # Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK 2D7F ; ID_Continue # Mn TIFINAGH CONSONANT JOINER 2D80..2D96 ; ID_Continue # Lo [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE 2DA0..2DA6 ; ID_Continue # Lo [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO 2DA8..2DAE ; ID_Continue # Lo [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO 2DB0..2DB6 ; ID_Continue # Lo [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO 2DB8..2DBE ; ID_Continue # Lo [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO 2DC0..2DC6 ; ID_Continue # Lo [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO 2DC8..2DCE ; ID_Continue # Lo [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO 2DD0..2DD6 ; ID_Continue # Lo [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO 2DD8..2DDE ; ID_Continue # Lo [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO 2DE0..2DFF ; ID_Continue # Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS 3005 ; ID_Continue # Lm IDEOGRAPHIC ITERATION MARK 3006 ; ID_Continue # Lo IDEOGRAPHIC CLOSING MARK 3007 ; ID_Continue # Nl IDEOGRAPHIC NUMBER ZERO 3021..3029 ; ID_Continue # Nl [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE 302A..302D ; ID_Continue # Mn [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK 302E..302F ; ID_Continue # Mc [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK 3031..3035 ; ID_Continue # Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF 3038..303A ; ID_Continue # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY 303B ; ID_Continue # Lm VERTICAL IDEOGRAPHIC ITERATION MARK 303C ; ID_Continue # Lo MASU MARK 3041..3096 ; ID_Continue # Lo [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE 3099..309A ; ID_Continue # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK 309B..309C ; ID_Continue # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK 309D..309E ; ID_Continue # Lm [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK 309F ; ID_Continue # Lo HIRAGANA DIGRAPH YORI 30A1..30FA ; ID_Continue # Lo [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO 30FC..30FE ; ID_Continue # Lm [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK 30FF ; ID_Continue # Lo KATAKANA DIGRAPH KOTO 3105..312D ; ID_Continue # Lo [41] BOPOMOFO LETTER B..BOPOMOFO LETTER IH 3131..318E ; ID_Continue # Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE 31A0..31BA ; ID_Continue # Lo [27] BOPOMOFO LETTER BU..BOPOMOFO LETTER ZY 31F0..31FF ; ID_Continue # Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO 3400..4DB5 ; ID_Continue # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 4E00..9FD5 ; ID_Continue # Lo [20950] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FD5 A000..A014 ; ID_Continue # Lo [21] YI SYLLABLE IT..YI SYLLABLE E A015 ; ID_Continue # Lm YI SYLLABLE WU A016..A48C ; ID_Continue # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR A4D0..A4F7 ; ID_Continue # Lo [40] LISU LETTER BA..LISU LETTER OE A4F8..A4FD ; ID_Continue # Lm [6] LISU LETTER TONE MYA TI..LISU LETTER TONE MYA JEU A500..A60B ; ID_Continue # Lo [268] VAI SYLLABLE EE..VAI SYLLABLE NG A60C ; ID_Continue # Lm VAI SYLLABLE LENGTHENER A610..A61F ; ID_Continue # Lo [16] VAI SYLLABLE NDOLE FA..VAI SYMBOL JONG A620..A629 ; ID_Continue # Nd [10] VAI DIGIT ZERO..VAI DIGIT NINE A62A..A62B ; ID_Continue # Lo [2] VAI SYLLABLE NDOLE MA..VAI SYLLABLE NDOLE DO A640..A66D ; ID_Continue # L& [46] CYRILLIC CAPITAL LETTER ZEMLYA..CYRILLIC SMALL LETTER DOUBLE MONOCULAR O A66E ; ID_Continue # Lo CYRILLIC LETTER MULTIOCULAR O A66F ; ID_Continue # Mn COMBINING CYRILLIC VZMET A674..A67D ; ID_Continue # Mn [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK A67F ; ID_Continue # Lm CYRILLIC PAYEROK A680..A69B ; ID_Continue # L& [28] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER CROSSED O A69C..A69D ; ID_Continue # Lm [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN A69E..A69F ; ID_Continue # Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E A6A0..A6E5 ; ID_Continue # Lo [70] BAMUM LETTER A..BAMUM LETTER KI A6E6..A6EF ; ID_Continue # Nl [10] BAMUM LETTER MO..BAMUM LETTER KOGHOM A6F0..A6F1 ; ID_Continue # Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS A717..A71F ; ID_Continue # Lm [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK A722..A76F ; ID_Continue # L& [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN SMALL LETTER CON A770 ; ID_Continue # Lm MODIFIER LETTER US A771..A787 ; ID_Continue # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T A788 ; ID_Continue # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT A78B..A78E ; ID_Continue # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT A78F ; ID_Continue # Lo LATIN LETTER SINOLOGICAL DOT A790..A7AE ; ID_Continue # L& [31] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER SMALL CAPITAL I A7B0..A7B7 ; ID_Continue # L& [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA A7F7 ; ID_Continue # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I A7F8..A7F9 ; ID_Continue # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE A7FA ; ID_Continue # L& LATIN LETTER SMALL CAPITAL TURNED M A7FB..A801 ; ID_Continue # Lo [7] LATIN EPIGRAPHIC LETTER REVERSED F..SYLOTI NAGRI LETTER I A802 ; ID_Continue # Mn SYLOTI NAGRI SIGN DVISVARA A803..A805 ; ID_Continue # Lo [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O A806 ; ID_Continue # Mn SYLOTI NAGRI SIGN HASANTA A807..A80A ; ID_Continue # Lo [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO A80B ; ID_Continue # Mn SYLOTI NAGRI SIGN ANUSVARA A80C..A822 ; ID_Continue # Lo [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO A823..A824 ; ID_Continue # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I A825..A826 ; ID_Continue # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E A827 ; ID_Continue # Mc SYLOTI NAGRI VOWEL SIGN OO A840..A873 ; ID_Continue # Lo [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU A880..A881 ; ID_Continue # Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA A882..A8B3 ; ID_Continue # Lo [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA A8B4..A8C3 ; ID_Continue # Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU A8C4..A8C5 ; ID_Continue # Mn [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU A8D0..A8D9 ; ID_Continue # Nd [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE A8E0..A8F1 ; ID_Continue # Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA A8F2..A8F7 ; ID_Continue # Lo [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA A8FB ; ID_Continue # Lo DEVANAGARI HEADSTROKE A8FD ; ID_Continue # Lo DEVANAGARI JAIN OM A900..A909 ; ID_Continue # Nd [10] KAYAH LI DIGIT ZERO..KAYAH LI DIGIT NINE A90A..A925 ; ID_Continue # Lo [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO A926..A92D ; ID_Continue # Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU A930..A946 ; ID_Continue # Lo [23] REJANG LETTER KA..REJANG LETTER A A947..A951 ; ID_Continue # Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R A952..A953 ; ID_Continue # Mc [2] REJANG CONSONANT SIGN H..REJANG VIRAMA A960..A97C ; ID_Continue # Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH A980..A982 ; ID_Continue # Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR A983 ; ID_Continue # Mc JAVANESE SIGN WIGNYAN A984..A9B2 ; ID_Continue # Lo [47] JAVANESE LETTER A..JAVANESE LETTER HA A9B3 ; ID_Continue # Mn JAVANESE SIGN CECAK TELU A9B4..A9B5 ; ID_Continue # Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG A9B6..A9B9 ; ID_Continue # Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT A9BA..A9BB ; ID_Continue # Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE A9BC ; ID_Continue # Mn JAVANESE VOWEL SIGN PEPET A9BD..A9C0 ; ID_Continue # Mc [4] JAVANESE CONSONANT SIGN KERET..JAVANESE PANGKON A9CF ; ID_Continue # Lm JAVANESE PANGRANGKEP A9D0..A9D9 ; ID_Continue # Nd [10] JAVANESE DIGIT ZERO..JAVANESE DIGIT NINE A9E0..A9E4 ; ID_Continue # Lo [5] MYANMAR LETTER SHAN GHA..MYANMAR LETTER SHAN BHA A9E5 ; ID_Continue # Mn MYANMAR SIGN SHAN SAW A9E6 ; ID_Continue # Lm MYANMAR MODIFIER LETTER SHAN REDUPLICATION A9E7..A9EF ; ID_Continue # Lo [9] MYANMAR LETTER TAI LAING NYA..MYANMAR LETTER TAI LAING NNA A9F0..A9F9 ; ID_Continue # Nd [10] MYANMAR TAI LAING DIGIT ZERO..MYANMAR TAI LAING DIGIT NINE A9FA..A9FE ; ID_Continue # Lo [5] MYANMAR LETTER TAI LAING LLA..MYANMAR LETTER TAI LAING BHA AA00..AA28 ; ID_Continue # Lo [41] CHAM LETTER A..CHAM LETTER HA AA29..AA2E ; ID_Continue # Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE AA2F..AA30 ; ID_Continue # Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI AA31..AA32 ; ID_Continue # Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE AA33..AA34 ; ID_Continue # Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA AA35..AA36 ; ID_Continue # Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA AA40..AA42 ; ID_Continue # Lo [3] CHAM LETTER FINAL K..CHAM LETTER FINAL NG AA43 ; ID_Continue # Mn CHAM CONSONANT SIGN FINAL NG AA44..AA4B ; ID_Continue # Lo [8] CHAM LETTER FINAL CH..CHAM LETTER FINAL SS AA4C ; ID_Continue # Mn CHAM CONSONANT SIGN FINAL M AA4D ; ID_Continue # Mc CHAM CONSONANT SIGN FINAL H AA50..AA59 ; ID_Continue # Nd [10] CHAM DIGIT ZERO..CHAM DIGIT NINE AA60..AA6F ; ID_Continue # Lo [16] MYANMAR LETTER KHAMTI GA..MYANMAR LETTER KHAMTI FA AA70 ; ID_Continue # Lm MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION AA71..AA76 ; ID_Continue # Lo [6] MYANMAR LETTER KHAMTI XA..MYANMAR LOGOGRAM KHAMTI HM AA7A ; ID_Continue # Lo MYANMAR LETTER AITON RA AA7B ; ID_Continue # Mc MYANMAR SIGN PAO KAREN TONE AA7C ; ID_Continue # Mn MYANMAR SIGN TAI LAING TONE-2 AA7D ; ID_Continue # Mc MYANMAR SIGN TAI LAING TONE-5 AA7E..AAAF ; ID_Continue # Lo [50] MYANMAR LETTER SHWE PALAUNG CHA..TAI VIET LETTER HIGH O AAB0 ; ID_Continue # Mn TAI VIET MAI KANG AAB1 ; ID_Continue # Lo TAI VIET VOWEL AA AAB2..AAB4 ; ID_Continue # Mn [3] TAI VIET VOWEL I..TAI VIET VOWEL U AAB5..AAB6 ; ID_Continue # Lo [2] TAI VIET VOWEL E..TAI VIET VOWEL O AAB7..AAB8 ; ID_Continue # Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA AAB9..AABD ; ID_Continue # Lo [5] TAI VIET VOWEL UEA..TAI VIET VOWEL AN AABE..AABF ; ID_Continue # Mn [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK AAC0 ; ID_Continue # Lo TAI VIET TONE MAI NUENG AAC1 ; ID_Continue # Mn TAI VIET TONE MAI THO AAC2 ; ID_Continue # Lo TAI VIET TONE MAI SONG AADB..AADC ; ID_Continue # Lo [2] TAI VIET SYMBOL KON..TAI VIET SYMBOL NUENG AADD ; ID_Continue # Lm TAI VIET SYMBOL SAM AAE0..AAEA ; ID_Continue # Lo [11] MEETEI MAYEK LETTER E..MEETEI MAYEK LETTER SSA AAEB ; ID_Continue # Mc MEETEI MAYEK VOWEL SIGN II AAEC..AAED ; ID_Continue # Mn [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI AAEE..AAEF ; ID_Continue # Mc [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU AAF2 ; ID_Continue # Lo MEETEI MAYEK ANJI AAF3..AAF4 ; ID_Continue # Lm [2] MEETEI MAYEK SYLLABLE REPETITION MARK..MEETEI MAYEK WORD REPETITION MARK AAF5 ; ID_Continue # Mc MEETEI MAYEK VOWEL SIGN VISARGA AAF6 ; ID_Continue # Mn MEETEI MAYEK VIRAMA AB01..AB06 ; ID_Continue # Lo [6] ETHIOPIC SYLLABLE TTHU..ETHIOPIC SYLLABLE TTHO AB09..AB0E ; ID_Continue # Lo [6] ETHIOPIC SYLLABLE DDHU..ETHIOPIC SYLLABLE DDHO AB11..AB16 ; ID_Continue # Lo [6] ETHIOPIC SYLLABLE DZU..ETHIOPIC SYLLABLE DZO AB20..AB26 ; ID_Continue # Lo [7] ETHIOPIC SYLLABLE CCHHA..ETHIOPIC SYLLABLE CCHHO AB28..AB2E ; ID_Continue # Lo [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO AB30..AB5A ; ID_Continue # L& [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG AB5C..AB5F ; ID_Continue # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK AB60..AB65 ; ID_Continue # L& [6] LATIN SMALL LETTER SAKHA YAT..GREEK LETTER SMALL CAPITAL OMEGA AB70..ABBF ; ID_Continue # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA ABC0..ABE2 ; ID_Continue # Lo [35] MEETEI MAYEK LETTER KOK..MEETEI MAYEK LETTER I LONSUM ABE3..ABE4 ; ID_Continue # Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP ABE5 ; ID_Continue # Mn MEETEI MAYEK VOWEL SIGN ANAP ABE6..ABE7 ; ID_Continue # Mc [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP ABE8 ; ID_Continue # Mn MEETEI MAYEK VOWEL SIGN UNAP ABE9..ABEA ; ID_Continue # Mc [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG ABEC ; ID_Continue # Mc MEETEI MAYEK LUM IYEK ABED ; ID_Continue # Mn MEETEI MAYEK APUN IYEK ABF0..ABF9 ; ID_Continue # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE AC00..D7A3 ; ID_Continue # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH D7B0..D7C6 ; ID_Continue # Lo [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E D7CB..D7FB ; ID_Continue # Lo [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH F900..FA6D ; ID_Continue # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D FA70..FAD9 ; ID_Continue # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 FB00..FB06 ; ID_Continue # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST FB13..FB17 ; ID_Continue # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH FB1D ; ID_Continue # Lo HEBREW LETTER YOD WITH HIRIQ FB1E ; ID_Continue # Mn HEBREW POINT JUDEO-SPANISH VARIKA FB1F..FB28 ; ID_Continue # Lo [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV FB2A..FB36 ; ID_Continue # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH FB38..FB3C ; ID_Continue # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH FB3E ; ID_Continue # Lo HEBREW LETTER MEM WITH DAGESH FB40..FB41 ; ID_Continue # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH FB43..FB44 ; ID_Continue # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH FB46..FBB1 ; ID_Continue # Lo [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM FBD3..FD3D ; ID_Continue # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM FD50..FD8F ; ID_Continue # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM FD92..FDC7 ; ID_Continue # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM FDF0..FDFB ; ID_Continue # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU FE00..FE0F ; ID_Continue # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 FE20..FE2F ; ID_Continue # Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF FE33..FE34 ; ID_Continue # Pc [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE FE4D..FE4F ; ID_Continue # Pc [3] DASHED LOW LINE..WAVY LOW LINE FE70..FE74 ; ID_Continue # Lo [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM FE76..FEFC ; ID_Continue # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM FF10..FF19 ; ID_Continue # Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE FF21..FF3A ; ID_Continue # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z FF3F ; ID_Continue # Pc FULLWIDTH LOW LINE FF41..FF5A ; ID_Continue # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z FF66..FF6F ; ID_Continue # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU FF70 ; ID_Continue # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK FF71..FF9D ; ID_Continue # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N FF9E..FF9F ; ID_Continue # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK FFA0..FFBE ; ID_Continue # Lo [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH FFC2..FFC7 ; ID_Continue # Lo [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E FFCA..FFCF ; ID_Continue # Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE FFD2..FFD7 ; ID_Continue # Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU FFDA..FFDC ; ID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I 10000..1000B ; ID_Continue # Lo [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE 1000D..10026 ; ID_Continue # Lo [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO 10028..1003A ; ID_Continue # Lo [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO 1003C..1003D ; ID_Continue # Lo [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE 1003F..1004D ; ID_Continue # Lo [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO 10050..1005D ; ID_Continue # Lo [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089 10080..100FA ; ID_Continue # Lo [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305 10140..10174 ; ID_Continue # Nl [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS 101FD ; ID_Continue # Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE 10280..1029C ; ID_Continue # Lo [29] LYCIAN LETTER A..LYCIAN LETTER X 102A0..102D0 ; ID_Continue # Lo [49] CARIAN LETTER A..CARIAN LETTER UUU3 102E0 ; ID_Continue # Mn COPTIC EPACT THOUSANDS MARK 10300..1031F ; ID_Continue # Lo [32] OLD ITALIC LETTER A..OLD ITALIC LETTER ESS 10330..10340 ; ID_Continue # Lo [17] GOTHIC LETTER AHSA..GOTHIC LETTER PAIRTHRA 10341 ; ID_Continue # Nl GOTHIC LETTER NINETY 10342..10349 ; ID_Continue # Lo [8] GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL 1034A ; ID_Continue # Nl GOTHIC LETTER NINE HUNDRED 10350..10375 ; ID_Continue # Lo [38] OLD PERMIC LETTER AN..OLD PERMIC LETTER IA 10376..1037A ; ID_Continue # Mn [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII 10380..1039D ; ID_Continue # Lo [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU 103A0..103C3 ; ID_Continue # Lo [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA 103C8..103CF ; ID_Continue # Lo [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH 103D1..103D5 ; ID_Continue # Nl [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED 10400..1044F ; ID_Continue # L& [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW 10450..1049D ; ID_Continue # Lo [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO 104A0..104A9 ; ID_Continue # Nd [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE 104B0..104D3 ; ID_Continue # L& [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA 104D8..104FB ; ID_Continue # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA 10500..10527 ; ID_Continue # Lo [40] ELBASAN LETTER A..ELBASAN LETTER KHE 10530..10563 ; ID_Continue # Lo [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW 10600..10736 ; ID_Continue # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664 10740..10755 ; ID_Continue # Lo [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE 10760..10767 ; ID_Continue # Lo [8] LINEAR A SIGN A800..LINEAR A SIGN A807 10800..10805 ; ID_Continue # Lo [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA 10808 ; ID_Continue # Lo CYPRIOT SYLLABLE JO 1080A..10835 ; ID_Continue # Lo [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO 10837..10838 ; ID_Continue # Lo [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE 1083C ; ID_Continue # Lo CYPRIOT SYLLABLE ZA 1083F..10855 ; ID_Continue # Lo [23] CYPRIOT SYLLABLE ZO..IMPERIAL ARAMAIC LETTER TAW 10860..10876 ; ID_Continue # Lo [23] PALMYRENE LETTER ALEPH..PALMYRENE LETTER TAW 10880..1089E ; ID_Continue # Lo [31] NABATAEAN LETTER FINAL ALEPH..NABATAEAN LETTER TAW 108E0..108F2 ; ID_Continue # Lo [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH 108F4..108F5 ; ID_Continue # Lo [2] HATRAN LETTER SHIN..HATRAN LETTER TAW 10900..10915 ; ID_Continue # Lo [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU 10920..10939 ; ID_Continue # Lo [26] LYDIAN LETTER A..LYDIAN LETTER C 10980..109B7 ; ID_Continue # Lo [56] MEROITIC HIEROGLYPHIC LETTER A..MEROITIC CURSIVE LETTER DA 109BE..109BF ; ID_Continue # Lo [2] MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN 10A00 ; ID_Continue # Lo KHAROSHTHI LETTER A 10A01..10A03 ; ID_Continue # Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R 10A05..10A06 ; ID_Continue # Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O 10A0C..10A0F ; ID_Continue # Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA 10A10..10A13 ; ID_Continue # Lo [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA 10A15..10A17 ; ID_Continue # Lo [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA 10A19..10A33 ; ID_Continue # Lo [27] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER TTTHA 10A38..10A3A ; ID_Continue # Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW 10A3F ; ID_Continue # Mn KHAROSHTHI VIRAMA 10A60..10A7C ; ID_Continue # Lo [29] OLD SOUTH ARABIAN LETTER HE..OLD SOUTH ARABIAN LETTER THETH 10A80..10A9C ; ID_Continue # Lo [29] OLD NORTH ARABIAN LETTER HEH..OLD NORTH ARABIAN LETTER ZAH 10AC0..10AC7 ; ID_Continue # Lo [8] MANICHAEAN LETTER ALEPH..MANICHAEAN LETTER WAW 10AC9..10AE4 ; ID_Continue # Lo [28] MANICHAEAN LETTER ZAYIN..MANICHAEAN LETTER TAW 10AE5..10AE6 ; ID_Continue # Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW 10B00..10B35 ; ID_Continue # Lo [54] AVESTAN LETTER A..AVESTAN LETTER HE 10B40..10B55 ; ID_Continue # Lo [22] INSCRIPTIONAL PARTHIAN LETTER ALEPH..INSCRIPTIONAL PARTHIAN LETTER TAW 10B60..10B72 ; ID_Continue # Lo [19] INSCRIPTIONAL PAHLAVI LETTER ALEPH..INSCRIPTIONAL PAHLAVI LETTER TAW 10B80..10B91 ; ID_Continue # Lo [18] PSALTER PAHLAVI LETTER ALEPH..PSALTER PAHLAVI LETTER TAW 10C00..10C48 ; ID_Continue # Lo [73] OLD TURKIC LETTER ORKHON A..OLD TURKIC LETTER ORKHON BASH 10C80..10CB2 ; ID_Continue # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US 10CC0..10CF2 ; ID_Continue # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US 11000 ; ID_Continue # Mc BRAHMI SIGN CANDRABINDU 11001 ; ID_Continue # Mn BRAHMI SIGN ANUSVARA 11002 ; ID_Continue # Mc BRAHMI SIGN VISARGA 11003..11037 ; ID_Continue # Lo [53] BRAHMI SIGN JIHVAMULIYA..BRAHMI LETTER OLD TAMIL NNNA 11038..11046 ; ID_Continue # Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA 11066..1106F ; ID_Continue # Nd [10] BRAHMI DIGIT ZERO..BRAHMI DIGIT NINE 1107F..11081 ; ID_Continue # Mn [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA 11082 ; ID_Continue # Mc KAITHI SIGN VISARGA 11083..110AF ; ID_Continue # Lo [45] KAITHI LETTER A..KAITHI LETTER HA 110B0..110B2 ; ID_Continue # Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II 110B3..110B6 ; ID_Continue # Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI 110B7..110B8 ; ID_Continue # Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU 110B9..110BA ; ID_Continue # Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA 110D0..110E8 ; ID_Continue # Lo [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE 110F0..110F9 ; ID_Continue # Nd [10] SORA SOMPENG DIGIT ZERO..SORA SOMPENG DIGIT NINE 11100..11102 ; ID_Continue # Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA 11103..11126 ; ID_Continue # Lo [36] CHAKMA LETTER AA..CHAKMA LETTER HAA 11127..1112B ; ID_Continue # Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU 1112C ; ID_Continue # Mc CHAKMA VOWEL SIGN E 1112D..11134 ; ID_Continue # Mn [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA 11136..1113F ; ID_Continue # Nd [10] CHAKMA DIGIT ZERO..CHAKMA DIGIT NINE 11150..11172 ; ID_Continue # Lo [35] MAHAJANI LETTER A..MAHAJANI LETTER RRA 11173 ; ID_Continue # Mn MAHAJANI SIGN NUKTA 11176 ; ID_Continue # Lo MAHAJANI LIGATURE SHRI 11180..11181 ; ID_Continue # Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA 11182 ; ID_Continue # Mc SHARADA SIGN VISARGA 11183..111B2 ; ID_Continue # Lo [48] SHARADA LETTER A..SHARADA LETTER HA 111B3..111B5 ; ID_Continue # Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II 111B6..111BE ; ID_Continue # Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O 111BF..111C0 ; ID_Continue # Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA 111C1..111C4 ; ID_Continue # Lo [4] SHARADA SIGN AVAGRAHA..SHARADA OM 111CA..111CC ; ID_Continue # Mn [3] SHARADA SIGN NUKTA..SHARADA EXTRA SHORT VOWEL MARK 111D0..111D9 ; ID_Continue # Nd [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE 111DA ; ID_Continue # Lo SHARADA EKAM 111DC ; ID_Continue # Lo SHARADA HEADSTROKE 11200..11211 ; ID_Continue # Lo [18] KHOJKI LETTER A..KHOJKI LETTER JJA 11213..1122B ; ID_Continue # Lo [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA 1122C..1122E ; ID_Continue # Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II 1122F..11231 ; ID_Continue # Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI 11232..11233 ; ID_Continue # Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU 11234 ; ID_Continue # Mn KHOJKI SIGN ANUSVARA 11235 ; ID_Continue # Mc KHOJKI SIGN VIRAMA 11236..11237 ; ID_Continue # Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA 1123E ; ID_Continue # Mn KHOJKI SIGN SUKUN 11280..11286 ; ID_Continue # Lo [7] MULTANI LETTER A..MULTANI LETTER GA 11288 ; ID_Continue # Lo MULTANI LETTER GHA 1128A..1128D ; ID_Continue # Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA 1128F..1129D ; ID_Continue # Lo [15] MULTANI LETTER NYA..MULTANI LETTER BA 1129F..112A8 ; ID_Continue # Lo [10] MULTANI LETTER BHA..MULTANI LETTER RHA 112B0..112DE ; ID_Continue # Lo [47] KHUDAWADI LETTER A..KHUDAWADI LETTER HA 112DF ; ID_Continue # Mn KHUDAWADI SIGN ANUSVARA 112E0..112E2 ; ID_Continue # Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II 112E3..112EA ; ID_Continue # Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA 112F0..112F9 ; ID_Continue # Nd [10] KHUDAWADI DIGIT ZERO..KHUDAWADI DIGIT NINE 11300..11301 ; ID_Continue # Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU 11302..11303 ; ID_Continue # Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA 11305..1130C ; ID_Continue # Lo [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L 1130F..11310 ; ID_Continue # Lo [2] GRANTHA LETTER EE..GRANTHA LETTER AI 11313..11328 ; ID_Continue # Lo [22] GRANTHA LETTER OO..GRANTHA LETTER NA 1132A..11330 ; ID_Continue # Lo [7] GRANTHA LETTER PA..GRANTHA LETTER RA 11332..11333 ; ID_Continue # Lo [2] GRANTHA LETTER LA..GRANTHA LETTER LLA 11335..11339 ; ID_Continue # Lo [5] GRANTHA LETTER VA..GRANTHA LETTER HA 1133C ; ID_Continue # Mn GRANTHA SIGN NUKTA 1133D ; ID_Continue # Lo GRANTHA SIGN AVAGRAHA 1133E..1133F ; ID_Continue # Mc [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I 11340 ; ID_Continue # Mn GRANTHA VOWEL SIGN II 11341..11344 ; ID_Continue # Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR 11347..11348 ; ID_Continue # Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI 1134B..1134D ; ID_Continue # Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA 11350 ; ID_Continue # Lo GRANTHA OM 11357 ; ID_Continue # Mc GRANTHA AU LENGTH MARK 1135D..11361 ; ID_Continue # Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL 11362..11363 ; ID_Continue # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL 11366..1136C ; ID_Continue # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX 11370..11374 ; ID_Continue # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA 11400..11434 ; ID_Continue # Lo [53] NEWA LETTER A..NEWA LETTER HA 11435..11437 ; ID_Continue # Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II 11438..1143F ; ID_Continue # Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI 11440..11441 ; ID_Continue # Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU 11442..11444 ; ID_Continue # Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA 11445 ; ID_Continue # Mc NEWA SIGN VISARGA 11446 ; ID_Continue # Mn NEWA SIGN NUKTA 11447..1144A ; ID_Continue # Lo [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI 11450..11459 ; ID_Continue # Nd [10] NEWA DIGIT ZERO..NEWA DIGIT NINE 11480..114AF ; ID_Continue # Lo [48] TIRHUTA ANJI..TIRHUTA LETTER HA 114B0..114B2 ; ID_Continue # Mc [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II 114B3..114B8 ; ID_Continue # Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL 114B9 ; ID_Continue # Mc TIRHUTA VOWEL SIGN E 114BA ; ID_Continue # Mn TIRHUTA VOWEL SIGN SHORT E 114BB..114BE ; ID_Continue # Mc [4] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN AU 114BF..114C0 ; ID_Continue # Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA 114C1 ; ID_Continue # Mc TIRHUTA SIGN VISARGA 114C2..114C3 ; ID_Continue # Mn [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA 114C4..114C5 ; ID_Continue # Lo [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG 114C7 ; ID_Continue # Lo TIRHUTA OM 114D0..114D9 ; ID_Continue # Nd [10] TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE 11580..115AE ; ID_Continue # Lo [47] SIDDHAM LETTER A..SIDDHAM LETTER HA 115AF..115B1 ; ID_Continue # Mc [3] SIDDHAM VOWEL SIGN AA..SIDDHAM VOWEL SIGN II 115B2..115B5 ; ID_Continue # Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR 115B8..115BB ; ID_Continue # Mc [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU 115BC..115BD ; ID_Continue # Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA 115BE ; ID_Continue # Mc SIDDHAM SIGN VISARGA 115BF..115C0 ; ID_Continue # Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA 115D8..115DB ; ID_Continue # Lo [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U 115DC..115DD ; ID_Continue # Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU 11600..1162F ; ID_Continue # Lo [48] MODI LETTER A..MODI LETTER LLA 11630..11632 ; ID_Continue # Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II 11633..1163A ; ID_Continue # Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI 1163B..1163C ; ID_Continue # Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU 1163D ; ID_Continue # Mn MODI SIGN ANUSVARA 1163E ; ID_Continue # Mc MODI SIGN VISARGA 1163F..11640 ; ID_Continue # Mn [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA 11644 ; ID_Continue # Lo MODI SIGN HUVA 11650..11659 ; ID_Continue # Nd [10] MODI DIGIT ZERO..MODI DIGIT NINE 11680..116AA ; ID_Continue # Lo [43] TAKRI LETTER A..TAKRI LETTER RRA 116AB ; ID_Continue # Mn TAKRI SIGN ANUSVARA 116AC ; ID_Continue # Mc TAKRI SIGN VISARGA 116AD ; ID_Continue # Mn TAKRI VOWEL SIGN AA 116AE..116AF ; ID_Continue # Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II 116B0..116B5 ; ID_Continue # Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU 116B6 ; ID_Continue # Mc TAKRI SIGN VIRAMA 116B7 ; ID_Continue # Mn TAKRI SIGN NUKTA 116C0..116C9 ; ID_Continue # Nd [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE 11700..11719 ; ID_Continue # Lo [26] AHOM LETTER KA..AHOM LETTER JHA 1171D..1171F ; ID_Continue # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA 11720..11721 ; ID_Continue # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA 11722..11725 ; ID_Continue # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU 11726 ; ID_Continue # Mc AHOM VOWEL SIGN E 11727..1172B ; ID_Continue # Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER 11730..11739 ; ID_Continue # Nd [10] AHOM DIGIT ZERO..AHOM DIGIT NINE 118A0..118DF ; ID_Continue # L& [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO 118E0..118E9 ; ID_Continue # Nd [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE 118FF ; ID_Continue # Lo WARANG CITI OM 11AC0..11AF8 ; ID_Continue # Lo [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL 11C00..11C08 ; ID_Continue # Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L 11C0A..11C2E ; ID_Continue # Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA 11C2F ; ID_Continue # Mc BHAIKSUKI VOWEL SIGN AA 11C30..11C36 ; ID_Continue # Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L 11C38..11C3B ; ID_Continue # Mc [4] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI VOWEL SIGN AU 11C3C..11C3D ; ID_Continue # Mn [2] BHAIKSUKI SIGN CANDRABINDU..BHAIKSUKI SIGN ANUSVARA 11C3E ; ID_Continue # Mc BHAIKSUKI SIGN VISARGA 11C3F ; ID_Continue # Mn BHAIKSUKI SIGN VIRAMA 11C40 ; ID_Continue # Lo BHAIKSUKI SIGN AVAGRAHA 11C50..11C59 ; ID_Continue # Nd [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE 11C72..11C8F ; ID_Continue # Lo [30] MARCHEN LETTER KA..MARCHEN LETTER A 11C92..11CA7 ; ID_Continue # Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA 11CA9..11CB0 ; ID_Continue # Mn [8] MARCHEN SUBJOINED LETTER YA..MARCHEN VOWEL SIGN AA 11CB1 ; ID_Continue # Mc MARCHEN VOWEL SIGN I 11CB2..11CB3 ; ID_Continue # Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E 11CB4 ; ID_Continue # Mc MARCHEN VOWEL SIGN O 11CB5..11CB6 ; ID_Continue # Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU 12000..12399 ; ID_Continue # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U 12400..1246E ; ID_Continue # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM 12480..12543 ; ID_Continue # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU 13000..1342E ; ID_Continue # Lo [1071] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH AA032 14400..14646 ; ID_Continue # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 16800..16A38 ; ID_Continue # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ 16A40..16A5E ; ID_Continue # Lo [31] MRO LETTER TA..MRO LETTER TEK 16A60..16A69 ; ID_Continue # Nd [10] MRO DIGIT ZERO..MRO DIGIT NINE 16AD0..16AED ; ID_Continue # Lo [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I 16AF0..16AF4 ; ID_Continue # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE 16B00..16B2F ; ID_Continue # Lo [48] PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG CONSONANT CAU 16B30..16B36 ; ID_Continue # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM 16B40..16B43 ; ID_Continue # Lm [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM 16B50..16B59 ; ID_Continue # Nd [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE 16B63..16B77 ; ID_Continue # Lo [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS 16B7D..16B8F ; ID_Continue # Lo [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ 16F00..16F44 ; ID_Continue # Lo [69] MIAO LETTER PA..MIAO LETTER HHA 16F50 ; ID_Continue # Lo MIAO LETTER NASALIZATION 16F51..16F7E ; ID_Continue # Mc [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG 16F8F..16F92 ; ID_Continue # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW 16F93..16F9F ; ID_Continue # Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8 16FE0 ; ID_Continue # Lm TANGUT ITERATION MARK 17000..187EC ; ID_Continue # Lo [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC 18800..18AF2 ; ID_Continue # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755 1B000..1B001 ; ID_Continue # Lo [2] KATAKANA LETTER ARCHAIC E..HIRAGANA LETTER ARCHAIC YE 1BC00..1BC6A ; ID_Continue # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M 1BC70..1BC7C ; ID_Continue # Lo [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK 1BC80..1BC88 ; ID_Continue # Lo [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL 1BC90..1BC99 ; ID_Continue # Lo [10] DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW 1BC9D..1BC9E ; ID_Continue # Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK 1D165..1D166 ; ID_Continue # Mc [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM 1D167..1D169 ; ID_Continue # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3 1D16D..1D172 ; ID_Continue # Mc [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5 1D17B..1D182 ; ID_Continue # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE 1D185..1D18B ; ID_Continue # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE 1D1AA..1D1AD ; ID_Continue # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO 1D242..1D244 ; ID_Continue # Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME 1D400..1D454 ; ID_Continue # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G 1D456..1D49C ; ID_Continue # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A 1D49E..1D49F ; ID_Continue # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D 1D4A2 ; ID_Continue # L& MATHEMATICAL SCRIPT CAPITAL G 1D4A5..1D4A6 ; ID_Continue # L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K 1D4A9..1D4AC ; ID_Continue # L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q 1D4AE..1D4B9 ; ID_Continue # L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D 1D4BB ; ID_Continue # L& MATHEMATICAL SCRIPT SMALL F 1D4BD..1D4C3 ; ID_Continue # L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N 1D4C5..1D505 ; ID_Continue # L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B 1D507..1D50A ; ID_Continue # L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G 1D50D..1D514 ; ID_Continue # L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q 1D516..1D51C ; ID_Continue # L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y 1D51E..1D539 ; ID_Continue # L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B 1D53B..1D53E ; ID_Continue # L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G 1D540..1D544 ; ID_Continue # L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M 1D546 ; ID_Continue # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O 1D54A..1D550 ; ID_Continue # L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y 1D552..1D6A5 ; ID_Continue # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J 1D6A8..1D6C0 ; ID_Continue # L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA 1D6C2..1D6DA ; ID_Continue # L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA 1D6DC..1D6FA ; ID_Continue # L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA 1D6FC..1D714 ; ID_Continue # L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA 1D716..1D734 ; ID_Continue # L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA 1D736..1D74E ; ID_Continue # L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA 1D750..1D76E ; ID_Continue # L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA 1D770..1D788 ; ID_Continue # L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA 1D78A..1D7A8 ; ID_Continue # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA 1D7AA..1D7C2 ; ID_Continue # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA 1D7C4..1D7CB ; ID_Continue # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA 1D7CE..1D7FF ; ID_Continue # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE 1DA00..1DA36 ; ID_Continue # Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN 1DA3B..1DA6C ; ID_Continue # Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT 1DA75 ; ID_Continue # Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS 1DA84 ; ID_Continue # Mn SIGNWRITING LOCATION HEAD NECK 1DA9B..1DA9F ; ID_Continue # Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 1DAA1..1DAAF ; ID_Continue # Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 1E000..1E006 ; ID_Continue # Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE 1E008..1E018 ; ID_Continue # Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU 1E01B..1E021 ; ID_Continue # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI 1E023..1E024 ; ID_Continue # Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS 1E026..1E02A ; ID_Continue # Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA 1E800..1E8C4 ; ID_Continue # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON 1E8D0..1E8D6 ; ID_Continue # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS 1E900..1E943 ; ID_Continue # L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA 1E944..1E94A ; ID_Continue # Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA 1E950..1E959 ; ID_Continue # Nd [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE 1EE00..1EE03 ; ID_Continue # Lo [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL 1EE05..1EE1F ; ID_Continue # Lo [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF 1EE21..1EE22 ; ID_Continue # Lo [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM 1EE24 ; ID_Continue # Lo ARABIC MATHEMATICAL INITIAL HEH 1EE27 ; ID_Continue # Lo ARABIC MATHEMATICAL INITIAL HAH 1EE29..1EE32 ; ID_Continue # Lo [10] ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF 1EE34..1EE37 ; ID_Continue # Lo [4] ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH 1EE39 ; ID_Continue # Lo ARABIC MATHEMATICAL INITIAL DAD 1EE3B ; ID_Continue # Lo ARABIC MATHEMATICAL INITIAL GHAIN 1EE42 ; ID_Continue # Lo ARABIC MATHEMATICAL TAILED JEEM 1EE47 ; ID_Continue # Lo ARABIC MATHEMATICAL TAILED HAH 1EE49 ; ID_Continue # Lo ARABIC MATHEMATICAL TAILED YEH 1EE4B ; ID_Continue # Lo ARABIC MATHEMATICAL TAILED LAM 1EE4D..1EE4F ; ID_Continue # Lo [3] ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN 1EE51..1EE52 ; ID_Continue # Lo [2] ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF 1EE54 ; ID_Continue # Lo ARABIC MATHEMATICAL TAILED SHEEN 1EE57 ; ID_Continue # Lo ARABIC MATHEMATICAL TAILED KHAH 1EE59 ; ID_Continue # Lo ARABIC MATHEMATICAL TAILED DAD 1EE5B ; ID_Continue # Lo ARABIC MATHEMATICAL TAILED GHAIN 1EE5D ; ID_Continue # Lo ARABIC MATHEMATICAL TAILED DOTLESS NOON 1EE5F ; ID_Continue # Lo ARABIC MATHEMATICAL TAILED DOTLESS QAF 1EE61..1EE62 ; ID_Continue # Lo [2] ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM 1EE64 ; ID_Continue # Lo ARABIC MATHEMATICAL STRETCHED HEH 1EE67..1EE6A ; ID_Continue # Lo [4] ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF 1EE6C..1EE72 ; ID_Continue # Lo [7] ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF 1EE74..1EE77 ; ID_Continue # Lo [4] ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH 1EE79..1EE7C ; ID_Continue # Lo [4] ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH 1EE7E ; ID_Continue # Lo ARABIC MATHEMATICAL STRETCHED DOTLESS FEH 1EE80..1EE89 ; ID_Continue # Lo [10] ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH 1EE8B..1EE9B ; ID_Continue # Lo [17] ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN 1EEA1..1EEA3 ; ID_Continue # Lo [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL 1EEA5..1EEA9 ; ID_Continue # Lo [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH 1EEAB..1EEBB ; ID_Continue # Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN 20000..2A6D6 ; ID_Continue # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 2A700..2B734 ; ID_Continue # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 2B740..2B81D ; ID_Continue # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D 2B820..2CEA1 ; ID_Continue # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 2F800..2FA1D ; ID_Continue # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D E0100..E01EF ; ID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 # Total code points: 119691 # ================================================ # Derived Property: XID_Start # ID_Start modified for closure under NFKx # Modified as described in UAX #15 # NOTE: Does NOT remove the non-NFKx characters. # Merely ensures that if isIdentifer(string) then isIdentifier(NFKx(string)) # NOTE: See UAX #31 for more information 0041..005A ; XID_Start # L& [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z 0061..007A ; XID_Start # L& [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z 00AA ; XID_Start # Lo FEMININE ORDINAL INDICATOR 00B5 ; XID_Start # L& MICRO SIGN 00BA ; XID_Start # Lo MASCULINE ORDINAL INDICATOR 00C0..00D6 ; XID_Start # L& [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS 00D8..00F6 ; XID_Start # L& [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS 00F8..01BA ; XID_Start # L& [195] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER EZH WITH TAIL 01BB ; XID_Start # Lo LATIN LETTER TWO WITH STROKE 01BC..01BF ; XID_Start # L& [4] LATIN CAPITAL LETTER TONE FIVE..LATIN LETTER WYNN 01C0..01C3 ; XID_Start # Lo [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK 01C4..0293 ; XID_Start # L& [208] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER EZH WITH CURL 0294 ; XID_Start # Lo LATIN LETTER GLOTTAL STOP 0295..02AF ; XID_Start # L& [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL 02B0..02C1 ; XID_Start # Lm [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP 02C6..02D1 ; XID_Start # Lm [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON 02E0..02E4 ; XID_Start # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP 02EC ; XID_Start # Lm MODIFIER LETTER VOICING 02EE ; XID_Start # Lm MODIFIER LETTER DOUBLE APOSTROPHE 0370..0373 ; XID_Start # L& [4] GREEK CAPITAL LETTER HETA..GREEK SMALL LETTER ARCHAIC SAMPI 0374 ; XID_Start # Lm GREEK NUMERAL SIGN 0376..0377 ; XID_Start # L& [2] GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA..GREEK SMALL LETTER PAMPHYLIAN DIGAMMA 037B..037D ; XID_Start # L& [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL 037F ; XID_Start # L& GREEK CAPITAL LETTER YOT 0386 ; XID_Start # L& GREEK CAPITAL LETTER ALPHA WITH TONOS 0388..038A ; XID_Start # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS 038C ; XID_Start # L& GREEK CAPITAL LETTER OMICRON WITH TONOS 038E..03A1 ; XID_Start # L& [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO 03A3..03F5 ; XID_Start # L& [83] GREEK CAPITAL LETTER SIGMA..GREEK LUNATE EPSILON SYMBOL 03F7..0481 ; XID_Start # L& [139] GREEK CAPITAL LETTER SHO..CYRILLIC SMALL LETTER KOPPA 048A..052F ; XID_Start # L& [166] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER EL WITH DESCENDER 0531..0556 ; XID_Start # L& [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH 0559 ; XID_Start # Lm ARMENIAN MODIFIER LETTER LEFT HALF RING 0561..0587 ; XID_Start # L& [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN 05D0..05EA ; XID_Start # Lo [27] HEBREW LETTER ALEF..HEBREW LETTER TAV 05F0..05F2 ; XID_Start # Lo [3] HEBREW LIGATURE YIDDISH DOUBLE VAV..HEBREW LIGATURE YIDDISH DOUBLE YOD 0620..063F ; XID_Start # Lo [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE 0640 ; XID_Start # Lm ARABIC TATWEEL 0641..064A ; XID_Start # Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH 066E..066F ; XID_Start # Lo [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF 0671..06D3 ; XID_Start # Lo [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE 06D5 ; XID_Start # Lo ARABIC LETTER AE 06E5..06E6 ; XID_Start # Lm [2] ARABIC SMALL WAW..ARABIC SMALL YEH 06EE..06EF ; XID_Start # Lo [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V 06FA..06FC ; XID_Start # Lo [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW 06FF ; XID_Start # Lo ARABIC LETTER HEH WITH INVERTED V 0710 ; XID_Start # Lo SYRIAC LETTER ALAPH 0712..072F ; XID_Start # Lo [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH 074D..07A5 ; XID_Start # Lo [89] SYRIAC LETTER SOGDIAN ZHAIN..THAANA LETTER WAAVU 07B1 ; XID_Start # Lo THAANA LETTER NAA 07CA..07EA ; XID_Start # Lo [33] NKO LETTER A..NKO LETTER JONA RA 07F4..07F5 ; XID_Start # Lm [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE 07FA ; XID_Start # Lm NKO LAJANYALAN 0800..0815 ; XID_Start # Lo [22] SAMARITAN LETTER ALAF..SAMARITAN LETTER TAAF 081A ; XID_Start # Lm SAMARITAN MODIFIER LETTER EPENTHETIC YUT 0824 ; XID_Start # Lm SAMARITAN MODIFIER LETTER SHORT A 0828 ; XID_Start # Lm SAMARITAN MODIFIER LETTER I 0840..0858 ; XID_Start # Lo [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN 08A0..08B4 ; XID_Start # Lo [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW 08B6..08BD ; XID_Start # Lo [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON 0904..0939 ; XID_Start # Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA 093D ; XID_Start # Lo DEVANAGARI SIGN AVAGRAHA 0950 ; XID_Start # Lo DEVANAGARI OM 0958..0961 ; XID_Start # Lo [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL 0971 ; XID_Start # Lm DEVANAGARI SIGN HIGH SPACING DOT 0972..0980 ; XID_Start # Lo [15] DEVANAGARI LETTER CANDRA A..BENGALI ANJI 0985..098C ; XID_Start # Lo [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L 098F..0990 ; XID_Start # Lo [2] BENGALI LETTER E..BENGALI LETTER AI 0993..09A8 ; XID_Start # Lo [22] BENGALI LETTER O..BENGALI LETTER NA 09AA..09B0 ; XID_Start # Lo [7] BENGALI LETTER PA..BENGALI LETTER RA 09B2 ; XID_Start # Lo BENGALI LETTER LA 09B6..09B9 ; XID_Start # Lo [4] BENGALI LETTER SHA..BENGALI LETTER HA 09BD ; XID_Start # Lo BENGALI SIGN AVAGRAHA 09CE ; XID_Start # Lo BENGALI LETTER KHANDA TA 09DC..09DD ; XID_Start # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA 09DF..09E1 ; XID_Start # Lo [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL 09F0..09F1 ; XID_Start # Lo [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL 0A05..0A0A ; XID_Start # Lo [6] GURMUKHI LETTER A..GURMUKHI LETTER UU 0A0F..0A10 ; XID_Start # Lo [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI 0A13..0A28 ; XID_Start # Lo [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA 0A2A..0A30 ; XID_Start # Lo [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA 0A32..0A33 ; XID_Start # Lo [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA 0A35..0A36 ; XID_Start # Lo [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA 0A38..0A39 ; XID_Start # Lo [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA 0A59..0A5C ; XID_Start # Lo [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA 0A5E ; XID_Start # Lo GURMUKHI LETTER FA 0A72..0A74 ; XID_Start # Lo [3] GURMUKHI IRI..GURMUKHI EK ONKAR 0A85..0A8D ; XID_Start # Lo [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E 0A8F..0A91 ; XID_Start # Lo [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O 0A93..0AA8 ; XID_Start # Lo [22] GUJARATI LETTER O..GUJARATI LETTER NA 0AAA..0AB0 ; XID_Start # Lo [7] GUJARATI LETTER PA..GUJARATI LETTER RA 0AB2..0AB3 ; XID_Start # Lo [2] GUJARATI LETTER LA..GUJARATI LETTER LLA 0AB5..0AB9 ; XID_Start # Lo [5] GUJARATI LETTER VA..GUJARATI LETTER HA 0ABD ; XID_Start # Lo GUJARATI SIGN AVAGRAHA 0AD0 ; XID_Start # Lo GUJARATI OM 0AE0..0AE1 ; XID_Start # Lo [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL 0AF9 ; XID_Start # Lo GUJARATI LETTER ZHA 0B05..0B0C ; XID_Start # Lo [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L 0B0F..0B10 ; XID_Start # Lo [2] ORIYA LETTER E..ORIYA LETTER AI 0B13..0B28 ; XID_Start # Lo [22] ORIYA LETTER O..ORIYA LETTER NA 0B2A..0B30 ; XID_Start # Lo [7] ORIYA LETTER PA..ORIYA LETTER RA 0B32..0B33 ; XID_Start # Lo [2] ORIYA LETTER LA..ORIYA LETTER LLA 0B35..0B39 ; XID_Start # Lo [5] ORIYA LETTER VA..ORIYA LETTER HA 0B3D ; XID_Start # Lo ORIYA SIGN AVAGRAHA 0B5C..0B5D ; XID_Start # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA 0B5F..0B61 ; XID_Start # Lo [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL 0B71 ; XID_Start # Lo ORIYA LETTER WA 0B83 ; XID_Start # Lo TAMIL SIGN VISARGA 0B85..0B8A ; XID_Start # Lo [6] TAMIL LETTER A..TAMIL LETTER UU 0B8E..0B90 ; XID_Start # Lo [3] TAMIL LETTER E..TAMIL LETTER AI 0B92..0B95 ; XID_Start # Lo [4] TAMIL LETTER O..TAMIL LETTER KA 0B99..0B9A ; XID_Start # Lo [2] TAMIL LETTER NGA..TAMIL LETTER CA 0B9C ; XID_Start # Lo TAMIL LETTER JA 0B9E..0B9F ; XID_Start # Lo [2] TAMIL LETTER NYA..TAMIL LETTER TTA 0BA3..0BA4 ; XID_Start # Lo [2] TAMIL LETTER NNA..TAMIL LETTER TA 0BA8..0BAA ; XID_Start # Lo [3] TAMIL LETTER NA..TAMIL LETTER PA 0BAE..0BB9 ; XID_Start # Lo [12] TAMIL LETTER MA..TAMIL LETTER HA 0BD0 ; XID_Start # Lo TAMIL OM 0C05..0C0C ; XID_Start # Lo [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L 0C0E..0C10 ; XID_Start # Lo [3] TELUGU LETTER E..TELUGU LETTER AI 0C12..0C28 ; XID_Start # Lo [23] TELUGU LETTER O..TELUGU LETTER NA 0C2A..0C39 ; XID_Start # Lo [16] TELUGU LETTER PA..TELUGU LETTER HA 0C3D ; XID_Start # Lo TELUGU SIGN AVAGRAHA 0C58..0C5A ; XID_Start # Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA 0C60..0C61 ; XID_Start # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL 0C80 ; XID_Start # Lo KANNADA SIGN SPACING CANDRABINDU 0C85..0C8C ; XID_Start # Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L 0C8E..0C90 ; XID_Start # Lo [3] KANNADA LETTER E..KANNADA LETTER AI 0C92..0CA8 ; XID_Start # Lo [23] KANNADA LETTER O..KANNADA LETTER NA 0CAA..0CB3 ; XID_Start # Lo [10] KANNADA LETTER PA..KANNADA LETTER LLA 0CB5..0CB9 ; XID_Start # Lo [5] KANNADA LETTER VA..KANNADA LETTER HA 0CBD ; XID_Start # Lo KANNADA SIGN AVAGRAHA 0CDE ; XID_Start # Lo KANNADA LETTER FA 0CE0..0CE1 ; XID_Start # Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL 0CF1..0CF2 ; XID_Start # Lo [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA 0D05..0D0C ; XID_Start # Lo [8] MALAYALAM LETTER A..MALAYALAM LETTER VOCALIC L 0D0E..0D10 ; XID_Start # Lo [3] MALAYALAM LETTER E..MALAYALAM LETTER AI 0D12..0D3A ; XID_Start # Lo [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA 0D3D ; XID_Start # Lo MALAYALAM SIGN AVAGRAHA 0D4E ; XID_Start # Lo MALAYALAM LETTER DOT REPH 0D54..0D56 ; XID_Start # Lo [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL 0D5F..0D61 ; XID_Start # Lo [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL 0D7A..0D7F ; XID_Start # Lo [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K 0D85..0D96 ; XID_Start # Lo [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA 0D9A..0DB1 ; XID_Start # Lo [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA 0DB3..0DBB ; XID_Start # Lo [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA 0DBD ; XID_Start # Lo SINHALA LETTER DANTAJA LAYANNA 0DC0..0DC6 ; XID_Start # Lo [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA 0E01..0E30 ; XID_Start # Lo [48] THAI CHARACTER KO KAI..THAI CHARACTER SARA A 0E32 ; XID_Start # Lo THAI CHARACTER SARA AA 0E40..0E45 ; XID_Start # Lo [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO 0E46 ; XID_Start # Lm THAI CHARACTER MAIYAMOK 0E81..0E82 ; XID_Start # Lo [2] LAO LETTER KO..LAO LETTER KHO SUNG 0E84 ; XID_Start # Lo LAO LETTER KHO TAM 0E87..0E88 ; XID_Start # Lo [2] LAO LETTER NGO..LAO LETTER CO 0E8A ; XID_Start # Lo LAO LETTER SO TAM 0E8D ; XID_Start # Lo LAO LETTER NYO 0E94..0E97 ; XID_Start # Lo [4] LAO LETTER DO..LAO LETTER THO TAM 0E99..0E9F ; XID_Start # Lo [7] LAO LETTER NO..LAO LETTER FO SUNG 0EA1..0EA3 ; XID_Start # Lo [3] LAO LETTER MO..LAO LETTER LO LING 0EA5 ; XID_Start # Lo LAO LETTER LO LOOT 0EA7 ; XID_Start # Lo LAO LETTER WO 0EAA..0EAB ; XID_Start # Lo [2] LAO LETTER SO SUNG..LAO LETTER HO SUNG 0EAD..0EB0 ; XID_Start # Lo [4] LAO LETTER O..LAO VOWEL SIGN A 0EB2 ; XID_Start # Lo LAO VOWEL SIGN AA 0EBD ; XID_Start # Lo LAO SEMIVOWEL SIGN NYO 0EC0..0EC4 ; XID_Start # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI 0EC6 ; XID_Start # Lm LAO KO LA 0EDC..0EDF ; XID_Start # Lo [4] LAO HO NO..LAO LETTER KHMU NYO 0F00 ; XID_Start # Lo TIBETAN SYLLABLE OM 0F40..0F47 ; XID_Start # Lo [8] TIBETAN LETTER KA..TIBETAN LETTER JA 0F49..0F6C ; XID_Start # Lo [36] TIBETAN LETTER NYA..TIBETAN LETTER RRA 0F88..0F8C ; XID_Start # Lo [5] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN INVERTED MCHU CAN 1000..102A ; XID_Start # Lo [43] MYANMAR LETTER KA..MYANMAR LETTER AU 103F ; XID_Start # Lo MYANMAR LETTER GREAT SA 1050..1055 ; XID_Start # Lo [6] MYANMAR LETTER SHA..MYANMAR LETTER VOCALIC LL 105A..105D ; XID_Start # Lo [4] MYANMAR LETTER MON NGA..MYANMAR LETTER MON BBE 1061 ; XID_Start # Lo MYANMAR LETTER SGAW KAREN SHA 1065..1066 ; XID_Start # Lo [2] MYANMAR LETTER WESTERN PWO KAREN THA..MYANMAR LETTER WESTERN PWO KAREN PWA 106E..1070 ; XID_Start # Lo [3] MYANMAR LETTER EASTERN PWO KAREN NNA..MYANMAR LETTER EASTERN PWO KAREN GHWA 1075..1081 ; XID_Start # Lo [13] MYANMAR LETTER SHAN KA..MYANMAR LETTER SHAN HA 108E ; XID_Start # Lo MYANMAR LETTER RUMAI PALAUNG FA 10A0..10C5 ; XID_Start # L& [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE 10C7 ; XID_Start # L& GEORGIAN CAPITAL LETTER YN 10CD ; XID_Start # L& GEORGIAN CAPITAL LETTER AEN 10D0..10FA ; XID_Start # Lo [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN 10FC ; XID_Start # Lm MODIFIER LETTER GEORGIAN NAR 10FD..1248 ; XID_Start # Lo [332] GEORGIAN LETTER AEN..ETHIOPIC SYLLABLE QWA 124A..124D ; XID_Start # Lo [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE 1250..1256 ; XID_Start # Lo [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO 1258 ; XID_Start # Lo ETHIOPIC SYLLABLE QHWA 125A..125D ; XID_Start # Lo [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE 1260..1288 ; XID_Start # Lo [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA 128A..128D ; XID_Start # Lo [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE 1290..12B0 ; XID_Start # Lo [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA 12B2..12B5 ; XID_Start # Lo [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE 12B8..12BE ; XID_Start # Lo [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO 12C0 ; XID_Start # Lo ETHIOPIC SYLLABLE KXWA 12C2..12C5 ; XID_Start # Lo [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE 12C8..12D6 ; XID_Start # Lo [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O 12D8..1310 ; XID_Start # Lo [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA 1312..1315 ; XID_Start # Lo [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE 1318..135A ; XID_Start # Lo [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA 1380..138F ; XID_Start # Lo [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE 13A0..13F5 ; XID_Start # L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV 13F8..13FD ; XID_Start # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV 1401..166C ; XID_Start # Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA 166F..167F ; XID_Start # Lo [17] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS BLACKFOOT W 1681..169A ; XID_Start # Lo [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH 16A0..16EA ; XID_Start # Lo [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X 16EE..16F0 ; XID_Start # Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL 16F1..16F8 ; XID_Start # Lo [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC 1700..170C ; XID_Start # Lo [13] TAGALOG LETTER A..TAGALOG LETTER YA 170E..1711 ; XID_Start # Lo [4] TAGALOG LETTER LA..TAGALOG LETTER HA 1720..1731 ; XID_Start # Lo [18] HANUNOO LETTER A..HANUNOO LETTER HA 1740..1751 ; XID_Start # Lo [18] BUHID LETTER A..BUHID LETTER HA 1760..176C ; XID_Start # Lo [13] TAGBANWA LETTER A..TAGBANWA LETTER YA 176E..1770 ; XID_Start # Lo [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA 1780..17B3 ; XID_Start # Lo [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU 17D7 ; XID_Start # Lm KHMER SIGN LEK TOO 17DC ; XID_Start # Lo KHMER SIGN AVAKRAHASANYA 1820..1842 ; XID_Start # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI 1843 ; XID_Start # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN 1844..1877 ; XID_Start # Lo [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA 1880..1884 ; XID_Start # Lo [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA 1885..1886 ; XID_Start # Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA 1887..18A8 ; XID_Start # Lo [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA 18AA ; XID_Start # Lo MONGOLIAN LETTER MANCHU ALI GALI LHA 18B0..18F5 ; XID_Start # Lo [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S 1900..191E ; XID_Start # Lo [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA 1950..196D ; XID_Start # Lo [30] TAI LE LETTER KA..TAI LE LETTER AI 1970..1974 ; XID_Start # Lo [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6 1980..19AB ; XID_Start # Lo [44] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW SUA 19B0..19C9 ; XID_Start # Lo [26] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE TONE MARK-2 1A00..1A16 ; XID_Start # Lo [23] BUGINESE LETTER KA..BUGINESE LETTER HA 1A20..1A54 ; XID_Start # Lo [53] TAI THAM LETTER HIGH KA..TAI THAM LETTER GREAT SA 1AA7 ; XID_Start # Lm TAI THAM SIGN MAI YAMOK 1B05..1B33 ; XID_Start # Lo [47] BALINESE LETTER AKARA..BALINESE LETTER HA 1B45..1B4B ; XID_Start # Lo [7] BALINESE LETTER KAF SASAK..BALINESE LETTER ASYURA SASAK 1B83..1BA0 ; XID_Start # Lo [30] SUNDANESE LETTER A..SUNDANESE LETTER HA 1BAE..1BAF ; XID_Start # Lo [2] SUNDANESE LETTER KHA..SUNDANESE LETTER SYA 1BBA..1BE5 ; XID_Start # Lo [44] SUNDANESE AVAGRAHA..BATAK LETTER U 1C00..1C23 ; XID_Start # Lo [36] LEPCHA LETTER KA..LEPCHA LETTER A 1C4D..1C4F ; XID_Start # Lo [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA 1C5A..1C77 ; XID_Start # Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH 1C78..1C7D ; XID_Start # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD 1C80..1C88 ; XID_Start # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK 1CE9..1CEC ; XID_Start # Lo [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL 1CEE..1CF1 ; XID_Start # Lo [4] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ANUSVARA UBHAYATO MUKHA 1CF5..1CF6 ; XID_Start # Lo [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA 1D00..1D2B ; XID_Start # L& [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL 1D2C..1D6A ; XID_Start # Lm [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI 1D6B..1D77 ; XID_Start # L& [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G 1D78 ; XID_Start # Lm MODIFIER LETTER CYRILLIC EN 1D79..1D9A ; XID_Start # L& [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK 1D9B..1DBF ; XID_Start # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA 1E00..1F15 ; XID_Start # L& [278] LATIN CAPITAL LETTER A WITH RING BELOW..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA 1F18..1F1D ; XID_Start # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA 1F20..1F45 ; XID_Start # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA 1F48..1F4D ; XID_Start # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA 1F50..1F57 ; XID_Start # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI 1F59 ; XID_Start # L& GREEK CAPITAL LETTER UPSILON WITH DASIA 1F5B ; XID_Start # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA 1F5D ; XID_Start # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA 1F5F..1F7D ; XID_Start # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA 1F80..1FB4 ; XID_Start # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI 1FB6..1FBC ; XID_Start # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI 1FBE ; XID_Start # L& GREEK PROSGEGRAMMENI 1FC2..1FC4 ; XID_Start # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI 1FC6..1FCC ; XID_Start # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI 1FD0..1FD3 ; XID_Start # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA 1FD6..1FDB ; XID_Start # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA 1FE0..1FEC ; XID_Start # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA 1FF2..1FF4 ; XID_Start # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI 1FF6..1FFC ; XID_Start # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI 2071 ; XID_Start # Lm SUPERSCRIPT LATIN SMALL LETTER I 207F ; XID_Start # Lm SUPERSCRIPT LATIN SMALL LETTER N 2090..209C ; XID_Start # Lm [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T 2102 ; XID_Start # L& DOUBLE-STRUCK CAPITAL C 2107 ; XID_Start # L& EULER CONSTANT 210A..2113 ; XID_Start # L& [10] SCRIPT SMALL G..SCRIPT SMALL L 2115 ; XID_Start # L& DOUBLE-STRUCK CAPITAL N 2118 ; XID_Start # Sm SCRIPT CAPITAL P 2119..211D ; XID_Start # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R 2124 ; XID_Start # L& DOUBLE-STRUCK CAPITAL Z 2126 ; XID_Start # L& OHM SIGN 2128 ; XID_Start # L& BLACK-LETTER CAPITAL Z 212A..212D ; XID_Start # L& [4] KELVIN SIGN..BLACK-LETTER CAPITAL C 212E ; XID_Start # So ESTIMATED SYMBOL 212F..2134 ; XID_Start # L& [6] SCRIPT SMALL E..SCRIPT SMALL O 2135..2138 ; XID_Start # Lo [4] ALEF SYMBOL..DALET SYMBOL 2139 ; XID_Start # L& INFORMATION SOURCE 213C..213F ; XID_Start # L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI 2145..2149 ; XID_Start # L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J 214E ; XID_Start # L& TURNED SMALL F 2160..2182 ; XID_Start # Nl [35] ROMAN NUMERAL ONE..ROMAN NUMERAL TEN THOUSAND 2183..2184 ; XID_Start # L& [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C 2185..2188 ; XID_Start # Nl [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND 2C00..2C2E ; XID_Start # L& [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE 2C30..2C5E ; XID_Start # L& [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE 2C60..2C7B ; XID_Start # L& [28] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN LETTER SMALL CAPITAL TURNED E 2C7C..2C7D ; XID_Start # Lm [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V 2C7E..2CE4 ; XID_Start # L& [103] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC SYMBOL KAI 2CEB..2CEE ; XID_Start # L& [4] COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI..COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA 2CF2..2CF3 ; XID_Start # L& [2] COPTIC CAPITAL LETTER BOHAIRIC KHEI..COPTIC SMALL LETTER BOHAIRIC KHEI 2D00..2D25 ; XID_Start # L& [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE 2D27 ; XID_Start # L& GEORGIAN SMALL LETTER YN 2D2D ; XID_Start # L& GEORGIAN SMALL LETTER AEN 2D30..2D67 ; XID_Start # Lo [56] TIFINAGH LETTER YA..TIFINAGH LETTER YO 2D6F ; XID_Start # Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK 2D80..2D96 ; XID_Start # Lo [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE 2DA0..2DA6 ; XID_Start # Lo [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO 2DA8..2DAE ; XID_Start # Lo [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO 2DB0..2DB6 ; XID_Start # Lo [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO 2DB8..2DBE ; XID_Start # Lo [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO 2DC0..2DC6 ; XID_Start # Lo [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO 2DC8..2DCE ; XID_Start # Lo [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO 2DD0..2DD6 ; XID_Start # Lo [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO 2DD8..2DDE ; XID_Start # Lo [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO 3005 ; XID_Start # Lm IDEOGRAPHIC ITERATION MARK 3006 ; XID_Start # Lo IDEOGRAPHIC CLOSING MARK 3007 ; XID_Start # Nl IDEOGRAPHIC NUMBER ZERO 3021..3029 ; XID_Start # Nl [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE 3031..3035 ; XID_Start # Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF 3038..303A ; XID_Start # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY 303B ; XID_Start # Lm VERTICAL IDEOGRAPHIC ITERATION MARK 303C ; XID_Start # Lo MASU MARK 3041..3096 ; XID_Start # Lo [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE 309D..309E ; XID_Start # Lm [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK 309F ; XID_Start # Lo HIRAGANA DIGRAPH YORI 30A1..30FA ; XID_Start # Lo [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO 30FC..30FE ; XID_Start # Lm [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK 30FF ; XID_Start # Lo KATAKANA DIGRAPH KOTO 3105..312D ; XID_Start # Lo [41] BOPOMOFO LETTER B..BOPOMOFO LETTER IH 3131..318E ; XID_Start # Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE 31A0..31BA ; XID_Start # Lo [27] BOPOMOFO LETTER BU..BOPOMOFO LETTER ZY 31F0..31FF ; XID_Start # Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO 3400..4DB5 ; XID_Start # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 4E00..9FD5 ; XID_Start # Lo [20950] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FD5 A000..A014 ; XID_Start # Lo [21] YI SYLLABLE IT..YI SYLLABLE E A015 ; XID_Start # Lm YI SYLLABLE WU A016..A48C ; XID_Start # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR A4D0..A4F7 ; XID_Start # Lo [40] LISU LETTER BA..LISU LETTER OE A4F8..A4FD ; XID_Start # Lm [6] LISU LETTER TONE MYA TI..LISU LETTER TONE MYA JEU A500..A60B ; XID_Start # Lo [268] VAI SYLLABLE EE..VAI SYLLABLE NG A60C ; XID_Start # Lm VAI SYLLABLE LENGTHENER A610..A61F ; XID_Start # Lo [16] VAI SYLLABLE NDOLE FA..VAI SYMBOL JONG A62A..A62B ; XID_Start # Lo [2] VAI SYLLABLE NDOLE MA..VAI SYLLABLE NDOLE DO A640..A66D ; XID_Start # L& [46] CYRILLIC CAPITAL LETTER ZEMLYA..CYRILLIC SMALL LETTER DOUBLE MONOCULAR O A66E ; XID_Start # Lo CYRILLIC LETTER MULTIOCULAR O A67F ; XID_Start # Lm CYRILLIC PAYEROK A680..A69B ; XID_Start # L& [28] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER CROSSED O A69C..A69D ; XID_Start # Lm [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN A6A0..A6E5 ; XID_Start # Lo [70] BAMUM LETTER A..BAMUM LETTER KI A6E6..A6EF ; XID_Start # Nl [10] BAMUM LETTER MO..BAMUM LETTER KOGHOM A717..A71F ; XID_Start # Lm [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK A722..A76F ; XID_Start # L& [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN SMALL LETTER CON A770 ; XID_Start # Lm MODIFIER LETTER US A771..A787 ; XID_Start # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T A788 ; XID_Start # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT A78B..A78E ; XID_Start # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT A78F ; XID_Start # Lo LATIN LETTER SINOLOGICAL DOT A790..A7AE ; XID_Start # L& [31] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER SMALL CAPITAL I A7B0..A7B7 ; XID_Start # L& [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA A7F7 ; XID_Start # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I A7F8..A7F9 ; XID_Start # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE A7FA ; XID_Start # L& LATIN LETTER SMALL CAPITAL TURNED M A7FB..A801 ; XID_Start # Lo [7] LATIN EPIGRAPHIC LETTER REVERSED F..SYLOTI NAGRI LETTER I A803..A805 ; XID_Start # Lo [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O A807..A80A ; XID_Start # Lo [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO A80C..A822 ; XID_Start # Lo [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO A840..A873 ; XID_Start # Lo [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU A882..A8B3 ; XID_Start # Lo [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA A8F2..A8F7 ; XID_Start # Lo [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA A8FB ; XID_Start # Lo DEVANAGARI HEADSTROKE A8FD ; XID_Start # Lo DEVANAGARI JAIN OM A90A..A925 ; XID_Start # Lo [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO A930..A946 ; XID_Start # Lo [23] REJANG LETTER KA..REJANG LETTER A A960..A97C ; XID_Start # Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH A984..A9B2 ; XID_Start # Lo [47] JAVANESE LETTER A..JAVANESE LETTER HA A9CF ; XID_Start # Lm JAVANESE PANGRANGKEP A9E0..A9E4 ; XID_Start # Lo [5] MYANMAR LETTER SHAN GHA..MYANMAR LETTER SHAN BHA A9E6 ; XID_Start # Lm MYANMAR MODIFIER LETTER SHAN REDUPLICATION A9E7..A9EF ; XID_Start # Lo [9] MYANMAR LETTER TAI LAING NYA..MYANMAR LETTER TAI LAING NNA A9FA..A9FE ; XID_Start # Lo [5] MYANMAR LETTER TAI LAING LLA..MYANMAR LETTER TAI LAING BHA AA00..AA28 ; XID_Start # Lo [41] CHAM LETTER A..CHAM LETTER HA AA40..AA42 ; XID_Start # Lo [3] CHAM LETTER FINAL K..CHAM LETTER FINAL NG AA44..AA4B ; XID_Start # Lo [8] CHAM LETTER FINAL CH..CHAM LETTER FINAL SS AA60..AA6F ; XID_Start # Lo [16] MYANMAR LETTER KHAMTI GA..MYANMAR LETTER KHAMTI FA AA70 ; XID_Start # Lm MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION AA71..AA76 ; XID_Start # Lo [6] MYANMAR LETTER KHAMTI XA..MYANMAR LOGOGRAM KHAMTI HM AA7A ; XID_Start # Lo MYANMAR LETTER AITON RA AA7E..AAAF ; XID_Start # Lo [50] MYANMAR LETTER SHWE PALAUNG CHA..TAI VIET LETTER HIGH O AAB1 ; XID_Start # Lo TAI VIET VOWEL AA AAB5..AAB6 ; XID_Start # Lo [2] TAI VIET VOWEL E..TAI VIET VOWEL O AAB9..AABD ; XID_Start # Lo [5] TAI VIET VOWEL UEA..TAI VIET VOWEL AN AAC0 ; XID_Start # Lo TAI VIET TONE MAI NUENG AAC2 ; XID_Start # Lo TAI VIET TONE MAI SONG AADB..AADC ; XID_Start # Lo [2] TAI VIET SYMBOL KON..TAI VIET SYMBOL NUENG AADD ; XID_Start # Lm TAI VIET SYMBOL SAM AAE0..AAEA ; XID_Start # Lo [11] MEETEI MAYEK LETTER E..MEETEI MAYEK LETTER SSA AAF2 ; XID_Start # Lo MEETEI MAYEK ANJI AAF3..AAF4 ; XID_Start # Lm [2] MEETEI MAYEK SYLLABLE REPETITION MARK..MEETEI MAYEK WORD REPETITION MARK AB01..AB06 ; XID_Start # Lo [6] ETHIOPIC SYLLABLE TTHU..ETHIOPIC SYLLABLE TTHO AB09..AB0E ; XID_Start # Lo [6] ETHIOPIC SYLLABLE DDHU..ETHIOPIC SYLLABLE DDHO AB11..AB16 ; XID_Start # Lo [6] ETHIOPIC SYLLABLE DZU..ETHIOPIC SYLLABLE DZO AB20..AB26 ; XID_Start # Lo [7] ETHIOPIC SYLLABLE CCHHA..ETHIOPIC SYLLABLE CCHHO AB28..AB2E ; XID_Start # Lo [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO AB30..AB5A ; XID_Start # L& [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG AB5C..AB5F ; XID_Start # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK AB60..AB65 ; XID_Start # L& [6] LATIN SMALL LETTER SAKHA YAT..GREEK LETTER SMALL CAPITAL OMEGA AB70..ABBF ; XID_Start # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA ABC0..ABE2 ; XID_Start # Lo [35] MEETEI MAYEK LETTER KOK..MEETEI MAYEK LETTER I LONSUM AC00..D7A3 ; XID_Start # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH D7B0..D7C6 ; XID_Start # Lo [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E D7CB..D7FB ; XID_Start # Lo [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH F900..FA6D ; XID_Start # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D FA70..FAD9 ; XID_Start # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 FB00..FB06 ; XID_Start # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST FB13..FB17 ; XID_Start # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH FB1D ; XID_Start # Lo HEBREW LETTER YOD WITH HIRIQ FB1F..FB28 ; XID_Start # Lo [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV FB2A..FB36 ; XID_Start # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH FB38..FB3C ; XID_Start # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH FB3E ; XID_Start # Lo HEBREW LETTER MEM WITH DAGESH FB40..FB41 ; XID_Start # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH FB43..FB44 ; XID_Start # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH FB46..FBB1 ; XID_Start # Lo [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM FBD3..FC5D ; XID_Start # Lo [139] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM FC64..FD3D ; XID_Start # Lo [218] ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM FD50..FD8F ; XID_Start # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM FD92..FDC7 ; XID_Start # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM FDF0..FDF9 ; XID_Start # Lo [10] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE SALLA ISOLATED FORM FE71 ; XID_Start # Lo ARABIC TATWEEL WITH FATHATAN ABOVE FE73 ; XID_Start # Lo ARABIC TAIL FRAGMENT FE77 ; XID_Start # Lo ARABIC FATHA MEDIAL FORM FE79 ; XID_Start # Lo ARABIC DAMMA MEDIAL FORM FE7B ; XID_Start # Lo ARABIC KASRA MEDIAL FORM FE7D ; XID_Start # Lo ARABIC SHADDA MEDIAL FORM FE7F..FEFC ; XID_Start # Lo [126] ARABIC SUKUN MEDIAL FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM FF21..FF3A ; XID_Start # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z FF41..FF5A ; XID_Start # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z FF66..FF6F ; XID_Start # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU FF70 ; XID_Start # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK FF71..FF9D ; XID_Start # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N FFA0..FFBE ; XID_Start # Lo [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH FFC2..FFC7 ; XID_Start # Lo [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E FFCA..FFCF ; XID_Start # Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE FFD2..FFD7 ; XID_Start # Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU FFDA..FFDC ; XID_Start # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I 10000..1000B ; XID_Start # Lo [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE 1000D..10026 ; XID_Start # Lo [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO 10028..1003A ; XID_Start # Lo [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO 1003C..1003D ; XID_Start # Lo [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE 1003F..1004D ; XID_Start # Lo [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO 10050..1005D ; XID_Start # Lo [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089 10080..100FA ; XID_Start # Lo [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305 10140..10174 ; XID_Start # Nl [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS 10280..1029C ; XID_Start # Lo [29] LYCIAN LETTER A..LYCIAN LETTER X 102A0..102D0 ; XID_Start # Lo [49] CARIAN LETTER A..CARIAN LETTER UUU3 10300..1031F ; XID_Start # Lo [32] OLD ITALIC LETTER A..OLD ITALIC LETTER ESS 10330..10340 ; XID_Start # Lo [17] GOTHIC LETTER AHSA..GOTHIC LETTER PAIRTHRA 10341 ; XID_Start # Nl GOTHIC LETTER NINETY 10342..10349 ; XID_Start # Lo [8] GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL 1034A ; XID_Start # Nl GOTHIC LETTER NINE HUNDRED 10350..10375 ; XID_Start # Lo [38] OLD PERMIC LETTER AN..OLD PERMIC LETTER IA 10380..1039D ; XID_Start # Lo [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU 103A0..103C3 ; XID_Start # Lo [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA 103C8..103CF ; XID_Start # Lo [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH 103D1..103D5 ; XID_Start # Nl [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED 10400..1044F ; XID_Start # L& [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW 10450..1049D ; XID_Start # Lo [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO 104B0..104D3 ; XID_Start # L& [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA 104D8..104FB ; XID_Start # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA 10500..10527 ; XID_Start # Lo [40] ELBASAN LETTER A..ELBASAN LETTER KHE 10530..10563 ; XID_Start # Lo [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW 10600..10736 ; XID_Start # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664 10740..10755 ; XID_Start # Lo [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE 10760..10767 ; XID_Start # Lo [8] LINEAR A SIGN A800..LINEAR A SIGN A807 10800..10805 ; XID_Start # Lo [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA 10808 ; XID_Start # Lo CYPRIOT SYLLABLE JO 1080A..10835 ; XID_Start # Lo [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO 10837..10838 ; XID_Start # Lo [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE 1083C ; XID_Start # Lo CYPRIOT SYLLABLE ZA 1083F..10855 ; XID_Start # Lo [23] CYPRIOT SYLLABLE ZO..IMPERIAL ARAMAIC LETTER TAW 10860..10876 ; XID_Start # Lo [23] PALMYRENE LETTER ALEPH..PALMYRENE LETTER TAW 10880..1089E ; XID_Start # Lo [31] NABATAEAN LETTER FINAL ALEPH..NABATAEAN LETTER TAW 108E0..108F2 ; XID_Start # Lo [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH 108F4..108F5 ; XID_Start # Lo [2] HATRAN LETTER SHIN..HATRAN LETTER TAW 10900..10915 ; XID_Start # Lo [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU 10920..10939 ; XID_Start # Lo [26] LYDIAN LETTER A..LYDIAN LETTER C 10980..109B7 ; XID_Start # Lo [56] MEROITIC HIEROGLYPHIC LETTER A..MEROITIC CURSIVE LETTER DA 109BE..109BF ; XID_Start # Lo [2] MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN 10A00 ; XID_Start # Lo KHAROSHTHI LETTER A 10A10..10A13 ; XID_Start # Lo [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA 10A15..10A17 ; XID_Start # Lo [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA 10A19..10A33 ; XID_Start # Lo [27] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER TTTHA 10A60..10A7C ; XID_Start # Lo [29] OLD SOUTH ARABIAN LETTER HE..OLD SOUTH ARABIAN LETTER THETH 10A80..10A9C ; XID_Start # Lo [29] OLD NORTH ARABIAN LETTER HEH..OLD NORTH ARABIAN LETTER ZAH 10AC0..10AC7 ; XID_Start # Lo [8] MANICHAEAN LETTER ALEPH..MANICHAEAN LETTER WAW 10AC9..10AE4 ; XID_Start # Lo [28] MANICHAEAN LETTER ZAYIN..MANICHAEAN LETTER TAW 10B00..10B35 ; XID_Start # Lo [54] AVESTAN LETTER A..AVESTAN LETTER HE 10B40..10B55 ; XID_Start # Lo [22] INSCRIPTIONAL PARTHIAN LETTER ALEPH..INSCRIPTIONAL PARTHIAN LETTER TAW 10B60..10B72 ; XID_Start # Lo [19] INSCRIPTIONAL PAHLAVI LETTER ALEPH..INSCRIPTIONAL PAHLAVI LETTER TAW 10B80..10B91 ; XID_Start # Lo [18] PSALTER PAHLAVI LETTER ALEPH..PSALTER PAHLAVI LETTER TAW 10C00..10C48 ; XID_Start # Lo [73] OLD TURKIC LETTER ORKHON A..OLD TURKIC LETTER ORKHON BASH 10C80..10CB2 ; XID_Start # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US 10CC0..10CF2 ; XID_Start # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US 11003..11037 ; XID_Start # Lo [53] BRAHMI SIGN JIHVAMULIYA..BRAHMI LETTER OLD TAMIL NNNA 11083..110AF ; XID_Start # Lo [45] KAITHI LETTER A..KAITHI LETTER HA 110D0..110E8 ; XID_Start # Lo [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE 11103..11126 ; XID_Start # Lo [36] CHAKMA LETTER AA..CHAKMA LETTER HAA 11150..11172 ; XID_Start # Lo [35] MAHAJANI LETTER A..MAHAJANI LETTER RRA 11176 ; XID_Start # Lo MAHAJANI LIGATURE SHRI 11183..111B2 ; XID_Start # Lo [48] SHARADA LETTER A..SHARADA LETTER HA 111C1..111C4 ; XID_Start # Lo [4] SHARADA SIGN AVAGRAHA..SHARADA OM 111DA ; XID_Start # Lo SHARADA EKAM 111DC ; XID_Start # Lo SHARADA HEADSTROKE 11200..11211 ; XID_Start # Lo [18] KHOJKI LETTER A..KHOJKI LETTER JJA 11213..1122B ; XID_Start # Lo [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA 11280..11286 ; XID_Start # Lo [7] MULTANI LETTER A..MULTANI LETTER GA 11288 ; XID_Start # Lo MULTANI LETTER GHA 1128A..1128D ; XID_Start # Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA 1128F..1129D ; XID_Start # Lo [15] MULTANI LETTER NYA..MULTANI LETTER BA 1129F..112A8 ; XID_Start # Lo [10] MULTANI LETTER BHA..MULTANI LETTER RHA 112B0..112DE ; XID_Start # Lo [47] KHUDAWADI LETTER A..KHUDAWADI LETTER HA 11305..1130C ; XID_Start # Lo [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L 1130F..11310 ; XID_Start # Lo [2] GRANTHA LETTER EE..GRANTHA LETTER AI 11313..11328 ; XID_Start # Lo [22] GRANTHA LETTER OO..GRANTHA LETTER NA 1132A..11330 ; XID_Start # Lo [7] GRANTHA LETTER PA..GRANTHA LETTER RA 11332..11333 ; XID_Start # Lo [2] GRANTHA LETTER LA..GRANTHA LETTER LLA 11335..11339 ; XID_Start # Lo [5] GRANTHA LETTER VA..GRANTHA LETTER HA 1133D ; XID_Start # Lo GRANTHA SIGN AVAGRAHA 11350 ; XID_Start # Lo GRANTHA OM 1135D..11361 ; XID_Start # Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL 11400..11434 ; XID_Start # Lo [53] NEWA LETTER A..NEWA LETTER HA 11447..1144A ; XID_Start # Lo [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI 11480..114AF ; XID_Start # Lo [48] TIRHUTA ANJI..TIRHUTA LETTER HA 114C4..114C5 ; XID_Start # Lo [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG 114C7 ; XID_Start # Lo TIRHUTA OM 11580..115AE ; XID_Start # Lo [47] SIDDHAM LETTER A..SIDDHAM LETTER HA 115D8..115DB ; XID_Start # Lo [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U 11600..1162F ; XID_Start # Lo [48] MODI LETTER A..MODI LETTER LLA 11644 ; XID_Start # Lo MODI SIGN HUVA 11680..116AA ; XID_Start # Lo [43] TAKRI LETTER A..TAKRI LETTER RRA 11700..11719 ; XID_Start # Lo [26] AHOM LETTER KA..AHOM LETTER JHA 118A0..118DF ; XID_Start # L& [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO 118FF ; XID_Start # Lo WARANG CITI OM 11AC0..11AF8 ; XID_Start # Lo [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL 11C00..11C08 ; XID_Start # Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L 11C0A..11C2E ; XID_Start # Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA 11C40 ; XID_Start # Lo BHAIKSUKI SIGN AVAGRAHA 11C72..11C8F ; XID_Start # Lo [30] MARCHEN LETTER KA..MARCHEN LETTER A 12000..12399 ; XID_Start # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U 12400..1246E ; XID_Start # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM 12480..12543 ; XID_Start # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU 13000..1342E ; XID_Start # Lo [1071] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH AA032 14400..14646 ; XID_Start # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 16800..16A38 ; XID_Start # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ 16A40..16A5E ; XID_Start # Lo [31] MRO LETTER TA..MRO LETTER TEK 16AD0..16AED ; XID_Start # Lo [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I 16B00..16B2F ; XID_Start # Lo [48] PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG CONSONANT CAU 16B40..16B43 ; XID_Start # Lm [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM 16B63..16B77 ; XID_Start # Lo [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS 16B7D..16B8F ; XID_Start # Lo [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ 16F00..16F44 ; XID_Start # Lo [69] MIAO LETTER PA..MIAO LETTER HHA 16F50 ; XID_Start # Lo MIAO LETTER NASALIZATION 16F93..16F9F ; XID_Start # Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8 16FE0 ; XID_Start # Lm TANGUT ITERATION MARK 17000..187EC ; XID_Start # Lo [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC 18800..18AF2 ; XID_Start # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755 1B000..1B001 ; XID_Start # Lo [2] KATAKANA LETTER ARCHAIC E..HIRAGANA LETTER ARCHAIC YE 1BC00..1BC6A ; XID_Start # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M 1BC70..1BC7C ; XID_Start # Lo [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK 1BC80..1BC88 ; XID_Start # Lo [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL 1BC90..1BC99 ; XID_Start # Lo [10] DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW 1D400..1D454 ; XID_Start # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G 1D456..1D49C ; XID_Start # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A 1D49E..1D49F ; XID_Start # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D 1D4A2 ; XID_Start # L& MATHEMATICAL SCRIPT CAPITAL G 1D4A5..1D4A6 ; XID_Start # L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K 1D4A9..1D4AC ; XID_Start # L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q 1D4AE..1D4B9 ; XID_Start # L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D 1D4BB ; XID_Start # L& MATHEMATICAL SCRIPT SMALL F 1D4BD..1D4C3 ; XID_Start # L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N 1D4C5..1D505 ; XID_Start # L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B 1D507..1D50A ; XID_Start # L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G 1D50D..1D514 ; XID_Start # L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q 1D516..1D51C ; XID_Start # L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y 1D51E..1D539 ; XID_Start # L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B 1D53B..1D53E ; XID_Start # L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G 1D540..1D544 ; XID_Start # L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M 1D546 ; XID_Start # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O 1D54A..1D550 ; XID_Start # L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y 1D552..1D6A5 ; XID_Start # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J 1D6A8..1D6C0 ; XID_Start # L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA 1D6C2..1D6DA ; XID_Start # L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA 1D6DC..1D6FA ; XID_Start # L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA 1D6FC..1D714 ; XID_Start # L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA 1D716..1D734 ; XID_Start # L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA 1D736..1D74E ; XID_Start # L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA 1D750..1D76E ; XID_Start # L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA 1D770..1D788 ; XID_Start # L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA 1D78A..1D7A8 ; XID_Start # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA 1D7AA..1D7C2 ; XID_Start # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA 1D7C4..1D7CB ; XID_Start # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA 1E800..1E8C4 ; XID_Start # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON 1E900..1E943 ; XID_Start # L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA 1EE00..1EE03 ; XID_Start # Lo [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL 1EE05..1EE1F ; XID_Start # Lo [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF 1EE21..1EE22 ; XID_Start # Lo [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM 1EE24 ; XID_Start # Lo ARABIC MATHEMATICAL INITIAL HEH 1EE27 ; XID_Start # Lo ARABIC MATHEMATICAL INITIAL HAH 1EE29..1EE32 ; XID_Start # Lo [10] ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF 1EE34..1EE37 ; XID_Start # Lo [4] ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH 1EE39 ; XID_Start # Lo ARABIC MATHEMATICAL INITIAL DAD 1EE3B ; XID_Start # Lo ARABIC MATHEMATICAL INITIAL GHAIN 1EE42 ; XID_Start # Lo ARABIC MATHEMATICAL TAILED JEEM 1EE47 ; XID_Start # Lo ARABIC MATHEMATICAL TAILED HAH 1EE49 ; XID_Start # Lo ARABIC MATHEMATICAL TAILED YEH 1EE4B ; XID_Start # Lo ARABIC MATHEMATICAL TAILED LAM 1EE4D..1EE4F ; XID_Start # Lo [3] ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN 1EE51..1EE52 ; XID_Start # Lo [2] ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF 1EE54 ; XID_Start # Lo ARABIC MATHEMATICAL TAILED SHEEN 1EE57 ; XID_Start # Lo ARABIC MATHEMATICAL TAILED KHAH 1EE59 ; XID_Start # Lo ARABIC MATHEMATICAL TAILED DAD 1EE5B ; XID_Start # Lo ARABIC MATHEMATICAL TAILED GHAIN 1EE5D ; XID_Start # Lo ARABIC MATHEMATICAL TAILED DOTLESS NOON 1EE5F ; XID_Start # Lo ARABIC MATHEMATICAL TAILED DOTLESS QAF 1EE61..1EE62 ; XID_Start # Lo [2] ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM 1EE64 ; XID_Start # Lo ARABIC MATHEMATICAL STRETCHED HEH 1EE67..1EE6A ; XID_Start # Lo [4] ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF 1EE6C..1EE72 ; XID_Start # Lo [7] ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF 1EE74..1EE77 ; XID_Start # Lo [4] ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH 1EE79..1EE7C ; XID_Start # Lo [4] ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH 1EE7E ; XID_Start # Lo ARABIC MATHEMATICAL STRETCHED DOTLESS FEH 1EE80..1EE89 ; XID_Start # Lo [10] ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH 1EE8B..1EE9B ; XID_Start # Lo [17] ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN 1EEA1..1EEA3 ; XID_Start # Lo [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL 1EEA5..1EEA9 ; XID_Start # Lo [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH 1EEAB..1EEBB ; XID_Start # Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN 20000..2A6D6 ; XID_Start # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 2A700..2B734 ; XID_Start # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 2B740..2B81D ; XID_Start # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D 2B820..2CEA1 ; XID_Start # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 2F800..2FA1D ; XID_Start # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D # Total code points: 116984 # ================================================ # Derived Property: XID_Continue # Mod_ID_Continue modified for closure under NFKx # Modified as described in UAX #15 # NOTE: Does NOT remove the non-NFKx characters. # Merely ensures that if isIdentifer(string) then isIdentifier(NFKx(string)) # NOTE: See UAX #31 for more information 0030..0039 ; XID_Continue # Nd [10] DIGIT ZERO..DIGIT NINE 0041..005A ; XID_Continue # L& [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z 005F ; XID_Continue # Pc LOW LINE 0061..007A ; XID_Continue # L& [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z 00AA ; XID_Continue # Lo FEMININE ORDINAL INDICATOR 00B5 ; XID_Continue # L& MICRO SIGN 00B7 ; XID_Continue # Po MIDDLE DOT 00BA ; XID_Continue # Lo MASCULINE ORDINAL INDICATOR 00C0..00D6 ; XID_Continue # L& [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS 00D8..00F6 ; XID_Continue # L& [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS 00F8..01BA ; XID_Continue # L& [195] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER EZH WITH TAIL 01BB ; XID_Continue # Lo LATIN LETTER TWO WITH STROKE 01BC..01BF ; XID_Continue # L& [4] LATIN CAPITAL LETTER TONE FIVE..LATIN LETTER WYNN 01C0..01C3 ; XID_Continue # Lo [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK 01C4..0293 ; XID_Continue # L& [208] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER EZH WITH CURL 0294 ; XID_Continue # Lo LATIN LETTER GLOTTAL STOP 0295..02AF ; XID_Continue # L& [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL 02B0..02C1 ; XID_Continue # Lm [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP 02C6..02D1 ; XID_Continue # Lm [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON 02E0..02E4 ; XID_Continue # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP 02EC ; XID_Continue # Lm MODIFIER LETTER VOICING 02EE ; XID_Continue # Lm MODIFIER LETTER DOUBLE APOSTROPHE 0300..036F ; XID_Continue # Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X 0370..0373 ; XID_Continue # L& [4] GREEK CAPITAL LETTER HETA..GREEK SMALL LETTER ARCHAIC SAMPI 0374 ; XID_Continue # Lm GREEK NUMERAL SIGN 0376..0377 ; XID_Continue # L& [2] GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA..GREEK SMALL LETTER PAMPHYLIAN DIGAMMA 037B..037D ; XID_Continue # L& [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL 037F ; XID_Continue # L& GREEK CAPITAL LETTER YOT 0386 ; XID_Continue # L& GREEK CAPITAL LETTER ALPHA WITH TONOS 0387 ; XID_Continue # Po GREEK ANO TELEIA 0388..038A ; XID_Continue # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS 038C ; XID_Continue # L& GREEK CAPITAL LETTER OMICRON WITH TONOS 038E..03A1 ; XID_Continue # L& [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO 03A3..03F5 ; XID_Continue # L& [83] GREEK CAPITAL LETTER SIGMA..GREEK LUNATE EPSILON SYMBOL 03F7..0481 ; XID_Continue # L& [139] GREEK CAPITAL LETTER SHO..CYRILLIC SMALL LETTER KOPPA 0483..0487 ; XID_Continue # Mn [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE 048A..052F ; XID_Continue # L& [166] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER EL WITH DESCENDER 0531..0556 ; XID_Continue # L& [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH 0559 ; XID_Continue # Lm ARMENIAN MODIFIER LETTER LEFT HALF RING 0561..0587 ; XID_Continue # L& [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN 0591..05BD ; XID_Continue # Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG 05BF ; XID_Continue # Mn HEBREW POINT RAFE 05C1..05C2 ; XID_Continue # Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT 05C4..05C5 ; XID_Continue # Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT 05C7 ; XID_Continue # Mn HEBREW POINT QAMATS QATAN 05D0..05EA ; XID_Continue # Lo [27] HEBREW LETTER ALEF..HEBREW LETTER TAV 05F0..05F2 ; XID_Continue # Lo [3] HEBREW LIGATURE YIDDISH DOUBLE VAV..HEBREW LIGATURE YIDDISH DOUBLE YOD 0610..061A ; XID_Continue # Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA 0620..063F ; XID_Continue # Lo [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE 0640 ; XID_Continue # Lm ARABIC TATWEEL 0641..064A ; XID_Continue # Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH 064B..065F ; XID_Continue # Mn [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW 0660..0669 ; XID_Continue # Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE 066E..066F ; XID_Continue # Lo [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF 0670 ; XID_Continue # Mn ARABIC LETTER SUPERSCRIPT ALEF 0671..06D3 ; XID_Continue # Lo [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE 06D5 ; XID_Continue # Lo ARABIC LETTER AE 06D6..06DC ; XID_Continue # Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN 06DF..06E4 ; XID_Continue # Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA 06E5..06E6 ; XID_Continue # Lm [2] ARABIC SMALL WAW..ARABIC SMALL YEH 06E7..06E8 ; XID_Continue # Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON 06EA..06ED ; XID_Continue # Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM 06EE..06EF ; XID_Continue # Lo [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V 06F0..06F9 ; XID_Continue # Nd [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE 06FA..06FC ; XID_Continue # Lo [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW 06FF ; XID_Continue # Lo ARABIC LETTER HEH WITH INVERTED V 0710 ; XID_Continue # Lo SYRIAC LETTER ALAPH 0711 ; XID_Continue # Mn SYRIAC LETTER SUPERSCRIPT ALAPH 0712..072F ; XID_Continue # Lo [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH 0730..074A ; XID_Continue # Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH 074D..07A5 ; XID_Continue # Lo [89] SYRIAC LETTER SOGDIAN ZHAIN..THAANA LETTER WAAVU 07A6..07B0 ; XID_Continue # Mn [11] THAANA ABAFILI..THAANA SUKUN 07B1 ; XID_Continue # Lo THAANA LETTER NAA 07C0..07C9 ; XID_Continue # Nd [10] NKO DIGIT ZERO..NKO DIGIT NINE 07CA..07EA ; XID_Continue # Lo [33] NKO LETTER A..NKO LETTER JONA RA 07EB..07F3 ; XID_Continue # Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE 07F4..07F5 ; XID_Continue # Lm [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE 07FA ; XID_Continue # Lm NKO LAJANYALAN 0800..0815 ; XID_Continue # Lo [22] SAMARITAN LETTER ALAF..SAMARITAN LETTER TAAF 0816..0819 ; XID_Continue # Mn [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH 081A ; XID_Continue # Lm SAMARITAN MODIFIER LETTER EPENTHETIC YUT 081B..0823 ; XID_Continue # Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A 0824 ; XID_Continue # Lm SAMARITAN MODIFIER LETTER SHORT A 0825..0827 ; XID_Continue # Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U 0828 ; XID_Continue # Lm SAMARITAN MODIFIER LETTER I 0829..082D ; XID_Continue # Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA 0840..0858 ; XID_Continue # Lo [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN 0859..085B ; XID_Continue # Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK 08A0..08B4 ; XID_Continue # Lo [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW 08B6..08BD ; XID_Continue # Lo [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON 08D4..08E1 ; XID_Continue # Mn [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA 08E3..0902 ; XID_Continue # Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA 0903 ; XID_Continue # Mc DEVANAGARI SIGN VISARGA 0904..0939 ; XID_Continue # Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA 093A ; XID_Continue # Mn DEVANAGARI VOWEL SIGN OE 093B ; XID_Continue # Mc DEVANAGARI VOWEL SIGN OOE 093C ; XID_Continue # Mn DEVANAGARI SIGN NUKTA 093D ; XID_Continue # Lo DEVANAGARI SIGN AVAGRAHA 093E..0940 ; XID_Continue # Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II 0941..0948 ; XID_Continue # Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI 0949..094C ; XID_Continue # Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU 094D ; XID_Continue # Mn DEVANAGARI SIGN VIRAMA 094E..094F ; XID_Continue # Mc [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW 0950 ; XID_Continue # Lo DEVANAGARI OM 0951..0957 ; XID_Continue # Mn [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE 0958..0961 ; XID_Continue # Lo [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL 0962..0963 ; XID_Continue # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL 0966..096F ; XID_Continue # Nd [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE 0971 ; XID_Continue # Lm DEVANAGARI SIGN HIGH SPACING DOT 0972..0980 ; XID_Continue # Lo [15] DEVANAGARI LETTER CANDRA A..BENGALI ANJI 0981 ; XID_Continue # Mn BENGALI SIGN CANDRABINDU 0982..0983 ; XID_Continue # Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA 0985..098C ; XID_Continue # Lo [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L 098F..0990 ; XID_Continue # Lo [2] BENGALI LETTER E..BENGALI LETTER AI 0993..09A8 ; XID_Continue # Lo [22] BENGALI LETTER O..BENGALI LETTER NA 09AA..09B0 ; XID_Continue # Lo [7] BENGALI LETTER PA..BENGALI LETTER RA 09B2 ; XID_Continue # Lo BENGALI LETTER LA 09B6..09B9 ; XID_Continue # Lo [4] BENGALI LETTER SHA..BENGALI LETTER HA 09BC ; XID_Continue # Mn BENGALI SIGN NUKTA 09BD ; XID_Continue # Lo BENGALI SIGN AVAGRAHA 09BE..09C0 ; XID_Continue # Mc [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II 09C1..09C4 ; XID_Continue # Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR 09C7..09C8 ; XID_Continue # Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI 09CB..09CC ; XID_Continue # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU 09CD ; XID_Continue # Mn BENGALI SIGN VIRAMA 09CE ; XID_Continue # Lo BENGALI LETTER KHANDA TA 09D7 ; XID_Continue # Mc BENGALI AU LENGTH MARK 09DC..09DD ; XID_Continue # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA 09DF..09E1 ; XID_Continue # Lo [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL 09E2..09E3 ; XID_Continue # Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL 09E6..09EF ; XID_Continue # Nd [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE 09F0..09F1 ; XID_Continue # Lo [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL 0A01..0A02 ; XID_Continue # Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI 0A03 ; XID_Continue # Mc GURMUKHI SIGN VISARGA 0A05..0A0A ; XID_Continue # Lo [6] GURMUKHI LETTER A..GURMUKHI LETTER UU 0A0F..0A10 ; XID_Continue # Lo [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI 0A13..0A28 ; XID_Continue # Lo [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA 0A2A..0A30 ; XID_Continue # Lo [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA 0A32..0A33 ; XID_Continue # Lo [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA 0A35..0A36 ; XID_Continue # Lo [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA 0A38..0A39 ; XID_Continue # Lo [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA 0A3C ; XID_Continue # Mn GURMUKHI SIGN NUKTA 0A3E..0A40 ; XID_Continue # Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II 0A41..0A42 ; XID_Continue # Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU 0A47..0A48 ; XID_Continue # Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI 0A4B..0A4D ; XID_Continue # Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA 0A51 ; XID_Continue # Mn GURMUKHI SIGN UDAAT 0A59..0A5C ; XID_Continue # Lo [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA 0A5E ; XID_Continue # Lo GURMUKHI LETTER FA 0A66..0A6F ; XID_Continue # Nd [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE 0A70..0A71 ; XID_Continue # Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK 0A72..0A74 ; XID_Continue # Lo [3] GURMUKHI IRI..GURMUKHI EK ONKAR 0A75 ; XID_Continue # Mn GURMUKHI SIGN YAKASH 0A81..0A82 ; XID_Continue # Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA 0A83 ; XID_Continue # Mc GUJARATI SIGN VISARGA 0A85..0A8D ; XID_Continue # Lo [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E 0A8F..0A91 ; XID_Continue # Lo [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O 0A93..0AA8 ; XID_Continue # Lo [22] GUJARATI LETTER O..GUJARATI LETTER NA 0AAA..0AB0 ; XID_Continue # Lo [7] GUJARATI LETTER PA..GUJARATI LETTER RA 0AB2..0AB3 ; XID_Continue # Lo [2] GUJARATI LETTER LA..GUJARATI LETTER LLA 0AB5..0AB9 ; XID_Continue # Lo [5] GUJARATI LETTER VA..GUJARATI LETTER HA 0ABC ; XID_Continue # Mn GUJARATI SIGN NUKTA 0ABD ; XID_Continue # Lo GUJARATI SIGN AVAGRAHA 0ABE..0AC0 ; XID_Continue # Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II 0AC1..0AC5 ; XID_Continue # Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E 0AC7..0AC8 ; XID_Continue # Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI 0AC9 ; XID_Continue # Mc GUJARATI VOWEL SIGN CANDRA O 0ACB..0ACC ; XID_Continue # Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU 0ACD ; XID_Continue # Mn GUJARATI SIGN VIRAMA 0AD0 ; XID_Continue # Lo GUJARATI OM 0AE0..0AE1 ; XID_Continue # Lo [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL 0AE2..0AE3 ; XID_Continue # Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL 0AE6..0AEF ; XID_Continue # Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE 0AF9 ; XID_Continue # Lo GUJARATI LETTER ZHA 0B01 ; XID_Continue # Mn ORIYA SIGN CANDRABINDU 0B02..0B03 ; XID_Continue # Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA 0B05..0B0C ; XID_Continue # Lo [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L 0B0F..0B10 ; XID_Continue # Lo [2] ORIYA LETTER E..ORIYA LETTER AI 0B13..0B28 ; XID_Continue # Lo [22] ORIYA LETTER O..ORIYA LETTER NA 0B2A..0B30 ; XID_Continue # Lo [7] ORIYA LETTER PA..ORIYA LETTER RA 0B32..0B33 ; XID_Continue # Lo [2] ORIYA LETTER LA..ORIYA LETTER LLA 0B35..0B39 ; XID_Continue # Lo [5] ORIYA LETTER VA..ORIYA LETTER HA 0B3C ; XID_Continue # Mn ORIYA SIGN NUKTA 0B3D ; XID_Continue # Lo ORIYA SIGN AVAGRAHA 0B3E ; XID_Continue # Mc ORIYA VOWEL SIGN AA 0B3F ; XID_Continue # Mn ORIYA VOWEL SIGN I 0B40 ; XID_Continue # Mc ORIYA VOWEL SIGN II 0B41..0B44 ; XID_Continue # Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR 0B47..0B48 ; XID_Continue # Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI 0B4B..0B4C ; XID_Continue # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU 0B4D ; XID_Continue # Mn ORIYA SIGN VIRAMA 0B56 ; XID_Continue # Mn ORIYA AI LENGTH MARK 0B57 ; XID_Continue # Mc ORIYA AU LENGTH MARK 0B5C..0B5D ; XID_Continue # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA 0B5F..0B61 ; XID_Continue # Lo [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL 0B62..0B63 ; XID_Continue # Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL 0B66..0B6F ; XID_Continue # Nd [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE 0B71 ; XID_Continue # Lo ORIYA LETTER WA 0B82 ; XID_Continue # Mn TAMIL SIGN ANUSVARA 0B83 ; XID_Continue # Lo TAMIL SIGN VISARGA 0B85..0B8A ; XID_Continue # Lo [6] TAMIL LETTER A..TAMIL LETTER UU 0B8E..0B90 ; XID_Continue # Lo [3] TAMIL LETTER E..TAMIL LETTER AI 0B92..0B95 ; XID_Continue # Lo [4] TAMIL LETTER O..TAMIL LETTER KA 0B99..0B9A ; XID_Continue # Lo [2] TAMIL LETTER NGA..TAMIL LETTER CA 0B9C ; XID_Continue # Lo TAMIL LETTER JA 0B9E..0B9F ; XID_Continue # Lo [2] TAMIL LETTER NYA..TAMIL LETTER TTA 0BA3..0BA4 ; XID_Continue # Lo [2] TAMIL LETTER NNA..TAMIL LETTER TA 0BA8..0BAA ; XID_Continue # Lo [3] TAMIL LETTER NA..TAMIL LETTER PA 0BAE..0BB9 ; XID_Continue # Lo [12] TAMIL LETTER MA..TAMIL LETTER HA 0BBE..0BBF ; XID_Continue # Mc [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I 0BC0 ; XID_Continue # Mn TAMIL VOWEL SIGN II 0BC1..0BC2 ; XID_Continue # Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU 0BC6..0BC8 ; XID_Continue # Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI 0BCA..0BCC ; XID_Continue # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU 0BCD ; XID_Continue # Mn TAMIL SIGN VIRAMA 0BD0 ; XID_Continue # Lo TAMIL OM 0BD7 ; XID_Continue # Mc TAMIL AU LENGTH MARK 0BE6..0BEF ; XID_Continue # Nd [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE 0C00 ; XID_Continue # Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE 0C01..0C03 ; XID_Continue # Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA 0C05..0C0C ; XID_Continue # Lo [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L 0C0E..0C10 ; XID_Continue # Lo [3] TELUGU LETTER E..TELUGU LETTER AI 0C12..0C28 ; XID_Continue # Lo [23] TELUGU LETTER O..TELUGU LETTER NA 0C2A..0C39 ; XID_Continue # Lo [16] TELUGU LETTER PA..TELUGU LETTER HA 0C3D ; XID_Continue # Lo TELUGU SIGN AVAGRAHA 0C3E..0C40 ; XID_Continue # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II 0C41..0C44 ; XID_Continue # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR 0C46..0C48 ; XID_Continue # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI 0C4A..0C4D ; XID_Continue # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA 0C55..0C56 ; XID_Continue # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK 0C58..0C5A ; XID_Continue # Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA 0C60..0C61 ; XID_Continue # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL 0C62..0C63 ; XID_Continue # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL 0C66..0C6F ; XID_Continue # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE 0C80 ; XID_Continue # Lo KANNADA SIGN SPACING CANDRABINDU 0C81 ; XID_Continue # Mn KANNADA SIGN CANDRABINDU 0C82..0C83 ; XID_Continue # Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA 0C85..0C8C ; XID_Continue # Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L 0C8E..0C90 ; XID_Continue # Lo [3] KANNADA LETTER E..KANNADA LETTER AI 0C92..0CA8 ; XID_Continue # Lo [23] KANNADA LETTER O..KANNADA LETTER NA 0CAA..0CB3 ; XID_Continue # Lo [10] KANNADA LETTER PA..KANNADA LETTER LLA 0CB5..0CB9 ; XID_Continue # Lo [5] KANNADA LETTER VA..KANNADA LETTER HA 0CBC ; XID_Continue # Mn KANNADA SIGN NUKTA 0CBD ; XID_Continue # Lo KANNADA SIGN AVAGRAHA 0CBE ; XID_Continue # Mc KANNADA VOWEL SIGN AA 0CBF ; XID_Continue # Mn KANNADA VOWEL SIGN I 0CC0..0CC4 ; XID_Continue # Mc [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR 0CC6 ; XID_Continue # Mn KANNADA VOWEL SIGN E 0CC7..0CC8 ; XID_Continue # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI 0CCA..0CCB ; XID_Continue # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO 0CCC..0CCD ; XID_Continue # Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA 0CD5..0CD6 ; XID_Continue # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK 0CDE ; XID_Continue # Lo KANNADA LETTER FA 0CE0..0CE1 ; XID_Continue # Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL 0CE2..0CE3 ; XID_Continue # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL 0CE6..0CEF ; XID_Continue # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE 0CF1..0CF2 ; XID_Continue # Lo [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA 0D01 ; XID_Continue # Mn MALAYALAM SIGN CANDRABINDU 0D02..0D03 ; XID_Continue # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA 0D05..0D0C ; XID_Continue # Lo [8] MALAYALAM LETTER A..MALAYALAM LETTER VOCALIC L 0D0E..0D10 ; XID_Continue # Lo [3] MALAYALAM LETTER E..MALAYALAM LETTER AI 0D12..0D3A ; XID_Continue # Lo [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA 0D3D ; XID_Continue # Lo MALAYALAM SIGN AVAGRAHA 0D3E..0D40 ; XID_Continue # Mc [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II 0D41..0D44 ; XID_Continue # Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR 0D46..0D48 ; XID_Continue # Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI 0D4A..0D4C ; XID_Continue # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU 0D4D ; XID_Continue # Mn MALAYALAM SIGN VIRAMA 0D4E ; XID_Continue # Lo MALAYALAM LETTER DOT REPH 0D54..0D56 ; XID_Continue # Lo [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL 0D57 ; XID_Continue # Mc MALAYALAM AU LENGTH MARK 0D5F..0D61 ; XID_Continue # Lo [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL 0D62..0D63 ; XID_Continue # Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL 0D66..0D6F ; XID_Continue # Nd [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE 0D7A..0D7F ; XID_Continue # Lo [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K 0D82..0D83 ; XID_Continue # Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA 0D85..0D96 ; XID_Continue # Lo [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA 0D9A..0DB1 ; XID_Continue # Lo [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA 0DB3..0DBB ; XID_Continue # Lo [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA 0DBD ; XID_Continue # Lo SINHALA LETTER DANTAJA LAYANNA 0DC0..0DC6 ; XID_Continue # Lo [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA 0DCA ; XID_Continue # Mn SINHALA SIGN AL-LAKUNA 0DCF..0DD1 ; XID_Continue # Mc [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA 0DD2..0DD4 ; XID_Continue # Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA 0DD6 ; XID_Continue # Mn SINHALA VOWEL SIGN DIGA PAA-PILLA 0DD8..0DDF ; XID_Continue # Mc [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA 0DE6..0DEF ; XID_Continue # Nd [10] SINHALA LITH DIGIT ZERO..SINHALA LITH DIGIT NINE 0DF2..0DF3 ; XID_Continue # Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA 0E01..0E30 ; XID_Continue # Lo [48] THAI CHARACTER KO KAI..THAI CHARACTER SARA A 0E31 ; XID_Continue # Mn THAI CHARACTER MAI HAN-AKAT 0E32..0E33 ; XID_Continue # Lo [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM 0E34..0E3A ; XID_Continue # Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU 0E40..0E45 ; XID_Continue # Lo [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO 0E46 ; XID_Continue # Lm THAI CHARACTER MAIYAMOK 0E47..0E4E ; XID_Continue # Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN 0E50..0E59 ; XID_Continue # Nd [10] THAI DIGIT ZERO..THAI DIGIT NINE 0E81..0E82 ; XID_Continue # Lo [2] LAO LETTER KO..LAO LETTER KHO SUNG 0E84 ; XID_Continue # Lo LAO LETTER KHO TAM 0E87..0E88 ; XID_Continue # Lo [2] LAO LETTER NGO..LAO LETTER CO 0E8A ; XID_Continue # Lo LAO LETTER SO TAM 0E8D ; XID_Continue # Lo LAO LETTER NYO 0E94..0E97 ; XID_Continue # Lo [4] LAO LETTER DO..LAO LETTER THO TAM 0E99..0E9F ; XID_Continue # Lo [7] LAO LETTER NO..LAO LETTER FO SUNG 0EA1..0EA3 ; XID_Continue # Lo [3] LAO LETTER MO..LAO LETTER LO LING 0EA5 ; XID_Continue # Lo LAO LETTER LO LOOT 0EA7 ; XID_Continue # Lo LAO LETTER WO 0EAA..0EAB ; XID_Continue # Lo [2] LAO LETTER SO SUNG..LAO LETTER HO SUNG 0EAD..0EB0 ; XID_Continue # Lo [4] LAO LETTER O..LAO VOWEL SIGN A 0EB1 ; XID_Continue # Mn LAO VOWEL SIGN MAI KAN 0EB2..0EB3 ; XID_Continue # Lo [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM 0EB4..0EB9 ; XID_Continue # Mn [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU 0EBB..0EBC ; XID_Continue # Mn [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO 0EBD ; XID_Continue # Lo LAO SEMIVOWEL SIGN NYO 0EC0..0EC4 ; XID_Continue # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI 0EC6 ; XID_Continue # Lm LAO KO LA 0EC8..0ECD ; XID_Continue # Mn [6] LAO TONE MAI EK..LAO NIGGAHITA 0ED0..0ED9 ; XID_Continue # Nd [10] LAO DIGIT ZERO..LAO DIGIT NINE 0EDC..0EDF ; XID_Continue # Lo [4] LAO HO NO..LAO LETTER KHMU NYO 0F00 ; XID_Continue # Lo TIBETAN SYLLABLE OM 0F18..0F19 ; XID_Continue # Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS 0F20..0F29 ; XID_Continue # Nd [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE 0F35 ; XID_Continue # Mn TIBETAN MARK NGAS BZUNG NYI ZLA 0F37 ; XID_Continue # Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS 0F39 ; XID_Continue # Mn TIBETAN MARK TSA -PHRU 0F3E..0F3F ; XID_Continue # Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES 0F40..0F47 ; XID_Continue # Lo [8] TIBETAN LETTER KA..TIBETAN LETTER JA 0F49..0F6C ; XID_Continue # Lo [36] TIBETAN LETTER NYA..TIBETAN LETTER RRA 0F71..0F7E ; XID_Continue # Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO 0F7F ; XID_Continue # Mc TIBETAN SIGN RNAM BCAD 0F80..0F84 ; XID_Continue # Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA 0F86..0F87 ; XID_Continue # Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS 0F88..0F8C ; XID_Continue # Lo [5] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN INVERTED MCHU CAN 0F8D..0F97 ; XID_Continue # Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA 0F99..0FBC ; XID_Continue # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA 0FC6 ; XID_Continue # Mn TIBETAN SYMBOL PADMA GDAN 1000..102A ; XID_Continue # Lo [43] MYANMAR LETTER KA..MYANMAR LETTER AU 102B..102C ; XID_Continue # Mc [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA 102D..1030 ; XID_Continue # Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU 1031 ; XID_Continue # Mc MYANMAR VOWEL SIGN E 1032..1037 ; XID_Continue # Mn [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW 1038 ; XID_Continue # Mc MYANMAR SIGN VISARGA 1039..103A ; XID_Continue # Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT 103B..103C ; XID_Continue # Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA 103D..103E ; XID_Continue # Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA 103F ; XID_Continue # Lo MYANMAR LETTER GREAT SA 1040..1049 ; XID_Continue # Nd [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE 1050..1055 ; XID_Continue # Lo [6] MYANMAR LETTER SHA..MYANMAR LETTER VOCALIC LL 1056..1057 ; XID_Continue # Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR 1058..1059 ; XID_Continue # Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL 105A..105D ; XID_Continue # Lo [4] MYANMAR LETTER MON NGA..MYANMAR LETTER MON BBE 105E..1060 ; XID_Continue # Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA 1061 ; XID_Continue # Lo MYANMAR LETTER SGAW KAREN SHA 1062..1064 ; XID_Continue # Mc [3] MYANMAR VOWEL SIGN SGAW KAREN EU..MYANMAR TONE MARK SGAW KAREN KE PHO 1065..1066 ; XID_Continue # Lo [2] MYANMAR LETTER WESTERN PWO KAREN THA..MYANMAR LETTER WESTERN PWO KAREN PWA 1067..106D ; XID_Continue # Mc [7] MYANMAR VOWEL SIGN WESTERN PWO KAREN EU..MYANMAR SIGN WESTERN PWO KAREN TONE-5 106E..1070 ; XID_Continue # Lo [3] MYANMAR LETTER EASTERN PWO KAREN NNA..MYANMAR LETTER EASTERN PWO KAREN GHWA 1071..1074 ; XID_Continue # Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE 1075..1081 ; XID_Continue # Lo [13] MYANMAR LETTER SHAN KA..MYANMAR LETTER SHAN HA 1082 ; XID_Continue # Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA 1083..1084 ; XID_Continue # Mc [2] MYANMAR VOWEL SIGN SHAN AA..MYANMAR VOWEL SIGN SHAN E 1085..1086 ; XID_Continue # Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y 1087..108C ; XID_Continue # Mc [6] MYANMAR SIGN SHAN TONE-2..MYANMAR SIGN SHAN COUNCIL TONE-3 108D ; XID_Continue # Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE 108E ; XID_Continue # Lo MYANMAR LETTER RUMAI PALAUNG FA 108F ; XID_Continue # Mc MYANMAR SIGN RUMAI PALAUNG TONE-5 1090..1099 ; XID_Continue # Nd [10] MYANMAR SHAN DIGIT ZERO..MYANMAR SHAN DIGIT NINE 109A..109C ; XID_Continue # Mc [3] MYANMAR SIGN KHAMTI TONE-1..MYANMAR VOWEL SIGN AITON A 109D ; XID_Continue # Mn MYANMAR VOWEL SIGN AITON AI 10A0..10C5 ; XID_Continue # L& [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE 10C7 ; XID_Continue # L& GEORGIAN CAPITAL LETTER YN 10CD ; XID_Continue # L& GEORGIAN CAPITAL LETTER AEN 10D0..10FA ; XID_Continue # Lo [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN 10FC ; XID_Continue # Lm MODIFIER LETTER GEORGIAN NAR 10FD..1248 ; XID_Continue # Lo [332] GEORGIAN LETTER AEN..ETHIOPIC SYLLABLE QWA 124A..124D ; XID_Continue # Lo [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE 1250..1256 ; XID_Continue # Lo [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO 1258 ; XID_Continue # Lo ETHIOPIC SYLLABLE QHWA 125A..125D ; XID_Continue # Lo [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE 1260..1288 ; XID_Continue # Lo [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA 128A..128D ; XID_Continue # Lo [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE 1290..12B0 ; XID_Continue # Lo [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA 12B2..12B5 ; XID_Continue # Lo [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE 12B8..12BE ; XID_Continue # Lo [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO 12C0 ; XID_Continue # Lo ETHIOPIC SYLLABLE KXWA 12C2..12C5 ; XID_Continue # Lo [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE 12C8..12D6 ; XID_Continue # Lo [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O 12D8..1310 ; XID_Continue # Lo [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA 1312..1315 ; XID_Continue # Lo [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE 1318..135A ; XID_Continue # Lo [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA 135D..135F ; XID_Continue # Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK 1369..1371 ; XID_Continue # No [9] ETHIOPIC DIGIT ONE..ETHIOPIC DIGIT NINE 1380..138F ; XID_Continue # Lo [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE 13A0..13F5 ; XID_Continue # L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV 13F8..13FD ; XID_Continue # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV 1401..166C ; XID_Continue # Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA 166F..167F ; XID_Continue # Lo [17] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS BLACKFOOT W 1681..169A ; XID_Continue # Lo [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH 16A0..16EA ; XID_Continue # Lo [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X 16EE..16F0 ; XID_Continue # Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL 16F1..16F8 ; XID_Continue # Lo [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC 1700..170C ; XID_Continue # Lo [13] TAGALOG LETTER A..TAGALOG LETTER YA 170E..1711 ; XID_Continue # Lo [4] TAGALOG LETTER LA..TAGALOG LETTER HA 1712..1714 ; XID_Continue # Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA 1720..1731 ; XID_Continue # Lo [18] HANUNOO LETTER A..HANUNOO LETTER HA 1732..1734 ; XID_Continue # Mn [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD 1740..1751 ; XID_Continue # Lo [18] BUHID LETTER A..BUHID LETTER HA 1752..1753 ; XID_Continue # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U 1760..176C ; XID_Continue # Lo [13] TAGBANWA LETTER A..TAGBANWA LETTER YA 176E..1770 ; XID_Continue # Lo [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA 1772..1773 ; XID_Continue # Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U 1780..17B3 ; XID_Continue # Lo [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU 17B4..17B5 ; XID_Continue # Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA 17B6 ; XID_Continue # Mc KHMER VOWEL SIGN AA 17B7..17BD ; XID_Continue # Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA 17BE..17C5 ; XID_Continue # Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU 17C6 ; XID_Continue # Mn KHMER SIGN NIKAHIT 17C7..17C8 ; XID_Continue # Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU 17C9..17D3 ; XID_Continue # Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT 17D7 ; XID_Continue # Lm KHMER SIGN LEK TOO 17DC ; XID_Continue # Lo KHMER SIGN AVAKRAHASANYA 17DD ; XID_Continue # Mn KHMER SIGN ATTHACAN 17E0..17E9 ; XID_Continue # Nd [10] KHMER DIGIT ZERO..KHMER DIGIT NINE 180B..180D ; XID_Continue # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE 1810..1819 ; XID_Continue # Nd [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE 1820..1842 ; XID_Continue # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI 1843 ; XID_Continue # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN 1844..1877 ; XID_Continue # Lo [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA 1880..1884 ; XID_Continue # Lo [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA 1885..1886 ; XID_Continue # Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA 1887..18A8 ; XID_Continue # Lo [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA 18A9 ; XID_Continue # Mn MONGOLIAN LETTER ALI GALI DAGALGA 18AA ; XID_Continue # Lo MONGOLIAN LETTER MANCHU ALI GALI LHA 18B0..18F5 ; XID_Continue # Lo [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S 1900..191E ; XID_Continue # Lo [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA 1920..1922 ; XID_Continue # Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U 1923..1926 ; XID_Continue # Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU 1927..1928 ; XID_Continue # Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O 1929..192B ; XID_Continue # Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA 1930..1931 ; XID_Continue # Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA 1932 ; XID_Continue # Mn LIMBU SMALL LETTER ANUSVARA 1933..1938 ; XID_Continue # Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA 1939..193B ; XID_Continue # Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I 1946..194F ; XID_Continue # Nd [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE 1950..196D ; XID_Continue # Lo [30] TAI LE LETTER KA..TAI LE LETTER AI 1970..1974 ; XID_Continue # Lo [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6 1980..19AB ; XID_Continue # Lo [44] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW SUA 19B0..19C9 ; XID_Continue # Lo [26] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE TONE MARK-2 19D0..19D9 ; XID_Continue # Nd [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE 19DA ; XID_Continue # No NEW TAI LUE THAM DIGIT ONE 1A00..1A16 ; XID_Continue # Lo [23] BUGINESE LETTER KA..BUGINESE LETTER HA 1A17..1A18 ; XID_Continue # Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U 1A19..1A1A ; XID_Continue # Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O 1A1B ; XID_Continue # Mn BUGINESE VOWEL SIGN AE 1A20..1A54 ; XID_Continue # Lo [53] TAI THAM LETTER HIGH KA..TAI THAM LETTER GREAT SA 1A55 ; XID_Continue # Mc TAI THAM CONSONANT SIGN MEDIAL RA 1A56 ; XID_Continue # Mn TAI THAM CONSONANT SIGN MEDIAL LA 1A57 ; XID_Continue # Mc TAI THAM CONSONANT SIGN LA TANG LAI 1A58..1A5E ; XID_Continue # Mn [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA 1A60 ; XID_Continue # Mn TAI THAM SIGN SAKOT 1A61 ; XID_Continue # Mc TAI THAM VOWEL SIGN A 1A62 ; XID_Continue # Mn TAI THAM VOWEL SIGN MAI SAT 1A63..1A64 ; XID_Continue # Mc [2] TAI THAM VOWEL SIGN AA..TAI THAM VOWEL SIGN TALL AA 1A65..1A6C ; XID_Continue # Mn [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW 1A6D..1A72 ; XID_Continue # Mc [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI 1A73..1A7C ; XID_Continue # Mn [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN 1A7F ; XID_Continue # Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT 1A80..1A89 ; XID_Continue # Nd [10] TAI THAM HORA DIGIT ZERO..TAI THAM HORA DIGIT NINE 1A90..1A99 ; XID_Continue # Nd [10] TAI THAM THAM DIGIT ZERO..TAI THAM THAM DIGIT NINE 1AA7 ; XID_Continue # Lm TAI THAM SIGN MAI YAMOK 1AB0..1ABD ; XID_Continue # Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW 1B00..1B03 ; XID_Continue # Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG 1B04 ; XID_Continue # Mc BALINESE SIGN BISAH 1B05..1B33 ; XID_Continue # Lo [47] BALINESE LETTER AKARA..BALINESE LETTER HA 1B34 ; XID_Continue # Mn BALINESE SIGN REREKAN 1B35 ; XID_Continue # Mc BALINESE VOWEL SIGN TEDUNG 1B36..1B3A ; XID_Continue # Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA 1B3B ; XID_Continue # Mc BALINESE VOWEL SIGN RA REPA TEDUNG 1B3C ; XID_Continue # Mn BALINESE VOWEL SIGN LA LENGA 1B3D..1B41 ; XID_Continue # Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG 1B42 ; XID_Continue # Mn BALINESE VOWEL SIGN PEPET 1B43..1B44 ; XID_Continue # Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG 1B45..1B4B ; XID_Continue # Lo [7] BALINESE LETTER KAF SASAK..BALINESE LETTER ASYURA SASAK 1B50..1B59 ; XID_Continue # Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE 1B6B..1B73 ; XID_Continue # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG 1B80..1B81 ; XID_Continue # Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR 1B82 ; XID_Continue # Mc SUNDANESE SIGN PANGWISAD 1B83..1BA0 ; XID_Continue # Lo [30] SUNDANESE LETTER A..SUNDANESE LETTER HA 1BA1 ; XID_Continue # Mc SUNDANESE CONSONANT SIGN PAMINGKAL 1BA2..1BA5 ; XID_Continue # Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU 1BA6..1BA7 ; XID_Continue # Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG 1BA8..1BA9 ; XID_Continue # Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG 1BAA ; XID_Continue # Mc SUNDANESE SIGN PAMAAEH 1BAB..1BAD ; XID_Continue # Mn [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA 1BAE..1BAF ; XID_Continue # Lo [2] SUNDANESE LETTER KHA..SUNDANESE LETTER SYA 1BB0..1BB9 ; XID_Continue # Nd [10] SUNDANESE DIGIT ZERO..SUNDANESE DIGIT NINE 1BBA..1BE5 ; XID_Continue # Lo [44] SUNDANESE AVAGRAHA..BATAK LETTER U 1BE6 ; XID_Continue # Mn BATAK SIGN TOMPI 1BE7 ; XID_Continue # Mc BATAK VOWEL SIGN E 1BE8..1BE9 ; XID_Continue # Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE 1BEA..1BEC ; XID_Continue # Mc [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O 1BED ; XID_Continue # Mn BATAK VOWEL SIGN KARO O 1BEE ; XID_Continue # Mc BATAK VOWEL SIGN U 1BEF..1BF1 ; XID_Continue # Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H 1BF2..1BF3 ; XID_Continue # Mc [2] BATAK PANGOLAT..BATAK PANONGONAN 1C00..1C23 ; XID_Continue # Lo [36] LEPCHA LETTER KA..LEPCHA LETTER A 1C24..1C2B ; XID_Continue # Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU 1C2C..1C33 ; XID_Continue # Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T 1C34..1C35 ; XID_Continue # Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG 1C36..1C37 ; XID_Continue # Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA 1C40..1C49 ; XID_Continue # Nd [10] LEPCHA DIGIT ZERO..LEPCHA DIGIT NINE 1C4D..1C4F ; XID_Continue # Lo [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA 1C50..1C59 ; XID_Continue # Nd [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE 1C5A..1C77 ; XID_Continue # Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH 1C78..1C7D ; XID_Continue # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD 1C80..1C88 ; XID_Continue # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK 1CD0..1CD2 ; XID_Continue # Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA 1CD4..1CE0 ; XID_Continue # Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA 1CE1 ; XID_Continue # Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA 1CE2..1CE8 ; XID_Continue # Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL 1CE9..1CEC ; XID_Continue # Lo [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL 1CED ; XID_Continue # Mn VEDIC SIGN TIRYAK 1CEE..1CF1 ; XID_Continue # Lo [4] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ANUSVARA UBHAYATO MUKHA 1CF2..1CF3 ; XID_Continue # Mc [2] VEDIC SIGN ARDHAVISARGA..VEDIC SIGN ROTATED ARDHAVISARGA 1CF4 ; XID_Continue # Mn VEDIC TONE CANDRA ABOVE 1CF5..1CF6 ; XID_Continue # Lo [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA 1CF8..1CF9 ; XID_Continue # Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE 1D00..1D2B ; XID_Continue # L& [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL 1D2C..1D6A ; XID_Continue # Lm [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI 1D6B..1D77 ; XID_Continue # L& [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G 1D78 ; XID_Continue # Lm MODIFIER LETTER CYRILLIC EN 1D79..1D9A ; XID_Continue # L& [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK 1D9B..1DBF ; XID_Continue # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA 1DC0..1DF5 ; XID_Continue # Mn [54] COMBINING DOTTED GRAVE ACCENT..COMBINING UP TACK ABOVE 1DFB..1DFF ; XID_Continue # Mn [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW 1E00..1F15 ; XID_Continue # L& [278] LATIN CAPITAL LETTER A WITH RING BELOW..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA 1F18..1F1D ; XID_Continue # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA 1F20..1F45 ; XID_Continue # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA 1F48..1F4D ; XID_Continue # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA 1F50..1F57 ; XID_Continue # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI 1F59 ; XID_Continue # L& GREEK CAPITAL LETTER UPSILON WITH DASIA 1F5B ; XID_Continue # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA 1F5D ; XID_Continue # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA 1F5F..1F7D ; XID_Continue # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA 1F80..1FB4 ; XID_Continue # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI 1FB6..1FBC ; XID_Continue # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI 1FBE ; XID_Continue # L& GREEK PROSGEGRAMMENI 1FC2..1FC4 ; XID_Continue # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI 1FC6..1FCC ; XID_Continue # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI 1FD0..1FD3 ; XID_Continue # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA 1FD6..1FDB ; XID_Continue # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA 1FE0..1FEC ; XID_Continue # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA 1FF2..1FF4 ; XID_Continue # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI 1FF6..1FFC ; XID_Continue # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI 203F..2040 ; XID_Continue # Pc [2] UNDERTIE..CHARACTER TIE 2054 ; XID_Continue # Pc INVERTED UNDERTIE 2071 ; XID_Continue # Lm SUPERSCRIPT LATIN SMALL LETTER I 207F ; XID_Continue # Lm SUPERSCRIPT LATIN SMALL LETTER N 2090..209C ; XID_Continue # Lm [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T 20D0..20DC ; XID_Continue # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE 20E1 ; XID_Continue # Mn COMBINING LEFT RIGHT ARROW ABOVE 20E5..20F0 ; XID_Continue # Mn [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE 2102 ; XID_Continue # L& DOUBLE-STRUCK CAPITAL C 2107 ; XID_Continue # L& EULER CONSTANT 210A..2113 ; XID_Continue # L& [10] SCRIPT SMALL G..SCRIPT SMALL L 2115 ; XID_Continue # L& DOUBLE-STRUCK CAPITAL N 2118 ; XID_Continue # Sm SCRIPT CAPITAL P 2119..211D ; XID_Continue # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R 2124 ; XID_Continue # L& DOUBLE-STRUCK CAPITAL Z 2126 ; XID_Continue # L& OHM SIGN 2128 ; XID_Continue # L& BLACK-LETTER CAPITAL Z 212A..212D ; XID_Continue # L& [4] KELVIN SIGN..BLACK-LETTER CAPITAL C 212E ; XID_Continue # So ESTIMATED SYMBOL 212F..2134 ; XID_Continue # L& [6] SCRIPT SMALL E..SCRIPT SMALL O 2135..2138 ; XID_Continue # Lo [4] ALEF SYMBOL..DALET SYMBOL 2139 ; XID_Continue # L& INFORMATION SOURCE 213C..213F ; XID_Continue # L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI 2145..2149 ; XID_Continue # L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J 214E ; XID_Continue # L& TURNED SMALL F 2160..2182 ; XID_Continue # Nl [35] ROMAN NUMERAL ONE..ROMAN NUMERAL TEN THOUSAND 2183..2184 ; XID_Continue # L& [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C 2185..2188 ; XID_Continue # Nl [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND 2C00..2C2E ; XID_Continue # L& [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE 2C30..2C5E ; XID_Continue # L& [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE 2C60..2C7B ; XID_Continue # L& [28] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN LETTER SMALL CAPITAL TURNED E 2C7C..2C7D ; XID_Continue # Lm [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V 2C7E..2CE4 ; XID_Continue # L& [103] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC SYMBOL KAI 2CEB..2CEE ; XID_Continue # L& [4] COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI..COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA 2CEF..2CF1 ; XID_Continue # Mn [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS 2CF2..2CF3 ; XID_Continue # L& [2] COPTIC CAPITAL LETTER BOHAIRIC KHEI..COPTIC SMALL LETTER BOHAIRIC KHEI 2D00..2D25 ; XID_Continue # L& [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE 2D27 ; XID_Continue # L& GEORGIAN SMALL LETTER YN 2D2D ; XID_Continue # L& GEORGIAN SMALL LETTER AEN 2D30..2D67 ; XID_Continue # Lo [56] TIFINAGH LETTER YA..TIFINAGH LETTER YO 2D6F ; XID_Continue # Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK 2D7F ; XID_Continue # Mn TIFINAGH CONSONANT JOINER 2D80..2D96 ; XID_Continue # Lo [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE 2DA0..2DA6 ; XID_Continue # Lo [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO 2DA8..2DAE ; XID_Continue # Lo [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO 2DB0..2DB6 ; XID_Continue # Lo [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO 2DB8..2DBE ; XID_Continue # Lo [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO 2DC0..2DC6 ; XID_Continue # Lo [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO 2DC8..2DCE ; XID_Continue # Lo [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO 2DD0..2DD6 ; XID_Continue # Lo [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO 2DD8..2DDE ; XID_Continue # Lo [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO 2DE0..2DFF ; XID_Continue # Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS 3005 ; XID_Continue # Lm IDEOGRAPHIC ITERATION MARK 3006 ; XID_Continue # Lo IDEOGRAPHIC CLOSING MARK 3007 ; XID_Continue # Nl IDEOGRAPHIC NUMBER ZERO 3021..3029 ; XID_Continue # Nl [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE 302A..302D ; XID_Continue # Mn [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK 302E..302F ; XID_Continue # Mc [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK 3031..3035 ; XID_Continue # Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF 3038..303A ; XID_Continue # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY 303B ; XID_Continue # Lm VERTICAL IDEOGRAPHIC ITERATION MARK 303C ; XID_Continue # Lo MASU MARK 3041..3096 ; XID_Continue # Lo [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE 3099..309A ; XID_Continue # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK 309D..309E ; XID_Continue # Lm [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK 309F ; XID_Continue # Lo HIRAGANA DIGRAPH YORI 30A1..30FA ; XID_Continue # Lo [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO 30FC..30FE ; XID_Continue # Lm [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK 30FF ; XID_Continue # Lo KATAKANA DIGRAPH KOTO 3105..312D ; XID_Continue # Lo [41] BOPOMOFO LETTER B..BOPOMOFO LETTER IH 3131..318E ; XID_Continue # Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE 31A0..31BA ; XID_Continue # Lo [27] BOPOMOFO LETTER BU..BOPOMOFO LETTER ZY 31F0..31FF ; XID_Continue # Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO 3400..4DB5 ; XID_Continue # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 4E00..9FD5 ; XID_Continue # Lo [20950] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FD5 A000..A014 ; XID_Continue # Lo [21] YI SYLLABLE IT..YI SYLLABLE E A015 ; XID_Continue # Lm YI SYLLABLE WU A016..A48C ; XID_Continue # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR A4D0..A4F7 ; XID_Continue # Lo [40] LISU LETTER BA..LISU LETTER OE A4F8..A4FD ; XID_Continue # Lm [6] LISU LETTER TONE MYA TI..LISU LETTER TONE MYA JEU A500..A60B ; XID_Continue # Lo [268] VAI SYLLABLE EE..VAI SYLLABLE NG A60C ; XID_Continue # Lm VAI SYLLABLE LENGTHENER A610..A61F ; XID_Continue # Lo [16] VAI SYLLABLE NDOLE FA..VAI SYMBOL JONG A620..A629 ; XID_Continue # Nd [10] VAI DIGIT ZERO..VAI DIGIT NINE A62A..A62B ; XID_Continue # Lo [2] VAI SYLLABLE NDOLE MA..VAI SYLLABLE NDOLE DO A640..A66D ; XID_Continue # L& [46] CYRILLIC CAPITAL LETTER ZEMLYA..CYRILLIC SMALL LETTER DOUBLE MONOCULAR O A66E ; XID_Continue # Lo CYRILLIC LETTER MULTIOCULAR O A66F ; XID_Continue # Mn COMBINING CYRILLIC VZMET A674..A67D ; XID_Continue # Mn [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK A67F ; XID_Continue # Lm CYRILLIC PAYEROK A680..A69B ; XID_Continue # L& [28] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER CROSSED O A69C..A69D ; XID_Continue # Lm [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN A69E..A69F ; XID_Continue # Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E A6A0..A6E5 ; XID_Continue # Lo [70] BAMUM LETTER A..BAMUM LETTER KI A6E6..A6EF ; XID_Continue # Nl [10] BAMUM LETTER MO..BAMUM LETTER KOGHOM A6F0..A6F1 ; XID_Continue # Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS A717..A71F ; XID_Continue # Lm [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK A722..A76F ; XID_Continue # L& [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN SMALL LETTER CON A770 ; XID_Continue # Lm MODIFIER LETTER US A771..A787 ; XID_Continue # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T A788 ; XID_Continue # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT A78B..A78E ; XID_Continue # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT A78F ; XID_Continue # Lo LATIN LETTER SINOLOGICAL DOT A790..A7AE ; XID_Continue # L& [31] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER SMALL CAPITAL I A7B0..A7B7 ; XID_Continue # L& [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA A7F7 ; XID_Continue # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I A7F8..A7F9 ; XID_Continue # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE A7FA ; XID_Continue # L& LATIN LETTER SMALL CAPITAL TURNED M A7FB..A801 ; XID_Continue # Lo [7] LATIN EPIGRAPHIC LETTER REVERSED F..SYLOTI NAGRI LETTER I A802 ; XID_Continue # Mn SYLOTI NAGRI SIGN DVISVARA A803..A805 ; XID_Continue # Lo [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O A806 ; XID_Continue # Mn SYLOTI NAGRI SIGN HASANTA A807..A80A ; XID_Continue # Lo [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO A80B ; XID_Continue # Mn SYLOTI NAGRI SIGN ANUSVARA A80C..A822 ; XID_Continue # Lo [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO A823..A824 ; XID_Continue # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I A825..A826 ; XID_Continue # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E A827 ; XID_Continue # Mc SYLOTI NAGRI VOWEL SIGN OO A840..A873 ; XID_Continue # Lo [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU A880..A881 ; XID_Continue # Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA A882..A8B3 ; XID_Continue # Lo [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA A8B4..A8C3 ; XID_Continue # Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU A8C4..A8C5 ; XID_Continue # Mn [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU A8D0..A8D9 ; XID_Continue # Nd [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE A8E0..A8F1 ; XID_Continue # Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA A8F2..A8F7 ; XID_Continue # Lo [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA A8FB ; XID_Continue # Lo DEVANAGARI HEADSTROKE A8FD ; XID_Continue # Lo DEVANAGARI JAIN OM A900..A909 ; XID_Continue # Nd [10] KAYAH LI DIGIT ZERO..KAYAH LI DIGIT NINE A90A..A925 ; XID_Continue # Lo [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO A926..A92D ; XID_Continue # Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU A930..A946 ; XID_Continue # Lo [23] REJANG LETTER KA..REJANG LETTER A A947..A951 ; XID_Continue # Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R A952..A953 ; XID_Continue # Mc [2] REJANG CONSONANT SIGN H..REJANG VIRAMA A960..A97C ; XID_Continue # Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH A980..A982 ; XID_Continue # Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR A983 ; XID_Continue # Mc JAVANESE SIGN WIGNYAN A984..A9B2 ; XID_Continue # Lo [47] JAVANESE LETTER A..JAVANESE LETTER HA A9B3 ; XID_Continue # Mn JAVANESE SIGN CECAK TELU A9B4..A9B5 ; XID_Continue # Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG A9B6..A9B9 ; XID_Continue # Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT A9BA..A9BB ; XID_Continue # Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE A9BC ; XID_Continue # Mn JAVANESE VOWEL SIGN PEPET A9BD..A9C0 ; XID_Continue # Mc [4] JAVANESE CONSONANT SIGN KERET..JAVANESE PANGKON A9CF ; XID_Continue # Lm JAVANESE PANGRANGKEP A9D0..A9D9 ; XID_Continue # Nd [10] JAVANESE DIGIT ZERO..JAVANESE DIGIT NINE A9E0..A9E4 ; XID_Continue # Lo [5] MYANMAR LETTER SHAN GHA..MYANMAR LETTER SHAN BHA A9E5 ; XID_Continue # Mn MYANMAR SIGN SHAN SAW A9E6 ; XID_Continue # Lm MYANMAR MODIFIER LETTER SHAN REDUPLICATION A9E7..A9EF ; XID_Continue # Lo [9] MYANMAR LETTER TAI LAING NYA..MYANMAR LETTER TAI LAING NNA A9F0..A9F9 ; XID_Continue # Nd [10] MYANMAR TAI LAING DIGIT ZERO..MYANMAR TAI LAING DIGIT NINE A9FA..A9FE ; XID_Continue # Lo [5] MYANMAR LETTER TAI LAING LLA..MYANMAR LETTER TAI LAING BHA AA00..AA28 ; XID_Continue # Lo [41] CHAM LETTER A..CHAM LETTER HA AA29..AA2E ; XID_Continue # Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE AA2F..AA30 ; XID_Continue # Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI AA31..AA32 ; XID_Continue # Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE AA33..AA34 ; XID_Continue # Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA AA35..AA36 ; XID_Continue # Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA AA40..AA42 ; XID_Continue # Lo [3] CHAM LETTER FINAL K..CHAM LETTER FINAL NG AA43 ; XID_Continue # Mn CHAM CONSONANT SIGN FINAL NG AA44..AA4B ; XID_Continue # Lo [8] CHAM LETTER FINAL CH..CHAM LETTER FINAL SS AA4C ; XID_Continue # Mn CHAM CONSONANT SIGN FINAL M AA4D ; XID_Continue # Mc CHAM CONSONANT SIGN FINAL H AA50..AA59 ; XID_Continue # Nd [10] CHAM DIGIT ZERO..CHAM DIGIT NINE AA60..AA6F ; XID_Continue # Lo [16] MYANMAR LETTER KHAMTI GA..MYANMAR LETTER KHAMTI FA AA70 ; XID_Continue # Lm MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION AA71..AA76 ; XID_Continue # Lo [6] MYANMAR LETTER KHAMTI XA..MYANMAR LOGOGRAM KHAMTI HM AA7A ; XID_Continue # Lo MYANMAR LETTER AITON RA AA7B ; XID_Continue # Mc MYANMAR SIGN PAO KAREN TONE AA7C ; XID_Continue # Mn MYANMAR SIGN TAI LAING TONE-2 AA7D ; XID_Continue # Mc MYANMAR SIGN TAI LAING TONE-5 AA7E..AAAF ; XID_Continue # Lo [50] MYANMAR LETTER SHWE PALAUNG CHA..TAI VIET LETTER HIGH O AAB0 ; XID_Continue # Mn TAI VIET MAI KANG AAB1 ; XID_Continue # Lo TAI VIET VOWEL AA AAB2..AAB4 ; XID_Continue # Mn [3] TAI VIET VOWEL I..TAI VIET VOWEL U AAB5..AAB6 ; XID_Continue # Lo [2] TAI VIET VOWEL E..TAI VIET VOWEL O AAB7..AAB8 ; XID_Continue # Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA AAB9..AABD ; XID_Continue # Lo [5] TAI VIET VOWEL UEA..TAI VIET VOWEL AN AABE..AABF ; XID_Continue # Mn [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK AAC0 ; XID_Continue # Lo TAI VIET TONE MAI NUENG AAC1 ; XID_Continue # Mn TAI VIET TONE MAI THO AAC2 ; XID_Continue # Lo TAI VIET TONE MAI SONG AADB..AADC ; XID_Continue # Lo [2] TAI VIET SYMBOL KON..TAI VIET SYMBOL NUENG AADD ; XID_Continue # Lm TAI VIET SYMBOL SAM AAE0..AAEA ; XID_Continue # Lo [11] MEETEI MAYEK LETTER E..MEETEI MAYEK LETTER SSA AAEB ; XID_Continue # Mc MEETEI MAYEK VOWEL SIGN II AAEC..AAED ; XID_Continue # Mn [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI AAEE..AAEF ; XID_Continue # Mc [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU AAF2 ; XID_Continue # Lo MEETEI MAYEK ANJI AAF3..AAF4 ; XID_Continue # Lm [2] MEETEI MAYEK SYLLABLE REPETITION MARK..MEETEI MAYEK WORD REPETITION MARK AAF5 ; XID_Continue # Mc MEETEI MAYEK VOWEL SIGN VISARGA AAF6 ; XID_Continue # Mn MEETEI MAYEK VIRAMA AB01..AB06 ; XID_Continue # Lo [6] ETHIOPIC SYLLABLE TTHU..ETHIOPIC SYLLABLE TTHO AB09..AB0E ; XID_Continue # Lo [6] ETHIOPIC SYLLABLE DDHU..ETHIOPIC SYLLABLE DDHO AB11..AB16 ; XID_Continue # Lo [6] ETHIOPIC SYLLABLE DZU..ETHIOPIC SYLLABLE DZO AB20..AB26 ; XID_Continue # Lo [7] ETHIOPIC SYLLABLE CCHHA..ETHIOPIC SYLLABLE CCHHO AB28..AB2E ; XID_Continue # Lo [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO AB30..AB5A ; XID_Continue # L& [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG AB5C..AB5F ; XID_Continue # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK AB60..AB65 ; XID_Continue # L& [6] LATIN SMALL LETTER SAKHA YAT..GREEK LETTER SMALL CAPITAL OMEGA AB70..ABBF ; XID_Continue # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA ABC0..ABE2 ; XID_Continue # Lo [35] MEETEI MAYEK LETTER KOK..MEETEI MAYEK LETTER I LONSUM ABE3..ABE4 ; XID_Continue # Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP ABE5 ; XID_Continue # Mn MEETEI MAYEK VOWEL SIGN ANAP ABE6..ABE7 ; XID_Continue # Mc [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP ABE8 ; XID_Continue # Mn MEETEI MAYEK VOWEL SIGN UNAP ABE9..ABEA ; XID_Continue # Mc [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG ABEC ; XID_Continue # Mc MEETEI MAYEK LUM IYEK ABED ; XID_Continue # Mn MEETEI MAYEK APUN IYEK ABF0..ABF9 ; XID_Continue # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE AC00..D7A3 ; XID_Continue # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH D7B0..D7C6 ; XID_Continue # Lo [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E D7CB..D7FB ; XID_Continue # Lo [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH F900..FA6D ; XID_Continue # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D FA70..FAD9 ; XID_Continue # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 FB00..FB06 ; XID_Continue # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST FB13..FB17 ; XID_Continue # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH FB1D ; XID_Continue # Lo HEBREW LETTER YOD WITH HIRIQ FB1E ; XID_Continue # Mn HEBREW POINT JUDEO-SPANISH VARIKA FB1F..FB28 ; XID_Continue # Lo [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV FB2A..FB36 ; XID_Continue # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH FB38..FB3C ; XID_Continue # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH FB3E ; XID_Continue # Lo HEBREW LETTER MEM WITH DAGESH FB40..FB41 ; XID_Continue # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH FB43..FB44 ; XID_Continue # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH FB46..FBB1 ; XID_Continue # Lo [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM FBD3..FC5D ; XID_Continue # Lo [139] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM FC64..FD3D ; XID_Continue # Lo [218] ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM FD50..FD8F ; XID_Continue # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM FD92..FDC7 ; XID_Continue # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM FDF0..FDF9 ; XID_Continue # Lo [10] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE SALLA ISOLATED FORM FE00..FE0F ; XID_Continue # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 FE20..FE2F ; XID_Continue # Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF FE33..FE34 ; XID_Continue # Pc [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE FE4D..FE4F ; XID_Continue # Pc [3] DASHED LOW LINE..WAVY LOW LINE FE71 ; XID_Continue # Lo ARABIC TATWEEL WITH FATHATAN ABOVE FE73 ; XID_Continue # Lo ARABIC TAIL FRAGMENT FE77 ; XID_Continue # Lo ARABIC FATHA MEDIAL FORM FE79 ; XID_Continue # Lo ARABIC DAMMA MEDIAL FORM FE7B ; XID_Continue # Lo ARABIC KASRA MEDIAL FORM FE7D ; XID_Continue # Lo ARABIC SHADDA MEDIAL FORM FE7F..FEFC ; XID_Continue # Lo [126] ARABIC SUKUN MEDIAL FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM FF10..FF19 ; XID_Continue # Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE FF21..FF3A ; XID_Continue # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z FF3F ; XID_Continue # Pc FULLWIDTH LOW LINE FF41..FF5A ; XID_Continue # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z FF66..FF6F ; XID_Continue # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU FF70 ; XID_Continue # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK FF71..FF9D ; XID_Continue # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N FF9E..FF9F ; XID_Continue # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK FFA0..FFBE ; XID_Continue # Lo [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH FFC2..FFC7 ; XID_Continue # Lo [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E FFCA..FFCF ; XID_Continue # Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE FFD2..FFD7 ; XID_Continue # Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU FFDA..FFDC ; XID_Continue # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I 10000..1000B ; XID_Continue # Lo [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE 1000D..10026 ; XID_Continue # Lo [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO 10028..1003A ; XID_Continue # Lo [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO 1003C..1003D ; XID_Continue # Lo [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE 1003F..1004D ; XID_Continue # Lo [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO 10050..1005D ; XID_Continue # Lo [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089 10080..100FA ; XID_Continue # Lo [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305 10140..10174 ; XID_Continue # Nl [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS 101FD ; XID_Continue # Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE 10280..1029C ; XID_Continue # Lo [29] LYCIAN LETTER A..LYCIAN LETTER X 102A0..102D0 ; XID_Continue # Lo [49] CARIAN LETTER A..CARIAN LETTER UUU3 102E0 ; XID_Continue # Mn COPTIC EPACT THOUSANDS MARK 10300..1031F ; XID_Continue # Lo [32] OLD ITALIC LETTER A..OLD ITALIC LETTER ESS 10330..10340 ; XID_Continue # Lo [17] GOTHIC LETTER AHSA..GOTHIC LETTER PAIRTHRA 10341 ; XID_Continue # Nl GOTHIC LETTER NINETY 10342..10349 ; XID_Continue # Lo [8] GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL 1034A ; XID_Continue # Nl GOTHIC LETTER NINE HUNDRED 10350..10375 ; XID_Continue # Lo [38] OLD PERMIC LETTER AN..OLD PERMIC LETTER IA 10376..1037A ; XID_Continue # Mn [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII 10380..1039D ; XID_Continue # Lo [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU 103A0..103C3 ; XID_Continue # Lo [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA 103C8..103CF ; XID_Continue # Lo [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH 103D1..103D5 ; XID_Continue # Nl [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED 10400..1044F ; XID_Continue # L& [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW 10450..1049D ; XID_Continue # Lo [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO 104A0..104A9 ; XID_Continue # Nd [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE 104B0..104D3 ; XID_Continue # L& [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA 104D8..104FB ; XID_Continue # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA 10500..10527 ; XID_Continue # Lo [40] ELBASAN LETTER A..ELBASAN LETTER KHE 10530..10563 ; XID_Continue # Lo [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW 10600..10736 ; XID_Continue # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664 10740..10755 ; XID_Continue # Lo [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE 10760..10767 ; XID_Continue # Lo [8] LINEAR A SIGN A800..LINEAR A SIGN A807 10800..10805 ; XID_Continue # Lo [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA 10808 ; XID_Continue # Lo CYPRIOT SYLLABLE JO 1080A..10835 ; XID_Continue # Lo [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO 10837..10838 ; XID_Continue # Lo [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE 1083C ; XID_Continue # Lo CYPRIOT SYLLABLE ZA 1083F..10855 ; XID_Continue # Lo [23] CYPRIOT SYLLABLE ZO..IMPERIAL ARAMAIC LETTER TAW 10860..10876 ; XID_Continue # Lo [23] PALMYRENE LETTER ALEPH..PALMYRENE LETTER TAW 10880..1089E ; XID_Continue # Lo [31] NABATAEAN LETTER FINAL ALEPH..NABATAEAN LETTER TAW 108E0..108F2 ; XID_Continue # Lo [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH 108F4..108F5 ; XID_Continue # Lo [2] HATRAN LETTER SHIN..HATRAN LETTER TAW 10900..10915 ; XID_Continue # Lo [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU 10920..10939 ; XID_Continue # Lo [26] LYDIAN LETTER A..LYDIAN LETTER C 10980..109B7 ; XID_Continue # Lo [56] MEROITIC HIEROGLYPHIC LETTER A..MEROITIC CURSIVE LETTER DA 109BE..109BF ; XID_Continue # Lo [2] MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN 10A00 ; XID_Continue # Lo KHAROSHTHI LETTER A 10A01..10A03 ; XID_Continue # Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R 10A05..10A06 ; XID_Continue # Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O 10A0C..10A0F ; XID_Continue # Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA 10A10..10A13 ; XID_Continue # Lo [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA 10A15..10A17 ; XID_Continue # Lo [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA 10A19..10A33 ; XID_Continue # Lo [27] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER TTTHA 10A38..10A3A ; XID_Continue # Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW 10A3F ; XID_Continue # Mn KHAROSHTHI VIRAMA 10A60..10A7C ; XID_Continue # Lo [29] OLD SOUTH ARABIAN LETTER HE..OLD SOUTH ARABIAN LETTER THETH 10A80..10A9C ; XID_Continue # Lo [29] OLD NORTH ARABIAN LETTER HEH..OLD NORTH ARABIAN LETTER ZAH 10AC0..10AC7 ; XID_Continue # Lo [8] MANICHAEAN LETTER ALEPH..MANICHAEAN LETTER WAW 10AC9..10AE4 ; XID_Continue # Lo [28] MANICHAEAN LETTER ZAYIN..MANICHAEAN LETTER TAW 10AE5..10AE6 ; XID_Continue # Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW 10B00..10B35 ; XID_Continue # Lo [54] AVESTAN LETTER A..AVESTAN LETTER HE 10B40..10B55 ; XID_Continue # Lo [22] INSCRIPTIONAL PARTHIAN LETTER ALEPH..INSCRIPTIONAL PARTHIAN LETTER TAW 10B60..10B72 ; XID_Continue # Lo [19] INSCRIPTIONAL PAHLAVI LETTER ALEPH..INSCRIPTIONAL PAHLAVI LETTER TAW 10B80..10B91 ; XID_Continue # Lo [18] PSALTER PAHLAVI LETTER ALEPH..PSALTER PAHLAVI LETTER TAW 10C00..10C48 ; XID_Continue # Lo [73] OLD TURKIC LETTER ORKHON A..OLD TURKIC LETTER ORKHON BASH 10C80..10CB2 ; XID_Continue # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US 10CC0..10CF2 ; XID_Continue # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US 11000 ; XID_Continue # Mc BRAHMI SIGN CANDRABINDU 11001 ; XID_Continue # Mn BRAHMI SIGN ANUSVARA 11002 ; XID_Continue # Mc BRAHMI SIGN VISARGA 11003..11037 ; XID_Continue # Lo [53] BRAHMI SIGN JIHVAMULIYA..BRAHMI LETTER OLD TAMIL NNNA 11038..11046 ; XID_Continue # Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA 11066..1106F ; XID_Continue # Nd [10] BRAHMI DIGIT ZERO..BRAHMI DIGIT NINE 1107F..11081 ; XID_Continue # Mn [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA 11082 ; XID_Continue # Mc KAITHI SIGN VISARGA 11083..110AF ; XID_Continue # Lo [45] KAITHI LETTER A..KAITHI LETTER HA 110B0..110B2 ; XID_Continue # Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II 110B3..110B6 ; XID_Continue # Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI 110B7..110B8 ; XID_Continue # Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU 110B9..110BA ; XID_Continue # Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA 110D0..110E8 ; XID_Continue # Lo [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE 110F0..110F9 ; XID_Continue # Nd [10] SORA SOMPENG DIGIT ZERO..SORA SOMPENG DIGIT NINE 11100..11102 ; XID_Continue # Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA 11103..11126 ; XID_Continue # Lo [36] CHAKMA LETTER AA..CHAKMA LETTER HAA 11127..1112B ; XID_Continue # Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU 1112C ; XID_Continue # Mc CHAKMA VOWEL SIGN E 1112D..11134 ; XID_Continue # Mn [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA 11136..1113F ; XID_Continue # Nd [10] CHAKMA DIGIT ZERO..CHAKMA DIGIT NINE 11150..11172 ; XID_Continue # Lo [35] MAHAJANI LETTER A..MAHAJANI LETTER RRA 11173 ; XID_Continue # Mn MAHAJANI SIGN NUKTA 11176 ; XID_Continue # Lo MAHAJANI LIGATURE SHRI 11180..11181 ; XID_Continue # Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA 11182 ; XID_Continue # Mc SHARADA SIGN VISARGA 11183..111B2 ; XID_Continue # Lo [48] SHARADA LETTER A..SHARADA LETTER HA 111B3..111B5 ; XID_Continue # Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II 111B6..111BE ; XID_Continue # Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O 111BF..111C0 ; XID_Continue # Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA 111C1..111C4 ; XID_Continue # Lo [4] SHARADA SIGN AVAGRAHA..SHARADA OM 111CA..111CC ; XID_Continue # Mn [3] SHARADA SIGN NUKTA..SHARADA EXTRA SHORT VOWEL MARK 111D0..111D9 ; XID_Continue # Nd [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE 111DA ; XID_Continue # Lo SHARADA EKAM 111DC ; XID_Continue # Lo SHARADA HEADSTROKE 11200..11211 ; XID_Continue # Lo [18] KHOJKI LETTER A..KHOJKI LETTER JJA 11213..1122B ; XID_Continue # Lo [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA 1122C..1122E ; XID_Continue # Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II 1122F..11231 ; XID_Continue # Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI 11232..11233 ; XID_Continue # Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU 11234 ; XID_Continue # Mn KHOJKI SIGN ANUSVARA 11235 ; XID_Continue # Mc KHOJKI SIGN VIRAMA 11236..11237 ; XID_Continue # Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA 1123E ; XID_Continue # Mn KHOJKI SIGN SUKUN 11280..11286 ; XID_Continue # Lo [7] MULTANI LETTER A..MULTANI LETTER GA 11288 ; XID_Continue # Lo MULTANI LETTER GHA 1128A..1128D ; XID_Continue # Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA 1128F..1129D ; XID_Continue # Lo [15] MULTANI LETTER NYA..MULTANI LETTER BA 1129F..112A8 ; XID_Continue # Lo [10] MULTANI LETTER BHA..MULTANI LETTER RHA 112B0..112DE ; XID_Continue # Lo [47] KHUDAWADI LETTER A..KHUDAWADI LETTER HA 112DF ; XID_Continue # Mn KHUDAWADI SIGN ANUSVARA 112E0..112E2 ; XID_Continue # Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II 112E3..112EA ; XID_Continue # Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA 112F0..112F9 ; XID_Continue # Nd [10] KHUDAWADI DIGIT ZERO..KHUDAWADI DIGIT NINE 11300..11301 ; XID_Continue # Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU 11302..11303 ; XID_Continue # Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA 11305..1130C ; XID_Continue # Lo [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L 1130F..11310 ; XID_Continue # Lo [2] GRANTHA LETTER EE..GRANTHA LETTER AI 11313..11328 ; XID_Continue # Lo [22] GRANTHA LETTER OO..GRANTHA LETTER NA 1132A..11330 ; XID_Continue # Lo [7] GRANTHA LETTER PA..GRANTHA LETTER RA 11332..11333 ; XID_Continue # Lo [2] GRANTHA LETTER LA..GRANTHA LETTER LLA 11335..11339 ; XID_Continue # Lo [5] GRANTHA LETTER VA..GRANTHA LETTER HA 1133C ; XID_Continue # Mn GRANTHA SIGN NUKTA 1133D ; XID_Continue # Lo GRANTHA SIGN AVAGRAHA 1133E..1133F ; XID_Continue # Mc [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I 11340 ; XID_Continue # Mn GRANTHA VOWEL SIGN II 11341..11344 ; XID_Continue # Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR 11347..11348 ; XID_Continue # Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI 1134B..1134D ; XID_Continue # Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA 11350 ; XID_Continue # Lo GRANTHA OM 11357 ; XID_Continue # Mc GRANTHA AU LENGTH MARK 1135D..11361 ; XID_Continue # Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL 11362..11363 ; XID_Continue # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL 11366..1136C ; XID_Continue # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX 11370..11374 ; XID_Continue # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA 11400..11434 ; XID_Continue # Lo [53] NEWA LETTER A..NEWA LETTER HA 11435..11437 ; XID_Continue # Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II 11438..1143F ; XID_Continue # Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI 11440..11441 ; XID_Continue # Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU 11442..11444 ; XID_Continue # Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA 11445 ; XID_Continue # Mc NEWA SIGN VISARGA 11446 ; XID_Continue # Mn NEWA SIGN NUKTA 11447..1144A ; XID_Continue # Lo [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI 11450..11459 ; XID_Continue # Nd [10] NEWA DIGIT ZERO..NEWA DIGIT NINE 11480..114AF ; XID_Continue # Lo [48] TIRHUTA ANJI..TIRHUTA LETTER HA 114B0..114B2 ; XID_Continue # Mc [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II 114B3..114B8 ; XID_Continue # Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL 114B9 ; XID_Continue # Mc TIRHUTA VOWEL SIGN E 114BA ; XID_Continue # Mn TIRHUTA VOWEL SIGN SHORT E 114BB..114BE ; XID_Continue # Mc [4] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN AU 114BF..114C0 ; XID_Continue # Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA 114C1 ; XID_Continue # Mc TIRHUTA SIGN VISARGA 114C2..114C3 ; XID_Continue # Mn [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA 114C4..114C5 ; XID_Continue # Lo [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG 114C7 ; XID_Continue # Lo TIRHUTA OM 114D0..114D9 ; XID_Continue # Nd [10] TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE 11580..115AE ; XID_Continue # Lo [47] SIDDHAM LETTER A..SIDDHAM LETTER HA 115AF..115B1 ; XID_Continue # Mc [3] SIDDHAM VOWEL SIGN AA..SIDDHAM VOWEL SIGN II 115B2..115B5 ; XID_Continue # Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR 115B8..115BB ; XID_Continue # Mc [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU 115BC..115BD ; XID_Continue # Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA 115BE ; XID_Continue # Mc SIDDHAM SIGN VISARGA 115BF..115C0 ; XID_Continue # Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA 115D8..115DB ; XID_Continue # Lo [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U 115DC..115DD ; XID_Continue # Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU 11600..1162F ; XID_Continue # Lo [48] MODI LETTER A..MODI LETTER LLA 11630..11632 ; XID_Continue # Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II 11633..1163A ; XID_Continue # Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI 1163B..1163C ; XID_Continue # Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU 1163D ; XID_Continue # Mn MODI SIGN ANUSVARA 1163E ; XID_Continue # Mc MODI SIGN VISARGA 1163F..11640 ; XID_Continue # Mn [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA 11644 ; XID_Continue # Lo MODI SIGN HUVA 11650..11659 ; XID_Continue # Nd [10] MODI DIGIT ZERO..MODI DIGIT NINE 11680..116AA ; XID_Continue # Lo [43] TAKRI LETTER A..TAKRI LETTER RRA 116AB ; XID_Continue # Mn TAKRI SIGN ANUSVARA 116AC ; XID_Continue # Mc TAKRI SIGN VISARGA 116AD ; XID_Continue # Mn TAKRI VOWEL SIGN AA 116AE..116AF ; XID_Continue # Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II 116B0..116B5 ; XID_Continue # Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU 116B6 ; XID_Continue # Mc TAKRI SIGN VIRAMA 116B7 ; XID_Continue # Mn TAKRI SIGN NUKTA 116C0..116C9 ; XID_Continue # Nd [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE 11700..11719 ; XID_Continue # Lo [26] AHOM LETTER KA..AHOM LETTER JHA 1171D..1171F ; XID_Continue # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA 11720..11721 ; XID_Continue # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA 11722..11725 ; XID_Continue # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU 11726 ; XID_Continue # Mc AHOM VOWEL SIGN E 11727..1172B ; XID_Continue # Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER 11730..11739 ; XID_Continue # Nd [10] AHOM DIGIT ZERO..AHOM DIGIT NINE 118A0..118DF ; XID_Continue # L& [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO 118E0..118E9 ; XID_Continue # Nd [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE 118FF ; XID_Continue # Lo WARANG CITI OM 11AC0..11AF8 ; XID_Continue # Lo [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL 11C00..11C08 ; XID_Continue # Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L 11C0A..11C2E ; XID_Continue # Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA 11C2F ; XID_Continue # Mc BHAIKSUKI VOWEL SIGN AA 11C30..11C36 ; XID_Continue # Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L 11C38..11C3B ; XID_Continue # Mc [4] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI VOWEL SIGN AU 11C3C..11C3D ; XID_Continue # Mn [2] BHAIKSUKI SIGN CANDRABINDU..BHAIKSUKI SIGN ANUSVARA 11C3E ; XID_Continue # Mc BHAIKSUKI SIGN VISARGA 11C3F ; XID_Continue # Mn BHAIKSUKI SIGN VIRAMA 11C40 ; XID_Continue # Lo BHAIKSUKI SIGN AVAGRAHA 11C50..11C59 ; XID_Continue # Nd [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE 11C72..11C8F ; XID_Continue # Lo [30] MARCHEN LETTER KA..MARCHEN LETTER A 11C92..11CA7 ; XID_Continue # Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA 11CA9..11CB0 ; XID_Continue # Mn [8] MARCHEN SUBJOINED LETTER YA..MARCHEN VOWEL SIGN AA 11CB1 ; XID_Continue # Mc MARCHEN VOWEL SIGN I 11CB2..11CB3 ; XID_Continue # Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E 11CB4 ; XID_Continue # Mc MARCHEN VOWEL SIGN O 11CB5..11CB6 ; XID_Continue # Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU 12000..12399 ; XID_Continue # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U 12400..1246E ; XID_Continue # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM 12480..12543 ; XID_Continue # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU 13000..1342E ; XID_Continue # Lo [1071] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH AA032 14400..14646 ; XID_Continue # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 16800..16A38 ; XID_Continue # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ 16A40..16A5E ; XID_Continue # Lo [31] MRO LETTER TA..MRO LETTER TEK 16A60..16A69 ; XID_Continue # Nd [10] MRO DIGIT ZERO..MRO DIGIT NINE 16AD0..16AED ; XID_Continue # Lo [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I 16AF0..16AF4 ; XID_Continue # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE 16B00..16B2F ; XID_Continue # Lo [48] PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG CONSONANT CAU 16B30..16B36 ; XID_Continue # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM 16B40..16B43 ; XID_Continue # Lm [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM 16B50..16B59 ; XID_Continue # Nd [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE 16B63..16B77 ; XID_Continue # Lo [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS 16B7D..16B8F ; XID_Continue # Lo [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ 16F00..16F44 ; XID_Continue # Lo [69] MIAO LETTER PA..MIAO LETTER HHA 16F50 ; XID_Continue # Lo MIAO LETTER NASALIZATION 16F51..16F7E ; XID_Continue # Mc [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG 16F8F..16F92 ; XID_Continue # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW 16F93..16F9F ; XID_Continue # Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8 16FE0 ; XID_Continue # Lm TANGUT ITERATION MARK 17000..187EC ; XID_Continue # Lo [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC 18800..18AF2 ; XID_Continue # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755 1B000..1B001 ; XID_Continue # Lo [2] KATAKANA LETTER ARCHAIC E..HIRAGANA LETTER ARCHAIC YE 1BC00..1BC6A ; XID_Continue # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M 1BC70..1BC7C ; XID_Continue # Lo [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK 1BC80..1BC88 ; XID_Continue # Lo [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL 1BC90..1BC99 ; XID_Continue # Lo [10] DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW 1BC9D..1BC9E ; XID_Continue # Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK 1D165..1D166 ; XID_Continue # Mc [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM 1D167..1D169 ; XID_Continue # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3 1D16D..1D172 ; XID_Continue # Mc [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5 1D17B..1D182 ; XID_Continue # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE 1D185..1D18B ; XID_Continue # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE 1D1AA..1D1AD ; XID_Continue # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO 1D242..1D244 ; XID_Continue # Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME 1D400..1D454 ; XID_Continue # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G 1D456..1D49C ; XID_Continue # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A 1D49E..1D49F ; XID_Continue # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D 1D4A2 ; XID_Continue # L& MATHEMATICAL SCRIPT CAPITAL G 1D4A5..1D4A6 ; XID_Continue # L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K 1D4A9..1D4AC ; XID_Continue # L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q 1D4AE..1D4B9 ; XID_Continue # L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D 1D4BB ; XID_Continue # L& MATHEMATICAL SCRIPT SMALL F 1D4BD..1D4C3 ; XID_Continue # L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N 1D4C5..1D505 ; XID_Continue # L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B 1D507..1D50A ; XID_Continue # L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G 1D50D..1D514 ; XID_Continue # L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q 1D516..1D51C ; XID_Continue # L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y 1D51E..1D539 ; XID_Continue # L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B 1D53B..1D53E ; XID_Continue # L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G 1D540..1D544 ; XID_Continue # L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M 1D546 ; XID_Continue # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O 1D54A..1D550 ; XID_Continue # L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y 1D552..1D6A5 ; XID_Continue # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J 1D6A8..1D6C0 ; XID_Continue # L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA 1D6C2..1D6DA ; XID_Continue # L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA 1D6DC..1D6FA ; XID_Continue # L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA 1D6FC..1D714 ; XID_Continue # L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA 1D716..1D734 ; XID_Continue # L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA 1D736..1D74E ; XID_Continue # L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA 1D750..1D76E ; XID_Continue # L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA 1D770..1D788 ; XID_Continue # L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA 1D78A..1D7A8 ; XID_Continue # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA 1D7AA..1D7C2 ; XID_Continue # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA 1D7C4..1D7CB ; XID_Continue # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA 1D7CE..1D7FF ; XID_Continue # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE 1DA00..1DA36 ; XID_Continue # Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN 1DA3B..1DA6C ; XID_Continue # Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT 1DA75 ; XID_Continue # Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS 1DA84 ; XID_Continue # Mn SIGNWRITING LOCATION HEAD NECK 1DA9B..1DA9F ; XID_Continue # Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 1DAA1..1DAAF ; XID_Continue # Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 1E000..1E006 ; XID_Continue # Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE 1E008..1E018 ; XID_Continue # Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU 1E01B..1E021 ; XID_Continue # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI 1E023..1E024 ; XID_Continue # Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS 1E026..1E02A ; XID_Continue # Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA 1E800..1E8C4 ; XID_Continue # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON 1E8D0..1E8D6 ; XID_Continue # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS 1E900..1E943 ; XID_Continue # L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA 1E944..1E94A ; XID_Continue # Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA 1E950..1E959 ; XID_Continue # Nd [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE 1EE00..1EE03 ; XID_Continue # Lo [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL 1EE05..1EE1F ; XID_Continue # Lo [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF 1EE21..1EE22 ; XID_Continue # Lo [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM 1EE24 ; XID_Continue # Lo ARABIC MATHEMATICAL INITIAL HEH 1EE27 ; XID_Continue # Lo ARABIC MATHEMATICAL INITIAL HAH 1EE29..1EE32 ; XID_Continue # Lo [10] ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF 1EE34..1EE37 ; XID_Continue # Lo [4] ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH 1EE39 ; XID_Continue # Lo ARABIC MATHEMATICAL INITIAL DAD 1EE3B ; XID_Continue # Lo ARABIC MATHEMATICAL INITIAL GHAIN 1EE42 ; XID_Continue # Lo ARABIC MATHEMATICAL TAILED JEEM 1EE47 ; XID_Continue # Lo ARABIC MATHEMATICAL TAILED HAH 1EE49 ; XID_Continue # Lo ARABIC MATHEMATICAL TAILED YEH 1EE4B ; XID_Continue # Lo ARABIC MATHEMATICAL TAILED LAM 1EE4D..1EE4F ; XID_Continue # Lo [3] ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN 1EE51..1EE52 ; XID_Continue # Lo [2] ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF 1EE54 ; XID_Continue # Lo ARABIC MATHEMATICAL TAILED SHEEN 1EE57 ; XID_Continue # Lo ARABIC MATHEMATICAL TAILED KHAH 1EE59 ; XID_Continue # Lo ARABIC MATHEMATICAL TAILED DAD 1EE5B ; XID_Continue # Lo ARABIC MATHEMATICAL TAILED GHAIN 1EE5D ; XID_Continue # Lo ARABIC MATHEMATICAL TAILED DOTLESS NOON 1EE5F ; XID_Continue # Lo ARABIC MATHEMATICAL TAILED DOTLESS QAF 1EE61..1EE62 ; XID_Continue # Lo [2] ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM 1EE64 ; XID_Continue # Lo ARABIC MATHEMATICAL STRETCHED HEH 1EE67..1EE6A ; XID_Continue # Lo [4] ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF 1EE6C..1EE72 ; XID_Continue # Lo [7] ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF 1EE74..1EE77 ; XID_Continue # Lo [4] ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH 1EE79..1EE7C ; XID_Continue # Lo [4] ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH 1EE7E ; XID_Continue # Lo ARABIC MATHEMATICAL STRETCHED DOTLESS FEH 1EE80..1EE89 ; XID_Continue # Lo [10] ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH 1EE8B..1EE9B ; XID_Continue # Lo [17] ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN 1EEA1..1EEA3 ; XID_Continue # Lo [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL 1EEA5..1EEA9 ; XID_Continue # Lo [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH 1EEAB..1EEBB ; XID_Continue # Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN 20000..2A6D6 ; XID_Continue # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 2A700..2B734 ; XID_Continue # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 2B740..2B81D ; XID_Continue # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D 2B820..2CEA1 ; XID_Continue # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 2F800..2FA1D ; XID_Continue # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D E0100..E01EF ; XID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 # Total code points: 119672 # ================================================ # Derived Property: Default_Ignorable_Code_Point # Generated from # Other_Default_Ignorable_Code_Point # + Cf (Format characters) # + Variation_Selector # - White_Space # - FFF9..FFFB (Annotation Characters) # - 0600..0605, 06DD, 070F, 08E2, 110BD (exceptional Cf characters that should be visible) 00AD ; Default_Ignorable_Code_Point # Cf SOFT HYPHEN 034F ; Default_Ignorable_Code_Point # Mn COMBINING GRAPHEME JOINER 061C ; Default_Ignorable_Code_Point # Cf ARABIC LETTER MARK 115F..1160 ; Default_Ignorable_Code_Point # Lo [2] HANGUL CHOSEONG FILLER..HANGUL JUNGSEONG FILLER 17B4..17B5 ; Default_Ignorable_Code_Point # Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA 180B..180D ; Default_Ignorable_Code_Point # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE 180E ; Default_Ignorable_Code_Point # Cf MONGOLIAN VOWEL SEPARATOR 200B..200F ; Default_Ignorable_Code_Point # Cf [5] ZERO WIDTH SPACE..RIGHT-TO-LEFT MARK 202A..202E ; Default_Ignorable_Code_Point # Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE 2060..2064 ; Default_Ignorable_Code_Point # Cf [5] WORD JOINER..INVISIBLE PLUS 2065 ; Default_Ignorable_Code_Point # Cn 2066..206F ; Default_Ignorable_Code_Point # Cf [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES 3164 ; Default_Ignorable_Code_Point # Lo HANGUL FILLER FE00..FE0F ; Default_Ignorable_Code_Point # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 FEFF ; Default_Ignorable_Code_Point # Cf ZERO WIDTH NO-BREAK SPACE FFA0 ; Default_Ignorable_Code_Point # Lo HALFWIDTH HANGUL FILLER FFF0..FFF8 ; Default_Ignorable_Code_Point # Cn [9] .. 1BCA0..1BCA3 ; Default_Ignorable_Code_Point # Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP 1D173..1D17A ; Default_Ignorable_Code_Point # Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE E0000 ; Default_Ignorable_Code_Point # Cn E0001 ; Default_Ignorable_Code_Point # Cf LANGUAGE TAG E0002..E001F ; Default_Ignorable_Code_Point # Cn [30] .. E0020..E007F ; Default_Ignorable_Code_Point # Cf [96] TAG SPACE..CANCEL TAG E0080..E00FF ; Default_Ignorable_Code_Point # Cn [128] .. E0100..E01EF ; Default_Ignorable_Code_Point # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 E01F0..E0FFF ; Default_Ignorable_Code_Point # Cn [3600] .. # Total code points: 4173 # ================================================ # Derived Property: Grapheme_Extend # Generated from: Me + Mn + Other_Grapheme_Extend # Note: depending on an application's interpretation of Co (private use), # they may be either in Grapheme_Base, or in Grapheme_Extend, or in neither. 0300..036F ; Grapheme_Extend # Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X 0483..0487 ; Grapheme_Extend # Mn [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE 0488..0489 ; Grapheme_Extend # Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN 0591..05BD ; Grapheme_Extend # Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG 05BF ; Grapheme_Extend # Mn HEBREW POINT RAFE 05C1..05C2 ; Grapheme_Extend # Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT 05C4..05C5 ; Grapheme_Extend # Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT 05C7 ; Grapheme_Extend # Mn HEBREW POINT QAMATS QATAN 0610..061A ; Grapheme_Extend # Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA 064B..065F ; Grapheme_Extend # Mn [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW 0670 ; Grapheme_Extend # Mn ARABIC LETTER SUPERSCRIPT ALEF 06D6..06DC ; Grapheme_Extend # Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN 06DF..06E4 ; Grapheme_Extend # Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA 06E7..06E8 ; Grapheme_Extend # Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON 06EA..06ED ; Grapheme_Extend # Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM 0711 ; Grapheme_Extend # Mn SYRIAC LETTER SUPERSCRIPT ALAPH 0730..074A ; Grapheme_Extend # Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH 07A6..07B0 ; Grapheme_Extend # Mn [11] THAANA ABAFILI..THAANA SUKUN 07EB..07F3 ; Grapheme_Extend # Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE 0816..0819 ; Grapheme_Extend # Mn [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH 081B..0823 ; Grapheme_Extend # Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A 0825..0827 ; Grapheme_Extend # Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U 0829..082D ; Grapheme_Extend # Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA 0859..085B ; Grapheme_Extend # Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK 08D4..08E1 ; Grapheme_Extend # Mn [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA 08E3..0902 ; Grapheme_Extend # Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA 093A ; Grapheme_Extend # Mn DEVANAGARI VOWEL SIGN OE 093C ; Grapheme_Extend # Mn DEVANAGARI SIGN NUKTA 0941..0948 ; Grapheme_Extend # Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI 094D ; Grapheme_Extend # Mn DEVANAGARI SIGN VIRAMA 0951..0957 ; Grapheme_Extend # Mn [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE 0962..0963 ; Grapheme_Extend # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL 0981 ; Grapheme_Extend # Mn BENGALI SIGN CANDRABINDU 09BC ; Grapheme_Extend # Mn BENGALI SIGN NUKTA 09BE ; Grapheme_Extend # Mc BENGALI VOWEL SIGN AA 09C1..09C4 ; Grapheme_Extend # Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR 09CD ; Grapheme_Extend # Mn BENGALI SIGN VIRAMA 09D7 ; Grapheme_Extend # Mc BENGALI AU LENGTH MARK 09E2..09E3 ; Grapheme_Extend # Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL 0A01..0A02 ; Grapheme_Extend # Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI 0A3C ; Grapheme_Extend # Mn GURMUKHI SIGN NUKTA 0A41..0A42 ; Grapheme_Extend # Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU 0A47..0A48 ; Grapheme_Extend # Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI 0A4B..0A4D ; Grapheme_Extend # Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA 0A51 ; Grapheme_Extend # Mn GURMUKHI SIGN UDAAT 0A70..0A71 ; Grapheme_Extend # Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK 0A75 ; Grapheme_Extend # Mn GURMUKHI SIGN YAKASH 0A81..0A82 ; Grapheme_Extend # Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA 0ABC ; Grapheme_Extend # Mn GUJARATI SIGN NUKTA 0AC1..0AC5 ; Grapheme_Extend # Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E 0AC7..0AC8 ; Grapheme_Extend # Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI 0ACD ; Grapheme_Extend # Mn GUJARATI SIGN VIRAMA 0AE2..0AE3 ; Grapheme_Extend # Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL 0B01 ; Grapheme_Extend # Mn ORIYA SIGN CANDRABINDU 0B3C ; Grapheme_Extend # Mn ORIYA SIGN NUKTA 0B3E ; Grapheme_Extend # Mc ORIYA VOWEL SIGN AA 0B3F ; Grapheme_Extend # Mn ORIYA VOWEL SIGN I 0B41..0B44 ; Grapheme_Extend # Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR 0B4D ; Grapheme_Extend # Mn ORIYA SIGN VIRAMA 0B56 ; Grapheme_Extend # Mn ORIYA AI LENGTH MARK 0B57 ; Grapheme_Extend # Mc ORIYA AU LENGTH MARK 0B62..0B63 ; Grapheme_Extend # Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL 0B82 ; Grapheme_Extend # Mn TAMIL SIGN ANUSVARA 0BBE ; Grapheme_Extend # Mc TAMIL VOWEL SIGN AA 0BC0 ; Grapheme_Extend # Mn TAMIL VOWEL SIGN II 0BCD ; Grapheme_Extend # Mn TAMIL SIGN VIRAMA 0BD7 ; Grapheme_Extend # Mc TAMIL AU LENGTH MARK 0C00 ; Grapheme_Extend # Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE 0C3E..0C40 ; Grapheme_Extend # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II 0C46..0C48 ; Grapheme_Extend # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI 0C4A..0C4D ; Grapheme_Extend # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA 0C55..0C56 ; Grapheme_Extend # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK 0C62..0C63 ; Grapheme_Extend # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL 0C81 ; Grapheme_Extend # Mn KANNADA SIGN CANDRABINDU 0CBC ; Grapheme_Extend # Mn KANNADA SIGN NUKTA 0CBF ; Grapheme_Extend # Mn KANNADA VOWEL SIGN I 0CC2 ; Grapheme_Extend # Mc KANNADA VOWEL SIGN UU 0CC6 ; Grapheme_Extend # Mn KANNADA VOWEL SIGN E 0CCC..0CCD ; Grapheme_Extend # Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA 0CD5..0CD6 ; Grapheme_Extend # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK 0CE2..0CE3 ; Grapheme_Extend # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL 0D01 ; Grapheme_Extend # Mn MALAYALAM SIGN CANDRABINDU 0D3E ; Grapheme_Extend # Mc MALAYALAM VOWEL SIGN AA 0D41..0D44 ; Grapheme_Extend # Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR 0D4D ; Grapheme_Extend # Mn MALAYALAM SIGN VIRAMA 0D57 ; Grapheme_Extend # Mc MALAYALAM AU LENGTH MARK 0D62..0D63 ; Grapheme_Extend # Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL 0DCA ; Grapheme_Extend # Mn SINHALA SIGN AL-LAKUNA 0DCF ; Grapheme_Extend # Mc SINHALA VOWEL SIGN AELA-PILLA 0DD2..0DD4 ; Grapheme_Extend # Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA 0DD6 ; Grapheme_Extend # Mn SINHALA VOWEL SIGN DIGA PAA-PILLA 0DDF ; Grapheme_Extend # Mc SINHALA VOWEL SIGN GAYANUKITTA 0E31 ; Grapheme_Extend # Mn THAI CHARACTER MAI HAN-AKAT 0E34..0E3A ; Grapheme_Extend # Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU 0E47..0E4E ; Grapheme_Extend # Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN 0EB1 ; Grapheme_Extend # Mn LAO VOWEL SIGN MAI KAN 0EB4..0EB9 ; Grapheme_Extend # Mn [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU 0EBB..0EBC ; Grapheme_Extend # Mn [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO 0EC8..0ECD ; Grapheme_Extend # Mn [6] LAO TONE MAI EK..LAO NIGGAHITA 0F18..0F19 ; Grapheme_Extend # Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS 0F35 ; Grapheme_Extend # Mn TIBETAN MARK NGAS BZUNG NYI ZLA 0F37 ; Grapheme_Extend # Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS 0F39 ; Grapheme_Extend # Mn TIBETAN MARK TSA -PHRU 0F71..0F7E ; Grapheme_Extend # Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO 0F80..0F84 ; Grapheme_Extend # Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA 0F86..0F87 ; Grapheme_Extend # Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS 0F8D..0F97 ; Grapheme_Extend # Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA 0F99..0FBC ; Grapheme_Extend # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA 0FC6 ; Grapheme_Extend # Mn TIBETAN SYMBOL PADMA GDAN 102D..1030 ; Grapheme_Extend # Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU 1032..1037 ; Grapheme_Extend # Mn [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW 1039..103A ; Grapheme_Extend # Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT 103D..103E ; Grapheme_Extend # Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA 1058..1059 ; Grapheme_Extend # Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL 105E..1060 ; Grapheme_Extend # Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA 1071..1074 ; Grapheme_Extend # Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE 1082 ; Grapheme_Extend # Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA 1085..1086 ; Grapheme_Extend # Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y 108D ; Grapheme_Extend # Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE 109D ; Grapheme_Extend # Mn MYANMAR VOWEL SIGN AITON AI 135D..135F ; Grapheme_Extend # Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK 1712..1714 ; Grapheme_Extend # Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA 1732..1734 ; Grapheme_Extend # Mn [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD 1752..1753 ; Grapheme_Extend # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U 1772..1773 ; Grapheme_Extend # Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U 17B4..17B5 ; Grapheme_Extend # Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA 17B7..17BD ; Grapheme_Extend # Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA 17C6 ; Grapheme_Extend # Mn KHMER SIGN NIKAHIT 17C9..17D3 ; Grapheme_Extend # Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT 17DD ; Grapheme_Extend # Mn KHMER SIGN ATTHACAN 180B..180D ; Grapheme_Extend # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE 1885..1886 ; Grapheme_Extend # Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA 18A9 ; Grapheme_Extend # Mn MONGOLIAN LETTER ALI GALI DAGALGA 1920..1922 ; Grapheme_Extend # Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U 1927..1928 ; Grapheme_Extend # Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O 1932 ; Grapheme_Extend # Mn LIMBU SMALL LETTER ANUSVARA 1939..193B ; Grapheme_Extend # Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I 1A17..1A18 ; Grapheme_Extend # Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U 1A1B ; Grapheme_Extend # Mn BUGINESE VOWEL SIGN AE 1A56 ; Grapheme_Extend # Mn TAI THAM CONSONANT SIGN MEDIAL LA 1A58..1A5E ; Grapheme_Extend # Mn [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA 1A60 ; Grapheme_Extend # Mn TAI THAM SIGN SAKOT 1A62 ; Grapheme_Extend # Mn TAI THAM VOWEL SIGN MAI SAT 1A65..1A6C ; Grapheme_Extend # Mn [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW 1A73..1A7C ; Grapheme_Extend # Mn [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN 1A7F ; Grapheme_Extend # Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT 1AB0..1ABD ; Grapheme_Extend # Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW 1ABE ; Grapheme_Extend # Me COMBINING PARENTHESES OVERLAY 1B00..1B03 ; Grapheme_Extend # Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG 1B34 ; Grapheme_Extend # Mn BALINESE SIGN REREKAN 1B36..1B3A ; Grapheme_Extend # Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA 1B3C ; Grapheme_Extend # Mn BALINESE VOWEL SIGN LA LENGA 1B42 ; Grapheme_Extend # Mn BALINESE VOWEL SIGN PEPET 1B6B..1B73 ; Grapheme_Extend # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG 1B80..1B81 ; Grapheme_Extend # Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR 1BA2..1BA5 ; Grapheme_Extend # Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU 1BA8..1BA9 ; Grapheme_Extend # Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG 1BAB..1BAD ; Grapheme_Extend # Mn [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA 1BE6 ; Grapheme_Extend # Mn BATAK SIGN TOMPI 1BE8..1BE9 ; Grapheme_Extend # Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE 1BED ; Grapheme_Extend # Mn BATAK VOWEL SIGN KARO O 1BEF..1BF1 ; Grapheme_Extend # Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H 1C2C..1C33 ; Grapheme_Extend # Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T 1C36..1C37 ; Grapheme_Extend # Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA 1CD0..1CD2 ; Grapheme_Extend # Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA 1CD4..1CE0 ; Grapheme_Extend # Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA 1CE2..1CE8 ; Grapheme_Extend # Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL 1CED ; Grapheme_Extend # Mn VEDIC SIGN TIRYAK 1CF4 ; Grapheme_Extend # Mn VEDIC TONE CANDRA ABOVE 1CF8..1CF9 ; Grapheme_Extend # Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE 1DC0..1DF5 ; Grapheme_Extend # Mn [54] COMBINING DOTTED GRAVE ACCENT..COMBINING UP TACK ABOVE 1DFB..1DFF ; Grapheme_Extend # Mn [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW 200C..200D ; Grapheme_Extend # Cf [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER 20D0..20DC ; Grapheme_Extend # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE 20DD..20E0 ; Grapheme_Extend # Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH 20E1 ; Grapheme_Extend # Mn COMBINING LEFT RIGHT ARROW ABOVE 20E2..20E4 ; Grapheme_Extend # Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE 20E5..20F0 ; Grapheme_Extend # Mn [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE 2CEF..2CF1 ; Grapheme_Extend # Mn [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS 2D7F ; Grapheme_Extend # Mn TIFINAGH CONSONANT JOINER 2DE0..2DFF ; Grapheme_Extend # Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS 302A..302D ; Grapheme_Extend # Mn [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK 302E..302F ; Grapheme_Extend # Mc [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK 3099..309A ; Grapheme_Extend # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK A66F ; Grapheme_Extend # Mn COMBINING CYRILLIC VZMET A670..A672 ; Grapheme_Extend # Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN A674..A67D ; Grapheme_Extend # Mn [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK A69E..A69F ; Grapheme_Extend # Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E A6F0..A6F1 ; Grapheme_Extend # Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS A802 ; Grapheme_Extend # Mn SYLOTI NAGRI SIGN DVISVARA A806 ; Grapheme_Extend # Mn SYLOTI NAGRI SIGN HASANTA A80B ; Grapheme_Extend # Mn SYLOTI NAGRI SIGN ANUSVARA A825..A826 ; Grapheme_Extend # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E A8C4..A8C5 ; Grapheme_Extend # Mn [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU A8E0..A8F1 ; Grapheme_Extend # Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA A926..A92D ; Grapheme_Extend # Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU A947..A951 ; Grapheme_Extend # Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R A980..A982 ; Grapheme_Extend # Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR A9B3 ; Grapheme_Extend # Mn JAVANESE SIGN CECAK TELU A9B6..A9B9 ; Grapheme_Extend # Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT A9BC ; Grapheme_Extend # Mn JAVANESE VOWEL SIGN PEPET A9E5 ; Grapheme_Extend # Mn MYANMAR SIGN SHAN SAW AA29..AA2E ; Grapheme_Extend # Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE AA31..AA32 ; Grapheme_Extend # Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE AA35..AA36 ; Grapheme_Extend # Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA AA43 ; Grapheme_Extend # Mn CHAM CONSONANT SIGN FINAL NG AA4C ; Grapheme_Extend # Mn CHAM CONSONANT SIGN FINAL M AA7C ; Grapheme_Extend # Mn MYANMAR SIGN TAI LAING TONE-2 AAB0 ; Grapheme_Extend # Mn TAI VIET MAI KANG AAB2..AAB4 ; Grapheme_Extend # Mn [3] TAI VIET VOWEL I..TAI VIET VOWEL U AAB7..AAB8 ; Grapheme_Extend # Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA AABE..AABF ; Grapheme_Extend # Mn [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK AAC1 ; Grapheme_Extend # Mn TAI VIET TONE MAI THO AAEC..AAED ; Grapheme_Extend # Mn [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI AAF6 ; Grapheme_Extend # Mn MEETEI MAYEK VIRAMA ABE5 ; Grapheme_Extend # Mn MEETEI MAYEK VOWEL SIGN ANAP ABE8 ; Grapheme_Extend # Mn MEETEI MAYEK VOWEL SIGN UNAP ABED ; Grapheme_Extend # Mn MEETEI MAYEK APUN IYEK FB1E ; Grapheme_Extend # Mn HEBREW POINT JUDEO-SPANISH VARIKA FE00..FE0F ; Grapheme_Extend # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 FE20..FE2F ; Grapheme_Extend # Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF FF9E..FF9F ; Grapheme_Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK 101FD ; Grapheme_Extend # Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE 102E0 ; Grapheme_Extend # Mn COPTIC EPACT THOUSANDS MARK 10376..1037A ; Grapheme_Extend # Mn [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII 10A01..10A03 ; Grapheme_Extend # Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R 10A05..10A06 ; Grapheme_Extend # Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O 10A0C..10A0F ; Grapheme_Extend # Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA 10A38..10A3A ; Grapheme_Extend # Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW 10A3F ; Grapheme_Extend # Mn KHAROSHTHI VIRAMA 10AE5..10AE6 ; Grapheme_Extend # Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW 11001 ; Grapheme_Extend # Mn BRAHMI SIGN ANUSVARA 11038..11046 ; Grapheme_Extend # Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA 1107F..11081 ; Grapheme_Extend # Mn [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA 110B3..110B6 ; Grapheme_Extend # Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI 110B9..110BA ; Grapheme_Extend # Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA 11100..11102 ; Grapheme_Extend # Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA 11127..1112B ; Grapheme_Extend # Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU 1112D..11134 ; Grapheme_Extend # Mn [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA 11173 ; Grapheme_Extend # Mn MAHAJANI SIGN NUKTA 11180..11181 ; Grapheme_Extend # Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA 111B6..111BE ; Grapheme_Extend # Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O 111CA..111CC ; Grapheme_Extend # Mn [3] SHARADA SIGN NUKTA..SHARADA EXTRA SHORT VOWEL MARK 1122F..11231 ; Grapheme_Extend # Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI 11234 ; Grapheme_Extend # Mn KHOJKI SIGN ANUSVARA 11236..11237 ; Grapheme_Extend # Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA 1123E ; Grapheme_Extend # Mn KHOJKI SIGN SUKUN 112DF ; Grapheme_Extend # Mn KHUDAWADI SIGN ANUSVARA 112E3..112EA ; Grapheme_Extend # Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA 11300..11301 ; Grapheme_Extend # Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU 1133C ; Grapheme_Extend # Mn GRANTHA SIGN NUKTA 1133E ; Grapheme_Extend # Mc GRANTHA VOWEL SIGN AA 11340 ; Grapheme_Extend # Mn GRANTHA VOWEL SIGN II 11357 ; Grapheme_Extend # Mc GRANTHA AU LENGTH MARK 11366..1136C ; Grapheme_Extend # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX 11370..11374 ; Grapheme_Extend # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA 11438..1143F ; Grapheme_Extend # Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI 11442..11444 ; Grapheme_Extend # Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA 11446 ; Grapheme_Extend # Mn NEWA SIGN NUKTA 114B0 ; Grapheme_Extend # Mc TIRHUTA VOWEL SIGN AA 114B3..114B8 ; Grapheme_Extend # Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL 114BA ; Grapheme_Extend # Mn TIRHUTA VOWEL SIGN SHORT E 114BD ; Grapheme_Extend # Mc TIRHUTA VOWEL SIGN SHORT O 114BF..114C0 ; Grapheme_Extend # Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA 114C2..114C3 ; Grapheme_Extend # Mn [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA 115AF ; Grapheme_Extend # Mc SIDDHAM VOWEL SIGN AA 115B2..115B5 ; Grapheme_Extend # Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR 115BC..115BD ; Grapheme_Extend # Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA 115BF..115C0 ; Grapheme_Extend # Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA 115DC..115DD ; Grapheme_Extend # Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU 11633..1163A ; Grapheme_Extend # Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI 1163D ; Grapheme_Extend # Mn MODI SIGN ANUSVARA 1163F..11640 ; Grapheme_Extend # Mn [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA 116AB ; Grapheme_Extend # Mn TAKRI SIGN ANUSVARA 116AD ; Grapheme_Extend # Mn TAKRI VOWEL SIGN AA 116B0..116B5 ; Grapheme_Extend # Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU 116B7 ; Grapheme_Extend # Mn TAKRI SIGN NUKTA 1171D..1171F ; Grapheme_Extend # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA 11722..11725 ; Grapheme_Extend # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU 11727..1172B ; Grapheme_Extend # Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER 11C30..11C36 ; Grapheme_Extend # Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L 11C3C..11C3D ; Grapheme_Extend # Mn [2] BHAIKSUKI SIGN CANDRABINDU..BHAIKSUKI SIGN ANUSVARA 11C3F ; Grapheme_Extend # Mn BHAIKSUKI SIGN VIRAMA 11C92..11CA7 ; Grapheme_Extend # Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA 11CA9..11CB0 ; Grapheme_Extend # Mn [8] MARCHEN SUBJOINED LETTER YA..MARCHEN VOWEL SIGN AA 11CB2..11CB3 ; Grapheme_Extend # Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E 11CB5..11CB6 ; Grapheme_Extend # Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU 16AF0..16AF4 ; Grapheme_Extend # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE 16B30..16B36 ; Grapheme_Extend # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM 16F8F..16F92 ; Grapheme_Extend # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW 1BC9D..1BC9E ; Grapheme_Extend # Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK 1D165 ; Grapheme_Extend # Mc MUSICAL SYMBOL COMBINING STEM 1D167..1D169 ; Grapheme_Extend # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3 1D16E..1D172 ; Grapheme_Extend # Mc [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5 1D17B..1D182 ; Grapheme_Extend # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE 1D185..1D18B ; Grapheme_Extend # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE 1D1AA..1D1AD ; Grapheme_Extend # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO 1D242..1D244 ; Grapheme_Extend # Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME 1DA00..1DA36 ; Grapheme_Extend # Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN 1DA3B..1DA6C ; Grapheme_Extend # Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT 1DA75 ; Grapheme_Extend # Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS 1DA84 ; Grapheme_Extend # Mn SIGNWRITING LOCATION HEAD NECK 1DA9B..1DA9F ; Grapheme_Extend # Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 1DAA1..1DAAF ; Grapheme_Extend # Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 1E000..1E006 ; Grapheme_Extend # Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE 1E008..1E018 ; Grapheme_Extend # Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU 1E01B..1E021 ; Grapheme_Extend # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI 1E023..1E024 ; Grapheme_Extend # Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS 1E026..1E02A ; Grapheme_Extend # Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA 1E8D0..1E8D6 ; Grapheme_Extend # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS 1E944..1E94A ; Grapheme_Extend # Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA E0100..E01EF ; Grapheme_Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 # Total code points: 1730 # ================================================ # Derived Property: Grapheme_Base # Generated from: [0..10FFFF] - Cc - Cf - Cs - Co - Cn - Zl - Zp - Grapheme_Extend # Note: depending on an application's interpretation of Co (private use), # they may be either in Grapheme_Base, or in Grapheme_Extend, or in neither. 0020 ; Grapheme_Base # Zs SPACE 0021..0023 ; Grapheme_Base # Po [3] EXCLAMATION MARK..NUMBER SIGN 0024 ; Grapheme_Base # Sc DOLLAR SIGN 0025..0027 ; Grapheme_Base # Po [3] PERCENT SIGN..APOSTROPHE 0028 ; Grapheme_Base # Ps LEFT PARENTHESIS 0029 ; Grapheme_Base # Pe RIGHT PARENTHESIS 002A ; Grapheme_Base # Po ASTERISK 002B ; Grapheme_Base # Sm PLUS SIGN 002C ; Grapheme_Base # Po COMMA 002D ; Grapheme_Base # Pd HYPHEN-MINUS 002E..002F ; Grapheme_Base # Po [2] FULL STOP..SOLIDUS 0030..0039 ; Grapheme_Base # Nd [10] DIGIT ZERO..DIGIT NINE 003A..003B ; Grapheme_Base # Po [2] COLON..SEMICOLON 003C..003E ; Grapheme_Base # Sm [3] LESS-THAN SIGN..GREATER-THAN SIGN 003F..0040 ; Grapheme_Base # Po [2] QUESTION MARK..COMMERCIAL AT 0041..005A ; Grapheme_Base # L& [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z 005B ; Grapheme_Base # Ps LEFT SQUARE BRACKET 005C ; Grapheme_Base # Po REVERSE SOLIDUS 005D ; Grapheme_Base # Pe RIGHT SQUARE BRACKET 005E ; Grapheme_Base # Sk CIRCUMFLEX ACCENT 005F ; Grapheme_Base # Pc LOW LINE 0060 ; Grapheme_Base # Sk GRAVE ACCENT 0061..007A ; Grapheme_Base # L& [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z 007B ; Grapheme_Base # Ps LEFT CURLY BRACKET 007C ; Grapheme_Base # Sm VERTICAL LINE 007D ; Grapheme_Base # Pe RIGHT CURLY BRACKET 007E ; Grapheme_Base # Sm TILDE 00A0 ; Grapheme_Base # Zs NO-BREAK SPACE 00A1 ; Grapheme_Base # Po INVERTED EXCLAMATION MARK 00A2..00A5 ; Grapheme_Base # Sc [4] CENT SIGN..YEN SIGN 00A6 ; Grapheme_Base # So BROKEN BAR 00A7 ; Grapheme_Base # Po SECTION SIGN 00A8 ; Grapheme_Base # Sk DIAERESIS 00A9 ; Grapheme_Base # So COPYRIGHT SIGN 00AA ; Grapheme_Base # Lo FEMININE ORDINAL INDICATOR 00AB ; Grapheme_Base # Pi LEFT-POINTING DOUBLE ANGLE QUOTATION MARK 00AC ; Grapheme_Base # Sm NOT SIGN 00AE ; Grapheme_Base # So REGISTERED SIGN 00AF ; Grapheme_Base # Sk MACRON 00B0 ; Grapheme_Base # So DEGREE SIGN 00B1 ; Grapheme_Base # Sm PLUS-MINUS SIGN 00B2..00B3 ; Grapheme_Base # No [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE 00B4 ; Grapheme_Base # Sk ACUTE ACCENT 00B5 ; Grapheme_Base # L& MICRO SIGN 00B6..00B7 ; Grapheme_Base # Po [2] PILCROW SIGN..MIDDLE DOT 00B8 ; Grapheme_Base # Sk CEDILLA 00B9 ; Grapheme_Base # No SUPERSCRIPT ONE 00BA ; Grapheme_Base # Lo MASCULINE ORDINAL INDICATOR 00BB ; Grapheme_Base # Pf RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK 00BC..00BE ; Grapheme_Base # No [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS 00BF ; Grapheme_Base # Po INVERTED QUESTION MARK 00C0..00D6 ; Grapheme_Base # L& [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS 00D7 ; Grapheme_Base # Sm MULTIPLICATION SIGN 00D8..00F6 ; Grapheme_Base # L& [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS 00F7 ; Grapheme_Base # Sm DIVISION SIGN 00F8..01BA ; Grapheme_Base # L& [195] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER EZH WITH TAIL 01BB ; Grapheme_Base # Lo LATIN LETTER TWO WITH STROKE 01BC..01BF ; Grapheme_Base # L& [4] LATIN CAPITAL LETTER TONE FIVE..LATIN LETTER WYNN 01C0..01C3 ; Grapheme_Base # Lo [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK 01C4..0293 ; Grapheme_Base # L& [208] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER EZH WITH CURL 0294 ; Grapheme_Base # Lo LATIN LETTER GLOTTAL STOP 0295..02AF ; Grapheme_Base # L& [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL 02B0..02C1 ; Grapheme_Base # Lm [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP 02C2..02C5 ; Grapheme_Base # Sk [4] MODIFIER LETTER LEFT ARROWHEAD..MODIFIER LETTER DOWN ARROWHEAD 02C6..02D1 ; Grapheme_Base # Lm [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON 02D2..02DF ; Grapheme_Base # Sk [14] MODIFIER LETTER CENTRED RIGHT HALF RING..MODIFIER LETTER CROSS ACCENT 02E0..02E4 ; Grapheme_Base # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP 02E5..02EB ; Grapheme_Base # Sk [7] MODIFIER LETTER EXTRA-HIGH TONE BAR..MODIFIER LETTER YANG DEPARTING TONE MARK 02EC ; Grapheme_Base # Lm MODIFIER LETTER VOICING 02ED ; Grapheme_Base # Sk MODIFIER LETTER UNASPIRATED 02EE ; Grapheme_Base # Lm MODIFIER LETTER DOUBLE APOSTROPHE 02EF..02FF ; Grapheme_Base # Sk [17] MODIFIER LETTER LOW DOWN ARROWHEAD..MODIFIER LETTER LOW LEFT ARROW 0370..0373 ; Grapheme_Base # L& [4] GREEK CAPITAL LETTER HETA..GREEK SMALL LETTER ARCHAIC SAMPI 0374 ; Grapheme_Base # Lm GREEK NUMERAL SIGN 0375 ; Grapheme_Base # Sk GREEK LOWER NUMERAL SIGN 0376..0377 ; Grapheme_Base # L& [2] GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA..GREEK SMALL LETTER PAMPHYLIAN DIGAMMA 037A ; Grapheme_Base # Lm GREEK YPOGEGRAMMENI 037B..037D ; Grapheme_Base # L& [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL 037E ; Grapheme_Base # Po GREEK QUESTION MARK 037F ; Grapheme_Base # L& GREEK CAPITAL LETTER YOT 0384..0385 ; Grapheme_Base # Sk [2] GREEK TONOS..GREEK DIALYTIKA TONOS 0386 ; Grapheme_Base # L& GREEK CAPITAL LETTER ALPHA WITH TONOS 0387 ; Grapheme_Base # Po GREEK ANO TELEIA 0388..038A ; Grapheme_Base # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS 038C ; Grapheme_Base # L& GREEK CAPITAL LETTER OMICRON WITH TONOS 038E..03A1 ; Grapheme_Base # L& [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO 03A3..03F5 ; Grapheme_Base # L& [83] GREEK CAPITAL LETTER SIGMA..GREEK LUNATE EPSILON SYMBOL 03F6 ; Grapheme_Base # Sm GREEK REVERSED LUNATE EPSILON SYMBOL 03F7..0481 ; Grapheme_Base # L& [139] GREEK CAPITAL LETTER SHO..CYRILLIC SMALL LETTER KOPPA 0482 ; Grapheme_Base # So CYRILLIC THOUSANDS SIGN 048A..052F ; Grapheme_Base # L& [166] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER EL WITH DESCENDER 0531..0556 ; Grapheme_Base # L& [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH 0559 ; Grapheme_Base # Lm ARMENIAN MODIFIER LETTER LEFT HALF RING 055A..055F ; Grapheme_Base # Po [6] ARMENIAN APOSTROPHE..ARMENIAN ABBREVIATION MARK 0561..0587 ; Grapheme_Base # L& [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN 0589 ; Grapheme_Base # Po ARMENIAN FULL STOP 058A ; Grapheme_Base # Pd ARMENIAN HYPHEN 058D..058E ; Grapheme_Base # So [2] RIGHT-FACING ARMENIAN ETERNITY SIGN..LEFT-FACING ARMENIAN ETERNITY SIGN 058F ; Grapheme_Base # Sc ARMENIAN DRAM SIGN 05BE ; Grapheme_Base # Pd HEBREW PUNCTUATION MAQAF 05C0 ; Grapheme_Base # Po HEBREW PUNCTUATION PASEQ 05C3 ; Grapheme_Base # Po HEBREW PUNCTUATION SOF PASUQ 05C6 ; Grapheme_Base # Po HEBREW PUNCTUATION NUN HAFUKHA 05D0..05EA ; Grapheme_Base # Lo [27] HEBREW LETTER ALEF..HEBREW LETTER TAV 05F0..05F2 ; Grapheme_Base # Lo [3] HEBREW LIGATURE YIDDISH DOUBLE VAV..HEBREW LIGATURE YIDDISH DOUBLE YOD 05F3..05F4 ; Grapheme_Base # Po [2] HEBREW PUNCTUATION GERESH..HEBREW PUNCTUATION GERSHAYIM 0606..0608 ; Grapheme_Base # Sm [3] ARABIC-INDIC CUBE ROOT..ARABIC RAY 0609..060A ; Grapheme_Base # Po [2] ARABIC-INDIC PER MILLE SIGN..ARABIC-INDIC PER TEN THOUSAND SIGN 060B ; Grapheme_Base # Sc AFGHANI SIGN 060C..060D ; Grapheme_Base # Po [2] ARABIC COMMA..ARABIC DATE SEPARATOR 060E..060F ; Grapheme_Base # So [2] ARABIC POETIC VERSE SIGN..ARABIC SIGN MISRA 061B ; Grapheme_Base # Po ARABIC SEMICOLON 061E..061F ; Grapheme_Base # Po [2] ARABIC TRIPLE DOT PUNCTUATION MARK..ARABIC QUESTION MARK 0620..063F ; Grapheme_Base # Lo [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE 0640 ; Grapheme_Base # Lm ARABIC TATWEEL 0641..064A ; Grapheme_Base # Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH 0660..0669 ; Grapheme_Base # Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE 066A..066D ; Grapheme_Base # Po [4] ARABIC PERCENT SIGN..ARABIC FIVE POINTED STAR 066E..066F ; Grapheme_Base # Lo [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF 0671..06D3 ; Grapheme_Base # Lo [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE 06D4 ; Grapheme_Base # Po ARABIC FULL STOP 06D5 ; Grapheme_Base # Lo ARABIC LETTER AE 06DE ; Grapheme_Base # So ARABIC START OF RUB EL HIZB 06E5..06E6 ; Grapheme_Base # Lm [2] ARABIC SMALL WAW..ARABIC SMALL YEH 06E9 ; Grapheme_Base # So ARABIC PLACE OF SAJDAH 06EE..06EF ; Grapheme_Base # Lo [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V 06F0..06F9 ; Grapheme_Base # Nd [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE 06FA..06FC ; Grapheme_Base # Lo [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW 06FD..06FE ; Grapheme_Base # So [2] ARABIC SIGN SINDHI AMPERSAND..ARABIC SIGN SINDHI POSTPOSITION MEN 06FF ; Grapheme_Base # Lo ARABIC LETTER HEH WITH INVERTED V 0700..070D ; Grapheme_Base # Po [14] SYRIAC END OF PARAGRAPH..SYRIAC HARKLEAN ASTERISCUS 0710 ; Grapheme_Base # Lo SYRIAC LETTER ALAPH 0712..072F ; Grapheme_Base # Lo [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH 074D..07A5 ; Grapheme_Base # Lo [89] SYRIAC LETTER SOGDIAN ZHAIN..THAANA LETTER WAAVU 07B1 ; Grapheme_Base # Lo THAANA LETTER NAA 07C0..07C9 ; Grapheme_Base # Nd [10] NKO DIGIT ZERO..NKO DIGIT NINE 07CA..07EA ; Grapheme_Base # Lo [33] NKO LETTER A..NKO LETTER JONA RA 07F4..07F5 ; Grapheme_Base # Lm [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE 07F6 ; Grapheme_Base # So NKO SYMBOL OO DENNEN 07F7..07F9 ; Grapheme_Base # Po [3] NKO SYMBOL GBAKURUNEN..NKO EXCLAMATION MARK 07FA ; Grapheme_Base # Lm NKO LAJANYALAN 0800..0815 ; Grapheme_Base # Lo [22] SAMARITAN LETTER ALAF..SAMARITAN LETTER TAAF 081A ; Grapheme_Base # Lm SAMARITAN MODIFIER LETTER EPENTHETIC YUT 0824 ; Grapheme_Base # Lm SAMARITAN MODIFIER LETTER SHORT A 0828 ; Grapheme_Base # Lm SAMARITAN MODIFIER LETTER I 0830..083E ; Grapheme_Base # Po [15] SAMARITAN PUNCTUATION NEQUDAA..SAMARITAN PUNCTUATION ANNAAU 0840..0858 ; Grapheme_Base # Lo [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN 085E ; Grapheme_Base # Po MANDAIC PUNCTUATION 08A0..08B4 ; Grapheme_Base # Lo [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW 08B6..08BD ; Grapheme_Base # Lo [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON 0903 ; Grapheme_Base # Mc DEVANAGARI SIGN VISARGA 0904..0939 ; Grapheme_Base # Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA 093B ; Grapheme_Base # Mc DEVANAGARI VOWEL SIGN OOE 093D ; Grapheme_Base # Lo DEVANAGARI SIGN AVAGRAHA 093E..0940 ; Grapheme_Base # Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II 0949..094C ; Grapheme_Base # Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU 094E..094F ; Grapheme_Base # Mc [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW 0950 ; Grapheme_Base # Lo DEVANAGARI OM 0958..0961 ; Grapheme_Base # Lo [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL 0964..0965 ; Grapheme_Base # Po [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA 0966..096F ; Grapheme_Base # Nd [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE 0970 ; Grapheme_Base # Po DEVANAGARI ABBREVIATION SIGN 0971 ; Grapheme_Base # Lm DEVANAGARI SIGN HIGH SPACING DOT 0972..0980 ; Grapheme_Base # Lo [15] DEVANAGARI LETTER CANDRA A..BENGALI ANJI 0982..0983 ; Grapheme_Base # Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA 0985..098C ; Grapheme_Base # Lo [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L 098F..0990 ; Grapheme_Base # Lo [2] BENGALI LETTER E..BENGALI LETTER AI 0993..09A8 ; Grapheme_Base # Lo [22] BENGALI LETTER O..BENGALI LETTER NA 09AA..09B0 ; Grapheme_Base # Lo [7] BENGALI LETTER PA..BENGALI LETTER RA 09B2 ; Grapheme_Base # Lo BENGALI LETTER LA 09B6..09B9 ; Grapheme_Base # Lo [4] BENGALI LETTER SHA..BENGALI LETTER HA 09BD ; Grapheme_Base # Lo BENGALI SIGN AVAGRAHA 09BF..09C0 ; Grapheme_Base # Mc [2] BENGALI VOWEL SIGN I..BENGALI VOWEL SIGN II 09C7..09C8 ; Grapheme_Base # Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI 09CB..09CC ; Grapheme_Base # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU 09CE ; Grapheme_Base # Lo BENGALI LETTER KHANDA TA 09DC..09DD ; Grapheme_Base # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA 09DF..09E1 ; Grapheme_Base # Lo [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL 09E6..09EF ; Grapheme_Base # Nd [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE 09F0..09F1 ; Grapheme_Base # Lo [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL 09F2..09F3 ; Grapheme_Base # Sc [2] BENGALI RUPEE MARK..BENGALI RUPEE SIGN 09F4..09F9 ; Grapheme_Base # No [6] BENGALI CURRENCY NUMERATOR ONE..BENGALI CURRENCY DENOMINATOR SIXTEEN 09FA ; Grapheme_Base # So BENGALI ISSHAR 09FB ; Grapheme_Base # Sc BENGALI GANDA MARK 0A03 ; Grapheme_Base # Mc GURMUKHI SIGN VISARGA 0A05..0A0A ; Grapheme_Base # Lo [6] GURMUKHI LETTER A..GURMUKHI LETTER UU 0A0F..0A10 ; Grapheme_Base # Lo [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI 0A13..0A28 ; Grapheme_Base # Lo [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA 0A2A..0A30 ; Grapheme_Base # Lo [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA 0A32..0A33 ; Grapheme_Base # Lo [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA 0A35..0A36 ; Grapheme_Base # Lo [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA 0A38..0A39 ; Grapheme_Base # Lo [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA 0A3E..0A40 ; Grapheme_Base # Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II 0A59..0A5C ; Grapheme_Base # Lo [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA 0A5E ; Grapheme_Base # Lo GURMUKHI LETTER FA 0A66..0A6F ; Grapheme_Base # Nd [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE 0A72..0A74 ; Grapheme_Base # Lo [3] GURMUKHI IRI..GURMUKHI EK ONKAR 0A83 ; Grapheme_Base # Mc GUJARATI SIGN VISARGA 0A85..0A8D ; Grapheme_Base # Lo [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E 0A8F..0A91 ; Grapheme_Base # Lo [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O 0A93..0AA8 ; Grapheme_Base # Lo [22] GUJARATI LETTER O..GUJARATI LETTER NA 0AAA..0AB0 ; Grapheme_Base # Lo [7] GUJARATI LETTER PA..GUJARATI LETTER RA 0AB2..0AB3 ; Grapheme_Base # Lo [2] GUJARATI LETTER LA..GUJARATI LETTER LLA 0AB5..0AB9 ; Grapheme_Base # Lo [5] GUJARATI LETTER VA..GUJARATI LETTER HA 0ABD ; Grapheme_Base # Lo GUJARATI SIGN AVAGRAHA 0ABE..0AC0 ; Grapheme_Base # Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II 0AC9 ; Grapheme_Base # Mc GUJARATI VOWEL SIGN CANDRA O 0ACB..0ACC ; Grapheme_Base # Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU 0AD0 ; Grapheme_Base # Lo GUJARATI OM 0AE0..0AE1 ; Grapheme_Base # Lo [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL 0AE6..0AEF ; Grapheme_Base # Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE 0AF0 ; Grapheme_Base # Po GUJARATI ABBREVIATION SIGN 0AF1 ; Grapheme_Base # Sc GUJARATI RUPEE SIGN 0AF9 ; Grapheme_Base # Lo GUJARATI LETTER ZHA 0B02..0B03 ; Grapheme_Base # Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA 0B05..0B0C ; Grapheme_Base # Lo [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L 0B0F..0B10 ; Grapheme_Base # Lo [2] ORIYA LETTER E..ORIYA LETTER AI 0B13..0B28 ; Grapheme_Base # Lo [22] ORIYA LETTER O..ORIYA LETTER NA 0B2A..0B30 ; Grapheme_Base # Lo [7] ORIYA LETTER PA..ORIYA LETTER RA 0B32..0B33 ; Grapheme_Base # Lo [2] ORIYA LETTER LA..ORIYA LETTER LLA 0B35..0B39 ; Grapheme_Base # Lo [5] ORIYA LETTER VA..ORIYA LETTER HA 0B3D ; Grapheme_Base # Lo ORIYA SIGN AVAGRAHA 0B40 ; Grapheme_Base # Mc ORIYA VOWEL SIGN II 0B47..0B48 ; Grapheme_Base # Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI 0B4B..0B4C ; Grapheme_Base # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU 0B5C..0B5D ; Grapheme_Base # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA 0B5F..0B61 ; Grapheme_Base # Lo [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL 0B66..0B6F ; Grapheme_Base # Nd [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE 0B70 ; Grapheme_Base # So ORIYA ISSHAR 0B71 ; Grapheme_Base # Lo ORIYA LETTER WA 0B72..0B77 ; Grapheme_Base # No [6] ORIYA FRACTION ONE QUARTER..ORIYA FRACTION THREE SIXTEENTHS 0B83 ; Grapheme_Base # Lo TAMIL SIGN VISARGA 0B85..0B8A ; Grapheme_Base # Lo [6] TAMIL LETTER A..TAMIL LETTER UU 0B8E..0B90 ; Grapheme_Base # Lo [3] TAMIL LETTER E..TAMIL LETTER AI 0B92..0B95 ; Grapheme_Base # Lo [4] TAMIL LETTER O..TAMIL LETTER KA 0B99..0B9A ; Grapheme_Base # Lo [2] TAMIL LETTER NGA..TAMIL LETTER CA 0B9C ; Grapheme_Base # Lo TAMIL LETTER JA 0B9E..0B9F ; Grapheme_Base # Lo [2] TAMIL LETTER NYA..TAMIL LETTER TTA 0BA3..0BA4 ; Grapheme_Base # Lo [2] TAMIL LETTER NNA..TAMIL LETTER TA 0BA8..0BAA ; Grapheme_Base # Lo [3] TAMIL LETTER NA..TAMIL LETTER PA 0BAE..0BB9 ; Grapheme_Base # Lo [12] TAMIL LETTER MA..TAMIL LETTER HA 0BBF ; Grapheme_Base # Mc TAMIL VOWEL SIGN I 0BC1..0BC2 ; Grapheme_Base # Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU 0BC6..0BC8 ; Grapheme_Base # Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI 0BCA..0BCC ; Grapheme_Base # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU 0BD0 ; Grapheme_Base # Lo TAMIL OM 0BE6..0BEF ; Grapheme_Base # Nd [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE 0BF0..0BF2 ; Grapheme_Base # No [3] TAMIL NUMBER TEN..TAMIL NUMBER ONE THOUSAND 0BF3..0BF8 ; Grapheme_Base # So [6] TAMIL DAY SIGN..TAMIL AS ABOVE SIGN 0BF9 ; Grapheme_Base # Sc TAMIL RUPEE SIGN 0BFA ; Grapheme_Base # So TAMIL NUMBER SIGN 0C01..0C03 ; Grapheme_Base # Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA 0C05..0C0C ; Grapheme_Base # Lo [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L 0C0E..0C10 ; Grapheme_Base # Lo [3] TELUGU LETTER E..TELUGU LETTER AI 0C12..0C28 ; Grapheme_Base # Lo [23] TELUGU LETTER O..TELUGU LETTER NA 0C2A..0C39 ; Grapheme_Base # Lo [16] TELUGU LETTER PA..TELUGU LETTER HA 0C3D ; Grapheme_Base # Lo TELUGU SIGN AVAGRAHA 0C41..0C44 ; Grapheme_Base # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR 0C58..0C5A ; Grapheme_Base # Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA 0C60..0C61 ; Grapheme_Base # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL 0C66..0C6F ; Grapheme_Base # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE 0C78..0C7E ; Grapheme_Base # No [7] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR 0C7F ; Grapheme_Base # So TELUGU SIGN TUUMU 0C80 ; Grapheme_Base # Lo KANNADA SIGN SPACING CANDRABINDU 0C82..0C83 ; Grapheme_Base # Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA 0C85..0C8C ; Grapheme_Base # Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L 0C8E..0C90 ; Grapheme_Base # Lo [3] KANNADA LETTER E..KANNADA LETTER AI 0C92..0CA8 ; Grapheme_Base # Lo [23] KANNADA LETTER O..KANNADA LETTER NA 0CAA..0CB3 ; Grapheme_Base # Lo [10] KANNADA LETTER PA..KANNADA LETTER LLA 0CB5..0CB9 ; Grapheme_Base # Lo [5] KANNADA LETTER VA..KANNADA LETTER HA 0CBD ; Grapheme_Base # Lo KANNADA SIGN AVAGRAHA 0CBE ; Grapheme_Base # Mc KANNADA VOWEL SIGN AA 0CC0..0CC1 ; Grapheme_Base # Mc [2] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN U 0CC3..0CC4 ; Grapheme_Base # Mc [2] KANNADA VOWEL SIGN VOCALIC R..KANNADA VOWEL SIGN VOCALIC RR 0CC7..0CC8 ; Grapheme_Base # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI 0CCA..0CCB ; Grapheme_Base # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO 0CDE ; Grapheme_Base # Lo KANNADA LETTER FA 0CE0..0CE1 ; Grapheme_Base # Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL 0CE6..0CEF ; Grapheme_Base # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE 0CF1..0CF2 ; Grapheme_Base # Lo [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA 0D02..0D03 ; Grapheme_Base # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA 0D05..0D0C ; Grapheme_Base # Lo [8] MALAYALAM LETTER A..MALAYALAM LETTER VOCALIC L 0D0E..0D10 ; Grapheme_Base # Lo [3] MALAYALAM LETTER E..MALAYALAM LETTER AI 0D12..0D3A ; Grapheme_Base # Lo [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA 0D3D ; Grapheme_Base # Lo MALAYALAM SIGN AVAGRAHA 0D3F..0D40 ; Grapheme_Base # Mc [2] MALAYALAM VOWEL SIGN I..MALAYALAM VOWEL SIGN II 0D46..0D48 ; Grapheme_Base # Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI 0D4A..0D4C ; Grapheme_Base # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU 0D4E ; Grapheme_Base # Lo MALAYALAM LETTER DOT REPH 0D4F ; Grapheme_Base # So MALAYALAM SIGN PARA 0D54..0D56 ; Grapheme_Base # Lo [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL 0D58..0D5E ; Grapheme_Base # No [7] MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH..MALAYALAM FRACTION ONE FIFTH 0D5F..0D61 ; Grapheme_Base # Lo [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL 0D66..0D6F ; Grapheme_Base # Nd [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE 0D70..0D78 ; Grapheme_Base # No [9] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE SIXTEENTHS 0D79 ; Grapheme_Base # So MALAYALAM DATE MARK 0D7A..0D7F ; Grapheme_Base # Lo [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K 0D82..0D83 ; Grapheme_Base # Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA 0D85..0D96 ; Grapheme_Base # Lo [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA 0D9A..0DB1 ; Grapheme_Base # Lo [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA 0DB3..0DBB ; Grapheme_Base # Lo [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA 0DBD ; Grapheme_Base # Lo SINHALA LETTER DANTAJA LAYANNA 0DC0..0DC6 ; Grapheme_Base # Lo [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA 0DD0..0DD1 ; Grapheme_Base # Mc [2] SINHALA VOWEL SIGN KETTI AEDA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA 0DD8..0DDE ; Grapheme_Base # Mc [7] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA 0DE6..0DEF ; Grapheme_Base # Nd [10] SINHALA LITH DIGIT ZERO..SINHALA LITH DIGIT NINE 0DF2..0DF3 ; Grapheme_Base # Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA 0DF4 ; Grapheme_Base # Po SINHALA PUNCTUATION KUNDDALIYA 0E01..0E30 ; Grapheme_Base # Lo [48] THAI CHARACTER KO KAI..THAI CHARACTER SARA A 0E32..0E33 ; Grapheme_Base # Lo [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM 0E3F ; Grapheme_Base # Sc THAI CURRENCY SYMBOL BAHT 0E40..0E45 ; Grapheme_Base # Lo [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO 0E46 ; Grapheme_Base # Lm THAI CHARACTER MAIYAMOK 0E4F ; Grapheme_Base # Po THAI CHARACTER FONGMAN 0E50..0E59 ; Grapheme_Base # Nd [10] THAI DIGIT ZERO..THAI DIGIT NINE 0E5A..0E5B ; Grapheme_Base # Po [2] THAI CHARACTER ANGKHANKHU..THAI CHARACTER KHOMUT 0E81..0E82 ; Grapheme_Base # Lo [2] LAO LETTER KO..LAO LETTER KHO SUNG 0E84 ; Grapheme_Base # Lo LAO LETTER KHO TAM 0E87..0E88 ; Grapheme_Base # Lo [2] LAO LETTER NGO..LAO LETTER CO 0E8A ; Grapheme_Base # Lo LAO LETTER SO TAM 0E8D ; Grapheme_Base # Lo LAO LETTER NYO 0E94..0E97 ; Grapheme_Base # Lo [4] LAO LETTER DO..LAO LETTER THO TAM 0E99..0E9F ; Grapheme_Base # Lo [7] LAO LETTER NO..LAO LETTER FO SUNG 0EA1..0EA3 ; Grapheme_Base # Lo [3] LAO LETTER MO..LAO LETTER LO LING 0EA5 ; Grapheme_Base # Lo LAO LETTER LO LOOT 0EA7 ; Grapheme_Base # Lo LAO LETTER WO 0EAA..0EAB ; Grapheme_Base # Lo [2] LAO LETTER SO SUNG..LAO LETTER HO SUNG 0EAD..0EB0 ; Grapheme_Base # Lo [4] LAO LETTER O..LAO VOWEL SIGN A 0EB2..0EB3 ; Grapheme_Base # Lo [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM 0EBD ; Grapheme_Base # Lo LAO SEMIVOWEL SIGN NYO 0EC0..0EC4 ; Grapheme_Base # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI 0EC6 ; Grapheme_Base # Lm LAO KO LA 0ED0..0ED9 ; Grapheme_Base # Nd [10] LAO DIGIT ZERO..LAO DIGIT NINE 0EDC..0EDF ; Grapheme_Base # Lo [4] LAO HO NO..LAO LETTER KHMU NYO 0F00 ; Grapheme_Base # Lo TIBETAN SYLLABLE OM 0F01..0F03 ; Grapheme_Base # So [3] TIBETAN MARK GTER YIG MGO TRUNCATED A..TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA 0F04..0F12 ; Grapheme_Base # Po [15] TIBETAN MARK INITIAL YIG MGO MDUN MA..TIBETAN MARK RGYA GRAM SHAD 0F13 ; Grapheme_Base # So TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN 0F14 ; Grapheme_Base # Po TIBETAN MARK GTER TSHEG 0F15..0F17 ; Grapheme_Base # So [3] TIBETAN LOGOTYPE SIGN CHAD RTAGS..TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS 0F1A..0F1F ; Grapheme_Base # So [6] TIBETAN SIGN RDEL DKAR GCIG..TIBETAN SIGN RDEL DKAR RDEL NAG 0F20..0F29 ; Grapheme_Base # Nd [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE 0F2A..0F33 ; Grapheme_Base # No [10] TIBETAN DIGIT HALF ONE..TIBETAN DIGIT HALF ZERO 0F34 ; Grapheme_Base # So TIBETAN MARK BSDUS RTAGS 0F36 ; Grapheme_Base # So TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN 0F38 ; Grapheme_Base # So TIBETAN MARK CHE MGO 0F3A ; Grapheme_Base # Ps TIBETAN MARK GUG RTAGS GYON 0F3B ; Grapheme_Base # Pe TIBETAN MARK GUG RTAGS GYAS 0F3C ; Grapheme_Base # Ps TIBETAN MARK ANG KHANG GYON 0F3D ; Grapheme_Base # Pe TIBETAN MARK ANG KHANG GYAS 0F3E..0F3F ; Grapheme_Base # Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES 0F40..0F47 ; Grapheme_Base # Lo [8] TIBETAN LETTER KA..TIBETAN LETTER JA 0F49..0F6C ; Grapheme_Base # Lo [36] TIBETAN LETTER NYA..TIBETAN LETTER RRA 0F7F ; Grapheme_Base # Mc TIBETAN SIGN RNAM BCAD 0F85 ; Grapheme_Base # Po TIBETAN MARK PALUTA 0F88..0F8C ; Grapheme_Base # Lo [5] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN INVERTED MCHU CAN 0FBE..0FC5 ; Grapheme_Base # So [8] TIBETAN KU RU KHA..TIBETAN SYMBOL RDO RJE 0FC7..0FCC ; Grapheme_Base # So [6] TIBETAN SYMBOL RDO RJE RGYA GRAM..TIBETAN SYMBOL NOR BU BZHI -KHYIL 0FCE..0FCF ; Grapheme_Base # So [2] TIBETAN SIGN RDEL NAG RDEL DKAR..TIBETAN SIGN RDEL NAG GSUM 0FD0..0FD4 ; Grapheme_Base # Po [5] TIBETAN MARK BSKA- SHOG GI MGO RGYAN..TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA 0FD5..0FD8 ; Grapheme_Base # So [4] RIGHT-FACING SVASTI SIGN..LEFT-FACING SVASTI SIGN WITH DOTS 0FD9..0FDA ; Grapheme_Base # Po [2] TIBETAN MARK LEADING MCHAN RTAGS..TIBETAN MARK TRAILING MCHAN RTAGS 1000..102A ; Grapheme_Base # Lo [43] MYANMAR LETTER KA..MYANMAR LETTER AU 102B..102C ; Grapheme_Base # Mc [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA 1031 ; Grapheme_Base # Mc MYANMAR VOWEL SIGN E 1038 ; Grapheme_Base # Mc MYANMAR SIGN VISARGA 103B..103C ; Grapheme_Base # Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA 103F ; Grapheme_Base # Lo MYANMAR LETTER GREAT SA 1040..1049 ; Grapheme_Base # Nd [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE 104A..104F ; Grapheme_Base # Po [6] MYANMAR SIGN LITTLE SECTION..MYANMAR SYMBOL GENITIVE 1050..1055 ; Grapheme_Base # Lo [6] MYANMAR LETTER SHA..MYANMAR LETTER VOCALIC LL 1056..1057 ; Grapheme_Base # Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR 105A..105D ; Grapheme_Base # Lo [4] MYANMAR LETTER MON NGA..MYANMAR LETTER MON BBE 1061 ; Grapheme_Base # Lo MYANMAR LETTER SGAW KAREN SHA 1062..1064 ; Grapheme_Base # Mc [3] MYANMAR VOWEL SIGN SGAW KAREN EU..MYANMAR TONE MARK SGAW KAREN KE PHO 1065..1066 ; Grapheme_Base # Lo [2] MYANMAR LETTER WESTERN PWO KAREN THA..MYANMAR LETTER WESTERN PWO KAREN PWA 1067..106D ; Grapheme_Base # Mc [7] MYANMAR VOWEL SIGN WESTERN PWO KAREN EU..MYANMAR SIGN WESTERN PWO KAREN TONE-5 106E..1070 ; Grapheme_Base # Lo [3] MYANMAR LETTER EASTERN PWO KAREN NNA..MYANMAR LETTER EASTERN PWO KAREN GHWA 1075..1081 ; Grapheme_Base # Lo [13] MYANMAR LETTER SHAN KA..MYANMAR LETTER SHAN HA 1083..1084 ; Grapheme_Base # Mc [2] MYANMAR VOWEL SIGN SHAN AA..MYANMAR VOWEL SIGN SHAN E 1087..108C ; Grapheme_Base # Mc [6] MYANMAR SIGN SHAN TONE-2..MYANMAR SIGN SHAN COUNCIL TONE-3 108E ; Grapheme_Base # Lo MYANMAR LETTER RUMAI PALAUNG FA 108F ; Grapheme_Base # Mc MYANMAR SIGN RUMAI PALAUNG TONE-5 1090..1099 ; Grapheme_Base # Nd [10] MYANMAR SHAN DIGIT ZERO..MYANMAR SHAN DIGIT NINE 109A..109C ; Grapheme_Base # Mc [3] MYANMAR SIGN KHAMTI TONE-1..MYANMAR VOWEL SIGN AITON A 109E..109F ; Grapheme_Base # So [2] MYANMAR SYMBOL SHAN ONE..MYANMAR SYMBOL SHAN EXCLAMATION 10A0..10C5 ; Grapheme_Base # L& [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE 10C7 ; Grapheme_Base # L& GEORGIAN CAPITAL LETTER YN 10CD ; Grapheme_Base # L& GEORGIAN CAPITAL LETTER AEN 10D0..10FA ; Grapheme_Base # Lo [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN 10FB ; Grapheme_Base # Po GEORGIAN PARAGRAPH SEPARATOR 10FC ; Grapheme_Base # Lm MODIFIER LETTER GEORGIAN NAR 10FD..1248 ; Grapheme_Base # Lo [332] GEORGIAN LETTER AEN..ETHIOPIC SYLLABLE QWA 124A..124D ; Grapheme_Base # Lo [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE 1250..1256 ; Grapheme_Base # Lo [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO 1258 ; Grapheme_Base # Lo ETHIOPIC SYLLABLE QHWA 125A..125D ; Grapheme_Base # Lo [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE 1260..1288 ; Grapheme_Base # Lo [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA 128A..128D ; Grapheme_Base # Lo [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE 1290..12B0 ; Grapheme_Base # Lo [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA 12B2..12B5 ; Grapheme_Base # Lo [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE 12B8..12BE ; Grapheme_Base # Lo [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO 12C0 ; Grapheme_Base # Lo ETHIOPIC SYLLABLE KXWA 12C2..12C5 ; Grapheme_Base # Lo [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE 12C8..12D6 ; Grapheme_Base # Lo [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O 12D8..1310 ; Grapheme_Base # Lo [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA 1312..1315 ; Grapheme_Base # Lo [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE 1318..135A ; Grapheme_Base # Lo [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA 1360..1368 ; Grapheme_Base # Po [9] ETHIOPIC SECTION MARK..ETHIOPIC PARAGRAPH SEPARATOR 1369..137C ; Grapheme_Base # No [20] ETHIOPIC DIGIT ONE..ETHIOPIC NUMBER TEN THOUSAND 1380..138F ; Grapheme_Base # Lo [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE 1390..1399 ; Grapheme_Base # So [10] ETHIOPIC TONAL MARK YIZET..ETHIOPIC TONAL MARK KURT 13A0..13F5 ; Grapheme_Base # L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV 13F8..13FD ; Grapheme_Base # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV 1400 ; Grapheme_Base # Pd CANADIAN SYLLABICS HYPHEN 1401..166C ; Grapheme_Base # Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA 166D..166E ; Grapheme_Base # Po [2] CANADIAN SYLLABICS CHI SIGN..CANADIAN SYLLABICS FULL STOP 166F..167F ; Grapheme_Base # Lo [17] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS BLACKFOOT W 1680 ; Grapheme_Base # Zs OGHAM SPACE MARK 1681..169A ; Grapheme_Base # Lo [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH 169B ; Grapheme_Base # Ps OGHAM FEATHER MARK 169C ; Grapheme_Base # Pe OGHAM REVERSED FEATHER MARK 16A0..16EA ; Grapheme_Base # Lo [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X 16EB..16ED ; Grapheme_Base # Po [3] RUNIC SINGLE PUNCTUATION..RUNIC CROSS PUNCTUATION 16EE..16F0 ; Grapheme_Base # Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL 16F1..16F8 ; Grapheme_Base # Lo [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC 1700..170C ; Grapheme_Base # Lo [13] TAGALOG LETTER A..TAGALOG LETTER YA 170E..1711 ; Grapheme_Base # Lo [4] TAGALOG LETTER LA..TAGALOG LETTER HA 1720..1731 ; Grapheme_Base # Lo [18] HANUNOO LETTER A..HANUNOO LETTER HA 1735..1736 ; Grapheme_Base # Po [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION 1740..1751 ; Grapheme_Base # Lo [18] BUHID LETTER A..BUHID LETTER HA 1760..176C ; Grapheme_Base # Lo [13] TAGBANWA LETTER A..TAGBANWA LETTER YA 176E..1770 ; Grapheme_Base # Lo [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA 1780..17B3 ; Grapheme_Base # Lo [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU 17B6 ; Grapheme_Base # Mc KHMER VOWEL SIGN AA 17BE..17C5 ; Grapheme_Base # Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU 17C7..17C8 ; Grapheme_Base # Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU 17D4..17D6 ; Grapheme_Base # Po [3] KHMER SIGN KHAN..KHMER SIGN CAMNUC PII KUUH 17D7 ; Grapheme_Base # Lm KHMER SIGN LEK TOO 17D8..17DA ; Grapheme_Base # Po [3] KHMER SIGN BEYYAL..KHMER SIGN KOOMUUT 17DB ; Grapheme_Base # Sc KHMER CURRENCY SYMBOL RIEL 17DC ; Grapheme_Base # Lo KHMER SIGN AVAKRAHASANYA 17E0..17E9 ; Grapheme_Base # Nd [10] KHMER DIGIT ZERO..KHMER DIGIT NINE 17F0..17F9 ; Grapheme_Base # No [10] KHMER SYMBOL LEK ATTAK SON..KHMER SYMBOL LEK ATTAK PRAM-BUON 1800..1805 ; Grapheme_Base # Po [6] MONGOLIAN BIRGA..MONGOLIAN FOUR DOTS 1806 ; Grapheme_Base # Pd MONGOLIAN TODO SOFT HYPHEN 1807..180A ; Grapheme_Base # Po [4] MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER..MONGOLIAN NIRUGU 1810..1819 ; Grapheme_Base # Nd [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE 1820..1842 ; Grapheme_Base # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI 1843 ; Grapheme_Base # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN 1844..1877 ; Grapheme_Base # Lo [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA 1880..1884 ; Grapheme_Base # Lo [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA 1887..18A8 ; Grapheme_Base # Lo [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA 18AA ; Grapheme_Base # Lo MONGOLIAN LETTER MANCHU ALI GALI LHA 18B0..18F5 ; Grapheme_Base # Lo [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S 1900..191E ; Grapheme_Base # Lo [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA 1923..1926 ; Grapheme_Base # Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU 1929..192B ; Grapheme_Base # Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA 1930..1931 ; Grapheme_Base # Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA 1933..1938 ; Grapheme_Base # Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA 1940 ; Grapheme_Base # So LIMBU SIGN LOO 1944..1945 ; Grapheme_Base # Po [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK 1946..194F ; Grapheme_Base # Nd [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE 1950..196D ; Grapheme_Base # Lo [30] TAI LE LETTER KA..TAI LE LETTER AI 1970..1974 ; Grapheme_Base # Lo [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6 1980..19AB ; Grapheme_Base # Lo [44] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW SUA 19B0..19C9 ; Grapheme_Base # Lo [26] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE TONE MARK-2 19D0..19D9 ; Grapheme_Base # Nd [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE 19DA ; Grapheme_Base # No NEW TAI LUE THAM DIGIT ONE 19DE..19FF ; Grapheme_Base # So [34] NEW TAI LUE SIGN LAE..KHMER SYMBOL DAP-PRAM ROC 1A00..1A16 ; Grapheme_Base # Lo [23] BUGINESE LETTER KA..BUGINESE LETTER HA 1A19..1A1A ; Grapheme_Base # Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O 1A1E..1A1F ; Grapheme_Base # Po [2] BUGINESE PALLAWA..BUGINESE END OF SECTION 1A20..1A54 ; Grapheme_Base # Lo [53] TAI THAM LETTER HIGH KA..TAI THAM LETTER GREAT SA 1A55 ; Grapheme_Base # Mc TAI THAM CONSONANT SIGN MEDIAL RA 1A57 ; Grapheme_Base # Mc TAI THAM CONSONANT SIGN LA TANG LAI 1A61 ; Grapheme_Base # Mc TAI THAM VOWEL SIGN A 1A63..1A64 ; Grapheme_Base # Mc [2] TAI THAM VOWEL SIGN AA..TAI THAM VOWEL SIGN TALL AA 1A6D..1A72 ; Grapheme_Base # Mc [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI 1A80..1A89 ; Grapheme_Base # Nd [10] TAI THAM HORA DIGIT ZERO..TAI THAM HORA DIGIT NINE 1A90..1A99 ; Grapheme_Base # Nd [10] TAI THAM THAM DIGIT ZERO..TAI THAM THAM DIGIT NINE 1AA0..1AA6 ; Grapheme_Base # Po [7] TAI THAM SIGN WIANG..TAI THAM SIGN REVERSED ROTATED RANA 1AA7 ; Grapheme_Base # Lm TAI THAM SIGN MAI YAMOK 1AA8..1AAD ; Grapheme_Base # Po [6] TAI THAM SIGN KAAN..TAI THAM SIGN CAANG 1B04 ; Grapheme_Base # Mc BALINESE SIGN BISAH 1B05..1B33 ; Grapheme_Base # Lo [47] BALINESE LETTER AKARA..BALINESE LETTER HA 1B35 ; Grapheme_Base # Mc BALINESE VOWEL SIGN TEDUNG 1B3B ; Grapheme_Base # Mc BALINESE VOWEL SIGN RA REPA TEDUNG 1B3D..1B41 ; Grapheme_Base # Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG 1B43..1B44 ; Grapheme_Base # Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG 1B45..1B4B ; Grapheme_Base # Lo [7] BALINESE LETTER KAF SASAK..BALINESE LETTER ASYURA SASAK 1B50..1B59 ; Grapheme_Base # Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE 1B5A..1B60 ; Grapheme_Base # Po [7] BALINESE PANTI..BALINESE PAMENENG 1B61..1B6A ; Grapheme_Base # So [10] BALINESE MUSICAL SYMBOL DONG..BALINESE MUSICAL SYMBOL DANG GEDE 1B74..1B7C ; Grapheme_Base # So [9] BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG..BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING 1B82 ; Grapheme_Base # Mc SUNDANESE SIGN PANGWISAD 1B83..1BA0 ; Grapheme_Base # Lo [30] SUNDANESE LETTER A..SUNDANESE LETTER HA 1BA1 ; Grapheme_Base # Mc SUNDANESE CONSONANT SIGN PAMINGKAL 1BA6..1BA7 ; Grapheme_Base # Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG 1BAA ; Grapheme_Base # Mc SUNDANESE SIGN PAMAAEH 1BAE..1BAF ; Grapheme_Base # Lo [2] SUNDANESE LETTER KHA..SUNDANESE LETTER SYA 1BB0..1BB9 ; Grapheme_Base # Nd [10] SUNDANESE DIGIT ZERO..SUNDANESE DIGIT NINE 1BBA..1BE5 ; Grapheme_Base # Lo [44] SUNDANESE AVAGRAHA..BATAK LETTER U 1BE7 ; Grapheme_Base # Mc BATAK VOWEL SIGN E 1BEA..1BEC ; Grapheme_Base # Mc [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O 1BEE ; Grapheme_Base # Mc BATAK VOWEL SIGN U 1BF2..1BF3 ; Grapheme_Base # Mc [2] BATAK PANGOLAT..BATAK PANONGONAN 1BFC..1BFF ; Grapheme_Base # Po [4] BATAK SYMBOL BINDU NA METEK..BATAK SYMBOL BINDU PANGOLAT 1C00..1C23 ; Grapheme_Base # Lo [36] LEPCHA LETTER KA..LEPCHA LETTER A 1C24..1C2B ; Grapheme_Base # Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU 1C34..1C35 ; Grapheme_Base # Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG 1C3B..1C3F ; Grapheme_Base # Po [5] LEPCHA PUNCTUATION TA-ROL..LEPCHA PUNCTUATION TSHOOK 1C40..1C49 ; Grapheme_Base # Nd [10] LEPCHA DIGIT ZERO..LEPCHA DIGIT NINE 1C4D..1C4F ; Grapheme_Base # Lo [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA 1C50..1C59 ; Grapheme_Base # Nd [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE 1C5A..1C77 ; Grapheme_Base # Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH 1C78..1C7D ; Grapheme_Base # Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD 1C7E..1C7F ; Grapheme_Base # Po [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD 1C80..1C88 ; Grapheme_Base # L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK 1CC0..1CC7 ; Grapheme_Base # Po [8] SUNDANESE PUNCTUATION BINDU SURYA..SUNDANESE PUNCTUATION BINDU BA SATANGA 1CD3 ; Grapheme_Base # Po VEDIC SIGN NIHSHVASA 1CE1 ; Grapheme_Base # Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA 1CE9..1CEC ; Grapheme_Base # Lo [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL 1CEE..1CF1 ; Grapheme_Base # Lo [4] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ANUSVARA UBHAYATO MUKHA 1CF2..1CF3 ; Grapheme_Base # Mc [2] VEDIC SIGN ARDHAVISARGA..VEDIC SIGN ROTATED ARDHAVISARGA 1CF5..1CF6 ; Grapheme_Base # Lo [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA 1D00..1D2B ; Grapheme_Base # L& [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL 1D2C..1D6A ; Grapheme_Base # Lm [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI 1D6B..1D77 ; Grapheme_Base # L& [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G 1D78 ; Grapheme_Base # Lm MODIFIER LETTER CYRILLIC EN 1D79..1D9A ; Grapheme_Base # L& [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK 1D9B..1DBF ; Grapheme_Base # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA 1E00..1F15 ; Grapheme_Base # L& [278] LATIN CAPITAL LETTER A WITH RING BELOW..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA 1F18..1F1D ; Grapheme_Base # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA 1F20..1F45 ; Grapheme_Base # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA 1F48..1F4D ; Grapheme_Base # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA 1F50..1F57 ; Grapheme_Base # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI 1F59 ; Grapheme_Base # L& GREEK CAPITAL LETTER UPSILON WITH DASIA 1F5B ; Grapheme_Base # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA 1F5D ; Grapheme_Base # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA 1F5F..1F7D ; Grapheme_Base # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA 1F80..1FB4 ; Grapheme_Base # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI 1FB6..1FBC ; Grapheme_Base # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI 1FBD ; Grapheme_Base # Sk GREEK KORONIS 1FBE ; Grapheme_Base # L& GREEK PROSGEGRAMMENI 1FBF..1FC1 ; Grapheme_Base # Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI 1FC2..1FC4 ; Grapheme_Base # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI 1FC6..1FCC ; Grapheme_Base # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI 1FCD..1FCF ; Grapheme_Base # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI 1FD0..1FD3 ; Grapheme_Base # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA 1FD6..1FDB ; Grapheme_Base # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA 1FDD..1FDF ; Grapheme_Base # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI 1FE0..1FEC ; Grapheme_Base # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA 1FED..1FEF ; Grapheme_Base # Sk [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA 1FF2..1FF4 ; Grapheme_Base # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI 1FF6..1FFC ; Grapheme_Base # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI 1FFD..1FFE ; Grapheme_Base # Sk [2] GREEK OXIA..GREEK DASIA 2000..200A ; Grapheme_Base # Zs [11] EN QUAD..HAIR SPACE 2010..2015 ; Grapheme_Base # Pd [6] HYPHEN..HORIZONTAL BAR 2016..2017 ; Grapheme_Base # Po [2] DOUBLE VERTICAL LINE..DOUBLE LOW LINE 2018 ; Grapheme_Base # Pi LEFT SINGLE QUOTATION MARK 2019 ; Grapheme_Base # Pf RIGHT SINGLE QUOTATION MARK 201A ; Grapheme_Base # Ps SINGLE LOW-9 QUOTATION MARK 201B..201C ; Grapheme_Base # Pi [2] SINGLE HIGH-REVERSED-9 QUOTATION MARK..LEFT DOUBLE QUOTATION MARK 201D ; Grapheme_Base # Pf RIGHT DOUBLE QUOTATION MARK 201E ; Grapheme_Base # Ps DOUBLE LOW-9 QUOTATION MARK 201F ; Grapheme_Base # Pi DOUBLE HIGH-REVERSED-9 QUOTATION MARK 2020..2027 ; Grapheme_Base # Po [8] DAGGER..HYPHENATION POINT 202F ; Grapheme_Base # Zs NARROW NO-BREAK SPACE 2030..2038 ; Grapheme_Base # Po [9] PER MILLE SIGN..CARET 2039 ; Grapheme_Base # Pi SINGLE LEFT-POINTING ANGLE QUOTATION MARK 203A ; Grapheme_Base # Pf SINGLE RIGHT-POINTING ANGLE QUOTATION MARK 203B..203E ; Grapheme_Base # Po [4] REFERENCE MARK..OVERLINE 203F..2040 ; Grapheme_Base # Pc [2] UNDERTIE..CHARACTER TIE 2041..2043 ; Grapheme_Base # Po [3] CARET INSERTION POINT..HYPHEN BULLET 2044 ; Grapheme_Base # Sm FRACTION SLASH 2045 ; Grapheme_Base # Ps LEFT SQUARE BRACKET WITH QUILL 2046 ; Grapheme_Base # Pe RIGHT SQUARE BRACKET WITH QUILL 2047..2051 ; Grapheme_Base # Po [11] DOUBLE QUESTION MARK..TWO ASTERISKS ALIGNED VERTICALLY 2052 ; Grapheme_Base # Sm COMMERCIAL MINUS SIGN 2053 ; Grapheme_Base # Po SWUNG DASH 2054 ; Grapheme_Base # Pc INVERTED UNDERTIE 2055..205E ; Grapheme_Base # Po [10] FLOWER PUNCTUATION MARK..VERTICAL FOUR DOTS 205F ; Grapheme_Base # Zs MEDIUM MATHEMATICAL SPACE 2070 ; Grapheme_Base # No SUPERSCRIPT ZERO 2071 ; Grapheme_Base # Lm SUPERSCRIPT LATIN SMALL LETTER I 2074..2079 ; Grapheme_Base # No [6] SUPERSCRIPT FOUR..SUPERSCRIPT NINE 207A..207C ; Grapheme_Base # Sm [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN 207D ; Grapheme_Base # Ps SUPERSCRIPT LEFT PARENTHESIS 207E ; Grapheme_Base # Pe SUPERSCRIPT RIGHT PARENTHESIS 207F ; Grapheme_Base # Lm SUPERSCRIPT LATIN SMALL LETTER N 2080..2089 ; Grapheme_Base # No [10] SUBSCRIPT ZERO..SUBSCRIPT NINE 208A..208C ; Grapheme_Base # Sm [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN 208D ; Grapheme_Base # Ps SUBSCRIPT LEFT PARENTHESIS 208E ; Grapheme_Base # Pe SUBSCRIPT RIGHT PARENTHESIS 2090..209C ; Grapheme_Base # Lm [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T 20A0..20BE ; Grapheme_Base # Sc [31] EURO-CURRENCY SIGN..LARI SIGN 2100..2101 ; Grapheme_Base # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT 2102 ; Grapheme_Base # L& DOUBLE-STRUCK CAPITAL C 2103..2106 ; Grapheme_Base # So [4] DEGREE CELSIUS..CADA UNA 2107 ; Grapheme_Base # L& EULER CONSTANT 2108..2109 ; Grapheme_Base # So [2] SCRUPLE..DEGREE FAHRENHEIT 210A..2113 ; Grapheme_Base # L& [10] SCRIPT SMALL G..SCRIPT SMALL L 2114 ; Grapheme_Base # So L B BAR SYMBOL 2115 ; Grapheme_Base # L& DOUBLE-STRUCK CAPITAL N 2116..2117 ; Grapheme_Base # So [2] NUMERO SIGN..SOUND RECORDING COPYRIGHT 2118 ; Grapheme_Base # Sm SCRIPT CAPITAL P 2119..211D ; Grapheme_Base # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R 211E..2123 ; Grapheme_Base # So [6] PRESCRIPTION TAKE..VERSICLE 2124 ; Grapheme_Base # L& DOUBLE-STRUCK CAPITAL Z 2125 ; Grapheme_Base # So OUNCE SIGN 2126 ; Grapheme_Base # L& OHM SIGN 2127 ; Grapheme_Base # So INVERTED OHM SIGN 2128 ; Grapheme_Base # L& BLACK-LETTER CAPITAL Z 2129 ; Grapheme_Base # So TURNED GREEK SMALL LETTER IOTA 212A..212D ; Grapheme_Base # L& [4] KELVIN SIGN..BLACK-LETTER CAPITAL C 212E ; Grapheme_Base # So ESTIMATED SYMBOL 212F..2134 ; Grapheme_Base # L& [6] SCRIPT SMALL E..SCRIPT SMALL O 2135..2138 ; Grapheme_Base # Lo [4] ALEF SYMBOL..DALET SYMBOL 2139 ; Grapheme_Base # L& INFORMATION SOURCE 213A..213B ; Grapheme_Base # So [2] ROTATED CAPITAL Q..FACSIMILE SIGN 213C..213F ; Grapheme_Base # L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI 2140..2144 ; Grapheme_Base # Sm [5] DOUBLE-STRUCK N-ARY SUMMATION..TURNED SANS-SERIF CAPITAL Y 2145..2149 ; Grapheme_Base # L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J 214A ; Grapheme_Base # So PROPERTY LINE 214B ; Grapheme_Base # Sm TURNED AMPERSAND 214C..214D ; Grapheme_Base # So [2] PER SIGN..AKTIESELSKAB 214E ; Grapheme_Base # L& TURNED SMALL F 214F ; Grapheme_Base # So SYMBOL FOR SAMARITAN SOURCE 2150..215F ; Grapheme_Base # No [16] VULGAR FRACTION ONE SEVENTH..FRACTION NUMERATOR ONE 2160..2182 ; Grapheme_Base # Nl [35] ROMAN NUMERAL ONE..ROMAN NUMERAL TEN THOUSAND 2183..2184 ; Grapheme_Base # L& [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C 2185..2188 ; Grapheme_Base # Nl [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND 2189 ; Grapheme_Base # No VULGAR FRACTION ZERO THIRDS 218A..218B ; Grapheme_Base # So [2] TURNED DIGIT TWO..TURNED DIGIT THREE 2190..2194 ; Grapheme_Base # Sm [5] LEFTWARDS ARROW..LEFT RIGHT ARROW 2195..2199 ; Grapheme_Base # So [5] UP DOWN ARROW..SOUTH WEST ARROW 219A..219B ; Grapheme_Base # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE 219C..219F ; Grapheme_Base # So [4] LEFTWARDS WAVE ARROW..UPWARDS TWO HEADED ARROW 21A0 ; Grapheme_Base # Sm RIGHTWARDS TWO HEADED ARROW 21A1..21A2 ; Grapheme_Base # So [2] DOWNWARDS TWO HEADED ARROW..LEFTWARDS ARROW WITH TAIL 21A3 ; Grapheme_Base # Sm RIGHTWARDS ARROW WITH TAIL 21A4..21A5 ; Grapheme_Base # So [2] LEFTWARDS ARROW FROM BAR..UPWARDS ARROW FROM BAR 21A6 ; Grapheme_Base # Sm RIGHTWARDS ARROW FROM BAR 21A7..21AD ; Grapheme_Base # So [7] DOWNWARDS ARROW FROM BAR..LEFT RIGHT WAVE ARROW 21AE ; Grapheme_Base # Sm LEFT RIGHT ARROW WITH STROKE 21AF..21CD ; Grapheme_Base # So [31] DOWNWARDS ZIGZAG ARROW..LEFTWARDS DOUBLE ARROW WITH STROKE 21CE..21CF ; Grapheme_Base # Sm [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE 21D0..21D1 ; Grapheme_Base # So [2] LEFTWARDS DOUBLE ARROW..UPWARDS DOUBLE ARROW 21D2 ; Grapheme_Base # Sm RIGHTWARDS DOUBLE ARROW 21D3 ; Grapheme_Base # So DOWNWARDS DOUBLE ARROW 21D4 ; Grapheme_Base # Sm LEFT RIGHT DOUBLE ARROW 21D5..21F3 ; Grapheme_Base # So [31] UP DOWN DOUBLE ARROW..UP DOWN WHITE ARROW 21F4..22FF ; Grapheme_Base # Sm [268] RIGHT ARROW WITH SMALL CIRCLE..Z NOTATION BAG MEMBERSHIP 2300..2307 ; Grapheme_Base # So [8] DIAMETER SIGN..WAVY LINE 2308 ; Grapheme_Base # Ps LEFT CEILING 2309 ; Grapheme_Base # Pe RIGHT CEILING 230A ; Grapheme_Base # Ps LEFT FLOOR 230B ; Grapheme_Base # Pe RIGHT FLOOR 230C..231F ; Grapheme_Base # So [20] BOTTOM RIGHT CROP..BOTTOM RIGHT CORNER 2320..2321 ; Grapheme_Base # Sm [2] TOP HALF INTEGRAL..BOTTOM HALF INTEGRAL 2322..2328 ; Grapheme_Base # So [7] FROWN..KEYBOARD 2329 ; Grapheme_Base # Ps LEFT-POINTING ANGLE BRACKET 232A ; Grapheme_Base # Pe RIGHT-POINTING ANGLE BRACKET 232B..237B ; Grapheme_Base # So [81] ERASE TO THE LEFT..NOT CHECK MARK 237C ; Grapheme_Base # Sm RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW 237D..239A ; Grapheme_Base # So [30] SHOULDERED OPEN BOX..CLEAR SCREEN SYMBOL 239B..23B3 ; Grapheme_Base # Sm [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM 23B4..23DB ; Grapheme_Base # So [40] TOP SQUARE BRACKET..FUSE 23DC..23E1 ; Grapheme_Base # Sm [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET 23E2..23FE ; Grapheme_Base # So [29] WHITE TRAPEZIUM..POWER SLEEP SYMBOL 2400..2426 ; Grapheme_Base # So [39] SYMBOL FOR NULL..SYMBOL FOR SUBSTITUTE FORM TWO 2440..244A ; Grapheme_Base # So [11] OCR HOOK..OCR DOUBLE BACKSLASH 2460..249B ; Grapheme_Base # No [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP 249C..24E9 ; Grapheme_Base # So [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z 24EA..24FF ; Grapheme_Base # No [22] CIRCLED DIGIT ZERO..NEGATIVE CIRCLED DIGIT ZERO 2500..25B6 ; Grapheme_Base # So [183] BOX DRAWINGS LIGHT HORIZONTAL..BLACK RIGHT-POINTING TRIANGLE 25B7 ; Grapheme_Base # Sm WHITE RIGHT-POINTING TRIANGLE 25B8..25C0 ; Grapheme_Base # So [9] BLACK RIGHT-POINTING SMALL TRIANGLE..BLACK LEFT-POINTING TRIANGLE 25C1 ; Grapheme_Base # Sm WHITE LEFT-POINTING TRIANGLE 25C2..25F7 ; Grapheme_Base # So [54] BLACK LEFT-POINTING SMALL TRIANGLE..WHITE CIRCLE WITH UPPER RIGHT QUADRANT 25F8..25FF ; Grapheme_Base # Sm [8] UPPER LEFT TRIANGLE..LOWER RIGHT TRIANGLE 2600..266E ; Grapheme_Base # So [111] BLACK SUN WITH RAYS..MUSIC NATURAL SIGN 266F ; Grapheme_Base # Sm MUSIC SHARP SIGN 2670..2767 ; Grapheme_Base # So [248] WEST SYRIAC CROSS..ROTATED FLORAL HEART BULLET 2768 ; Grapheme_Base # Ps MEDIUM LEFT PARENTHESIS ORNAMENT 2769 ; Grapheme_Base # Pe MEDIUM RIGHT PARENTHESIS ORNAMENT 276A ; Grapheme_Base # Ps MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT 276B ; Grapheme_Base # Pe MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT 276C ; Grapheme_Base # Ps MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT 276D ; Grapheme_Base # Pe MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT 276E ; Grapheme_Base # Ps HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT 276F ; Grapheme_Base # Pe HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT 2770 ; Grapheme_Base # Ps HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT 2771 ; Grapheme_Base # Pe HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT 2772 ; Grapheme_Base # Ps LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT 2773 ; Grapheme_Base # Pe LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT 2774 ; Grapheme_Base # Ps MEDIUM LEFT CURLY BRACKET ORNAMENT 2775 ; Grapheme_Base # Pe MEDIUM RIGHT CURLY BRACKET ORNAMENT 2776..2793 ; Grapheme_Base # No [30] DINGBAT NEGATIVE CIRCLED DIGIT ONE..DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN 2794..27BF ; Grapheme_Base # So [44] HEAVY WIDE-HEADED RIGHTWARDS ARROW..DOUBLE CURLY LOOP 27C0..27C4 ; Grapheme_Base # Sm [5] THREE DIMENSIONAL ANGLE..OPEN SUPERSET 27C5 ; Grapheme_Base # Ps LEFT S-SHAPED BAG DELIMITER 27C6 ; Grapheme_Base # Pe RIGHT S-SHAPED BAG DELIMITER 27C7..27E5 ; Grapheme_Base # Sm [31] OR WITH DOT INSIDE..WHITE SQUARE WITH RIGHTWARDS TICK 27E6 ; Grapheme_Base # Ps MATHEMATICAL LEFT WHITE SQUARE BRACKET 27E7 ; Grapheme_Base # Pe MATHEMATICAL RIGHT WHITE SQUARE BRACKET 27E8 ; Grapheme_Base # Ps MATHEMATICAL LEFT ANGLE BRACKET 27E9 ; Grapheme_Base # Pe MATHEMATICAL RIGHT ANGLE BRACKET 27EA ; Grapheme_Base # Ps MATHEMATICAL LEFT DOUBLE ANGLE BRACKET 27EB ; Grapheme_Base # Pe MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET 27EC ; Grapheme_Base # Ps MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET 27ED ; Grapheme_Base # Pe MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET 27EE ; Grapheme_Base # Ps MATHEMATICAL LEFT FLATTENED PARENTHESIS 27EF ; Grapheme_Base # Pe MATHEMATICAL RIGHT FLATTENED PARENTHESIS 27F0..27FF ; Grapheme_Base # Sm [16] UPWARDS QUADRUPLE ARROW..LONG RIGHTWARDS SQUIGGLE ARROW 2800..28FF ; Grapheme_Base # So [256] BRAILLE PATTERN BLANK..BRAILLE PATTERN DOTS-12345678 2900..2982 ; Grapheme_Base # Sm [131] RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE..Z NOTATION TYPE COLON 2983 ; Grapheme_Base # Ps LEFT WHITE CURLY BRACKET 2984 ; Grapheme_Base # Pe RIGHT WHITE CURLY BRACKET 2985 ; Grapheme_Base # Ps LEFT WHITE PARENTHESIS 2986 ; Grapheme_Base # Pe RIGHT WHITE PARENTHESIS 2987 ; Grapheme_Base # Ps Z NOTATION LEFT IMAGE BRACKET 2988 ; Grapheme_Base # Pe Z NOTATION RIGHT IMAGE BRACKET 2989 ; Grapheme_Base # Ps Z NOTATION LEFT BINDING BRACKET 298A ; Grapheme_Base # Pe Z NOTATION RIGHT BINDING BRACKET 298B ; Grapheme_Base # Ps LEFT SQUARE BRACKET WITH UNDERBAR 298C ; Grapheme_Base # Pe RIGHT SQUARE BRACKET WITH UNDERBAR 298D ; Grapheme_Base # Ps LEFT SQUARE BRACKET WITH TICK IN TOP CORNER 298E ; Grapheme_Base # Pe RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER 298F ; Grapheme_Base # Ps LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER 2990 ; Grapheme_Base # Pe RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER 2991 ; Grapheme_Base # Ps LEFT ANGLE BRACKET WITH DOT 2992 ; Grapheme_Base # Pe RIGHT ANGLE BRACKET WITH DOT 2993 ; Grapheme_Base # Ps LEFT ARC LESS-THAN BRACKET 2994 ; Grapheme_Base # Pe RIGHT ARC GREATER-THAN BRACKET 2995 ; Grapheme_Base # Ps DOUBLE LEFT ARC GREATER-THAN BRACKET 2996 ; Grapheme_Base # Pe DOUBLE RIGHT ARC LESS-THAN BRACKET 2997 ; Grapheme_Base # Ps LEFT BLACK TORTOISE SHELL BRACKET 2998 ; Grapheme_Base # Pe RIGHT BLACK TORTOISE SHELL BRACKET 2999..29D7 ; Grapheme_Base # Sm [63] DOTTED FENCE..BLACK HOURGLASS 29D8 ; Grapheme_Base # Ps LEFT WIGGLY FENCE 29D9 ; Grapheme_Base # Pe RIGHT WIGGLY FENCE 29DA ; Grapheme_Base # Ps LEFT DOUBLE WIGGLY FENCE 29DB ; Grapheme_Base # Pe RIGHT DOUBLE WIGGLY FENCE 29DC..29FB ; Grapheme_Base # Sm [32] INCOMPLETE INFINITY..TRIPLE PLUS 29FC ; Grapheme_Base # Ps LEFT-POINTING CURVED ANGLE BRACKET 29FD ; Grapheme_Base # Pe RIGHT-POINTING CURVED ANGLE BRACKET 29FE..2AFF ; Grapheme_Base # Sm [258] TINY..N-ARY WHITE VERTICAL BAR 2B00..2B2F ; Grapheme_Base # So [48] NORTH EAST WHITE ARROW..WHITE VERTICAL ELLIPSE 2B30..2B44 ; Grapheme_Base # Sm [21] LEFT ARROW WITH SMALL CIRCLE..RIGHTWARDS ARROW THROUGH SUPERSET 2B45..2B46 ; Grapheme_Base # So [2] LEFTWARDS QUADRUPLE ARROW..RIGHTWARDS QUADRUPLE ARROW 2B47..2B4C ; Grapheme_Base # Sm [6] REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW..RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR 2B4D..2B73 ; Grapheme_Base # So [39] DOWNWARDS TRIANGLE-HEADED ZIGZAG ARROW..DOWNWARDS TRIANGLE-HEADED ARROW TO BAR 2B76..2B95 ; Grapheme_Base # So [32] NORTH WEST TRIANGLE-HEADED ARROW TO BAR..RIGHTWARDS BLACK ARROW 2B98..2BB9 ; Grapheme_Base # So [34] THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..UP ARROWHEAD IN A RECTANGLE BOX 2BBD..2BC8 ; Grapheme_Base # So [12] BALLOT BOX WITH LIGHT X..BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED 2BCA..2BD1 ; Grapheme_Base # So [8] TOP HALF BLACK CIRCLE..UNCERTAINTY SIGN 2BEC..2BEF ; Grapheme_Base # So [4] LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS..DOWNWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS 2C00..2C2E ; Grapheme_Base # L& [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE 2C30..2C5E ; Grapheme_Base # L& [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE 2C60..2C7B ; Grapheme_Base # L& [28] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN LETTER SMALL CAPITAL TURNED E 2C7C..2C7D ; Grapheme_Base # Lm [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V 2C7E..2CE4 ; Grapheme_Base # L& [103] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC SYMBOL KAI 2CE5..2CEA ; Grapheme_Base # So [6] COPTIC SYMBOL MI RO..COPTIC SYMBOL SHIMA SIMA 2CEB..2CEE ; Grapheme_Base # L& [4] COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI..COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA 2CF2..2CF3 ; Grapheme_Base # L& [2] COPTIC CAPITAL LETTER BOHAIRIC KHEI..COPTIC SMALL LETTER BOHAIRIC KHEI 2CF9..2CFC ; Grapheme_Base # Po [4] COPTIC OLD NUBIAN FULL STOP..COPTIC OLD NUBIAN VERSE DIVIDER 2CFD ; Grapheme_Base # No COPTIC FRACTION ONE HALF 2CFE..2CFF ; Grapheme_Base # Po [2] COPTIC FULL STOP..COPTIC MORPHOLOGICAL DIVIDER 2D00..2D25 ; Grapheme_Base # L& [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE 2D27 ; Grapheme_Base # L& GEORGIAN SMALL LETTER YN 2D2D ; Grapheme_Base # L& GEORGIAN SMALL LETTER AEN 2D30..2D67 ; Grapheme_Base # Lo [56] TIFINAGH LETTER YA..TIFINAGH LETTER YO 2D6F ; Grapheme_Base # Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK 2D70 ; Grapheme_Base # Po TIFINAGH SEPARATOR MARK 2D80..2D96 ; Grapheme_Base # Lo [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE 2DA0..2DA6 ; Grapheme_Base # Lo [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO 2DA8..2DAE ; Grapheme_Base # Lo [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO 2DB0..2DB6 ; Grapheme_Base # Lo [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO 2DB8..2DBE ; Grapheme_Base # Lo [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO 2DC0..2DC6 ; Grapheme_Base # Lo [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO 2DC8..2DCE ; Grapheme_Base # Lo [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO 2DD0..2DD6 ; Grapheme_Base # Lo [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO 2DD8..2DDE ; Grapheme_Base # Lo [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO 2E00..2E01 ; Grapheme_Base # Po [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER 2E02 ; Grapheme_Base # Pi LEFT SUBSTITUTION BRACKET 2E03 ; Grapheme_Base # Pf RIGHT SUBSTITUTION BRACKET 2E04 ; Grapheme_Base # Pi LEFT DOTTED SUBSTITUTION BRACKET 2E05 ; Grapheme_Base # Pf RIGHT DOTTED SUBSTITUTION BRACKET 2E06..2E08 ; Grapheme_Base # Po [3] RAISED INTERPOLATION MARKER..DOTTED TRANSPOSITION MARKER 2E09 ; Grapheme_Base # Pi LEFT TRANSPOSITION BRACKET 2E0A ; Grapheme_Base # Pf RIGHT TRANSPOSITION BRACKET 2E0B ; Grapheme_Base # Po RAISED SQUARE 2E0C ; Grapheme_Base # Pi LEFT RAISED OMISSION BRACKET 2E0D ; Grapheme_Base # Pf RIGHT RAISED OMISSION BRACKET 2E0E..2E16 ; Grapheme_Base # Po [9] EDITORIAL CORONIS..DOTTED RIGHT-POINTING ANGLE 2E17 ; Grapheme_Base # Pd DOUBLE OBLIQUE HYPHEN 2E18..2E19 ; Grapheme_Base # Po [2] INVERTED INTERROBANG..PALM BRANCH 2E1A ; Grapheme_Base # Pd HYPHEN WITH DIAERESIS 2E1B ; Grapheme_Base # Po TILDE WITH RING ABOVE 2E1C ; Grapheme_Base # Pi LEFT LOW PARAPHRASE BRACKET 2E1D ; Grapheme_Base # Pf RIGHT LOW PARAPHRASE BRACKET 2E1E..2E1F ; Grapheme_Base # Po [2] TILDE WITH DOT ABOVE..TILDE WITH DOT BELOW 2E20 ; Grapheme_Base # Pi LEFT VERTICAL BAR WITH QUILL 2E21 ; Grapheme_Base # Pf RIGHT VERTICAL BAR WITH QUILL 2E22 ; Grapheme_Base # Ps TOP LEFT HALF BRACKET 2E23 ; Grapheme_Base # Pe TOP RIGHT HALF BRACKET 2E24 ; Grapheme_Base # Ps BOTTOM LEFT HALF BRACKET 2E25 ; Grapheme_Base # Pe BOTTOM RIGHT HALF BRACKET 2E26 ; Grapheme_Base # Ps LEFT SIDEWAYS U BRACKET 2E27 ; Grapheme_Base # Pe RIGHT SIDEWAYS U BRACKET 2E28 ; Grapheme_Base # Ps LEFT DOUBLE PARENTHESIS 2E29 ; Grapheme_Base # Pe RIGHT DOUBLE PARENTHESIS 2E2A..2E2E ; Grapheme_Base # Po [5] TWO DOTS OVER ONE DOT PUNCTUATION..REVERSED QUESTION MARK 2E2F ; Grapheme_Base # Lm VERTICAL TILDE 2E30..2E39 ; Grapheme_Base # Po [10] RING POINT..TOP HALF SECTION SIGN 2E3A..2E3B ; Grapheme_Base # Pd [2] TWO-EM DASH..THREE-EM DASH 2E3C..2E3F ; Grapheme_Base # Po [4] STENOGRAPHIC FULL STOP..CAPITULUM 2E40 ; Grapheme_Base # Pd DOUBLE HYPHEN 2E41 ; Grapheme_Base # Po REVERSED COMMA 2E42 ; Grapheme_Base # Ps DOUBLE LOW-REVERSED-9 QUOTATION MARK 2E43..2E44 ; Grapheme_Base # Po [2] DASH WITH LEFT UPTURN..DOUBLE SUSPENSION MARK 2E80..2E99 ; Grapheme_Base # So [26] CJK RADICAL REPEAT..CJK RADICAL RAP 2E9B..2EF3 ; Grapheme_Base # So [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE 2F00..2FD5 ; Grapheme_Base # So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE 2FF0..2FFB ; Grapheme_Base # So [12] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID 3000 ; Grapheme_Base # Zs IDEOGRAPHIC SPACE 3001..3003 ; Grapheme_Base # Po [3] IDEOGRAPHIC COMMA..DITTO MARK 3004 ; Grapheme_Base # So JAPANESE INDUSTRIAL STANDARD SYMBOL 3005 ; Grapheme_Base # Lm IDEOGRAPHIC ITERATION MARK 3006 ; Grapheme_Base # Lo IDEOGRAPHIC CLOSING MARK 3007 ; Grapheme_Base # Nl IDEOGRAPHIC NUMBER ZERO 3008 ; Grapheme_Base # Ps LEFT ANGLE BRACKET 3009 ; Grapheme_Base # Pe RIGHT ANGLE BRACKET 300A ; Grapheme_Base # Ps LEFT DOUBLE ANGLE BRACKET 300B ; Grapheme_Base # Pe RIGHT DOUBLE ANGLE BRACKET 300C ; Grapheme_Base # Ps LEFT CORNER BRACKET 300D ; Grapheme_Base # Pe RIGHT CORNER BRACKET 300E ; Grapheme_Base # Ps LEFT WHITE CORNER BRACKET 300F ; Grapheme_Base # Pe RIGHT WHITE CORNER BRACKET 3010 ; Grapheme_Base # Ps LEFT BLACK LENTICULAR BRACKET 3011 ; Grapheme_Base # Pe RIGHT BLACK LENTICULAR BRACKET 3012..3013 ; Grapheme_Base # So [2] POSTAL MARK..GETA MARK 3014 ; Grapheme_Base # Ps LEFT TORTOISE SHELL BRACKET 3015 ; Grapheme_Base # Pe RIGHT TORTOISE SHELL BRACKET 3016 ; Grapheme_Base # Ps LEFT WHITE LENTICULAR BRACKET 3017 ; Grapheme_Base # Pe RIGHT WHITE LENTICULAR BRACKET 3018 ; Grapheme_Base # Ps LEFT WHITE TORTOISE SHELL BRACKET 3019 ; Grapheme_Base # Pe RIGHT WHITE TORTOISE SHELL BRACKET 301A ; Grapheme_Base # Ps LEFT WHITE SQUARE BRACKET 301B ; Grapheme_Base # Pe RIGHT WHITE SQUARE BRACKET 301C ; Grapheme_Base # Pd WAVE DASH 301D ; Grapheme_Base # Ps REVERSED DOUBLE PRIME QUOTATION MARK 301E..301F ; Grapheme_Base # Pe [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK 3020 ; Grapheme_Base # So POSTAL MARK FACE 3021..3029 ; Grapheme_Base # Nl [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE 3030 ; Grapheme_Base # Pd WAVY DASH 3031..3035 ; Grapheme_Base # Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF 3036..3037 ; Grapheme_Base # So [2] CIRCLED POSTAL MARK..IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL 3038..303A ; Grapheme_Base # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY 303B ; Grapheme_Base # Lm VERTICAL IDEOGRAPHIC ITERATION MARK 303C ; Grapheme_Base # Lo MASU MARK 303D ; Grapheme_Base # Po PART ALTERNATION MARK 303E..303F ; Grapheme_Base # So [2] IDEOGRAPHIC VARIATION INDICATOR..IDEOGRAPHIC HALF FILL SPACE 3041..3096 ; Grapheme_Base # Lo [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE 309B..309C ; Grapheme_Base # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK 309D..309E ; Grapheme_Base # Lm [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK 309F ; Grapheme_Base # Lo HIRAGANA DIGRAPH YORI 30A0 ; Grapheme_Base # Pd KATAKANA-HIRAGANA DOUBLE HYPHEN 30A1..30FA ; Grapheme_Base # Lo [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO 30FB ; Grapheme_Base # Po KATAKANA MIDDLE DOT 30FC..30FE ; Grapheme_Base # Lm [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK 30FF ; Grapheme_Base # Lo KATAKANA DIGRAPH KOTO 3105..312D ; Grapheme_Base # Lo [41] BOPOMOFO LETTER B..BOPOMOFO LETTER IH 3131..318E ; Grapheme_Base # Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE 3190..3191 ; Grapheme_Base # So [2] IDEOGRAPHIC ANNOTATION LINKING MARK..IDEOGRAPHIC ANNOTATION REVERSE MARK 3192..3195 ; Grapheme_Base # No [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK 3196..319F ; Grapheme_Base # So [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK 31A0..31BA ; Grapheme_Base # Lo [27] BOPOMOFO LETTER BU..BOPOMOFO LETTER ZY 31C0..31E3 ; Grapheme_Base # So [36] CJK STROKE T..CJK STROKE Q 31F0..31FF ; Grapheme_Base # Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO 3200..321E ; Grapheme_Base # So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU 3220..3229 ; Grapheme_Base # No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN 322A..3247 ; Grapheme_Base # So [30] PARENTHESIZED IDEOGRAPH MOON..CIRCLED IDEOGRAPH KOTO 3248..324F ; Grapheme_Base # No [8] CIRCLED NUMBER TEN ON BLACK SQUARE..CIRCLED NUMBER EIGHTY ON BLACK SQUARE 3250 ; Grapheme_Base # So PARTNERSHIP SIGN 3251..325F ; Grapheme_Base # No [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE 3260..327F ; Grapheme_Base # So [32] CIRCLED HANGUL KIYEOK..KOREAN STANDARD SYMBOL 3280..3289 ; Grapheme_Base # No [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN 328A..32B0 ; Grapheme_Base # So [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT 32B1..32BF ; Grapheme_Base # No [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY 32C0..32FE ; Grapheme_Base # So [63] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..CIRCLED KATAKANA WO 3300..33FF ; Grapheme_Base # So [256] SQUARE APAATO..SQUARE GAL 3400..4DB5 ; Grapheme_Base # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 4DC0..4DFF ; Grapheme_Base # So [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION 4E00..9FD5 ; Grapheme_Base # Lo [20950] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FD5 A000..A014 ; Grapheme_Base # Lo [21] YI SYLLABLE IT..YI SYLLABLE E A015 ; Grapheme_Base # Lm YI SYLLABLE WU A016..A48C ; Grapheme_Base # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR A490..A4C6 ; Grapheme_Base # So [55] YI RADICAL QOT..YI RADICAL KE A4D0..A4F7 ; Grapheme_Base # Lo [40] LISU LETTER BA..LISU LETTER OE A4F8..A4FD ; Grapheme_Base # Lm [6] LISU LETTER TONE MYA TI..LISU LETTER TONE MYA JEU A4FE..A4FF ; Grapheme_Base # Po [2] LISU PUNCTUATION COMMA..LISU PUNCTUATION FULL STOP A500..A60B ; Grapheme_Base # Lo [268] VAI SYLLABLE EE..VAI SYLLABLE NG A60C ; Grapheme_Base # Lm VAI SYLLABLE LENGTHENER A60D..A60F ; Grapheme_Base # Po [3] VAI COMMA..VAI QUESTION MARK A610..A61F ; Grapheme_Base # Lo [16] VAI SYLLABLE NDOLE FA..VAI SYMBOL JONG A620..A629 ; Grapheme_Base # Nd [10] VAI DIGIT ZERO..VAI DIGIT NINE A62A..A62B ; Grapheme_Base # Lo [2] VAI SYLLABLE NDOLE MA..VAI SYLLABLE NDOLE DO A640..A66D ; Grapheme_Base # L& [46] CYRILLIC CAPITAL LETTER ZEMLYA..CYRILLIC SMALL LETTER DOUBLE MONOCULAR O A66E ; Grapheme_Base # Lo CYRILLIC LETTER MULTIOCULAR O A673 ; Grapheme_Base # Po SLAVONIC ASTERISK A67E ; Grapheme_Base # Po CYRILLIC KAVYKA A67F ; Grapheme_Base # Lm CYRILLIC PAYEROK A680..A69B ; Grapheme_Base # L& [28] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER CROSSED O A69C..A69D ; Grapheme_Base # Lm [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN A6A0..A6E5 ; Grapheme_Base # Lo [70] BAMUM LETTER A..BAMUM LETTER KI A6E6..A6EF ; Grapheme_Base # Nl [10] BAMUM LETTER MO..BAMUM LETTER KOGHOM A6F2..A6F7 ; Grapheme_Base # Po [6] BAMUM NJAEMLI..BAMUM QUESTION MARK A700..A716 ; Grapheme_Base # Sk [23] MODIFIER LETTER CHINESE TONE YIN PING..MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR A717..A71F ; Grapheme_Base # Lm [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK A720..A721 ; Grapheme_Base # Sk [2] MODIFIER LETTER STRESS AND HIGH TONE..MODIFIER LETTER STRESS AND LOW TONE A722..A76F ; Grapheme_Base # L& [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN SMALL LETTER CON A770 ; Grapheme_Base # Lm MODIFIER LETTER US A771..A787 ; Grapheme_Base # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T A788 ; Grapheme_Base # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT A789..A78A ; Grapheme_Base # Sk [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN A78B..A78E ; Grapheme_Base # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT A78F ; Grapheme_Base # Lo LATIN LETTER SINOLOGICAL DOT A790..A7AE ; Grapheme_Base # L& [31] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER SMALL CAPITAL I A7B0..A7B7 ; Grapheme_Base # L& [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA A7F7 ; Grapheme_Base # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I A7F8..A7F9 ; Grapheme_Base # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE A7FA ; Grapheme_Base # L& LATIN LETTER SMALL CAPITAL TURNED M A7FB..A801 ; Grapheme_Base # Lo [7] LATIN EPIGRAPHIC LETTER REVERSED F..SYLOTI NAGRI LETTER I A803..A805 ; Grapheme_Base # Lo [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O A807..A80A ; Grapheme_Base # Lo [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO A80C..A822 ; Grapheme_Base # Lo [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO A823..A824 ; Grapheme_Base # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I A827 ; Grapheme_Base # Mc SYLOTI NAGRI VOWEL SIGN OO A828..A82B ; Grapheme_Base # So [4] SYLOTI NAGRI POETRY MARK-1..SYLOTI NAGRI POETRY MARK-4 A830..A835 ; Grapheme_Base # No [6] NORTH INDIC FRACTION ONE QUARTER..NORTH INDIC FRACTION THREE SIXTEENTHS A836..A837 ; Grapheme_Base # So [2] NORTH INDIC QUARTER MARK..NORTH INDIC PLACEHOLDER MARK A838 ; Grapheme_Base # Sc NORTH INDIC RUPEE MARK A839 ; Grapheme_Base # So NORTH INDIC QUANTITY MARK A840..A873 ; Grapheme_Base # Lo [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU A874..A877 ; Grapheme_Base # Po [4] PHAGS-PA SINGLE HEAD MARK..PHAGS-PA MARK DOUBLE SHAD A880..A881 ; Grapheme_Base # Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA A882..A8B3 ; Grapheme_Base # Lo [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA A8B4..A8C3 ; Grapheme_Base # Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU A8CE..A8CF ; Grapheme_Base # Po [2] SAURASHTRA DANDA..SAURASHTRA DOUBLE DANDA A8D0..A8D9 ; Grapheme_Base # Nd [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE A8F2..A8F7 ; Grapheme_Base # Lo [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA A8F8..A8FA ; Grapheme_Base # Po [3] DEVANAGARI SIGN PUSHPIKA..DEVANAGARI CARET A8FB ; Grapheme_Base # Lo DEVANAGARI HEADSTROKE A8FC ; Grapheme_Base # Po DEVANAGARI SIGN SIDDHAM A8FD ; Grapheme_Base # Lo DEVANAGARI JAIN OM A900..A909 ; Grapheme_Base # Nd [10] KAYAH LI DIGIT ZERO..KAYAH LI DIGIT NINE A90A..A925 ; Grapheme_Base # Lo [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO A92E..A92F ; Grapheme_Base # Po [2] KAYAH LI SIGN CWI..KAYAH LI SIGN SHYA A930..A946 ; Grapheme_Base # Lo [23] REJANG LETTER KA..REJANG LETTER A A952..A953 ; Grapheme_Base # Mc [2] REJANG CONSONANT SIGN H..REJANG VIRAMA A95F ; Grapheme_Base # Po REJANG SECTION MARK A960..A97C ; Grapheme_Base # Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH A983 ; Grapheme_Base # Mc JAVANESE SIGN WIGNYAN A984..A9B2 ; Grapheme_Base # Lo [47] JAVANESE LETTER A..JAVANESE LETTER HA A9B4..A9B5 ; Grapheme_Base # Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG A9BA..A9BB ; Grapheme_Base # Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE A9BD..A9C0 ; Grapheme_Base # Mc [4] JAVANESE CONSONANT SIGN KERET..JAVANESE PANGKON A9C1..A9CD ; Grapheme_Base # Po [13] JAVANESE LEFT RERENGGAN..JAVANESE TURNED PADA PISELEH A9CF ; Grapheme_Base # Lm JAVANESE PANGRANGKEP A9D0..A9D9 ; Grapheme_Base # Nd [10] JAVANESE DIGIT ZERO..JAVANESE DIGIT NINE A9DE..A9DF ; Grapheme_Base # Po [2] JAVANESE PADA TIRTA TUMETES..JAVANESE PADA ISEN-ISEN A9E0..A9E4 ; Grapheme_Base # Lo [5] MYANMAR LETTER SHAN GHA..MYANMAR LETTER SHAN BHA A9E6 ; Grapheme_Base # Lm MYANMAR MODIFIER LETTER SHAN REDUPLICATION A9E7..A9EF ; Grapheme_Base # Lo [9] MYANMAR LETTER TAI LAING NYA..MYANMAR LETTER TAI LAING NNA A9F0..A9F9 ; Grapheme_Base # Nd [10] MYANMAR TAI LAING DIGIT ZERO..MYANMAR TAI LAING DIGIT NINE A9FA..A9FE ; Grapheme_Base # Lo [5] MYANMAR LETTER TAI LAING LLA..MYANMAR LETTER TAI LAING BHA AA00..AA28 ; Grapheme_Base # Lo [41] CHAM LETTER A..CHAM LETTER HA AA2F..AA30 ; Grapheme_Base # Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI AA33..AA34 ; Grapheme_Base # Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA AA40..AA42 ; Grapheme_Base # Lo [3] CHAM LETTER FINAL K..CHAM LETTER FINAL NG AA44..AA4B ; Grapheme_Base # Lo [8] CHAM LETTER FINAL CH..CHAM LETTER FINAL SS AA4D ; Grapheme_Base # Mc CHAM CONSONANT SIGN FINAL H AA50..AA59 ; Grapheme_Base # Nd [10] CHAM DIGIT ZERO..CHAM DIGIT NINE AA5C..AA5F ; Grapheme_Base # Po [4] CHAM PUNCTUATION SPIRAL..CHAM PUNCTUATION TRIPLE DANDA AA60..AA6F ; Grapheme_Base # Lo [16] MYANMAR LETTER KHAMTI GA..MYANMAR LETTER KHAMTI FA AA70 ; Grapheme_Base # Lm MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION AA71..AA76 ; Grapheme_Base # Lo [6] MYANMAR LETTER KHAMTI XA..MYANMAR LOGOGRAM KHAMTI HM AA77..AA79 ; Grapheme_Base # So [3] MYANMAR SYMBOL AITON EXCLAMATION..MYANMAR SYMBOL AITON TWO AA7A ; Grapheme_Base # Lo MYANMAR LETTER AITON RA AA7B ; Grapheme_Base # Mc MYANMAR SIGN PAO KAREN TONE AA7D ; Grapheme_Base # Mc MYANMAR SIGN TAI LAING TONE-5 AA7E..AAAF ; Grapheme_Base # Lo [50] MYANMAR LETTER SHWE PALAUNG CHA..TAI VIET LETTER HIGH O AAB1 ; Grapheme_Base # Lo TAI VIET VOWEL AA AAB5..AAB6 ; Grapheme_Base # Lo [2] TAI VIET VOWEL E..TAI VIET VOWEL O AAB9..AABD ; Grapheme_Base # Lo [5] TAI VIET VOWEL UEA..TAI VIET VOWEL AN AAC0 ; Grapheme_Base # Lo TAI VIET TONE MAI NUENG AAC2 ; Grapheme_Base # Lo TAI VIET TONE MAI SONG AADB..AADC ; Grapheme_Base # Lo [2] TAI VIET SYMBOL KON..TAI VIET SYMBOL NUENG AADD ; Grapheme_Base # Lm TAI VIET SYMBOL SAM AADE..AADF ; Grapheme_Base # Po [2] TAI VIET SYMBOL HO HOI..TAI VIET SYMBOL KOI KOI AAE0..AAEA ; Grapheme_Base # Lo [11] MEETEI MAYEK LETTER E..MEETEI MAYEK LETTER SSA AAEB ; Grapheme_Base # Mc MEETEI MAYEK VOWEL SIGN II AAEE..AAEF ; Grapheme_Base # Mc [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU AAF0..AAF1 ; Grapheme_Base # Po [2] MEETEI MAYEK CHEIKHAN..MEETEI MAYEK AHANG KHUDAM AAF2 ; Grapheme_Base # Lo MEETEI MAYEK ANJI AAF3..AAF4 ; Grapheme_Base # Lm [2] MEETEI MAYEK SYLLABLE REPETITION MARK..MEETEI MAYEK WORD REPETITION MARK AAF5 ; Grapheme_Base # Mc MEETEI MAYEK VOWEL SIGN VISARGA AB01..AB06 ; Grapheme_Base # Lo [6] ETHIOPIC SYLLABLE TTHU..ETHIOPIC SYLLABLE TTHO AB09..AB0E ; Grapheme_Base # Lo [6] ETHIOPIC SYLLABLE DDHU..ETHIOPIC SYLLABLE DDHO AB11..AB16 ; Grapheme_Base # Lo [6] ETHIOPIC SYLLABLE DZU..ETHIOPIC SYLLABLE DZO AB20..AB26 ; Grapheme_Base # Lo [7] ETHIOPIC SYLLABLE CCHHA..ETHIOPIC SYLLABLE CCHHO AB28..AB2E ; Grapheme_Base # Lo [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO AB30..AB5A ; Grapheme_Base # L& [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG AB5B ; Grapheme_Base # Sk MODIFIER BREVE WITH INVERTED BREVE AB5C..AB5F ; Grapheme_Base # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK AB60..AB65 ; Grapheme_Base # L& [6] LATIN SMALL LETTER SAKHA YAT..GREEK LETTER SMALL CAPITAL OMEGA AB70..ABBF ; Grapheme_Base # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA ABC0..ABE2 ; Grapheme_Base # Lo [35] MEETEI MAYEK LETTER KOK..MEETEI MAYEK LETTER I LONSUM ABE3..ABE4 ; Grapheme_Base # Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP ABE6..ABE7 ; Grapheme_Base # Mc [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP ABE9..ABEA ; Grapheme_Base # Mc [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG ABEB ; Grapheme_Base # Po MEETEI MAYEK CHEIKHEI ABEC ; Grapheme_Base # Mc MEETEI MAYEK LUM IYEK ABF0..ABF9 ; Grapheme_Base # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE AC00..D7A3 ; Grapheme_Base # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH D7B0..D7C6 ; Grapheme_Base # Lo [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E D7CB..D7FB ; Grapheme_Base # Lo [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH F900..FA6D ; Grapheme_Base # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D FA70..FAD9 ; Grapheme_Base # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 FB00..FB06 ; Grapheme_Base # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST FB13..FB17 ; Grapheme_Base # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH FB1D ; Grapheme_Base # Lo HEBREW LETTER YOD WITH HIRIQ FB1F..FB28 ; Grapheme_Base # Lo [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV FB29 ; Grapheme_Base # Sm HEBREW LETTER ALTERNATIVE PLUS SIGN FB2A..FB36 ; Grapheme_Base # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH FB38..FB3C ; Grapheme_Base # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH FB3E ; Grapheme_Base # Lo HEBREW LETTER MEM WITH DAGESH FB40..FB41 ; Grapheme_Base # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH FB43..FB44 ; Grapheme_Base # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH FB46..FBB1 ; Grapheme_Base # Lo [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM FBB2..FBC1 ; Grapheme_Base # Sk [16] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL SMALL TAH BELOW FBD3..FD3D ; Grapheme_Base # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM FD3E ; Grapheme_Base # Pe ORNATE LEFT PARENTHESIS FD3F ; Grapheme_Base # Ps ORNATE RIGHT PARENTHESIS FD50..FD8F ; Grapheme_Base # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM FD92..FDC7 ; Grapheme_Base # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM FDF0..FDFB ; Grapheme_Base # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU FDFC ; Grapheme_Base # Sc RIAL SIGN FDFD ; Grapheme_Base # So ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM FE10..FE16 ; Grapheme_Base # Po [7] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL QUESTION MARK FE17 ; Grapheme_Base # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET FE18 ; Grapheme_Base # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET FE19 ; Grapheme_Base # Po PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS FE30 ; Grapheme_Base # Po PRESENTATION FORM FOR VERTICAL TWO DOT LEADER FE31..FE32 ; Grapheme_Base # Pd [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH FE33..FE34 ; Grapheme_Base # Pc [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE FE35 ; Grapheme_Base # Ps PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS FE36 ; Grapheme_Base # Pe PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS FE37 ; Grapheme_Base # Ps PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET FE38 ; Grapheme_Base # Pe PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET FE39 ; Grapheme_Base # Ps PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET FE3A ; Grapheme_Base # Pe PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET FE3B ; Grapheme_Base # Ps PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET FE3C ; Grapheme_Base # Pe PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET FE3D ; Grapheme_Base # Ps PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET FE3E ; Grapheme_Base # Pe PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET FE3F ; Grapheme_Base # Ps PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET FE40 ; Grapheme_Base # Pe PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET FE41 ; Grapheme_Base # Ps PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET FE42 ; Grapheme_Base # Pe PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET FE43 ; Grapheme_Base # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET FE44 ; Grapheme_Base # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET FE45..FE46 ; Grapheme_Base # Po [2] SESAME DOT..WHITE SESAME DOT FE47 ; Grapheme_Base # Ps PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET FE48 ; Grapheme_Base # Pe PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET FE49..FE4C ; Grapheme_Base # Po [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE FE4D..FE4F ; Grapheme_Base # Pc [3] DASHED LOW LINE..WAVY LOW LINE FE50..FE52 ; Grapheme_Base # Po [3] SMALL COMMA..SMALL FULL STOP FE54..FE57 ; Grapheme_Base # Po [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK FE58 ; Grapheme_Base # Pd SMALL EM DASH FE59 ; Grapheme_Base # Ps SMALL LEFT PARENTHESIS FE5A ; Grapheme_Base # Pe SMALL RIGHT PARENTHESIS FE5B ; Grapheme_Base # Ps SMALL LEFT CURLY BRACKET FE5C ; Grapheme_Base # Pe SMALL RIGHT CURLY BRACKET FE5D ; Grapheme_Base # Ps SMALL LEFT TORTOISE SHELL BRACKET FE5E ; Grapheme_Base # Pe SMALL RIGHT TORTOISE SHELL BRACKET FE5F..FE61 ; Grapheme_Base # Po [3] SMALL NUMBER SIGN..SMALL ASTERISK FE62 ; Grapheme_Base # Sm SMALL PLUS SIGN FE63 ; Grapheme_Base # Pd SMALL HYPHEN-MINUS FE64..FE66 ; Grapheme_Base # Sm [3] SMALL LESS-THAN SIGN..SMALL EQUALS SIGN FE68 ; Grapheme_Base # Po SMALL REVERSE SOLIDUS FE69 ; Grapheme_Base # Sc SMALL DOLLAR SIGN FE6A..FE6B ; Grapheme_Base # Po [2] SMALL PERCENT SIGN..SMALL COMMERCIAL AT FE70..FE74 ; Grapheme_Base # Lo [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM FE76..FEFC ; Grapheme_Base # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM FF01..FF03 ; Grapheme_Base # Po [3] FULLWIDTH EXCLAMATION MARK..FULLWIDTH NUMBER SIGN FF04 ; Grapheme_Base # Sc FULLWIDTH DOLLAR SIGN FF05..FF07 ; Grapheme_Base # Po [3] FULLWIDTH PERCENT SIGN..FULLWIDTH APOSTROPHE FF08 ; Grapheme_Base # Ps FULLWIDTH LEFT PARENTHESIS FF09 ; Grapheme_Base # Pe FULLWIDTH RIGHT PARENTHESIS FF0A ; Grapheme_Base # Po FULLWIDTH ASTERISK FF0B ; Grapheme_Base # Sm FULLWIDTH PLUS SIGN FF0C ; Grapheme_Base # Po FULLWIDTH COMMA FF0D ; Grapheme_Base # Pd FULLWIDTH HYPHEN-MINUS FF0E..FF0F ; Grapheme_Base # Po [2] FULLWIDTH FULL STOP..FULLWIDTH SOLIDUS FF10..FF19 ; Grapheme_Base # Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE FF1A..FF1B ; Grapheme_Base # Po [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON FF1C..FF1E ; Grapheme_Base # Sm [3] FULLWIDTH LESS-THAN SIGN..FULLWIDTH GREATER-THAN SIGN FF1F..FF20 ; Grapheme_Base # Po [2] FULLWIDTH QUESTION MARK..FULLWIDTH COMMERCIAL AT FF21..FF3A ; Grapheme_Base # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z FF3B ; Grapheme_Base # Ps FULLWIDTH LEFT SQUARE BRACKET FF3C ; Grapheme_Base # Po FULLWIDTH REVERSE SOLIDUS FF3D ; Grapheme_Base # Pe FULLWIDTH RIGHT SQUARE BRACKET FF3E ; Grapheme_Base # Sk FULLWIDTH CIRCUMFLEX ACCENT FF3F ; Grapheme_Base # Pc FULLWIDTH LOW LINE FF40 ; Grapheme_Base # Sk FULLWIDTH GRAVE ACCENT FF41..FF5A ; Grapheme_Base # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z FF5B ; Grapheme_Base # Ps FULLWIDTH LEFT CURLY BRACKET FF5C ; Grapheme_Base # Sm FULLWIDTH VERTICAL LINE FF5D ; Grapheme_Base # Pe FULLWIDTH RIGHT CURLY BRACKET FF5E ; Grapheme_Base # Sm FULLWIDTH TILDE FF5F ; Grapheme_Base # Ps FULLWIDTH LEFT WHITE PARENTHESIS FF60 ; Grapheme_Base # Pe FULLWIDTH RIGHT WHITE PARENTHESIS FF61 ; Grapheme_Base # Po HALFWIDTH IDEOGRAPHIC FULL STOP FF62 ; Grapheme_Base # Ps HALFWIDTH LEFT CORNER BRACKET FF63 ; Grapheme_Base # Pe HALFWIDTH RIGHT CORNER BRACKET FF64..FF65 ; Grapheme_Base # Po [2] HALFWIDTH IDEOGRAPHIC COMMA..HALFWIDTH KATAKANA MIDDLE DOT FF66..FF6F ; Grapheme_Base # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU FF70 ; Grapheme_Base # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK FF71..FF9D ; Grapheme_Base # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N FFA0..FFBE ; Grapheme_Base # Lo [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH FFC2..FFC7 ; Grapheme_Base # Lo [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E FFCA..FFCF ; Grapheme_Base # Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE FFD2..FFD7 ; Grapheme_Base # Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU FFDA..FFDC ; Grapheme_Base # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I FFE0..FFE1 ; Grapheme_Base # Sc [2] FULLWIDTH CENT SIGN..FULLWIDTH POUND SIGN FFE2 ; Grapheme_Base # Sm FULLWIDTH NOT SIGN FFE3 ; Grapheme_Base # Sk FULLWIDTH MACRON FFE4 ; Grapheme_Base # So FULLWIDTH BROKEN BAR FFE5..FFE6 ; Grapheme_Base # Sc [2] FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN FFE8 ; Grapheme_Base # So HALFWIDTH FORMS LIGHT VERTICAL FFE9..FFEC ; Grapheme_Base # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW FFED..FFEE ; Grapheme_Base # So [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE FFFC..FFFD ; Grapheme_Base # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARACTER 10000..1000B ; Grapheme_Base # Lo [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE 1000D..10026 ; Grapheme_Base # Lo [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO 10028..1003A ; Grapheme_Base # Lo [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO 1003C..1003D ; Grapheme_Base # Lo [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE 1003F..1004D ; Grapheme_Base # Lo [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO 10050..1005D ; Grapheme_Base # Lo [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089 10080..100FA ; Grapheme_Base # Lo [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305 10100..10102 ; Grapheme_Base # Po [3] AEGEAN WORD SEPARATOR LINE..AEGEAN CHECK MARK 10107..10133 ; Grapheme_Base # No [45] AEGEAN NUMBER ONE..AEGEAN NUMBER NINETY THOUSAND 10137..1013F ; Grapheme_Base # So [9] AEGEAN WEIGHT BASE UNIT..AEGEAN MEASURE THIRD SUBUNIT 10140..10174 ; Grapheme_Base # Nl [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS 10175..10178 ; Grapheme_Base # No [4] GREEK ONE HALF SIGN..GREEK THREE QUARTERS SIGN 10179..10189 ; Grapheme_Base # So [17] GREEK YEAR SIGN..GREEK TRYBLION BASE SIGN 1018A..1018B ; Grapheme_Base # No [2] GREEK ZERO SIGN..GREEK ONE QUARTER SIGN 1018C..1018E ; Grapheme_Base # So [3] GREEK SINUSOID SIGN..NOMISMA SIGN 10190..1019B ; Grapheme_Base # So [12] ROMAN SEXTANS SIGN..ROMAN CENTURIAL SIGN 101A0 ; Grapheme_Base # So GREEK SYMBOL TAU RHO 101D0..101FC ; Grapheme_Base # So [45] PHAISTOS DISC SIGN PEDESTRIAN..PHAISTOS DISC SIGN WAVY BAND 10280..1029C ; Grapheme_Base # Lo [29] LYCIAN LETTER A..LYCIAN LETTER X 102A0..102D0 ; Grapheme_Base # Lo [49] CARIAN LETTER A..CARIAN LETTER UUU3 102E1..102FB ; Grapheme_Base # No [27] COPTIC EPACT DIGIT ONE..COPTIC EPACT NUMBER NINE HUNDRED 10300..1031F ; Grapheme_Base # Lo [32] OLD ITALIC LETTER A..OLD ITALIC LETTER ESS 10320..10323 ; Grapheme_Base # No [4] OLD ITALIC NUMERAL ONE..OLD ITALIC NUMERAL FIFTY 10330..10340 ; Grapheme_Base # Lo [17] GOTHIC LETTER AHSA..GOTHIC LETTER PAIRTHRA 10341 ; Grapheme_Base # Nl GOTHIC LETTER NINETY 10342..10349 ; Grapheme_Base # Lo [8] GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL 1034A ; Grapheme_Base # Nl GOTHIC LETTER NINE HUNDRED 10350..10375 ; Grapheme_Base # Lo [38] OLD PERMIC LETTER AN..OLD PERMIC LETTER IA 10380..1039D ; Grapheme_Base # Lo [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU 1039F ; Grapheme_Base # Po UGARITIC WORD DIVIDER 103A0..103C3 ; Grapheme_Base # Lo [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA 103C8..103CF ; Grapheme_Base # Lo [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH 103D0 ; Grapheme_Base # Po OLD PERSIAN WORD DIVIDER 103D1..103D5 ; Grapheme_Base # Nl [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED 10400..1044F ; Grapheme_Base # L& [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW 10450..1049D ; Grapheme_Base # Lo [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO 104A0..104A9 ; Grapheme_Base # Nd [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE 104B0..104D3 ; Grapheme_Base # L& [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA 104D8..104FB ; Grapheme_Base # L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA 10500..10527 ; Grapheme_Base # Lo [40] ELBASAN LETTER A..ELBASAN LETTER KHE 10530..10563 ; Grapheme_Base # Lo [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW 1056F ; Grapheme_Base # Po CAUCASIAN ALBANIAN CITATION MARK 10600..10736 ; Grapheme_Base # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664 10740..10755 ; Grapheme_Base # Lo [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE 10760..10767 ; Grapheme_Base # Lo [8] LINEAR A SIGN A800..LINEAR A SIGN A807 10800..10805 ; Grapheme_Base # Lo [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA 10808 ; Grapheme_Base # Lo CYPRIOT SYLLABLE JO 1080A..10835 ; Grapheme_Base # Lo [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO 10837..10838 ; Grapheme_Base # Lo [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE 1083C ; Grapheme_Base # Lo CYPRIOT SYLLABLE ZA 1083F..10855 ; Grapheme_Base # Lo [23] CYPRIOT SYLLABLE ZO..IMPERIAL ARAMAIC LETTER TAW 10857 ; Grapheme_Base # Po IMPERIAL ARAMAIC SECTION SIGN 10858..1085F ; Grapheme_Base # No [8] IMPERIAL ARAMAIC NUMBER ONE..IMPERIAL ARAMAIC NUMBER TEN THOUSAND 10860..10876 ; Grapheme_Base # Lo [23] PALMYRENE LETTER ALEPH..PALMYRENE LETTER TAW 10877..10878 ; Grapheme_Base # So [2] PALMYRENE LEFT-POINTING FLEURON..PALMYRENE RIGHT-POINTING FLEURON 10879..1087F ; Grapheme_Base # No [7] PALMYRENE NUMBER ONE..PALMYRENE NUMBER TWENTY 10880..1089E ; Grapheme_Base # Lo [31] NABATAEAN LETTER FINAL ALEPH..NABATAEAN LETTER TAW 108A7..108AF ; Grapheme_Base # No [9] NABATAEAN NUMBER ONE..NABATAEAN NUMBER ONE HUNDRED 108E0..108F2 ; Grapheme_Base # Lo [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH 108F4..108F5 ; Grapheme_Base # Lo [2] HATRAN LETTER SHIN..HATRAN LETTER TAW 108FB..108FF ; Grapheme_Base # No [5] HATRAN NUMBER ONE..HATRAN NUMBER ONE HUNDRED 10900..10915 ; Grapheme_Base # Lo [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU 10916..1091B ; Grapheme_Base # No [6] PHOENICIAN NUMBER ONE..PHOENICIAN NUMBER THREE 1091F ; Grapheme_Base # Po PHOENICIAN WORD SEPARATOR 10920..10939 ; Grapheme_Base # Lo [26] LYDIAN LETTER A..LYDIAN LETTER C 1093F ; Grapheme_Base # Po LYDIAN TRIANGULAR MARK 10980..109B7 ; Grapheme_Base # Lo [56] MEROITIC HIEROGLYPHIC LETTER A..MEROITIC CURSIVE LETTER DA 109BC..109BD ; Grapheme_Base # No [2] MEROITIC CURSIVE FRACTION ELEVEN TWELFTHS..MEROITIC CURSIVE FRACTION ONE HALF 109BE..109BF ; Grapheme_Base # Lo [2] MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN 109C0..109CF ; Grapheme_Base # No [16] MEROITIC CURSIVE NUMBER ONE..MEROITIC CURSIVE NUMBER SEVENTY 109D2..109FF ; Grapheme_Base # No [46] MEROITIC CURSIVE NUMBER ONE HUNDRED..MEROITIC CURSIVE FRACTION TEN TWELFTHS 10A00 ; Grapheme_Base # Lo KHAROSHTHI LETTER A 10A10..10A13 ; Grapheme_Base # Lo [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA 10A15..10A17 ; Grapheme_Base # Lo [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA 10A19..10A33 ; Grapheme_Base # Lo [27] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER TTTHA 10A40..10A47 ; Grapheme_Base # No [8] KHAROSHTHI DIGIT ONE..KHAROSHTHI NUMBER ONE THOUSAND 10A50..10A58 ; Grapheme_Base # Po [9] KHAROSHTHI PUNCTUATION DOT..KHAROSHTHI PUNCTUATION LINES 10A60..10A7C ; Grapheme_Base # Lo [29] OLD SOUTH ARABIAN LETTER HE..OLD SOUTH ARABIAN LETTER THETH 10A7D..10A7E ; Grapheme_Base # No [2] OLD SOUTH ARABIAN NUMBER ONE..OLD SOUTH ARABIAN NUMBER FIFTY 10A7F ; Grapheme_Base # Po OLD SOUTH ARABIAN NUMERIC INDICATOR 10A80..10A9C ; Grapheme_Base # Lo [29] OLD NORTH ARABIAN LETTER HEH..OLD NORTH ARABIAN LETTER ZAH 10A9D..10A9F ; Grapheme_Base # No [3] OLD NORTH ARABIAN NUMBER ONE..OLD NORTH ARABIAN NUMBER TWENTY 10AC0..10AC7 ; Grapheme_Base # Lo [8] MANICHAEAN LETTER ALEPH..MANICHAEAN LETTER WAW 10AC8 ; Grapheme_Base # So MANICHAEAN SIGN UD 10AC9..10AE4 ; Grapheme_Base # Lo [28] MANICHAEAN LETTER ZAYIN..MANICHAEAN LETTER TAW 10AEB..10AEF ; Grapheme_Base # No [5] MANICHAEAN NUMBER ONE..MANICHAEAN NUMBER ONE HUNDRED 10AF0..10AF6 ; Grapheme_Base # Po [7] MANICHAEAN PUNCTUATION STAR..MANICHAEAN PUNCTUATION LINE FILLER 10B00..10B35 ; Grapheme_Base # Lo [54] AVESTAN LETTER A..AVESTAN LETTER HE 10B39..10B3F ; Grapheme_Base # Po [7] AVESTAN ABBREVIATION MARK..LARGE ONE RING OVER TWO RINGS PUNCTUATION 10B40..10B55 ; Grapheme_Base # Lo [22] INSCRIPTIONAL PARTHIAN LETTER ALEPH..INSCRIPTIONAL PARTHIAN LETTER TAW 10B58..10B5F ; Grapheme_Base # No [8] INSCRIPTIONAL PARTHIAN NUMBER ONE..INSCRIPTIONAL PARTHIAN NUMBER ONE THOUSAND 10B60..10B72 ; Grapheme_Base # Lo [19] INSCRIPTIONAL PAHLAVI LETTER ALEPH..INSCRIPTIONAL PAHLAVI LETTER TAW 10B78..10B7F ; Grapheme_Base # No [8] INSCRIPTIONAL PAHLAVI NUMBER ONE..INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND 10B80..10B91 ; Grapheme_Base # Lo [18] PSALTER PAHLAVI LETTER ALEPH..PSALTER PAHLAVI LETTER TAW 10B99..10B9C ; Grapheme_Base # Po [4] PSALTER PAHLAVI SECTION MARK..PSALTER PAHLAVI FOUR DOTS WITH DOT 10BA9..10BAF ; Grapheme_Base # No [7] PSALTER PAHLAVI NUMBER ONE..PSALTER PAHLAVI NUMBER ONE HUNDRED 10C00..10C48 ; Grapheme_Base # Lo [73] OLD TURKIC LETTER ORKHON A..OLD TURKIC LETTER ORKHON BASH 10C80..10CB2 ; Grapheme_Base # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US 10CC0..10CF2 ; Grapheme_Base # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US 10CFA..10CFF ; Grapheme_Base # No [6] OLD HUNGARIAN NUMBER ONE..OLD HUNGARIAN NUMBER ONE THOUSAND 10E60..10E7E ; Grapheme_Base # No [31] RUMI DIGIT ONE..RUMI FRACTION TWO THIRDS 11000 ; Grapheme_Base # Mc BRAHMI SIGN CANDRABINDU 11002 ; Grapheme_Base # Mc BRAHMI SIGN VISARGA 11003..11037 ; Grapheme_Base # Lo [53] BRAHMI SIGN JIHVAMULIYA..BRAHMI LETTER OLD TAMIL NNNA 11047..1104D ; Grapheme_Base # Po [7] BRAHMI DANDA..BRAHMI PUNCTUATION LOTUS 11052..11065 ; Grapheme_Base # No [20] BRAHMI NUMBER ONE..BRAHMI NUMBER ONE THOUSAND 11066..1106F ; Grapheme_Base # Nd [10] BRAHMI DIGIT ZERO..BRAHMI DIGIT NINE 11082 ; Grapheme_Base # Mc KAITHI SIGN VISARGA 11083..110AF ; Grapheme_Base # Lo [45] KAITHI LETTER A..KAITHI LETTER HA 110B0..110B2 ; Grapheme_Base # Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II 110B7..110B8 ; Grapheme_Base # Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU 110BB..110BC ; Grapheme_Base # Po [2] KAITHI ABBREVIATION SIGN..KAITHI ENUMERATION SIGN 110BE..110C1 ; Grapheme_Base # Po [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA 110D0..110E8 ; Grapheme_Base # Lo [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE 110F0..110F9 ; Grapheme_Base # Nd [10] SORA SOMPENG DIGIT ZERO..SORA SOMPENG DIGIT NINE 11103..11126 ; Grapheme_Base # Lo [36] CHAKMA LETTER AA..CHAKMA LETTER HAA 1112C ; Grapheme_Base # Mc CHAKMA VOWEL SIGN E 11136..1113F ; Grapheme_Base # Nd [10] CHAKMA DIGIT ZERO..CHAKMA DIGIT NINE 11140..11143 ; Grapheme_Base # Po [4] CHAKMA SECTION MARK..CHAKMA QUESTION MARK 11150..11172 ; Grapheme_Base # Lo [35] MAHAJANI LETTER A..MAHAJANI LETTER RRA 11174..11175 ; Grapheme_Base # Po [2] MAHAJANI ABBREVIATION SIGN..MAHAJANI SECTION MARK 11176 ; Grapheme_Base # Lo MAHAJANI LIGATURE SHRI 11182 ; Grapheme_Base # Mc SHARADA SIGN VISARGA 11183..111B2 ; Grapheme_Base # Lo [48] SHARADA LETTER A..SHARADA LETTER HA 111B3..111B5 ; Grapheme_Base # Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II 111BF..111C0 ; Grapheme_Base # Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA 111C1..111C4 ; Grapheme_Base # Lo [4] SHARADA SIGN AVAGRAHA..SHARADA OM 111C5..111C9 ; Grapheme_Base # Po [5] SHARADA DANDA..SHARADA SANDHI MARK 111CD ; Grapheme_Base # Po SHARADA SUTRA MARK 111D0..111D9 ; Grapheme_Base # Nd [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE 111DA ; Grapheme_Base # Lo SHARADA EKAM 111DB ; Grapheme_Base # Po SHARADA SIGN SIDDHAM 111DC ; Grapheme_Base # Lo SHARADA HEADSTROKE 111DD..111DF ; Grapheme_Base # Po [3] SHARADA CONTINUATION SIGN..SHARADA SECTION MARK-2 111E1..111F4 ; Grapheme_Base # No [20] SINHALA ARCHAIC DIGIT ONE..SINHALA ARCHAIC NUMBER ONE THOUSAND 11200..11211 ; Grapheme_Base # Lo [18] KHOJKI LETTER A..KHOJKI LETTER JJA 11213..1122B ; Grapheme_Base # Lo [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA 1122C..1122E ; Grapheme_Base # Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II 11232..11233 ; Grapheme_Base # Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU 11235 ; Grapheme_Base # Mc KHOJKI SIGN VIRAMA 11238..1123D ; Grapheme_Base # Po [6] KHOJKI DANDA..KHOJKI ABBREVIATION SIGN 11280..11286 ; Grapheme_Base # Lo [7] MULTANI LETTER A..MULTANI LETTER GA 11288 ; Grapheme_Base # Lo MULTANI LETTER GHA 1128A..1128D ; Grapheme_Base # Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA 1128F..1129D ; Grapheme_Base # Lo [15] MULTANI LETTER NYA..MULTANI LETTER BA 1129F..112A8 ; Grapheme_Base # Lo [10] MULTANI LETTER BHA..MULTANI LETTER RHA 112A9 ; Grapheme_Base # Po MULTANI SECTION MARK 112B0..112DE ; Grapheme_Base # Lo [47] KHUDAWADI LETTER A..KHUDAWADI LETTER HA 112E0..112E2 ; Grapheme_Base # Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II 112F0..112F9 ; Grapheme_Base # Nd [10] KHUDAWADI DIGIT ZERO..KHUDAWADI DIGIT NINE 11302..11303 ; Grapheme_Base # Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA 11305..1130C ; Grapheme_Base # Lo [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L 1130F..11310 ; Grapheme_Base # Lo [2] GRANTHA LETTER EE..GRANTHA LETTER AI 11313..11328 ; Grapheme_Base # Lo [22] GRANTHA LETTER OO..GRANTHA LETTER NA 1132A..11330 ; Grapheme_Base # Lo [7] GRANTHA LETTER PA..GRANTHA LETTER RA 11332..11333 ; Grapheme_Base # Lo [2] GRANTHA LETTER LA..GRANTHA LETTER LLA 11335..11339 ; Grapheme_Base # Lo [5] GRANTHA LETTER VA..GRANTHA LETTER HA 1133D ; Grapheme_Base # Lo GRANTHA SIGN AVAGRAHA 1133F ; Grapheme_Base # Mc GRANTHA VOWEL SIGN I 11341..11344 ; Grapheme_Base # Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR 11347..11348 ; Grapheme_Base # Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI 1134B..1134D ; Grapheme_Base # Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA 11350 ; Grapheme_Base # Lo GRANTHA OM 1135D..11361 ; Grapheme_Base # Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL 11362..11363 ; Grapheme_Base # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL 11400..11434 ; Grapheme_Base # Lo [53] NEWA LETTER A..NEWA LETTER HA 11435..11437 ; Grapheme_Base # Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II 11440..11441 ; Grapheme_Base # Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU 11445 ; Grapheme_Base # Mc NEWA SIGN VISARGA 11447..1144A ; Grapheme_Base # Lo [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI 1144B..1144F ; Grapheme_Base # Po [5] NEWA DANDA..NEWA ABBREVIATION SIGN 11450..11459 ; Grapheme_Base # Nd [10] NEWA DIGIT ZERO..NEWA DIGIT NINE 1145B ; Grapheme_Base # Po NEWA PLACEHOLDER MARK 1145D ; Grapheme_Base # Po NEWA INSERTION SIGN 11480..114AF ; Grapheme_Base # Lo [48] TIRHUTA ANJI..TIRHUTA LETTER HA 114B1..114B2 ; Grapheme_Base # Mc [2] TIRHUTA VOWEL SIGN I..TIRHUTA VOWEL SIGN II 114B9 ; Grapheme_Base # Mc TIRHUTA VOWEL SIGN E 114BB..114BC ; Grapheme_Base # Mc [2] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN O 114BE ; Grapheme_Base # Mc TIRHUTA VOWEL SIGN AU 114C1 ; Grapheme_Base # Mc TIRHUTA SIGN VISARGA 114C4..114C5 ; Grapheme_Base # Lo [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG 114C6 ; Grapheme_Base # Po TIRHUTA ABBREVIATION SIGN 114C7 ; Grapheme_Base # Lo TIRHUTA OM 114D0..114D9 ; Grapheme_Base # Nd [10] TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE 11580..115AE ; Grapheme_Base # Lo [47] SIDDHAM LETTER A..SIDDHAM LETTER HA 115B0..115B1 ; Grapheme_Base # Mc [2] SIDDHAM VOWEL SIGN I..SIDDHAM VOWEL SIGN II 115B8..115BB ; Grapheme_Base # Mc [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU 115BE ; Grapheme_Base # Mc SIDDHAM SIGN VISARGA 115C1..115D7 ; Grapheme_Base # Po [23] SIDDHAM SIGN SIDDHAM..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES 115D8..115DB ; Grapheme_Base # Lo [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U 11600..1162F ; Grapheme_Base # Lo [48] MODI LETTER A..MODI LETTER LLA 11630..11632 ; Grapheme_Base # Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II 1163B..1163C ; Grapheme_Base # Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU 1163E ; Grapheme_Base # Mc MODI SIGN VISARGA 11641..11643 ; Grapheme_Base # Po [3] MODI DANDA..MODI ABBREVIATION SIGN 11644 ; Grapheme_Base # Lo MODI SIGN HUVA 11650..11659 ; Grapheme_Base # Nd [10] MODI DIGIT ZERO..MODI DIGIT NINE 11660..1166C ; Grapheme_Base # Po [13] MONGOLIAN BIRGA WITH ORNAMENT..MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT 11680..116AA ; Grapheme_Base # Lo [43] TAKRI LETTER A..TAKRI LETTER RRA 116AC ; Grapheme_Base # Mc TAKRI SIGN VISARGA 116AE..116AF ; Grapheme_Base # Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II 116B6 ; Grapheme_Base # Mc TAKRI SIGN VIRAMA 116C0..116C9 ; Grapheme_Base # Nd [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE 11700..11719 ; Grapheme_Base # Lo [26] AHOM LETTER KA..AHOM LETTER JHA 11720..11721 ; Grapheme_Base # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA 11726 ; Grapheme_Base # Mc AHOM VOWEL SIGN E 11730..11739 ; Grapheme_Base # Nd [10] AHOM DIGIT ZERO..AHOM DIGIT NINE 1173A..1173B ; Grapheme_Base # No [2] AHOM NUMBER TEN..AHOM NUMBER TWENTY 1173C..1173E ; Grapheme_Base # Po [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI 1173F ; Grapheme_Base # So AHOM SYMBOL VI 118A0..118DF ; Grapheme_Base # L& [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO 118E0..118E9 ; Grapheme_Base # Nd [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE 118EA..118F2 ; Grapheme_Base # No [9] WARANG CITI NUMBER TEN..WARANG CITI NUMBER NINETY 118FF ; Grapheme_Base # Lo WARANG CITI OM 11AC0..11AF8 ; Grapheme_Base # Lo [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL 11C00..11C08 ; Grapheme_Base # Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L 11C0A..11C2E ; Grapheme_Base # Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA 11C2F ; Grapheme_Base # Mc BHAIKSUKI VOWEL SIGN AA 11C38..11C3B ; Grapheme_Base # Mc [4] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI VOWEL SIGN AU 11C3E ; Grapheme_Base # Mc BHAIKSUKI SIGN VISARGA 11C40 ; Grapheme_Base # Lo BHAIKSUKI SIGN AVAGRAHA 11C41..11C45 ; Grapheme_Base # Po [5] BHAIKSUKI DANDA..BHAIKSUKI GAP FILLER-2 11C50..11C59 ; Grapheme_Base # Nd [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE 11C5A..11C6C ; Grapheme_Base # No [19] BHAIKSUKI NUMBER ONE..BHAIKSUKI HUNDREDS UNIT MARK 11C70..11C71 ; Grapheme_Base # Po [2] MARCHEN HEAD MARK..MARCHEN MARK SHAD 11C72..11C8F ; Grapheme_Base # Lo [30] MARCHEN LETTER KA..MARCHEN LETTER A 11CB1 ; Grapheme_Base # Mc MARCHEN VOWEL SIGN I 11CB4 ; Grapheme_Base # Mc MARCHEN VOWEL SIGN O 12000..12399 ; Grapheme_Base # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U 12400..1246E ; Grapheme_Base # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM 12470..12474 ; Grapheme_Base # Po [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON 12480..12543 ; Grapheme_Base # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU 13000..1342E ; Grapheme_Base # Lo [1071] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH AA032 14400..14646 ; Grapheme_Base # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 16800..16A38 ; Grapheme_Base # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ 16A40..16A5E ; Grapheme_Base # Lo [31] MRO LETTER TA..MRO LETTER TEK 16A60..16A69 ; Grapheme_Base # Nd [10] MRO DIGIT ZERO..MRO DIGIT NINE 16A6E..16A6F ; Grapheme_Base # Po [2] MRO DANDA..MRO DOUBLE DANDA 16AD0..16AED ; Grapheme_Base # Lo [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I 16AF5 ; Grapheme_Base # Po BASSA VAH FULL STOP 16B00..16B2F ; Grapheme_Base # Lo [48] PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG CONSONANT CAU 16B37..16B3B ; Grapheme_Base # Po [5] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN VOS FEEM 16B3C..16B3F ; Grapheme_Base # So [4] PAHAWH HMONG SIGN XYEEM NTXIV..PAHAWH HMONG SIGN XYEEM FAIB 16B40..16B43 ; Grapheme_Base # Lm [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM 16B44 ; Grapheme_Base # Po PAHAWH HMONG SIGN XAUS 16B45 ; Grapheme_Base # So PAHAWH HMONG SIGN CIM TSOV ROG 16B50..16B59 ; Grapheme_Base # Nd [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE 16B5B..16B61 ; Grapheme_Base # No [7] PAHAWH HMONG NUMBER TENS..PAHAWH HMONG NUMBER TRILLIONS 16B63..16B77 ; Grapheme_Base # Lo [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS 16B7D..16B8F ; Grapheme_Base # Lo [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ 16F00..16F44 ; Grapheme_Base # Lo [69] MIAO LETTER PA..MIAO LETTER HHA 16F50 ; Grapheme_Base # Lo MIAO LETTER NASALIZATION 16F51..16F7E ; Grapheme_Base # Mc [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG 16F93..16F9F ; Grapheme_Base # Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8 16FE0 ; Grapheme_Base # Lm TANGUT ITERATION MARK 17000..187EC ; Grapheme_Base # Lo [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC 18800..18AF2 ; Grapheme_Base # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755 1B000..1B001 ; Grapheme_Base # Lo [2] KATAKANA LETTER ARCHAIC E..HIRAGANA LETTER ARCHAIC YE 1BC00..1BC6A ; Grapheme_Base # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M 1BC70..1BC7C ; Grapheme_Base # Lo [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK 1BC80..1BC88 ; Grapheme_Base # Lo [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL 1BC90..1BC99 ; Grapheme_Base # Lo [10] DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW 1BC9C ; Grapheme_Base # So DUPLOYAN SIGN O WITH CROSS 1BC9F ; Grapheme_Base # Po DUPLOYAN PUNCTUATION CHINOOK FULL STOP 1D000..1D0F5 ; Grapheme_Base # So [246] BYZANTINE MUSICAL SYMBOL PSILI..BYZANTINE MUSICAL SYMBOL GORGON NEO KATO 1D100..1D126 ; Grapheme_Base # So [39] MUSICAL SYMBOL SINGLE BARLINE..MUSICAL SYMBOL DRUM CLEF-2 1D129..1D164 ; Grapheme_Base # So [60] MUSICAL SYMBOL MULTIPLE MEASURE REST..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE 1D166 ; Grapheme_Base # Mc MUSICAL SYMBOL COMBINING SPRECHGESANG STEM 1D16A..1D16C ; Grapheme_Base # So [3] MUSICAL SYMBOL FINGERED TREMOLO-1..MUSICAL SYMBOL FINGERED TREMOLO-3 1D16D ; Grapheme_Base # Mc MUSICAL SYMBOL COMBINING AUGMENTATION DOT 1D183..1D184 ; Grapheme_Base # So [2] MUSICAL SYMBOL ARPEGGIATO UP..MUSICAL SYMBOL ARPEGGIATO DOWN 1D18C..1D1A9 ; Grapheme_Base # So [30] MUSICAL SYMBOL RINFORZANDO..MUSICAL SYMBOL DEGREE SLASH 1D1AE..1D1E8 ; Grapheme_Base # So [59] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL KIEVAN FLAT SIGN 1D200..1D241 ; Grapheme_Base # So [66] GREEK VOCAL NOTATION SYMBOL-1..GREEK INSTRUMENTAL NOTATION SYMBOL-54 1D245 ; Grapheme_Base # So GREEK MUSICAL LEIMMA 1D300..1D356 ; Grapheme_Base # So [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING 1D360..1D371 ; Grapheme_Base # No [18] COUNTING ROD UNIT DIGIT ONE..COUNTING ROD TENS DIGIT NINE 1D400..1D454 ; Grapheme_Base # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G 1D456..1D49C ; Grapheme_Base # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A 1D49E..1D49F ; Grapheme_Base # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D 1D4A2 ; Grapheme_Base # L& MATHEMATICAL SCRIPT CAPITAL G 1D4A5..1D4A6 ; Grapheme_Base # L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K 1D4A9..1D4AC ; Grapheme_Base # L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q 1D4AE..1D4B9 ; Grapheme_Base # L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D 1D4BB ; Grapheme_Base # L& MATHEMATICAL SCRIPT SMALL F 1D4BD..1D4C3 ; Grapheme_Base # L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N 1D4C5..1D505 ; Grapheme_Base # L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B 1D507..1D50A ; Grapheme_Base # L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G 1D50D..1D514 ; Grapheme_Base # L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q 1D516..1D51C ; Grapheme_Base # L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y 1D51E..1D539 ; Grapheme_Base # L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B 1D53B..1D53E ; Grapheme_Base # L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G 1D540..1D544 ; Grapheme_Base # L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M 1D546 ; Grapheme_Base # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O 1D54A..1D550 ; Grapheme_Base # L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y 1D552..1D6A5 ; Grapheme_Base # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J 1D6A8..1D6C0 ; Grapheme_Base # L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA 1D6C1 ; Grapheme_Base # Sm MATHEMATICAL BOLD NABLA 1D6C2..1D6DA ; Grapheme_Base # L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA 1D6DB ; Grapheme_Base # Sm MATHEMATICAL BOLD PARTIAL DIFFERENTIAL 1D6DC..1D6FA ; Grapheme_Base # L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA 1D6FB ; Grapheme_Base # Sm MATHEMATICAL ITALIC NABLA 1D6FC..1D714 ; Grapheme_Base # L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA 1D715 ; Grapheme_Base # Sm MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL 1D716..1D734 ; Grapheme_Base # L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA 1D735 ; Grapheme_Base # Sm MATHEMATICAL BOLD ITALIC NABLA 1D736..1D74E ; Grapheme_Base # L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA 1D74F ; Grapheme_Base # Sm MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL 1D750..1D76E ; Grapheme_Base # L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA 1D76F ; Grapheme_Base # Sm MATHEMATICAL SANS-SERIF BOLD NABLA 1D770..1D788 ; Grapheme_Base # L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA 1D789 ; Grapheme_Base # Sm MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL 1D78A..1D7A8 ; Grapheme_Base # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA 1D7A9 ; Grapheme_Base # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA 1D7AA..1D7C2 ; Grapheme_Base # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA 1D7C3 ; Grapheme_Base # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL 1D7C4..1D7CB ; Grapheme_Base # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA 1D7CE..1D7FF ; Grapheme_Base # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE 1D800..1D9FF ; Grapheme_Base # So [512] SIGNWRITING HAND-FIST INDEX..SIGNWRITING HEAD 1DA37..1DA3A ; Grapheme_Base # So [4] SIGNWRITING AIR BLOW SMALL ROTATIONS..SIGNWRITING BREATH EXHALE 1DA6D..1DA74 ; Grapheme_Base # So [8] SIGNWRITING SHOULDER HIP SPINE..SIGNWRITING TORSO-FLOORPLANE TWISTING 1DA76..1DA83 ; Grapheme_Base # So [14] SIGNWRITING LIMB COMBINATION..SIGNWRITING LOCATION DEPTH 1DA85..1DA86 ; Grapheme_Base # So [2] SIGNWRITING LOCATION TORSO..SIGNWRITING LOCATION LIMBS DIGITS 1DA87..1DA8B ; Grapheme_Base # Po [5] SIGNWRITING COMMA..SIGNWRITING PARENTHESIS 1E800..1E8C4 ; Grapheme_Base # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON 1E8C7..1E8CF ; Grapheme_Base # No [9] MENDE KIKAKUI DIGIT ONE..MENDE KIKAKUI DIGIT NINE 1E900..1E943 ; Grapheme_Base # L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA 1E950..1E959 ; Grapheme_Base # Nd [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE 1E95E..1E95F ; Grapheme_Base # Po [2] ADLAM INITIAL EXCLAMATION MARK..ADLAM INITIAL QUESTION MARK 1EE00..1EE03 ; Grapheme_Base # Lo [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL 1EE05..1EE1F ; Grapheme_Base # Lo [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF 1EE21..1EE22 ; Grapheme_Base # Lo [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM 1EE24 ; Grapheme_Base # Lo ARABIC MATHEMATICAL INITIAL HEH 1EE27 ; Grapheme_Base # Lo ARABIC MATHEMATICAL INITIAL HAH 1EE29..1EE32 ; Grapheme_Base # Lo [10] ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF 1EE34..1EE37 ; Grapheme_Base # Lo [4] ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH 1EE39 ; Grapheme_Base # Lo ARABIC MATHEMATICAL INITIAL DAD 1EE3B ; Grapheme_Base # Lo ARABIC MATHEMATICAL INITIAL GHAIN 1EE42 ; Grapheme_Base # Lo ARABIC MATHEMATICAL TAILED JEEM 1EE47 ; Grapheme_Base # Lo ARABIC MATHEMATICAL TAILED HAH 1EE49 ; Grapheme_Base # Lo ARABIC MATHEMATICAL TAILED YEH 1EE4B ; Grapheme_Base # Lo ARABIC MATHEMATICAL TAILED LAM 1EE4D..1EE4F ; Grapheme_Base # Lo [3] ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN 1EE51..1EE52 ; Grapheme_Base # Lo [2] ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF 1EE54 ; Grapheme_Base # Lo ARABIC MATHEMATICAL TAILED SHEEN 1EE57 ; Grapheme_Base # Lo ARABIC MATHEMATICAL TAILED KHAH 1EE59 ; Grapheme_Base # Lo ARABIC MATHEMATICAL TAILED DAD 1EE5B ; Grapheme_Base # Lo ARABIC MATHEMATICAL TAILED GHAIN 1EE5D ; Grapheme_Base # Lo ARABIC MATHEMATICAL TAILED DOTLESS NOON 1EE5F ; Grapheme_Base # Lo ARABIC MATHEMATICAL TAILED DOTLESS QAF 1EE61..1EE62 ; Grapheme_Base # Lo [2] ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM 1EE64 ; Grapheme_Base # Lo ARABIC MATHEMATICAL STRETCHED HEH 1EE67..1EE6A ; Grapheme_Base # Lo [4] ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF 1EE6C..1EE72 ; Grapheme_Base # Lo [7] ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF 1EE74..1EE77 ; Grapheme_Base # Lo [4] ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH 1EE79..1EE7C ; Grapheme_Base # Lo [4] ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH 1EE7E ; Grapheme_Base # Lo ARABIC MATHEMATICAL STRETCHED DOTLESS FEH 1EE80..1EE89 ; Grapheme_Base # Lo [10] ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH 1EE8B..1EE9B ; Grapheme_Base # Lo [17] ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN 1EEA1..1EEA3 ; Grapheme_Base # Lo [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL 1EEA5..1EEA9 ; Grapheme_Base # Lo [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH 1EEAB..1EEBB ; Grapheme_Base # Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN 1EEF0..1EEF1 ; Grapheme_Base # Sm [2] ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL..ARABIC MATHEMATICAL OPERATOR HAH WITH DAL 1F000..1F02B ; Grapheme_Base # So [44] MAHJONG TILE EAST WIND..MAHJONG TILE BACK 1F030..1F093 ; Grapheme_Base # So [100] DOMINO TILE HORIZONTAL BACK..DOMINO TILE VERTICAL-06-06 1F0A0..1F0AE ; Grapheme_Base # So [15] PLAYING CARD BACK..PLAYING CARD KING OF SPADES 1F0B1..1F0BF ; Grapheme_Base # So [15] PLAYING CARD ACE OF HEARTS..PLAYING CARD RED JOKER 1F0C1..1F0CF ; Grapheme_Base # So [15] PLAYING CARD ACE OF DIAMONDS..PLAYING CARD BLACK JOKER 1F0D1..1F0F5 ; Grapheme_Base # So [37] PLAYING CARD ACE OF CLUBS..PLAYING CARD TRUMP-21 1F100..1F10C ; Grapheme_Base # No [13] DIGIT ZERO FULL STOP..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO 1F110..1F12E ; Grapheme_Base # So [31] PARENTHESIZED LATIN CAPITAL LETTER A..CIRCLED WZ 1F130..1F16B ; Grapheme_Base # So [60] SQUARED LATIN CAPITAL LETTER A..RAISED MD SIGN 1F170..1F1AC ; Grapheme_Base # So [61] NEGATIVE SQUARED LATIN CAPITAL LETTER A..SQUARED VOD 1F1E6..1F202 ; Grapheme_Base # So [29] REGIONAL INDICATOR SYMBOL LETTER A..SQUARED KATAKANA SA 1F210..1F23B ; Grapheme_Base # So [44] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-914D 1F240..1F248 ; Grapheme_Base # So [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557 1F250..1F251 ; Grapheme_Base # So [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT 1F300..1F3FA ; Grapheme_Base # So [251] CYCLONE..AMPHORA 1F3FB..1F3FF ; Grapheme_Base # Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6 1F400..1F6D2 ; Grapheme_Base # So [723] RAT..SHOPPING TROLLEY 1F6E0..1F6EC ; Grapheme_Base # So [13] HAMMER AND WRENCH..AIRPLANE ARRIVING 1F6F0..1F6F6 ; Grapheme_Base # So [7] SATELLITE..CANOE 1F700..1F773 ; Grapheme_Base # So [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE 1F780..1F7D4 ; Grapheme_Base # So [85] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..HEAVY TWELVE POINTED PINWHEEL STAR 1F800..1F80B ; Grapheme_Base # So [12] LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD..DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD 1F810..1F847 ; Grapheme_Base # So [56] LEFTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD..DOWNWARDS HEAVY ARROW 1F850..1F859 ; Grapheme_Base # So [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW 1F860..1F887 ; Grapheme_Base # So [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW 1F890..1F8AD ; Grapheme_Base # So [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS 1F910..1F91E ; Grapheme_Base # So [15] ZIPPER-MOUTH FACE..HAND WITH INDEX AND MIDDLE FINGERS CROSSED 1F920..1F927 ; Grapheme_Base # So [8] FACE WITH COWBOY HAT..SNEEZING FACE 1F930 ; Grapheme_Base # So PREGNANT WOMAN 1F933..1F93E ; Grapheme_Base # So [12] SELFIE..HANDBALL 1F940..1F94B ; Grapheme_Base # So [12] WILTED FLOWER..MARTIAL ARTS UNIFORM 1F950..1F95E ; Grapheme_Base # So [15] CROISSANT..PANCAKES 1F980..1F991 ; Grapheme_Base # So [18] CRAB..SQUID 1F9C0 ; Grapheme_Base # So CHEESE WEDGE 20000..2A6D6 ; Grapheme_Base # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 2A700..2B734 ; Grapheme_Base # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 2B740..2B81D ; Grapheme_Base # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D 2B820..2CEA1 ; Grapheme_Base # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 2F800..2FA1D ; Grapheme_Base # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D # Total code points: 126291 # ================================================ # Derived Property: Grapheme_Link (deprecated) # Generated from: Canonical_Combining_Class=Virama # Use Canonical_Combining_Class=Virama directly instead 094D ; Grapheme_Link # Mn DEVANAGARI SIGN VIRAMA 09CD ; Grapheme_Link # Mn BENGALI SIGN VIRAMA 0A4D ; Grapheme_Link # Mn GURMUKHI SIGN VIRAMA 0ACD ; Grapheme_Link # Mn GUJARATI SIGN VIRAMA 0B4D ; Grapheme_Link # Mn ORIYA SIGN VIRAMA 0BCD ; Grapheme_Link # Mn TAMIL SIGN VIRAMA 0C4D ; Grapheme_Link # Mn TELUGU SIGN VIRAMA 0CCD ; Grapheme_Link # Mn KANNADA SIGN VIRAMA 0D4D ; Grapheme_Link # Mn MALAYALAM SIGN VIRAMA 0DCA ; Grapheme_Link # Mn SINHALA SIGN AL-LAKUNA 0E3A ; Grapheme_Link # Mn THAI CHARACTER PHINTHU 0F84 ; Grapheme_Link # Mn TIBETAN MARK HALANTA 1039..103A ; Grapheme_Link # Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT 1714 ; Grapheme_Link # Mn TAGALOG SIGN VIRAMA 1734 ; Grapheme_Link # Mn HANUNOO SIGN PAMUDPOD 17D2 ; Grapheme_Link # Mn KHMER SIGN COENG 1A60 ; Grapheme_Link # Mn TAI THAM SIGN SAKOT 1B44 ; Grapheme_Link # Mc BALINESE ADEG ADEG 1BAA ; Grapheme_Link # Mc SUNDANESE SIGN PAMAAEH 1BAB ; Grapheme_Link # Mn SUNDANESE SIGN VIRAMA 1BF2..1BF3 ; Grapheme_Link # Mc [2] BATAK PANGOLAT..BATAK PANONGONAN 2D7F ; Grapheme_Link # Mn TIFINAGH CONSONANT JOINER A806 ; Grapheme_Link # Mn SYLOTI NAGRI SIGN HASANTA A8C4 ; Grapheme_Link # Mn SAURASHTRA SIGN VIRAMA A953 ; Grapheme_Link # Mc REJANG VIRAMA A9C0 ; Grapheme_Link # Mc JAVANESE PANGKON AAF6 ; Grapheme_Link # Mn MEETEI MAYEK VIRAMA ABED ; Grapheme_Link # Mn MEETEI MAYEK APUN IYEK 10A3F ; Grapheme_Link # Mn KHAROSHTHI VIRAMA 11046 ; Grapheme_Link # Mn BRAHMI VIRAMA 1107F ; Grapheme_Link # Mn BRAHMI NUMBER JOINER 110B9 ; Grapheme_Link # Mn KAITHI SIGN VIRAMA 11133..11134 ; Grapheme_Link # Mn [2] CHAKMA VIRAMA..CHAKMA MAAYYAA 111C0 ; Grapheme_Link # Mc SHARADA SIGN VIRAMA 11235 ; Grapheme_Link # Mc KHOJKI SIGN VIRAMA 112EA ; Grapheme_Link # Mn KHUDAWADI SIGN VIRAMA 1134D ; Grapheme_Link # Mc GRANTHA SIGN VIRAMA 11442 ; Grapheme_Link # Mn NEWA SIGN VIRAMA 114C2 ; Grapheme_Link # Mn TIRHUTA SIGN VIRAMA 115BF ; Grapheme_Link # Mn SIDDHAM SIGN VIRAMA 1163F ; Grapheme_Link # Mn MODI SIGN VIRAMA 116B6 ; Grapheme_Link # Mc TAKRI SIGN VIRAMA 1172B ; Grapheme_Link # Mn AHOM SIGN KILLER 11C3F ; Grapheme_Link # Mn BHAIKSUKI SIGN VIRAMA # Total code points: 47 # EOF nototools-2017-09-25-tooling-for-phase3-update/third_party/ucd/IndicPositionalCategory.txt000066400000000000000000001140431316231664500315220ustar00rootroot00000000000000# IndicPositionalCategory-8.0.0.txt # Date: 2015-05-12, 10:00:00 GMT [RP, KW, LI] # # Unicode Character Database # Copyright (c) 1991-2015 Unicode, Inc. # For terms of use, see http://www.unicode.org/terms_of_use.html # For documentation, see UAX #44: Unicode Character Database, # at http://www.unicode.org/reports/tr44/ # # This file defines the following property: # # Indic_Positional_Category enumerated property # # Scope: This property is aimed at the problem of # the specification of syllabic structure for Indic scripts. # Because dependent vowels (matras), visible viramas, and other # characters are placed in notional slots around the consonant (or # consonant cluster) core of an Indic syllable, there may be # cooccurrence constraints or other interactions. Also, it may be # desirable, in cases where more than one such character may occur in # sequence, as for example, in a top slot and a bottom slot, to # specify preferred orders for spelling. As such, this property # is designed primarily to supplement the Indic_Syllabic_Category # property. # # Note that this property is *not* intended as # a prescriptive property regarding display or font design, # for a number of reasons. Good font design requires information # that is outside the context of a character encoding standard, # and is best handled in other venues. For Indic dependent # vowels and similar characters, in particular: # # 1. Matra placement may vary somewhat based on typeface design. # 2. Matra placement, even within a single script, may vary # somewhat according to historic period or local conventions. # 3. Matra placement may be changed by explicit orthographic reform # decisions. # 4. Matras may ligate in various ways with a consonant (or even # other elements of a syllable) instead of occurring in a # discrete location. # 5. Matra display may be contextually determined. This is # notable, for example, in the Tamil script, where the shape # and placement of -u and -uu vowels depends strongly on # which consonant they adjoin. # # Format: # Field 0 Unicode code point value or range of code point values # Field 1 Indic_Positional_Category property value # # Field 1 is followed by a comment field, starting with the number sign '#', # which shows the General_Category property value, the Unicode character name # or names, and, in lines with ranges of code points, the code point count in # square brackets. # # The scripts assessed as containing dependent vowels or similar characters # in the structural sense used for the Indic_Positional_Category are the # following: # # Ahom, Balinese, Batak, Bengali, Brahmi, Buginese, Buhid, Chakma, # Cham, Devanagari, Grantha, Gujarati, Gurmukhi, Hanunoo, Javanese, # Kaithi, Kannada, Kharoshthi, Khmer, Khojki, Khudawadi, Lao, Lepcha, # Limbu, Malayalam, Meetei Mayek, Modi, Myanmar, New Tai Lue, Oriya, # Rejang, Saurashtra, Sharada, Siddham, Sinhala, Sundanese, Syloti # Nagri, Tagalog, Tagbanwa, Tai Tham, Tai Viet, Takri, Tamil, Telugu, # Thai, Tibetan, and Tirhuta. # # All characters for all other scripts not in that list # take the default value for this property. # # See IndicSyllabicCategory.txt for a slightly more extended # list of Indic scripts, including those which do not have # positional characters. Currently, those additional # Indic scripts without positional characters are # Kayah Li, Mahajani, Multani, Phags-pa, and Tai Le. # # ================================================ # Property: Indic_Positional_Category # # All code points not explicitly listed for Indic_Positional_Category # have the value NA (not applicable). # # @missing: 0000..10FFFF; NA # ------------------------------------------------ # Indic_Positional_Category=Right 0903 ; Right # Mc DEVANAGARI SIGN VISARGA 093B ; Right # Mc DEVANAGARI VOWEL SIGN OOE 093E ; Right # Mc DEVANAGARI VOWEL SIGN AA 0940 ; Right # Mc DEVANAGARI VOWEL SIGN II 0949..094C ; Right # Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU 094F ; Right # Mc DEVANAGARI VOWEL SIGN AW 0982..0983 ; Right # Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA 09BE ; Right # Mc BENGALI VOWEL SIGN AA 09C0 ; Right # Mc BENGALI VOWEL SIGN II 09D7 ; Right # Mc BENGALI AU LENGTH MARK 0A03 ; Right # Mc GURMUKHI SIGN VISARGA 0A3E ; Right # Mc GURMUKHI VOWEL SIGN AA 0A40 ; Right # Mc GURMUKHI VOWEL SIGN II 0A83 ; Right # Mc GUJARATI SIGN VISARGA 0ABE ; Right # Mc GUJARATI VOWEL SIGN AA 0AC0 ; Right # Mc GUJARATI VOWEL SIGN II 0ACB..0ACC ; Right # Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU 0B02..0B03 ; Right # Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA 0B3E ; Right # Mc ORIYA VOWEL SIGN AA 0B40 ; Right # Mc ORIYA VOWEL SIGN II 0BBE..0BBF ; Right # Mc [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I 0BC1..0BC2 ; Right # Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU # Note: U and UU have contextually variable placement in Tamil. 0BD7 ; Right # Mc TAMIL AU LENGTH MARK 0C01..0C03 ; Right # Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA 0C41..0C44 ; Right # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR 0C82..0C83 ; Right # Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA 0CBE ; Right # Mc KANNADA VOWEL SIGN AA 0CC1..0CC4 ; Right # Mc [4] KANNADA VOWEL SIGN U..KANNADA VOWEL SIGN VOCALIC RR 0CD5..0CD6 ; Right # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK 0D02..0D03 ; Right # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA 0D3E..0D40 ; Right # Mc [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II 0D41..0D42 ; Right # Mn [2] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN UU # Note: U and UU form complex ligatures with consonants in older Malayalam orthography. 0D57 ; Right # Mc MALAYALAM AU LENGTH MARK 0D82..0D83 ; Right # Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA 0DCF..0DD1 ; Right # Mc [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA 0DD8 ; Right # Mc SINHALA VOWEL SIGN GAETTA-PILLA 0DDF ; Right # Mc SINHALA VOWEL SIGN GAYANUKITTA 0DF2..0DF3 ; Right # Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA 0E30 ; Right # Lo THAI CHARACTER SARA A 0E32..0E33 ; Right # Lo [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM 0E45 ; Right # Lo THAI CHARACTER LAKKHANGYAO 0EB0 ; Right # Lo LAO VOWEL SIGN A 0EB2..0EB3 ; Right # Lo [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM 0F3E ; Right # Mc TIBETAN SIGN YAR TSHES 0F7F ; Right # Mc TIBETAN SIGN RNAM BCAD 102B..102C ; Right # Mc [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA 1038 ; Right # Mc MYANMAR SIGN VISARGA 103B ; Right # Mc MYANMAR CONSONANT SIGN MEDIAL YA 1056..1057 ; Right # Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR 1062..1064 ; Right # Mc [3] MYANMAR VOWEL SIGN SGAW KAREN EU..MYANMAR TONE MARK SGAW KAREN KE PHO 1067..106D ; Right # Mc [7] MYANMAR VOWEL SIGN WESTERN PWO KAREN EU..MYANMAR SIGN WESTERN PWO KAREN TONE-5 1083 ; Right # Mc MYANMAR VOWEL SIGN SHAN AA 1087..108C ; Right # Mc [6] MYANMAR SIGN SHAN TONE-2..MYANMAR SIGN SHAN COUNCIL TONE-3 108F ; Right # Mc MYANMAR SIGN RUMAI PALAUNG TONE-5 109A..109C ; Right # Mc [3] MYANMAR SIGN KHAMTI TONE-1..MYANMAR VOWEL SIGN AITON A 17B6 ; Right # Mc KHMER VOWEL SIGN AA 17C7..17C8 ; Right # Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU 1923..1924 ; Right # Mc [2] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AI 1929..192B ; Right # Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA 1930..1931 ; Right # Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA 1933..1938 ; Right # Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA 19B0..19B4 ; Right # Lo [5] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE VOWEL SIGN UU 19B8..19B9 ; Right # Lo [2] NEW TAI LUE VOWEL SIGN OA..NEW TAI LUE VOWEL SIGN UE 19BB..19C0 ; Right # Lo [6] NEW TAI LUE VOWEL SIGN AAY..NEW TAI LUE VOWEL SIGN IY 19C8..19C9 ; Right # Lo [2] NEW TAI LUE TONE MARK-1..NEW TAI LUE TONE MARK-2 1A1A ; Right # Mc BUGINESE VOWEL SIGN O 1A57 ; Right # Mc TAI THAM CONSONANT SIGN LA TANG LAI 1A61 ; Right # Mc TAI THAM VOWEL SIGN A 1A63..1A64 ; Right # Mc [2] TAI THAM VOWEL SIGN AA..TAI THAM VOWEL SIGN TALL AA 1A6D ; Right # Mc TAI THAM VOWEL SIGN OY 1B04 ; Right # Mc BALINESE SIGN BISAH 1B35 ; Right # Mc BALINESE VOWEL SIGN TEDUNG 1B44 ; Right # Mc BALINESE ADEG ADEG 1B82 ; Right # Mc SUNDANESE SIGN PANGWISAD 1BA1 ; Right # Mc SUNDANESE CONSONANT SIGN PAMINGKAL 1BA7 ; Right # Mc SUNDANESE VOWEL SIGN PANOLONG 1BAA ; Right # Mc SUNDANESE SIGN PAMAAEH 1BE7 ; Right # Mc BATAK VOWEL SIGN E 1BEA..1BEC ; Right # Mc [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O 1BEE ; Right # Mc BATAK VOWEL SIGN U 1BF2..1BF3 ; Right # Mc [2] BATAK PANGOLAT..BATAK PANONGONAN 1C24..1C26 ; Right # Mc [3] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN AA 1C2A..1C2B ; Right # Mc [2] LEPCHA VOWEL SIGN U..LEPCHA VOWEL SIGN UU 1CE1 ; Right # Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA A823..A824 ; Right # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I A827 ; Right # Mc SYLOTI NAGRI VOWEL SIGN OO A880..A881 ; Right # Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA A8B4..A8C3 ; Right # Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU A952..A953 ; Right # Mc [2] REJANG CONSONANT SIGN H..REJANG VIRAMA A983 ; Right # Mc JAVANESE SIGN WIGNYAN A9B4..A9B5 ; Right # Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG A9BD..A9BF ; Right # Mc [3] JAVANESE CONSONANT SIGN KERET..JAVANESE CONSONANT SIGN CAKRA AA33 ; Right # Mc CHAM CONSONANT SIGN YA AA4D ; Right # Mc CHAM CONSONANT SIGN FINAL H AA7B ; Right # Mc MYANMAR SIGN PAO KAREN TONE AA7D ; Right # Mc MYANMAR SIGN TAI LAING TONE-5 AAB1 ; Right # Lo TAI VIET VOWEL AA AABA ; Right # Lo TAI VIET VOWEL UA AABD ; Right # Lo TAI VIET VOWEL AN AAEF ; Right # Mc MEETEI MAYEK VOWEL SIGN AAU AAF5 ; Right # Mc MEETEI MAYEK VOWEL SIGN VISARGA ABE3..ABE4 ; Right # Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP ABE6..ABE7 ; Right # Mc [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP ABE9..ABEA ; Right # Mc [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG ABEC ; Right # Mc MEETEI MAYEK LUM IYEK 11000 ; Right # Mc BRAHMI SIGN CANDRABINDU 11002 ; Right # Mc BRAHMI SIGN VISARGA 11082 ; Right # Mc KAITHI SIGN VISARGA 110B0 ; Right # Mc KAITHI VOWEL SIGN AA 110B2 ; Right # Mc KAITHI VOWEL SIGN II 110B7..110B8 ; Right # Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU 11182 ; Right # Mc SHARADA SIGN VISARGA 111B3 ; Right # Mc SHARADA VOWEL SIGN AA 111B5 ; Right # Mc SHARADA VOWEL SIGN II 111C0 ; Right # Mc SHARADA SIGN VIRAMA 1122C..1122E ; Right # Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II 11235 ; Right # Mc KHOJKI SIGN VIRAMA 112E0 ; Right # Mc KHUDAWADI VOWEL SIGN AA 112E2 ; Right # Mc KHUDAWADI VOWEL SIGN II 11302..11303 ; Right # Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA 1133E..1133F ; Right # Mc [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I 11341..11342 ; Right # Mc [2] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN UU # Note: U and UU have contextually variable placement in Grantha. 11343..11344 ; Right # Mc [2] GRANTHA VOWEL SIGN VOCALIC R..GRANTHA VOWEL SIGN VOCALIC RR 1134D ; Right # Mc GRANTHA SIGN VIRAMA 11357 ; Right # Mc GRANTHA AU LENGTH MARK 11362..11363 ; Right # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL 114B0 ; Right # Mc TIRHUTA VOWEL SIGN AA 114B2 ; Right # Mc TIRHUTA VOWEL SIGN II 114BD ; Right # Mc TIRHUTA VOWEL SIGN SHORT O 114C1 ; Right # Mc TIRHUTA SIGN VISARGA 115AF ; Right # Mc SIDDHAM VOWEL SIGN AA 115B1 ; Right # Mc SIDDHAM VOWEL SIGN II 115BE ; Right # Mc SIDDHAM SIGN VISARGA 11630..11632 ; Right # Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II 1163B..1163C ; Right # Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU 1163E ; Right # Mc MODI SIGN VISARGA 116AC ; Right # Mc TAKRI SIGN VISARGA 116AF ; Right # Mc TAKRI VOWEL SIGN II 116B6 ; Right # Mc TAKRI SIGN VIRAMA 11720..11721 ; Right # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA # Indic_Positional_Category=Left 093F ; Left # Mc DEVANAGARI VOWEL SIGN I 094E ; Left # Mc DEVANAGARI VOWEL SIGN PRISHTHAMATRA E 09BF ; Left # Mc BENGALI VOWEL SIGN I 09C7..09C8 ; Left # Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI 0A3F ; Left # Mc GURMUKHI VOWEL SIGN I 0ABF ; Left # Mc GUJARATI VOWEL SIGN I 0B47 ; Left # Mc ORIYA VOWEL SIGN E 0BC6..0BC8 ; Left # Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI 0D46..0D48 ; Left # Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI 0DD9 ; Left # Mc SINHALA VOWEL SIGN KOMBUVA 0DDB ; Left # Mc SINHALA VOWEL SIGN KOMBU DEKA 0F3F ; Left # Mc TIBETAN SIGN MAR TSHES 1031 ; Left # Mc MYANMAR VOWEL SIGN E 1084 ; Left # Mc MYANMAR VOWEL SIGN SHAN E 17C1..17C3 ; Left # Mc [3] KHMER VOWEL SIGN E..KHMER VOWEL SIGN AI 1A19 ; Left # Mc BUGINESE VOWEL SIGN E 1A55 ; Left # Mc TAI THAM CONSONANT SIGN MEDIAL RA 1A6E..1A72 ; Left # Mc [5] TAI THAM VOWEL SIGN E..TAI THAM VOWEL SIGN THAM AI 1B3E..1B3F ; Left # Mc [2] BALINESE VOWEL SIGN TALING..BALINESE VOWEL SIGN TALING REPA 1BA6 ; Left # Mc SUNDANESE VOWEL SIGN PANAELAENG 1C27..1C28 ; Left # Mc [2] LEPCHA VOWEL SIGN I..LEPCHA VOWEL SIGN O 1C34..1C35 ; Left # Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG A9BA..A9BB ; Left # Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE AA2F..AA30 ; Left # Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI AA34 ; Left # Mc CHAM CONSONANT SIGN RA AAEB ; Left # Mc MEETEI MAYEK VOWEL SIGN II AAEE ; Left # Mc MEETEI MAYEK VOWEL SIGN AU 110B1 ; Left # Mc KAITHI VOWEL SIGN I 1112C ; Left # Mc CHAKMA VOWEL SIGN E 111B4 ; Left # Mc SHARADA VOWEL SIGN I 112E1 ; Left # Mc KHUDAWADI VOWEL SIGN I 11347..11348 ; Left # Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI 114B1 ; Left # Mc TIRHUTA VOWEL SIGN I 114B9 ; Left # Mc TIRHUTA VOWEL SIGN E 115B0 ; Left # Mc SIDDHAM VOWEL SIGN I 115B8 ; Left # Mc SIDDHAM VOWEL SIGN E 116AE ; Left # Mc TAKRI VOWEL SIGN I 11726 ; Left # Mc AHOM VOWEL SIGN E # Indic_Positional_Category=Visual_Order_Left # These are dependent vowels that occur to the left of the consonant # letter in a syllable, but which occur in scripts using the visual order # model, instead of the logical order model. Because of the different # model, these left-side vowels occur first in the backing store (before # the consonant letter) and are not reordered during text rendering. # # [Derivation: Logical_Order_Exception=Yes] 0E40..0E44 ; Visual_Order_Left # Lo [5] THAI CHARACTER SARA E..THAI CHARACTER SARA AI MAIMALAI 0EC0..0EC4 ; Visual_Order_Left # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI 19B5..19B7 ; Visual_Order_Left # Lo [3] NEW TAI LUE VOWEL SIGN E..NEW TAI LUE VOWEL SIGN O 19BA ; Visual_Order_Left # Lo NEW TAI LUE VOWEL SIGN AY AAB5..AAB6 ; Visual_Order_Left # Lo [2] TAI VIET VOWEL E..TAI VIET VOWEL O AAB9 ; Visual_Order_Left # Lo TAI VIET VOWEL UEA AABB..AABC ; Visual_Order_Left # Lo [2] TAI VIET VOWEL AUE..TAI VIET VOWEL AY # Indic_Positional_Category=Left_And_Right 09CB..09CC ; Left_And_Right # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU 0B4B ; Left_And_Right # Mc ORIYA VOWEL SIGN O 0BCA..0BCC ; Left_And_Right # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU 0D4A..0D4C ; Left_And_Right # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU 0DDC ; Left_And_Right # Mc SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA 0DDE ; Left_And_Right # Mc SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA 17C0 ; Left_And_Right # Mc KHMER VOWEL SIGN IE 17C4..17C5 ; Left_And_Right # Mc [2] KHMER VOWEL SIGN OO..KHMER VOWEL SIGN AU 1B40..1B41 ; Left_And_Right # Mc [2] BALINESE VOWEL SIGN TALING TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG 1134B..1134C ; Left_And_Right # Mc [2] GRANTHA VOWEL SIGN OO..GRANTHA VOWEL SIGN AU 114BC ; Left_And_Right # Mc TIRHUTA VOWEL SIGN O 114BE ; Left_And_Right # Mc TIRHUTA VOWEL SIGN AU 115BA ; Left_And_Right # Mc SIDDHAM VOWEL SIGN O # Indic_Positional_Category=Top 0900..0902 ; Top # Mn [3] DEVANAGARI SIGN INVERTED CANDRABINDU..DEVANAGARI SIGN ANUSVARA 093A ; Top # Mn DEVANAGARI VOWEL SIGN OE 0945..0948 ; Top # Mn [4] DEVANAGARI VOWEL SIGN CANDRA E..DEVANAGARI VOWEL SIGN AI 0951 ; Top # Mn DEVANAGARI STRESS SIGN UDATTA 0953..0955 ; Top # Mn [3] DEVANAGARI GRAVE ACCENT..DEVANAGARI VOWEL SIGN CANDRA LONG E 0981 ; Top # Mn BENGALI SIGN CANDRABINDU 0A01..0A02 ; Top # Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI 0A47..0A48 ; Top # Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI 0A4B..0A4C ; Top # Mn [2] GURMUKHI VOWEL SIGN OO..GURMUKHI VOWEL SIGN AU 0A70..0A71 ; Top # Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK 0A81..0A82 ; Top # Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA 0AC5 ; Top # Mn GUJARATI VOWEL SIGN CANDRA E 0AC7..0AC8 ; Top # Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI 0B01 ; Top # Mn ORIYA SIGN CANDRABINDU 0B3F ; Top # Mn ORIYA VOWEL SIGN I 0B56 ; Top # Mn ORIYA AI LENGTH MARK 0B82 ; Top # Mn TAMIL SIGN ANUSVARA 0BC0 ; Top # Mn TAMIL VOWEL SIGN II 0BCD ; Top # Mn TAMIL SIGN VIRAMA 0C00 ; Top # Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE 0C3E..0C40 ; Top # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II 0C46..0C47 ; Top # Mn [2] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN EE 0C4A..0C4D ; Top # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA 0C55 ; Top # Mn TELUGU LENGTH MARK 0C81 ; Top # Mn KANNADA SIGN CANDRABINDU 0CBF ; Top # Mn KANNADA VOWEL SIGN I 0CC6 ; Top # Mn KANNADA VOWEL SIGN E 0CCC..0CCD ; Top # Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA 0D01 ; Top # Mn MALAYALAM SIGN CANDRABINDU 0D4D ; Top # Mn MALAYALAM SIGN VIRAMA 0DCA ; Top # Mn SINHALA SIGN AL-LAKUNA 0DD2..0DD3 ; Top # Mn [2] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN DIGA IS-PILLA 0E31 ; Top # Mn THAI CHARACTER MAI HAN-AKAT 0E34..0E37 ; Top # Mn [4] THAI CHARACTER SARA I..THAI CHARACTER SARA UEE 0E47..0E4E ; Top # Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN 0EB1 ; Top # Mn LAO VOWEL SIGN MAI KAN 0EB4..0EB7 ; Top # Mn [4] LAO VOWEL SIGN I..LAO VOWEL SIGN YY 0EBB ; Top # Mn LAO VOWEL SIGN MAI KON 0EC8..0ECD ; Top # Mn [6] LAO TONE MAI EK..LAO NIGGAHITA 0F39 ; Top # Mn TIBETAN MARK TSA -PHRU 0F72 ; Top # Mn TIBETAN VOWEL SIGN I 0F7A..0F7E ; Top # Mn [5] TIBETAN VOWEL SIGN E..TIBETAN SIGN RJES SU NGA RO 0F80 ; Top # Mn TIBETAN VOWEL SIGN REVERSED I 0F82..0F83 ; Top # Mn [2] TIBETAN SIGN NYI ZLA NAA DA..TIBETAN SIGN SNA LDAN 0F86..0F87 ; Top # Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS 102D..102E ; Top # Mn [2] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN II 1032..1036 ; Top # Mn [5] MYANMAR VOWEL SIGN AI..MYANMAR SIGN ANUSVARA 103A ; Top # Mn MYANMAR SIGN ASAT 1071..1074 ; Top # Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE 1085..1086 ; Top # Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y 109D ; Top # Mn MYANMAR VOWEL SIGN AITON AI 1712 ; Top # Mn TAGALOG VOWEL SIGN I 1732 ; Top # Mn HANUNOO VOWEL SIGN I 1752 ; Top # Mn BUHID VOWEL SIGN I 1772 ; Top # Mn TAGBANWA VOWEL SIGN I 17B7..17BA ; Top # Mn [4] KHMER VOWEL SIGN I..KHMER VOWEL SIGN YY 17C6 ; Top # Mn KHMER SIGN NIKAHIT 17C9..17D1 ; Top # Mn [9] KHMER SIGN MUUSIKATOAN..KHMER SIGN VIRIAM 17D3 ; Top # Mn KHMER SIGN BATHAMASAT 17DD ; Top # Mn KHMER SIGN ATTHACAN 1920..1921 ; Top # Mn [2] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN I 1927..1928 ; Top # Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O 193A ; Top # Mn LIMBU SIGN KEMPHRENG 1A17 ; Top # Mn BUGINESE VOWEL SIGN I 1A1B ; Top # Mn BUGINESE VOWEL SIGN AE 1A58..1A5A ; Top # Mn [3] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN LOW PA 1A62 ; Top # Mn TAI THAM VOWEL SIGN MAI SAT 1A65..1A68 ; Top # Mn [4] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN UUE 1A6B ; Top # Mn TAI THAM VOWEL SIGN O 1A73..1A7C ; Top # Mn [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN 1B00..1B03 ; Top # Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG 1B34 ; Top # Mn BALINESE SIGN REREKAN 1B36..1B37 ; Top # Mn [2] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN ULU SARI 1B42 ; Top # Mn BALINESE VOWEL SIGN PEPET 1B6B ; Top # Mn BALINESE MUSICAL SYMBOL COMBINING TEGEH 1B6D..1B73 ; Top # Mn [7] BALINESE MUSICAL SYMBOL COMBINING KEMPUL..BALINESE MUSICAL SYMBOL COMBINING GONG 1B80..1B81 ; Top # Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR 1BA4 ; Top # Mn SUNDANESE VOWEL SIGN PANGHULU 1BA8..1BA9 ; Top # Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG 1BE6 ; Top # Mn BATAK SIGN TOMPI 1BE8..1BE9 ; Top # Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE 1BED ; Top # Mn BATAK VOWEL SIGN KARO O 1BEF..1BF1 ; Top # Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H 1C2D..1C33 ; Top # Mn [7] LEPCHA CONSONANT SIGN K..LEPCHA CONSONANT SIGN T 1C36 ; Top # Mn LEPCHA SIGN RAN 1CD0..1CD2 ; Top # Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA 1CDA..1CDB ; Top # Mn [2] VEDIC TONE DOUBLE SVARITA..VEDIC TONE TRIPLE SVARITA 1CE0 ; Top # Mn VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA 1CF4 ; Top # Mn VEDIC TONE CANDRA ABOVE A806 ; Top # Mn SYLOTI NAGRI SIGN HASANTA A80B ; Top # Mn SYLOTI NAGRI SIGN ANUSVARA A826 ; Top # Mn SYLOTI NAGRI VOWEL SIGN E A8E0..A8F1 ; Top # Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA A94A ; Top # Mn REJANG VOWEL SIGN AI A94F..A951 ; Top # Mn [3] REJANG CONSONANT SIGN NG..REJANG CONSONANT SIGN R A980..A982 ; Top # Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR A9B3 ; Top # Mn JAVANESE SIGN CECAK TELU A9B6..A9B7 ; Top # Mn [2] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN WULU MELIK A9BC ; Top # Mn JAVANESE VOWEL SIGN PEPET A9E5 ; Top # Mn MYANMAR SIGN SHAN SAW AA29..AA2C ; Top # Mn [4] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN EI AA2E ; Top # Mn CHAM VOWEL SIGN OE AA31 ; Top # Mn CHAM VOWEL SIGN AU AA43 ; Top # Mn CHAM CONSONANT SIGN FINAL NG AA4C ; Top # Mn CHAM CONSONANT SIGN FINAL M AA7C ; Top # Mn MYANMAR SIGN TAI LAING TONE-2 AAB0 ; Top # Mn TAI VIET MAI KANG AAB2..AAB3 ; Top # Mn [2] TAI VIET VOWEL I..TAI VIET VOWEL UE AAB7..AAB8 ; Top # Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA AABE..AABF ; Top # Mn [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK AAC1 ; Top # Mn TAI VIET TONE MAI THO AAED ; Top # Mn MEETEI MAYEK VOWEL SIGN AAI ABE5 ; Top # Mn MEETEI MAYEK VOWEL SIGN ANAP 10A05 ; Top # Mn KHAROSHTHI VOWEL SIGN E 10A0F ; Top # Mn KHAROSHTHI SIGN VISARGA 10A38 ; Top # Mn KHAROSHTHI SIGN BAR ABOVE 11001 ; Top # Mn BRAHMI SIGN ANUSVARA 11038..1103B ; Top # Mn [4] BRAHMI VOWEL SIGN AA..BRAHMI VOWEL SIGN II 11042..11046 ; Top # Mn [5] BRAHMI VOWEL SIGN E..BRAHMI VIRAMA 11080..11081 ; Top # Mn [2] KAITHI SIGN CANDRABINDU..KAITHI SIGN ANUSVARA 110B5..110B6 ; Top # Mn [2] KAITHI VOWEL SIGN E..KAITHI VOWEL SIGN AI 11100..11102 ; Top # Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA 11127..11129 ; Top # Mn [3] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN II 1112D ; Top # Mn CHAKMA VOWEL SIGN AI 11130 ; Top # Mn CHAKMA VOWEL SIGN OI 11134 ; Top # Mn CHAKMA MAAYYAA 11180..11181 ; Top # Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA 111BC..111BE ; Top # Mn [3] SHARADA VOWEL SIGN E..SHARADA VOWEL SIGN O 111CB ; Top # Mn SHARADA VOWEL MODIFIER MARK 11230..11231 ; Top # Mn [2] KHOJKI VOWEL SIGN E..KHOJKI VOWEL SIGN AI 11234 ; Top # Mn KHOJKI SIGN ANUSVARA 11236..11237 ; Top # Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA 112DF ; Top # Mn KHUDAWADI SIGN ANUSVARA 112E5..112E8 ; Top # Mn [4] KHUDAWADI VOWEL SIGN E..KHUDAWADI VOWEL SIGN AU 11301 ; Top # Mn GRANTHA SIGN CANDRABINDU 11340 ; Top # Mn GRANTHA VOWEL SIGN II 11366..1136C ; Top # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX 11370..11374 ; Top # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA 114BA ; Top # Mn TIRHUTA VOWEL SIGN SHORT E 114BF..114C0 ; Top # Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA 115BC..115BD ; Top # Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA 11639..1163A ; Top # Mn [2] MODI VOWEL SIGN E..MODI VOWEL SIGN AI 1163D ; Top # Mn MODI SIGN ANUSVARA 11640 ; Top # Mn MODI SIGN ARDHACANDRA 116AB ; Top # Mn TAKRI SIGN ANUSVARA 116AD ; Top # Mn TAKRI VOWEL SIGN AA 116B2..116B5 ; Top # Mn [4] TAKRI VOWEL SIGN E..TAKRI VOWEL SIGN AU 1171F ; Top # Mn AHOM CONSONANT SIGN MEDIAL LIGATING RA 11722..11723 ; Top # Mn [2] AHOM VOWEL SIGN I..AHOM VOWEL SIGN II 11727 ; Top # Mn AHOM VOWEL SIGN AW 11729..1172B ; Top # Mn [3] AHOM VOWEL SIGN AI..AHOM SIGN KILLER # Indic_Positional_Category=Bottom 093C ; Bottom # Mn DEVANAGARI SIGN NUKTA 0941..0944 ; Bottom # Mn [4] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN VOCALIC RR 094D ; Bottom # Mn DEVANAGARI SIGN VIRAMA 0952 ; Bottom # Mn DEVANAGARI STRESS SIGN ANUDATTA 0956..0957 ; Bottom # Mn [2] DEVANAGARI VOWEL SIGN UE..DEVANAGARI VOWEL SIGN UUE 0962..0963 ; Bottom # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL 09BC ; Bottom # Mn BENGALI SIGN NUKTA 09C1..09C4 ; Bottom # Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR 09CD ; Bottom # Mn BENGALI SIGN VIRAMA 09E2..09E3 ; Bottom # Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL 0A3C ; Bottom # Mn GURMUKHI SIGN NUKTA 0A41..0A42 ; Bottom # Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU 0A4D ; Bottom # Mn GURMUKHI SIGN VIRAMA 0A75 ; Bottom # Mn GURMUKHI SIGN YAKASH 0ABC ; Bottom # Mn GUJARATI SIGN NUKTA 0AC1..0AC4 ; Bottom # Mn [4] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN VOCALIC RR 0ACD ; Bottom # Mn GUJARATI SIGN VIRAMA 0AE2..0AE3 ; Bottom # Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL 0B3C ; Bottom # Mn ORIYA SIGN NUKTA 0B41..0B44 ; Bottom # Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR 0B4D ; Bottom # Mn ORIYA SIGN VIRAMA 0B62..0B63 ; Bottom # Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL 0C56 ; Bottom # Mn TELUGU AI LENGTH MARK 0C62..0C63 ; Bottom # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL 0CBC ; Bottom # Mn KANNADA SIGN NUKTA 0CE2..0CE3 ; Bottom # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL 0D43..0D44 ; Bottom # Mn [2] MALAYALAM VOWEL SIGN VOCALIC R..MALAYALAM VOWEL SIGN VOCALIC RR 0D62..0D63 ; Bottom # Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL 0DD4 ; Bottom # Mn SINHALA VOWEL SIGN KETTI PAA-PILLA 0DD6 ; Bottom # Mn SINHALA VOWEL SIGN DIGA PAA-PILLA 0E38..0E3A ; Bottom # Mn [3] THAI CHARACTER SARA U..THAI CHARACTER PHINTHU 0EB8..0EB9 ; Bottom # Mn [2] LAO VOWEL SIGN U..LAO VOWEL SIGN UU 0EBC ; Bottom # Mn LAO SEMIVOWEL SIGN LO 0F18..0F19 ; Bottom # Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS 0F35 ; Bottom # Mn TIBETAN MARK NGAS BZUNG NYI ZLA 0F37 ; Bottom # Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS 0F71 ; Bottom # Mn TIBETAN VOWEL SIGN AA 0F74..0F75 ; Bottom # Mn [2] TIBETAN VOWEL SIGN U..TIBETAN VOWEL SIGN UU 0F84 ; Bottom # Mn TIBETAN MARK HALANTA 0F8D..0F97 ; Bottom # Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA 0F99..0FBC ; Bottom # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA 0FC6 ; Bottom # Mn TIBETAN SYMBOL PADMA GDAN 102F..1030 ; Bottom # Mn [2] MYANMAR VOWEL SIGN U..MYANMAR VOWEL SIGN UU 1037 ; Bottom # Mn MYANMAR SIGN DOT BELOW 103D..103E ; Bottom # Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA 1058..1059 ; Bottom # Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL 105E..1060 ; Bottom # Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA 1082 ; Bottom # Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA 108D ; Bottom # Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE 1713..1714 ; Bottom # Mn [2] TAGALOG VOWEL SIGN U..TAGALOG SIGN VIRAMA 1733..1734 ; Bottom # Mn [2] HANUNOO VOWEL SIGN U..HANUNOO SIGN PAMUDPOD 1753 ; Bottom # Mn BUHID VOWEL SIGN U 1773 ; Bottom # Mn TAGBANWA VOWEL SIGN U 17BB..17BD ; Bottom # Mn [3] KHMER VOWEL SIGN U..KHMER VOWEL SIGN UA 1922 ; Bottom # Mn LIMBU VOWEL SIGN U 1932 ; Bottom # Mn LIMBU SMALL LETTER ANUSVARA 1939 ; Bottom # Mn LIMBU SIGN MUKPHRENG 193B ; Bottom # Mn LIMBU SIGN SA-I 1A18 ; Bottom # Mn BUGINESE VOWEL SIGN U 1A56 ; Bottom # Mn TAI THAM CONSONANT SIGN MEDIAL LA 1A5B..1A5E ; Bottom # Mn [4] TAI THAM CONSONANT SIGN HIGH RATHA OR LOW PA..TAI THAM CONSONANT SIGN SA 1A69..1A6A ; Bottom # Mn [2] TAI THAM VOWEL SIGN U..TAI THAM VOWEL SIGN UU 1A6C ; Bottom # Mn TAI THAM VOWEL SIGN OA BELOW 1A7F ; Bottom # Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT 1B38..1B3A ; Bottom # Mn [3] BALINESE VOWEL SIGN SUKU..BALINESE VOWEL SIGN RA REPA 1B6C ; Bottom # Mn BALINESE MUSICAL SYMBOL COMBINING ENDEP 1BA2..1BA3 ; Bottom # Mn [2] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE CONSONANT SIGN PANYIKU 1BA5 ; Bottom # Mn SUNDANESE VOWEL SIGN PANYUKU 1BAC..1BAD ; Bottom # Mn [2] SUNDANESE CONSONANT SIGN PASANGAN MA..SUNDANESE CONSONANT SIGN PASANGAN WA 1C2C ; Bottom # Mn LEPCHA VOWEL SIGN E 1C37 ; Bottom # Mn LEPCHA SIGN NUKTA 1CD5..1CD9 ; Bottom # Mn [5] VEDIC TONE YAJURVEDIC AGGRAVATED INDEPENDENT SVARITA..VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA SCHROEDER 1CDC..1CDF ; Bottom # Mn [4] VEDIC TONE KATHAKA ANUDATTA..VEDIC TONE THREE DOTS BELOW 1CED ; Bottom # Mn VEDIC SIGN TIRYAK A825 ; Bottom # Mn SYLOTI NAGRI VOWEL SIGN U A8C4 ; Bottom # Mn SAURASHTRA SIGN VIRAMA A92B..A92D ; Bottom # Mn [3] KAYAH LI TONE PLOPHU..KAYAH LI TONE CALYA PLOPHU A947..A949 ; Bottom # Mn [3] REJANG VOWEL SIGN I..REJANG VOWEL SIGN E A94B..A94E ; Bottom # Mn [4] REJANG VOWEL SIGN O..REJANG VOWEL SIGN EA A9B8..A9B9 ; Bottom # Mn [2] JAVANESE VOWEL SIGN SUKU..JAVANESE VOWEL SIGN SUKU MENDUT AA2D ; Bottom # Mn CHAM VOWEL SIGN U AA32 ; Bottom # Mn CHAM VOWEL SIGN UE AA35..AA36 ; Bottom # Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA AAB4 ; Bottom # Mn TAI VIET VOWEL U AAEC ; Bottom # Mn MEETEI MAYEK VOWEL SIGN UU ABE8 ; Bottom # Mn MEETEI MAYEK VOWEL SIGN UNAP ABED ; Bottom # Mn MEETEI MAYEK APUN IYEK 10A02..10A03 ; Bottom # Mn [2] KHAROSHTHI VOWEL SIGN U..KHAROSHTHI VOWEL SIGN VOCALIC R 10A0C..10A0E ; Bottom # Mn [3] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN ANUSVARA 10A39..10A3A ; Bottom # Mn [2] KHAROSHTHI SIGN CAUDA..KHAROSHTHI SIGN DOT BELOW 1103C..11041 ; Bottom # Mn [6] BRAHMI VOWEL SIGN U..BRAHMI VOWEL SIGN VOCALIC LL 110B3..110B4 ; Bottom # Mn [2] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN UU 110B9..110BA ; Bottom # Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA 1112A..1112B ; Bottom # Mn [2] CHAKMA VOWEL SIGN U..CHAKMA VOWEL SIGN UU 11131..11132 ; Bottom # Mn [2] CHAKMA O MARK..CHAKMA AU MARK 11173 ; Bottom # Mn MAHAJANI SIGN NUKTA 111B6..111BB ; Bottom # Mn [6] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN VOCALIC LL 111CC ; Bottom # Mn SHARADA EXTRA SHORT VOWEL MARK 1122F ; Bottom # Mn KHOJKI VOWEL SIGN U 112E3..112E4 ; Bottom # Mn [2] KHUDAWADI VOWEL SIGN U..KHUDAWADI VOWEL SIGN UU 112E9..112EA ; Bottom # Mn [2] KHUDAWADI SIGN NUKTA..KHUDAWADI SIGN VIRAMA 114B3..114B8 ; Bottom # Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL 114C2..114C3 ; Bottom # Mn [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA 115B2..115B5 ; Bottom # Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR 115BF..115C0 ; Bottom # Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA 115DC..115DD ; Bottom # Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU 11633..11638 ; Bottom # Mn [6] MODI VOWEL SIGN U..MODI VOWEL SIGN VOCALIC LL 1163F ; Bottom # Mn MODI SIGN VIRAMA 116B0..116B1 ; Bottom # Mn [2] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN UU 116B7 ; Bottom # Mn TAKRI SIGN NUKTA 1171D ; Bottom # Mn AHOM CONSONANT SIGN MEDIAL LA 11724..11725 ; Bottom # Mn [2] AHOM VOWEL SIGN U..AHOM VOWEL SIGN UU 11728 ; Bottom # Mn AHOM VOWEL SIGN O # Indic_Positional_Category=Top_And_Bottom 0C48 ; Top_And_Bottom # Mn TELUGU VOWEL SIGN AI 0F73 ; Top_And_Bottom # Mn TIBETAN VOWEL SIGN II 0F76..0F79 ; Top_And_Bottom # Mn [4] TIBETAN VOWEL SIGN VOCALIC R..TIBETAN VOWEL SIGN VOCALIC LL 0F81 ; Top_And_Bottom # Mn TIBETAN VOWEL SIGN REVERSED II 1B3C ; Top_And_Bottom # Mn BALINESE VOWEL SIGN LA LENGA 1112E..1112F ; Top_And_Bottom # Mn [2] CHAKMA VOWEL SIGN O..CHAKMA VOWEL SIGN AU # Indic_Positional_Category=Top_And_Right 0AC9 ; Top_And_Right # Mc GUJARATI VOWEL SIGN CANDRA O 0B57 ; Top_And_Right # Mc ORIYA AU LENGTH MARK 0CC0 ; Top_And_Right # Mc KANNADA VOWEL SIGN II 0CC7..0CC8 ; Top_And_Right # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI 0CCA..0CCB ; Top_And_Right # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO 1925..1926 ; Top_And_Right # Mc [2] LIMBU VOWEL SIGN OO..LIMBU VOWEL SIGN AU 1B43 ; Top_And_Right # Mc BALINESE VOWEL SIGN PEPET TEDUNG 111BF ; Top_And_Right # Mc SHARADA VOWEL SIGN AU 11232..11233 ; Top_And_Right # Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU # Indic_Positional_Category=Top_And_Left 0B48 ; Top_And_Left # Mc ORIYA VOWEL SIGN AI 0DDA ; Top_And_Left # Mc SINHALA VOWEL SIGN DIGA KOMBUVA 17BE ; Top_And_Left # Mc KHMER VOWEL SIGN OE 1C29 ; Top_And_Left # Mc LEPCHA VOWEL SIGN OO 114BB ; Top_And_Left # Mc TIRHUTA VOWEL SIGN AI 115B9 ; Top_And_Left # Mc SIDDHAM VOWEL SIGN AI # Indic_Positional_Category=Top_And_Left_And_Right 0B4C ; Top_And_Left_And_Right # Mc ORIYA VOWEL SIGN AU 0DDD ; Top_And_Left_And_Right # Mc SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA 17BF ; Top_And_Left_And_Right # Mc KHMER VOWEL SIGN YA 115BB ; Top_And_Left_And_Right # Mc SIDDHAM VOWEL SIGN AU # Indic_Positional_Category=Bottom_And_Right 1B3B ; Bottom_And_Right # Mc BALINESE VOWEL SIGN RA REPA TEDUNG A9C0 ; Bottom_And_Right # Mc JAVANESE PANGKON # Indic_Positional_Category=Top_And_Bottom_And_Right 1B3D ; Top_And_Bottom_And_Right # Mc BALINESE VOWEL SIGN LA LENGA TEDUNG # Indic_Positional_Category=Overstruck 1CD4 ; Overstruck # Mn VEDIC SIGN YAJURVEDIC MIDLINE SVARITA 1CE2..1CE8 ; Overstruck # Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL 10A01 ; Overstruck # Mn KHAROSHTHI VOWEL SIGN I 10A06 ; Overstruck # Mn KHAROSHTHI VOWEL SIGN O # EOF nototools-2017-09-25-tooling-for-phase3-update/third_party/ucd/IndicSyllabicCategory.txt000066400000000000000000002000421316231664500311360ustar00rootroot00000000000000# IndicSyllabicCategory-8.0.0.txt # Date: 2015-05-12, 10:00:00 GMT [RP, KW, LI] # # Unicode Character Database # Copyright (c) 1991-2015 Unicode, Inc. # For terms of use, see http://www.unicode.org/terms_of_use.html # For documentation, see UAX #44: Unicode Character Database, # at http://www.unicode.org/reports/tr44/ # # This file defines the following property: # # Indic_Syllabic_Category enumerated property # # Scope: This property is aimed at two general problem # areas involving the analysis and processing of Indic scripts: # # 1. Specification of syllabic structure. # 2. Specification of segmentation rules. # # Both of these problem areas may benefit from having defined subtypes # of Indic script characters which are relevant to how Indic # syllables (or aksaras) are constructed. Note that rules for # syllabic structure in Indic scripts may differ significantly # from how phonological syllables are defined. # # Format: # Field 0 Unicode code point value or range of code point values # Field 1 Indic_Syllabic_Category property value # # Field 1 is followed by a comment field, starting with the number sign '#', # which shows the General_Category property value, the Unicode character name # or names, and, in lines with ranges of code points, the code point count in # square brackets. # # The scripts assessed as Indic in the structural sense used for the # Indic_Syllabic_Category are the following: # # Ahom, Balinese, Batak, Bengali, Brahmi, Buginese, Buhid, Chakma, # Cham, Devanagari, Grantha, Gujarati, Gurmukhi, Hanunoo, Javanese, # Kaithi, Kannada, Kayah Li, Kharoshthi, Khmer, Khojki, Khudawadi, # Lao, Lepcha, Limbu, Mahajani, Malayalam, Meetei Mayek, Modi, # Multani, Myanmar, New Tai Lue, Oriya, Phags-pa, Rejang, Saurashtra, # Sharada, Siddham, Sinhala, Sundanese, Syloti Nagri, Tagalog, # Tagbanwa, Tai Le, Tai Tham, Tai Viet, Takri, Tamil, Telugu, Thai, # Tibetan, and Tirhuta. # # All characters for all other scripts not in that list # take the default value for this property, unless they # are individually listed in this data file. # # ================================================ # Property: Indic_Syllabic_Category # # All code points not explicitly listed for Indic_Syllabic_Category # have the value Other. # # @missing: 0000..10FFFF; Other # ================================================ # Indic_Syllabic_Category=Bindu # Bindu/Anusvara (nasalization or -n) # Excludes various Vedic nasalization signs. # [Not derivable] 0900..0902 ; Bindu # Mn [3] DEVANAGARI SIGN INVERTED CANDRABINDU..DEVANAGARI SIGN ANUSVARA 0981 ; Bindu # Mn BENGALI SIGN CANDRABINDU 0982 ; Bindu # Mc BENGALI SIGN ANUSVARA 0A01..0A02 ; Bindu # Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI 0A70 ; Bindu # Mn GURMUKHI TIPPI 0A81..0A82 ; Bindu # Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA 0B01 ; Bindu # Mn ORIYA SIGN CANDRABINDU 0B02 ; Bindu # Mc ORIYA SIGN ANUSVARA 0B82 ; Bindu # Mn TAMIL SIGN ANUSVARA 0C00 ; Bindu # Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE 0C01..0C02 ; Bindu # Mc [2] TELUGU SIGN CANDRABINDU..TELUGU SIGN ANUSVARA 0C81 ; Bindu # Mn KANNADA SIGN CANDRABINDU 0C82 ; Bindu # Mc KANNADA SIGN ANUSVARA 0D01 ; Bindu # Mn MALAYALAM SIGN CANDRABINDU 0D02 ; Bindu # Mc MALAYALAM SIGN ANUSVARA 0D82 ; Bindu # Mc SINHALA SIGN ANUSVARAYA 0E4D ; Bindu # Mn THAI CHARACTER NIKHAHIT 0ECD ; Bindu # Mn LAO NIGGAHITA 0F7E ; Bindu # Mn TIBETAN SIGN RJES SU NGA RO 0F82..0F83 ; Bindu # Mn [2] TIBETAN SIGN NYI ZLA NAA DA..TIBETAN SIGN SNA LDAN 1036 ; Bindu # Mn MYANMAR SIGN ANUSVARA 17C6 ; Bindu # Mn KHMER SIGN NIKAHIT 1932 ; Bindu # Mn LIMBU SMALL LETTER ANUSVARA 1B00..1B02 ; Bindu # Mn [3] BALINESE SIGN ULU RICEM..BALINESE SIGN CECEK 1B80 ; Bindu # Mn SUNDANESE SIGN PANYECEK 1C34..1C35 ; Bindu # Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG A80B ; Bindu # Mn SYLOTI NAGRI SIGN ANUSVARA A873 ; Bindu # Lo PHAGS-PA LETTER CANDRABINDU A880 ; Bindu # Mc SAURASHTRA SIGN ANUSVARA A980..A981 ; Bindu # Mn [2] JAVANESE SIGN PANYANGGA..JAVANESE SIGN CECAK 10A0E ; Bindu # Mn KHAROSHTHI SIGN ANUSVARA 11000 ; Bindu # Mc BRAHMI SIGN CANDRABINDU 11001 ; Bindu # Mn BRAHMI SIGN ANUSVARA 11080..11081 ; Bindu # Mn [2] KAITHI SIGN CANDRABINDU..KAITHI SIGN ANUSVARA 11100..11101 ; Bindu # Mn [2] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN ANUSVARA 11180..11181 ; Bindu # Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA 11234 ; Bindu # Mn KHOJKI SIGN ANUSVARA 112DF ; Bindu # Mn KHUDAWADI SIGN ANUSVARA 11300..11301 ; Bindu # Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU 11302 ; Bindu # Mc GRANTHA SIGN ANUSVARA 114BF..114C0 ; Bindu # Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA 115BC..115BD ; Bindu # Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA 1163D ; Bindu # Mn MODI SIGN ANUSVARA 116AB ; Bindu # Mn TAKRI SIGN ANUSVARA # ================================================ # Indic_Syllabic_Category=Visarga # Visarga (-h) # Includes specialized case for Sanskrit: ardhavisarga # Excludes letters for jihvamuliya and upadhmaniya, which are # related, but structured somewhat differently. # [Not derivable] 0903 ; Visarga # Mc DEVANAGARI SIGN VISARGA 0983 ; Visarga # Mc BENGALI SIGN VISARGA 0A03 ; Visarga # Mc GURMUKHI SIGN VISARGA 0A83 ; Visarga # Mc GUJARATI SIGN VISARGA 0B03 ; Visarga # Mc ORIYA SIGN VISARGA 0C03 ; Visarga # Mc TELUGU SIGN VISARGA 0C83 ; Visarga # Mc KANNADA SIGN VISARGA 0D03 ; Visarga # Mc MALAYALAM SIGN VISARGA 0D83 ; Visarga # Mc SINHALA SIGN VISARGAYA 0F7F ; Visarga # Mc TIBETAN SIGN RNAM BCAD 1038 ; Visarga # Mc MYANMAR SIGN VISARGA 17C7 ; Visarga # Mc KHMER SIGN REAHMUK 1B04 ; Visarga # Mc BALINESE SIGN BISAH 1B82 ; Visarga # Mc SUNDANESE SIGN PANGWISAD 1CF2..1CF3 ; Visarga # Mc [2] VEDIC SIGN ARDHAVISARGA..VEDIC SIGN ROTATED ARDHAVISARGA A881 ; Visarga # Mc SAURASHTRA SIGN VISARGA A983 ; Visarga # Mc JAVANESE SIGN WIGNYAN AAF5 ; Visarga # Mc MEETEI MAYEK VOWEL SIGN VISARGA 10A0F ; Visarga # Mn KHAROSHTHI SIGN VISARGA 11002 ; Visarga # Mc BRAHMI SIGN VISARGA 11082 ; Visarga # Mc KAITHI SIGN VISARGA 11102 ; Visarga # Mn CHAKMA SIGN VISARGA 11182 ; Visarga # Mc SHARADA SIGN VISARGA 11303 ; Visarga # Mc GRANTHA SIGN VISARGA 114C1 ; Visarga # Mc TIRHUTA SIGN VISARGA 115BE ; Visarga # Mc SIDDHAM SIGN VISARGA 1163E ; Visarga # Mc MODI SIGN VISARGA 116AC ; Visarga # Mc TAKRI SIGN VISARGA # ================================================ # Indic_Syllabic_Category=Avagraha # Avagraha (elision of initial a- in sandhi) # [Not derivable] 093D ; Avagraha # Lo DEVANAGARI SIGN AVAGRAHA 09BD ; Avagraha # Lo BENGALI SIGN AVAGRAHA 0ABD ; Avagraha # Lo GUJARATI SIGN AVAGRAHA 0B3D ; Avagraha # Lo ORIYA SIGN AVAGRAHA 0C3D ; Avagraha # Lo TELUGU SIGN AVAGRAHA 0CBD ; Avagraha # Lo KANNADA SIGN AVAGRAHA 0D3D ; Avagraha # Lo MALAYALAM SIGN AVAGRAHA 0F85 ; Avagraha # Po TIBETAN MARK PALUTA 17DC ; Avagraha # Lo KHMER SIGN AVAKRAHASANYA 1BBA ; Avagraha # Lo SUNDANESE AVAGRAHA 111C1 ; Avagraha # Lo SHARADA SIGN AVAGRAHA 1133D ; Avagraha # Lo GRANTHA SIGN AVAGRAHA 114C4 ; Avagraha # Lo TIRHUTA SIGN AVAGRAHA # ================================================ # Indic_Syllabic_Category=Nukta # Nukta (diacritic for borrowed consonants or other consonant # modifications) # [Derivation: (ccc=7) + 0F39 + 10A38..10A3A - 1037] 093C ; Nukta # Mn DEVANAGARI SIGN NUKTA 09BC ; Nukta # Mn BENGALI SIGN NUKTA 0A3C ; Nukta # Mn GURMUKHI SIGN NUKTA 0ABC ; Nukta # Mn GUJARATI SIGN NUKTA 0B3C ; Nukta # Mn ORIYA SIGN NUKTA 0CBC ; Nukta # Mn KANNADA SIGN NUKTA 0F39 ; Nukta # Mn TIBETAN MARK TSA -PHRU 1B34 ; Nukta # Mn BALINESE SIGN REREKAN 1BE6 ; Nukta # Mn BATAK SIGN TOMPI 1C37 ; Nukta # Mn LEPCHA SIGN NUKTA A9B3 ; Nukta # Mn JAVANESE SIGN CECAK TELU 10A38..10A3A ; Nukta # Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW 110BA ; Nukta # Mn KAITHI SIGN NUKTA 11173 ; Nukta # Mn MAHAJANI SIGN NUKTA 111CA ; Nukta # Mn SHARADA SIGN NUKTA 11236 ; Nukta # Mn KHOJKI SIGN NUKTA 112E9 ; Nukta # Mn KHUDAWADI SIGN NUKTA 1133C ; Nukta # Mn GRANTHA SIGN NUKTA 114C3 ; Nukta # Mn TIRHUTA SIGN NUKTA 115C0 ; Nukta # Mn SIDDHAM SIGN NUKTA 116B7 ; Nukta # Mn TAKRI SIGN NUKTA # ================================================ # Indic_Syllabic_Category=Virama # Virama (killing of inherent vowel in consonant sequence # or consonant stacker) # Only includes characters that can act both as visible killer viramas # and consonant stackers. Separate property values exist for characters # that can only act as pure killers or only as consonant stackers. # [Derivation: (ccc=9) - (InSC=Pure_Killer) - (InSC=Invisible_Stacker) # - (InSC=Number_Joiner) - 2D7F] 094D ; Virama # Mn DEVANAGARI SIGN VIRAMA 09CD ; Virama # Mn BENGALI SIGN VIRAMA 0A4D ; Virama # Mn GURMUKHI SIGN VIRAMA 0ACD ; Virama # Mn GUJARATI SIGN VIRAMA 0B4D ; Virama # Mn ORIYA SIGN VIRAMA 0BCD ; Virama # Mn TAMIL SIGN VIRAMA 0C4D ; Virama # Mn TELUGU SIGN VIRAMA 0CCD ; Virama # Mn KANNADA SIGN VIRAMA 0D4D ; Virama # Mn MALAYALAM SIGN VIRAMA 0DCA ; Virama # Mn SINHALA SIGN AL-LAKUNA 1B44 ; Virama # Mc BALINESE ADEG ADEG A8C4 ; Virama # Mn SAURASHTRA SIGN VIRAMA A9C0 ; Virama # Mc JAVANESE PANGKON 11046 ; Virama # Mn BRAHMI VIRAMA 110B9 ; Virama # Mn KAITHI SIGN VIRAMA 111C0 ; Virama # Mc SHARADA SIGN VIRAMA 11235 ; Virama # Mc KHOJKI SIGN VIRAMA 1134D ; Virama # Mc GRANTHA SIGN VIRAMA 114C2 ; Virama # Mn TIRHUTA SIGN VIRAMA 115BF ; Virama # Mn SIDDHAM SIGN VIRAMA 1163F ; Virama # Mn MODI SIGN VIRAMA 116B6 ; Virama # Mc TAKRI SIGN VIRAMA # ================================================ # Indic_Syllabic_Category=Pure_Killer # Pure killer (killing of inherent vowel in consonant sequence, # with no consonant stacking behavior) # [Not derivable] 0E3A ; Pure_Killer # Mn THAI CHARACTER PHINTHU 0E4E ; Pure_Killer # Mn THAI CHARACTER YAMAKKAN 0F84 ; Pure_Killer # Mn TIBETAN MARK HALANTA 103A ; Pure_Killer # Mn MYANMAR SIGN ASAT 1714 ; Pure_Killer # Mn TAGALOG SIGN VIRAMA 1734 ; Pure_Killer # Mn HANUNOO SIGN PAMUDPOD 17D1 ; Pure_Killer # Mn KHMER SIGN VIRIAM 1BAA ; Pure_Killer # Mc SUNDANESE SIGN PAMAAEH 1BF2..1BF3 ; Pure_Killer # Mc [2] BATAK PANGOLAT..BATAK PANONGONAN A806 ; Pure_Killer # Mn SYLOTI NAGRI SIGN HASANTA A953 ; Pure_Killer # Mc REJANG VIRAMA ABED ; Pure_Killer # Mn MEETEI MAYEK APUN IYEK 11134 ; Pure_Killer # Mn CHAKMA MAAYYAA 112EA ; Pure_Killer # Mn KHUDAWADI SIGN VIRAMA 1172B ; Pure_Killer # Mn AHOM SIGN KILLER # ================================================ # Indic_Syllabic_Category=Invisible_Stacker # Invisible stacker (invisible consonant stacker virama) # [Not derivable] 1039 ; Invisible_Stacker # Mn MYANMAR SIGN VIRAMA 17D2 ; Invisible_Stacker # Mn KHMER SIGN COENG 1A60 ; Invisible_Stacker # Mn TAI THAM SIGN SAKOT 1BAB ; Invisible_Stacker # Mn SUNDANESE SIGN VIRAMA AAF6 ; Invisible_Stacker # Mn MEETEI MAYEK VIRAMA 10A3F ; Invisible_Stacker # Mn KHAROSHTHI VIRAMA 11133 ; Invisible_Stacker # Mn CHAKMA VIRAMA # ================================================ # Indic_Syllabic_Category=Vowel_Independent # Independent Vowels (contrasted with matras) # [Not derivable] 0904..0914 ; Vowel_Independent # Lo [17] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER AU 0960..0961 ; Vowel_Independent # Lo [2] DEVANAGARI LETTER VOCALIC RR..DEVANAGARI LETTER VOCALIC LL 0972..0977 ; Vowel_Independent # Lo [6] DEVANAGARI LETTER CANDRA A..DEVANAGARI LETTER UUE 0985..098C ; Vowel_Independent # Lo [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L 098F..0990 ; Vowel_Independent # Lo [2] BENGALI LETTER E..BENGALI LETTER AI 0993..0994 ; Vowel_Independent # Lo [2] BENGALI LETTER O..BENGALI LETTER AU 09E0..09E1 ; Vowel_Independent # Lo [2] BENGALI LETTER VOCALIC RR..BENGALI LETTER VOCALIC LL 0A05..0A0A ; Vowel_Independent # Lo [6] GURMUKHI LETTER A..GURMUKHI LETTER UU 0A0F..0A10 ; Vowel_Independent # Lo [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI 0A13..0A14 ; Vowel_Independent # Lo [2] GURMUKHI LETTER OO..GURMUKHI LETTER AU 0A85..0A8D ; Vowel_Independent # Lo [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E 0A8F..0A91 ; Vowel_Independent # Lo [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O 0A93..0A94 ; Vowel_Independent # Lo [2] GUJARATI LETTER O..GUJARATI LETTER AU 0AE0..0AE1 ; Vowel_Independent # Lo [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL 0B05..0B0C ; Vowel_Independent # Lo [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L 0B0F..0B10 ; Vowel_Independent # Lo [2] ORIYA LETTER E..ORIYA LETTER AI 0B13..0B14 ; Vowel_Independent # Lo [2] ORIYA LETTER O..ORIYA LETTER AU 0B60..0B61 ; Vowel_Independent # Lo [2] ORIYA LETTER VOCALIC RR..ORIYA LETTER VOCALIC LL 0B85..0B8A ; Vowel_Independent # Lo [6] TAMIL LETTER A..TAMIL LETTER UU 0B8E..0B90 ; Vowel_Independent # Lo [3] TAMIL LETTER E..TAMIL LETTER AI 0B92..0B94 ; Vowel_Independent # Lo [3] TAMIL LETTER O..TAMIL LETTER AU 0C05..0C0C ; Vowel_Independent # Lo [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L 0C0E..0C10 ; Vowel_Independent # Lo [3] TELUGU LETTER E..TELUGU LETTER AI 0C12..0C14 ; Vowel_Independent # Lo [3] TELUGU LETTER O..TELUGU LETTER AU 0C60..0C61 ; Vowel_Independent # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL 0C85..0C8C ; Vowel_Independent # Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L 0C8E..0C90 ; Vowel_Independent # Lo [3] KANNADA LETTER E..KANNADA LETTER AI 0C92..0C94 ; Vowel_Independent # Lo [3] KANNADA LETTER O..KANNADA LETTER AU 0CE0..0CE1 ; Vowel_Independent # Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL 0D05..0D0C ; Vowel_Independent # Lo [8] MALAYALAM LETTER A..MALAYALAM LETTER VOCALIC L 0D0E..0D10 ; Vowel_Independent # Lo [3] MALAYALAM LETTER E..MALAYALAM LETTER AI 0D12..0D14 ; Vowel_Independent # Lo [3] MALAYALAM LETTER O..MALAYALAM LETTER AU 0D5F..0D61 ; Vowel_Independent # Lo [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL 0D85..0D96 ; Vowel_Independent # Lo [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA 1021..102A ; Vowel_Independent # Lo [10] MYANMAR LETTER A..MYANMAR LETTER AU 1052..1055 ; Vowel_Independent # Lo [4] MYANMAR LETTER VOCALIC R..MYANMAR LETTER VOCALIC LL 1700..1702 ; Vowel_Independent # Lo [3] TAGALOG LETTER A..TAGALOG LETTER U 1720..1722 ; Vowel_Independent # Lo [3] HANUNOO LETTER A..HANUNOO LETTER U 1740..1742 ; Vowel_Independent # Lo [3] BUHID LETTER A..BUHID LETTER U 1760..1762 ; Vowel_Independent # Lo [3] TAGBANWA LETTER A..TAGBANWA LETTER U 17A3..17B3 ; Vowel_Independent # Lo [17] KHMER INDEPENDENT VOWEL QAQ..KHMER INDEPENDENT VOWEL QAU 1A4D..1A52 ; Vowel_Independent # Lo [6] TAI THAM LETTER I..TAI THAM LETTER OO 1B05..1B12 ; Vowel_Independent # Lo [14] BALINESE LETTER AKARA..BALINESE LETTER OKARA TEDUNG 1B83..1B89 ; Vowel_Independent # Lo [7] SUNDANESE LETTER A..SUNDANESE LETTER EU 1BE4..1BE5 ; Vowel_Independent # Lo [2] BATAK LETTER I..BATAK LETTER U A800..A801 ; Vowel_Independent # Lo [2] SYLOTI NAGRI LETTER A..SYLOTI NAGRI LETTER I A803..A805 ; Vowel_Independent # Lo [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O A882..A891 ; Vowel_Independent # Lo [16] SAURASHTRA LETTER A..SAURASHTRA LETTER AU A984..A988 ; Vowel_Independent # Lo [5] JAVANESE LETTER A..JAVANESE LETTER U A98C..A98E ; Vowel_Independent # Lo [3] JAVANESE LETTER E..JAVANESE LETTER O AA00..AA05 ; Vowel_Independent # Lo [6] CHAM LETTER A..CHAM LETTER O AAE0..AAE1 ; Vowel_Independent # Lo [2] MEETEI MAYEK LETTER E..MEETEI MAYEK LETTER O ABCE..ABCF ; Vowel_Independent # Lo [2] MEETEI MAYEK LETTER UN..MEETEI MAYEK LETTER I ABD1 ; Vowel_Independent # Lo MEETEI MAYEK LETTER ATIYA 11005..11012 ; Vowel_Independent # Lo [14] BRAHMI LETTER A..BRAHMI LETTER AU 11083..1108C ; Vowel_Independent # Lo [10] KAITHI LETTER A..KAITHI LETTER AU 11103..11106 ; Vowel_Independent # Lo [4] CHAKMA LETTER AA..CHAKMA LETTER E 11183..11190 ; Vowel_Independent # Lo [14] SHARADA LETTER A..SHARADA LETTER AU 11200..11207 ; Vowel_Independent # Lo [8] KHOJKI LETTER A..KHOJKI LETTER AU 11280..11283 ; Vowel_Independent # Lo [4] MULTANI LETTER A..MULTANI LETTER E 112B0..112B9 ; Vowel_Independent # Lo [10] KHUDAWADI LETTER A..KHUDAWADI LETTER AU 11305..1130C ; Vowel_Independent # Lo [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L 1130F..11310 ; Vowel_Independent # Lo [2] GRANTHA LETTER EE..GRANTHA LETTER AI 11313..11314 ; Vowel_Independent # Lo [2] GRANTHA LETTER OO..GRANTHA LETTER AU 11360..11361 ; Vowel_Independent # Lo [2] GRANTHA LETTER VOCALIC RR..GRANTHA LETTER VOCALIC LL 11481..1148E ; Vowel_Independent # Lo [14] TIRHUTA LETTER A..TIRHUTA LETTER AU 11580..1158D ; Vowel_Independent # Lo [14] SIDDHAM LETTER A..SIDDHAM LETTER AU 115D8..115DB ; Vowel_Independent # Lo [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U 11600..1160D ; Vowel_Independent # Lo [14] MODI LETTER A..MODI LETTER AU 11680..11689 ; Vowel_Independent # Lo [10] TAKRI LETTER A..TAKRI LETTER AU # ================================================ # Indic_Syllabic_Category=Vowel_Dependent # Dependent Vowels (contrasted with independent vowels and/or with complex placement) # Matras (in Indic scripts) # [Not derivable] 093A ; Vowel_Dependent # Mn DEVANAGARI VOWEL SIGN OE 093B ; Vowel_Dependent # Mc DEVANAGARI VOWEL SIGN OOE 093E..0940 ; Vowel_Dependent # Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II 0941..0948 ; Vowel_Dependent # Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI 0949..094C ; Vowel_Dependent # Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU 094E..094F ; Vowel_Dependent # Mc [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW 0955..0957 ; Vowel_Dependent # Mn [3] DEVANAGARI VOWEL SIGN CANDRA LONG E..DEVANAGARI VOWEL SIGN UUE 0962..0963 ; Vowel_Dependent # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL 09BE..09C0 ; Vowel_Dependent # Mc [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II 09C1..09C4 ; Vowel_Dependent # Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR 09C7..09C8 ; Vowel_Dependent # Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI 09CB..09CC ; Vowel_Dependent # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU 09D7 ; Vowel_Dependent # Mc BENGALI AU LENGTH MARK 09E2..09E3 ; Vowel_Dependent # Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL 0A3E..0A40 ; Vowel_Dependent # Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II 0A41..0A42 ; Vowel_Dependent # Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU 0A47..0A48 ; Vowel_Dependent # Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI 0A4B..0A4C ; Vowel_Dependent # Mn [2] GURMUKHI VOWEL SIGN OO..GURMUKHI VOWEL SIGN AU 0ABE..0AC0 ; Vowel_Dependent # Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II 0AC1..0AC5 ; Vowel_Dependent # Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E 0AC7..0AC8 ; Vowel_Dependent # Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI 0AC9 ; Vowel_Dependent # Mc GUJARATI VOWEL SIGN CANDRA O 0ACB..0ACC ; Vowel_Dependent # Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU 0AE2..0AE3 ; Vowel_Dependent # Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL 0B3E ; Vowel_Dependent # Mc ORIYA VOWEL SIGN AA 0B3F ; Vowel_Dependent # Mn ORIYA VOWEL SIGN I 0B40 ; Vowel_Dependent # Mc ORIYA VOWEL SIGN II 0B41..0B44 ; Vowel_Dependent # Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR 0B47..0B48 ; Vowel_Dependent # Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI 0B4B..0B4C ; Vowel_Dependent # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU 0B56 ; Vowel_Dependent # Mn ORIYA AI LENGTH MARK 0B57 ; Vowel_Dependent # Mc ORIYA AU LENGTH MARK 0B62..0B63 ; Vowel_Dependent # Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL 0BBE..0BBF ; Vowel_Dependent # Mc [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I 0BC0 ; Vowel_Dependent # Mn TAMIL VOWEL SIGN II 0BC1..0BC2 ; Vowel_Dependent # Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU 0BC6..0BC8 ; Vowel_Dependent # Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI 0BCA..0BCC ; Vowel_Dependent # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU 0BD7 ; Vowel_Dependent # Mc TAMIL AU LENGTH MARK 0C3E..0C40 ; Vowel_Dependent # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II 0C41..0C44 ; Vowel_Dependent # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR 0C46..0C48 ; Vowel_Dependent # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI 0C4A..0C4C ; Vowel_Dependent # Mn [3] TELUGU VOWEL SIGN O..TELUGU VOWEL SIGN AU 0C55..0C56 ; Vowel_Dependent # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK 0C62..0C63 ; Vowel_Dependent # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL 0CBE ; Vowel_Dependent # Mc KANNADA VOWEL SIGN AA 0CBF ; Vowel_Dependent # Mn KANNADA VOWEL SIGN I 0CC0..0CC4 ; Vowel_Dependent # Mc [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR 0CC6 ; Vowel_Dependent # Mn KANNADA VOWEL SIGN E 0CC7..0CC8 ; Vowel_Dependent # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI 0CCA..0CCB ; Vowel_Dependent # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO 0CCC ; Vowel_Dependent # Mn KANNADA VOWEL SIGN AU 0CD5..0CD6 ; Vowel_Dependent # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK 0CE2..0CE3 ; Vowel_Dependent # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL 0D3E..0D40 ; Vowel_Dependent # Mc [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II 0D41..0D44 ; Vowel_Dependent # Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR 0D46..0D48 ; Vowel_Dependent # Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI 0D4A..0D4C ; Vowel_Dependent # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU 0D57 ; Vowel_Dependent # Mc MALAYALAM AU LENGTH MARK 0D62..0D63 ; Vowel_Dependent # Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL 0DCF..0DD1 ; Vowel_Dependent # Mc [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA 0DD2..0DD4 ; Vowel_Dependent # Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA 0DD6 ; Vowel_Dependent # Mn SINHALA VOWEL SIGN DIGA PAA-PILLA 0DD8..0DDF ; Vowel_Dependent # Mc [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA 0DF2..0DF3 ; Vowel_Dependent # Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA 0E30 ; Vowel_Dependent # Lo THAI CHARACTER SARA A 0E31 ; Vowel_Dependent # Mn THAI CHARACTER MAI HAN-AKAT 0E32..0E33 ; Vowel_Dependent # Lo [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM 0E34..0E39 ; Vowel_Dependent # Mn [6] THAI CHARACTER SARA I..THAI CHARACTER SARA UU 0E40..0E45 ; Vowel_Dependent # Lo [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO 0E47 ; Vowel_Dependent # Mn THAI CHARACTER MAITAIKHU 0EB0 ; Vowel_Dependent # Lo LAO VOWEL SIGN A 0EB1 ; Vowel_Dependent # Mn LAO VOWEL SIGN MAI KAN 0EB2..0EB3 ; Vowel_Dependent # Lo [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM 0EB4..0EB9 ; Vowel_Dependent # Mn [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU 0EBB ; Vowel_Dependent # Mn LAO VOWEL SIGN MAI KON 0EC0..0EC4 ; Vowel_Dependent # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI 0F71..0F7D ; Vowel_Dependent # Mn [13] TIBETAN VOWEL SIGN AA..TIBETAN VOWEL SIGN OO 0F80..0F81 ; Vowel_Dependent # Mn [2] TIBETAN VOWEL SIGN REVERSED I..TIBETAN VOWEL SIGN REVERSED II 102B..102C ; Vowel_Dependent # Mc [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA 102D..1030 ; Vowel_Dependent # Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU 1031 ; Vowel_Dependent # Mc MYANMAR VOWEL SIGN E 1032..1035 ; Vowel_Dependent # Mn [4] MYANMAR VOWEL SIGN AI..MYANMAR VOWEL SIGN E ABOVE 1056..1057 ; Vowel_Dependent # Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR 1058..1059 ; Vowel_Dependent # Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL 1062 ; Vowel_Dependent # Mc MYANMAR VOWEL SIGN SGAW KAREN EU 1067..1068 ; Vowel_Dependent # Mc [2] MYANMAR VOWEL SIGN WESTERN PWO KAREN EU..MYANMAR VOWEL SIGN WESTERN PWO KAREN UE 1071..1074 ; Vowel_Dependent # Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE 1083..1084 ; Vowel_Dependent # Mc [2] MYANMAR VOWEL SIGN SHAN AA..MYANMAR VOWEL SIGN SHAN E 1085..1086 ; Vowel_Dependent # Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y 109C ; Vowel_Dependent # Mc MYANMAR VOWEL SIGN AITON A 109D ; Vowel_Dependent # Mn MYANMAR VOWEL SIGN AITON AI 1712..1713 ; Vowel_Dependent # Mn [2] TAGALOG VOWEL SIGN I..TAGALOG VOWEL SIGN U 1732..1733 ; Vowel_Dependent # Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U 1752..1753 ; Vowel_Dependent # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U 1772..1773 ; Vowel_Dependent # Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U 17B6 ; Vowel_Dependent # Mc KHMER VOWEL SIGN AA 17B7..17BD ; Vowel_Dependent # Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA 17BE..17C5 ; Vowel_Dependent # Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU 17C8 ; Vowel_Dependent # Mc KHMER SIGN YUUKALEAPINTU 1920..1922 ; Vowel_Dependent # Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U 1923..1926 ; Vowel_Dependent # Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU 1927..1928 ; Vowel_Dependent # Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O 193A ; Vowel_Dependent # Mn LIMBU SIGN KEMPHRENG 19B0..19C0 ; Vowel_Dependent # Lo [17] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE VOWEL SIGN IY 1A17..1A18 ; Vowel_Dependent # Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U 1A19..1A1A ; Vowel_Dependent # Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O 1A1B ; Vowel_Dependent # Mn BUGINESE VOWEL SIGN AE 1A61 ; Vowel_Dependent # Mc TAI THAM VOWEL SIGN A 1A62 ; Vowel_Dependent # Mn TAI THAM VOWEL SIGN MAI SAT 1A63..1A64 ; Vowel_Dependent # Mc [2] TAI THAM VOWEL SIGN AA..TAI THAM VOWEL SIGN TALL AA 1A65..1A6C ; Vowel_Dependent # Mn [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW 1A6D..1A72 ; Vowel_Dependent # Mc [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI 1A73..1A74 ; Vowel_Dependent # Mn [2] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN MAI KANG 1B35 ; Vowel_Dependent # Mc BALINESE VOWEL SIGN TEDUNG 1B36..1B3A ; Vowel_Dependent # Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA 1B3B ; Vowel_Dependent # Mc BALINESE VOWEL SIGN RA REPA TEDUNG 1B3C ; Vowel_Dependent # Mn BALINESE VOWEL SIGN LA LENGA 1B3D..1B41 ; Vowel_Dependent # Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG 1B42 ; Vowel_Dependent # Mn BALINESE VOWEL SIGN PEPET 1B43 ; Vowel_Dependent # Mc BALINESE VOWEL SIGN PEPET TEDUNG 1BA4..1BA5 ; Vowel_Dependent # Mn [2] SUNDANESE VOWEL SIGN PANGHULU..SUNDANESE VOWEL SIGN PANYUKU 1BA6..1BA7 ; Vowel_Dependent # Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG 1BA8..1BA9 ; Vowel_Dependent # Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG 1BE7 ; Vowel_Dependent # Mc BATAK VOWEL SIGN E 1BE8..1BE9 ; Vowel_Dependent # Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE 1BEA..1BEC ; Vowel_Dependent # Mc [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O 1BED ; Vowel_Dependent # Mn BATAK VOWEL SIGN KARO O 1BEE ; Vowel_Dependent # Mc BATAK VOWEL SIGN U 1BEF ; Vowel_Dependent # Mn BATAK VOWEL SIGN U FOR SIMALUNGUN SA 1C26..1C2B ; Vowel_Dependent # Mc [6] LEPCHA VOWEL SIGN AA..LEPCHA VOWEL SIGN UU 1C2C ; Vowel_Dependent # Mn LEPCHA VOWEL SIGN E A823..A824 ; Vowel_Dependent # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I A825..A826 ; Vowel_Dependent # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E A827 ; Vowel_Dependent # Mc SYLOTI NAGRI VOWEL SIGN OO A8B5..A8C3 ; Vowel_Dependent # Mc [15] SAURASHTRA VOWEL SIGN AA..SAURASHTRA VOWEL SIGN AU A947..A94E ; Vowel_Dependent # Mn [8] REJANG VOWEL SIGN I..REJANG VOWEL SIGN EA A9B4..A9B5 ; Vowel_Dependent # Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG A9B6..A9B9 ; Vowel_Dependent # Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT A9BA..A9BB ; Vowel_Dependent # Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE A9BC ; Vowel_Dependent # Mn JAVANESE VOWEL SIGN PEPET A9E5 ; Vowel_Dependent # Mn MYANMAR SIGN SHAN SAW AA29..AA2E ; Vowel_Dependent # Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE AA2F..AA30 ; Vowel_Dependent # Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI AA31..AA32 ; Vowel_Dependent # Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE AAB0 ; Vowel_Dependent # Mn TAI VIET MAI KANG AAB1 ; Vowel_Dependent # Lo TAI VIET VOWEL AA AAB2..AAB4 ; Vowel_Dependent # Mn [3] TAI VIET VOWEL I..TAI VIET VOWEL U AAB5..AAB6 ; Vowel_Dependent # Lo [2] TAI VIET VOWEL E..TAI VIET VOWEL O AAB7..AAB8 ; Vowel_Dependent # Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA AAB9..AABD ; Vowel_Dependent # Lo [5] TAI VIET VOWEL UEA..TAI VIET VOWEL AN AABE ; Vowel_Dependent # Mn TAI VIET VOWEL AM AAEB ; Vowel_Dependent # Mc MEETEI MAYEK VOWEL SIGN II AAEC..AAED ; Vowel_Dependent # Mn [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI AAEE..AAEF ; Vowel_Dependent # Mc [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU ABE3..ABE4 ; Vowel_Dependent # Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP ABE5 ; Vowel_Dependent # Mn MEETEI MAYEK VOWEL SIGN ANAP ABE6..ABE7 ; Vowel_Dependent # Mc [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP ABE8 ; Vowel_Dependent # Mn MEETEI MAYEK VOWEL SIGN UNAP ABE9..ABEA ; Vowel_Dependent # Mc [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG 10A01..10A03 ; Vowel_Dependent # Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R 10A05..10A06 ; Vowel_Dependent # Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O 10A0C..10A0D ; Vowel_Dependent # Mn [2] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN DOUBLE RING BELOW 11038..11045 ; Vowel_Dependent # Mn [14] BRAHMI VOWEL SIGN AA..BRAHMI VOWEL SIGN AU 110B0..110B2 ; Vowel_Dependent # Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II 110B3..110B6 ; Vowel_Dependent # Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI 110B7..110B8 ; Vowel_Dependent # Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU 11127..1112B ; Vowel_Dependent # Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU 1112C ; Vowel_Dependent # Mc CHAKMA VOWEL SIGN E 1112D..11132 ; Vowel_Dependent # Mn [6] CHAKMA VOWEL SIGN AI..CHAKMA AU MARK 111B3..111B5 ; Vowel_Dependent # Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II 111B6..111BE ; Vowel_Dependent # Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O 111BF ; Vowel_Dependent # Mc SHARADA VOWEL SIGN AU 111CB..111CC ; Vowel_Dependent # Mn [2] SHARADA VOWEL MODIFIER MARK..SHARADA EXTRA SHORT VOWEL MARK 1122C..1122E ; Vowel_Dependent # Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II 1122F..11231 ; Vowel_Dependent # Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI 11232..11233 ; Vowel_Dependent # Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU 112E0..112E2 ; Vowel_Dependent # Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II 112E3..112E8 ; Vowel_Dependent # Mn [6] KHUDAWADI VOWEL SIGN U..KHUDAWADI VOWEL SIGN AU 1133E..1133F ; Vowel_Dependent # Mc [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I 11340 ; Vowel_Dependent # Mn GRANTHA VOWEL SIGN II 11341..11344 ; Vowel_Dependent # Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR 11347..11348 ; Vowel_Dependent # Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI 1134B..1134C ; Vowel_Dependent # Mc [2] GRANTHA VOWEL SIGN OO..GRANTHA VOWEL SIGN AU 11357 ; Vowel_Dependent # Mc GRANTHA AU LENGTH MARK 11362..11363 ; Vowel_Dependent # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL 114B0..114B2 ; Vowel_Dependent # Mc [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II 114B3..114B8 ; Vowel_Dependent # Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL 114B9 ; Vowel_Dependent # Mc TIRHUTA VOWEL SIGN E 114BA ; Vowel_Dependent # Mn TIRHUTA VOWEL SIGN SHORT E 114BB..114BE ; Vowel_Dependent # Mc [4] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN AU 115AF..115B1 ; Vowel_Dependent # Mc [3] SIDDHAM VOWEL SIGN AA..SIDDHAM VOWEL SIGN II 115B2..115B5 ; Vowel_Dependent # Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR 115B8..115BB ; Vowel_Dependent # Mc [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU 115DC..115DD ; Vowel_Dependent # Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU 11630..11632 ; Vowel_Dependent # Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II 11633..1163A ; Vowel_Dependent # Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI 1163B..1163C ; Vowel_Dependent # Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU 11640 ; Vowel_Dependent # Mn MODI SIGN ARDHACANDRA 116AD ; Vowel_Dependent # Mn TAKRI VOWEL SIGN AA 116AE..116AF ; Vowel_Dependent # Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II 116B0..116B5 ; Vowel_Dependent # Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU 11720..11721 ; Vowel_Dependent # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA 11722..11725 ; Vowel_Dependent # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU 11726 ; Vowel_Dependent # Mc AHOM VOWEL SIGN E 11727..1172A ; Vowel_Dependent # Mn [4] AHOM VOWEL SIGN AW..AHOM VOWEL SIGN AM # ================================================ # Indic_Syllabic_Category=Vowel # (Other) Vowels (reanalyzed as ordinary alphabetic letters or marks) # [Not derivable] 1963..196D ; Vowel # Lo [11] TAI LE LETTER A..TAI LE LETTER AI A85E..A861 ; Vowel # Lo [4] PHAGS-PA LETTER I..PHAGS-PA LETTER O A866 ; Vowel # Lo PHAGS-PA LETTER EE A922..A925 ; Vowel # Lo [4] KAYAH LI LETTER A..KAYAH LI LETTER OO A926..A92A ; Vowel # Mn [5] KAYAH LI VOWEL UE..KAYAH LI VOWEL O 11150..11154 ; Vowel # Lo [5] MAHAJANI LETTER A..MAHAJANI LETTER O # ================================================ # Indic_Syllabic_Category=Consonant_Placeholder # Consonant Placeholder # This includes generic placeholders used for # Indic script layout (NBSP and dotted circle), as well as a few script- # specific vowel-holder characters which are not technically # consonants, but serve instead as bases for placement of vowel marks. # [Not derivable] 002D ; Consonant_Placeholder # Pd HYPHEN-MINUS 00A0 ; Consonant_Placeholder # Zs NO-BREAK SPACE 00D7 ; Consonant_Placeholder # Sm MULTIPLICATION SIGN 0A72..0A73 ; Consonant_Placeholder # Lo [2] GURMUKHI IRI..GURMUKHI URA 104E ; Consonant_Placeholder # Po MYANMAR SYMBOL AFOREMENTIONED 1900 ; Consonant_Placeholder # Lo LIMBU VOWEL-CARRIER LETTER 2010..2014 ; Consonant_Placeholder # Pd [5] HYPHEN..EM DASH 25CC ; Consonant_Placeholder # So DOTTED CIRCLE # ================================================ # Indic_Syllabic_Category=Consonant # Consonant (ordinary abugida consonants, with inherent vowels) # [Not derivable] 0915..0939 ; Consonant # Lo [37] DEVANAGARI LETTER KA..DEVANAGARI LETTER HA 0958..095F ; Consonant # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA 0978..097F ; Consonant # Lo [8] DEVANAGARI LETTER MARWARI DDA..DEVANAGARI LETTER BBA 0995..09A8 ; Consonant # Lo [20] BENGALI LETTER KA..BENGALI LETTER NA 09AA..09B0 ; Consonant # Lo [7] BENGALI LETTER PA..BENGALI LETTER RA 09B2 ; Consonant # Lo BENGALI LETTER LA 09B6..09B9 ; Consonant # Lo [4] BENGALI LETTER SHA..BENGALI LETTER HA 09DC..09DD ; Consonant # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA 09DF ; Consonant # Lo BENGALI LETTER YYA 09F0..09F1 ; Consonant # Lo [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL 0A15..0A28 ; Consonant # Lo [20] GURMUKHI LETTER KA..GURMUKHI LETTER NA 0A2A..0A30 ; Consonant # Lo [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA 0A32..0A33 ; Consonant # Lo [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA 0A35..0A36 ; Consonant # Lo [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA 0A38..0A39 ; Consonant # Lo [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA 0A59..0A5C ; Consonant # Lo [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA 0A5E ; Consonant # Lo GURMUKHI LETTER FA 0A95..0AA8 ; Consonant # Lo [20] GUJARATI LETTER KA..GUJARATI LETTER NA 0AAA..0AB0 ; Consonant # Lo [7] GUJARATI LETTER PA..GUJARATI LETTER RA 0AB2..0AB3 ; Consonant # Lo [2] GUJARATI LETTER LA..GUJARATI LETTER LLA 0AB5..0AB9 ; Consonant # Lo [5] GUJARATI LETTER VA..GUJARATI LETTER HA 0AF9 ; Consonant # Lo GUJARATI LETTER ZHA 0B15..0B28 ; Consonant # Lo [20] ORIYA LETTER KA..ORIYA LETTER NA 0B2A..0B30 ; Consonant # Lo [7] ORIYA LETTER PA..ORIYA LETTER RA 0B32..0B33 ; Consonant # Lo [2] ORIYA LETTER LA..ORIYA LETTER LLA 0B35..0B39 ; Consonant # Lo [5] ORIYA LETTER VA..ORIYA LETTER HA 0B5C..0B5D ; Consonant # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA 0B5F ; Consonant # Lo ORIYA LETTER YYA 0B71 ; Consonant # Lo ORIYA LETTER WA 0B95 ; Consonant # Lo TAMIL LETTER KA 0B99..0B9A ; Consonant # Lo [2] TAMIL LETTER NGA..TAMIL LETTER CA 0B9C ; Consonant # Lo TAMIL LETTER JA 0B9E..0B9F ; Consonant # Lo [2] TAMIL LETTER NYA..TAMIL LETTER TTA 0BA3..0BA4 ; Consonant # Lo [2] TAMIL LETTER NNA..TAMIL LETTER TA 0BA8..0BAA ; Consonant # Lo [3] TAMIL LETTER NA..TAMIL LETTER PA 0BAE..0BB9 ; Consonant # Lo [12] TAMIL LETTER MA..TAMIL LETTER HA 0C15..0C28 ; Consonant # Lo [20] TELUGU LETTER KA..TELUGU LETTER NA 0C2A..0C39 ; Consonant # Lo [16] TELUGU LETTER PA..TELUGU LETTER HA 0C58..0C5A ; Consonant # Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA 0C95..0CA8 ; Consonant # Lo [20] KANNADA LETTER KA..KANNADA LETTER NA 0CAA..0CB3 ; Consonant # Lo [10] KANNADA LETTER PA..KANNADA LETTER LLA 0CB5..0CB9 ; Consonant # Lo [5] KANNADA LETTER VA..KANNADA LETTER HA 0CDE ; Consonant # Lo KANNADA LETTER FA 0D15..0D3A ; Consonant # Lo [38] MALAYALAM LETTER KA..MALAYALAM LETTER TTTA 0D9A..0DB1 ; Consonant # Lo [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA 0DB3..0DBB ; Consonant # Lo [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA 0DBD ; Consonant # Lo SINHALA LETTER DANTAJA LAYANNA 0DC0..0DC6 ; Consonant # Lo [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA 0E01..0E2E ; Consonant # Lo [46] THAI CHARACTER KO KAI..THAI CHARACTER HO NOKHUK 0E81..0E82 ; Consonant # Lo [2] LAO LETTER KO..LAO LETTER KHO SUNG 0E84 ; Consonant # Lo LAO LETTER KHO TAM 0E87..0E88 ; Consonant # Lo [2] LAO LETTER NGO..LAO LETTER CO 0E8A ; Consonant # Lo LAO LETTER SO TAM 0E8D ; Consonant # Lo LAO LETTER NYO 0E94..0E97 ; Consonant # Lo [4] LAO LETTER DO..LAO LETTER THO TAM 0E99..0E9F ; Consonant # Lo [7] LAO LETTER NO..LAO LETTER FO SUNG 0EA1..0EA3 ; Consonant # Lo [3] LAO LETTER MO..LAO LETTER LO LING 0EA5 ; Consonant # Lo LAO LETTER LO LOOT 0EA7 ; Consonant # Lo LAO LETTER WO 0EAA..0EAB ; Consonant # Lo [2] LAO LETTER SO SUNG..LAO LETTER HO SUNG 0EAD..0EAE ; Consonant # Lo [2] LAO LETTER O..LAO LETTER HO TAM 0EDC..0EDF ; Consonant # Lo [4] LAO HO NO..LAO LETTER KHMU NYO 0F40..0F47 ; Consonant # Lo [8] TIBETAN LETTER KA..TIBETAN LETTER JA 0F49..0F6C ; Consonant # Lo [36] TIBETAN LETTER NYA..TIBETAN LETTER RRA 1000..1020 ; Consonant # Lo [33] MYANMAR LETTER KA..MYANMAR LETTER LLA 103F ; Consonant # Lo MYANMAR LETTER GREAT SA 1050..1051 ; Consonant # Lo [2] MYANMAR LETTER SHA..MYANMAR LETTER SSA 105A..105D ; Consonant # Lo [4] MYANMAR LETTER MON NGA..MYANMAR LETTER MON BBE 1061 ; Consonant # Lo MYANMAR LETTER SGAW KAREN SHA 1065..1066 ; Consonant # Lo [2] MYANMAR LETTER WESTERN PWO KAREN THA..MYANMAR LETTER WESTERN PWO KAREN PWA 106E..1070 ; Consonant # Lo [3] MYANMAR LETTER EASTERN PWO KAREN NNA..MYANMAR LETTER EASTERN PWO KAREN GHWA 1075..1081 ; Consonant # Lo [13] MYANMAR LETTER SHAN KA..MYANMAR LETTER SHAN HA 108E ; Consonant # Lo MYANMAR LETTER RUMAI PALAUNG FA 1703..170C ; Consonant # Lo [10] TAGALOG LETTER KA..TAGALOG LETTER YA 170E..1711 ; Consonant # Lo [4] TAGALOG LETTER LA..TAGALOG LETTER HA 1723..1731 ; Consonant # Lo [15] HANUNOO LETTER KA..HANUNOO LETTER HA 1743..1751 ; Consonant # Lo [15] BUHID LETTER KA..BUHID LETTER HA 1763..176C ; Consonant # Lo [10] TAGBANWA LETTER KA..TAGBANWA LETTER YA 176E..1770 ; Consonant # Lo [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA 1780..17A2 ; Consonant # Lo [35] KHMER LETTER KA..KHMER LETTER QA 1901..191E ; Consonant # Lo [30] LIMBU LETTER KA..LIMBU LETTER TRA 1950..1962 ; Consonant # Lo [19] TAI LE LETTER KA..TAI LE LETTER NA 1980..19AB ; Consonant # Lo [44] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW SUA 1A00..1A16 ; Consonant # Lo [23] BUGINESE LETTER KA..BUGINESE LETTER HA 1A20..1A4C ; Consonant # Lo [45] TAI THAM LETTER HIGH KA..TAI THAM LETTER LOW HA 1A53..1A54 ; Consonant # Lo [2] TAI THAM LETTER LAE..TAI THAM LETTER GREAT SA 1B13..1B33 ; Consonant # Lo [33] BALINESE LETTER KA..BALINESE LETTER HA 1B45..1B4B ; Consonant # Lo [7] BALINESE LETTER KAF SASAK..BALINESE LETTER ASYURA SASAK 1B8A..1BA0 ; Consonant # Lo [23] SUNDANESE LETTER KA..SUNDANESE LETTER HA 1BAE..1BAF ; Consonant # Lo [2] SUNDANESE LETTER KHA..SUNDANESE LETTER SYA 1BBB..1BBD ; Consonant # Lo [3] SUNDANESE LETTER REU..SUNDANESE LETTER BHA 1BC0..1BE3 ; Consonant # Lo [36] BATAK LETTER A..BATAK LETTER MBA 1C00..1C23 ; Consonant # Lo [36] LEPCHA LETTER KA..LEPCHA LETTER A 1C4D..1C4F ; Consonant # Lo [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA A807..A80A ; Consonant # Lo [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO A80C..A822 ; Consonant # Lo [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO A840..A85D ; Consonant # Lo [30] PHAGS-PA LETTER KA..PHAGS-PA LETTER A A862..A865 ; Consonant # Lo [4] PHAGS-PA LETTER QA..PHAGS-PA LETTER GGA A869..A870 ; Consonant # Lo [8] PHAGS-PA LETTER TTA..PHAGS-PA LETTER ASPIRATED FA A872 ; Consonant # Lo PHAGS-PA SUPERFIXED LETTER RA A892..A8B3 ; Consonant # Lo [34] SAURASHTRA LETTER KA..SAURASHTRA LETTER LLA A90A..A921 ; Consonant # Lo [24] KAYAH LI LETTER KA..KAYAH LI LETTER CA A930..A946 ; Consonant # Lo [23] REJANG LETTER KA..REJANG LETTER A A989..A98B ; Consonant # Lo [3] JAVANESE LETTER PA CEREK..JAVANESE LETTER NGA LELET RASWADI A98F..A9B2 ; Consonant # Lo [36] JAVANESE LETTER KA..JAVANESE LETTER HA A9E0..A9E4 ; Consonant # Lo [5] MYANMAR LETTER SHAN GHA..MYANMAR LETTER SHAN BHA A9E7..A9EF ; Consonant # Lo [9] MYANMAR LETTER TAI LAING NYA..MYANMAR LETTER TAI LAING NNA A9FA..A9FE ; Consonant # Lo [5] MYANMAR LETTER TAI LAING LLA..MYANMAR LETTER TAI LAING BHA AA06..AA28 ; Consonant # Lo [35] CHAM LETTER KA..CHAM LETTER HA AA60..AA6F ; Consonant # Lo [16] MYANMAR LETTER KHAMTI GA..MYANMAR LETTER KHAMTI FA AA71..AA73 ; Consonant # Lo [3] MYANMAR LETTER KHAMTI XA..MYANMAR LETTER KHAMTI RA AA7A ; Consonant # Lo MYANMAR LETTER AITON RA AA7E..AA7F ; Consonant # Lo [2] MYANMAR LETTER SHWE PALAUNG CHA..MYANMAR LETTER SHWE PALAUNG SHA AA80..AAAF ; Consonant # Lo [48] TAI VIET LETTER LOW KO..TAI VIET LETTER HIGH O AAE2..AAEA ; Consonant # Lo [9] MEETEI MAYEK LETTER CHA..MEETEI MAYEK LETTER SSA ABC0..ABCD ; Consonant # Lo [14] MEETEI MAYEK LETTER KOK..MEETEI MAYEK LETTER HUK ABD0 ; Consonant # Lo MEETEI MAYEK LETTER PHAM ABD2..ABDA ; Consonant # Lo [9] MEETEI MAYEK LETTER GOK..MEETEI MAYEK LETTER BHAM 10A00 ; Consonant # Lo KHAROSHTHI LETTER A 10A10..10A13 ; Consonant # Lo [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA 10A15..10A17 ; Consonant # Lo [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA 10A19..10A33 ; Consonant # Lo [27] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER TTTHA 11013..11037 ; Consonant # Lo [37] BRAHMI LETTER KA..BRAHMI LETTER OLD TAMIL NNNA 1108D..110AF ; Consonant # Lo [35] KAITHI LETTER KA..KAITHI LETTER HA 11107..11126 ; Consonant # Lo [32] CHAKMA LETTER KAA..CHAKMA LETTER HAA 11155..11172 ; Consonant # Lo [30] MAHAJANI LETTER KA..MAHAJANI LETTER RRA 11191..111B2 ; Consonant # Lo [34] SHARADA LETTER KA..SHARADA LETTER HA 11208..11211 ; Consonant # Lo [10] KHOJKI LETTER KA..KHOJKI LETTER JJA 11213..1122B ; Consonant # Lo [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA 11284..11286 ; Consonant # Lo [3] MULTANI LETTER KA..MULTANI LETTER GA 11288 ; Consonant # Lo MULTANI LETTER GHA 1128A..1128D ; Consonant # Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA 1128F..1129D ; Consonant # Lo [15] MULTANI LETTER NYA..MULTANI LETTER BA 1129F..112A8 ; Consonant # Lo [10] MULTANI LETTER BHA..MULTANI LETTER RHA 112BA..112DE ; Consonant # Lo [37] KHUDAWADI LETTER KA..KHUDAWADI LETTER HA 11315..11328 ; Consonant # Lo [20] GRANTHA LETTER KA..GRANTHA LETTER NA 1132A..11330 ; Consonant # Lo [7] GRANTHA LETTER PA..GRANTHA LETTER RA 11332..11333 ; Consonant # Lo [2] GRANTHA LETTER LA..GRANTHA LETTER LLA 11335..11339 ; Consonant # Lo [5] GRANTHA LETTER VA..GRANTHA LETTER HA 1148F..114AF ; Consonant # Lo [33] TIRHUTA LETTER KA..TIRHUTA LETTER HA 1158E..115AE ; Consonant # Lo [33] SIDDHAM LETTER KA..SIDDHAM LETTER HA 1160E..1162F ; Consonant # Lo [34] MODI LETTER KA..MODI LETTER LLA 1168A..116AA ; Consonant # Lo [33] TAKRI LETTER KA..TAKRI LETTER RRA 11700..11719 ; Consonant # Lo [26] AHOM LETTER KA..AHOM LETTER JHA # ================================================ # Indic_Syllabic_Category=Consonant_Dead # Dead Consonant (special consonant with killed vowel) # [Not derivable] 09CE ; Consonant_Dead # Lo BENGALI LETTER KHANDA TA 0D7A..0D7F ; Consonant_Dead # Lo [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K # ================================================ # Indic_Syllabic_Category=Consonant_With_Stacker # Consonants that may make stacked ligatures with the next consonant # without the use of a virama # [Not derivable] 0CF1..0CF2 ; Consonant_With_Stacker # Lo [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA 11003..11004 ; Consonant_With_Stacker # Lo [2] BRAHMI SIGN JIHVAMULIYA..BRAHMI SIGN UPADHMANIYA # ================================================ # Indic_Syllabic_Category=Consonant_Prefixed # Cluster-intial consonants # [Not derivable] 111C2..111C3 ; Consonant_Prefixed # Lo [2] SHARADA SIGN JIHVAMULIYA..SHARADA SIGN UPADHMANIYA # ================================================ # Indic_Syllabic_Category=Consonant_Preceding_Repha # Repha Form of RA (reanalyzed in some scripts), when preceding the main consonant # [Not derivable] 0D4E ; Consonant_Preceding_Repha # Lo MALAYALAM LETTER DOT REPH # ================================================ # Indic_Syllabic_Category=Consonant_Succeeding_Repha # Repha Form of RA (reanalyzed in some scripts), when succeeding the main consonant # [Not derivable] 17CC ; Consonant_Succeeding_Repha # Mn KHMER SIGN ROBAT 1B03 ; Consonant_Succeeding_Repha # Mn BALINESE SIGN SURANG 1B81 ; Consonant_Succeeding_Repha # Mn SUNDANESE SIGN PANGLAYAR A982 ; Consonant_Succeeding_Repha # Mn JAVANESE SIGN LAYAR # ================================================ # Indic_Syllabic_Category=Consonant_Subjoined # Subjoined Consonant (C2 form subtending a base consonant in Tibetan, etc.) # [Not derivable] 0F8D..0F97 ; Consonant_Subjoined # Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA 0F99..0FBC ; Consonant_Subjoined # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA 1929..192B ; Consonant_Subjoined # Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA 1BA1 ; Consonant_Subjoined # Mc SUNDANESE CONSONANT SIGN PAMINGKAL 1BA2..1BA3 ; Consonant_Subjoined # Mn [2] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE CONSONANT SIGN PANYIKU 1BAC..1BAD ; Consonant_Subjoined # Mn [2] SUNDANESE CONSONANT SIGN PASANGAN MA..SUNDANESE CONSONANT SIGN PASANGAN WA 1C24..1C25 ; Consonant_Subjoined # Mc [2] LEPCHA SUBJOINED LETTER YA..LEPCHA SUBJOINED LETTER RA A867..A868 ; Consonant_Subjoined # Lo [2] PHAGS-PA SUBJOINED LETTER WA..PHAGS-PA SUBJOINED LETTER YA A871 ; Consonant_Subjoined # Lo PHAGS-PA SUBJOINED LETTER RA A9BD ; Consonant_Subjoined # Mc JAVANESE CONSONANT SIGN KERET # ================================================ # Indic_Syllabic_Category=Consonant_Medial # Medial Consonant (medial liquid, occurring in clusters) # [Not derivable] 0A75 ; Consonant_Medial # Mn GURMUKHI SIGN YAKASH 0EBC ; Consonant_Medial # Mn LAO SEMIVOWEL SIGN LO 0EBD ; Consonant_Medial # Lo LAO SEMIVOWEL SIGN NYO 103B..103C ; Consonant_Medial # Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA 103D..103E ; Consonant_Medial # Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA 105E..1060 ; Consonant_Medial # Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA 1082 ; Consonant_Medial # Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA 1A55 ; Consonant_Medial # Mc TAI THAM CONSONANT SIGN MEDIAL RA 1A56 ; Consonant_Medial # Mn TAI THAM CONSONANT SIGN MEDIAL LA A9BE..A9BF ; Consonant_Medial # Mc [2] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE CONSONANT SIGN CAKRA AA33..AA34 ; Consonant_Medial # Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA AA35..AA36 ; Consonant_Medial # Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA 1171D..1171F ; Consonant_Medial # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA # ================================================ # Indic_Syllabic_Category=Consonant_Final # Final Consonant (special final forms which do not take vowels) # [Not derivable] 1930..1931 ; Consonant_Final # Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA 1933..1938 ; Consonant_Final # Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA 1939 ; Consonant_Final # Mn LIMBU SIGN MUKPHRENG 19C1..19C7 ; Consonant_Final # Lo [7] NEW TAI LUE LETTER FINAL V..NEW TAI LUE LETTER FINAL B 1A57 ; Consonant_Final # Mc TAI THAM CONSONANT SIGN LA TANG LAI 1A58..1A5E ; Consonant_Final # Mn [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA 1BBE..1BBF ; Consonant_Final # Lo [2] SUNDANESE LETTER FINAL K..SUNDANESE LETTER FINAL M 1BF0..1BF1 ; Consonant_Final # Mn [2] BATAK CONSONANT SIGN NG..BATAK CONSONANT SIGN H 1C2D..1C33 ; Consonant_Final # Mn [7] LEPCHA CONSONANT SIGN K..LEPCHA CONSONANT SIGN T A8B4 ; Consonant_Final # Mc SAURASHTRA CONSONANT SIGN HAARU A94F..A951 ; Consonant_Final # Mn [3] REJANG CONSONANT SIGN NG..REJANG CONSONANT SIGN R A952 ; Consonant_Final # Mc REJANG CONSONANT SIGN H AA40..AA42 ; Consonant_Final # Lo [3] CHAM LETTER FINAL K..CHAM LETTER FINAL NG AA43 ; Consonant_Final # Mn CHAM CONSONANT SIGN FINAL NG AA44..AA4B ; Consonant_Final # Lo [8] CHAM LETTER FINAL CH..CHAM LETTER FINAL SS AA4C ; Consonant_Final # Mn CHAM CONSONANT SIGN FINAL M AA4D ; Consonant_Final # Mc CHAM CONSONANT SIGN FINAL H ABDB..ABE2 ; Consonant_Final # Lo [8] MEETEI MAYEK LETTER KOK LONSUM..MEETEI MAYEK LETTER I LONSUM # ================================================ # Indic_Syllabic_Category=Consonant_Head_Letter # Head Letter (Tibetan) # [Not derivable] 0F88..0F8C ; Consonant_Head_Letter # Lo [5] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN INVERTED MCHU CAN # ================================================ # Indic_Syllabic_Category=Modifying_Letter # Reanalyzed letters not participating in the abugida structure, but # serving to modify the sound of an adjacent vowel or consonant. # Note that this is not the same as General_Category=Modifier_Letter. # [Not derivable] 0B83 ; Modifying_Letter # Lo TAMIL SIGN VISARGA # ================================================ # Indic_Syllabic_Category=Tone_Letter # Tone Letter (spacing lexical tone mark with status as a letter) # [Not derivable] 1970..1974 ; Tone_Letter # Lo [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6 AAC0 ; Tone_Letter # Lo TAI VIET TONE MAI NUENG AAC2 ; Tone_Letter # Lo TAI VIET TONE MAI SONG # ================================================ # Indic_Syllabic_Category=Tone_Mark # Tone Mark (nonspacing or spacing lexical tone mark) # [Not derivable] 0E48..0E4B ; Tone_Mark # Mn [4] THAI CHARACTER MAI EK..THAI CHARACTER MAI CHATTAWA 0EC8..0ECB ; Tone_Mark # Mn [4] LAO TONE MAI EK..LAO TONE MAI CATAWA 1037 ; Tone_Mark # Mn MYANMAR SIGN DOT BELOW 1063..1064 ; Tone_Mark # Mc [2] MYANMAR TONE MARK SGAW KAREN HATHI..MYANMAR TONE MARK SGAW KAREN KE PHO 1069..106D ; Tone_Mark # Mc [5] MYANMAR SIGN WESTERN PWO KAREN TONE-1..MYANMAR SIGN WESTERN PWO KAREN TONE-5 1087..108C ; Tone_Mark # Mc [6] MYANMAR SIGN SHAN TONE-2..MYANMAR SIGN SHAN COUNCIL TONE-3 108D ; Tone_Mark # Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE 108F ; Tone_Mark # Mc MYANMAR SIGN RUMAI PALAUNG TONE-5 109A..109B ; Tone_Mark # Mc [2] MYANMAR SIGN KHAMTI TONE-1..MYANMAR SIGN KHAMTI TONE-3 19C8..19C9 ; Tone_Mark # Lo [2] NEW TAI LUE TONE MARK-1..NEW TAI LUE TONE MARK-2 1A75..1A79 ; Tone_Mark # Mn [5] TAI THAM SIGN TONE-1..TAI THAM SIGN KHUEN TONE-5 A92B..A92D ; Tone_Mark # Mn [3] KAYAH LI TONE PLOPHU..KAYAH LI TONE CALYA PLOPHU AA7B ; Tone_Mark # Mc MYANMAR SIGN PAO KAREN TONE AA7C ; Tone_Mark # Mn MYANMAR SIGN TAI LAING TONE-2 AA7D ; Tone_Mark # Mc MYANMAR SIGN TAI LAING TONE-5 AABF ; Tone_Mark # Mn TAI VIET TONE MAI EK AAC1 ; Tone_Mark # Mn TAI VIET TONE MAI THO ABEC ; Tone_Mark # Mc MEETEI MAYEK LUM IYEK # ================================================ # Indic_Syllabic_Category=Gemination_Mark # Gemination Mark (doubling of the preceding or following consonant) # [Not derivable] 0A71 ; Gemination_Mark # Mn GURMUKHI ADDAK 11237 ; Gemination_Mark # Mn KHOJKI SIGN SHADDA # ================================================ # Indic_Syllabic_Category=Cantillation_Mark # Cantillation Mark (recitation marks, such as svara markers for the Samaveda) # [Not derivable] 0951..0952 ; Cantillation_Mark # Mn [2] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI STRESS SIGN ANUDATTA 1CD0..1CD2 ; Cantillation_Mark # Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA 1CD4..1CE0 ; Cantillation_Mark # Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA 1CE1 ; Cantillation_Mark # Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA 1CF4 ; Cantillation_Mark # Mn VEDIC TONE CANDRA ABOVE 1CF8..1CF9 ; Cantillation_Mark # Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE A8E0..A8F1 ; Cantillation_Mark # Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA 11366..1136C ; Cantillation_Mark # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX 11370..11374 ; Cantillation_Mark # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA # ================================================ # Indic_Syllabic_Category=Register_Shifter # Register Shifter (shifts register for consonants, akin to a tone mark) # [Not derivable] 17C9..17CA ; Register_Shifter # Mn [2] KHMER SIGN MUUSIKATOAN..KHMER SIGN TRIISAP # ================================================ # Indic_Syllabic_Category=Syllable_Modifier # Syllable Modifier (miscellaneous combining characters that modify # something in the orthographic syllable they succeed) # [Not derivable] 00B2..00B3 ; Syllable_Modifier # No [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE 0F35 ; Syllable_Modifier # Mn TIBETAN MARK NGAS BZUNG NYI ZLA 0F37 ; Syllable_Modifier # Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS 0FC6 ; Syllable_Modifier # Mn TIBETAN SYMBOL PADMA GDAN 17CB ; Syllable_Modifier # Mn KHMER SIGN BANTOC 17CE..17D0 ; Syllable_Modifier # Mn [3] KHMER SIGN KAKABAT..KHMER SIGN SAMYOK SANNYA 17D3 ; Syllable_Modifier # Mn KHMER SIGN BATHAMASAT 193B ; Syllable_Modifier # Mn LIMBU SIGN SA-I 1A7A..1A7C ; Syllable_Modifier # Mn [3] TAI THAM SIGN RA HAAM..TAI THAM SIGN KHUEN-LUE KARAN 1A7F ; Syllable_Modifier # Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT 1C36 ; Syllable_Modifier # Mn LEPCHA SIGN RAN 2074 ; Syllable_Modifier # No SUPERSCRIPT FOUR 2082..2084 ; Syllable_Modifier # No [3] SUBSCRIPT TWO..SUBSCRIPT FOUR # ================================================ # Indic_Syllabic_Category=Consonant_Killer # Consonant Killer (signifies that the previous consonant or consonants are # not pronounced) # [Not derivable] 0E4C ; Consonant_Killer # Mn THAI CHARACTER THANTHAKHAT 17CD ; Consonant_Killer # Mn KHMER SIGN TOANDAKHIAT # ================================================ # Indic_Syllabic_Category=Non_Joiner # Non_Joiner (Zero Width Non-Joiner) # [Not derivable] 200C ; Non_Joiner # Cf ZERO WIDTH NON-JOINER # ================================================ # Indic_Syllabic_Category=Joiner # Joiner (Zero Width Joiner) # [Not derivable] 200D ; Joiner # Cf ZERO WIDTH JOINER # ================================================ # Indic_Syllabic_Category=Number_Joiner # Number_Joiner (forms ligatures between numbers for multiplication) # [Not derivable] 1107F ; Number_Joiner # Mn BRAHMI NUMBER JOINER # ================================================ # Indic_Syllabic_Category=Number # Number (can be used as vowel-holders like consonant placeholders) # [Not derivable] 0030..0039 ; Number # Nd [10] DIGIT ZERO..DIGIT NINE 0966..096F ; Number # Nd [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE 09E6..09EF ; Number # Nd [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE 0A66..0A6F ; Number # Nd [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE 0AE6..0AEF ; Number # Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE 0B66..0B6F ; Number # Nd [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE 0BE6..0BEF ; Number # Nd [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE 0C66..0C6F ; Number # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE 0CE6..0CEF ; Number # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE 0D66..0D6F ; Number # Nd [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE 0DE6..0DEF ; Number # Nd [10] SINHALA LITH DIGIT ZERO..SINHALA LITH DIGIT NINE 0E50..0E59 ; Number # Nd [10] THAI DIGIT ZERO..THAI DIGIT NINE 0ED0..0ED9 ; Number # Nd [10] LAO DIGIT ZERO..LAO DIGIT NINE 0F20..0F29 ; Number # Nd [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE 0F2A..0F33 ; Number # No [10] TIBETAN DIGIT HALF ONE..TIBETAN DIGIT HALF ZERO 1040..1049 ; Number # Nd [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE 1090..1099 ; Number # Nd [10] MYANMAR SHAN DIGIT ZERO..MYANMAR SHAN DIGIT NINE 17E0..17E9 ; Number # Nd [10] KHMER DIGIT ZERO..KHMER DIGIT NINE 1946..194F ; Number # Nd [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE 19D0..19D9 ; Number # Nd [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE 1A80..1A89 ; Number # Nd [10] TAI THAM HORA DIGIT ZERO..TAI THAM HORA DIGIT NINE 1A90..1A99 ; Number # Nd [10] TAI THAM THAM DIGIT ZERO..TAI THAM THAM DIGIT NINE 1B50..1B59 ; Number # Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE 1BB0..1BB9 ; Number # Nd [10] SUNDANESE DIGIT ZERO..SUNDANESE DIGIT NINE 1C40..1C49 ; Number # Nd [10] LEPCHA DIGIT ZERO..LEPCHA DIGIT NINE A8D0..A8D9 ; Number # Nd [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE A900..A909 ; Number # Nd [10] KAYAH LI DIGIT ZERO..KAYAH LI DIGIT NINE A9D0..A9D9 ; Number # Nd [10] JAVANESE DIGIT ZERO..JAVANESE DIGIT NINE A9F0..A9F9 ; Number # Nd [10] MYANMAR TAI LAING DIGIT ZERO..MYANMAR TAI LAING DIGIT NINE AA50..AA59 ; Number # Nd [10] CHAM DIGIT ZERO..CHAM DIGIT NINE ABF0..ABF9 ; Number # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE 10A40..10A47 ; Number # No [8] KHAROSHTHI DIGIT ONE..KHAROSHTHI NUMBER ONE THOUSAND 11066..1106F ; Number # Nd [10] BRAHMI DIGIT ZERO..BRAHMI DIGIT NINE 11136..1113F ; Number # Nd [10] CHAKMA DIGIT ZERO..CHAKMA DIGIT NINE 111D0..111D9 ; Number # Nd [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE 111E1..111F4 ; Number # No [20] SINHALA ARCHAIC DIGIT ONE..SINHALA ARCHAIC NUMBER ONE THOUSAND 112F0..112F9 ; Number # Nd [10] KHUDAWADI DIGIT ZERO..KHUDAWADI DIGIT NINE 114D0..114D9 ; Number # Nd [10] TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE 11650..11659 ; Number # Nd [10] MODI DIGIT ZERO..MODI DIGIT NINE 116C0..116C9 ; Number # Nd [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE 11730..11739 ; Number # Nd [10] AHOM DIGIT ZERO..AHOM DIGIT NINE 1173A..1173B ; Number # No [2] AHOM NUMBER TEN..AHOM NUMBER TWENTY # ================================================ # Indic_Syllabic_Category=Brahmi_Joining_Number # Brahmi Joining Number (similar to Number in that in can be used as # vowel-holders like Consonant_Placeholder, but may also be joined by # a Number_Joiner of the same script, e.g. in Brahmi) # [Not derivable] 11052..11065 ; Brahmi_Joining_Number # No [20] BRAHMI NUMBER ONE..BRAHMI NUMBER ONE THOUSAND # EOF nototools-2017-09-25-tooling-for-phase3-update/third_party/ucd/LICENSE000066400000000000000000000036151316231664500252020ustar00rootroot00000000000000COPYRIGHT AND PERMISSION NOTICE Copyright © 1991-2014 Unicode, Inc. All rights reserved. Distributed under the Terms of Use in http://www.unicode.org/copyright.html. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that (a) this copyright and permission notice appear with all copies of the Data Files or Software, (b) this copyright and permission notice appear in associated documentation, and (c) there is clear notice in each modified Data File or in the Software as well as in the documentation associated with the Data File(s) or Software that the data or software has been modified. THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder.nototools-2017-09-25-tooling-for-phase3-update/third_party/ucd/NameAliases.txt000066400000000000000000000364211316231664500271210ustar00rootroot00000000000000# NameAliases-9.0.0.txt # Date: 2016-01-21, 22:00:00 GMT [KW, LI] # © 2016 Unicode®, Inc. # For terms of use, see http://www.unicode.org/terms_of_use.html # # Unicode Character Database # For documentation, see http://www.unicode.org/reports/tr44/ # # This file is a normative contributory data file in the # Unicode Character Database. # # This file defines the formal name aliases for Unicode characters. # # For informative aliases, see NamesList.txt # # The formal name aliases are divided into five types, each with a distinct label. # # Type Labels: # # 1. correction # Corrections for serious problems in the character names # 2. control # ISO 6429 names for C0 and C1 control functions, and other # commonly occurring names for control codes # 3. alternate # A few widely used alternate names for format characters # 4. figment # Several documented labels for C1 control code points which # were never actually approved in any standard # 5. abbreviation # Commonly occurring abbreviations (or acronyms) for control codes, # format characters, spaces, and variation selectors # # The formal name aliases are part of the Unicode character namespace, which # includes the character names and the names of named character sequences. # The inclusion of ISO 6429 names and other commonly occurring names and # abbreviations for control codes and format characters as formal name aliases # is to help avoid name collisions between Unicode character names and the # labels which commonly appear in text and/or in implementations such as regex, for # control codes (which for historical reasons have no Unicode character name) # or for format characters. # # For documentation, see NamesList.html and http://www.unicode.org/reports/tr44/ # # FORMAT # # Each line has three fields, as described here: # # First field: Code point # Second field: Alias # Third field: Type # # The type labels used are defined above. As for property values, comparisons # of type labels should ignore case. # # The type labels can be mapped to other strings for display, if desired. # # In case multiple aliases are assigned, additional aliases # are provided on separate lines. Parsers of this data file should # take note that the same code point can (and does) occur more than once. # # Note that currently the only instances of multiple aliases of the same # type for a single code point are either of type "control" or "abbreviation". # An alias of type "abbreviation" can, in principle, be added for any code # point, although currently aliases of type "correction" do not have # any additional aliases of type "abbreviation". Such relationships # are not enforced by stability policies. # #----------------------------------------------------------------- 0000;NULL;control 0000;NUL;abbreviation 0001;START OF HEADING;control 0001;SOH;abbreviation 0002;START OF TEXT;control 0002;STX;abbreviation 0003;END OF TEXT;control 0003;ETX;abbreviation 0004;END OF TRANSMISSION;control 0004;EOT;abbreviation 0005;ENQUIRY;control 0005;ENQ;abbreviation 0006;ACKNOWLEDGE;control 0006;ACK;abbreviation # Note that no formal name alias for the ISO 6429 "BELL" is # provided for U+0007, because of the existing name collision # with U+1F514 BELL. 0007;ALERT;control 0007;BEL;abbreviation 0008;BACKSPACE;control 0008;BS;abbreviation 0009;CHARACTER TABULATION;control 0009;HORIZONTAL TABULATION;control 0009;HT;abbreviation 0009;TAB;abbreviation 000A;LINE FEED;control 000A;NEW LINE;control 000A;END OF LINE;control 000A;LF;abbreviation 000A;NL;abbreviation 000A;EOL;abbreviation 000B;LINE TABULATION;control 000B;VERTICAL TABULATION;control 000B;VT;abbreviation 000C;FORM FEED;control 000C;FF;abbreviation 000D;CARRIAGE RETURN;control 000D;CR;abbreviation 000E;SHIFT OUT;control 000E;LOCKING-SHIFT ONE;control 000E;SO;abbreviation 000F;SHIFT IN;control 000F;LOCKING-SHIFT ZERO;control 000F;SI;abbreviation 0010;DATA LINK ESCAPE;control 0010;DLE;abbreviation 0011;DEVICE CONTROL ONE;control 0011;DC1;abbreviation 0012;DEVICE CONTROL TWO;control 0012;DC2;abbreviation 0013;DEVICE CONTROL THREE;control 0013;DC3;abbreviation 0014;DEVICE CONTROL FOUR;control 0014;DC4;abbreviation 0015;NEGATIVE ACKNOWLEDGE;control 0015;NAK;abbreviation 0016;SYNCHRONOUS IDLE;control 0016;SYN;abbreviation 0017;END OF TRANSMISSION BLOCK;control 0017;ETB;abbreviation 0018;CANCEL;control 0018;CAN;abbreviation 0019;END OF MEDIUM;control 0019;EOM;abbreviation 001A;SUBSTITUTE;control 001A;SUB;abbreviation 001B;ESCAPE;control 001B;ESC;abbreviation 001C;INFORMATION SEPARATOR FOUR;control 001C;FILE SEPARATOR;control 001C;FS;abbreviation 001D;INFORMATION SEPARATOR THREE;control 001D;GROUP SEPARATOR;control 001D;GS;abbreviation 001E;INFORMATION SEPARATOR TWO;control 001E;RECORD SEPARATOR;control 001E;RS;abbreviation 001F;INFORMATION SEPARATOR ONE;control 001F;UNIT SEPARATOR;control 001F;US;abbreviation 0020;SP;abbreviation 007F;DELETE;control 007F;DEL;abbreviation # PADDING CHARACTER and HIGH OCTET PRESET represent # architectural concepts initially proposed for early # drafts of ISO/IEC 10646-1. They were never actually # approved or standardized: hence their designation # here as the "figment" type. Formal name aliases # (and corresponding abbreviations) for these code # points are included here because these names leaked # out from the draft documents and were published in # at least one RFC whose names for code points was # implemented in Perl regex expressions. 0080;PADDING CHARACTER;figment 0080;PAD;abbreviation 0081;HIGH OCTET PRESET;figment 0081;HOP;abbreviation 0082;BREAK PERMITTED HERE;control 0082;BPH;abbreviation 0083;NO BREAK HERE;control 0083;NBH;abbreviation 0084;INDEX;control 0084;IND;abbreviation 0085;NEXT LINE;control 0085;NEL;abbreviation 0086;START OF SELECTED AREA;control 0086;SSA;abbreviation 0087;END OF SELECTED AREA;control 0087;ESA;abbreviation 0088;CHARACTER TABULATION SET;control 0088;HORIZONTAL TABULATION SET;control 0088;HTS;abbreviation 0089;CHARACTER TABULATION WITH JUSTIFICATION;control 0089;HORIZONTAL TABULATION WITH JUSTIFICATION;control 0089;HTJ;abbreviation 008A;LINE TABULATION SET;control 008A;VERTICAL TABULATION SET;control 008A;VTS;abbreviation 008B;PARTIAL LINE FORWARD;control 008B;PARTIAL LINE DOWN;control 008B;PLD;abbreviation 008C;PARTIAL LINE BACKWARD;control 008C;PARTIAL LINE UP;control 008C;PLU;abbreviation 008D;REVERSE LINE FEED;control 008D;REVERSE INDEX;control 008D;RI;abbreviation 008E;SINGLE SHIFT TWO;control 008E;SINGLE-SHIFT-2;control 008E;SS2;abbreviation 008F;SINGLE SHIFT THREE;control 008F;SINGLE-SHIFT-3;control 008F;SS3;abbreviation 0090;DEVICE CONTROL STRING;control 0090;DCS;abbreviation 0091;PRIVATE USE ONE;control 0091;PRIVATE USE-1;control 0091;PU1;abbreviation 0092;PRIVATE USE TWO;control 0092;PRIVATE USE-2;control 0092;PU2;abbreviation 0093;SET TRANSMIT STATE;control 0093;STS;abbreviation 0094;CANCEL CHARACTER;control 0094;CCH;abbreviation 0095;MESSAGE WAITING;control 0095;MW;abbreviation 0096;START OF GUARDED AREA;control 0096;START OF PROTECTED AREA;control 0096;SPA;abbreviation 0097;END OF GUARDED AREA;control 0097;END OF PROTECTED AREA;control 0097;EPA;abbreviation 0098;START OF STRING;control 0098;SOS;abbreviation # SINGLE GRAPHIC CHARACTER INTRODUCER is another # architectural concept from early drafts of ISO/IEC 10646-1 # which was never approved and standardized. 0099;SINGLE GRAPHIC CHARACTER INTRODUCER;figment 0099;SGC;abbreviation 009A;SINGLE CHARACTER INTRODUCER;control 009A;SCI;abbreviation 009B;CONTROL SEQUENCE INTRODUCER;control 009B;CSI;abbreviation 009C;STRING TERMINATOR;control 009C;ST;abbreviation 009D;OPERATING SYSTEM COMMAND;control 009D;OSC;abbreviation 009E;PRIVACY MESSAGE;control 009E;PM;abbreviation 009F;APPLICATION PROGRAM COMMAND;control 009F;APC;abbreviation 00A0;NBSP;abbreviation 00AD;SHY;abbreviation 01A2;LATIN CAPITAL LETTER GHA;correction 01A3;LATIN SMALL LETTER GHA;correction 034F;CGJ;abbreviation 061C;ALM;abbreviation 0709;SYRIAC SUBLINEAR COLON SKEWED LEFT;correction 0CDE;KANNADA LETTER LLLA;correction 0E9D;LAO LETTER FO FON;correction 0E9F;LAO LETTER FO FAY;correction 0EA3;LAO LETTER RO;correction 0EA5;LAO LETTER LO;correction 0FD0;TIBETAN MARK BKA- SHOG GI MGO RGYAN;correction 180B;FVS1;abbreviation 180C;FVS2;abbreviation 180D;FVS3;abbreviation 180E;MVS;abbreviation 200B;ZWSP;abbreviation 200C;ZWNJ;abbreviation 200D;ZWJ;abbreviation 200E;LRM;abbreviation 200F;RLM;abbreviation 202A;LRE;abbreviation 202B;RLE;abbreviation 202C;PDF;abbreviation 202D;LRO;abbreviation 202E;RLO;abbreviation 202F;NNBSP;abbreviation 205F;MMSP;abbreviation 2060;WJ;abbreviation 2066;LRI;abbreviation 2067;RLI;abbreviation 2068;FSI;abbreviation 2069;PDI;abbreviation 2118;WEIERSTRASS ELLIPTIC FUNCTION;correction 2448;MICR ON US SYMBOL;correction 2449;MICR DASH SYMBOL;correction 2B7A;LEFTWARDS TRIANGLE-HEADED ARROW WITH DOUBLE VERTICAL STROKE;correction 2B7C;RIGHTWARDS TRIANGLE-HEADED ARROW WITH DOUBLE VERTICAL STROKE;correction A015;YI SYLLABLE ITERATION MARK;correction FE18;PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRACKET;correction FE00;VS1;abbreviation FE01;VS2;abbreviation FE02;VS3;abbreviation FE03;VS4;abbreviation FE04;VS5;abbreviation FE05;VS6;abbreviation FE06;VS7;abbreviation FE07;VS8;abbreviation FE08;VS9;abbreviation FE09;VS10;abbreviation FE0A;VS11;abbreviation FE0B;VS12;abbreviation FE0C;VS13;abbreviation FE0D;VS14;abbreviation FE0E;VS15;abbreviation FE0F;VS16;abbreviation FEFF;BYTE ORDER MARK;alternate FEFF;BOM;abbreviation FEFF;ZWNBSP;abbreviation 122D4;CUNEIFORM SIGN NU11 TENU;correction 122D5;CUNEIFORM SIGN NU11 OVER NU11 BUR OVER BUR;correction 1D0C5;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA VASIS;correction E0100;VS17;abbreviation E0101;VS18;abbreviation E0102;VS19;abbreviation E0103;VS20;abbreviation E0104;VS21;abbreviation E0105;VS22;abbreviation E0106;VS23;abbreviation E0107;VS24;abbreviation E0108;VS25;abbreviation E0109;VS26;abbreviation E010A;VS27;abbreviation E010B;VS28;abbreviation E010C;VS29;abbreviation E010D;VS30;abbreviation E010E;VS31;abbreviation E010F;VS32;abbreviation E0110;VS33;abbreviation E0111;VS34;abbreviation E0112;VS35;abbreviation E0113;VS36;abbreviation E0114;VS37;abbreviation E0115;VS38;abbreviation E0116;VS39;abbreviation E0117;VS40;abbreviation E0118;VS41;abbreviation E0119;VS42;abbreviation E011A;VS43;abbreviation E011B;VS44;abbreviation E011C;VS45;abbreviation E011D;VS46;abbreviation E011E;VS47;abbreviation E011F;VS48;abbreviation E0120;VS49;abbreviation E0121;VS50;abbreviation E0122;VS51;abbreviation E0123;VS52;abbreviation E0124;VS53;abbreviation E0125;VS54;abbreviation E0126;VS55;abbreviation E0127;VS56;abbreviation E0128;VS57;abbreviation E0129;VS58;abbreviation E012A;VS59;abbreviation E012B;VS60;abbreviation E012C;VS61;abbreviation E012D;VS62;abbreviation E012E;VS63;abbreviation E012F;VS64;abbreviation E0130;VS65;abbreviation E0131;VS66;abbreviation E0132;VS67;abbreviation E0133;VS68;abbreviation E0134;VS69;abbreviation E0135;VS70;abbreviation E0136;VS71;abbreviation E0137;VS72;abbreviation E0138;VS73;abbreviation E0139;VS74;abbreviation E013A;VS75;abbreviation E013B;VS76;abbreviation E013C;VS77;abbreviation E013D;VS78;abbreviation E013E;VS79;abbreviation E013F;VS80;abbreviation E0140;VS81;abbreviation E0141;VS82;abbreviation E0142;VS83;abbreviation E0143;VS84;abbreviation E0144;VS85;abbreviation E0145;VS86;abbreviation E0146;VS87;abbreviation E0147;VS88;abbreviation E0148;VS89;abbreviation E0149;VS90;abbreviation E014A;VS91;abbreviation E014B;VS92;abbreviation E014C;VS93;abbreviation E014D;VS94;abbreviation E014E;VS95;abbreviation E014F;VS96;abbreviation E0150;VS97;abbreviation E0151;VS98;abbreviation E0152;VS99;abbreviation E0153;VS100;abbreviation E0154;VS101;abbreviation E0155;VS102;abbreviation E0156;VS103;abbreviation E0157;VS104;abbreviation E0158;VS105;abbreviation E0159;VS106;abbreviation E015A;VS107;abbreviation E015B;VS108;abbreviation E015C;VS109;abbreviation E015D;VS110;abbreviation E015E;VS111;abbreviation E015F;VS112;abbreviation E0160;VS113;abbreviation E0161;VS114;abbreviation E0162;VS115;abbreviation E0163;VS116;abbreviation E0164;VS117;abbreviation E0165;VS118;abbreviation E0166;VS119;abbreviation E0167;VS120;abbreviation E0168;VS121;abbreviation E0169;VS122;abbreviation E016A;VS123;abbreviation E016B;VS124;abbreviation E016C;VS125;abbreviation E016D;VS126;abbreviation E016E;VS127;abbreviation E016F;VS128;abbreviation E0170;VS129;abbreviation E0171;VS130;abbreviation E0172;VS131;abbreviation E0173;VS132;abbreviation E0174;VS133;abbreviation E0175;VS134;abbreviation E0176;VS135;abbreviation E0177;VS136;abbreviation E0178;VS137;abbreviation E0179;VS138;abbreviation E017A;VS139;abbreviation E017B;VS140;abbreviation E017C;VS141;abbreviation E017D;VS142;abbreviation E017E;VS143;abbreviation E017F;VS144;abbreviation E0180;VS145;abbreviation E0181;VS146;abbreviation E0182;VS147;abbreviation E0183;VS148;abbreviation E0184;VS149;abbreviation E0185;VS150;abbreviation E0186;VS151;abbreviation E0187;VS152;abbreviation E0188;VS153;abbreviation E0189;VS154;abbreviation E018A;VS155;abbreviation E018B;VS156;abbreviation E018C;VS157;abbreviation E018D;VS158;abbreviation E018E;VS159;abbreviation E018F;VS160;abbreviation E0190;VS161;abbreviation E0191;VS162;abbreviation E0192;VS163;abbreviation E0193;VS164;abbreviation E0194;VS165;abbreviation E0195;VS166;abbreviation E0196;VS167;abbreviation E0197;VS168;abbreviation E0198;VS169;abbreviation E0199;VS170;abbreviation E019A;VS171;abbreviation E019B;VS172;abbreviation E019C;VS173;abbreviation E019D;VS174;abbreviation E019E;VS175;abbreviation E019F;VS176;abbreviation E01A0;VS177;abbreviation E01A1;VS178;abbreviation E01A2;VS179;abbreviation E01A3;VS180;abbreviation E01A4;VS181;abbreviation E01A5;VS182;abbreviation E01A6;VS183;abbreviation E01A7;VS184;abbreviation E01A8;VS185;abbreviation E01A9;VS186;abbreviation E01AA;VS187;abbreviation E01AB;VS188;abbreviation E01AC;VS189;abbreviation E01AD;VS190;abbreviation E01AE;VS191;abbreviation E01AF;VS192;abbreviation E01B0;VS193;abbreviation E01B1;VS194;abbreviation E01B2;VS195;abbreviation E01B3;VS196;abbreviation E01B4;VS197;abbreviation E01B5;VS198;abbreviation E01B6;VS199;abbreviation E01B7;VS200;abbreviation E01B8;VS201;abbreviation E01B9;VS202;abbreviation E01BA;VS203;abbreviation E01BB;VS204;abbreviation E01BC;VS205;abbreviation E01BD;VS206;abbreviation E01BE;VS207;abbreviation E01BF;VS208;abbreviation E01C0;VS209;abbreviation E01C1;VS210;abbreviation E01C2;VS211;abbreviation E01C3;VS212;abbreviation E01C4;VS213;abbreviation E01C5;VS214;abbreviation E01C6;VS215;abbreviation E01C7;VS216;abbreviation E01C8;VS217;abbreviation E01C9;VS218;abbreviation E01CA;VS219;abbreviation E01CB;VS220;abbreviation E01CC;VS221;abbreviation E01CD;VS222;abbreviation E01CE;VS223;abbreviation E01CF;VS224;abbreviation E01D0;VS225;abbreviation E01D1;VS226;abbreviation E01D2;VS227;abbreviation E01D3;VS228;abbreviation E01D4;VS229;abbreviation E01D5;VS230;abbreviation E01D6;VS231;abbreviation E01D7;VS232;abbreviation E01D8;VS233;abbreviation E01D9;VS234;abbreviation E01DA;VS235;abbreviation E01DB;VS236;abbreviation E01DC;VS237;abbreviation E01DD;VS238;abbreviation E01DE;VS239;abbreviation E01DF;VS240;abbreviation E01E0;VS241;abbreviation E01E1;VS242;abbreviation E01E2;VS243;abbreviation E01E3;VS244;abbreviation E01E4;VS245;abbreviation E01E5;VS246;abbreviation E01E6;VS247;abbreviation E01E7;VS248;abbreviation E01E8;VS249;abbreviation E01E9;VS250;abbreviation E01EA;VS251;abbreviation E01EB;VS252;abbreviation E01EC;VS253;abbreviation E01ED;VS254;abbreviation E01EE;VS255;abbreviation E01EF;VS256;abbreviation # EOF nototools-2017-09-25-tooling-for-phase3-update/third_party/ucd/NamesList.txt000066400000000000000000054477561316231664500266640ustar00rootroot00000000000000; charset=UTF-8 @@@ The Unicode Standard 9.0.0 @@@+ U90M160615.lst Unicode 9.0.0 final names list. This file is semi-automatically derived from UnicodeData.txt and a set of manually created annotations using a script to select or suppress information from the data file. The rules used for this process are aimed at readability for the human reader, at the expense of some details; therefore, this file should not be parsed for machine-readable information. @+ © 2016 Unicode®, Inc. For terms of use, see http://www.unicode.org/terms_of_use.html @@ 0000 C0 Controls and Basic Latin (Basic Latin) 007F @@+ @ C0 controls @+ Alias names are those for ISO/IEC 6429:1992. Commonly used alternative aliases are also shown. 0000 = NULL 0001 = START OF HEADING 0002 = START OF TEXT 0003 = END OF TEXT 0004 = END OF TRANSMISSION 0005 = ENQUIRY 0006 = ACKNOWLEDGE 0007 = BELL 0008 = BACKSPACE 0009 = CHARACTER TABULATION = horizontal tabulation (HT), tab 000A = LINE FEED (LF) = new line (NL), end of line (EOL) 000B = LINE TABULATION = vertical tabulation (VT) 000C = FORM FEED (FF) 000D = CARRIAGE RETURN (CR) 000E = SHIFT OUT * known as LOCKING-SHIFT ONE in 8-bit environments 000F = SHIFT IN * known as LOCKING-SHIFT ZERO in 8-bit environments 0010 = DATA LINK ESCAPE 0011 = DEVICE CONTROL ONE 0012 = DEVICE CONTROL TWO 0013 = DEVICE CONTROL THREE 0014 = DEVICE CONTROL FOUR 0015 = NEGATIVE ACKNOWLEDGE 0016 = SYNCHRONOUS IDLE 0017 = END OF TRANSMISSION BLOCK 0018 = CANCEL 0019 = END OF MEDIUM 001A = SUBSTITUTE x (replacement character - FFFD) 001B = ESCAPE 001C = INFORMATION SEPARATOR FOUR = file separator (FS) 001D = INFORMATION SEPARATOR THREE = group separator (GS) 001E = INFORMATION SEPARATOR TWO = record separator (RS) 001F = INFORMATION SEPARATOR ONE = unit separator (US) @ ASCII punctuation and symbols @+ Based on ISO/IEC 646. 0020 SPACE * sometimes considered a control code * other space characters: 2000-200A x (no-break space - 00A0) x (zero width space - 200B) x (word joiner - 2060) x (ideographic space - 3000) x (zero width no-break space - FEFF) 0021 EXCLAMATION MARK = factorial = bang x (inverted exclamation mark - 00A1) x (latin letter retroflex click - 01C3) x (double exclamation mark - 203C) x (interrobang - 203D) x (heavy exclamation mark ornament - 2762) 0022 QUOTATION MARK * neutral (vertical), used as opening or closing quotation mark * preferred characters in English for paired quotation marks are 201C & 201D * 05F4 is preferred for gershayim when writing Hebrew x (modifier letter double prime - 02BA) x (combining double acute accent - 030B) x (combining double vertical line above - 030E) x (hebrew punctuation gershayim - 05F4) x (double prime - 2033) x (ditto mark - 3003) 0023 NUMBER SIGN = pound sign, hash, crosshatch, octothorpe x (l b bar symbol - 2114) x (viewdata square - 2317) x (music sharp sign - 266F) ~ 0023 FE0E text style ~ 0023 FE0F emoji style 0024 DOLLAR SIGN = milréis, escudo * used for many peso currencies in Latin America and elsewhere * glyph may have one or two vertical bars * other currency symbol characters start at 20A0 x (currency sign - 00A4) x (peso sign - 20B1) x (heavy dollar sign - 1F4B2) 0025 PERCENT SIGN x (arabic percent sign - 066A) x (per mille sign - 2030) x (per ten thousand sign - 2031) x (commercial minus sign - 2052) 0026 AMPERSAND x (tironian sign et - 204A) x (turned ampersand - 214B) x (heavy ampersand ornament - 1F674) 0027 APOSTROPHE = apostrophe-quote (1.0) = APL quote * neutral (vertical) glyph with mixed usage * 2019 is preferred for apostrophe * preferred characters in English for paired quotation marks are 2018 & 2019 * 05F3 is preferred for geresh when writing Hebrew x (modifier letter prime - 02B9) x (modifier letter apostrophe - 02BC) x (modifier letter vertical line - 02C8) x (combining acute accent - 0301) x (hebrew punctuation geresh - 05F3) x (prime - 2032) x (latin small letter saltillo - A78C) 0028 LEFT PARENTHESIS = opening parenthesis (1.0) 0029 RIGHT PARENTHESIS = closing parenthesis (1.0) * see discussion on semantics of paired bracketing characters 002A ASTERISK = star (on phone keypads) x (arabic five pointed star - 066D) x (low asterisk - 204E) x (asterisk operator - 2217) x (sextile - 26B9) x (heavy asterisk - 2731) ~ 002A FE0E text style ~ 002A FE0F emoji style 002B PLUS SIGN x (heavy plus sign - 2795) 002C COMMA = decimal separator x (arabic comma - 060C) x (single low-9 quotation mark - 201A) x (reversed comma - 2E41) x (ideographic comma - 3001) 002D HYPHEN-MINUS = hyphen or minus sign * used for either hyphen or minus sign x (hyphen - 2010) x (non-breaking hyphen - 2011) x (figure dash - 2012) x (en dash - 2013) x (hyphen bullet - 2043) x (minus sign - 2212) x (roman uncia sign - 10191) 002E FULL STOP = period, dot, decimal point * may be rendered as a raised decimal point in old style numbers x (arabic full stop - 06D4) x (stenographic full stop - 2E3C) x (ideographic full stop - 3002) 002F SOLIDUS = slash, virgule x (latin letter dental click - 01C0) x (combining long solidus overlay - 0338) x (fraction slash - 2044) x (division slash - 2215) @ ASCII digits 0030 DIGIT ZERO ~ 0030 FE00 short diagonal stroke form ~ 0030 FE0E text style ~ 0030 FE0F emoji style 0031 DIGIT ONE ~ 0031 FE0E text style ~ 0031 FE0F emoji style 0032 DIGIT TWO ~ 0032 FE0E text style ~ 0032 FE0F emoji style 0033 DIGIT THREE ~ 0033 FE0E text style ~ 0033 FE0F emoji style 0034 DIGIT FOUR ~ 0034 FE0E text style ~ 0034 FE0F emoji style 0035 DIGIT FIVE ~ 0035 FE0E text style ~ 0035 FE0F emoji style 0036 DIGIT SIX ~ 0036 FE0E text style ~ 0036 FE0F emoji style 0037 DIGIT SEVEN ~ 0037 FE0E text style ~ 0037 FE0F emoji style 0038 DIGIT EIGHT ~ 0038 FE0E text style ~ 0038 FE0F emoji style 0039 DIGIT NINE ~ 0039 FE0E text style ~ 0039 FE0F emoji style @ ASCII punctuation and symbols 003A COLON * also used to denote division or scale; for that mathematical use 2236 is preferred x (armenian full stop - 0589) x (hebrew punctuation sof pasuq - 05C3) x (ratio - 2236) x (modifier letter colon - A789) 003B SEMICOLON * this, and not 037E, is the preferred character for 'Greek question mark' x (greek question mark - 037E) x (arabic semicolon - 061B) x (reversed semicolon - 204F) 003C LESS-THAN SIGN x (single left-pointing angle quotation mark - 2039) x (left-pointing angle bracket - 2329) x (mathematical left angle bracket - 27E8) x (left angle bracket - 3008) 003D EQUALS SIGN * other related characters: 2241-2263 x (not equal to - 2260) x (identical to - 2261) x (modifier letter short equals sign - A78A) x (roman sextans sign - 10190) 003E GREATER-THAN SIGN x (single right-pointing angle quotation mark - 203A) x (right-pointing angle bracket - 232A) x (mathematical right angle bracket - 27E9) x (right angle bracket - 3009) 003F QUESTION MARK x (inverted question mark - 00BF) x (greek question mark - 037E) x (arabic question mark - 061F) x (interrobang - 203D) x (question exclamation mark - 2048) x (exclamation question mark - 2049) 0040 COMMERCIAL AT = at sign @ Uppercase Latin alphabet 0041 LATIN CAPITAL LETTER A 0042 LATIN CAPITAL LETTER B x (script capital b - 212C) 0043 LATIN CAPITAL LETTER C x (double-struck capital c - 2102) x (black-letter capital c - 212D) 0044 LATIN CAPITAL LETTER D 0045 LATIN CAPITAL LETTER E x (euler constant - 2107) x (script capital e - 2130) 0046 LATIN CAPITAL LETTER F x (script capital f - 2131) x (turned capital f - 2132) 0047 LATIN CAPITAL LETTER G 0048 LATIN CAPITAL LETTER H x (script capital h - 210B) x (black-letter capital h - 210C) x (double-struck capital h - 210D) 0049 LATIN CAPITAL LETTER I * Turkish and Azerbaijani use 0131 for lowercase x (latin capital letter i with dot above - 0130) x (cyrillic capital letter byelorussian-ukrainian i - 0406) x (cyrillic letter palochka - 04C0) x (script capital i - 2110) x (black-letter capital i - 2111) x (roman numeral one - 2160) 004A LATIN CAPITAL LETTER J 004B LATIN CAPITAL LETTER K x (kelvin sign - 212A) 004C LATIN CAPITAL LETTER L x (script capital l - 2112) 004D LATIN CAPITAL LETTER M x (script capital m - 2133) 004E LATIN CAPITAL LETTER N x (double-struck capital n - 2115) 004F LATIN CAPITAL LETTER O 0050 LATIN CAPITAL LETTER P x (double-struck capital p - 2119) 0051 LATIN CAPITAL LETTER Q x (double-struck capital q - 211A) 0052 LATIN CAPITAL LETTER R x (script capital r - 211B) x (black-letter capital r - 211C) x (double-struck capital r - 211D) 0053 LATIN CAPITAL LETTER S 0054 LATIN CAPITAL LETTER T 0055 LATIN CAPITAL LETTER U 0056 LATIN CAPITAL LETTER V x (roman numeral five - 2164) 0057 LATIN CAPITAL LETTER W 0058 LATIN CAPITAL LETTER X 0059 LATIN CAPITAL LETTER Y 005A LATIN CAPITAL LETTER Z x (double-struck capital z - 2124) x (black-letter capital z - 2128) @ ASCII punctuation and symbols 005B LEFT SQUARE BRACKET = opening square bracket (1.0) * other bracket characters: 27E6-27EB, 2983-2998, 3008-301B 005C REVERSE SOLIDUS = backslash x (combining reverse solidus overlay - 20E5) x (set minus - 2216) 005D RIGHT SQUARE BRACKET = closing square bracket (1.0) 005E CIRCUMFLEX ACCENT * this is a spacing character x (modifier letter up arrowhead - 02C4) x (modifier letter circumflex accent - 02C6) x (combining circumflex accent - 0302) x (caret - 2038) x (up arrowhead - 2303) 005F LOW LINE = spacing underscore (1.0) * this is a spacing character x (modifier letter low macron - 02CD) x (combining macron below - 0331) x (combining low line - 0332) x (double low line - 2017) 0060 GRAVE ACCENT * this is a spacing character x (modifier letter grave accent - 02CB) x (combining grave accent - 0300) x (reversed prime - 2035) @ Lowercase Latin alphabet 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 x (estimated symbol - 212E) x (script small e - 212F) 0066 LATIN SMALL LETTER F 0067 LATIN SMALL LETTER G x (latin small letter script g - 0261) x (script small g - 210A) 0068 LATIN SMALL LETTER H x (cyrillic small letter shha - 04BB) x (planck constant - 210E) 0069 LATIN SMALL LETTER I * Turkish and Azerbaijani use 0130 for uppercase x (latin small letter dotless i - 0131) x (mathematical italic small dotless i - 1D6A4) 006A LATIN SMALL LETTER J x (latin small letter dotless j - 0237) x (mathematical italic small dotless j - 1D6A5) 006B LATIN SMALL LETTER K 006C LATIN SMALL LETTER L x (script small l - 2113) x (mathematical script small l - 1D4C1) 006D LATIN SMALL LETTER M 006E LATIN SMALL LETTER N x (superscript latin small letter n - 207F) 006F LATIN SMALL LETTER O x (script small o - 2134) 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 x (latin small letter z with stroke - 01B6) @ ASCII punctuation and symbols 007B LEFT CURLY BRACKET = opening curly bracket (1.0) = left brace 007C VERTICAL LINE = vertical bar * used in pairs to indicate absolute value x (latin letter dental click - 01C0) x (hebrew punctuation paseq - 05C0) x (divides - 2223) x (light vertical bar - 2758) 007D RIGHT CURLY BRACKET = closing curly bracket (1.0) = right brace 007E TILDE * this is a spacing character x (small tilde - 02DC) x (combining tilde - 0303) x (swung dash - 2053) x (tilde operator - 223C) x (fullwidth tilde - FF5E) @ Control character 007F = DELETE @~ ! @@ 0080 C1 Controls and Latin-1 Supplement (Latin-1 Supplement) 00FF @ C1 controls @+ Alias names are those for ISO/IEC 6429:1992. 0080 0081 0082 = BREAK PERMITTED HERE x (zero width space - 200B) 0083 = NO BREAK HERE x (word joiner - 2060) 0084 * formerly known as INDEX 0085 = NEXT LINE (NEL) 0086 = START OF SELECTED AREA 0087 = END OF SELECTED AREA 0088 = CHARACTER TABULATION SET 0089 = CHARACTER TABULATION WITH JUSTIFICATION 008A = LINE TABULATION SET 008B = PARTIAL LINE FORWARD 008C = PARTIAL LINE BACKWARD 008D = REVERSE LINE FEED 008E = SINGLE SHIFT TWO 008F = SINGLE SHIFT THREE 0090 = DEVICE CONTROL STRING 0091 = PRIVATE USE ONE 0092 = PRIVATE USE TWO 0093 = SET TRANSMIT STATE 0094 = CANCEL CHARACTER 0095 = MESSAGE WAITING 0096 = START OF GUARDED AREA 0097 = END OF GUARDED AREA 0098 = START OF STRING 0099 009A = SINGLE CHARACTER INTRODUCER 009B = CONTROL SEQUENCE INTRODUCER 009C = STRING TERMINATOR 009D = OPERATING SYSTEM COMMAND 009E = PRIVACY MESSAGE 009F = APPLICATION PROGRAM COMMAND @ Latin-1 punctuation and symbols @+ Based on ISO/IEC 8859-1 (aka Latin-1) from here. 00A0 NO-BREAK SPACE * commonly abbreviated as NBSP x (space - 0020) x (figure space - 2007) x (narrow no-break space - 202F) x (word joiner - 2060) x (zero width no-break space - FEFF) # 0020 00A1 INVERTED EXCLAMATION MARK * Spanish, Asturian, Galician x (exclamation mark - 0021) 00A2 CENT SIGN 00A3 POUND SIGN = pound sterling, Irish punt, Italian lira, Turkish lira, etc. x (lira sign - 20A4) x (turkish lira sign - 20BA) x (roman semuncia sign - 10192) 00A4 CURRENCY SIGN * other currency symbol characters: 20A0-20BA x (dollar sign - 0024) 00A5 YEN SIGN = yuan sign * glyph may have one or two crossbars, but official symbol in Japan and China has two 00A6 BROKEN BAR = broken vertical bar (1.0) = parted rule (in typography) 00A7 SECTION SIGN * paragraph sign in some European usage 00A8 DIAERESIS * this is a spacing character x (combining diaeresis - 0308) # 0020 0308 00A9 COPYRIGHT SIGN x (sound recording copyright - 2117) x (circled latin capital letter c - 24B8) ~ 00A9 FE0E text style ~ 00A9 FE0F emoji style 00AA FEMININE ORDINAL INDICATOR * Spanish # 0061 00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK = left guillemet = chevrons (in typography) * usually opening, sometimes closing x (much less-than - 226A) x (left double angle bracket - 300A) 00AC NOT SIGN = angled dash (in typography) x (reversed not sign - 2310) 00AD SOFT HYPHEN = discretionary hyphen * commonly abbreviated as SHY 00AE REGISTERED SIGN = registered trade mark sign (1.0) x (circled latin capital letter r - 24C7) ~ 00AE FE0E text style ~ 00AE FE0F emoji style 00AF MACRON = overline, APL overbar * this is a spacing character x (modifier letter macron - 02C9) x (combining macron - 0304) x (combining overline - 0305) # 0020 0304 00B0 DEGREE SIGN * this is a spacing character x (ring above - 02DA) x (combining ring above - 030A) x (superscript zero - 2070) x (ring operator - 2218) 00B1 PLUS-MINUS SIGN x (minus-or-plus sign - 2213) 00B2 SUPERSCRIPT TWO = squared * other superscript digit characters: 2070-2079 x (superscript one - 00B9) # 0032 00B3 SUPERSCRIPT THREE = cubed x (superscript one - 00B9) # 0033 00B4 ACUTE ACCENT * this is a spacing character x (modifier letter prime - 02B9) x (modifier letter acute accent - 02CA) x (combining acute accent - 0301) x (prime - 2032) # 0020 0301 00B5 MICRO SIGN # 03BC greek small letter mu 00B6 PILCROW SIGN = paragraph sign * section sign in some European usage x (reversed pilcrow sign - 204B) x (curved stem paragraph sign ornament - 2761) x (capitulum - 2E3F) 00B7 MIDDLE DOT = midpoint (in typography) = Georgian comma = Greek middle dot (ano teleia) * also used as a raised decimal point or to denote multiplication; for multiplication 22C5 is preferred x (greek ano teleia - 0387) x (runic single punctuation - 16EB) x (bullet - 2022) x (one dot leader - 2024) x (hyphenation point - 2027) x (bullet operator - 2219) x (dot operator - 22C5) x (word separator middle dot - 2E31) x (raised dot - 2E33) x (katakana middle dot - 30FB) x (latin letter sinological dot - A78F) 00B8 CEDILLA * this is a spacing character * other spacing accent characters: 02D8-02DB x (combining cedilla - 0327) # 0020 0327 00B9 SUPERSCRIPT ONE x (superscript two - 00B2) x (superscript three - 00B3) # 0031 00BA MASCULINE ORDINAL INDICATOR * Spanish # 006F 00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK = right guillemet * usually closing, sometimes opening x (much greater-than - 226B) x (right double angle bracket - 300B) @ Vulgar fractions @+ The fraction bar for these may be rendered horizontally or at a slant. For other fraction characters, see 2150-215E. 00BC VULGAR FRACTION ONE QUARTER # 0031 2044 0034 00BD VULGAR FRACTION ONE HALF # 0031 2044 0032 00BE VULGAR FRACTION THREE QUARTERS # 0033 2044 0034 @ Punctuation 00BF INVERTED QUESTION MARK = turned question mark * Spanish x (question mark - 003F) x (reversed question mark - 2E2E) @ Letters 00C0 LATIN CAPITAL LETTER A WITH GRAVE : 0041 0300 00C1 LATIN CAPITAL LETTER A WITH ACUTE : 0041 0301 00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX : 0041 0302 00C3 LATIN CAPITAL LETTER A WITH TILDE : 0041 0303 00C4 LATIN CAPITAL LETTER A WITH DIAERESIS : 0041 0308 00C5 LATIN CAPITAL LETTER A WITH RING ABOVE x (angstrom sign - 212B) : 0041 030A 00C6 LATIN CAPITAL LETTER AE = latin capital ligature ae (1.1) 00C7 LATIN CAPITAL LETTER C WITH CEDILLA : 0043 0327 00C8 LATIN CAPITAL LETTER E WITH GRAVE : 0045 0300 00C9 LATIN CAPITAL LETTER E WITH ACUTE : 0045 0301 00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX : 0045 0302 00CB LATIN CAPITAL LETTER E WITH DIAERESIS : 0045 0308 00CC LATIN CAPITAL LETTER I WITH GRAVE : 0049 0300 00CD LATIN CAPITAL LETTER I WITH ACUTE : 0049 0301 00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX : 0049 0302 00CF LATIN CAPITAL LETTER I WITH DIAERESIS : 0049 0308 00D0 LATIN CAPITAL LETTER ETH * lowercase is 00F0 x (latin capital letter d with stroke - 0110) x (latin capital letter african d - 0189) 00D1 LATIN CAPITAL LETTER N WITH TILDE : 004E 0303 00D2 LATIN CAPITAL LETTER O WITH GRAVE : 004F 0300 00D3 LATIN CAPITAL LETTER O WITH ACUTE : 004F 0301 00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX : 004F 0302 00D5 LATIN CAPITAL LETTER O WITH TILDE : 004F 0303 00D6 LATIN CAPITAL LETTER O WITH DIAERESIS : 004F 0308 @ Mathematical operator 00D7 MULTIPLICATION SIGN = z notation Cartesian product x (cross mark - 274C) @ Letters 00D8 LATIN CAPITAL LETTER O WITH STROKE = o slash x (empty set - 2205) 00D9 LATIN CAPITAL LETTER U WITH GRAVE : 0055 0300 00DA LATIN CAPITAL LETTER U WITH ACUTE : 0055 0301 00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX : 0055 0302 00DC LATIN CAPITAL LETTER U WITH DIAERESIS : 0055 0308 00DD LATIN CAPITAL LETTER Y WITH ACUTE : 0059 0301 00DE LATIN CAPITAL LETTER THORN 00DF LATIN SMALL LETTER SHARP S = Eszett * German * uppercase is "SS" * nonstandard uppercase is 1E9E * typographically the glyph for this character can be based on a ligature of 017F with either 0073 or with an old-style glyph for 007A (the latter similar in appearance to 0292). Both forms exist interchangeably today. x (greek small letter beta - 03B2) 00E0 LATIN SMALL LETTER A WITH GRAVE : 0061 0300 00E1 LATIN SMALL LETTER A WITH ACUTE : 0061 0301 00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX : 0061 0302 00E3 LATIN SMALL LETTER A WITH TILDE * Portuguese : 0061 0303 00E4 LATIN SMALL LETTER A WITH DIAERESIS : 0061 0308 00E5 LATIN SMALL LETTER A WITH RING ABOVE * Danish, Norwegian, Swedish, Walloon : 0061 030A 00E6 LATIN SMALL LETTER AE = latin small ligature ae (1.1) = ash (from Old English æsc) * Danish, Norwegian, Icelandic, Faroese, Old English, French, IPA x (latin small ligature oe - 0153) x (cyrillic small ligature a ie - 04D5) 00E7 LATIN SMALL LETTER C WITH CEDILLA : 0063 0327 00E8 LATIN SMALL LETTER E WITH GRAVE : 0065 0300 00E9 LATIN SMALL LETTER E WITH ACUTE : 0065 0301 00EA LATIN SMALL LETTER E WITH CIRCUMFLEX : 0065 0302 00EB LATIN SMALL LETTER E WITH DIAERESIS : 0065 0308 00EC LATIN SMALL LETTER I WITH GRAVE * Italian, Malagasy : 0069 0300 00ED LATIN SMALL LETTER I WITH ACUTE : 0069 0301 00EE LATIN SMALL LETTER I WITH CIRCUMFLEX : 0069 0302 00EF LATIN SMALL LETTER I WITH DIAERESIS : 0069 0308 00F0 LATIN SMALL LETTER ETH * Icelandic, Faroese, Old English, IPA * uppercase is 00D0 x (greek small letter delta - 03B4) x (partial differential - 2202) 00F1 LATIN SMALL LETTER N WITH TILDE : 006E 0303 00F2 LATIN SMALL LETTER O WITH GRAVE : 006F 0300 00F3 LATIN SMALL LETTER O WITH ACUTE : 006F 0301 00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX : 006F 0302 00F5 LATIN SMALL LETTER O WITH TILDE * Portuguese, Estonian : 006F 0303 00F6 LATIN SMALL LETTER O WITH DIAERESIS : 006F 0308 @ Mathematical operator 00F7 DIVISION SIGN = obelus * occasionally used as an alternate, more visually distinct version of 2212 or 2011 in some contexts * historically used as a punctuation mark to denote questionable passages in manuscripts x (syriac harklean obelus - 070B) x (commercial minus sign - 2052) x (minus sign - 2212) x (division slash - 2215) x (divides - 2223) x (ratio - 2236) x (heavy division sign - 2797) @ Letters 00F8 LATIN SMALL LETTER O WITH STROKE = o slash * Danish, Norwegian, Faroese, IPA 00F9 LATIN SMALL LETTER U WITH GRAVE * French, Italian : 0075 0300 00FA LATIN SMALL LETTER U WITH ACUTE : 0075 0301 00FB LATIN SMALL LETTER U WITH CIRCUMFLEX : 0075 0302 00FC LATIN SMALL LETTER U WITH DIAERESIS : 0075 0308 00FD LATIN SMALL LETTER Y WITH ACUTE * Czech, Slovak, Icelandic, Faroese, Welsh, Malagasy : 0079 0301 00FE LATIN SMALL LETTER THORN * Icelandic, Old English, phonetics * Runic letter borrowed into Latin script x (runic letter thurisaz thurs thorn - 16A6) 00FF LATIN SMALL LETTER Y WITH DIAERESIS * French, medieval Hungarian orthography * uppercase is 0178 : 0079 0308 @~ ! @@ 0100 Latin Extended-A 017F @ European Latin 0100 LATIN CAPITAL LETTER A WITH MACRON : 0041 0304 0101 LATIN SMALL LETTER A WITH MACRON * Latvian, Latin, ... : 0061 0304 0102 LATIN CAPITAL LETTER A WITH BREVE : 0041 0306 0103 LATIN SMALL LETTER A WITH BREVE * Romanian, Vietnamese, Latin, ... : 0061 0306 0104 LATIN CAPITAL LETTER A WITH OGONEK : 0041 0328 0105 LATIN SMALL LETTER A WITH OGONEK * Polish, Lithuanian, ... : 0061 0328 0106 LATIN CAPITAL LETTER C WITH ACUTE : 0043 0301 0107 LATIN SMALL LETTER C WITH ACUTE * Polish, Croatian, ... x (cyrillic small letter tshe - 045B) : 0063 0301 0108 LATIN CAPITAL LETTER C WITH CIRCUMFLEX : 0043 0302 0109 LATIN SMALL LETTER C WITH CIRCUMFLEX * Esperanto : 0063 0302 010A LATIN CAPITAL LETTER C WITH DOT ABOVE : 0043 0307 010B LATIN SMALL LETTER C WITH DOT ABOVE * Maltese, Irish Gaelic (old orthography) : 0063 0307 010C LATIN CAPITAL LETTER C WITH CARON : 0043 030C 010D LATIN SMALL LETTER C WITH CARON * Czech, Slovak, Slovenian, and many other languages : 0063 030C 010E LATIN CAPITAL LETTER D WITH CARON * the form using caron/hacek is preferred in all contexts : 0044 030C 010F LATIN SMALL LETTER D WITH CARON * Czech, Slovak * the form using apostrophe is preferred in typesetting : 0064 030C 0110 LATIN CAPITAL LETTER D WITH STROKE x (latin capital letter eth - 00D0) x (latin small letter d with stroke - 0111) x (latin capital letter african d - 0189) 0111 LATIN SMALL LETTER D WITH STROKE * Croatian, Vietnamese, Sami * an alternate glyph with the stroke through the bowl is used in Americanist orthographies x (latin capital letter d with stroke - 0110) x (cyrillic small letter dje - 0452) 0112 LATIN CAPITAL LETTER E WITH MACRON : 0045 0304 0113 LATIN SMALL LETTER E WITH MACRON * Latvian, Latin, ... : 0065 0304 0114 LATIN CAPITAL LETTER E WITH BREVE : 0045 0306 0115 LATIN SMALL LETTER E WITH BREVE * Malay, Latin, ... : 0065 0306 0116 LATIN CAPITAL LETTER E WITH DOT ABOVE : 0045 0307 0117 LATIN SMALL LETTER E WITH DOT ABOVE * Lithuanian : 0065 0307 0118 LATIN CAPITAL LETTER E WITH OGONEK : 0045 0328 0119 LATIN SMALL LETTER E WITH OGONEK * Polish, Lithuanian, ... : 0065 0328 011A LATIN CAPITAL LETTER E WITH CARON : 0045 030C 011B LATIN SMALL LETTER E WITH CARON * Czech, ... : 0065 030C 011C LATIN CAPITAL LETTER G WITH CIRCUMFLEX : 0047 0302 011D LATIN SMALL LETTER G WITH CIRCUMFLEX * Esperanto : 0067 0302 011E LATIN CAPITAL LETTER G WITH BREVE : 0047 0306 011F LATIN SMALL LETTER G WITH BREVE * Turkish, Azerbaijani x (latin small letter g with caron - 01E7) : 0067 0306 0120 LATIN CAPITAL LETTER G WITH DOT ABOVE : 0047 0307 0121 LATIN SMALL LETTER G WITH DOT ABOVE * Maltese, Irish Gaelic (old orthography) : 0067 0307 0122 LATIN CAPITAL LETTER G WITH CEDILLA : 0047 0327 0123 LATIN SMALL LETTER G WITH CEDILLA * Latvian * there are three major glyph variants : 0067 0327 0124 LATIN CAPITAL LETTER H WITH CIRCUMFLEX * lowercase in Nawdm is 0266 : 0048 0302 0125 LATIN SMALL LETTER H WITH CIRCUMFLEX * Esperanto : 0068 0302 0126 LATIN CAPITAL LETTER H WITH STROKE 0127 LATIN SMALL LETTER H WITH STROKE * Maltese, IPA, ... x (cyrillic small letter tshe - 045B) x (planck constant over two pi - 210F) 0128 LATIN CAPITAL LETTER I WITH TILDE : 0049 0303 0129 LATIN SMALL LETTER I WITH TILDE * Greenlandic (old orthography) : 0069 0303 012A LATIN CAPITAL LETTER I WITH MACRON : 0049 0304 012B LATIN SMALL LETTER I WITH MACRON * Latvian, Latin, ... : 0069 0304 012C LATIN CAPITAL LETTER I WITH BREVE : 0049 0306 012D LATIN SMALL LETTER I WITH BREVE * Latin, ... : 0069 0306 012E LATIN CAPITAL LETTER I WITH OGONEK : 0049 0328 012F LATIN SMALL LETTER I WITH OGONEK * Lithuanian, ... : 0069 0328 0130 LATIN CAPITAL LETTER I WITH DOT ABOVE = i dot * Turkish, Azerbaijani * lowercase is 0069 x (latin capital letter i - 0049) : 0049 0307 0131 LATIN SMALL LETTER DOTLESS I * Turkish, Azerbaijani * uppercase is 0049 x (latin small letter i - 0069) 0132 LATIN CAPITAL LIGATURE IJ # 0049 004A 0133 LATIN SMALL LIGATURE IJ * Dutch # 0069 006A 0134 LATIN CAPITAL LETTER J WITH CIRCUMFLEX : 004A 0302 0135 LATIN SMALL LETTER J WITH CIRCUMFLEX * Esperanto : 006A 0302 0136 LATIN CAPITAL LETTER K WITH CEDILLA : 004B 0327 0137 LATIN SMALL LETTER K WITH CEDILLA * Latvian : 006B 0327 0138 LATIN SMALL LETTER KRA * Greenlandic (old orthography) 0139 LATIN CAPITAL LETTER L WITH ACUTE : 004C 0301 013A LATIN SMALL LETTER L WITH ACUTE * Slovak : 006C 0301 013B LATIN CAPITAL LETTER L WITH CEDILLA : 004C 0327 013C LATIN SMALL LETTER L WITH CEDILLA * Latvian : 006C 0327 013D LATIN CAPITAL LETTER L WITH CARON * the form using apostrophe is preferred in typesetting : 004C 030C 013E LATIN SMALL LETTER L WITH CARON * Slovak * the form using apostrophe is preferred in typesetting : 006C 030C 013F LATIN CAPITAL LETTER L WITH MIDDLE DOT * some fonts show the middle dot inside the L, but the preferred form has the dot following the L # 004C 00B7 0140 LATIN SMALL LETTER L WITH MIDDLE DOT # 006C 00B7 @+ * Catalan legacy compatibility character for ISO/IEC 6937 * preferred representation for Catalan: 006C 00B7 0141 LATIN CAPITAL LETTER L WITH STROKE x (latin capital letter l with bar - 023D) 0142 LATIN SMALL LETTER L WITH STROKE * Polish, ... x (latin small letter l with bar - 019A) 0143 LATIN CAPITAL LETTER N WITH ACUTE : 004E 0301 0144 LATIN SMALL LETTER N WITH ACUTE * Polish, ... : 006E 0301 0145 LATIN CAPITAL LETTER N WITH CEDILLA : 004E 0327 0146 LATIN SMALL LETTER N WITH CEDILLA * Latvian : 006E 0327 0147 LATIN CAPITAL LETTER N WITH CARON : 004E 030C 0148 LATIN SMALL LETTER N WITH CARON * Czech, Slovak : 006E 030C @ Deprecated letter 0149 LATIN SMALL LETTER N PRECEDED BY APOSTROPHE = latin small letter apostrophe n (1.0) * this character is deprecated and its use is strongly discouraged * Afrikaans # 02BC 006E @+ * legacy compatibility character for ISO/IEC 6937 * uppercase is 02BC 004E @ European Latin 014A LATIN CAPITAL LETTER ENG * glyph may also have appearance of large form of the small letter 014B LATIN SMALL LETTER ENG = engma, angma * Sami, Mende, IPA, ... 014C LATIN CAPITAL LETTER O WITH MACRON : 004F 0304 014D LATIN SMALL LETTER O WITH MACRON * Latvian, Latin, ... : 006F 0304 014E LATIN CAPITAL LETTER O WITH BREVE : 004F 0306 014F LATIN SMALL LETTER O WITH BREVE * Latin : 006F 0306 0150 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE : 004F 030B 0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE * Hungarian : 006F 030B 0152 LATIN CAPITAL LIGATURE OE 0153 LATIN SMALL LIGATURE OE = ethel (from Old English eðel) * French, IPA, Old Icelandic, Old English, ... x (latin small letter ae - 00E6) x (latin letter small capital oe - 0276) 0154 LATIN CAPITAL LETTER R WITH ACUTE : 0052 0301 0155 LATIN SMALL LETTER R WITH ACUTE * Slovak, ... : 0072 0301 0156 LATIN CAPITAL LETTER R WITH CEDILLA : 0052 0327 0157 LATIN SMALL LETTER R WITH CEDILLA * Livonian : 0072 0327 0158 LATIN CAPITAL LETTER R WITH CARON : 0052 030C 0159 LATIN SMALL LETTER R WITH CARON * Czech, ... : 0072 030C 015A LATIN CAPITAL LETTER S WITH ACUTE : 0053 0301 015B LATIN SMALL LETTER S WITH ACUTE * Polish, Indic transliteration, ... : 0073 0301 015C LATIN CAPITAL LETTER S WITH CIRCUMFLEX : 0053 0302 015D LATIN SMALL LETTER S WITH CIRCUMFLEX * Esperanto : 0073 0302 015E LATIN CAPITAL LETTER S WITH CEDILLA : 0053 0327 015F LATIN SMALL LETTER S WITH CEDILLA * Turkish, Azerbaijani, ... * the character 0219 should be used instead for Romanian x (latin small letter s with comma below - 0219) : 0073 0327 0160 LATIN CAPITAL LETTER S WITH CARON : 0053 030C 0161 LATIN SMALL LETTER S WITH CARON * Czech, Estonian, Finnish, Slovak, and many other languages : 0073 030C 0162 LATIN CAPITAL LETTER T WITH CEDILLA : 0054 0327 0163 LATIN SMALL LETTER T WITH CEDILLA * Semitic transliteration, ... * the character 021B should be used instead for Romanian x (latin small letter t with comma below - 021B) : 0074 0327 0164 LATIN CAPITAL LETTER T WITH CARON * the form using caron/hacek is preferred in all contexts : 0054 030C 0165 LATIN SMALL LETTER T WITH CARON * Czech, Slovak * the form using apostrophe is preferred in typesetting : 0074 030C 0166 LATIN CAPITAL LETTER T WITH STROKE 0167 LATIN SMALL LETTER T WITH STROKE * Sami 0168 LATIN CAPITAL LETTER U WITH TILDE : 0055 0303 0169 LATIN SMALL LETTER U WITH TILDE * Greenlandic (old orthography) : 0075 0303 016A LATIN CAPITAL LETTER U WITH MACRON : 0055 0304 016B LATIN SMALL LETTER U WITH MACRON * Latvian, Lithuanian, Latin, ... : 0075 0304 016C LATIN CAPITAL LETTER U WITH BREVE : 0055 0306 016D LATIN SMALL LETTER U WITH BREVE * Latin, Esperanto, ... : 0075 0306 016E LATIN CAPITAL LETTER U WITH RING ABOVE : 0055 030A 016F LATIN SMALL LETTER U WITH RING ABOVE * Czech, ... : 0075 030A 0170 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE : 0055 030B 0171 LATIN SMALL LETTER U WITH DOUBLE ACUTE * Hungarian : 0075 030B 0172 LATIN CAPITAL LETTER U WITH OGONEK : 0055 0328 0173 LATIN SMALL LETTER U WITH OGONEK * Lithuanian : 0075 0328 0174 LATIN CAPITAL LETTER W WITH CIRCUMFLEX : 0057 0302 0175 LATIN SMALL LETTER W WITH CIRCUMFLEX * Welsh : 0077 0302 0176 LATIN CAPITAL LETTER Y WITH CIRCUMFLEX : 0059 0302 0177 LATIN SMALL LETTER Y WITH CIRCUMFLEX * Welsh : 0079 0302 0178 LATIN CAPITAL LETTER Y WITH DIAERESIS * French, Igbo * lowercase is 00FF : 0059 0308 0179 LATIN CAPITAL LETTER Z WITH ACUTE : 005A 0301 017A LATIN SMALL LETTER Z WITH ACUTE * Polish, ... : 007A 0301 017B LATIN CAPITAL LETTER Z WITH DOT ABOVE : 005A 0307 017C LATIN SMALL LETTER Z WITH DOT ABOVE * Polish, ... : 007A 0307 017D LATIN CAPITAL LETTER Z WITH CARON : 005A 030C 017E LATIN SMALL LETTER Z WITH CARON * Czech, Estonian, Finnish, Slovak, Slovenian, and many other languages : 007A 030C 017F LATIN SMALL LETTER LONG S * in common use in Roman types until the 18th century * in current use in Fraktur and Gaelic types # 0073 latin small letter s @@ 0180 Latin Extended-B 024F @ Non-European and historic Latin 0180 LATIN SMALL LETTER B WITH STROKE * Americanist and Indo-Europeanist usage for phonetic beta * Americanist orthographies use an alternate glyph with the stroke through the bowl * Old Saxon * uppercase is 0243 x (greek small letter beta - 03B2) x (blank symbol - 2422) 0181 LATIN CAPITAL LETTER B WITH HOOK * Zulu, Pan-Nigerian alphabet * lowercase is 0253 0182 LATIN CAPITAL LETTER B WITH TOPBAR 0183 LATIN SMALL LETTER B WITH TOPBAR * Zhuang (old orthography) * former Soviet minority language scripts x (cyrillic capital letter be - 0411) 0184 LATIN CAPITAL LETTER TONE SIX 0185 LATIN SMALL LETTER TONE SIX * Zhuang (old orthography) * Zhuang tone three is Cyrillic ze * Zhuang tone four is Cyrillic che x (latin small letter tone two - 01A8) x (latin small letter tone five - 01BD) x (cyrillic small letter ze - 0437) x (cyrillic small letter che - 0447) x (cyrillic small letter soft sign - 044C) 0186 LATIN CAPITAL LETTER OPEN O * typographically a turned C * African * lowercase is 0254 0187 LATIN CAPITAL LETTER C WITH HOOK 0188 LATIN SMALL LETTER C WITH HOOK * African 0189 LATIN CAPITAL LETTER AFRICAN D * Ewe * lowercase is 0256 x (latin capital letter eth - 00D0) x (latin capital letter d with stroke - 0110) 018A LATIN CAPITAL LETTER D WITH HOOK * Pan-Nigerian alphabet * lowercase is 0257 018B LATIN CAPITAL LETTER D WITH TOPBAR 018C LATIN SMALL LETTER D WITH TOPBAR * former-Soviet minority language scripts * Zhuang (old orthography) 018D LATIN SMALL LETTER TURNED DELTA = reversed Polish-hook o * archaic phonetic for labialized alveolar fricative * recommended spellings 007A 02B7 or 007A 032B 018E LATIN CAPITAL LETTER REVERSED E = turned e * Pan-Nigerian alphabet * lowercase is 01DD 018F LATIN CAPITAL LETTER SCHWA * Azerbaijani, ... * lowercase is 0259 x (cyrillic capital letter schwa - 04D8) 0190 LATIN CAPITAL LETTER OPEN E = epsilon * African * lowercase is 025B x (euler constant - 2107) x (turned digit three - 218B) 0191 LATIN CAPITAL LETTER F WITH HOOK * African x (latin capital letter f with stroke - A798) 0192 LATIN SMALL LETTER F WITH HOOK = script f = Florin currency symbol (Netherlands) = function symbol * used as abbreviation convention for folder 0193 LATIN CAPITAL LETTER G WITH HOOK * African * lowercase is 0260 0194 LATIN CAPITAL LETTER GAMMA * African * lowercase is 0263 0195 LATIN SMALL LETTER HV * Gothic transliteration * uppercase is 01F6 0196 LATIN CAPITAL LETTER IOTA * African * lowercase is 0269 0197 LATIN CAPITAL LETTER I WITH STROKE = barred i, i bar * African * lowercase is 0268 * ISO 6438 gives lowercase as 026A, not 0268 x (latin letter small capital i - 026A) 0198 LATIN CAPITAL LETTER K WITH HOOK 0199 LATIN SMALL LETTER K WITH HOOK * Hausa, Pan-Nigerian alphabet 019A LATIN SMALL LETTER L WITH BAR = barred l * Americanist phonetic usage for 026C * uppercase is 023D x (latin small letter l with stroke - 0142) 019B LATIN SMALL LETTER LAMBDA WITH STROKE = barred lambda, lambda bar * Americanist phonetic usage 019C LATIN CAPITAL LETTER TURNED M * Zhuang (old orthography) * lowercase is 026F 019D LATIN CAPITAL LETTER N WITH LEFT HOOK * African * lowercase is 0272 019E LATIN SMALL LETTER N WITH LONG RIGHT LEG * archaic phonetic for Japanese 3093 * recommended spelling for syllabic n is 006E 0329 * Lakota (indicates nasalization of vowel) * uppercase is 0220 019F LATIN CAPITAL LETTER O WITH MIDDLE TILDE = barred o, o bar * lowercase is 0275 * African x (cyrillic capital letter barred o - 04E8) 01A0 LATIN CAPITAL LETTER O WITH HORN : 004F 031B 01A1 LATIN SMALL LETTER O WITH HORN * Vietnamese : 006F 031B 01A2 LATIN CAPITAL LETTER OI % LATIN CAPITAL LETTER GHA 01A3 LATIN SMALL LETTER OI % LATIN SMALL LETTER GHA * Pan-Turkic Latin alphabets 01A4 LATIN CAPITAL LETTER P WITH HOOK 01A5 LATIN SMALL LETTER P WITH HOOK * African 01A6 LATIN LETTER YR * Old Norse @+ * from German Standard DIN 31624 and ISO 5426-2 * lowercase is 0280 01A7 LATIN CAPITAL LETTER TONE TWO 01A8 LATIN SMALL LETTER TONE TWO * Zhuang (old orthography) * typographically a reversed S x (latin small letter tone six - 0185) 01A9 LATIN CAPITAL LETTER ESH * African * lowercase is 0283 x (greek capital letter sigma - 03A3) 01AA LATIN LETTER REVERSED ESH LOOP * archaic phonetic for labialized palatoalveolar or palatal fricative * Twi * recommended spellings 0283 02B7, 00E7 02B7, 0068 0265, etc. 01AB LATIN SMALL LETTER T WITH PALATAL HOOK * archaic phonetic for palatalized alveolar or dental stop * recommended spelling 0074 02B2 01AC LATIN CAPITAL LETTER T WITH HOOK * a glyph variant with hook at the right also occurs 01AD LATIN SMALL LETTER T WITH HOOK * African 01AE LATIN CAPITAL LETTER T WITH RETROFLEX HOOK * African * lowercase is 0288 01AF LATIN CAPITAL LETTER U WITH HORN : 0055 031B 01B0 LATIN SMALL LETTER U WITH HORN * Vietnamese : 0075 031B 01B1 LATIN CAPITAL LETTER UPSILON * African * typographically based on turned capital Greek omega * lowercase is 028A x (inverted ohm sign - 2127) 01B2 LATIN CAPITAL LETTER V WITH HOOK = script v * African * lowercase is 028B 01B3 LATIN CAPITAL LETTER Y WITH HOOK * a glyph variant with hook at the left also occurs 01B4 LATIN SMALL LETTER Y WITH HOOK * Bini, Esoko, and other Edo languages in West Africa 01B5 LATIN CAPITAL LETTER Z WITH STROKE 01B6 LATIN SMALL LETTER Z WITH STROKE = barred z, z bar * Pan-Turkic Latin orthography * handwritten variant of Latin "z" x (latin small letter z - 007A) 01B7 LATIN CAPITAL LETTER EZH * African, Skolt Sami * lowercase is 0292 x (latin capital letter yogh - 021C) x (cyrillic capital letter abkhasian dze - 04E0) 01B8 LATIN CAPITAL LETTER EZH REVERSED 01B9 LATIN SMALL LETTER EZH REVERSED * archaic phonetic for voiced pharyngeal fricative * sometimes typographically rendered with a turned digit 3 * recommended spelling 0295 x (latin letter pharyngeal voiced fricative - 0295) x (arabic letter ain - 0639) 01BA LATIN SMALL LETTER EZH WITH TAIL * archaic phonetic for labialized voiced palatoalveolar or palatal fricative * Twi * recommended spellings 0292 02B7 or 006A 02B7 01BB LATIN LETTER TWO WITH STROKE * archaic phonetic for [dz] affricate * recommended spellings 0292 or 0064 007A 01BC LATIN CAPITAL LETTER TONE FIVE 01BD LATIN SMALL LETTER TONE FIVE * Zhuang (old orthography) x (latin small letter tone six - 0185) 01BE LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE * archaic phonetic for [ts] affricate * recommended spelling 0074 0073 * letter form is actually derived from ligation of ts, rather than inverted glottal stop 01BF LATIN LETTER WYNN = wen * Runic letter borrowed into Latin script * replaced by "w" in modern transcriptions of Old English * uppercase is 01F7 x (runic letter wunjo wynn w - 16B9) @ African letters for clicks 01C0 LATIN LETTER DENTAL CLICK = pipe * Khoisan tradition * "c" in Zulu orthography x (solidus - 002F) x (vertical line - 007C) x (latin small letter turned t - 0287) x (divides - 2223) 01C1 LATIN LETTER LATERAL CLICK = double pipe * Khoisan tradition * "x" in Zulu orthography x (latin letter inverted glottal stop - 0296) x (parallel to - 2225) 01C2 LATIN LETTER ALVEOLAR CLICK = double-barred pipe = palatoalveolar click (IPA) * Khoisan tradition x (not equal to - 2260) 01C3 LATIN LETTER RETROFLEX CLICK = latin letter exclamation mark (1.0) = (post)alveolar click (IPA) * Khoisan tradition * "q" in Zulu orthography x (exclamation mark - 0021) x (latin letter stretched c - 0297) @ Croatian digraphs matching Serbian Cyrillic letters 01C4 LATIN CAPITAL LETTER DZ WITH CARON # 0044 017D 01C5 LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON # 0044 017E 01C6 LATIN SMALL LETTER DZ WITH CARON x (cyrillic small letter dzhe - 045F) # 0064 017E 01C7 LATIN CAPITAL LETTER LJ # 004C 004A 01C8 LATIN CAPITAL LETTER L WITH SMALL LETTER J # 004C 006A 01C9 LATIN SMALL LETTER LJ x (cyrillic small letter lje - 0459) # 006C 006A 01CA LATIN CAPITAL LETTER NJ # 004E 004A 01CB LATIN CAPITAL LETTER N WITH SMALL LETTER J # 004E 006A 01CC LATIN SMALL LETTER NJ x (cyrillic small letter nje - 045A) # 006E 006A @ Pinyin diacritic-vowel combinations 01CD LATIN CAPITAL LETTER A WITH CARON : 0041 030C 01CE LATIN SMALL LETTER A WITH CARON * Pinyin third tone : 0061 030C 01CF LATIN CAPITAL LETTER I WITH CARON : 0049 030C 01D0 LATIN SMALL LETTER I WITH CARON * Pinyin third tone : 0069 030C 01D1 LATIN CAPITAL LETTER O WITH CARON : 004F 030C 01D2 LATIN SMALL LETTER O WITH CARON * Pinyin third tone : 006F 030C 01D3 LATIN CAPITAL LETTER U WITH CARON : 0055 030C 01D4 LATIN SMALL LETTER U WITH CARON * Pinyin third tone : 0075 030C 01D5 LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON : 00DC 0304 01D6 LATIN SMALL LETTER U WITH DIAERESIS AND MACRON * Pinyin first tone : 00FC 0304 01D7 LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE : 00DC 0301 01D8 LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE * Pinyin second tone : 00FC 0301 01D9 LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON : 00DC 030C 01DA LATIN SMALL LETTER U WITH DIAERESIS AND CARON * Pinyin third tone : 00FC 030C 01DB LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE : 00DC 0300 01DC LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE * Pinyin fourth tone : 00FC 0300 @ Phonetic and historic letters 01DD LATIN SMALL LETTER TURNED E * Pan-Nigerian alphabet * all other usages of schwa are 0259 * uppercase is 018E x (latin small letter schwa - 0259) 01DE LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON : 00C4 0304 01DF LATIN SMALL LETTER A WITH DIAERESIS AND MACRON * Livonian, Uralicist usage : 00E4 0304 01E0 LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON : 0226 0304 01E1 LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON * Uralicist usage : 0227 0304 01E2 LATIN CAPITAL LETTER AE WITH MACRON : 00C6 0304 01E3 LATIN SMALL LETTER AE WITH MACRON * Old Norse, Old English : 00E6 0304 01E4 LATIN CAPITAL LETTER G WITH STROKE 01E5 LATIN SMALL LETTER G WITH STROKE * Skolt Sami 01E6 LATIN CAPITAL LETTER G WITH CARON : 0047 030C 01E7 LATIN SMALL LETTER G WITH CARON * Skolt Sami x (latin small letter g with breve - 011F) : 0067 030C 01E8 LATIN CAPITAL LETTER K WITH CARON : 004B 030C 01E9 LATIN SMALL LETTER K WITH CARON * Skolt Sami : 006B 030C 01EA LATIN CAPITAL LETTER O WITH OGONEK : 004F 0328 01EB LATIN SMALL LETTER O WITH OGONEK * Sami, Iroquoian, Old Icelandic : 006F 0328 01EC LATIN CAPITAL LETTER O WITH OGONEK AND MACRON : 01EA 0304 01ED LATIN SMALL LETTER O WITH OGONEK AND MACRON * Old Icelandic : 01EB 0304 01EE LATIN CAPITAL LETTER EZH WITH CARON : 01B7 030C 01EF LATIN SMALL LETTER EZH WITH CARON * Skolt Sami : 0292 030C 01F0 LATIN SMALL LETTER J WITH CARON * IPA and many languages : 006A 030C 01F1 LATIN CAPITAL LETTER DZ # 0044 005A 01F2 LATIN CAPITAL LETTER D WITH SMALL LETTER Z # 0044 007A 01F3 LATIN SMALL LETTER DZ # 0064 007A 01F4 LATIN CAPITAL LETTER G WITH ACUTE : 0047 0301 01F5 LATIN SMALL LETTER G WITH ACUTE * Macedonian and Serbian transliteration : 0067 0301 01F6 LATIN CAPITAL LETTER HWAIR * lowercase is 0195 01F7 LATIN CAPITAL LETTER WYNN = wen * lowercase is 01BF 01F8 LATIN CAPITAL LETTER N WITH GRAVE : 004E 0300 01F9 LATIN SMALL LETTER N WITH GRAVE * Pinyin : 006E 0300 01FA LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE : 00C5 0301 01FB LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE : 00E5 0301 01FC LATIN CAPITAL LETTER AE WITH ACUTE : 00C6 0301 01FD LATIN SMALL LETTER AE WITH ACUTE : 00E6 0301 01FE LATIN CAPITAL LETTER O WITH STROKE AND ACUTE : 00D8 0301 01FF LATIN SMALL LETTER O WITH STROKE AND ACUTE : 00F8 0301 @ Additions for Slovenian and Croatian 0200 LATIN CAPITAL LETTER A WITH DOUBLE GRAVE : 0041 030F 0201 LATIN SMALL LETTER A WITH DOUBLE GRAVE : 0061 030F 0202 LATIN CAPITAL LETTER A WITH INVERTED BREVE : 0041 0311 0203 LATIN SMALL LETTER A WITH INVERTED BREVE : 0061 0311 0204 LATIN CAPITAL LETTER E WITH DOUBLE GRAVE : 0045 030F 0205 LATIN SMALL LETTER E WITH DOUBLE GRAVE : 0065 030F 0206 LATIN CAPITAL LETTER E WITH INVERTED BREVE : 0045 0311 0207 LATIN SMALL LETTER E WITH INVERTED BREVE : 0065 0311 0208 LATIN CAPITAL LETTER I WITH DOUBLE GRAVE : 0049 030F 0209 LATIN SMALL LETTER I WITH DOUBLE GRAVE : 0069 030F 020A LATIN CAPITAL LETTER I WITH INVERTED BREVE : 0049 0311 020B LATIN SMALL LETTER I WITH INVERTED BREVE : 0069 0311 020C LATIN CAPITAL LETTER O WITH DOUBLE GRAVE : 004F 030F 020D LATIN SMALL LETTER O WITH DOUBLE GRAVE : 006F 030F 020E LATIN CAPITAL LETTER O WITH INVERTED BREVE : 004F 0311 020F LATIN SMALL LETTER O WITH INVERTED BREVE : 006F 0311 0210 LATIN CAPITAL LETTER R WITH DOUBLE GRAVE : 0052 030F 0211 LATIN SMALL LETTER R WITH DOUBLE GRAVE : 0072 030F 0212 LATIN CAPITAL LETTER R WITH INVERTED BREVE : 0052 0311 0213 LATIN SMALL LETTER R WITH INVERTED BREVE : 0072 0311 0214 LATIN CAPITAL LETTER U WITH DOUBLE GRAVE : 0055 030F 0215 LATIN SMALL LETTER U WITH DOUBLE GRAVE : 0075 030F 0216 LATIN CAPITAL LETTER U WITH INVERTED BREVE : 0055 0311 0217 LATIN SMALL LETTER U WITH INVERTED BREVE : 0075 0311 @ Additions for Romanian 0218 LATIN CAPITAL LETTER S WITH COMMA BELOW : 0053 0326 0219 LATIN SMALL LETTER S WITH COMMA BELOW * Romanian x (latin small letter s with cedilla - 015F) : 0073 0326 021A LATIN CAPITAL LETTER T WITH COMMA BELOW : 0054 0326 021B LATIN SMALL LETTER T WITH COMMA BELOW * Romanian x (latin small letter t with cedilla - 0163) : 0074 0326 @ Miscellaneous additions 021C LATIN CAPITAL LETTER YOGH x (latin capital letter ezh - 01B7) 021D LATIN SMALL LETTER YOGH * Middle English, Scots x (latin small letter ezh - 0292) x (latin small letter insular g - 1D79) 021E LATIN CAPITAL LETTER H WITH CARON : 0048 030C 021F LATIN SMALL LETTER H WITH CARON * Finnish Romany : 0068 030C 0220 LATIN CAPITAL LETTER N WITH LONG RIGHT LEG * Lakota * lowercase is 019E 0221 LATIN SMALL LETTER D WITH CURL * phonetic use in Sinology 0222 LATIN CAPITAL LETTER OU 0223 LATIN SMALL LETTER OU * Algonquin, Huron x (digit eight - 0038) 0224 LATIN CAPITAL LETTER Z WITH HOOK 0225 LATIN SMALL LETTER Z WITH HOOK * Middle High German 0226 LATIN CAPITAL LETTER A WITH DOT ABOVE : 0041 0307 0227 LATIN SMALL LETTER A WITH DOT ABOVE * Uralicist usage : 0061 0307 0228 LATIN CAPITAL LETTER E WITH CEDILLA : 0045 0327 0229 LATIN SMALL LETTER E WITH CEDILLA : 0065 0327 @ Additions for Livonian 022A LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON : 00D6 0304 022B LATIN SMALL LETTER O WITH DIAERESIS AND MACRON : 00F6 0304 022C LATIN CAPITAL LETTER O WITH TILDE AND MACRON : 00D5 0304 022D LATIN SMALL LETTER O WITH TILDE AND MACRON : 00F5 0304 022E LATIN CAPITAL LETTER O WITH DOT ABOVE : 004F 0307 022F LATIN SMALL LETTER O WITH DOT ABOVE : 006F 0307 0230 LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON : 022E 0304 0231 LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON : 022F 0304 0232 LATIN CAPITAL LETTER Y WITH MACRON : 0059 0304 0233 LATIN SMALL LETTER Y WITH MACRON * also Cornish : 0079 0304 @ Additions for Sinology 0234 LATIN SMALL LETTER L WITH CURL 0235 LATIN SMALL LETTER N WITH CURL 0236 LATIN SMALL LETTER T WITH CURL @ Miscellaneous addition 0237 LATIN SMALL LETTER DOTLESS J x (mathematical italic small dotless j - 1D6A5) @ Additions for Africanist linguistics 0238 LATIN SMALL LETTER DB DIGRAPH 0239 LATIN SMALL LETTER QP DIGRAPH @ Additions for Sencoten 023A LATIN CAPITAL LETTER A WITH STROKE * lowercase is 2C65 023B LATIN CAPITAL LETTER C WITH STROKE 023C LATIN SMALL LETTER C WITH STROKE * also used in Americanist linguistics 023D LATIN CAPITAL LETTER L WITH BAR * lowercase is 019A 023E LATIN CAPITAL LETTER T WITH DIAGONAL STROKE * lowercase is 2C66 @ Additions for Africanist linguistics @+ These letters were used in a Shona orthography from 1931 to 1955. 023F LATIN SMALL LETTER S WITH SWASH TAIL * voiceless labio-alveolar fricative * uppercase is 2C7E x (latin small letter s with hook - 0282) 0240 LATIN SMALL LETTER Z WITH SWASH TAIL * voiced labio-alveolar fricative * uppercase is 2C7F x (latin small letter z with retroflex hook - 0290) @ Miscellaneous additions 0241 LATIN CAPITAL LETTER GLOTTAL STOP 0242 LATIN SMALL LETTER GLOTTAL STOP * casing use in Chipewyan, Dogrib, Slavey (Canadian aboriginal orthographies) x (latin letter glottal stop - 0294) x (modifier letter glottal stop - 02C0) 0243 LATIN CAPITAL LETTER B WITH STROKE * lowercase is 0180 0244 LATIN CAPITAL LETTER U BAR * lowercase is 0289 0245 LATIN CAPITAL LETTER TURNED V * lowercase is 028C 0246 LATIN CAPITAL LETTER E WITH STROKE 0247 LATIN SMALL LETTER E WITH STROKE 0248 LATIN CAPITAL LETTER J WITH STROKE 0249 LATIN SMALL LETTER J WITH STROKE 024A LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL 024B LATIN SMALL LETTER Q WITH HOOK TAIL 024C LATIN CAPITAL LETTER R WITH STROKE 024D LATIN SMALL LETTER R WITH STROKE 024E LATIN CAPITAL LETTER Y WITH STROKE 024F LATIN SMALL LETTER Y WITH STROKE @@ 0250 IPA Extensions 02AF @ IPA extensions @+ IPA includes basic Latin letters and a number of Latin or Greek letters from other blocks. x (latin small letter ae - 00E6) x (latin small letter c with cedilla - 00E7) x (latin small letter eth - 00F0) x (latin small letter o with stroke - 00F8) x (latin small letter h with stroke - 0127) x (latin small letter eng - 014B) x (latin small ligature oe - 0153) x (greek small letter beta - 03B2) x (greek small letter theta - 03B8) x (greek small letter lamda - 03BB) x (greek small letter chi - 03C7) 0250 LATIN SMALL LETTER TURNED A * low central unrounded vowel * uppercase is 2C6F 0251 LATIN SMALL LETTER ALPHA = latin small letter script a (1.0) * low back unrounded vowel * uppercase is 2C6D x (greek small letter alpha - 03B1) 0252 LATIN SMALL LETTER TURNED ALPHA * low back rounded vowel * uppercase is 2C70 x (latin small letter inverted alpha - AB64) 0253 LATIN SMALL LETTER B WITH HOOK * implosive bilabial stop * Pan-Nigerian alphabet * uppercase is 0181 0254 LATIN SMALL LETTER OPEN O * typographically a turned c * lower-mid back rounded vowel * in older Danish usage "0254:" means "that is" * uppercase is 0186 0255 LATIN SMALL LETTER C WITH CURL * voiceless alveolo-palatal laminal fricative * used in transcription of Mandarin Chinese * sound spelled with 015B in Polish 0256 LATIN SMALL LETTER D WITH TAIL = d retroflex hook * voiced retroflex stop * uppercase is 0189 0257 LATIN SMALL LETTER D WITH HOOK * implosive dental or alveolar stop * Ewe, Pan-Nigerian alphabet * uppercase is 018A 0258 LATIN SMALL LETTER REVERSED E * upper-mid central unrounded vowel 0259 LATIN SMALL LETTER SCHWA * mid-central unrounded vowel * uppercase is 018F * variant uppercase form 018E is associated with 01DD x (latin small letter turned e - 01DD) x (cyrillic small letter schwa - 04D9) 025A LATIN SMALL LETTER SCHWA WITH HOOK * rhotacized schwa 025B LATIN SMALL LETTER OPEN E = epsilon * lower-mid front unrounded vowel * uppercase is 0190 x (greek small letter epsilon - 03B5) 025C LATIN SMALL LETTER REVERSED OPEN E * lower-mid central unrounded vowel * uppercase is A7AB 025D LATIN SMALL LETTER REVERSED OPEN E WITH HOOK * rhotacized lower-mid central vowel 025E LATIN SMALL LETTER CLOSED REVERSED OPEN E = closed reversed epsilon * lower-mid central rounded vowel 025F LATIN SMALL LETTER DOTLESS J WITH STROKE * voiced palatal stop * typographically a turned f, but better thought of as a form of j * "gy" in Hungarian orthography * also archaic phonetic for palatoalveolar affricate 02A4 0260 LATIN SMALL LETTER G WITH HOOK * implosive velar stop * uppercase is 0193 0261 LATIN SMALL LETTER SCRIPT G * voiced velar stop * uppercase is A7AC x (latin small letter g - 0067) 0262 LATIN LETTER SMALL CAPITAL G * voiced uvular stop 0263 LATIN SMALL LETTER GAMMA * voiced velar fricative * uppercase is 0194 x (greek small letter gamma - 03B3) 0264 LATIN SMALL LETTER RAMS HORN = latin small letter baby gamma (1.0) * upper-mid back unrounded vowel 0265 LATIN SMALL LETTER TURNED H * voiced rounded palatal approximant * uppercase is A78D 0266 LATIN SMALL LETTER H WITH HOOK * breathy-voiced glottal fricative * uppercase is A7AA * uppercase in Nawdm is 0124 x (modifier letter small h with hook - 02B1) 0267 LATIN SMALL LETTER HENG WITH HOOK * voiceless coarticulated velar and palatoalveolar fricative * "sj" in some Swedish dialects 0268 LATIN SMALL LETTER I WITH STROKE = barred i, i bar * high central unrounded vowel * uppercase is 0197 @+ * ISO 6438 gives lowercase of 0197 as 026A, not 0268 0269 LATIN SMALL LETTER IOTA * semi-high front unrounded vowel @+ * obsoleted by IPA in 1989 * preferred use is 026A latin letter small capital i * uppercase is 0196 x (greek small letter iota - 03B9) 026A LATIN LETTER SMALL CAPITAL I * semi-high front unrounded vowel * preferred IPA alternate for 0269 * uppercase is A7AE 026B LATIN SMALL LETTER L WITH MIDDLE TILDE * velarized voiced alveolar lateral approximant * uppercase is 2C62 026C LATIN SMALL LETTER L WITH BELT * voiceless alveolar lateral fricative * uppercase is A7AD 026D LATIN SMALL LETTER L WITH RETROFLEX HOOK * voiced retroflex lateral 026E LATIN SMALL LETTER LEZH * voiced lateral fricative * "dhl" in Zulu orthography 026F LATIN SMALL LETTER TURNED M * high back unrounded vowel * uppercase is 019C 0270 LATIN SMALL LETTER TURNED M WITH LONG LEG * voiced velar approximant 0271 LATIN SMALL LETTER M WITH HOOK * voiced labiodental nasal * uppercase is 2C6E 0272 LATIN SMALL LETTER N WITH LEFT HOOK * voiced palatal nasal * uppercase is 019D 0273 LATIN SMALL LETTER N WITH RETROFLEX HOOK * voiced retroflex nasal 0274 LATIN LETTER SMALL CAPITAL N * voiced uvular nasal 0275 LATIN SMALL LETTER BARRED O = o bar * rounded mid-central vowel, i.e. rounded schwa * uppercase is 019F x (greek small letter theta - 03B8) x (cyrillic small letter fita - 0473) x (cyrillic small letter barred o - 04E9) 0276 LATIN LETTER SMALL CAPITAL OE * low front rounded vowel x (latin small ligature oe - 0153) 0277 LATIN SMALL LETTER CLOSED OMEGA * semi-high back rounded vowel @+ * obsoleted by IPA in 1989 * preferred use is 028A latin small letter upsilon x (greek letter small capital omega - AB65) 0278 LATIN SMALL LETTER PHI * voiceless bilabial fricative x (greek small letter phi - 03C6) 0279 LATIN SMALL LETTER TURNED R * voiced alveolar approximant x (modifier letter small turned r - 02B4) 027A LATIN SMALL LETTER TURNED R WITH LONG LEG * voiced lateral flap 027B LATIN SMALL LETTER TURNED R WITH HOOK * voiced retroflex approximant x (modifier letter small turned r with hook - 02B5) 027C LATIN SMALL LETTER R WITH LONG LEG * voiced strident apico-alveolar trill @+ * obsoleted by IPA in 1989 * sound spelled with 0159 in Czech * preferred phonetic representation for Czech is 0072 031D * in current use in Gaelic types (as glyph variant of 0072) 027D LATIN SMALL LETTER R WITH TAIL * voiced retroflex flap * uppercase is 2C64 027E LATIN SMALL LETTER R WITH FISHHOOK * voiced alveolar flap or tap 027F LATIN SMALL LETTER REVERSED R WITH FISHHOOK = long leg turned iota (a misnomer) * apical dental vowel * used by linguists working on Chinese and other Sino-Tibetan languages * IPA spelling - 007A 0329 * preferred presentation is with a descender 0280 LATIN LETTER SMALL CAPITAL R * voiced uvular trill * Germanic, Old Norse * uppercase is 01A6 0281 LATIN LETTER SMALL CAPITAL INVERTED R * voiced uvular fricative or approximant x (modifier letter small capital inverted r - 02B6) 0282 LATIN SMALL LETTER S WITH HOOK * voiceless retroflex fricative 0283 LATIN SMALL LETTER ESH * voiceless postalveolar fricative * uppercase is 01A9 x (integral - 222B) 0284 LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK * implosive palatal stop * typographically based on 025F, not on 0283 0285 LATIN SMALL LETTER SQUAT REVERSED ESH * apical retroflex vowel * used by linguists working on Chinese and other Sino-Tibetan languages * IPA spelling - 0290 0329 * in origin 027F plus the retroflex hook 0322, despite its name * preferred presentation is with a descender 0286 LATIN SMALL LETTER ESH WITH CURL * palatalized voiceless postalveolar fricative * suggested spelling - 0283 02B2 0287 LATIN SMALL LETTER TURNED T * dental click (sound of "tsk tsk") * uppercase is A7B1 x (latin letter dental click - 01C0) 0288 LATIN SMALL LETTER T WITH RETROFLEX HOOK * voiceless retroflex stop * uppercase is 01AE 0289 LATIN SMALL LETTER U BAR * high central rounded vowel * uppercase is 0244 028A LATIN SMALL LETTER UPSILON * semi-high back rounded vowel * preferred IPA alternate to 0277 * uppercase is 01B1 x (greek small letter upsilon - 03C5) 028B LATIN SMALL LETTER V WITH HOOK = latin small letter script v (1.0) * voiced labiodental approximant * uppercase is 01B2 x (greek small letter upsilon - 03C5) 028C LATIN SMALL LETTER TURNED V = caret, wedge * lower-mid back unrounded vowel * uppercase is 0245 x (greek capital letter lamda - 039B) x (caret - 2038) x (logical and - 2227) 028D LATIN SMALL LETTER TURNED W * voiceless rounded labiovelar approximant 028E LATIN SMALL LETTER TURNED Y * voiced lateral approximant 028F LATIN LETTER SMALL CAPITAL Y * semi-high front rounded vowel 0290 LATIN SMALL LETTER Z WITH RETROFLEX HOOK * voiced retroflex fricative 0291 LATIN SMALL LETTER Z WITH CURL * voiced alveolo-palatal laminal fricative * sound spelled with 017A in Polish 0292 LATIN SMALL LETTER EZH = dram * voiced postalveolar fricative * mistakenly named yogh in Unicode 1.0 * uppercase is 01B7 * Skolt Sami x (latin small letter yogh - 021D) x (cyrillic small letter abkhasian dze - 04E1) x (ounce sign - 2125) x (alchemical symbol for half dram - 1F772) 0293 LATIN SMALL LETTER EZH WITH CURL * palatalized voiced postalveolar fricative 0294 LATIN LETTER GLOTTAL STOP * this is a caseless letter * used in IPA, other phonetic notations, and those orthographies which use a caseless glottal stop x (latin capital letter glottal stop - 0241) x (modifier letter glottal stop - 02C0) 0295 LATIN LETTER PHARYNGEAL VOICED FRICATIVE = reversed glottal stop * voiced pharyngeal fricative * ain x (latin small letter ezh reversed - 01B9) x (modifier letter reversed glottal stop - 02C1) 0296 LATIN LETTER INVERTED GLOTTAL STOP * lateral click x (latin letter lateral click - 01C1) 0297 LATIN LETTER STRETCHED C * palatal (or alveolar) click x (latin letter retroflex click - 01C3) x (complement - 2201) 0298 LATIN LETTER BILABIAL CLICK = bullseye x (circled dot operator - 2299) 0299 LATIN LETTER SMALL CAPITAL B * bilabial trill 029A LATIN SMALL LETTER CLOSED OPEN E = closed epsilon * lower-mid front rounded vowel * non-IPA alternate for the preferred 0153 029B LATIN LETTER SMALL CAPITAL G WITH HOOK * voiced uvular implosive 029C LATIN LETTER SMALL CAPITAL H * voiceless epiglottal fricative 029D LATIN SMALL LETTER J WITH CROSSED-TAIL * voiced palatal fricative * uppercase is A7B2 029E LATIN SMALL LETTER TURNED K * proposed for velar click * uppercase is A7B0 @+ * withdrawn by IPA in 1970 029F LATIN LETTER SMALL CAPITAL L * velar lateral approximant 02A0 LATIN SMALL LETTER Q WITH HOOK * voiceless uvular implosive 02A1 LATIN LETTER GLOTTAL STOP WITH STROKE * voiced epiglottal stop 02A2 LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE * voiced epiglottal fricative 02A3 LATIN SMALL LETTER DZ DIGRAPH * voiced dental affricate 02A4 LATIN SMALL LETTER DEZH DIGRAPH * voiced postalveolar affricate 02A5 LATIN SMALL LETTER DZ DIGRAPH WITH CURL * voiced alveolo-palatal affricate 02A6 LATIN SMALL LETTER TS DIGRAPH * voiceless dental affricate 02A7 LATIN SMALL LETTER TESH DIGRAPH * voiceless postalveolar affricate 02A8 LATIN SMALL LETTER TC DIGRAPH WITH CURL * voiceless alveolo-palatal affricate @ IPA characters for disordered speech 02A9 LATIN SMALL LETTER FENG DIGRAPH * velopharyngeal fricative 02AA LATIN SMALL LETTER LS DIGRAPH * lateral alveolar fricative (lisp) 02AB LATIN SMALL LETTER LZ DIGRAPH * voiced lateral alveolar fricative 02AC LATIN LETTER BILABIAL PERCUSSIVE * audible lip smack 02AD LATIN LETTER BIDENTAL PERCUSSIVE * audible teeth gnashing @ Additions for Sinology 02AE LATIN SMALL LETTER TURNED H WITH FISHHOOK 02AF LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL @@ 02B0 Spacing Modifier Letters 02FF @ Latin superscript modifier letters x (superscript latin small letter i - 2071) x (superscript latin small letter n - 207F) 02B0 MODIFIER LETTER SMALL H * aspiration # 0068 02B1 MODIFIER LETTER SMALL H WITH HOOK * breathy voiced, murmured x (latin small letter h with hook - 0266) x (combining diaeresis below - 0324) # 0266 02B2 MODIFIER LETTER SMALL J * palatalization x (combining palatalized hook below - 0321) # 006A 02B3 MODIFIER LETTER SMALL R # 0072 02B4 MODIFIER LETTER SMALL TURNED R x (latin small letter turned r - 0279) # 0279 02B5 MODIFIER LETTER SMALL TURNED R WITH HOOK x (latin small letter turned r with hook - 027B) # 027B 02B6 MODIFIER LETTER SMALL CAPITAL INVERTED R * preceding four used for r-coloring or r-offglides x (latin letter small capital inverted r - 0281) # 0281 02B7 MODIFIER LETTER SMALL W * labialization x (combining inverted double arch below - 032B) # 0077 02B8 MODIFIER LETTER SMALL Y * palatalization * common Americanist usage for 02B2 # 0079 @ Miscellaneous phonetic modifiers 02B9 MODIFIER LETTER PRIME * primary stress, emphasis * transliteration of mjagkij znak (Cyrillic soft sign: palatalization) * transliteration of Hebrew geresh x (apostrophe - 0027) x (acute accent - 00B4) x (modifier letter acute accent - 02CA) x (combining acute accent - 0301) x (greek numeral sign - 0374) x (hebrew punctuation geresh - 05F3) x (prime - 2032) 02BA MODIFIER LETTER DOUBLE PRIME * exaggerated stress, contrastive stress * transliteration of tverdyj znak (Cyrillic hard sign: no palatalization) x (quotation mark - 0022) x (combining double acute accent - 030B) x (double prime - 2033) 02BB MODIFIER LETTER TURNED COMMA * typographical alternate for 02BD or 02BF * used in Hawai`ian orthography as `okina (glottal stop) x (combining turned comma above - 0312) x (nko low tone apostrophe - 07F5) x (left single quotation mark - 2018) 02BC MODIFIER LETTER APOSTROPHE = apostrophe * glottal stop, glottalization, ejective * many languages use this as a letter of their alphabets * used as a tone marker in Bodo, Dogri, and Maithili * 2019 is the preferred character for a punctuation apostrophe x (apostrophe - 0027) x (combining comma above - 0313) x (combining comma above right - 0315) x (armenian apostrophe - 055A) x (nko high tone apostrophe - 07F4) x (greek psili - 1FBF) x (right single quotation mark - 2019) 02BD MODIFIER LETTER REVERSED COMMA * weak aspiration x (combining reversed comma above - 0314) x (armenian modifier letter left half ring - 0559) x (greek dasia - 1FFE) x (single high-reversed-9 quotation mark - 201B) 02BE MODIFIER LETTER RIGHT HALF RING * transliteration of Arabic hamza (glottal stop) * transliteration of Hebrew alef x (armenian apostrophe - 055A) x (hebrew letter alef - 05D0) x (arabic letter hamza - 0621) 02BF MODIFIER LETTER LEFT HALF RING * transliteration of Arabic ain (voiced pharyngeal fricative) * transliteration of Hebrew ayin x (armenian modifier letter left half ring - 0559) x (hebrew letter ayin - 05E2) x (arabic letter ain - 0639) 02C0 MODIFIER LETTER GLOTTAL STOP * ejective or glottalized * typographical alternate for 02BC or 02BE x (latin letter glottal stop - 0294) x (combining hook above - 0309) 02C1 MODIFIER LETTER REVERSED GLOTTAL STOP * typographical alternate for 02BF x (latin letter pharyngeal voiced fricative - 0295) 02C2 MODIFIER LETTER LEFT ARROWHEAD * fronted articulation 02C3 MODIFIER LETTER RIGHT ARROWHEAD * backed articulation 02C4 MODIFIER LETTER UP ARROWHEAD * raised articulation x (circumflex accent - 005E) x (up arrowhead - 2303) 02C5 MODIFIER LETTER DOWN ARROWHEAD * lowered articulation 02C6 MODIFIER LETTER CIRCUMFLEX ACCENT * rising-falling tone, falling tone, secondary stress, etc. x (circumflex accent - 005E) x (combining circumflex accent - 0302) x (modifier letter low circumflex accent - A788) 02C7 CARON = hacek * falling-rising tone * Mandarin Chinese third tone x (combining caron - 030C) 02C8 MODIFIER LETTER VERTICAL LINE * primary stress, downstep * precedes letter or syllable modified x (apostrophe - 0027) x (combining vertical line above - 030D) 02C9 MODIFIER LETTER MACRON * high level tone * precedes or follows letter or syllable modified * Mandarin Chinese first tone x (macron - 00AF) x (combining macron - 0304) 02CA MODIFIER LETTER ACUTE ACCENT * high-rising tone (IPA), high tone, primary stress * Mandarin Chinese second tone x (acute accent - 00B4) x (modifier letter prime - 02B9) x (combining acute accent - 0301) x (greek numeral sign - 0374) x (armenian emphasis mark - 055B) 02CB MODIFIER LETTER GRAVE ACCENT * high-falling tone (IPA), low tone, secondary or tertiary stress * Mandarin Chinese fourth tone x (grave accent - 0060) x (combining grave accent - 0300) x (armenian comma - 055D) 02CC MODIFIER LETTER LOW VERTICAL LINE * secondary stress * precedes letter or syllable modified x (combining vertical line below - 0329) 02CD MODIFIER LETTER LOW MACRON * low level tone x (low line - 005F) x (combining macron below - 0331) 02CE MODIFIER LETTER LOW GRAVE ACCENT * low-falling tone 02CF MODIFIER LETTER LOW ACUTE ACCENT * low-rising tone x (greek lower numeral sign - 0375) 02D0 MODIFIER LETTER TRIANGULAR COLON * length mark x (colon - 003A) 02D1 MODIFIER LETTER HALF TRIANGULAR COLON * half-length mark x (middle dot - 00B7) 02D2 MODIFIER LETTER CENTRED RIGHT HALF RING * more rounded articulation 02D3 MODIFIER LETTER CENTRED LEFT HALF RING * less rounded articulation 02D4 MODIFIER LETTER UP TACK * vowel raising or closing x (combining up tack below - 031D) x (combining dot below - 0323) 02D5 MODIFIER LETTER DOWN TACK * vowel lowering or opening x (combining left half ring below - 031C) x (combining down tack below - 031E) 02D6 MODIFIER LETTER PLUS SIGN * advanced or fronted articulation x (combining plus sign below - 031F) 02D7 MODIFIER LETTER MINUS SIGN * retracted or backed articulation * glyph may have small end-serifs x (combining minus sign below - 0320) x (minus sign - 2212) @ Spacing clones of diacritics 02D8 BREVE x (combining breve - 0306) # 0020 0306 02D9 DOT ABOVE * Mandarin Chinese fifth tone (light or neutral) x (combining dot above - 0307) # 0020 0307 02DA RING ABOVE x (degree sign - 00B0) x (combining ring above - 030A) # 0020 030A 02DB OGONEK x (combining ogonek - 0328) # 0020 0328 02DC SMALL TILDE x (tilde - 007E) x (combining tilde - 0303) x (tilde operator - 223C) # 0020 0303 02DD DOUBLE ACUTE ACCENT x (combining double acute accent - 030B) # 0020 030B @ Additions based on 1989 IPA 02DE MODIFIER LETTER RHOTIC HOOK * rhotacization in vowel * often ligated: 025A = 0259 + 02DE; 025D = 025C + 02DE 02DF MODIFIER LETTER CROSS ACCENT * Swedish grave accent 02E0 MODIFIER LETTER SMALL GAMMA * these modifier letters are occasionally used in transcription of affricates # 0263 02E1 MODIFIER LETTER SMALL L # 006C 02E2 MODIFIER LETTER SMALL S # 0073 02E3 MODIFIER LETTER SMALL X # 0078 02E4 MODIFIER LETTER SMALL REVERSED GLOTTAL STOP # 0295 @ Tone letters 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 @ Extended Bopomofo tone marks 02EA MODIFIER LETTER YIN DEPARTING TONE MARK 02EB MODIFIER LETTER YANG DEPARTING TONE MARK @ IPA modifiers 02EC MODIFIER LETTER VOICING 02ED MODIFIER LETTER UNASPIRATED @ Other modifier letter 02EE MODIFIER LETTER DOUBLE APOSTROPHE * Nenets @ UPA modifiers 02EF MODIFIER LETTER LOW DOWN ARROWHEAD 02F0 MODIFIER LETTER LOW UP ARROWHEAD 02F1 MODIFIER LETTER LOW LEFT ARROWHEAD 02F2 MODIFIER LETTER LOW RIGHT ARROWHEAD 02F3 MODIFIER LETTER LOW RING 02F4 MODIFIER LETTER MIDDLE GRAVE ACCENT 02F5 MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT 02F6 MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT 02F7 MODIFIER LETTER LOW TILDE 02F8 MODIFIER LETTER RAISED COLON 02F9 MODIFIER LETTER BEGIN HIGH TONE 02FA MODIFIER LETTER END HIGH TONE 02FB MODIFIER LETTER BEGIN LOW TONE 02FC MODIFIER LETTER END LOW TONE 02FD MODIFIER LETTER SHELF 02FE MODIFIER LETTER OPEN SHELF 02FF MODIFIER LETTER LOW LEFT ARROW @@ 0300 Combining Diacritical Marks 036F @@+ @ Ordinary diacritics 0300 COMBINING GRAVE ACCENT = Greek varia x (grave accent - 0060) x (modifier letter grave accent - 02CB) 0301 COMBINING ACUTE ACCENT = stress mark = Greek oxia, tonos x (apostrophe - 0027) x (acute accent - 00B4) x (modifier letter prime - 02B9) x (modifier letter acute accent - 02CA) x (greek tonos - 0384) 0302 COMBINING CIRCUMFLEX ACCENT = hat x (circumflex accent - 005E) x (modifier letter circumflex accent - 02C6) 0303 COMBINING TILDE * IPA: nasalization * Vietnamese tone mark x (tilde - 007E) x (small tilde - 02DC) 0304 COMBINING MACRON = long * distinguish from the following x (macron - 00AF) x (modifier letter macron - 02C9) 0305 COMBINING OVERLINE = overscore, vinculum * connects on left and right x (macron - 00AF) 0306 COMBINING BREVE = short = Greek vrachy x (breve - 02D8) x (combining cyrillic kavyka - A67C) 0307 COMBINING DOT ABOVE = derivative (Newtonian notation) @+ * IPA (withdrawn in 1976): palatalization x (dot above - 02D9) 0308 COMBINING DIAERESIS = double dot above, umlaut = Greek dialytika = double derivative x (diaeresis - 00A8) 0309 COMBINING HOOK ABOVE = hoi * kerns left or right of circumflex over vowels * Vietnamese tone mark x (modifier letter glottal stop - 02C0) 030A COMBINING RING ABOVE x (degree sign - 00B0) x (ring above - 02DA) 030B COMBINING DOUBLE ACUTE ACCENT * Hungarian, Chuvash x (quotation mark - 0022) x (modifier letter double prime - 02BA) x (double acute accent - 02DD) 030C COMBINING CARON = hacek, V above x (caron - 02C7) 030D COMBINING VERTICAL LINE ABOVE * this is not the Greek tonos * Marshallese x (modifier letter vertical line - 02C8) 030E COMBINING DOUBLE VERTICAL LINE ABOVE * Marshallese x (quotation mark - 0022) 030F COMBINING DOUBLE GRAVE ACCENT * Serbian and Croatian phonetics 0310 COMBINING CANDRABINDU x (devanagari sign candrabindu - 0901) 0311 COMBINING INVERTED BREVE x (combining cyrillic palatalization - 0484) x (combining cyrillic pokrytie - 0487) 0312 COMBINING TURNED COMMA ABOVE = cedilla above * Latvian (but not used in decomposition) x (modifier letter turned comma - 02BB) 0313 COMBINING COMMA ABOVE = Greek psili, smooth breathing mark * Americanist: ejective or glottalization x (modifier letter apostrophe - 02BC) x (combining cyrillic psili pneumata - 0486) x (armenian apostrophe - 055A) 0314 COMBINING REVERSED COMMA ABOVE = Greek dasia, rough breathing mark x (modifier letter reversed comma - 02BD) x (combining cyrillic dasia pneumata - 0485) x (armenian modifier letter left half ring - 0559) 0315 COMBINING COMMA ABOVE RIGHT x (modifier letter apostrophe - 02BC) 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 * IPA: unreleased stop 031B COMBINING HORN * Vietnamese 031C COMBINING LEFT HALF RING BELOW * IPA: open variety of vowel x (modifier letter down tack - 02D5) 031D COMBINING UP TACK BELOW * IPA: vowel raising or closing x (modifier letter up tack - 02D4) 031E COMBINING DOWN TACK BELOW * IPA: vowel lowering or opening x (modifier letter down tack - 02D5) 031F COMBINING PLUS SIGN BELOW * IPA: advanced or fronted articulation x (modifier letter plus sign - 02D6) 0320 COMBINING MINUS SIGN BELOW * IPA: retracted or backed articulation * glyph may have small end-serifs x (modifier letter minus sign - 02D7) 0321 COMBINING PALATALIZED HOOK BELOW * IPA: palatalization x (modifier letter small j - 02B2) 0322 COMBINING RETROFLEX HOOK BELOW * IPA: retroflexion 0323 COMBINING DOT BELOW = nang * IPA: closer variety of vowel * Americanist and Indo-Europeanist: retraction or retroflexion * Semiticist: velarization or pharyngealization * Vietnamese tone mark x (modifier letter up tack - 02D4) 0324 COMBINING DIAERESIS BELOW * IPA: breathy-voice or murmur x (modifier letter small h with hook - 02B1) 0325 COMBINING RING BELOW * IPA: voiceless * vocalic (in Latin transliteration of Indic sonorants) * Madurese 0326 COMBINING COMMA BELOW * Romanian, Latvian, Livonian 0327 COMBINING CEDILLA * French, Turkish, Azerbaijani x (cedilla - 00B8) 0328 COMBINING OGONEK = nasal hook * Americanist: nasalization * Polish, Lithuanian x (ogonek - 02DB) x (combining open mark below - 1AB7) 0329 COMBINING VERTICAL LINE BELOW * IPA: syllabic * Yoruba * German dialectology * may attach or not; shape may vary by local preferences x (modifier letter low vertical line - 02CC) 032A COMBINING BRIDGE BELOW * IPA: dental 032B COMBINING INVERTED DOUBLE ARCH BELOW * IPA: labialization x (modifier letter small w - 02B7) 032C COMBINING CARON BELOW * IPA: voiced 032D COMBINING CIRCUMFLEX ACCENT BELOW * Americanist: fronted articulation 032E COMBINING BREVE BELOW * Hittite transcription 032F COMBINING INVERTED BREVE BELOW * Americanist: fronted articulation (variant of 032D) * Indo-Europeanist: semivowel 0330 COMBINING TILDE BELOW * IPA: creaky voice 0331 COMBINING MACRON BELOW x (low line - 005F) x (modifier letter low macron - 02CD) 0332 COMBINING LOW LINE = underline, underscore * connects on left and right x (low line - 005F) 0333 COMBINING DOUBLE LOW LINE = double underline, double underscore * connects on left and right x (combining equals sign below - 0347) x (double low line - 2017) @ Overstruck diacritics 0334 COMBINING TILDE OVERLAY * IPA: velarization or pharyngealization 0335 COMBINING SHORT STROKE OVERLAY 0336 COMBINING LONG STROKE OVERLAY 0337 COMBINING SHORT SOLIDUS OVERLAY = short slash overlay 0338 COMBINING LONG SOLIDUS OVERLAY = long slash overlay @ Additions 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 = yerik * used for Cyrillic yerik, indicates an omitted jer * this is not a palatalization mark x (combining cyrillic palatalization - 0484) x (vertical tilde - 2E2F) x (combining cyrillic payerok - A67D) 033F COMBINING DOUBLE OVERLINE @ Vietnamese tone marks @+ Vietnamese-specific accent placement should be handled instead by specialized rendering of 0300 and 0301. Use of 0340 and 0341 is discouraged. 0340 COMBINING GRAVE TONE MARK : 0300 combining grave accent 0341 COMBINING ACUTE TONE MARK : 0301 combining acute accent @ Additions for Greek 0342 COMBINING GREEK PERISPOMENI * Greek-specific form of circumflex for rising-falling accent * alternative glyph is similar to an inverted breve x (combining tilde - 0303) x (combining inverted breve - 0311) 0343 COMBINING GREEK KORONIS : 0313 combining comma above 0344 COMBINING GREEK DIALYTIKA TONOS * use of this character is discouraged : 0308 0301 0345 COMBINING GREEK YPOGEGRAMMENI = greek non-spacing iota below (1.0) = iota subscript * note special casing issues x (greek ypogegrammeni - 037A) x (greek capital letter iota - 0399) @ Additions for IPA 0346 COMBINING BRIDGE ABOVE * IPA: dentolabial x (combining wide bridge above - 20E9) 0347 COMBINING EQUALS SIGN BELOW * IPA: alveolar 0348 COMBINING DOUBLE VERTICAL LINE BELOW * IPA: strong articulation 0349 COMBINING LEFT ANGLE BELOW * IPA: weak articulation 034A COMBINING NOT TILDE ABOVE * IPA: denasal @ IPA diacritics for disordered speech 034B COMBINING HOMOTHETIC ABOVE * IPA: nasal escape 034C COMBINING ALMOST EQUAL TO ABOVE * IPA: velopharyngeal friction 034D COMBINING LEFT RIGHT ARROW BELOW * IPA: labial spreading 034E COMBINING UPWARDS ARROW BELOW * IPA: whistled articulation @ Grapheme joiner 034F COMBINING GRAPHEME JOINER * commonly abbreviated as CGJ * has no visible glyph * the name of this character is misleading; it does not actually join graphemes @ Additions for the Uralic Phonetic Alphabet 0350 COMBINING RIGHT ARROWHEAD ABOVE 0351 COMBINING LEFT HALF RING ABOVE 0352 COMBINING FERMATA 0353 COMBINING X BELOW 0354 COMBINING LEFT ARROWHEAD BELOW 0355 COMBINING RIGHT ARROWHEAD BELOW 0356 COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW 0357 COMBINING RIGHT HALF RING ABOVE @ Miscellaneous additions 0358 COMBINING DOT ABOVE RIGHT * Latin transliterations of the Southern Min dialects of Chinese 0359 COMBINING ASTERISK BELOW x (low asterisk - 204E) 035A COMBINING DOUBLE RING BELOW * Kharoshthi transliteration 035B COMBINING ZIGZAG ABOVE * Latin abbreviation, Lithuanian phonetics and mediaevalist transcriptions @ Double diacritics 035C COMBINING DOUBLE BREVE BELOW = ligature tie below, papyrological hyphen * a common glyph alternate connects the horizontal midpoints of the characters x (combining double breve - 035D) x (combining double inverted breve - 0361) x (combining ligature left half below - FE27) 035D COMBINING DOUBLE BREVE 035E COMBINING DOUBLE MACRON 035F COMBINING DOUBLE MACRON BELOW 0360 COMBINING DOUBLE TILDE 0361 COMBINING DOUBLE INVERTED BREVE = ligature tie x (combining ligature left half - FE20) 0362 COMBINING DOUBLE RIGHTWARDS ARROW BELOW * IPA: sliding articulation @ Medieval superscript letter diacritics @+ These are letter diacritics written directly above other letters. They appear primarily in medieval Germanic manuscripts, but saw some usage as late as the 19th century in some languages. 0363 COMBINING LATIN SMALL LETTER A 0364 COMBINING LATIN SMALL LETTER E 0365 COMBINING LATIN SMALL LETTER I 0366 COMBINING LATIN SMALL LETTER O 0367 COMBINING LATIN SMALL LETTER U 0368 COMBINING LATIN SMALL LETTER C 0369 COMBINING LATIN SMALL LETTER D 036A COMBINING LATIN SMALL LETTER H 036B COMBINING LATIN SMALL LETTER M 036C COMBINING LATIN SMALL LETTER R 036D COMBINING LATIN SMALL LETTER T 036E COMBINING LATIN SMALL LETTER V 036F COMBINING LATIN SMALL LETTER X @@ 0370 Greek and Coptic 03FF @+ Casing relationships between Greek letters are complex and not self-evident from inspection of the charts. See the core specification for details. @ Archaic letters 0370 GREEK CAPITAL LETTER HETA x (latin capital letter half h - 2C75) 0371 GREEK SMALL LETTER HETA x (latin small letter half h - 2C76) 0372 GREEK CAPITAL LETTER ARCHAIC SAMPI 0373 GREEK SMALL LETTER ARCHAIC SAMPI @ Numeral signs 0374 GREEK NUMERAL SIGN = dexia keraia * indicates numeric use of letters x (modifier letter acute accent - 02CA) : 02B9 modifier letter prime 0375 GREEK LOWER NUMERAL SIGN = aristeri keraia * indicates numeric use of letters x (modifier letter low acute accent - 02CF) @ Archaic letters 0376 GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA 0377 GREEK SMALL LETTER PAMPHYLIAN DIGAMMA @ Iota subscript 037A GREEK YPOGEGRAMMENI = iota subscript x (combining greek ypogegrammeni - 0345) # 0020 0345 @ Lowercase of editorial symbols 037B GREEK SMALL REVERSED LUNATE SIGMA SYMBOL 037C GREEK SMALL DOTTED LUNATE SIGMA SYMBOL 037D GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL @ Punctuation 037E GREEK QUESTION MARK = erotimatiko * sentence-final punctuation * 003B is the preferred character x (question mark - 003F) : 003B semicolon @ Additional letter 037F GREEK CAPITAL LETTER YOT * lowercase is 03F3 @ Spacing accent marks 0384 GREEK TONOS x (acute accent - 00B4) x (combining vertical line above - 030D) # 0020 0301 0385 GREEK DIALYTIKA TONOS * compatibility decomposition (NFKD) is 0020 0308 0301 : 00A8 0301 @ Letter 0386 GREEK CAPITAL LETTER ALPHA WITH TONOS : 0391 0301 @ Punctuation 0387 GREEK ANO TELEIA * functions in Greek like a semicolon * 00B7 is the preferred character : 00B7 middle dot @ Letters 0388 GREEK CAPITAL LETTER EPSILON WITH TONOS : 0395 0301 0389 GREEK CAPITAL LETTER ETA WITH TONOS : 0397 0301 038A GREEK CAPITAL LETTER IOTA WITH TONOS : 0399 0301 038C GREEK CAPITAL LETTER OMICRON WITH TONOS : 039F 0301 038E GREEK CAPITAL LETTER UPSILON WITH TONOS : 03A5 0301 038F GREEK CAPITAL LETTER OMEGA WITH TONOS : 03A9 0301 0390 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS : 03CA 0301 0391 GREEK CAPITAL LETTER ALPHA 0392 GREEK CAPITAL LETTER BETA 0393 GREEK CAPITAL LETTER GAMMA = gamma function x (double-struck capital gamma - 213E) 0394 GREEK CAPITAL LETTER DELTA x (increment - 2206) 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 = iota adscript 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 x (double-struck capital pi - 213F) x (n-ary product - 220F) 03A1 GREEK CAPITAL LETTER RHO 03A3 GREEK CAPITAL LETTER SIGMA x (latin capital letter esh - 01A9) x (n-ary summation - 2211) 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 x (ohm sign - 2126) x (inverted ohm sign - 2127) 03AA GREEK CAPITAL LETTER IOTA WITH DIALYTIKA : 0399 0308 03AB GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA : 03A5 0308 03AC GREEK SMALL LETTER ALPHA WITH TONOS : 03B1 0301 03AD GREEK SMALL LETTER EPSILON WITH TONOS : 03B5 0301 03AE GREEK SMALL LETTER ETA WITH TONOS : 03B7 0301 03AF GREEK SMALL LETTER IOTA WITH TONOS : 03B9 0301 03B0 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS : 03CB 0301 03B1 GREEK SMALL LETTER ALPHA x (latin small letter alpha - 0251) x (proportional to - 221D) 03B2 GREEK SMALL LETTER BETA x (latin small letter sharp s - 00DF) x (latin small letter b with stroke - 0180) x (latin small letter beta - A7B5) 03B3 GREEK SMALL LETTER GAMMA x (latin small letter gamma - 0263) x (double-struck small gamma - 213D) 03B4 GREEK SMALL LETTER DELTA 03B5 GREEK SMALL LETTER EPSILON x (latin small letter open e - 025B) 03B6 GREEK SMALL LETTER ZETA 03B7 GREEK SMALL LETTER ETA 03B8 GREEK SMALL LETTER THETA x (latin small letter barred o - 0275) x (cyrillic small letter fita - 0473) 03B9 GREEK SMALL LETTER IOTA x (latin small letter iota - 0269) x (turned greek small letter iota - 2129) 03BA GREEK SMALL LETTER KAPPA 03BB GREEK SMALL LETTER LAMDA = lambda 03BC GREEK SMALL LETTER MU x (micro sign - 00B5) 03BD GREEK SMALL LETTER NU 03BE GREEK SMALL LETTER XI 03BF GREEK SMALL LETTER OMICRON 03C0 GREEK SMALL LETTER PI * math constant 3.141592... 03C1 GREEK SMALL LETTER RHO 03C2 GREEK SMALL LETTER FINAL SIGMA = stigma (the Modern Greek name for this letterform) * not to be confused with the actual stigma letter x (greek small letter stigma - 03DB) 03C3 GREEK SMALL LETTER SIGMA * used symbolically with a numeric value 200 03C4 GREEK SMALL LETTER TAU 03C5 GREEK SMALL LETTER UPSILON x (latin small letter upsilon - 028A) x (latin small letter v with hook - 028B) 03C6 GREEK SMALL LETTER PHI x (latin small letter phi - 0278) x (greek phi symbol - 03D5) * the ordinary Greek letter, showing considerable glyph variation * in mathematical contexts, the loopy glyph is preferred, to contrast with 03D5 03C7 GREEK SMALL LETTER CHI x (latin small letter chi - AB53) 03C8 GREEK SMALL LETTER PSI 03C9 GREEK SMALL LETTER OMEGA x (latin small letter omega - A7B7) 03CA GREEK SMALL LETTER IOTA WITH DIALYTIKA : 03B9 0308 03CB GREEK SMALL LETTER UPSILON WITH DIALYTIKA : 03C5 0308 03CC GREEK SMALL LETTER OMICRON WITH TONOS : 03BF 0301 03CD GREEK SMALL LETTER UPSILON WITH TONOS : 03C5 0301 03CE GREEK SMALL LETTER OMEGA WITH TONOS : 03C9 0301 @ Variant letterforms 03CF GREEK CAPITAL KAI SYMBOL x (greek kai symbol - 03D7) 03D0 GREEK BETA SYMBOL = curled beta # 03B2 greek small letter beta 03D1 GREEK THETA SYMBOL = script theta * used as a technical symbol # 03B8 greek small letter theta 03D2 GREEK UPSILON WITH HOOK SYMBOL # 03A5 greek capital letter upsilon 03D3 GREEK UPSILON WITH ACUTE AND HOOK SYMBOL : 03D2 0301 03D4 GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL : 03D2 0308 03D5 GREEK PHI SYMBOL * used as a technical symbol, with a stroked glyph * maps to "phi1" symbol entities # 03C6 greek small letter phi 03D6 GREEK PI SYMBOL = omega pi * used as a technical symbol * a variant of pi, looking like omega # 03C0 greek small letter pi 03D7 GREEK KAI SYMBOL * used as an ampersand x (coptic symbol kai - 2CE4) @ Archaic letters 03D8 GREEK LETTER ARCHAIC KOPPA 03D9 GREEK SMALL LETTER ARCHAIC KOPPA * the Q-shaped archaic koppas are the ordinary alphabetic letters and can also be used as symbols with a numeric value of 90 in classical and pre-classical texts 03DA GREEK LETTER STIGMA * apparently in origin a cursive form of digamma * the name "stigma" originally applied to a medieval sigma-tau ligature, whose shape was confusably similar to the cursive digamma * used as a symbol with a numeric value of 6 x (roman numeral six late form - 2185) 03DB GREEK SMALL LETTER STIGMA x (greek small letter final sigma - 03C2) 03DC GREEK LETTER DIGAMMA 03DD GREEK SMALL LETTER DIGAMMA * used as a symbol with a numeric value of 6 03DE GREEK LETTER KOPPA 03DF GREEK SMALL LETTER KOPPA * used in modern Greek as a symbol with a numeric value of 90, as in the dating of legal documentation 03E0 GREEK LETTER SAMPI 03E1 GREEK SMALL LETTER SAMPI * used as a symbol with a numeric value of 900 @ Coptic letters derived from Demotic @+ For other Coptic letters see the Coptic Block. 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 @ Variant letterforms 03F0 GREEK KAPPA SYMBOL = script kappa * used as technical symbol # 03BA greek small letter kappa 03F1 GREEK RHO SYMBOL = tailed rho * used as technical symbol # 03C1 greek small letter rho 03F2 GREEK LUNATE SIGMA SYMBOL = greek small letter lunate sigma (1.0) # 03C2 greek small letter final sigma @ Additional letter 03F3 GREEK LETTER YOT * uppercase is 037F @ Variant letterforms and symbols 03F4 GREEK CAPITAL THETA SYMBOL x (cyrillic capital letter fita - 0472) # 0398 greek capital letter theta 03F5 GREEK LUNATE EPSILON SYMBOL = straight epsilon x (small element of - 220A) # 03B5 greek small letter epsilon 03F6 GREEK REVERSED LUNATE EPSILON SYMBOL = reversed straight epsilon x (small contains as member - 220D) @ Additional archaic letters for Bactrian 03F7 GREEK CAPITAL LETTER SHO 03F8 GREEK SMALL LETTER SHO @ Variant letterform 03F9 GREEK CAPITAL LUNATE SIGMA SYMBOL # 03A3 greek capital letter sigma @ Archaic letters 03FA GREEK CAPITAL LETTER SAN 03FB GREEK SMALL LETTER SAN @ Symbol 03FC GREEK RHO WITH STROKE SYMBOL * used with abbreviations containing 03C1 @ Editorial symbols 03FD GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL = antisigma 03FE GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL = sigma periestigmenon 03FF GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL = antisigma periestigmenon @@ 0400 Cyrillic 04FF @ Cyrillic extensions 0400 CYRILLIC CAPITAL LETTER IE WITH GRAVE : 0415 0300 0401 CYRILLIC CAPITAL LETTER IO : 0415 0308 0402 CYRILLIC CAPITAL LETTER DJE 0403 CYRILLIC CAPITAL LETTER GJE : 0413 0301 0404 CYRILLIC CAPITAL LETTER UKRAINIAN IE 0405 CYRILLIC CAPITAL LETTER DZE 0406 CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I x (latin capital letter i - 0049) x (cyrillic small letter byelorussian-ukrainian i - 0456) x (cyrillic letter palochka - 04C0) 0407 CYRILLIC CAPITAL LETTER YI : 0406 0308 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 : 041A 0301 040D CYRILLIC CAPITAL LETTER I WITH GRAVE : 0418 0300 040E CYRILLIC CAPITAL LETTER SHORT U : 0423 0306 040F CYRILLIC CAPITAL LETTER DZHE @ Basic Russian alphabet 0410 CYRILLIC CAPITAL LETTER A 0411 CYRILLIC CAPITAL LETTER BE x (latin small letter b with topbar - 0183) 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 : 0418 0306 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 x (cyrillic capital letter uk - 0478) x (cyrillic small letter straight u - 04AF) x (cyrillic capital letter monograph uk - A64A) 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 : 0438 0306 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 x (cyrillic small letter yeru with back yer - A651) 044C CYRILLIC SMALL LETTER SOFT SIGN x (latin small letter tone six - 0185) x (cyrillic small letter neutral yer - A64F) 044D CYRILLIC SMALL LETTER E 044E CYRILLIC SMALL LETTER YU x (cyrillic small letter reversed yu - A655) 044F CYRILLIC SMALL LETTER YA @ Cyrillic extensions 0450 CYRILLIC SMALL LETTER IE WITH GRAVE * Macedonian : 0435 0300 0451 CYRILLIC SMALL LETTER IO * Russian, ... : 0435 0308 0452 CYRILLIC SMALL LETTER DJE * Serbian x (latin small letter d with stroke - 0111) 0453 CYRILLIC SMALL LETTER GJE * Macedonian : 0433 0301 0454 CYRILLIC SMALL LETTER UKRAINIAN IE = Old Cyrillic yest 0455 CYRILLIC SMALL LETTER DZE * Macedonian x (cyrillic small letter dzelo - A643) 0456 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I = Old Cyrillic i 0457 CYRILLIC SMALL LETTER YI * Ukrainian : 0456 0308 0458 CYRILLIC SMALL LETTER JE * Serbian, Azerbaijani, Altay 0459 CYRILLIC SMALL LETTER LJE * Serbian, Macedonian x (latin small letter lj - 01C9) 045A CYRILLIC SMALL LETTER NJE * Serbian, Macedonian x (latin small letter nj - 01CC) 045B CYRILLIC SMALL LETTER TSHE * Serbian x (latin small letter c with acute - 0107) x (latin small letter h with stroke - 0127) x (cyrillic capital letter tshe - 040B) x (planck constant over two pi - 210F) x (cyrillic small letter djerv - A649) 045C CYRILLIC SMALL LETTER KJE * Macedonian : 043A 0301 045D CYRILLIC SMALL LETTER I WITH GRAVE * Macedonian, Bulgarian : 0438 0300 045E CYRILLIC SMALL LETTER SHORT U * Byelorussian, Uzbek : 0443 0306 045F CYRILLIC SMALL LETTER DZHE * Serbian, Macedonian, Abkhasian x (latin small letter dz with caron - 01C6) @ Historic letters 0460 CYRILLIC CAPITAL LETTER OMEGA 0461 CYRILLIC SMALL LETTER OMEGA x (cyrillic small letter broad omega - A64D) 0462 CYRILLIC CAPITAL LETTER YAT 0463 CYRILLIC SMALL LETTER YAT x (cyrillic small letter iotified yat - A653) x (latin small letter sakha yat - AB60) 0464 CYRILLIC CAPITAL LETTER IOTIFIED E 0465 CYRILLIC SMALL LETTER IOTIFIED E x (latin small letter iotified e - AB61) 0466 CYRILLIC CAPITAL LETTER LITTLE YUS 0467 CYRILLIC SMALL LETTER LITTLE YUS x (cyrillic small letter closed little yus - A659) x (cyrillic small letter blended yus - A65B) 0468 CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS 0469 CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS x (cyrillic small letter ya - 044F) x (cyrillic small letter iotified closed little yus - A65D) 046A CYRILLIC CAPITAL LETTER BIG YUS 046B CYRILLIC SMALL LETTER BIG YUS x (cyrillic small letter blended yus - A65B) 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 x (latin small letter barred o - 0275) x (greek small letter theta - 03B8) 0474 CYRILLIC CAPITAL LETTER IZHITSA 0475 CYRILLIC SMALL LETTER IZHITSA 0476 CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT : 0474 030F 0477 CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT : 0475 030F @ Historic digraphs @+ These characters may be rendered as either digraph or monograph forms, with preferred alternative representations. 0478 CYRILLIC CAPITAL LETTER UK * for "digraph onik" the preferred spelling is 041E 0443 * for "monograph uk" the preferred character is A64A x (cyrillic capital letter u - 0423) 0479 CYRILLIC SMALL LETTER UK * for "digraph onik" the preferred spelling is 043E 0443 * for "monograph uk" the preferred character is A64B @ Historic letters 047A CYRILLIC CAPITAL LETTER ROUND OMEGA 047B CYRILLIC SMALL LETTER ROUND OMEGA 047C CYRILLIC CAPITAL LETTER OMEGA WITH TITLO = Cyrillic "beautiful omega" * despite its name, this character does not have a titlo, nor is it composed of an omega plus a diacritic x (cyrillic capital letter broad omega - A64C) 047D CYRILLIC SMALL LETTER OMEGA WITH TITLO x (greek small letter omega with psili and perispomeni - 1F66) 047E CYRILLIC CAPITAL LETTER OT 047F CYRILLIC SMALL LETTER OT 0480 CYRILLIC CAPITAL LETTER KOPPA 0481 CYRILLIC SMALL LETTER KOPPA @ Historic miscellaneous 0482 CYRILLIC THOUSANDS SIGN 0483 COMBINING CYRILLIC TITLO * not used with titlo letters x (combining cyrillic vzmet - A66F) 0484 COMBINING CYRILLIC PALATALIZATION * not used for kamora x (modifier letter apostrophe - 02BC) x (combining inverted breve - 0311) 0485 COMBINING CYRILLIC DASIA PNEUMATA x (combining reversed comma above - 0314) 0486 COMBINING CYRILLIC PSILI PNEUMATA x (combining comma above - 0313) 0487 COMBINING CYRILLIC POKRYTIE * used only with titlo letters * also attested in Glagolitic x (combining inverted breve - 0311) x (combining cyrillic vzmet - A66F) 0488 COMBINING CYRILLIC HUNDRED THOUSANDS SIGN * use 20DD for ten thousands sign 0489 COMBINING CYRILLIC MILLIONS SIGN x (combining cyrillic ten millions sign - A670) @ Extended Cyrillic 048A CYRILLIC CAPITAL LETTER SHORT I WITH TAIL 048B CYRILLIC SMALL LETTER SHORT I WITH TAIL * Kildin Sami 048C CYRILLIC CAPITAL LETTER SEMISOFT SIGN 048D CYRILLIC SMALL LETTER SEMISOFT SIGN * Kildin Sami 048E CYRILLIC CAPITAL LETTER ER WITH TICK 048F CYRILLIC SMALL LETTER ER WITH TICK * Kildin Sami 0490 CYRILLIC CAPITAL LETTER GHE WITH UPTURN 0491 CYRILLIC SMALL LETTER GHE WITH UPTURN * Ukrainian 0492 CYRILLIC CAPITAL LETTER GHE WITH STROKE 0493 CYRILLIC SMALL LETTER GHE WITH STROKE * Azerbaijani, Bashkir, ... * full bar form preferred over half-barred "F"-type 0494 CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK 0495 CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK * Yakut, older orthographies for Abkhasian 0496 CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER 0497 CYRILLIC SMALL LETTER ZHE WITH DESCENDER * Tatar, ... 0498 CYRILLIC CAPITAL LETTER ZE WITH DESCENDER 0499 CYRILLIC SMALL LETTER ZE WITH DESCENDER * Bashkir * letterforms with right hooks are preferred, although occasional variants with left hooks occur 049A CYRILLIC CAPITAL LETTER KA WITH DESCENDER 049B CYRILLIC SMALL LETTER KA WITH DESCENDER * Abkhasian, Tajik, ... 049C CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE 049D CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE * Azerbaijani 049E CYRILLIC CAPITAL LETTER KA WITH STROKE 049F CYRILLIC SMALL LETTER KA WITH STROKE * Abkhasian 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 * Bashkir, ... 04A4 CYRILLIC CAPITAL LIGATURE EN GHE 04A5 CYRILLIC SMALL LIGATURE EN GHE * Altay, Mari, Yakut * also used for soft en in Old Church Slavonic * this is not a decomposable ligature 04A6 CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK 04A7 CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK * older orthographies for Abkhasian 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 * Bashkir, Chuvash * letterforms with right hooks are preferred, although occasional variants with left hooks occur * in Chuvashia, letterforms identical to or similar in form to 00E7 regularly occur 04AC CYRILLIC CAPITAL LETTER TE WITH DESCENDER 04AD CYRILLIC SMALL LETTER TE WITH DESCENDER * Abkhasian 04AE CYRILLIC CAPITAL LETTER STRAIGHT U 04AF CYRILLIC SMALL LETTER STRAIGHT U * stem is straight, unlike LETTER U * Azerbaijani, Bashkir, ... x (cyrillic capital letter u - 0423) 04B0 CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE 04B1 CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE * Kazakh 04B2 CYRILLIC CAPITAL LETTER HA WITH DESCENDER 04B3 CYRILLIC SMALL LETTER HA WITH DESCENDER * Abkhasian, Tajik, Uzbek 04B4 CYRILLIC CAPITAL LIGATURE TE TSE 04B5 CYRILLIC SMALL LIGATURE TE TSE * Abkhasian * this is not a decomposable ligature 04B6 CYRILLIC CAPITAL LETTER CHE WITH DESCENDER 04B7 CYRILLIC SMALL LETTER CHE WITH DESCENDER * Abkhasian, Tajik 04B8 CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE 04B9 CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE * Azerbaijani 04BA CYRILLIC CAPITAL LETTER SHHA 04BB CYRILLIC SMALL LETTER SHHA * originally derived from Latin "h", but uppercase form 04BA is closer to an inverted che (0427) * Azerbaijani, Bashkir, ... x (latin small letter h - 0068) 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 * some older Abkhaz fonts show a descender shaped like a right hook (ogonek or reversed comma shape) 04C0 CYRILLIC LETTER PALOCHKA * aspiration sign in many Caucasian languages * is usually not cased, but the formal lowercase is 04CF x (latin capital letter i - 0049) x (cyrillic capital letter byelorussian-ukrainian i - 0406) 04C1 CYRILLIC CAPITAL LETTER ZHE WITH BREVE : 0416 0306 04C2 CYRILLIC SMALL LETTER ZHE WITH BREVE * Moldavian : 0436 0306 04C3 CYRILLIC CAPITAL LETTER KA WITH HOOK 04C4 CYRILLIC SMALL LETTER KA WITH HOOK * Chukchi 04C5 CYRILLIC CAPITAL LETTER EL WITH TAIL 04C6 CYRILLIC SMALL LETTER EL WITH TAIL * Kildin Sami 04C7 CYRILLIC CAPITAL LETTER EN WITH HOOK 04C8 CYRILLIC SMALL LETTER EN WITH HOOK * Chukchi 04C9 CYRILLIC CAPITAL LETTER EN WITH TAIL 04CA CYRILLIC SMALL LETTER EN WITH TAIL * Kildin Sami 04CB CYRILLIC CAPITAL LETTER KHAKASSIAN CHE 04CC CYRILLIC SMALL LETTER KHAKASSIAN CHE 04CD CYRILLIC CAPITAL LETTER EM WITH TAIL 04CE CYRILLIC SMALL LETTER EM WITH TAIL * Kildin Sami 04CF CYRILLIC SMALL LETTER PALOCHKA 04D0 CYRILLIC CAPITAL LETTER A WITH BREVE : 0410 0306 04D1 CYRILLIC SMALL LETTER A WITH BREVE : 0430 0306 04D2 CYRILLIC CAPITAL LETTER A WITH DIAERESIS : 0410 0308 04D3 CYRILLIC SMALL LETTER A WITH DIAERESIS : 0430 0308 04D4 CYRILLIC CAPITAL LIGATURE A IE 04D5 CYRILLIC SMALL LIGATURE A IE * this is not a decomposable ligature x (latin small letter ae - 00E6) 04D6 CYRILLIC CAPITAL LETTER IE WITH BREVE : 0415 0306 04D7 CYRILLIC SMALL LETTER IE WITH BREVE : 0435 0306 04D8 CYRILLIC CAPITAL LETTER SCHWA 04D9 CYRILLIC SMALL LETTER SCHWA x (latin small letter schwa - 0259) 04DA CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS : 04D8 0308 04DB CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS : 04D9 0308 04DC CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS : 0416 0308 04DD CYRILLIC SMALL LETTER ZHE WITH DIAERESIS : 0436 0308 04DE CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS : 0417 0308 04DF CYRILLIC SMALL LETTER ZE WITH DIAERESIS : 0437 0308 04E0 CYRILLIC CAPITAL LETTER ABKHASIAN DZE 04E1 CYRILLIC SMALL LETTER ABKHASIAN DZE x (latin small letter ezh - 0292) 04E2 CYRILLIC CAPITAL LETTER I WITH MACRON : 0418 0304 04E3 CYRILLIC SMALL LETTER I WITH MACRON : 0438 0304 04E4 CYRILLIC CAPITAL LETTER I WITH DIAERESIS : 0418 0308 04E5 CYRILLIC SMALL LETTER I WITH DIAERESIS : 0438 0308 04E6 CYRILLIC CAPITAL LETTER O WITH DIAERESIS : 041E 0308 04E7 CYRILLIC SMALL LETTER O WITH DIAERESIS : 043E 0308 04E8 CYRILLIC CAPITAL LETTER BARRED O 04E9 CYRILLIC SMALL LETTER BARRED O x (latin small letter barred o - 0275) 04EA CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS : 04E8 0308 04EB CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS : 04E9 0308 04EC CYRILLIC CAPITAL LETTER E WITH DIAERESIS : 042D 0308 04ED CYRILLIC SMALL LETTER E WITH DIAERESIS * Kildin Sami : 044D 0308 04EE CYRILLIC CAPITAL LETTER U WITH MACRON : 0423 0304 04EF CYRILLIC SMALL LETTER U WITH MACRON : 0443 0304 04F0 CYRILLIC CAPITAL LETTER U WITH DIAERESIS : 0423 0308 04F1 CYRILLIC SMALL LETTER U WITH DIAERESIS : 0443 0308 04F2 CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE : 0423 030B 04F3 CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE : 0443 030B 04F4 CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS : 0427 0308 04F5 CYRILLIC SMALL LETTER CHE WITH DIAERESIS : 0447 0308 04F6 CYRILLIC CAPITAL LETTER GHE WITH DESCENDER 04F7 CYRILLIC SMALL LETTER GHE WITH DESCENDER * Yupik 04F8 CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS : 042B 0308 04F9 CYRILLIC SMALL LETTER YERU WITH DIAERESIS : 044B 0308 @ Additions for Nivkh 04FA CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK 04FB CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK 04FC CYRILLIC CAPITAL LETTER HA WITH HOOK 04FD CYRILLIC SMALL LETTER HA WITH HOOK 04FE CYRILLIC CAPITAL LETTER HA WITH STROKE 04FF CYRILLIC SMALL LETTER HA WITH STROKE @@ 0500 Cyrillic Supplement 052F @ Komi letters 0500 CYRILLIC CAPITAL LETTER KOMI DE 0501 CYRILLIC SMALL LETTER KOMI DE 0502 CYRILLIC CAPITAL LETTER KOMI DJE 0503 CYRILLIC SMALL LETTER KOMI DJE 0504 CYRILLIC CAPITAL LETTER KOMI ZJE 0505 CYRILLIC SMALL LETTER KOMI ZJE 0506 CYRILLIC CAPITAL LETTER KOMI DZJE 0507 CYRILLIC SMALL LETTER KOMI DZJE 0508 CYRILLIC CAPITAL LETTER KOMI LJE 0509 CYRILLIC SMALL LETTER KOMI LJE 050A CYRILLIC CAPITAL LETTER KOMI NJE 050B CYRILLIC SMALL LETTER KOMI NJE 050C CYRILLIC CAPITAL LETTER KOMI SJE 050D CYRILLIC SMALL LETTER KOMI SJE 050E CYRILLIC CAPITAL LETTER KOMI TJE 050F CYRILLIC SMALL LETTER KOMI TJE @ Khanty letters 0510 CYRILLIC CAPITAL LETTER REVERSED ZE 0511 CYRILLIC SMALL LETTER REVERSED ZE * also used for Enets @ Chukchi letters 0512 CYRILLIC CAPITAL LETTER EL WITH HOOK 0513 CYRILLIC SMALL LETTER EL WITH HOOK * also used for Itelmen @ Mordvin letters 0514 CYRILLIC CAPITAL LETTER LHA 0515 CYRILLIC SMALL LETTER LHA = voiceless l 0516 CYRILLIC CAPITAL LETTER RHA 0517 CYRILLIC SMALL LETTER RHA = voiceless r 0518 CYRILLIC CAPITAL LETTER YAE 0519 CYRILLIC SMALL LETTER YAE @ Kurdish letters 051A CYRILLIC CAPITAL LETTER QA 051B CYRILLIC SMALL LETTER QA 051C CYRILLIC CAPITAL LETTER WE 051D CYRILLIC SMALL LETTER WE @ Aleut letters 051E CYRILLIC CAPITAL LETTER ALEUT KA 051F CYRILLIC SMALL LETTER ALEUT KA * used for [q] in Aleut @ Chuvash letters @+ These are obsolete letters formerly used in Jakovlev's Chuvash orthography. 0520 CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK 0521 CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK = palatalized l 0522 CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK 0523 CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK = palatalized n @ Abkhaz letters 0524 CYRILLIC CAPITAL LETTER PE WITH DESCENDER 0525 CYRILLIC SMALL LETTER PE WITH DESCENDER * used in modern Abkhaz orthography x (cyrillic small letter pe with middle hook - 04A7) @ Azerbaijani letters 0526 CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER 0527 CYRILLIC SMALL LETTER SHHA WITH DESCENDER @ Orok letters 0528 CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK 0529 CYRILLIC SMALL LETTER EN WITH LEFT HOOK @ Komi letters 052A CYRILLIC CAPITAL LETTER DZZHE 052B CYRILLIC SMALL LETTER DZZHE * also used for Ossetian 052C CYRILLIC CAPITAL LETTER DCHE 052D CYRILLIC SMALL LETTER DCHE @ Khanty letters 052E CYRILLIC CAPITAL LETTER EL WITH DESCENDER 052F CYRILLIC SMALL LETTER EL WITH DESCENDER * also used for Nenets @@ 0530 Armenian 058F @ Uppercase letters 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 @ Modifier letters 0559 ARMENIAN MODIFIER LETTER LEFT HALF RING x (modifier letter reversed comma - 02BD) x (modifier letter left half ring - 02BF) x (combining reversed comma above - 0314) 055A ARMENIAN APOSTROPHE = armenian modifier letter right half ring (1.0) x (modifier letter apostrophe - 02BC) x (modifier letter right half ring - 02BE) x (combining comma above - 0313) 055B ARMENIAN EMPHASIS MARK = shesht x (modifier letter acute accent - 02CA) 055C ARMENIAN EXCLAMATION MARK = batsaganchakan nshan * marks intonation on word, rather than occurring finally 055D ARMENIAN COMMA = bowt x (modifier letter grave accent - 02CB) 055E ARMENIAN QUESTION MARK = hartsakan nshan * marks intonation on word, rather than occurring finally 055F ARMENIAN ABBREVIATION MARK = patiw @ Lowercase letters 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 # 0565 0582 @ Punctuation 0589 ARMENIAN FULL STOP = vertsaket * may also be used for historic Georgian texts x (colon - 003A) 058A ARMENIAN HYPHEN = yentamna @ Religious symbols 058D RIGHT-FACING ARMENIAN ETERNITY SIGN 058E LEFT-FACING ARMENIAN ETERNITY SIGN * maps to AST 34.005:1997 @ Currency symbol 058F ARMENIAN DRAM SIGN @@ 0590 Hebrew 05FF @ Cantillation marks 0591 HEBREW ACCENT ETNAHTA = atnah 0592 HEBREW ACCENT SEGOL = segolta 0593 HEBREW ACCENT SHALSHELET 0594 HEBREW ACCENT ZAQEF QATAN 0595 HEBREW ACCENT ZAQEF GADOL 0596 HEBREW ACCENT TIPEHA = tarha, me'ayla ~ mayla 0597 HEBREW ACCENT REVIA 0598 HEBREW ACCENT ZARQA = tsinorit, zinorit; tsinor, zinor * This character is to be used when Zarqa or Tsinor are placed above, and also for Tsinorit. x (hebrew accent zinor - 05AE) 0599 HEBREW ACCENT PASHTA 059A HEBREW ACCENT YETIV 059B HEBREW ACCENT TEVIR 059C HEBREW ACCENT GERESH = teres 059D HEBREW ACCENT GERESH MUQDAM 059E HEBREW ACCENT GERSHAYIM 059F HEBREW ACCENT QARNEY PARA = pazer gadol 05A0 HEBREW ACCENT TELISHA GEDOLA 05A1 HEBREW ACCENT PAZER = pazer qatan 05A2 HEBREW ACCENT ATNAH HAFUKH x (hebrew accent yerah ben yomo - 05AA) 05A3 HEBREW ACCENT MUNAH 05A4 HEBREW ACCENT MAHAPAKH 05A5 HEBREW ACCENT MERKHA = yored 05A6 HEBREW ACCENT MERKHA KEFULA 05A7 HEBREW ACCENT DARGA 05A8 HEBREW ACCENT QADMA = azla 05A9 HEBREW ACCENT TELISHA QETANA 05AA HEBREW ACCENT YERAH BEN YOMO = galgal x (hebrew accent atnah hafukh - 05A2) 05AB HEBREW ACCENT OLE 05AC HEBREW ACCENT ILUY 05AD HEBREW ACCENT DEHI 05AE HEBREW ACCENT ZINOR = tsinor; zarqa * This character is to be used when Zarqa or Tsinor are placed above left. x (hebrew accent zarqa - 0598) 05AF HEBREW MARK MASORA CIRCLE @ Points and punctuation 05B0 HEBREW POINT SHEVA 05B1 HEBREW POINT HATAF SEGOL 05B2 HEBREW POINT HATAF PATAH 05B3 HEBREW POINT HATAF QAMATS 05B4 HEBREW POINT HIRIQ 05B5 HEBREW POINT TSERE 05B6 HEBREW POINT SEGOL 05B7 HEBREW POINT PATAH * furtive patah is not a distinct character 05B8 HEBREW POINT QAMATS * used generically or as qamats gadol in orthography which distinguishes that from qamats qatan x (hebrew point qamats qatan - 05C7) 05B9 HEBREW POINT HOLAM 05BA HEBREW POINT HOLAM HASER FOR VAV 05BB HEBREW POINT QUBUTS 05BC HEBREW POINT DAGESH OR MAPIQ = shuruq * falls within the base letter 05BD HEBREW POINT METEG = siluq * may be used as a Hebrew accent sof pasuq 05BE HEBREW PUNCTUATION MAQAF 05BF HEBREW POINT RAFE x (hebrew point judeo-spanish varika - FB1E) 05C0 HEBREW PUNCTUATION PASEQ = legarmeh * may be treated as spacing punctuation, not as a point x (vertical line - 007C) 05C1 HEBREW POINT SHIN DOT 05C2 HEBREW POINT SIN DOT 05C3 HEBREW PUNCTUATION SOF PASUQ * may be used as a Hebrew punctuation colon x (colon - 003A) @ Puncta extraordinaria 05C4 HEBREW MARK UPPER DOT 05C5 HEBREW MARK LOWER DOT * punctum extraordinarium (Psalms 27:13) x (hebrew point hiriq - 05B4) @ Points and punctuation 05C6 HEBREW PUNCTUATION NUN HAFUKHA * does not historically derive from the letter nun x (hebrew letter nun - 05E0) 05C7 HEBREW POINT QAMATS QATAN x (hebrew point qamats - 05B8) @ Based on ISO 8859-8 05D0 HEBREW LETTER ALEF = aleph x (alef symbol - 2135) 05D1 HEBREW LETTER BET x (bet symbol - 2136) 05D2 HEBREW LETTER GIMEL x (gimel symbol - 2137) 05D3 HEBREW LETTER DALET x (dalet symbol - 2138) 05D4 HEBREW LETTER HE 05D5 HEBREW LETTER VAV 05D6 HEBREW LETTER ZAYIN 05D7 HEBREW LETTER HET 05D8 HEBREW LETTER TET 05D9 HEBREW LETTER YOD 05DA HEBREW LETTER FINAL KAF 05DB HEBREW LETTER KAF 05DC HEBREW LETTER LAMED 05DD HEBREW LETTER FINAL MEM 05DE HEBREW LETTER MEM 05DF HEBREW LETTER FINAL NUN 05E0 HEBREW LETTER NUN 05E1 HEBREW LETTER SAMEKH 05E2 HEBREW LETTER AYIN 05E3 HEBREW LETTER FINAL PE 05E4 HEBREW LETTER PE 05E5 HEBREW LETTER FINAL TSADI 05E6 HEBREW LETTER TSADI = zade 05E7 HEBREW LETTER QOF 05E8 HEBREW LETTER RESH 05E9 HEBREW LETTER SHIN 05EA HEBREW LETTER TAV @ Yiddish digraphs 05F0 HEBREW LIGATURE YIDDISH DOUBLE VAV = tsvey vovn 05F1 HEBREW LIGATURE YIDDISH VAV YOD 05F2 HEBREW LIGATURE YIDDISH DOUBLE YOD = tsvey yudn @ Additional punctuation 05F3 HEBREW PUNCTUATION GERESH x (apostrophe - 0027) 05F4 HEBREW PUNCTUATION GERSHAYIM x (quotation mark - 0022) @@ 0600 Arabic 06FF @@+ @ Subtending marks 0600 ARABIC NUMBER SIGN 0601 ARABIC SIGN SANAH 0602 ARABIC FOOTNOTE MARKER 0603 ARABIC SIGN SAFHA 0604 ARABIC SIGN SAMVAT * used for writing Samvat era dates in Urdu @ Supertending mark 0605 ARABIC NUMBER MARK ABOVE * may be used with Coptic Epact numbers @ Radix symbols 0606 ARABIC-INDIC CUBE ROOT x (cube root - 221B) 0607 ARABIC-INDIC FOURTH ROOT x (fourth root - 221C) @ Letterlike symbol 0608 ARABIC RAY @ Punctuation 0609 ARABIC-INDIC PER MILLE SIGN x (per mille sign - 2030) 060A ARABIC-INDIC PER TEN THOUSAND SIGN x (per ten thousand sign - 2031) @ Currency sign 060B AFGHANI SIGN @ Punctuation 060C ARABIC COMMA * also used with Thaana and Syriac in modern text x (comma - 002C) x (turned comma - 2E32) x (reversed comma - 2E41) 060D ARABIC DATE SEPARATOR @ Poetic marks 060E ARABIC POETIC VERSE SIGN 060F ARABIC SIGN MISRA @ Honorifics 0610 ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM * represents sallallahu alayhe wasallam "may God's peace and blessings be upon him" 0611 ARABIC SIGN ALAYHE ASSALLAM * represents alayhe assalam "upon him be peace" 0612 ARABIC SIGN RAHMATULLAH ALAYHE * represents rahmatullah alayhe "may God have mercy upon him" 0613 ARABIC SIGN RADI ALLAHOU ANHU * represents radi allahu 'anhu "may God be pleased with him" 0614 ARABIC SIGN TAKHALLUS * sign placed over the name or nom-de-plume of a poet, or in some writings used to mark all proper names @ Koranic annotation sign 0615 ARABIC SMALL HIGH TAH * marks a recommended pause position in some Korans published in Iran and Pakistan * should not be confused with the small TAH sign used as a diacritic for some letters such as 0679 @ Extended Arabic mark 0616 ARABIC SMALL HIGH LIGATURE ALEF WITH LAM WITH YEH * early Persian @ Koranic annotation signs 0617 ARABIC SMALL HIGH ZAIN 0618 ARABIC SMALL FATHA * should not be confused with 064E FATHA 0619 ARABIC SMALL DAMMA * should not be confused with 064F DAMMA 061A ARABIC SMALL KASRA * should not be confused with 0650 KASRA @ Punctuation 061B ARABIC SEMICOLON * also used with Thaana and Syriac in modern text x (semicolon - 003B) x (reversed semicolon - 204F) x (turned semicolon - 2E35) @ Format character 061C ARABIC LETTER MARK * commonly abbreviated ALM x (right-to-left mark - 200F) @ Punctuation 061E ARABIC TRIPLE DOT PUNCTUATION MARK 061F ARABIC QUESTION MARK * also used with Thaana and Syriac in modern text x (question mark - 003F) x (reversed question mark - 2E2E) @ Addition for Kashmiri 0620 ARABIC LETTER KASHMIRI YEH @ Based on ISO 8859-6 @+ Arabic letter names follow romanization conventions derived from ISO 8859-6. These differ from the Literary Arabic pronunciation of the letter names. For example, 0628 ARABIC LETTER BEH has a Literary Arabic pronunciation of ba'. 0621 ARABIC LETTER HAMZA x (modifier letter right half ring - 02BE) 0622 ARABIC LETTER ALEF WITH MADDA ABOVE : 0627 0653 0623 ARABIC LETTER ALEF WITH HAMZA ABOVE : 0627 0654 0624 ARABIC LETTER WAW WITH HAMZA ABOVE : 0648 0654 0625 ARABIC LETTER ALEF WITH HAMZA BELOW : 0627 0655 0626 ARABIC LETTER YEH WITH HAMZA ABOVE : 064A 0654 0627 ARABIC LETTER ALEF 0628 ARABIC LETTER BEH 0629 ARABIC LETTER TEH MARBUTA 062A ARABIC LETTER TEH 062B ARABIC LETTER THEH 062C ARABIC LETTER JEEM 062D ARABIC LETTER HAH 062E ARABIC LETTER KHAH 062F ARABIC LETTER DAL 0630 ARABIC LETTER THAL 0631 ARABIC LETTER REH 0632 ARABIC LETTER ZAIN 0633 ARABIC LETTER SEEN 0634 ARABIC LETTER SHEEN 0635 ARABIC LETTER SAD 0636 ARABIC LETTER DAD 0637 ARABIC LETTER TAH 0638 ARABIC LETTER ZAH 0639 ARABIC LETTER AIN x (latin small letter ezh reversed - 01B9) x (modifier letter left half ring - 02BF) 063A ARABIC LETTER GHAIN @ Additions for early Persian and Azerbaijani 063B ARABIC LETTER KEHEH WITH TWO DOTS ABOVE 063C ARABIC LETTER KEHEH WITH THREE DOTS BELOW 063D ARABIC LETTER FARSI YEH WITH INVERTED V * Azerbaijani 063E ARABIC LETTER FARSI YEH WITH TWO DOTS ABOVE 063F ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE @ Based on ISO 8859-6 0640 ARABIC TATWEEL = kashida * inserted to stretch characters or to carry tashkil with no base letter * also used with Mandaic, Manichaean, Psalter Pahlavi, and Syriac 0641 ARABIC LETTER FEH 0642 ARABIC LETTER QAF 0643 ARABIC LETTER KAF 0644 ARABIC LETTER LAM 0645 ARABIC LETTER MEEM 0646 ARABIC LETTER NOON 0647 ARABIC LETTER HEH 0648 ARABIC LETTER WAW 0649 ARABIC LETTER ALEF MAKSURA * represents YEH-shaped dual-joining letter with no dots in any positional form * not intended for use in combination with 0654 x (arabic letter yeh with hamza above - 0626) 064A ARABIC LETTER YEH * loses its dots when used in combination with 0654 * retains its dots when used in combination with other combining marks x (arabic letter yeh with two dots below and hamza above - 08A8) @ Tashkil from ISO 8859-6 064B ARABIC FATHATAN 064C ARABIC DAMMATAN * a common alternative form is written as two intertwined dammas, one of which is turned 180 degrees 064D ARABIC KASRATAN 064E ARABIC FATHA 064F ARABIC DAMMA 0650 ARABIC KASRA 0651 ARABIC SHADDA 0652 ARABIC SUKUN * marks absence of a vowel after the base consonant * used in some Korans to mark a long vowel as ignored * can have a variety of shapes, including a circular one and a shape that looks like '06E1' x (arabic small high dotless head of khah - 06E1) @ Combining maddah and hamza 0653 ARABIC MADDAH ABOVE 0654 ARABIC HAMZA ABOVE * restricted to hamza and ezafe semantics * is not used as a diacritic to form new letters 0655 ARABIC HAMZA BELOW @ Other combining marks 0656 ARABIC SUBSCRIPT ALEF 0657 ARABIC INVERTED DAMMA = ulta pesh * Kashmiri, Urdu 0658 ARABIC MARK NOON GHUNNA * Baluchi * indicates nasalization in Urdu 0659 ARABIC ZWARAKAY * Pashto 065A ARABIC VOWEL SIGN SMALL V ABOVE * African languages 065B ARABIC VOWEL SIGN INVERTED SMALL V ABOVE * African languages 065C ARABIC VOWEL SIGN DOT BELOW * African languages 065D ARABIC REVERSED DAMMA * African languages 065E ARABIC FATHA WITH TWO DOTS * Kalami 065F ARABIC WAVY HAMZA BELOW * Kashmiri @ Arabic-Indic digits @+ These digits are used with Arabic proper; for languages of Iran, Afghanistan, Pakistan, and India, see the Eastern Arabic-Indic digits at 06F0-06F9. 0660 ARABIC-INDIC DIGIT ZERO 0661 ARABIC-INDIC DIGIT ONE 0662 ARABIC-INDIC DIGIT TWO 0663 ARABIC-INDIC DIGIT THREE 0664 ARABIC-INDIC DIGIT FOUR 0665 ARABIC-INDIC DIGIT FIVE 0666 ARABIC-INDIC DIGIT SIX 0667 ARABIC-INDIC DIGIT SEVEN 0668 ARABIC-INDIC DIGIT EIGHT 0669 ARABIC-INDIC DIGIT NINE @ Punctuation 066A ARABIC PERCENT SIGN x (percent sign - 0025) 066B ARABIC DECIMAL SEPARATOR 066C ARABIC THOUSANDS SEPARATOR x (apostrophe - 0027) x (right single quotation mark - 2019) 066D ARABIC FIVE POINTED STAR * appearance rather variable x (asterisk - 002A) @ Archaic letters 066E ARABIC LETTER DOTLESS BEH 066F ARABIC LETTER DOTLESS QAF @ Tashkil 0670 ARABIC LETTER SUPERSCRIPT ALEF * actually a vowel sign, despite the name @ Extended Arabic letters 0671 ARABIC LETTER ALEF WASLA * Koranic Arabic 0672 ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE * Baluchi, Kashmiri @ Deprecated letter 0673 ARABIC LETTER ALEF WITH WAVY HAMZA BELOW * Kashmiri * this character is deprecated and its use is strongly discouraged * use the sequence 0627 065F instead @ Extended Arabic letters 0674 ARABIC LETTER HIGH HAMZA * Kazakh * forms digraphs 0675 ARABIC LETTER HIGH HAMZA ALEF * Kazakh # 0627 0674 0676 ARABIC LETTER HIGH HAMZA WAW * Kazakh # 0648 0674 0677 ARABIC LETTER U WITH HAMZA ABOVE * Kazakh # 06C7 0674 0678 ARABIC LETTER HIGH HAMZA YEH * Kazakh # 064A 0674 0679 ARABIC LETTER TTEH * Urdu 067A ARABIC LETTER TTEHEH * Sindhi 067B ARABIC LETTER BEEH * Sindhi 067C ARABIC LETTER TEH WITH RING * Pashto 067D ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS * Sindhi 067E ARABIC LETTER PEH * Persian, Urdu, ... 067F ARABIC LETTER TEHEH * Sindhi 0680 ARABIC LETTER BEHEH * Sindhi 0681 ARABIC LETTER HAH WITH HAMZA ABOVE * Pashto * represents the phoneme /dz/ 0682 ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE * not used in modern Pashto 0683 ARABIC LETTER NYEH * Sindhi 0684 ARABIC LETTER DYEH * Sindhi 0685 ARABIC LETTER HAH WITH THREE DOTS ABOVE * Pashto, Khwarazmian * represents the phoneme /ts/ in Pashto 0686 ARABIC LETTER TCHEH * Persian, Urdu, ... 0687 ARABIC LETTER TCHEHEH * Sindhi 0688 ARABIC LETTER DDAL * Urdu 0689 ARABIC LETTER DAL WITH RING * Pashto 068A ARABIC LETTER DAL WITH DOT BELOW * Sindhi, early Persian 068B ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH * Lahnda 068C ARABIC LETTER DAHAL * Sindhi 068D ARABIC LETTER DDAHAL * Sindhi 068E ARABIC LETTER DUL * older shape for DUL, now obsolete in Sindhi * Burushaski 068F ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS * Sindhi * current shape used for DUL 0690 ARABIC LETTER DAL WITH FOUR DOTS ABOVE * old Urdu, not in current use 0691 ARABIC LETTER RREH * Urdu 0692 ARABIC LETTER REH WITH SMALL V * Kurdish 0693 ARABIC LETTER REH WITH RING * Pashto 0694 ARABIC LETTER REH WITH DOT BELOW * Kurdish, early Persian 0695 ARABIC LETTER REH WITH SMALL V BELOW * Kurdish 0696 ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE * Pashto 0697 ARABIC LETTER REH WITH TWO DOTS ABOVE * Dargwa 0698 ARABIC LETTER JEH * Persian, Urdu, ... 0699 ARABIC LETTER REH WITH FOUR DOTS ABOVE * Sindhi 069A ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE * Pashto 069B ARABIC LETTER SEEN WITH THREE DOTS BELOW * early Persian 069C ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE * Moroccan Arabic 069D ARABIC LETTER SAD WITH TWO DOTS BELOW * Turkic 069E ARABIC LETTER SAD WITH THREE DOTS ABOVE * Berber, Burushaski 069F ARABIC LETTER TAH WITH THREE DOTS ABOVE * old Hausa 06A0 ARABIC LETTER AIN WITH THREE DOTS ABOVE * old Malay 06A1 ARABIC LETTER DOTLESS FEH * Adighe 06A2 ARABIC LETTER FEH WITH DOT MOVED BELOW * Maghrib Arabic 06A3 ARABIC LETTER FEH WITH DOT BELOW * Ingush 06A4 ARABIC LETTER VEH * Middle Eastern Arabic for foreign words * Kurdish, Khwarazmian, early Persian 06A5 ARABIC LETTER FEH WITH THREE DOTS BELOW * North African Arabic for foreign words 06A6 ARABIC LETTER PEHEH * Sindhi 06A7 ARABIC LETTER QAF WITH DOT ABOVE * Maghrib Arabic, Uighur 06A8 ARABIC LETTER QAF WITH THREE DOTS ABOVE * Tunisian Arabic 06A9 ARABIC LETTER KEHEH * Persian, Urdu, ... 06AA ARABIC LETTER SWASH KAF * represents a letter distinct from Arabic KAF (0643) in Sindhi 06AB ARABIC LETTER KAF WITH RING * Pashto * may appear like an Arabic KAF (0643) with a ring below the base 06AC ARABIC LETTER KAF WITH DOT ABOVE * old Malay 06AD ARABIC LETTER NG * Uighur, Kazakh, old Malay, early Persian, ... 06AE ARABIC LETTER KAF WITH THREE DOTS BELOW * Berber, early Persian 06AF ARABIC LETTER GAF * Persian, Urdu, ... 06B0 ARABIC LETTER GAF WITH RING * Lahnda 06B1 ARABIC LETTER NGOEH * Sindhi 06B2 ARABIC LETTER GAF WITH TWO DOTS BELOW * not used in Sindhi 06B3 ARABIC LETTER GUEH * Sindhi 06B4 ARABIC LETTER GAF WITH THREE DOTS ABOVE * not used in Sindhi 06B5 ARABIC LETTER LAM WITH SMALL V * Kurdish 06B6 ARABIC LETTER LAM WITH DOT ABOVE * Kurdish 06B7 ARABIC LETTER LAM WITH THREE DOTS ABOVE * Kurdish 06B8 ARABIC LETTER LAM WITH THREE DOTS BELOW 06B9 ARABIC LETTER NOON WITH DOT BELOW 06BA ARABIC LETTER NOON GHUNNA * Urdu, archaic Arabic * dotless in all four contextual forms 06BB ARABIC LETTER RNOON * Sindhi 06BC ARABIC LETTER NOON WITH RING * Pashto 06BD ARABIC LETTER NOON WITH THREE DOTS ABOVE * old Malay 06BE ARABIC LETTER HEH DOACHASHMEE * forms aspirate digraphs in Urdu and other languages of South Asia * represents the glottal fricative /h/ in Uighur 06BF ARABIC LETTER TCHEH WITH DOT ABOVE 06C0 ARABIC LETTER HEH WITH YEH ABOVE = arabic letter hamzah on ha (1.0) * for ezafe, use 0654 over the language-appropriate base letter * actually a ligature, not an independent letter : 06D5 0654 06C1 ARABIC LETTER HEH GOAL * Urdu 06C2 ARABIC LETTER HEH GOAL WITH HAMZA ABOVE * Urdu * actually a ligature, not an independent letter : 06C1 0654 06C3 ARABIC LETTER TEH MARBUTA GOAL * Urdu 06C4 ARABIC LETTER WAW WITH RING * Kashmiri 06C5 ARABIC LETTER KIRGHIZ OE * Kirghiz 06C6 ARABIC LETTER OE * Uighur, Kurdish, Kazakh, Azerbaijani 06C7 ARABIC LETTER U * Kirghiz, Azerbaijani 06C8 ARABIC LETTER YU * Uighur 06C9 ARABIC LETTER KIRGHIZ YU * Kazakh, Kirghiz 06CA ARABIC LETTER WAW WITH TWO DOTS ABOVE * Kurdish 06CB ARABIC LETTER VE * Uighur, Kazakh 06CC ARABIC LETTER FARSI YEH * Arabic, Persian, Urdu, Kashmiri, ... * initial and medial forms of this letter have dots x (arabic letter alef maksura - 0649) x (arabic letter yeh - 064A) 06CD ARABIC LETTER YEH WITH TAIL * Pashto, Sindhi 06CE ARABIC LETTER YEH WITH SMALL V * Kurdish 06CF ARABIC LETTER WAW WITH DOT ABOVE 06D0 ARABIC LETTER E * Pashto, Uighur * used as the letter bbeh in Sindhi 06D1 ARABIC LETTER YEH WITH THREE DOTS BELOW * old Malay 06D2 ARABIC LETTER YEH BARREE * Urdu 06D3 ARABIC LETTER YEH BARREE WITH HAMZA ABOVE * Urdu * actually a ligature, not an independent letter : 06D2 0654 @ Punctuation 06D4 ARABIC FULL STOP * Urdu @ Extended Arabic letter 06D5 ARABIC LETTER AE * Uighur, Kazakh, Kirghiz @ Koranic annotation signs 06D6 ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA 06D7 ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA 06D8 ARABIC SMALL HIGH MEEM INITIAL FORM 06D9 ARABIC SMALL HIGH LAM ALEF 06DA ARABIC SMALL HIGH JEEM 06DB ARABIC SMALL HIGH THREE DOTS 06DC ARABIC SMALL HIGH SEEN 06DD ARABIC END OF AYAH 06DE ARABIC START OF RUB EL HIZB 06DF ARABIC SMALL HIGH ROUNDED ZERO * smaller than the typical circular shape used for 0652 06E0 ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO 06E1 ARABIC SMALL HIGH DOTLESS HEAD OF KHAH = Arabic jazm * presentation form of 0652, using font technology to select the variant is preferred * used in some Korans to mark absence of a vowel x (arabic sukun - 0652) 06E2 ARABIC SMALL HIGH MEEM ISOLATED FORM 06E3 ARABIC SMALL LOW SEEN 06E4 ARABIC SMALL HIGH MADDA * typically used with 06E5, 06E6, 06E7, and 08F3 06E5 ARABIC SMALL WAW x (arabic small high waw - 08F3) 06E6 ARABIC SMALL YEH 06E7 ARABIC SMALL HIGH YEH 06E8 ARABIC SMALL HIGH NOON 06E9 ARABIC PLACE OF SAJDAH * there is a range of acceptable glyphs for this character 06EA ARABIC EMPTY CENTRE LOW STOP 06EB ARABIC EMPTY CENTRE HIGH STOP 06EC ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE 06ED ARABIC SMALL LOW MEEM @ Extended Arabic letters for Parkari 06EE ARABIC LETTER DAL WITH INVERTED V 06EF ARABIC LETTER REH WITH INVERTED V * also used in early Persian @ Eastern Arabic-Indic digits @+ These digits are used with Arabic-script languages of Iran, Pakistan, and India (Persian, Sindhi, Urdu, etc.). For details of variations in preferred glyphs, see the block description for the Arabic script. 06F0 EXTENDED ARABIC-INDIC DIGIT ZERO 06F1 EXTENDED ARABIC-INDIC DIGIT ONE 06F2 EXTENDED ARABIC-INDIC DIGIT TWO 06F3 EXTENDED ARABIC-INDIC DIGIT THREE 06F4 EXTENDED ARABIC-INDIC DIGIT FOUR * Persian has a different glyph than Sindhi and Urdu 06F5 EXTENDED ARABIC-INDIC DIGIT FIVE * Persian, Sindhi, and Urdu share glyph different from Arabic 06F6 EXTENDED ARABIC-INDIC DIGIT SIX * Persian, Sindhi, and Urdu have glyphs different from Arabic 06F7 EXTENDED ARABIC-INDIC DIGIT SEVEN * Urdu and Sindhi have glyphs different from Arabic 06F8 EXTENDED ARABIC-INDIC DIGIT EIGHT 06F9 EXTENDED ARABIC-INDIC DIGIT NINE @ Extended Arabic letters 06FA ARABIC LETTER SHEEN WITH DOT BELOW 06FB ARABIC LETTER DAD WITH DOT BELOW 06FC ARABIC LETTER GHAIN WITH DOT BELOW @ Signs for Sindhi 06FD ARABIC SIGN SINDHI AMPERSAND 06FE ARABIC SIGN SINDHI POSTPOSITION MEN @ Extended Arabic letter for Parkari 06FF ARABIC LETTER HEH WITH INVERTED V @@ 0700 Syriac 074F @ Syriac punctuation and signs 0700 SYRIAC END OF PARAGRAPH * marks the end of a paragraph 0701 SYRIAC SUPRALINEAR FULL STOP * marks interrogations, imperatives, and pauses, especially in Biblical texts 0702 SYRIAC SUBLINEAR FULL STOP * marks subordinate clauses and minor pauses, especially in Biblical texts 0703 SYRIAC SUPRALINEAR COLON * marks expressions of wonder and has a distinct pausal value in Biblical texts 0704 SYRIAC SUBLINEAR COLON * used at the end of verses of supplications 0705 SYRIAC HORIZONTAL COLON * joins two words closely together in a context to which a rising tone is suitable 0706 SYRIAC COLON SKEWED LEFT * marks a dependent clause 0707 SYRIAC COLON SKEWED RIGHT * marks the end of a subdivision of the apodosis, or latter part of a Biblical verse 0708 SYRIAC SUPRALINEAR COLON SKEWED LEFT * marks a minor phrase division 0709 SYRIAC SUBLINEAR COLON SKEWED RIGHT % SYRIAC SUBLINEAR COLON SKEWED LEFT * marks the end of a real or rhetorical question * character name is a misnomer 070A SYRIAC CONTRACTION * a contraction mark, mostly used in East Syriac * placed at the end of an incomplete word 070B SYRIAC HARKLEAN OBELUS * marks the beginning of a phrase, word, or morpheme that has a marginal note x (division sign - 00F7) 070C SYRIAC HARKLEAN METOBELUS * marks the end of a section with a marginal note 070D SYRIAC HARKLEAN ASTERISCUS * marks the beginning of a phrase, word, or morpheme that has a marginal note @ Syriac format control character 070F SYRIAC ABBREVIATION MARK = SAM * marks the beginning of a Syriac abbreviation @ Syriac letters 0710 SYRIAC LETTER ALAPH 0711 SYRIAC LETTER SUPERSCRIPT ALAPH * used in East Syriac texts to indicate an etymological Alaph 0712 SYRIAC LETTER BETH 0713 SYRIAC LETTER GAMAL 0714 SYRIAC LETTER GAMAL GARSHUNI * used in Garshuni documents 0715 SYRIAC LETTER DALATH 0716 SYRIAC LETTER DOTLESS DALATH RISH * ambiguous form for undifferentiated early dalath/rish 0717 SYRIAC LETTER HE 0718 SYRIAC LETTER WAW 0719 SYRIAC LETTER ZAIN 071A SYRIAC LETTER HETH 071B SYRIAC LETTER TETH 071C SYRIAC LETTER TETH GARSHUNI * used in Garshuni documents 071D SYRIAC LETTER YUDH 071E SYRIAC LETTER YUDH HE * mostly used in East Syriac texts 071F SYRIAC LETTER KAPH 0720 SYRIAC LETTER LAMADH 0721 SYRIAC LETTER MIM 0722 SYRIAC LETTER NUN 0723 SYRIAC LETTER SEMKATH 0724 SYRIAC LETTER FINAL SEMKATH 0725 SYRIAC LETTER E 0726 SYRIAC LETTER PE 0727 SYRIAC LETTER REVERSED PE * used in Christian Palestinian Aramaic 0728 SYRIAC LETTER SADHE 0729 SYRIAC LETTER QAPH 072A SYRIAC LETTER RISH 072B SYRIAC LETTER SHIN 072C SYRIAC LETTER TAW @ Persian letters 072D SYRIAC LETTER PERSIAN BHETH 072E SYRIAC LETTER PERSIAN GHAMAL 072F SYRIAC LETTER PERSIAN DHALATH @ Syriac points (vowels) 0730 SYRIAC PTHAHA ABOVE 0731 SYRIAC PTHAHA BELOW 0732 SYRIAC PTHAHA DOTTED 0733 SYRIAC ZQAPHA ABOVE 0734 SYRIAC ZQAPHA BELOW 0735 SYRIAC ZQAPHA DOTTED 0736 SYRIAC RBASA ABOVE 0737 SYRIAC RBASA BELOW 0738 SYRIAC DOTTED ZLAMA HORIZONTAL 0739 SYRIAC DOTTED ZLAMA ANGULAR 073A SYRIAC HBASA ABOVE 073B SYRIAC HBASA BELOW 073C SYRIAC HBASA-ESASA DOTTED 073D SYRIAC ESASA ABOVE 073E SYRIAC ESASA BELOW 073F SYRIAC RWAHA @ Syriac marks 0740 SYRIAC FEMININE DOT * feminine marker used with the Taw feminine suffix 0741 SYRIAC QUSHSHAYA * indicates a plosive pronunciation 0742 SYRIAC RUKKAKHA * indicates an aspirated (spirantized) pronunciation 0743 SYRIAC TWO VERTICAL DOTS ABOVE * accent mark used in ancient manuscripts 0744 SYRIAC TWO VERTICAL DOTS BELOW * accent mark used in ancient manuscripts 0745 SYRIAC THREE DOTS ABOVE * diacritic used in Turoyo for letters not found in Syriac 0746 SYRIAC THREE DOTS BELOW * diacritic used in Turoyo for letters not found in Syriac 0747 SYRIAC OBLIQUE LINE ABOVE * indication of a silent letter 0748 SYRIAC OBLIQUE LINE BELOW * indication of a silent letter * also used to indicate numbers multiplied by a certain constant 0749 SYRIAC MUSIC * a music mark * also used in the Syrian Orthodox Anaphora book to mark the breaking of the Eucharist bread 074A SYRIAC BARREKH * a diacritic cross used in liturgical texts @ Sogdian letters 074D SYRIAC LETTER SOGDIAN ZHAIN 074E SYRIAC LETTER SOGDIAN KHAPH 074F SYRIAC LETTER SOGDIAN FE @@ 0750 Arabic Supplement 077F @ Extended Arabic letters @+ These are primarily used in Arabic-script orthographies of African languages. 0750 ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW 0751 ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE 0752 ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW 0753 ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE 0754 ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE 0755 ARABIC LETTER BEH WITH INVERTED SMALL V BELOW 0756 ARABIC LETTER BEH WITH SMALL V 0757 ARABIC LETTER HAH WITH TWO DOTS ABOVE 0758 ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW 0759 ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH * Saraiki 075A ARABIC LETTER DAL WITH INVERTED SMALL V BELOW 075B ARABIC LETTER REH WITH STROKE 075C ARABIC LETTER SEEN WITH FOUR DOTS ABOVE * Shina 075D ARABIC LETTER AIN WITH TWO DOTS ABOVE 075E ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE 075F ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE 0760 ARABIC LETTER FEH WITH TWO DOTS BELOW 0761 ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW 0762 ARABIC LETTER KEHEH WITH DOT ABOVE * old Malay, preferred to 06AC x (arabic letter kaf with dot above - 06AC) 0763 ARABIC LETTER KEHEH WITH THREE DOTS ABOVE * Moroccan Arabic, Amazigh, Burushaski x (arabic letter ng - 06AD) 0764 ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW 0765 ARABIC LETTER MEEM WITH DOT ABOVE 0766 ARABIC LETTER MEEM WITH DOT BELOW * Maba 0767 ARABIC LETTER NOON WITH TWO DOTS BELOW * Arwi 0768 ARABIC LETTER NOON WITH SMALL TAH * Saraiki, Pathwari 0769 ARABIC LETTER NOON WITH SMALL V * Gojri 076A ARABIC LETTER LAM WITH BAR 076B ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE * Torwali, Ormuri 076C ARABIC LETTER REH WITH HAMZA ABOVE * Ormuri * represents a voiced alveolo-palatal laminal fricative x (latin small letter z with curl - 0291) 076D ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE * Kalami, Ormuri @ Additions for Khowar 076E ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH BELOW 076F ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH AND TWO DOTS 0770 ARABIC LETTER SEEN WITH SMALL ARABIC LETTER TAH AND TWO DOTS 0771 ARABIC LETTER REH WITH SMALL ARABIC LETTER TAH AND TWO DOTS @ Addition for Torwali 0772 ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH ABOVE @ Additions for Burushaski 0773 ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE 0774 ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE 0775 ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE 0776 ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE 0777 ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW 0778 ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE 0779 ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE 077A ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE 077B ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE 077C ARABIC LETTER HAH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW 077D ARABIC LETTER SEEN WITH EXTENDED ARABIC-INDIC DIGIT FOUR ABOVE @ Additions for early Persian 077E ARABIC LETTER SEEN WITH INVERTED V 077F ARABIC LETTER KAF WITH TWO DOTS ABOVE @@ 0780 Thaana 07BF @ Basic consonants 0780 THAANA LETTER HAA 0781 THAANA LETTER SHAVIYANI 0782 THAANA LETTER NOONU 0783 THAANA LETTER RAA 0784 THAANA LETTER BAA 0785 THAANA LETTER LHAVIYANI 0786 THAANA LETTER KAAFU 0787 THAANA LETTER ALIFU 0788 THAANA LETTER VAAVU 0789 THAANA LETTER MEEMU 078A THAANA LETTER FAAFU 078B THAANA LETTER DHAALU 078C THAANA LETTER THAA 078D THAANA LETTER LAAMU 078E THAANA LETTER GAAFU 078F THAANA LETTER GNAVIYANI 0790 THAANA LETTER SEENU 0791 THAANA LETTER DAVIYANI 0792 THAANA LETTER ZAVIYANI 0793 THAANA LETTER TAVIYANI 0794 THAANA LETTER YAA 0795 THAANA LETTER PAVIYANI 0796 THAANA LETTER JAVIYANI 0797 THAANA LETTER CHAVIYANI @ Extensions for Arabic 0798 THAANA LETTER TTAA 0799 THAANA LETTER HHAA 079A THAANA LETTER KHAA 079B THAANA LETTER THAALU 079C THAANA LETTER ZAA 079D THAANA LETTER SHEENU 079E THAANA LETTER SAADHU 079F THAANA LETTER DAADHU 07A0 THAANA LETTER TO 07A1 THAANA LETTER ZO 07A2 THAANA LETTER AINU 07A3 THAANA LETTER GHAINU 07A4 THAANA LETTER QAAFU 07A5 THAANA LETTER WAAVU @ Vowels 07A6 THAANA ABAFILI 07A7 THAANA AABAAFILI 07A8 THAANA IBIFILI 07A9 THAANA EEBEEFILI 07AA THAANA UBUFILI 07AB THAANA OOBOOFILI 07AC THAANA EBEFILI 07AD THAANA EYBEYFILI 07AE THAANA OBOFILI 07AF THAANA OABOAFILI 07B0 THAANA SUKUN @ Consonant for Addu dialect 07B1 THAANA LETTER NAA @@ 07C0 NKo 07FF @ Digits 07C0 NKO DIGIT ZERO 07C1 NKO DIGIT ONE 07C2 NKO DIGIT TWO 07C3 NKO DIGIT THREE 07C4 NKO DIGIT FOUR 07C5 NKO DIGIT FIVE 07C6 NKO DIGIT SIX 07C7 NKO DIGIT SEVEN 07C8 NKO DIGIT EIGHT 07C9 NKO DIGIT NINE @ Letters 07CA NKO LETTER A 07CB NKO LETTER EE 07CC NKO LETTER I 07CD NKO LETTER E 07CE NKO LETTER U 07CF NKO LETTER OO 07D0 NKO LETTER O 07D1 NKO LETTER DAGBASINNA 07D2 NKO LETTER N 07D3 NKO LETTER BA 07D4 NKO LETTER PA 07D5 NKO LETTER TA 07D6 NKO LETTER JA 07D7 NKO LETTER CHA 07D8 NKO LETTER DA 07D9 NKO LETTER RA 07DA NKO LETTER RRA 07DB NKO LETTER SA 07DC NKO LETTER GBA 07DD NKO LETTER FA 07DE NKO LETTER KA 07DF NKO LETTER LA 07E0 NKO LETTER NA WOLOSO 07E1 NKO LETTER MA 07E2 NKO LETTER NYA 07E3 NKO LETTER NA 07E4 NKO LETTER HA 07E5 NKO LETTER WA 07E6 NKO LETTER YA 07E7 NKO LETTER NYA WOLOSO @ Archaic letters 07E8 NKO LETTER JONA JA 07E9 NKO LETTER JONA CHA 07EA NKO LETTER JONA RA x (nko letter ra - 07D9) @ Tone marks 07EB NKO COMBINING SHORT HIGH TONE x (combining macron - 0304) 07EC NKO COMBINING SHORT LOW TONE x (combining tilde - 0303) 07ED NKO COMBINING SHORT RISING TONE x (combining dot above - 0307) 07EE NKO COMBINING LONG DESCENDING TONE x (combining circumflex accent - 0302) 07EF NKO COMBINING LONG HIGH TONE 07F0 NKO COMBINING LONG LOW TONE 07F1 NKO COMBINING LONG RISING TONE 07F2 NKO COMBINING NASALIZATION MARK x (combining dot below - 0323) 07F3 NKO COMBINING DOUBLE DOT ABOVE x (combining diaeresis - 0308) 07F4 NKO HIGH TONE APOSTROPHE x (modifier letter apostrophe - 02BC) 07F5 NKO LOW TONE APOSTROPHE x (modifier letter turned comma - 02BB) @ Symbol 07F6 NKO SYMBOL OO DENNEN @ Punctuation 07F7 NKO SYMBOL GBAKURUNEN 07F8 NKO COMMA 07F9 NKO EXCLAMATION MARK @ Letter extender 07FA NKO LAJANYALAN x (low line - 005F) x (arabic tatweel - 0640) @@ 0800 Samaritan 083F @ Letters 0800 SAMARITAN LETTER ALAF 0801 SAMARITAN LETTER BIT 0802 SAMARITAN LETTER GAMAN 0803 SAMARITAN LETTER DALAT 0804 SAMARITAN LETTER IY 0805 SAMARITAN LETTER BAA 0806 SAMARITAN LETTER ZEN 0807 SAMARITAN LETTER IT 0808 SAMARITAN LETTER TIT 0809 SAMARITAN LETTER YUT 080A SAMARITAN LETTER KAAF 080B SAMARITAN LETTER LABAT 080C SAMARITAN LETTER MIM 080D SAMARITAN LETTER NUN 080E SAMARITAN LETTER SINGAAT 080F SAMARITAN LETTER IN 0810 SAMARITAN LETTER FI 0811 SAMARITAN LETTER TSAADIY 0812 SAMARITAN LETTER QUF 0813 SAMARITAN LETTER RISH 0814 SAMARITAN LETTER SHAN 0815 SAMARITAN LETTER TAAF @ Consonant modifiers 0816 SAMARITAN MARK IN 0817 SAMARITAN MARK IN-ALAF 0818 SAMARITAN MARK OCCLUSION 0819 SAMARITAN MARK DAGESH 081A SAMARITAN MODIFIER LETTER EPENTHETIC YUT 081B SAMARITAN MARK EPENTHETIC YUT @ Vowel signs 081C SAMARITAN VOWEL SIGN LONG E = fatha al-nida 081D SAMARITAN VOWEL SIGN E 081E SAMARITAN VOWEL SIGN OVERLONG AA = fatha al-ima 081F SAMARITAN VOWEL SIGN LONG AA 0820 SAMARITAN VOWEL SIGN AA 0821 SAMARITAN VOWEL SIGN OVERLONG A = fatha al-iha 0822 SAMARITAN VOWEL SIGN LONG A 0823 SAMARITAN VOWEL SIGN A 0824 SAMARITAN MODIFIER LETTER SHORT A 0825 SAMARITAN VOWEL SIGN SHORT A = fatha 0826 SAMARITAN VOWEL SIGN LONG U = damma 0827 SAMARITAN VOWEL SIGN U 0828 SAMARITAN MODIFIER LETTER I 0829 SAMARITAN VOWEL SIGN LONG I = kasra 082A SAMARITAN VOWEL SIGN I 082B SAMARITAN VOWEL SIGN O 082C SAMARITAN VOWEL SIGN SUKUN @ Variant reading sign 082D SAMARITAN MARK NEQUDAA @ Punctuation 0830 SAMARITAN PUNCTUATION NEQUDAA = word separator 0831 SAMARITAN PUNCTUATION AFSAAQ = interruption 0832 SAMARITAN PUNCTUATION ANGED = restraint 0833 SAMARITAN PUNCTUATION BAU = prayer 0834 SAMARITAN PUNCTUATION ATMAAU = surprise 0835 SAMARITAN PUNCTUATION SHIYYAALAA = question 0836 SAMARITAN ABBREVIATION MARK 0837 SAMARITAN PUNCTUATION MELODIC QITSA 0838 SAMARITAN PUNCTUATION ZIQAA = shouting 0839 SAMARITAN PUNCTUATION QITSA = end of section 083A SAMARITAN PUNCTUATION ZAEF = outburst 083B SAMARITAN PUNCTUATION TURU = teaching 083C SAMARITAN PUNCTUATION ARKAANU = submissiveness 083D SAMARITAN PUNCTUATION SOF MASHFAAT = full stop 083E SAMARITAN PUNCTUATION ANNAAU = rest @@ 0840 Mandaic 085F @ Letters 0840 MANDAIC LETTER HALQA = a 0841 MANDAIC LETTER AB 0842 MANDAIC LETTER AG 0843 MANDAIC LETTER AD 0844 MANDAIC LETTER AH 0845 MANDAIC LETTER USHENNA = u 0846 MANDAIC LETTER AZ 0847 MANDAIC LETTER IT = pharyngeal hu 0848 MANDAIC LETTER ATT 0849 MANDAIC LETTER AKSA = i 084A MANDAIC LETTER AK 084B MANDAIC LETTER AL 084C MANDAIC LETTER AM 084D MANDAIC LETTER AN 084E MANDAIC LETTER AS 084F MANDAIC LETTER IN 0850 MANDAIC LETTER AP 0851 MANDAIC LETTER ASZ 0852 MANDAIC LETTER AQ 0853 MANDAIC LETTER AR 0854 MANDAIC LETTER ASH 0855 MANDAIC LETTER AT 0856 MANDAIC LETTER DUSHENNA = di 0857 MANDAIC LETTER KAD 0858 MANDAIC LETTER AIN @ Diacritics 0859 MANDAIC AFFRICATION MARK 085A MANDAIC VOCALIZATION MARK 085B MANDAIC GEMINATION MARK @ Punctuation 085E MANDAIC PUNCTUATION @@ 08A0 Arabic Extended-A 08FF @ Arabic letters for African languages 08A0 ARABIC LETTER BEH WITH SMALL V BELOW 08A1 ARABIC LETTER BEH WITH HAMZA ABOVE * Adamawa Fulfulde (Cameroon) * used for the implosive bilabial stop x (latin small letter b with hook - 0253) 08A2 ARABIC LETTER JEEM WITH TWO DOTS ABOVE 08A3 ARABIC LETTER TAH WITH TWO DOTS ABOVE 08A4 ARABIC LETTER FEH WITH DOT BELOW AND THREE DOTS ABOVE 08A5 ARABIC LETTER QAF WITH DOT BELOW 08A6 ARABIC LETTER LAM WITH DOUBLE BAR 08A7 ARABIC LETTER MEEM WITH THREE DOTS ABOVE 08A8 ARABIC LETTER YEH WITH TWO DOTS BELOW AND HAMZA ABOVE * Adamawa Fulfulde * used for the implosive palatal approximant, realized as pharyngealization of the approximant x (latin small letter y with hook - 01B4) 08A9 ARABIC LETTER YEH WITH TWO DOTS BELOW AND DOT ABOVE * Adamawa Fulfulde * used for the voiced palatal nasal x (latin small letter n with left hook - 0272) @ Dependent consonants for Rohingya 08AA ARABIC LETTER REH WITH LOOP = bottya-reh 08AB ARABIC LETTER WAW WITH DOT WITHIN = nota-wa 08AC ARABIC LETTER ROHINGYA YEH = bottya-yeh @ Arabic letters for European and Central Asian languages 08AD ARABIC LETTER LOW ALEF * Bashkir, Tatar 08AE ARABIC LETTER DAL WITH THREE DOTS BELOW * Belarusian 08AF ARABIC LETTER SAD WITH THREE DOTS BELOW * Belarusian 08B0 ARABIC LETTER GAF WITH INVERTED STROKE * Crimean Tatar, Chechen, Lak 08B1 ARABIC LETTER STRAIGHT WAW * Tatar @ Arabic letter for Berber 08B2 ARABIC LETTER ZAIN WITH INVERTED V ABOVE @ Arabic letters for Arwi 08B3 ARABIC LETTER AIN WITH THREE DOTS BELOW 08B4 ARABIC LETTER KAF WITH DOT BELOW @ Arabic letters for Bravanese 08B6 ARABIC LETTER BEH WITH SMALL MEEM ABOVE 08B7 ARABIC LETTER PEH WITH SMALL MEEM ABOVE 08B8 ARABIC LETTER TEH WITH SMALL TEH ABOVE 08B9 ARABIC LETTER REH WITH SMALL NOON ABOVE 08BA ARABIC LETTER YEH WITH TWO DOTS BELOW AND SMALL NOON ABOVE @ Arabic letters for Warsh orthography @+ The Warsh orthography is the most widespread tradition for the Arabic script in North and West Africa. 08BB ARABIC LETTER AFRICAN FEH * initial and medial forms have one dot below x (arabic letter dotless feh - 06A1) x (arabic letter feh with dot moved below - 06A2) 08BC ARABIC LETTER AFRICAN QAF * initial and medial forms have one dot above x (arabic letter dotless qaf - 066F) x (arabic letter qaf with dot above - 06A7) 08BD ARABIC LETTER AFRICAN NOON * initial and medial forms have one dot above x (arabic letter noon ghunna - 06BA) x (arabic letter noon - 0646) @ Pakistani Quranic marks 08D4 ARABIC SMALL HIGH WORD AR-RUB 08D5 ARABIC SMALL HIGH SAD 08D6 ARABIC SMALL HIGH AIN 08D7 ARABIC SMALL HIGH QAF 08D8 ARABIC SMALL HIGH NOON WITH KASRA 08D9 ARABIC SMALL LOW NOON WITH KASRA 08DA ARABIC SMALL HIGH WORD ATH-THALATHA 08DB ARABIC SMALL HIGH WORD AS-SAJDA 08DC ARABIC SMALL HIGH WORD AN-NISF 08DD ARABIC SMALL HIGH WORD SAKTA 08DE ARABIC SMALL HIGH WORD QIF 08DF ARABIC SMALL HIGH WORD WAQFA 08E0 ARABIC SMALL HIGH FOOTNOTE MARKER 08E1 ARABIC SMALL HIGH SIGN SAFHA 08E2 ARABIC DISPUTED END OF AYAH @ Extended vowel sign for Arwi 08E3 ARABIC TURNED DAMMA BELOW @ Extended vowel signs for Rohingya 08E4 ARABIC CURLY FATHA 08E5 ARABIC CURLY DAMMA 08E6 ARABIC CURLY KASRA 08E7 ARABIC CURLY FATHATAN 08E8 ARABIC CURLY DAMMATAN 08E9 ARABIC CURLY KASRATAN @ Tone marks for Rohingya 08EA ARABIC TONE ONE DOT ABOVE 08EB ARABIC TONE TWO DOTS ABOVE 08EC ARABIC TONE LOOP ABOVE 08ED ARABIC TONE ONE DOT BELOW 08EE ARABIC TONE TWO DOTS BELOW 08EF ARABIC TONE LOOP BELOW @ Quranic annotation signs 08F0 ARABIC OPEN FATHATAN = successive fathatan 08F1 ARABIC OPEN DAMMATAN = successive dammatan 08F2 ARABIC OPEN KASRATAN = successive kasratan 08F3 ARABIC SMALL HIGH WAW @ Extended vowel signs for African languages 08F4 ARABIC FATHA WITH RING 08F5 ARABIC FATHA WITH DOT ABOVE 08F6 ARABIC KASRA WITH DOT BELOW * also used in Philippine languages 08F7 ARABIC LEFT ARROWHEAD ABOVE 08F8 ARABIC RIGHT ARROWHEAD ABOVE 08F9 ARABIC LEFT ARROWHEAD BELOW 08FA ARABIC RIGHT ARROWHEAD BELOW 08FB ARABIC DOUBLE RIGHT ARROWHEAD ABOVE 08FC ARABIC DOUBLE RIGHT ARROWHEAD ABOVE WITH DOT 08FD ARABIC RIGHT ARROWHEAD ABOVE WITH DOT @ Extended vowel signs 08FE ARABIC DAMMA WITH DOT * Philippine languages 08FF ARABIC MARK SIDEWAYS NOON GHUNNA @@ 0900 Devanagari 097F @@+ @ Various signs 0900 DEVANAGARI SIGN INVERTED CANDRABINDU = vaidika adhomukha candrabindu 0901 DEVANAGARI SIGN CANDRABINDU = anunasika x (combining candrabindu - 0310) 0902 DEVANAGARI SIGN ANUSVARA = bindu 0903 DEVANAGARI SIGN VISARGA @ Independent vowels 0904 DEVANAGARI LETTER SHORT A 0905 DEVANAGARI LETTER A 0906 DEVANAGARI LETTER AA 0907 DEVANAGARI LETTER I 0908 DEVANAGARI LETTER II 0909 DEVANAGARI LETTER U 090A DEVANAGARI LETTER UU 090B DEVANAGARI LETTER VOCALIC R 090C DEVANAGARI LETTER VOCALIC L 090D DEVANAGARI LETTER CANDRA E 090E DEVANAGARI LETTER SHORT E * Kashmiri, Bihari languages * also used for transcribing Dravidian short e 090F DEVANAGARI LETTER E 0910 DEVANAGARI LETTER AI 0911 DEVANAGARI LETTER CANDRA O 0912 DEVANAGARI LETTER SHORT O * Kashmiri, Bihari languages * also used for transcribing Dravidian short o 0913 DEVANAGARI LETTER O 0914 DEVANAGARI LETTER AU @ Consonants 0915 DEVANAGARI LETTER KA 0916 DEVANAGARI LETTER KHA 0917 DEVANAGARI LETTER GA 0918 DEVANAGARI LETTER GHA 0919 DEVANAGARI LETTER NGA 091A DEVANAGARI LETTER CA 091B DEVANAGARI LETTER CHA 091C DEVANAGARI LETTER JA 091D DEVANAGARI LETTER JHA 091E DEVANAGARI LETTER NYA 091F DEVANAGARI LETTER TTA 0920 DEVANAGARI LETTER TTHA 0921 DEVANAGARI LETTER DDA 0922 DEVANAGARI LETTER DDHA 0923 DEVANAGARI LETTER NNA 0924 DEVANAGARI LETTER TA 0925 DEVANAGARI LETTER THA 0926 DEVANAGARI LETTER DA 0927 DEVANAGARI LETTER DHA 0928 DEVANAGARI LETTER NA 0929 DEVANAGARI LETTER NNNA * for transcribing Dravidian alveolar n : 0928 093C 092A DEVANAGARI LETTER PA 092B DEVANAGARI LETTER PHA 092C DEVANAGARI LETTER BA 092D DEVANAGARI LETTER BHA 092E DEVANAGARI LETTER MA 092F DEVANAGARI LETTER YA 0930 DEVANAGARI LETTER RA 0931 DEVANAGARI LETTER RRA * for transcribing Dravidian alveolar r * half form is represented as "Eyelash RA" : 0930 093C 0932 DEVANAGARI LETTER LA 0933 DEVANAGARI LETTER LLA 0934 DEVANAGARI LETTER LLLA * for transcribing Dravidian l : 0933 093C 0935 DEVANAGARI LETTER VA 0936 DEVANAGARI LETTER SHA 0937 DEVANAGARI LETTER SSA 0938 DEVANAGARI LETTER SA 0939 DEVANAGARI LETTER HA @ Dependent vowel signs @+ These dependent vowel signs are used in Kashmiri and in the Bihari languages (Bhojpuri, Magadhi, and Maithili). 093A DEVANAGARI VOWEL SIGN OE 093B DEVANAGARI VOWEL SIGN OOE @ Various signs 093C DEVANAGARI SIGN NUKTA * for extending the alphabet to new letters 093D DEVANAGARI SIGN AVAGRAHA @ Dependent vowel signs 093E DEVANAGARI VOWEL SIGN AA 093F DEVANAGARI VOWEL SIGN I * stands to the left of the consonant 0940 DEVANAGARI VOWEL SIGN II 0941 DEVANAGARI VOWEL SIGN U 0942 DEVANAGARI VOWEL SIGN UU 0943 DEVANAGARI VOWEL SIGN VOCALIC R 0944 DEVANAGARI VOWEL SIGN VOCALIC RR 0945 DEVANAGARI VOWEL SIGN CANDRA E = candra 0946 DEVANAGARI VOWEL SIGN SHORT E * Kashmiri, Bihari languages * also used for transcribing Dravidian short e 0947 DEVANAGARI VOWEL SIGN E 0948 DEVANAGARI VOWEL SIGN AI 0949 DEVANAGARI VOWEL SIGN CANDRA O 094A DEVANAGARI VOWEL SIGN SHORT O * Kashmiri, Bihari languages * also used for transcribing Dravidian short o 094B DEVANAGARI VOWEL SIGN O 094C DEVANAGARI VOWEL SIGN AU @ Virama 094D DEVANAGARI SIGN VIRAMA = halant (the preferred Hindi name) * suppresses inherent vowel @ Dependent vowel signs 094E DEVANAGARI VOWEL SIGN PRISHTHAMATRA E * character has historic use only * combines with E to form AI, with AA to form O, and with O to form AU 094F DEVANAGARI VOWEL SIGN AW * Kashmiri, Bihari languages @ Sign 0950 DEVANAGARI OM x (om symbol - 1F549) @ Vedic tone marks 0951 DEVANAGARI STRESS SIGN UDATTA = Vedic tone svarita * mostly used for svarita, with rare use for udatta * used also in Vedic texts written in other scripts x (vedic tone double svarita - 1CDA) 0952 DEVANAGARI STRESS SIGN ANUDATTA = Vedic tone anudatta * used also in Vedic texts written in other scripts x (vedic tone kathaka anudatta - 1CDC) @ Accent marks 0953 DEVANAGARI GRAVE ACCENT x (combining grave accent - 0300) 0954 DEVANAGARI ACUTE ACCENT x (combining acute accent - 0301) @ Dependent vowel sign 0955 DEVANAGARI VOWEL SIGN CANDRA LONG E * used in transliteration of Avestan @ Dependent vowel signs for Kashmiri 0956 DEVANAGARI VOWEL SIGN UE 0957 DEVANAGARI VOWEL SIGN UUE @ Additional consonants 0958 DEVANAGARI LETTER QA : 0915 093C 0959 DEVANAGARI LETTER KHHA : 0916 093C 095A DEVANAGARI LETTER GHHA : 0917 093C 095B DEVANAGARI LETTER ZA : 091C 093C 095C DEVANAGARI LETTER DDDHA : 0921 093C 095D DEVANAGARI LETTER RHA : 0922 093C 095E DEVANAGARI LETTER FA : 092B 093C 095F DEVANAGARI LETTER YYA : 092F 093C @ Additional vowels for Sanskrit 0960 DEVANAGARI LETTER VOCALIC RR 0961 DEVANAGARI LETTER VOCALIC LL 0962 DEVANAGARI VOWEL SIGN VOCALIC L 0963 DEVANAGARI VOWEL SIGN VOCALIC LL @ Generic punctuation for scripts of India @+ These punctuation marks are for common use for the scripts of India despite being named "DEVANAGARI". They also occur as abbreviation signs in some South Indian scripts. 0964 DEVANAGARI DANDA = purna viram * phrase separator 0965 DEVANAGARI DOUBLE DANDA = deergh viram @ Digits 0966 DEVANAGARI DIGIT ZERO * also used to represent an anusvara following digits indicating secondary svara-s in Samavedic texts 0967 DEVANAGARI DIGIT ONE 0968 DEVANAGARI DIGIT TWO 0969 DEVANAGARI DIGIT THREE 096A DEVANAGARI DIGIT FOUR 096B DEVANAGARI DIGIT FIVE 096C DEVANAGARI DIGIT SIX 096D DEVANAGARI DIGIT SEVEN 096E DEVANAGARI DIGIT EIGHT 096F DEVANAGARI DIGIT NINE @ Abbreviation sign 0970 DEVANAGARI ABBREVIATION SIGN * intended for Devanagari-specific abbreviations 0971 DEVANAGARI SIGN HIGH SPACING DOT @ Independent vowel for Marathi 0972 DEVANAGARI LETTER CANDRA A @ Independent vowels @+ These independent vowels are used in Kashmiri and in the Bihari languages. 0973 DEVANAGARI LETTER OE 0974 DEVANAGARI LETTER OOE 0975 DEVANAGARI LETTER AW @ Independent vowels for Kashmiri 0976 DEVANAGARI LETTER UE 0977 DEVANAGARI LETTER UUE @ Additional consonants 0978 DEVANAGARI LETTER MARWARI DDA 0979 DEVANAGARI LETTER ZHA * used in transliteration of Avestan x (gujarati letter zha - 0AF9) 097A DEVANAGARI LETTER HEAVY YA * used for an affricated glide JJYA @ Sindhi implosives 097B DEVANAGARI LETTER GGA 097C DEVANAGARI LETTER JJA @ Glottal stop 097D DEVANAGARI LETTER GLOTTAL STOP * used for writing Limbu in Devanagari * a glyph variant has the connecting top bar @ Sindhi implosives 097E DEVANAGARI LETTER DDDA 097F DEVANAGARI LETTER BBA @@ 0980 Bengali 09FF @+ The Bengali script is also known as Bangla. In Assam, the preferred name of the script is Asamiya or Assamese. The Assamese language has also been written historically using distinct regional scripts known as Kamrupi. @ Various signs 0980 BENGALI ANJI = siddham, siddhirastu * used at the beginning of texts as an invocation 0981 BENGALI SIGN CANDRABINDU 0982 BENGALI SIGN ANUSVARA 0983 BENGALI SIGN VISARGA @ Independent vowels 0985 BENGALI LETTER A 0986 BENGALI LETTER AA 0987 BENGALI LETTER I 0988 BENGALI LETTER II 0989 BENGALI LETTER U 098A BENGALI LETTER UU 098B BENGALI LETTER VOCALIC R 098C BENGALI LETTER VOCALIC L 098F BENGALI LETTER E 0990 BENGALI LETTER AI 0993 BENGALI LETTER O 0994 BENGALI LETTER AU @ Consonants 0995 BENGALI LETTER KA 0996 BENGALI LETTER KHA 0997 BENGALI LETTER GA 0998 BENGALI LETTER GHA 0999 BENGALI LETTER NGA 099A BENGALI LETTER CA 099B BENGALI LETTER CHA 099C BENGALI LETTER JA 099D BENGALI LETTER JHA 099E BENGALI LETTER NYA 099F BENGALI LETTER TTA 09A0 BENGALI LETTER TTHA 09A1 BENGALI LETTER DDA 09A2 BENGALI LETTER DDHA 09A3 BENGALI LETTER NNA 09A4 BENGALI LETTER TA 09A5 BENGALI LETTER THA 09A6 BENGALI LETTER DA 09A7 BENGALI LETTER DHA 09A8 BENGALI LETTER NA 09AA BENGALI LETTER PA 09AB BENGALI LETTER PHA 09AC BENGALI LETTER BA = Bengali va, wa 09AD BENGALI LETTER BHA 09AE BENGALI LETTER MA 09AF BENGALI LETTER YA 09B0 BENGALI LETTER RA 09B2 BENGALI LETTER LA 09B6 BENGALI LETTER SHA 09B7 BENGALI LETTER SSA 09B8 BENGALI LETTER SA 09B9 BENGALI LETTER HA @ Various signs 09BC BENGALI SIGN NUKTA * for extending the alphabet to new letters 09BD BENGALI SIGN AVAGRAHA @ Dependent vowel signs 09BE BENGALI VOWEL SIGN AA 09BF BENGALI VOWEL SIGN I * stands to the left of the consonant 09C0 BENGALI VOWEL SIGN II 09C1 BENGALI VOWEL SIGN U 09C2 BENGALI VOWEL SIGN UU 09C3 BENGALI VOWEL SIGN VOCALIC R 09C4 BENGALI VOWEL SIGN VOCALIC RR 09C7 BENGALI VOWEL SIGN E * stands to the left of the consonant 09C8 BENGALI VOWEL SIGN AI * stands to the left of the consonant @ Two-part dependent vowel signs @+ These vowel signs have glyph pieces which stand on both sides of the consonant; they follow the consonant in logical order, and should be handled as a unit for most processing. 09CB BENGALI VOWEL SIGN O : 09C7 09BE 09CC BENGALI VOWEL SIGN AU : 09C7 09D7 @ Virama 09CD BENGALI SIGN VIRAMA = hasant (Bengali term for halant) @ Additional consonant 09CE BENGALI LETTER KHANDA TA * a dead consonant form of ta, without implicit vowel, used in some sequences @ Sign 09D7 BENGALI AU LENGTH MARK @ Additional consonants 09DC BENGALI LETTER RRA : 09A1 09BC 09DD BENGALI LETTER RHA : 09A2 09BC 09DF BENGALI LETTER YYA : 09AF 09BC @ Additional vowels for Sanskrit 09E0 BENGALI LETTER VOCALIC RR 09E1 BENGALI LETTER VOCALIC LL 09E2 BENGALI VOWEL SIGN VOCALIC L 09E3 BENGALI VOWEL SIGN VOCALIC LL @ Reserved @+ For viram punctuation, use the generic Indic 0964 and 0965. Note that these punctuation marks are referred to as dahri and double dahri in Bangla. 09E4 x (devanagari danda - 0964) 09E5 x (devanagari double danda - 0965) @ Digits 09E6 BENGALI DIGIT ZERO 09E7 BENGALI DIGIT ONE 09E8 BENGALI DIGIT TWO 09E9 BENGALI DIGIT THREE 09EA BENGALI DIGIT FOUR 09EB BENGALI DIGIT FIVE 09EC BENGALI DIGIT SIX 09ED BENGALI DIGIT SEVEN 09EE BENGALI DIGIT EIGHT 09EF BENGALI DIGIT NINE @ Additions for Assamese 09F0 BENGALI LETTER RA WITH MIDDLE DIAGONAL = Assamese letter ra 09F1 BENGALI LETTER RA WITH LOWER DIAGONAL = Assamese letter wa = bengali letter va with lower diagonal (1.0) @ Currency signs 09F2 BENGALI RUPEE MARK = taka * historic currency sign 09F3 BENGALI RUPEE SIGN = Bangladeshi taka @ Historic symbols for fractional values @+ The use of these signs is not limited to currency, despite the character names. 09F4 BENGALI CURRENCY NUMERATOR ONE * not in current usage 09F5 BENGALI CURRENCY NUMERATOR TWO * not in current usage 09F6 BENGALI CURRENCY NUMERATOR THREE * not in current usage 09F7 BENGALI CURRENCY NUMERATOR FOUR 09F8 BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR 09F9 BENGALI CURRENCY DENOMINATOR SIXTEEN @ Sign 09FA BENGALI ISSHAR = ishvar * represents the name of a deity = svargiya * written before the name of a deceased person @ Historic currency sign 09FB BENGALI GANDA MARK @@ 0A00 Gurmukhi 0A7F @ Various signs 0A01 GURMUKHI SIGN ADAK BINDI 0A02 GURMUKHI SIGN BINDI 0A03 GURMUKHI SIGN VISARGA @ Independent vowels 0A05 GURMUKHI LETTER A = aira 0A06 GURMUKHI LETTER AA 0A07 GURMUKHI LETTER I 0A08 GURMUKHI LETTER II 0A09 GURMUKHI LETTER U 0A0A GURMUKHI LETTER UU 0A0F GURMUKHI LETTER EE 0A10 GURMUKHI LETTER AI 0A13 GURMUKHI LETTER OO 0A14 GURMUKHI LETTER AU @ Consonants 0A15 GURMUKHI LETTER KA 0A16 GURMUKHI LETTER KHA 0A17 GURMUKHI LETTER GA 0A18 GURMUKHI LETTER GHA 0A19 GURMUKHI LETTER NGA 0A1A GURMUKHI LETTER CA 0A1B GURMUKHI LETTER CHA 0A1C GURMUKHI LETTER JA 0A1D GURMUKHI LETTER JHA 0A1E GURMUKHI LETTER NYA 0A1F GURMUKHI LETTER TTA 0A20 GURMUKHI LETTER TTHA 0A21 GURMUKHI LETTER DDA 0A22 GURMUKHI LETTER DDHA 0A23 GURMUKHI LETTER NNA 0A24 GURMUKHI LETTER TA 0A25 GURMUKHI LETTER THA 0A26 GURMUKHI LETTER DA 0A27 GURMUKHI LETTER DHA 0A28 GURMUKHI LETTER NA 0A2A GURMUKHI LETTER PA 0A2B GURMUKHI LETTER PHA 0A2C GURMUKHI LETTER BA 0A2D GURMUKHI LETTER BHA 0A2E GURMUKHI LETTER MA 0A2F GURMUKHI LETTER YA 0A30 GURMUKHI LETTER RA 0A32 GURMUKHI LETTER LA 0A33 GURMUKHI LETTER LLA : 0A32 0A3C 0A35 GURMUKHI LETTER VA 0A36 GURMUKHI LETTER SHA : 0A38 0A3C 0A38 GURMUKHI LETTER SA 0A39 GURMUKHI LETTER HA @ Various signs 0A3C GURMUKHI SIGN NUKTA = pairin bindi * for extending the alphabet to new letters @ Dependent vowel signs 0A3E GURMUKHI VOWEL SIGN AA = kanna 0A3F GURMUKHI VOWEL SIGN I = sihari * stands to the left of the consonant 0A40 GURMUKHI VOWEL SIGN II = bihari 0A41 GURMUKHI VOWEL SIGN U = aunkar 0A42 GURMUKHI VOWEL SIGN UU = dulainkar 0A47 GURMUKHI VOWEL SIGN EE = lanvan 0A48 GURMUKHI VOWEL SIGN AI = dulanvan 0A4B GURMUKHI VOWEL SIGN OO = hora 0A4C GURMUKHI VOWEL SIGN AU = kanaura @ Virama 0A4D GURMUKHI SIGN VIRAMA @ Sign 0A51 GURMUKHI SIGN UDAAT @ Additional consonants 0A59 GURMUKHI LETTER KHHA : 0A16 0A3C 0A5A GURMUKHI LETTER GHHA : 0A17 0A3C 0A5B GURMUKHI LETTER ZA : 0A1C 0A3C 0A5C GURMUKHI LETTER RRA 0A5E GURMUKHI LETTER FA : 0A2B 0A3C @ Reserved @+ For viram punctuation, use the generic Indic 0964 and 0965. 0A64 x (devanagari danda - 0964) 0A65 x (devanagari double danda - 0965) @ Digits 0A66 GURMUKHI DIGIT ZERO 0A67 GURMUKHI DIGIT ONE 0A68 GURMUKHI DIGIT TWO 0A69 GURMUKHI DIGIT THREE 0A6A GURMUKHI DIGIT FOUR 0A6B GURMUKHI DIGIT FIVE 0A6C GURMUKHI DIGIT SIX 0A6D GURMUKHI DIGIT SEVEN 0A6E GURMUKHI DIGIT EIGHT 0A6F GURMUKHI DIGIT NINE @ Gurmukhi-specific additions 0A70 GURMUKHI TIPPI * nasalization 0A71 GURMUKHI ADDAK * doubles following consonant 0A72 GURMUKHI IRI * base for vowels 0A73 GURMUKHI URA * base for vowels 0A74 GURMUKHI EK ONKAR * God is One 0A75 GURMUKHI SIGN YAKASH @@ 0A80 Gujarati 0AFF @ Various signs 0A81 GUJARATI SIGN CANDRABINDU 0A82 GUJARATI SIGN ANUSVARA 0A83 GUJARATI SIGN VISARGA @ Independent vowels 0A85 GUJARATI LETTER A 0A86 GUJARATI LETTER AA 0A87 GUJARATI LETTER I 0A88 GUJARATI LETTER II 0A89 GUJARATI LETTER U 0A8A GUJARATI LETTER UU 0A8B GUJARATI LETTER VOCALIC R 0A8C GUJARATI LETTER VOCALIC L * used with Sanskrit text 0A8D GUJARATI VOWEL CANDRA E 0A8F GUJARATI LETTER E 0A90 GUJARATI LETTER AI 0A91 GUJARATI VOWEL CANDRA O 0A93 GUJARATI LETTER O 0A94 GUJARATI LETTER AU @ Consonants 0A95 GUJARATI LETTER KA 0A96 GUJARATI LETTER KHA 0A97 GUJARATI LETTER GA 0A98 GUJARATI LETTER GHA 0A99 GUJARATI LETTER NGA 0A9A GUJARATI LETTER CA 0A9B GUJARATI LETTER CHA 0A9C GUJARATI LETTER JA 0A9D GUJARATI LETTER JHA 0A9E GUJARATI LETTER NYA 0A9F GUJARATI LETTER TTA 0AA0 GUJARATI LETTER TTHA 0AA1 GUJARATI LETTER DDA 0AA2 GUJARATI LETTER DDHA 0AA3 GUJARATI LETTER NNA 0AA4 GUJARATI LETTER TA 0AA5 GUJARATI LETTER THA 0AA6 GUJARATI LETTER DA 0AA7 GUJARATI LETTER DHA 0AA8 GUJARATI LETTER NA 0AAA GUJARATI LETTER PA 0AAB GUJARATI LETTER PHA 0AAC GUJARATI LETTER BA 0AAD GUJARATI LETTER BHA 0AAE GUJARATI LETTER MA 0AAF GUJARATI LETTER YA 0AB0 GUJARATI LETTER RA 0AB2 GUJARATI LETTER LA 0AB3 GUJARATI LETTER LLA 0AB5 GUJARATI LETTER VA 0AB6 GUJARATI LETTER SHA 0AB7 GUJARATI LETTER SSA 0AB8 GUJARATI LETTER SA 0AB9 GUJARATI LETTER HA @ Various signs 0ABC GUJARATI SIGN NUKTA * for extending the alphabet to new letters 0ABD GUJARATI SIGN AVAGRAHA @ Dependent vowel signs 0ABE GUJARATI VOWEL SIGN AA 0ABF GUJARATI VOWEL SIGN I * stands to the left of the consonant 0AC0 GUJARATI VOWEL SIGN II 0AC1 GUJARATI VOWEL SIGN U 0AC2 GUJARATI VOWEL SIGN UU 0AC3 GUJARATI VOWEL SIGN VOCALIC R 0AC4 GUJARATI VOWEL SIGN VOCALIC RR 0AC5 GUJARATI VOWEL SIGN CANDRA E 0AC7 GUJARATI VOWEL SIGN E 0AC8 GUJARATI VOWEL SIGN AI 0AC9 GUJARATI VOWEL SIGN CANDRA O 0ACB GUJARATI VOWEL SIGN O 0ACC GUJARATI VOWEL SIGN AU @ Virama 0ACD GUJARATI SIGN VIRAMA @ Various signs 0AD0 GUJARATI OM @ Additional vowels for Sanskrit 0AE0 GUJARATI LETTER VOCALIC RR 0AE1 GUJARATI LETTER VOCALIC LL 0AE2 GUJARATI VOWEL SIGN VOCALIC L 0AE3 GUJARATI VOWEL SIGN VOCALIC LL @ Reserved @+ For viram punctuation, use the generic Indic 0964 and 0965. 0AE4 x (devanagari danda - 0964) 0AE5 x (devanagari double danda - 0965) @ Digits 0AE6 GUJARATI DIGIT ZERO 0AE7 GUJARATI DIGIT ONE 0AE8 GUJARATI DIGIT TWO 0AE9 GUJARATI DIGIT THREE 0AEA GUJARATI DIGIT FOUR 0AEB GUJARATI DIGIT FIVE 0AEC GUJARATI DIGIT SIX 0AED GUJARATI DIGIT SEVEN 0AEE GUJARATI DIGIT EIGHT 0AEF GUJARATI DIGIT NINE @ Abbreviation sign 0AF0 GUJARATI ABBREVIATION SIGN @ Currency sign 0AF1 GUJARATI RUPEE SIGN * preferred spelling is 0AB0 0AC2 0AF0 @ Additional consonant 0AF9 GUJARATI LETTER ZHA * used in transliteration of Avestan x (devanagari letter zha - 0979) @@ 0B00 Oriya 0B7F @+ As of 2012, the name "Oriya" for this script and language is officially spelled "Odia" in India. That change in spelling does not affect the Unicode block or character names, which are constrained by stability guarantees. @ Various signs 0B01 ORIYA SIGN CANDRABINDU 0B02 ORIYA SIGN ANUSVARA 0B03 ORIYA SIGN VISARGA @ Independent vowels 0B05 ORIYA LETTER A 0B06 ORIYA LETTER AA 0B07 ORIYA LETTER I 0B08 ORIYA LETTER II 0B09 ORIYA LETTER U 0B0A ORIYA LETTER UU 0B0B ORIYA LETTER VOCALIC R 0B0C ORIYA LETTER VOCALIC L 0B0F ORIYA LETTER E 0B10 ORIYA LETTER AI 0B13 ORIYA LETTER O 0B14 ORIYA LETTER AU @ Consonants 0B15 ORIYA LETTER KA 0B16 ORIYA LETTER KHA 0B17 ORIYA LETTER GA 0B18 ORIYA LETTER GHA 0B19 ORIYA LETTER NGA 0B1A ORIYA LETTER CA 0B1B ORIYA LETTER CHA 0B1C ORIYA LETTER JA 0B1D ORIYA LETTER JHA 0B1E ORIYA LETTER NYA 0B1F ORIYA LETTER TTA 0B20 ORIYA LETTER TTHA 0B21 ORIYA LETTER DDA 0B22 ORIYA LETTER DDHA 0B23 ORIYA LETTER NNA 0B24 ORIYA LETTER TA 0B25 ORIYA LETTER THA 0B26 ORIYA LETTER DA 0B27 ORIYA LETTER DHA 0B28 ORIYA LETTER NA 0B2A ORIYA LETTER PA 0B2B ORIYA LETTER PHA 0B2C ORIYA LETTER BA x (oriya letter va - 0B35) 0B2D ORIYA LETTER BHA 0B2E ORIYA LETTER MA 0B2F ORIYA LETTER YA = ja 0B30 ORIYA LETTER RA 0B32 ORIYA LETTER LA 0B33 ORIYA LETTER LLA 0B35 ORIYA LETTER VA x (oriya letter ba - 0B2C) 0B36 ORIYA LETTER SHA 0B37 ORIYA LETTER SSA 0B38 ORIYA LETTER SA 0B39 ORIYA LETTER HA @ Various signs 0B3C ORIYA SIGN NUKTA * for extending the alphabet to new letters 0B3D ORIYA SIGN AVAGRAHA @ Dependent vowel signs 0B3E ORIYA VOWEL SIGN AA 0B3F ORIYA VOWEL SIGN I 0B40 ORIYA VOWEL SIGN II 0B41 ORIYA VOWEL SIGN U 0B42 ORIYA VOWEL SIGN UU 0B43 ORIYA VOWEL SIGN VOCALIC R 0B44 ORIYA VOWEL SIGN VOCALIC RR 0B47 ORIYA VOWEL SIGN E * stands to the left of the consonant 0B48 ORIYA VOWEL SIGN AI * pieces left of and above the consonant : 0B47 0B56 @ Two-part dependent vowel signs @+ These vowel signs have glyph pieces which stand on both sides of the consonant; they follow the consonant in logical order, and should be handled as a unit for most processing. 0B4B ORIYA VOWEL SIGN O : 0B47 0B3E 0B4C ORIYA VOWEL SIGN AU : 0B47 0B57 @ Virama 0B4D ORIYA SIGN VIRAMA @ Various signs 0B56 ORIYA AI LENGTH MARK 0B57 ORIYA AU LENGTH MARK @ Additional consonants 0B5C ORIYA LETTER RRA = dda : 0B21 0B3C 0B5D ORIYA LETTER RHA = ddha : 0B22 0B3C 0B5F ORIYA LETTER YYA = ya @ Additional vowels for Sanskrit 0B60 ORIYA LETTER VOCALIC RR 0B61 ORIYA LETTER VOCALIC LL @ Dependent vowels 0B62 ORIYA VOWEL SIGN VOCALIC L 0B63 ORIYA VOWEL SIGN VOCALIC LL @ Reserved @+ For viram punctuation, use the generic Indic 0964 and 0965. 0B64 x (devanagari danda - 0964) 0B65 x (devanagari double danda - 0965) @ Digits 0B66 ORIYA DIGIT ZERO 0B67 ORIYA DIGIT ONE 0B68 ORIYA DIGIT TWO 0B69 ORIYA DIGIT THREE 0B6A ORIYA DIGIT FOUR 0B6B ORIYA DIGIT FIVE 0B6C ORIYA DIGIT SIX 0B6D ORIYA DIGIT SEVEN 0B6E ORIYA DIGIT EIGHT 0B6F ORIYA DIGIT NINE @ Sign 0B70 ORIYA ISSHAR @ Additional consonant 0B71 ORIYA LETTER WA x (oriya letter o - 0B13) x (oriya letter va - 0B35) @ Fraction signs 0B72 ORIYA FRACTION ONE QUARTER 0B73 ORIYA FRACTION ONE HALF 0B74 ORIYA FRACTION THREE QUARTERS 0B75 ORIYA FRACTION ONE SIXTEENTH 0B76 ORIYA FRACTION ONE EIGHTH 0B77 ORIYA FRACTION THREE SIXTEENTHS @@ 0B80 Tamil 0BFF @ Various signs @+ The anusvara should not be confused with the use of a circular glyph for the pulli. 0B82 TAMIL SIGN ANUSVARA * not used in Tamil 0B83 TAMIL SIGN VISARGA = aytham * just as for the Tamil pulli, the glyph for aytham may use either dots or rings @ Independent vowels 0B85 TAMIL LETTER A 0B86 TAMIL LETTER AA 0B87 TAMIL LETTER I 0B88 TAMIL LETTER II 0B89 TAMIL LETTER U 0B8A TAMIL LETTER UU 0B8E TAMIL LETTER E 0B8F TAMIL LETTER EE 0B90 TAMIL LETTER AI 0B92 TAMIL LETTER O 0B93 TAMIL LETTER OO 0B94 TAMIL LETTER AU : 0B92 0BD7 @ Consonants 0B95 TAMIL LETTER KA 0B99 TAMIL LETTER NGA * also denotes the measure kuruni/marakkaal 0B9A TAMIL LETTER CA 0B9C TAMIL LETTER JA 0B9E TAMIL LETTER NYA 0B9F TAMIL LETTER TTA 0BA3 TAMIL LETTER NNA 0BA4 TAMIL LETTER TA * also denotes the measure tuuni 0BA8 TAMIL LETTER NA 0BA9 TAMIL LETTER NNNA 0BAA TAMIL LETTER PA = maa * also denotes the fraction one twentieth 0BAE TAMIL LETTER MA 0BAF TAMIL LETTER YA 0BB0 TAMIL LETTER RA 0BB1 TAMIL LETTER RRA 0BB2 TAMIL LETTER LA 0BB3 TAMIL LETTER LLA * also denotes the measure kalam 0BB4 TAMIL LETTER LLLA 0BB5 TAMIL LETTER VA = kaal * also denotes the fraction one quarter 0BB6 TAMIL LETTER SHA 0BB7 TAMIL LETTER SSA 0BB8 TAMIL LETTER SA 0BB9 TAMIL LETTER HA @ Dependent vowel signs 0BBE TAMIL VOWEL SIGN AA 0BBF TAMIL VOWEL SIGN I 0BC0 TAMIL VOWEL SIGN II 0BC1 TAMIL VOWEL SIGN U 0BC2 TAMIL VOWEL SIGN UU 0BC6 TAMIL VOWEL SIGN E * stands to the left of the consonant 0BC7 TAMIL VOWEL SIGN EE * stands to the left of the consonant 0BC8 TAMIL VOWEL SIGN AI * stands to the left of the consonant @ Two-part dependent vowel signs @+ These vowel signs have glyph pieces which stand on both sides of the consonant; they follow the consonant in logical order, and should be handled as a unit for most processing. 0BCA TAMIL VOWEL SIGN O : 0BC6 0BBE 0BCB TAMIL VOWEL SIGN OO : 0BC7 0BBE 0BCC TAMIL VOWEL SIGN AU : 0BC6 0BD7 @ Virama @+ The Tamil pulli usually displays as a dot above, but in some fonts displays as a ring above. Do not use 0B82 to represent a ring-shaped pulli. 0BCD TAMIL SIGN VIRAMA = pulli @ Various signs 0BD0 TAMIL OM 0BD7 TAMIL AU LENGTH MARK @ Reserved @+ For viram punctuation, use the generic Indic 0964 and 0965. 0BE4 x (devanagari danda - 0964) 0BE5 x (devanagari double danda - 0965) @ Digits 0BE6 TAMIL DIGIT ZERO 0BE7 TAMIL DIGIT ONE 0BE8 TAMIL DIGIT TWO 0BE9 TAMIL DIGIT THREE 0BEA TAMIL DIGIT FOUR 0BEB TAMIL DIGIT FIVE 0BEC TAMIL DIGIT SIX 0BED TAMIL DIGIT SEVEN 0BEE TAMIL DIGIT EIGHT 0BEF TAMIL DIGIT NINE @ Tamil numerics 0BF0 TAMIL NUMBER TEN 0BF1 TAMIL NUMBER ONE HUNDRED 0BF2 TAMIL NUMBER ONE THOUSAND @ Tamil calendrical symbols 0BF3 TAMIL DAY SIGN = naal, naali/padi * denotes a measure of grain that equals 2 uri or 4 ulakku = pillaiyaar suli * denotes auspiciousness 0BF4 TAMIL MONTH SIGN = maatham 0BF5 TAMIL YEAR SIGN = varudam @ Tamil clerical symbols 0BF6 TAMIL DEBIT SIGN = patru 0BF7 TAMIL CREDIT SIGN = eduppu * denotes incoming cash which is set aside for unknown expenses * sometimes used as the credit sign; the traditional credit sign is distinct 0BF8 TAMIL AS ABOVE SIGN = merpadi @ Currency symbol 0BF9 TAMIL RUPEE SIGN = rupai @ Tamil symbol 0BFA TAMIL NUMBER SIGN = enn, niluvai * denotes balance * sometimes used as the number sign; the traditional number sign is distinct @@ 0C00 Telugu 0C7F @ Various signs 0C00 TELUGU SIGN COMBINING CANDRABINDU ABOVE 0C01 TELUGU SIGN CANDRABINDU = arasunna * indicates a contextually elided nasal 0C02 TELUGU SIGN ANUSVARA = sunna 0C03 TELUGU SIGN VISARGA @ Independent vowels 0C05 TELUGU LETTER A 0C06 TELUGU LETTER AA 0C07 TELUGU LETTER I 0C08 TELUGU LETTER II 0C09 TELUGU LETTER U 0C0A TELUGU LETTER UU 0C0B TELUGU LETTER VOCALIC R 0C0C TELUGU LETTER VOCALIC L 0C0E TELUGU LETTER E 0C0F TELUGU LETTER EE 0C10 TELUGU LETTER AI 0C12 TELUGU LETTER O 0C13 TELUGU LETTER OO 0C14 TELUGU LETTER AU @ Consonants 0C15 TELUGU LETTER KA 0C16 TELUGU LETTER KHA 0C17 TELUGU LETTER GA 0C18 TELUGU LETTER GHA 0C19 TELUGU LETTER NGA 0C1A TELUGU LETTER CA 0C1B TELUGU LETTER CHA 0C1C TELUGU LETTER JA 0C1D TELUGU LETTER JHA 0C1E TELUGU LETTER NYA 0C1F TELUGU LETTER TTA 0C20 TELUGU LETTER TTHA 0C21 TELUGU LETTER DDA 0C22 TELUGU LETTER DDHA 0C23 TELUGU LETTER NNA 0C24 TELUGU LETTER TA 0C25 TELUGU LETTER THA 0C26 TELUGU LETTER DA 0C27 TELUGU LETTER DHA 0C28 TELUGU LETTER NA 0C2A TELUGU LETTER PA 0C2B TELUGU LETTER PHA 0C2C TELUGU LETTER BA 0C2D TELUGU LETTER BHA 0C2E TELUGU LETTER MA 0C2F TELUGU LETTER YA 0C30 TELUGU LETTER RA 0C31 TELUGU LETTER RRA 0C32 TELUGU LETTER LA 0C33 TELUGU LETTER LLA 0C34 TELUGU LETTER LLLA 0C35 TELUGU LETTER VA 0C36 TELUGU LETTER SHA 0C37 TELUGU LETTER SSA 0C38 TELUGU LETTER SA 0C39 TELUGU LETTER HA @ Addition for Sanskrit 0C3D TELUGU SIGN AVAGRAHA @ Dependent vowel signs 0C3E TELUGU VOWEL SIGN AA 0C3F TELUGU VOWEL SIGN I 0C40 TELUGU VOWEL SIGN II 0C41 TELUGU VOWEL SIGN U 0C42 TELUGU VOWEL SIGN UU 0C43 TELUGU VOWEL SIGN VOCALIC R 0C44 TELUGU VOWEL SIGN VOCALIC RR 0C46 TELUGU VOWEL SIGN E 0C47 TELUGU VOWEL SIGN EE 0C48 TELUGU VOWEL SIGN AI : 0C46 0C56 0C4A TELUGU VOWEL SIGN O 0C4B TELUGU VOWEL SIGN OO 0C4C TELUGU VOWEL SIGN AU @ Virama 0C4D TELUGU SIGN VIRAMA = halant (the preferred name) @ Various signs 0C55 TELUGU LENGTH MARK 0C56 TELUGU AI LENGTH MARK @ Historic phonetic variants 0C58 TELUGU LETTER TSA 0C59 TELUGU LETTER DZA 0C5A TELUGU LETTER RRRA * letter for an alveolar consonant whose exact phonetic value is not known @ Additional vowels for Sanskrit 0C60 TELUGU LETTER VOCALIC RR 0C61 TELUGU LETTER VOCALIC LL @ Dependent vowels 0C62 TELUGU VOWEL SIGN VOCALIC L 0C63 TELUGU VOWEL SIGN VOCALIC LL @ Reserved @+ For viram punctuation, use the generic Indic 0964 and 0965. 0C64 x (devanagari danda - 0964) 0C65 x (devanagari double danda - 0965) @ Digits 0C66 TELUGU DIGIT ZERO 0C67 TELUGU DIGIT ONE 0C68 TELUGU DIGIT TWO 0C69 TELUGU DIGIT THREE 0C6A TELUGU DIGIT FOUR 0C6B TELUGU DIGIT FIVE 0C6C TELUGU DIGIT SIX 0C6D TELUGU DIGIT SEVEN 0C6E TELUGU DIGIT EIGHT 0C6F TELUGU DIGIT NINE @ Telugu fractions and weights 0C78 TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR 0C79 TELUGU FRACTION DIGIT ONE FOR ODD POWERS OF FOUR 0C7A TELUGU FRACTION DIGIT TWO FOR ODD POWERS OF FOUR 0C7B TELUGU FRACTION DIGIT THREE FOR ODD POWERS OF FOUR 0C7C TELUGU FRACTION DIGIT ONE FOR EVEN POWERS OF FOUR 0C7D TELUGU FRACTION DIGIT TWO FOR EVEN POWERS OF FOUR 0C7E TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR 0C7F TELUGU SIGN TUUMU @@ 0C80 Kannada 0CFF @ Various signs 0C80 KANNADA SIGN SPACING CANDRABINDU 0C81 KANNADA SIGN CANDRABINDU 0C82 KANNADA SIGN ANUSVARA 0C83 KANNADA SIGN VISARGA @ Independent vowels 0C85 KANNADA LETTER A 0C86 KANNADA LETTER AA 0C87 KANNADA LETTER I 0C88 KANNADA LETTER II 0C89 KANNADA LETTER U 0C8A KANNADA LETTER UU 0C8B KANNADA LETTER VOCALIC R 0C8C KANNADA LETTER VOCALIC L 0C8E KANNADA LETTER E 0C8F KANNADA LETTER EE 0C90 KANNADA LETTER AI 0C92 KANNADA LETTER O 0C93 KANNADA LETTER OO 0C94 KANNADA LETTER AU @ Consonants 0C95 KANNADA LETTER KA 0C96 KANNADA LETTER KHA 0C97 KANNADA LETTER GA 0C98 KANNADA LETTER GHA 0C99 KANNADA LETTER NGA 0C9A KANNADA LETTER CA 0C9B KANNADA LETTER CHA 0C9C KANNADA LETTER JA 0C9D KANNADA LETTER JHA 0C9E KANNADA LETTER NYA 0C9F KANNADA LETTER TTA 0CA0 KANNADA LETTER TTHA 0CA1 KANNADA LETTER DDA 0CA2 KANNADA LETTER DDHA 0CA3 KANNADA LETTER NNA 0CA4 KANNADA LETTER TA 0CA5 KANNADA LETTER THA 0CA6 KANNADA LETTER DA 0CA7 KANNADA LETTER DHA 0CA8 KANNADA LETTER NA 0CAA KANNADA LETTER PA 0CAB KANNADA LETTER PHA 0CAC KANNADA LETTER BA 0CAD KANNADA LETTER BHA 0CAE KANNADA LETTER MA 0CAF KANNADA LETTER YA 0CB0 KANNADA LETTER RA 0CB1 KANNADA LETTER RRA 0CB2 KANNADA LETTER LA 0CB3 KANNADA LETTER LLA 0CB5 KANNADA LETTER VA 0CB6 KANNADA LETTER SHA 0CB7 KANNADA LETTER SSA 0CB8 KANNADA LETTER SA 0CB9 KANNADA LETTER HA @ Various signs 0CBC KANNADA SIGN NUKTA 0CBD KANNADA SIGN AVAGRAHA @ Dependent vowel signs 0CBE KANNADA VOWEL SIGN AA 0CBF KANNADA VOWEL SIGN I 0CC0 KANNADA VOWEL SIGN II : 0CBF 0CD5 0CC1 KANNADA VOWEL SIGN U 0CC2 KANNADA VOWEL SIGN UU 0CC3 KANNADA VOWEL SIGN VOCALIC R 0CC4 KANNADA VOWEL SIGN VOCALIC RR 0CC6 KANNADA VOWEL SIGN E 0CC7 KANNADA VOWEL SIGN EE : 0CC6 0CD5 0CC8 KANNADA VOWEL SIGN AI : 0CC6 0CD6 0CCA KANNADA VOWEL SIGN O : 0CC6 0CC2 0CCB KANNADA VOWEL SIGN OO : 0CCA 0CD5 0CCC KANNADA VOWEL SIGN AU @ Virama 0CCD KANNADA SIGN VIRAMA * preferred name is halant @ Various signs 0CD5 KANNADA LENGTH MARK 0CD6 KANNADA AI LENGTH MARK @ Additional consonants 0CDE KANNADA LETTER FA % KANNADA LETTER LLLA * obsolete historic letter * name is a mistake for LLLA @ Additional vowels for Sanskrit 0CE0 KANNADA LETTER VOCALIC RR 0CE1 KANNADA LETTER VOCALIC LL @ Dependent vowels 0CE2 KANNADA VOWEL SIGN VOCALIC L 0CE3 KANNADA VOWEL SIGN VOCALIC LL @ Reserved @+ For viram punctuation, use the generic Indic 0964 and 0965. 0CE4 x (devanagari danda - 0964) 0CE5 x (devanagari double danda - 0965) @ Digits 0CE6 KANNADA DIGIT ZERO 0CE7 KANNADA DIGIT ONE 0CE8 KANNADA DIGIT TWO 0CE9 KANNADA DIGIT THREE 0CEA KANNADA DIGIT FOUR 0CEB KANNADA DIGIT FIVE 0CEC KANNADA DIGIT SIX 0CED KANNADA DIGIT SEVEN 0CEE KANNADA DIGIT EIGHT 0CEF KANNADA DIGIT NINE @ Signs used in Sanskrit 0CF1 KANNADA SIGN JIHVAMULIYA x (vedic sign jihvamuliya - 1CF5) 0CF2 KANNADA SIGN UPADHMANIYA x (vedic sign upadhmaniya - 1CF6) @@ 0D00 Malayalam 0D7F @ Various signs 0D01 MALAYALAM SIGN CANDRABINDU 0D02 MALAYALAM SIGN ANUSVARA * used in Prakrit language texts to indicate gemination of the following consonant 0D03 MALAYALAM SIGN VISARGA @ Independent vowels 0D05 MALAYALAM LETTER A 0D06 MALAYALAM LETTER AA 0D07 MALAYALAM LETTER I 0D08 MALAYALAM LETTER II 0D09 MALAYALAM LETTER U 0D0A MALAYALAM LETTER UU 0D0B MALAYALAM LETTER VOCALIC R 0D0C MALAYALAM LETTER VOCALIC L 0D0E MALAYALAM LETTER E 0D0F MALAYALAM LETTER EE 0D10 MALAYALAM LETTER AI 0D12 MALAYALAM LETTER O 0D13 MALAYALAM LETTER OO 0D14 MALAYALAM LETTER AU @ Consonants @+ Alternate romanizations are shown as aliases for some letters to clarify their identity. 0D15 MALAYALAM LETTER KA 0D16 MALAYALAM LETTER KHA 0D17 MALAYALAM LETTER GA 0D18 MALAYALAM LETTER GHA 0D19 MALAYALAM LETTER NGA 0D1A MALAYALAM LETTER CA = cha 0D1B MALAYALAM LETTER CHA = chha 0D1C MALAYALAM LETTER JA 0D1D MALAYALAM LETTER JHA 0D1E MALAYALAM LETTER NYA = nha 0D1F MALAYALAM LETTER TTA = ta 0D20 MALAYALAM LETTER TTHA = tta 0D21 MALAYALAM LETTER DDA = hard da 0D22 MALAYALAM LETTER DDHA = hard dda 0D23 MALAYALAM LETTER NNA = hard na 0D24 MALAYALAM LETTER TA = tha 0D25 MALAYALAM LETTER THA = ttha 0D26 MALAYALAM LETTER DA = soft da 0D27 MALAYALAM LETTER DHA = soft dda 0D28 MALAYALAM LETTER NA 0D29 MALAYALAM LETTER NNNA * historic use only 0D2A MALAYALAM LETTER PA 0D2B MALAYALAM LETTER PHA 0D2C MALAYALAM LETTER BA 0D2D MALAYALAM LETTER BHA 0D2E MALAYALAM LETTER MA * also used to denote the fraction one eightieth (kaani) 0D2F MALAYALAM LETTER YA 0D30 MALAYALAM LETTER RA 0D31 MALAYALAM LETTER RRA 0D32 MALAYALAM LETTER LA 0D33 MALAYALAM LETTER LLA 0D34 MALAYALAM LETTER LLLA = zha 0D35 MALAYALAM LETTER VA 0D36 MALAYALAM LETTER SHA = soft sha 0D37 MALAYALAM LETTER SSA = sha 0D38 MALAYALAM LETTER SA 0D39 MALAYALAM LETTER HA 0D3A MALAYALAM LETTER TTTA * historic use only @ Addition for Sanskrit 0D3D MALAYALAM SIGN AVAGRAHA = praslesham @ Dependent vowel signs 0D3E MALAYALAM VOWEL SIGN AA 0D3F MALAYALAM VOWEL SIGN I 0D40 MALAYALAM VOWEL SIGN II 0D41 MALAYALAM VOWEL SIGN U 0D42 MALAYALAM VOWEL SIGN UU 0D43 MALAYALAM VOWEL SIGN VOCALIC R 0D44 MALAYALAM VOWEL SIGN VOCALIC RR 0D46 MALAYALAM VOWEL SIGN E * stands to the left of the consonant 0D47 MALAYALAM VOWEL SIGN EE * stands to the left of the consonant 0D48 MALAYALAM VOWEL SIGN AI * stands to the left of the consonant @ Two-part dependent vowel signs @+ These vowel signs have glyph pieces which stand on both sides of the consonant; they follow the consonant in logical order, and should be handled as a unit for most processing. 0D4A MALAYALAM VOWEL SIGN O : 0D46 0D3E 0D4B MALAYALAM VOWEL SIGN OO : 0D47 0D3E 0D4C MALAYALAM VOWEL SIGN AU * archaic form of the /au/ dependent vowel x (malayalam au length mark - 0D57) : 0D46 0D57 @ Virama 0D4D MALAYALAM SIGN VIRAMA = candrakkala (the preferred name) = vowel half-u @ Dot reph 0D4E MALAYALAM LETTER DOT REPH * not used in reformed modern Malayalam orthography @ Measurement symbol 0D4F MALAYALAM SIGN PARA * used historically to measure rice @ Chillu letters 0D54 MALAYALAM LETTER CHILLU M 0D55 MALAYALAM LETTER CHILLU Y 0D56 MALAYALAM LETTER CHILLU LLL @ Various signs 0D57 MALAYALAM AU LENGTH MARK * used alone to write the /au/ dependent vowel in modern texts x (malayalam vowel sign au - 0D4C) @ Minor fractions @+ Some minor fractions are represented by letters. @+ The fraction one three-hundred and twentieth "muntiri" is denoted by the syllable "pta" (0D2A 0D4D 0D24). 0D58 MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH = arakaani 0D59 MALAYALAM FRACTION ONE FORTIETH = aramaa 0D5A MALAYALAM FRACTION THREE EIGHTIETHS = muunnukaani 0D5B MALAYALAM FRACTION ONE TWENTIETH = orumaa 0D5C MALAYALAM FRACTION ONE TENTH = rantumaa 0D5D MALAYALAM FRACTION THREE TWENTIETHS = muunnumaa 0D5E MALAYALAM FRACTION ONE FIFTH = naalumaa @ Additional historic vowel 0D5F MALAYALAM LETTER ARCHAIC II @ Additional vowels for Sanskrit 0D60 MALAYALAM LETTER VOCALIC RR 0D61 MALAYALAM LETTER VOCALIC LL @ Dependent vowels 0D62 MALAYALAM VOWEL SIGN VOCALIC L 0D63 MALAYALAM VOWEL SIGN VOCALIC LL @ Reserved @+ For viram punctuation, use the generic Indic 0964 and 0965. 0D64 x (devanagari danda - 0964) 0D65 x (devanagari double danda - 0965) @ Digits 0D66 MALAYALAM DIGIT ZERO 0D67 MALAYALAM DIGIT ONE 0D68 MALAYALAM DIGIT TWO 0D69 MALAYALAM DIGIT THREE 0D6A MALAYALAM DIGIT FOUR 0D6B MALAYALAM DIGIT FIVE 0D6C MALAYALAM DIGIT SIX 0D6D MALAYALAM DIGIT SEVEN 0D6E MALAYALAM DIGIT EIGHT 0D6F MALAYALAM DIGIT NINE @ Malayalam numerics 0D70 MALAYALAM NUMBER TEN 0D71 MALAYALAM NUMBER ONE HUNDRED 0D72 MALAYALAM NUMBER ONE THOUSAND @ Fractions 0D73 MALAYALAM FRACTION ONE QUARTER = kaal 0D74 MALAYALAM FRACTION ONE HALF = ara 0D75 MALAYALAM FRACTION THREE QUARTERS = mukkaal 0D76 MALAYALAM FRACTION ONE SIXTEENTH = maakaani 0D77 MALAYALAM FRACTION ONE EIGHTH = arakkaal 0D78 MALAYALAM FRACTION THREE SIXTEENTHS = muntaani @ Date mark 0D79 MALAYALAM DATE MARK @ Chillu letters 0D7A MALAYALAM LETTER CHILLU NN 0D7B MALAYALAM LETTER CHILLU N 0D7C MALAYALAM LETTER CHILLU RR * historically derived from the full letter ra * also used for chillu r 0D7D MALAYALAM LETTER CHILLU L * historically derived from the full letter ta * used for chillu t and chillu d 0D7E MALAYALAM LETTER CHILLU LL 0D7F MALAYALAM LETTER CHILLU K @@ 0D80 Sinhala 0DFF @ Various signs 0D82 SINHALA SIGN ANUSVARAYA = anusvara 0D83 SINHALA SIGN VISARGAYA = visarga @ Independent vowels 0D85 SINHALA LETTER AYANNA = sinhala letter a 0D86 SINHALA LETTER AAYANNA = sinhala letter aa 0D87 SINHALA LETTER AEYANNA = sinhala letter ae 0D88 SINHALA LETTER AEEYANNA = sinhala letter aae 0D89 SINHALA LETTER IYANNA = sinhala letter i 0D8A SINHALA LETTER IIYANNA = sinhala letter ii 0D8B SINHALA LETTER UYANNA = sinhala letter u 0D8C SINHALA LETTER UUYANNA = sinhala letter uu 0D8D SINHALA LETTER IRUYANNA = sinhala letter vocalic r 0D8E SINHALA LETTER IRUUYANNA = sinhala letter vocalic rr 0D8F SINHALA LETTER ILUYANNA = sinhala letter vocalic l 0D90 SINHALA LETTER ILUUYANNA = sinhala letter vocalic ll 0D91 SINHALA LETTER EYANNA = sinhala letter e 0D92 SINHALA LETTER EEYANNA = sinhala letter ee 0D93 SINHALA LETTER AIYANNA = sinhala letter ai 0D94 SINHALA LETTER OYANNA = sinhala letter o 0D95 SINHALA LETTER OOYANNA = sinhala letter oo 0D96 SINHALA LETTER AUYANNA = sinhala letter au @ Consonants 0D9A SINHALA LETTER ALPAPRAANA KAYANNA = sinhala letter ka 0D9B SINHALA LETTER MAHAAPRAANA KAYANNA = sinhala letter kha 0D9C SINHALA LETTER ALPAPRAANA GAYANNA = sinhala letter ga 0D9D SINHALA LETTER MAHAAPRAANA GAYANNA = sinhala letter gha 0D9E SINHALA LETTER KANTAJA NAASIKYAYA = sinhala letter nga 0D9F SINHALA LETTER SANYAKA GAYANNA = sinhala letter nnga 0DA0 SINHALA LETTER ALPAPRAANA CAYANNA = sinhala letter ca 0DA1 SINHALA LETTER MAHAAPRAANA CAYANNA = sinhala letter cha 0DA2 SINHALA LETTER ALPAPRAANA JAYANNA = sinhala letter ja 0DA3 SINHALA LETTER MAHAAPRAANA JAYANNA = sinhala letter jha 0DA4 SINHALA LETTER TAALUJA NAASIKYAYA = sinhala letter nya 0DA5 SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA = sinhala letter jnya 0DA6 SINHALA LETTER SANYAKA JAYANNA = sinhala letter nyja 0DA7 SINHALA LETTER ALPAPRAANA TTAYANNA = sinhala letter tta 0DA8 SINHALA LETTER MAHAAPRAANA TTAYANNA = sinhala letter ttha 0DA9 SINHALA LETTER ALPAPRAANA DDAYANNA = sinhala letter dda 0DAA SINHALA LETTER MAHAAPRAANA DDAYANNA = sinhala letter ddha 0DAB SINHALA LETTER MUURDHAJA NAYANNA = sinhala letter nna 0DAC SINHALA LETTER SANYAKA DDAYANNA = sinhala letter nndda 0DAD SINHALA LETTER ALPAPRAANA TAYANNA = sinhala letter ta 0DAE SINHALA LETTER MAHAAPRAANA TAYANNA = sinhala letter tha 0DAF SINHALA LETTER ALPAPRAANA DAYANNA = sinhala letter da 0DB0 SINHALA LETTER MAHAAPRAANA DAYANNA = sinhala letter dha 0DB1 SINHALA LETTER DANTAJA NAYANNA = sinhala letter na 0DB3 SINHALA LETTER SANYAKA DAYANNA = sinhala letter nda 0DB4 SINHALA LETTER ALPAPRAANA PAYANNA = sinhala letter pa 0DB5 SINHALA LETTER MAHAAPRAANA PAYANNA = sinhala letter pha 0DB6 SINHALA LETTER ALPAPRAANA BAYANNA = sinhala letter ba 0DB7 SINHALA LETTER MAHAAPRAANA BAYANNA = sinhala letter bha 0DB8 SINHALA LETTER MAYANNA = sinhala letter ma 0DB9 SINHALA LETTER AMBA BAYANNA = sinhala letter mba 0DBA SINHALA LETTER YAYANNA = sinhala letter ya 0DBB SINHALA LETTER RAYANNA = sinhala letter ra 0DBD SINHALA LETTER DANTAJA LAYANNA = sinhala letter la * dental 0DC0 SINHALA LETTER VAYANNA = sinhala letter va 0DC1 SINHALA LETTER TAALUJA SAYANNA = sinhala letter sha 0DC2 SINHALA LETTER MUURDHAJA SAYANNA = sinhala letter ssa * retroflex 0DC3 SINHALA LETTER DANTAJA SAYANNA = sinhala letter sa * dental 0DC4 SINHALA LETTER HAYANNA = sinhala letter ha 0DC5 SINHALA LETTER MUURDHAJA LAYANNA = sinhala letter lla * retroflex 0DC6 SINHALA LETTER FAYANNA = sinhala letter fa @ Sign 0DCA SINHALA SIGN AL-LAKUNA = virama @ Dependent vowel signs 0DCF SINHALA VOWEL SIGN AELA-PILLA = sinhala vowel sign aa 0DD0 SINHALA VOWEL SIGN KETTI AEDA-PILLA = sinhala vowel sign ae 0DD1 SINHALA VOWEL SIGN DIGA AEDA-PILLA = sinhala vowel sign aae 0DD2 SINHALA VOWEL SIGN KETTI IS-PILLA = sinhala vowel sign i 0DD3 SINHALA VOWEL SIGN DIGA IS-PILLA = sinhala vowel sign ii 0DD4 SINHALA VOWEL SIGN KETTI PAA-PILLA = sinhala vowel sign u 0DD6 SINHALA VOWEL SIGN DIGA PAA-PILLA = sinhala vowel sign uu 0DD8 SINHALA VOWEL SIGN GAETTA-PILLA = sinhala vowel sign vocalic r 0DD9 SINHALA VOWEL SIGN KOMBUVA = sinhala vowel sign e 0DDA SINHALA VOWEL SIGN DIGA KOMBUVA = sinhala vowel sign ee : 0DD9 0DCA 0DDB SINHALA VOWEL SIGN KOMBU DEKA = sinhala vowel sign ai @ Two-part dependent vowel signs @+ These vowel signs have glyph pieces which stand on both sides of the consonant; they follow the consonant in logical order, and should be handled as a unit for most processing. 0DDC SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA = sinhala vowel sign o : 0DD9 0DCF 0DDD SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA = sinhala vowel sign oo : 0DDC 0DCA 0DDE SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA = sinhala vowel sign au : 0DD9 0DDF @ Dependent vowel sign 0DDF SINHALA VOWEL SIGN GAYANUKITTA = sinhala vowel sign vocalic l @ Astrological digits @+ These digits, also known as Sinhala Lith Illakkam, have been used primarily for writing horoscopes. This number system has a zero place holder concept, unlike the Sinhala archaic numbers, Sinhala Illakkam, encoded in the range 111E1-111F4. 0DE6 SINHALA LITH DIGIT ZERO 0DE7 SINHALA LITH DIGIT ONE 0DE8 SINHALA LITH DIGIT TWO 0DE9 SINHALA LITH DIGIT THREE 0DEA SINHALA LITH DIGIT FOUR 0DEB SINHALA LITH DIGIT FIVE 0DEC SINHALA LITH DIGIT SIX 0DED SINHALA LITH DIGIT SEVEN 0DEE SINHALA LITH DIGIT EIGHT 0DEF SINHALA LITH DIGIT NINE @ Additional dependent vowel signs 0DF2 SINHALA VOWEL SIGN DIGA GAETTA-PILLA = sinhala vowel sign vocalic rr 0DF3 SINHALA VOWEL SIGN DIGA GAYANUKITTA = sinhala vowel sign vocalic ll @ Punctuation 0DF4 SINHALA PUNCTUATION KUNDDALIYA @@ 0E00 Thai 0E7F @@+ @ Based on TIS 620-2533 @ Consonants 0E01 THAI CHARACTER KO KAI 0E02 THAI CHARACTER KHO KHAI 0E03 THAI CHARACTER KHO KHUAT 0E04 THAI CHARACTER KHO KHWAI 0E05 THAI CHARACTER KHO KHON 0E06 THAI CHARACTER KHO RAKHANG 0E07 THAI CHARACTER NGO NGU 0E08 THAI CHARACTER CHO CHAN 0E09 THAI CHARACTER CHO CHING 0E0A THAI CHARACTER CHO CHANG 0E0B THAI CHARACTER SO SO 0E0C THAI CHARACTER CHO CHOE 0E0D THAI CHARACTER YO YING 0E0E THAI CHARACTER DO CHADA 0E0F THAI CHARACTER TO PATAK 0E10 THAI CHARACTER THO THAN 0E11 THAI CHARACTER THO NANGMONTHO 0E12 THAI CHARACTER THO PHUTHAO 0E13 THAI CHARACTER NO NEN 0E14 THAI CHARACTER DO DEK 0E15 THAI CHARACTER TO TAO 0E16 THAI CHARACTER THO THUNG 0E17 THAI CHARACTER THO THAHAN 0E18 THAI CHARACTER THO THONG 0E19 THAI CHARACTER NO NU 0E1A THAI CHARACTER BO BAIMAI 0E1B THAI CHARACTER PO PLA 0E1C THAI CHARACTER PHO PHUNG 0E1D THAI CHARACTER FO FA 0E1E THAI CHARACTER PHO PHAN 0E1F THAI CHARACTER FO FAN 0E20 THAI CHARACTER PHO SAMPHAO 0E21 THAI CHARACTER MO MA 0E22 THAI CHARACTER YO YAK 0E23 THAI CHARACTER RO RUA 0E24 THAI CHARACTER RU * independent vowel letter used to write Sanskrit 0E25 THAI CHARACTER LO LING 0E26 THAI CHARACTER LU * independent vowel letter used to write Sanskrit 0E27 THAI CHARACTER WO WAEN 0E28 THAI CHARACTER SO SALA 0E29 THAI CHARACTER SO RUSI 0E2A THAI CHARACTER SO SUA 0E2B THAI CHARACTER HO HIP 0E2C THAI CHARACTER LO CHULA 0E2D THAI CHARACTER O ANG 0E2E THAI CHARACTER HO NOKHUK = ho nok huk @ Sign 0E2F THAI CHARACTER PAIYANNOI = paiyan noi * ellipsis, abbreviation @ Vowels 0E30 THAI CHARACTER SARA A 0E31 THAI CHARACTER MAI HAN-AKAT 0E32 THAI CHARACTER SARA AA x (thai character lakkhangyao - 0E45) 0E33 THAI CHARACTER SARA AM # 0E4D 0E32 0E34 THAI CHARACTER SARA I 0E35 THAI CHARACTER SARA II 0E36 THAI CHARACTER SARA UE 0E37 THAI CHARACTER SARA UEE = sara uue 0E38 THAI CHARACTER SARA U 0E39 THAI CHARACTER SARA UU 0E3A THAI CHARACTER PHINTHU * Pali virama @ Currency symbol 0E3F THAI CURRENCY SYMBOL BAHT @ Vowels @+ These vowels precede a consonant in visual order. 0E40 THAI CHARACTER SARA E 0E41 THAI CHARACTER SARA AE 0E42 THAI CHARACTER SARA O 0E43 THAI CHARACTER SARA AI MAIMUAN = sara ai mai muan 0E44 THAI CHARACTER SARA AI MAIMALAI = sara ai mai malai @ Vowel length sign 0E45 THAI CHARACTER LAKKHANGYAO = lakkhang yao * special vowel length indication used with 0E24 or 0E26 x (thai character sara aa - 0E32) @ Repetition mark 0E46 THAI CHARACTER MAIYAMOK = mai yamok * repetition @ Vowel 0E47 THAI CHARACTER MAITAIKHU = mai taikhu @ Tone marks 0E48 THAI CHARACTER MAI EK 0E49 THAI CHARACTER MAI THO 0E4A THAI CHARACTER MAI TRI 0E4B THAI CHARACTER MAI CHATTAWA @ Signs 0E4C THAI CHARACTER THANTHAKHAT * cancellation mark x (khmer sign toandakhiat - 17CD) 0E4D THAI CHARACTER NIKHAHIT = nikkhahit * final nasal 0E4E THAI CHARACTER YAMAKKAN 0E4F THAI CHARACTER FONGMAN * used as a bullet x (khmer sign phnaek muan - 17D9) @ Digits 0E50 THAI DIGIT ZERO 0E51 THAI DIGIT ONE 0E52 THAI DIGIT TWO 0E53 THAI DIGIT THREE 0E54 THAI DIGIT FOUR 0E55 THAI DIGIT FIVE 0E56 THAI DIGIT SIX 0E57 THAI DIGIT SEVEN 0E58 THAI DIGIT EIGHT 0E59 THAI DIGIT NINE @ Signs 0E5A THAI CHARACTER ANGKHANKHU * used to mark end of long sections * used in combination with 0E30 to mark end of a verse 0E5B THAI CHARACTER KHOMUT * used to mark end of chapter or document x (khmer sign koomuut - 17DA) @@ 0E80 Lao 0EFF @ Consonants 0E81 LAO LETTER KO = ko kay 0E82 LAO LETTER KHO SUNG = kho khay 0E84 LAO LETTER KHO TAM = kho khuay 0E87 LAO LETTER NGO = ngo ngu, ngo ngua 0E88 LAO LETTER CO = co cok, co cua 0E8A LAO LETTER SO TAM = so sang 0E8D LAO LETTER NYO = nyo nyung 0E94 LAO LETTER DO = do dek 0E95 LAO LETTER TO = to ta 0E96 LAO LETTER THO SUNG = tho thong 0E97 LAO LETTER THO TAM = tho thung 0E99 LAO LETTER NO = no nok 0E9A LAO LETTER BO = bo be, bo bet 0E9B LAO LETTER PO = po pa 0E9C LAO LETTER PHO SUNG = pho pheng 0E9D LAO LETTER FO TAM % LAO LETTER FO FON = fo fa * name is a mistake for fo sung 0E9E LAO LETTER PHO TAM = pho phu 0E9F LAO LETTER FO SUNG % LAO LETTER FO FAY * name is a mistake for fo tam 0EA1 LAO LETTER MO = mo mew, mo ma 0EA2 LAO LETTER YO = yo ya 0EA3 LAO LETTER LO LING % LAO LETTER RO = ro rot * name is a mistake, lo ling is the mnemonic for 0EA5 0EA5 LAO LETTER LO LOOT % LAO LETTER LO = lo ling * name is a mistake, lo loot is the mnemonic for 0EA3 0EA7 LAO LETTER WO = wo wi 0EAA LAO LETTER SO SUNG = so sya 0EAB LAO LETTER HO SUNG = ho hay, ho han 0EAD LAO LETTER O = o o 0EAE LAO LETTER HO TAM = ho hya, ho hyan @ Sign 0EAF LAO ELLIPSIS @ Vowels 0EB0 LAO VOWEL SIGN A 0EB1 LAO VOWEL SIGN MAI KAN * vowel shortener 0EB2 LAO VOWEL SIGN AA 0EB3 LAO VOWEL SIGN AM # 0ECD 0EB2 0EB4 LAO VOWEL SIGN I 0EB5 LAO VOWEL SIGN II 0EB6 LAO VOWEL SIGN Y 0EB7 LAO VOWEL SIGN YY 0EB8 LAO VOWEL SIGN U 0EB9 LAO VOWEL SIGN UU 0EBB LAO VOWEL SIGN MAI KON = mai kong @ Signs 0EBC LAO SEMIVOWEL SIGN LO 0EBD LAO SEMIVOWEL SIGN NYO = nyo fyang @ Vowels @+ These vowels precede a consonant in visual order. 0EC0 LAO VOWEL SIGN E 0EC1 LAO VOWEL SIGN EI 0EC2 LAO VOWEL SIGN O 0EC3 LAO VOWEL SIGN AY = mai muan 0EC4 LAO VOWEL SIGN AI = mai may @ Repetition mark 0EC6 LAO KO LA * repetition @ Tone marks 0EC8 LAO TONE MAI EK 0EC9 LAO TONE MAI THO 0ECA LAO TONE MAI TI 0ECB LAO TONE MAI CATAWA @ Signs 0ECC LAO CANCELLATION MARK 0ECD LAO NIGGAHITA * final nasal or long o vowel @ Digits 0ED0 LAO DIGIT ZERO 0ED1 LAO DIGIT ONE 0ED2 LAO DIGIT TWO 0ED3 LAO DIGIT THREE 0ED4 LAO DIGIT FOUR 0ED5 LAO DIGIT FIVE 0ED6 LAO DIGIT SIX 0ED7 LAO DIGIT SEVEN 0ED8 LAO DIGIT EIGHT 0ED9 LAO DIGIT NINE @ Digraphs 0EDC LAO HO NO # 0EAB 0E99 0EDD LAO HO MO # 0EAB 0EA1 @ Consonants for Khmu 0EDE LAO LETTER KHMU GO 0EDF LAO LETTER KHMU NYO @@ 0F00 Tibetan 0FFF @+ The Tibetan script is called the Bodhi script in Bhutan. @ Syllable 0F00 TIBETAN SYLLABLE OM @ Head marks 0F01 TIBETAN MARK GTER YIG MGO TRUNCATED A 0F02 TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA 0F03 TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA 0F04 TIBETAN MARK INITIAL YIG MGO MDUN MA * honorific; marks beginning of text or start of new folio x (mongolian birga - 1800) 0F05 TIBETAN MARK CLOSING YIG MGO SGAB MA * follows and ligates with initial yig-mgo 0F06 TIBETAN MARK CARET YIG MGO PHUR SHAD MA 0F07 TIBETAN MARK YIG MGO TSHEG SHAD MA @ Marks and signs 0F08 TIBETAN MARK SBRUL SHAD * separates sections of meaning equivalent to topics and sub-topics 0F09 TIBETAN MARK BSKUR YIG MGO * list enumerator, used in Bhutan 0F0A TIBETAN MARK BKA- SHOG YIG MGO * petition honorific, used in Bhutan 0F0B TIBETAN MARK INTERSYLLABIC TSHEG = tsek * morpheme delimiter (approximate meaning) * the normal tsheg; provides a break opportunity * character name is a misnomer 0F0C TIBETAN MARK DELIMITER TSHEG BSTAR * a non-breaking tsheg; inhibits line breaking * character name is a misnomer # 0F0B 0F0D TIBETAN MARK SHAD = shey * marks end of a section of text (tshig-grub) x (devanagari danda - 0964) 0F0E TIBETAN MARK NYIS SHAD * marks end of a whole topic (don-tshan) x (devanagari double danda - 0965) 0F0F TIBETAN MARK TSHEG SHAD 0F10 TIBETAN MARK NYIS TSHEG SHAD 0F11 TIBETAN MARK RIN CHEN SPUNGS SHAD * shad which follows a tsheg-bar that starts a new line 0F12 TIBETAN MARK RGYA GRAM SHAD 0F13 TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN 0F14 TIBETAN MARK GTER TSHEG * used as a comma-like text delimiter x (khmer sign camnuc pii kuuh - 17D6) @ Astrological signs 0F15 TIBETAN LOGOTYPE SIGN CHAD RTAGS 0F16 TIBETAN LOGOTYPE SIGN LHAG RTAGS 0F17 TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS 0F18 TIBETAN ASTROLOGICAL SIGN -KHYUD PA * combines with digits 0F19 TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS * combines with digits 0F1A TIBETAN SIGN RDEL DKAR GCIG 0F1B TIBETAN SIGN RDEL DKAR GNYIS 0F1C TIBETAN SIGN RDEL DKAR GSUM x (alchemical symbol for oil - 1F746) 0F1D TIBETAN SIGN RDEL NAG GCIG 0F1E TIBETAN SIGN RDEL NAG GNYIS 0F1F TIBETAN SIGN RDEL DKAR RDEL NAG = deka dena * normally indicates a neutral fortune * may also signify good luck earlier, bad luck later x (tibetan sign rdel nag rdel dkar - 0FCE) @ Digits 0F20 TIBETAN DIGIT ZERO 0F21 TIBETAN DIGIT ONE 0F22 TIBETAN DIGIT TWO 0F23 TIBETAN DIGIT THREE 0F24 TIBETAN DIGIT FOUR 0F25 TIBETAN DIGIT FIVE 0F26 TIBETAN DIGIT SIX 0F27 TIBETAN DIGIT SEVEN 0F28 TIBETAN DIGIT EIGHT 0F29 TIBETAN DIGIT NINE @ Digits minus half 0F2A TIBETAN DIGIT HALF ONE 0F2B TIBETAN DIGIT HALF TWO 0F2C TIBETAN DIGIT HALF THREE 0F2D TIBETAN DIGIT HALF FOUR 0F2E TIBETAN DIGIT HALF FIVE 0F2F TIBETAN DIGIT HALF SIX 0F30 TIBETAN DIGIT HALF SEVEN 0F31 TIBETAN DIGIT HALF EIGHT 0F32 TIBETAN DIGIT HALF NINE 0F33 TIBETAN DIGIT HALF ZERO @ Marks and signs 0F34 TIBETAN MARK BSDUS RTAGS * repetition 0F35 TIBETAN MARK NGAS BZUNG NYI ZLA * honorific, emphasis; used like underlining 0F36 TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN * marks point of text insertion or annotation 0F37 TIBETAN MARK NGAS BZUNG SGOR RTAGS * emphasis; used like underlining 0F38 TIBETAN MARK CHE MGO 0F39 TIBETAN MARK TSA -PHRU * a lenition mark @ Paired punctuation 0F3A TIBETAN MARK GUG RTAGS GYON 0F3B TIBETAN MARK GUG RTAGS GYAS * brackets 0F3C TIBETAN MARK ANG KHANG GYON 0F3D TIBETAN MARK ANG KHANG GYAS * used for bracketing with a roof over @ Astrological signs 0F3E TIBETAN SIGN YAR TSHES 0F3F TIBETAN SIGN MAR TSHES * marks which combine with digits @ Consonants 0F40 TIBETAN LETTER KA 0F41 TIBETAN LETTER KHA 0F42 TIBETAN LETTER GA 0F43 TIBETAN LETTER GHA : 0F42 0FB7 0F44 TIBETAN LETTER NGA 0F45 TIBETAN LETTER CA 0F46 TIBETAN LETTER CHA 0F47 TIBETAN LETTER JA 0F49 TIBETAN LETTER NYA 0F4A TIBETAN LETTER TTA 0F4B TIBETAN LETTER TTHA 0F4C TIBETAN LETTER DDA 0F4D TIBETAN LETTER DDHA : 0F4C 0FB7 0F4E TIBETAN LETTER NNA 0F4F TIBETAN LETTER TA 0F50 TIBETAN LETTER THA 0F51 TIBETAN LETTER DA 0F52 TIBETAN LETTER DHA : 0F51 0FB7 0F53 TIBETAN LETTER NA 0F54 TIBETAN LETTER PA 0F55 TIBETAN LETTER PHA 0F56 TIBETAN LETTER BA 0F57 TIBETAN LETTER BHA : 0F56 0FB7 0F58 TIBETAN LETTER MA 0F59 TIBETAN LETTER TSA 0F5A TIBETAN LETTER TSHA 0F5B TIBETAN LETTER DZA 0F5C TIBETAN LETTER DZHA : 0F5B 0FB7 0F5D TIBETAN LETTER WA 0F5E TIBETAN LETTER ZHA 0F5F TIBETAN LETTER ZA 0F60 TIBETAN LETTER -A 0F61 TIBETAN LETTER YA 0F62 TIBETAN LETTER RA * when followed by a subjoined letter = ra mgo 0F63 TIBETAN LETTER LA 0F64 TIBETAN LETTER SHA 0F65 TIBETAN LETTER SSA = reversed sha 0F66 TIBETAN LETTER SA 0F67 TIBETAN LETTER HA 0F68 TIBETAN LETTER A * base for dependent vowels 0F69 TIBETAN LETTER KSSA : 0F40 0FB5 0F6A TIBETAN LETTER FIXED-FORM RA * fixed-form letter not showing the shape variation of the ordinary ra * used only in transliteration and transcription x (tibetan letter ra - 0F62) @ Extensions for Balti 0F6B TIBETAN LETTER KKA 0F6C TIBETAN LETTER RRA @ Dependent vowel signs 0F71 TIBETAN VOWEL SIGN AA = a-chung * common, vowel-lengthening mark 0F72 TIBETAN VOWEL SIGN I 0F73 TIBETAN VOWEL SIGN II * use of this character is discouraged : 0F71 0F72 0F74 TIBETAN VOWEL SIGN U 0F75 TIBETAN VOWEL SIGN UU * use of this character is discouraged : 0F71 0F74 0F76 TIBETAN VOWEL SIGN VOCALIC R : 0FB2 0F80 0F77 TIBETAN VOWEL SIGN VOCALIC RR * this character is deprecated and its use is strongly discouraged # 0FB2 0F81 0F78 TIBETAN VOWEL SIGN VOCALIC L : 0FB3 0F80 0F79 TIBETAN VOWEL SIGN VOCALIC LL * this character is deprecated and its use is strongly discouraged # 0FB3 0F81 0F7A TIBETAN VOWEL SIGN E 0F7B TIBETAN VOWEL SIGN EE 0F7C TIBETAN VOWEL SIGN O 0F7D TIBETAN VOWEL SIGN OO @ Vocalic modification 0F7E TIBETAN SIGN RJES SU NGA RO = anusvara 0F7F TIBETAN SIGN RNAM BCAD = visarga @ Dependent vowel signs 0F80 TIBETAN VOWEL SIGN REVERSED I 0F81 TIBETAN VOWEL SIGN REVERSED II * use of this character is discouraged : 0F71 0F80 @ Marks and signs 0F82 TIBETAN SIGN NYI ZLA NAA DA 0F83 TIBETAN SIGN SNA LDAN x (devanagari sign candrabindu - 0901) 0F84 TIBETAN MARK HALANTA = srog med x (devanagari sign virama - 094D) 0F85 TIBETAN MARK PALUTA * transliteration of Sanskrit avagraha x (devanagari sign avagraha - 093D) 0F86 TIBETAN SIGN LCI RTAGS 0F87 TIBETAN SIGN YANG RTAGS @ Transliteration head letters 0F88 TIBETAN SIGN LCE TSA CAN x (vedic sign jihvamuliya - 1CF5) x (mongolian letter ali gali damaru - 1882) 0F89 TIBETAN SIGN MCHU CAN x (vedic sign upadhmaniya - 1CF6) x (mongolian letter ali gali inverted ubadama - 1884) 0F8A TIBETAN SIGN GRU CAN RGYINGS * always followed by 0F82 0F8B TIBETAN SIGN GRU MED RGYINGS 0F8C TIBETAN SIGN INVERTED MCHU CAN x (mongolian letter ali gali ubadama - 1883) @ Transliteration subjoined signs 0F8D TIBETAN SUBJOINED SIGN LCE TSA CAN 0F8E TIBETAN SUBJOINED SIGN MCHU CAN 0F8F TIBETAN SUBJOINED SIGN INVERTED MCHU CAN @ Subjoined consonants @+ The subjoined letters for WA, YA, and RA appear in both full and short forms. The short forms, wa.zur, ya-btags, and ra-btags, respectively, are most common and are the forms shown in the charts. 0F90 TIBETAN SUBJOINED LETTER KA 0F91 TIBETAN SUBJOINED LETTER KHA 0F92 TIBETAN SUBJOINED LETTER GA 0F93 TIBETAN SUBJOINED LETTER GHA : 0F92 0FB7 0F94 TIBETAN SUBJOINED LETTER NGA 0F95 TIBETAN SUBJOINED LETTER CA 0F96 TIBETAN SUBJOINED LETTER CHA 0F97 TIBETAN SUBJOINED LETTER JA 0F99 TIBETAN SUBJOINED LETTER NYA 0F9A TIBETAN SUBJOINED LETTER TTA 0F9B TIBETAN SUBJOINED LETTER TTHA 0F9C TIBETAN SUBJOINED LETTER DDA 0F9D TIBETAN SUBJOINED LETTER DDHA : 0F9C 0FB7 0F9E TIBETAN SUBJOINED LETTER NNA 0F9F TIBETAN SUBJOINED LETTER TA 0FA0 TIBETAN SUBJOINED LETTER THA 0FA1 TIBETAN SUBJOINED LETTER DA 0FA2 TIBETAN SUBJOINED LETTER DHA : 0FA1 0FB7 0FA3 TIBETAN SUBJOINED LETTER NA 0FA4 TIBETAN SUBJOINED LETTER PA 0FA5 TIBETAN SUBJOINED LETTER PHA 0FA6 TIBETAN SUBJOINED LETTER BA 0FA7 TIBETAN SUBJOINED LETTER BHA : 0FA6 0FB7 0FA8 TIBETAN SUBJOINED LETTER MA 0FA9 TIBETAN SUBJOINED LETTER TSA 0FAA TIBETAN SUBJOINED LETTER TSHA 0FAB TIBETAN SUBJOINED LETTER DZA 0FAC TIBETAN SUBJOINED LETTER DZHA : 0FAB 0FB7 0FAD TIBETAN SUBJOINED LETTER WA = wa-zur, wa-btags (wa ta) 0FAE TIBETAN SUBJOINED LETTER ZHA 0FAF TIBETAN SUBJOINED LETTER ZA 0FB0 TIBETAN SUBJOINED LETTER -A = a-chung * rare, only used for full-sized subjoined letter x (tibetan vowel sign aa - 0F71) 0FB1 TIBETAN SUBJOINED LETTER YA = ya-btags (ya ta) 0FB2 TIBETAN SUBJOINED LETTER RA = ra-btags (ra ta) 0FB3 TIBETAN SUBJOINED LETTER LA 0FB4 TIBETAN SUBJOINED LETTER SHA 0FB5 TIBETAN SUBJOINED LETTER SSA = reversed subjoined sha 0FB6 TIBETAN SUBJOINED LETTER SA 0FB7 TIBETAN SUBJOINED LETTER HA 0FB8 TIBETAN SUBJOINED LETTER A 0FB9 TIBETAN SUBJOINED LETTER KSSA : 0F90 0FB5 @ Fixed-form subjoined consonants @+ These characters are used only for transliteration and transcription. 0FBA TIBETAN SUBJOINED LETTER FIXED-FORM WA 0FBB TIBETAN SUBJOINED LETTER FIXED-FORM YA 0FBC TIBETAN SUBJOINED LETTER FIXED-FORM RA @ Signs 0FBE TIBETAN KU RU KHA * often repeated three times; indicates a refrain 0FBF TIBETAN KU RU KHA BZHI MIG CAN * marks point of text insertion or annotation x (reference mark - 203B) @ Cantillation signs 0FC0 TIBETAN CANTILLATION SIGN HEAVY BEAT * marks a heavy drum beat 0FC1 TIBETAN CANTILLATION SIGN LIGHT BEAT * marks a light drum beat 0FC2 TIBETAN CANTILLATION SIGN CANG TE-U * symbol of a small Tibetan hand drum 0FC3 TIBETAN CANTILLATION SIGN SBUB -CHAL * symbol of a Tibetan cymbal @ Symbols 0FC4 TIBETAN SYMBOL DRIL BU * symbol of a Tibetan hand bell x (bell - 1F514) 0FC5 TIBETAN SYMBOL RDO RJE 0FC6 TIBETAN SYMBOL PADMA GDAN 0FC7 TIBETAN SYMBOL RDO RJE RGYA GRAM 0FC8 TIBETAN SYMBOL PHUR PA 0FC9 TIBETAN SYMBOL NOR BU 0FCA TIBETAN SYMBOL NOR BU NYIS -KHYIL * the double body symbol x (yin yang - 262F) 0FCB TIBETAN SYMBOL NOR BU GSUM -KHYIL * the tri-kaya or triple body symbol 0FCC TIBETAN SYMBOL NOR BU BZHI -KHYIL * the quadruple body symbol, a form of the svasti sign x (left-facing svasti sign - 0FD6) @ Astrological signs 0FCE TIBETAN SIGN RDEL NAG RDEL DKAR = dena deka * signifies bad luck earlier, good luck later x (tibetan sign rdel dkar rdel nag - 0F1F) 0FCF TIBETAN SIGN RDEL NAG GSUM @ Marks 0FD0 TIBETAN MARK BSKA- SHOG GI MGO RGYAN % TIBETAN MARK BKA- SHOG GI MGO RGYAN * used in Bhutan 0FD1 TIBETAN MARK MNYAM YIG GI MGO RGYAN * used in Bhutan 0FD2 TIBETAN MARK NYIS TSHEG = nyi tsek @ Head marks 0FD3 TIBETAN MARK INITIAL BRDA RNYING YIG MGO MDUN MA = da nying yik go dun ma 0FD4 TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA = da nying yik go kab ma @ Religious symbols 0FD5 RIGHT-FACING SVASTI SIGN = gyung drung nang -khor * symbol of good luck and well-being in India x 5350 0FD6 LEFT-FACING SVASTI SIGN = gyung drung phyi -khor x 534D 0FD7 RIGHT-FACING SVASTI SIGN WITH DOTS = gyung drung nang -khor bzhi mig can 0FD8 LEFT-FACING SVASTI SIGN WITH DOTS = gyung drung phyi -khor bzhi mig can @ Annotation marks 0FD9 TIBETAN MARK LEADING MCHAN RTAGS 0FDA TIBETAN MARK TRAILING MCHAN RTAGS @@ 1000 Myanmar 109F @ Consonants 1000 MYANMAR LETTER KA ~ 1000 FE00 dotted form 1001 MYANMAR LETTER KHA 1002 MYANMAR LETTER GA ~ 1002 FE00 dotted form 1003 MYANMAR LETTER GHA 1004 MYANMAR LETTER NGA ~ 1004 FE00 dotted form 1005 MYANMAR LETTER CA 1006 MYANMAR LETTER CHA 1007 MYANMAR LETTER JA 1008 MYANMAR LETTER JHA 1009 MYANMAR LETTER NYA 100A MYANMAR LETTER NNYA 100B MYANMAR LETTER TTA 100C MYANMAR LETTER TTHA 100D MYANMAR LETTER DDA 100E MYANMAR LETTER DDHA 100F MYANMAR LETTER NNA 1010 MYANMAR LETTER TA ~ 1010 FE00 dotted form 1011 MYANMAR LETTER THA ~ 1011 FE00 dotted form 1012 MYANMAR LETTER DA 1013 MYANMAR LETTER DHA 1014 MYANMAR LETTER NA 1015 MYANMAR LETTER PA ~ 1015 FE00 dotted form 1016 MYANMAR LETTER PHA 1017 MYANMAR LETTER BA 1018 MYANMAR LETTER BHA 1019 MYANMAR LETTER MA ~ 1019 FE00 dotted form 101A MYANMAR LETTER YA ~ 101A FE00 dotted form 101B MYANMAR LETTER RA 101C MYANMAR LETTER LA ~ 101C FE00 dotted form 101D MYANMAR LETTER WA ~ 101D FE00 dotted form 101E MYANMAR LETTER SA 101F MYANMAR LETTER HA 1020 MYANMAR LETTER LLA @ Independent vowels 1021 MYANMAR LETTER A * also represents the glottal stop as a consonant 1022 MYANMAR LETTER SHAN A ~ 1022 FE00 dotted form 1023 MYANMAR LETTER I 1024 MYANMAR LETTER II 1025 MYANMAR LETTER U 1026 MYANMAR LETTER UU : 1025 102E 1027 MYANMAR LETTER E 1028 MYANMAR LETTER MON E 1029 MYANMAR LETTER O 102A MYANMAR LETTER AU @ Dependent vowel signs 102B MYANMAR VOWEL SIGN TALL AA 102C MYANMAR VOWEL SIGN AA 102D MYANMAR VOWEL SIGN I 102E MYANMAR VOWEL SIGN II 102F MYANMAR VOWEL SIGN U 1030 MYANMAR VOWEL SIGN UU 1031 MYANMAR VOWEL SIGN E * stands to the left of the consonant ~ 1031 FE00 dotted form 1032 MYANMAR VOWEL SIGN AI 1033 MYANMAR VOWEL SIGN MON II 1034 MYANMAR VOWEL SIGN MON O 1035 MYANMAR VOWEL SIGN E ABOVE @ Various signs 1036 MYANMAR SIGN ANUSVARA 1037 MYANMAR SIGN DOT BELOW = aukmyit * a tone mark 1038 MYANMAR SIGN VISARGA 1039 MYANMAR SIGN VIRAMA = killer (when rendered visibly) 103A MYANMAR SIGN ASAT = killer (always rendered visibly) @ Dependent consonant signs 103B MYANMAR CONSONANT SIGN MEDIAL YA 103C MYANMAR CONSONANT SIGN MEDIAL RA 103D MYANMAR CONSONANT SIGN MEDIAL WA 103E MYANMAR CONSONANT SIGN MEDIAL HA @ Consonant 103F MYANMAR LETTER GREAT SA @ Digits 1040 MYANMAR DIGIT ZERO 1041 MYANMAR DIGIT ONE 1042 MYANMAR DIGIT TWO 1043 MYANMAR DIGIT THREE 1044 MYANMAR DIGIT FOUR 1045 MYANMAR DIGIT FIVE 1046 MYANMAR DIGIT SIX 1047 MYANMAR DIGIT SEVEN 1048 MYANMAR DIGIT EIGHT 1049 MYANMAR DIGIT NINE @ Punctuation 104A MYANMAR SIGN LITTLE SECTION x (devanagari danda - 0964) 104B MYANMAR SIGN SECTION x (devanagari double danda - 0965) @ Various signs 104C MYANMAR SYMBOL LOCATIVE 104D MYANMAR SYMBOL COMPLETED 104E MYANMAR SYMBOL AFOREMENTIONED 104F MYANMAR SYMBOL GENITIVE @ Pali and Sanskrit extensions 1050 MYANMAR LETTER SHA 1051 MYANMAR LETTER SSA 1052 MYANMAR LETTER VOCALIC R 1053 MYANMAR LETTER VOCALIC RR 1054 MYANMAR LETTER VOCALIC L 1055 MYANMAR LETTER VOCALIC LL 1056 MYANMAR VOWEL SIGN VOCALIC R 1057 MYANMAR VOWEL SIGN VOCALIC RR 1058 MYANMAR VOWEL SIGN VOCALIC L 1059 MYANMAR VOWEL SIGN VOCALIC LL @ Extensions for Mon 105A MYANMAR LETTER MON NGA 105B MYANMAR LETTER MON JHA 105C MYANMAR LETTER MON BBA 105D MYANMAR LETTER MON BBE 105E MYANMAR CONSONANT SIGN MON MEDIAL NA 105F MYANMAR CONSONANT SIGN MON MEDIAL MA 1060 MYANMAR CONSONANT SIGN MON MEDIAL LA @ Extensions for S'gaw Karen 1061 MYANMAR LETTER SGAW KAREN SHA 1062 MYANMAR VOWEL SIGN SGAW KAREN EU 1063 MYANMAR TONE MARK SGAW KAREN HATHI 1064 MYANMAR TONE MARK SGAW KAREN KE PHO @ Extensions for Western Pwo Karen 1065 MYANMAR LETTER WESTERN PWO KAREN THA 1066 MYANMAR LETTER WESTERN PWO KAREN PWA 1067 MYANMAR VOWEL SIGN WESTERN PWO KAREN EU 1068 MYANMAR VOWEL SIGN WESTERN PWO KAREN UE 1069 MYANMAR SIGN WESTERN PWO KAREN TONE-1 106A MYANMAR SIGN WESTERN PWO KAREN TONE-2 106B MYANMAR SIGN WESTERN PWO KAREN TONE-3 106C MYANMAR SIGN WESTERN PWO KAREN TONE-4 106D MYANMAR SIGN WESTERN PWO KAREN TONE-5 @ Extensions for Eastern Pwo Karen 106E MYANMAR LETTER EASTERN PWO KAREN NNA 106F MYANMAR LETTER EASTERN PWO KAREN YWA 1070 MYANMAR LETTER EASTERN PWO KAREN GHWA @ Extension for Geba Karen 1071 MYANMAR VOWEL SIGN GEBA KAREN I @ Extensions for Kayah 1072 MYANMAR VOWEL SIGN KAYAH OE 1073 MYANMAR VOWEL SIGN KAYAH U 1074 MYANMAR VOWEL SIGN KAYAH EE @ Extensions for Shan 1075 MYANMAR LETTER SHAN KA ~ 1075 FE00 dotted form 1076 MYANMAR LETTER SHAN KHA 1077 MYANMAR LETTER SHAN GA 1078 MYANMAR LETTER SHAN CA ~ 1078 FE00 dotted form 1079 MYANMAR LETTER SHAN ZA 107A MYANMAR LETTER SHAN NYA ~ 107A FE00 dotted form 107B MYANMAR LETTER SHAN DA 107C MYANMAR LETTER SHAN NA 107D MYANMAR LETTER SHAN PHA 107E MYANMAR LETTER SHAN FA 107F MYANMAR LETTER SHAN BA 1080 MYANMAR LETTER SHAN THA ~ 1080 FE00 dotted form 1081 MYANMAR LETTER SHAN HA 1082 MYANMAR CONSONANT SIGN SHAN MEDIAL WA 1083 MYANMAR VOWEL SIGN SHAN AA 1084 MYANMAR VOWEL SIGN SHAN E 1085 MYANMAR VOWEL SIGN SHAN E ABOVE 1086 MYANMAR VOWEL SIGN SHAN FINAL Y 1087 MYANMAR SIGN SHAN TONE-2 1088 MYANMAR SIGN SHAN TONE-3 1089 MYANMAR SIGN SHAN TONE-5 108A MYANMAR SIGN SHAN TONE-6 108B MYANMAR SIGN SHAN COUNCIL TONE-2 108C MYANMAR SIGN SHAN COUNCIL TONE-3 108D MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE @ Extensions for Rumai Palaung 108E MYANMAR LETTER RUMAI PALAUNG FA 108F MYANMAR SIGN RUMAI PALAUNG TONE-5 @ Shan digits 1090 MYANMAR SHAN DIGIT ZERO 1091 MYANMAR SHAN DIGIT ONE 1092 MYANMAR SHAN DIGIT TWO 1093 MYANMAR SHAN DIGIT THREE 1094 MYANMAR SHAN DIGIT FOUR 1095 MYANMAR SHAN DIGIT FIVE 1096 MYANMAR SHAN DIGIT SIX 1097 MYANMAR SHAN DIGIT SEVEN 1098 MYANMAR SHAN DIGIT EIGHT 1099 MYANMAR SHAN DIGIT NINE @ Extensions for Khamti Shan 109A MYANMAR SIGN KHAMTI TONE-1 109B MYANMAR SIGN KHAMTI TONE-3 @ Extensions for Aiton and Phake 109C MYANMAR VOWEL SIGN AITON A 109D MYANMAR VOWEL SIGN AITON AI @ Shan symbols 109E MYANMAR SYMBOL SHAN ONE 109F MYANMAR SYMBOL SHAN EXCLAMATION @~ ! @@ 10A0 Georgian 10FF @ Capital letters (Khutsuri) @+ This is the uppercase of the old ecclesiastical alphabet. The style shown in the code charts is known as Asomtavruli. See the Georgian Supplement block for lowercase Nuskhuri. 10A0 GEORGIAN CAPITAL LETTER AN 10A1 GEORGIAN CAPITAL LETTER BAN 10A2 GEORGIAN CAPITAL LETTER GAN 10A3 GEORGIAN CAPITAL LETTER DON 10A4 GEORGIAN CAPITAL LETTER EN 10A5 GEORGIAN CAPITAL LETTER VIN 10A6 GEORGIAN CAPITAL LETTER ZEN 10A7 GEORGIAN CAPITAL LETTER TAN 10A8 GEORGIAN CAPITAL LETTER IN 10A9 GEORGIAN CAPITAL LETTER KAN 10AA GEORGIAN CAPITAL LETTER LAS 10AB GEORGIAN CAPITAL LETTER MAN 10AC GEORGIAN CAPITAL LETTER NAR 10AD GEORGIAN CAPITAL LETTER ON 10AE GEORGIAN CAPITAL LETTER PAR 10AF GEORGIAN CAPITAL LETTER ZHAR 10B0 GEORGIAN CAPITAL LETTER RAE 10B1 GEORGIAN CAPITAL LETTER SAN 10B2 GEORGIAN CAPITAL LETTER TAR 10B3 GEORGIAN CAPITAL LETTER UN 10B4 GEORGIAN CAPITAL LETTER PHAR 10B5 GEORGIAN CAPITAL LETTER KHAR 10B6 GEORGIAN CAPITAL LETTER GHAN 10B7 GEORGIAN CAPITAL LETTER QAR 10B8 GEORGIAN CAPITAL LETTER SHIN 10B9 GEORGIAN CAPITAL LETTER CHIN 10BA GEORGIAN CAPITAL LETTER CAN 10BB GEORGIAN CAPITAL LETTER JIL 10BC GEORGIAN CAPITAL LETTER CIL 10BD GEORGIAN CAPITAL LETTER CHAR 10BE GEORGIAN CAPITAL LETTER XAN 10BF GEORGIAN CAPITAL LETTER JHAN 10C0 GEORGIAN CAPITAL LETTER HAE 10C1 GEORGIAN CAPITAL LETTER HE 10C2 GEORGIAN CAPITAL LETTER HIE 10C3 GEORGIAN CAPITAL LETTER WE 10C4 GEORGIAN CAPITAL LETTER HAR 10C5 GEORGIAN CAPITAL LETTER HOE @ Additional letter 10C7 GEORGIAN CAPITAL LETTER YN @ Additional letter for Ossetian 10CD GEORGIAN CAPITAL LETTER AEN @ Mkhedruli @+ This is the modern secular alphabet, which is caseless. 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 @ Archaic letters 10F1 GEORGIAN LETTER HE 10F2 GEORGIAN LETTER HIE 10F3 GEORGIAN LETTER WE 10F4 GEORGIAN LETTER HAR 10F5 GEORGIAN LETTER HOE 10F6 GEORGIAN LETTER FI @ Additional letters for Mingrelian and Svan 10F7 GEORGIAN LETTER YN 10F8 GEORGIAN LETTER ELIFI @ Additional letters 10F9 GEORGIAN LETTER TURNED GAN 10FA GEORGIAN LETTER AIN @ Punctuation 10FB GEORGIAN PARAGRAPH SEPARATOR x (three dot punctuation - 2056) @ Modifier letter 10FC MODIFIER LETTER GEORGIAN NAR # 10DC @ Additional letters for Ossetian and Abkhaz 10FD GEORGIAN LETTER AEN 10FE GEORGIAN LETTER HARD SIGN 10FF GEORGIAN LETTER LABIAL SIGN @@ 1100 Hangul Jamo 11FF @+ The aliases in this block represent the Jamo short names. @ Initial consonants 1100 HANGUL CHOSEONG KIYEOK = G 1101 HANGUL CHOSEONG SSANGKIYEOK = GG 1102 HANGUL CHOSEONG NIEUN = N 1103 HANGUL CHOSEONG TIKEUT = D 1104 HANGUL CHOSEONG SSANGTIKEUT = DD 1105 HANGUL CHOSEONG RIEUL = R 1106 HANGUL CHOSEONG MIEUM = M 1107 HANGUL CHOSEONG PIEUP = B 1108 HANGUL CHOSEONG SSANGPIEUP = BB 1109 HANGUL CHOSEONG SIOS = S * voiceless lenis alveolar fricative 110A HANGUL CHOSEONG SSANGSIOS = SS * voiceless fortis alveolar fricative 110B HANGUL CHOSEONG IEUNG * zero sound 110C HANGUL CHOSEONG CIEUC = J * voiceless or voiced lenis alveolar affricate 110D HANGUL CHOSEONG SSANGCIEUC = JJ * voiceless unaspirated fortis alveolar affricate 110E HANGUL CHOSEONG CHIEUCH = C * voiceless aspirated alveolar affricate 110F HANGUL CHOSEONG KHIEUKH = K 1110 HANGUL CHOSEONG THIEUTH = T 1111 HANGUL CHOSEONG PHIEUPH = P 1112 HANGUL CHOSEONG HIEUH = H * voiceless glottal fricative @ Old initial consonants 1113 HANGUL CHOSEONG NIEUN-KIYEOK 1114 HANGUL CHOSEONG SSANGNIEUN 1115 HANGUL CHOSEONG NIEUN-TIKEUT 1116 HANGUL CHOSEONG NIEUN-PIEUP 1117 HANGUL CHOSEONG TIKEUT-KIYEOK 1118 HANGUL CHOSEONG RIEUL-NIEUN 1119 HANGUL CHOSEONG SSANGRIEUL 111A HANGUL CHOSEONG RIEUL-HIEUH 111B HANGUL CHOSEONG KAPYEOUNRIEUL 111C HANGUL CHOSEONG MIEUM-PIEUP 111D HANGUL CHOSEONG KAPYEOUNMIEUM 111E HANGUL CHOSEONG PIEUP-KIYEOK 111F HANGUL CHOSEONG PIEUP-NIEUN 1120 HANGUL CHOSEONG PIEUP-TIKEUT 1121 HANGUL CHOSEONG PIEUP-SIOS 1122 HANGUL CHOSEONG PIEUP-SIOS-KIYEOK 1123 HANGUL CHOSEONG PIEUP-SIOS-TIKEUT 1124 HANGUL CHOSEONG PIEUP-SIOS-PIEUP 1125 HANGUL CHOSEONG PIEUP-SSANGSIOS 1126 HANGUL CHOSEONG PIEUP-SIOS-CIEUC 1127 HANGUL CHOSEONG PIEUP-CIEUC 1128 HANGUL CHOSEONG PIEUP-CHIEUCH 1129 HANGUL CHOSEONG PIEUP-THIEUTH 112A HANGUL CHOSEONG PIEUP-PHIEUPH 112B HANGUL CHOSEONG KAPYEOUNPIEUP 112C HANGUL CHOSEONG KAPYEOUNSSANGPIEUP 112D HANGUL CHOSEONG SIOS-KIYEOK 112E HANGUL CHOSEONG SIOS-NIEUN 112F HANGUL CHOSEONG SIOS-TIKEUT 1130 HANGUL CHOSEONG SIOS-RIEUL 1131 HANGUL CHOSEONG SIOS-MIEUM 1132 HANGUL CHOSEONG SIOS-PIEUP 1133 HANGUL CHOSEONG SIOS-PIEUP-KIYEOK 1134 HANGUL CHOSEONG SIOS-SSANGSIOS 1135 HANGUL CHOSEONG SIOS-IEUNG 1136 HANGUL CHOSEONG SIOS-CIEUC 1137 HANGUL CHOSEONG SIOS-CHIEUCH 1138 HANGUL CHOSEONG SIOS-KHIEUKH 1139 HANGUL CHOSEONG SIOS-THIEUTH 113A HANGUL CHOSEONG SIOS-PHIEUPH 113B HANGUL CHOSEONG SIOS-HIEUH 113C HANGUL CHOSEONG CHITUEUMSIOS * voiceless lenis dental fricative 113D HANGUL CHOSEONG CHITUEUMSSANGSIOS * voiceless fortis dental fricative 113E HANGUL CHOSEONG CEONGCHIEUMSIOS * voiceless lenis retroflex fricative 113F HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS * voiceless fortis retroflex fricative 1140 HANGUL CHOSEONG PANSIOS * voiced alveolar fricative 1141 HANGUL CHOSEONG IEUNG-KIYEOK 1142 HANGUL CHOSEONG IEUNG-TIKEUT 1143 HANGUL CHOSEONG IEUNG-MIEUM 1144 HANGUL CHOSEONG IEUNG-PIEUP 1145 HANGUL CHOSEONG IEUNG-SIOS 1146 HANGUL CHOSEONG IEUNG-PANSIOS 1147 HANGUL CHOSEONG SSANGIEUNG 1148 HANGUL CHOSEONG IEUNG-CIEUC 1149 HANGUL CHOSEONG IEUNG-CHIEUCH 114A HANGUL CHOSEONG IEUNG-THIEUTH 114B HANGUL CHOSEONG IEUNG-PHIEUPH 114C HANGUL CHOSEONG YESIEUNG * velar nasal consonant 114D HANGUL CHOSEONG CIEUC-IEUNG 114E HANGUL CHOSEONG CHITUEUMCIEUC * voiceless or voiced lenis dental affricate 114F HANGUL CHOSEONG CHITUEUMSSANGCIEUC * voiceless unaspirated fortis dental affricate 1150 HANGUL CHOSEONG CEONGCHIEUMCIEUC * voiceless or voiced lenis retroflex affricate 1151 HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC * voiceless unaspirated fortis retroflex affricate 1152 HANGUL CHOSEONG CHIEUCH-KHIEUKH 1153 HANGUL CHOSEONG CHIEUCH-HIEUH 1154 HANGUL CHOSEONG CHITUEUMCHIEUCH * voiceless aspirated dental affricate 1155 HANGUL CHOSEONG CEONGCHIEUMCHIEUCH * voiceless aspirated retroflex affricate 1156 HANGUL CHOSEONG PHIEUPH-PIEUP 1157 HANGUL CHOSEONG KAPYEOUNPHIEUPH 1158 HANGUL CHOSEONG SSANGHIEUH 1159 HANGUL CHOSEONG YEORINHIEUH * glottal stop 115A HANGUL CHOSEONG KIYEOK-TIKEUT 115B HANGUL CHOSEONG NIEUN-SIOS 115C HANGUL CHOSEONG NIEUN-CIEUC 115D HANGUL CHOSEONG NIEUN-HIEUH 115E HANGUL CHOSEONG TIKEUT-RIEUL 115F HANGUL CHOSEONG FILLER @ Medial vowels 1160 HANGUL JUNGSEONG FILLER 1161 HANGUL JUNGSEONG A = A 1162 HANGUL JUNGSEONG AE = AE 1163 HANGUL JUNGSEONG YA = YA 1164 HANGUL JUNGSEONG YAE = YAE 1165 HANGUL JUNGSEONG EO = EO 1166 HANGUL JUNGSEONG E = E 1167 HANGUL JUNGSEONG YEO = YEO 1168 HANGUL JUNGSEONG YE = YE 1169 HANGUL JUNGSEONG O = O 116A HANGUL JUNGSEONG WA = WA 116B HANGUL JUNGSEONG WAE = WAE 116C HANGUL JUNGSEONG OE = OE 116D HANGUL JUNGSEONG YO = YO 116E HANGUL JUNGSEONG U = U 116F HANGUL JUNGSEONG WEO = WEO 1170 HANGUL JUNGSEONG WE = WE 1171 HANGUL JUNGSEONG WI = WI 1172 HANGUL JUNGSEONG YU = YU 1173 HANGUL JUNGSEONG EU = EU 1174 HANGUL JUNGSEONG YI = YI 1175 HANGUL JUNGSEONG I = I @ Old medial vowels 1176 HANGUL JUNGSEONG A-O 1177 HANGUL JUNGSEONG A-U 1178 HANGUL JUNGSEONG YA-O 1179 HANGUL JUNGSEONG YA-YO 117A HANGUL JUNGSEONG EO-O 117B HANGUL JUNGSEONG EO-U 117C HANGUL JUNGSEONG EO-EU 117D HANGUL JUNGSEONG YEO-O 117E HANGUL JUNGSEONG YEO-U 117F HANGUL JUNGSEONG O-EO 1180 HANGUL JUNGSEONG O-E 1181 HANGUL JUNGSEONG O-YE 1182 HANGUL JUNGSEONG O-O 1183 HANGUL JUNGSEONG O-U 1184 HANGUL JUNGSEONG YO-YA 1185 HANGUL JUNGSEONG YO-YAE 1186 HANGUL JUNGSEONG YO-YEO 1187 HANGUL JUNGSEONG YO-O 1188 HANGUL JUNGSEONG YO-I 1189 HANGUL JUNGSEONG U-A 118A HANGUL JUNGSEONG U-AE 118B HANGUL JUNGSEONG U-EO-EU 118C HANGUL JUNGSEONG U-YE 118D HANGUL JUNGSEONG U-U 118E HANGUL JUNGSEONG YU-A 118F HANGUL JUNGSEONG YU-EO 1190 HANGUL JUNGSEONG YU-E 1191 HANGUL JUNGSEONG YU-YEO 1192 HANGUL JUNGSEONG YU-YE 1193 HANGUL JUNGSEONG YU-U 1194 HANGUL JUNGSEONG YU-I 1195 HANGUL JUNGSEONG EU-U 1196 HANGUL JUNGSEONG EU-EU 1197 HANGUL JUNGSEONG YI-U 1198 HANGUL JUNGSEONG I-A 1199 HANGUL JUNGSEONG I-YA 119A HANGUL JUNGSEONG I-O 119B HANGUL JUNGSEONG I-U 119C HANGUL JUNGSEONG I-EU 119D HANGUL JUNGSEONG I-ARAEA 119E HANGUL JUNGSEONG ARAEA * rounded open-mid back vowel 119F HANGUL JUNGSEONG ARAEA-EO 11A0 HANGUL JUNGSEONG ARAEA-U 11A1 HANGUL JUNGSEONG ARAEA-I 11A2 HANGUL JUNGSEONG SSANGARAEA 11A3 HANGUL JUNGSEONG A-EU 11A4 HANGUL JUNGSEONG YA-U 11A5 HANGUL JUNGSEONG YEO-YA 11A6 HANGUL JUNGSEONG O-YA 11A7 HANGUL JUNGSEONG O-YAE @ Final consonants 11A8 HANGUL JONGSEONG KIYEOK = G 11A9 HANGUL JONGSEONG SSANGKIYEOK = GG 11AA HANGUL JONGSEONG KIYEOK-SIOS = GS 11AB HANGUL JONGSEONG NIEUN = N 11AC HANGUL JONGSEONG NIEUN-CIEUC = NJ 11AD HANGUL JONGSEONG NIEUN-HIEUH = NH 11AE HANGUL JONGSEONG TIKEUT = D 11AF HANGUL JONGSEONG RIEUL = L 11B0 HANGUL JONGSEONG RIEUL-KIYEOK = LG 11B1 HANGUL JONGSEONG RIEUL-MIEUM = LM 11B2 HANGUL JONGSEONG RIEUL-PIEUP = LB 11B3 HANGUL JONGSEONG RIEUL-SIOS = LS 11B4 HANGUL JONGSEONG RIEUL-THIEUTH = LT 11B5 HANGUL JONGSEONG RIEUL-PHIEUPH = LP 11B6 HANGUL JONGSEONG RIEUL-HIEUH = LH 11B7 HANGUL JONGSEONG MIEUM = M 11B8 HANGUL JONGSEONG PIEUP = B 11B9 HANGUL JONGSEONG PIEUP-SIOS = BS 11BA HANGUL JONGSEONG SIOS = S 11BB HANGUL JONGSEONG SSANGSIOS = SS 11BC HANGUL JONGSEONG IEUNG = NG * velar nasal consonant 11BD HANGUL JONGSEONG CIEUC = J 11BE HANGUL JONGSEONG CHIEUCH = C 11BF HANGUL JONGSEONG KHIEUKH = K 11C0 HANGUL JONGSEONG THIEUTH = T 11C1 HANGUL JONGSEONG PHIEUPH = P 11C2 HANGUL JONGSEONG HIEUH = H @ Old final consonants 11C3 HANGUL JONGSEONG KIYEOK-RIEUL 11C4 HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK 11C5 HANGUL JONGSEONG NIEUN-KIYEOK 11C6 HANGUL JONGSEONG NIEUN-TIKEUT 11C7 HANGUL JONGSEONG NIEUN-SIOS 11C8 HANGUL JONGSEONG NIEUN-PANSIOS 11C9 HANGUL JONGSEONG NIEUN-THIEUTH 11CA HANGUL JONGSEONG TIKEUT-KIYEOK 11CB HANGUL JONGSEONG TIKEUT-RIEUL 11CC HANGUL JONGSEONG RIEUL-KIYEOK-SIOS 11CD HANGUL JONGSEONG RIEUL-NIEUN 11CE HANGUL JONGSEONG RIEUL-TIKEUT 11CF HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH 11D0 HANGUL JONGSEONG SSANGRIEUL 11D1 HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK 11D2 HANGUL JONGSEONG RIEUL-MIEUM-SIOS 11D3 HANGUL JONGSEONG RIEUL-PIEUP-SIOS 11D4 HANGUL JONGSEONG RIEUL-PIEUP-HIEUH 11D5 HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP 11D6 HANGUL JONGSEONG RIEUL-SSANGSIOS 11D7 HANGUL JONGSEONG RIEUL-PANSIOS 11D8 HANGUL JONGSEONG RIEUL-KHIEUKH 11D9 HANGUL JONGSEONG RIEUL-YEORINHIEUH 11DA HANGUL JONGSEONG MIEUM-KIYEOK 11DB HANGUL JONGSEONG MIEUM-RIEUL 11DC HANGUL JONGSEONG MIEUM-PIEUP 11DD HANGUL JONGSEONG MIEUM-SIOS 11DE HANGUL JONGSEONG MIEUM-SSANGSIOS 11DF HANGUL JONGSEONG MIEUM-PANSIOS 11E0 HANGUL JONGSEONG MIEUM-CHIEUCH 11E1 HANGUL JONGSEONG MIEUM-HIEUH 11E2 HANGUL JONGSEONG KAPYEOUNMIEUM 11E3 HANGUL JONGSEONG PIEUP-RIEUL 11E4 HANGUL JONGSEONG PIEUP-PHIEUPH 11E5 HANGUL JONGSEONG PIEUP-HIEUH 11E6 HANGUL JONGSEONG KAPYEOUNPIEUP 11E7 HANGUL JONGSEONG SIOS-KIYEOK 11E8 HANGUL JONGSEONG SIOS-TIKEUT 11E9 HANGUL JONGSEONG SIOS-RIEUL 11EA HANGUL JONGSEONG SIOS-PIEUP 11EB HANGUL JONGSEONG PANSIOS 11EC HANGUL JONGSEONG IEUNG-KIYEOK = yesieung-kiyeok 11ED HANGUL JONGSEONG IEUNG-SSANGKIYEOK = yesieung-ssangkiyeok 11EE HANGUL JONGSEONG SSANGIEUNG = ssangyesieung 11EF HANGUL JONGSEONG IEUNG-KHIEUKH = yesieung-khieukh 11F0 HANGUL JONGSEONG YESIEUNG 11F1 HANGUL JONGSEONG YESIEUNG-SIOS 11F2 HANGUL JONGSEONG YESIEUNG-PANSIOS 11F3 HANGUL JONGSEONG PHIEUPH-PIEUP 11F4 HANGUL JONGSEONG KAPYEOUNPHIEUPH 11F5 HANGUL JONGSEONG HIEUH-NIEUN 11F6 HANGUL JONGSEONG HIEUH-RIEUL 11F7 HANGUL JONGSEONG HIEUH-MIEUM 11F8 HANGUL JONGSEONG HIEUH-PIEUP 11F9 HANGUL JONGSEONG YEORINHIEUH 11FA HANGUL JONGSEONG KIYEOK-NIEUN 11FB HANGUL JONGSEONG KIYEOK-PIEUP 11FC HANGUL JONGSEONG KIYEOK-CHIEUCH 11FD HANGUL JONGSEONG KIYEOK-KHIEUKH 11FE HANGUL JONGSEONG KIYEOK-HIEUH 11FF HANGUL JONGSEONG SSANGNIEUN @@ 1200 Ethiopic 137F @@+ @ Syllables 1200 ETHIOPIC SYLLABLE HA 1201 ETHIOPIC SYLLABLE HU 1202 ETHIOPIC SYLLABLE HI 1203 ETHIOPIC SYLLABLE HAA 1204 ETHIOPIC SYLLABLE HEE 1205 ETHIOPIC SYLLABLE HE 1206 ETHIOPIC SYLLABLE HO 1207 ETHIOPIC SYLLABLE HOA 1208 ETHIOPIC SYLLABLE LA 1209 ETHIOPIC SYLLABLE LU 120A ETHIOPIC SYLLABLE LI 120B ETHIOPIC SYLLABLE LAA 120C ETHIOPIC SYLLABLE LEE 120D ETHIOPIC SYLLABLE LE 120E ETHIOPIC SYLLABLE LO 120F ETHIOPIC SYLLABLE LWA 1210 ETHIOPIC SYLLABLE HHA 1211 ETHIOPIC SYLLABLE HHU 1212 ETHIOPIC SYLLABLE HHI 1213 ETHIOPIC SYLLABLE HHAA 1214 ETHIOPIC SYLLABLE HHEE 1215 ETHIOPIC SYLLABLE HHE 1216 ETHIOPIC SYLLABLE HHO 1217 ETHIOPIC SYLLABLE HHWA 1218 ETHIOPIC SYLLABLE MA 1219 ETHIOPIC SYLLABLE MU 121A ETHIOPIC SYLLABLE MI 121B ETHIOPIC SYLLABLE MAA 121C ETHIOPIC SYLLABLE MEE 121D ETHIOPIC SYLLABLE ME 121E ETHIOPIC SYLLABLE MO 121F ETHIOPIC SYLLABLE MWA 1220 ETHIOPIC SYLLABLE SZA 1221 ETHIOPIC SYLLABLE SZU 1222 ETHIOPIC SYLLABLE SZI 1223 ETHIOPIC SYLLABLE SZAA 1224 ETHIOPIC SYLLABLE SZEE 1225 ETHIOPIC SYLLABLE SZE 1226 ETHIOPIC SYLLABLE SZO 1227 ETHIOPIC SYLLABLE SZWA 1228 ETHIOPIC SYLLABLE RA 1229 ETHIOPIC SYLLABLE RU 122A ETHIOPIC SYLLABLE RI 122B ETHIOPIC SYLLABLE RAA 122C ETHIOPIC SYLLABLE REE 122D ETHIOPIC SYLLABLE RE 122E ETHIOPIC SYLLABLE RO 122F ETHIOPIC SYLLABLE RWA 1230 ETHIOPIC SYLLABLE SA 1231 ETHIOPIC SYLLABLE SU 1232 ETHIOPIC SYLLABLE SI 1233 ETHIOPIC SYLLABLE SAA 1234 ETHIOPIC SYLLABLE SEE 1235 ETHIOPIC SYLLABLE SE 1236 ETHIOPIC SYLLABLE SO 1237 ETHIOPIC SYLLABLE SWA 1238 ETHIOPIC SYLLABLE SHA 1239 ETHIOPIC SYLLABLE SHU 123A ETHIOPIC SYLLABLE SHI 123B ETHIOPIC SYLLABLE SHAA 123C ETHIOPIC SYLLABLE SHEE 123D ETHIOPIC SYLLABLE SHE 123E ETHIOPIC SYLLABLE SHO 123F ETHIOPIC SYLLABLE SHWA 1240 ETHIOPIC SYLLABLE QA 1241 ETHIOPIC SYLLABLE QU 1242 ETHIOPIC SYLLABLE QI 1243 ETHIOPIC SYLLABLE QAA 1244 ETHIOPIC SYLLABLE QEE 1245 ETHIOPIC SYLLABLE QE 1246 ETHIOPIC SYLLABLE QO 1247 ETHIOPIC SYLLABLE QOA 1248 ETHIOPIC SYLLABLE QWA 124A ETHIOPIC SYLLABLE QWI 124B ETHIOPIC SYLLABLE QWAA 124C ETHIOPIC SYLLABLE QWEE 124D ETHIOPIC SYLLABLE QWE 1250 ETHIOPIC SYLLABLE QHA 1251 ETHIOPIC SYLLABLE QHU 1252 ETHIOPIC SYLLABLE QHI 1253 ETHIOPIC SYLLABLE QHAA 1254 ETHIOPIC SYLLABLE QHEE 1255 ETHIOPIC SYLLABLE QHE 1256 ETHIOPIC SYLLABLE QHO 1258 ETHIOPIC SYLLABLE QHWA 125A ETHIOPIC SYLLABLE QHWI 125B ETHIOPIC SYLLABLE QHWAA 125C ETHIOPIC SYLLABLE QHWEE 125D ETHIOPIC SYLLABLE QHWE 1260 ETHIOPIC SYLLABLE BA 1261 ETHIOPIC SYLLABLE BU 1262 ETHIOPIC SYLLABLE BI 1263 ETHIOPIC SYLLABLE BAA 1264 ETHIOPIC SYLLABLE BEE 1265 ETHIOPIC SYLLABLE BE 1266 ETHIOPIC SYLLABLE BO 1267 ETHIOPIC SYLLABLE BWA 1268 ETHIOPIC SYLLABLE VA 1269 ETHIOPIC SYLLABLE VU 126A ETHIOPIC SYLLABLE VI 126B ETHIOPIC SYLLABLE VAA 126C ETHIOPIC SYLLABLE VEE 126D ETHIOPIC SYLLABLE VE 126E ETHIOPIC SYLLABLE VO 126F ETHIOPIC SYLLABLE VWA 1270 ETHIOPIC SYLLABLE TA 1271 ETHIOPIC SYLLABLE TU 1272 ETHIOPIC SYLLABLE TI 1273 ETHIOPIC SYLLABLE TAA 1274 ETHIOPIC SYLLABLE TEE 1275 ETHIOPIC SYLLABLE TE 1276 ETHIOPIC SYLLABLE TO 1277 ETHIOPIC SYLLABLE TWA 1278 ETHIOPIC SYLLABLE CA 1279 ETHIOPIC SYLLABLE CU 127A ETHIOPIC SYLLABLE CI 127B ETHIOPIC SYLLABLE CAA 127C ETHIOPIC SYLLABLE CEE 127D ETHIOPIC SYLLABLE CE 127E ETHIOPIC SYLLABLE CO 127F ETHIOPIC SYLLABLE CWA 1280 ETHIOPIC SYLLABLE XA 1281 ETHIOPIC SYLLABLE XU 1282 ETHIOPIC SYLLABLE XI 1283 ETHIOPIC SYLLABLE XAA 1284 ETHIOPIC SYLLABLE XEE 1285 ETHIOPIC SYLLABLE XE 1286 ETHIOPIC SYLLABLE XO 1287 ETHIOPIC SYLLABLE XOA 1288 ETHIOPIC SYLLABLE XWA 128A ETHIOPIC SYLLABLE XWI 128B ETHIOPIC SYLLABLE XWAA 128C ETHIOPIC SYLLABLE XWEE 128D ETHIOPIC SYLLABLE XWE 1290 ETHIOPIC SYLLABLE NA 1291 ETHIOPIC SYLLABLE NU 1292 ETHIOPIC SYLLABLE NI 1293 ETHIOPIC SYLLABLE NAA 1294 ETHIOPIC SYLLABLE NEE 1295 ETHIOPIC SYLLABLE NE 1296 ETHIOPIC SYLLABLE NO 1297 ETHIOPIC SYLLABLE NWA 1298 ETHIOPIC SYLLABLE NYA 1299 ETHIOPIC SYLLABLE NYU 129A ETHIOPIC SYLLABLE NYI 129B ETHIOPIC SYLLABLE NYAA 129C ETHIOPIC SYLLABLE NYEE 129D ETHIOPIC SYLLABLE NYE 129E ETHIOPIC SYLLABLE NYO 129F ETHIOPIC SYLLABLE NYWA 12A0 ETHIOPIC SYLLABLE GLOTTAL A 12A1 ETHIOPIC SYLLABLE GLOTTAL U 12A2 ETHIOPIC SYLLABLE GLOTTAL I 12A3 ETHIOPIC SYLLABLE GLOTTAL AA 12A4 ETHIOPIC SYLLABLE GLOTTAL EE 12A5 ETHIOPIC SYLLABLE GLOTTAL E 12A6 ETHIOPIC SYLLABLE GLOTTAL O 12A7 ETHIOPIC SYLLABLE GLOTTAL WA 12A8 ETHIOPIC SYLLABLE KA 12A9 ETHIOPIC SYLLABLE KU 12AA ETHIOPIC SYLLABLE KI 12AB ETHIOPIC SYLLABLE KAA 12AC ETHIOPIC SYLLABLE KEE 12AD ETHIOPIC SYLLABLE KE 12AE ETHIOPIC SYLLABLE KO 12AF ETHIOPIC SYLLABLE KOA 12B0 ETHIOPIC SYLLABLE KWA 12B2 ETHIOPIC SYLLABLE KWI 12B3 ETHIOPIC SYLLABLE KWAA 12B4 ETHIOPIC SYLLABLE KWEE 12B5 ETHIOPIC SYLLABLE KWE 12B8 ETHIOPIC SYLLABLE KXA 12B9 ETHIOPIC SYLLABLE KXU 12BA ETHIOPIC SYLLABLE KXI 12BB ETHIOPIC SYLLABLE KXAA 12BC ETHIOPIC SYLLABLE KXEE 12BD ETHIOPIC SYLLABLE KXE 12BE ETHIOPIC SYLLABLE KXO 12C0 ETHIOPIC SYLLABLE KXWA 12C2 ETHIOPIC SYLLABLE KXWI 12C3 ETHIOPIC SYLLABLE KXWAA 12C4 ETHIOPIC SYLLABLE KXWEE 12C5 ETHIOPIC SYLLABLE KXWE 12C8 ETHIOPIC SYLLABLE WA 12C9 ETHIOPIC SYLLABLE WU 12CA ETHIOPIC SYLLABLE WI 12CB ETHIOPIC SYLLABLE WAA 12CC ETHIOPIC SYLLABLE WEE 12CD ETHIOPIC SYLLABLE WE 12CE ETHIOPIC SYLLABLE WO 12CF ETHIOPIC SYLLABLE WOA 12D0 ETHIOPIC SYLLABLE PHARYNGEAL A 12D1 ETHIOPIC SYLLABLE PHARYNGEAL U 12D2 ETHIOPIC SYLLABLE PHARYNGEAL I 12D3 ETHIOPIC SYLLABLE PHARYNGEAL AA 12D4 ETHIOPIC SYLLABLE PHARYNGEAL EE 12D5 ETHIOPIC SYLLABLE PHARYNGEAL E 12D6 ETHIOPIC SYLLABLE PHARYNGEAL O 12D8 ETHIOPIC SYLLABLE ZA 12D9 ETHIOPIC SYLLABLE ZU 12DA ETHIOPIC SYLLABLE ZI 12DB ETHIOPIC SYLLABLE ZAA 12DC ETHIOPIC SYLLABLE ZEE 12DD ETHIOPIC SYLLABLE ZE 12DE ETHIOPIC SYLLABLE ZO 12DF ETHIOPIC SYLLABLE ZWA 12E0 ETHIOPIC SYLLABLE ZHA 12E1 ETHIOPIC SYLLABLE ZHU 12E2 ETHIOPIC SYLLABLE ZHI 12E3 ETHIOPIC SYLLABLE ZHAA 12E4 ETHIOPIC SYLLABLE ZHEE 12E5 ETHIOPIC SYLLABLE ZHE 12E6 ETHIOPIC SYLLABLE ZHO 12E7 ETHIOPIC SYLLABLE ZHWA 12E8 ETHIOPIC SYLLABLE YA 12E9 ETHIOPIC SYLLABLE YU 12EA ETHIOPIC SYLLABLE YI 12EB ETHIOPIC SYLLABLE YAA 12EC ETHIOPIC SYLLABLE YEE 12ED ETHIOPIC SYLLABLE YE 12EE ETHIOPIC SYLLABLE YO 12EF ETHIOPIC SYLLABLE YOA 12F0 ETHIOPIC SYLLABLE DA 12F1 ETHIOPIC SYLLABLE DU 12F2 ETHIOPIC SYLLABLE DI 12F3 ETHIOPIC SYLLABLE DAA 12F4 ETHIOPIC SYLLABLE DEE 12F5 ETHIOPIC SYLLABLE DE 12F6 ETHIOPIC SYLLABLE DO 12F7 ETHIOPIC SYLLABLE DWA 12F8 ETHIOPIC SYLLABLE DDA 12F9 ETHIOPIC SYLLABLE DDU 12FA ETHIOPIC SYLLABLE DDI 12FB ETHIOPIC SYLLABLE DDAA 12FC ETHIOPIC SYLLABLE DDEE 12FD ETHIOPIC SYLLABLE DDE 12FE ETHIOPIC SYLLABLE DDO 12FF ETHIOPIC SYLLABLE DDWA 1300 ETHIOPIC SYLLABLE JA 1301 ETHIOPIC SYLLABLE JU 1302 ETHIOPIC SYLLABLE JI 1303 ETHIOPIC SYLLABLE JAA 1304 ETHIOPIC SYLLABLE JEE 1305 ETHIOPIC SYLLABLE JE 1306 ETHIOPIC SYLLABLE JO 1307 ETHIOPIC SYLLABLE JWA 1308 ETHIOPIC SYLLABLE GA 1309 ETHIOPIC SYLLABLE GU 130A ETHIOPIC SYLLABLE GI 130B ETHIOPIC SYLLABLE GAA 130C ETHIOPIC SYLLABLE GEE 130D ETHIOPIC SYLLABLE GE 130E ETHIOPIC SYLLABLE GO 130F ETHIOPIC SYLLABLE GOA 1310 ETHIOPIC SYLLABLE GWA 1312 ETHIOPIC SYLLABLE GWI 1313 ETHIOPIC SYLLABLE GWAA 1314 ETHIOPIC SYLLABLE GWEE 1315 ETHIOPIC SYLLABLE GWE 1318 ETHIOPIC SYLLABLE GGA 1319 ETHIOPIC SYLLABLE GGU 131A ETHIOPIC SYLLABLE GGI 131B ETHIOPIC SYLLABLE GGAA 131C ETHIOPIC SYLLABLE GGEE 131D ETHIOPIC SYLLABLE GGE 131E ETHIOPIC SYLLABLE GGO 131F ETHIOPIC SYLLABLE GGWAA 1320 ETHIOPIC SYLLABLE THA 1321 ETHIOPIC SYLLABLE THU 1322 ETHIOPIC SYLLABLE THI 1323 ETHIOPIC SYLLABLE THAA 1324 ETHIOPIC SYLLABLE THEE 1325 ETHIOPIC SYLLABLE THE 1326 ETHIOPIC SYLLABLE THO 1327 ETHIOPIC SYLLABLE THWA 1328 ETHIOPIC SYLLABLE CHA 1329 ETHIOPIC SYLLABLE CHU 132A ETHIOPIC SYLLABLE CHI 132B ETHIOPIC SYLLABLE CHAA 132C ETHIOPIC SYLLABLE CHEE 132D ETHIOPIC SYLLABLE CHE 132E ETHIOPIC SYLLABLE CHO 132F ETHIOPIC SYLLABLE CHWA 1330 ETHIOPIC SYLLABLE PHA 1331 ETHIOPIC SYLLABLE PHU 1332 ETHIOPIC SYLLABLE PHI 1333 ETHIOPIC SYLLABLE PHAA 1334 ETHIOPIC SYLLABLE PHEE 1335 ETHIOPIC SYLLABLE PHE 1336 ETHIOPIC SYLLABLE PHO 1337 ETHIOPIC SYLLABLE PHWA 1338 ETHIOPIC SYLLABLE TSA 1339 ETHIOPIC SYLLABLE TSU 133A ETHIOPIC SYLLABLE TSI 133B ETHIOPIC SYLLABLE TSAA 133C ETHIOPIC SYLLABLE TSEE 133D ETHIOPIC SYLLABLE TSE 133E ETHIOPIC SYLLABLE TSO 133F ETHIOPIC SYLLABLE TSWA 1340 ETHIOPIC SYLLABLE TZA 1341 ETHIOPIC SYLLABLE TZU 1342 ETHIOPIC SYLLABLE TZI 1343 ETHIOPIC SYLLABLE TZAA 1344 ETHIOPIC SYLLABLE TZEE 1345 ETHIOPIC SYLLABLE TZE 1346 ETHIOPIC SYLLABLE TZO 1347 ETHIOPIC SYLLABLE TZOA 1348 ETHIOPIC SYLLABLE FA 1349 ETHIOPIC SYLLABLE FU 134A ETHIOPIC SYLLABLE FI 134B ETHIOPIC SYLLABLE FAA 134C ETHIOPIC SYLLABLE FEE 134D ETHIOPIC SYLLABLE FE 134E ETHIOPIC SYLLABLE FO 134F ETHIOPIC SYLLABLE FWA 1350 ETHIOPIC SYLLABLE PA 1351 ETHIOPIC SYLLABLE PU 1352 ETHIOPIC SYLLABLE PI 1353 ETHIOPIC SYLLABLE PAA 1354 ETHIOPIC SYLLABLE PEE 1355 ETHIOPIC SYLLABLE PE 1356 ETHIOPIC SYLLABLE PO 1357 ETHIOPIC SYLLABLE PWA 1358 ETHIOPIC SYLLABLE RYA 1359 ETHIOPIC SYLLABLE MYA 135A ETHIOPIC SYLLABLE FYA @ Combining marks 135D ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK * Basketo 135E ETHIOPIC COMBINING VOWEL LENGTH MARK * Basketo 135F ETHIOPIC COMBINING GEMINATION MARK @ Punctuation 1360 ETHIOPIC SECTION MARK 1361 ETHIOPIC WORDSPACE 1362 ETHIOPIC FULL STOP 1363 ETHIOPIC COMMA 1364 ETHIOPIC SEMICOLON 1365 ETHIOPIC COLON 1366 ETHIOPIC PREFACE COLON 1367 ETHIOPIC QUESTION MARK 1368 ETHIOPIC PARAGRAPH SEPARATOR @ Digits 1369 ETHIOPIC DIGIT ONE 136A ETHIOPIC DIGIT TWO 136B ETHIOPIC DIGIT THREE 136C ETHIOPIC DIGIT FOUR 136D ETHIOPIC DIGIT FIVE 136E ETHIOPIC DIGIT SIX 136F ETHIOPIC DIGIT SEVEN 1370 ETHIOPIC DIGIT EIGHT 1371 ETHIOPIC DIGIT NINE @ Numbers 1372 ETHIOPIC NUMBER TEN 1373 ETHIOPIC NUMBER TWENTY 1374 ETHIOPIC NUMBER THIRTY 1375 ETHIOPIC NUMBER FORTY 1376 ETHIOPIC NUMBER FIFTY 1377 ETHIOPIC NUMBER SIXTY 1378 ETHIOPIC NUMBER SEVENTY 1379 ETHIOPIC NUMBER EIGHTY 137A ETHIOPIC NUMBER NINETY 137B ETHIOPIC NUMBER HUNDRED 137C ETHIOPIC NUMBER TEN THOUSAND @@ 1380 Ethiopic Supplement 139F @ Syllables for Sebatbeit 1380 ETHIOPIC SYLLABLE SEBATBEIT MWA 1381 ETHIOPIC SYLLABLE MWI 1382 ETHIOPIC SYLLABLE MWEE 1383 ETHIOPIC SYLLABLE MWE 1384 ETHIOPIC SYLLABLE SEBATBEIT BWA 1385 ETHIOPIC SYLLABLE BWI 1386 ETHIOPIC SYLLABLE BWEE 1387 ETHIOPIC SYLLABLE BWE 1388 ETHIOPIC SYLLABLE SEBATBEIT FWA 1389 ETHIOPIC SYLLABLE FWI 138A ETHIOPIC SYLLABLE FWEE 138B ETHIOPIC SYLLABLE FWE 138C ETHIOPIC SYLLABLE SEBATBEIT PWA 138D ETHIOPIC SYLLABLE PWI 138E ETHIOPIC SYLLABLE PWEE 138F ETHIOPIC SYLLABLE PWE @ Tonal marks @+ Intended for use with a multiline scored layout 1390 ETHIOPIC TONAL MARK YIZET 1391 ETHIOPIC TONAL MARK DERET 1392 ETHIOPIC TONAL MARK RIKRIK 1393 ETHIOPIC TONAL MARK SHORT RIKRIK 1394 ETHIOPIC TONAL MARK DIFAT 1395 ETHIOPIC TONAL MARK KENAT 1396 ETHIOPIC TONAL MARK CHIRET 1397 ETHIOPIC TONAL MARK HIDET 1398 ETHIOPIC TONAL MARK DERET-HIDET 1399 ETHIOPIC TONAL MARK KURT @@ 13A0 Cherokee 13FF @+ Most lowercase Cherokee syllables are encoded in the Cherokee Supplement block at AB70..ABBF. @ Uppercase syllables 13A0 CHEROKEE LETTER A 13A1 CHEROKEE LETTER E 13A2 CHEROKEE LETTER I 13A3 CHEROKEE LETTER O 13A4 CHEROKEE LETTER U 13A5 CHEROKEE LETTER V 13A6 CHEROKEE LETTER GA 13A7 CHEROKEE LETTER KA 13A8 CHEROKEE LETTER GE 13A9 CHEROKEE LETTER GI 13AA CHEROKEE LETTER GO 13AB CHEROKEE LETTER GU 13AC CHEROKEE LETTER GV 13AD CHEROKEE LETTER HA 13AE CHEROKEE LETTER HE 13AF CHEROKEE LETTER HI 13B0 CHEROKEE LETTER HO 13B1 CHEROKEE LETTER HU 13B2 CHEROKEE LETTER HV 13B3 CHEROKEE LETTER LA 13B4 CHEROKEE LETTER LE 13B5 CHEROKEE LETTER LI 13B6 CHEROKEE LETTER LO 13B7 CHEROKEE LETTER LU 13B8 CHEROKEE LETTER LV 13B9 CHEROKEE LETTER MA 13BA CHEROKEE LETTER ME 13BB CHEROKEE LETTER MI 13BC CHEROKEE LETTER MO 13BD CHEROKEE LETTER MU 13BE CHEROKEE LETTER NA 13BF CHEROKEE LETTER HNA 13C0 CHEROKEE LETTER NAH 13C1 CHEROKEE LETTER NE 13C2 CHEROKEE LETTER NI 13C3 CHEROKEE LETTER NO 13C4 CHEROKEE LETTER NU 13C5 CHEROKEE LETTER NV 13C6 CHEROKEE LETTER QUA 13C7 CHEROKEE LETTER QUE 13C8 CHEROKEE LETTER QUI 13C9 CHEROKEE LETTER QUO 13CA CHEROKEE LETTER QUU 13CB CHEROKEE LETTER QUV 13CC CHEROKEE LETTER SA 13CD CHEROKEE LETTER S 13CE CHEROKEE LETTER SE 13CF CHEROKEE LETTER SI 13D0 CHEROKEE LETTER SO 13D1 CHEROKEE LETTER SU 13D2 CHEROKEE LETTER SV 13D3 CHEROKEE LETTER DA 13D4 CHEROKEE LETTER TA 13D5 CHEROKEE LETTER DE 13D6 CHEROKEE LETTER TE 13D7 CHEROKEE LETTER DI 13D8 CHEROKEE LETTER TI 13D9 CHEROKEE LETTER DO 13DA CHEROKEE LETTER DU 13DB CHEROKEE LETTER DV 13DC CHEROKEE LETTER DLA 13DD CHEROKEE LETTER TLA 13DE CHEROKEE LETTER TLE 13DF CHEROKEE LETTER TLI 13E0 CHEROKEE LETTER TLO 13E1 CHEROKEE LETTER TLU 13E2 CHEROKEE LETTER TLV 13E3 CHEROKEE LETTER TSA 13E4 CHEROKEE LETTER TSE 13E5 CHEROKEE LETTER TSI 13E6 CHEROKEE LETTER TSO 13E7 CHEROKEE LETTER TSU 13E8 CHEROKEE LETTER TSV 13E9 CHEROKEE LETTER WA 13EA CHEROKEE LETTER WE 13EB CHEROKEE LETTER WI 13EC CHEROKEE LETTER WO 13ED CHEROKEE LETTER WU 13EE CHEROKEE LETTER WV 13EF CHEROKEE LETTER YA 13F0 CHEROKEE LETTER YE 13F1 CHEROKEE LETTER YI 13F2 CHEROKEE LETTER YO 13F3 CHEROKEE LETTER YU 13F4 CHEROKEE LETTER YV @ Archaic uppercase syllable 13F5 CHEROKEE LETTER MV @ Lowercase syllables 13F8 CHEROKEE SMALL LETTER YE 13F9 CHEROKEE SMALL LETTER YI 13FA CHEROKEE SMALL LETTER YO 13FB CHEROKEE SMALL LETTER YU 13FC CHEROKEE SMALL LETTER YV @ Archaic lowercase syllable 13FD CHEROKEE SMALL LETTER MV @@ 1400 Unified Canadian Aboriginal Syllabics 167F @ Punctuation 1400 CANADIAN SYLLABICS HYPHEN @ Syllables 1401 CANADIAN SYLLABICS E * Inuktitut (AI), Carrier (U) 1402 CANADIAN SYLLABICS AAI * Inuktitut 1403 CANADIAN SYLLABICS I * Carrier (O) 1404 CANADIAN SYLLABICS II 1405 CANADIAN SYLLABICS O * Inuktitut (U), Carrier (E) 1406 CANADIAN SYLLABICS OO * Inuktitut (UU) 1407 CANADIAN SYLLABICS Y-CREE OO 1408 CANADIAN SYLLABICS CARRIER EE 1409 CANADIAN SYLLABICS CARRIER I 140A CANADIAN SYLLABICS A 140B CANADIAN SYLLABICS AA 140C CANADIAN SYLLABICS WE 140D CANADIAN SYLLABICS WEST-CREE WE 140E CANADIAN SYLLABICS WI 140F CANADIAN SYLLABICS WEST-CREE WI 1410 CANADIAN SYLLABICS WII 1411 CANADIAN SYLLABICS WEST-CREE WII 1412 CANADIAN SYLLABICS WO 1413 CANADIAN SYLLABICS WEST-CREE WO 1414 CANADIAN SYLLABICS WOO 1415 CANADIAN SYLLABICS WEST-CREE WOO 1416 CANADIAN SYLLABICS NASKAPI WOO 1417 CANADIAN SYLLABICS WA 1418 CANADIAN SYLLABICS WEST-CREE WA 1419 CANADIAN SYLLABICS WAA 141A CANADIAN SYLLABICS WEST-CREE WAA 141B CANADIAN SYLLABICS NASKAPI WAA 141C CANADIAN SYLLABICS AI * East Cree 141D CANADIAN SYLLABICS Y-CREE W 141E CANADIAN SYLLABICS GLOTTAL STOP * Moose Cree (Y), Algonquian (GLOTTAL STOP) 141F CANADIAN SYLLABICS FINAL ACUTE * West Cree (T), East Cree (Y), Inuktitut (GLOTTAL STOP) * Athapascan (B/P), Sayisi (I), Carrier (G) 1420 CANADIAN SYLLABICS FINAL GRAVE * West Cree (K), Athapascan (K), Carrier (KH) 1421 CANADIAN SYLLABICS FINAL BOTTOM HALF RING * N Cree (SH), Sayisi (R), Carrier (NG) 1422 CANADIAN SYLLABICS FINAL TOP HALF RING * Algonquian (S), Chipewyan (R), Sayisi (S) 1423 CANADIAN SYLLABICS FINAL RIGHT HALF RING * West Cree (N), Athapascan (D/T), Sayisi (N), Carrier (N) 1424 CANADIAN SYLLABICS FINAL RING * West Cree (W), Sayisi (O) 1425 CANADIAN SYLLABICS FINAL DOUBLE ACUTE * Chipewyan (TT), South Slavey (GH) 1426 CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES * Algonquian (H), Carrier (R) 1427 CANADIAN SYLLABICS FINAL MIDDLE DOT * Moose Cree (W), Athapascan (Y), Sayisi (YU), Blackfoot (S) 1428 CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE * West Cree (C), Sayisi (D) 1429 CANADIAN SYLLABICS FINAL PLUS * Athapascan (N), Sayisi (AI) 142A CANADIAN SYLLABICS FINAL DOWN TACK * N Cree (L), Carrier (D) x (down tack - 22A4) 142B CANADIAN SYLLABICS EN 142C CANADIAN SYLLABICS IN 142D CANADIAN SYLLABICS ON 142E CANADIAN SYLLABICS AN 142F CANADIAN SYLLABICS PE * Inuktitut (PAI), Athapascan (BE), Carrier (HU) 1430 CANADIAN SYLLABICS PAAI * Inuktitut 1431 CANADIAN SYLLABICS PI 1432 CANADIAN SYLLABICS PII 1433 CANADIAN SYLLABICS PO * Inuktitut (PU), Athapascan (BO), Carrier (HE) 1434 CANADIAN SYLLABICS POO * Inuktitut (PUU) 1435 CANADIAN SYLLABICS Y-CREE POO 1436 CANADIAN SYLLABICS CARRIER HEE 1437 CANADIAN SYLLABICS CARRIER HI 1438 CANADIAN SYLLABICS PA * Athapascan (BA), Carrier (HA) 1439 CANADIAN SYLLABICS PAA 143A CANADIAN SYLLABICS PWE 143B CANADIAN SYLLABICS WEST-CREE PWE 143C CANADIAN SYLLABICS PWI 143D CANADIAN SYLLABICS WEST-CREE PWI 143E CANADIAN SYLLABICS PWII 143F CANADIAN SYLLABICS WEST-CREE PWII 1440 CANADIAN SYLLABICS PWO 1441 CANADIAN SYLLABICS WEST-CREE PWO 1442 CANADIAN SYLLABICS PWOO 1443 CANADIAN SYLLABICS WEST-CREE PWOO 1444 CANADIAN SYLLABICS PWA 1445 CANADIAN SYLLABICS WEST-CREE PWA 1446 CANADIAN SYLLABICS PWAA 1447 CANADIAN SYLLABICS WEST-CREE PWAA 1448 CANADIAN SYLLABICS Y-CREE PWAA 1449 CANADIAN SYLLABICS P * Blackfoot (Y) 144A CANADIAN SYLLABICS WEST-CREE P * Sayisi (G) 144B CANADIAN SYLLABICS CARRIER H 144C CANADIAN SYLLABICS TE * Inuktitut (TAI), Athapascan (DI), Carrier (DU) 144D CANADIAN SYLLABICS TAAI * Inuktitut 144E CANADIAN SYLLABICS TI * Athapascan (DE), Carrier (DO) 144F CANADIAN SYLLABICS TII 1450 CANADIAN SYLLABICS TO * Inuktitut (TU), Athapascan (DO), Carrier (DE), Sayisi (DU) 1451 CANADIAN SYLLABICS TOO * Inuktitut (TUU) 1452 CANADIAN SYLLABICS Y-CREE TOO 1453 CANADIAN SYLLABICS CARRIER DEE 1454 CANADIAN SYLLABICS CARRIER DI 1455 CANADIAN SYLLABICS TA * Athapascan (DA) 1456 CANADIAN SYLLABICS TAA 1457 CANADIAN SYLLABICS TWE 1458 CANADIAN SYLLABICS WEST-CREE TWE 1459 CANADIAN SYLLABICS TWI 145A CANADIAN SYLLABICS WEST-CREE TWI 145B CANADIAN SYLLABICS TWII 145C CANADIAN SYLLABICS WEST-CREE TWII 145D CANADIAN SYLLABICS TWO 145E CANADIAN SYLLABICS WEST-CREE TWO 145F CANADIAN SYLLABICS TWOO 1460 CANADIAN SYLLABICS WEST-CREE TWOO 1461 CANADIAN SYLLABICS TWA 1462 CANADIAN SYLLABICS WEST-CREE TWA 1463 CANADIAN SYLLABICS TWAA 1464 CANADIAN SYLLABICS WEST-CREE TWAA 1465 CANADIAN SYLLABICS NASKAPI TWAA 1466 CANADIAN SYLLABICS T 1467 CANADIAN SYLLABICS TTE * South Slavey (DEH) 1468 CANADIAN SYLLABICS TTI * South Slavey (DIH) 1469 CANADIAN SYLLABICS TTO * South Slavey (DOH) 146A CANADIAN SYLLABICS TTA * South Slavey (DAH) 146B CANADIAN SYLLABICS KE * Inuktitut (KAI), Blackfoot (PA) 146C CANADIAN SYLLABICS KAAI * Inuktitut 146D CANADIAN SYLLABICS KI * Blackfoot (PE) 146E CANADIAN SYLLABICS KII 146F CANADIAN SYLLABICS KO * Inuktitut (KU), Sayisi (KU), Blackfoot (PI) 1470 CANADIAN SYLLABICS KOO * Inuktitut (KUU) 1471 CANADIAN SYLLABICS Y-CREE KOO 1472 CANADIAN SYLLABICS KA * Blackfoot (PO) 1473 CANADIAN SYLLABICS KAA 1474 CANADIAN SYLLABICS KWE 1475 CANADIAN SYLLABICS WEST-CREE KWE 1476 CANADIAN SYLLABICS KWI 1477 CANADIAN SYLLABICS WEST-CREE KWI 1478 CANADIAN SYLLABICS KWII 1479 CANADIAN SYLLABICS WEST-CREE KWII 147A CANADIAN SYLLABICS KWO 147B CANADIAN SYLLABICS WEST-CREE KWO 147C CANADIAN SYLLABICS KWOO 147D CANADIAN SYLLABICS WEST-CREE KWOO 147E CANADIAN SYLLABICS KWA 147F CANADIAN SYLLABICS WEST-CREE KWA 1480 CANADIAN SYLLABICS KWAA 1481 CANADIAN SYLLABICS WEST-CREE KWAA 1482 CANADIAN SYLLABICS NASKAPI KWAA 1483 CANADIAN SYLLABICS K 1484 CANADIAN SYLLABICS KW * East Cree 1485 CANADIAN SYLLABICS SOUTH-SLAVEY KEH 1486 CANADIAN SYLLABICS SOUTH-SLAVEY KIH 1487 CANADIAN SYLLABICS SOUTH-SLAVEY KOH 1488 CANADIAN SYLLABICS SOUTH-SLAVEY KAH 1489 CANADIAN SYLLABICS CE * Inuktitut (GAI), Athapascan (DHE), Sayisi (THE), Blackfoot (MA) 148A CANADIAN SYLLABICS CAAI * Inuktitut (GAAI) 148B CANADIAN SYLLABICS CI * Inuktitut (GI), Athapascan (DHI), Sayisi (THI), Blackfoot (ME) 148C CANADIAN SYLLABICS CII * Inuktitut (GII) 148D CANADIAN SYLLABICS CO * Inuktitut (GU), Athapascan (DHO), Sayisi (THO), Blackfoot (MI) 148E CANADIAN SYLLABICS COO * Inuktitut (GUU) 148F CANADIAN SYLLABICS Y-CREE COO 1490 CANADIAN SYLLABICS CA * Inuktitut (GA), Athapascan (DHA), Sayisi (THA), Blackfoot (MO) 1491 CANADIAN SYLLABICS CAA * Inuktitut (GAA) 1492 CANADIAN SYLLABICS CWE 1493 CANADIAN SYLLABICS WEST-CREE CWE 1494 CANADIAN SYLLABICS CWI 1495 CANADIAN SYLLABICS WEST-CREE CWI 1496 CANADIAN SYLLABICS CWII 1497 CANADIAN SYLLABICS WEST-CREE CWII 1498 CANADIAN SYLLABICS CWO 1499 CANADIAN SYLLABICS WEST-CREE CWO 149A CANADIAN SYLLABICS CWOO 149B CANADIAN SYLLABICS WEST-CREE CWOO 149C CANADIAN SYLLABICS CWA 149D CANADIAN SYLLABICS WEST-CREE CWA 149E CANADIAN SYLLABICS CWAA 149F CANADIAN SYLLABICS WEST-CREE CWAA 14A0 CANADIAN SYLLABICS NASKAPI CWAA 14A1 CANADIAN SYLLABICS C * Inuktitut (G), Sayisi (T) 14A2 CANADIAN SYLLABICS SAYISI TH * Athapascan (DH) 14A3 CANADIAN SYLLABICS ME * Inuktitut (MAI), Blackfoot (TA) 14A4 CANADIAN SYLLABICS MAAI * Inuktitut 14A5 CANADIAN SYLLABICS MI * Blackfoot (TE) 14A6 CANADIAN SYLLABICS MII 14A7 CANADIAN SYLLABICS MO * Inuktitut (MU), Sayisi (MU), Blackfoot (TI) 14A8 CANADIAN SYLLABICS MOO * Inuktitut (MUU) 14A9 CANADIAN SYLLABICS Y-CREE MOO 14AA CANADIAN SYLLABICS MA * Blackfoot (TO) 14AB CANADIAN SYLLABICS MAA 14AC CANADIAN SYLLABICS MWE 14AD CANADIAN SYLLABICS WEST-CREE MWE 14AE CANADIAN SYLLABICS MWI 14AF CANADIAN SYLLABICS WEST-CREE MWI 14B0 CANADIAN SYLLABICS MWII 14B1 CANADIAN SYLLABICS WEST-CREE MWII 14B2 CANADIAN SYLLABICS MWO 14B3 CANADIAN SYLLABICS WEST-CREE MWO 14B4 CANADIAN SYLLABICS MWOO 14B5 CANADIAN SYLLABICS WEST-CREE MWOO 14B6 CANADIAN SYLLABICS MWA 14B7 CANADIAN SYLLABICS WEST-CREE MWA 14B8 CANADIAN SYLLABICS MWAA 14B9 CANADIAN SYLLABICS WEST-CREE MWAA 14BA CANADIAN SYLLABICS NASKAPI MWAA 14BB CANADIAN SYLLABICS M 14BC CANADIAN SYLLABICS WEST-CREE M * Carrier (M) 14BD CANADIAN SYLLABICS MH 14BE CANADIAN SYLLABICS ATHAPASCAN M 14BF CANADIAN SYLLABICS SAYISI M 14C0 CANADIAN SYLLABICS NE * Inuktitut (NAI) 14C1 CANADIAN SYLLABICS NAAI * Inuktitut 14C2 CANADIAN SYLLABICS NI 14C3 CANADIAN SYLLABICS NII 14C4 CANADIAN SYLLABICS NO * Inuktitut (NU), Sayisi (NU) 14C5 CANADIAN SYLLABICS NOO * Inuktitut (NUU) 14C6 CANADIAN SYLLABICS Y-CREE NOO 14C7 CANADIAN SYLLABICS NA 14C8 CANADIAN SYLLABICS NAA 14C9 CANADIAN SYLLABICS NWE 14CA CANADIAN SYLLABICS WEST-CREE NWE 14CB CANADIAN SYLLABICS NWA 14CC CANADIAN SYLLABICS WEST-CREE NWA 14CD CANADIAN SYLLABICS NWAA 14CE CANADIAN SYLLABICS WEST-CREE NWAA 14CF CANADIAN SYLLABICS NASKAPI NWAA 14D0 CANADIAN SYLLABICS N 14D1 CANADIAN SYLLABICS CARRIER NG 14D2 CANADIAN SYLLABICS NH 14D3 CANADIAN SYLLABICS LE * Inuktitut (LAI) 14D4 CANADIAN SYLLABICS LAAI * Inuktitut 14D5 CANADIAN SYLLABICS LI 14D6 CANADIAN SYLLABICS LII 14D7 CANADIAN SYLLABICS LO * Inuktitut (LU) 14D8 CANADIAN SYLLABICS LOO * Inuktitut (LUU) 14D9 CANADIAN SYLLABICS Y-CREE LOO 14DA CANADIAN SYLLABICS LA 14DB CANADIAN SYLLABICS LAA 14DC CANADIAN SYLLABICS LWE 14DD CANADIAN SYLLABICS WEST-CREE LWE 14DE CANADIAN SYLLABICS LWI 14DF CANADIAN SYLLABICS WEST-CREE LWI 14E0 CANADIAN SYLLABICS LWII 14E1 CANADIAN SYLLABICS WEST-CREE LWII 14E2 CANADIAN SYLLABICS LWO 14E3 CANADIAN SYLLABICS WEST-CREE LWO 14E4 CANADIAN SYLLABICS LWOO 14E5 CANADIAN SYLLABICS WEST-CREE LWOO 14E6 CANADIAN SYLLABICS LWA 14E7 CANADIAN SYLLABICS WEST-CREE LWA 14E8 CANADIAN SYLLABICS LWAA 14E9 CANADIAN SYLLABICS WEST-CREE LWAA 14EA CANADIAN SYLLABICS L 14EB CANADIAN SYLLABICS WEST-CREE L 14EC CANADIAN SYLLABICS MEDIAL L 14ED CANADIAN SYLLABICS SE * Inuktitut (SAI), Blackfoot (SA) 14EE CANADIAN SYLLABICS SAAI * Inuktitut 14EF CANADIAN SYLLABICS SI * Blackfoot (SE) 14F0 CANADIAN SYLLABICS SII 14F1 CANADIAN SYLLABICS SO * Inuktitut (SU), Sayisi (SU), Blackfoot (SI) 14F2 CANADIAN SYLLABICS SOO * Inuktitut (SUU) 14F3 CANADIAN SYLLABICS Y-CREE SOO 14F4 CANADIAN SYLLABICS SA * Blackfoot (SO) 14F5 CANADIAN SYLLABICS SAA 14F6 CANADIAN SYLLABICS SWE 14F7 CANADIAN SYLLABICS WEST-CREE SWE 14F8 CANADIAN SYLLABICS SWI 14F9 CANADIAN SYLLABICS WEST-CREE SWI 14FA CANADIAN SYLLABICS SWII 14FB CANADIAN SYLLABICS WEST-CREE SWII 14FC CANADIAN SYLLABICS SWO 14FD CANADIAN SYLLABICS WEST-CREE SWO 14FE CANADIAN SYLLABICS SWOO 14FF CANADIAN SYLLABICS WEST-CREE SWOO 1500 CANADIAN SYLLABICS SWA 1501 CANADIAN SYLLABICS WEST-CREE SWA 1502 CANADIAN SYLLABICS SWAA 1503 CANADIAN SYLLABICS WEST-CREE SWAA 1504 CANADIAN SYLLABICS NASKAPI SWAA 1505 CANADIAN SYLLABICS S 1506 CANADIAN SYLLABICS ATHAPASCAN S 1507 CANADIAN SYLLABICS SW 1508 CANADIAN SYLLABICS BLACKFOOT S 1509 CANADIAN SYLLABICS MOOSE-CREE SK 150A CANADIAN SYLLABICS NASKAPI SKW 150B CANADIAN SYLLABICS NASKAPI S-W 150C CANADIAN SYLLABICS NASKAPI SPWA 150D CANADIAN SYLLABICS NASKAPI STWA 150E CANADIAN SYLLABICS NASKAPI SKWA 150F CANADIAN SYLLABICS NASKAPI SCWA 1510 CANADIAN SYLLABICS SHE 1511 CANADIAN SYLLABICS SHI 1512 CANADIAN SYLLABICS SHII 1513 CANADIAN SYLLABICS SHO 1514 CANADIAN SYLLABICS SHOO 1515 CANADIAN SYLLABICS SHA 1516 CANADIAN SYLLABICS SHAA 1517 CANADIAN SYLLABICS SHWE 1518 CANADIAN SYLLABICS WEST-CREE SHWE 1519 CANADIAN SYLLABICS SHWI 151A CANADIAN SYLLABICS WEST-CREE SHWI 151B CANADIAN SYLLABICS SHWII 151C CANADIAN SYLLABICS WEST-CREE SHWII 151D CANADIAN SYLLABICS SHWO 151E CANADIAN SYLLABICS WEST-CREE SHWO 151F CANADIAN SYLLABICS SHWOO 1520 CANADIAN SYLLABICS WEST-CREE SHWOO 1521 CANADIAN SYLLABICS SHWA 1522 CANADIAN SYLLABICS WEST-CREE SHWA 1523 CANADIAN SYLLABICS SHWAA 1524 CANADIAN SYLLABICS WEST-CREE SHWAA 1525 CANADIAN SYLLABICS SH 1526 CANADIAN SYLLABICS YE * Inuktitut (YAI), Blackfoot (YA) 1527 CANADIAN SYLLABICS YAAI * Inuktitut 1528 CANADIAN SYLLABICS YI * Blackfoot (YE) 1529 CANADIAN SYLLABICS YII 152A CANADIAN SYLLABICS YO * Inuktitut (YU), Blackfoot (YI) 152B CANADIAN SYLLABICS YOO * Inuktitut (YUU) 152C CANADIAN SYLLABICS Y-CREE YOO 152D CANADIAN SYLLABICS YA * Blackfoot (YO) 152E CANADIAN SYLLABICS YAA 152F CANADIAN SYLLABICS YWE 1530 CANADIAN SYLLABICS WEST-CREE YWE 1531 CANADIAN SYLLABICS YWI 1532 CANADIAN SYLLABICS WEST-CREE YWI 1533 CANADIAN SYLLABICS YWII 1534 CANADIAN SYLLABICS WEST-CREE YWII 1535 CANADIAN SYLLABICS YWO 1536 CANADIAN SYLLABICS WEST-CREE YWO 1537 CANADIAN SYLLABICS YWOO 1538 CANADIAN SYLLABICS WEST-CREE YWOO 1539 CANADIAN SYLLABICS YWA 153A CANADIAN SYLLABICS WEST-CREE YWA 153B CANADIAN SYLLABICS YWAA 153C CANADIAN SYLLABICS WEST-CREE YWAA 153D CANADIAN SYLLABICS NASKAPI YWAA 153E CANADIAN SYLLABICS Y 153F CANADIAN SYLLABICS BIBLE-CREE Y 1540 CANADIAN SYLLABICS WEST-CREE Y 1541 CANADIAN SYLLABICS SAYISI YI 1542 CANADIAN SYLLABICS RE * Inuktitut (RAI) 1543 CANADIAN SYLLABICS R-CREE RE * Athapascan (LE) 1544 CANADIAN SYLLABICS WEST-CREE LE * Athapascan (LI) 1545 CANADIAN SYLLABICS RAAI * Inuktitut 1546 CANADIAN SYLLABICS RI 1547 CANADIAN SYLLABICS RII 1548 CANADIAN SYLLABICS RO * Inuktitut (RU) 1549 CANADIAN SYLLABICS ROO * Inuktitut (RUU) 154A CANADIAN SYLLABICS WEST-CREE LO * Sayisi (LU) 154B CANADIAN SYLLABICS RA 154C CANADIAN SYLLABICS RAA 154D CANADIAN SYLLABICS WEST-CREE LA 154E CANADIAN SYLLABICS RWAA 154F CANADIAN SYLLABICS WEST-CREE RWAA 1550 CANADIAN SYLLABICS R 1551 CANADIAN SYLLABICS WEST-CREE R 1552 CANADIAN SYLLABICS MEDIAL R 1553 CANADIAN SYLLABICS FE * Inuktitut (FAI) 1554 CANADIAN SYLLABICS FAAI * Inuktitut 1555 CANADIAN SYLLABICS FI 1556 CANADIAN SYLLABICS FII 1557 CANADIAN SYLLABICS FO 1558 CANADIAN SYLLABICS FOO 1559 CANADIAN SYLLABICS FA 155A CANADIAN SYLLABICS FAA 155B CANADIAN SYLLABICS FWAA 155C CANADIAN SYLLABICS WEST-CREE FWAA 155D CANADIAN SYLLABICS F 155E CANADIAN SYLLABICS THE * Sayisi (TE) 155F CANADIAN SYLLABICS N-CREE THE 1560 CANADIAN SYLLABICS THI * Sayisi (TI) 1561 CANADIAN SYLLABICS N-CREE THI 1562 CANADIAN SYLLABICS THII 1563 CANADIAN SYLLABICS N-CREE THII 1564 CANADIAN SYLLABICS THO * Sayisi (TU) 1565 CANADIAN SYLLABICS THOO 1566 CANADIAN SYLLABICS THA * Sayisi (TA) 1567 CANADIAN SYLLABICS THAA 1568 CANADIAN SYLLABICS THWAA 1569 CANADIAN SYLLABICS WEST-CREE THWAA 156A CANADIAN SYLLABICS TH 156B CANADIAN SYLLABICS TTHE 156C CANADIAN SYLLABICS TTHI 156D CANADIAN SYLLABICS TTHO * Sayisi (TTHU) 156E CANADIAN SYLLABICS TTHA 156F CANADIAN SYLLABICS TTH * probably a mistaken interpretation of an asterisk used to mark a proper noun x (asterisk - 002A) 1570 CANADIAN SYLLABICS TYE 1571 CANADIAN SYLLABICS TYI 1572 CANADIAN SYLLABICS TYO 1573 CANADIAN SYLLABICS TYA 1574 CANADIAN SYLLABICS NUNAVIK HE 1575 CANADIAN SYLLABICS NUNAVIK HI 1576 CANADIAN SYLLABICS NUNAVIK HII 1577 CANADIAN SYLLABICS NUNAVIK HO 1578 CANADIAN SYLLABICS NUNAVIK HOO 1579 CANADIAN SYLLABICS NUNAVIK HA 157A CANADIAN SYLLABICS NUNAVIK HAA 157B CANADIAN SYLLABICS NUNAVIK H 157C CANADIAN SYLLABICS NUNAVUT H 157D CANADIAN SYLLABICS HK * Algonquian 157E CANADIAN SYLLABICS QAAI * Inuktitut 157F CANADIAN SYLLABICS QI 1580 CANADIAN SYLLABICS QII 1581 CANADIAN SYLLABICS QO * Inuktitut (QU) 1582 CANADIAN SYLLABICS QOO * Inuktitut (QUU) 1583 CANADIAN SYLLABICS QA 1584 CANADIAN SYLLABICS QAA 1585 CANADIAN SYLLABICS Q 1586 CANADIAN SYLLABICS TLHE * Sayisi (KLE) 1587 CANADIAN SYLLABICS TLHI * Sayisi (KLI) 1588 CANADIAN SYLLABICS TLHO * Sayisi (KLU) 1589 CANADIAN SYLLABICS TLHA * Sayisi (KLA) 158A CANADIAN SYLLABICS WEST-CREE RE 158B CANADIAN SYLLABICS WEST-CREE RI 158C CANADIAN SYLLABICS WEST-CREE RO 158D CANADIAN SYLLABICS WEST-CREE RA 158E CANADIAN SYLLABICS NGAAI * Inuktitut 158F CANADIAN SYLLABICS NGI 1590 CANADIAN SYLLABICS NGII 1591 CANADIAN SYLLABICS NGO * Inuktitut (NGU) 1592 CANADIAN SYLLABICS NGOO * Inuktitut (NGUU) 1593 CANADIAN SYLLABICS NGA 1594 CANADIAN SYLLABICS NGAA 1595 CANADIAN SYLLABICS NG 1596 CANADIAN SYLLABICS NNG 1597 CANADIAN SYLLABICS SAYISI SHE 1598 CANADIAN SYLLABICS SAYISI SHI 1599 CANADIAN SYLLABICS SAYISI SHO * Sayisi (SHU) 159A CANADIAN SYLLABICS SAYISI SHA 159B CANADIAN SYLLABICS WOODS-CREE THE 159C CANADIAN SYLLABICS WOODS-CREE THI 159D CANADIAN SYLLABICS WOODS-CREE THO 159E CANADIAN SYLLABICS WOODS-CREE THA 159F CANADIAN SYLLABICS WOODS-CREE TH 15A0 CANADIAN SYLLABICS LHI 15A1 CANADIAN SYLLABICS LHII 15A2 CANADIAN SYLLABICS LHO * Inuktitut (LHU) 15A3 CANADIAN SYLLABICS LHOO * Inuktitut (LHUU) 15A4 CANADIAN SYLLABICS LHA 15A5 CANADIAN SYLLABICS LHAA 15A6 CANADIAN SYLLABICS LH 15A7 CANADIAN SYLLABICS TH-CREE THE 15A8 CANADIAN SYLLABICS TH-CREE THI 15A9 CANADIAN SYLLABICS TH-CREE THII 15AA CANADIAN SYLLABICS TH-CREE THO 15AB CANADIAN SYLLABICS TH-CREE THOO 15AC CANADIAN SYLLABICS TH-CREE THA 15AD CANADIAN SYLLABICS TH-CREE THAA 15AE CANADIAN SYLLABICS TH-CREE TH 15AF CANADIAN SYLLABICS AIVILIK B 15B0 CANADIAN SYLLABICS BLACKFOOT E 15B1 CANADIAN SYLLABICS BLACKFOOT I 15B2 CANADIAN SYLLABICS BLACKFOOT O 15B3 CANADIAN SYLLABICS BLACKFOOT A 15B4 CANADIAN SYLLABICS BLACKFOOT WE 15B5 CANADIAN SYLLABICS BLACKFOOT WI 15B6 CANADIAN SYLLABICS BLACKFOOT WO 15B7 CANADIAN SYLLABICS BLACKFOOT WA 15B8 CANADIAN SYLLABICS BLACKFOOT NE 15B9 CANADIAN SYLLABICS BLACKFOOT NI 15BA CANADIAN SYLLABICS BLACKFOOT NO 15BB CANADIAN SYLLABICS BLACKFOOT NA 15BC CANADIAN SYLLABICS BLACKFOOT KE 15BD CANADIAN SYLLABICS BLACKFOOT KI 15BE CANADIAN SYLLABICS BLACKFOOT KO 15BF CANADIAN SYLLABICS BLACKFOOT KA 15C0 CANADIAN SYLLABICS SAYISI HE 15C1 CANADIAN SYLLABICS SAYISI HI 15C2 CANADIAN SYLLABICS SAYISI HO * Sayisi (HU) 15C3 CANADIAN SYLLABICS SAYISI HA 15C4 CANADIAN SYLLABICS CARRIER GHU 15C5 CANADIAN SYLLABICS CARRIER GHO 15C6 CANADIAN SYLLABICS CARRIER GHE 15C7 CANADIAN SYLLABICS CARRIER GHEE 15C8 CANADIAN SYLLABICS CARRIER GHI 15C9 CANADIAN SYLLABICS CARRIER GHA 15CA CANADIAN SYLLABICS CARRIER RU 15CB CANADIAN SYLLABICS CARRIER RO 15CC CANADIAN SYLLABICS CARRIER RE 15CD CANADIAN SYLLABICS CARRIER REE 15CE CANADIAN SYLLABICS CARRIER RI 15CF CANADIAN SYLLABICS CARRIER RA 15D0 CANADIAN SYLLABICS CARRIER WU 15D1 CANADIAN SYLLABICS CARRIER WO 15D2 CANADIAN SYLLABICS CARRIER WE 15D3 CANADIAN SYLLABICS CARRIER WEE 15D4 CANADIAN SYLLABICS CARRIER WI 15D5 CANADIAN SYLLABICS CARRIER WA 15D6 CANADIAN SYLLABICS CARRIER HWU 15D7 CANADIAN SYLLABICS CARRIER HWO 15D8 CANADIAN SYLLABICS CARRIER HWE 15D9 CANADIAN SYLLABICS CARRIER HWEE 15DA CANADIAN SYLLABICS CARRIER HWI 15DB CANADIAN SYLLABICS CARRIER HWA 15DC CANADIAN SYLLABICS CARRIER THU 15DD CANADIAN SYLLABICS CARRIER THO 15DE CANADIAN SYLLABICS CARRIER THE 15DF CANADIAN SYLLABICS CARRIER THEE 15E0 CANADIAN SYLLABICS CARRIER THI 15E1 CANADIAN SYLLABICS CARRIER THA 15E2 CANADIAN SYLLABICS CARRIER TTU 15E3 CANADIAN SYLLABICS CARRIER TTO 15E4 CANADIAN SYLLABICS CARRIER TTE 15E5 CANADIAN SYLLABICS CARRIER TTEE 15E6 CANADIAN SYLLABICS CARRIER TTI 15E7 CANADIAN SYLLABICS CARRIER TTA 15E8 CANADIAN SYLLABICS CARRIER PU 15E9 CANADIAN SYLLABICS CARRIER PO 15EA CANADIAN SYLLABICS CARRIER PE 15EB CANADIAN SYLLABICS CARRIER PEE 15EC CANADIAN SYLLABICS CARRIER PI 15ED CANADIAN SYLLABICS CARRIER PA 15EE CANADIAN SYLLABICS CARRIER P 15EF CANADIAN SYLLABICS CARRIER GU 15F0 CANADIAN SYLLABICS CARRIER GO 15F1 CANADIAN SYLLABICS CARRIER GE 15F2 CANADIAN SYLLABICS CARRIER GEE 15F3 CANADIAN SYLLABICS CARRIER GI 15F4 CANADIAN SYLLABICS CARRIER GA 15F5 CANADIAN SYLLABICS CARRIER KHU 15F6 CANADIAN SYLLABICS CARRIER KHO 15F7 CANADIAN SYLLABICS CARRIER KHE 15F8 CANADIAN SYLLABICS CARRIER KHEE 15F9 CANADIAN SYLLABICS CARRIER KHI 15FA CANADIAN SYLLABICS CARRIER KHA 15FB CANADIAN SYLLABICS CARRIER KKU 15FC CANADIAN SYLLABICS CARRIER KKO 15FD CANADIAN SYLLABICS CARRIER KKE 15FE CANADIAN SYLLABICS CARRIER KKEE 15FF CANADIAN SYLLABICS CARRIER KKI 1600 CANADIAN SYLLABICS CARRIER KKA 1601 CANADIAN SYLLABICS CARRIER KK 1602 CANADIAN SYLLABICS CARRIER NU 1603 CANADIAN SYLLABICS CARRIER NO 1604 CANADIAN SYLLABICS CARRIER NE 1605 CANADIAN SYLLABICS CARRIER NEE 1606 CANADIAN SYLLABICS CARRIER NI 1607 CANADIAN SYLLABICS CARRIER NA 1608 CANADIAN SYLLABICS CARRIER MU 1609 CANADIAN SYLLABICS CARRIER MO 160A CANADIAN SYLLABICS CARRIER ME 160B CANADIAN SYLLABICS CARRIER MEE 160C CANADIAN SYLLABICS CARRIER MI 160D CANADIAN SYLLABICS CARRIER MA 160E CANADIAN SYLLABICS CARRIER YU 160F CANADIAN SYLLABICS CARRIER YO 1610 CANADIAN SYLLABICS CARRIER YE 1611 CANADIAN SYLLABICS CARRIER YEE 1612 CANADIAN SYLLABICS CARRIER YI 1613 CANADIAN SYLLABICS CARRIER YA 1614 CANADIAN SYLLABICS CARRIER JU * Athapascan (ZA), Sayisi (TZO), South Slavey (DHA) 1615 CANADIAN SYLLABICS SAYISI JU * Athapascan (ZO), Sayisi (TZU), South Slavey (DHO) 1616 CANADIAN SYLLABICS CARRIER JO 1617 CANADIAN SYLLABICS CARRIER JE 1618 CANADIAN SYLLABICS CARRIER JEE 1619 CANADIAN SYLLABICS CARRIER JI 161A CANADIAN SYLLABICS SAYISI JI * Athapascan (ZE), Sayisi (TZE), South Slavey (DHE) 161B CANADIAN SYLLABICS CARRIER JA * Athapascan (ZI), Sayisi (TZI), South Slavey (DHI) 161C CANADIAN SYLLABICS CARRIER JJU 161D CANADIAN SYLLABICS CARRIER JJO 161E CANADIAN SYLLABICS CARRIER JJE 161F CANADIAN SYLLABICS CARRIER JJEE 1620 CANADIAN SYLLABICS CARRIER JJI 1621 CANADIAN SYLLABICS CARRIER JJA 1622 CANADIAN SYLLABICS CARRIER LU 1623 CANADIAN SYLLABICS CARRIER LO 1624 CANADIAN SYLLABICS CARRIER LE 1625 CANADIAN SYLLABICS CARRIER LEE 1626 CANADIAN SYLLABICS CARRIER LI 1627 CANADIAN SYLLABICS CARRIER LA 1628 CANADIAN SYLLABICS CARRIER DLU 1629 CANADIAN SYLLABICS CARRIER DLO 162A CANADIAN SYLLABICS CARRIER DLE 162B CANADIAN SYLLABICS CARRIER DLEE 162C CANADIAN SYLLABICS CARRIER DLI 162D CANADIAN SYLLABICS CARRIER DLA 162E CANADIAN SYLLABICS CARRIER LHU 162F CANADIAN SYLLABICS CARRIER LHO 1630 CANADIAN SYLLABICS CARRIER LHE 1631 CANADIAN SYLLABICS CARRIER LHEE 1632 CANADIAN SYLLABICS CARRIER LHI 1633 CANADIAN SYLLABICS CARRIER LHA 1634 CANADIAN SYLLABICS CARRIER TLHU 1635 CANADIAN SYLLABICS CARRIER TLHO 1636 CANADIAN SYLLABICS CARRIER TLHE 1637 CANADIAN SYLLABICS CARRIER TLHEE 1638 CANADIAN SYLLABICS CARRIER TLHI 1639 CANADIAN SYLLABICS CARRIER TLHA 163A CANADIAN SYLLABICS CARRIER TLU 163B CANADIAN SYLLABICS CARRIER TLO 163C CANADIAN SYLLABICS CARRIER TLE 163D CANADIAN SYLLABICS CARRIER TLEE 163E CANADIAN SYLLABICS CARRIER TLI 163F CANADIAN SYLLABICS CARRIER TLA 1640 CANADIAN SYLLABICS CARRIER ZU 1641 CANADIAN SYLLABICS CARRIER ZO 1642 CANADIAN SYLLABICS CARRIER ZE 1643 CANADIAN SYLLABICS CARRIER ZEE 1644 CANADIAN SYLLABICS CARRIER ZI 1645 CANADIAN SYLLABICS CARRIER ZA 1646 CANADIAN SYLLABICS CARRIER Z 1647 CANADIAN SYLLABICS CARRIER INITIAL Z 1648 CANADIAN SYLLABICS CARRIER DZU 1649 CANADIAN SYLLABICS CARRIER DZO 164A CANADIAN SYLLABICS CARRIER DZE 164B CANADIAN SYLLABICS CARRIER DZEE 164C CANADIAN SYLLABICS CARRIER DZI 164D CANADIAN SYLLABICS CARRIER DZA 164E CANADIAN SYLLABICS CARRIER SU 164F CANADIAN SYLLABICS CARRIER SO 1650 CANADIAN SYLLABICS CARRIER SE 1651 CANADIAN SYLLABICS CARRIER SEE 1652 CANADIAN SYLLABICS CARRIER SI 1653 CANADIAN SYLLABICS CARRIER SA 1654 CANADIAN SYLLABICS CARRIER SHU 1655 CANADIAN SYLLABICS CARRIER SHO 1656 CANADIAN SYLLABICS CARRIER SHE 1657 CANADIAN SYLLABICS CARRIER SHEE 1658 CANADIAN SYLLABICS CARRIER SHI 1659 CANADIAN SYLLABICS CARRIER SHA 165A CANADIAN SYLLABICS CARRIER SH 165B CANADIAN SYLLABICS CARRIER TSU 165C CANADIAN SYLLABICS CARRIER TSO 165D CANADIAN SYLLABICS CARRIER TSE 165E CANADIAN SYLLABICS CARRIER TSEE 165F CANADIAN SYLLABICS CARRIER TSI 1660 CANADIAN SYLLABICS CARRIER TSA 1661 CANADIAN SYLLABICS CARRIER CHU 1662 CANADIAN SYLLABICS CARRIER CHO 1663 CANADIAN SYLLABICS CARRIER CHE 1664 CANADIAN SYLLABICS CARRIER CHEE 1665 CANADIAN SYLLABICS CARRIER CHI 1666 CANADIAN SYLLABICS CARRIER CHA 1667 CANADIAN SYLLABICS CARRIER TTSU 1668 CANADIAN SYLLABICS CARRIER TTSO 1669 CANADIAN SYLLABICS CARRIER TTSE 166A CANADIAN SYLLABICS CARRIER TTSEE 166B CANADIAN SYLLABICS CARRIER TTSI 166C CANADIAN SYLLABICS CARRIER TTSA @ Symbol 166D CANADIAN SYLLABICS CHI SIGN * Algonquian * used as a symbol to denote Christ x (chi rho - 2627) @ Punctuation 166E CANADIAN SYLLABICS FULL STOP x (stenographic full stop - 2E3C) @ Syllables 166F CANADIAN SYLLABICS QAI 1670 CANADIAN SYLLABICS NGAI 1671 CANADIAN SYLLABICS NNGI 1672 CANADIAN SYLLABICS NNGII 1673 CANADIAN SYLLABICS NNGO * Inuktitut (NNGU) 1674 CANADIAN SYLLABICS NNGOO * Inuktitut (NNGUU) 1675 CANADIAN SYLLABICS NNGA 1676 CANADIAN SYLLABICS NNGAA 1677 CANADIAN SYLLABICS WOODS-CREE THWEE 1678 CANADIAN SYLLABICS WOODS-CREE THWI 1679 CANADIAN SYLLABICS WOODS-CREE THWII 167A CANADIAN SYLLABICS WOODS-CREE THWO 167B CANADIAN SYLLABICS WOODS-CREE THWOO 167C CANADIAN SYLLABICS WOODS-CREE THWA 167D CANADIAN SYLLABICS WOODS-CREE THWAA 167E CANADIAN SYLLABICS WOODS-CREE FINAL TH 167F CANADIAN SYLLABICS BLACKFOOT W @@ 1680 Ogham 169F @+ An Ogham font typically displays all Ogham characters with a visible stemline, representing the edge of monumental Ogham inscriptions. @ Punctuation 1680 OGHAM SPACE MARK * glyph is blank in "stemless" style fonts x (space - 0020) @ Traditional letters 1681 OGHAM LETTER BEITH 1682 OGHAM LETTER LUIS 1683 OGHAM LETTER FEARN 1684 OGHAM LETTER SAIL 1685 OGHAM LETTER NION 1686 OGHAM LETTER UATH 1687 OGHAM LETTER DAIR 1688 OGHAM LETTER TINNE 1689 OGHAM LETTER COLL 168A OGHAM LETTER CEIRT 168B OGHAM LETTER MUIN 168C OGHAM LETTER GORT 168D OGHAM LETTER NGEADAL 168E OGHAM LETTER STRAIF 168F OGHAM LETTER RUIS 1690 OGHAM LETTER AILM 1691 OGHAM LETTER ONN 1692 OGHAM LETTER UR 1693 OGHAM LETTER EADHADH 1694 OGHAM LETTER IODHADH @ Forfeda (supplementary letters) 1695 OGHAM LETTER EABHADH 1696 OGHAM LETTER OR 1697 OGHAM LETTER UILLEANN 1698 OGHAM LETTER IFIN 1699 OGHAM LETTER EAMHANCHOLL 169A OGHAM LETTER PEITH @ Punctuation 169B OGHAM FEATHER MARK * marks beginning of Ogham text 169C OGHAM REVERSED FEATHER MARK * marks end of Ogham text @@ 16A0 Runic 16FF @ Letters 16A0 RUNIC LETTER FEHU FEOH FE F 16A1 RUNIC LETTER V 16A2 RUNIC LETTER URUZ UR U 16A3 RUNIC LETTER YR 16A4 RUNIC LETTER Y 16A5 RUNIC LETTER W 16A6 RUNIC LETTER THURISAZ THURS THORN x (latin small letter thorn - 00FE) 16A7 RUNIC LETTER ETH 16A8 RUNIC LETTER ANSUZ A 16A9 RUNIC LETTER OS O 16AA RUNIC LETTER AC A 16AB RUNIC LETTER AESC 16AC RUNIC LETTER LONG-BRANCH-OSS O 16AD RUNIC LETTER SHORT-TWIG-OSS O 16AE RUNIC LETTER O 16AF RUNIC LETTER OE 16B0 RUNIC LETTER ON 16B1 RUNIC LETTER RAIDO RAD REID R 16B2 RUNIC LETTER KAUNA 16B3 RUNIC LETTER CEN 16B4 RUNIC LETTER KAUN K 16B5 RUNIC LETTER G 16B6 RUNIC LETTER ENG 16B7 RUNIC LETTER GEBO GYFU G 16B8 RUNIC LETTER GAR 16B9 RUNIC LETTER WUNJO WYNN W x (latin letter wynn - 01BF) 16BA RUNIC LETTER HAGLAZ H 16BB RUNIC LETTER HAEGL H 16BC RUNIC LETTER LONG-BRANCH-HAGALL H 16BD RUNIC LETTER SHORT-TWIG-HAGALL H 16BE RUNIC LETTER NAUDIZ NYD NAUD N 16BF RUNIC LETTER SHORT-TWIG-NAUD N 16C0 RUNIC LETTER DOTTED-N 16C1 RUNIC LETTER ISAZ IS ISS I 16C2 RUNIC LETTER E 16C3 RUNIC LETTER JERAN J 16C4 RUNIC LETTER GER 16C5 RUNIC LETTER LONG-BRANCH-AR AE 16C6 RUNIC LETTER SHORT-TWIG-AR A 16C7 RUNIC LETTER IWAZ EOH 16C8 RUNIC LETTER PERTHO PEORTH P 16C9 RUNIC LETTER ALGIZ EOLHX 16CA RUNIC LETTER SOWILO S 16CB RUNIC LETTER SIGEL LONG-BRANCH-SOL S 16CC RUNIC LETTER SHORT-TWIG-SOL S 16CD RUNIC LETTER C 16CE RUNIC LETTER Z 16CF RUNIC LETTER TIWAZ TIR TYR T 16D0 RUNIC LETTER SHORT-TWIG-TYR T 16D1 RUNIC LETTER D 16D2 RUNIC LETTER BERKANAN BEORC BJARKAN B 16D3 RUNIC LETTER SHORT-TWIG-BJARKAN B 16D4 RUNIC LETTER DOTTED-P 16D5 RUNIC LETTER OPEN-P 16D6 RUNIC LETTER EHWAZ EH E 16D7 RUNIC LETTER MANNAZ MAN M 16D8 RUNIC LETTER LONG-BRANCH-MADR M 16D9 RUNIC LETTER SHORT-TWIG-MADR M 16DA RUNIC LETTER LAUKAZ LAGU LOGR L 16DB RUNIC LETTER DOTTED-L 16DC RUNIC LETTER INGWAZ 16DD RUNIC LETTER ING 16DE RUNIC LETTER DAGAZ DAEG D 16DF RUNIC LETTER OTHALAN ETHEL O 16E0 RUNIC LETTER EAR 16E1 RUNIC LETTER IOR 16E2 RUNIC LETTER CWEORTH 16E3 RUNIC LETTER CALC 16E4 RUNIC LETTER CEALC 16E5 RUNIC LETTER STAN 16E6 RUNIC LETTER LONG-BRANCH-YR 16E7 RUNIC LETTER SHORT-TWIG-YR 16E8 RUNIC LETTER ICELANDIC-YR 16E9 RUNIC LETTER Q 16EA RUNIC LETTER X @ Punctuation 16EB RUNIC SINGLE PUNCTUATION 16EC RUNIC MULTIPLE PUNCTUATION 16ED RUNIC CROSS PUNCTUATION @ Golden number runes 16EE RUNIC ARLAUG SYMBOL * golden number 17 16EF RUNIC TVIMADUR SYMBOL * golden number 18 16F0 RUNIC BELGTHOR SYMBOL * golden number 19 @ Tolkienian extensions 16F1 RUNIC LETTER K 16F2 RUNIC LETTER SH 16F3 RUNIC LETTER OO @ Cryptogrammic letters 16F4 RUNIC LETTER FRANKS CASKET OS 16F5 RUNIC LETTER FRANKS CASKET IS 16F6 RUNIC LETTER FRANKS CASKET EH 16F7 RUNIC LETTER FRANKS CASKET AC 16F8 RUNIC LETTER FRANKS CASKET AESC @@ 1700 Tagalog 171F @ Independent vowels 1700 TAGALOG LETTER A 1701 TAGALOG LETTER I 1702 TAGALOG LETTER U @ Consonants 1703 TAGALOG LETTER KA 1704 TAGALOG LETTER GA 1705 TAGALOG LETTER NGA 1706 TAGALOG LETTER TA 1707 TAGALOG LETTER DA 1708 TAGALOG LETTER NA 1709 TAGALOG LETTER PA 170A TAGALOG LETTER BA 170B TAGALOG LETTER MA 170C TAGALOG LETTER YA 170E TAGALOG LETTER LA 170F TAGALOG LETTER WA 1710 TAGALOG LETTER SA 1711 TAGALOG LETTER HA @ Dependent vowel signs 1712 TAGALOG VOWEL SIGN I 1713 TAGALOG VOWEL SIGN U @ Virama 1714 TAGALOG SIGN VIRAMA @@ 1720 Hanunoo 173F @ Independent vowels 1720 HANUNOO LETTER A 1721 HANUNOO LETTER I 1722 HANUNOO LETTER U @ Consonants 1723 HANUNOO LETTER KA 1724 HANUNOO LETTER GA 1725 HANUNOO LETTER NGA 1726 HANUNOO LETTER TA 1727 HANUNOO LETTER DA 1728 HANUNOO LETTER NA 1729 HANUNOO LETTER PA 172A HANUNOO LETTER BA 172B HANUNOO LETTER MA 172C HANUNOO LETTER YA 172D HANUNOO LETTER RA 172E HANUNOO LETTER LA 172F HANUNOO LETTER WA 1730 HANUNOO LETTER SA 1731 HANUNOO LETTER HA @ Dependent vowel signs 1732 HANUNOO VOWEL SIGN I 1733 HANUNOO VOWEL SIGN U @ Virama 1734 HANUNOO SIGN PAMUDPOD @ Generic punctuation for Philippine scripts 1735 PHILIPPINE SINGLE PUNCTUATION x (devanagari danda - 0964) 1736 PHILIPPINE DOUBLE PUNCTUATION x (devanagari double danda - 0965) @@ 1740 Buhid 175F @ Independent vowels 1740 BUHID LETTER A 1741 BUHID LETTER I 1742 BUHID LETTER U @ Consonants 1743 BUHID LETTER KA 1744 BUHID LETTER GA 1745 BUHID LETTER NGA 1746 BUHID LETTER TA 1747 BUHID LETTER DA 1748 BUHID LETTER NA 1749 BUHID LETTER PA 174A BUHID LETTER BA 174B BUHID LETTER MA 174C BUHID LETTER YA 174D BUHID LETTER RA 174E BUHID LETTER LA 174F BUHID LETTER WA 1750 BUHID LETTER SA 1751 BUHID LETTER HA @ Dependent vowel signs 1752 BUHID VOWEL SIGN I 1753 BUHID VOWEL SIGN U @@ 1760 Tagbanwa 177F @ Independent vowels 1760 TAGBANWA LETTER A 1761 TAGBANWA LETTER I 1762 TAGBANWA LETTER U @ Consonants 1763 TAGBANWA LETTER KA 1764 TAGBANWA LETTER GA 1765 TAGBANWA LETTER NGA 1766 TAGBANWA LETTER TA 1767 TAGBANWA LETTER DA 1768 TAGBANWA LETTER NA 1769 TAGBANWA LETTER PA 176A TAGBANWA LETTER BA 176B TAGBANWA LETTER MA 176C TAGBANWA LETTER YA 176E TAGBANWA LETTER LA 176F TAGBANWA LETTER WA 1770 TAGBANWA LETTER SA @ Dependent vowel signs 1772 TAGBANWA VOWEL SIGN I 1773 TAGBANWA VOWEL SIGN U @@ 1780 Khmer 17FF @ Consonants 1780 KHMER LETTER KA 1781 KHMER LETTER KHA 1782 KHMER LETTER KO 1783 KHMER LETTER KHO 1784 KHMER LETTER NGO 1785 KHMER LETTER CA 1786 KHMER LETTER CHA 1787 KHMER LETTER CO 1788 KHMER LETTER CHO 1789 KHMER LETTER NYO 178A KHMER LETTER DA 178B KHMER LETTER TTHA 178C KHMER LETTER DO 178D KHMER LETTER TTHO 178E KHMER LETTER NNO * as this character belongs to the first register, its correct transliteration is nna, not nno 178F KHMER LETTER TA 1790 KHMER LETTER THA 1791 KHMER LETTER TO 1792 KHMER LETTER THO 1793 KHMER LETTER NO 1794 KHMER LETTER BA 1795 KHMER LETTER PHA 1796 KHMER LETTER PO 1797 KHMER LETTER PHO 1798 KHMER LETTER MO 1799 KHMER LETTER YO 179A KHMER LETTER RO 179B KHMER LETTER LO 179C KHMER LETTER VO 179D KHMER LETTER SHA * used only for Pali/Sanskrit transliteration 179E KHMER LETTER SSO * used only for Pali/Sanskrit transliteration * as this character belongs to the first register, its correct transliteration is ssa, not sso 179F KHMER LETTER SA 17A0 KHMER LETTER HA 17A1 KHMER LETTER LA 17A2 KHMER LETTER QA * glottal stop @ Deprecated independent vowels for transliteration @+ These cloned independent vowels were originally intended only for Pali/Sanskrit transliteration. 17A3 KHMER INDEPENDENT VOWEL QAQ * use of this character is strongly discouraged; 17A2 should be used instead 17A4 KHMER INDEPENDENT VOWEL QAA * use of this character is strongly discouraged; the sequence 17A2 17B6 should be used instead @ Independent vowels 17A5 KHMER INDEPENDENT VOWEL QI 17A6 KHMER INDEPENDENT VOWEL QII 17A7 KHMER INDEPENDENT VOWEL QU 17A8 KHMER INDEPENDENT VOWEL QUK * obsolete ligature for the sequence 17A7 1780 * use of the sequence is now preferred 17A9 KHMER INDEPENDENT VOWEL QUU 17AA KHMER INDEPENDENT VOWEL QUUV 17AB KHMER INDEPENDENT VOWEL RY 17AC KHMER INDEPENDENT VOWEL RYY 17AD KHMER INDEPENDENT VOWEL LY 17AE KHMER INDEPENDENT VOWEL LYY 17AF KHMER INDEPENDENT VOWEL QE 17B0 KHMER INDEPENDENT VOWEL QAI 17B1 KHMER INDEPENDENT VOWEL QOO TYPE ONE 17B2 KHMER INDEPENDENT VOWEL QOO TYPE TWO * this is a variant for 17B1, used in only two words * 17B1 is the normal variant of this vowel 17B3 KHMER INDEPENDENT VOWEL QAU @ Inherent vowels @+ These are invisible combining marks for phonetic transcription to distinguish Indic language inherent vowels from Khmer inherent vowels. These characters are included solely for compatibility with particular applications; their use in other contexts is discouraged. 17B4 KHMER VOWEL INHERENT AQ 17B5 KHMER VOWEL INHERENT AA @ Dependent vowel signs 17B6 KHMER VOWEL SIGN AA 17B7 KHMER VOWEL SIGN I 17B8 KHMER VOWEL SIGN II 17B9 KHMER VOWEL SIGN Y 17BA KHMER VOWEL SIGN YY 17BB KHMER VOWEL SIGN U 17BC KHMER VOWEL SIGN UU 17BD KHMER VOWEL SIGN UA @ Two-part dependent vowel signs @+ These two-part dependent vowel signs have glyph pieces which stand on both sides of the consonant. These vowel signs follow the consonant in logical order, and should be handled as a unit for processing. 17BE KHMER VOWEL SIGN OE 17BF KHMER VOWEL SIGN YA 17C0 KHMER VOWEL SIGN IE @ Dependent vowel signs 17C1 KHMER VOWEL SIGN E 17C2 KHMER VOWEL SIGN AE 17C3 KHMER VOWEL SIGN AI @ Two-part dependent vowel signs @+ These two-part dependent vowel signs have glyph pieces which stand on both sides of the consonant. These vowel signs follow the consonant in logical order, and should be handled as a unit for processing. 17C4 KHMER VOWEL SIGN OO 17C5 KHMER VOWEL SIGN AU @ Various signs 17C6 KHMER SIGN NIKAHIT = srak am = anusvara * final nasalization * this character is usually regarded as a vowel sign am, along with om and aam x (thai character nikhahit - 0E4D) x (myanmar sign anusvara - 1036) 17C7 KHMER SIGN REAHMUK = srak ah = visarga x (myanmar sign visarga - 1038) 17C8 KHMER SIGN YUUKALEAPINTU * inserts a short inherent vowel with abrupt glottal stop * the preferred transliteration is yukaleakpintu @ Consonant shifters @+ These signs shift the base consonant between registers. 17C9 KHMER SIGN MUUSIKATOAN * changes the second register to the first * the preferred transliteration is muusekatoan 17CA KHMER SIGN TRIISAP * changes the first register to the second * the preferred transliteration is treisap @ Various signs 17CB KHMER SIGN BANTOC * shortens the vowel sound in the previous orthographic syllable * the preferred transliteration is bantak 17CC KHMER SIGN ROBAT * a diacritic historically corresponding to the repha form of ra in Devanagari 17CD KHMER SIGN TOANDAKHIAT * indicates that the base character is not pronounced x (thai character thanthakhat - 0E4C) 17CE KHMER SIGN KAKABAT * sign used with some exclamations 17CF KHMER SIGN AHSDA * denotes stressed intonation in some single-consonant words 17D0 KHMER SIGN SAMYOK SANNYA * denotes deviation from the general rules of pronunciation, mostly used in loan words from Pali/Sanskrit, French, and so on 17D1 KHMER SIGN VIRIAM * mostly obsolete, a "killer" * indicates that the base character is the final consonant of a word without its inherent vowel sound 17D2 KHMER SIGN COENG * functions to indicate that the following Khmer letter is to be rendered subscripted * shape shown is arbitrary and is not visibly rendered @ Lunar date sign 17D3 KHMER SIGN BATHAMASAT * originally intended as part of lunar date symbols * use of this character is discouraged in favor of the complete set of lunar date symbols x (khmer symbol pathamasat - 19E0) @ Various signs 17D4 KHMER SIGN KHAN * functions as a full stop, period x (thai character paiyannoi - 0E2F) x (myanmar sign little section - 104A) 17D5 KHMER SIGN BARIYOOSAN * indicates the end of a section or a text x (thai character angkhankhu - 0E5A) x (myanmar sign section - 104B) 17D6 KHMER SIGN CAMNUC PII KUUH * functions as colon * the preferred transliteration is camnoc pii kuuh x (division sign - 00F7) x (tibetan mark gter tsheg - 0F14) 17D7 KHMER SIGN LEK TOO * repetition sign x (thai character maiyamok - 0E46) 17D8 KHMER SIGN BEYYAL * et cetera * use of this character is discouraged; other abbreviations for et cetera also exist * preferred spelling: 17D4 179B 17D4 17D9 KHMER SIGN PHNAEK MUAN * indicates the beginning of a book or a treatise * the preferred transliteration is phnek moan x (thai character fongman - 0E4F) 17DA KHMER SIGN KOOMUUT * indicates the end of a book or treatise * this forms a pair with 17D9 * the preferred transliteration is koomoot x (thai character khomut - 0E5B) @ Currency symbol 17DB KHMER CURRENCY SYMBOL RIEL @ Various signs 17DC KHMER SIGN AVAKRAHASANYA * rare, shows an omitted Sanskrit vowel, like an apostrophe * the preferred transliteration is avakraha sannya x (devanagari sign avagraha - 093D) 17DD KHMER SIGN ATTHACAN * mostly obsolete * indicates that the base character is the final consonant of a word with its inherent vowel sound x (khmer sign viriam - 17D1) @ Digits 17E0 KHMER DIGIT ZERO 17E1 KHMER DIGIT ONE 17E2 KHMER DIGIT TWO 17E3 KHMER DIGIT THREE 17E4 KHMER DIGIT FOUR 17E5 KHMER DIGIT FIVE 17E6 KHMER DIGIT SIX 17E7 KHMER DIGIT SEVEN 17E8 KHMER DIGIT EIGHT 17E9 KHMER DIGIT NINE @ Numeric symbols for divination lore @+ These characters have numeric values 0-9, respectively, but are not used for calculation. 17F0 KHMER SYMBOL LEK ATTAK SON 17F1 KHMER SYMBOL LEK ATTAK MUOY 17F2 KHMER SYMBOL LEK ATTAK PII 17F3 KHMER SYMBOL LEK ATTAK BEI 17F4 KHMER SYMBOL LEK ATTAK BUON 17F5 KHMER SYMBOL LEK ATTAK PRAM 17F6 KHMER SYMBOL LEK ATTAK PRAM-MUOY 17F7 KHMER SYMBOL LEK ATTAK PRAM-PII 17F8 KHMER SYMBOL LEK ATTAK PRAM-BEI 17F9 KHMER SYMBOL LEK ATTAK PRAM-BUON @@ 1800 Mongolian 18AF @@+ @ Punctuation @+ Additional birgas are encoded in the Mongolian Supplement block at 11660-1167F. 1800 MONGOLIAN BIRGA x (tibetan mark initial yig mgo mdun ma - 0F04) 1801 MONGOLIAN ELLIPSIS 1802 MONGOLIAN COMMA 1803 MONGOLIAN FULL STOP 1804 MONGOLIAN COLON 1805 MONGOLIAN FOUR DOTS * marks the end of a chapter 1806 MONGOLIAN TODO SOFT HYPHEN * not a format control character, but simply a hyphen for Todo x (soft hyphen - 00AD) 1807 MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER 1808 MONGOLIAN MANCHU COMMA 1809 MONGOLIAN MANCHU FULL STOP 180A MONGOLIAN NIRUGU @ Format controls 180B MONGOLIAN FREE VARIATION SELECTOR ONE * abbreviated FVS1 180C MONGOLIAN FREE VARIATION SELECTOR TWO * abbreviated FVS2 180D MONGOLIAN FREE VARIATION SELECTOR THREE * abbreviated FVS3 180E MONGOLIAN VOWEL SEPARATOR * abbreviated MVS @ Digits 1810 MONGOLIAN DIGIT ZERO 1811 MONGOLIAN DIGIT ONE 1812 MONGOLIAN DIGIT TWO 1813 MONGOLIAN DIGIT THREE 1814 MONGOLIAN DIGIT FOUR 1815 MONGOLIAN DIGIT FIVE 1816 MONGOLIAN DIGIT SIX 1817 MONGOLIAN DIGIT SEVEN 1818 MONGOLIAN DIGIT EIGHT 1819 MONGOLIAN DIGIT NINE @ Basic letters @+ Cross-references show commonly used Cyrillic transliterations. 1820 MONGOLIAN LETTER A x (cyrillic small letter a - 0430) ~ 1820 ALT1 first form (initial) ~ 1820 ALT1 first form (medial) ~ 1820 ALT1 first form (final) ~ 1820 180B second form (isolate) ~ 1820 180B second form (medial) ~ 1820 180B second form (final) ~ 1820 180C third form (medial) 1821 MONGOLIAN LETTER E x (cyrillic small letter e - 044D) ~ 1821 ALT1 first form (initial) ~ 1821 ALT1 first form (medial) ~ 1821 ALT1 first form (final) ~ 1821 180B second form (initial) ~ 1821 180B second form (final) 1822 MONGOLIAN LETTER I x (cyrillic small letter i - 0438) ~ 1822 ALT1 first form (initial) ~ 1822 ALT1 first form (medial) ~ 1822 ALT1 first form (final) ~ 1822 180B second form (medial) 1823 MONGOLIAN LETTER O x (cyrillic small letter o - 043E) ~ 1823 ALT1 first form (initial) ~ 1823 ALT1 first form (medial) ~ 1823 ALT1 first form (final) ~ 1823 180B second form (medial) ~ 1823 180B second form (final) 1824 MONGOLIAN LETTER U x (cyrillic small letter u - 0443) ~ 1824 ALT1 first form (isolate) ~ 1824 ALT1 first form (initial) ~ 1824 ALT1 first form (medial) ~ 1824 ALT1 first form (final) ~ 1824 180B second form (medial) 1825 MONGOLIAN LETTER OE x (cyrillic small letter barred o - 04E9) ~ 1825 ALT1 first form (initial) ~ 1825 ALT1 first form (medial) ~ 1825 ALT1 first form (final) ~ 1825 180B second form (medial) ~ 1825 180B second form (final) ~ 1825 180C third form (medial) 1826 MONGOLIAN LETTER UE x (cyrillic small letter straight u - 04AF) ~ 1826 ALT1 first form (isolate) ~ 1826 ALT1 first form (initial) ~ 1826 ALT1 first form (medial) ~ 1826 ALT1 first form (final) ~ 1826 180B second form (isolate) ~ 1826 180B second form (medial) ~ 1826 180B second form (final) ~ 1826 180C third form (medial) 1827 MONGOLIAN LETTER EE 1828 MONGOLIAN LETTER NA x (cyrillic small letter en - 043D) ~ 1828 ALT1 first form (initial) ~ 1828 ALT1 first form (medial) ~ 1828 ALT1 first form (final) ~ 1828 180B second form (initial) ~ 1828 180B second form (medial) ~ 1828 180C third form (medial) ~ 1828 180D separate form (medial) 1829 MONGOLIAN LETTER ANG 182A MONGOLIAN LETTER BA x (cyrillic small letter be - 0431) ~ 182A ALT1 first form (initial) ~ 182A ALT1 first form (medial) ~ 182A ALT1 first form (final) ~ 182A 180B alternative form (final) 182B MONGOLIAN LETTER PA x (cyrillic small letter pe - 043F) 182C MONGOLIAN LETTER QA x (cyrillic small letter ha - 0445) ~ 182C ALT1 first form (initial) ~ 182C ALT1 first form (medial) ~ 182C ALT1 first form (final) ~ 182C 180B second form (initial) ~ 182C 180B second form (medial) ~ 182C 180B feminine second form (isolate) ~ 182C 180C third form (medial) ~ 182C 180D fourth form (medial) 182D MONGOLIAN LETTER GA x (cyrillic small letter ghe - 0433) ~ 182D ALT1 first form (initial) ~ 182D ALT1 first form (medial) ~ 182D ALT1 first form (final) ~ 182D 180B second form (initial) ~ 182D 180B second form (medial) ~ 182D 180B feminine form (final) ~ 182D 180C third form (medial) ~ 182D 180D feminine form (medial) 182E MONGOLIAN LETTER MA x (cyrillic small letter em - 043C) 182F MONGOLIAN LETTER LA x (cyrillic small letter el - 043B) 1830 MONGOLIAN LETTER SA x (cyrillic small letter es - 0441) ~ 1830 ALT1 first form (initial) ~ 1830 ALT1 first form (medial) ~ 1830 ALT1 first form (final) ~ 1830 180B second form (final) ~ 1830 180C third form (final) 1831 MONGOLIAN LETTER SHA x (cyrillic small letter sha - 0448) 1832 MONGOLIAN LETTER TA x (cyrillic small letter te - 0442) ~ 1832 ALT1 first form (initial) ~ 1832 ALT1 first form (medial) ~ 1832 ALT1 first form (final) ~ 1832 180B second form (medial) 1833 MONGOLIAN LETTER DA x (cyrillic small letter de - 0434) ~ 1833 ALT1 first form (initial) ~ 1833 ALT1 first form (medial) ~ 1833 ALT1 first form (final) ~ 1833 180B second form (initial) ~ 1833 180B second form (medial) ~ 1833 180B second form (final) 1834 MONGOLIAN LETTER CHA x (cyrillic small letter che - 0447) 1835 MONGOLIAN LETTER JA x (cyrillic small letter zhe - 0436) ~ 1835 ALT1 first form (initial) ~ 1835 ALT1 first form (medial) ~ 1835 ALT1 first form (final) ~ 1835 180B second form (medial) 1836 MONGOLIAN LETTER YA x (cyrillic small letter short i - 0439) ~ 1836 ALT1 first form (initial) ~ 1836 ALT1 first form (medial) ~ 1836 ALT1 first form (final) ~ 1836 180B second form (initial) ~ 1836 180B second form (medial) ~ 1836 180C third form (medial) 1837 MONGOLIAN LETTER RA x (cyrillic small letter er - 0440) 1838 MONGOLIAN LETTER WA x (cyrillic small letter ve - 0432) ~ 1838 ALT1 first form (initial) ~ 1838 ALT1 first form (medial) ~ 1838 ALT1 first form (final) ~ 1838 180B second form (final) 1839 MONGOLIAN LETTER FA x (cyrillic small letter ef - 0444) 183A MONGOLIAN LETTER KA x (cyrillic small letter ha - 0445) 183B MONGOLIAN LETTER KHA x (cyrillic small letter ka - 043A) 183C MONGOLIAN LETTER TSA x (cyrillic small letter tse - 0446) 183D MONGOLIAN LETTER ZA x (cyrillic small letter ze - 0437) 183E MONGOLIAN LETTER HAA x (cyrillic small letter ha - 0445) 183F MONGOLIAN LETTER ZRA x (cyrillic small letter zhe - 0436) 1840 MONGOLIAN LETTER LHA 1841 MONGOLIAN LETTER ZHI 1842 MONGOLIAN LETTER CHI @ Todo letters 1843 MONGOLIAN LETTER TODO LONG VOWEL SIGN 1844 MONGOLIAN LETTER TODO E ~ 1844 ALT1 first form (initial) ~ 1844 ALT1 first form (medial) ~ 1844 ALT1 first form (final) ~ 1844 180B second form (medial) 1845 MONGOLIAN LETTER TODO I ~ 1845 ALT1 first form (initial) ~ 1845 ALT1 first form (medial) ~ 1845 ALT1 first form (final) ~ 1845 180B second form (medial) 1846 MONGOLIAN LETTER TODO O ~ 1846 ALT1 first form (initial) ~ 1846 ALT1 first form (medial) ~ 1846 ALT1 first form (final) ~ 1846 180B second form (medial) 1847 MONGOLIAN LETTER TODO U ~ 1847 ALT1 first form (initial) ~ 1847 ALT1 first form (medial) ~ 1847 ALT1 first form (final) ~ 1847 180B second form (isolate) ~ 1847 180B second form (medial) ~ 1847 180B second form (final) ~ 1847 180C third form (medial) 1848 MONGOLIAN LETTER TODO OE ~ 1848 ALT1 first form (initial) ~ 1848 ALT1 first form (medial) ~ 1848 ALT1 first form (final) ~ 1848 180B second form (medial) 1849 MONGOLIAN LETTER TODO UE ~ 1849 ALT1 first form (initial) ~ 1849 ALT1 first form (medial) ~ 1849 ALT1 first form (final) ~ 1849 180B second form (isolate) ~ 1849 180B second form (medial) 184A MONGOLIAN LETTER TODO ANG 184B MONGOLIAN LETTER TODO BA 184C MONGOLIAN LETTER TODO PA 184D MONGOLIAN LETTER TODO QA ~ 184D ALT1 first form (initial) ~ 184D ALT1 first form (medial) ~ 184D ALT1 first form (final) ~ 184D 180B feminine form (initial) ~ 184D 180B feminine form (medial) 184E MONGOLIAN LETTER TODO GA ~ 184E ALT1 first form (initial) ~ 184E ALT1 first form (medial) ~ 184E ALT1 first form (final) ~ 184E 180B second form (medial) 184F MONGOLIAN LETTER TODO MA 1850 MONGOLIAN LETTER TODO TA 1851 MONGOLIAN LETTER TODO DA 1852 MONGOLIAN LETTER TODO CHA 1853 MONGOLIAN LETTER TODO JA 1854 MONGOLIAN LETTER TODO TSA 1855 MONGOLIAN LETTER TODO YA 1856 MONGOLIAN LETTER TODO WA 1857 MONGOLIAN LETTER TODO KA 1858 MONGOLIAN LETTER TODO GAA 1859 MONGOLIAN LETTER TODO HAA 185A MONGOLIAN LETTER TODO JIA 185B MONGOLIAN LETTER TODO NIA 185C MONGOLIAN LETTER TODO DZA @ Sibe letters 185D MONGOLIAN LETTER SIBE E ~ 185D ALT1 first form (initial) ~ 185D ALT1 first form (medial) ~ 185D ALT1 first form (final) ~ 185D 180B second form (medial) ~ 185D 180B second form (final) 185E MONGOLIAN LETTER SIBE I ~ 185E ALT1 first form (initial) ~ 185E ALT1 first form (medial) ~ 185E ALT1 first form (final) ~ 185E 180B second form (medial) ~ 185E 180B second form (final) ~ 185E 180C third form (medial) ~ 185E 180C third form (final) 185F MONGOLIAN LETTER SIBE IY 1860 MONGOLIAN LETTER SIBE UE ~ 1860 ALT1 first form (initial) ~ 1860 ALT1 first form (medial) ~ 1860 ALT1 first form (final) ~ 1860 180B second form (medial) ~ 1860 180B second form (final) 1861 MONGOLIAN LETTER SIBE U 1862 MONGOLIAN LETTER SIBE ANG 1863 MONGOLIAN LETTER SIBE KA ~ 1863 ALT1 first form (initial) ~ 1863 ALT1 first form (medial) ~ 1863 ALT1 first form (final) ~ 1863 180B second form (medial) 1864 MONGOLIAN LETTER SIBE GA 1865 MONGOLIAN LETTER SIBE HA 1866 MONGOLIAN LETTER SIBE PA 1867 MONGOLIAN LETTER SIBE SHA 1868 MONGOLIAN LETTER SIBE TA ~ 1868 ALT1 first form (initial) ~ 1868 ALT1 first form (medial) ~ 1868 ALT1 first form (final) ~ 1868 180B second form (initial) ~ 1868 180B second form (medial) ~ 1868 180C third form (medial) 1869 MONGOLIAN LETTER SIBE DA ~ 1869 ALT1 first form (initial) ~ 1869 ALT1 first form (medial) ~ 1869 ALT1 first form (final) ~ 1869 180B second form (initial) ~ 1869 180B second form (medial) 186A MONGOLIAN LETTER SIBE JA 186B MONGOLIAN LETTER SIBE FA 186C MONGOLIAN LETTER SIBE GAA 186D MONGOLIAN LETTER SIBE HAA 186E MONGOLIAN LETTER SIBE TSA 186F MONGOLIAN LETTER SIBE ZA ~ 186F ALT1 first form (initial) ~ 186F ALT1 first form (medial) ~ 186F ALT1 first form (final) ~ 186F 180B second form (initial) ~ 186F 180B second form (medial) 1870 MONGOLIAN LETTER SIBE RAA 1871 MONGOLIAN LETTER SIBE CHA 1872 MONGOLIAN LETTER SIBE ZHA @ Manchu letters 1873 MONGOLIAN LETTER MANCHU I ~ 1873 ALT1 first form (initial) ~ 1873 ALT1 first form (medial) ~ 1873 ALT1 first form (final) ~ 1873 180B second form (medial) ~ 1873 180B second form (final) ~ 1873 180C third form (medial) ~ 1873 180C third form (final) ~ 1873 180D fourth form (medial) 1874 MONGOLIAN LETTER MANCHU KA ~ 1874 ALT1 first form (initial) ~ 1874 ALT1 first form (medial) ~ 1874 ALT1 first form (final) ~ 1874 180B second form (medial) ~ 1874 180B feminine first final form (final) ~ 1874 180C feminine first medial form (medial) ~ 1874 180C feminine second final form (final) ~ 1874 180D feminine second medial form (medial) 1875 MONGOLIAN LETTER MANCHU RA 1876 MONGOLIAN LETTER MANCHU FA ~ 1876 ALT1 first form (initial) ~ 1876 ALT1 first form (medial) ~ 1876 ALT1 first form (final) ~ 1876 180B second form (initial) ~ 1876 180B second form (medial) 1877 MONGOLIAN LETTER MANCHU ZHA @ Extensions for Sanskrit and Tibetan 1880 MONGOLIAN LETTER ALI GALI ANUSVARA ONE x (tibetan sign sna ldan - 0F83) ~ 1880 180B second form 1881 MONGOLIAN LETTER ALI GALI VISARGA ONE x (tibetan sign rnam bcad - 0F7F) ~ 1881 180B second form 1882 MONGOLIAN LETTER ALI GALI DAMARU x (tibetan sign lce tsa can - 0F88) 1883 MONGOLIAN LETTER ALI GALI UBADAMA 1884 MONGOLIAN LETTER ALI GALI INVERTED UBADAMA x (tibetan sign mchu can - 0F89) 1885 MONGOLIAN LETTER ALI GALI BALUDA x (tibetan mark paluta - 0F85) 1886 MONGOLIAN LETTER ALI GALI THREE BALUDA 1887 MONGOLIAN LETTER ALI GALI A ~ 1887 ALT1 first form (initial) ~ 1887 ALT1 first form (medial) ~ 1887 ALT1 first form (final) ~ 1887 180B second form (isolate) ~ 1887 180B second form (final) ~ 1887 180C third form (final) ~ 1887 180D fourth form (final) 1888 MONGOLIAN LETTER ALI GALI I ~ 1888 ALT1 first form (initial) ~ 1888 ALT1 first form (medial) ~ 1888 ALT1 first form (final) ~ 1888 180B second form (final) 1889 MONGOLIAN LETTER ALI GALI KA 188A MONGOLIAN LETTER ALI GALI NGA ~ 188A ALT1 first form (initial) ~ 188A ALT1 first form (medial) ~ 188A ALT1 first form (final) ~ 188A 180B second form (initial) ~ 188A 180B second form (medial) 188B MONGOLIAN LETTER ALI GALI CA 188C MONGOLIAN LETTER ALI GALI TTA 188D MONGOLIAN LETTER ALI GALI TTHA 188E MONGOLIAN LETTER ALI GALI DDA 188F MONGOLIAN LETTER ALI GALI NNA 1890 MONGOLIAN LETTER ALI GALI TA 1891 MONGOLIAN LETTER ALI GALI DA 1892 MONGOLIAN LETTER ALI GALI PA 1893 MONGOLIAN LETTER ALI GALI PHA 1894 MONGOLIAN LETTER ALI GALI SSA 1895 MONGOLIAN LETTER ALI GALI ZHA 1896 MONGOLIAN LETTER ALI GALI ZA 1897 MONGOLIAN LETTER ALI GALI AH 1898 MONGOLIAN LETTER TODO ALI GALI TA 1899 MONGOLIAN LETTER TODO ALI GALI ZHA 189A MONGOLIAN LETTER MANCHU ALI GALI GHA 189B MONGOLIAN LETTER MANCHU ALI GALI NGA 189C MONGOLIAN LETTER MANCHU ALI GALI CA 189D MONGOLIAN LETTER MANCHU ALI GALI JHA 189E MONGOLIAN LETTER MANCHU ALI GALI TTA 189F MONGOLIAN LETTER MANCHU ALI GALI DDHA 18A0 MONGOLIAN LETTER MANCHU ALI GALI TA 18A1 MONGOLIAN LETTER MANCHU ALI GALI DHA 18A2 MONGOLIAN LETTER MANCHU ALI GALI SSA 18A3 MONGOLIAN LETTER MANCHU ALI GALI CYA 18A4 MONGOLIAN LETTER MANCHU ALI GALI ZHA 18A5 MONGOLIAN LETTER MANCHU ALI GALI ZA 18A6 MONGOLIAN LETTER ALI GALI HALF U 18A7 MONGOLIAN LETTER ALI GALI HALF YA 18A8 MONGOLIAN LETTER MANCHU ALI GALI BHA 18A9 MONGOLIAN LETTER ALI GALI DAGALGA 18AA MONGOLIAN LETTER MANCHU ALI GALI LHA @@@~ Contextual Variants and Standardized Variation Sequences @+ Unlike other blocks, these variation sequences use the script-specific variation selectors for Mongolian. @@ 18B0 Unified Canadian Aboriginal Syllabics Extended 18FF @ Syllables for Moose Cree 18B0 CANADIAN SYLLABICS OY 18B1 CANADIAN SYLLABICS AY 18B2 CANADIAN SYLLABICS AAY 18B3 CANADIAN SYLLABICS WAY 18B4 CANADIAN SYLLABICS POY 18B5 CANADIAN SYLLABICS PAY 18B6 CANADIAN SYLLABICS PWOY 18B7 CANADIAN SYLLABICS TAY 18B8 CANADIAN SYLLABICS KAY 18B9 CANADIAN SYLLABICS KWAY 18BA CANADIAN SYLLABICS MAY 18BB CANADIAN SYLLABICS NOY 18BC CANADIAN SYLLABICS NAY 18BD CANADIAN SYLLABICS LAY 18BE CANADIAN SYLLABICS SOY 18BF CANADIAN SYLLABICS SAY 18C0 CANADIAN SYLLABICS SHOY 18C1 CANADIAN SYLLABICS SHAY 18C2 CANADIAN SYLLABICS SHWOY 18C3 CANADIAN SYLLABICS YOY 18C4 CANADIAN SYLLABICS YAY 18C5 CANADIAN SYLLABICS RAY @ Syllables for Cree and Ojibway 18C6 CANADIAN SYLLABICS NWI 18C7 CANADIAN SYLLABICS OJIBWAY NWI 18C8 CANADIAN SYLLABICS NWII 18C9 CANADIAN SYLLABICS OJIBWAY NWII 18CA CANADIAN SYLLABICS NWO 18CB CANADIAN SYLLABICS OJIBWAY NWO 18CC CANADIAN SYLLABICS NWOO 18CD CANADIAN SYLLABICS OJIBWAY NWOO 18CE CANADIAN SYLLABICS RWEE 18CF CANADIAN SYLLABICS RWI 18D0 CANADIAN SYLLABICS RWII 18D1 CANADIAN SYLLABICS RWO 18D2 CANADIAN SYLLABICS RWOO 18D3 CANADIAN SYLLABICS RWA @ Finals for Cree and Ojibway 18D4 CANADIAN SYLLABICS OJIBWAY P 18D5 CANADIAN SYLLABICS OJIBWAY T 18D6 CANADIAN SYLLABICS OJIBWAY K 18D7 CANADIAN SYLLABICS OJIBWAY C 18D8 CANADIAN SYLLABICS OJIBWAY M 18D9 CANADIAN SYLLABICS OJIBWAY N 18DA CANADIAN SYLLABICS OJIBWAY S 18DB CANADIAN SYLLABICS OJIBWAY SH 18DC CANADIAN SYLLABICS EASTERN W 18DD CANADIAN SYLLABICS WESTERN W 18DE CANADIAN SYLLABICS FINAL SMALL RING 18DF CANADIAN SYLLABICS FINAL RAISED DOT * Carrier (GLOTTAL STOP) @ Syllables for Beaver Dene, Hare Dene, and Chipewyan Dene 18E0 CANADIAN SYLLABICS R-CREE RWE * Beaver Dene (LYE) 18E1 CANADIAN SYLLABICS WEST-CREE LOO * Chipewyan Dene (LU) 18E2 CANADIAN SYLLABICS WEST-CREE LAA * Beaver Dene (LAI) 18E3 CANADIAN SYLLABICS THWE * Beaver Dene (TYE) 18E4 CANADIAN SYLLABICS THWA * Beaver Dene (TYA) 18E5 CANADIAN SYLLABICS TTHWE * Beaver Dene (HYE) 18E6 CANADIAN SYLLABICS TTHOO * Chipewyan Dene (TTHU) 18E7 CANADIAN SYLLABICS TTHAA * Beaver Dene (HAI) 18E8 CANADIAN SYLLABICS TLHWE * Beaver Dene (TLYE) 18E9 CANADIAN SYLLABICS TLHOO * Chipewyan Dene (TLU) 18EA CANADIAN SYLLABICS SAYISI SHWE * Beaver Dene (ZYE) 18EB CANADIAN SYLLABICS SAYISI SHOO * Chipewyan Dene (SHU) 18EC CANADIAN SYLLABICS SAYISI HOO * Chipewyan Dene (GU) 18ED CANADIAN SYLLABICS CARRIER GWU * Beaver Dene (CHYE) 18EE CANADIAN SYLLABICS CARRIER DENE GEE * Chipewyan Dene (CHU) 18EF CANADIAN SYLLABICS CARRIER GAA * Beaver Dene (CHAI) 18F0 CANADIAN SYLLABICS CARRIER GWA * Hare Dene (SHYA) 18F1 CANADIAN SYLLABICS SAYISI JUU * Chipewyan Dene (TSU) 18F2 CANADIAN SYLLABICS CARRIER JWA * Beaver Dene (TSYE) @ Finals for Dene and Carrier 18F3 CANADIAN SYLLABICS BEAVER DENE L 18F4 CANADIAN SYLLABICS BEAVER DENE R 18F5 CANADIAN SYLLABICS CARRIER DENTAL S @@ 1900 Limbu 194F @ Consonants 1900 LIMBU VOWEL-CARRIER LETTER 1901 LIMBU LETTER KA 1902 LIMBU LETTER KHA 1903 LIMBU LETTER GA 1904 LIMBU LETTER GHA 1905 LIMBU LETTER NGA 1906 LIMBU LETTER CA 1907 LIMBU LETTER CHA 1908 LIMBU LETTER JA 1909 LIMBU LETTER JHA 190A LIMBU LETTER YAN 190B LIMBU LETTER TA 190C LIMBU LETTER THA 190D LIMBU LETTER DA 190E LIMBU LETTER DHA 190F LIMBU LETTER NA 1910 LIMBU LETTER PA 1911 LIMBU LETTER PHA 1912 LIMBU LETTER BA 1913 LIMBU LETTER BHA 1914 LIMBU LETTER MA 1915 LIMBU LETTER YA 1916 LIMBU LETTER RA 1917 LIMBU LETTER LA 1918 LIMBU LETTER WA 1919 LIMBU LETTER SHA 191A LIMBU LETTER SSA 191B LIMBU LETTER SA 191C LIMBU LETTER HA 191D LIMBU LETTER GYAN = jnya 191E LIMBU LETTER TRA @ Dependent vowel signs 1920 LIMBU VOWEL SIGN A 1921 LIMBU VOWEL SIGN I 1922 LIMBU VOWEL SIGN U 1923 LIMBU VOWEL SIGN EE 1924 LIMBU VOWEL SIGN AI 1925 LIMBU VOWEL SIGN OO 1926 LIMBU VOWEL SIGN AU 1927 LIMBU VOWEL SIGN E 1928 LIMBU VOWEL SIGN O @ Subjoined consonants 1929 LIMBU SUBJOINED LETTER YA 192A LIMBU SUBJOINED LETTER RA 192B LIMBU SUBJOINED LETTER WA @ Final consonants 1930 LIMBU SMALL LETTER KA 1931 LIMBU SMALL LETTER NGA 1932 LIMBU SMALL LETTER ANUSVARA 1933 LIMBU SMALL LETTER TA 1934 LIMBU SMALL LETTER NA 1935 LIMBU SMALL LETTER PA 1936 LIMBU SMALL LETTER MA 1937 LIMBU SMALL LETTER RA 1938 LIMBU SMALL LETTER LA @ Various signs 1939 LIMBU SIGN MUKPHRENG 193A LIMBU SIGN KEMPHRENG 193B LIMBU SIGN SA-I 1940 LIMBU SIGN LOO 1944 LIMBU EXCLAMATION MARK 1945 LIMBU QUESTION MARK @ Digits 1946 LIMBU DIGIT ZERO 1947 LIMBU DIGIT ONE 1948 LIMBU DIGIT TWO 1949 LIMBU DIGIT THREE 194A LIMBU DIGIT FOUR 194B LIMBU DIGIT FIVE 194C LIMBU DIGIT SIX 194D LIMBU DIGIT SEVEN 194E LIMBU DIGIT EIGHT 194F LIMBU DIGIT NINE @@ 1950 Tai Le 197F @+ Note the similarly named but distinct New Tai Lue script encoded at 1980..19DF. @ Consonants 1950 TAI LE LETTER KA 1951 TAI LE LETTER XA 1952 TAI LE LETTER NGA 1953 TAI LE LETTER TSA 1954 TAI LE LETTER SA 1955 TAI LE LETTER YA 1956 TAI LE LETTER TA 1957 TAI LE LETTER THA 1958 TAI LE LETTER LA 1959 TAI LE LETTER PA 195A TAI LE LETTER PHA 195B TAI LE LETTER MA 195C TAI LE LETTER FA 195D TAI LE LETTER VA 195E TAI LE LETTER HA 195F TAI LE LETTER QA 1960 TAI LE LETTER KHA 1961 TAI LE LETTER TSHA 1962 TAI LE LETTER NA @ Vowels 1963 TAI LE LETTER A 1964 TAI LE LETTER I 1965 TAI LE LETTER EE 1966 TAI LE LETTER EH 1967 TAI LE LETTER U 1968 TAI LE LETTER OO 1969 TAI LE LETTER O 196A TAI LE LETTER UE 196B TAI LE LETTER E 196C TAI LE LETTER AUE 196D TAI LE LETTER AI @ Tone letters 1970 TAI LE LETTER TONE-2 1971 TAI LE LETTER TONE-3 1972 TAI LE LETTER TONE-4 1973 TAI LE LETTER TONE-5 1974 TAI LE LETTER TONE-6 @@ 1980 New Tai Lue 19DF @+ Note the similarly named but distinct Tai Le script encoded at 1950..197F. The New Tai Lue script is also known as Xishuangbanna Dai. @ Consonants 1980 NEW TAI LUE LETTER HIGH QA 1981 NEW TAI LUE LETTER LOW QA 1982 NEW TAI LUE LETTER HIGH KA 1983 NEW TAI LUE LETTER HIGH XA 1984 NEW TAI LUE LETTER HIGH NGA 1985 NEW TAI LUE LETTER LOW KA 1986 NEW TAI LUE LETTER LOW XA 1987 NEW TAI LUE LETTER LOW NGA 1988 NEW TAI LUE LETTER HIGH TSA 1989 NEW TAI LUE LETTER HIGH SA 198A NEW TAI LUE LETTER HIGH YA 198B NEW TAI LUE LETTER LOW TSA 198C NEW TAI LUE LETTER LOW SA 198D NEW TAI LUE LETTER LOW YA 198E NEW TAI LUE LETTER HIGH TA 198F NEW TAI LUE LETTER HIGH THA 1990 NEW TAI LUE LETTER HIGH NA 1991 NEW TAI LUE LETTER LOW TA 1992 NEW TAI LUE LETTER LOW THA 1993 NEW TAI LUE LETTER LOW NA 1994 NEW TAI LUE LETTER HIGH PA 1995 NEW TAI LUE LETTER HIGH PHA 1996 NEW TAI LUE LETTER HIGH MA 1997 NEW TAI LUE LETTER LOW PA 1998 NEW TAI LUE LETTER LOW PHA 1999 NEW TAI LUE LETTER LOW MA 199A NEW TAI LUE LETTER HIGH FA 199B NEW TAI LUE LETTER HIGH VA 199C NEW TAI LUE LETTER HIGH LA 199D NEW TAI LUE LETTER LOW FA 199E NEW TAI LUE LETTER LOW VA 199F NEW TAI LUE LETTER LOW LA 19A0 NEW TAI LUE LETTER HIGH HA 19A1 NEW TAI LUE LETTER HIGH DA 19A2 NEW TAI LUE LETTER HIGH BA 19A3 NEW TAI LUE LETTER LOW HA 19A4 NEW TAI LUE LETTER LOW DA 19A5 NEW TAI LUE LETTER LOW BA 19A6 NEW TAI LUE LETTER HIGH KVA 19A7 NEW TAI LUE LETTER HIGH XVA 19A8 NEW TAI LUE LETTER LOW KVA 19A9 NEW TAI LUE LETTER LOW XVA 19AA NEW TAI LUE LETTER HIGH SUA 19AB NEW TAI LUE LETTER LOW SUA @ Vowel signs 19B0 NEW TAI LUE VOWEL SIGN VOWEL SHORTENER 19B1 NEW TAI LUE VOWEL SIGN AA 19B2 NEW TAI LUE VOWEL SIGN II 19B3 NEW TAI LUE VOWEL SIGN U 19B4 NEW TAI LUE VOWEL SIGN UU 19B5 NEW TAI LUE VOWEL SIGN E 19B6 NEW TAI LUE VOWEL SIGN AE 19B7 NEW TAI LUE VOWEL SIGN O 19B8 NEW TAI LUE VOWEL SIGN OA 19B9 NEW TAI LUE VOWEL SIGN UE 19BA NEW TAI LUE VOWEL SIGN AY 19BB NEW TAI LUE VOWEL SIGN AAY 19BC NEW TAI LUE VOWEL SIGN UY 19BD NEW TAI LUE VOWEL SIGN OY 19BE NEW TAI LUE VOWEL SIGN OAY 19BF NEW TAI LUE VOWEL SIGN UEY 19C0 NEW TAI LUE VOWEL SIGN IY @ Final consonants 19C1 NEW TAI LUE LETTER FINAL V 19C2 NEW TAI LUE LETTER FINAL NG 19C3 NEW TAI LUE LETTER FINAL N 19C4 NEW TAI LUE LETTER FINAL M 19C5 NEW TAI LUE LETTER FINAL K 19C6 NEW TAI LUE LETTER FINAL D 19C7 NEW TAI LUE LETTER FINAL B @ Tone marks 19C8 NEW TAI LUE TONE MARK-1 19C9 NEW TAI LUE TONE MARK-2 @ Digits 19D0 NEW TAI LUE DIGIT ZERO 19D1 NEW TAI LUE DIGIT ONE 19D2 NEW TAI LUE DIGIT TWO 19D3 NEW TAI LUE DIGIT THREE 19D4 NEW TAI LUE DIGIT FOUR 19D5 NEW TAI LUE DIGIT FIVE 19D6 NEW TAI LUE DIGIT SIX 19D7 NEW TAI LUE DIGIT SEVEN 19D8 NEW TAI LUE DIGIT EIGHT 19D9 NEW TAI LUE DIGIT NINE 19DA NEW TAI LUE THAM DIGIT ONE @ Various signs 19DE NEW TAI LUE SIGN LAE * conjunction: and 19DF NEW TAI LUE SIGN LAEV * perfective @@ 19E0 Khmer Symbols 19FF @ Lunar date symbols 19E0 KHMER SYMBOL PATHAMASAT * represents the first Ashadha (eighth month of the lunar calendar) @+ The following fifteen characters represent the first through the fifteenth waxing days, respectively. 19E1 KHMER SYMBOL MUOY KOET 19E2 KHMER SYMBOL PII KOET 19E3 KHMER SYMBOL BEI KOET 19E4 KHMER SYMBOL BUON KOET 19E5 KHMER SYMBOL PRAM KOET 19E6 KHMER SYMBOL PRAM-MUOY KOET 19E7 KHMER SYMBOL PRAM-PII KOET 19E8 KHMER SYMBOL PRAM-BEI KOET 19E9 KHMER SYMBOL PRAM-BUON KOET 19EA KHMER SYMBOL DAP KOET 19EB KHMER SYMBOL DAP-MUOY KOET 19EC KHMER SYMBOL DAP-PII KOET 19ED KHMER SYMBOL DAP-BEI KOET 19EE KHMER SYMBOL DAP-BUON KOET 19EF KHMER SYMBOL DAP-PRAM KOET 19F0 KHMER SYMBOL TUTEYASAT * represents the second Ashadha in the lunar calendar during the Adhikameas leap year @+ The following fifteen characters represent the first through the fifteenth waning days, respectively. 19F1 KHMER SYMBOL MUOY ROC 19F2 KHMER SYMBOL PII ROC 19F3 KHMER SYMBOL BEI ROC 19F4 KHMER SYMBOL BUON ROC 19F5 KHMER SYMBOL PRAM ROC 19F6 KHMER SYMBOL PRAM-MUOY ROC 19F7 KHMER SYMBOL PRAM-PII ROC 19F8 KHMER SYMBOL PRAM-BEI ROC 19F9 KHMER SYMBOL PRAM-BUON ROC 19FA KHMER SYMBOL DAP ROC 19FB KHMER SYMBOL DAP-MUOY ROC 19FC KHMER SYMBOL DAP-PII ROC 19FD KHMER SYMBOL DAP-BEI ROC 19FE KHMER SYMBOL DAP-BUON ROC 19FF KHMER SYMBOL DAP-PRAM ROC @@ 1A00 Buginese 1A1F @+ This script is also known as Lontara. @ Consonants 1A00 BUGINESE LETTER KA 1A01 BUGINESE LETTER GA 1A02 BUGINESE LETTER NGA 1A03 BUGINESE LETTER NGKA 1A04 BUGINESE LETTER PA 1A05 BUGINESE LETTER BA 1A06 BUGINESE LETTER MA 1A07 BUGINESE LETTER MPA 1A08 BUGINESE LETTER TA 1A09 BUGINESE LETTER DA 1A0A BUGINESE LETTER NA 1A0B BUGINESE LETTER NRA 1A0C BUGINESE LETTER CA 1A0D BUGINESE LETTER JA 1A0E BUGINESE LETTER NYA 1A0F BUGINESE LETTER NYCA 1A10 BUGINESE LETTER YA 1A11 BUGINESE LETTER RA 1A12 BUGINESE LETTER LA 1A13 BUGINESE LETTER VA 1A14 BUGINESE LETTER SA 1A15 BUGINESE LETTER A 1A16 BUGINESE LETTER HA @ Vowels 1A17 BUGINESE VOWEL SIGN I 1A18 BUGINESE VOWEL SIGN U 1A19 BUGINESE VOWEL SIGN E 1A1A BUGINESE VOWEL SIGN O 1A1B BUGINESE VOWEL SIGN AE @ Various signs 1A1E BUGINESE PALLAWA 1A1F BUGINESE END OF SECTION @@ 1A20 Tai Tham 1AAF @+ The Tai Tham script is also known as Lanna as well as Old Tai Lue. It is used for the Khuen, Northern Thai, and Tai Lue languages. The glyphs shown in the code chart are in Khuen and Tai Lue style. @ Consonants 1A20 TAI THAM LETTER HIGH KA 1A21 TAI THAM LETTER HIGH KHA 1A22 TAI THAM LETTER HIGH KXA 1A23 TAI THAM LETTER LOW KA 1A24 TAI THAM LETTER LOW KXA 1A25 TAI THAM LETTER LOW KHA 1A26 TAI THAM LETTER NGA 1A27 TAI THAM LETTER HIGH CA 1A28 TAI THAM LETTER HIGH CHA 1A29 TAI THAM LETTER LOW CA 1A2A TAI THAM LETTER LOW SA 1A2B TAI THAM LETTER LOW CHA 1A2C TAI THAM LETTER NYA 1A2D TAI THAM LETTER RATA 1A2E TAI THAM LETTER HIGH RATHA * an alternative glyph with the upper part shaped like 1A33 is used in Thailand and Laos * contrast the sequence 1A2D 1A5B 1A2F TAI THAM LETTER DA 1A30 TAI THAM LETTER LOW RATHA 1A31 TAI THAM LETTER RANA 1A32 TAI THAM LETTER HIGH TA 1A33 TAI THAM LETTER HIGH THA 1A34 TAI THAM LETTER LOW TA 1A35 TAI THAM LETTER LOW THA 1A36 TAI THAM LETTER NA 1A37 TAI THAM LETTER BA 1A38 TAI THAM LETTER HIGH PA 1A39 TAI THAM LETTER HIGH PHA 1A3A TAI THAM LETTER HIGH FA 1A3B TAI THAM LETTER LOW PA 1A3C TAI THAM LETTER LOW FA 1A3D TAI THAM LETTER LOW PHA 1A3E TAI THAM LETTER MA 1A3F TAI THAM LETTER LOW YA 1A40 TAI THAM LETTER HIGH YA 1A41 TAI THAM LETTER RA 1A42 TAI THAM LETTER RUE 1A43 TAI THAM LETTER LA 1A44 TAI THAM LETTER LUE 1A45 TAI THAM LETTER WA 1A46 TAI THAM LETTER HIGH SHA 1A47 TAI THAM LETTER HIGH SSA 1A48 TAI THAM LETTER HIGH SA 1A49 TAI THAM LETTER HIGH HA 1A4A TAI THAM LETTER LLA 1A4B TAI THAM LETTER A * indicates a glottal consonant 1A4C TAI THAM LETTER LOW HA @ Independent vowels 1A4D TAI THAM LETTER I 1A4E TAI THAM LETTER II 1A4F TAI THAM LETTER U 1A50 TAI THAM LETTER UU 1A51 TAI THAM LETTER EE 1A52 TAI THAM LETTER OO @ Consonants 1A53 TAI THAM LETTER LAE 1A54 TAI THAM LETTER GREAT SA @ Consonant signs 1A55 TAI THAM CONSONANT SIGN MEDIAL RA 1A56 TAI THAM CONSONANT SIGN MEDIAL LA 1A57 TAI THAM CONSONANT SIGN LA TANG LAI 1A58 TAI THAM SIGN MAI KANG LAI 1A59 TAI THAM CONSONANT SIGN FINAL NGA 1A5A TAI THAM CONSONANT SIGN LOW PA 1A5B TAI THAM CONSONANT SIGN HIGH RATHA OR LOW PA 1A5C TAI THAM CONSONANT SIGN MA 1A5D TAI THAM CONSONANT SIGN BA 1A5E TAI THAM CONSONANT SIGN SA @ Sign 1A60 TAI THAM SIGN SAKOT @ Dependent vowel signs 1A61 TAI THAM VOWEL SIGN A 1A62 TAI THAM VOWEL SIGN MAI SAT 1A63 TAI THAM VOWEL SIGN AA 1A64 TAI THAM VOWEL SIGN TALL AA 1A65 TAI THAM VOWEL SIGN I 1A66 TAI THAM VOWEL SIGN II 1A67 TAI THAM VOWEL SIGN UE 1A68 TAI THAM VOWEL SIGN UUE 1A69 TAI THAM VOWEL SIGN U 1A6A TAI THAM VOWEL SIGN UU 1A6B TAI THAM VOWEL SIGN O 1A6C TAI THAM VOWEL SIGN OA BELOW 1A6D TAI THAM VOWEL SIGN OY 1A6E TAI THAM VOWEL SIGN E 1A6F TAI THAM VOWEL SIGN AE 1A70 TAI THAM VOWEL SIGN OO 1A71 TAI THAM VOWEL SIGN AI 1A72 TAI THAM VOWEL SIGN THAM AI 1A73 TAI THAM VOWEL SIGN OA ABOVE 1A74 TAI THAM SIGN MAI KANG @ Tone marks 1A75 TAI THAM SIGN TONE-1 1A76 TAI THAM SIGN TONE-2 1A77 TAI THAM SIGN KHUEN TONE-3 1A78 TAI THAM SIGN KHUEN TONE-4 1A79 TAI THAM SIGN KHUEN TONE-5 @ Other marks 1A7A TAI THAM SIGN RA HAAM * indicates following character(s) are not sounded 1A7B TAI THAM SIGN MAI SAM 1A7C TAI THAM SIGN KHUEN-LUE KARAN @ Cryptogrammic mark 1A7F TAI THAM COMBINING CRYPTOGRAMMIC DOT @ Hora digits 1A80 TAI THAM HORA DIGIT ZERO 1A81 TAI THAM HORA DIGIT ONE 1A82 TAI THAM HORA DIGIT TWO 1A83 TAI THAM HORA DIGIT THREE 1A84 TAI THAM HORA DIGIT FOUR 1A85 TAI THAM HORA DIGIT FIVE 1A86 TAI THAM HORA DIGIT SIX 1A87 TAI THAM HORA DIGIT SEVEN 1A88 TAI THAM HORA DIGIT EIGHT 1A89 TAI THAM HORA DIGIT NINE @ Tham digits 1A90 TAI THAM THAM DIGIT ZERO 1A91 TAI THAM THAM DIGIT ONE 1A92 TAI THAM THAM DIGIT TWO 1A93 TAI THAM THAM DIGIT THREE 1A94 TAI THAM THAM DIGIT FOUR 1A95 TAI THAM THAM DIGIT FIVE 1A96 TAI THAM THAM DIGIT SIX 1A97 TAI THAM THAM DIGIT SEVEN 1A98 TAI THAM THAM DIGIT EIGHT 1A99 TAI THAM THAM DIGIT NINE @ Logographs 1AA0 TAI THAM SIGN WIANG * logograph for city 1AA1 TAI THAM SIGN WIANGWAAK * logograph for village 1AA2 TAI THAM SIGN SAWAN * logograph for heaven @ Punctuation @+ These characters are used as dingbats and section starters. 1AA3 TAI THAM SIGN KEOW = courtyard 1AA4 TAI THAM SIGN HOY = oyster 1AA5 TAI THAM SIGN DOKMAI = flower x (flower punctuation mark - 2055) 1AA6 TAI THAM SIGN REVERSED ROTATED RANA @ Sign 1AA7 TAI THAM SIGN MAI YAMOK x (thai character maiyamok - 0E46) @ Punctuation 1AA8 TAI THAM SIGN KAAN * danda 1AA9 TAI THAM SIGN KAANKUU * double danda 1AAA TAI THAM SIGN SATKAAN 1AAB TAI THAM SIGN SATKAANKUU x (thai character angkhankhu - 0E5A) 1AAC TAI THAM SIGN HANG * used in combinations with other punctuation marks at ends of sections 1AAD TAI THAM SIGN CAANG @@ 1AB0 Combining Diacritical Marks Extended 1AFF @ Used for German dialectology 1AB0 COMBINING DOUBLED CIRCUMFLEX ACCENT 1AB1 COMBINING DIAERESIS-RING 1AB2 COMBINING INFINITY 1AB3 COMBINING DOWNWARDS ARROW 1AB4 COMBINING TRIPLE DOT 1AB5 COMBINING X-X BELOW 1AB6 COMBINING WIGGLY LINE BELOW 1AB7 COMBINING OPEN MARK BELOW x (combining ogonek - 0328) x (combining greek ypogegrammeni - 0345) 1AB8 COMBINING DOUBLE OPEN MARK BELOW 1AB9 COMBINING LIGHT CENTRALIZATION STROKE BELOW 1ABA COMBINING STRONG CENTRALIZATION STROKE BELOW 1ABB COMBINING PARENTHESES ABOVE * intended to surround a diacritic above 1ABC COMBINING DOUBLE PARENTHESES ABOVE 1ABD COMBINING PARENTHESES BELOW * intended to surround a diacritic below 1ABE COMBINING PARENTHESES OVERLAY * intended to surround a base letter * exact placement is font dependent @@ 1B00 Balinese 1B7F @ Various signs 1B00 BALINESE SIGN ULU RICEM = ardhacandra 1B01 BALINESE SIGN ULU CANDRA = candrabindu 1B02 BALINESE SIGN CECEK = anusvara 1B03 BALINESE SIGN SURANG = repha 1B04 BALINESE SIGN BISAH = visarga @ Independent vowels 1B05 BALINESE LETTER AKARA = a 1B06 BALINESE LETTER AKARA TEDUNG = aa : 1B05 1B35 1B07 BALINESE LETTER IKARA = i 1B08 BALINESE LETTER IKARA TEDUNG = ii : 1B07 1B35 1B09 BALINESE LETTER UKARA = u 1B0A BALINESE LETTER UKARA TEDUNG = uu : 1B09 1B35 1B0B BALINESE LETTER RA REPA = vocalic r 1B0C BALINESE LETTER RA REPA TEDUNG = vocalic rr : 1B0B 1B35 1B0D BALINESE LETTER LA LENGA = vocalic l 1B0E BALINESE LETTER LA LENGA TEDUNG = vocalic ll : 1B0D 1B35 1B0F BALINESE LETTER EKARA = e 1B10 BALINESE LETTER AIKARA = ai 1B11 BALINESE LETTER OKARA = o 1B12 BALINESE LETTER OKARA TEDUNG = au : 1B11 1B35 @ Consonants 1B13 BALINESE LETTER KA 1B14 BALINESE LETTER KA MAHAPRANA = kha 1B15 BALINESE LETTER GA 1B16 BALINESE LETTER GA GORA = gha 1B17 BALINESE LETTER NGA 1B18 BALINESE LETTER CA 1B19 BALINESE LETTER CA LACA = cha 1B1A BALINESE LETTER JA 1B1B BALINESE LETTER JA JERA = jha 1B1C BALINESE LETTER NYA 1B1D BALINESE LETTER TA LATIK = tta 1B1E BALINESE LETTER TA MURDA MAHAPRANA = ttha 1B1F BALINESE LETTER DA MURDA ALPAPRANA = dda 1B20 BALINESE LETTER DA MURDA MAHAPRANA = ddha 1B21 BALINESE LETTER NA RAMBAT = nna 1B22 BALINESE LETTER TA 1B23 BALINESE LETTER TA TAWA = tha 1B24 BALINESE LETTER DA 1B25 BALINESE LETTER DA MADU = dha 1B26 BALINESE LETTER NA 1B27 BALINESE LETTER PA 1B28 BALINESE LETTER PA KAPAL = pha 1B29 BALINESE LETTER BA 1B2A BALINESE LETTER BA KEMBANG = bha 1B2B BALINESE LETTER MA 1B2C BALINESE LETTER YA 1B2D BALINESE LETTER RA 1B2E BALINESE LETTER LA 1B2F BALINESE LETTER WA 1B30 BALINESE LETTER SA SAGA = sha 1B31 BALINESE LETTER SA SAPA = ssa 1B32 BALINESE LETTER SA 1B33 BALINESE LETTER HA @ Sign 1B34 BALINESE SIGN REREKAN = nukta @ Dependent vowel signs 1B35 BALINESE VOWEL SIGN TEDUNG = aa 1B36 BALINESE VOWEL SIGN ULU = i 1B37 BALINESE VOWEL SIGN ULU SARI = ii 1B38 BALINESE VOWEL SIGN SUKU = u 1B39 BALINESE VOWEL SIGN SUKU ILUT = uu 1B3A BALINESE VOWEL SIGN RA REPA = vocalic r 1B3B BALINESE VOWEL SIGN RA REPA TEDUNG = vocalic rr : 1B3A 1B35 1B3C BALINESE VOWEL SIGN LA LENGA = vocalic l 1B3D BALINESE VOWEL SIGN LA LENGA TEDUNG = vocalic ll : 1B3C 1B35 1B3E BALINESE VOWEL SIGN TALING = e 1B3F BALINESE VOWEL SIGN TALING REPA = ai 1B40 BALINESE VOWEL SIGN TALING TEDUNG = o : 1B3E 1B35 1B41 BALINESE VOWEL SIGN TALING REPA TEDUNG = au : 1B3F 1B35 1B42 BALINESE VOWEL SIGN PEPET = ae 1B43 BALINESE VOWEL SIGN PEPET TEDUNG = oe : 1B42 1B35 @ Sign 1B44 BALINESE ADEG ADEG = virama @ Additional consonants 1B45 BALINESE LETTER KAF SASAK 1B46 BALINESE LETTER KHOT SASAK 1B47 BALINESE LETTER TZIR SASAK 1B48 BALINESE LETTER EF SASAK 1B49 BALINESE LETTER VE SASAK 1B4A BALINESE LETTER ZAL SASAK 1B4B BALINESE LETTER ASYURA SASAK @ Digits 1B50 BALINESE DIGIT ZERO 1B51 BALINESE DIGIT ONE 1B52 BALINESE DIGIT TWO 1B53 BALINESE DIGIT THREE 1B54 BALINESE DIGIT FOUR 1B55 BALINESE DIGIT FIVE 1B56 BALINESE DIGIT SIX 1B57 BALINESE DIGIT SEVEN 1B58 BALINESE DIGIT EIGHT 1B59 BALINESE DIGIT NINE @ Punctuation 1B5A BALINESE PANTI = section 1B5B BALINESE PAMADA = honorific section 1B5C BALINESE WINDU = punctuation ring 1B5D BALINESE CARIK PAMUNGKAH = colon 1B5E BALINESE CARIK SIKI = danda x (devanagari danda - 0964) 1B5F BALINESE CARIK PAREREN = double danda x (devanagari double danda - 0965) 1B60 BALINESE PAMENENG = line-breaking hyphen @ Musical symbols for notes 1B61 BALINESE MUSICAL SYMBOL DONG 1B62 BALINESE MUSICAL SYMBOL DENG 1B63 BALINESE MUSICAL SYMBOL DUNG 1B64 BALINESE MUSICAL SYMBOL DANG 1B65 BALINESE MUSICAL SYMBOL DANG SURANG 1B66 BALINESE MUSICAL SYMBOL DING 1B67 BALINESE MUSICAL SYMBOL DAENG 1B68 BALINESE MUSICAL SYMBOL DEUNG 1B69 BALINESE MUSICAL SYMBOL DAING 1B6A BALINESE MUSICAL SYMBOL DANG GEDE @ Diacritical marks for musical symbols 1B6B BALINESE MUSICAL SYMBOL COMBINING TEGEH 1B6C BALINESE MUSICAL SYMBOL COMBINING ENDEP 1B6D BALINESE MUSICAL SYMBOL COMBINING KEMPUL 1B6E BALINESE MUSICAL SYMBOL COMBINING KEMPLI 1B6F BALINESE MUSICAL SYMBOL COMBINING JEGOGAN 1B70 BALINESE MUSICAL SYMBOL COMBINING KEMPUL WITH JEGOGAN 1B71 BALINESE MUSICAL SYMBOL COMBINING KEMPLI WITH JEGOGAN 1B72 BALINESE MUSICAL SYMBOL COMBINING BENDE 1B73 BALINESE MUSICAL SYMBOL COMBINING GONG @ Musical symbols 1B74 BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG 1B75 BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DAG 1B76 BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TUK 1B77 BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TAK 1B78 BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PANG 1B79 BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PUNG 1B7A BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLAK 1B7B BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLUK 1B7C BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING @@ 1B80 Sundanese 1BBF @ Various signs 1B80 SUNDANESE SIGN PANYECEK = anusvara 1B81 SUNDANESE SIGN PANGLAYAR = repha 1B82 SUNDANESE SIGN PANGWISAD = visarga @ Vowels 1B83 SUNDANESE LETTER A 1B84 SUNDANESE LETTER I 1B85 SUNDANESE LETTER U 1B86 SUNDANESE LETTER AE 1B87 SUNDANESE LETTER O 1B88 SUNDANESE LETTER E 1B89 SUNDANESE LETTER EU @ Consonants 1B8A SUNDANESE LETTER KA 1B8B SUNDANESE LETTER QA 1B8C SUNDANESE LETTER GA 1B8D SUNDANESE LETTER NGA 1B8E SUNDANESE LETTER CA 1B8F SUNDANESE LETTER JA 1B90 SUNDANESE LETTER ZA 1B91 SUNDANESE LETTER NYA 1B92 SUNDANESE LETTER TA 1B93 SUNDANESE LETTER DA 1B94 SUNDANESE LETTER NA 1B95 SUNDANESE LETTER PA 1B96 SUNDANESE LETTER FA 1B97 SUNDANESE LETTER VA 1B98 SUNDANESE LETTER BA 1B99 SUNDANESE LETTER MA 1B9A SUNDANESE LETTER YA 1B9B SUNDANESE LETTER RA 1B9C SUNDANESE LETTER LA 1B9D SUNDANESE LETTER WA 1B9E SUNDANESE LETTER SA 1B9F SUNDANESE LETTER XA 1BA0 SUNDANESE LETTER HA @ Consonant signs 1BA1 SUNDANESE CONSONANT SIGN PAMINGKAL = subjoined ya 1BA2 SUNDANESE CONSONANT SIGN PANYAKRA = subjoined ra 1BA3 SUNDANESE CONSONANT SIGN PANYIKU = subjoined la @ Vowel signs 1BA4 SUNDANESE VOWEL SIGN PANGHULU = i 1BA5 SUNDANESE VOWEL SIGN PANYUKU = u 1BA6 SUNDANESE VOWEL SIGN PANAELAENG = ae 1BA7 SUNDANESE VOWEL SIGN PANOLONG = o 1BA8 SUNDANESE VOWEL SIGN PAMEPET = e 1BA9 SUNDANESE VOWEL SIGN PANEULEUNG = eu @ Viramas 1BAA SUNDANESE SIGN PAMAAEH = virama * does not form conjuncts 1BAB SUNDANESE SIGN VIRAMA * forms conjuncts in older orthography @ Consonant signs 1BAC SUNDANESE CONSONANT SIGN PASANGAN MA = subjoined ma 1BAD SUNDANESE CONSONANT SIGN PASANGAN WA = subjoined wa @ Additional consonants 1BAE SUNDANESE LETTER KHA 1BAF SUNDANESE LETTER SYA @ Digits 1BB0 SUNDANESE DIGIT ZERO 1BB1 SUNDANESE DIGIT ONE 1BB2 SUNDANESE DIGIT TWO 1BB3 SUNDANESE DIGIT THREE 1BB4 SUNDANESE DIGIT FOUR 1BB5 SUNDANESE DIGIT FIVE 1BB6 SUNDANESE DIGIT SIX 1BB7 SUNDANESE DIGIT SEVEN 1BB8 SUNDANESE DIGIT EIGHT 1BB9 SUNDANESE DIGIT NINE @ Sign 1BBA SUNDANESE AVAGRAHA @ Historic letters 1BBB SUNDANESE LETTER REU * vocalic r 1BBC SUNDANESE LETTER LEU * vocalic l 1BBD SUNDANESE LETTER BHA 1BBE SUNDANESE LETTER FINAL K 1BBF SUNDANESE LETTER FINAL M @@ 1BC0 Batak 1BFF @ Letters @+ Annotations for letters indicate different usage among the various alphabets sharing the Batak script. 1BC0 BATAK LETTER A * letter a or ha for Karo and Pakpak 1BC1 BATAK LETTER SIMALUNGUN A 1BC2 BATAK LETTER HA * Toba letter ha or ka * also known as letter ka for Karo and Pakpak 1BC3 BATAK LETTER SIMALUNGUN HA * also known as Simalungun letter ka 1BC4 BATAK LETTER MANDAILING HA 1BC5 BATAK LETTER BA 1BC6 BATAK LETTER KARO BA 1BC7 BATAK LETTER PA 1BC8 BATAK LETTER SIMALUNGUN PA 1BC9 BATAK LETTER NA 1BCA BATAK LETTER MANDAILING NA 1BCB BATAK LETTER WA * Toba letter wa can be represented by either 1BCB or 1BCD 1BCC BATAK LETTER SIMALUNGUN WA 1BCD BATAK LETTER PAKPAK WA 1BCE BATAK LETTER GA 1BCF BATAK LETTER SIMALUNGUN GA 1BD0 BATAK LETTER JA 1BD1 BATAK LETTER DA 1BD2 BATAK LETTER RA 1BD3 BATAK LETTER SIMALUNGUN RA 1BD4 BATAK LETTER MA 1BD5 BATAK LETTER SIMALUNGUN MA 1BD6 BATAK LETTER SOUTHERN TA * Toba letter ta can be represented by either 1BD6 or 1BD7 1BD7 BATAK LETTER NORTHERN TA 1BD8 BATAK LETTER SA * Pakpak letter sa or ca 1BD9 BATAK LETTER SIMALUNGUN SA 1BDA BATAK LETTER MANDAILING SA 1BDB BATAK LETTER YA 1BDC BATAK LETTER SIMALUNGUN YA 1BDD BATAK LETTER NGA 1BDE BATAK LETTER LA 1BDF BATAK LETTER SIMALUNGUN LA 1BE0 BATAK LETTER NYA * Karo letter ca can be represented by either 1BE0 or 1BE1 1BE1 BATAK LETTER CA 1BE2 BATAK LETTER NDA 1BE3 BATAK LETTER MBA 1BE4 BATAK LETTER I 1BE5 BATAK LETTER U @ Sign 1BE6 BATAK SIGN TOMPI @ Dependent vowel signs 1BE7 BATAK VOWEL SIGN E = kebereten 1BE8 BATAK VOWEL SIGN PAKPAK E = ketolongen 1BE9 BATAK VOWEL SIGN EE = talinga 1BEA BATAK VOWEL SIGN I = ulua 1BEB BATAK VOWEL SIGN KARO I = haluan 1BEC BATAK VOWEL SIGN O = siala ulu 1BED BATAK VOWEL SIGN KARO O = hatulungan 1BEE BATAK VOWEL SIGN U = boruta 1BEF BATAK VOWEL SIGN U FOR SIMALUNGUN SA = haboritan for simalungun sa @ Dependent consonant signs 1BF0 BATAK CONSONANT SIGN NG = amisara 1BF1 BATAK CONSONANT SIGN H = hajoringan @ Signs 1BF2 BATAK PANGOLAT = virama * cannot follow a vowel sign 1BF3 BATAK PANONGONAN = virama @ Punctuation 1BFC BATAK SYMBOL BINDU NA METEK 1BFD BATAK SYMBOL BINDU PINARBORAS 1BFE BATAK SYMBOL BINDU JUDUL 1BFF BATAK SYMBOL BINDU PANGOLAT @@ 1C00 Lepcha 1C4F @ Consonants 1C00 LEPCHA LETTER KA 1C01 LEPCHA LETTER KLA 1C02 LEPCHA LETTER KHA 1C03 LEPCHA LETTER GA 1C04 LEPCHA LETTER GLA 1C05 LEPCHA LETTER NGA 1C06 LEPCHA LETTER CA 1C07 LEPCHA LETTER CHA 1C08 LEPCHA LETTER JA 1C09 LEPCHA LETTER NYA 1C0A LEPCHA LETTER TA 1C0B LEPCHA LETTER THA 1C0C LEPCHA LETTER DA 1C0D LEPCHA LETTER NA 1C0E LEPCHA LETTER PA 1C0F LEPCHA LETTER PLA 1C10 LEPCHA LETTER PHA 1C11 LEPCHA LETTER FA 1C12 LEPCHA LETTER FLA 1C13 LEPCHA LETTER BA 1C14 LEPCHA LETTER BLA 1C15 LEPCHA LETTER MA 1C16 LEPCHA LETTER MLA 1C17 LEPCHA LETTER TSA 1C18 LEPCHA LETTER TSHA 1C19 LEPCHA LETTER DZA 1C1A LEPCHA LETTER YA 1C1B LEPCHA LETTER RA 1C1C LEPCHA LETTER LA 1C1D LEPCHA LETTER HA 1C1E LEPCHA LETTER HLA 1C1F LEPCHA LETTER VA 1C20 LEPCHA LETTER SA 1C21 LEPCHA LETTER SHA 1C22 LEPCHA LETTER WA 1C23 LEPCHA LETTER A @ Subjoined consonants 1C24 LEPCHA SUBJOINED LETTER YA 1C25 LEPCHA SUBJOINED LETTER RA @ Dependent vowels 1C26 LEPCHA VOWEL SIGN AA 1C27 LEPCHA VOWEL SIGN I 1C28 LEPCHA VOWEL SIGN O 1C29 LEPCHA VOWEL SIGN OO 1C2A LEPCHA VOWEL SIGN U 1C2B LEPCHA VOWEL SIGN UU 1C2C LEPCHA VOWEL SIGN E @ Consonant signs 1C2D LEPCHA CONSONANT SIGN K 1C2E LEPCHA CONSONANT SIGN M 1C2F LEPCHA CONSONANT SIGN L 1C30 LEPCHA CONSONANT SIGN N 1C31 LEPCHA CONSONANT SIGN P 1C32 LEPCHA CONSONANT SIGN R 1C33 LEPCHA CONSONANT SIGN T 1C34 LEPCHA CONSONANT SIGN NYIN-DO 1C35 LEPCHA CONSONANT SIGN KANG @ Various signs 1C36 LEPCHA SIGN RAN 1C37 LEPCHA SIGN NUKTA @ Punctuation 1C3B LEPCHA PUNCTUATION TA-ROL 1C3C LEPCHA PUNCTUATION NYET THYOOM TA-ROL 1C3D LEPCHA PUNCTUATION CER-WA 1C3E LEPCHA PUNCTUATION TSHOOK CER-WA 1C3F LEPCHA PUNCTUATION TSHOOK @ Digits 1C40 LEPCHA DIGIT ZERO 1C41 LEPCHA DIGIT ONE 1C42 LEPCHA DIGIT TWO 1C43 LEPCHA DIGIT THREE 1C44 LEPCHA DIGIT FOUR 1C45 LEPCHA DIGIT FIVE 1C46 LEPCHA DIGIT SIX 1C47 LEPCHA DIGIT SEVEN 1C48 LEPCHA DIGIT EIGHT 1C49 LEPCHA DIGIT NINE @ Additional letters 1C4D LEPCHA LETTER TTA 1C4E LEPCHA LETTER TTHA 1C4F LEPCHA LETTER DDA @@ 1C50 Ol Chiki 1C7F @ Digits 1C50 OL CHIKI DIGIT ZERO 1C51 OL CHIKI DIGIT ONE 1C52 OL CHIKI DIGIT TWO 1C53 OL CHIKI DIGIT THREE 1C54 OL CHIKI DIGIT FOUR 1C55 OL CHIKI DIGIT FIVE 1C56 OL CHIKI DIGIT SIX 1C57 OL CHIKI DIGIT SEVEN 1C58 OL CHIKI DIGIT EIGHT 1C59 OL CHIKI DIGIT NINE @ Letters 1C5A OL CHIKI LETTER LA 1C5B OL CHIKI LETTER AT 1C5C OL CHIKI LETTER AG 1C5D OL CHIKI LETTER ANG 1C5E OL CHIKI LETTER AL 1C5F OL CHIKI LETTER LAA 1C60 OL CHIKI LETTER AAK 1C61 OL CHIKI LETTER AAJ 1C62 OL CHIKI LETTER AAM 1C63 OL CHIKI LETTER AAW 1C64 OL CHIKI LETTER LI 1C65 OL CHIKI LETTER IS 1C66 OL CHIKI LETTER IH 1C67 OL CHIKI LETTER INY 1C68 OL CHIKI LETTER IR 1C69 OL CHIKI LETTER LU 1C6A OL CHIKI LETTER UC 1C6B OL CHIKI LETTER UD 1C6C OL CHIKI LETTER UNN 1C6D OL CHIKI LETTER UY 1C6E OL CHIKI LETTER LE 1C6F OL CHIKI LETTER EP 1C70 OL CHIKI LETTER EDD 1C71 OL CHIKI LETTER EN 1C72 OL CHIKI LETTER ERR 1C73 OL CHIKI LETTER LO 1C74 OL CHIKI LETTER OTT 1C75 OL CHIKI LETTER OB 1C76 OL CHIKI LETTER OV 1C77 OL CHIKI LETTER OH @ Modifier letters 1C78 OL CHIKI MU TTUDDAG * nasalization mark 1C79 OL CHIKI GAAHLAA TTUDDAAG * vowel modifier 1C7A OL CHIKI MU-GAAHLAA TTUDDAAG 1C7B OL CHIKI RELAA * length mark 1C7C OL CHIKI PHAARKAA * glottal protector 1C7D OL CHIKI AHAD * deglottalizes consonants @ Punctuation 1C7E OL CHIKI PUNCTUATION MUCAAD 1C7F OL CHIKI PUNCTUATION DOUBLE MUCAAD @@ 1C80 Cyrillic Extended-C 1C8F @ Historic letter variants 1C80 CYRILLIC SMALL LETTER ROUNDED VE 1C81 CYRILLIC SMALL LETTER LONG-LEGGED DE 1C82 CYRILLIC SMALL LETTER NARROW O 1C83 CYRILLIC SMALL LETTER WIDE ES 1C84 CYRILLIC SMALL LETTER TALL TE 1C85 CYRILLIC SMALL LETTER THREE-LEGGED TE 1C86 CYRILLIC SMALL LETTER TALL HARD SIGN 1C87 CYRILLIC SMALL LETTER TALL YAT 1C88 CYRILLIC SMALL LETTER UNBLENDED UK @@ 1CC0 Sundanese Supplement 1CCF @ Punctuation 1CC0 SUNDANESE PUNCTUATION BINDU SURYA * sun 1CC1 SUNDANESE PUNCTUATION BINDU PANGLONG * half moon 1CC2 SUNDANESE PUNCTUATION BINDU PURNAMA * full moon 1CC3 SUNDANESE PUNCTUATION BINDU CAKRA * wheel 1CC4 SUNDANESE PUNCTUATION BINDU LEU SATANGA 1CC5 SUNDANESE PUNCTUATION BINDU KA SATANGA 1CC6 SUNDANESE PUNCTUATION BINDU DA SATANGA 1CC7 SUNDANESE PUNCTUATION BINDU BA SATANGA @@ 1CD0 Vedic Extensions 1CFF @ Tone marks for the Samaveda 1CD0 VEDIC TONE KARSHANA = vaidika saamasvara karshanna 1CD1 VEDIC TONE SHARA = vaidika svarita uurdhva shara 1CD2 VEDIC TONE PRENKHA * indicates vibrato = vaidika saamasvara prenkha @ Breathing mark for the Samaveda 1CD3 VEDIC SIGN NIHSHVASA = vaidika saamagaana yogakaala * separates sections between which a pause is disallowed @ Signs for Yajurvedic 1CD4 VEDIC SIGN YAJURVEDIC MIDLINE SVARITA * used predominantly in the Maitrayani Samhita and in some manuscripts of the Vajasaneyi Madhyandina Samhita 1CD5 VEDIC TONE YAJURVEDIC AGGRAVATED INDEPENDENT SVARITA = vaidika svarita adho nyubja 1CD6 VEDIC TONE YAJURVEDIC INDEPENDENT SVARITA = vaidika svarita adhah konna 1CD7 VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA = vaidika svarita adho vakra rekhaa 1CD8 VEDIC TONE CANDRA BELOW = vaidika svarita adho'rdha vakra 1CD9 VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA SCHROEDER = vaidika svarita adhah samyukta rekhaa 1CDA VEDIC TONE DOUBLE SVARITA = vaidika svarita uurdhva dvi rekhaa x (devanagari stress sign udatta - 0951) 1CDB VEDIC TONE TRIPLE SVARITA = vaidika svarita uurdhva tri rekhaa 1CDC VEDIC TONE KATHAKA ANUDATTA = vaidika svarita adho rekhaa x (devanagari stress sign anudatta - 0952) 1CDD VEDIC TONE DOT BELOW = vaidika svarita adho bindu @ Tone marks for the Satapathabrahmana 1CDE VEDIC TONE TWO DOTS BELOW = vaidika svarita adho dvi bindu 1CDF VEDIC TONE THREE DOTS BELOW = vaidika svarita adhas tri bindu @ Tone mark for the Rigveda 1CE0 VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA = vaidika uurdhva vakra rekhaa @ Tone mark for the Atharvaveda 1CE1 VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA = vaidika svarita dvi vakra khannda @ Diacritics for visarga 1CE2 VEDIC SIGN VISARGA SVARITA = vaidika madhyarekhaa 1CE3 VEDIC SIGN VISARGA UDATTA = vaidika visarga dakshinnatah uurdhvaga 1CE4 VEDIC SIGN REVERSED VISARGA UDATTA = vaidika visarga vaamatah uurdhvaga 1CE5 VEDIC SIGN VISARGA ANUDATTA = vaidika visarga vaamatah adhoga 1CE6 VEDIC SIGN REVERSED VISARGA ANUDATTA = vaidika visarga dakshinnatah adhoga 1CE7 VEDIC SIGN VISARGA UDATTA WITH TAIL = vaidika visarga dakshinnatah uurdhva vakra 1CE8 VEDIC SIGN VISARGA ANUDATTA WITH TAIL = vaidika visarga vaamatah adho vakra @ Marks of nasalization 1CE9 VEDIC SIGN ANUSVARA ANTARGOMUKHA = vaidika anusvaara antarmukha 1CEA VEDIC SIGN ANUSVARA BAHIRGOMUKHA = vaidika anusvaara naagaphanna 1CEB VEDIC SIGN ANUSVARA VAMAGOMUKHA = vaidika anusvaara vaamagomukha 1CEC VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL = vaidika anusvaara vaamagomukha sa-vakra 1CED VEDIC SIGN TIRYAK = vaidika tiryak 1CEE VEDIC SIGN HEXIFORM LONG ANUSVARA = vaidika anusvaara anugaamii 1CEF VEDIC SIGN LONG ANUSVARA = vaidika anusvaara dakshinnamukha 1CF0 VEDIC SIGN RTHANG LONG ANUSVARA = vaidika anusvaara ttha-sadrisha 1CF1 VEDIC SIGN ANUSVARA UBHAYATO MUKHA = vaidika anusvaara ubhayato mukha @ Ardhavisarga @+ Ardhavisarga denotes the sounds jihvamuliya and upadhmaniya (velar and bilabial voiceless fricatives) in Sanskrit. Its use is not limited to Vedic. 1CF2 VEDIC SIGN ARDHAVISARGA = vaidika jihvaamuuliiya upadhmaaniiya 1CF3 VEDIC SIGN ROTATED ARDHAVISARGA @ Sign for Yajurvedic 1CF4 VEDIC TONE CANDRA ABOVE @ Signs 1CF5 VEDIC SIGN JIHVAMULIYA * marks a velar fricative occurring only before unvoiced velar stops x (kannada sign jihvamuliya - 0CF1) x (tibetan sign lce tsa can - 0F88) 1CF6 VEDIC SIGN UPADHMANIYA * marks a bilabial fricative occurring only before unvoiced labial stops x (kannada sign upadhmaniya - 0CF2) x (tibetan sign mchu can - 0F89) @ Signs for Jaiminiya Sama Veda 1CF8 VEDIC TONE RING ABOVE 1CF9 VEDIC TONE DOUBLE RING ABOVE @@ 1D00 Phonetic Extensions 1D7F @+ These are non-IPA phonetic extensions, mostly for the Uralic Phonetic Alphabet (UPA). @+ The small capitals, superscript, and subscript forms are for phonetic representations where style variations are semantically important. @+ For general text, use regular Latin, Greek or Cyrillic letters with markup instead. @ Latin letters 1D00 LATIN LETTER SMALL CAPITAL A 1D01 LATIN LETTER SMALL CAPITAL AE 1D02 LATIN SMALL LETTER TURNED AE * glyph can also have sideways orientation 1D03 LATIN LETTER SMALL CAPITAL BARRED B 1D04 LATIN LETTER SMALL CAPITAL C 1D05 LATIN LETTER SMALL CAPITAL D 1D06 LATIN LETTER SMALL CAPITAL ETH 1D07 LATIN LETTER SMALL CAPITAL E 1D08 LATIN SMALL LETTER TURNED OPEN E 1D09 LATIN SMALL LETTER TURNED I 1D0A LATIN LETTER SMALL CAPITAL J 1D0B LATIN LETTER SMALL CAPITAL K 1D0C LATIN LETTER SMALL CAPITAL L WITH STROKE 1D0D LATIN LETTER SMALL CAPITAL M 1D0E LATIN LETTER SMALL CAPITAL REVERSED N 1D0F LATIN LETTER SMALL CAPITAL O 1D10 LATIN LETTER SMALL CAPITAL OPEN O 1D11 LATIN SMALL LETTER SIDEWAYS O 1D12 LATIN SMALL LETTER SIDEWAYS OPEN O 1D13 LATIN SMALL LETTER SIDEWAYS O WITH STROKE 1D14 LATIN SMALL LETTER TURNED OE * glyph can also have sideways orientation 1D15 LATIN LETTER SMALL CAPITAL OU 1D16 LATIN SMALL LETTER TOP HALF O 1D17 LATIN SMALL LETTER BOTTOM HALF O 1D18 LATIN LETTER SMALL CAPITAL P * represents a semi-voiced [p] 1D19 LATIN LETTER SMALL CAPITAL REVERSED R 1D1A LATIN LETTER SMALL CAPITAL TURNED R 1D1B LATIN LETTER SMALL CAPITAL T 1D1C LATIN LETTER SMALL CAPITAL U 1D1D LATIN SMALL LETTER SIDEWAYS U 1D1E LATIN SMALL LETTER SIDEWAYS DIAERESIZED U * glyph can also have turned orientation 1D1F LATIN SMALL LETTER SIDEWAYS TURNED M 1D20 LATIN LETTER SMALL CAPITAL V 1D21 LATIN LETTER SMALL CAPITAL W 1D22 LATIN LETTER SMALL CAPITAL Z 1D23 LATIN LETTER SMALL CAPITAL EZH 1D24 LATIN LETTER VOICED LARYNGEAL SPIRANT 1D25 LATIN LETTER AIN @ Greek letters 1D26 GREEK LETTER SMALL CAPITAL GAMMA 1D27 GREEK LETTER SMALL CAPITAL LAMDA 1D28 GREEK LETTER SMALL CAPITAL PI 1D29 GREEK LETTER SMALL CAPITAL RHO * represents a voiceless uvular trill 1D2A GREEK LETTER SMALL CAPITAL PSI @ Cyrillic letter 1D2B CYRILLIC LETTER SMALL CAPITAL EL * in italic style, the glyph is obliqued, not italicized x (cyrillic small letter el - 043B) @ Latin superscript modifier letters @+ See also superscript Latin letters in the Spacing Modifier Letters block starting at 02B0. 1D2C MODIFIER LETTER CAPITAL A # 0041 1D2D MODIFIER LETTER CAPITAL AE # 00C6 1D2E MODIFIER LETTER CAPITAL B # 0042 1D2F MODIFIER LETTER CAPITAL BARRED B 1D30 MODIFIER LETTER CAPITAL D # 0044 1D31 MODIFIER LETTER CAPITAL E # 0045 1D32 MODIFIER LETTER CAPITAL REVERSED E # 018E 1D33 MODIFIER LETTER CAPITAL G # 0047 1D34 MODIFIER LETTER CAPITAL H # 0048 1D35 MODIFIER LETTER CAPITAL I # 0049 1D36 MODIFIER LETTER CAPITAL J # 004A 1D37 MODIFIER LETTER CAPITAL K # 004B 1D38 MODIFIER LETTER CAPITAL L # 004C 1D39 MODIFIER LETTER CAPITAL M # 004D 1D3A MODIFIER LETTER CAPITAL N # 004E 1D3B MODIFIER LETTER CAPITAL REVERSED N 1D3C MODIFIER LETTER CAPITAL O # 004F 1D3D MODIFIER LETTER CAPITAL OU # 0222 1D3E MODIFIER LETTER CAPITAL P # 0050 1D3F MODIFIER LETTER CAPITAL R # 0052 1D40 MODIFIER LETTER CAPITAL T # 0054 1D41 MODIFIER LETTER CAPITAL U # 0055 1D42 MODIFIER LETTER CAPITAL W # 0057 1D43 MODIFIER LETTER SMALL A # 0061 1D44 MODIFIER LETTER SMALL TURNED A # 0250 1D45 MODIFIER LETTER SMALL ALPHA # 0251 1D46 MODIFIER LETTER SMALL TURNED AE # 1D02 1D47 MODIFIER LETTER SMALL B # 0062 1D48 MODIFIER LETTER SMALL D # 0064 1D49 MODIFIER LETTER SMALL E # 0065 1D4A MODIFIER LETTER SMALL SCHWA # 0259 1D4B MODIFIER LETTER SMALL OPEN E # 025B 1D4C MODIFIER LETTER SMALL TURNED OPEN E * more appropriate equivalence would be to 1D08 # 025C 1D4D MODIFIER LETTER SMALL G # 0067 1D4E MODIFIER LETTER SMALL TURNED I 1D4F MODIFIER LETTER SMALL K # 006B 1D50 MODIFIER LETTER SMALL M # 006D 1D51 MODIFIER LETTER SMALL ENG # 014B 1D52 MODIFIER LETTER SMALL O # 006F 1D53 MODIFIER LETTER SMALL OPEN O # 0254 1D54 MODIFIER LETTER SMALL TOP HALF O # 1D16 1D55 MODIFIER LETTER SMALL BOTTOM HALF O # 1D17 1D56 MODIFIER LETTER SMALL P # 0070 1D57 MODIFIER LETTER SMALL T # 0074 1D58 MODIFIER LETTER SMALL U # 0075 1D59 MODIFIER LETTER SMALL SIDEWAYS U # 1D1D 1D5A MODIFIER LETTER SMALL TURNED M # 026F 1D5B MODIFIER LETTER SMALL V # 0076 1D5C MODIFIER LETTER SMALL AIN # 1D25 @ Greek superscript modifier letters 1D5D MODIFIER LETTER SMALL BETA # 03B2 1D5E MODIFIER LETTER SMALL GREEK GAMMA # 03B3 1D5F MODIFIER LETTER SMALL DELTA # 03B4 1D60 MODIFIER LETTER SMALL GREEK PHI # 03C6 1D61 MODIFIER LETTER SMALL CHI # 03C7 @ Latin subscript modifier letters 1D62 LATIN SUBSCRIPT SMALL LETTER I # 0069 1D63 LATIN SUBSCRIPT SMALL LETTER R # 0072 1D64 LATIN SUBSCRIPT SMALL LETTER U # 0075 1D65 LATIN SUBSCRIPT SMALL LETTER V # 0076 @ Greek subscript modifier letters 1D66 GREEK SUBSCRIPT SMALL LETTER BETA # 03B2 1D67 GREEK SUBSCRIPT SMALL LETTER GAMMA # 03B3 1D68 GREEK SUBSCRIPT SMALL LETTER RHO # 03C1 1D69 GREEK SUBSCRIPT SMALL LETTER PHI # 03C6 1D6A GREEK SUBSCRIPT SMALL LETTER CHI # 03C7 @ Latin letter 1D6B LATIN SMALL LETTER UE @ Latin letters with middle tilde @+ An additional letter with middle tilde is found in another block. x (latin small letter l with middle tilde - 026B) 1D6C LATIN SMALL LETTER B WITH MIDDLE TILDE 1D6D LATIN SMALL LETTER D WITH MIDDLE TILDE 1D6E LATIN SMALL LETTER F WITH MIDDLE TILDE 1D6F LATIN SMALL LETTER M WITH MIDDLE TILDE 1D70 LATIN SMALL LETTER N WITH MIDDLE TILDE 1D71 LATIN SMALL LETTER P WITH MIDDLE TILDE 1D72 LATIN SMALL LETTER R WITH MIDDLE TILDE 1D73 LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE 1D74 LATIN SMALL LETTER S WITH MIDDLE TILDE 1D75 LATIN SMALL LETTER T WITH MIDDLE TILDE 1D76 LATIN SMALL LETTER Z WITH MIDDLE TILDE @ Caucasian linguistics 1D77 LATIN SMALL LETTER TURNED G * Georgian transcription x (georgian letter turned gan - 10F9) 1D78 MODIFIER LETTER CYRILLIC EN # 043D @ Other phonetic symbols 1D79 LATIN SMALL LETTER INSULAR G * older Irish phonetic notation * uppercase is A77D x (latin small letter g - 0067) x (latin small letter yogh - 021D) x (latin small letter script g - 0261) x (latin small letter gamma - 0263) 1D7A LATIN SMALL LETTER TH WITH STRIKETHROUGH * American dictionary usage x (greek small letter theta - 03B8) 1D7B LATIN SMALL CAPITAL LETTER I WITH STROKE * used with different meanings by Americanists and Oxford dictionaries 1D7C LATIN SMALL LETTER IOTA WITH STROKE * used by Russianists 1D7D LATIN SMALL LETTER P WITH STROKE * used by Americanists * uppercase is 2C63 1D7E LATIN SMALL CAPITAL LETTER U WITH STROKE * used by Americanists 1D7F LATIN SMALL LETTER UPSILON WITH STROKE * used by Americanists and Oxford dictionaries @@ 1D80 Phonetic Extensions Supplement 1DBF @ Latin letters with palatal hook @+ An additional letter with palatal hook is found in another block. x (latin small letter t with palatal hook - 01AB) 1D80 LATIN SMALL LETTER B WITH PALATAL HOOK 1D81 LATIN SMALL LETTER D WITH PALATAL HOOK 1D82 LATIN SMALL LETTER F WITH PALATAL HOOK 1D83 LATIN SMALL LETTER G WITH PALATAL HOOK 1D84 LATIN SMALL LETTER K WITH PALATAL HOOK 1D85 LATIN SMALL LETTER L WITH PALATAL HOOK 1D86 LATIN SMALL LETTER M WITH PALATAL HOOK 1D87 LATIN SMALL LETTER N WITH PALATAL HOOK 1D88 LATIN SMALL LETTER P WITH PALATAL HOOK 1D89 LATIN SMALL LETTER R WITH PALATAL HOOK 1D8A LATIN SMALL LETTER S WITH PALATAL HOOK 1D8B LATIN SMALL LETTER ESH WITH PALATAL HOOK 1D8C LATIN SMALL LETTER V WITH PALATAL HOOK 1D8D LATIN SMALL LETTER X WITH PALATAL HOOK 1D8E LATIN SMALL LETTER Z WITH PALATAL HOOK @ Latin letters with retroflex hook @+ IPA recommends transcribing vowels with r-coloring (rhoticity) with the rhotic hook instead. x (modifier letter rhotic hook - 02DE) @+ Additional letters with retroflex hook are found in other blocks. x (latin capital letter t with retroflex hook - 01AE) x (latin small letter d with tail - 0256) x (latin small letter l with retroflex hook - 026D) x (latin small letter n with retroflex hook - 0273) x (latin small letter turned r with hook - 027B) x (latin small letter r with tail - 027D) x (latin small letter s with hook - 0282) x (latin small letter squat reversed esh - 0285) x (latin small letter t with retroflex hook - 0288) x (latin small letter z with retroflex hook - 0290) x (latin small letter turned h with fishhook and tail - 02AF) 1D8F LATIN SMALL LETTER A WITH RETROFLEX HOOK 1D90 LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK 1D91 LATIN SMALL LETTER D WITH HOOK AND TAIL 1D92 LATIN SMALL LETTER E WITH RETROFLEX HOOK 1D93 LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK 1D94 LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK x (latin small letter reversed open e with hook - 025D) 1D95 LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK x (latin small letter schwa with hook - 025A) 1D96 LATIN SMALL LETTER I WITH RETROFLEX HOOK 1D97 LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK 1D98 LATIN SMALL LETTER ESH WITH RETROFLEX HOOK 1D99 LATIN SMALL LETTER U WITH RETROFLEX HOOK 1D9A LATIN SMALL LETTER EZH WITH RETROFLEX HOOK @ Modifier letters @+ Other modifier letters can be found in the Spacing Modifier Letters, Phonetic Extensions, as well as Superscripts and Subscripts blocks. 1D9B MODIFIER LETTER SMALL TURNED ALPHA # 0252 1D9C MODIFIER LETTER SMALL C # 0063 1D9D MODIFIER LETTER SMALL C WITH CURL # 0255 1D9E MODIFIER LETTER SMALL ETH # 00F0 1D9F MODIFIER LETTER SMALL REVERSED OPEN E # 025C 1DA0 MODIFIER LETTER SMALL F # 0066 1DA1 MODIFIER LETTER SMALL DOTLESS J WITH STROKE # 025F 1DA2 MODIFIER LETTER SMALL SCRIPT G # 0261 1DA3 MODIFIER LETTER SMALL TURNED H # 0265 1DA4 MODIFIER LETTER SMALL I WITH STROKE # 0268 1DA5 MODIFIER LETTER SMALL IOTA # 0269 1DA6 MODIFIER LETTER SMALL CAPITAL I * not for use in UPA x (modifier letter capital i - 1D35) # 026A 1DA7 MODIFIER LETTER SMALL CAPITAL I WITH STROKE # 1D7B 1DA8 MODIFIER LETTER SMALL J WITH CROSSED-TAIL # 029D 1DA9 MODIFIER LETTER SMALL L WITH RETROFLEX HOOK # 026D 1DAA MODIFIER LETTER SMALL L WITH PALATAL HOOK # 1D85 1DAB MODIFIER LETTER SMALL CAPITAL L * not for use in UPA x (modifier letter capital l - 1D38) # 029F 1DAC MODIFIER LETTER SMALL M WITH HOOK # 0271 1DAD MODIFIER LETTER SMALL TURNED M WITH LONG LEG # 0270 1DAE MODIFIER LETTER SMALL N WITH LEFT HOOK # 0272 1DAF MODIFIER LETTER SMALL N WITH RETROFLEX HOOK # 0273 1DB0 MODIFIER LETTER SMALL CAPITAL N * not for use in UPA x (modifier letter capital n - 1D3A) # 0274 1DB1 MODIFIER LETTER SMALL BARRED O # 0275 1DB2 MODIFIER LETTER SMALL PHI # 0278 1DB3 MODIFIER LETTER SMALL S WITH HOOK # 0282 1DB4 MODIFIER LETTER SMALL ESH # 0283 1DB5 MODIFIER LETTER SMALL T WITH PALATAL HOOK # 01AB 1DB6 MODIFIER LETTER SMALL U BAR # 0289 1DB7 MODIFIER LETTER SMALL UPSILON # 028A 1DB8 MODIFIER LETTER SMALL CAPITAL U * not for use in UPA x (modifier letter capital u - 1D41) # 1D1C 1DB9 MODIFIER LETTER SMALL V WITH HOOK # 028B 1DBA MODIFIER LETTER SMALL TURNED V # 028C 1DBB MODIFIER LETTER SMALL Z # 007A 1DBC MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK # 0290 1DBD MODIFIER LETTER SMALL Z WITH CURL # 0291 1DBE MODIFIER LETTER SMALL EZH # 0292 1DBF MODIFIER LETTER SMALL THETA # 03B8 @@ 1DC0 Combining Diacritical Marks Supplement 1DFF @ Used for Ancient Greek @+ These are used as editorial signs for Ancient Greek to indicate scribal deletion of erroneous accent marks. 1DC0 COMBINING DOTTED GRAVE ACCENT x (greek dialytika and varia - 1FED) 1DC1 COMBINING DOTTED ACUTE ACCENT x (combining greek dialytika tonos - 0344) x (greek dialytika and oxia - 1FEE) @ Miscellaneous marks 1DC2 COMBINING SNAKE BELOW 1DC3 COMBINING SUSPENSION MARK * Glagolitic x (combining breve - 0306) @ Contour tone marks 1DC4 COMBINING MACRON-ACUTE 1DC5 COMBINING GRAVE-MACRON 1DC6 COMBINING MACRON-GRAVE 1DC7 COMBINING ACUTE-MACRON 1DC8 COMBINING GRAVE-ACUTE-GRAVE 1DC9 COMBINING ACUTE-GRAVE-ACUTE @ Miscellaneous mark 1DCA COMBINING LATIN SMALL LETTER R BELOW @ Contour tone marks 1DCB COMBINING BREVE-MACRON * Lithuanian dialectology 1DCC COMBINING MACRON-BREVE * Lithuanian dialectology @ Double diacritic 1DCD COMBINING DOUBLE CIRCUMFLEX ABOVE @ Medievalist additions 1DCE COMBINING OGONEK ABOVE 1DCF COMBINING ZIGZAG BELOW 1DD0 COMBINING IS BELOW 1DD1 COMBINING UR ABOVE 1DD2 COMBINING US ABOVE @ Medieval superscript letter diacritics 1DD3 COMBINING LATIN SMALL LETTER FLATTENED OPEN A ABOVE 1DD4 COMBINING LATIN SMALL LETTER AE 1DD5 COMBINING LATIN SMALL LETTER AO 1DD6 COMBINING LATIN SMALL LETTER AV 1DD7 COMBINING LATIN SMALL LETTER C CEDILLA 1DD8 COMBINING LATIN SMALL LETTER INSULAR D 1DD9 COMBINING LATIN SMALL LETTER ETH 1DDA COMBINING LATIN SMALL LETTER G 1DDB COMBINING LATIN LETTER SMALL CAPITAL G 1DDC COMBINING LATIN SMALL LETTER K 1DDD COMBINING LATIN SMALL LETTER L 1DDE COMBINING LATIN LETTER SMALL CAPITAL L 1DDF COMBINING LATIN LETTER SMALL CAPITAL M 1DE0 COMBINING LATIN SMALL LETTER N 1DE1 COMBINING LATIN LETTER SMALL CAPITAL N 1DE2 COMBINING LATIN LETTER SMALL CAPITAL R 1DE3 COMBINING LATIN SMALL LETTER R ROTUNDA 1DE4 COMBINING LATIN SMALL LETTER S 1DE5 COMBINING LATIN SMALL LETTER LONG S 1DE6 COMBINING LATIN SMALL LETTER Z @ Superscript letter diacritics for German dialectology 1DE7 COMBINING LATIN SMALL LETTER ALPHA 1DE8 COMBINING LATIN SMALL LETTER B 1DE9 COMBINING LATIN SMALL LETTER BETA 1DEA COMBINING LATIN SMALL LETTER SCHWA 1DEB COMBINING LATIN SMALL LETTER F 1DEC COMBINING LATIN SMALL LETTER L WITH DOUBLE MIDDLE TILDE 1DED COMBINING LATIN SMALL LETTER O WITH LIGHT CENTRALIZATION STROKE 1DEE COMBINING LATIN SMALL LETTER P 1DEF COMBINING LATIN SMALL LETTER ESH 1DF0 COMBINING LATIN SMALL LETTER U WITH LIGHT CENTRALIZATION STROKE 1DF1 COMBINING LATIN SMALL LETTER W 1DF2 COMBINING LATIN SMALL LETTER A WITH DIAERESIS 1DF3 COMBINING LATIN SMALL LETTER O WITH DIAERESIS 1DF4 COMBINING LATIN SMALL LETTER U WITH DIAERESIS @ Diacritic for American lexicography 1DF5 COMBINING UP TACK ABOVE @ Miscellaneous mark 1DFB COMBINING DELETION MARK * used for "mhusaa" in Newa scribal tradition @ Double diacritic mark for UPA 1DFC COMBINING DOUBLE INVERTED BREVE BELOW @ Miscellaneous mark 1DFD COMBINING ALMOST EQUAL TO BELOW * diacritic indicating a strident vowel in Khoisan languages @ Additional marks for UPA 1DFE COMBINING LEFT ARROWHEAD ABOVE 1DFF COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW @@ 1E00 Latin Extended Additional 1EFF @+ In this block the names "WITH LINE BELOW" refer to a macron below the letter. @ Latin general use extensions 1E00 LATIN CAPITAL LETTER A WITH RING BELOW : 0041 0325 1E01 LATIN SMALL LETTER A WITH RING BELOW : 0061 0325 1E02 LATIN CAPITAL LETTER B WITH DOT ABOVE : 0042 0307 1E03 LATIN SMALL LETTER B WITH DOT ABOVE * Irish Gaelic (old orthography) : 0062 0307 1E04 LATIN CAPITAL LETTER B WITH DOT BELOW : 0042 0323 1E05 LATIN SMALL LETTER B WITH DOT BELOW : 0062 0323 1E06 LATIN CAPITAL LETTER B WITH LINE BELOW : 0042 0331 1E07 LATIN SMALL LETTER B WITH LINE BELOW : 0062 0331 1E08 LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE : 00C7 0301 1E09 LATIN SMALL LETTER C WITH CEDILLA AND ACUTE : 00E7 0301 1E0A LATIN CAPITAL LETTER D WITH DOT ABOVE : 0044 0307 1E0B LATIN SMALL LETTER D WITH DOT ABOVE * Irish Gaelic (old orthography) : 0064 0307 1E0C LATIN CAPITAL LETTER D WITH DOT BELOW : 0044 0323 1E0D LATIN SMALL LETTER D WITH DOT BELOW * Indic transliteration : 0064 0323 1E0E LATIN CAPITAL LETTER D WITH LINE BELOW : 0044 0331 1E0F LATIN SMALL LETTER D WITH LINE BELOW : 0064 0331 1E10 LATIN CAPITAL LETTER D WITH CEDILLA : 0044 0327 1E11 LATIN SMALL LETTER D WITH CEDILLA * Livonian : 0064 0327 1E12 LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW : 0044 032D 1E13 LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW : 0064 032D 1E14 LATIN CAPITAL LETTER E WITH MACRON AND GRAVE : 0112 0300 1E15 LATIN SMALL LETTER E WITH MACRON AND GRAVE : 0113 0300 1E16 LATIN CAPITAL LETTER E WITH MACRON AND ACUTE : 0112 0301 1E17 LATIN SMALL LETTER E WITH MACRON AND ACUTE : 0113 0301 1E18 LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW : 0045 032D 1E19 LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW : 0065 032D 1E1A LATIN CAPITAL LETTER E WITH TILDE BELOW : 0045 0330 1E1B LATIN SMALL LETTER E WITH TILDE BELOW : 0065 0330 1E1C LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE : 0228 0306 1E1D LATIN SMALL LETTER E WITH CEDILLA AND BREVE * Hebrew transliteration : 0229 0306 1E1E LATIN CAPITAL LETTER F WITH DOT ABOVE : 0046 0307 1E1F LATIN SMALL LETTER F WITH DOT ABOVE * Irish Gaelic (old orthography) : 0066 0307 1E20 LATIN CAPITAL LETTER G WITH MACRON : 0047 0304 1E21 LATIN SMALL LETTER G WITH MACRON : 0067 0304 1E22 LATIN CAPITAL LETTER H WITH DOT ABOVE : 0048 0307 1E23 LATIN SMALL LETTER H WITH DOT ABOVE : 0068 0307 1E24 LATIN CAPITAL LETTER H WITH DOT BELOW : 0048 0323 1E25 LATIN SMALL LETTER H WITH DOT BELOW * Indic transliteration : 0068 0323 1E26 LATIN CAPITAL LETTER H WITH DIAERESIS : 0048 0308 1E27 LATIN SMALL LETTER H WITH DIAERESIS : 0068 0308 1E28 LATIN CAPITAL LETTER H WITH CEDILLA : 0048 0327 1E29 LATIN SMALL LETTER H WITH CEDILLA : 0068 0327 1E2A LATIN CAPITAL LETTER H WITH BREVE BELOW : 0048 032E 1E2B LATIN SMALL LETTER H WITH BREVE BELOW * Semitic transliteration : 0068 032E 1E2C LATIN CAPITAL LETTER I WITH TILDE BELOW : 0049 0330 1E2D LATIN SMALL LETTER I WITH TILDE BELOW : 0069 0330 1E2E LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE : 00CF 0301 1E2F LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE : 00EF 0301 1E30 LATIN CAPITAL LETTER K WITH ACUTE : 004B 0301 1E31 LATIN SMALL LETTER K WITH ACUTE * Macedonian transliteration : 006B 0301 1E32 LATIN CAPITAL LETTER K WITH DOT BELOW : 004B 0323 1E33 LATIN SMALL LETTER K WITH DOT BELOW : 006B 0323 1E34 LATIN CAPITAL LETTER K WITH LINE BELOW : 004B 0331 1E35 LATIN SMALL LETTER K WITH LINE BELOW : 006B 0331 1E36 LATIN CAPITAL LETTER L WITH DOT BELOW : 004C 0323 1E37 LATIN SMALL LETTER L WITH DOT BELOW * Indic transliteration : 006C 0323 @+ * see ISO 15919 on the use of dot below versus ring below in Indic transliteration x (combining ring below - 0325) 1E38 LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON : 1E36 0304 1E39 LATIN SMALL LETTER L WITH DOT BELOW AND MACRON * Indic transliteration : 1E37 0304 1E3A LATIN CAPITAL LETTER L WITH LINE BELOW : 004C 0331 1E3B LATIN SMALL LETTER L WITH LINE BELOW * Indic transliteration : 006C 0331 1E3C LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW : 004C 032D 1E3D LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW : 006C 032D 1E3E LATIN CAPITAL LETTER M WITH ACUTE : 004D 0301 1E3F LATIN SMALL LETTER M WITH ACUTE : 006D 0301 1E40 LATIN CAPITAL LETTER M WITH DOT ABOVE : 004D 0307 1E41 LATIN SMALL LETTER M WITH DOT ABOVE * Irish Gaelic (old orthography) : 006D 0307 1E42 LATIN CAPITAL LETTER M WITH DOT BELOW : 004D 0323 1E43 LATIN SMALL LETTER M WITH DOT BELOW * Indic transliteration : 006D 0323 1E44 LATIN CAPITAL LETTER N WITH DOT ABOVE : 004E 0307 1E45 LATIN SMALL LETTER N WITH DOT ABOVE * Indic transliteration : 006E 0307 1E46 LATIN CAPITAL LETTER N WITH DOT BELOW : 004E 0323 1E47 LATIN SMALL LETTER N WITH DOT BELOW * Indic transliteration : 006E 0323 1E48 LATIN CAPITAL LETTER N WITH LINE BELOW : 004E 0331 1E49 LATIN SMALL LETTER N WITH LINE BELOW * Indic transliteration : 006E 0331 1E4A LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW : 004E 032D 1E4B LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW : 006E 032D 1E4C LATIN CAPITAL LETTER O WITH TILDE AND ACUTE : 00D5 0301 1E4D LATIN SMALL LETTER O WITH TILDE AND ACUTE : 00F5 0301 1E4E LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS : 00D5 0308 1E4F LATIN SMALL LETTER O WITH TILDE AND DIAERESIS : 00F5 0308 1E50 LATIN CAPITAL LETTER O WITH MACRON AND GRAVE : 014C 0300 1E51 LATIN SMALL LETTER O WITH MACRON AND GRAVE : 014D 0300 1E52 LATIN CAPITAL LETTER O WITH MACRON AND ACUTE : 014C 0301 1E53 LATIN SMALL LETTER O WITH MACRON AND ACUTE : 014D 0301 1E54 LATIN CAPITAL LETTER P WITH ACUTE : 0050 0301 1E55 LATIN SMALL LETTER P WITH ACUTE : 0070 0301 1E56 LATIN CAPITAL LETTER P WITH DOT ABOVE : 0050 0307 1E57 LATIN SMALL LETTER P WITH DOT ABOVE * Irish Gaelic (old orthography) : 0070 0307 1E58 LATIN CAPITAL LETTER R WITH DOT ABOVE : 0052 0307 1E59 LATIN SMALL LETTER R WITH DOT ABOVE : 0072 0307 1E5A LATIN CAPITAL LETTER R WITH DOT BELOW : 0052 0323 1E5B LATIN SMALL LETTER R WITH DOT BELOW * Indic transliteration : 0072 0323 @+ * see ISO 15919 on the use of dot below versus ring below in Indic transliteration x (combining ring below - 0325) 1E5C LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON : 1E5A 0304 1E5D LATIN SMALL LETTER R WITH DOT BELOW AND MACRON * Indic transliteration : 1E5B 0304 1E5E LATIN CAPITAL LETTER R WITH LINE BELOW : 0052 0331 1E5F LATIN SMALL LETTER R WITH LINE BELOW * Indic transliteration : 0072 0331 1E60 LATIN CAPITAL LETTER S WITH DOT ABOVE : 0053 0307 1E61 LATIN SMALL LETTER S WITH DOT ABOVE * Irish Gaelic (old orthography) : 0073 0307 1E62 LATIN CAPITAL LETTER S WITH DOT BELOW : 0053 0323 1E63 LATIN SMALL LETTER S WITH DOT BELOW * Indic transliteration : 0073 0323 1E64 LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE : 015A 0307 1E65 LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE : 015B 0307 1E66 LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE : 0160 0307 1E67 LATIN SMALL LETTER S WITH CARON AND DOT ABOVE : 0161 0307 1E68 LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE : 1E62 0307 1E69 LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE : 1E63 0307 1E6A LATIN CAPITAL LETTER T WITH DOT ABOVE : 0054 0307 1E6B LATIN SMALL LETTER T WITH DOT ABOVE * Irish Gaelic (old orthography) : 0074 0307 1E6C LATIN CAPITAL LETTER T WITH DOT BELOW : 0054 0323 1E6D LATIN SMALL LETTER T WITH DOT BELOW * Indic transliteration : 0074 0323 1E6E LATIN CAPITAL LETTER T WITH LINE BELOW : 0054 0331 1E6F LATIN SMALL LETTER T WITH LINE BELOW * Semitic transliteration : 0074 0331 1E70 LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW : 0054 032D 1E71 LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW : 0074 032D 1E72 LATIN CAPITAL LETTER U WITH DIAERESIS BELOW : 0055 0324 1E73 LATIN SMALL LETTER U WITH DIAERESIS BELOW : 0075 0324 1E74 LATIN CAPITAL LETTER U WITH TILDE BELOW : 0055 0330 1E75 LATIN SMALL LETTER U WITH TILDE BELOW : 0075 0330 1E76 LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW : 0055 032D 1E77 LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW : 0075 032D 1E78 LATIN CAPITAL LETTER U WITH TILDE AND ACUTE : 0168 0301 1E79 LATIN SMALL LETTER U WITH TILDE AND ACUTE : 0169 0301 1E7A LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS : 016A 0308 1E7B LATIN SMALL LETTER U WITH MACRON AND DIAERESIS : 016B 0308 1E7C LATIN CAPITAL LETTER V WITH TILDE : 0056 0303 1E7D LATIN SMALL LETTER V WITH TILDE : 0076 0303 1E7E LATIN CAPITAL LETTER V WITH DOT BELOW : 0056 0323 1E7F LATIN SMALL LETTER V WITH DOT BELOW : 0076 0323 1E80 LATIN CAPITAL LETTER W WITH GRAVE : 0057 0300 1E81 LATIN SMALL LETTER W WITH GRAVE * Welsh : 0077 0300 1E82 LATIN CAPITAL LETTER W WITH ACUTE : 0057 0301 1E83 LATIN SMALL LETTER W WITH ACUTE * Welsh : 0077 0301 1E84 LATIN CAPITAL LETTER W WITH DIAERESIS : 0057 0308 1E85 LATIN SMALL LETTER W WITH DIAERESIS * Welsh : 0077 0308 1E86 LATIN CAPITAL LETTER W WITH DOT ABOVE : 0057 0307 1E87 LATIN SMALL LETTER W WITH DOT ABOVE : 0077 0307 1E88 LATIN CAPITAL LETTER W WITH DOT BELOW : 0057 0323 1E89 LATIN SMALL LETTER W WITH DOT BELOW : 0077 0323 1E8A LATIN CAPITAL LETTER X WITH DOT ABOVE : 0058 0307 1E8B LATIN SMALL LETTER X WITH DOT ABOVE : 0078 0307 1E8C LATIN CAPITAL LETTER X WITH DIAERESIS : 0058 0308 1E8D LATIN SMALL LETTER X WITH DIAERESIS : 0078 0308 1E8E LATIN CAPITAL LETTER Y WITH DOT ABOVE : 0059 0307 1E8F LATIN SMALL LETTER Y WITH DOT ABOVE : 0079 0307 1E90 LATIN CAPITAL LETTER Z WITH CIRCUMFLEX : 005A 0302 1E91 LATIN SMALL LETTER Z WITH CIRCUMFLEX : 007A 0302 1E92 LATIN CAPITAL LETTER Z WITH DOT BELOW : 005A 0323 1E93 LATIN SMALL LETTER Z WITH DOT BELOW * Semitic transliteration x (arabic letter zah - 0638) : 007A 0323 1E94 LATIN CAPITAL LETTER Z WITH LINE BELOW : 005A 0331 1E95 LATIN SMALL LETTER Z WITH LINE BELOW * Semitic transliteration : 007A 0331 1E96 LATIN SMALL LETTER H WITH LINE BELOW * Semitic transliteration : 0068 0331 1E97 LATIN SMALL LETTER T WITH DIAERESIS : 0074 0308 1E98 LATIN SMALL LETTER W WITH RING ABOVE : 0077 030A 1E99 LATIN SMALL LETTER Y WITH RING ABOVE : 0079 030A 1E9A LATIN SMALL LETTER A WITH RIGHT HALF RING # 0061 02BE 1E9B LATIN SMALL LETTER LONG S WITH DOT ABOVE * in current use in Gaelic types (as glyph variant of 1E61) : 017F 0307 @ Medievalist additions 1E9C LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE * medievalist use for several abbreviations * used in pre-1921 Latvian orthography * used in Blackletter types of pre-1950 Lower Sorbian orthography x (latin small letter s with oblique stroke - A7A9) 1E9D LATIN SMALL LETTER LONG S WITH HIGH STROKE @ Addition for German typography 1E9E LATIN CAPITAL LETTER SHARP S * lowercase is 00DF x (latin small letter sharp s - 00DF) @ Medievalist addition 1E9F LATIN SMALL LETTER DELTA @ Latin extensions for Vietnamese 1EA0 LATIN CAPITAL LETTER A WITH DOT BELOW : 0041 0323 1EA1 LATIN SMALL LETTER A WITH DOT BELOW : 0061 0323 1EA2 LATIN CAPITAL LETTER A WITH HOOK ABOVE : 0041 0309 1EA3 LATIN SMALL LETTER A WITH HOOK ABOVE : 0061 0309 1EA4 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE : 00C2 0301 1EA5 LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE : 00E2 0301 1EA6 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE : 00C2 0300 1EA7 LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE : 00E2 0300 1EA8 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE : 00C2 0309 1EA9 LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE : 00E2 0309 1EAA LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE : 00C2 0303 1EAB LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE : 00E2 0303 1EAC LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW : 1EA0 0302 1EAD LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW : 1EA1 0302 1EAE LATIN CAPITAL LETTER A WITH BREVE AND ACUTE : 0102 0301 1EAF LATIN SMALL LETTER A WITH BREVE AND ACUTE : 0103 0301 1EB0 LATIN CAPITAL LETTER A WITH BREVE AND GRAVE : 0102 0300 1EB1 LATIN SMALL LETTER A WITH BREVE AND GRAVE : 0103 0300 1EB2 LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE : 0102 0309 1EB3 LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE : 0103 0309 1EB4 LATIN CAPITAL LETTER A WITH BREVE AND TILDE : 0102 0303 1EB5 LATIN SMALL LETTER A WITH BREVE AND TILDE : 0103 0303 1EB6 LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW : 1EA0 0306 1EB7 LATIN SMALL LETTER A WITH BREVE AND DOT BELOW : 1EA1 0306 1EB8 LATIN CAPITAL LETTER E WITH DOT BELOW : 0045 0323 1EB9 LATIN SMALL LETTER E WITH DOT BELOW : 0065 0323 1EBA LATIN CAPITAL LETTER E WITH HOOK ABOVE : 0045 0309 1EBB LATIN SMALL LETTER E WITH HOOK ABOVE : 0065 0309 1EBC LATIN CAPITAL LETTER E WITH TILDE : 0045 0303 1EBD LATIN SMALL LETTER E WITH TILDE : 0065 0303 1EBE LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE : 00CA 0301 1EBF LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE : 00EA 0301 1EC0 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE : 00CA 0300 1EC1 LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE : 00EA 0300 1EC2 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE : 00CA 0309 1EC3 LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE : 00EA 0309 1EC4 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE : 00CA 0303 1EC5 LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE : 00EA 0303 1EC6 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW : 1EB8 0302 1EC7 LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW : 1EB9 0302 1EC8 LATIN CAPITAL LETTER I WITH HOOK ABOVE : 0049 0309 1EC9 LATIN SMALL LETTER I WITH HOOK ABOVE : 0069 0309 1ECA LATIN CAPITAL LETTER I WITH DOT BELOW : 0049 0323 1ECB LATIN SMALL LETTER I WITH DOT BELOW : 0069 0323 1ECC LATIN CAPITAL LETTER O WITH DOT BELOW : 004F 0323 1ECD LATIN SMALL LETTER O WITH DOT BELOW : 006F 0323 1ECE LATIN CAPITAL LETTER O WITH HOOK ABOVE : 004F 0309 1ECF LATIN SMALL LETTER O WITH HOOK ABOVE : 006F 0309 1ED0 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE : 00D4 0301 1ED1 LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE : 00F4 0301 1ED2 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE : 00D4 0300 1ED3 LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE : 00F4 0300 1ED4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE : 00D4 0309 1ED5 LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE : 00F4 0309 1ED6 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE : 00D4 0303 1ED7 LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE : 00F4 0303 1ED8 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW : 1ECC 0302 1ED9 LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW : 1ECD 0302 1EDA LATIN CAPITAL LETTER O WITH HORN AND ACUTE : 01A0 0301 1EDB LATIN SMALL LETTER O WITH HORN AND ACUTE : 01A1 0301 1EDC LATIN CAPITAL LETTER O WITH HORN AND GRAVE : 01A0 0300 1EDD LATIN SMALL LETTER O WITH HORN AND GRAVE : 01A1 0300 1EDE LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE : 01A0 0309 1EDF LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE : 01A1 0309 1EE0 LATIN CAPITAL LETTER O WITH HORN AND TILDE : 01A0 0303 1EE1 LATIN SMALL LETTER O WITH HORN AND TILDE : 01A1 0303 1EE2 LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW : 01A0 0323 1EE3 LATIN SMALL LETTER O WITH HORN AND DOT BELOW : 01A1 0323 1EE4 LATIN CAPITAL LETTER U WITH DOT BELOW : 0055 0323 1EE5 LATIN SMALL LETTER U WITH DOT BELOW : 0075 0323 1EE6 LATIN CAPITAL LETTER U WITH HOOK ABOVE : 0055 0309 1EE7 LATIN SMALL LETTER U WITH HOOK ABOVE : 0075 0309 1EE8 LATIN CAPITAL LETTER U WITH HORN AND ACUTE : 01AF 0301 1EE9 LATIN SMALL LETTER U WITH HORN AND ACUTE : 01B0 0301 1EEA LATIN CAPITAL LETTER U WITH HORN AND GRAVE : 01AF 0300 1EEB LATIN SMALL LETTER U WITH HORN AND GRAVE : 01B0 0300 1EEC LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE : 01AF 0309 1EED LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE : 01B0 0309 1EEE LATIN CAPITAL LETTER U WITH HORN AND TILDE : 01AF 0303 1EEF LATIN SMALL LETTER U WITH HORN AND TILDE : 01B0 0303 1EF0 LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW : 01AF 0323 1EF1 LATIN SMALL LETTER U WITH HORN AND DOT BELOW : 01B0 0323 @ Latin general extensions 1EF2 LATIN CAPITAL LETTER Y WITH GRAVE : 0059 0300 1EF3 LATIN SMALL LETTER Y WITH GRAVE * Welsh : 0079 0300 1EF4 LATIN CAPITAL LETTER Y WITH DOT BELOW : 0059 0323 1EF5 LATIN SMALL LETTER Y WITH DOT BELOW : 0079 0323 1EF6 LATIN CAPITAL LETTER Y WITH HOOK ABOVE : 0059 0309 1EF7 LATIN SMALL LETTER Y WITH HOOK ABOVE : 0079 0309 1EF8 LATIN CAPITAL LETTER Y WITH TILDE : 0059 0303 1EF9 LATIN SMALL LETTER Y WITH TILDE : 0079 0303 @ Medievalist additions 1EFA LATIN CAPITAL LETTER MIDDLE-WELSH LL 1EFB LATIN SMALL LETTER MIDDLE-WELSH LL 1EFC LATIN CAPITAL LETTER MIDDLE-WELSH V 1EFD LATIN SMALL LETTER MIDDLE-WELSH V 1EFE LATIN CAPITAL LETTER Y WITH LOOP 1EFF LATIN SMALL LETTER Y WITH LOOP @@ 1F00 Greek Extended 1FFF @ Precomposed polytonic Greek 1F00 GREEK SMALL LETTER ALPHA WITH PSILI : 03B1 0313 1F01 GREEK SMALL LETTER ALPHA WITH DASIA : 03B1 0314 1F02 GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA : 1F00 0300 1F03 GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA : 1F01 0300 1F04 GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA : 1F00 0301 1F05 GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA : 1F01 0301 1F06 GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI : 1F00 0342 1F07 GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI : 1F01 0342 1F08 GREEK CAPITAL LETTER ALPHA WITH PSILI : 0391 0313 1F09 GREEK CAPITAL LETTER ALPHA WITH DASIA : 0391 0314 1F0A GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA : 1F08 0300 1F0B GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA : 1F09 0300 1F0C GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA : 1F08 0301 1F0D GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA : 1F09 0301 1F0E GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI : 1F08 0342 1F0F GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI : 1F09 0342 1F10 GREEK SMALL LETTER EPSILON WITH PSILI : 03B5 0313 1F11 GREEK SMALL LETTER EPSILON WITH DASIA : 03B5 0314 1F12 GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA : 1F10 0300 1F13 GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA : 1F11 0300 1F14 GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA : 1F10 0301 1F15 GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA : 1F11 0301 1F18 GREEK CAPITAL LETTER EPSILON WITH PSILI : 0395 0313 1F19 GREEK CAPITAL LETTER EPSILON WITH DASIA : 0395 0314 1F1A GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA : 1F18 0300 1F1B GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA : 1F19 0300 1F1C GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA : 1F18 0301 1F1D GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA : 1F19 0301 1F20 GREEK SMALL LETTER ETA WITH PSILI : 03B7 0313 1F21 GREEK SMALL LETTER ETA WITH DASIA : 03B7 0314 1F22 GREEK SMALL LETTER ETA WITH PSILI AND VARIA : 1F20 0300 1F23 GREEK SMALL LETTER ETA WITH DASIA AND VARIA : 1F21 0300 1F24 GREEK SMALL LETTER ETA WITH PSILI AND OXIA : 1F20 0301 1F25 GREEK SMALL LETTER ETA WITH DASIA AND OXIA : 1F21 0301 1F26 GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI : 1F20 0342 1F27 GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI : 1F21 0342 1F28 GREEK CAPITAL LETTER ETA WITH PSILI : 0397 0313 1F29 GREEK CAPITAL LETTER ETA WITH DASIA : 0397 0314 1F2A GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA : 1F28 0300 1F2B GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA : 1F29 0300 1F2C GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA : 1F28 0301 1F2D GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA : 1F29 0301 1F2E GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI : 1F28 0342 1F2F GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI : 1F29 0342 1F30 GREEK SMALL LETTER IOTA WITH PSILI : 03B9 0313 1F31 GREEK SMALL LETTER IOTA WITH DASIA : 03B9 0314 1F32 GREEK SMALL LETTER IOTA WITH PSILI AND VARIA : 1F30 0300 1F33 GREEK SMALL LETTER IOTA WITH DASIA AND VARIA : 1F31 0300 1F34 GREEK SMALL LETTER IOTA WITH PSILI AND OXIA : 1F30 0301 1F35 GREEK SMALL LETTER IOTA WITH DASIA AND OXIA : 1F31 0301 1F36 GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI : 1F30 0342 1F37 GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI : 1F31 0342 1F38 GREEK CAPITAL LETTER IOTA WITH PSILI : 0399 0313 1F39 GREEK CAPITAL LETTER IOTA WITH DASIA : 0399 0314 1F3A GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA : 1F38 0300 1F3B GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA : 1F39 0300 1F3C GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA : 1F38 0301 1F3D GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA : 1F39 0301 1F3E GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI : 1F38 0342 1F3F GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI : 1F39 0342 1F40 GREEK SMALL LETTER OMICRON WITH PSILI : 03BF 0313 1F41 GREEK SMALL LETTER OMICRON WITH DASIA : 03BF 0314 1F42 GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA : 1F40 0300 1F43 GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA : 1F41 0300 1F44 GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA : 1F40 0301 1F45 GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA : 1F41 0301 1F48 GREEK CAPITAL LETTER OMICRON WITH PSILI : 039F 0313 1F49 GREEK CAPITAL LETTER OMICRON WITH DASIA : 039F 0314 1F4A GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA : 1F48 0300 1F4B GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA : 1F49 0300 1F4C GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA : 1F48 0301 1F4D GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA : 1F49 0301 1F50 GREEK SMALL LETTER UPSILON WITH PSILI : 03C5 0313 1F51 GREEK SMALL LETTER UPSILON WITH DASIA : 03C5 0314 1F52 GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA : 1F50 0300 1F53 GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA : 1F51 0300 1F54 GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA : 1F50 0301 1F55 GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA : 1F51 0301 1F56 GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI : 1F50 0342 1F57 GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI : 1F51 0342 1F59 GREEK CAPITAL LETTER UPSILON WITH DASIA : 03A5 0314 1F5B GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA : 1F59 0300 1F5D GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA : 1F59 0301 1F5F GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI : 1F59 0342 1F60 GREEK SMALL LETTER OMEGA WITH PSILI : 03C9 0313 1F61 GREEK SMALL LETTER OMEGA WITH DASIA : 03C9 0314 1F62 GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA : 1F60 0300 1F63 GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA : 1F61 0300 1F64 GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA : 1F60 0301 1F65 GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA : 1F61 0301 1F66 GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI : 1F60 0342 1F67 GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI : 1F61 0342 1F68 GREEK CAPITAL LETTER OMEGA WITH PSILI : 03A9 0313 1F69 GREEK CAPITAL LETTER OMEGA WITH DASIA : 03A9 0314 1F6A GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA : 1F68 0300 1F6B GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA : 1F69 0300 1F6C GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA : 1F68 0301 1F6D GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA : 1F69 0301 1F6E GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI : 1F68 0342 1F6F GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI : 1F69 0342 1F70 GREEK SMALL LETTER ALPHA WITH VARIA : 03B1 0300 1F71 GREEK SMALL LETTER ALPHA WITH OXIA : 03AC greek small letter alpha with tonos 1F72 GREEK SMALL LETTER EPSILON WITH VARIA : 03B5 0300 1F73 GREEK SMALL LETTER EPSILON WITH OXIA : 03AD greek small letter epsilon with tonos 1F74 GREEK SMALL LETTER ETA WITH VARIA : 03B7 0300 1F75 GREEK SMALL LETTER ETA WITH OXIA : 03AE greek small letter eta with tonos 1F76 GREEK SMALL LETTER IOTA WITH VARIA : 03B9 0300 1F77 GREEK SMALL LETTER IOTA WITH OXIA : 03AF greek small letter iota with tonos 1F78 GREEK SMALL LETTER OMICRON WITH VARIA : 03BF 0300 1F79 GREEK SMALL LETTER OMICRON WITH OXIA : 03CC greek small letter omicron with tonos 1F7A GREEK SMALL LETTER UPSILON WITH VARIA : 03C5 0300 1F7B GREEK SMALL LETTER UPSILON WITH OXIA : 03CD greek small letter upsilon with tonos 1F7C GREEK SMALL LETTER OMEGA WITH VARIA : 03C9 0300 1F7D GREEK SMALL LETTER OMEGA WITH OXIA : 03CE greek small letter omega with tonos 1F80 GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI : 1F00 0345 1F81 GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI : 1F01 0345 1F82 GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI : 1F02 0345 1F83 GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI : 1F03 0345 1F84 GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI : 1F04 0345 1F85 GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI : 1F05 0345 1F86 GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI : 1F06 0345 1F87 GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI : 1F07 0345 1F88 GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI : 1F08 0345 1F89 GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI : 1F09 0345 1F8A GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI : 1F0A 0345 1F8B GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI : 1F0B 0345 1F8C GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI : 1F0C 0345 1F8D GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI : 1F0D 0345 1F8E GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI : 1F0E 0345 1F8F GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI : 1F0F 0345 1F90 GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI : 1F20 0345 1F91 GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI : 1F21 0345 1F92 GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI : 1F22 0345 1F93 GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI : 1F23 0345 1F94 GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI : 1F24 0345 1F95 GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI : 1F25 0345 1F96 GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI : 1F26 0345 1F97 GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI : 1F27 0345 1F98 GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI : 1F28 0345 1F99 GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI : 1F29 0345 1F9A GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI : 1F2A 0345 1F9B GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI : 1F2B 0345 1F9C GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI : 1F2C 0345 1F9D GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI : 1F2D 0345 1F9E GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI : 1F2E 0345 1F9F GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI : 1F2F 0345 1FA0 GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI : 1F60 0345 1FA1 GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI : 1F61 0345 1FA2 GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI : 1F62 0345 1FA3 GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI : 1F63 0345 1FA4 GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI : 1F64 0345 1FA5 GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI : 1F65 0345 1FA6 GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI : 1F66 0345 1FA7 GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI : 1F67 0345 1FA8 GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI : 1F68 0345 1FA9 GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI : 1F69 0345 1FAA GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI : 1F6A 0345 1FAB GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI : 1F6B 0345 1FAC GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI : 1F6C 0345 1FAD GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI : 1F6D 0345 1FAE GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI : 1F6E 0345 1FAF GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI : 1F6F 0345 1FB0 GREEK SMALL LETTER ALPHA WITH VRACHY : 03B1 0306 1FB1 GREEK SMALL LETTER ALPHA WITH MACRON : 03B1 0304 1FB2 GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI : 1F70 0345 1FB3 GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI : 03B1 0345 1FB4 GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI : 03AC 0345 1FB6 GREEK SMALL LETTER ALPHA WITH PERISPOMENI : 03B1 0342 1FB7 GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI : 1FB6 0345 1FB8 GREEK CAPITAL LETTER ALPHA WITH VRACHY : 0391 0306 1FB9 GREEK CAPITAL LETTER ALPHA WITH MACRON : 0391 0304 1FBA GREEK CAPITAL LETTER ALPHA WITH VARIA : 0391 0300 1FBB GREEK CAPITAL LETTER ALPHA WITH OXIA : 0386 greek capital letter alpha with tonos 1FBC GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI : 0391 0345 1FBD GREEK KORONIS # 0020 0313 1FBE GREEK PROSGEGRAMMENI : 03B9 greek small letter iota 1FBF GREEK PSILI x (modifier letter apostrophe - 02BC) # 0020 0313 1FC0 GREEK PERISPOMENI # 0020 0342 1FC1 GREEK DIALYTIKA AND PERISPOMENI : 00A8 0342 1FC2 GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI : 1F74 0345 1FC3 GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI : 03B7 0345 1FC4 GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI : 03AE 0345 1FC6 GREEK SMALL LETTER ETA WITH PERISPOMENI : 03B7 0342 1FC7 GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI : 1FC6 0345 1FC8 GREEK CAPITAL LETTER EPSILON WITH VARIA : 0395 0300 1FC9 GREEK CAPITAL LETTER EPSILON WITH OXIA : 0388 greek capital letter epsilon with tonos 1FCA GREEK CAPITAL LETTER ETA WITH VARIA : 0397 0300 1FCB GREEK CAPITAL LETTER ETA WITH OXIA : 0389 greek capital letter eta with tonos 1FCC GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI : 0397 0345 1FCD GREEK PSILI AND VARIA : 1FBF 0300 1FCE GREEK PSILI AND OXIA : 1FBF 0301 1FCF GREEK PSILI AND PERISPOMENI : 1FBF 0342 1FD0 GREEK SMALL LETTER IOTA WITH VRACHY : 03B9 0306 1FD1 GREEK SMALL LETTER IOTA WITH MACRON : 03B9 0304 1FD2 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA : 03CA 0300 1FD3 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA : 0390 greek small letter iota with dialytika and tonos 1FD6 GREEK SMALL LETTER IOTA WITH PERISPOMENI : 03B9 0342 1FD7 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI : 03CA 0342 1FD8 GREEK CAPITAL LETTER IOTA WITH VRACHY : 0399 0306 1FD9 GREEK CAPITAL LETTER IOTA WITH MACRON : 0399 0304 1FDA GREEK CAPITAL LETTER IOTA WITH VARIA : 0399 0300 1FDB GREEK CAPITAL LETTER IOTA WITH OXIA : 038A greek capital letter iota with tonos 1FDD GREEK DASIA AND VARIA : 1FFE 0300 1FDE GREEK DASIA AND OXIA : 1FFE 0301 1FDF GREEK DASIA AND PERISPOMENI : 1FFE 0342 1FE0 GREEK SMALL LETTER UPSILON WITH VRACHY : 03C5 0306 1FE1 GREEK SMALL LETTER UPSILON WITH MACRON : 03C5 0304 1FE2 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA : 03CB 0300 1FE3 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA : 03B0 greek small letter upsilon with dialytika and tonos 1FE4 GREEK SMALL LETTER RHO WITH PSILI : 03C1 0313 1FE5 GREEK SMALL LETTER RHO WITH DASIA : 03C1 0314 1FE6 GREEK SMALL LETTER UPSILON WITH PERISPOMENI : 03C5 0342 1FE7 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI : 03CB 0342 1FE8 GREEK CAPITAL LETTER UPSILON WITH VRACHY : 03A5 0306 1FE9 GREEK CAPITAL LETTER UPSILON WITH MACRON : 03A5 0304 1FEA GREEK CAPITAL LETTER UPSILON WITH VARIA : 03A5 0300 1FEB GREEK CAPITAL LETTER UPSILON WITH OXIA : 038E greek capital letter upsilon with tonos 1FEC GREEK CAPITAL LETTER RHO WITH DASIA : 03A1 0314 1FED GREEK DIALYTIKA AND VARIA : 00A8 0300 1FEE GREEK DIALYTIKA AND OXIA : 0385 greek dialytika tonos 1FEF GREEK VARIA : 0060 grave accent 1FF2 GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI : 1F7C 0345 1FF3 GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI : 03C9 0345 1FF4 GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI : 03CE 0345 1FF6 GREEK SMALL LETTER OMEGA WITH PERISPOMENI : 03C9 0342 1FF7 GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI : 1FF6 0345 1FF8 GREEK CAPITAL LETTER OMICRON WITH VARIA : 039F 0300 1FF9 GREEK CAPITAL LETTER OMICRON WITH OXIA : 038C greek capital letter omicron with tonos 1FFA GREEK CAPITAL LETTER OMEGA WITH VARIA : 03A9 0300 1FFB GREEK CAPITAL LETTER OMEGA WITH OXIA : 038F greek capital letter omega with tonos 1FFC GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI : 03A9 0345 1FFD GREEK OXIA : 00B4 acute accent 1FFE GREEK DASIA x (modifier letter reversed comma - 02BD) # 0020 0314 @@ 2000 General Punctuation 206F @@+ @+ For additional general punctuation characters see also Basic Latin, Latin-1, Supplemental Punctuation and CJK Symbols and Punctuation. @ Spaces 2000 EN QUAD : 2002 en space 2001 EM QUAD = mutton quad : 2003 em space 2002 EN SPACE = nut * half an em # 0020 space 2003 EM SPACE = mutton * nominally, a space equal to the type size in points * may scale by the condensation factor of a font # 0020 space 2004 THREE-PER-EM SPACE = thick space # 0020 space 2005 FOUR-PER-EM SPACE = mid space # 0020 space 2006 SIX-PER-EM SPACE * in computer typography sometimes equated to thin space # 0020 space 2007 FIGURE SPACE * space equal to tabular width of a font * this is equivalent to the digit width of fonts with fixed-width digits # 0020 2008 PUNCTUATION SPACE * space equal to narrow punctuation of a font # 0020 space 2009 THIN SPACE * a fifth of an em (or sometimes a sixth) x (narrow no-break space - 202F) # 0020 space 200A HAIR SPACE * thinner than a thin space * in traditional typography, the thinnest space available # 0020 space @ Format characters 200B ZERO WIDTH SPACE * commonly abbreviated ZWSP * this character is intended for invisible word separation and for line break control; it has no width, but its presence between two characters does not prevent increased letter spacing in justification 200C ZERO WIDTH NON-JOINER * commonly abbreviated ZWNJ 200D ZERO WIDTH JOINER * commonly abbreviated ZWJ 200E LEFT-TO-RIGHT MARK * commonly abbreviated LRM 200F RIGHT-TO-LEFT MARK * commonly abbreviated RLM x (arabic letter mark - 061C) @ Dashes 2010 HYPHEN x (hyphen-minus - 002D) x (soft hyphen - 00AD) 2011 NON-BREAKING HYPHEN x (hyphen-minus - 002D) x (soft hyphen - 00AD) # 2010 2012 FIGURE DASH 2013 EN DASH 2014 EM DASH * may be used in pairs to offset parenthetical text x (two-em dash - 2E3A) x (katakana-hiragana prolonged sound mark - 30FC) 2015 HORIZONTAL BAR = quotation dash * long dash introducing quoted text @ General punctuation 2016 DOUBLE VERTICAL LINE * used in pairs to indicate norm of a matrix x (combining double vertical stroke overlay - 20E6) x (parallel to - 2225) x (double vertical bar - 23F8) 2017 DOUBLE LOW LINE * this is a spacing character x (low line - 005F) x (combining double low line - 0333) # 0020 0333 @ Quotation marks and apostrophe @+ Use of quotation marks differs by language. The character names cannot reflect actual usage for all languages. 2018 LEFT SINGLE QUOTATION MARK = single turned comma quotation mark * this is the preferred character (as opposed to 201B) x (apostrophe - 0027) x (modifier letter turned comma - 02BB) x (heavy single turned comma quotation mark ornament - 275B) 2019 RIGHT SINGLE QUOTATION MARK = single comma quotation mark * this is the preferred character to use for apostrophe x (apostrophe - 0027) x (modifier letter apostrophe - 02BC) x (heavy single comma quotation mark ornament - 275C) 201A SINGLE LOW-9 QUOTATION MARK = low single comma quotation mark * used as opening single quotation mark in some languages 201B SINGLE HIGH-REVERSED-9 QUOTATION MARK = single reversed comma quotation mark * has same semantic as 2018, but differs in appearance x (modifier letter reversed comma - 02BD) 201C LEFT DOUBLE QUOTATION MARK = double turned comma quotation mark * this is the preferred character (as opposed to 201F) x (quotation mark - 0022) x (heavy double turned comma quotation mark ornament - 275D) x (reversed double prime quotation mark - 301D) 201D RIGHT DOUBLE QUOTATION MARK = double comma quotation mark x (quotation mark - 0022) x (double prime - 2033) x (heavy double comma quotation mark ornament - 275E) x (double prime quotation mark - 301E) 201E DOUBLE LOW-9 QUOTATION MARK = low double comma quotation mark * used as opening double quotation mark in some languages x (double low-reversed-9 quotation mark - 2E42) x (low double prime quotation mark - 301F) 201F DOUBLE HIGH-REVERSED-9 QUOTATION MARK = double reversed comma quotation mark * has same semantic as 201C, but differs in appearance @ General punctuation 2020 DAGGER = obelisk, long cross, oblong cross x (turned dagger - 2E38) 2021 DOUBLE DAGGER = diesis, double obelisk 2022 BULLET = black small circle x (middle dot - 00B7) x (one dot leader - 2024) x (bullet operator - 2219) x (inverse bullet - 25D8) x (white bullet - 25E6) 2023 TRIANGULAR BULLET x (end of proof - 220E) x (black right-pointing small triangle - 25B8) 2024 ONE DOT LEADER * also used as an Armenian semicolon (mijaket) x (middle dot - 00B7) x (bullet - 2022) x (bullet operator - 2219) # 002E full stop 2025 TWO DOT LEADER # 002E 002E 2026 HORIZONTAL ELLIPSIS = three dot leader x (vertical ellipsis - 22EE) x (presentation form for vertical horizontal ellipsis - FE19) # 002E 002E 002E 2027 HYPHENATION POINT * visible symbol used to indicate correct positions for word breaking, as in dic·tion·ar·ies @ Format characters 2028 LINE SEPARATOR * may be used to represent this semantic unambiguously 2029 PARAGRAPH SEPARATOR * may be used to represent this semantic unambiguously 202A LEFT-TO-RIGHT EMBEDDING * commonly abbreviated LRE 202B RIGHT-TO-LEFT EMBEDDING * commonly abbreviated RLE 202C POP DIRECTIONAL FORMATTING * commonly abbreviated PDF 202D LEFT-TO-RIGHT OVERRIDE * commonly abbreviated LRO 202E RIGHT-TO-LEFT OVERRIDE * commonly abbreviated RLO 202F NARROW NO-BREAK SPACE * commonly abbreviated NNBSP * a narrow form of a no-break space, typically the width of a thin space or a mid space x (no-break space - 00A0) x (four-per-em space - 2005) x (thin space - 2009) # 0020 @ General punctuation 2030 PER MILLE SIGN = permille, per thousand * used, for example, in measures of blood alcohol content, salinity, etc. x (percent sign - 0025) x (arabic-indic per mille sign - 0609) 2031 PER TEN THOUSAND SIGN = permyriad * percent of a percent, rarely used x (percent sign - 0025) x (arabic-indic per ten thousand sign - 060A) 2032 PRIME = minutes, feet x (apostrophe - 0027) x (acute accent - 00B4) x (modifier letter prime - 02B9) 2033 DOUBLE PRIME = seconds, inches x (quotation mark - 0022) x (modifier letter double prime - 02BA) x (right double quotation mark - 201D) x (ditto mark - 3003) x (double prime quotation mark - 301E) # 2032 2032 2034 TRIPLE PRIME = lines (old measure, 1/12 of an inch) # 2032 2032 2032 2035 REVERSED PRIME x (grave accent - 0060) 2036 REVERSED DOUBLE PRIME x (reversed double prime quotation mark - 301D) # 2035 2035 2037 REVERSED TRIPLE PRIME # 2035 2035 2035 2038 CARET x (up arrowhead - 2303) x (modifier letter low circumflex accent - A788) @ Quotation marks 2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK = left pointing single guillemet * usually opening, sometimes closing x (less-than sign - 003C) x (left-pointing angle bracket - 2329) x (left angle bracket - 3008) 203A SINGLE RIGHT-POINTING ANGLE QUOTATION MARK = right pointing single guillemet * usually closing, sometimes opening x (greater-than sign - 003E) x (right-pointing angle bracket - 232A) x (right angle bracket - 3009) @ General punctuation 203B REFERENCE MARK = Japanese kome = Urdu paragraph separator x (tibetan ku ru kha bzhi mig can - 0FBF) x (cjk unified ideograph-200AD - 200AD) @ Double punctuation for vertical text 203C DOUBLE EXCLAMATION MARK x (exclamation mark - 0021) ~ 203C FE0E text style ~ 203C FE0F emoji style # 0021 0021 @ General punctuation 203D INTERROBANG x (exclamation mark - 0021) x (question mark - 003F) x (inverted interrobang - 2E18) x (heavy interrobang ornament - 1F679) 203E OVERLINE = spacing overscore # 0020 0305 203F UNDERTIE = Greek enotikon x (smile - 2323) 2040 CHARACTER TIE = z notation sequence concatenation x (frown - 2322) 2041 CARET INSERTION POINT * proofreader's mark: insert here x (right semidirect product - 22CC) 2042 ASTERISM 2043 HYPHEN BULLET x (hyphen-minus - 002D) 2044 FRACTION SLASH = solidus (in typography) * for composing arbitrary fractions x (solidus - 002F) x (division slash - 2215) 2045 LEFT SQUARE BRACKET WITH QUILL 2046 RIGHT SQUARE BRACKET WITH QUILL @ Double punctuation for vertical text 2047 DOUBLE QUESTION MARK # 003F 003F 2048 QUESTION EXCLAMATION MARK # 003F 0021 2049 EXCLAMATION QUESTION MARK ~ 2049 FE0E text style ~ 2049 FE0F emoji style # 0021 003F @ General punctuation 204A TIRONIAN SIGN ET * Irish Gaelic, Old English, ... x (ampersand - 0026) x (script ligature et ornament - 1F670) 204B REVERSED PILCROW SIGN x (pilcrow sign - 00B6) 204C BLACK LEFTWARDS BULLET 204D BLACK RIGHTWARDS BULLET 204E LOW ASTERISK x (asterisk - 002A) x (combining asterisk below - 0359) 204F REVERSED SEMICOLON * also used in Sindhi x (semicolon - 003B) x (arabic semicolon - 061B) 2050 CLOSE UP * editing mark x (modifier breve with inverted breve - AB5B) 2051 TWO ASTERISKS ALIGNED VERTICALLY 2052 COMMERCIAL MINUS SIGN = abzüglich (German), med avdrag av (Swedish), piska (Swedish, "whip") * a common glyph variant and fallback representation looks like ./. * may also be used as a dingbat to indicate correctness * used in Finno-Ugric Phonetic Alphabet to indicate a related borrowed form with different sound x (percent sign - 0025) x (arabic percent sign - 066A) x (division sign - 00F7) 2053 SWUNG DASH x (tilde - 007E) 2054 INVERTED UNDERTIE 2055 FLOWER PUNCTUATION MARK = phul, puspika * used as a punctuation mark with Syloti Nagri, Bengali and other Indic scripts x (heavy eight teardrop-spoked propeller asterisk - 274B) @ Archaic punctuation 2056 THREE DOT PUNCTUATION x (georgian paragraph separator - 10FB) @ General punctuation 2057 QUADRUPLE PRIME # 2032 2032 2032 2032 @ Archaic punctuation 2058 FOUR DOT PUNCTUATION 2059 FIVE DOT PUNCTUATION = Greek pentonkion = quincunx x (die face-5 - 2684) 205A TWO DOT PUNCTUATION * historically used to indicate the end of a sentence or change of speaker * extends from baseline to cap height x (presentation form for vertical two dot leader - FE30) x (greek acrophonic epidaurean two - 1015B) 205B FOUR DOT MARK * used by scribes in the margin as highlighter mark * this is centered on the line, but extends beyond top and bottom of the line 205C DOTTED CROSS * used by scribes in the margin as highlighter mark 205D TRICOLON = Epidaurean acrophonic symbol three x (vertical ellipsis - 22EE) x (triple colon operator - 2AF6) x (presentation form for vertical horizontal ellipsis - FE19) 205E VERTICAL FOUR DOTS * used in dictionaries to indicate legal but undesirable word break * glyph extends the whole height of the line x (vertical six dots - 2E3D) @ Space 205F MEDIUM MATHEMATICAL SPACE * abbreviated MMSP * four-eighteenths of an em # 0020 space @ Format character 2060 WORD JOINER * commonly abbreviated WJ * a zero width non-breaking space (only) * intended for disambiguation of functions for byte order mark x (zero width no-break space - FEFF) @ Invisible operators 2061 FUNCTION APPLICATION * contiguity operator indicating application of a function 2062 INVISIBLE TIMES * contiguity operator indicating multiplication 2063 INVISIBLE SEPARATOR = invisible comma * contiguity operator indicating that adjacent mathematical symbols form a list, e.g. when no visible comma is used between multiple indices 2064 INVISIBLE PLUS * contiguity operator indicating addition @ Format characters 2066 LEFT-TO-RIGHT ISOLATE 2067 RIGHT-TO-LEFT ISOLATE 2068 FIRST STRONG ISOLATE 2069 POP DIRECTIONAL ISOLATE @ Deprecated @+ Use of these characters is strongly discouraged. 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 Superscripts and Subscripts 209F @ Superscripts @+ See also superscript Latin letters in the Spacing Modifier Letters block starting at 02B0. 2070 SUPERSCRIPT ZERO # 0030 2071 SUPERSCRIPT LATIN SMALL LETTER I * functions as a modifier letter # 0069 2072 x (superscript two - 00B2) 2073 x (superscript three - 00B3) 2074 SUPERSCRIPT FOUR # 0034 2075 SUPERSCRIPT FIVE # 0035 2076 SUPERSCRIPT SIX # 0036 2077 SUPERSCRIPT SEVEN # 0037 2078 SUPERSCRIPT EIGHT # 0038 2079 SUPERSCRIPT NINE # 0039 207A SUPERSCRIPT PLUS SIGN # 002B 207B SUPERSCRIPT MINUS # 2212 207C SUPERSCRIPT EQUALS SIGN # 003D 207D SUPERSCRIPT LEFT PARENTHESIS # 0028 207E SUPERSCRIPT RIGHT PARENTHESIS # 0029 207F SUPERSCRIPT LATIN SMALL LETTER N * functions as a modifier letter # 006E @ Subscripts 2080 SUBSCRIPT ZERO # 0030 2081 SUBSCRIPT ONE # 0031 2082 SUBSCRIPT TWO # 0032 2083 SUBSCRIPT THREE # 0033 2084 SUBSCRIPT FOUR # 0034 2085 SUBSCRIPT FIVE # 0035 2086 SUBSCRIPT SIX # 0036 2087 SUBSCRIPT SEVEN # 0037 2088 SUBSCRIPT EIGHT # 0038 2089 SUBSCRIPT NINE # 0039 208A SUBSCRIPT PLUS SIGN # 002B 208B SUBSCRIPT MINUS # 2212 208C SUBSCRIPT EQUALS SIGN # 003D 208D SUBSCRIPT LEFT PARENTHESIS # 0028 208E SUBSCRIPT RIGHT PARENTHESIS # 0029 2090 LATIN SUBSCRIPT SMALL LETTER A # 0061 2091 LATIN SUBSCRIPT SMALL LETTER E # 0065 2092 LATIN SUBSCRIPT SMALL LETTER O # 006F 2093 LATIN SUBSCRIPT SMALL LETTER X # 0078 2094 LATIN SUBSCRIPT SMALL LETTER SCHWA # 0259 @ Subscripts for UPA 2095 LATIN SUBSCRIPT SMALL LETTER H # 0068 2096 LATIN SUBSCRIPT SMALL LETTER K # 006B 2097 LATIN SUBSCRIPT SMALL LETTER L # 006C 2098 LATIN SUBSCRIPT SMALL LETTER M # 006D 2099 LATIN SUBSCRIPT SMALL LETTER N # 006E 209A LATIN SUBSCRIPT SMALL LETTER P # 0070 209B LATIN SUBSCRIPT SMALL LETTER S # 0073 209C LATIN SUBSCRIPT SMALL LETTER T # 0074 @@ 20A0 Currency Symbols 20CF @ Currency symbols @+ A number of currency symbols are found in other blocks. Fullwidth versions of some currency symbols are found in the Halfwidth and Fullwidth Forms block. x (dollar sign - 0024) x (cent sign - 00A2) x (pound sign - 00A3) x (currency sign - 00A4) x (yen sign - 00A5) x (latin small letter f with hook - 0192) x (armenian dram sign - 058F) x (afghani sign - 060B) x (bengali rupee mark - 09F2) x (bengali rupee sign - 09F3) x (gujarati rupee sign - 0AF1) x (tamil rupee sign - 0BF9) x (thai currency symbol baht - 0E3F) x (khmer currency symbol riel - 17DB) x (script capital m - 2133) x (cjk unified ideograph-5143 - 5143) x (cjk unified ideograph-5186 - 5186) x (cjk unified ideograph-5706 - 5706) x (cjk unified ideograph-5713 - 5713) x (rial sign - FDFC) 20A0 EURO-CURRENCY SIGN * intended for ECU, but not widely used * historical character; this is NOT the euro! x (euro sign - 20AC) 20A1 COLON SIGN * Costa Rica, El Salvador 20A2 CRUZEIRO SIGN * Brazil 20A3 FRENCH FRANC SIGN * France 20A4 LIRA SIGN * intended for lira, but not widely used * preferred character for lira is 00A3 x (pound sign - 00A3) x (turkish lira sign - 20BA) 20A5 MILL SIGN * USA (1/10 cent) 20A6 NAIRA SIGN * Nigeria 20A7 PESETA SIGN * Spain x (peso sign - 20B1) 20A8 RUPEE SIGN * India, unofficial legacy practice x (indian rupee sign - 20B9) # 0052 0073 20A9 WON SIGN * Korea 20AA NEW SHEQEL SIGN * Israel 20AB DONG SIGN * Vietnam 20AC EURO SIGN * currency sign for the European Monetary Union * euro, not ecu x (euro-currency sign - 20A0) 20AD KIP SIGN * Laos 20AE TUGRIK SIGN * Mongolia * also transliterated as tugrug, tugric, tugrog, togrog, tögrög 20AF DRACHMA SIGN * Greece 20B0 GERMAN PENNY SIGN 20B1 PESO SIGN = Filipino peso sign * Philippines * extant and discontinued Latin-American peso currencies (Mexican, Chilean, Colombian, etc.) use the dollar sign x (dollar sign - 0024) x (peseta sign - 20A7) 20B2 GUARANI SIGN * Paraguay * Often represented by G. or Gs. 20B3 AUSTRAL SIGN * former Argentinian currency 20B4 HRYVNIA SIGN * Ukraine 20B5 CEDI SIGN * Ghana * glyph may look like '023B' or like C with a short vertical stroke through the upper arm x (cent sign - 00A2) x (latin capital letter c with stroke - 023B) 20B6 LIVRE TOURNOIS SIGN * used in France from 13th-18th centuries 20B7 SPESMILO SIGN * historical international currency associated with Esperanto 20B8 TENGE SIGN * Kazakhstan x (apl functional symbol up tack overbar - 2351) x (box drawings down single and horizontal double - 2564) x (postal mark - 3012) 20B9 INDIAN RUPEE SIGN * official rupee currency sign for India * contrasts with script-specific rupee signs and abbreviations x (devanagari letter ra - 0930) 20BA TURKISH LIRA SIGN * official lira currency sign for Turkey 20BB NORDIC MARK SIGN * early representation of the Mark currency used in Denmark and Norway x (script capital m - 2133) 20BC MANAT SIGN * Azerbaijan 20BD RUBLE SIGN * Russia 20BE LARI SIGN * Georgia @@ 20D0 Combining Diacritical Marks for Symbols 20FF @ Combining diacritical marks for symbols 20D0 COMBINING LEFT HARPOON ABOVE 20D1 COMBINING RIGHT HARPOON ABOVE * vector 20D2 COMBINING LONG VERTICAL LINE OVERLAY * negation 20D3 COMBINING SHORT VERTICAL LINE OVERLAY * occasional variant for negation 20D4 COMBINING ANTICLOCKWISE ARROW ABOVE 20D5 COMBINING CLOCKWISE ARROW ABOVE * rotation 20D6 COMBINING LEFT ARROW ABOVE 20D7 COMBINING RIGHT ARROW ABOVE * vector 20D8 COMBINING RING OVERLAY 20D9 COMBINING CLOCKWISE RING OVERLAY 20DA COMBINING ANTICLOCKWISE RING OVERLAY 20DB COMBINING THREE DOTS ABOVE = third derivative 20DC COMBINING FOUR DOTS ABOVE = fourth derivative @ Enclosing diacritics 20DD COMBINING ENCLOSING CIRCLE = JIS composition circle = Cyrillic combining ten thousands sign x (white circle - 25CB) x (large circle - 25EF) x (ideographic number zero - 3007) 20DE COMBINING ENCLOSING SQUARE x (white square - 25A1) 20DF COMBINING ENCLOSING DIAMOND x (white diamond - 25C7) 20E0 COMBINING ENCLOSING CIRCLE BACKSLASH * prohibition x (prohibited sign - 1F6C7) @ Additional diacritical mark for symbols 20E1 COMBINING LEFT RIGHT ARROW ABOVE * tensor @ Additional enclosing diacritics 20E2 COMBINING ENCLOSING SCREEN x (clear screen symbol - 239A) x (screen - 1F5B5) 20E3 COMBINING ENCLOSING KEYCAP 20E4 COMBINING ENCLOSING UPWARD POINTING TRIANGLE x (white up-pointing triangle - 25B3) @ Additional diacritical marks for symbols 20E5 COMBINING REVERSE SOLIDUS OVERLAY x (reverse solidus - 005C) 20E6 COMBINING DOUBLE VERTICAL STROKE OVERLAY = z notation finite function diacritic x (double vertical line - 2016) 20E7 COMBINING ANNUITY SYMBOL = actuarial bend x (right ceiling - 2309) 20E8 COMBINING TRIPLE UNDERDOT 20E9 COMBINING WIDE BRIDGE ABOVE = contraction operator * extends the full width of the base character x (combining bridge above - 0346) 20EA COMBINING LEFTWARDS ARROW OVERLAY x (leftwards arrow - 2190) 20EB COMBINING LONG DOUBLE SOLIDUS OVERLAY = long double slash overlay 20EC COMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDS 20ED COMBINING LEFTWARDS HARPOON WITH BARB DOWNWARDS 20EE COMBINING LEFT ARROW BELOW 20EF COMBINING RIGHT ARROW BELOW 20F0 COMBINING ASTERISK ABOVE @@ 2100 Letterlike Symbols 214F @ Letterlike symbols @+ Some of the letterlike symbols are intended to complete the set of mathematical alphanumeric symbols starting at 1D400. 2100 ACCOUNT OF # 0061 002F 0063 2101 ADDRESSED TO THE SUBJECT x (aktieselskab - 214D) # 0061 002F 0073 2102 DOUBLE-STRUCK CAPITAL C = the set of complex numbers # 0043 latin capital letter c 2103 DEGREE CELSIUS = degrees Centigrade # 00B0 0043 2104 CENTRE LINE SYMBOL = clone 2105 CARE OF # 0063 002F 006F 2106 CADA UNA # 0063 002F 0075 2107 EULER CONSTANT x (latin capital letter e - 0045) # 0190 latin capital letter open e 2108 SCRUPLE 2109 DEGREE FAHRENHEIT # 00B0 0046 210A SCRIPT SMALL G = real number symbol # 0067 latin small letter g 210B SCRIPT CAPITAL H = Hamiltonian operator # 0048 latin capital letter h 210C BLACK-LETTER CAPITAL H = Hilbert space # 0048 latin capital letter h 210D DOUBLE-STRUCK CAPITAL H # 0048 latin capital letter h 210E PLANCK CONSTANT = height, specific enthalpy, ... * simply a mathematical italic h; this character's name results from legacy usage # 0068 latin small letter h 210F PLANCK CONSTANT OVER TWO PI x (cyrillic small letter tshe - 045B) # 0127 latin small letter h with stroke 2110 SCRIPT CAPITAL I # 0049 latin capital letter i 2111 BLACK-LETTER CAPITAL I = imaginary part # 0049 latin capital letter i 2112 SCRIPT CAPITAL L = Laplace transform # 004C latin capital letter l 2113 SCRIPT SMALL L = mathematical symbol 'ell' = liter (traditional symbol) * despite its character name, this symbol is derived from a special italicized version of the small letter l * the SI recommended symbol for liter is 006C or 004C x (mathematical script small l - 1D4C1) # 006C latin small letter l 2114 L B BAR SYMBOL = pounds x (number sign - 0023) 2115 DOUBLE-STRUCK CAPITAL N = natural number * a glyph variant with doubled vertical strokes exists # 004E latin capital letter n 2116 NUMERO SIGN # 004E 006F 2117 SOUND RECORDING COPYRIGHT = published = phonorecord sign x (copyright sign - 00A9) x (circled latin capital letter p - 24C5) 2118 SCRIPT CAPITAL P % WEIERSTRASS ELLIPTIC FUNCTION * actually this has the form of a lowercase calligraphic p, despite its name 2119 DOUBLE-STRUCK CAPITAL P # 0050 latin capital letter p 211A DOUBLE-STRUCK CAPITAL Q = the set of rational numbers # 0051 latin capital letter q 211B SCRIPT CAPITAL R = Riemann Integral # 0052 latin capital letter r 211C BLACK-LETTER CAPITAL R = real part # 0052 latin capital letter r 211D DOUBLE-STRUCK CAPITAL R = the set of real numbers # 0052 latin capital letter r 211E PRESCRIPTION TAKE = recipe = cross ratio 211F RESPONSE 2120 SERVICE MARK # 0053 004D 2121 TELEPHONE SIGN * typical forms for this symbol may use lowercase, small caps or superscripted letter shapes x (black telephone - 260E) x (telephone location sign - 2706) x (telephone receiver - 1F4DE) # 0054 0045 004C 2122 TRADE MARK SIGN x (circled wz - 1F12E) ~ 2122 FE0E text style ~ 2122 FE0F emoji style # 0054 004D 2123 VERSICLE 2124 DOUBLE-STRUCK CAPITAL Z = the set of integers # 005A latin capital letter z 2125 OUNCE SIGN x (latin small letter ezh - 0292) x (alchemical symbol for half ounce - 1F773) 2126 OHM SIGN * SI unit of resistance, named after G. S. Ohm, German physicist * preferred representation is 03A9 x (ascending node - 260A) : 03A9 greek capital letter omega 2127 INVERTED OHM SIGN = mho * archaic unit of conductance (= the SI unit siemens) * typographically a turned greek capital letter omega x (latin capital letter upsilon - 01B1) x (greek capital letter omega - 03A9) x (descending node - 260B) 2128 BLACK-LETTER CAPITAL Z # 005A latin capital letter z 2129 TURNED GREEK SMALL LETTER IOTA * unique element fulfilling a description (logic) x (greek small letter iota - 03B9) 212A KELVIN SIGN : 004B latin capital letter k 212B ANGSTROM SIGN * non SI length unit (=0.1 nm) named after A. J. Ångström, Swedish physicist * preferred representation is 00C5 : 00C5 latin capital letter a with ring above 212C SCRIPT CAPITAL B = Bernoulli function # 0042 latin capital letter b 212D BLACK-LETTER CAPITAL C # 0043 latin capital letter c 212E ESTIMATED SYMBOL * used in European packaging x (latin small letter e - 0065) 212F SCRIPT SMALL E = error = natural exponent # 0065 latin small letter e 2130 SCRIPT CAPITAL E = emf (electromotive force) # 0045 latin capital letter e 2131 SCRIPT CAPITAL F = Fourier transform # 0046 latin capital letter f 2132 TURNED CAPITAL F = Claudian digamma inversum * lowercase is 214E x (latin capital letter f - 0046) x (greek letter digamma - 03DC) 2133 SCRIPT CAPITAL M = M-matrix (physics) = German Mark currency symbol, before WWII * when used for the Mark symbol, the range of glyph variation is restricted x (nordic mark sign - 20BB) # 004D latin capital letter m 2134 SCRIPT SMALL O = order, of inferior order to # 006F latin small letter o @ Hebrew letterlike math symbols @+ These are left-to-right characters. 2135 ALEF SYMBOL = first transfinite cardinal (countable) # 05D0 hebrew letter alef 2136 BET SYMBOL = second transfinite cardinal (the continuum) # 05D1 hebrew letter bet 2137 GIMEL SYMBOL = third transfinite cardinal (functions of a real variable) # 05D2 hebrew letter gimel 2138 DALET SYMBOL = fourth transfinite cardinal # 05D3 hebrew letter dalet @ Additional letterlike symbols 2139 INFORMATION SOURCE * intended for use with 20DD x (circled information source - 1F6C8) ~ 2139 FE0E text style ~ 2139 FE0F emoji style # 0069 latin small letter i 213A ROTATED CAPITAL Q * a binding signature mark 213B FACSIMILE SIGN * typical forms for this symbol may use lowercase, small caps or superscripted letter shapes x (telephone sign - 2121) x (fax machine - 1F4E0) # 0046 0041 0058 213C DOUBLE-STRUCK SMALL PI # 03C0 greek small letter pi 213D DOUBLE-STRUCK SMALL GAMMA # 03B3 greek small letter gamma 213E DOUBLE-STRUCK CAPITAL GAMMA # 0393 greek capital letter gamma 213F DOUBLE-STRUCK CAPITAL PI # 03A0 greek capital letter pi @ Double-struck large operator 2140 DOUBLE-STRUCK N-ARY SUMMATION # 2211 n-ary summation @ Additional letterlike symbols 2141 TURNED SANS-SERIF CAPITAL G = game 2142 TURNED SANS-SERIF CAPITAL L 2143 REVERSED SANS-SERIF CAPITAL L 2144 TURNED SANS-SERIF CAPITAL Y @ Double-struck italic math symbols @+ These stylized mathematical symbols are used in some documents to distinguish special mathematical usages from ordinary variables. 2145 DOUBLE-STRUCK ITALIC CAPITAL D * sometimes used for the differential # 0044 latin capital letter d 2146 DOUBLE-STRUCK ITALIC SMALL D * sometimes used for the differential # 0064 latin small letter d 2147 DOUBLE-STRUCK ITALIC SMALL E * sometimes used for the natural exponent # 0065 latin small letter e 2148 DOUBLE-STRUCK ITALIC SMALL I * sometimes used for the imaginary unit # 0069 latin small letter i 2149 DOUBLE-STRUCK ITALIC SMALL J * sometimes used for the imaginary unit # 006A latin small letter j @ Additional letterlike symbols 214A PROPERTY LINE 214B TURNED AMPERSAND * used in linear logic x (ampersand - 0026) 214C PER SIGN * abbreviates the word 'per' 214D AKTIESELSKAB x (addressed to the subject - 2101) @ Lowercase Claudian letter @+ Claudian letters in inscriptions are uppercase, but may be transcribed by scholars in lowercase. 214E TURNED SMALL F * uppercase is 2132 x (greek small letter digamma - 03DD) @ Biblical editorial symbol 214F SYMBOL FOR SAMARITAN SOURCE @~ ! @@ 2150 Number Forms 218F @ Fractions @+ Other fraction number forms are found in the Latin-1 Supplement block. x (vulgar fraction one quarter - 00BC) x (vulgar fraction one half - 00BD) x (vulgar fraction three quarters - 00BE) 2150 VULGAR FRACTION ONE SEVENTH # 0031 2044 0037 2151 VULGAR FRACTION ONE NINTH # 0031 2044 0039 2152 VULGAR FRACTION ONE TENTH # 0031 2044 0031 0030 2153 VULGAR FRACTION ONE THIRD # 0031 2044 0033 2154 VULGAR FRACTION TWO THIRDS # 0032 2044 0033 2155 VULGAR FRACTION ONE FIFTH # 0031 2044 0035 2156 VULGAR FRACTION TWO FIFTHS # 0032 2044 0035 2157 VULGAR FRACTION THREE FIFTHS # 0033 2044 0035 2158 VULGAR FRACTION FOUR FIFTHS # 0034 2044 0035 2159 VULGAR FRACTION ONE SIXTH # 0031 2044 0036 215A VULGAR FRACTION FIVE SIXTHS # 0035 2044 0036 215B VULGAR FRACTION ONE EIGHTH # 0031 2044 0038 215C VULGAR FRACTION THREE EIGHTHS # 0033 2044 0038 215D VULGAR FRACTION FIVE EIGHTHS # 0035 2044 0038 215E VULGAR FRACTION SEVEN EIGHTHS # 0037 2044 0038 215F FRACTION NUMERATOR ONE # 0031 2044 @ Roman numerals 2160 ROMAN NUMERAL ONE # 0049 latin capital letter i 2161 ROMAN NUMERAL TWO # 0049 0049 2162 ROMAN NUMERAL THREE # 0049 0049 0049 2163 ROMAN NUMERAL FOUR # 0049 0056 2164 ROMAN NUMERAL FIVE # 0056 latin capital letter v 2165 ROMAN NUMERAL SIX # 0056 0049 2166 ROMAN NUMERAL SEVEN # 0056 0049 0049 2167 ROMAN NUMERAL EIGHT # 0056 0049 0049 0049 2168 ROMAN NUMERAL NINE # 0049 0058 2169 ROMAN NUMERAL TEN # 0058 latin capital letter x 216A ROMAN NUMERAL ELEVEN # 0058 0049 216B ROMAN NUMERAL TWELVE # 0058 0049 0049 216C ROMAN NUMERAL FIFTY # 004C latin capital letter l 216D ROMAN NUMERAL ONE HUNDRED # 0043 latin capital letter c 216E ROMAN NUMERAL FIVE HUNDRED # 0044 latin capital letter d 216F ROMAN NUMERAL ONE THOUSAND # 004D latin capital letter m 2170 SMALL ROMAN NUMERAL ONE # 0069 latin small letter i 2171 SMALL ROMAN NUMERAL TWO # 0069 0069 2172 SMALL ROMAN NUMERAL THREE # 0069 0069 0069 2173 SMALL ROMAN NUMERAL FOUR # 0069 0076 2174 SMALL ROMAN NUMERAL FIVE # 0076 latin small letter v 2175 SMALL ROMAN NUMERAL SIX # 0076 0069 2176 SMALL ROMAN NUMERAL SEVEN # 0076 0069 0069 2177 SMALL ROMAN NUMERAL EIGHT # 0076 0069 0069 0069 2178 SMALL ROMAN NUMERAL NINE # 0069 0078 2179 SMALL ROMAN NUMERAL TEN # 0078 latin small letter x 217A SMALL ROMAN NUMERAL ELEVEN # 0078 0069 217B SMALL ROMAN NUMERAL TWELVE # 0078 0069 0069 217C SMALL ROMAN NUMERAL FIFTY # 006C latin small letter l 217D SMALL ROMAN NUMERAL ONE HUNDRED # 0063 latin small letter c 217E SMALL ROMAN NUMERAL FIVE HUNDRED # 0064 latin small letter d 217F SMALL ROMAN NUMERAL ONE THOUSAND # 006D latin small letter m @ Archaic Roman numerals 2180 ROMAN NUMERAL ONE THOUSAND C D 2181 ROMAN NUMERAL FIVE THOUSAND 2182 ROMAN NUMERAL TEN THOUSAND 2183 ROMAN NUMERAL REVERSED ONE HUNDRED = apostrophic C = Claudian antisigma * used in combination with C and I to form large numbers * lowercase is 2184 x (greek capital reversed lunate sigma symbol - 03FD) @ Lowercase Claudian letter @+ Claudian letters in inscriptions are uppercase, but may be transcribed by scholars in lowercase. 2184 LATIN SMALL LETTER REVERSED C x (greek small reversed lunate sigma symbol - 037B) @ Archaic Roman numerals 2185 ROMAN NUMERAL SIX LATE FORM x (greek letter stigma - 03DA) 2186 ROMAN NUMERAL FIFTY EARLY FORM x (runic letter z - 16CE) x (downwards arrow - 2193) 2187 ROMAN NUMERAL FIFTY THOUSAND 2188 ROMAN NUMERAL ONE HUNDRED THOUSAND @ Fraction 2189 VULGAR FRACTION ZERO THIRDS * used in baseball scoring, from ARIB STD B24 # 0030 2044 0033 @ Turned digits 218A TURNED DIGIT TWO * digit for 10 in some duodecimal systems 218B TURNED DIGIT THREE * digit for 11 in some duodecimal systems x (latin capital letter open e - 0190) x (euler constant - 2107) x (latin small letter tresillo - A72B) @@ 2190 Arrows 21FF @ Simple arrows 2190 LEFTWARDS ARROW x (combining leftwards arrow overlay - 20EA) 2191 UPWARDS ARROW * IPA: egressive airflow 2192 RIGHTWARDS ARROW = z notation total function 2193 DOWNWARDS ARROW * IPA: ingressive airflow 2194 LEFT RIGHT ARROW = z notation relation ~ 2194 FE0E text style ~ 2194 FE0F emoji style 2195 UP DOWN ARROW ~ 2195 FE0E text style ~ 2195 FE0F emoji style 2196 NORTH WEST ARROW ~ 2196 FE0E text style ~ 2196 FE0F emoji style 2197 NORTH EAST ARROW ~ 2197 FE0E text style ~ 2197 FE0F emoji style 2198 SOUTH EAST ARROW ~ 2198 FE0E text style ~ 2198 FE0F emoji style 2199 SOUTH WEST ARROW ~ 2199 FE0E text style ~ 2199 FE0F emoji style @ Arrows with modifications 219A LEFTWARDS ARROW WITH STROKE * negation of 2190 : 2190 0338 219B RIGHTWARDS ARROW WITH STROKE * negation of 2192 : 2192 0338 219C LEFTWARDS WAVE ARROW x (wave arrow pointing directly left - 2B3F) 219D RIGHTWARDS WAVE ARROW 219E LEFTWARDS TWO HEADED ARROW = fast cursor left x (leftwards two-headed arrow with triangle arrowheads - 2BEC) 219F UPWARDS TWO HEADED ARROW = fast cursor up 21A0 RIGHTWARDS TWO HEADED ARROW = z notation total surjection = fast cursor right 21A1 DOWNWARDS TWO HEADED ARROW = form feed = fast cursor down 21A2 LEFTWARDS ARROW WITH TAIL 21A3 RIGHTWARDS ARROW WITH TAIL = z notation total injection 21A4 LEFTWARDS ARROW FROM BAR 21A5 UPWARDS ARROW FROM BAR 21A6 RIGHTWARDS ARROW FROM BAR = z notation maplet 21A7 DOWNWARDS ARROW FROM BAR = depth symbol 21A8 UP DOWN ARROW WITH BASE 21A9 LEFTWARDS ARROW WITH HOOK ~ 21A9 FE0E text style ~ 21A9 FE0F emoji style 21AA RIGHTWARDS ARROW WITH HOOK ~ 21AA FE0E text style ~ 21AA FE0F emoji style 21AB LEFTWARDS ARROW WITH LOOP 21AC RIGHTWARDS ARROW WITH LOOP 21AD LEFT RIGHT WAVE ARROW 21AE LEFT RIGHT ARROW WITH STROKE * negation of 2194 : 2194 0338 21AF DOWNWARDS ZIGZAG ARROW = electrolysis x (downwards triangle-headed zigzag arrow - 2B4D) @ Arrows with bent tips @+ Other arrows with bent tips to complete this set can be found in the Miscellaneous Symbols and Arrows block. 21B0 UPWARDS ARROW WITH TIP LEFTWARDS 21B1 UPWARDS ARROW WITH TIP RIGHTWARDS 21B2 DOWNWARDS ARROW WITH TIP LEFTWARDS 21B3 DOWNWARDS ARROW WITH TIP RIGHTWARDS @ Keyboard symbols and circle arrows 21B4 RIGHTWARDS ARROW WITH CORNER DOWNWARDS = line feed 21B5 DOWNWARDS ARROW WITH CORNER LEFTWARDS * may indicate a carriage return or new line x (return symbol - 23CE) 21B6 ANTICLOCKWISE TOP SEMICIRCLE ARROW 21B7 CLOCKWISE TOP SEMICIRCLE ARROW 21B8 NORTH WEST ARROW TO LONG BAR = home 21B9 LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR = tab with shift tab x (horizontal tab key - 2B7E) 21BA ANTICLOCKWISE OPEN CIRCLE ARROW 21BB CLOCKWISE OPEN CIRCLE ARROW @ Harpoons 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 @ Paired arrows and harpoons 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 @ Double arrows 21CD LEFTWARDS DOUBLE ARROW WITH STROKE * negation of 21D0 : 21D0 0338 21CE LEFT RIGHT DOUBLE ARROW WITH STROKE * negation of 21D4 : 21D4 0338 21CF RIGHTWARDS DOUBLE ARROW WITH STROKE * negation of 21D2 : 21D2 0338 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 @ Miscellaneous arrows and keyboard symbols 21DA LEFTWARDS TRIPLE ARROW 21DB RIGHTWARDS TRIPLE ARROW 21DC LEFTWARDS SQUIGGLE ARROW x (long leftwards squiggle arrow - 2B33) 21DD RIGHTWARDS SQUIGGLE ARROW 21DE UPWARDS ARROW WITH DOUBLE STROKE = page up 21DF DOWNWARDS ARROW WITH DOUBLE STROKE = page down 21E0 LEFTWARDS DASHED ARROW 21E1 UPWARDS DASHED ARROW 21E2 RIGHTWARDS DASHED ARROW 21E3 DOWNWARDS DASHED ARROW 21E4 LEFTWARDS ARROW TO BAR = leftward tab 21E5 RIGHTWARDS ARROW TO BAR = rightward tab @ White arrows and keyboard symbols 21E6 LEFTWARDS WHITE ARROW x (north east white arrow - 2B00) 21E7 UPWARDS WHITE ARROW = shift = level 2 select (ISO 9995-7) 21E8 RIGHTWARDS WHITE ARROW = group select (ISO 9995-7) 21E9 DOWNWARDS WHITE ARROW 21EA UPWARDS WHITE ARROW FROM BAR = caps lock 21EB UPWARDS WHITE ARROW ON PEDESTAL = level 2 lock 21EC UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR = capitals (caps) lock x (upwards white arrow from bar with horizontal bar - 2BB8) 21ED UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR = numeric lock 21EE UPWARDS WHITE DOUBLE ARROW = level 3 select 21EF UPWARDS WHITE DOUBLE ARROW ON PEDESTAL = level 3 lock 21F0 RIGHTWARDS WHITE ARROW FROM WALL = group lock 21F1 NORTH WEST ARROW TO CORNER = home 21F2 SOUTH EAST ARROW TO CORNER = end 21F3 UP DOWN WHITE ARROW = scrolling x (left right white arrow - 2B04) @ Miscellaneous arrows 21F4 RIGHT ARROW WITH SMALL CIRCLE x (left arrow with small circle - 2B30) 21F5 DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW 21F6 THREE RIGHTWARDS ARROWS x (three leftwards arrows - 2B31) 21F7 LEFTWARDS ARROW WITH VERTICAL STROKE 21F8 RIGHTWARDS ARROW WITH VERTICAL STROKE = z notation partial function 21F9 LEFT RIGHT ARROW WITH VERTICAL STROKE = z notation partial relation 21FA LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE 21FB RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE = z notation finite function 21FC LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE = z notation finite relation 21FD LEFTWARDS OPEN-HEADED ARROW 21FE RIGHTWARDS OPEN-HEADED ARROW 21FF LEFT RIGHT OPEN-HEADED ARROW @~ ! @@ 2200 Mathematical Operators 22FF @@+ @ Miscellaneous mathematical symbols 2200 FOR ALL = universal quantifier 2201 COMPLEMENT x (latin letter stretched c - 0297) 2202 PARTIAL DIFFERENTIAL 2203 THERE EXISTS = existential quantifier 2204 THERE DOES NOT EXIST : 2203 0338 2205 EMPTY SET = null set * used in linguistics to indicate a null morpheme or phonological "zero" x (latin capital letter o with stroke - 00D8) x (diameter sign - 2300) ~ 2205 FE00 zero with long diagonal stroke overlay form 2206 INCREMENT = Laplace operator = forward difference = symmetric difference (in set theory) * other symbols may also be used for symmetric difference x (greek capital letter delta - 0394) x (white up-pointing triangle - 25B3) 2207 NABLA = backward difference = gradient, del * used for Laplacian operator (written with superscript 2) x (white down-pointing triangle - 25BD) @ Set membership 2208 ELEMENT OF 2209 NOT AN ELEMENT OF : 2208 0338 220A SMALL ELEMENT OF * originates in math pi fonts; not the straight epsilon x (greek lunate epsilon symbol - 03F5) 220B CONTAINS AS MEMBER = such that 220C DOES NOT CONTAIN AS MEMBER : 220B 0338 220D SMALL CONTAINS AS MEMBER x (greek reversed lunate epsilon symbol - 03F6) @ Miscellaneous mathematical symbol 220E END OF PROOF = q.e.d. x (triangular bullet - 2023) x (black vertical rectangle - 25AE) @ N-ary operators 220F N-ARY PRODUCT = product sign x (greek capital letter pi - 03A0) 2210 N-ARY COPRODUCT = coproduct sign 2211 N-ARY SUMMATION = summation sign x (greek capital letter sigma - 03A3) x (double-struck n-ary summation - 2140) @ Operators 2212 MINUS SIGN x (hyphen-minus - 002D) x (heavy minus sign - 2796) 2213 MINUS-OR-PLUS SIGN x (plus-minus sign - 00B1) 2214 DOT PLUS 2215 DIVISION SLASH * generic division operator x (solidus - 002F) x (fraction slash - 2044) x (mathematical rising diagonal - 27CB) 2216 SET MINUS x (reverse solidus - 005C) x (mathematical falling diagonal - 27CD) x (reverse solidus operator - 29F5) 2217 ASTERISK OPERATOR x (asterisk - 002A) 2218 RING OPERATOR = composite function = APL jot x (degree sign - 00B0) x (devanagari abbreviation sign - 0970) x (white bullet - 25E6) x (avestan abbreviation mark - 10B39) 2219 BULLET OPERATOR x (middle dot - 00B7) x (bullet - 2022) x (one dot leader - 2024) 221A SQUARE ROOT = radical sign x (check mark - 2713) 221B CUBE ROOT x (arabic-indic cube root - 0606) 221C FOURTH ROOT x (arabic-indic fourth root - 0607) 221D PROPORTIONAL TO x (greek small letter alpha - 03B1) @ Miscellaneous mathematical symbol 221E INFINITY @ Angles @+ Other angle symbols are found at 299B-29AF. 221F RIGHT ANGLE 2220 ANGLE x (acute angle - 299F) 2221 MEASURED ANGLE 2222 SPHERICAL ANGLE = angle arc @ Relations 2223 DIVIDES = such that = APL stile x (vertical line - 007C) x (latin letter dental click - 01C0) 2224 DOES NOT DIVIDE : 2223 0338 2225 PARALLEL TO x (latin letter lateral click - 01C1) x (double vertical line - 2016) 2226 NOT PARALLEL TO : 2225 0338 @ Logical and set operators 2227 LOGICAL AND = wedge, conjunction x (n-ary logical and - 22C0) x (up arrowhead - 2303) 2228 LOGICAL OR = vee, disjunction x (n-ary logical or - 22C1) x (down arrowhead - 2304) 2229 INTERSECTION = cap, hat x (n-ary intersection - 22C2) ~ 2229 FE00 with serifs 222A UNION = cup x (n-ary union - 22C3) ~ 222A FE00 with serifs @ Integrals 222B INTEGRAL x (latin small letter esh - 0283) 222C DOUBLE INTEGRAL # 222B 222B 222D TRIPLE INTEGRAL x (quadruple integral operator - 2A0C) # 222B 222B 222B 222E CONTOUR INTEGRAL x (integral around a point operator - 2A15) 222F SURFACE INTEGRAL # 222E 222E 2230 VOLUME INTEGRAL # 222E 222E 222E 2231 CLOCKWISE INTEGRAL 2232 CLOCKWISE CONTOUR INTEGRAL 2233 ANTICLOCKWISE CONTOUR INTEGRAL * clockwise or anticlockwise arrows do not reverse during layout mirroring @ Miscellaneous mathematical symbols 2234 THEREFORE x (historic site - 26EC) 2235 BECAUSE @ Relations 2236 RATIO * preferred to 003A for denotation of division or scale in mathematical use x (colon - 003A) 2237 PROPORTION @ Operator 2238 DOT MINUS = saturating subtraction * sometimes claimed as notation for symmetric set difference, but 2206 is preferred @ Relation 2239 EXCESS @ Operator 223A GEOMETRIC PROPORTION @ Relations 223B HOMOTHETIC x (tilde operator with rising dots - 2A6B) 223C TILDE OPERATOR = varies with (proportional to) = difference between = similar to = not = cycle = APL tilde x (tilde - 007E) x (not sign - 00AC) x (small tilde - 02DC) 223D REVERSED TILDE = lazy S * reversed tilde and lazy S are glyph variants 223E INVERTED LAZY S = most positive @ Miscellaneous mathematical symbol 223F SINE WAVE = alternating current @ Operator 2240 WREATH PRODUCT @ Relations 2241 NOT TILDE : 223C 0338 2242 MINUS TILDE 2243 ASYMPTOTICALLY EQUAL TO 2244 NOT ASYMPTOTICALLY EQUAL TO : 2243 0338 2245 APPROXIMATELY EQUAL TO 2246 APPROXIMATELY BUT NOT ACTUALLY EQUAL TO 2247 NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO : 2245 0338 2248 ALMOST EQUAL TO = asymptotic to 2249 NOT ALMOST EQUAL TO : 2248 0338 224A ALMOST EQUAL OR EQUAL TO 224B TRIPLE TILDE 224C ALL EQUAL TO * reversed tilde and lazy S are glyph variants 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 = nearly equals 2253 IMAGE OF OR APPROXIMATELY EQUAL TO 2254 COLON EQUALS 2255 EQUALS COLON 2256 RING IN EQUAL TO 2257 RING EQUAL TO = approximately equal to 2258 CORRESPONDS TO 2259 ESTIMATES = corresponds to 225A EQUIANGULAR TO 225B STAR EQUALS 225C DELTA EQUAL TO = equiangular = equal to by definition 225D EQUAL TO BY DEFINITION 225E MEASURED BY 225F QUESTIONED EQUAL TO 2260 NOT EQUAL TO x (equals sign - 003D) x (latin letter alveolar click - 01C2) : 003D 0338 2261 IDENTICAL TO 2262 NOT IDENTICAL TO : 2261 0338 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 ~ 2268 FE00 with vertical stroke 2269 GREATER-THAN BUT NOT EQUAL TO ~ 2269 FE00 with vertical stroke 226A MUCH LESS-THAN x (left-pointing double angle quotation mark - 00AB) 226B MUCH GREATER-THAN x (right-pointing double angle quotation mark - 00BB) 226C BETWEEN = plaintiff, quantic 226D NOT EQUIVALENT TO : 224D 0338 226E NOT LESS-THAN : 003C 0338 226F NOT GREATER-THAN : 003E 0338 2270 NEITHER LESS-THAN NOR EQUAL TO : 2264 0338 2271 NEITHER GREATER-THAN NOR EQUAL TO : 2265 0338 2272 LESS-THAN OR EQUIVALENT TO ~ 2272 FE00 following the slant of the lower leg 2273 GREATER-THAN OR EQUIVALENT TO ~ 2273 FE00 following the slant of the lower leg 2274 NEITHER LESS-THAN NOR EQUIVALENT TO : 2272 0338 2275 NEITHER GREATER-THAN NOR EQUIVALENT TO : 2273 0338 2276 LESS-THAN OR GREATER-THAN 2277 GREATER-THAN OR LESS-THAN 2278 NEITHER LESS-THAN NOR GREATER-THAN : 2276 0338 2279 NEITHER GREATER-THAN NOR LESS-THAN : 2277 0338 227A PRECEDES = lower rank than x (precedes under relation - 22B0) 227B SUCCEEDS = higher rank than x (succeeds under relation - 22B1) 227C PRECEDES OR EQUAL TO 227D SUCCEEDS OR EQUAL TO 227E PRECEDES OR EQUIVALENT TO 227F SUCCEEDS OR EQUIVALENT TO 2280 DOES NOT PRECEDE : 227A 0338 2281 DOES NOT SUCCEED : 227B 0338 2282 SUBSET OF = included in set x (left sideways u bracket - 2E26) 2283 SUPERSET OF = includes in set x (right sideways u bracket - 2E27) 2284 NOT A SUBSET OF : 2282 0338 2285 NOT A SUPERSET OF : 2283 0338 2286 SUBSET OF OR EQUAL TO 2287 SUPERSET OF OR EQUAL TO 2288 NEITHER A SUBSET OF NOR EQUAL TO : 2286 0338 2289 NEITHER A SUPERSET OF NOR EQUAL TO : 2287 0338 228A SUBSET OF WITH NOT EQUAL TO ~ 228A FE00 with stroke through bottom members 228B SUPERSET OF WITH NOT EQUAL TO ~ 228B FE00 with stroke through bottom members @ Operators 228C MULTISET 228D MULTISET MULTIPLICATION x (n-ary union operator with dot - 2A03) x (intersection with dot - 2A40) 228E MULTISET UNION = z notation bag addition x (n-ary union operator with plus - 2A04) @ Relations 228F SQUARE IMAGE OF 2290 SQUARE ORIGINAL OF 2291 SQUARE IMAGE OF OR EQUAL TO 2292 SQUARE ORIGINAL OF OR EQUAL TO @ Operators 2293 SQUARE CAP x (n-ary square intersection operator - 2A05) ~ 2293 FE00 with serifs 2294 SQUARE CUP x (n-ary square union operator - 2A06) ~ 2294 FE00 with serifs 2295 CIRCLED PLUS = direct sum = vector pointing into page x (n-ary circled plus operator - 2A01) x (alchemical symbol for verdigris - 1F728) ~ 2295 FE00 with white rim 2296 CIRCLED MINUS = symmetric difference x (circle with horizontal bar - 29B5) x (alchemical symbol for salt - 1F714) 2297 CIRCLED TIMES = tensor product = vector pointing into page x (circled crossing lanes - 26D2) x (n-ary circled times operator - 2A02) x (circled x - 2BBE) ~ 2297 FE00 with white rim 2298 CIRCLED DIVISION SLASH 2299 CIRCLED DOT OPERATOR = direct product = vector pointing out of page x (latin letter bilabial click - 0298) x (sun - 2609) x (n-ary circled dot operator - 2A00) 229A CIRCLED RING OPERATOR x (apl functional symbol circle jot - 233E) x (bullseye - 25CE) 229B CIRCLED ASTERISK OPERATOR x (apl functional symbol circle star - 235F) 229C CIRCLED EQUALS ~ 229C FE00 with equal sign touching the circle 229D CIRCLED DASH 229E SQUARED PLUS 229F SQUARED MINUS 22A0 SQUARED TIMES x (ballot box with x - 2612) x (squared saltire - 26DD) x (alchemical symbol for month - 1F771) 22A1 SQUARED DOT OPERATOR x (alchemical symbol for urine - 1F755) 22A2 RIGHT TACK = turnstile = proves, implies, yields = reducible 22A3 LEFT TACK = reverse turnstile = non-theorem, does not yield @ Miscellaneous mathematical symbols 22A4 DOWN TACK = top x (raised interpolation marker - 2E06) x (alchemical symbol for crucible-4 - 1F768) 22A5 UP TACK = base, bottom x (perpendicular - 27C2) @ Relations 22A6 ASSERTION = reduces to 22A7 MODELS 22A8 TRUE = statement is true, valid = is a tautology = satisfies = results in 22A9 FORCES 22AA TRIPLE VERTICAL BAR RIGHT TURNSTILE 22AB DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE 22AC DOES NOT PROVE : 22A2 0338 22AD NOT TRUE : 22A8 0338 22AE DOES NOT FORCE : 22A9 0338 22AF NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE : 22AB 0338 22B0 PRECEDES UNDER RELATION x (precedes - 227A) 22B1 SUCCEEDS UNDER RELATION x (succeeds - 227B) 22B2 NORMAL SUBGROUP OF x (white left-pointing pointer - 25C5) 22B3 CONTAINS AS NORMAL SUBGROUP x (white right-pointing pointer - 25BB) 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 @ Operators 22BA INTERCALATE 22BB XOR x (semisextile - 26BA) 22BC NAND x (projective - 2305) x (quincunx - 26BB) 22BD NOR @ Miscellaneous mathematical symbols 22BE RIGHT ANGLE WITH ARC 22BF RIGHT TRIANGLE @ N-ary operators 22C0 N-ARY LOGICAL AND * also used to denote the universal quantifier x (logical and - 2227) 22C1 N-ARY LOGICAL OR * also used to denote the existential quantifier x (logical or - 2228) 22C2 N-ARY INTERSECTION = z notation generalised intersection x (intersection - 2229) 22C3 N-ARY UNION = z notation generalised union x (union - 222A) @ Operators 22C4 DIAMOND OPERATOR x (white diamond - 25C7) x (black small diamond - 2B29) 22C5 DOT OPERATOR * preferred to 00B7 for denotation of multiplication x (middle dot - 00B7) 22C6 STAR OPERATOR * APL x (arabic five pointed star - 066D) x (black star - 2605) x (white medium star - 2B50) 22C7 DIVISION TIMES @ Relation 22C8 BOWTIE x (ocr bow tie - 2445) @ Operators 22C9 LEFT NORMAL FACTOR SEMIDIRECT PRODUCT 22CA RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT 22CB LEFT SEMIDIRECT PRODUCT 22CC RIGHT SEMIDIRECT PRODUCT x (caret insertion point - 2041) @ Relation 22CD REVERSED TILDE EQUALS @ Logical operators 22CE CURLY LOGICAL OR 22CF CURLY LOGICAL AND @ Relations 22D0 DOUBLE SUBSET 22D1 DOUBLE SUPERSET @ Operators 22D2 DOUBLE INTERSECTION 22D3 DOUBLE UNION @ Relations 22D4 PITCHFORK = proper intersection 22D5 EQUAL AND PARALLEL TO x (viewdata square - 2317) 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 ~ 22DA FE00 with slanted equal 22DB GREATER-THAN EQUAL TO OR LESS-THAN ~ 22DB FE00 with slanted equal 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 : 227C 0338 22E1 DOES NOT SUCCEED OR EQUAL : 227D 0338 22E2 NOT SQUARE IMAGE OF OR EQUAL TO : 2291 0338 22E3 NOT SQUARE ORIGINAL OF OR EQUAL TO : 2292 0338 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 : 22B2 0338 22EB DOES NOT CONTAIN AS NORMAL SUBGROUP : 22B3 0338 22EC NOT NORMAL SUBGROUP OF OR EQUAL TO : 22B4 0338 22ED DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL : 22B5 0338 22EE VERTICAL ELLIPSIS * these four ellipses are used for matrix row/column elision x (tricolon - 205D) x (horizontal ellipsis - 2026) x (presentation form for vertical horizontal ellipsis - FE19) 22EF MIDLINE HORIZONTAL ELLIPSIS 22F0 UP RIGHT DIAGONAL ELLIPSIS 22F1 DOWN RIGHT DIAGONAL ELLIPSIS 22F2 ELEMENT OF WITH LONG HORIZONTAL STROKE 22F3 ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE 22F4 SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE 22F5 ELEMENT OF WITH DOT ABOVE 22F6 ELEMENT OF WITH OVERBAR 22F7 SMALL ELEMENT OF WITH OVERBAR 22F8 ELEMENT OF WITH UNDERBAR 22F9 ELEMENT OF WITH TWO HORIZONTAL STROKES 22FA CONTAINS WITH LONG HORIZONTAL STROKE 22FB CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE 22FC SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE 22FD CONTAINS WITH OVERBAR 22FE SMALL CONTAINS WITH OVERBAR 22FF Z NOTATION BAG MEMBERSHIP @~ Standardized Variation Sequences @@ 2300 Miscellaneous Technical 23FF @ Miscellaneous technical 2300 DIAMETER SIGN x (empty set - 2205) 2301 ELECTRIC ARROW @+ * from ISO 2047 * symbol for End of Transmission 2302 HOUSE 2303 UP ARROWHEAD x (circumflex accent - 005E) x (modifier letter up arrowhead - 02C4) x (caret - 2038) x (logical and - 2227) 2304 DOWN ARROWHEAD x (modifier letter down arrowhead - 02C5) x (logical or - 2228) x (countersink - 2335) 2305 PROJECTIVE x (nand - 22BC) 2306 PERSPECTIVE 2307 WAVY LINE x (wiggly vertical line - 2E3E) x (wavy dash - 3030) @ Ceilings and floors @+ These characters are tall and narrow mathematical delimiters, in contrast to the quine corners or half brackets. They are also distinct from CJK corner brackets, which are wide quotation marks. 2308 LEFT CEILING = APL upstile x (top left half bracket - 2E22) x (left corner bracket - 300C) 2309 RIGHT CEILING x (combining annuity symbol - 20E7) x (top right half bracket - 2E23) 230A LEFT FLOOR = APL downstile x (bottom left half bracket - 2E24) 230B RIGHT FLOOR x (right corner bracket - 300D) x (bottom right half bracket - 2E25) @ Crops 230C BOTTOM RIGHT CROP * set of four "crop" corners, arranged facing outward 230D BOTTOM LEFT CROP 230E TOP RIGHT CROP 230F TOP LEFT CROP @ Miscellaneous technical 2310 REVERSED NOT SIGN = beginning of line x (not sign - 00AC) 2311 SQUARE LOZENGE = Kissen (pillow) * used as a command delimiter in some very old computers x (rotated white four pointed cusp - 2BCF) 2312 ARC = position of any line x (upper half circle - 25E0) 2313 SEGMENT = position of a surface 2314 SECTOR 2315 TELEPHONE RECORDER 2316 POSITION INDICATOR = true position x (square position indicator - 2BD0) 2317 VIEWDATA SQUARE x (equal and parallel to - 22D5) 2318 PLACE OF INTEREST SIGN = command key (1.0) = operating system key (ISO 9995-7) 2319 TURNED NOT SIGN = line marker @ User interface symbols 231A WATCH x (alarm clock - 23F0) x (clock face one oclock - 1F550) ~ 231A FE0E text style ~ 231A FE0F emoji style 231B HOURGLASS = alchemical symbol for hour ~ 231B FE0E text style ~ 231B FE0F emoji style @ Quine corners @+ These form a set of four quine corners, for quincuncial arrangement. They are also used in upper and lower pairs in mathematic, or more rarely in editorial usage as alternatives to half brackets. 231C TOP LEFT CORNER x (right angle substitution marker - 2E00) x (top left half bracket - 2E22) 231D TOP RIGHT CORNER 231E BOTTOM LEFT CORNER 231F BOTTOM RIGHT CORNER @ Integral pieces 2320 TOP HALF INTEGRAL x (integral extension - 23AE) 2321 BOTTOM HALF INTEGRAL @ Frown and smile 2322 FROWN x (character tie - 2040) 2323 SMILE x (undertie - 203F) @ Keyboard symbols 2324 UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS = enter key 2325 OPTION KEY 2326 ERASE TO THE RIGHT = delete to the right key 2327 X IN A RECTANGLE BOX = clear key 2328 KEYBOARD x (keyboard and mouse - 1F5A6) x (wired keyboard - 1F5AE) ~ 2328 FE0E text style ~ 2328 FE0F emoji style @ Deprecated angle brackets @+ These characters are deprecated and are strongly discouraged for mathematical use because of their canonical equivalence to CJK punctuation. 2329 LEFT-POINTING ANGLE BRACKET x (less-than sign - 003C) x (single left-pointing angle quotation mark - 2039) x (mathematical left angle bracket - 27E8) : 3008 left angle bracket 232A RIGHT-POINTING ANGLE BRACKET x (greater-than sign - 003E) x (single right-pointing angle quotation mark - 203A) x (mathematical right angle bracket - 27E9) : 3009 right angle bracket @ Keyboard symbol 232B ERASE TO THE LEFT = delete to the left key @ Chemistry symbol 232C BENZENE RING @ Drafting symbols 232D CYLINDRICITY 232E ALL AROUND-PROFILE 232F SYMMETRY 2330 TOTAL RUNOUT 2331 DIMENSION ORIGIN 2332 CONICAL TAPER 2333 SLOPE x (lower left triangle - 25FA) 2334 COUNTERBORE x (open box - 2423) 2335 COUNTERSINK x (down arrowhead - 2304) @ APL 2336 APL FUNCTIONAL SYMBOL I-BEAM 2337 APL FUNCTIONAL SYMBOL SQUISH QUAD x (apl functional symbol quad - 2395) x (white vertical rectangle - 25AF) x (n-ary white vertical bar - 2AFF) 2338 APL FUNCTIONAL SYMBOL QUAD EQUAL 2339 APL FUNCTIONAL SYMBOL QUAD DIVIDE 233A APL FUNCTIONAL SYMBOL QUAD DIAMOND x (white diamond in square - 26CB) 233B APL FUNCTIONAL SYMBOL QUAD JOT x (squared small circle - 29C7) 233C APL FUNCTIONAL SYMBOL QUAD CIRCLE 233D APL FUNCTIONAL SYMBOL CIRCLE STILE 233E APL FUNCTIONAL SYMBOL CIRCLE JOT x (circled ring operator - 229A) x (circled white bullet - 29BE) 233F APL FUNCTIONAL SYMBOL SLASH BAR x (roman as sign - 1019A) 2340 APL FUNCTIONAL SYMBOL BACKSLASH BAR x (reverse solidus with horizontal stroke - 29F7) 2341 APL FUNCTIONAL SYMBOL QUAD SLASH x (squared rising diagonal slash - 29C4) 2342 APL FUNCTIONAL SYMBOL QUAD BACKSLASH x (squared falling diagonal slash - 29C5) 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 x (reversed empty set - 29B0) 234A APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR = up tack underbar @+ * preferred naming for APL tack symbols now follows the London Convention in ISO/IEC 13751:2000 (APL Extended) x (up tack - 22A5) 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 = up tack jot x (up tack - 22A5) 234F APL FUNCTIONAL SYMBOL UPWARDS VANE 2350 APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW 2351 APL FUNCTIONAL SYMBOL UP TACK OVERBAR = down tack overbar x (down tack - 22A4) x (postal mark - 3012) 2352 APL FUNCTIONAL SYMBOL DEL STILE 2353 APL FUNCTIONAL SYMBOL QUAD UP CARET x (up arrowhead in a rectangle box - 2BB9) 2354 APL FUNCTIONAL SYMBOL QUAD DEL 2355 APL FUNCTIONAL SYMBOL UP TACK JOT = down tack jot x (down tack - 22A4) 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 x (intersection with dot - 2A40) 235E APL FUNCTIONAL SYMBOL QUOTE QUAD 235F APL FUNCTIONAL SYMBOL CIRCLE STAR x (circled asterisk operator - 229B) 2360 APL FUNCTIONAL SYMBOL QUAD COLON 2361 APL FUNCTIONAL SYMBOL UP TACK DIAERESIS = down tack diaeresis x (down tack - 22A4) 2362 APL FUNCTIONAL SYMBOL DEL DIAERESIS 2363 APL FUNCTIONAL SYMBOL STAR DIAERESIS 2364 APL FUNCTIONAL SYMBOL JOT DIAERESIS = hoot 2365 APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS = holler 2366 APL FUNCTIONAL SYMBOL DOWN SHOE STILE 2367 APL FUNCTIONAL SYMBOL LEFT SHOE STILE 2368 APL FUNCTIONAL SYMBOL TILDE DIAERESIS = smirk 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 x (uncertainty sign - 2BD1) 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 @ Graphics for control codes 237B NOT CHECK MARK @+ * from ISO 2047 * symbol for Negative Acknowledge @ Miscellaneous technical 237C RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW @ Graphics for control codes 237D SHOULDERED OPEN BOX @+ * from ISO 9995-7 * keyboard symbol for No Break Space x (open box - 2423) 237E BELL SYMBOL @+ * from ISO 2047 237F VERTICAL LINE WITH MIDDLE DOT @+ * from ISO 2047 * symbol for End of Medium @ Keyboard symbols from ISO 9995-7 2380 INSERTION SYMBOL 2381 CONTINUOUS UNDERLINE SYMBOL 2382 DISCONTINUOUS UNDERLINE SYMBOL 2383 EMPHASIS SYMBOL 2384 COMPOSITION SYMBOL 2385 WHITE SQUARE WITH CENTRE VERTICAL LINE = center 2386 ENTER SYMBOL 2387 ALTERNATIVE KEY SYMBOL 2388 HELM SYMBOL = control x (wheel of dharma - 2638) 2389 CIRCLED HORIZONTAL BAR WITH NOTCH = pause 238A CIRCLED TRIANGLE DOWN = interrupt, break 238B BROKEN CIRCLE WITH NORTHWEST ARROW = escape 238C UNDO SYMBOL @ Electrotechnical symbols from IR 181 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 @ APL 2395 APL FUNCTIONAL SYMBOL QUAD x (apl functional symbol squish quad - 2337) x (white vertical rectangle - 25AF) @ Keyboard symbols from ISO 9995-7 2396 DECIMAL SEPARATOR KEY SYMBOL 2397 PREVIOUS PAGE x (back with leftwards arrow above - 1F519) 2398 NEXT PAGE 2399 PRINT SCREEN SYMBOL 239A CLEAR SCREEN SYMBOL x (combining enclosing screen - 20E2) @ Bracket pieces 239B LEFT PARENTHESIS UPPER HOOK 239C LEFT PARENTHESIS EXTENSION 239D LEFT PARENTHESIS LOWER HOOK 239E RIGHT PARENTHESIS UPPER HOOK 239F RIGHT PARENTHESIS EXTENSION 23A0 RIGHT PARENTHESIS LOWER HOOK 23A1 LEFT SQUARE BRACKET UPPER CORNER 23A2 LEFT SQUARE BRACKET EXTENSION 23A3 LEFT SQUARE BRACKET LOWER CORNER 23A4 RIGHT SQUARE BRACKET UPPER CORNER 23A5 RIGHT SQUARE BRACKET EXTENSION 23A6 RIGHT SQUARE BRACKET LOWER CORNER 23A7 LEFT CURLY BRACKET UPPER HOOK 23A8 LEFT CURLY BRACKET MIDDLE PIECE 23A9 LEFT CURLY BRACKET LOWER HOOK 23AA CURLY BRACKET EXTENSION 23AB RIGHT CURLY BRACKET UPPER HOOK 23AC RIGHT CURLY BRACKET MIDDLE PIECE 23AD RIGHT CURLY BRACKET LOWER HOOK @ Special character extensions 23AE INTEGRAL EXTENSION x (top half integral - 2320) x (bottom half integral - 2321) 23AF HORIZONTAL LINE EXTENSION * used for extension of arrows x (vertical line extension - 23D0) @ Bracket pieces 23B0 UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION = left moustache 23B1 UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION = right moustache @ Summation sign parts 23B2 SUMMATION TOP 23B3 SUMMATION BOTTOM x (n-ary summation - 2211) @ Horizontal brackets @+ These characters are also used as delimiters of vertical text in non-CJK terminal emulation. 23B4 TOP SQUARE BRACKET x (presentation form for vertical left square bracket - FE47) 23B5 BOTTOM SQUARE BRACKET x (presentation form for vertical right square bracket - FE48) 23B6 BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET * only used for terminal emulation @ Terminal graphic characters 23B7 RADICAL SYMBOL BOTTOM 23B8 LEFT VERTICAL BOX LINE 23B9 RIGHT VERTICAL BOX LINE @ Scan lines for terminal graphics @+ The scan line numbers here refer to old, low-resolution technology for terminals, with only 9 scan lines per fixed-size character glyph. Even-numbered scan lines are unified with box-drawing graphics. 23BA HORIZONTAL SCAN LINE-1 23BB HORIZONTAL SCAN LINE-3 23BC HORIZONTAL SCAN LINE-7 23BD HORIZONTAL SCAN LINE-9 @ Dentistry notation symbols 23BE DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT x (left ceiling - 2308) 23BF DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT x (left floor - 230A) 23C0 DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE 23C1 DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE 23C2 DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE 23C3 DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE 23C4 DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE 23C5 DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE 23C6 DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE 23C7 DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE 23C8 DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE 23C9 DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL x (down tack - 22A4) x (box drawings light down and horizontal - 252C) 23CA DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL x (up tack - 22A5) x (box drawings light up and horizontal - 2534) 23CB DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT x (right ceiling - 2309) 23CC DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT x (right floor - 230B) @ Miscellaneous technical 23CD SQUARE FOOT @ Keyboard and UI symbols 23CE RETURN SYMBOL * may be shown with either hollow or filled glyph x (downwards arrow with corner leftwards - 21B5) x (return left - 2B90) 23CF EJECT SYMBOL * UI symbol to eject media ~ 23CF FE0E text style ~ 23CF FE0F emoji style @ Special character extension 23D0 VERTICAL LINE EXTENSION * used for extension of arrows x (horizontal line extension - 23AF) @ Metrical symbols 23D1 METRICAL BREVE 23D2 METRICAL LONG OVER SHORT 23D3 METRICAL SHORT OVER LONG 23D4 METRICAL LONG OVER TWO SHORTS 23D5 METRICAL TWO SHORTS OVER LONG 23D6 METRICAL TWO SHORTS JOINED 23D7 METRICAL TRISEME x (combining greek musical triseme - 1D242) 23D8 METRICAL TETRASEME x (combining greek musical tetraseme - 1D243) 23D9 METRICAL PENTASEME x (combining greek musical pentaseme - 1D244) @ Electrotechnical symbols 23DA EARTH GROUND 23DB FUSE @ Horizontal brackets @+ These are intended for bracketing terms of mathematical expressions where their glyph extends to accommodate the width of the bracketed expression 23DC TOP PARENTHESIS x (presentation form for vertical left parenthesis - FE35) 23DD BOTTOM PARENTHESIS x (presentation form for vertical right parenthesis - FE36) 23DE TOP CURLY BRACKET x (presentation form for vertical left curly bracket - FE37) 23DF BOTTOM CURLY BRACKET x (presentation form for vertical right curly bracket - FE38) 23E0 TOP TORTOISE SHELL BRACKET x (presentation form for vertical left tortoise shell bracket - FE39) 23E1 BOTTOM TORTOISE SHELL BRACKET x (presentation form for vertical right tortoise shell bracket - FE3A) @ Miscellaneous technical 23E2 WHITE TRAPEZIUM @ Chemistry symbol 23E3 BENZENE RING WITH CIRCLE @ Miscellaneous technical 23E4 STRAIGHTNESS 23E5 FLATNESS 23E6 AC CURRENT 23E7 ELECTRICAL INTERSECTION 23E8 DECIMAL EXPONENT SYMBOL * Algol-60 token for scientific notation literals @ User interface symbols 23E9 BLACK RIGHT-POINTING DOUBLE TRIANGLE = fast forward 23EA BLACK LEFT-POINTING DOUBLE TRIANGLE = fast rewind 23EB BLACK UP-POINTING DOUBLE TRIANGLE 23EC BLACK DOWN-POINTING DOUBLE TRIANGLE 23ED BLACK RIGHT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR ~ 23ED FE0E text style ~ 23ED FE0F emoji style 23EE BLACK LEFT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR ~ 23EE FE0E text style ~ 23EE FE0F emoji style 23EF BLACK RIGHT-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR ~ 23EF FE0E text style ~ 23EF FE0F emoji style 23F0 ALARM CLOCK x (watch - 231A) x (clock face one oclock - 1F550) x (mantelpiece clock - 1F570) 23F1 STOPWATCH ~ 23F1 FE0E text style ~ 23F1 FE0F emoji style 23F2 TIMER CLOCK ~ 23F2 FE0E text style ~ 23F2 FE0F emoji style 23F3 HOURGLASS WITH FLOWING SAND x (hourglass - 231B) 23F4 BLACK MEDIUM LEFT-POINTING TRIANGLE = reverse, back * preferred to 25C0 black left-pointing triangle x (black left-pointing isosceles right triangle - 1F780) 23F5 BLACK MEDIUM RIGHT-POINTING TRIANGLE = forward * preferred to 25B6 black right-pointing triangle x (black right-pointing isosceles right triangle - 1F782) 23F6 BLACK MEDIUM UP-POINTING TRIANGLE = increase * preferred to 25B2 black up-pointing triangle x (black up-pointing isosceles right triangle - 1F781) 23F7 BLACK MEDIUM DOWN-POINTING TRIANGLE = decrease * preferred to 25BC black down-pointing triangle x (black down-pointing isosceles right triangle - 1F783) 23F8 DOUBLE VERTICAL BAR = pause x (double vertical line - 2016) ~ 23F8 FE0E text style ~ 23F8 FE0F emoji style 23F9 BLACK SQUARE FOR STOP = stop x (black medium square - 25FC) ~ 23F9 FE0E text style ~ 23F9 FE0F emoji style 23FA BLACK CIRCLE FOR RECORD = record x (medium black circle - 26AB) ~ 23FA FE0E text style ~ 23FA FE0F emoji style @ Power symbols from ISO 7000:2012 23FB POWER SYMBOL @+ * IEC 5009 standby symbol @+ * IEEE 1621 power symbol 23FC POWER ON-OFF SYMBOL @+ * IEC 5010 power on-off symbol 23FD POWER ON SYMBOL * use 2B58 for power off symbol x (heavy circle - 2B58) @ Power symbol from IEEE 1621-2004 23FE POWER SLEEP SYMBOL x (last quarter moon - 263E) @~ ! @@ 2400 Control Pictures 243F @+ The diagonal lettering glyphs are only exemplary; alternate representations may be, and often are used in the visible display of control codes. @ Graphic pictures for control codes 2400 SYMBOL FOR NULL 2401 SYMBOL FOR START OF HEADING 2402 SYMBOL FOR START OF TEXT 2403 SYMBOL FOR END OF TEXT 2404 SYMBOL FOR END OF TRANSMISSION 2405 SYMBOL FOR ENQUIRY 2406 SYMBOL FOR ACKNOWLEDGE 2407 SYMBOL FOR BELL 2408 SYMBOL FOR BACKSPACE 2409 SYMBOL FOR HORIZONTAL TABULATION 240A SYMBOL FOR LINE FEED 240B SYMBOL FOR VERTICAL TABULATION 240C SYMBOL FOR FORM FEED 240D SYMBOL FOR CARRIAGE RETURN 240E SYMBOL FOR SHIFT OUT 240F SYMBOL FOR SHIFT IN 2410 SYMBOL FOR DATA LINK ESCAPE 2411 SYMBOL FOR DEVICE CONTROL ONE 2412 SYMBOL FOR DEVICE CONTROL TWO 2413 SYMBOL FOR DEVICE CONTROL THREE 2414 SYMBOL FOR DEVICE CONTROL FOUR 2415 SYMBOL FOR NEGATIVE ACKNOWLEDGE 2416 SYMBOL FOR SYNCHRONOUS IDLE 2417 SYMBOL FOR END OF TRANSMISSION BLOCK 2418 SYMBOL FOR CANCEL 2419 SYMBOL FOR END OF MEDIUM 241A SYMBOL FOR SUBSTITUTE 241B SYMBOL FOR ESCAPE 241C SYMBOL FOR FILE SEPARATOR 241D SYMBOL FOR GROUP SEPARATOR 241E SYMBOL FOR RECORD SEPARATOR 241F SYMBOL FOR UNIT SEPARATOR 2420 SYMBOL FOR SPACE 2421 SYMBOL FOR DELETE @ Specific symbols for space 2422 BLANK SYMBOL * graphic for space x (latin small letter b with stroke - 0180) 2423 OPEN BOX * graphic for space x (counterbore - 2334) @ Graphic picture for control code 2424 SYMBOL FOR NEWLINE @ Keyboard symbol 2425 SYMBOL FOR DELETE FORM TWO @+ * from ISO 9995-7 * keyboard symbol for undoable delete @ Specific symbol for control code 2426 SYMBOL FOR SUBSTITUTE FORM TWO @+ * from ISO 2047 x (arabic question mark - 061F) @@ 2440 Optical Character Recognition 245F @ OCR-A 2440 OCR HOOK 2441 OCR CHAIR 2442 OCR FORK 2443 OCR INVERTED FORK 2444 OCR BELT BUCKLE 2445 OCR BOW TIE = unique asterisk x (bowtie - 22C8) @ MICR @+ These magnetic ink character recognition symbols are used on checks. They are derived from the E-13B font and are standardized in ISO 1004:1995. The Unicode character names include several misnomers. 2446 OCR BRANCH BANK IDENTIFICATION = transit 2447 OCR AMOUNT OF CHECK = amount 2448 OCR DASH % MICR ON US SYMBOL = on us 2449 OCR CUSTOMER ACCOUNT NUMBER % MICR DASH SYMBOL = dash @ OCR 244A OCR DOUBLE BACKSLASH @@ 2460 Enclosed Alphanumerics 24FF @ Circled numbers 2460 CIRCLED DIGIT ONE # 0031 2461 CIRCLED DIGIT TWO # 0032 2462 CIRCLED DIGIT THREE # 0033 2463 CIRCLED DIGIT FOUR # 0034 2464 CIRCLED DIGIT FIVE # 0035 2465 CIRCLED DIGIT SIX # 0036 2466 CIRCLED DIGIT SEVEN # 0037 2467 CIRCLED DIGIT EIGHT # 0038 2468 CIRCLED DIGIT NINE # 0039 2469 CIRCLED NUMBER TEN # 0031 0030 246A CIRCLED NUMBER ELEVEN # 0031 0031 246B CIRCLED NUMBER TWELVE # 0031 0032 246C CIRCLED NUMBER THIRTEEN # 0031 0033 246D CIRCLED NUMBER FOURTEEN # 0031 0034 246E CIRCLED NUMBER FIFTEEN # 0031 0035 246F CIRCLED NUMBER SIXTEEN # 0031 0036 2470 CIRCLED NUMBER SEVENTEEN # 0031 0037 2471 CIRCLED NUMBER EIGHTEEN # 0031 0038 2472 CIRCLED NUMBER NINETEEN # 0031 0039 2473 CIRCLED NUMBER TWENTY # 0032 0030 @ Parenthesized numbers 2474 PARENTHESIZED DIGIT ONE # 0028 0031 0029 2475 PARENTHESIZED DIGIT TWO # 0028 0032 0029 2476 PARENTHESIZED DIGIT THREE # 0028 0033 0029 2477 PARENTHESIZED DIGIT FOUR # 0028 0034 0029 2478 PARENTHESIZED DIGIT FIVE # 0028 0035 0029 2479 PARENTHESIZED DIGIT SIX # 0028 0036 0029 247A PARENTHESIZED DIGIT SEVEN # 0028 0037 0029 247B PARENTHESIZED DIGIT EIGHT # 0028 0038 0029 247C PARENTHESIZED DIGIT NINE # 0028 0039 0029 247D PARENTHESIZED NUMBER TEN # 0028 0031 0030 0029 247E PARENTHESIZED NUMBER ELEVEN # 0028 0031 0031 0029 247F PARENTHESIZED NUMBER TWELVE # 0028 0031 0032 0029 2480 PARENTHESIZED NUMBER THIRTEEN # 0028 0031 0033 0029 2481 PARENTHESIZED NUMBER FOURTEEN # 0028 0031 0034 0029 2482 PARENTHESIZED NUMBER FIFTEEN # 0028 0031 0035 0029 2483 PARENTHESIZED NUMBER SIXTEEN # 0028 0031 0036 0029 2484 PARENTHESIZED NUMBER SEVENTEEN # 0028 0031 0037 0029 2485 PARENTHESIZED NUMBER EIGHTEEN # 0028 0031 0038 0029 2486 PARENTHESIZED NUMBER NINETEEN # 0028 0031 0039 0029 2487 PARENTHESIZED NUMBER TWENTY # 0028 0032 0030 0029 @ Numbers period @+ See also similar symbols starting at 1F100. 2488 DIGIT ONE FULL STOP # 0031 002E 2489 DIGIT TWO FULL STOP # 0032 002E 248A DIGIT THREE FULL STOP # 0033 002E 248B DIGIT FOUR FULL STOP # 0034 002E 248C DIGIT FIVE FULL STOP # 0035 002E 248D DIGIT SIX FULL STOP # 0036 002E 248E DIGIT SEVEN FULL STOP # 0037 002E 248F DIGIT EIGHT FULL STOP # 0038 002E 2490 DIGIT NINE FULL STOP # 0039 002E 2491 NUMBER TEN FULL STOP # 0031 0030 002E 2492 NUMBER ELEVEN FULL STOP # 0031 0031 002E 2493 NUMBER TWELVE FULL STOP # 0031 0032 002E 2494 NUMBER THIRTEEN FULL STOP # 0031 0033 002E 2495 NUMBER FOURTEEN FULL STOP # 0031 0034 002E 2496 NUMBER FIFTEEN FULL STOP # 0031 0035 002E 2497 NUMBER SIXTEEN FULL STOP # 0031 0036 002E 2498 NUMBER SEVENTEEN FULL STOP # 0031 0037 002E 2499 NUMBER EIGHTEEN FULL STOP # 0031 0038 002E 249A NUMBER NINETEEN FULL STOP # 0031 0039 002E 249B NUMBER TWENTY FULL STOP # 0032 0030 002E @ Parenthesized Latin letters @+ See also the uppercase set starting at 1F100. Parenthesized Latin letters do not have case mappings. 249C PARENTHESIZED LATIN SMALL LETTER A # 0028 0061 0029 249D PARENTHESIZED LATIN SMALL LETTER B # 0028 0062 0029 249E PARENTHESIZED LATIN SMALL LETTER C # 0028 0063 0029 249F PARENTHESIZED LATIN SMALL LETTER D # 0028 0064 0029 24A0 PARENTHESIZED LATIN SMALL LETTER E # 0028 0065 0029 24A1 PARENTHESIZED LATIN SMALL LETTER F # 0028 0066 0029 24A2 PARENTHESIZED LATIN SMALL LETTER G # 0028 0067 0029 24A3 PARENTHESIZED LATIN SMALL LETTER H # 0028 0068 0029 24A4 PARENTHESIZED LATIN SMALL LETTER I # 0028 0069 0029 24A5 PARENTHESIZED LATIN SMALL LETTER J # 0028 006A 0029 24A6 PARENTHESIZED LATIN SMALL LETTER K # 0028 006B 0029 24A7 PARENTHESIZED LATIN SMALL LETTER L # 0028 006C 0029 24A8 PARENTHESIZED LATIN SMALL LETTER M # 0028 006D 0029 24A9 PARENTHESIZED LATIN SMALL LETTER N # 0028 006E 0029 24AA PARENTHESIZED LATIN SMALL LETTER O # 0028 006F 0029 24AB PARENTHESIZED LATIN SMALL LETTER P # 0028 0070 0029 24AC PARENTHESIZED LATIN SMALL LETTER Q # 0028 0071 0029 24AD PARENTHESIZED LATIN SMALL LETTER R # 0028 0072 0029 24AE PARENTHESIZED LATIN SMALL LETTER S # 0028 0073 0029 24AF PARENTHESIZED LATIN SMALL LETTER T # 0028 0074 0029 24B0 PARENTHESIZED LATIN SMALL LETTER U # 0028 0075 0029 24B1 PARENTHESIZED LATIN SMALL LETTER V # 0028 0076 0029 24B2 PARENTHESIZED LATIN SMALL LETTER W # 0028 0077 0029 24B3 PARENTHESIZED LATIN SMALL LETTER X # 0028 0078 0029 24B4 PARENTHESIZED LATIN SMALL LETTER Y # 0028 0079 0029 24B5 PARENTHESIZED LATIN SMALL LETTER Z # 0028 007A 0029 @ Circled Latin letters 24B6 CIRCLED LATIN CAPITAL LETTER A # 0041 24B7 CIRCLED LATIN CAPITAL LETTER B # 0042 24B8 CIRCLED LATIN CAPITAL LETTER C x (copyright sign - 00A9) # 0043 24B9 CIRCLED LATIN CAPITAL LETTER D # 0044 24BA CIRCLED LATIN CAPITAL LETTER E # 0045 24BB CIRCLED LATIN CAPITAL LETTER F # 0046 24BC CIRCLED LATIN CAPITAL LETTER G # 0047 24BD CIRCLED LATIN CAPITAL LETTER H # 0048 24BE CIRCLED LATIN CAPITAL LETTER I # 0049 24BF CIRCLED LATIN CAPITAL LETTER J # 004A 24C0 CIRCLED LATIN CAPITAL LETTER K # 004B 24C1 CIRCLED LATIN CAPITAL LETTER L # 004C 24C2 CIRCLED LATIN CAPITAL LETTER M ~ 24C2 FE0E text style ~ 24C2 FE0F emoji style # 004D 24C3 CIRCLED LATIN CAPITAL LETTER N # 004E 24C4 CIRCLED LATIN CAPITAL LETTER O # 004F 24C5 CIRCLED LATIN CAPITAL LETTER P x (sound recording copyright - 2117) # 0050 24C6 CIRCLED LATIN CAPITAL LETTER Q # 0051 24C7 CIRCLED LATIN CAPITAL LETTER R x (registered sign - 00AE) # 0052 24C8 CIRCLED LATIN CAPITAL LETTER S # 0053 24C9 CIRCLED LATIN CAPITAL LETTER T # 0054 24CA CIRCLED LATIN CAPITAL LETTER U # 0055 24CB CIRCLED LATIN CAPITAL LETTER V # 0056 24CC CIRCLED LATIN CAPITAL LETTER W # 0057 24CD CIRCLED LATIN CAPITAL LETTER X # 0058 24CE CIRCLED LATIN CAPITAL LETTER Y # 0059 24CF CIRCLED LATIN CAPITAL LETTER Z # 005A 24D0 CIRCLED LATIN SMALL LETTER A # 0061 24D1 CIRCLED LATIN SMALL LETTER B # 0062 24D2 CIRCLED LATIN SMALL LETTER C # 0063 24D3 CIRCLED LATIN SMALL LETTER D # 0064 24D4 CIRCLED LATIN SMALL LETTER E # 0065 24D5 CIRCLED LATIN SMALL LETTER F # 0066 24D6 CIRCLED LATIN SMALL LETTER G # 0067 24D7 CIRCLED LATIN SMALL LETTER H # 0068 24D8 CIRCLED LATIN SMALL LETTER I # 0069 24D9 CIRCLED LATIN SMALL LETTER J # 006A 24DA CIRCLED LATIN SMALL LETTER K # 006B 24DB CIRCLED LATIN SMALL LETTER L # 006C 24DC CIRCLED LATIN SMALL LETTER M # 006D 24DD CIRCLED LATIN SMALL LETTER N # 006E 24DE CIRCLED LATIN SMALL LETTER O # 006F 24DF CIRCLED LATIN SMALL LETTER P # 0070 24E0 CIRCLED LATIN SMALL LETTER Q # 0071 24E1 CIRCLED LATIN SMALL LETTER R # 0072 24E2 CIRCLED LATIN SMALL LETTER S # 0073 24E3 CIRCLED LATIN SMALL LETTER T # 0074 24E4 CIRCLED LATIN SMALL LETTER U # 0075 24E5 CIRCLED LATIN SMALL LETTER V # 0076 24E6 CIRCLED LATIN SMALL LETTER W # 0077 24E7 CIRCLED LATIN SMALL LETTER X # 0078 24E8 CIRCLED LATIN SMALL LETTER Y # 0079 24E9 CIRCLED LATIN SMALL LETTER Z # 007A @ Additional circled number 24EA CIRCLED DIGIT ZERO # 0030 @ White on black circled numbers 24EB NEGATIVE CIRCLED NUMBER ELEVEN 24EC NEGATIVE CIRCLED NUMBER TWELVE 24ED NEGATIVE CIRCLED NUMBER THIRTEEN 24EE NEGATIVE CIRCLED NUMBER FOURTEEN 24EF NEGATIVE CIRCLED NUMBER FIFTEEN 24F0 NEGATIVE CIRCLED NUMBER SIXTEEN 24F1 NEGATIVE CIRCLED NUMBER SEVENTEEN 24F2 NEGATIVE CIRCLED NUMBER EIGHTEEN 24F3 NEGATIVE CIRCLED NUMBER NINETEEN 24F4 NEGATIVE CIRCLED NUMBER TWENTY @ Double circled numbers 24F5 DOUBLE CIRCLED DIGIT ONE 24F6 DOUBLE CIRCLED DIGIT TWO 24F7 DOUBLE CIRCLED DIGIT THREE 24F8 DOUBLE CIRCLED DIGIT FOUR 24F9 DOUBLE CIRCLED DIGIT FIVE 24FA DOUBLE CIRCLED DIGIT SIX 24FB DOUBLE CIRCLED DIGIT SEVEN 24FC DOUBLE CIRCLED DIGIT EIGHT 24FD DOUBLE CIRCLED DIGIT NINE 24FE DOUBLE CIRCLED NUMBER TEN @ Additional white on black circled number 24FF NEGATIVE CIRCLED DIGIT ZERO x (dingbat negative circled digit one - 2776) @~ ! @@ 2500 Box Drawing 257F @+ All of these characters are intended for compatibility with character cell graphic sets in use prior to 1990. @ Light and heavy solid lines 2500 BOX DRAWINGS LIGHT HORIZONTAL = Videotex Mosaic DG 15 2501 BOX DRAWINGS HEAVY HORIZONTAL 2502 BOX DRAWINGS LIGHT VERTICAL = Videotex Mosaic DG 14 2503 BOX DRAWINGS HEAVY VERTICAL @ Light and heavy dashed lines 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 @ Light and heavy line box components 250C BOX DRAWINGS LIGHT DOWN AND RIGHT = Videotex Mosaic DG 16 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 = Videotex Mosaic DG 17 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 = Videotex Mosaic DG 18 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 = Videotex Mosaic DG 19 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 = Videotex Mosaic DG 20 251D BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY = Videotex Mosaic DG 03 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 = Videotex Mosaic DG 21 2525 BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY = Videotex Mosaic DG 04 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 = Videotex Mosaic DG 22 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 = Videotex Mosaic DG 02 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 = Videotex Mosaic DG 23 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 = Videotex Mosaic DG 01 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 = Videotex Mosaic DG 24 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 = Videotex Mosaic DG 13 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 @ Light and heavy dashed lines 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 @ Double lines 2550 BOX DRAWINGS DOUBLE HORIZONTAL 2551 BOX DRAWINGS DOUBLE VERTICAL @ Light and double line box components 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 @ Character cell arcs 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 @ Character cell diagonals 2571 BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT * not intended for mathematical symbol \diagup x (reverse solidus - 005C) x (set minus - 2216) x (reverse solidus operator - 29F5) 2572 BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT * not intended for mathematical symbol \diagdown x (solidus - 002F) x (fraction slash - 2044) x (division slash - 2215) 2573 BOX DRAWINGS LIGHT DIAGONAL CROSS x (saltire - 2613) x (multiplication x - 2715) @ Light and heavy half lines 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 @ Mixed light and heavy lines 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 Block Elements 259F @ Block elements 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 = solid x (black square - 25A0) 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 @ Shade characters 2591 LIGHT SHADE * 25% 2592 MEDIUM SHADE = speckles fill, dotted fill * 50% * used in mapping to cp949 2593 DARK SHADE * 75% @ Block elements 2594 UPPER ONE EIGHTH BLOCK 2595 RIGHT ONE EIGHTH BLOCK @ Terminal graphic characters 2596 QUADRANT LOWER LEFT 2597 QUADRANT LOWER RIGHT 2598 QUADRANT UPPER LEFT 2599 QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT 259A QUADRANT UPPER LEFT AND LOWER RIGHT x (reverse checker board - 1F67F) 259B QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT 259C QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT 259D QUADRANT UPPER RIGHT 259E QUADRANT UPPER RIGHT AND LOWER LEFT x (checker board - 1F67E) 259F QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT @@ 25A0 Geometric Shapes 25FF @ Geometric shapes @+ Other geometric shapes complementing this set are found in the Miscellaneous Symbols and Arrows block. 25A0 BLACK SQUARE = moding mark (in ideographic text) x (full block - 2588) x (black large square - 2B1B) 25A1 WHITE SQUARE = quadrature = alchemical symbol for salt * may be used to represent a missing ideograph x (combining enclosing square - 20DE) x (white medium square - 25FB) x (ballot box - 2610) x (white large square - 2B1C) x (geta mark - 3013) 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 = square bullet x (black very small square - 2B1D) ~ 25AA FE0E text style ~ 25AA FE0F emoji style 25AB WHITE SMALL SQUARE x (white very small square - 2B1E) ~ 25AB FE0E text style ~ 25AB FE0F emoji style 25AC BLACK RECTANGLE 25AD WHITE RECTANGLE 25AE BLACK VERTICAL RECTANGLE = histogram marker x (end of proof - 220E) 25AF WHITE VERTICAL RECTANGLE x (apl functional symbol squish quad - 2337) x (apl functional symbol quad - 2395) 25B0 BLACK PARALLELOGRAM 25B1 WHITE PARALLELOGRAM 25B2 BLACK UP-POINTING TRIANGLE x (black medium up-pointing triangle - 23F6) x (mountain - 26F0) x (up-pointing red triangle - 1F53A) 25B3 WHITE UP-POINTING TRIANGLE = trine x (combining enclosing upward pointing triangle - 20E4) x (increment - 2206) x (triangle with rounded corners - 1F6C6) x (alchemical symbol for fire - 1F702) 25B4 BLACK UP-POINTING SMALL TRIANGLE x (up-pointing small red triangle - 1F53C) 25B5 WHITE UP-POINTING SMALL TRIANGLE 25B6 BLACK RIGHT-POINTING TRIANGLE x (black medium right-pointing triangle - 23F5) ~ 25B6 FE0E text style ~ 25B6 FE0F emoji style 25B7 WHITE RIGHT-POINTING TRIANGLE = z notation range restriction 25B8 BLACK RIGHT-POINTING SMALL TRIANGLE x (triangular bullet - 2023) 25B9 WHITE RIGHT-POINTING SMALL TRIANGLE 25BA BLACK RIGHT-POINTING POINTER 25BB WHITE RIGHT-POINTING POINTER = forward arrow indicator x (contains as normal subgroup - 22B3) 25BC BLACK DOWN-POINTING TRIANGLE x (black medium down-pointing triangle - 23F7) x (down-pointing red triangle - 1F53B) 25BD WHITE DOWN-POINTING TRIANGLE = Hamilton operator x (nabla - 2207) x (heavy white down-pointing triangle - 26DB) x (alchemical symbol for water - 1F704) 25BE BLACK DOWN-POINTING SMALL TRIANGLE x (down-pointing small red triangle - 1F53D) 25BF WHITE DOWN-POINTING SMALL TRIANGLE 25C0 BLACK LEFT-POINTING TRIANGLE x (black medium left-pointing triangle - 23F4) ~ 25C0 FE0E text style ~ 25C0 FE0F emoji style 25C1 WHITE LEFT-POINTING TRIANGLE = z notation domain restriction 25C2 BLACK LEFT-POINTING SMALL TRIANGLE 25C3 WHITE LEFT-POINTING SMALL TRIANGLE 25C4 BLACK LEFT-POINTING POINTER 25C5 WHITE LEFT-POINTING POINTER = backward arrow indicator x (normal subgroup of - 22B2) 25C6 BLACK DIAMOND x (black diamond suit - 2666) x (black medium diamond - 2B25) x (large orange diamond - 1F536) 25C7 WHITE DIAMOND x (combining enclosing diamond - 20DF) x (diamond operator - 22C4) x (white diamond suit - 2662) x (white concave-sided diamond - 27E1) x (white medium diamond - 2B26) x (alchemical symbol for soap - 1F754) 25C8 WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND 25C9 FISHEYE = tainome (Japanese, a kind of bullet) 25CA LOZENGE x (white diamond suit - 2662) 25CB WHITE CIRCLE x (combining enclosing circle - 20DD) x (large circle - 25EF) x (heavy circle - 2B58) x (ideographic number zero - 3007) x (full moon symbol - 1F315) 25CC DOTTED CIRCLE * note that the reference glyph for this character is intentionally larger than the dotted circle glyph used to indicate combining characters in this standard; see, for example, 0300 25CD CIRCLE WITH VERTICAL FILL 25CE BULLSEYE x (circled ring operator - 229A) x (heavy circle with circle inside - 2B57) x (direct hit - 1F3AF) x (round target - 1F78B) 25CF BLACK CIRCLE x (black large circle - 2B24) x (new moon symbol - 1F311) x (large red circle - 1F534) 25D0 CIRCLE WITH LEFT HALF BLACK x (first quarter moon symbol - 1F313) 25D1 CIRCLE WITH RIGHT HALF BLACK x (last quarter moon symbol - 1F317) 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 x (bullet - 2022) x (white bullet - 25E6) 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 x (arc - 2312) 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 x (bullet - 2022) x (ring operator - 2218) x (inverse bullet - 25D8) 25E7 SQUARE WITH LEFT HALF BLACK x (square with top half black - 2B12) 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 x (combining enclosing circle - 20DD) x (white circle - 25CB) x (black large circle - 2B24) x (heavy large circle - 2B55) x (ideographic number zero - 3007) @ Control code graphics 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 @ Geometric shapes 25F8 UPPER LEFT TRIANGLE 25F9 UPPER RIGHT TRIANGLE 25FA LOWER LEFT TRIANGLE x (right triangle - 22BF) 25FB WHITE MEDIUM SQUARE = always (modal operator) x (white square - 25A1) x (white square with leftwards tick - 27E4) ~ 25FB FE0E text style ~ 25FB FE0F emoji style 25FC BLACK MEDIUM SQUARE x (black square for stop - 23F9) x (black square - 25A0) ~ 25FC FE0E text style ~ 25FC FE0F emoji style 25FD WHITE MEDIUM SMALL SQUARE x (white small square - 25AB) ~ 25FD FE0E text style ~ 25FD FE0F emoji style 25FE BLACK MEDIUM SMALL SQUARE x (black small square - 25AA) ~ 25FE FE0E text style ~ 25FE FE0F emoji style 25FF LOWER RIGHT TRIANGLE x (right triangle - 22BF) @~ ! @@ 2600 Miscellaneous Symbols 26FF @@+ @ Weather and astrological symbols 2600 BLACK SUN WITH RAYS = clear weather x (sun - 2609) x (high brightness symbol - 1F506) ~ 2600 FE0E text style ~ 2600 FE0F emoji style 2601 CLOUD = cloudy weather ~ 2601 FE0E text style ~ 2601 FE0F emoji style 2602 UMBRELLA = rainy weather x (closed umbrella - 1F302) ~ 2602 FE0E text style ~ 2602 FE0F emoji style 2603 SNOWMAN = snowy weather ~ 2603 FE0E text style ~ 2603 FE0F emoji style 2604 COMET ~ 2604 FE0E text style ~ 2604 FE0F emoji style 2605 BLACK STAR x (star operator - 22C6) 2606 WHITE STAR x (stress outlined white star - 2729) x (glowing star - 1F31F) 2607 LIGHTNING 2608 THUNDERSTORM 2609 SUN = alchemical symbol for gold x (circled dot operator - 2299) x (black sun with rays - 2600) x (white sun with rays - 263C) x (sun with face - 1F31E) 260A ASCENDING NODE = alchemical symbol for sublimate 260B DESCENDING NODE = alchemical symbol for purify x (alchemical symbol for purify - 1F763) 260C CONJUNCTION = alchemical symbol for day 260D OPPOSITION @ Miscellaneous symbols 260E BLACK TELEPHONE x (telephone sign - 2121) x (telephone location sign - 2706) x (telephone receiver - 1F4DE) x (black touchtone telephone - 1F57F) ~ 260E FE0E text style ~ 260E FE0F emoji style 260F WHITE TELEPHONE x (white touchtone telephone - 1F57E) 2610 BALLOT BOX x (white square - 25A1) 2611 BALLOT BOX WITH CHECK x (ballot box with bold check - 1F5F9) ~ 2611 FE0E text style ~ 2611 FE0F emoji style 2612 BALLOT BOX WITH X x (squared times - 22A0) x (ballot box with light x - 2BBD) x (ballot box with ballot - 1F5F3) x (ballot box with script x - 1F5F5) 2613 SALTIRE = St. Andrew's Cross x (ballot x - 2717) x (light saltire - 1F7A9) @ Weather symbol 2614 UMBRELLA WITH RAIN DROPS = showery weather ~ 2614 FE0E text style ~ 2614 FE0F emoji style @ Miscellaneous symbol 2615 HOT BEVERAGE = tea or coffee, depending on locale * can be used to indicate a wait x (watch - 231A) x (hourglass - 231B) x (teacup without handle - 1F375) ~ 2615 FE0E text style ~ 2615 FE0F emoji style @ Japanese chess symbols 2616 WHITE SHOGI PIECE 2617 BLACK SHOGI PIECE @ Miscellaneous symbols 2618 SHAMROCK x (four leaf clover - 1F340) ~ 2618 FE0E text style ~ 2618 FE0F emoji style 2619 REVERSED ROTATED FLORAL HEART BULLET * a binding signature mark x (rotated floral heart bullet - 2767) x (south west pointing vine leaf - 1F659) @ Pointing hand symbols 261A BLACK LEFT POINTING INDEX 261B BLACK RIGHT POINTING INDEX 261C WHITE LEFT POINTING INDEX x (white left pointing backhand index - 1F448) x (sideways white left pointing index - 1F598) 261D WHITE UP POINTING INDEX x (sideways white up pointing index - 1F59E) ~ 261D FE0E text style ~ 261D FE0F emoji style 261E WHITE RIGHT POINTING INDEX = fist (typographic term) x (sideways white right pointing index - 1F599) 261F WHITE DOWN POINTING INDEX x (white down pointing left hand index - 1F597) x (sideways white down pointing index - 1F59F) @ Warning signs 2620 SKULL AND CROSSBONES = poison x (black skull and crossbones - 1F571) ~ 2620 FE0E text style ~ 2620 FE0F emoji style 2621 CAUTION SIGN 2622 RADIOACTIVE SIGN ~ 2622 FE0E text style ~ 2622 FE0F emoji style 2623 BIOHAZARD SIGN ~ 2623 FE0E text style ~ 2623 FE0F emoji style @ Medical and healing symbols 2624 CADUCEUS x (staff of aesculapius - 2695) x (alchemical symbol for caduceus - 1F750) 2625 ANKH @ Religious and political symbols 2626 ORTHODOX CROSS ~ 2626 FE0E text style ~ 2626 FE0F emoji style 2627 CHI RHO = Constantine's cross, Christogram x (coptic symbol khi ro - 2CE9) 2628 CROSS OF LORRAINE 2629 CROSS OF JERUSALEM x (alchemical symbol for vinegar - 1F70A) 262A STAR AND CRESCENT ~ 262A FE0E text style ~ 262A FE0F emoji style 262B FARSI SYMBOL = symbol of iran (1.0) 262C ADI SHAKTI = Gurmukhi khanda 262D HAMMER AND SICKLE 262E PEACE SYMBOL ~ 262E FE0E text style ~ 262E FE0F emoji style 262F YIN YANG x (tibetan symbol nor bu nyis -khyil - 0FCA) ~ 262F FE0E text style ~ 262F FE0F emoji style @ Yijing trigram symbols 2630 TRIGRAM FOR HEAVEN = qian2 2631 TRIGRAM FOR LAKE = dui4 2632 TRIGRAM FOR FIRE = li2 2633 TRIGRAM FOR THUNDER = zhen4 2634 TRIGRAM FOR WIND = xun4 2635 TRIGRAM FOR WATER = kan3 2636 TRIGRAM FOR MOUNTAIN = gen4 2637 TRIGRAM FOR EARTH = kun1 @ Miscellaneous symbol 2638 WHEEL OF DHARMA x (helm symbol - 2388) ~ 2638 FE0E text style ~ 2638 FE0F emoji style @ Emoticons @+ Many other emoticons are encoded in the Emoticons block starting at 1F600. 2639 WHITE FROWNING FACE x (slightly frowning face - 1F641) ~ 2639 FE0E text style ~ 2639 FE0F emoji style 263A WHITE SMILING FACE x (slightly smiling face - 1F642) = have a nice day! ~ 263A FE0E text style ~ 263A FE0F emoji style 263B BLACK SMILING FACE @ Miscellaneous symbol 263C WHITE SUN WITH RAYS = compass x (sun - 2609) x (white sun - 1F323) x (high brightness symbol - 1F506) @ Astrological symbols 263D FIRST QUARTER MOON = alchemical symbol for silver 263E LAST QUARTER MOON = alchemical symbol for silver x (power sleep symbol - 23FE) x (crescent moon - 1F319) 263F MERCURY = alchemical symbol for quicksilver 2640 FEMALE SIGN = Venus = alchemical symbol for copper x (woman - 1F469) x (womens symbol - 1F6BA) 2641 EARTH = alchemical symbol for antimony x (alchemical symbol for verdigris - 1F728) 2642 MALE SIGN = Mars = alchemical symbol for iron x (man - 1F468) x (mens symbol - 1F6B9) 2643 JUPITER = alchemical symbol for tin 2644 SATURN = alchemical symbol for lead 2645 URANUS x (astronomical symbol for uranus - 26E2) 2646 NEPTUNE = alchemical symbol for bismuth/tinglass 2647 PLUTO @ Zodiacal symbols @+ See also Asian zodiacal symbols among the animal symbols in the range 1F400-1F418. 2648 ARIES x (ram - 1F40F) ~ 2648 FE0E text style ~ 2648 FE0F emoji style 2649 TAURUS ~ 2649 FE0E text style ~ 2649 FE0F emoji style 264A GEMINI ~ 264A FE0E text style ~ 264A FE0F emoji style 264B CANCER x (crab - 1F980) ~ 264B FE0E text style ~ 264B FE0F emoji style 264C LEO x (lion face - 1F981) ~ 264C FE0E text style ~ 264C FE0F emoji style 264D VIRGO = minim (alternate glyph) ~ 264D FE0E text style ~ 264D FE0F emoji style 264E LIBRA x (scales - 2696) x (alchemical symbol for sublimation - 1F75E) ~ 264E FE0E text style ~ 264E FE0F emoji style 264F SCORPIUS = scorpio = minim, drop x (scorpion - 1F982) ~ 264F FE0E text style ~ 264F FE0F emoji style 2650 SAGITTARIUS x (bow and arrow - 1F3F9) ~ 2650 FE0E text style ~ 2650 FE0F emoji style 2651 CAPRICORN ~ 2651 FE0E text style ~ 2651 FE0F emoji style 2652 AQUARIUS x (amphora - 1F3FA) ~ 2652 FE0E text style ~ 2652 FE0F emoji style 2653 PISCES ~ 2653 FE0E text style ~ 2653 FE0F emoji style @ Chess symbols 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 @ Playing card symbols 2660 BLACK SPADE SUIT ~ 2660 FE0E text style ~ 2660 FE0F emoji style 2661 WHITE HEART SUIT 2662 WHITE DIAMOND SUIT x (white diamond - 25C7) x (lozenge - 25CA) 2663 BLACK CLUB SUIT x (shamrock - 2618) ~ 2663 FE0E text style ~ 2663 FE0F emoji style 2664 WHITE SPADE SUIT 2665 BLACK HEART SUIT = valentine x (heavy black heart - 2764) x (heart with tip on the left - 1F394) x (blue heart - 1F499) x (black heart - 1F5A4) ~ 2665 FE0E text style ~ 2665 FE0F emoji style 2666 BLACK DIAMOND SUIT x (black diamond - 25C6) ~ 2666 FE0E text style ~ 2666 FE0F emoji style 2667 WHITE CLUB SUIT @ Miscellaneous symbol 2668 HOT SPRINGS ~ 2668 FE0E text style ~ 2668 FE0F emoji style @ Musical symbols 2669 QUARTER NOTE = crotchet x (musical symbol quarter note - 1D15F) 266A EIGHTH NOTE = quaver x (musical symbol eighth note - 1D160) x (musical note - 1F3B5) 266B BEAMED EIGHTH NOTES = beamed quavers x (beamed descending musical notes - 1F39D) x (multiple musical notes - 1F3B6) 266C BEAMED SIXTEENTH NOTES = beamed semiquavers 266D MUSIC FLAT SIGN 266E MUSIC NATURAL SIGN 266F MUSIC SHARP SIGN = z notation infix bag count x (number sign - 0023) @ Syriac cross symbols @+ These symbols are used in liturgical texts of Syriac-speaking churches. 2670 WEST SYRIAC CROSS 2671 EAST SYRIAC CROSS @ Recycling symbols 2672 UNIVERSAL RECYCLING SYMBOL * used as generic symbol for recycling or to indicate that material is recyclable 2673 RECYCLING SYMBOL FOR TYPE-1 PLASTICS * polyethylene terephthalate 2674 RECYCLING SYMBOL FOR TYPE-2 PLASTICS * high density polyethylene 2675 RECYCLING SYMBOL FOR TYPE-3 PLASTICS * vinyl, polyvinyl chloride 2676 RECYCLING SYMBOL FOR TYPE-4 PLASTICS * low density polyethylene 2677 RECYCLING SYMBOL FOR TYPE-5 PLASTICS * polypropylene 2678 RECYCLING SYMBOL FOR TYPE-6 PLASTICS * polystyrene 2679 RECYCLING SYMBOL FOR TYPE-7 PLASTICS * other plastics 267A RECYCLING SYMBOL FOR GENERIC MATERIALS * used together with other text and labels to indicate the type of material to be recycled 267B BLACK UNIVERSAL RECYCLING SYMBOL x (clockwise rightwards and leftwards open circle arrows - 1F501) ~ 267B FE0E text style ~ 267B FE0F emoji style 267C RECYCLED PAPER SYMBOL * used to indicate 100% recycled paper content 267D PARTIALLY-RECYCLED PAPER SYMBOL * percentage of recycled paper content indicated in overlay or next to this symbol @ Miscellaneous symbols 267E PERMANENT PAPER SIGN 267F WHEELCHAIR SYMBOL ~ 267F FE0E text style ~ 267F FE0F emoji style @ Dice 2680 DIE FACE-1 x (game die - 1F3B2) 2681 DIE FACE-2 2682 DIE FACE-3 2683 DIE FACE-4 2684 DIE FACE-5 2685 DIE FACE-6 @ Go markers 2686 WHITE CIRCLE WITH DOT RIGHT 2687 WHITE CIRCLE WITH TWO DOTS x (face without mouth - 1F636) 2688 BLACK CIRCLE WITH WHITE DOT RIGHT 2689 BLACK CIRCLE WITH TWO WHITE DOTS @ Yijing monogram and digram symbols @+ These form a subset of the larger collection found in the Tai Xuan Jing Symbols block. 268A MONOGRAM FOR YANG 268B MONOGRAM FOR YIN 268C DIGRAM FOR GREATER YANG 268D DIGRAM FOR LESSER YIN 268E DIGRAM FOR LESSER YANG 268F DIGRAM FOR GREATER YIN @ Dictionary and map symbols 2690 WHITE FLAG x (waving white flag - 1F3F3) 2691 BLACK FLAG 2692 HAMMER AND PICK = mining, working day (in timetables) x (pick - 26CF) x (hammer and wrench - 1F6E0) ~ 2692 FE0E text style ~ 2692 FE0F emoji style 2693 ANCHOR = nautical term, harbor (on maps) ~ 2693 FE0E text style ~ 2693 FE0F emoji style 2694 CROSSED SWORDS = military term, battleground (on maps), killed in action x (fencer - 1F93A) ~ 2694 FE0E text style ~ 2694 FE0F emoji style 2695 STAFF OF AESCULAPIUS = medical term * both inclined or upright renderings of this symbol are common x (caduceus - 2624) x (bowl of hygieia - 1F54F) 2696 SCALES = legal term, jurisprudence x (libra - 264E) ~ 2696 FE0E text style ~ 2696 FE0F emoji style 2697 ALEMBIC = chemical term, chemistry x (alchemical symbol for retort - 1F76D) ~ 2697 FE0E text style ~ 2697 FE0F emoji style 2698 FLOWER = botanical term x (flower punctuation mark - 2055) x (white florette - 2740) x (tulip - 1F337) 2699 GEAR = technology, tools ~ 2699 FE0E text style ~ 2699 FE0F emoji style 269A STAFF OF HERMES * signifies a commercial term or commerce * glyph shows a heraldic staff with a winged wheel 269B ATOM SYMBOL = nuclear installation (on maps) ~ 269B FE0E text style ~ 269B FE0F emoji style @ Miscellaneous symbols 269C FLEUR-DE-LIS ~ 269C FE0E text style ~ 269C FE0F emoji style 269D OUTLINED WHITE STAR * alternative form of the interlaced pentagram (a symbol of Morocco) x (right-handed interlaced pentagram - 26E5) @ Symbols for closed captioning from ARIB STD B24 269E THREE LINES CONVERGING RIGHT = someone speaking x (three rays left - 1F5E6) 269F THREE LINES CONVERGING LEFT = background speaking x (three rays right - 1F5E7) @ Miscellaneous symbols 26A0 WARNING SIGN x (octagonal sign - 1F6D1) ~ 26A0 FE0E text style ~ 26A0 FE0F emoji style 26A1 HIGH VOLTAGE SIGN = thunder = lightning symbol x (lightning mood - 1F5F2) ~ 26A1 FE0E text style ~ 26A1 FE0F emoji style @ Gender symbols 26A2 DOUBLED FEMALE SIGN = lesbianism x (two women holding hands - 1F46D) 26A3 DOUBLED MALE SIGN * a glyph variant has the two circles on the same line = male homosexuality x (two men holding hands - 1F46C) 26A4 INTERLOCKED FEMALE AND MALE SIGN * a glyph variant has the two circles on the same line = bisexuality 26A5 MALE AND FEMALE SIGN = transgender = hermaphrodite (in entomology) 26A6 MALE WITH STROKE SIGN = transgender = alchemical symbol for iron or crocus of iron 26A7 MALE WITH STROKE AND MALE AND FEMALE SIGN = transgender 26A8 VERTICAL MALE WITH STROKE SIGN = alchemical symbol for iron 26A9 HORIZONTAL MALE WITH STROKE SIGN = alchemical symbol for iron @ Circles 26AA MEDIUM WHITE CIRCLE = asexuality, sexless, genderless = engaged, betrothed * base for male or female sign x (medium bold white circle - 1F785) ~ 26AA FE0E text style ~ 26AA FE0F emoji style 26AB MEDIUM BLACK CIRCLE * UI symbol for record function x (black circle for record - 23FA) ~ 26AB FE0E text style ~ 26AB FE0F emoji style 26AC MEDIUM SMALL WHITE CIRCLE = engaged, betrothed (genealogy) * can represent wedding ring @ Genealogical symbols 26AD MARRIAGE SYMBOL x (infinity - 221E) x (wedding - 1F492) 26AE DIVORCE SYMBOL x (infinity negated with vertical bar - 29DE) 26AF UNMARRIED PARTNERSHIP SYMBOL x (double-ended multimap - 29DF) 26B0 COFFIN = buried (genealogy) x (white rectangle - 25AD) ~ 26B0 FE0E text style ~ 26B0 FE0F emoji style 26B1 FUNERAL URN = cremated (genealogy) ~ 26B1 FE0E text style ~ 26B1 FE0F emoji style @ Gender symbol 26B2 NEUTER @ Astrological signs 26B3 CERES 26B4 PALLAS 26B5 JUNO 26B6 VESTA 26B7 CHIRON 26B8 BLACK MOON LILITH 26B9 SEXTILE x (asterisk - 002A) x (six pointed black star - 2736) x (alchemical symbol for sal-ammoniac - 1F739) 26BA SEMISEXTILE x (xor - 22BB) 26BB QUINCUNX x (nand - 22BC) 26BC SESQUIQUADRATE @ Sport symbols @+ See other sport symbols in the Miscellaneous Symbols and Pictographs block. 26BD SOCCER BALL ~ 26BD FE0E text style ~ 26BD FE0F emoji style 26BE BASEBALL ~ 26BE FE0E text style ~ 26BE FE0F emoji style @ Miscellaneous symbol from ARIB STD B24 26BF SQUARED KEY = parental lock x (key - 1F511) @ Symbols for draughts and checkers 26C0 WHITE DRAUGHTS MAN 26C1 WHITE DRAUGHTS KING 26C2 BLACK DRAUGHTS MAN 26C3 BLACK DRAUGHTS KING @ Weather symbols from ARIB STD B24 26C4 SNOWMAN WITHOUT SNOW = light snow ~ 26C4 FE0E text style ~ 26C4 FE0F emoji style 26C5 SUN BEHIND CLOUD = partly cloudy x (white sun with small cloud - 1F324) ~ 26C5 FE0E text style ~ 26C5 FE0F emoji style 26C6 RAIN = rainy weather 26C7 BLACK SNOWMAN = heavy snow 26C8 THUNDER CLOUD AND RAIN = thunderstorm x (cloud with lightning - 1F329) ~ 26C8 FE0E text style ~ 26C8 FE0F emoji style @ Game symbols from ARIB STD B24 26C9 TURNED WHITE SHOGI PIECE 26CA TURNED BLACK SHOGI PIECE 26CB WHITE DIAMOND IN SQUARE x (apl functional symbol quad diamond - 233A) @ Traffic signs from ARIB STD B24 26CC CROSSING LANES = accident x (falling diagonal crossing rising diagonal - 292C) 26CD DISABLED CAR @ Zodiacal symbol 26CE OPHIUCHUS @ Traffic signs from ARIB STD B24 26CF PICK = under construction x (hammer and pick - 2692) x (construction sign - 1F6A7) ~ 26CF FE0E text style ~ 26CF FE0F emoji style 26D0 CAR SLIDING = icy road 26D1 HELMET WITH WHITE CROSS = maintenance x (construction worker - 1F477) ~ 26D1 FE0E text style ~ 26D1 FE0F emoji style 26D2 CIRCLED CROSSING LANES = road closed x (circled times - 2297) 26D3 CHAINS = tyre chains required ~ 26D3 FE0E text style ~ 26D3 FE0F emoji style 26D4 NO ENTRY x (no entry sign - 1F6AB) ~ 26D4 FE0E text style ~ 26D4 FE0F emoji style 26D5 ALTERNATE ONE-WAY LEFT WAY TRAFFIC * left side traffic 26D6 BLACK TWO-WAY LEFT WAY TRAFFIC * left side traffic 26D7 WHITE TWO-WAY LEFT WAY TRAFFIC * left side traffic 26D8 BLACK LEFT LANE MERGE * left side traffic 26D9 WHITE LEFT LANE MERGE * left side traffic 26DA DRIVE SLOW SIGN 26DB HEAVY WHITE DOWN-POINTING TRIANGLE = drive slow x (white down-pointing triangle - 25BD) 26DC LEFT CLOSED ENTRY 26DD SQUARED SALTIRE = closed entry x (squared times - 22A0) 26DE FALLING DIAGONAL IN WHITE CIRCLE IN BLACK SQUARE = closed to large vehicles 26DF BLACK TRUCK = black lorry = closed to large vehicles, alternate x (delivery truck - 1F69A) 26E0 RESTRICTED LEFT ENTRY-1 26E1 RESTRICTED LEFT ENTRY-2 @ Astronomical symbol 26E2 ASTRONOMICAL SYMBOL FOR URANUS x (uranus - 2645) @ Map symbol from ARIB STD B24 26E3 HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE = public office @ Pentagram symbols @+ These are mystic or occult symbols. 26E4 PENTAGRAM = pentalpha, pentangle * symbol of various uses, including symbol on Moroccan flag x (white star - 2606) 26E5 RIGHT-HANDED INTERLACED PENTAGRAM * symbol of various countries, including Morocco x (outlined white star - 269D) 26E6 LEFT-HANDED INTERLACED PENTAGRAM * symbol of various countries, including Ethiopia 26E7 INVERTED PENTAGRAM @ Map symbols from ARIB STD B24 26E8 BLACK CROSS ON SHIELD = hospital x (hospital - 1F3E5) 26E9 SHINTO SHRINE = torii ~ 26E9 FE0E text style ~ 26E9 FE0F emoji style 26EA CHURCH ~ 26EA FE0E text style ~ 26EA FE0F emoji style 26EB CASTLE x (european castle - 1F3F0) 26EC HISTORIC SITE x (therefore - 2234) 26ED GEAR WITHOUT HUB = factory x (gear - 2699) x (factory - 1F3ED) 26EE GEAR WITH HANDLES = power plant, power substation 26EF MAP SYMBOL FOR LIGHTHOUSE 26F0 MOUNTAIN x (black up-pointing triangle - 25B2) x (snow capped mountain - 1F3D4) ~ 26F0 FE0E text style ~ 26F0 FE0F emoji style 26F1 UMBRELLA ON GROUND = bathing beach x (umbrella - 2602) x (beach with umbrella - 1F3D6) ~ 26F1 FE0E text style ~ 26F1 FE0F emoji style 26F2 FOUNTAIN = park ~ 26F2 FE0E text style ~ 26F2 FE0F emoji style 26F3 FLAG IN HOLE = golf course x (triangular flag on post - 1F6A9) ~ 26F3 FE0E text style ~ 26F3 FE0F emoji style 26F4 FERRY = ferry boat terminal x (ship - 1F6A2) ~ 26F4 FE0E text style ~ 26F4 FE0F emoji style 26F5 SAILBOAT = marina or yacht harbour x (rowboat - 1F6A3) ~ 26F5 FE0E text style ~ 26F5 FE0F emoji style 26F6 SQUARE FOUR CORNERS = intersection 26F7 SKIER = ski resort x (ski and ski boot - 1F3BF) ~ 26F7 FE0E text style ~ 26F7 FE0F emoji style 26F8 ICE SKATE = ice skating rink ~ 26F8 FE0E text style ~ 26F8 FE0F emoji style 26F9 PERSON WITH BALL = track and field, gymnasium ~ 26F9 FE0E text style ~ 26F9 FE0F emoji style 26FA TENT = camping site x (camping - 1F3D5) ~ 26FA FE0E text style ~ 26FA FE0F emoji style 26FB JAPANESE BANK SYMBOL x (bank - 1F3E6) 26FC HEADSTONE GRAVEYARD SYMBOL = graveyard, memorial park, cemetery 26FD FUEL PUMP = petrol station, gas station ~ 26FD FE0E text style ~ 26FD FE0F emoji style 26FE CUP ON BLACK SQUARE = drive-in restaurant x (hot beverage - 2615) x (teacup without handle - 1F375) 26FF WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE = Japanese self-defence force site @~ ! @@ 2700 Dingbats 27BF @+ ITC Zapf dingbats series 100. Some of the ITC Zapf dingbats have been unified with geometric shape characters. Gaps in the chart have subsequently been filled with other dingbat-like symbols. x (black telephone - 260E) x (black right pointing index - 261B) x (white right pointing index - 261E) x (black star - 2605) x (black circle - 25CF) x (black square - 25A0) x (black up-pointing triangle - 25B2) x (black down-pointing triangle - 25BC) x (black diamond - 25C6) x (rightwards arrow - 2192) x (left right arrow - 2194) x (up down arrow - 2195) @ Miscellaneous 2700 BLACK SAFETY SCISSORS * forms a pair with 2704 white scissors 2701 UPPER BLADE SCISSORS 2702 BLACK SCISSORS ~ 2702 FE0E text style ~ 2702 FE0F emoji style 2703 LOWER BLADE SCISSORS 2704 WHITE SCISSORS 2705 WHITE HEAVY CHECK MARK x (heavy check mark - 2714) 2706 TELEPHONE LOCATION SIGN x (telephone sign - 2121) x (telephone receiver - 1F4DE) 2707 TAPE DRIVE 2708 AIRPLANE x (up-pointing airplane - 1F6E7) ~ 2708 FE0E text style ~ 2708 FE0F emoji style 2709 ENVELOPE x (incoming envelope - 1F4E8) x (back of envelope - 1F582) ~ 2709 FE0E text style ~ 2709 FE0F emoji style 270A RAISED FIST = rock in Rock, Paper, Scissors game x (fisted hand sign - 1F44A) 270B RAISED HAND = paper in Rock, Paper, Scissors game x (waving hand sign - 1F44B) x (raised hand with fingers splayed - 1F590) 270C VICTORY HAND = scissors in Rock, Paper, Scissors game x (reversed victory hand - 1F594) ~ 270C FE0E text style ~ 270C FE0F emoji style 270D WRITING HAND x (left writing hand - 1F58E) ~ 270D FE0E text style ~ 270D FE0F emoji style 270E LOWER RIGHT PENCIL x (lower left pencil - 1F589) 270F PENCIL ~ 270F FE0E text style ~ 270F FE0F emoji style 2710 UPPER RIGHT PENCIL 2711 WHITE NIB x (lower left fountain pen - 1F58B) 2712 BLACK NIB ~ 2712 FE0E text style ~ 2712 FE0F emoji style 2713 CHECK MARK x (square root - 221A) x (light check mark - 1F5F8) 2714 HEAVY CHECK MARK ~ 2714 FE0E text style ~ 2714 FE0F emoji style 2715 MULTIPLICATION X x (multiplication sign - 00D7) x (box drawings light diagonal cross - 2573) 2716 HEAVY MULTIPLICATION X ~ 2716 FE0E text style ~ 2716 FE0F emoji style 2717 BALLOT X x (saltire - 2613) x (ballot script x - 1F5F4) 2718 HEAVY BALLOT X x (ballot bold script x - 1F5F6) @ Crosses 2719 OUTLINED GREEK CROSS 271A HEAVY GREEK CROSS x (very bold greek cross - 1F7A5) 271B OPEN CENTRE CROSS 271C HEAVY OPEN CENTRE CROSS 271D LATIN CROSS ~ 271D FE0E text style ~ 271D FE0F emoji style 271E SHADOWED WHITE LATIN CROSS x (white latin cross - 1F546) 271F OUTLINED LATIN CROSS 2720 MALTESE CROSS * Historically, the Maltese cross took many forms; the shape shown in the Zapf Dingbats is similar to one known as the Cross Formée. @ Stars and asterisks 2721 STAR OF DAVID x (six pointed star with middle dot - 1F52F) ~ 2721 FE0E text style ~ 2721 FE0F emoji style 2722 FOUR TEARDROP-SPOKED ASTERISK 2723 FOUR BALLOON-SPOKED ASTERISK 2724 HEAVY FOUR BALLOON-SPOKED ASTERISK 2725 FOUR CLUB-SPOKED ASTERISK 2726 BLACK FOUR POINTED STAR x (light four pointed black cusp - 2BCC) x (four pointed black star - 1F7C6) 2727 WHITE FOUR POINTED STAR x (white four pointed cusp - 2BCE) 2728 SPARKLES 2729 STRESS OUTLINED WHITE STAR x (white star - 2606) 272A CIRCLED WHITE STAR 272B OPEN CENTRE BLACK STAR 272C BLACK CENTRE WHITE STAR 272D OUTLINED BLACK STAR 272E HEAVY OUTLINED BLACK STAR 272F PINWHEEL STAR 2730 SHADOWED WHITE STAR 2731 HEAVY ASTERISK x (asterisk - 002A) x (heavy six spoked asterisk - 1F7B8) 2732 OPEN CENTRE ASTERISK 2733 EIGHT SPOKED ASTERISK x (light eight spoked asterisk - 1F7BB) ~ 2733 FE0E text style ~ 2733 FE0F emoji style 2734 EIGHT POINTED BLACK STAR ~ 2734 FE0E text style ~ 2734 FE0F emoji style 2735 EIGHT POINTED PINWHEEL STAR x (heavy eight pointed pinwheel star - 1F7D1) 2736 SIX POINTED BLACK STAR x (sextile - 26B9) 2737 EIGHT POINTED RECTILINEAR BLACK STAR x (medium eight pointed black star - 1F7CE) 2738 HEAVY EIGHT POINTED RECTILINEAR BLACK STAR x (heavy eight pointed black star - 1F7CF) 2739 TWELVE POINTED BLACK STAR 273A SIXTEEN POINTED ASTERISK = starburst 273B TEARDROP-SPOKED ASTERISK 273C OPEN CENTRE TEARDROP-SPOKED ASTERISK 273D HEAVY TEARDROP-SPOKED ASTERISK @ Fleurons 273E SIX PETALLED BLACK AND WHITE FLORETTE 273F BLACK FLORETTE 2740 WHITE FLORETTE x (rosette - 1F3F5) x (white flower - 1F4AE) 2741 EIGHT PETALLED OUTLINED BLACK FLORETTE x (black rosette - 1F3F6) @ Stars, asterisks and snowflakes 2742 CIRCLED OPEN CENTRE EIGHT POINTED STAR 2743 HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK 2744 SNOWFLAKE ~ 2744 FE0E text style ~ 2744 FE0F emoji style 2745 TIGHT TRIFOLIATE SNOWFLAKE 2746 HEAVY CHEVRON SNOWFLAKE 2747 SPARKLE ~ 2747 FE0E text style ~ 2747 FE0F emoji style 2748 HEAVY SPARKLE 2749 BALLOON-SPOKED ASTERISK = jack 274A EIGHT TEARDROP-SPOKED PROPELLER ASTERISK 274B HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK = turbofan @ Miscellaneous 274C CROSS MARK * forms a game tally pair with 2B55 x (multiplication sign - 00D7) x (cancellation x - 1F5D9) 274D SHADOWED WHITE CIRCLE x (lower right shadowed white circle - 1F53E) 274E NEGATIVE SQUARED CROSS MARK 274F LOWER RIGHT DROP-SHADOWED WHITE SQUARE 2750 UPPER RIGHT DROP-SHADOWED WHITE SQUARE 2751 LOWER RIGHT SHADOWED WHITE SQUARE 2752 UPPER RIGHT SHADOWED WHITE SQUARE 2753 BLACK QUESTION MARK ORNAMENT 2754 WHITE QUESTION MARK ORNAMENT 2755 WHITE EXCLAMATION MARK ORNAMENT 2756 BLACK DIAMOND MINUS WHITE X 2757 HEAVY EXCLAMATION MARK SYMBOL = obstacles on the road, ARIB STD B24 ~ 2757 FE0E text style ~ 2757 FE0F emoji style 2758 LIGHT VERTICAL BAR x (vertical line - 007C) 2759 MEDIUM VERTICAL BAR 275A HEAVY VERTICAL BAR @ Punctuation mark ornaments 275B HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT x (left single quotation mark - 2018) 275C HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT x (right single quotation mark - 2019) 275D HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT x (left double quotation mark - 201C) x (sans-serif heavy double turned comma quotation mark ornament - 1F676) 275E HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT x (right double quotation mark - 201D) x (sans-serif heavy double comma quotation mark ornament - 1F677) 275F HEAVY LOW SINGLE COMMA QUOTATION MARK ORNAMENT x (single low-9 quotation mark - 201A) 2760 HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT x (double low-9 quotation mark - 201E) x (sans-serif heavy low double comma quotation mark ornament - 1F678) 2761 CURVED STEM PARAGRAPH SIGN ORNAMENT x (pilcrow sign - 00B6) 2762 HEAVY EXCLAMATION MARK ORNAMENT x (exclamation mark - 0021) 2763 HEAVY HEART EXCLAMATION MARK ORNAMENT ~ 2763 FE0E text style ~ 2763 FE0F emoji style 2764 HEAVY BLACK HEART x (black heart suit - 2665) ~ 2764 FE0E text style ~ 2764 FE0F emoji style 2765 ROTATED HEAVY BLACK HEART BULLET @ Fleurons 2766 FLORAL HEART = Aldus leaf 2767 ROTATED FLORAL HEART BULLET = hedera, ivy leaf x (reversed rotated floral heart bullet - 2619) x (south east pointing vine leaf - 1F65B) @ Ornamental brackets 2768 MEDIUM LEFT PARENTHESIS ORNAMENT x (left parenthesis - 0028) 2769 MEDIUM RIGHT PARENTHESIS ORNAMENT x (right parenthesis - 0029) 276A MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT 276B MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT 276C MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT x (left-pointing angle bracket - 2329) 276D MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT x (right-pointing angle bracket - 232A) 276E HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT x (single left-pointing angle quotation mark - 2039) 276F HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT x (single right-pointing angle quotation mark - 203A) 2770 HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT 2771 HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT 2772 LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT x (left tortoise shell bracket - 3014) 2773 LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT x (right tortoise shell bracket - 3015) 2774 MEDIUM LEFT CURLY BRACKET ORNAMENT x (left curly bracket - 007B) 2775 MEDIUM RIGHT CURLY BRACKET ORNAMENT x (right curly bracket - 007D) @ Dingbat circled digits 2776 DINGBAT NEGATIVE CIRCLED DIGIT ONE 2777 DINGBAT NEGATIVE CIRCLED DIGIT TWO 2778 DINGBAT NEGATIVE CIRCLED DIGIT THREE 2779 DINGBAT NEGATIVE CIRCLED DIGIT FOUR 277A DINGBAT NEGATIVE CIRCLED DIGIT FIVE 277B DINGBAT NEGATIVE CIRCLED DIGIT SIX 277C DINGBAT NEGATIVE CIRCLED DIGIT SEVEN 277D DINGBAT NEGATIVE CIRCLED DIGIT EIGHT 277E DINGBAT NEGATIVE CIRCLED DIGIT NINE 277F DINGBAT NEGATIVE CIRCLED NUMBER TEN 2780 DINGBAT CIRCLED SANS-SERIF DIGIT ONE 2781 DINGBAT CIRCLED SANS-SERIF DIGIT TWO 2782 DINGBAT CIRCLED SANS-SERIF DIGIT THREE 2783 DINGBAT CIRCLED SANS-SERIF DIGIT FOUR 2784 DINGBAT CIRCLED SANS-SERIF DIGIT FIVE 2785 DINGBAT CIRCLED SANS-SERIF DIGIT SIX 2786 DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN 2787 DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT 2788 DINGBAT CIRCLED SANS-SERIF DIGIT NINE 2789 DINGBAT CIRCLED SANS-SERIF NUMBER TEN 278A DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE 278B DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO 278C DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE 278D DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR 278E DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE 278F DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX 2790 DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN 2791 DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT 2792 DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE 2793 DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN @ Dingbat arrow 2794 HEAVY WIDE-HEADED RIGHTWARDS ARROW x (wide-headed rightwards medium barb arrow - 1F872) @ Heavy variants of arithmetic symbols 2795 HEAVY PLUS SIGN x (plus sign - 002B) 2796 HEAVY MINUS SIGN x (minus sign - 2212) 2797 HEAVY DIVISION SIGN x (division sign - 00F7) @ Dingbat arrows 2798 HEAVY SOUTH EAST ARROW 2799 HEAVY RIGHTWARDS ARROW 279A HEAVY NORTH EAST ARROW 279B DRAFTING POINT RIGHTWARDS ARROW 279C HEAVY ROUND-TIPPED RIGHTWARDS ARROW 279D TRIANGLE-HEADED RIGHTWARDS ARROW 279E HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW 279F DASHED TRIANGLE-HEADED RIGHTWARDS ARROW 27A0 HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW 27A1 BLACK RIGHTWARDS ARROW * fonts may harmonize this glyph with the style for other black arrows x (leftwards black arrow - 2B05) x (rightwards black arrow - 2B95) ~ 27A1 FE0E text style ~ 27A1 FE0F emoji style 27A2 THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD x (three-d top-lighted rightwards equilateral arrowhead - 2B9A) 27A3 THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD 27A4 BLACK RIGHTWARDS ARROWHEAD x (black rightwards equilateral arrowhead - 2B9E) 27A5 HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW x (black curved downwards and rightwards arrow - 2BA9) 27A6 HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW x (black curved upwards and rightwards arrow - 2BAB) 27A7 SQUAT BLACK RIGHTWARDS ARROW x (rightwards heavy compressed arrow - 1F842) 27A8 HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW 27A9 RIGHT-SHADED WHITE RIGHTWARDS ARROW x (rightwards right-shaded white arrow - 1F8A5) 27AA LEFT-SHADED WHITE RIGHTWARDS ARROW x (rightwards left-shaded white arrow - 1F8A7) 27AB BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW x (rightwards back-tilted shadowed white arrow - 1F8A9) 27AC FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW x (rightwards front-tilted shadowed white arrow - 1F8AB) 27AD HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW 27AE HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW 27AF NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW x (rightwards arrow with notched tail - 1F89A) @ Miscellaneous 27B0 CURLY LOOP = kururi @ Dingbat arrows 27B1 NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW 27B2 CIRCLED HEAVY WHITE RIGHTWARDS ARROW 27B3 WHITE-FEATHERED RIGHTWARDS ARROW 27B4 BLACK-FEATHERED SOUTH EAST ARROW 27B5 BLACK-FEATHERED RIGHTWARDS ARROW 27B6 BLACK-FEATHERED NORTH EAST ARROW 27B7 HEAVY BLACK-FEATHERED SOUTH EAST ARROW 27B8 HEAVY BLACK-FEATHERED RIGHTWARDS ARROW 27B9 HEAVY BLACK-FEATHERED NORTH EAST ARROW 27BA TEARDROP-BARBED RIGHTWARDS ARROW 27BB HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW 27BC WEDGE-TAILED RIGHTWARDS ARROW 27BD HEAVY WEDGE-TAILED RIGHTWARDS ARROW 27BE OPEN-OUTLINED RIGHTWARDS ARROW @ Miscellaneous 27BF DOUBLE CURLY LOOP @~ ! @@ 27C0 Miscellaneous Mathematical Symbols-A 27EF @ Miscellaneous symbols 27C0 THREE DIMENSIONAL ANGLE * used by Euclid 27C1 WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE * used by Euclid 27C2 PERPENDICULAR = orthogonal to * relation, typeset with additional spacing x (up tack - 22A5) 27C3 OPEN SUBSET 27C4 OPEN SUPERSET 27C5 LEFT S-SHAPED BAG DELIMITER 27C6 RIGHT S-SHAPED BAG DELIMITER 27C7 OR WITH DOT INSIDE 27C8 REVERSE SOLIDUS PRECEDING SUBSET 27C9 SUPERSET PRECEDING SOLIDUS @ Vertical line operator 27CA VERTICAL BAR WITH HORIZONTAL STROKE x (parallel with horizontal stroke - 2AF2) x (triple vertical bar with horizontal stroke - 2AF5) @ Miscellaneous symbol 27CB MATHEMATICAL RISING DIAGONAL = \diagup x (division slash - 2215) @ Division operator 27CC LONG DIVISION * graphically extends over the dividend x (division sign - 00F7) x (division slash - 2215) x (square root - 221A) @ Miscellaneous symbol 27CD MATHEMATICAL FALLING DIAGONAL = \diagdown x (set minus - 2216) x (reverse solidus operator - 29F5) @ Operators 27CE SQUARED LOGICAL AND = box min * morphological min product operator * morphological erosion operator * additive minimum operator 27CF SQUARED LOGICAL OR = box max * morphological max product operator * morphological dilation operator * additive maximum operator @ Miscellaneous symbol 27D0 WHITE DIAMOND WITH CENTRED DOT x (diamond shape with a dot inside - 1F4A0) @ Operators 27D1 AND WITH DOT x (logical and - 2227) x (intersection with dot - 2A40) 27D2 ELEMENT OF OPENING UPWARDS x (element of opening downwards - 2AD9) 27D3 LOWER RIGHT CORNER WITH DOT = pullback x (right floor - 230B) 27D4 UPPER LEFT CORNER WITH DOT = pushout x (left ceiling - 2308) @ Database theory operators 27D5 LEFT OUTER JOIN 27D6 RIGHT OUTER JOIN 27D7 FULL OUTER JOIN x (join - 2A1D) @ Tacks and turnstiles 27D8 LARGE UP TACK x (up tack - 22A5) 27D9 LARGE DOWN TACK x (down tack - 22A4) 27DA LEFT AND RIGHT DOUBLE TURNSTILE x (true - 22A8) x (vertical bar double left turnstile - 2AE4) 27DB LEFT AND RIGHT TACK x (right tack - 22A2) 27DC LEFT MULTIMAP x (multimap - 22B8) 27DD LONG RIGHT TACK x (right tack - 22A2) 27DE LONG LEFT TACK x (left tack - 22A3) 27DF UP TACK WITH CIRCLE ABOVE = radial component x (down tack with circle below - 2AF1) @ Modal logic operators 27E0 LOZENGE DIVIDED BY HORIZONTAL RULE * used as form of possibility in modal logic x (lozenge - 25CA) 27E1 WHITE CONCAVE-SIDED DIAMOND = never (modal operator) x (white diamond - 25C7) 27E2 WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK = was never (modal operator) 27E3 WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK = will never be (modal operator) 27E4 WHITE SQUARE WITH LEFTWARDS TICK = was always (modal operator) x (white square - 25A1) x (white medium square - 25FB) 27E5 WHITE SQUARE WITH RIGHTWARDS TICK = will always be (modal operator) @ Mathematical brackets @+ These bracket characters are also used as punctuation outside of a mathematical context. 27E6 MATHEMATICAL LEFT WHITE SQUARE BRACKET = z notation left bag bracket x (left white square bracket - 301A) 27E7 MATHEMATICAL RIGHT WHITE SQUARE BRACKET = z notation right bag bracket x (right white square bracket - 301B) 27E8 MATHEMATICAL LEFT ANGLE BRACKET = bra = z notation left sequence bracket x (left-pointing angle bracket - 2329) x (left angle bracket - 3008) 27E9 MATHEMATICAL RIGHT ANGLE BRACKET = ket = z notation right sequence bracket x (right-pointing angle bracket - 232A) x (right angle bracket - 3009) 27EA MATHEMATICAL LEFT DOUBLE ANGLE BRACKET = z notation left chevron bracket x (left double angle bracket - 300A) 27EB MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET = z notation right chevron bracket x (right double angle bracket - 300B) 27EC MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET x (left black tortoise shell bracket - 2997) x (left white tortoise shell bracket - 3018) 27ED MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET x (right black tortoise shell bracket - 2998) x (right white tortoise shell bracket - 3019) 27EE MATHEMATICAL LEFT FLATTENED PARENTHESIS = lgroup 27EF MATHEMATICAL RIGHT FLATTENED PARENTHESIS = rgroup @@ 27F0 Supplemental Arrows-A 27FF @ Arrows 27F0 UPWARDS QUADRUPLE ARROW x (upwards triple arrow - 290A) x (leftwards quadruple arrow - 2B45) 27F1 DOWNWARDS QUADRUPLE ARROW x (downwards triple arrow - 290B) 27F2 ANTICLOCKWISE GAPPED CIRCLE ARROW x (anticlockwise open circle arrow - 21BA) x (anticlockwise closed circle arrow - 2940) 27F3 CLOCKWISE GAPPED CIRCLE ARROW x (clockwise open circle arrow - 21BB) x (clockwise closed circle arrow - 2941) 27F4 RIGHT ARROW WITH CIRCLED PLUS x (left arrow with circled plus - 2B32) @ Long arrows @+ The long arrows are used for mapping whereas the short forms would be used in limits. They are also needed for MathML to complete mapping to the AMSA sets. 27F5 LONG LEFTWARDS ARROW x (leftwards arrow - 2190) 27F6 LONG RIGHTWARDS ARROW x (rightwards arrow - 2192) 27F7 LONG LEFT RIGHT ARROW x (left right arrow - 2194) 27F8 LONG LEFTWARDS DOUBLE ARROW x (leftwards double arrow - 21D0) 27F9 LONG RIGHTWARDS DOUBLE ARROW x (rightwards double arrow - 21D2) 27FA LONG LEFT RIGHT DOUBLE ARROW x (left right double arrow - 21D4) 27FB LONG LEFTWARDS ARROW FROM BAR = maps from x (leftwards arrow from bar - 21A4) 27FC LONG RIGHTWARDS ARROW FROM BAR = maps to x (rightwards arrow from bar - 21A6) 27FD LONG LEFTWARDS DOUBLE ARROW FROM BAR x (leftwards double arrow from bar - 2906) 27FE LONG RIGHTWARDS DOUBLE ARROW FROM BAR x (rightwards double arrow from bar - 2907) 27FF LONG RIGHTWARDS SQUIGGLE ARROW x (rightwards squiggle arrow - 21DD) x (long leftwards squiggle arrow - 2B33) @@ 2800 Braille Patterns 28FF @+ When braille patterns are punched, the filled circles shown here correspond to punch impression. @ Braille patterns 2800 BRAILLE PATTERN BLANK * while this character is imaged as a fixed-width blank in many fonts, it does not act as a space 2801 BRAILLE PATTERN DOTS-1 2802 BRAILLE PATTERN DOTS-2 2803 BRAILLE PATTERN DOTS-12 2804 BRAILLE PATTERN DOTS-3 2805 BRAILLE PATTERN DOTS-13 2806 BRAILLE PATTERN DOTS-23 2807 BRAILLE PATTERN DOTS-123 2808 BRAILLE PATTERN DOTS-4 2809 BRAILLE PATTERN DOTS-14 280A BRAILLE PATTERN DOTS-24 280B BRAILLE PATTERN DOTS-124 280C BRAILLE PATTERN DOTS-34 280D BRAILLE PATTERN DOTS-134 280E BRAILLE PATTERN DOTS-234 280F BRAILLE PATTERN DOTS-1234 2810 BRAILLE PATTERN DOTS-5 2811 BRAILLE PATTERN DOTS-15 2812 BRAILLE PATTERN DOTS-25 2813 BRAILLE PATTERN DOTS-125 2814 BRAILLE PATTERN DOTS-35 2815 BRAILLE PATTERN DOTS-135 2816 BRAILLE PATTERN DOTS-235 2817 BRAILLE PATTERN DOTS-1235 2818 BRAILLE PATTERN DOTS-45 2819 BRAILLE PATTERN DOTS-145 281A BRAILLE PATTERN DOTS-245 281B BRAILLE PATTERN DOTS-1245 281C BRAILLE PATTERN DOTS-345 281D BRAILLE PATTERN DOTS-1345 281E BRAILLE PATTERN DOTS-2345 281F BRAILLE PATTERN DOTS-12345 2820 BRAILLE PATTERN DOTS-6 2821 BRAILLE PATTERN DOTS-16 2822 BRAILLE PATTERN DOTS-26 2823 BRAILLE PATTERN DOTS-126 2824 BRAILLE PATTERN DOTS-36 2825 BRAILLE PATTERN DOTS-136 2826 BRAILLE PATTERN DOTS-236 2827 BRAILLE PATTERN DOTS-1236 2828 BRAILLE PATTERN DOTS-46 2829 BRAILLE PATTERN DOTS-146 282A BRAILLE PATTERN DOTS-246 282B BRAILLE PATTERN DOTS-1246 282C BRAILLE PATTERN DOTS-346 282D BRAILLE PATTERN DOTS-1346 282E BRAILLE PATTERN DOTS-2346 282F BRAILLE PATTERN DOTS-12346 2830 BRAILLE PATTERN DOTS-56 2831 BRAILLE PATTERN DOTS-156 2832 BRAILLE PATTERN DOTS-256 2833 BRAILLE PATTERN DOTS-1256 2834 BRAILLE PATTERN DOTS-356 2835 BRAILLE PATTERN DOTS-1356 2836 BRAILLE PATTERN DOTS-2356 2837 BRAILLE PATTERN DOTS-12356 2838 BRAILLE PATTERN DOTS-456 2839 BRAILLE PATTERN DOTS-1456 283A BRAILLE PATTERN DOTS-2456 283B BRAILLE PATTERN DOTS-12456 283C BRAILLE PATTERN DOTS-3456 283D BRAILLE PATTERN DOTS-13456 283E BRAILLE PATTERN DOTS-23456 283F BRAILLE PATTERN DOTS-123456 2840 BRAILLE PATTERN DOTS-7 2841 BRAILLE PATTERN DOTS-17 2842 BRAILLE PATTERN DOTS-27 2843 BRAILLE PATTERN DOTS-127 2844 BRAILLE PATTERN DOTS-37 2845 BRAILLE PATTERN DOTS-137 2846 BRAILLE PATTERN DOTS-237 2847 BRAILLE PATTERN DOTS-1237 2848 BRAILLE PATTERN DOTS-47 2849 BRAILLE PATTERN DOTS-147 284A BRAILLE PATTERN DOTS-247 284B BRAILLE PATTERN DOTS-1247 284C BRAILLE PATTERN DOTS-347 284D BRAILLE PATTERN DOTS-1347 284E BRAILLE PATTERN DOTS-2347 284F BRAILLE PATTERN DOTS-12347 2850 BRAILLE PATTERN DOTS-57 2851 BRAILLE PATTERN DOTS-157 2852 BRAILLE PATTERN DOTS-257 2853 BRAILLE PATTERN DOTS-1257 2854 BRAILLE PATTERN DOTS-357 2855 BRAILLE PATTERN DOTS-1357 2856 BRAILLE PATTERN DOTS-2357 2857 BRAILLE PATTERN DOTS-12357 2858 BRAILLE PATTERN DOTS-457 2859 BRAILLE PATTERN DOTS-1457 285A BRAILLE PATTERN DOTS-2457 285B BRAILLE PATTERN DOTS-12457 285C BRAILLE PATTERN DOTS-3457 285D BRAILLE PATTERN DOTS-13457 285E BRAILLE PATTERN DOTS-23457 285F BRAILLE PATTERN DOTS-123457 2860 BRAILLE PATTERN DOTS-67 2861 BRAILLE PATTERN DOTS-167 2862 BRAILLE PATTERN DOTS-267 2863 BRAILLE PATTERN DOTS-1267 2864 BRAILLE PATTERN DOTS-367 2865 BRAILLE PATTERN DOTS-1367 2866 BRAILLE PATTERN DOTS-2367 2867 BRAILLE PATTERN DOTS-12367 2868 BRAILLE PATTERN DOTS-467 2869 BRAILLE PATTERN DOTS-1467 286A BRAILLE PATTERN DOTS-2467 286B BRAILLE PATTERN DOTS-12467 286C BRAILLE PATTERN DOTS-3467 286D BRAILLE PATTERN DOTS-13467 286E BRAILLE PATTERN DOTS-23467 286F BRAILLE PATTERN DOTS-123467 2870 BRAILLE PATTERN DOTS-567 2871 BRAILLE PATTERN DOTS-1567 2872 BRAILLE PATTERN DOTS-2567 2873 BRAILLE PATTERN DOTS-12567 2874 BRAILLE PATTERN DOTS-3567 2875 BRAILLE PATTERN DOTS-13567 2876 BRAILLE PATTERN DOTS-23567 2877 BRAILLE PATTERN DOTS-123567 2878 BRAILLE PATTERN DOTS-4567 2879 BRAILLE PATTERN DOTS-14567 287A BRAILLE PATTERN DOTS-24567 287B BRAILLE PATTERN DOTS-124567 287C BRAILLE PATTERN DOTS-34567 287D BRAILLE PATTERN DOTS-134567 287E BRAILLE PATTERN DOTS-234567 287F BRAILLE PATTERN DOTS-1234567 2880 BRAILLE PATTERN DOTS-8 2881 BRAILLE PATTERN DOTS-18 2882 BRAILLE PATTERN DOTS-28 2883 BRAILLE PATTERN DOTS-128 2884 BRAILLE PATTERN DOTS-38 2885 BRAILLE PATTERN DOTS-138 2886 BRAILLE PATTERN DOTS-238 2887 BRAILLE PATTERN DOTS-1238 2888 BRAILLE PATTERN DOTS-48 2889 BRAILLE PATTERN DOTS-148 288A BRAILLE PATTERN DOTS-248 288B BRAILLE PATTERN DOTS-1248 288C BRAILLE PATTERN DOTS-348 288D BRAILLE PATTERN DOTS-1348 288E BRAILLE PATTERN DOTS-2348 288F BRAILLE PATTERN DOTS-12348 2890 BRAILLE PATTERN DOTS-58 2891 BRAILLE PATTERN DOTS-158 2892 BRAILLE PATTERN DOTS-258 2893 BRAILLE PATTERN DOTS-1258 2894 BRAILLE PATTERN DOTS-358 2895 BRAILLE PATTERN DOTS-1358 2896 BRAILLE PATTERN DOTS-2358 2897 BRAILLE PATTERN DOTS-12358 2898 BRAILLE PATTERN DOTS-458 2899 BRAILLE PATTERN DOTS-1458 289A BRAILLE PATTERN DOTS-2458 289B BRAILLE PATTERN DOTS-12458 289C BRAILLE PATTERN DOTS-3458 289D BRAILLE PATTERN DOTS-13458 289E BRAILLE PATTERN DOTS-23458 289F BRAILLE PATTERN DOTS-123458 28A0 BRAILLE PATTERN DOTS-68 28A1 BRAILLE PATTERN DOTS-168 28A2 BRAILLE PATTERN DOTS-268 28A3 BRAILLE PATTERN DOTS-1268 28A4 BRAILLE PATTERN DOTS-368 28A5 BRAILLE PATTERN DOTS-1368 28A6 BRAILLE PATTERN DOTS-2368 28A7 BRAILLE PATTERN DOTS-12368 28A8 BRAILLE PATTERN DOTS-468 28A9 BRAILLE PATTERN DOTS-1468 28AA BRAILLE PATTERN DOTS-2468 28AB BRAILLE PATTERN DOTS-12468 28AC BRAILLE PATTERN DOTS-3468 28AD BRAILLE PATTERN DOTS-13468 28AE BRAILLE PATTERN DOTS-23468 28AF BRAILLE PATTERN DOTS-123468 28B0 BRAILLE PATTERN DOTS-568 28B1 BRAILLE PATTERN DOTS-1568 28B2 BRAILLE PATTERN DOTS-2568 28B3 BRAILLE PATTERN DOTS-12568 28B4 BRAILLE PATTERN DOTS-3568 28B5 BRAILLE PATTERN DOTS-13568 28B6 BRAILLE PATTERN DOTS-23568 28B7 BRAILLE PATTERN DOTS-123568 28B8 BRAILLE PATTERN DOTS-4568 28B9 BRAILLE PATTERN DOTS-14568 28BA BRAILLE PATTERN DOTS-24568 28BB BRAILLE PATTERN DOTS-124568 28BC BRAILLE PATTERN DOTS-34568 28BD BRAILLE PATTERN DOTS-134568 28BE BRAILLE PATTERN DOTS-234568 28BF BRAILLE PATTERN DOTS-1234568 28C0 BRAILLE PATTERN DOTS-78 28C1 BRAILLE PATTERN DOTS-178 28C2 BRAILLE PATTERN DOTS-278 28C3 BRAILLE PATTERN DOTS-1278 28C4 BRAILLE PATTERN DOTS-378 28C5 BRAILLE PATTERN DOTS-1378 28C6 BRAILLE PATTERN DOTS-2378 28C7 BRAILLE PATTERN DOTS-12378 28C8 BRAILLE PATTERN DOTS-478 28C9 BRAILLE PATTERN DOTS-1478 28CA BRAILLE PATTERN DOTS-2478 28CB BRAILLE PATTERN DOTS-12478 28CC BRAILLE PATTERN DOTS-3478 28CD BRAILLE PATTERN DOTS-13478 28CE BRAILLE PATTERN DOTS-23478 28CF BRAILLE PATTERN DOTS-123478 28D0 BRAILLE PATTERN DOTS-578 28D1 BRAILLE PATTERN DOTS-1578 28D2 BRAILLE PATTERN DOTS-2578 28D3 BRAILLE PATTERN DOTS-12578 28D4 BRAILLE PATTERN DOTS-3578 28D5 BRAILLE PATTERN DOTS-13578 28D6 BRAILLE PATTERN DOTS-23578 28D7 BRAILLE PATTERN DOTS-123578 28D8 BRAILLE PATTERN DOTS-4578 28D9 BRAILLE PATTERN DOTS-14578 28DA BRAILLE PATTERN DOTS-24578 28DB BRAILLE PATTERN DOTS-124578 28DC BRAILLE PATTERN DOTS-34578 28DD BRAILLE PATTERN DOTS-134578 28DE BRAILLE PATTERN DOTS-234578 28DF BRAILLE PATTERN DOTS-1234578 28E0 BRAILLE PATTERN DOTS-678 28E1 BRAILLE PATTERN DOTS-1678 28E2 BRAILLE PATTERN DOTS-2678 28E3 BRAILLE PATTERN DOTS-12678 28E4 BRAILLE PATTERN DOTS-3678 28E5 BRAILLE PATTERN DOTS-13678 28E6 BRAILLE PATTERN DOTS-23678 28E7 BRAILLE PATTERN DOTS-123678 28E8 BRAILLE PATTERN DOTS-4678 28E9 BRAILLE PATTERN DOTS-14678 28EA BRAILLE PATTERN DOTS-24678 28EB BRAILLE PATTERN DOTS-124678 28EC BRAILLE PATTERN DOTS-34678 28ED BRAILLE PATTERN DOTS-134678 28EE BRAILLE PATTERN DOTS-234678 28EF BRAILLE PATTERN DOTS-1234678 28F0 BRAILLE PATTERN DOTS-5678 28F1 BRAILLE PATTERN DOTS-15678 28F2 BRAILLE PATTERN DOTS-25678 28F3 BRAILLE PATTERN DOTS-125678 28F4 BRAILLE PATTERN DOTS-35678 28F5 BRAILLE PATTERN DOTS-135678 28F6 BRAILLE PATTERN DOTS-235678 28F7 BRAILLE PATTERN DOTS-1235678 28F8 BRAILLE PATTERN DOTS-45678 28F9 BRAILLE PATTERN DOTS-145678 28FA BRAILLE PATTERN DOTS-245678 28FB BRAILLE PATTERN DOTS-1245678 28FC BRAILLE PATTERN DOTS-345678 28FD BRAILLE PATTERN DOTS-1345678 28FE BRAILLE PATTERN DOTS-2345678 28FF BRAILLE PATTERN DOTS-12345678 @@ 2900 Supplemental Arrows-B 297F @ Miscellaneous arrows 2900 RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE = z notation partial surjection x (leftwards two-headed arrow with vertical stroke - 2B34) 2901 RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE = z notation finite surjection x (leftwards two-headed arrow with double vertical stroke - 2B35) 2902 LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE 2903 RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE 2904 LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE 2905 RIGHTWARDS TWO-HEADED ARROW FROM BAR = maps to x (leftwards two-headed arrow from bar - 2B36) 2906 LEFTWARDS DOUBLE ARROW FROM BAR = maps from x (long leftwards arrow from bar - 27FB) 2907 RIGHTWARDS DOUBLE ARROW FROM BAR = maps to x (long rightwards arrow from bar - 27FC) 2908 DOWNWARDS ARROW WITH HORIZONTAL STROKE 2909 UPWARDS ARROW WITH HORIZONTAL STROKE 290A UPWARDS TRIPLE ARROW x (upwards double arrow - 21D1) x (upwards quadruple arrow - 27F0) 290B DOWNWARDS TRIPLE ARROW x (downwards double arrow - 21D3) x (downwards quadruple arrow - 27F1) 290C LEFTWARDS DOUBLE DASH ARROW 290D RIGHTWARDS DOUBLE DASH ARROW 290E LEFTWARDS TRIPLE DASH ARROW 290F RIGHTWARDS TRIPLE DASH ARROW 2910 RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW x (leftwards two-headed triple dash arrow - 2B37) 2911 RIGHTWARDS ARROW WITH DOTTED STEM x (leftwards arrow with dotted stem - 2B38) 2912 UPWARDS ARROW TO BAR 2913 DOWNWARDS ARROW TO BAR 2914 RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE = z notation partial injection x (leftwards arrow with tail with vertical stroke - 2B39) 2915 RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE = z notation finite injection x (leftwards arrow with tail with double vertical stroke - 2B3A) 2916 RIGHTWARDS TWO-HEADED ARROW WITH TAIL = bijective mapping = z notation bijection x (leftwards two-headed arrow with tail - 2B3B) 2917 RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE = z notation surjective injection x (leftwards two-headed arrow with tail with vertical stroke - 2B3C) 2918 RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE = z notation finite surjective injection x (leftwards two-headed arrow with tail with double vertical stroke - 2B3D) @ Arrow tails 2919 LEFTWARDS ARROW-TAIL 291A RIGHTWARDS ARROW-TAIL 291B LEFTWARDS DOUBLE ARROW-TAIL 291C RIGHTWARDS DOUBLE ARROW-TAIL @ Miscellaneous arrows 291D LEFTWARDS ARROW TO BLACK DIAMOND 291E RIGHTWARDS ARROW TO BLACK DIAMOND 291F LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND 2920 RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND 2921 NORTH WEST AND SOUTH EAST ARROW 2922 NORTH EAST AND SOUTH WEST ARROW 2923 NORTH WEST ARROW WITH HOOK 2924 NORTH EAST ARROW WITH HOOK 2925 SOUTH EAST ARROW WITH HOOK 2926 SOUTH WEST ARROW WITH HOOK @ Crossing arrows for knot theory 2927 NORTH WEST ARROW AND NORTH EAST ARROW 2928 NORTH EAST ARROW AND SOUTH EAST ARROW 2929 SOUTH EAST ARROW AND SOUTH WEST ARROW 292A SOUTH WEST ARROW AND NORTH WEST ARROW 292B RISING DIAGONAL CROSSING FALLING DIAGONAL 292C FALLING DIAGONAL CROSSING RISING DIAGONAL x (crossing lanes - 26CC) 292D SOUTH EAST ARROW CROSSING NORTH EAST ARROW 292E NORTH EAST ARROW CROSSING SOUTH EAST ARROW 292F FALLING DIAGONAL CROSSING NORTH EAST ARROW 2930 RISING DIAGONAL CROSSING SOUTH EAST ARROW 2931 NORTH EAST ARROW CROSSING NORTH WEST ARROW 2932 NORTH WEST ARROW CROSSING NORTH EAST ARROW @ Miscellaneous curved arrows 2933 WAVE ARROW POINTING DIRECTLY RIGHT x (rightwards wave arrow - 219D) x (wave arrow pointing directly left - 2B3F) 2934 ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS ~ 2934 FE0E text style ~ 2934 FE0F emoji style 2935 ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS ~ 2935 FE0E text style ~ 2935 FE0F emoji style 2936 ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS 2937 ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS 2938 RIGHT-SIDE ARC CLOCKWISE ARROW 2939 LEFT-SIDE ARC ANTICLOCKWISE ARROW 293A TOP ARC ANTICLOCKWISE ARROW 293B BOTTOM ARC ANTICLOCKWISE ARROW 293C TOP ARC CLOCKWISE ARROW WITH MINUS 293D TOP ARC ANTICLOCKWISE ARROW WITH PLUS 293E LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW 293F LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW 2940 ANTICLOCKWISE CLOSED CIRCLE ARROW x (combining anticlockwise ring overlay - 20DA) 2941 CLOCKWISE CLOSED CIRCLE ARROW x (combining clockwise ring overlay - 20D9) @ Arrows combined with operators 2942 RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW 2943 LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW 2944 SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW 2945 RIGHTWARDS ARROW WITH PLUS BELOW 2946 LEFTWARDS ARROW WITH PLUS BELOW 2947 RIGHTWARDS ARROW THROUGH X x (leftwards arrow through x - 2B3E) 2948 LEFT RIGHT ARROW THROUGH SMALL CIRCLE 2949 UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE @ Double-barbed harpoons 294A LEFT BARB UP RIGHT BARB DOWN HARPOON 294B LEFT BARB DOWN RIGHT BARB UP HARPOON 294C UP BARB RIGHT DOWN BARB LEFT HARPOON 294D UP BARB LEFT DOWN BARB RIGHT HARPOON 294E LEFT BARB UP RIGHT BARB UP HARPOON 294F UP BARB RIGHT DOWN BARB RIGHT HARPOON 2950 LEFT BARB DOWN RIGHT BARB DOWN HARPOON 2951 UP BARB LEFT DOWN BARB LEFT HARPOON @ Modified harpoons 2952 LEFTWARDS HARPOON WITH BARB UP TO BAR 2953 RIGHTWARDS HARPOON WITH BARB UP TO BAR 2954 UPWARDS HARPOON WITH BARB RIGHT TO BAR 2955 DOWNWARDS HARPOON WITH BARB RIGHT TO BAR 2956 LEFTWARDS HARPOON WITH BARB DOWN TO BAR 2957 RIGHTWARDS HARPOON WITH BARB DOWN TO BAR 2958 UPWARDS HARPOON WITH BARB LEFT TO BAR 2959 DOWNWARDS HARPOON WITH BARB LEFT TO BAR 295A LEFTWARDS HARPOON WITH BARB UP FROM BAR 295B RIGHTWARDS HARPOON WITH BARB UP FROM BAR 295C UPWARDS HARPOON WITH BARB RIGHT FROM BAR 295D DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR 295E LEFTWARDS HARPOON WITH BARB DOWN FROM BAR 295F RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR 2960 UPWARDS HARPOON WITH BARB LEFT FROM BAR 2961 DOWNWARDS HARPOON WITH BARB LEFT FROM BAR @ Paired harpoons 2962 LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN 2963 UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT 2964 RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN 2965 DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT 2966 LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP 2967 LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN 2968 RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP 2969 RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN 296A LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH 296B LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH 296C RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH 296D RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH 296E UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT 296F DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT @ Miscellaneous arrow 2970 RIGHT DOUBLE ARROW WITH ROUNDED HEAD x (superset of - 2283) @ Arrows combined with relations 2971 EQUALS SIGN ABOVE RIGHTWARDS ARROW x (equals sign above leftwards arrow - 2B40) 2972 TILDE OPERATOR ABOVE RIGHTWARDS ARROW x (reverse tilde operator above leftwards arrow - 2B41) 2973 LEFTWARDS ARROW ABOVE TILDE OPERATOR x (rightwards arrow above reverse tilde operator - 2B4C) 2974 RIGHTWARDS ARROW ABOVE TILDE OPERATOR x (leftwards arrow above reverse tilde operator - 2B4B) 2975 RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO x (leftwards arrow above reverse almost equal to - 2B42) 2976 LESS-THAN ABOVE LEFTWARDS ARROW 2977 LEFTWARDS ARROW THROUGH LESS-THAN x (rightwards arrow through greater-than - 2B43) 2978 GREATER-THAN ABOVE RIGHTWARDS ARROW 2979 SUBSET ABOVE RIGHTWARDS ARROW 297A LEFTWARDS ARROW THROUGH SUBSET x (rightwards arrow through superset - 2B44) 297B SUPERSET ABOVE LEFTWARDS ARROW @ Fish tails 297C LEFT FISH TAIL 297D RIGHT FISH TAIL 297E UP FISH TAIL 297F DOWN FISH TAIL @~ ! @@ 2980 Miscellaneous Mathematical Symbols-B 29FF @ Miscellaneous mathematical symbols 2980 TRIPLE VERTICAL BAR DELIMITER x (triple vertical bar binary relation - 2AF4) x (large triple vertical bar operator - 2AFC) 2981 Z NOTATION SPOT * medium-small-sized black circle x (bullet operator - 2219) x (black circle - 25CF) 2982 Z NOTATION TYPE COLON x (tibetan sign rnam bcad - 0F7F) @ Brackets 2983 LEFT WHITE CURLY BRACKET 2984 RIGHT WHITE CURLY BRACKET 2985 LEFT WHITE PARENTHESIS x (left double parenthesis - 2E28) x (fullwidth left white parenthesis - FF5F) 2986 RIGHT WHITE PARENTHESIS * used for Bourbakist intervals x (right double parenthesis - 2E29) x (fullwidth right white parenthesis - FF60) 2987 Z NOTATION LEFT IMAGE BRACKET 2988 Z NOTATION RIGHT IMAGE BRACKET 2989 Z NOTATION LEFT BINDING BRACKET 298A Z NOTATION RIGHT BINDING BRACKET 298B LEFT SQUARE BRACKET WITH UNDERBAR 298C RIGHT SQUARE BRACKET WITH UNDERBAR @ Brackets with ticks @+ For bidirectional processing, the brackets with ticks are paired on the basis of their left/right symmetric glyphs, rather than on the basis of an open/close pairing inferred from code point order. 298D LEFT SQUARE BRACKET WITH TICK IN TOP CORNER 298E RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER 298F LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER 2990 RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER @ Brackets 2991 LEFT ANGLE BRACKET WITH DOT 2992 RIGHT ANGLE BRACKET WITH DOT 2993 LEFT ARC LESS-THAN BRACKET 2994 RIGHT ARC GREATER-THAN BRACKET 2995 DOUBLE LEFT ARC GREATER-THAN BRACKET 2996 DOUBLE RIGHT ARC LESS-THAN BRACKET 2997 LEFT BLACK TORTOISE SHELL BRACKET x (mathematical left white tortoise shell bracket - 27EC) x (left tortoise shell bracket - 3014) x (left white tortoise shell bracket - 3018) 2998 RIGHT BLACK TORTOISE SHELL BRACKET @ Fences 2999 DOTTED FENCE * four close dots vertical 299A VERTICAL ZIGZAG LINE x (wavy line - 2307) @ Angles 299B MEASURED ANGLE OPENING LEFT x (measured angle - 2221) 299C RIGHT ANGLE VARIANT WITH SQUARE x (right angle - 221F) 299D MEASURED RIGHT ANGLE WITH DOT 299E ANGLE WITH S INSIDE 299F ACUTE ANGLE x (angle - 2220) 29A0 SPHERICAL ANGLE OPENING LEFT x (spherical angle - 2222) 29A1 SPHERICAL ANGLE OPENING UP 29A2 TURNED ANGLE x (angle - 2220) 29A3 REVERSED ANGLE 29A4 ANGLE WITH UNDERBAR 29A5 REVERSED ANGLE WITH UNDERBAR 29A6 OBLIQUE ANGLE OPENING UP 29A7 OBLIQUE ANGLE OPENING DOWN 29A8 MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT 29A9 MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT 29AA MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT 29AB MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT 29AC MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP 29AD MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP 29AE MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN 29AF MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN @ Empty sets 29B0 REVERSED EMPTY SET x (empty set - 2205) x (apl functional symbol circle backslash - 2349) 29B1 EMPTY SET WITH OVERBAR 29B2 EMPTY SET WITH SMALL CIRCLE ABOVE 29B3 EMPTY SET WITH RIGHT ARROW ABOVE 29B4 EMPTY SET WITH LEFT ARROW ABOVE @ Circle symbols 29B5 CIRCLE WITH HORIZONTAL BAR * used in superscripted form to mean standard state (chemistry) x (circled minus - 2296) 29B6 CIRCLED VERTICAL BAR x (alchemical symbol for nitre - 1F715) 29B7 CIRCLED PARALLEL 29B8 CIRCLED REVERSE SOLIDUS 29B9 CIRCLED PERPENDICULAR 29BA CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR 29BB CIRCLE WITH SUPERIMPOSED X x (circled times - 2297) 29BC CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN 29BD UP ARROW THROUGH CIRCLE 29BE CIRCLED WHITE BULLET x (circled ring operator - 229A) x (apl functional symbol circle jot - 233E) x (bullseye - 25CE) 29BF CIRCLED BULLET * forms part of a graduated set of circles with enclosed black circle of different sizes x (circled dot operator - 2299) x (fisheye - 25C9) x (n-ary circled dot operator - 2A00) 29C0 CIRCLED LESS-THAN 29C1 CIRCLED GREATER-THAN 29C2 CIRCLE WITH SMALL CIRCLE TO THE RIGHT 29C3 CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT @ Square symbols 29C4 SQUARED RISING DIAGONAL SLASH x (apl functional symbol quad slash - 2341) x (masu mark - 303C) 29C5 SQUARED FALLING DIAGONAL SLASH x (apl functional symbol quad backslash - 2342) 29C6 SQUARED ASTERISK 29C7 SQUARED SMALL CIRCLE x (apl functional symbol quad jot - 233B) 29C8 SQUARED SQUARE 29C9 TWO JOINED SQUARES @ Triangle symbols 29CA TRIANGLE WITH DOT ABOVE 29CB TRIANGLE WITH UNDERBAR 29CC S IN TRIANGLE 29CD TRIANGLE WITH SERIFS AT BOTTOM x (white up-pointing triangle - 25B3) 29CE RIGHT TRIANGLE ABOVE LEFT TRIANGLE 29CF LEFT TRIANGLE BESIDE VERTICAL BAR 29D0 VERTICAL BAR BESIDE RIGHT TRIANGLE @ Bowtie symbols 29D1 BOWTIE WITH LEFT HALF BLACK x (bowtie - 22C8) 29D2 BOWTIE WITH RIGHT HALF BLACK 29D3 BLACK BOWTIE 29D4 TIMES WITH LEFT HALF BLACK x (left normal factor semidirect product - 22C9) 29D5 TIMES WITH RIGHT HALF BLACK x (right normal factor semidirect product - 22CA) 29D6 WHITE HOURGLASS = vertical bowtie = white framus x (hourglass - 231B) 29D7 BLACK HOURGLASS @ Fences 29D8 LEFT WIGGLY FENCE x (presentation form for vertical wavy low line - FE34) 29D9 RIGHT WIGGLY FENCE 29DA LEFT DOUBLE WIGGLY FENCE 29DB RIGHT DOUBLE WIGGLY FENCE @ Miscellaneous mathematical symbols 29DC INCOMPLETE INFINITY = ISOtech entity ⧜ x (infinity - 221E) 29DD TIE OVER INFINITY 29DE INFINITY NEGATED WITH VERTICAL BAR 29DF DOUBLE-ENDED MULTIMAP x (multimap - 22B8) x (alchemical symbol for arsenic - 1F73A) 29E0 SQUARE WITH CONTOURED OUTLINE = D'Alembertian x (lower right drop-shadowed white square - 274F) 29E1 INCREASES AS x (normal subgroup of or equal to - 22B4) 29E2 SHUFFLE PRODUCT x (z notation bag membership - 22FF) @ Relations 29E3 EQUALS SIGN AND SLANTED PARALLEL x (number sign - 0023) x (equal and parallel to - 22D5) 29E4 EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE 29E5 IDENTICAL TO AND SLANTED PARALLEL x (triple horizontal bar with double vertical stroke - 2A68) 29E6 GLEICH STARK = tautological equivalent @ Miscellaneous mathematical symbols 29E7 THERMODYNAMIC * vertical bar crossed by two horizontals x (not equal to - 2260) 29E8 DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK x (up-pointing triangle with left half black - 25ED) 29E9 DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK x (up-pointing triangle with right half black - 25EE) 29EA BLACK DIAMOND WITH DOWN ARROW 29EB BLACK LOZENGE x (lozenge - 25CA) 29EC WHITE CIRCLE WITH DOWN ARROW 29ED BLACK CIRCLE WITH DOWN ARROW @ Error bar symbols 29EE ERROR-BARRED WHITE SQUARE 29EF ERROR-BARRED BLACK SQUARE 29F0 ERROR-BARRED WHITE DIAMOND 29F1 ERROR-BARRED BLACK DIAMOND 29F2 ERROR-BARRED WHITE CIRCLE 29F3 ERROR-BARRED BLACK CIRCLE @ Miscellaneous mathematical symbols 29F4 RULE-DELAYED = colon right arrow 29F5 REVERSE SOLIDUS OPERATOR x (reverse solidus - 005C) x (set minus - 2216) x (mathematical falling diagonal - 27CD) 29F6 SOLIDUS WITH OVERBAR 29F7 REVERSE SOLIDUS WITH HORIZONTAL STROKE x (apl functional symbol backslash bar - 2340) @ Large operators 29F8 BIG SOLIDUS x (division slash - 2215) 29F9 BIG REVERSE SOLIDUS = z notation schema hiding x (set minus - 2216) @ Specialized plus sign operators 29FA DOUBLE PLUS 29FB TRIPLE PLUS @ Brackets 29FC LEFT-POINTING CURVED ANGLE BRACKET x (precedes - 227A) x (left-pointing angle bracket - 2329) 29FD RIGHT-POINTING CURVED ANGLE BRACKET x (succeeds - 227B) x (right-pointing angle bracket - 232A) @ Miscellaneous mathematical symbols 29FE TINY x (plus sign - 002B) 29FF MINY x (minus sign - 2212) @@ 2A00 Supplemental Mathematical Operators 2AFF @ N-ary operators 2A00 N-ARY CIRCLED DOT OPERATOR x (circled dot operator - 2299) x (fisheye - 25C9) 2A01 N-ARY CIRCLED PLUS OPERATOR x (circled plus - 2295) 2A02 N-ARY CIRCLED TIMES OPERATOR x (circled times - 2297) x (heavy circled saltire - 2B59) 2A03 N-ARY UNION OPERATOR WITH DOT x (multiset multiplication - 228D) 2A04 N-ARY UNION OPERATOR WITH PLUS x (multiset union - 228E) 2A05 N-ARY SQUARE INTERSECTION OPERATOR x (square cap - 2293) 2A06 N-ARY SQUARE UNION OPERATOR x (square cup - 2294) 2A07 TWO LOGICAL AND OPERATOR = merge x (two intersecting logical and - 2A55) 2A08 TWO LOGICAL OR OPERATOR x (two intersecting logical or - 2A56) 2A09 N-ARY TIMES OPERATOR x (multiplication sign - 00D7) @ Summations and integrals 2A0A MODULO TWO SUM x (n-ary summation - 2211) 2A0B SUMMATION WITH INTEGRAL 2A0C QUADRUPLE INTEGRAL OPERATOR x (triple integral - 222D) # 222B 222B 222B 222B 2A0D FINITE PART INTEGRAL 2A0E INTEGRAL WITH DOUBLE STROKE 2A0F INTEGRAL AVERAGE WITH SLASH 2A10 CIRCULATION FUNCTION 2A11 ANTICLOCKWISE INTEGRATION 2A12 LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE 2A13 LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE 2A14 LINE INTEGRATION NOT INCLUDING THE POLE 2A15 INTEGRAL AROUND A POINT OPERATOR x (contour integral - 222E) 2A16 QUATERNION INTEGRAL OPERATOR 2A17 INTEGRAL WITH LEFTWARDS ARROW WITH HOOK 2A18 INTEGRAL WITH TIMES SIGN 2A19 INTEGRAL WITH INTERSECTION 2A1A INTEGRAL WITH UNION 2A1B INTEGRAL WITH OVERBAR = upper integral 2A1C INTEGRAL WITH UNDERBAR = lower integral @ Miscellaneous large operators 2A1D JOIN = large bowtie * relational database theory x (bowtie - 22C8) x (full outer join - 27D7) 2A1E LARGE LEFT TRIANGLE OPERATOR * relational database theory x (white left-pointing triangle - 25C1) 2A1F Z NOTATION SCHEMA COMPOSITION x (z notation relational composition - 2A3E) 2A20 Z NOTATION SCHEMA PIPING x (much greater-than - 226B) 2A21 Z NOTATION SCHEMA PROJECTION x (upwards harpoon with barb rightwards - 21BE) @ Plus and minus sign operators 2A22 PLUS SIGN WITH SMALL CIRCLE ABOVE 2A23 PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE 2A24 PLUS SIGN WITH TILDE ABOVE = positive difference or sum 2A25 PLUS SIGN WITH DOT BELOW x (dot plus - 2214) 2A26 PLUS SIGN WITH TILDE BELOW = sum or positive difference 2A27 PLUS SIGN WITH SUBSCRIPT TWO = nim-addition 2A28 PLUS SIGN WITH BLACK TRIANGLE 2A29 MINUS SIGN WITH COMMA ABOVE 2A2A MINUS SIGN WITH DOT BELOW x (dot minus - 2238) 2A2B MINUS SIGN WITH FALLING DOTS 2A2C MINUS SIGN WITH RISING DOTS 2A2D PLUS SIGN IN LEFT HALF CIRCLE 2A2E PLUS SIGN IN RIGHT HALF CIRCLE @ Multiplication and division sign operators 2A2F VECTOR OR CROSS PRODUCT x (multiplication sign - 00D7) 2A30 MULTIPLICATION SIGN WITH DOT ABOVE 2A31 MULTIPLICATION SIGN WITH UNDERBAR 2A32 SEMIDIRECT PRODUCT WITH BOTTOM CLOSED 2A33 SMASH PRODUCT 2A34 MULTIPLICATION SIGN IN LEFT HALF CIRCLE 2A35 MULTIPLICATION SIGN IN RIGHT HALF CIRCLE 2A36 CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT 2A37 MULTIPLICATION SIGN IN DOUBLE CIRCLE 2A38 CIRCLED DIVISION SIGN @ Miscellaneous mathematical operators 2A39 PLUS SIGN IN TRIANGLE 2A3A MINUS SIGN IN TRIANGLE 2A3B MULTIPLICATION SIGN IN TRIANGLE 2A3C INTERIOR PRODUCT x (right floor - 230B) ~ 2A3C FE00 tall variant with narrow foot 2A3D RIGHTHAND INTERIOR PRODUCT x (left floor - 230A) x (turned not sign - 2319) ~ 2A3D FE00 tall variant with narrow foot 2A3E Z NOTATION RELATIONAL COMPOSITION x (z notation schema composition - 2A1F) 2A3F AMALGAMATION OR COPRODUCT x (n-ary coproduct - 2210) @ Intersections and unions 2A40 INTERSECTION WITH DOT x (logical and - 2227) x (and with dot - 27D1) 2A41 UNION WITH MINUS SIGN = z notation bag subtraction x (multiset union - 228E) 2A42 UNION WITH OVERBAR 2A43 INTERSECTION WITH OVERBAR 2A44 INTERSECTION WITH LOGICAL AND 2A45 UNION WITH LOGICAL OR 2A46 UNION ABOVE INTERSECTION 2A47 INTERSECTION ABOVE UNION 2A48 UNION ABOVE BAR ABOVE INTERSECTION 2A49 INTERSECTION ABOVE BAR ABOVE UNION 2A4A UNION BESIDE AND JOINED WITH UNION 2A4B INTERSECTION BESIDE AND JOINED WITH INTERSECTION 2A4C CLOSED UNION WITH SERIFS x (union - 222A) 2A4D CLOSED INTERSECTION WITH SERIFS x (intersection - 2229) 2A4E DOUBLE SQUARE INTERSECTION 2A4F DOUBLE SQUARE UNION 2A50 CLOSED UNION WITH SERIFS AND SMASH PRODUCT @ Logical ands and ors 2A51 LOGICAL AND WITH DOT ABOVE 2A52 LOGICAL OR WITH DOT ABOVE 2A53 DOUBLE LOGICAL AND 2A54 DOUBLE LOGICAL OR 2A55 TWO INTERSECTING LOGICAL AND x (two logical and operator - 2A07) 2A56 TWO INTERSECTING LOGICAL OR x (two logical or operator - 2A08) 2A57 SLOPING LARGE OR 2A58 SLOPING LARGE AND 2A59 LOGICAL OR OVERLAPPING LOGICAL AND 2A5A LOGICAL AND WITH MIDDLE STEM 2A5B LOGICAL OR WITH MIDDLE STEM 2A5C LOGICAL AND WITH HORIZONTAL DASH 2A5D LOGICAL OR WITH HORIZONTAL DASH 2A5E LOGICAL AND WITH DOUBLE OVERBAR x (perspective - 2306) 2A5F LOGICAL AND WITH UNDERBAR 2A60 LOGICAL AND WITH DOUBLE UNDERBAR x (estimates - 2259) 2A61 SMALL VEE WITH UNDERBAR x (equiangular to - 225A) 2A62 LOGICAL OR WITH DOUBLE OVERBAR 2A63 LOGICAL OR WITH DOUBLE UNDERBAR x (equiangular to - 225A) @ Miscellaneous mathematical operators 2A64 Z NOTATION DOMAIN ANTIRESTRICTION 2A65 Z NOTATION RANGE ANTIRESTRICTION x (conical taper - 2332) @ Relational operators 2A66 EQUALS SIGN WITH DOT BELOW x (approaches the limit - 2250) 2A67 IDENTICAL WITH DOT ABOVE 2A68 TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE = identical and parallel to x (equal and parallel to - 22D5) x (identical to and slanted parallel - 29E5) 2A69 TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE 2A6A TILDE OPERATOR WITH DOT ABOVE 2A6B TILDE OPERATOR WITH RISING DOTS x (homothetic - 223B) 2A6C SIMILAR MINUS SIMILAR 2A6D CONGRUENT WITH DOT ABOVE x (approximately equal to - 2245) 2A6E EQUALS WITH ASTERISK x (star equals - 225B) 2A6F ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT 2A70 APPROXIMATELY EQUAL OR EQUAL TO 2A71 EQUALS SIGN ABOVE PLUS SIGN * black stands slightly better (chess notation) 2A72 PLUS SIGN ABOVE EQUALS SIGN * white stands slightly better (chess notation) 2A73 EQUALS SIGN ABOVE TILDE OPERATOR 2A74 DOUBLE COLON EQUAL # 003A 003A 003D 2A75 TWO CONSECUTIVE EQUALS SIGNS # 003D 003D 2A76 THREE CONSECUTIVE EQUALS SIGNS # 003D 003D 003D 2A77 EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW 2A78 EQUIVALENT WITH FOUR DOTS ABOVE 2A79 LESS-THAN WITH CIRCLE INSIDE 2A7A GREATER-THAN WITH CIRCLE INSIDE 2A7B LESS-THAN WITH QUESTION MARK ABOVE 2A7C GREATER-THAN WITH QUESTION MARK ABOVE 2A7D LESS-THAN OR SLANTED EQUAL TO x (less-than or equal to - 2264) 2A7E GREATER-THAN OR SLANTED EQUAL TO x (greater-than or equal to - 2265) 2A7F LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE 2A80 GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE 2A81 LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE 2A82 GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE 2A83 LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT 2A84 GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT 2A85 LESS-THAN OR APPROXIMATE 2A86 GREATER-THAN OR APPROXIMATE 2A87 LESS-THAN AND SINGLE-LINE NOT EQUAL TO x (less-than but not equal to - 2268) 2A88 GREATER-THAN AND SINGLE-LINE NOT EQUAL TO x (greater-than but not equal to - 2269) 2A89 LESS-THAN AND NOT APPROXIMATE 2A8A GREATER-THAN AND NOT APPROXIMATE 2A8B LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN x (less-than equal to or greater-than - 22DA) 2A8C GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN x (greater-than equal to or less-than - 22DB) 2A8D LESS-THAN ABOVE SIMILAR OR EQUAL 2A8E GREATER-THAN ABOVE SIMILAR OR EQUAL 2A8F LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN 2A90 GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN 2A91 LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL 2A92 GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL 2A93 LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL 2A94 GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL 2A95 SLANTED EQUAL TO OR LESS-THAN x (equal to or less-than - 22DC) 2A96 SLANTED EQUAL TO OR GREATER-THAN x (equal to or greater-than - 22DD) 2A97 SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE 2A98 SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE 2A99 DOUBLE-LINE EQUAL TO OR LESS-THAN x (equal to or less-than - 22DC) 2A9A DOUBLE-LINE EQUAL TO OR GREATER-THAN x (equal to or greater-than - 22DD) 2A9B DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN 2A9C DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN 2A9D SIMILAR OR LESS-THAN ~ 2A9D FE00 with similar following the slant of the upper leg 2A9E SIMILAR OR GREATER-THAN ~ 2A9E FE00 with similar following the slant of the upper leg 2A9F SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN 2AA0 SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN 2AA1 DOUBLE NESTED LESS-THAN = absolute continuity x (much less-than - 226A) 2AA2 DOUBLE NESTED GREATER-THAN x (much greater-than - 226B) 2AA3 DOUBLE NESTED LESS-THAN WITH UNDERBAR 2AA4 GREATER-THAN OVERLAPPING LESS-THAN 2AA5 GREATER-THAN BESIDE LESS-THAN 2AA6 LESS-THAN CLOSED BY CURVE 2AA7 GREATER-THAN CLOSED BY CURVE 2AA8 LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL 2AA9 GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL 2AAA SMALLER THAN 2AAB LARGER THAN 2AAC SMALLER THAN OR EQUAL TO ~ 2AAC FE00 with slanted equal 2AAD LARGER THAN OR EQUAL TO ~ 2AAD FE00 with slanted equal 2AAE EQUALS SIGN WITH BUMPY ABOVE x (difference between - 224F) 2AAF PRECEDES ABOVE SINGLE-LINE EQUALS SIGN x (precedes or equal to - 227C) 2AB0 SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN x (succeeds or equal to - 227D) 2AB1 PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO 2AB2 SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO 2AB3 PRECEDES ABOVE EQUALS SIGN 2AB4 SUCCEEDS ABOVE EQUALS SIGN 2AB5 PRECEDES ABOVE NOT EQUAL TO 2AB6 SUCCEEDS ABOVE NOT EQUAL TO 2AB7 PRECEDES ABOVE ALMOST EQUAL TO 2AB8 SUCCEEDS ABOVE ALMOST EQUAL TO 2AB9 PRECEDES ABOVE NOT ALMOST EQUAL TO 2ABA SUCCEEDS ABOVE NOT ALMOST EQUAL TO 2ABB DOUBLE PRECEDES 2ABC DOUBLE SUCCEEDS @ Subset and superset relations 2ABD SUBSET WITH DOT 2ABE SUPERSET WITH DOT 2ABF SUBSET WITH PLUS SIGN BELOW 2AC0 SUPERSET WITH PLUS SIGN BELOW 2AC1 SUBSET WITH MULTIPLICATION SIGN BELOW 2AC2 SUPERSET WITH MULTIPLICATION SIGN BELOW 2AC3 SUBSET OF OR EQUAL TO WITH DOT ABOVE 2AC4 SUPERSET OF OR EQUAL TO WITH DOT ABOVE 2AC5 SUBSET OF ABOVE EQUALS SIGN 2AC6 SUPERSET OF ABOVE EQUALS SIGN 2AC7 SUBSET OF ABOVE TILDE OPERATOR 2AC8 SUPERSET OF ABOVE TILDE OPERATOR 2AC9 SUBSET OF ABOVE ALMOST EQUAL TO 2ACA SUPERSET OF ABOVE ALMOST EQUAL TO 2ACB SUBSET OF ABOVE NOT EQUAL TO ~ 2ACB FE00 with stroke through bottom members 2ACC SUPERSET OF ABOVE NOT EQUAL TO ~ 2ACC FE00 with stroke through bottom members 2ACD SQUARE LEFT OPEN BOX OPERATOR 2ACE SQUARE RIGHT OPEN BOX OPERATOR 2ACF CLOSED SUBSET x (subset of - 2282) 2AD0 CLOSED SUPERSET x (superset of - 2283) 2AD1 CLOSED SUBSET OR EQUAL TO 2AD2 CLOSED SUPERSET OR EQUAL TO 2AD3 SUBSET ABOVE SUPERSET 2AD4 SUPERSET ABOVE SUBSET 2AD5 SUBSET ABOVE SUBSET 2AD6 SUPERSET ABOVE SUPERSET 2AD7 SUPERSET BESIDE SUBSET 2AD8 SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET @ Forks 2AD9 ELEMENT OF OPENING DOWNWARDS x (element of - 2208) x (element of opening upwards - 27D2) 2ADA PITCHFORK WITH TEE TOP x (pitchfork - 22D4) 2ADB TRANSVERSAL INTERSECTION x (pitchfork - 22D4) 2ADC FORKING = not independent * an equational logic symbol, not a computing science symbol * non-independence (original concept) is related to forking : 2ADD 0338 2ADD NONFORKING = independent * an equational logic symbol, not a computing science symbol * independence (original concept) is related to non-forking @ Tacks and turnstiles 2ADE SHORT LEFT TACK x (left tack - 22A3) 2ADF SHORT DOWN TACK x (down tack - 22A4) 2AE0 SHORT UP TACK x (up tack - 22A5) 2AE1 PERPENDICULAR WITH S 2AE2 VERTICAL BAR TRIPLE RIGHT TURNSTILE = ordinarily satisfies 2AE3 DOUBLE VERTICAL BAR LEFT TURNSTILE x (forces - 22A9) 2AE4 VERTICAL BAR DOUBLE LEFT TURNSTILE x (true - 22A8) 2AE5 DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE 2AE6 LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL x (forces - 22A9) 2AE7 SHORT DOWN TACK WITH OVERBAR x (down tack - 22A4) x (apl functional symbol up tack overbar - 2351) 2AE8 SHORT UP TACK WITH UNDERBAR x (up tack - 22A5) x (apl functional symbol down tack underbar - 234A) 2AE9 SHORT UP TACK ABOVE SHORT DOWN TACK 2AEA DOUBLE DOWN TACK 2AEB DOUBLE UP TACK = independence * probability theory 2AEC DOUBLE STROKE NOT SIGN x (not sign - 00AC) 2AED REVERSED DOUBLE STROKE NOT SIGN x (reversed not sign - 2310) @ Vertical line operators 2AEE DOES NOT DIVIDE WITH REVERSED NEGATION SLASH x (does not divide - 2224) 2AEF VERTICAL LINE WITH CIRCLE ABOVE 2AF0 VERTICAL LINE WITH CIRCLE BELOW 2AF1 DOWN TACK WITH CIRCLE BELOW = necessarily satisfies x (up tack with circle above - 27DF) 2AF2 PARALLEL WITH HORIZONTAL STROKE x (not parallel to - 2226) x (vertical bar with horizontal stroke - 27CA) 2AF3 PARALLEL WITH TILDE OPERATOR 2AF4 TRIPLE VERTICAL BAR BINARY RELATION = interleave x (triple vertical bar delimiter - 2980) 2AF5 TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE x (vertical bar with horizontal stroke - 27CA) @ Miscellaneous mathematical operator 2AF6 TRIPLE COLON OPERATOR * logic x (tricolon - 205D) x (vertical ellipsis - 22EE) @ Relations 2AF7 TRIPLE NESTED LESS-THAN x (very much less-than - 22D8) 2AF8 TRIPLE NESTED GREATER-THAN x (very much greater-than - 22D9) 2AF9 DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO x (less-than over equal to - 2266) 2AFA DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO x (greater-than over equal to - 2267) 2AFB TRIPLE SOLIDUS BINARY RELATION x (triple vertical bar binary relation - 2AF4) @ Operators 2AFC LARGE TRIPLE VERTICAL BAR OPERATOR * often n-ary x (triple vertical bar binary relation - 2AF4) x (triple vertical bar delimiter - 2980) 2AFD DOUBLE SOLIDUS OPERATOR x (parallel to - 2225) 2AFE WHITE VERTICAL BAR = Dijkstra choice 2AFF N-ARY WHITE VERTICAL BAR = n-ary Dijkstra choice @~ Standardized Variation Sequences @@ 2B00 Miscellaneous Symbols and Arrows 2BFF @ White and black arrows @+ Other white and black arrows to complete this set can be found in the Arrows and Dingbats blocks. 2B00 NORTH EAST WHITE ARROW 2B01 NORTH WEST WHITE ARROW 2B02 SOUTH EAST WHITE ARROW 2B03 SOUTH WEST WHITE ARROW 2B04 LEFT RIGHT WHITE ARROW x (leftwards white arrow - 21E6) x (up down white arrow - 21F3) 2B05 LEFTWARDS BLACK ARROW x (black rightwards arrow - 27A1) x (rightwards black arrow - 2B95) ~ 2B05 FE0E text style ~ 2B05 FE0F emoji style 2B06 UPWARDS BLACK ARROW ~ 2B06 FE0E text style ~ 2B06 FE0F emoji style 2B07 DOWNWARDS BLACK ARROW ~ 2B07 FE0E text style ~ 2B07 FE0F emoji style 2B08 NORTH EAST BLACK ARROW 2B09 NORTH WEST BLACK ARROW 2B0A SOUTH EAST BLACK ARROW 2B0B SOUTH WEST BLACK ARROW 2B0C LEFT RIGHT BLACK ARROW 2B0D UP DOWN BLACK ARROW @ Arrows with bent tips @+ Other arrows with bent tips to complete this set can be found in the Arrows block. 2B0E RIGHTWARDS ARROW WITH TIP DOWNWARDS 2B0F RIGHTWARDS ARROW WITH TIP UPWARDS 2B10 LEFTWARDS ARROW WITH TIP DOWNWARDS 2B11 LEFTWARDS ARROW WITH TIP UPWARDS @ Squares 2B12 SQUARE WITH TOP HALF BLACK x (square with left half black - 25E7) 2B13 SQUARE WITH BOTTOM HALF BLACK 2B14 SQUARE WITH UPPER RIGHT DIAGONAL HALF BLACK 2B15 SQUARE WITH LOWER LEFT DIAGONAL HALF BLACK @ Diamonds 2B16 DIAMOND WITH LEFT HALF BLACK 2B17 DIAMOND WITH RIGHT HALF BLACK 2B18 DIAMOND WITH TOP HALF BLACK 2B19 DIAMOND WITH BOTTOM HALF BLACK @ Squares 2B1A DOTTED SQUARE 2B1B BLACK LARGE SQUARE x (black square - 25A0) ~ 2B1B FE0E text style ~ 2B1B FE0F emoji style 2B1C WHITE LARGE SQUARE x (white square - 25A1) ~ 2B1C FE0E text style ~ 2B1C FE0F emoji style 2B1D BLACK VERY SMALL SQUARE x (black small square - 25AA) 2B1E WHITE VERY SMALL SQUARE x (white small square - 25AB) @ Pentagons 2B1F BLACK PENTAGON 2B20 WHITE PENTAGON @ Hexagons 2B21 WHITE HEXAGON 2B22 BLACK HEXAGON 2B23 HORIZONTAL BLACK HEXAGON @ Circle 2B24 BLACK LARGE CIRCLE x (black circle - 25CF) x (large circle - 25EF) x (large red circle - 1F534) @ Diamonds and lozenges 2B25 BLACK MEDIUM DIAMOND x (black diamond - 25C6) 2B26 WHITE MEDIUM DIAMOND x (white diamond - 25C7) x (alchemical symbol for soap - 1F754) 2B27 BLACK MEDIUM LOZENGE 2B28 WHITE MEDIUM LOZENGE x (lozenge - 25CA) 2B29 BLACK SMALL DIAMOND x (diamond operator - 22C4) x (small orange diamond - 1F538) 2B2A BLACK SMALL LOZENGE 2B2B WHITE SMALL LOZENGE @ Ellipses 2B2C BLACK HORIZONTAL ELLIPSE 2B2D WHITE HORIZONTAL ELLIPSE 2B2E BLACK VERTICAL ELLIPSE 2B2F WHITE VERTICAL ELLIPSE @ Mathematical arrows @+ These provide the opposite direction complement for arrows for mathematical use not originally encoded in both a leftwards and rightwards direction. 2B30 LEFT ARROW WITH SMALL CIRCLE x (right arrow with small circle - 21F4) 2B31 THREE LEFTWARDS ARROWS x (three rightwards arrows - 21F6) 2B32 LEFT ARROW WITH CIRCLED PLUS x (right arrow with circled plus - 27F4) 2B33 LONG LEFTWARDS SQUIGGLE ARROW x (long rightwards squiggle arrow - 27FF) x (leftwards squiggle arrow - 21DC) 2B34 LEFTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE x (rightwards two-headed arrow with vertical stroke - 2900) 2B35 LEFTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE x (rightwards two-headed arrow with double vertical stroke - 2901) 2B36 LEFTWARDS TWO-HEADED ARROW FROM BAR x (rightwards two-headed arrow from bar - 2905) 2B37 LEFTWARDS TWO-HEADED TRIPLE DASH ARROW x (rightwards two-headed triple dash arrow - 2910) 2B38 LEFTWARDS ARROW WITH DOTTED STEM x (rightwards arrow with dotted stem - 2911) 2B39 LEFTWARDS ARROW WITH TAIL WITH VERTICAL STROKE x (rightwards arrow with tail with vertical stroke - 2914) 2B3A LEFTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE x (rightwards arrow with tail with double vertical stroke - 2915) 2B3B LEFTWARDS TWO-HEADED ARROW WITH TAIL x (rightwards two-headed arrow with tail - 2916) 2B3C LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE x (rightwards two-headed arrow with tail with vertical stroke - 2917) 2B3D LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE x (rightwards two-headed arrow with tail with double vertical stroke - 2918) 2B3E LEFTWARDS ARROW THROUGH X x (rightwards arrow through x - 2947) 2B3F WAVE ARROW POINTING DIRECTLY LEFT x (wave arrow pointing directly right - 2933) x (leftwards wave arrow - 219C) 2B40 EQUALS SIGN ABOVE LEFTWARDS ARROW x (equals sign above rightwards arrow - 2971) 2B41 REVERSE TILDE OPERATOR ABOVE LEFTWARDS ARROW * mirror image of "2972" x (tilde operator above rightwards arrow - 2972) 2B42 LEFTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO * mirror image of "2975" x (rightwards arrow above almost equal to - 2975) 2B43 RIGHTWARDS ARROW THROUGH GREATER-THAN * mirror image of "2977" x (leftwards arrow through less-than - 2977) 2B44 RIGHTWARDS ARROW THROUGH SUPERSET * mirror image of "297A" x (leftwards arrow through subset - 297A) 2B45 LEFTWARDS QUADRUPLE ARROW x (upwards quadruple arrow - 27F0) 2B46 RIGHTWARDS QUADRUPLE ARROW 2B47 REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW 2B48 RIGHTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO 2B49 TILDE OPERATOR ABOVE LEFTWARDS ARROW 2B4A LEFTWARDS ARROW ABOVE ALMOST EQUAL TO 2B4B LEFTWARDS ARROW ABOVE REVERSE TILDE OPERATOR * mirror image of "2974" x (rightwards arrow above tilde operator - 2974) 2B4C RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR * mirror image of "2973" x (leftwards arrow above tilde operator - 2973) @ Miscellaneous arrow 2B4D DOWNWARDS TRIANGLE-HEADED ZIGZAG ARROW x (downwards zigzag arrow - 21AF) @ Intonation marks for Lithuanian dialectology 2B4E SHORT SLANTED NORTH ARROW * slight rise in tone 2B4F SHORT BACKSLANTED SOUTH ARROW * slight fall or overall fall in tone when at the end of a word or at the beginning of a phrase, respectively @ Stars 2B50 WHITE MEDIUM STAR x (star operator - 22C6) ~ 2B50 FE0E text style ~ 2B50 FE0F emoji style 2B51 BLACK SMALL STAR x (arabic five pointed star - 066D) 2B52 WHITE SMALL STAR @ Pentagons 2B53 BLACK RIGHT-POINTING PENTAGON 2B54 WHITE RIGHT-POINTING PENTAGON @ Traffic sign from ARIB STD B24 2B55 HEAVY LARGE CIRCLE = basic symbol for speed limit * forms a game tally pair with 274C x (large circle - 25EF) ~ 2B55 FE0E text style ~ 2B55 FE0F emoji style @ Dictionary and map symbols from ARIB STD B24 2B56 HEAVY OVAL WITH OVAL INSIDE = prefectural office 2B57 HEAVY CIRCLE WITH CIRCLE INSIDE = municipal office x (bullseye - 25CE) 2B58 HEAVY CIRCLE = town or village office = power off symbol x (power on symbol - 23FD) x (white circle - 25CB) 2B59 HEAVY CIRCLED SALTIRE = police station x (n-ary circled times operator - 2A02) @ Intonation marks for Lithuanian dialectology 2B5A SLANTED NORTH ARROW WITH HOOKED HEAD * increasing tone with falling trend at the end 2B5B BACKSLANTED SOUTH ARROW WITH HOOKED TAIL * sharp rise and fall in tone 2B5C SLANTED NORTH ARROW WITH HORIZONTAL TAIL * continued rise in tone 2B5D BACKSLANTED SOUTH ARROW WITH HORIZONTAL TAIL * continued fall in tone 2B5E BENT ARROW POINTING DOWNWARDS THEN NORTH EAST * sharp fall in tone with rising trend at the end 2B5F SHORT BENT ARROW POINTING DOWNWARDS THEN NORTH EAST * slight fall in tone with rising trend at the end @ Triangle-headed arrows 2B60 LEFTWARDS TRIANGLE-HEADED ARROW x (leftwards arrow - 2190) 2B61 UPWARDS TRIANGLE-HEADED ARROW x (upwards arrow - 2191) 2B62 RIGHTWARDS TRIANGLE-HEADED ARROW x (rightwards arrow - 2192) x (triangle-headed rightwards arrow - 279D) 2B63 DOWNWARDS TRIANGLE-HEADED ARROW x (downwards arrow - 2193) 2B64 LEFT RIGHT TRIANGLE-HEADED ARROW x (left right arrow - 2194) 2B65 UP DOWN TRIANGLE-HEADED ARROW x (up down arrow - 2195) 2B66 NORTH WEST TRIANGLE-HEADED ARROW x (north west arrow - 2196) 2B67 NORTH EAST TRIANGLE-HEADED ARROW x (north east arrow - 2197) 2B68 SOUTH EAST TRIANGLE-HEADED ARROW x (south east arrow - 2198) 2B69 SOUTH WEST TRIANGLE-HEADED ARROW x (south west arrow - 2199) 2B6A LEFTWARDS TRIANGLE-HEADED DASHED ARROW x (leftwards dashed arrow - 21E0) 2B6B UPWARDS TRIANGLE-HEADED DASHED ARROW x (upwards dashed arrow - 21E1) 2B6C RIGHTWARDS TRIANGLE-HEADED DASHED ARROW x (rightwards dashed arrow - 21E2) 2B6D DOWNWARDS TRIANGLE-HEADED DASHED ARROW x (downwards dashed arrow - 21E3) 2B6E CLOCKWISE TRIANGLE-HEADED OPEN CIRCLE ARROW x (clockwise open circle arrow - 21BB) 2B6F ANTICLOCKWISE TRIANGLE-HEADED OPEN CIRCLE ARROW x (anticlockwise open circle arrow - 21BA) 2B70 LEFTWARDS TRIANGLE-HEADED ARROW TO BAR = left tab x (leftwards arrow to bar - 21E4) 2B71 UPWARDS TRIANGLE-HEADED ARROW TO BAR = up tab x (upwards arrow to bar - 2912) 2B72 RIGHTWARDS TRIANGLE-HEADED ARROW TO BAR = right tab x (rightwards arrow to bar - 21E5) 2B73 DOWNWARDS TRIANGLE-HEADED ARROW TO BAR = down tab x (downwards arrow to bar - 2913) 2B76 NORTH WEST TRIANGLE-HEADED ARROW TO BAR = home 2B77 NORTH EAST TRIANGLE-HEADED ARROW TO BAR 2B78 SOUTH EAST TRIANGLE-HEADED ARROW TO BAR = end 2B79 SOUTH WEST TRIANGLE-HEADED ARROW TO BAR 2B7A LEFTWARDS TRIANGLE-HEADED ARROW WITH DOUBLE HORIZONTAL STROKE 2B7B UPWARDS TRIANGLE-HEADED ARROW WITH DOUBLE HORIZONTAL STROKE = page up 2B7C RIGHTWARDS TRIANGLE-HEADED ARROW WITH DOUBLE HORIZONTAL STROKE 2B7D DOWNWARDS TRIANGLE-HEADED ARROW WITH DOUBLE HORIZONTAL STROKE = page down @ Keyboard symbols 2B7E HORIZONTAL TAB KEY x (leftwards arrow to bar over rightwards arrow to bar - 21B9) 2B7F VERTICAL TAB KEY @ Paired triangle-headed arrows 2B80 LEFTWARDS TRIANGLE-HEADED ARROW OVER RIGHTWARDS TRIANGLE-HEADED ARROW x (leftwards arrow over rightwards arrow - 21C6) 2B81 UPWARDS TRIANGLE-HEADED ARROW LEFTWARDS OF DOWNWARDS TRIANGLE-HEADED ARROW 2B82 RIGHTWARDS TRIANGLE-HEADED ARROW OVER LEFTWARDS TRIANGLE-HEADED ARROW 2B83 DOWNWARDS TRIANGLE-HEADED ARROW LEFTWARDS OF UPWARDS TRIANGLE-HEADED ARROW x (downwards arrow leftwards of upwards arrow - 21F5) 2B84 LEFTWARDS TRIANGLE-HEADED PAIRED ARROWS x (leftwards paired arrows - 21C7) 2B85 UPWARDS TRIANGLE-HEADED PAIRED ARROWS x (upwards paired arrows - 21C8) 2B86 RIGHTWARDS TRIANGLE-HEADED PAIRED ARROWS x (rightwards paired arrows - 21C9) 2B87 DOWNWARDS TRIANGLE-HEADED PAIRED ARROWS x (downwards paired arrows - 21CA) @ Circled arrows 2B88 LEFTWARDS BLACK CIRCLED WHITE ARROW 2B89 UPWARDS BLACK CIRCLED WHITE ARROW 2B8A RIGHTWARDS BLACK CIRCLED WHITE ARROW x (circled heavy white rightwards arrow - 27B2) 2B8B DOWNWARDS BLACK CIRCLED WHITE ARROW @ Triangle-headed u-shaped arrows 2B8C ANTICLOCKWISE TRIANGLE-HEADED RIGHT U-SHAPED ARROW 2B8D ANTICLOCKWISE TRIANGLE-HEADED BOTTOM U-SHAPED ARROW 2B8E ANTICLOCKWISE TRIANGLE-HEADED LEFT U-SHAPED ARROW 2B8F ANTICLOCKWISE TRIANGLE-HEADED TOP U-SHAPED ARROW x (anticlockwise top semicircle arrow - 21B6) @ Keyboard symbols 2B90 RETURN LEFT x (return symbol - 23CE) 2B91 RETURN RIGHT 2B92 NEWLINE LEFT 2B93 NEWLINE RIGHT @ Miscellaneous arrow symbol 2B94 FOUR CORNER ARROWS CIRCLING ANTICLOCKWISE = loop @ Black arrow 2B95 RIGHTWARDS BLACK ARROW x (black rightwards arrow - 27A1) x (leftwards black arrow - 2B05) @ Arrowheads @+ These sets of arrowheads are narrower than the dingbats set. 2B98 THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD 2B99 THREE-D RIGHT-LIGHTED UPWARDS EQUILATERAL ARROWHEAD 2B9A THREE-D TOP-LIGHTED RIGHTWARDS EQUILATERAL ARROWHEAD x (three-d top-lighted rightwards arrowhead - 27A2) 2B9B THREE-D LEFT-LIGHTED DOWNWARDS EQUILATERAL ARROWHEAD 2B9C BLACK LEFTWARDS EQUILATERAL ARROWHEAD 2B9D BLACK UPWARDS EQUILATERAL ARROWHEAD 2B9E BLACK RIGHTWARDS EQUILATERAL ARROWHEAD x (black rightwards arrowhead - 27A4) 2B9F BLACK DOWNWARDS EQUILATERAL ARROWHEAD @ Triangle-headed arrows with bent tips 2BA0 DOWNWARDS TRIANGLE-HEADED ARROW WITH LONG TIP LEFTWARDS x (downwards arrow with tip leftwards - 21B2) 2BA1 DOWNWARDS TRIANGLE-HEADED ARROW WITH LONG TIP RIGHTWARDS x (downwards arrow with tip rightwards - 21B3) 2BA2 UPWARDS TRIANGLE-HEADED ARROW WITH LONG TIP LEFTWARDS x (upwards arrow with tip leftwards - 21B0) 2BA3 UPWARDS TRIANGLE-HEADED ARROW WITH LONG TIP RIGHTWARDS x (upwards arrow with tip rightwards - 21B1) 2BA4 LEFTWARDS TRIANGLE-HEADED ARROW WITH LONG TIP UPWARDS x (leftwards arrow with tip upwards - 2B11) 2BA5 RIGHTWARDS TRIANGLE-HEADED ARROW WITH LONG TIP UPWARDS x (rightwards arrow with tip upwards - 2B0F) 2BA6 LEFTWARDS TRIANGLE-HEADED ARROW WITH LONG TIP DOWNWARDS x (leftwards arrow with tip downwards - 2B10) 2BA7 RIGHTWARDS TRIANGLE-HEADED ARROW WITH LONG TIP DOWNWARDS x (rightwards arrow with tip downwards - 2B0E) @ Black curved arrows 2BA8 BLACK CURVED DOWNWARDS AND LEFTWARDS ARROW 2BA9 BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW x (heavy black curved downwards and rightwards arrow - 27A5) 2BAA BLACK CURVED UPWARDS AND LEFTWARDS ARROW 2BAB BLACK CURVED UPWARDS AND RIGHTWARDS ARROW x (heavy black curved upwards and rightwards arrow - 27A6) 2BAC BLACK CURVED LEFTWARDS AND UPWARDS ARROW 2BAD BLACK CURVED RIGHTWARDS AND UPWARDS ARROW 2BAE BLACK CURVED LEFTWARDS AND DOWNWARDS ARROW 2BAF BLACK CURVED RIGHTWARDS AND DOWNWARDS ARROW @ Ribbon arrows 2BB0 RIBBON ARROW DOWN LEFT 2BB1 RIBBON ARROW DOWN RIGHT 2BB2 RIBBON ARROW UP LEFT 2BB3 RIBBON ARROW UP RIGHT 2BB4 RIBBON ARROW LEFT UP 2BB5 RIBBON ARROW RIGHT UP 2BB6 RIBBON ARROW LEFT DOWN 2BB7 RIBBON ARROW RIGHT DOWN @ Keyboard symbols 2BB8 UPWARDS WHITE ARROW FROM BAR WITH HORIZONTAL BAR = caps lock x (upwards white arrow on pedestal with horizontal bar - 21EC) 2BB9 UP ARROWHEAD IN A RECTANGLE BOX = escape x (apl functional symbol quad up caret - 2353) @ Geometric symbols 2BBD BALLOT BOX WITH LIGHT X x (ballot box with x - 2612) 2BBE CIRCLED X x (circled times - 2297) 2BBF CIRCLED BOLD X @ Centred geometric shapes 2BC0 BLACK SQUARE CENTRED 2BC1 BLACK DIAMOND CENTRED 2BC2 TURNED BLACK PENTAGON 2BC3 HORIZONTAL BLACK OCTAGON 2BC4 BLACK OCTAGON 2BC5 BLACK MEDIUM UP-POINTING TRIANGLE CENTRED 2BC6 BLACK MEDIUM DOWN-POINTING TRIANGLE CENTRED 2BC7 BLACK MEDIUM LEFT-POINTING TRIANGLE CENTRED 2BC8 BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED @ Half circles 2BCA TOP HALF BLACK CIRCLE 2BCB BOTTOM HALF BLACK CIRCLE @ Cusp shapes 2BCC LIGHT FOUR POINTED BLACK CUSP x (black four pointed star - 2726) 2BCD ROTATED LIGHT FOUR POINTED BLACK CUSP 2BCE WHITE FOUR POINTED CUSP x (white four pointed star - 2727) 2BCF ROTATED WHITE FOUR POINTED CUSP x (square lozenge - 2311) @ Miscellaneous symbols 2BD0 SQUARE POSITION INDICATOR x (position indicator - 2316) 2BD1 UNCERTAINTY SIGN = query x (apl functional symbol quad question - 2370) x (replacement character - FFFD) @ Two-headed arrow symbols @+ The following four arrow symbols are the preferred representation for fast cursor direction for ISO 9995-7. 2BEC LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS = fast cursor left x (leftwards two headed arrow - 219E) 2BED UPWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS = fast cursor up 2BEE RIGHTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS = fast cursor right 2BEF DOWNWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS = fast cursor down @~ ! @@ 2C00 Glagolitic 2C5F @ Capital letters 2C00 GLAGOLITIC CAPITAL LETTER AZU 2C01 GLAGOLITIC CAPITAL LETTER BUKY 2C02 GLAGOLITIC CAPITAL LETTER VEDE 2C03 GLAGOLITIC CAPITAL LETTER GLAGOLI 2C04 GLAGOLITIC CAPITAL LETTER DOBRO 2C05 GLAGOLITIC CAPITAL LETTER YESTU 2C06 GLAGOLITIC CAPITAL LETTER ZHIVETE 2C07 GLAGOLITIC CAPITAL LETTER DZELO 2C08 GLAGOLITIC CAPITAL LETTER ZEMLJA 2C09 GLAGOLITIC CAPITAL LETTER IZHE 2C0A GLAGOLITIC CAPITAL LETTER INITIAL IZHE 2C0B GLAGOLITIC CAPITAL LETTER I 2C0C GLAGOLITIC CAPITAL LETTER DJERVI 2C0D GLAGOLITIC CAPITAL LETTER KAKO 2C0E GLAGOLITIC CAPITAL LETTER LJUDIJE 2C0F GLAGOLITIC CAPITAL LETTER MYSLITE 2C10 GLAGOLITIC CAPITAL LETTER NASHI 2C11 GLAGOLITIC CAPITAL LETTER ONU 2C12 GLAGOLITIC CAPITAL LETTER POKOJI 2C13 GLAGOLITIC CAPITAL LETTER RITSI 2C14 GLAGOLITIC CAPITAL LETTER SLOVO 2C15 GLAGOLITIC CAPITAL LETTER TVRIDO 2C16 GLAGOLITIC CAPITAL LETTER UKU 2C17 GLAGOLITIC CAPITAL LETTER FRITU 2C18 GLAGOLITIC CAPITAL LETTER HERU 2C19 GLAGOLITIC CAPITAL LETTER OTU 2C1A GLAGOLITIC CAPITAL LETTER PE 2C1B GLAGOLITIC CAPITAL LETTER SHTA 2C1C GLAGOLITIC CAPITAL LETTER TSI 2C1D GLAGOLITIC CAPITAL LETTER CHRIVI 2C1E GLAGOLITIC CAPITAL LETTER SHA 2C1F GLAGOLITIC CAPITAL LETTER YERU 2C20 GLAGOLITIC CAPITAL LETTER YERI 2C21 GLAGOLITIC CAPITAL LETTER YATI 2C22 GLAGOLITIC CAPITAL LETTER SPIDERY HA 2C23 GLAGOLITIC CAPITAL LETTER YU 2C24 GLAGOLITIC CAPITAL LETTER SMALL YUS 2C25 GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL 2C26 GLAGOLITIC CAPITAL LETTER YO 2C27 GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS 2C28 GLAGOLITIC CAPITAL LETTER BIG YUS 2C29 GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS 2C2A GLAGOLITIC CAPITAL LETTER FITA 2C2B GLAGOLITIC CAPITAL LETTER IZHITSA 2C2C GLAGOLITIC CAPITAL LETTER SHTAPIC 2C2D GLAGOLITIC CAPITAL LETTER TROKUTASTI A 2C2E GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE @ Small letters 2C30 GLAGOLITIC SMALL LETTER AZU 2C31 GLAGOLITIC SMALL LETTER BUKY 2C32 GLAGOLITIC SMALL LETTER VEDE 2C33 GLAGOLITIC SMALL LETTER GLAGOLI 2C34 GLAGOLITIC SMALL LETTER DOBRO 2C35 GLAGOLITIC SMALL LETTER YESTU 2C36 GLAGOLITIC SMALL LETTER ZHIVETE 2C37 GLAGOLITIC SMALL LETTER DZELO 2C38 GLAGOLITIC SMALL LETTER ZEMLJA 2C39 GLAGOLITIC SMALL LETTER IZHE 2C3A GLAGOLITIC SMALL LETTER INITIAL IZHE x (cyrillic small letter iota - A647) 2C3B GLAGOLITIC SMALL LETTER I 2C3C GLAGOLITIC SMALL LETTER DJERVI 2C3D GLAGOLITIC SMALL LETTER KAKO 2C3E GLAGOLITIC SMALL LETTER LJUDIJE 2C3F GLAGOLITIC SMALL LETTER MYSLITE 2C40 GLAGOLITIC SMALL LETTER NASHI 2C41 GLAGOLITIC SMALL LETTER ONU 2C42 GLAGOLITIC SMALL LETTER POKOJI 2C43 GLAGOLITIC SMALL LETTER RITSI 2C44 GLAGOLITIC SMALL LETTER SLOVO 2C45 GLAGOLITIC SMALL LETTER TVRIDO 2C46 GLAGOLITIC SMALL LETTER UKU 2C47 GLAGOLITIC SMALL LETTER FRITU 2C48 GLAGOLITIC SMALL LETTER HERU 2C49 GLAGOLITIC SMALL LETTER OTU 2C4A GLAGOLITIC SMALL LETTER PE 2C4B GLAGOLITIC SMALL LETTER SHTA 2C4C GLAGOLITIC SMALL LETTER TSI 2C4D GLAGOLITIC SMALL LETTER CHRIVI 2C4E GLAGOLITIC SMALL LETTER SHA 2C4F GLAGOLITIC SMALL LETTER YERU 2C50 GLAGOLITIC SMALL LETTER YERI 2C51 GLAGOLITIC SMALL LETTER YATI 2C52 GLAGOLITIC SMALL LETTER SPIDERY HA 2C53 GLAGOLITIC SMALL LETTER YU 2C54 GLAGOLITIC SMALL LETTER SMALL YUS 2C55 GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL 2C56 GLAGOLITIC SMALL LETTER YO 2C57 GLAGOLITIC SMALL LETTER IOTATED SMALL YUS 2C58 GLAGOLITIC SMALL LETTER BIG YUS 2C59 GLAGOLITIC SMALL LETTER IOTATED BIG YUS 2C5A GLAGOLITIC SMALL LETTER FITA 2C5B GLAGOLITIC SMALL LETTER IZHITSA 2C5C GLAGOLITIC SMALL LETTER SHTAPIC 2C5D GLAGOLITIC SMALL LETTER TROKUTASTI A 2C5E GLAGOLITIC SMALL LETTER LATINATE MYSLITE @@ 2C60 Latin Extended-C 2C7F @ Orthographic Latin additions 2C60 LATIN CAPITAL LETTER L WITH DOUBLE BAR 2C61 LATIN SMALL LETTER L WITH DOUBLE BAR 2C62 LATIN CAPITAL LETTER L WITH MIDDLE TILDE * lowercase is 026B 2C63 LATIN CAPITAL LETTER P WITH STROKE * lowercase is 1D7D 2C64 LATIN CAPITAL LETTER R WITH TAIL * lowercase is 027D 2C65 LATIN SMALL LETTER A WITH STROKE * uppercase is 023A 2C66 LATIN SMALL LETTER T WITH DIAGONAL STROKE * uppercase is 023E @ Additions for Uighur 2C67 LATIN CAPITAL LETTER H WITH DESCENDER 2C68 LATIN SMALL LETTER H WITH DESCENDER 2C69 LATIN CAPITAL LETTER K WITH DESCENDER 2C6A LATIN SMALL LETTER K WITH DESCENDER 2C6B LATIN CAPITAL LETTER Z WITH DESCENDER 2C6C LATIN SMALL LETTER Z WITH DESCENDER @ Miscellaneous additions 2C6D LATIN CAPITAL LETTER ALPHA * lowercase is 0251 2C6E LATIN CAPITAL LETTER M WITH HOOK * lowercase is 0271 2C6F LATIN CAPITAL LETTER TURNED A * lowercase is 0250 2C70 LATIN CAPITAL LETTER TURNED ALPHA * lowercase is 0252 2C71 LATIN SMALL LETTER V WITH RIGHT HOOK 2C72 LATIN CAPITAL LETTER W WITH HOOK 2C73 LATIN SMALL LETTER W WITH HOOK 2C74 LATIN SMALL LETTER V WITH CURL @ Claudian letters @+ Claudian letters in inscriptions are uppercase, but may be transcribed by scholars in lowercase. 2C75 LATIN CAPITAL LETTER HALF H x (greek capital letter heta - 0370) x (turned capital f - 2132) x (roman numeral reversed one hundred - 2183) 2C76 LATIN SMALL LETTER HALF H x (greek small letter heta - 0371) @ Additions for UPA 2C77 LATIN SMALL LETTER TAILLESS PHI * medium rounded o 2C78 LATIN SMALL LETTER E WITH NOTCH 2C79 LATIN SMALL LETTER TURNED R WITH TAIL 2C7A LATIN SMALL LETTER O WITH LOW RING INSIDE 2C7B LATIN LETTER SMALL CAPITAL TURNED E 2C7C LATIN SUBSCRIPT SMALL LETTER J # 006A 2C7D MODIFIER LETTER CAPITAL V # 0056 @ Additions for Shona 2C7E LATIN CAPITAL LETTER S WITH SWASH TAIL * lowercase is 023F 2C7F LATIN CAPITAL LETTER Z WITH SWASH TAIL * lowercase is 0240 @@ 2C80 Coptic 2CFF @+ Other Coptic letters derived from Demotic are encoded in the Greek and Coptic block. @ Bohairic Coptic letters 2C80 COPTIC CAPITAL LETTER ALFA 2C81 COPTIC SMALL LETTER ALFA 2C82 COPTIC CAPITAL LETTER VIDA 2C83 COPTIC SMALL LETTER VIDA 2C84 COPTIC CAPITAL LETTER GAMMA 2C85 COPTIC SMALL LETTER GAMMA 2C86 COPTIC CAPITAL LETTER DALDA 2C87 COPTIC SMALL LETTER DALDA 2C88 COPTIC CAPITAL LETTER EIE 2C89 COPTIC SMALL LETTER EIE 2C8A COPTIC CAPITAL LETTER SOU 2C8B COPTIC SMALL LETTER SOU 2C8C COPTIC CAPITAL LETTER ZATA 2C8D COPTIC SMALL LETTER ZATA 2C8E COPTIC CAPITAL LETTER HATE 2C8F COPTIC SMALL LETTER HATE 2C90 COPTIC CAPITAL LETTER THETHE 2C91 COPTIC SMALL LETTER THETHE 2C92 COPTIC CAPITAL LETTER IAUDA 2C93 COPTIC SMALL LETTER IAUDA 2C94 COPTIC CAPITAL LETTER KAPA 2C95 COPTIC SMALL LETTER KAPA 2C96 COPTIC CAPITAL LETTER LAULA 2C97 COPTIC SMALL LETTER LAULA 2C98 COPTIC CAPITAL LETTER MI 2C99 COPTIC SMALL LETTER MI 2C9A COPTIC CAPITAL LETTER NI 2C9B COPTIC SMALL LETTER NI 2C9C COPTIC CAPITAL LETTER KSI 2C9D COPTIC SMALL LETTER KSI 2C9E COPTIC CAPITAL LETTER O 2C9F COPTIC SMALL LETTER O 2CA0 COPTIC CAPITAL LETTER PI 2CA1 COPTIC SMALL LETTER PI 2CA2 COPTIC CAPITAL LETTER RO 2CA3 COPTIC SMALL LETTER RO 2CA4 COPTIC CAPITAL LETTER SIMA 2CA5 COPTIC SMALL LETTER SIMA 2CA6 COPTIC CAPITAL LETTER TAU 2CA7 COPTIC SMALL LETTER TAU 2CA8 COPTIC CAPITAL LETTER UA 2CA9 COPTIC SMALL LETTER UA 2CAA COPTIC CAPITAL LETTER FI 2CAB COPTIC SMALL LETTER FI 2CAC COPTIC CAPITAL LETTER KHI 2CAD COPTIC SMALL LETTER KHI 2CAE COPTIC CAPITAL LETTER PSI 2CAF COPTIC SMALL LETTER PSI 2CB0 COPTIC CAPITAL LETTER OOU 2CB1 COPTIC SMALL LETTER OOU @ Old Coptic and dialect letters 2CB2 COPTIC CAPITAL LETTER DIALECT-P ALEF 2CB3 COPTIC SMALL LETTER DIALECT-P ALEF 2CB4 COPTIC CAPITAL LETTER OLD COPTIC AIN 2CB5 COPTIC SMALL LETTER OLD COPTIC AIN 2CB6 COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE 2CB7 COPTIC SMALL LETTER CRYPTOGRAMMIC EIE 2CB8 COPTIC CAPITAL LETTER DIALECT-P KAPA 2CB9 COPTIC SMALL LETTER DIALECT-P KAPA 2CBA COPTIC CAPITAL LETTER DIALECT-P NI 2CBB COPTIC SMALL LETTER DIALECT-P NI 2CBC COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI 2CBD COPTIC SMALL LETTER CRYPTOGRAMMIC NI 2CBE COPTIC CAPITAL LETTER OLD COPTIC OOU 2CBF COPTIC SMALL LETTER OLD COPTIC OOU 2CC0 COPTIC CAPITAL LETTER SAMPI 2CC1 COPTIC SMALL LETTER SAMPI 2CC2 COPTIC CAPITAL LETTER CROSSED SHEI 2CC3 COPTIC SMALL LETTER CROSSED SHEI 2CC4 COPTIC CAPITAL LETTER OLD COPTIC SHEI 2CC5 COPTIC SMALL LETTER OLD COPTIC SHEI 2CC6 COPTIC CAPITAL LETTER OLD COPTIC ESH 2CC7 COPTIC SMALL LETTER OLD COPTIC ESH 2CC8 COPTIC CAPITAL LETTER AKHMIMIC KHEI 2CC9 COPTIC SMALL LETTER AKHMIMIC KHEI 2CCA COPTIC CAPITAL LETTER DIALECT-P HORI 2CCB COPTIC SMALL LETTER DIALECT-P HORI 2CCC COPTIC CAPITAL LETTER OLD COPTIC HORI 2CCD COPTIC SMALL LETTER OLD COPTIC HORI 2CCE COPTIC CAPITAL LETTER OLD COPTIC HA 2CCF COPTIC SMALL LETTER OLD COPTIC HA 2CD0 COPTIC CAPITAL LETTER L-SHAPED HA 2CD1 COPTIC SMALL LETTER L-SHAPED HA 2CD2 COPTIC CAPITAL LETTER OLD COPTIC HEI 2CD3 COPTIC SMALL LETTER OLD COPTIC HEI 2CD4 COPTIC CAPITAL LETTER OLD COPTIC HAT 2CD5 COPTIC SMALL LETTER OLD COPTIC HAT 2CD6 COPTIC CAPITAL LETTER OLD COPTIC GANGIA 2CD7 COPTIC SMALL LETTER OLD COPTIC GANGIA 2CD8 COPTIC CAPITAL LETTER OLD COPTIC DJA 2CD9 COPTIC SMALL LETTER OLD COPTIC DJA 2CDA COPTIC CAPITAL LETTER OLD COPTIC SHIMA 2CDB COPTIC SMALL LETTER OLD COPTIC SHIMA @ Old Nubian letters 2CDC COPTIC CAPITAL LETTER OLD NUBIAN SHIMA 2CDD COPTIC SMALL LETTER OLD NUBIAN SHIMA 2CDE COPTIC CAPITAL LETTER OLD NUBIAN NGI 2CDF COPTIC SMALL LETTER OLD NUBIAN NGI 2CE0 COPTIC CAPITAL LETTER OLD NUBIAN NYI 2CE1 COPTIC SMALL LETTER OLD NUBIAN NYI 2CE2 COPTIC CAPITAL LETTER OLD NUBIAN WAU 2CE3 COPTIC SMALL LETTER OLD NUBIAN WAU @ Symbols 2CE4 COPTIC SYMBOL KAI x (greek kai symbol - 03D7) 2CE5 COPTIC SYMBOL MI RO 2CE6 COPTIC SYMBOL PI RO 2CE7 COPTIC SYMBOL STAUROS 2CE8 COPTIC SYMBOL TAU RO x (greek symbol tau rho - 101A0) 2CE9 COPTIC SYMBOL KHI RO x (chi rho - 2627) 2CEA COPTIC SYMBOL SHIMA SIMA @ Cryptogrammic letters 2CEB COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI 2CEC COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI 2CED COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA 2CEE COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA @ Combining marks 2CEF COPTIC COMBINING NI ABOVE * this mark is used in final position and extends above the following character (usually a space) 2CF0 COPTIC COMBINING SPIRITUS ASPER x (combining reversed comma above - 0314) x (combining cyrillic dasia pneumata - 0485) 2CF1 COPTIC COMBINING SPIRITUS LENIS x (combining comma above - 0313) x (combining cyrillic psili pneumata - 0486) @ Bohairic Coptic letters 2CF2 COPTIC CAPITAL LETTER BOHAIRIC KHEI x (coptic capital letter khei - 03E6) 2CF3 COPTIC SMALL LETTER BOHAIRIC KHEI x (coptic small letter khei - 03E7) @ Old Nubian punctuation 2CF9 COPTIC OLD NUBIAN FULL STOP 2CFA COPTIC OLD NUBIAN DIRECT QUESTION MARK 2CFB COPTIC OLD NUBIAN INDIRECT QUESTION MARK 2CFC COPTIC OLD NUBIAN VERSE DIVIDER @ Numeric character 2CFD COPTIC FRACTION ONE HALF @ Punctuation 2CFE COPTIC FULL STOP 2CFF COPTIC MORPHOLOGICAL DIVIDER @@ 2D00 Georgian Supplement 2D2F @ Small letters (Khutsuri) @+ This is the lowercase of the old ecclesiastical alphabet. See the Georgian block for uppercase Asomtavruli. 2D00 GEORGIAN SMALL LETTER AN 2D01 GEORGIAN SMALL LETTER BAN 2D02 GEORGIAN SMALL LETTER GAN 2D03 GEORGIAN SMALL LETTER DON 2D04 GEORGIAN SMALL LETTER EN 2D05 GEORGIAN SMALL LETTER VIN 2D06 GEORGIAN SMALL LETTER ZEN 2D07 GEORGIAN SMALL LETTER TAN 2D08 GEORGIAN SMALL LETTER IN 2D09 GEORGIAN SMALL LETTER KAN 2D0A GEORGIAN SMALL LETTER LAS 2D0B GEORGIAN SMALL LETTER MAN 2D0C GEORGIAN SMALL LETTER NAR 2D0D GEORGIAN SMALL LETTER ON 2D0E GEORGIAN SMALL LETTER PAR 2D0F GEORGIAN SMALL LETTER ZHAR 2D10 GEORGIAN SMALL LETTER RAE 2D11 GEORGIAN SMALL LETTER SAN 2D12 GEORGIAN SMALL LETTER TAR 2D13 GEORGIAN SMALL LETTER UN 2D14 GEORGIAN SMALL LETTER PHAR 2D15 GEORGIAN SMALL LETTER KHAR 2D16 GEORGIAN SMALL LETTER GHAN 2D17 GEORGIAN SMALL LETTER QAR 2D18 GEORGIAN SMALL LETTER SHIN 2D19 GEORGIAN SMALL LETTER CHIN 2D1A GEORGIAN SMALL LETTER CAN 2D1B GEORGIAN SMALL LETTER JIL 2D1C GEORGIAN SMALL LETTER CIL 2D1D GEORGIAN SMALL LETTER CHAR 2D1E GEORGIAN SMALL LETTER XAN 2D1F GEORGIAN SMALL LETTER JHAN 2D20 GEORGIAN SMALL LETTER HAE 2D21 GEORGIAN SMALL LETTER HE 2D22 GEORGIAN SMALL LETTER HIE 2D23 GEORGIAN SMALL LETTER WE 2D24 GEORGIAN SMALL LETTER HAR 2D25 GEORGIAN SMALL LETTER HOE @ Additional letter 2D27 GEORGIAN SMALL LETTER YN @ Additional letter for Ossetian 2D2D GEORGIAN SMALL LETTER AEN @@ 2D30 Tifinagh 2D7F @ Letters 2D30 TIFINAGH LETTER YA 2D31 TIFINAGH LETTER YAB 2D32 TIFINAGH LETTER YABH 2D33 TIFINAGH LETTER YAG 2D34 TIFINAGH LETTER YAGHH 2D35 TIFINAGH LETTER BERBER ACADEMY YAJ 2D36 TIFINAGH LETTER YAJ 2D37 TIFINAGH LETTER YAD 2D38 TIFINAGH LETTER YADH 2D39 TIFINAGH LETTER YADD 2D3A TIFINAGH LETTER YADDH 2D3B TIFINAGH LETTER YEY 2D3C TIFINAGH LETTER YAF 2D3D TIFINAGH LETTER YAK 2D3E TIFINAGH LETTER TUAREG YAK 2D3F TIFINAGH LETTER YAKHH 2D40 TIFINAGH LETTER YAH = Tuareg yab 2D41 TIFINAGH LETTER BERBER ACADEMY YAH 2D42 TIFINAGH LETTER TUAREG YAH 2D43 TIFINAGH LETTER YAHH 2D44 TIFINAGH LETTER YAA 2D45 TIFINAGH LETTER YAKH 2D46 TIFINAGH LETTER TUAREG YAKH 2D47 TIFINAGH LETTER YAQ 2D48 TIFINAGH LETTER TUAREG YAQ 2D49 TIFINAGH LETTER YI 2D4A TIFINAGH LETTER YAZH 2D4B TIFINAGH LETTER AHAGGAR YAZH 2D4C TIFINAGH LETTER TUAREG YAZH 2D4D TIFINAGH LETTER YAL 2D4E TIFINAGH LETTER YAM 2D4F TIFINAGH LETTER YAN 2D50 TIFINAGH LETTER TUAREG YAGN 2D51 TIFINAGH LETTER TUAREG YANG 2D52 TIFINAGH LETTER YAP 2D53 TIFINAGH LETTER YU = Tuareg yaw 2D54 TIFINAGH LETTER YAR 2D55 TIFINAGH LETTER YARR 2D56 TIFINAGH LETTER YAGH 2D57 TIFINAGH LETTER TUAREG YAGH 2D58 TIFINAGH LETTER AYER YAGH = Adrar yaj 2D59 TIFINAGH LETTER YAS 2D5A TIFINAGH LETTER YASS 2D5B TIFINAGH LETTER YASH 2D5C TIFINAGH LETTER YAT 2D5D TIFINAGH LETTER YATH 2D5E TIFINAGH LETTER YACH 2D5F TIFINAGH LETTER YATT 2D60 TIFINAGH LETTER YAV 2D61 TIFINAGH LETTER YAW 2D62 TIFINAGH LETTER YAY 2D63 TIFINAGH LETTER YAZ 2D64 TIFINAGH LETTER TAWELLEMET YAZ = harpoon yaz 2D65 TIFINAGH LETTER YAZZ 2D66 TIFINAGH LETTER YE 2D67 TIFINAGH LETTER YO @ Modifier letter 2D6F TIFINAGH MODIFIER LETTER LABIALIZATION MARK = tamatart # 2D61 @ Punctuation 2D70 TIFINAGH SEPARATOR MARK = tazarast @ Sign 2D7F TIFINAGH CONSONANT JOINER * suppresses an inherent vowel * functions to indicate that previous and following character are part of a bi-consonant cluster * shape shown is arbitrary and is not visibly rendered @@ 2D80 Ethiopic Extended 2DDF @ Syllables for Me'en 2D80 ETHIOPIC SYLLABLE LOA 2D81 ETHIOPIC SYLLABLE MOA 2D82 ETHIOPIC SYLLABLE ROA 2D83 ETHIOPIC SYLLABLE SOA 2D84 ETHIOPIC SYLLABLE SHOA 2D85 ETHIOPIC SYLLABLE BOA 2D86 ETHIOPIC SYLLABLE TOA 2D87 ETHIOPIC SYLLABLE COA 2D88 ETHIOPIC SYLLABLE NOA 2D89 ETHIOPIC SYLLABLE NYOA 2D8A ETHIOPIC SYLLABLE GLOTTAL OA 2D8B ETHIOPIC SYLLABLE ZOA 2D8C ETHIOPIC SYLLABLE DOA 2D8D ETHIOPIC SYLLABLE DDOA 2D8E ETHIOPIC SYLLABLE JOA 2D8F ETHIOPIC SYLLABLE THOA 2D90 ETHIOPIC SYLLABLE CHOA 2D91 ETHIOPIC SYLLABLE PHOA 2D92 ETHIOPIC SYLLABLE POA @ Syllables for Blin 2D93 ETHIOPIC SYLLABLE GGWA 2D94 ETHIOPIC SYLLABLE GGWI 2D95 ETHIOPIC SYLLABLE GGWEE 2D96 ETHIOPIC SYLLABLE GGWE @ Syllables for Sebatbeit 2DA0 ETHIOPIC SYLLABLE SSA 2DA1 ETHIOPIC SYLLABLE SSU 2DA2 ETHIOPIC SYLLABLE SSI 2DA3 ETHIOPIC SYLLABLE SSAA 2DA4 ETHIOPIC SYLLABLE SSEE 2DA5 ETHIOPIC SYLLABLE SSE 2DA6 ETHIOPIC SYLLABLE SSO 2DA8 ETHIOPIC SYLLABLE CCA 2DA9 ETHIOPIC SYLLABLE CCU 2DAA ETHIOPIC SYLLABLE CCI 2DAB ETHIOPIC SYLLABLE CCAA 2DAC ETHIOPIC SYLLABLE CCEE 2DAD ETHIOPIC SYLLABLE CCE 2DAE ETHIOPIC SYLLABLE CCO 2DB0 ETHIOPIC SYLLABLE ZZA 2DB1 ETHIOPIC SYLLABLE ZZU 2DB2 ETHIOPIC SYLLABLE ZZI 2DB3 ETHIOPIC SYLLABLE ZZAA 2DB4 ETHIOPIC SYLLABLE ZZEE 2DB5 ETHIOPIC SYLLABLE ZZE 2DB6 ETHIOPIC SYLLABLE ZZO 2DB8 ETHIOPIC SYLLABLE CCHA 2DB9 ETHIOPIC SYLLABLE CCHU 2DBA ETHIOPIC SYLLABLE CCHI 2DBB ETHIOPIC SYLLABLE CCHAA 2DBC ETHIOPIC SYLLABLE CCHEE 2DBD ETHIOPIC SYLLABLE CCHE 2DBE ETHIOPIC SYLLABLE CCHO 2DC0 ETHIOPIC SYLLABLE QYA 2DC1 ETHIOPIC SYLLABLE QYU 2DC2 ETHIOPIC SYLLABLE QYI 2DC3 ETHIOPIC SYLLABLE QYAA 2DC4 ETHIOPIC SYLLABLE QYEE 2DC5 ETHIOPIC SYLLABLE QYE 2DC6 ETHIOPIC SYLLABLE QYO 2DC8 ETHIOPIC SYLLABLE KYA 2DC9 ETHIOPIC SYLLABLE KYU 2DCA ETHIOPIC SYLLABLE KYI 2DCB ETHIOPIC SYLLABLE KYAA 2DCC ETHIOPIC SYLLABLE KYEE 2DCD ETHIOPIC SYLLABLE KYE 2DCE ETHIOPIC SYLLABLE KYO 2DD0 ETHIOPIC SYLLABLE XYA 2DD1 ETHIOPIC SYLLABLE XYU 2DD2 ETHIOPIC SYLLABLE XYI 2DD3 ETHIOPIC SYLLABLE XYAA 2DD4 ETHIOPIC SYLLABLE XYEE 2DD5 ETHIOPIC SYLLABLE XYE 2DD6 ETHIOPIC SYLLABLE XYO 2DD8 ETHIOPIC SYLLABLE GYA 2DD9 ETHIOPIC SYLLABLE GYU 2DDA ETHIOPIC SYLLABLE GYI 2DDB ETHIOPIC SYLLABLE GYAA 2DDC ETHIOPIC SYLLABLE GYEE 2DDD ETHIOPIC SYLLABLE GYE 2DDE ETHIOPIC SYLLABLE GYO @@ 2DE0 Cyrillic Extended-A 2DFF @ Old Church Slavonic combining letters 2DE0 COMBINING CYRILLIC LETTER BE 2DE1 COMBINING CYRILLIC LETTER VE 2DE2 COMBINING CYRILLIC LETTER GHE 2DE3 COMBINING CYRILLIC LETTER DE 2DE4 COMBINING CYRILLIC LETTER ZHE 2DE5 COMBINING CYRILLIC LETTER ZE 2DE6 COMBINING CYRILLIC LETTER KA 2DE7 COMBINING CYRILLIC LETTER EL 2DE8 COMBINING CYRILLIC LETTER EM x (combining latin letter small capital m - 1DDF) 2DE9 COMBINING CYRILLIC LETTER EN 2DEA COMBINING CYRILLIC LETTER O x (combining latin small letter o - 0366) 2DEB COMBINING CYRILLIC LETTER PE 2DEC COMBINING CYRILLIC LETTER ER 2DED COMBINING CYRILLIC LETTER ES x (combining latin small letter c - 0368) 2DEE COMBINING CYRILLIC LETTER TE 2DEF COMBINING CYRILLIC LETTER HA x (combining latin small letter x - 036F) 2DF0 COMBINING CYRILLIC LETTER TSE 2DF1 COMBINING CYRILLIC LETTER CHE 2DF2 COMBINING CYRILLIC LETTER SHA 2DF3 COMBINING CYRILLIC LETTER SHCHA 2DF4 COMBINING CYRILLIC LETTER FITA 2DF5 COMBINING CYRILLIC LETTER ES-TE * preferred representation is the sequence: 2DED 2DEE 2DF6 COMBINING CYRILLIC LETTER A x (combining latin small letter a - 0363) 2DF7 COMBINING CYRILLIC LETTER IE x (combining latin small letter e - 0364) 2DF8 COMBINING CYRILLIC LETTER DJERV 2DF9 COMBINING CYRILLIC LETTER MONOGRAPH UK 2DFA COMBINING CYRILLIC LETTER YAT 2DFB COMBINING CYRILLIC LETTER YU 2DFC COMBINING CYRILLIC LETTER IOTIFIED A 2DFD COMBINING CYRILLIC LETTER LITTLE YUS 2DFE COMBINING CYRILLIC LETTER BIG YUS 2DFF COMBINING CYRILLIC LETTER IOTIFIED BIG YUS @@ 2E00 Supplemental Punctuation 2E7F @ New Testament editorial symbols 2E00 RIGHT ANGLE SUBSTITUTION MARKER x (top left corner - 231C) 2E01 RIGHT ANGLE DOTTED SUBSTITUTION MARKER 2E02 LEFT SUBSTITUTION BRACKET 2E03 RIGHT SUBSTITUTION BRACKET 2E04 LEFT DOTTED SUBSTITUTION BRACKET 2E05 RIGHT DOTTED SUBSTITUTION BRACKET 2E06 RAISED INTERPOLATION MARKER x (down tack - 22A4) 2E07 RAISED DOTTED INTERPOLATION MARKER 2E08 DOTTED TRANSPOSITION MARKER 2E09 LEFT TRANSPOSITION BRACKET 2E0A RIGHT TRANSPOSITION BRACKET 2E0B RAISED SQUARE * used as an opening raised omission bracket 2E0C LEFT RAISED OMISSION BRACKET * used as an opening or closing raised omission bracket 2E0D RIGHT RAISED OMISSION BRACKET * used as a closing or opening raised omission bracket @ Ancient Greek textual symbols 2E0E EDITORIAL CORONIS x (greek koronis - 1FBD) 2E0F PARAGRAPHOS 2E10 FORKED PARAGRAPHOS 2E11 REVERSED FORKED PARAGRAPHOS 2E12 HYPODIASTOLE = ypodiastoli 2E13 DOTTED OBELOS * glyph variants may look like '00F7' or '2238' x (commercial minus sign - 2052) 2E14 DOWNWARDS ANCORA * contrary to its formal name this symbol points upwards 2E15 UPWARDS ANCORA * contrary to its formal name this symbol points downwards 2E16 DOTTED RIGHT-POINTING ANGLE = diple periestigmene @ Ancient Near-Eastern linguistic symbol 2E17 DOUBLE OBLIQUE HYPHEN * used in ancient Near-Eastern linguistics * hyphen in Fraktur text uses 002D or 2010, but with a '2E17' glyph in Fraktur fonts x (hyphen-minus - 002D) x (equals sign - 003D) x (hyphen - 2010) x (double hyphen - 2E40) @ General punctuation 2E18 INVERTED INTERROBANG = gnaborretni x (interrobang - 203D) 2E19 PALM BRANCH * used as a separator @ Dictionary punctuation @+ These punctuation marks are used mostly in German dictionaries, to indicate umlaut or case changes with abbreviated stems. 2E1A HYPHEN WITH DIAERESIS * indicates umlaut of the stem vowel of a plural form 2E1B TILDE WITH RING ABOVE * indicates change in case for derived form @ Brackets 2E1C LEFT LOW PARAPHRASE BRACKET 2E1D RIGHT LOW PARAPHRASE BRACKET * used in N'Ko @ Dictionary punctuation 2E1E TILDE WITH DOT ABOVE * indicates derived form changes to uppercase 2E1F TILDE WITH DOT BELOW * indicates derived form changes to lowercase @ Brackets 2E20 LEFT VERTICAL BAR WITH QUILL 2E21 RIGHT VERTICAL BAR WITH QUILL @ Half brackets @+ These form a set of four corner brackets and are used editorially. They are distinguished from mathematical floor and ceiling characters. Occasionally quine corners are substituted for half brackets. 2E22 TOP LEFT HALF BRACKET x (left ceiling - 2308) x (top left corner - 231C) x (left corner bracket - 300C) 2E23 TOP RIGHT HALF BRACKET 2E24 BOTTOM LEFT HALF BRACKET 2E25 BOTTOM RIGHT HALF BRACKET @ Brackets 2E26 LEFT SIDEWAYS U BRACKET x (subset of - 2282) 2E27 RIGHT SIDEWAYS U BRACKET x (superset of - 2283) 2E28 LEFT DOUBLE PARENTHESIS x (left white parenthesis - 2985) x (fullwidth left white parenthesis - FF5F) 2E29 RIGHT DOUBLE PARENTHESIS @ Historic punctuation 2E2A TWO DOTS OVER ONE DOT PUNCTUATION 2E2B ONE DOT OVER TWO DOTS PUNCTUATION 2E2C SQUARED FOUR DOT PUNCTUATION 2E2D FIVE DOT MARK 2E2E REVERSED QUESTION MARK = punctus percontativus x (question mark - 003F) x (inverted question mark - 00BF) x (arabic question mark - 061F) 2E2F VERTICAL TILDE * used for Cyrillic yerik x (combining vertical tilde - 033E) x (cyrillic payerok - A67F) 2E30 RING POINT * used in Avestan x (ring operator - 2218) x (white bullet - 25E6) 2E31 WORD SEPARATOR MIDDLE DOT * used in Avestan, Samaritan, ... x (middle dot - 00B7) @ Palaeotype transliteration symbol 2E32 TURNED COMMA * indicates nasalization x (arabic comma - 060C) @ Historic punctuation 2E33 RAISED DOT * glyph position intermediate between 002E and 00B7 x (full stop - 002E) x (middle dot - 00B7) 2E34 RAISED COMMA x (comma - 002C) @ Palaeotype transliteration symbols 2E35 TURNED SEMICOLON * indicates sudden glottal closure x (arabic semicolon - 061B) 2E36 DAGGER WITH LEFT GUARD * indicates retracted pronunciation 2E37 DAGGER WITH RIGHT GUARD * indicates advanced pronunciation 2E38 TURNED DAGGER * indicates retroflex pronunciation x (dagger - 2020) 2E39 TOP HALF SECTION SIGN * indicates pronunciation on one side of the mouth only x (section sign - 00A7) @ Dashes 2E3A TWO-EM DASH = omission dash x (em dash - 2014) 2E3B THREE-EM DASH @ Alternate forms of punctuation 2E3C STENOGRAPHIC FULL STOP * used in shorthands and stenographies x (full stop - 002E) x (canadian syllabics full stop - 166E) 2E3D VERTICAL SIX DOTS x (vertical four dots - 205E) x (dotted fence - 2999) 2E3E WIGGLY VERTICAL LINE x (wavy line - 2307) x (vertical zigzag line - 299A) @ Historic punctuation 2E3F CAPITULUM * ancestor of the pilcrow sign x (pilcrow sign - 00B6) @ Double hyphen @+ The double hyphen is used in transcription of old German manuscripts, and occasionally as a non-standard punctuation mark. It is not intended for the representation of normal hyphens, whose doubled forms in Fraktur text are considered glyphic variants. 2E40 DOUBLE HYPHEN x (equals sign - 003D) x (hyphen - 2010) x (double oblique hyphen - 2E17) x (katakana-hiragana double hyphen - 30A0) x (modifier letter short equals sign - A78A) @ Reversed punctuation 2E41 REVERSED COMMA * also used in Sindhi x (comma - 002C) x (arabic comma - 060C) 2E42 DOUBLE LOW-REVERSED-9 QUOTATION MARK x (double low-9 quotation mark - 201E) @ Dash 2E43 DASH WITH LEFT UPTURN @ Miscellaneous punctuation 2E44 DOUBLE SUSPENSION MARK @@ 2E80 CJK Radicals Supplement 2EFF @ CJK radicals supplement 2E80 CJK RADICAL REPEAT 2E81 CJK RADICAL CLIFF x 5382 2E82 CJK RADICAL SECOND ONE x 4E5B 2E83 CJK RADICAL SECOND TWO x 4E5A 2E84 CJK RADICAL SECOND THREE x 4E59 2E85 CJK RADICAL PERSON * form used on left side x 4EBB 2E86 CJK RADICAL BOX x 5182 2E87 CJK RADICAL TABLE x 51E0 2E88 CJK RADICAL KNIFE ONE * form used at top x 5200 2E89 CJK RADICAL KNIFE TWO * form used on right side x 5202 2E8A CJK RADICAL DIVINATION * form used at top x 535C 2E8B CJK RADICAL SEAL * form used at bottom x 353E 2E8C CJK RADICAL SMALL ONE * form used at top x 5C0F 2E8D CJK RADICAL SMALL TWO * form used at top x 5C0F 2E8E CJK RADICAL LAME ONE x 5C22 2E8F CJK RADICAL LAME TWO x 5C23 2E90 CJK RADICAL LAME THREE x 5C22 2E91 CJK RADICAL LAME FOUR x 5C23 2E92 CJK RADICAL SNAKE x 5DF3 2E93 CJK RADICAL THREAD x 5E7A 2E94 CJK RADICAL SNOUT ONE x 5F51 2E95 CJK RADICAL SNOUT TWO x 5F50 2E96 CJK RADICAL HEART ONE * form used on left side x 5FC4 2E97 CJK RADICAL HEART TWO * form used at bottom x 5FC3 2E98 CJK RADICAL HAND * form used on left side x 624C 2E99 CJK RADICAL RAP * form used on right side x 6535 2E9B CJK RADICAL CHOKE x 65E1 2E9C CJK RADICAL SUN x 65E5 2E9D CJK RADICAL MOON x 6708 2E9E CJK RADICAL DEATH x 6B7A 2E9F CJK RADICAL MOTHER # 6BCD 2EA0 CJK RADICAL CIVILIAN x 6C11 2EA1 CJK RADICAL WATER ONE * form used on left side x 6C35 2EA2 CJK RADICAL WATER TWO * form used (rarely) at bottom x 6C3A 2EA3 CJK RADICAL FIRE * form used at bottom x 706C 2EA4 CJK RADICAL PAW ONE * form used at top x 722B 2EA5 CJK RADICAL PAW TWO * form used at top x 722B 2EA6 CJK RADICAL SIMPLIFIED HALF TREE TRUNK x 4E2C 2EA7 CJK RADICAL COW x 725B 2EA8 CJK RADICAL DOG * form used on left side x 72AD 2EA9 CJK RADICAL JADE * form used on left side x 738B 2EAA CJK RADICAL BOLT OF CLOTH * form used on left side x 758B 2EAB CJK RADICAL EYE * form used at top x (cjk radical net two - 2EB2) x 76EE 2EAC CJK RADICAL SPIRIT ONE x 793A 2EAD CJK RADICAL SPIRIT TWO x 793B 2EAE CJK RADICAL BAMBOO x 7AF9 2EAF CJK RADICAL SILK * form used on left side x 7CF9 2EB0 CJK RADICAL C-SIMPLIFIED SILK * form used on left side x 7E9F 2EB1 CJK RADICAL NET ONE x 7F53 2EB2 CJK RADICAL NET TWO x (cjk radical eye - 2EAB) x 7F52 2EB3 CJK RADICAL NET THREE x 7F51 2EB4 CJK RADICAL NET FOUR x 7F51 2EB5 CJK RADICAL MESH x 2626B 2EB6 CJK RADICAL SHEEP * form used on left side x 7F8A 2EB7 CJK RADICAL RAM * form used at top x 7F8A 2EB8 CJK RADICAL EWE x 7F8B 2EB9 CJK RADICAL OLD x 8002 2EBA CJK RADICAL BRUSH ONE x 8080 2EBB CJK RADICAL BRUSH TWO x 807F 2EBC CJK RADICAL MEAT x 8089 2EBD CJK RADICAL MORTAR x 81FC 2EBE CJK RADICAL GRASS ONE x 8279 2EBF CJK RADICAL GRASS TWO x 8279 2EC0 CJK RADICAL GRASS THREE x 8279 2EC1 CJK RADICAL TIGER x 864E 2EC2 CJK RADICAL CLOTHES * form used on left side x 8864 2EC3 CJK RADICAL WEST ONE * form used at top x 8980 2EC4 CJK RADICAL WEST TWO * form used on left side x 897F 2EC5 CJK RADICAL C-SIMPLIFIED SEE x 89C1 2EC6 CJK RADICAL SIMPLIFIED HORN x 89D2 2EC7 CJK RADICAL HORN x 278B2 2EC8 CJK RADICAL C-SIMPLIFIED SPEECH x 8BA0 2EC9 CJK RADICAL C-SIMPLIFIED SHELL x 8D1D 2ECA CJK RADICAL FOOT * form used on left side x 8DB3 2ECB CJK RADICAL C-SIMPLIFIED CART x 8F66 2ECC CJK RADICAL SIMPLIFIED WALK x 8FB6 2ECD CJK RADICAL WALK ONE x 8FB6 2ECE CJK RADICAL WALK TWO x 8FB6 2ECF CJK RADICAL CITY * form used on right side x 9091 2ED0 CJK RADICAL C-SIMPLIFIED GOLD x 9485 2ED1 CJK RADICAL LONG ONE x 9577 2ED2 CJK RADICAL LONG TWO * form used on left side x 9578 2ED3 CJK RADICAL C-SIMPLIFIED LONG x 957F 2ED4 CJK RADICAL C-SIMPLIFIED GATE x 95E8 2ED5 CJK RADICAL MOUND ONE x 961C x 28E0F 2ED6 CJK RADICAL MOUND TWO * form used on left side x 961D 2ED7 CJK RADICAL RAIN x 96E8 2ED8 CJK RADICAL BLUE x 9752 2ED9 CJK RADICAL C-SIMPLIFIED TANNED LEATHER x 97E6 2EDA CJK RADICAL C-SIMPLIFIED LEAF x 9875 2EDB CJK RADICAL C-SIMPLIFIED WIND x 98CE 2EDC CJK RADICAL C-SIMPLIFIED FLY x 98DE 2EDD CJK RADICAL EAT ONE * form used at bottom x 98DF 2EDE CJK RADICAL EAT TWO * form used on left side x 2967F 2EDF CJK RADICAL EAT THREE * form used on left side x 98E0 2EE0 CJK RADICAL C-SIMPLIFIED EAT * form used on left side x 9963 2EE1 CJK RADICAL HEAD x 29810 2EE2 CJK RADICAL C-SIMPLIFIED HORSE x 9A6C 2EE3 CJK RADICAL BONE x 9AA8 2EE4 CJK RADICAL GHOST x 9B3C 2EE5 CJK RADICAL C-SIMPLIFIED FISH x 9C7C 2EE6 CJK RADICAL C-SIMPLIFIED BIRD x 9E1F 2EE7 CJK RADICAL C-SIMPLIFIED SALT x 5364 2EE8 CJK RADICAL SIMPLIFIED WHEAT x 9EA6 2EE9 CJK RADICAL SIMPLIFIED YELLOW x 9EC4 2EEA CJK RADICAL C-SIMPLIFIED FROG x 9EFE 2EEB CJK RADICAL J-SIMPLIFIED EVEN x 6589 2EEC CJK RADICAL C-SIMPLIFIED EVEN x 9F50 2EED CJK RADICAL J-SIMPLIFIED TOOTH x 6B6F 2EEE CJK RADICAL C-SIMPLIFIED TOOTH x 9F7F 2EEF CJK RADICAL J-SIMPLIFIED DRAGON x 9F8D 2EF0 CJK RADICAL C-SIMPLIFIED DRAGON x 9F99 2EF1 CJK RADICAL TURTLE x 9F9C 2EF2 CJK RADICAL J-SIMPLIFIED TURTLE x 4E80 2EF3 CJK RADICAL C-SIMPLIFIED TURTLE # 9F9F @@ 2F00 Kangxi Radicals 2FDF @ Kangxi radicals 2F00 KANGXI RADICAL ONE # 4E00 2F01 KANGXI RADICAL LINE # 4E28 2F02 KANGXI RADICAL DOT # 4E36 2F03 KANGXI RADICAL SLASH # 4E3F 2F04 KANGXI RADICAL SECOND # 4E59 2F05 KANGXI RADICAL HOOK # 4E85 2F06 KANGXI RADICAL TWO # 4E8C 2F07 KANGXI RADICAL LID # 4EA0 2F08 KANGXI RADICAL MAN # 4EBA 2F09 KANGXI RADICAL LEGS # 513F 2F0A KANGXI RADICAL ENTER # 5165 2F0B KANGXI RADICAL EIGHT # 516B 2F0C KANGXI RADICAL DOWN BOX # 5182 2F0D KANGXI RADICAL COVER # 5196 2F0E KANGXI RADICAL ICE # 51AB 2F0F KANGXI RADICAL TABLE # 51E0 2F10 KANGXI RADICAL OPEN BOX # 51F5 2F11 KANGXI RADICAL KNIFE # 5200 2F12 KANGXI RADICAL POWER # 529B 2F13 KANGXI RADICAL WRAP # 52F9 2F14 KANGXI RADICAL SPOON # 5315 2F15 KANGXI RADICAL RIGHT OPEN BOX # 531A 2F16 KANGXI RADICAL HIDING ENCLOSURE # 5338 2F17 KANGXI RADICAL TEN # 5341 2F18 KANGXI RADICAL DIVINATION # 535C 2F19 KANGXI RADICAL SEAL # 5369 2F1A KANGXI RADICAL CLIFF # 5382 2F1B KANGXI RADICAL PRIVATE # 53B6 2F1C KANGXI RADICAL AGAIN # 53C8 2F1D KANGXI RADICAL MOUTH # 53E3 2F1E KANGXI RADICAL ENCLOSURE # 56D7 2F1F KANGXI RADICAL EARTH # 571F 2F20 KANGXI RADICAL SCHOLAR # 58EB 2F21 KANGXI RADICAL GO # 5902 2F22 KANGXI RADICAL GO SLOWLY # 590A 2F23 KANGXI RADICAL EVENING # 5915 2F24 KANGXI RADICAL BIG # 5927 2F25 KANGXI RADICAL WOMAN # 5973 2F26 KANGXI RADICAL CHILD # 5B50 2F27 KANGXI RADICAL ROOF # 5B80 2F28 KANGXI RADICAL INCH # 5BF8 2F29 KANGXI RADICAL SMALL # 5C0F 2F2A KANGXI RADICAL LAME # 5C22 2F2B KANGXI RADICAL CORPSE # 5C38 2F2C KANGXI RADICAL SPROUT # 5C6E 2F2D KANGXI RADICAL MOUNTAIN # 5C71 2F2E KANGXI RADICAL RIVER # 5DDB 2F2F KANGXI RADICAL WORK # 5DE5 2F30 KANGXI RADICAL ONESELF # 5DF1 2F31 KANGXI RADICAL TURBAN # 5DFE 2F32 KANGXI RADICAL DRY # 5E72 2F33 KANGXI RADICAL SHORT THREAD # 5E7A 2F34 KANGXI RADICAL DOTTED CLIFF # 5E7F 2F35 KANGXI RADICAL LONG STRIDE # 5EF4 2F36 KANGXI RADICAL TWO HANDS # 5EFE 2F37 KANGXI RADICAL SHOOT # 5F0B 2F38 KANGXI RADICAL BOW # 5F13 2F39 KANGXI RADICAL SNOUT # 5F50 2F3A KANGXI RADICAL BRISTLE # 5F61 2F3B KANGXI RADICAL STEP # 5F73 2F3C KANGXI RADICAL HEART # 5FC3 2F3D KANGXI RADICAL HALBERD # 6208 2F3E KANGXI RADICAL DOOR # 6236 2F3F KANGXI RADICAL HAND # 624B 2F40 KANGXI RADICAL BRANCH # 652F 2F41 KANGXI RADICAL RAP # 6534 2F42 KANGXI RADICAL SCRIPT # 6587 2F43 KANGXI RADICAL DIPPER # 6597 2F44 KANGXI RADICAL AXE # 65A4 2F45 KANGXI RADICAL SQUARE # 65B9 2F46 KANGXI RADICAL NOT # 65E0 2F47 KANGXI RADICAL SUN # 65E5 2F48 KANGXI RADICAL SAY # 66F0 2F49 KANGXI RADICAL MOON # 6708 2F4A KANGXI RADICAL TREE # 6728 2F4B KANGXI RADICAL LACK # 6B20 2F4C KANGXI RADICAL STOP # 6B62 2F4D KANGXI RADICAL DEATH # 6B79 2F4E KANGXI RADICAL WEAPON # 6BB3 2F4F KANGXI RADICAL DO NOT # 6BCB 2F50 KANGXI RADICAL COMPARE # 6BD4 2F51 KANGXI RADICAL FUR # 6BDB 2F52 KANGXI RADICAL CLAN # 6C0F 2F53 KANGXI RADICAL STEAM # 6C14 2F54 KANGXI RADICAL WATER # 6C34 2F55 KANGXI RADICAL FIRE # 706B 2F56 KANGXI RADICAL CLAW # 722A 2F57 KANGXI RADICAL FATHER # 7236 2F58 KANGXI RADICAL DOUBLE X # 723B 2F59 KANGXI RADICAL HALF TREE TRUNK # 723F 2F5A KANGXI RADICAL SLICE # 7247 2F5B KANGXI RADICAL FANG # 7259 2F5C KANGXI RADICAL COW # 725B 2F5D KANGXI RADICAL DOG # 72AC 2F5E KANGXI RADICAL PROFOUND # 7384 2F5F KANGXI RADICAL JADE # 7389 2F60 KANGXI RADICAL MELON # 74DC 2F61 KANGXI RADICAL TILE # 74E6 2F62 KANGXI RADICAL SWEET # 7518 2F63 KANGXI RADICAL LIFE # 751F 2F64 KANGXI RADICAL USE # 7528 2F65 KANGXI RADICAL FIELD # 7530 2F66 KANGXI RADICAL BOLT OF CLOTH # 758B 2F67 KANGXI RADICAL SICKNESS # 7592 2F68 KANGXI RADICAL DOTTED TENT # 7676 2F69 KANGXI RADICAL WHITE # 767D 2F6A KANGXI RADICAL SKIN # 76AE 2F6B KANGXI RADICAL DISH # 76BF 2F6C KANGXI RADICAL EYE # 76EE 2F6D KANGXI RADICAL SPEAR # 77DB 2F6E KANGXI RADICAL ARROW # 77E2 2F6F KANGXI RADICAL STONE # 77F3 2F70 KANGXI RADICAL SPIRIT # 793A 2F71 KANGXI RADICAL TRACK # 79B8 2F72 KANGXI RADICAL GRAIN # 79BE 2F73 KANGXI RADICAL CAVE # 7A74 2F74 KANGXI RADICAL STAND # 7ACB 2F75 KANGXI RADICAL BAMBOO # 7AF9 2F76 KANGXI RADICAL RICE # 7C73 2F77 KANGXI RADICAL SILK # 7CF8 2F78 KANGXI RADICAL JAR # 7F36 2F79 KANGXI RADICAL NET # 7F51 2F7A KANGXI RADICAL SHEEP # 7F8A 2F7B KANGXI RADICAL FEATHER # 7FBD 2F7C KANGXI RADICAL OLD # 8001 2F7D KANGXI RADICAL AND # 800C 2F7E KANGXI RADICAL PLOW # 8012 2F7F KANGXI RADICAL EAR # 8033 2F80 KANGXI RADICAL BRUSH # 807F 2F81 KANGXI RADICAL MEAT # 8089 2F82 KANGXI RADICAL MINISTER # 81E3 2F83 KANGXI RADICAL SELF # 81EA 2F84 KANGXI RADICAL ARRIVE # 81F3 2F85 KANGXI RADICAL MORTAR # 81FC 2F86 KANGXI RADICAL TONGUE # 820C 2F87 KANGXI RADICAL OPPOSE # 821B 2F88 KANGXI RADICAL BOAT # 821F 2F89 KANGXI RADICAL STOPPING # 826E 2F8A KANGXI RADICAL COLOR # 8272 2F8B KANGXI RADICAL GRASS # 8278 2F8C KANGXI RADICAL TIGER # 864D 2F8D KANGXI RADICAL INSECT # 866B 2F8E KANGXI RADICAL BLOOD # 8840 2F8F KANGXI RADICAL WALK ENCLOSURE # 884C 2F90 KANGXI RADICAL CLOTHES # 8863 2F91 KANGXI RADICAL WEST # 897E 2F92 KANGXI RADICAL SEE # 898B 2F93 KANGXI RADICAL HORN # 89D2 2F94 KANGXI RADICAL SPEECH # 8A00 2F95 KANGXI RADICAL VALLEY # 8C37 2F96 KANGXI RADICAL BEAN # 8C46 2F97 KANGXI RADICAL PIG # 8C55 2F98 KANGXI RADICAL BADGER # 8C78 2F99 KANGXI RADICAL SHELL # 8C9D 2F9A KANGXI RADICAL RED # 8D64 2F9B KANGXI RADICAL RUN # 8D70 2F9C KANGXI RADICAL FOOT # 8DB3 2F9D KANGXI RADICAL BODY # 8EAB 2F9E KANGXI RADICAL CART # 8ECA 2F9F KANGXI RADICAL BITTER # 8F9B 2FA0 KANGXI RADICAL MORNING # 8FB0 2FA1 KANGXI RADICAL WALK # 8FB5 2FA2 KANGXI RADICAL CITY # 9091 2FA3 KANGXI RADICAL WINE # 9149 2FA4 KANGXI RADICAL DISTINGUISH # 91C6 2FA5 KANGXI RADICAL VILLAGE # 91CC 2FA6 KANGXI RADICAL GOLD # 91D1 2FA7 KANGXI RADICAL LONG # 9577 2FA8 KANGXI RADICAL GATE # 9580 2FA9 KANGXI RADICAL MOUND # 961C 2FAA KANGXI RADICAL SLAVE # 96B6 2FAB KANGXI RADICAL SHORT TAILED BIRD # 96B9 2FAC KANGXI RADICAL RAIN # 96E8 2FAD KANGXI RADICAL BLUE # 9751 2FAE KANGXI RADICAL WRONG # 975E 2FAF KANGXI RADICAL FACE # 9762 2FB0 KANGXI RADICAL LEATHER # 9769 2FB1 KANGXI RADICAL TANNED LEATHER # 97CB 2FB2 KANGXI RADICAL LEEK # 97ED 2FB3 KANGXI RADICAL SOUND # 97F3 2FB4 KANGXI RADICAL LEAF # 9801 2FB5 KANGXI RADICAL WIND # 98A8 2FB6 KANGXI RADICAL FLY # 98DB 2FB7 KANGXI RADICAL EAT # 98DF 2FB8 KANGXI RADICAL HEAD # 9996 2FB9 KANGXI RADICAL FRAGRANT # 9999 2FBA KANGXI RADICAL HORSE # 99AC 2FBB KANGXI RADICAL BONE # 9AA8 2FBC KANGXI RADICAL TALL # 9AD8 2FBD KANGXI RADICAL HAIR # 9ADF 2FBE KANGXI RADICAL FIGHT # 9B25 2FBF KANGXI RADICAL SACRIFICIAL WINE # 9B2F 2FC0 KANGXI RADICAL CAULDRON # 9B32 2FC1 KANGXI RADICAL GHOST # 9B3C 2FC2 KANGXI RADICAL FISH # 9B5A 2FC3 KANGXI RADICAL BIRD # 9CE5 2FC4 KANGXI RADICAL SALT # 9E75 2FC5 KANGXI RADICAL DEER # 9E7F 2FC6 KANGXI RADICAL WHEAT # 9EA5 2FC7 KANGXI RADICAL HEMP # 9EBB 2FC8 KANGXI RADICAL YELLOW # 9EC3 2FC9 KANGXI RADICAL MILLET # 9ECD 2FCA KANGXI RADICAL BLACK # 9ED1 2FCB KANGXI RADICAL EMBROIDERY # 9EF9 2FCC KANGXI RADICAL FROG # 9EFD 2FCD KANGXI RADICAL TRIPOD # 9F0E 2FCE KANGXI RADICAL DRUM # 9F13 2FCF KANGXI RADICAL RAT # 9F20 2FD0 KANGXI RADICAL NOSE # 9F3B 2FD1 KANGXI RADICAL EVEN # 9F4A 2FD2 KANGXI RADICAL TOOTH # 9F52 2FD3 KANGXI RADICAL DRAGON # 9F8D 2FD4 KANGXI RADICAL TURTLE # 9F9C 2FD5 KANGXI RADICAL FLUTE # 9FA0 @@ 2FF0 Ideographic Description Characters 2FFF @ Ideographic description characters @+ These are visibly displayed graphic characters, not invisible composition controls. 2FF0 IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT 2FF1 IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW 2FF2 IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT 2FF3 IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW 2FF4 IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND 2FF5 IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE 2FF6 IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW 2FF7 IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT 2FF8 IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT 2FF9 IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT 2FFA IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT 2FFB IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID @@ 3000 CJK Symbols and Punctuation 303F @@+ @ CJK symbols and punctuation 3000 IDEOGRAPHIC SPACE x (space - 0020) # 0020 3001 IDEOGRAPHIC COMMA * in Chinese, delimits items in a list or series x (comma - 002C) x (fullwidth comma - FF0C) 3002 IDEOGRAPHIC FULL STOP x (full stop - 002E) 3003 DITTO MARK x (double prime - 2033) 3004 JAPANESE INDUSTRIAL STANDARD SYMBOL 3005 IDEOGRAPHIC ITERATION MARK x (tangut iteration mark - 16FE0) 3006 IDEOGRAPHIC CLOSING MARK 3007 IDEOGRAPHIC NUMBER ZERO x (combining enclosing circle - 20DD) x (white circle - 25CB) x (large circle - 25EF) @ CJK angle brackets 3008 LEFT ANGLE BRACKET x (less-than sign - 003C) x (single left-pointing angle quotation mark - 2039) x (left-pointing angle bracket - 2329) x (mathematical left angle bracket - 27E8) 3009 RIGHT ANGLE BRACKET x (greater-than sign - 003E) x (single right-pointing angle quotation mark - 203A) x (right-pointing angle bracket - 232A) x (mathematical right angle bracket - 27E9) 300A LEFT DOUBLE ANGLE BRACKET x (left-pointing double angle quotation mark - 00AB) x (mathematical left double angle bracket - 27EA) 300B RIGHT DOUBLE ANGLE BRACKET x (right-pointing double angle quotation mark - 00BB) x (mathematical right double angle bracket - 27EB) @ CJK corner brackets @+ The CJK corner brackets, which function as quotation marks, are not recommended for general-purpose corner brackets. See the ceiling and floor characters, instead. 300C LEFT CORNER BRACKET x (left ceiling - 2308) 300D RIGHT CORNER BRACKET * used as quotation marks x (right floor - 230B) 300E LEFT WHITE CORNER BRACKET 300F RIGHT WHITE CORNER BRACKET * used as quotation marks @ CJK brackets 3010 LEFT BLACK LENTICULAR BRACKET 3011 RIGHT BLACK LENTICULAR BRACKET @ CJK symbols 3012 POSTAL MARK x (japanese post office - 1F3E3) 3013 GETA MARK * substitute for ideograph not in font * editorial convention to represent ideographic lacuna x (white square - 25A1) @ CJK brackets 3014 LEFT TORTOISE SHELL BRACKET 3015 RIGHT TORTOISE SHELL BRACKET 3016 LEFT WHITE LENTICULAR BRACKET 3017 RIGHT WHITE LENTICULAR BRACKET 3018 LEFT WHITE TORTOISE SHELL BRACKET x (mathematical left white tortoise shell bracket - 27EC) 3019 RIGHT WHITE TORTOISE SHELL BRACKET x (mathematical right white tortoise shell bracket - 27ED) 301A LEFT WHITE SQUARE BRACKET = left abstract syntax bracket x (mathematical left white square bracket - 27E6) 301B RIGHT WHITE SQUARE BRACKET = right abstract syntax bracket x (mathematical right white square bracket - 27E7) @ CJK symbols and punctuation 301C WAVE DASH @+ This character was encoded to match JIS C 6226-1978 1-33 "wave dash". x (swung dash - 2053) x (wavy dash - 3030) x (fullwidth tilde - FF5E) 301D REVERSED DOUBLE PRIME QUOTATION MARK * sometimes depicted as double prime quotation mark x (left double quotation mark - 201C) x (reversed double prime - 2036) 301E DOUBLE PRIME QUOTATION MARK * this is a mistaken analogue to 201D; 301F is preferred x (right double quotation mark - 201D) x (double prime - 2033) 301F LOW DOUBLE PRIME QUOTATION MARK * may be depicted as low inverse double prime quotation mark 3020 POSTAL MARK FACE @ Suzhou numerals @+ The Suzhou numerals (Chinese su1zhou1ma3zi) are special numeric forms used by traders to display the prices of goods. The use of "HANGZHOU" in the names is a misnomer. 3021 HANGZHOU NUMERAL ONE 3022 HANGZHOU NUMERAL TWO 3023 HANGZHOU NUMERAL THREE 3024 HANGZHOU NUMERAL FOUR 3025 HANGZHOU NUMERAL FIVE 3026 HANGZHOU NUMERAL SIX 3027 HANGZHOU NUMERAL SEVEN 3028 HANGZHOU NUMERAL EIGHT 3029 HANGZHOU NUMERAL NINE @ Diacritics 302A IDEOGRAPHIC LEVEL TONE MARK 302B IDEOGRAPHIC RISING TONE MARK 302C IDEOGRAPHIC DEPARTING TONE MARK 302D IDEOGRAPHIC ENTERING TONE MARK 302E HANGUL SINGLE DOT TONE MARK = single dot Bangjeom 302F HANGUL DOUBLE DOT TONE MARK = double dot Bangjeom @ Other CJK symbols 3030 WAVY DASH x (wavy line - 2307) x (wave dash - 301C) ~ 3030 FE0E text style ~ 3030 FE0F emoji style 3031 VERTICAL KANA REPEAT MARK 3032 VERTICAL KANA REPEAT WITH VOICED SOUND MARK * the preceding two semantic characters are preferred to the following three glyphic forms 3033 VERTICAL KANA REPEAT MARK UPPER HALF 3034 VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF * the preceding two are glyphs used in conjunction with the following glyph 3035 VERTICAL KANA REPEAT MARK LOWER HALF 3036 CIRCLED POSTAL MARK # 3012 postal mark 3037 IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL @ Additional Suzhou numerals 3038 HANGZHOU NUMERAL TEN # 5341 3039 HANGZHOU NUMERAL TWENTY # 5344 303A HANGZHOU NUMERAL THIRTY # 5345 @ Other CJK punctuation 303B VERTICAL IDEOGRAPHIC ITERATION MARK 303C MASU MARK * informal abbreviation for Japanese -masu ending x (squared rising diagonal slash - 29C4) 303D PART ALTERNATION MARK * marks the start of a song part in Japanese ~ 303D FE0E text style ~ 303D FE0F emoji style @ Special CJK indicators @+ These are visibly displayed graphic characters, not invisible format control characters. 303E IDEOGRAPHIC VARIATION INDICATOR * visual indicator that the following ideograph is to be taken as a variant of the intended character 303F IDEOGRAPHIC HALF FILL SPACE * visual indicator of a screen space for half of an ideograph @~ ! @@ 3040 Hiragana 309F @ Hiragana letters 3041 HIRAGANA LETTER SMALL A 3042 HIRAGANA LETTER A 3043 HIRAGANA LETTER SMALL I 3044 HIRAGANA LETTER I 3045 HIRAGANA LETTER SMALL U 3046 HIRAGANA LETTER U 3047 HIRAGANA LETTER SMALL E 3048 HIRAGANA LETTER E 3049 HIRAGANA LETTER SMALL O 304A HIRAGANA LETTER O 304B HIRAGANA LETTER KA 304C HIRAGANA LETTER GA : 304B 3099 304D HIRAGANA LETTER KI 304E HIRAGANA LETTER GI : 304D 3099 304F HIRAGANA LETTER KU 3050 HIRAGANA LETTER GU : 304F 3099 3051 HIRAGANA LETTER KE 3052 HIRAGANA LETTER GE : 3051 3099 3053 HIRAGANA LETTER KO 3054 HIRAGANA LETTER GO : 3053 3099 3055 HIRAGANA LETTER SA 3056 HIRAGANA LETTER ZA : 3055 3099 3057 HIRAGANA LETTER SI = SHI 3058 HIRAGANA LETTER ZI = JI (not unique) : 3057 3099 3059 HIRAGANA LETTER SU 305A HIRAGANA LETTER ZU : 3059 3099 305B HIRAGANA LETTER SE 305C HIRAGANA LETTER ZE : 305B 3099 305D HIRAGANA LETTER SO 305E HIRAGANA LETTER ZO : 305D 3099 305F HIRAGANA LETTER TA 3060 HIRAGANA LETTER DA : 305F 3099 3061 HIRAGANA LETTER TI = CHI 3062 HIRAGANA LETTER DI = JI (not unique) : 3061 3099 3063 HIRAGANA LETTER SMALL TU = SMALL TSU 3064 HIRAGANA LETTER TU = TSU 3065 HIRAGANA LETTER DU = ZU (not unique) : 3064 3099 3066 HIRAGANA LETTER TE 3067 HIRAGANA LETTER DE : 3066 3099 3068 HIRAGANA LETTER TO 3069 HIRAGANA LETTER DO : 3068 3099 306A HIRAGANA LETTER NA 306B HIRAGANA LETTER NI 306C HIRAGANA LETTER NU 306D HIRAGANA LETTER NE 306E HIRAGANA LETTER NO 306F HIRAGANA LETTER HA 3070 HIRAGANA LETTER BA : 306F 3099 3071 HIRAGANA LETTER PA : 306F 309A 3072 HIRAGANA LETTER HI 3073 HIRAGANA LETTER BI : 3072 3099 3074 HIRAGANA LETTER PI : 3072 309A 3075 HIRAGANA LETTER HU = FU 3076 HIRAGANA LETTER BU : 3075 3099 3077 HIRAGANA LETTER PU : 3075 309A 3078 HIRAGANA LETTER HE 3079 HIRAGANA LETTER BE : 3078 3099 307A HIRAGANA LETTER PE : 3078 309A 307B HIRAGANA LETTER HO 307C HIRAGANA LETTER BO : 307B 3099 307D HIRAGANA LETTER PO : 307B 309A 307E HIRAGANA LETTER MA 307F HIRAGANA LETTER MI 3080 HIRAGANA LETTER MU 3081 HIRAGANA LETTER ME 3082 HIRAGANA LETTER MO 3083 HIRAGANA LETTER SMALL YA 3084 HIRAGANA LETTER YA 3085 HIRAGANA LETTER SMALL YU 3086 HIRAGANA LETTER YU 3087 HIRAGANA LETTER SMALL YO 3088 HIRAGANA LETTER YO 3089 HIRAGANA LETTER RA 308A HIRAGANA LETTER RI 308B HIRAGANA LETTER RU 308C HIRAGANA LETTER RE 308D HIRAGANA LETTER RO 308E HIRAGANA LETTER SMALL WA 308F HIRAGANA LETTER WA 3090 HIRAGANA LETTER WI 3091 HIRAGANA LETTER WE 3092 HIRAGANA LETTER WO 3093 HIRAGANA LETTER N 3094 HIRAGANA LETTER VU : 3046 3099 @ Small letters 3095 HIRAGANA LETTER SMALL KA 3096 HIRAGANA LETTER SMALL KE @ Voicing marks 3099 COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK 309A COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK 309B KATAKANA-HIRAGANA VOICED SOUND MARK # 0020 3099 309C KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK # 0020 309A @ Iteration marks 309D HIRAGANA ITERATION MARK 309E HIRAGANA VOICED ITERATION MARK : 309D 3099 @ Hiragana digraph 309F HIRAGANA DIGRAPH YORI * historically used in vertical contexts, but now found also in horizontal layout # 3088 308A @@ 30A0 Katakana 30FF @ Katakana punctuation 30A0 KATAKANA-HIRAGANA DOUBLE HYPHEN x (equals sign - 003D) x (double hyphen - 2E40) @ Katakana letters 30A1 KATAKANA LETTER SMALL A 30A2 KATAKANA LETTER A 30A3 KATAKANA LETTER SMALL I 30A4 KATAKANA LETTER I 30A5 KATAKANA LETTER SMALL U 30A6 KATAKANA LETTER U 30A7 KATAKANA LETTER SMALL E 30A8 KATAKANA LETTER E 30A9 KATAKANA LETTER SMALL O 30AA KATAKANA LETTER O 30AB KATAKANA LETTER KA 30AC KATAKANA LETTER GA : 30AB 3099 30AD KATAKANA LETTER KI 30AE KATAKANA LETTER GI : 30AD 3099 30AF KATAKANA LETTER KU 30B0 KATAKANA LETTER GU : 30AF 3099 30B1 KATAKANA LETTER KE 30B2 KATAKANA LETTER GE : 30B1 3099 30B3 KATAKANA LETTER KO 30B4 KATAKANA LETTER GO : 30B3 3099 30B5 KATAKANA LETTER SA 30B6 KATAKANA LETTER ZA : 30B5 3099 30B7 KATAKANA LETTER SI = SHI 30B8 KATAKANA LETTER ZI = JI (not unique) : 30B7 3099 30B9 KATAKANA LETTER SU 30BA KATAKANA LETTER ZU : 30B9 3099 30BB KATAKANA LETTER SE 30BC KATAKANA LETTER ZE : 30BB 3099 30BD KATAKANA LETTER SO 30BE KATAKANA LETTER ZO : 30BD 3099 30BF KATAKANA LETTER TA 30C0 KATAKANA LETTER DA : 30BF 3099 30C1 KATAKANA LETTER TI = CHI 30C2 KATAKANA LETTER DI = JI (not unique) : 30C1 3099 30C3 KATAKANA LETTER SMALL TU = SMALL TSU 30C4 KATAKANA LETTER TU = TSU 30C5 KATAKANA LETTER DU = ZU (not unique) : 30C4 3099 30C6 KATAKANA LETTER TE 30C7 KATAKANA LETTER DE : 30C6 3099 30C8 KATAKANA LETTER TO 30C9 KATAKANA LETTER DO : 30C8 3099 30CA KATAKANA LETTER NA 30CB KATAKANA LETTER NI 30CC KATAKANA LETTER NU 30CD KATAKANA LETTER NE 30CE KATAKANA LETTER NO 30CF KATAKANA LETTER HA 30D0 KATAKANA LETTER BA : 30CF 3099 30D1 KATAKANA LETTER PA : 30CF 309A 30D2 KATAKANA LETTER HI 30D3 KATAKANA LETTER BI : 30D2 3099 30D4 KATAKANA LETTER PI : 30D2 309A 30D5 KATAKANA LETTER HU = FU 30D6 KATAKANA LETTER BU : 30D5 3099 30D7 KATAKANA LETTER PU : 30D5 309A 30D8 KATAKANA LETTER HE 30D9 KATAKANA LETTER BE : 30D8 3099 30DA KATAKANA LETTER PE : 30D8 309A 30DB KATAKANA LETTER HO 30DC KATAKANA LETTER BO : 30DB 3099 30DD KATAKANA LETTER PO : 30DB 309A 30DE KATAKANA LETTER MA 30DF KATAKANA LETTER MI 30E0 KATAKANA LETTER MU 30E1 KATAKANA LETTER ME 30E2 KATAKANA LETTER MO 30E3 KATAKANA LETTER SMALL YA 30E4 KATAKANA LETTER YA 30E5 KATAKANA LETTER SMALL YU 30E6 KATAKANA LETTER YU 30E7 KATAKANA LETTER SMALL YO 30E8 KATAKANA LETTER YO 30E9 KATAKANA LETTER RA 30EA KATAKANA LETTER RI 30EB KATAKANA LETTER RU 30EC KATAKANA LETTER RE 30ED KATAKANA LETTER RO 30EE KATAKANA LETTER SMALL WA 30EF KATAKANA LETTER WA 30F0 KATAKANA LETTER WI 30F1 KATAKANA LETTER WE 30F2 KATAKANA LETTER WO 30F3 KATAKANA LETTER N 30F4 KATAKANA LETTER VU : 30A6 3099 30F5 KATAKANA LETTER SMALL KA 30F6 KATAKANA LETTER SMALL KE 30F7 KATAKANA LETTER VA : 30EF 3099 30F8 KATAKANA LETTER VI : 30F0 3099 30F9 KATAKANA LETTER VE : 30F1 3099 30FA KATAKANA LETTER VO : 30F2 3099 @ Conjunction and length marks 30FB KATAKANA MIDDLE DOT x (middle dot - 00B7) 30FC KATAKANA-HIRAGANA PROLONGED SOUND MARK x (em dash - 2014) @ Iteration marks 30FD KATAKANA ITERATION MARK 30FE KATAKANA VOICED ITERATION MARK : 30FD 3099 @ Katakana digraph 30FF KATAKANA DIGRAPH KOTO * historically used in vertical contexts, but now found also in horizontal layout # 30B3 30C8 @@ 3100 Bopomofo 312F @+ See also the Bopomofo Extended block @ Based on GB 2312 3105 BOPOMOFO LETTER B 3106 BOPOMOFO LETTER P 3107 BOPOMOFO LETTER M 3108 BOPOMOFO LETTER F 3109 BOPOMOFO LETTER D 310A BOPOMOFO LETTER T 310B BOPOMOFO LETTER N 310C BOPOMOFO LETTER L 310D BOPOMOFO LETTER G 310E BOPOMOFO LETTER K 310F BOPOMOFO LETTER H 3110 BOPOMOFO LETTER J 3111 BOPOMOFO LETTER Q 3112 BOPOMOFO LETTER X 3113 BOPOMOFO LETTER ZH 3114 BOPOMOFO LETTER CH 3115 BOPOMOFO LETTER SH 3116 BOPOMOFO LETTER R 3117 BOPOMOFO LETTER Z 3118 BOPOMOFO LETTER C 3119 BOPOMOFO LETTER S 311A BOPOMOFO LETTER A 311B BOPOMOFO LETTER O 311C BOPOMOFO LETTER E 311D BOPOMOFO LETTER EH 311E BOPOMOFO LETTER AI 311F BOPOMOFO LETTER EI 3120 BOPOMOFO LETTER AU 3121 BOPOMOFO LETTER OU 3122 BOPOMOFO LETTER AN 3123 BOPOMOFO LETTER EN 3124 BOPOMOFO LETTER ANG 3125 BOPOMOFO LETTER ENG 3126 BOPOMOFO LETTER ER 3127 BOPOMOFO LETTER I * the vertical stroke form is considered a rendering variant 3128 BOPOMOFO LETTER U 3129 BOPOMOFO LETTER IU @ Dialect (non-Mandarin) letters 312A BOPOMOFO LETTER V 312B BOPOMOFO LETTER NG 312C BOPOMOFO LETTER GN @ Miscellaneous addition 312D BOPOMOFO LETTER IH * for analytic representation of apical vowel @@ 3130 Hangul Compatibility Jamo 318F @ Consonant letters 3131 HANGUL LETTER KIYEOK # 1100 hangul choseong kiyeok 3132 HANGUL LETTER SSANGKIYEOK # 1101 hangul choseong ssangkiyeok 3133 HANGUL LETTER KIYEOK-SIOS # 11AA hangul jongseong kiyeok-sios 3134 HANGUL LETTER NIEUN # 1102 hangul choseong nieun 3135 HANGUL LETTER NIEUN-CIEUC # 11AC hangul jongseong nieun-cieuc 3136 HANGUL LETTER NIEUN-HIEUH # 11AD hangul jongseong nieun-hieuh 3137 HANGUL LETTER TIKEUT # 1103 hangul choseong tikeut 3138 HANGUL LETTER SSANGTIKEUT # 1104 hangul choseong ssangtikeut 3139 HANGUL LETTER RIEUL # 1105 hangul choseong rieul 313A HANGUL LETTER RIEUL-KIYEOK # 11B0 hangul jongseong rieul-kiyeok 313B HANGUL LETTER RIEUL-MIEUM # 11B1 hangul jongseong rieul-mieum 313C HANGUL LETTER RIEUL-PIEUP # 11B2 hangul jongseong rieul-pieup 313D HANGUL LETTER RIEUL-SIOS # 11B3 hangul jongseong rieul-sios 313E HANGUL LETTER RIEUL-THIEUTH # 11B4 hangul jongseong rieul-thieuth 313F HANGUL LETTER RIEUL-PHIEUPH # 11B5 hangul jongseong rieul-phieuph 3140 HANGUL LETTER RIEUL-HIEUH # 111A hangul choseong rieul-hieuh 3141 HANGUL LETTER MIEUM # 1106 hangul choseong mieum 3142 HANGUL LETTER PIEUP # 1107 hangul choseong pieup 3143 HANGUL LETTER SSANGPIEUP # 1108 hangul choseong ssangpieup 3144 HANGUL LETTER PIEUP-SIOS # 1121 hangul choseong pieup-sios 3145 HANGUL LETTER SIOS # 1109 hangul choseong sios 3146 HANGUL LETTER SSANGSIOS # 110A hangul choseong ssangsios 3147 HANGUL LETTER IEUNG * zero sound as initial or velar nasal consonant as final # 110B hangul choseong ieung 3148 HANGUL LETTER CIEUC # 110C hangul choseong cieuc 3149 HANGUL LETTER SSANGCIEUC # 110D hangul choseong ssangcieuc 314A HANGUL LETTER CHIEUCH # 110E hangul choseong chieuch 314B HANGUL LETTER KHIEUKH # 110F hangul choseong khieukh 314C HANGUL LETTER THIEUTH # 1110 hangul choseong thieuth 314D HANGUL LETTER PHIEUPH # 1111 hangul choseong phieuph 314E HANGUL LETTER HIEUH * voiceless glottal fricative # 1112 hangul choseong hieuh @ Vowel letters 314F HANGUL LETTER A # 1161 hangul jungseong a 3150 HANGUL LETTER AE # 1162 hangul jungseong ae 3151 HANGUL LETTER YA # 1163 hangul jungseong ya 3152 HANGUL LETTER YAE # 1164 hangul jungseong yae 3153 HANGUL LETTER EO # 1165 hangul jungseong eo 3154 HANGUL LETTER E # 1166 hangul jungseong e 3155 HANGUL LETTER YEO # 1167 hangul jungseong yeo 3156 HANGUL LETTER YE # 1168 hangul jungseong ye 3157 HANGUL LETTER O # 1169 hangul jungseong o 3158 HANGUL LETTER WA # 116A hangul jungseong wa 3159 HANGUL LETTER WAE # 116B hangul jungseong wae 315A HANGUL LETTER OE # 116C hangul jungseong oe 315B HANGUL LETTER YO # 116D hangul jungseong yo 315C HANGUL LETTER U # 116E hangul jungseong u 315D HANGUL LETTER WEO # 116F hangul jungseong weo 315E HANGUL LETTER WE # 1170 hangul jungseong we 315F HANGUL LETTER WI # 1171 hangul jungseong wi 3160 HANGUL LETTER YU # 1172 hangul jungseong yu 3161 HANGUL LETTER EU # 1173 hangul jungseong eu 3162 HANGUL LETTER YI # 1174 hangul jungseong yi 3163 HANGUL LETTER I # 1175 hangul jungseong i @ Special character 3164 HANGUL FILLER = chaeum # 1160 hangul jungseong filler @ Old consonant letters 3165 HANGUL LETTER SSANGNIEUN # 1114 hangul choseong ssangnieun 3166 HANGUL LETTER NIEUN-TIKEUT # 1115 hangul choseong nieun-tikeut 3167 HANGUL LETTER NIEUN-SIOS # 11C7 hangul jongseong nieun-sios 3168 HANGUL LETTER NIEUN-PANSIOS # 11C8 hangul jongseong nieun-pansios 3169 HANGUL LETTER RIEUL-KIYEOK-SIOS # 11CC hangul jongseong rieul-kiyeok-sios 316A HANGUL LETTER RIEUL-TIKEUT # 11CE hangul jongseong rieul-tikeut 316B HANGUL LETTER RIEUL-PIEUP-SIOS # 11D3 hangul jongseong rieul-pieup-sios 316C HANGUL LETTER RIEUL-PANSIOS # 11D7 hangul jongseong rieul-pansios 316D HANGUL LETTER RIEUL-YEORINHIEUH # 11D9 hangul jongseong rieul-yeorinhieuh 316E HANGUL LETTER MIEUM-PIEUP # 111C hangul choseong mieum-pieup 316F HANGUL LETTER MIEUM-SIOS # 11DD hangul jongseong mieum-sios 3170 HANGUL LETTER MIEUM-PANSIOS # 11DF hangul jongseong mieum-pansios 3171 HANGUL LETTER KAPYEOUNMIEUM # 111D hangul choseong kapyeounmieum 3172 HANGUL LETTER PIEUP-KIYEOK # 111E hangul choseong pieup-kiyeok 3173 HANGUL LETTER PIEUP-TIKEUT # 1120 hangul choseong pieup-tikeut 3174 HANGUL LETTER PIEUP-SIOS-KIYEOK # 1122 hangul choseong pieup-sios-kiyeok 3175 HANGUL LETTER PIEUP-SIOS-TIKEUT # 1123 hangul choseong pieup-sios-tikeut 3176 HANGUL LETTER PIEUP-CIEUC # 1127 hangul choseong pieup-cieuc 3177 HANGUL LETTER PIEUP-THIEUTH # 1129 hangul choseong pieup-thieuth 3178 HANGUL LETTER KAPYEOUNPIEUP # 112B hangul choseong kapyeounpieup 3179 HANGUL LETTER KAPYEOUNSSANGPIEUP # 112C hangul choseong kapyeounssangpieup 317A HANGUL LETTER SIOS-KIYEOK # 112D hangul choseong sios-kiyeok 317B HANGUL LETTER SIOS-NIEUN # 112E hangul choseong sios-nieun 317C HANGUL LETTER SIOS-TIKEUT # 112F hangul choseong sios-tikeut 317D HANGUL LETTER SIOS-PIEUP # 1132 hangul choseong sios-pieup 317E HANGUL LETTER SIOS-CIEUC # 1136 hangul choseong sios-cieuc 317F HANGUL LETTER PANSIOS * voiced alveolar fricative # 1140 hangul choseong pansios 3180 HANGUL LETTER SSANGIEUNG = ssangyesieung # 1147 hangul choseong ssangieung 3181 HANGUL LETTER YESIEUNG * velar nasal consonant # 114C hangul choseong yesieung 3182 HANGUL LETTER YESIEUNG-SIOS # 11F1 hangul jongseong yesieung-sios 3183 HANGUL LETTER YESIEUNG-PANSIOS # 11F2 hangul jongseong yesieung-pansios 3184 HANGUL LETTER KAPYEOUNPHIEUPH # 1157 hangul choseong kapyeounphieuph 3185 HANGUL LETTER SSANGHIEUH # 1158 hangul choseong ssanghieuh 3186 HANGUL LETTER YEORINHIEUH * glottal stop # 1159 hangul choseong yeorinhieuh @ Old vowel letters 3187 HANGUL LETTER YO-YA # 1184 hangul jungseong yo-ya 3188 HANGUL LETTER YO-YAE # 1185 hangul jungseong yo-yae 3189 HANGUL LETTER YO-I # 1188 hangul jungseong yo-i 318A HANGUL LETTER YU-YEO # 1191 hangul jungseong yu-yeo 318B HANGUL LETTER YU-YE # 1192 hangul jungseong yu-ye 318C HANGUL LETTER YU-I # 1194 hangul jungseong yu-i 318D HANGUL LETTER ARAEA * rounded open-mid back vowel # 119E hangul jungseong araea 318E HANGUL LETTER ARAEAE # 11A1 hangul jungseong araea-i @@ 3190 Kanbun 319F @ Tateten 3190 IDEOGRAPHIC ANNOTATION LINKING MARK = tateten @ Kaeriten 3191 IDEOGRAPHIC ANNOTATION REVERSE MARK = kaeriten re 3192 IDEOGRAPHIC ANNOTATION ONE MARK # 4E00 3193 IDEOGRAPHIC ANNOTATION TWO MARK # 4E8C 3194 IDEOGRAPHIC ANNOTATION THREE MARK # 4E09 3195 IDEOGRAPHIC ANNOTATION FOUR MARK # 56DB 3196 IDEOGRAPHIC ANNOTATION TOP MARK # 4E0A 3197 IDEOGRAPHIC ANNOTATION MIDDLE MARK # 4E2D 3198 IDEOGRAPHIC ANNOTATION BOTTOM MARK # 4E0B 3199 IDEOGRAPHIC ANNOTATION FIRST MARK # 7532 319A IDEOGRAPHIC ANNOTATION SECOND MARK # 4E59 319B IDEOGRAPHIC ANNOTATION THIRD MARK # 4E19 319C IDEOGRAPHIC ANNOTATION FOURTH MARK # 4E01 319D IDEOGRAPHIC ANNOTATION HEAVEN MARK # 5929 319E IDEOGRAPHIC ANNOTATION EARTH MARK # 5730 319F IDEOGRAPHIC ANNOTATION MAN MARK # 4EBA @@ 31A0 Bopomofo Extended 31BF @+ See also the Bopomofo block @ Extended Bopomofo for Minnan and Hakka 31A0 BOPOMOFO LETTER BU 31A1 BOPOMOFO LETTER ZI 31A2 BOPOMOFO LETTER JI 31A3 BOPOMOFO LETTER GU 31A4 BOPOMOFO LETTER EE 31A5 BOPOMOFO LETTER ENN 31A6 BOPOMOFO LETTER OO 31A7 BOPOMOFO LETTER ONN 31A8 BOPOMOFO LETTER IR 31A9 BOPOMOFO LETTER ANN 31AA BOPOMOFO LETTER INN 31AB BOPOMOFO LETTER UNN 31AC BOPOMOFO LETTER IM 31AD BOPOMOFO LETTER NGG 31AE BOPOMOFO LETTER AINN 31AF BOPOMOFO LETTER AUNN 31B0 BOPOMOFO LETTER AM 31B1 BOPOMOFO LETTER OM 31B2 BOPOMOFO LETTER ONG 31B3 BOPOMOFO LETTER INNN 31B4 BOPOMOFO FINAL LETTER P 31B5 BOPOMOFO FINAL LETTER T 31B6 BOPOMOFO FINAL LETTER K 31B7 BOPOMOFO FINAL LETTER H @ Extended Bopomofo for Hmu and Ge 31B8 BOPOMOFO LETTER GH 31B9 BOPOMOFO LETTER LH 31BA BOPOMOFO LETTER ZY @@ 31C0 CJK Strokes 31EF @ CJK strokes 31C0 CJK STROKE T * 2nd stroke of 51B0 31C1 CJK STROKE WG * 2nd stroke of 72D0 31C2 CJK STROKE XG * 5th stroke of 6211 31C3 CJK STROKE BXG * occurs only in Kaiti typefaces * equivalent to SWG stroke in Songti typefaces * 2nd stroke of 5FC3 31C4 CJK STROKE SW * 3rd stroke of 4EA1 * 4th stroke of 56DB 31C5 CJK STROKE HZZ * 1st stroke of 534D 31C6 CJK STROKE HZG * 1st stroke of 7FBD * 1st stroke of 4E5F 31C7 CJK STROKE HP * 1st stroke of 53C8 * 4th stroke of 4ECA 31C8 CJK STROKE HZWG * 1st stroke of 98DE * 2nd stroke of 4E5D 31C9 CJK STROKE SZWG * 3rd stroke of 5F13 * 2nd stroke of 9A6C 31CA CJK STROKE HZT * 2nd stroke of 8BA1 * 2nd stroke of 9CE9 31CB CJK STROKE HZZP * 1st stroke of 53CA 31CC CJK STROKE HPWG * 1st stroke of 961D * 6th stroke of 90AE 31CD CJK STROKE HZW * 5th stroke of 6295 31CE CJK STROKE HZZZ * 1st stroke of 51F8 31CF CJK STROKE N * 3rd stroke of 5927 31D0 CJK STROKE H * 1st stroke of 5927 * 1st stroke of 4E03 31D1 CJK STROKE S * 4th stroke of 4E2D 31D2 CJK STROKE P * 1st stroke of 4E4F 31D3 CJK STROKE SP * 1st stroke of 6708 31D4 CJK STROKE D * 3rd stroke of 4E38 31D5 CJK STROKE HZ * 2nd stroke of 56DB 31D6 CJK STROKE HG * 1st stroke of 758B * 1st stroke of 5B50 31D7 CJK STROKE SZ * 2nd stroke of 5C71 * 2nd stroke of 4E1C 31D8 CJK STROKE SWZ * 6th stroke of 8085 31D9 CJK STROKE ST * 3rd stroke of 6C11 31DA CJK STROKE SG * 1st stroke of 6C34 31DB CJK STROKE PD * 1st stroke of 5DE1 * 1st stroke of 5973 31DC CJK STROKE PZ * 3rd stroke of 516C * 4th stroke of 5F18 31DD CJK STROKE TN * 8th stroke of 5EFB 31DE CJK STROKE SZZ * 1st stroke of 5350 * 4th stroke of 4E9E 31DF CJK STROKE SWG * 7th stroke of 4E71 * 3rd stroke of 5DF1 31E0 CJK STROKE HXWG * 1st stroke of 4E59 31E1 CJK STROKE HZZZG * 1st stroke of 4E43 31E2 CJK STROKE PG * 1st stroke of 4E44 31E3 CJK STROKE Q * 6th stroke of 3514 @@ 31F0 Katakana Phonetic Extensions 31FF @ Phonetic extensions for Ainu 31F0 KATAKANA LETTER SMALL KU 31F1 KATAKANA LETTER SMALL SI 31F2 KATAKANA LETTER SMALL SU 31F3 KATAKANA LETTER SMALL TO 31F4 KATAKANA LETTER SMALL NU 31F5 KATAKANA LETTER SMALL HA 31F6 KATAKANA LETTER SMALL HI 31F7 KATAKANA LETTER SMALL HU 31F8 KATAKANA LETTER SMALL HE 31F9 KATAKANA LETTER SMALL HO 31FA KATAKANA LETTER SMALL MU 31FB KATAKANA LETTER SMALL RA 31FC KATAKANA LETTER SMALL RI 31FD KATAKANA LETTER SMALL RU 31FE KATAKANA LETTER SMALL RE 31FF KATAKANA LETTER SMALL RO @@ 3200 Enclosed CJK Letters and Months 32FF @ Parenthesized Hangul letters 3200 PARENTHESIZED HANGUL KIYEOK # 0028 1100 0029 3201 PARENTHESIZED HANGUL NIEUN # 0028 1102 0029 3202 PARENTHESIZED HANGUL TIKEUT # 0028 1103 0029 3203 PARENTHESIZED HANGUL RIEUL # 0028 1105 0029 3204 PARENTHESIZED HANGUL MIEUM # 0028 1106 0029 3205 PARENTHESIZED HANGUL PIEUP # 0028 1107 0029 3206 PARENTHESIZED HANGUL SIOS # 0028 1109 0029 3207 PARENTHESIZED HANGUL IEUNG # 0028 110B 0029 3208 PARENTHESIZED HANGUL CIEUC # 0028 110C 0029 3209 PARENTHESIZED HANGUL CHIEUCH # 0028 110E 0029 320A PARENTHESIZED HANGUL KHIEUKH # 0028 110F 0029 320B PARENTHESIZED HANGUL THIEUTH # 0028 1110 0029 320C PARENTHESIZED HANGUL PHIEUPH # 0028 1111 0029 320D PARENTHESIZED HANGUL HIEUH # 0028 1112 0029 @ Parenthesized Hangul syllables 320E PARENTHESIZED HANGUL KIYEOK A # 0028 1100 1161 0029 320F PARENTHESIZED HANGUL NIEUN A # 0028 1102 1161 0029 3210 PARENTHESIZED HANGUL TIKEUT A # 0028 1103 1161 0029 3211 PARENTHESIZED HANGUL RIEUL A # 0028 1105 1161 0029 3212 PARENTHESIZED HANGUL MIEUM A # 0028 1106 1161 0029 3213 PARENTHESIZED HANGUL PIEUP A # 0028 1107 1161 0029 3214 PARENTHESIZED HANGUL SIOS A # 0028 1109 1161 0029 3215 PARENTHESIZED HANGUL IEUNG A # 0028 110B 1161 0029 3216 PARENTHESIZED HANGUL CIEUC A # 0028 110C 1161 0029 3217 PARENTHESIZED HANGUL CHIEUCH A # 0028 110E 1161 0029 3218 PARENTHESIZED HANGUL KHIEUKH A # 0028 110F 1161 0029 3219 PARENTHESIZED HANGUL THIEUTH A # 0028 1110 1161 0029 321A PARENTHESIZED HANGUL PHIEUPH A # 0028 1111 1161 0029 321B PARENTHESIZED HANGUL HIEUH A # 0028 1112 1161 0029 321C PARENTHESIZED HANGUL CIEUC U # 0028 110C 116E 0029 @ Parenthesized Korean words 321D PARENTHESIZED KOREAN CHARACTER OJEON # 0028 110B 1169 110C 1165 11AB 0029 321E PARENTHESIZED KOREAN CHARACTER O HU * preferred spelling for the name is ohu # 0028 110B 1169 1112 116E 0029 @ Parenthesized ideographs 3220 PARENTHESIZED IDEOGRAPH ONE # 0028 4E00 0029 3221 PARENTHESIZED IDEOGRAPH TWO # 0028 4E8C 0029 3222 PARENTHESIZED IDEOGRAPH THREE # 0028 4E09 0029 3223 PARENTHESIZED IDEOGRAPH FOUR # 0028 56DB 0029 3224 PARENTHESIZED IDEOGRAPH FIVE # 0028 4E94 0029 3225 PARENTHESIZED IDEOGRAPH SIX # 0028 516D 0029 3226 PARENTHESIZED IDEOGRAPH SEVEN # 0028 4E03 0029 3227 PARENTHESIZED IDEOGRAPH EIGHT # 0028 516B 0029 3228 PARENTHESIZED IDEOGRAPH NINE # 0028 4E5D 0029 3229 PARENTHESIZED IDEOGRAPH TEN # 0028 5341 0029 322A PARENTHESIZED IDEOGRAPH MOON * Monday # 0028 6708 0029 322B PARENTHESIZED IDEOGRAPH FIRE * Tuesday # 0028 706B 0029 322C PARENTHESIZED IDEOGRAPH WATER * Wednesday # 0028 6C34 0029 322D PARENTHESIZED IDEOGRAPH WOOD * Thursday # 0028 6728 0029 322E PARENTHESIZED IDEOGRAPH METAL * Friday # 0028 91D1 0029 322F PARENTHESIZED IDEOGRAPH EARTH * Saturday # 0028 571F 0029 3230 PARENTHESIZED IDEOGRAPH SUN * Sunday # 0028 65E5 0029 3231 PARENTHESIZED IDEOGRAPH STOCK * incorporated # 0028 682A 0029 3232 PARENTHESIZED IDEOGRAPH HAVE * limited # 0028 6709 0029 3233 PARENTHESIZED IDEOGRAPH SOCIETY * company # 0028 793E 0029 3234 PARENTHESIZED IDEOGRAPH NAME # 0028 540D 0029 3235 PARENTHESIZED IDEOGRAPH SPECIAL # 0028 7279 0029 3236 PARENTHESIZED IDEOGRAPH FINANCIAL # 0028 8CA1 0029 3237 PARENTHESIZED IDEOGRAPH CONGRATULATION # 0028 795D 0029 3238 PARENTHESIZED IDEOGRAPH LABOR # 0028 52B4 0029 3239 PARENTHESIZED IDEOGRAPH REPRESENT # 0028 4EE3 0029 323A PARENTHESIZED IDEOGRAPH CALL # 0028 547C 0029 323B PARENTHESIZED IDEOGRAPH STUDY # 0028 5B66 0029 323C PARENTHESIZED IDEOGRAPH SUPERVISE # 0028 76E3 0029 323D PARENTHESIZED IDEOGRAPH ENTERPRISE # 0028 4F01 0029 323E PARENTHESIZED IDEOGRAPH RESOURCE # 0028 8CC7 0029 323F PARENTHESIZED IDEOGRAPH ALLIANCE # 0028 5354 0029 3240 PARENTHESIZED IDEOGRAPH FESTIVAL # 0028 796D 0029 3241 PARENTHESIZED IDEOGRAPH REST # 0028 4F11 0029 3242 PARENTHESIZED IDEOGRAPH SELF * from # 0028 81EA 0029 3243 PARENTHESIZED IDEOGRAPH REACH * to # 0028 81F3 0029 @ Circled ideographs from ARIB STD B24 3244 CIRCLED IDEOGRAPH QUESTION # 554F 3245 CIRCLED IDEOGRAPH KINDERGARTEN # 5E7C 3246 CIRCLED IDEOGRAPH SCHOOL # 6587 3247 CIRCLED IDEOGRAPH KOTO # 7B8F @ Circled numbers on black squares from ARIB STD B24 3248 CIRCLED NUMBER TEN ON BLACK SQUARE = speed limit 10 km/h 3249 CIRCLED NUMBER TWENTY ON BLACK SQUARE = speed limit 20 km/h 324A CIRCLED NUMBER THIRTY ON BLACK SQUARE = speed limit 30 km/h 324B CIRCLED NUMBER FORTY ON BLACK SQUARE = speed limit 40 km/h 324C CIRCLED NUMBER FIFTY ON BLACK SQUARE = speed limit 50 km/h 324D CIRCLED NUMBER SIXTY ON BLACK SQUARE = speed limit 60 km/h 324E CIRCLED NUMBER SEVENTY ON BLACK SQUARE = speed limit 70 km/h 324F CIRCLED NUMBER EIGHTY ON BLACK SQUARE = speed limit 80 km/h @ Squared Latin abbreviation 3250 PARTNERSHIP SIGN # 0050 0054 0045 @ Circled numbers 3251 CIRCLED NUMBER TWENTY ONE # 0032 0031 3252 CIRCLED NUMBER TWENTY TWO # 0032 0032 3253 CIRCLED NUMBER TWENTY THREE # 0032 0033 3254 CIRCLED NUMBER TWENTY FOUR # 0032 0034 3255 CIRCLED NUMBER TWENTY FIVE # 0032 0035 3256 CIRCLED NUMBER TWENTY SIX # 0032 0036 3257 CIRCLED NUMBER TWENTY SEVEN # 0032 0037 3258 CIRCLED NUMBER TWENTY EIGHT # 0032 0038 3259 CIRCLED NUMBER TWENTY NINE # 0032 0039 325A CIRCLED NUMBER THIRTY # 0033 0030 325B CIRCLED NUMBER THIRTY ONE # 0033 0031 325C CIRCLED NUMBER THIRTY TWO # 0033 0032 325D CIRCLED NUMBER THIRTY THREE # 0033 0033 325E CIRCLED NUMBER THIRTY FOUR # 0033 0034 325F CIRCLED NUMBER THIRTY FIVE # 0033 0035 @ Circled Hangul letters 3260 CIRCLED HANGUL KIYEOK # 1100 3261 CIRCLED HANGUL NIEUN # 1102 3262 CIRCLED HANGUL TIKEUT # 1103 3263 CIRCLED HANGUL RIEUL # 1105 3264 CIRCLED HANGUL MIEUM # 1106 3265 CIRCLED HANGUL PIEUP # 1107 3266 CIRCLED HANGUL SIOS # 1109 3267 CIRCLED HANGUL IEUNG # 110B 3268 CIRCLED HANGUL CIEUC # 110C 3269 CIRCLED HANGUL CHIEUCH # 110E 326A CIRCLED HANGUL KHIEUKH # 110F 326B CIRCLED HANGUL THIEUTH # 1110 326C CIRCLED HANGUL PHIEUPH # 1111 326D CIRCLED HANGUL HIEUH # 1112 @ Circled Hangul syllables 326E CIRCLED HANGUL KIYEOK A # 1100 1161 326F CIRCLED HANGUL NIEUN A # 1102 1161 3270 CIRCLED HANGUL TIKEUT A # 1103 1161 3271 CIRCLED HANGUL RIEUL A # 1105 1161 3272 CIRCLED HANGUL MIEUM A # 1106 1161 3273 CIRCLED HANGUL PIEUP A # 1107 1161 3274 CIRCLED HANGUL SIOS A # 1109 1161 3275 CIRCLED HANGUL IEUNG A # 110B 1161 3276 CIRCLED HANGUL CIEUC A # 110C 1161 3277 CIRCLED HANGUL CHIEUCH A # 110E 1161 3278 CIRCLED HANGUL KHIEUKH A # 110F 1161 3279 CIRCLED HANGUL THIEUTH A # 1110 1161 327A CIRCLED HANGUL PHIEUPH A # 1111 1161 327B CIRCLED HANGUL HIEUH A # 1112 1161 @ Circled Korean words 327C CIRCLED KOREAN CHARACTER CHAMKO # 110E 1161 11B7 1100 1169 327D CIRCLED KOREAN CHARACTER JUEUI # 110C 116E 110B 1174 @ Circled Hangul syllable 327E CIRCLED HANGUL IEUNG U * postal code mark # 110B 116E @ Symbol 327F KOREAN STANDARD SYMBOL @ Circled ideographs 3280 CIRCLED IDEOGRAPH ONE = maru-iti, symbol of unification # 4E00 3281 CIRCLED IDEOGRAPH TWO # 4E8C 3282 CIRCLED IDEOGRAPH THREE # 4E09 3283 CIRCLED IDEOGRAPH FOUR # 56DB 3284 CIRCLED IDEOGRAPH FIVE # 4E94 3285 CIRCLED IDEOGRAPH SIX # 516D 3286 CIRCLED IDEOGRAPH SEVEN # 4E03 3287 CIRCLED IDEOGRAPH EIGHT # 516B 3288 CIRCLED IDEOGRAPH NINE # 4E5D 3289 CIRCLED IDEOGRAPH TEN # 5341 328A CIRCLED IDEOGRAPH MOON * Monday # 6708 328B CIRCLED IDEOGRAPH FIRE * Tuesday # 706B 328C CIRCLED IDEOGRAPH WATER * Wednesday # 6C34 328D CIRCLED IDEOGRAPH WOOD * Thursday # 6728 328E CIRCLED IDEOGRAPH METAL * Friday # 91D1 328F CIRCLED IDEOGRAPH EARTH * Saturday # 571F 3290 CIRCLED IDEOGRAPH SUN * Sunday # 65E5 3291 CIRCLED IDEOGRAPH STOCK * incorporated # 682A 3292 CIRCLED IDEOGRAPH HAVE * limited # 6709 3293 CIRCLED IDEOGRAPH SOCIETY * company # 793E 3294 CIRCLED IDEOGRAPH NAME # 540D 3295 CIRCLED IDEOGRAPH SPECIAL # 7279 3296 CIRCLED IDEOGRAPH FINANCIAL # 8CA1 3297 CIRCLED IDEOGRAPH CONGRATULATION ~ 3297 FE0E text style ~ 3297 FE0F emoji style # 795D 3298 CIRCLED IDEOGRAPH LABOR # 52B4 3299 CIRCLED IDEOGRAPH SECRET ~ 3299 FE0E text style ~ 3299 FE0F emoji style # 79D8 329A CIRCLED IDEOGRAPH MALE # 7537 329B CIRCLED IDEOGRAPH FEMALE # 5973 329C CIRCLED IDEOGRAPH SUITABLE # 9069 329D CIRCLED IDEOGRAPH EXCELLENT # 512A 329E CIRCLED IDEOGRAPH PRINT * name seal # 5370 329F CIRCLED IDEOGRAPH ATTENTION # 6CE8 32A0 CIRCLED IDEOGRAPH ITEM # 9805 32A1 CIRCLED IDEOGRAPH REST * holiday # 4F11 32A2 CIRCLED IDEOGRAPH COPY # 5199 32A3 CIRCLED IDEOGRAPH CORRECT # 6B63 32A4 CIRCLED IDEOGRAPH HIGH # 4E0A 32A5 CIRCLED IDEOGRAPH CENTRE # 4E2D 32A6 CIRCLED IDEOGRAPH LOW # 4E0B 32A7 CIRCLED IDEOGRAPH LEFT # 5DE6 32A8 CIRCLED IDEOGRAPH RIGHT # 53F3 32A9 CIRCLED IDEOGRAPH MEDICINE # 533B 32AA CIRCLED IDEOGRAPH RELIGION # 5B97 32AB CIRCLED IDEOGRAPH STUDY # 5B66 32AC CIRCLED IDEOGRAPH SUPERVISE # 76E3 32AD CIRCLED IDEOGRAPH ENTERPRISE # 4F01 32AE CIRCLED IDEOGRAPH RESOURCE # 8CC7 32AF CIRCLED IDEOGRAPH ALLIANCE # 5354 32B0 CIRCLED IDEOGRAPH NIGHT # 591C @ Circled numbers 32B1 CIRCLED NUMBER THIRTY SIX # 0033 0036 32B2 CIRCLED NUMBER THIRTY SEVEN # 0033 0037 32B3 CIRCLED NUMBER THIRTY EIGHT # 0033 0038 32B4 CIRCLED NUMBER THIRTY NINE # 0033 0039 32B5 CIRCLED NUMBER FORTY # 0034 0030 32B6 CIRCLED NUMBER FORTY ONE # 0034 0031 32B7 CIRCLED NUMBER FORTY TWO # 0034 0032 32B8 CIRCLED NUMBER FORTY THREE # 0034 0033 32B9 CIRCLED NUMBER FORTY FOUR # 0034 0034 32BA CIRCLED NUMBER FORTY FIVE # 0034 0035 32BB CIRCLED NUMBER FORTY SIX # 0034 0036 32BC CIRCLED NUMBER FORTY SEVEN # 0034 0037 32BD CIRCLED NUMBER FORTY EIGHT # 0034 0038 32BE CIRCLED NUMBER FORTY NINE # 0034 0039 32BF CIRCLED NUMBER FIFTY # 0035 0030 @ Telegraph symbols for months 32C0 IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY # 0031 6708 32C1 IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY # 0032 6708 32C2 IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH # 0033 6708 32C3 IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL # 0034 6708 32C4 IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY # 0035 6708 32C5 IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE # 0036 6708 32C6 IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY # 0037 6708 32C7 IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST # 0038 6708 32C8 IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER # 0039 6708 32C9 IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER # 0031 0030 6708 32CA IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER # 0031 0031 6708 32CB IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER # 0031 0032 6708 @ Squared Latin abbreviations 32CC SQUARE HG # 0048 0067 32CD SQUARE ERG # 0065 0072 0067 32CE SQUARE EV # 0065 0056 32CF LIMITED LIABILITY SIGN # 004C 0054 0044 @ Circled Katakana 32D0 CIRCLED KATAKANA A # 30A2 32D1 CIRCLED KATAKANA I # 30A4 32D2 CIRCLED KATAKANA U # 30A6 32D3 CIRCLED KATAKANA E # 30A8 32D4 CIRCLED KATAKANA O # 30AA 32D5 CIRCLED KATAKANA KA # 30AB 32D6 CIRCLED KATAKANA KI # 30AD 32D7 CIRCLED KATAKANA KU # 30AF 32D8 CIRCLED KATAKANA KE # 30B1 32D9 CIRCLED KATAKANA KO # 30B3 32DA CIRCLED KATAKANA SA # 30B5 32DB CIRCLED KATAKANA SI # 30B7 32DC CIRCLED KATAKANA SU # 30B9 32DD CIRCLED KATAKANA SE # 30BB 32DE CIRCLED KATAKANA SO # 30BD 32DF CIRCLED KATAKANA TA # 30BF 32E0 CIRCLED KATAKANA TI # 30C1 32E1 CIRCLED KATAKANA TU # 30C4 32E2 CIRCLED KATAKANA TE # 30C6 32E3 CIRCLED KATAKANA TO # 30C8 32E4 CIRCLED KATAKANA NA # 30CA 32E5 CIRCLED KATAKANA NI # 30CB 32E6 CIRCLED KATAKANA NU # 30CC 32E7 CIRCLED KATAKANA NE # 30CD 32E8 CIRCLED KATAKANA NO # 30CE 32E9 CIRCLED KATAKANA HA # 30CF 32EA CIRCLED KATAKANA HI # 30D2 32EB CIRCLED KATAKANA HU # 30D5 32EC CIRCLED KATAKANA HE # 30D8 32ED CIRCLED KATAKANA HO # 30DB 32EE CIRCLED KATAKANA MA # 30DE 32EF CIRCLED KATAKANA MI # 30DF 32F0 CIRCLED KATAKANA MU # 30E0 32F1 CIRCLED KATAKANA ME # 30E1 32F2 CIRCLED KATAKANA MO # 30E2 32F3 CIRCLED KATAKANA YA # 30E4 32F4 CIRCLED KATAKANA YU # 30E6 32F5 CIRCLED KATAKANA YO # 30E8 32F6 CIRCLED KATAKANA RA # 30E9 32F7 CIRCLED KATAKANA RI # 30EA 32F8 CIRCLED KATAKANA RU # 30EB 32F9 CIRCLED KATAKANA RE # 30EC 32FA CIRCLED KATAKANA RO # 30ED 32FB CIRCLED KATAKANA WA # 30EF 32FC CIRCLED KATAKANA WI # 30F0 32FD CIRCLED KATAKANA WE # 30F1 32FE CIRCLED KATAKANA WO # 30F2 @~ ! @@ 3300 CJK Compatibility 33FF @ Squared Katakana words 3300 SQUARE APAATO * apartment # 30A2 30D1 30FC 30C8 3301 SQUARE ARUHUA * alpha # 30A2 30EB 30D5 30A1 3302 SQUARE ANPEA * ampere # 30A2 30F3 30DA 30A2 3303 SQUARE AARU * are (unit of area) # 30A2 30FC 30EB 3304 SQUARE ININGU * inning # 30A4 30CB 30F3 30B0 3305 SQUARE INTI * inch # 30A4 30F3 30C1 3306 SQUARE UON * won (Korean currency) # 30A6 30A9 30F3 3307 SQUARE ESUKUUDO * escudo (Portuguese currency) # 30A8 30B9 30AF 30FC 30C9 3308 SQUARE EEKAA * acre # 30A8 30FC 30AB 30FC 3309 SQUARE ONSU * ounce # 30AA 30F3 30B9 330A SQUARE OOMU * ohm # 30AA 30FC 30E0 330B SQUARE KAIRI * kai-ri: nautical mile # 30AB 30A4 30EA 330C SQUARE KARATTO * carat # 30AB 30E9 30C3 30C8 330D SQUARE KARORII * calorie # 30AB 30ED 30EA 30FC 330E SQUARE GARON * gallon # 30AC 30ED 30F3 330F SQUARE GANMA * gamma # 30AC 30F3 30DE 3310 SQUARE GIGA * giga- # 30AE 30AC 3311 SQUARE GINII * guinea # 30AE 30CB 30FC 3312 SQUARE KYURII * curie # 30AD 30E5 30EA 30FC 3313 SQUARE GIRUDAA * guilder # 30AE 30EB 30C0 30FC 3314 SQUARE KIRO * kilo- # 30AD 30ED 3315 SQUARE KIROGURAMU * kilogram # 30AD 30ED 30B0 30E9 30E0 3316 SQUARE KIROMEETORU * kilometer # 30AD 30ED 30E1 30FC 30C8 30EB 3317 SQUARE KIROWATTO * kilowatt # 30AD 30ED 30EF 30C3 30C8 3318 SQUARE GURAMU * gram # 30B0 30E9 30E0 3319 SQUARE GURAMUTON * gram ton # 30B0 30E9 30E0 30C8 30F3 331A SQUARE KURUZEIRO * cruzeiro (Brazilian currency) # 30AF 30EB 30BC 30A4 30ED 331B SQUARE KUROONE * krone # 30AF 30ED 30FC 30CD 331C SQUARE KEESU * case # 30B1 30FC 30B9 331D SQUARE KORUNA * koruna (Czech currency) # 30B3 30EB 30CA 331E SQUARE KOOPO * co-op # 30B3 30FC 30DD 331F SQUARE SAIKURU * cycle # 30B5 30A4 30AF 30EB 3320 SQUARE SANTIIMU * centime # 30B5 30F3 30C1 30FC 30E0 3321 SQUARE SIRINGU * shilling # 30B7 30EA 30F3 30B0 3322 SQUARE SENTI * centi- # 30BB 30F3 30C1 3323 SQUARE SENTO * cent # 30BB 30F3 30C8 3324 SQUARE DAASU * dozen # 30C0 30FC 30B9 3325 SQUARE DESI * deci- # 30C7 30B7 3326 SQUARE DORU * dollar # 30C9 30EB 3327 SQUARE TON * ton # 30C8 30F3 3328 SQUARE NANO * nano- # 30CA 30CE 3329 SQUARE NOTTO * knot, nautical mile # 30CE 30C3 30C8 332A SQUARE HAITU * heights # 30CF 30A4 30C4 332B SQUARE PAASENTO * percent # 30D1 30FC 30BB 30F3 30C8 332C SQUARE PAATU * parts # 30D1 30FC 30C4 332D SQUARE BAARERU * barrel # 30D0 30FC 30EC 30EB 332E SQUARE PIASUTORU * piaster # 30D4 30A2 30B9 30C8 30EB 332F SQUARE PIKURU * picul (unit of weight) # 30D4 30AF 30EB 3330 SQUARE PIKO * pico- # 30D4 30B3 3331 SQUARE BIRU * building # 30D3 30EB 3332 SQUARE HUARADDO * farad # 30D5 30A1 30E9 30C3 30C9 3333 SQUARE HUIITO * feet # 30D5 30A3 30FC 30C8 3334 SQUARE BUSSYERU * bushel # 30D6 30C3 30B7 30A7 30EB 3335 SQUARE HURAN * franc # 30D5 30E9 30F3 3336 SQUARE HEKUTAARU * hectare # 30D8 30AF 30BF 30FC 30EB 3337 SQUARE PESO * peso # 30DA 30BD 3338 SQUARE PENIHI * pfennig # 30DA 30CB 30D2 3339 SQUARE HERUTU * hertz # 30D8 30EB 30C4 333A SQUARE PENSU * pence # 30DA 30F3 30B9 333B SQUARE PEEZI * page # 30DA 30FC 30B8 333C SQUARE BEETA * beta # 30D9 30FC 30BF 333D SQUARE POINTO * point # 30DD 30A4 30F3 30C8 333E SQUARE BORUTO * volt, bolt # 30DC 30EB 30C8 333F SQUARE HON * hon: volume # 30DB 30F3 3340 SQUARE PONDO * pound # 30DD 30F3 30C9 3341 SQUARE HOORU * hall # 30DB 30FC 30EB 3342 SQUARE HOON * horn # 30DB 30FC 30F3 3343 SQUARE MAIKURO * micro- # 30DE 30A4 30AF 30ED 3344 SQUARE MAIRU * mile # 30DE 30A4 30EB 3345 SQUARE MAHHA * mach # 30DE 30C3 30CF 3346 SQUARE MARUKU * mark # 30DE 30EB 30AF 3347 SQUARE MANSYON * mansion (i.e. better quality apartment) # 30DE 30F3 30B7 30E7 30F3 3348 SQUARE MIKURON * micron # 30DF 30AF 30ED 30F3 3349 SQUARE MIRI * milli- # 30DF 30EA 334A SQUARE MIRIBAARU * millibar # 30DF 30EA 30D0 30FC 30EB 334B SQUARE MEGA * mega- # 30E1 30AC 334C SQUARE MEGATON * megaton # 30E1 30AC 30C8 30F3 334D SQUARE MEETORU * meter # 30E1 30FC 30C8 30EB 334E SQUARE YAADO * yard # 30E4 30FC 30C9 334F SQUARE YAARU * yard # 30E4 30FC 30EB 3350 SQUARE YUAN * yuan (Chinese currency) # 30E6 30A2 30F3 3351 SQUARE RITTORU * liter # 30EA 30C3 30C8 30EB 3352 SQUARE RIRA * lira # 30EA 30E9 3353 SQUARE RUPII * rupee # 30EB 30D4 30FC 3354 SQUARE RUUBURU * ruble # 30EB 30FC 30D6 30EB 3355 SQUARE REMU * rem (unit of radiation) # 30EC 30E0 3356 SQUARE RENTOGEN * roentgen # 30EC 30F3 30C8 30B2 30F3 3357 SQUARE WATTO * watt # 30EF 30C3 30C8 @ Telegraph symbols for hours 3358 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO # 0030 70B9 3359 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE # 0031 70B9 335A IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO # 0032 70B9 335B IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE # 0033 70B9 335C IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR # 0034 70B9 335D IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE # 0035 70B9 335E IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX # 0036 70B9 335F IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN # 0037 70B9 3360 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT # 0038 70B9 3361 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE # 0039 70B9 3362 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN # 0031 0030 70B9 3363 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN # 0031 0031 70B9 3364 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE # 0031 0032 70B9 3365 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN # 0031 0033 70B9 3366 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN # 0031 0034 70B9 3367 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN # 0031 0035 70B9 3368 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN # 0031 0036 70B9 3369 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN # 0031 0037 70B9 336A IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN # 0031 0038 70B9 336B IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN # 0031 0039 70B9 336C IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY # 0032 0030 70B9 336D IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE # 0032 0031 70B9 336E IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO # 0032 0032 70B9 336F IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE # 0032 0033 70B9 3370 IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR # 0032 0034 70B9 @ Squared Latin abbreviations 3371 SQUARE HPA # 0068 0050 0061 3372 SQUARE DA # 0064 0061 3373 SQUARE AU # 0041 0055 3374 SQUARE BAR # 0062 0061 0072 3375 SQUARE OV # 006F 0056 3376 SQUARE PC # 0070 0063 3377 SQUARE DM # 0064 006D 3378 SQUARE DM SQUARED # 0064 006D 00B2 3379 SQUARE DM CUBED # 0064 006D 00B3 337A SQUARE IU # 0049 0055 @ Japanese era names 337B SQUARE ERA NAME HEISEI # 5E73 6210 337C SQUARE ERA NAME SYOUWA # 662D 548C 337D SQUARE ERA NAME TAISYOU # 5927 6B63 337E SQUARE ERA NAME MEIZI # 660E 6CBB @ Japanese corporation 337F SQUARE CORPORATION = kabusiki-gaisya * incorporated # 682A 5F0F 4F1A 793E @ Squared Latin abbreviations 3380 SQUARE PA AMPS # 0070 0041 3381 SQUARE NA # 006E 0041 3382 SQUARE MU A # 03BC 0041 3383 SQUARE MA # 006D 0041 3384 SQUARE KA # 006B 0041 3385 SQUARE KB # 004B 0042 3386 SQUARE MB # 004D 0042 3387 SQUARE GB # 0047 0042 3388 SQUARE CAL # 0063 0061 006C 3389 SQUARE KCAL # 006B 0063 0061 006C 338A SQUARE PF # 0070 0046 338B SQUARE NF # 006E 0046 338C SQUARE MU F # 03BC 0046 338D SQUARE MU G # 03BC 0067 338E SQUARE MG # 006D 0067 338F SQUARE KG # 006B 0067 3390 SQUARE HZ # 0048 007A 3391 SQUARE KHZ # 006B 0048 007A 3392 SQUARE MHZ # 004D 0048 007A 3393 SQUARE GHZ # 0047 0048 007A 3394 SQUARE THZ # 0054 0048 007A @ Abbreviations involving liter symbols @+ The glyphs for these squared abbreviations may use the SI symbol for liter, "l" or "L", instead of a script l. 3395 SQUARE MU L # 03BC 2113 3396 SQUARE ML # 006D 2113 3397 SQUARE DL # 0064 2113 3398 SQUARE KL # 006B 2113 @ Squared Latin abbreviations 3399 SQUARE FM # 0066 006D 339A SQUARE NM # 006E 006D 339B SQUARE MU M # 03BC 006D 339C SQUARE MM # 006D 006D 339D SQUARE CM # 0063 006D 339E SQUARE KM # 006B 006D 339F SQUARE MM SQUARED # 006D 006D 00B2 33A0 SQUARE CM SQUARED # 0063 006D 00B2 33A1 SQUARE M SQUARED # 006D 00B2 33A2 SQUARE KM SQUARED # 006B 006D 00B2 33A3 SQUARE MM CUBED # 006D 006D 00B3 33A4 SQUARE CM CUBED # 0063 006D 00B3 33A5 SQUARE M CUBED # 006D 00B3 33A6 SQUARE KM CUBED # 006B 006D 00B3 33A7 SQUARE M OVER S # 006D 2215 0073 33A8 SQUARE M OVER S SQUARED # 006D 2215 0073 00B2 33A9 SQUARE PA # 0050 0061 33AA SQUARE KPA # 006B 0050 0061 33AB SQUARE MPA # 004D 0050 0061 33AC SQUARE GPA # 0047 0050 0061 33AD SQUARE RAD # 0072 0061 0064 33AE SQUARE RAD OVER S # 0072 0061 0064 2215 0073 33AF SQUARE RAD OVER S SQUARED # 0072 0061 0064 2215 0073 00B2 33B0 SQUARE PS # 0070 0073 33B1 SQUARE NS # 006E 0073 33B2 SQUARE MU S # 03BC 0073 33B3 SQUARE MS # 006D 0073 33B4 SQUARE PV # 0070 0056 33B5 SQUARE NV # 006E 0056 33B6 SQUARE MU V # 03BC 0056 33B7 SQUARE MV # 006D 0056 33B8 SQUARE KV # 006B 0056 33B9 SQUARE MV MEGA # 004D 0056 33BA SQUARE PW # 0070 0057 33BB SQUARE NW # 006E 0057 33BC SQUARE MU W # 03BC 0057 33BD SQUARE MW # 006D 0057 33BE SQUARE KW # 006B 0057 33BF SQUARE MW MEGA # 004D 0057 33C0 SQUARE K OHM # 006B 03A9 33C1 SQUARE M OHM # 004D 03A9 33C2 SQUARE AM # 0061 002E 006D 002E 33C3 SQUARE BQ # 0042 0071 33C4 SQUARE CC # 0063 0063 33C5 SQUARE CD x (circled cd - 1F12D) # 0063 0064 33C6 SQUARE C OVER KG # 0043 2215 006B 0067 33C7 SQUARE CO # 0043 006F 002E 33C8 SQUARE DB # 0064 0042 33C9 SQUARE GY # 0047 0079 33CA SQUARE HA # 0068 0061 33CB SQUARE HP # 0048 0050 33CC SQUARE IN # 0069 006E 33CD SQUARE KK # 004B 004B 33CE SQUARE KM CAPITAL # 004B 004D 33CF SQUARE KT # 006B 0074 33D0 SQUARE LM # 006C 006D 33D1 SQUARE LN # 006C 006E 33D2 SQUARE LOG # 006C 006F 0067 33D3 SQUARE LX # 006C 0078 33D4 SQUARE MB SMALL # 006D 0062 33D5 SQUARE MIL # 006D 0069 006C 33D6 SQUARE MOL # 006D 006F 006C 33D7 SQUARE PH # 0050 0048 33D8 SQUARE PM # 0070 002E 006D 002E 33D9 SQUARE PPM # 0050 0050 004D 33DA SQUARE PR # 0050 0052 33DB SQUARE SR # 0073 0072 33DC SQUARE SV # 0053 0076 33DD SQUARE WB # 0057 0062 33DE SQUARE V OVER M # 0056 2215 006D 33DF SQUARE A OVER M # 0041 2215 006D @ Telegraph symbols for days 33E0 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE # 0031 65E5 33E1 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO # 0032 65E5 33E2 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE # 0033 65E5 33E3 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR # 0034 65E5 33E4 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE # 0035 65E5 33E5 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX # 0036 65E5 33E6 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN # 0037 65E5 33E7 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT # 0038 65E5 33E8 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE # 0039 65E5 33E9 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN # 0031 0030 65E5 33EA IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN # 0031 0031 65E5 33EB IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE # 0031 0032 65E5 33EC IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN # 0031 0033 65E5 33ED IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN # 0031 0034 65E5 33EE IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN # 0031 0035 65E5 33EF IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN # 0031 0036 65E5 33F0 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN # 0031 0037 65E5 33F1 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN # 0031 0038 65E5 33F2 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN # 0031 0039 65E5 33F3 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY # 0032 0030 65E5 33F4 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE # 0032 0031 65E5 33F5 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO # 0032 0032 65E5 33F6 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE # 0032 0033 65E5 33F7 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR # 0032 0034 65E5 33F8 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE # 0032 0035 65E5 33F9 IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX # 0032 0036 65E5 33FA IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN # 0032 0037 65E5 33FB IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT # 0032 0038 65E5 33FC IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE # 0032 0039 65E5 33FD IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY # 0033 0030 65E5 33FE IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE # 0033 0031 65E5 @ Squared Latin abbreviation 33FF SQUARE GAL # 0067 0061 006C @@ 3400 CJK Unified Ideographs Extension A 4DB5 @@ 4DC0 Yijing Hexagram Symbols 4DFF @ Yijing hexagram symbols 4DC0 HEXAGRAM FOR THE CREATIVE HEAVEN 4DC1 HEXAGRAM FOR THE RECEPTIVE EARTH 4DC2 HEXAGRAM FOR DIFFICULTY AT THE BEGINNING 4DC3 HEXAGRAM FOR YOUTHFUL FOLLY 4DC4 HEXAGRAM FOR WAITING 4DC5 HEXAGRAM FOR CONFLICT 4DC6 HEXAGRAM FOR THE ARMY 4DC7 HEXAGRAM FOR HOLDING TOGETHER 4DC8 HEXAGRAM FOR SMALL TAMING 4DC9 HEXAGRAM FOR TREADING 4DCA HEXAGRAM FOR PEACE 4DCB HEXAGRAM FOR STANDSTILL 4DCC HEXAGRAM FOR FELLOWSHIP 4DCD HEXAGRAM FOR GREAT POSSESSION 4DCE HEXAGRAM FOR MODESTY 4DCF HEXAGRAM FOR ENTHUSIASM 4DD0 HEXAGRAM FOR FOLLOWING 4DD1 HEXAGRAM FOR WORK ON THE DECAYED 4DD2 HEXAGRAM FOR APPROACH 4DD3 HEXAGRAM FOR CONTEMPLATION 4DD4 HEXAGRAM FOR BITING THROUGH 4DD5 HEXAGRAM FOR GRACE 4DD6 HEXAGRAM FOR SPLITTING APART 4DD7 HEXAGRAM FOR RETURN 4DD8 HEXAGRAM FOR INNOCENCE 4DD9 HEXAGRAM FOR GREAT TAMING 4DDA HEXAGRAM FOR MOUTH CORNERS 4DDB HEXAGRAM FOR GREAT PREPONDERANCE 4DDC HEXAGRAM FOR THE ABYSMAL WATER 4DDD HEXAGRAM FOR THE CLINGING FIRE 4DDE HEXAGRAM FOR INFLUENCE 4DDF HEXAGRAM FOR DURATION 4DE0 HEXAGRAM FOR RETREAT 4DE1 HEXAGRAM FOR GREAT POWER 4DE2 HEXAGRAM FOR PROGRESS 4DE3 HEXAGRAM FOR DARKENING OF THE LIGHT 4DE4 HEXAGRAM FOR THE FAMILY 4DE5 HEXAGRAM FOR OPPOSITION 4DE6 HEXAGRAM FOR OBSTRUCTION 4DE7 HEXAGRAM FOR DELIVERANCE 4DE8 HEXAGRAM FOR DECREASE 4DE9 HEXAGRAM FOR INCREASE 4DEA HEXAGRAM FOR BREAKTHROUGH 4DEB HEXAGRAM FOR COMING TO MEET 4DEC HEXAGRAM FOR GATHERING TOGETHER 4DED HEXAGRAM FOR PUSHING UPWARD 4DEE HEXAGRAM FOR OPPRESSION 4DEF HEXAGRAM FOR THE WELL 4DF0 HEXAGRAM FOR REVOLUTION 4DF1 HEXAGRAM FOR THE CAULDRON 4DF2 HEXAGRAM FOR THE AROUSING THUNDER 4DF3 HEXAGRAM FOR THE KEEPING STILL MOUNTAIN 4DF4 HEXAGRAM FOR DEVELOPMENT 4DF5 HEXAGRAM FOR THE MARRYING MAIDEN 4DF6 HEXAGRAM FOR ABUNDANCE 4DF7 HEXAGRAM FOR THE WANDERER 4DF8 HEXAGRAM FOR THE GENTLE WIND 4DF9 HEXAGRAM FOR THE JOYOUS LAKE 4DFA HEXAGRAM FOR DISPERSION 4DFB HEXAGRAM FOR LIMITATION 4DFC HEXAGRAM FOR INNER TRUTH 4DFD HEXAGRAM FOR SMALL PREPONDERANCE 4DFE HEXAGRAM FOR AFTER COMPLETION 4DFF HEXAGRAM FOR BEFORE COMPLETION @@ 4E00 CJK Unified Ideographs 9FD5 @@ A000 Yi Syllables A48F @@+ @ Syllables A000 YI SYLLABLE IT A001 YI SYLLABLE IX A002 YI SYLLABLE I A003 YI SYLLABLE IP A004 YI SYLLABLE IET A005 YI SYLLABLE IEX A006 YI SYLLABLE IE A007 YI SYLLABLE IEP A008 YI SYLLABLE AT A009 YI SYLLABLE AX A00A YI SYLLABLE A A00B YI SYLLABLE AP A00C YI SYLLABLE UOX A00D YI SYLLABLE UO A00E YI SYLLABLE UOP A00F YI SYLLABLE OT A010 YI SYLLABLE OX A011 YI SYLLABLE O A012 YI SYLLABLE OP A013 YI SYLLABLE EX A014 YI SYLLABLE E @ Syllable iteration mark A015 YI SYLLABLE WU % YI SYLLABLE ITERATION MARK * name is a misnomer @ Syllables A016 YI SYLLABLE BIT A017 YI SYLLABLE BIX A018 YI SYLLABLE BI A019 YI SYLLABLE BIP A01A YI SYLLABLE BIET A01B YI SYLLABLE BIEX A01C YI SYLLABLE BIE A01D YI SYLLABLE BIEP A01E YI SYLLABLE BAT A01F YI SYLLABLE BAX A020 YI SYLLABLE BA A021 YI SYLLABLE BAP A022 YI SYLLABLE BUOX A023 YI SYLLABLE BUO A024 YI SYLLABLE BUOP A025 YI SYLLABLE BOT A026 YI SYLLABLE BOX A027 YI SYLLABLE BO A028 YI SYLLABLE BOP A029 YI SYLLABLE BEX A02A YI SYLLABLE BE A02B YI SYLLABLE BEP A02C YI SYLLABLE BUT A02D YI SYLLABLE BUX A02E YI SYLLABLE BU A02F YI SYLLABLE BUP A030 YI SYLLABLE BURX A031 YI SYLLABLE BUR A032 YI SYLLABLE BYT A033 YI SYLLABLE BYX A034 YI SYLLABLE BY A035 YI SYLLABLE BYP A036 YI SYLLABLE BYRX A037 YI SYLLABLE BYR A038 YI SYLLABLE PIT A039 YI SYLLABLE PIX A03A YI SYLLABLE PI A03B YI SYLLABLE PIP A03C YI SYLLABLE PIEX A03D YI SYLLABLE PIE A03E YI SYLLABLE PIEP A03F YI SYLLABLE PAT A040 YI SYLLABLE PAX A041 YI SYLLABLE PA A042 YI SYLLABLE PAP A043 YI SYLLABLE PUOX A044 YI SYLLABLE PUO A045 YI SYLLABLE PUOP A046 YI SYLLABLE POT A047 YI SYLLABLE POX A048 YI SYLLABLE PO A049 YI SYLLABLE POP A04A YI SYLLABLE PUT A04B YI SYLLABLE PUX A04C YI SYLLABLE PU A04D YI SYLLABLE PUP A04E YI SYLLABLE PURX A04F YI SYLLABLE PUR A050 YI SYLLABLE PYT A051 YI SYLLABLE PYX A052 YI SYLLABLE PY A053 YI SYLLABLE PYP A054 YI SYLLABLE PYRX A055 YI SYLLABLE PYR A056 YI SYLLABLE BBIT A057 YI SYLLABLE BBIX A058 YI SYLLABLE BBI A059 YI SYLLABLE BBIP A05A YI SYLLABLE BBIET A05B YI SYLLABLE BBIEX A05C YI SYLLABLE BBIE A05D YI SYLLABLE BBIEP A05E YI SYLLABLE BBAT A05F YI SYLLABLE BBAX A060 YI SYLLABLE BBA A061 YI SYLLABLE BBAP A062 YI SYLLABLE BBUOX A063 YI SYLLABLE BBUO A064 YI SYLLABLE BBUOP A065 YI SYLLABLE BBOT A066 YI SYLLABLE BBOX A067 YI SYLLABLE BBO A068 YI SYLLABLE BBOP A069 YI SYLLABLE BBEX A06A YI SYLLABLE BBE A06B YI SYLLABLE BBEP A06C YI SYLLABLE BBUT A06D YI SYLLABLE BBUX A06E YI SYLLABLE BBU A06F YI SYLLABLE BBUP A070 YI SYLLABLE BBURX A071 YI SYLLABLE BBUR A072 YI SYLLABLE BBYT A073 YI SYLLABLE BBYX A074 YI SYLLABLE BBY A075 YI SYLLABLE BBYP A076 YI SYLLABLE NBIT A077 YI SYLLABLE NBIX A078 YI SYLLABLE NBI A079 YI SYLLABLE NBIP A07A YI SYLLABLE NBIEX A07B YI SYLLABLE NBIE A07C YI SYLLABLE NBIEP A07D YI SYLLABLE NBAT A07E YI SYLLABLE NBAX A07F YI SYLLABLE NBA A080 YI SYLLABLE NBAP A081 YI SYLLABLE NBOT A082 YI SYLLABLE NBOX A083 YI SYLLABLE NBO A084 YI SYLLABLE NBOP A085 YI SYLLABLE NBUT A086 YI SYLLABLE NBUX A087 YI SYLLABLE NBU A088 YI SYLLABLE NBUP A089 YI SYLLABLE NBURX A08A YI SYLLABLE NBUR A08B YI SYLLABLE NBYT A08C YI SYLLABLE NBYX A08D YI SYLLABLE NBY A08E YI SYLLABLE NBYP A08F YI SYLLABLE NBYRX A090 YI SYLLABLE NBYR A091 YI SYLLABLE HMIT A092 YI SYLLABLE HMIX A093 YI SYLLABLE HMI A094 YI SYLLABLE HMIP A095 YI SYLLABLE HMIEX A096 YI SYLLABLE HMIE A097 YI SYLLABLE HMIEP A098 YI SYLLABLE HMAT A099 YI SYLLABLE HMAX A09A YI SYLLABLE HMA A09B YI SYLLABLE HMAP A09C YI SYLLABLE HMUOX A09D YI SYLLABLE HMUO A09E YI SYLLABLE HMUOP A09F YI SYLLABLE HMOT A0A0 YI SYLLABLE HMOX A0A1 YI SYLLABLE HMO A0A2 YI SYLLABLE HMOP A0A3 YI SYLLABLE HMUT A0A4 YI SYLLABLE HMUX A0A5 YI SYLLABLE HMU A0A6 YI SYLLABLE HMUP A0A7 YI SYLLABLE HMURX A0A8 YI SYLLABLE HMUR A0A9 YI SYLLABLE HMYX A0AA YI SYLLABLE HMY A0AB YI SYLLABLE HMYP A0AC YI SYLLABLE HMYRX A0AD YI SYLLABLE HMYR A0AE YI SYLLABLE MIT A0AF YI SYLLABLE MIX A0B0 YI SYLLABLE MI A0B1 YI SYLLABLE MIP A0B2 YI SYLLABLE MIEX A0B3 YI SYLLABLE MIE A0B4 YI SYLLABLE MIEP A0B5 YI SYLLABLE MAT A0B6 YI SYLLABLE MAX A0B7 YI SYLLABLE MA A0B8 YI SYLLABLE MAP A0B9 YI SYLLABLE MUOT A0BA YI SYLLABLE MUOX A0BB YI SYLLABLE MUO A0BC YI SYLLABLE MUOP A0BD YI SYLLABLE MOT A0BE YI SYLLABLE MOX A0BF YI SYLLABLE MO A0C0 YI SYLLABLE MOP A0C1 YI SYLLABLE MEX A0C2 YI SYLLABLE ME A0C3 YI SYLLABLE MUT A0C4 YI SYLLABLE MUX A0C5 YI SYLLABLE MU A0C6 YI SYLLABLE MUP A0C7 YI SYLLABLE MURX A0C8 YI SYLLABLE MUR A0C9 YI SYLLABLE MYT A0CA YI SYLLABLE MYX A0CB YI SYLLABLE MY A0CC YI SYLLABLE MYP A0CD YI SYLLABLE FIT A0CE YI SYLLABLE FIX A0CF YI SYLLABLE FI A0D0 YI SYLLABLE FIP A0D1 YI SYLLABLE FAT A0D2 YI SYLLABLE FAX A0D3 YI SYLLABLE FA A0D4 YI SYLLABLE FAP A0D5 YI SYLLABLE FOX A0D6 YI SYLLABLE FO A0D7 YI SYLLABLE FOP A0D8 YI SYLLABLE FUT A0D9 YI SYLLABLE FUX A0DA YI SYLLABLE FU A0DB YI SYLLABLE FUP A0DC YI SYLLABLE FURX A0DD YI SYLLABLE FUR A0DE YI SYLLABLE FYT A0DF YI SYLLABLE FYX A0E0 YI SYLLABLE FY A0E1 YI SYLLABLE FYP A0E2 YI SYLLABLE VIT A0E3 YI SYLLABLE VIX A0E4 YI SYLLABLE VI A0E5 YI SYLLABLE VIP A0E6 YI SYLLABLE VIET A0E7 YI SYLLABLE VIEX A0E8 YI SYLLABLE VIE A0E9 YI SYLLABLE VIEP A0EA YI SYLLABLE VAT A0EB YI SYLLABLE VAX A0EC YI SYLLABLE VA A0ED YI SYLLABLE VAP A0EE YI SYLLABLE VOT A0EF YI SYLLABLE VOX A0F0 YI SYLLABLE VO A0F1 YI SYLLABLE VOP A0F2 YI SYLLABLE VEX A0F3 YI SYLLABLE VEP A0F4 YI SYLLABLE VUT A0F5 YI SYLLABLE VUX A0F6 YI SYLLABLE VU A0F7 YI SYLLABLE VUP A0F8 YI SYLLABLE VURX A0F9 YI SYLLABLE VUR A0FA YI SYLLABLE VYT A0FB YI SYLLABLE VYX A0FC YI SYLLABLE VY A0FD YI SYLLABLE VYP A0FE YI SYLLABLE VYRX A0FF YI SYLLABLE VYR A100 YI SYLLABLE DIT A101 YI SYLLABLE DIX A102 YI SYLLABLE DI A103 YI SYLLABLE DIP A104 YI SYLLABLE DIEX A105 YI SYLLABLE DIE A106 YI SYLLABLE DIEP A107 YI SYLLABLE DAT A108 YI SYLLABLE DAX A109 YI SYLLABLE DA A10A YI SYLLABLE DAP A10B YI SYLLABLE DUOX A10C YI SYLLABLE DUO A10D YI SYLLABLE DOT A10E YI SYLLABLE DOX A10F YI SYLLABLE DO A110 YI SYLLABLE DOP A111 YI SYLLABLE DEX A112 YI SYLLABLE DE A113 YI SYLLABLE DEP A114 YI SYLLABLE DUT A115 YI SYLLABLE DUX A116 YI SYLLABLE DU A117 YI SYLLABLE DUP A118 YI SYLLABLE DURX A119 YI SYLLABLE DUR A11A YI SYLLABLE TIT A11B YI SYLLABLE TIX A11C YI SYLLABLE TI A11D YI SYLLABLE TIP A11E YI SYLLABLE TIEX A11F YI SYLLABLE TIE A120 YI SYLLABLE TIEP A121 YI SYLLABLE TAT A122 YI SYLLABLE TAX A123 YI SYLLABLE TA A124 YI SYLLABLE TAP A125 YI SYLLABLE TUOT A126 YI SYLLABLE TUOX A127 YI SYLLABLE TUO A128 YI SYLLABLE TUOP A129 YI SYLLABLE TOT A12A YI SYLLABLE TOX A12B YI SYLLABLE TO A12C YI SYLLABLE TOP A12D YI SYLLABLE TEX A12E YI SYLLABLE TE A12F YI SYLLABLE TEP A130 YI SYLLABLE TUT A131 YI SYLLABLE TUX A132 YI SYLLABLE TU A133 YI SYLLABLE TUP A134 YI SYLLABLE TURX A135 YI SYLLABLE TUR A136 YI SYLLABLE DDIT A137 YI SYLLABLE DDIX A138 YI SYLLABLE DDI A139 YI SYLLABLE DDIP A13A YI SYLLABLE DDIEX A13B YI SYLLABLE DDIE A13C YI SYLLABLE DDIEP A13D YI SYLLABLE DDAT A13E YI SYLLABLE DDAX A13F YI SYLLABLE DDA A140 YI SYLLABLE DDAP A141 YI SYLLABLE DDUOX A142 YI SYLLABLE DDUO A143 YI SYLLABLE DDUOP A144 YI SYLLABLE DDOT A145 YI SYLLABLE DDOX A146 YI SYLLABLE DDO A147 YI SYLLABLE DDOP A148 YI SYLLABLE DDEX A149 YI SYLLABLE DDE A14A YI SYLLABLE DDEP A14B YI SYLLABLE DDUT A14C YI SYLLABLE DDUX A14D YI SYLLABLE DDU A14E YI SYLLABLE DDUP A14F YI SYLLABLE DDURX A150 YI SYLLABLE DDUR A151 YI SYLLABLE NDIT A152 YI SYLLABLE NDIX A153 YI SYLLABLE NDI A154 YI SYLLABLE NDIP A155 YI SYLLABLE NDIEX A156 YI SYLLABLE NDIE A157 YI SYLLABLE NDAT A158 YI SYLLABLE NDAX A159 YI SYLLABLE NDA A15A YI SYLLABLE NDAP A15B YI SYLLABLE NDOT A15C YI SYLLABLE NDOX A15D YI SYLLABLE NDO A15E YI SYLLABLE NDOP A15F YI SYLLABLE NDEX A160 YI SYLLABLE NDE A161 YI SYLLABLE NDEP A162 YI SYLLABLE NDUT A163 YI SYLLABLE NDUX A164 YI SYLLABLE NDU A165 YI SYLLABLE NDUP A166 YI SYLLABLE NDURX A167 YI SYLLABLE NDUR A168 YI SYLLABLE HNIT A169 YI SYLLABLE HNIX A16A YI SYLLABLE HNI A16B YI SYLLABLE HNIP A16C YI SYLLABLE HNIET A16D YI SYLLABLE HNIEX A16E YI SYLLABLE HNIE A16F YI SYLLABLE HNIEP A170 YI SYLLABLE HNAT A171 YI SYLLABLE HNAX A172 YI SYLLABLE HNA A173 YI SYLLABLE HNAP A174 YI SYLLABLE HNUOX A175 YI SYLLABLE HNUO A176 YI SYLLABLE HNOT A177 YI SYLLABLE HNOX A178 YI SYLLABLE HNOP A179 YI SYLLABLE HNEX A17A YI SYLLABLE HNE A17B YI SYLLABLE HNEP A17C YI SYLLABLE HNUT A17D YI SYLLABLE NIT A17E YI SYLLABLE NIX A17F YI SYLLABLE NI A180 YI SYLLABLE NIP A181 YI SYLLABLE NIEX A182 YI SYLLABLE NIE A183 YI SYLLABLE NIEP A184 YI SYLLABLE NAX A185 YI SYLLABLE NA A186 YI SYLLABLE NAP A187 YI SYLLABLE NUOX A188 YI SYLLABLE NUO A189 YI SYLLABLE NUOP A18A YI SYLLABLE NOT A18B YI SYLLABLE NOX A18C YI SYLLABLE NO A18D YI SYLLABLE NOP A18E YI SYLLABLE NEX A18F YI SYLLABLE NE A190 YI SYLLABLE NEP A191 YI SYLLABLE NUT A192 YI SYLLABLE NUX A193 YI SYLLABLE NU A194 YI SYLLABLE NUP A195 YI SYLLABLE NURX A196 YI SYLLABLE NUR A197 YI SYLLABLE HLIT A198 YI SYLLABLE HLIX A199 YI SYLLABLE HLI A19A YI SYLLABLE HLIP A19B YI SYLLABLE HLIEX A19C YI SYLLABLE HLIE A19D YI SYLLABLE HLIEP A19E YI SYLLABLE HLAT A19F YI SYLLABLE HLAX A1A0 YI SYLLABLE HLA A1A1 YI SYLLABLE HLAP A1A2 YI SYLLABLE HLUOX A1A3 YI SYLLABLE HLUO A1A4 YI SYLLABLE HLUOP A1A5 YI SYLLABLE HLOX A1A6 YI SYLLABLE HLO A1A7 YI SYLLABLE HLOP A1A8 YI SYLLABLE HLEX A1A9 YI SYLLABLE HLE A1AA YI SYLLABLE HLEP A1AB YI SYLLABLE HLUT A1AC YI SYLLABLE HLUX A1AD YI SYLLABLE HLU A1AE YI SYLLABLE HLUP A1AF YI SYLLABLE HLURX A1B0 YI SYLLABLE HLUR A1B1 YI SYLLABLE HLYT A1B2 YI SYLLABLE HLYX A1B3 YI SYLLABLE HLY A1B4 YI SYLLABLE HLYP A1B5 YI SYLLABLE HLYRX A1B6 YI SYLLABLE HLYR A1B7 YI SYLLABLE LIT A1B8 YI SYLLABLE LIX A1B9 YI SYLLABLE LI A1BA YI SYLLABLE LIP A1BB YI SYLLABLE LIET A1BC YI SYLLABLE LIEX A1BD YI SYLLABLE LIE A1BE YI SYLLABLE LIEP A1BF YI SYLLABLE LAT A1C0 YI SYLLABLE LAX A1C1 YI SYLLABLE LA A1C2 YI SYLLABLE LAP A1C3 YI SYLLABLE LUOT A1C4 YI SYLLABLE LUOX A1C5 YI SYLLABLE LUO A1C6 YI SYLLABLE LUOP A1C7 YI SYLLABLE LOT A1C8 YI SYLLABLE LOX A1C9 YI SYLLABLE LO A1CA YI SYLLABLE LOP A1CB YI SYLLABLE LEX A1CC YI SYLLABLE LE A1CD YI SYLLABLE LEP A1CE YI SYLLABLE LUT A1CF YI SYLLABLE LUX A1D0 YI SYLLABLE LU A1D1 YI SYLLABLE LUP A1D2 YI SYLLABLE LURX A1D3 YI SYLLABLE LUR A1D4 YI SYLLABLE LYT A1D5 YI SYLLABLE LYX A1D6 YI SYLLABLE LY A1D7 YI SYLLABLE LYP A1D8 YI SYLLABLE LYRX A1D9 YI SYLLABLE LYR A1DA YI SYLLABLE GIT A1DB YI SYLLABLE GIX A1DC YI SYLLABLE GI A1DD YI SYLLABLE GIP A1DE YI SYLLABLE GIET A1DF YI SYLLABLE GIEX A1E0 YI SYLLABLE GIE A1E1 YI SYLLABLE GIEP A1E2 YI SYLLABLE GAT A1E3 YI SYLLABLE GAX A1E4 YI SYLLABLE GA A1E5 YI SYLLABLE GAP A1E6 YI SYLLABLE GUOT A1E7 YI SYLLABLE GUOX A1E8 YI SYLLABLE GUO A1E9 YI SYLLABLE GUOP A1EA YI SYLLABLE GOT A1EB YI SYLLABLE GOX A1EC YI SYLLABLE GO A1ED YI SYLLABLE GOP A1EE YI SYLLABLE GET A1EF YI SYLLABLE GEX A1F0 YI SYLLABLE GE A1F1 YI SYLLABLE GEP A1F2 YI SYLLABLE GUT A1F3 YI SYLLABLE GUX A1F4 YI SYLLABLE GU A1F5 YI SYLLABLE GUP A1F6 YI SYLLABLE GURX A1F7 YI SYLLABLE GUR A1F8 YI SYLLABLE KIT A1F9 YI SYLLABLE KIX A1FA YI SYLLABLE KI A1FB YI SYLLABLE KIP A1FC YI SYLLABLE KIEX A1FD YI SYLLABLE KIE A1FE YI SYLLABLE KIEP A1FF YI SYLLABLE KAT A200 YI SYLLABLE KAX A201 YI SYLLABLE KA A202 YI SYLLABLE KAP A203 YI SYLLABLE KUOX A204 YI SYLLABLE KUO A205 YI SYLLABLE KUOP A206 YI SYLLABLE KOT A207 YI SYLLABLE KOX A208 YI SYLLABLE KO A209 YI SYLLABLE KOP A20A YI SYLLABLE KET A20B YI SYLLABLE KEX A20C YI SYLLABLE KE A20D YI SYLLABLE KEP A20E YI SYLLABLE KUT A20F YI SYLLABLE KUX A210 YI SYLLABLE KU A211 YI SYLLABLE KUP A212 YI SYLLABLE KURX A213 YI SYLLABLE KUR A214 YI SYLLABLE GGIT A215 YI SYLLABLE GGIX A216 YI SYLLABLE GGI A217 YI SYLLABLE GGIEX A218 YI SYLLABLE GGIE A219 YI SYLLABLE GGIEP A21A YI SYLLABLE GGAT A21B YI SYLLABLE GGAX A21C YI SYLLABLE GGA A21D YI SYLLABLE GGAP A21E YI SYLLABLE GGUOT A21F YI SYLLABLE GGUOX A220 YI SYLLABLE GGUO A221 YI SYLLABLE GGUOP A222 YI SYLLABLE GGOT A223 YI SYLLABLE GGOX A224 YI SYLLABLE GGO A225 YI SYLLABLE GGOP A226 YI SYLLABLE GGET A227 YI SYLLABLE GGEX A228 YI SYLLABLE GGE A229 YI SYLLABLE GGEP A22A YI SYLLABLE GGUT A22B YI SYLLABLE GGUX A22C YI SYLLABLE GGU A22D YI SYLLABLE GGUP A22E YI SYLLABLE GGURX A22F YI SYLLABLE GGUR A230 YI SYLLABLE MGIEX A231 YI SYLLABLE MGIE A232 YI SYLLABLE MGAT A233 YI SYLLABLE MGAX A234 YI SYLLABLE MGA A235 YI SYLLABLE MGAP A236 YI SYLLABLE MGUOX A237 YI SYLLABLE MGUO A238 YI SYLLABLE MGUOP A239 YI SYLLABLE MGOT A23A YI SYLLABLE MGOX A23B YI SYLLABLE MGO A23C YI SYLLABLE MGOP A23D YI SYLLABLE MGEX A23E YI SYLLABLE MGE A23F YI SYLLABLE MGEP A240 YI SYLLABLE MGUT A241 YI SYLLABLE MGUX A242 YI SYLLABLE MGU A243 YI SYLLABLE MGUP A244 YI SYLLABLE MGURX A245 YI SYLLABLE MGUR A246 YI SYLLABLE HXIT A247 YI SYLLABLE HXIX A248 YI SYLLABLE HXI A249 YI SYLLABLE HXIP A24A YI SYLLABLE HXIET A24B YI SYLLABLE HXIEX A24C YI SYLLABLE HXIE A24D YI SYLLABLE HXIEP A24E YI SYLLABLE HXAT A24F YI SYLLABLE HXAX A250 YI SYLLABLE HXA A251 YI SYLLABLE HXAP A252 YI SYLLABLE HXUOT A253 YI SYLLABLE HXUOX A254 YI SYLLABLE HXUO A255 YI SYLLABLE HXUOP A256 YI SYLLABLE HXOT A257 YI SYLLABLE HXOX A258 YI SYLLABLE HXO A259 YI SYLLABLE HXOP A25A YI SYLLABLE HXEX A25B YI SYLLABLE HXE A25C YI SYLLABLE HXEP A25D YI SYLLABLE NGIEX A25E YI SYLLABLE NGIE A25F YI SYLLABLE NGIEP A260 YI SYLLABLE NGAT A261 YI SYLLABLE NGAX A262 YI SYLLABLE NGA A263 YI SYLLABLE NGAP A264 YI SYLLABLE NGUOT A265 YI SYLLABLE NGUOX A266 YI SYLLABLE NGUO A267 YI SYLLABLE NGOT A268 YI SYLLABLE NGOX A269 YI SYLLABLE NGO A26A YI SYLLABLE NGOP A26B YI SYLLABLE NGEX A26C YI SYLLABLE NGE A26D YI SYLLABLE NGEP A26E YI SYLLABLE HIT A26F YI SYLLABLE HIEX A270 YI SYLLABLE HIE A271 YI SYLLABLE HAT A272 YI SYLLABLE HAX A273 YI SYLLABLE HA A274 YI SYLLABLE HAP A275 YI SYLLABLE HUOT A276 YI SYLLABLE HUOX A277 YI SYLLABLE HUO A278 YI SYLLABLE HUOP A279 YI SYLLABLE HOT A27A YI SYLLABLE HOX A27B YI SYLLABLE HO A27C YI SYLLABLE HOP A27D YI SYLLABLE HEX A27E YI SYLLABLE HE A27F YI SYLLABLE HEP A280 YI SYLLABLE WAT A281 YI SYLLABLE WAX A282 YI SYLLABLE WA A283 YI SYLLABLE WAP A284 YI SYLLABLE WUOX A285 YI SYLLABLE WUO A286 YI SYLLABLE WUOP A287 YI SYLLABLE WOX A288 YI SYLLABLE WO A289 YI SYLLABLE WOP A28A YI SYLLABLE WEX A28B YI SYLLABLE WE A28C YI SYLLABLE WEP A28D YI SYLLABLE ZIT A28E YI SYLLABLE ZIX A28F YI SYLLABLE ZI A290 YI SYLLABLE ZIP A291 YI SYLLABLE ZIEX A292 YI SYLLABLE ZIE A293 YI SYLLABLE ZIEP A294 YI SYLLABLE ZAT A295 YI SYLLABLE ZAX A296 YI SYLLABLE ZA A297 YI SYLLABLE ZAP A298 YI SYLLABLE ZUOX A299 YI SYLLABLE ZUO A29A YI SYLLABLE ZUOP A29B YI SYLLABLE ZOT A29C YI SYLLABLE ZOX A29D YI SYLLABLE ZO A29E YI SYLLABLE ZOP A29F YI SYLLABLE ZEX A2A0 YI SYLLABLE ZE A2A1 YI SYLLABLE ZEP A2A2 YI SYLLABLE ZUT A2A3 YI SYLLABLE ZUX A2A4 YI SYLLABLE ZU A2A5 YI SYLLABLE ZUP A2A6 YI SYLLABLE ZURX A2A7 YI SYLLABLE ZUR A2A8 YI SYLLABLE ZYT A2A9 YI SYLLABLE ZYX A2AA YI SYLLABLE ZY A2AB YI SYLLABLE ZYP A2AC YI SYLLABLE ZYRX A2AD YI SYLLABLE ZYR A2AE YI SYLLABLE CIT A2AF YI SYLLABLE CIX A2B0 YI SYLLABLE CI A2B1 YI SYLLABLE CIP A2B2 YI SYLLABLE CIET A2B3 YI SYLLABLE CIEX A2B4 YI SYLLABLE CIE A2B5 YI SYLLABLE CIEP A2B6 YI SYLLABLE CAT A2B7 YI SYLLABLE CAX A2B8 YI SYLLABLE CA A2B9 YI SYLLABLE CAP A2BA YI SYLLABLE CUOX A2BB YI SYLLABLE CUO A2BC YI SYLLABLE CUOP A2BD YI SYLLABLE COT A2BE YI SYLLABLE COX A2BF YI SYLLABLE CO A2C0 YI SYLLABLE COP A2C1 YI SYLLABLE CEX A2C2 YI SYLLABLE CE A2C3 YI SYLLABLE CEP A2C4 YI SYLLABLE CUT A2C5 YI SYLLABLE CUX A2C6 YI SYLLABLE CU A2C7 YI SYLLABLE CUP A2C8 YI SYLLABLE CURX A2C9 YI SYLLABLE CUR A2CA YI SYLLABLE CYT A2CB YI SYLLABLE CYX A2CC YI SYLLABLE CY A2CD YI SYLLABLE CYP A2CE YI SYLLABLE CYRX A2CF YI SYLLABLE CYR A2D0 YI SYLLABLE ZZIT A2D1 YI SYLLABLE ZZIX A2D2 YI SYLLABLE ZZI A2D3 YI SYLLABLE ZZIP A2D4 YI SYLLABLE ZZIET A2D5 YI SYLLABLE ZZIEX A2D6 YI SYLLABLE ZZIE A2D7 YI SYLLABLE ZZIEP A2D8 YI SYLLABLE ZZAT A2D9 YI SYLLABLE ZZAX A2DA YI SYLLABLE ZZA A2DB YI SYLLABLE ZZAP A2DC YI SYLLABLE ZZOX A2DD YI SYLLABLE ZZO A2DE YI SYLLABLE ZZOP A2DF YI SYLLABLE ZZEX A2E0 YI SYLLABLE ZZE A2E1 YI SYLLABLE ZZEP A2E2 YI SYLLABLE ZZUX A2E3 YI SYLLABLE ZZU A2E4 YI SYLLABLE ZZUP A2E5 YI SYLLABLE ZZURX A2E6 YI SYLLABLE ZZUR A2E7 YI SYLLABLE ZZYT A2E8 YI SYLLABLE ZZYX A2E9 YI SYLLABLE ZZY A2EA YI SYLLABLE ZZYP A2EB YI SYLLABLE ZZYRX A2EC YI SYLLABLE ZZYR A2ED YI SYLLABLE NZIT A2EE YI SYLLABLE NZIX A2EF YI SYLLABLE NZI A2F0 YI SYLLABLE NZIP A2F1 YI SYLLABLE NZIEX A2F2 YI SYLLABLE NZIE A2F3 YI SYLLABLE NZIEP A2F4 YI SYLLABLE NZAT A2F5 YI SYLLABLE NZAX A2F6 YI SYLLABLE NZA A2F7 YI SYLLABLE NZAP A2F8 YI SYLLABLE NZUOX A2F9 YI SYLLABLE NZUO A2FA YI SYLLABLE NZOX A2FB YI SYLLABLE NZOP A2FC YI SYLLABLE NZEX A2FD YI SYLLABLE NZE A2FE YI SYLLABLE NZUX A2FF YI SYLLABLE NZU A300 YI SYLLABLE NZUP A301 YI SYLLABLE NZURX A302 YI SYLLABLE NZUR A303 YI SYLLABLE NZYT A304 YI SYLLABLE NZYX A305 YI SYLLABLE NZY A306 YI SYLLABLE NZYP A307 YI SYLLABLE NZYRX A308 YI SYLLABLE NZYR A309 YI SYLLABLE SIT A30A YI SYLLABLE SIX A30B YI SYLLABLE SI A30C YI SYLLABLE SIP A30D YI SYLLABLE SIEX A30E YI SYLLABLE SIE A30F YI SYLLABLE SIEP A310 YI SYLLABLE SAT A311 YI SYLLABLE SAX A312 YI SYLLABLE SA A313 YI SYLLABLE SAP A314 YI SYLLABLE SUOX A315 YI SYLLABLE SUO A316 YI SYLLABLE SUOP A317 YI SYLLABLE SOT A318 YI SYLLABLE SOX A319 YI SYLLABLE SO A31A YI SYLLABLE SOP A31B YI SYLLABLE SEX A31C YI SYLLABLE SE A31D YI SYLLABLE SEP A31E YI SYLLABLE SUT A31F YI SYLLABLE SUX A320 YI SYLLABLE SU A321 YI SYLLABLE SUP A322 YI SYLLABLE SURX A323 YI SYLLABLE SUR A324 YI SYLLABLE SYT A325 YI SYLLABLE SYX A326 YI SYLLABLE SY A327 YI SYLLABLE SYP A328 YI SYLLABLE SYRX A329 YI SYLLABLE SYR A32A YI SYLLABLE SSIT A32B YI SYLLABLE SSIX A32C YI SYLLABLE SSI A32D YI SYLLABLE SSIP A32E YI SYLLABLE SSIEX A32F YI SYLLABLE SSIE A330 YI SYLLABLE SSIEP A331 YI SYLLABLE SSAT A332 YI SYLLABLE SSAX A333 YI SYLLABLE SSA A334 YI SYLLABLE SSAP A335 YI SYLLABLE SSOT A336 YI SYLLABLE SSOX A337 YI SYLLABLE SSO A338 YI SYLLABLE SSOP A339 YI SYLLABLE SSEX A33A YI SYLLABLE SSE A33B YI SYLLABLE SSEP A33C YI SYLLABLE SSUT A33D YI SYLLABLE SSUX A33E YI SYLLABLE SSU A33F YI SYLLABLE SSUP A340 YI SYLLABLE SSYT A341 YI SYLLABLE SSYX A342 YI SYLLABLE SSY A343 YI SYLLABLE SSYP A344 YI SYLLABLE SSYRX A345 YI SYLLABLE SSYR A346 YI SYLLABLE ZHAT A347 YI SYLLABLE ZHAX A348 YI SYLLABLE ZHA A349 YI SYLLABLE ZHAP A34A YI SYLLABLE ZHUOX A34B YI SYLLABLE ZHUO A34C YI SYLLABLE ZHUOP A34D YI SYLLABLE ZHOT A34E YI SYLLABLE ZHOX A34F YI SYLLABLE ZHO A350 YI SYLLABLE ZHOP A351 YI SYLLABLE ZHET A352 YI SYLLABLE ZHEX A353 YI SYLLABLE ZHE A354 YI SYLLABLE ZHEP A355 YI SYLLABLE ZHUT A356 YI SYLLABLE ZHUX A357 YI SYLLABLE ZHU A358 YI SYLLABLE ZHUP A359 YI SYLLABLE ZHURX A35A YI SYLLABLE ZHUR A35B YI SYLLABLE ZHYT A35C YI SYLLABLE ZHYX A35D YI SYLLABLE ZHY A35E YI SYLLABLE ZHYP A35F YI SYLLABLE ZHYRX A360 YI SYLLABLE ZHYR A361 YI SYLLABLE CHAT A362 YI SYLLABLE CHAX A363 YI SYLLABLE CHA A364 YI SYLLABLE CHAP A365 YI SYLLABLE CHUOT A366 YI SYLLABLE CHUOX A367 YI SYLLABLE CHUO A368 YI SYLLABLE CHUOP A369 YI SYLLABLE CHOT A36A YI SYLLABLE CHOX A36B YI SYLLABLE CHO A36C YI SYLLABLE CHOP A36D YI SYLLABLE CHET A36E YI SYLLABLE CHEX A36F YI SYLLABLE CHE A370 YI SYLLABLE CHEP A371 YI SYLLABLE CHUX A372 YI SYLLABLE CHU A373 YI SYLLABLE CHUP A374 YI SYLLABLE CHURX A375 YI SYLLABLE CHUR A376 YI SYLLABLE CHYT A377 YI SYLLABLE CHYX A378 YI SYLLABLE CHY A379 YI SYLLABLE CHYP A37A YI SYLLABLE CHYRX A37B YI SYLLABLE CHYR A37C YI SYLLABLE RRAX A37D YI SYLLABLE RRA A37E YI SYLLABLE RRUOX A37F YI SYLLABLE RRUO A380 YI SYLLABLE RROT A381 YI SYLLABLE RROX A382 YI SYLLABLE RRO A383 YI SYLLABLE RROP A384 YI SYLLABLE RRET A385 YI SYLLABLE RREX A386 YI SYLLABLE RRE A387 YI SYLLABLE RREP A388 YI SYLLABLE RRUT A389 YI SYLLABLE RRUX A38A YI SYLLABLE RRU A38B YI SYLLABLE RRUP A38C YI SYLLABLE RRURX A38D YI SYLLABLE RRUR A38E YI SYLLABLE RRYT A38F YI SYLLABLE RRYX A390 YI SYLLABLE RRY A391 YI SYLLABLE RRYP A392 YI SYLLABLE RRYRX A393 YI SYLLABLE RRYR A394 YI SYLLABLE NRAT A395 YI SYLLABLE NRAX A396 YI SYLLABLE NRA A397 YI SYLLABLE NRAP A398 YI SYLLABLE NROX A399 YI SYLLABLE NRO A39A YI SYLLABLE NROP A39B YI SYLLABLE NRET A39C YI SYLLABLE NREX A39D YI SYLLABLE NRE A39E YI SYLLABLE NREP A39F YI SYLLABLE NRUT A3A0 YI SYLLABLE NRUX A3A1 YI SYLLABLE NRU A3A2 YI SYLLABLE NRUP A3A3 YI SYLLABLE NRURX A3A4 YI SYLLABLE NRUR A3A5 YI SYLLABLE NRYT A3A6 YI SYLLABLE NRYX A3A7 YI SYLLABLE NRY A3A8 YI SYLLABLE NRYP A3A9 YI SYLLABLE NRYRX A3AA YI SYLLABLE NRYR A3AB YI SYLLABLE SHAT A3AC YI SYLLABLE SHAX A3AD YI SYLLABLE SHA A3AE YI SYLLABLE SHAP A3AF YI SYLLABLE SHUOX A3B0 YI SYLLABLE SHUO A3B1 YI SYLLABLE SHUOP A3B2 YI SYLLABLE SHOT A3B3 YI SYLLABLE SHOX A3B4 YI SYLLABLE SHO A3B5 YI SYLLABLE SHOP A3B6 YI SYLLABLE SHET A3B7 YI SYLLABLE SHEX A3B8 YI SYLLABLE SHE A3B9 YI SYLLABLE SHEP A3BA YI SYLLABLE SHUT A3BB YI SYLLABLE SHUX A3BC YI SYLLABLE SHU A3BD YI SYLLABLE SHUP A3BE YI SYLLABLE SHURX A3BF YI SYLLABLE SHUR A3C0 YI SYLLABLE SHYT A3C1 YI SYLLABLE SHYX A3C2 YI SYLLABLE SHY A3C3 YI SYLLABLE SHYP A3C4 YI SYLLABLE SHYRX A3C5 YI SYLLABLE SHYR A3C6 YI SYLLABLE RAT A3C7 YI SYLLABLE RAX A3C8 YI SYLLABLE RA A3C9 YI SYLLABLE RAP A3CA YI SYLLABLE RUOX A3CB YI SYLLABLE RUO A3CC YI SYLLABLE RUOP A3CD YI SYLLABLE ROT A3CE YI SYLLABLE ROX A3CF YI SYLLABLE RO A3D0 YI SYLLABLE ROP A3D1 YI SYLLABLE REX A3D2 YI SYLLABLE RE A3D3 YI SYLLABLE REP A3D4 YI SYLLABLE RUT A3D5 YI SYLLABLE RUX A3D6 YI SYLLABLE RU A3D7 YI SYLLABLE RUP A3D8 YI SYLLABLE RURX A3D9 YI SYLLABLE RUR A3DA YI SYLLABLE RYT A3DB YI SYLLABLE RYX A3DC YI SYLLABLE RY A3DD YI SYLLABLE RYP A3DE YI SYLLABLE RYRX A3DF YI SYLLABLE RYR A3E0 YI SYLLABLE JIT A3E1 YI SYLLABLE JIX A3E2 YI SYLLABLE JI A3E3 YI SYLLABLE JIP A3E4 YI SYLLABLE JIET A3E5 YI SYLLABLE JIEX A3E6 YI SYLLABLE JIE A3E7 YI SYLLABLE JIEP A3E8 YI SYLLABLE JUOT A3E9 YI SYLLABLE JUOX A3EA YI SYLLABLE JUO A3EB YI SYLLABLE JUOP A3EC YI SYLLABLE JOT A3ED YI SYLLABLE JOX A3EE YI SYLLABLE JO A3EF YI SYLLABLE JOP A3F0 YI SYLLABLE JUT A3F1 YI SYLLABLE JUX A3F2 YI SYLLABLE JU A3F3 YI SYLLABLE JUP A3F4 YI SYLLABLE JURX A3F5 YI SYLLABLE JUR A3F6 YI SYLLABLE JYT A3F7 YI SYLLABLE JYX A3F8 YI SYLLABLE JY A3F9 YI SYLLABLE JYP A3FA YI SYLLABLE JYRX A3FB YI SYLLABLE JYR A3FC YI SYLLABLE QIT A3FD YI SYLLABLE QIX A3FE YI SYLLABLE QI A3FF YI SYLLABLE QIP A400 YI SYLLABLE QIET A401 YI SYLLABLE QIEX A402 YI SYLLABLE QIE A403 YI SYLLABLE QIEP A404 YI SYLLABLE QUOT A405 YI SYLLABLE QUOX A406 YI SYLLABLE QUO A407 YI SYLLABLE QUOP A408 YI SYLLABLE QOT A409 YI SYLLABLE QOX A40A YI SYLLABLE QO A40B YI SYLLABLE QOP A40C YI SYLLABLE QUT A40D YI SYLLABLE QUX A40E YI SYLLABLE QU A40F YI SYLLABLE QUP A410 YI SYLLABLE QURX A411 YI SYLLABLE QUR A412 YI SYLLABLE QYT A413 YI SYLLABLE QYX A414 YI SYLLABLE QY A415 YI SYLLABLE QYP A416 YI SYLLABLE QYRX A417 YI SYLLABLE QYR A418 YI SYLLABLE JJIT A419 YI SYLLABLE JJIX A41A YI SYLLABLE JJI A41B YI SYLLABLE JJIP A41C YI SYLLABLE JJIET A41D YI SYLLABLE JJIEX A41E YI SYLLABLE JJIE A41F YI SYLLABLE JJIEP A420 YI SYLLABLE JJUOX A421 YI SYLLABLE JJUO A422 YI SYLLABLE JJUOP A423 YI SYLLABLE JJOT A424 YI SYLLABLE JJOX A425 YI SYLLABLE JJO A426 YI SYLLABLE JJOP A427 YI SYLLABLE JJUT A428 YI SYLLABLE JJUX A429 YI SYLLABLE JJU A42A YI SYLLABLE JJUP A42B YI SYLLABLE JJURX A42C YI SYLLABLE JJUR A42D YI SYLLABLE JJYT A42E YI SYLLABLE JJYX A42F YI SYLLABLE JJY A430 YI SYLLABLE JJYP A431 YI SYLLABLE NJIT A432 YI SYLLABLE NJIX A433 YI SYLLABLE NJI A434 YI SYLLABLE NJIP A435 YI SYLLABLE NJIET A436 YI SYLLABLE NJIEX A437 YI SYLLABLE NJIE A438 YI SYLLABLE NJIEP A439 YI SYLLABLE NJUOX A43A YI SYLLABLE NJUO A43B YI SYLLABLE NJOT A43C YI SYLLABLE NJOX A43D YI SYLLABLE NJO A43E YI SYLLABLE NJOP A43F YI SYLLABLE NJUX A440 YI SYLLABLE NJU A441 YI SYLLABLE NJUP A442 YI SYLLABLE NJURX A443 YI SYLLABLE NJUR A444 YI SYLLABLE NJYT A445 YI SYLLABLE NJYX A446 YI SYLLABLE NJY A447 YI SYLLABLE NJYP A448 YI SYLLABLE NJYRX A449 YI SYLLABLE NJYR A44A YI SYLLABLE NYIT A44B YI SYLLABLE NYIX A44C YI SYLLABLE NYI A44D YI SYLLABLE NYIP A44E YI SYLLABLE NYIET A44F YI SYLLABLE NYIEX A450 YI SYLLABLE NYIE A451 YI SYLLABLE NYIEP A452 YI SYLLABLE NYUOX A453 YI SYLLABLE NYUO A454 YI SYLLABLE NYUOP A455 YI SYLLABLE NYOT A456 YI SYLLABLE NYOX A457 YI SYLLABLE NYO A458 YI SYLLABLE NYOP A459 YI SYLLABLE NYUT A45A YI SYLLABLE NYUX A45B YI SYLLABLE NYU A45C YI SYLLABLE NYUP A45D YI SYLLABLE XIT A45E YI SYLLABLE XIX A45F YI SYLLABLE XI A460 YI SYLLABLE XIP A461 YI SYLLABLE XIET A462 YI SYLLABLE XIEX A463 YI SYLLABLE XIE A464 YI SYLLABLE XIEP A465 YI SYLLABLE XUOX A466 YI SYLLABLE XUO A467 YI SYLLABLE XOT A468 YI SYLLABLE XOX A469 YI SYLLABLE XO A46A YI SYLLABLE XOP A46B YI SYLLABLE XYT A46C YI SYLLABLE XYX A46D YI SYLLABLE XY A46E YI SYLLABLE XYP A46F YI SYLLABLE XYRX A470 YI SYLLABLE XYR A471 YI SYLLABLE YIT A472 YI SYLLABLE YIX A473 YI SYLLABLE YI A474 YI SYLLABLE YIP A475 YI SYLLABLE YIET A476 YI SYLLABLE YIEX A477 YI SYLLABLE YIE A478 YI SYLLABLE YIEP A479 YI SYLLABLE YUOT A47A YI SYLLABLE YUOX A47B YI SYLLABLE YUO A47C YI SYLLABLE YUOP A47D YI SYLLABLE YOT A47E YI SYLLABLE YOX A47F YI SYLLABLE YO A480 YI SYLLABLE YOP A481 YI SYLLABLE YUT A482 YI SYLLABLE YUX A483 YI SYLLABLE YU A484 YI SYLLABLE YUP A485 YI SYLLABLE YURX A486 YI SYLLABLE YUR A487 YI SYLLABLE YYT A488 YI SYLLABLE YYX A489 YI SYLLABLE YY A48A YI SYLLABLE YYP A48B YI SYLLABLE YYRX A48C YI SYLLABLE YYR @@ A490 Yi Radicals A4CF @ Yi radicals @+ Yi radicals are named based on the Yi syllable their shape is abstracted from. This is illustrated with crossreferences for the first two radicals. A490 YI RADICAL QOT x (yi syllable qot - A408) A491 YI RADICAL LI x (yi syllable li - A1B9) A492 YI RADICAL KIT A493 YI RADICAL NYIP A494 YI RADICAL CYP A495 YI RADICAL SSI A496 YI RADICAL GGOP A497 YI RADICAL GEP A498 YI RADICAL MI A499 YI RADICAL HXIT A49A YI RADICAL LYR A49B YI RADICAL BBUT A49C YI RADICAL MOP A49D YI RADICAL YO A49E YI RADICAL PUT A49F YI RADICAL HXUO A4A0 YI RADICAL TAT A4A1 YI RADICAL GA A4A2 YI RADICAL ZUP A4A3 YI RADICAL CYT A4A4 YI RADICAL DDUR A4A5 YI RADICAL BUR A4A6 YI RADICAL GGUO A4A7 YI RADICAL NYOP A4A8 YI RADICAL TU A4A9 YI RADICAL OP A4AA YI RADICAL JJUT A4AB YI RADICAL ZOT A4AC YI RADICAL PYT A4AD YI RADICAL HMO A4AE YI RADICAL YIT A4AF YI RADICAL VUR A4B0 YI RADICAL SHY A4B1 YI RADICAL VEP A4B2 YI RADICAL ZA A4B3 YI RADICAL JO A4B4 YI RADICAL NZUP A4B5 YI RADICAL JJY A4B6 YI RADICAL GOT A4B7 YI RADICAL JJIE A4B8 YI RADICAL WO A4B9 YI RADICAL DU A4BA YI RADICAL SHUR A4BB YI RADICAL LIE A4BC YI RADICAL CY A4BD YI RADICAL CUOP A4BE YI RADICAL CIP A4BF YI RADICAL HXOP A4C0 YI RADICAL SHAT A4C1 YI RADICAL ZUR A4C2 YI RADICAL SHOP A4C3 YI RADICAL CHE A4C4 YI RADICAL ZZIET A4C5 YI RADICAL NBIE A4C6 YI RADICAL KE @@ A4D0 Lisu A4FF @+ The name "Lisu" is preferred by the user community. Many linguists also use the name "Fraser" or "Fraser Lisu". Used for the Old Lisu orthography. @ Consonants A4D0 LISU LETTER BA A4D1 LISU LETTER PA A4D2 LISU LETTER PHA A4D3 LISU LETTER DA A4D4 LISU LETTER TA A4D5 LISU LETTER THA A4D6 LISU LETTER GA A4D7 LISU LETTER KA A4D8 LISU LETTER KHA A4D9 LISU LETTER JA A4DA LISU LETTER CA A4DB LISU LETTER CHA A4DC LISU LETTER DZA A4DD LISU LETTER TSA A4DE LISU LETTER TSHA A4DF LISU LETTER MA A4E0 LISU LETTER NA A4E1 LISU LETTER LA A4E2 LISU LETTER SA A4E3 LISU LETTER ZHA A4E4 LISU LETTER ZA A4E5 LISU LETTER NGA A4E6 LISU LETTER HA A4E7 LISU LETTER XA A4E8 LISU LETTER HHA A4E9 LISU LETTER FA A4EA LISU LETTER WA A4EB LISU LETTER SHA A4EC LISU LETTER YA A4ED LISU LETTER GHA @ Vowels A4EE LISU LETTER A A4EF LISU LETTER AE A4F0 LISU LETTER E A4F1 LISU LETTER EU A4F2 LISU LETTER I A4F3 LISU LETTER O A4F4 LISU LETTER U A4F5 LISU LETTER UE A4F6 LISU LETTER UH A4F7 LISU LETTER OE @ Tones A4F8 LISU LETTER TONE MYA TI A4F9 LISU LETTER TONE NA PO A4FA LISU LETTER TONE MYA CYA A4FB LISU LETTER TONE MYA BO A4FC LISU LETTER TONE MYA NA A4FD LISU LETTER TONE MYA JEU @ Punctuation A4FE LISU PUNCTUATION COMMA A4FF LISU PUNCTUATION FULL STOP @@ A500 Vai A63F @ Syllables in -ee A500 VAI SYLLABLE EE A501 VAI SYLLABLE EEN A502 VAI SYLLABLE HEE A503 VAI SYLLABLE WEE A504 VAI SYLLABLE WEEN A505 VAI SYLLABLE PEE A506 VAI SYLLABLE BHEE A507 VAI SYLLABLE BEE A508 VAI SYLLABLE MBEE A509 VAI SYLLABLE KPEE A50A VAI SYLLABLE MGBEE A50B VAI SYLLABLE GBEE A50C VAI SYLLABLE FEE A50D VAI SYLLABLE VEE A50E VAI SYLLABLE TEE A50F VAI SYLLABLE THEE A510 VAI SYLLABLE DHEE A511 VAI SYLLABLE DHHEE A512 VAI SYLLABLE LEE A513 VAI SYLLABLE REE A514 VAI SYLLABLE DEE * read as logogram deeng "child, small" in the Book of Ndole A515 VAI SYLLABLE NDEE A516 VAI SYLLABLE SEE A517 VAI SYLLABLE SHEE A518 VAI SYLLABLE ZEE A519 VAI SYLLABLE ZHEE A51A VAI SYLLABLE CEE A51B VAI SYLLABLE JEE A51C VAI SYLLABLE NJEE A51D VAI SYLLABLE YEE A51E VAI SYLLABLE KEE A51F VAI SYLLABLE NGGEE A520 VAI SYLLABLE GEE A521 VAI SYLLABLE MEE A522 VAI SYLLABLE NEE A523 VAI SYLLABLE NYEE @ Syllables in -i A524 VAI SYLLABLE I A525 VAI SYLLABLE IN A526 VAI SYLLABLE HI A527 VAI SYLLABLE HIN A528 VAI SYLLABLE WI A529 VAI SYLLABLE WIN A52A VAI SYLLABLE PI A52B VAI SYLLABLE BHI A52C VAI SYLLABLE BI A52D VAI SYLLABLE MBI A52E VAI SYLLABLE KPI A52F VAI SYLLABLE MGBI A530 VAI SYLLABLE GBI A531 VAI SYLLABLE FI A532 VAI SYLLABLE VI A533 VAI SYLLABLE TI A534 VAI SYLLABLE THI A535 VAI SYLLABLE DHI A536 VAI SYLLABLE DHHI A537 VAI SYLLABLE LI A538 VAI SYLLABLE RI A539 VAI SYLLABLE DI A53A VAI SYLLABLE NDI A53B VAI SYLLABLE SI A53C VAI SYLLABLE SHI A53D VAI SYLLABLE ZI A53E VAI SYLLABLE ZHI A53F VAI SYLLABLE CI A540 VAI SYLLABLE JI A541 VAI SYLLABLE NJI A542 VAI SYLLABLE YI A543 VAI SYLLABLE KI A544 VAI SYLLABLE NGGI A545 VAI SYLLABLE GI A546 VAI SYLLABLE MI A547 VAI SYLLABLE NI A548 VAI SYLLABLE NYI @ Syllables in -a A549 VAI SYLLABLE A A54A VAI SYLLABLE AN A54B VAI SYLLABLE NGAN A54C VAI SYLLABLE HA A54D VAI SYLLABLE HAN A54E VAI SYLLABLE WA A54F VAI SYLLABLE WAN A550 VAI SYLLABLE PA A551 VAI SYLLABLE BHA A552 VAI SYLLABLE BA A553 VAI SYLLABLE MBA A554 VAI SYLLABLE KPA A555 VAI SYLLABLE KPAN A556 VAI SYLLABLE MGBA A557 VAI SYLLABLE GBA A558 VAI SYLLABLE FA x (vai syllable ndole fa - A610) A559 VAI SYLLABLE VA A55A VAI SYLLABLE TA A55B VAI SYLLABLE THA A55C VAI SYLLABLE DHA A55D VAI SYLLABLE DHHA A55E VAI SYLLABLE LA A55F VAI SYLLABLE RA A560 VAI SYLLABLE DA A561 VAI SYLLABLE NDA A562 VAI SYLLABLE SA A563 VAI SYLLABLE SHA A564 VAI SYLLABLE ZA A565 VAI SYLLABLE ZHA A566 VAI SYLLABLE CA A567 VAI SYLLABLE JA A568 VAI SYLLABLE NJA A569 VAI SYLLABLE YA A56A VAI SYLLABLE KA * read as logogram kai "man" in the Book of Ndole x (vai syllable ndole ka - A611) A56B VAI SYLLABLE KAN A56C VAI SYLLABLE NGGA A56D VAI SYLLABLE GA A56E VAI SYLLABLE MA x (vai syllable ndole ma - A62A) A56F VAI SYLLABLE NA A570 VAI SYLLABLE NYA @ Syllables in -oo A571 VAI SYLLABLE OO A572 VAI SYLLABLE OON A573 VAI SYLLABLE HOO A574 VAI SYLLABLE WOO A575 VAI SYLLABLE WOON A576 VAI SYLLABLE POO A577 VAI SYLLABLE BHOO A578 VAI SYLLABLE BOO A579 VAI SYLLABLE MBOO A57A VAI SYLLABLE KPOO A57B VAI SYLLABLE MGBOO A57C VAI SYLLABLE GBOO A57D VAI SYLLABLE FOO A57E VAI SYLLABLE VOO A57F VAI SYLLABLE TOO A580 VAI SYLLABLE THOO A581 VAI SYLLABLE DHOO A582 VAI SYLLABLE DHHOO A583 VAI SYLLABLE LOO A584 VAI SYLLABLE ROO A585 VAI SYLLABLE DOO A586 VAI SYLLABLE NDOO A587 VAI SYLLABLE SOO x (vai syllable ndole soo - A612) A588 VAI SYLLABLE SHOO A589 VAI SYLLABLE ZOO A58A VAI SYLLABLE ZHOO A58B VAI SYLLABLE COO A58C VAI SYLLABLE JOO A58D VAI SYLLABLE NJOO A58E VAI SYLLABLE YOO A58F VAI SYLLABLE KOO A590 VAI SYLLABLE NGGOO A591 VAI SYLLABLE GOO A592 VAI SYLLABLE MOO A593 VAI SYLLABLE NOO A594 VAI SYLLABLE NYOO @ Syllables in -u A595 VAI SYLLABLE U A596 VAI SYLLABLE UN A597 VAI SYLLABLE HU A598 VAI SYLLABLE HUN A599 VAI SYLLABLE WU A59A VAI SYLLABLE WUN A59B VAI SYLLABLE PU A59C VAI SYLLABLE BHU A59D VAI SYLLABLE BU A59E VAI SYLLABLE MBU A59F VAI SYLLABLE KPU A5A0 VAI SYLLABLE MGBU A5A1 VAI SYLLABLE GBU A5A2 VAI SYLLABLE FU A5A3 VAI SYLLABLE VU A5A4 VAI SYLLABLE TU A5A5 VAI SYLLABLE THU A5A6 VAI SYLLABLE DHU A5A7 VAI SYLLABLE DHHU A5A8 VAI SYLLABLE LU A5A9 VAI SYLLABLE RU A5AA VAI SYLLABLE DU A5AB VAI SYLLABLE NDU A5AC VAI SYLLABLE SU A5AD VAI SYLLABLE SHU A5AE VAI SYLLABLE ZU A5AF VAI SYLLABLE ZHU A5B0 VAI SYLLABLE CU A5B1 VAI SYLLABLE JU A5B2 VAI SYLLABLE NJU A5B3 VAI SYLLABLE YU A5B4 VAI SYLLABLE KU A5B5 VAI SYLLABLE NGGU A5B6 VAI SYLLABLE GU A5B7 VAI SYLLABLE MU A5B8 VAI SYLLABLE NU A5B9 VAI SYLLABLE NYU @ Syllables in -o A5BA VAI SYLLABLE O A5BB VAI SYLLABLE ON A5BC VAI SYLLABLE NGON A5BD VAI SYLLABLE HO A5BE VAI SYLLABLE HON A5BF VAI SYLLABLE WO A5C0 VAI SYLLABLE WON A5C1 VAI SYLLABLE PO A5C2 VAI SYLLABLE BHO A5C3 VAI SYLLABLE BO A5C4 VAI SYLLABLE MBO A5C5 VAI SYLLABLE KPO A5C6 VAI SYLLABLE MGBO A5C7 VAI SYLLABLE GBO A5C8 VAI SYLLABLE GBON A5C9 VAI SYLLABLE FO A5CA VAI SYLLABLE VO A5CB VAI SYLLABLE TO A5CC VAI SYLLABLE THO A5CD VAI SYLLABLE DHO A5CE VAI SYLLABLE DHHO A5CF VAI SYLLABLE LO A5D0 VAI SYLLABLE RO A5D1 VAI SYLLABLE DO * read as logogram lo "in" in the Book of Ndole x (vai syllable ndole do - A62B) A5D2 VAI SYLLABLE NDO A5D3 VAI SYLLABLE SO A5D4 VAI SYLLABLE SHO A5D5 VAI SYLLABLE ZO A5D6 VAI SYLLABLE ZHO A5D7 VAI SYLLABLE CO A5D8 VAI SYLLABLE JO A5D9 VAI SYLLABLE NJO A5DA VAI SYLLABLE YO A5DB VAI SYLLABLE KO A5DC VAI SYLLABLE NGGO A5DD VAI SYLLABLE GO A5DE VAI SYLLABLE MO A5DF VAI SYLLABLE NO A5E0 VAI SYLLABLE NYO @ Syllables in -e A5E1 VAI SYLLABLE E A5E2 VAI SYLLABLE EN A5E3 VAI SYLLABLE NGEN A5E4 VAI SYLLABLE HE A5E5 VAI SYLLABLE HEN A5E6 VAI SYLLABLE WE A5E7 VAI SYLLABLE WEN A5E8 VAI SYLLABLE PE A5E9 VAI SYLLABLE BHE A5EA VAI SYLLABLE BE A5EB VAI SYLLABLE MBE A5EC VAI SYLLABLE KPE A5ED VAI SYLLABLE KPEN A5EE VAI SYLLABLE MGBE A5EF VAI SYLLABLE GBE A5F0 VAI SYLLABLE GBEN A5F1 VAI SYLLABLE FE A5F2 VAI SYLLABLE VE A5F3 VAI SYLLABLE TE A5F4 VAI SYLLABLE THE A5F5 VAI SYLLABLE DHE A5F6 VAI SYLLABLE DHHE A5F7 VAI SYLLABLE LE A5F8 VAI SYLLABLE RE A5F9 VAI SYLLABLE DE A5FA VAI SYLLABLE NDE A5FB VAI SYLLABLE SE A5FC VAI SYLLABLE SHE A5FD VAI SYLLABLE ZE A5FE VAI SYLLABLE ZHE A5FF VAI SYLLABLE CE A600 VAI SYLLABLE JE A601 VAI SYLLABLE NJE A602 VAI SYLLABLE YE A603 VAI SYLLABLE KE A604 VAI SYLLABLE NGGE A605 VAI SYLLABLE NGGEN A606 VAI SYLLABLE GE A607 VAI SYLLABLE GEN A608 VAI SYLLABLE ME A609 VAI SYLLABLE NE A60A VAI SYLLABLE NYE @ Syllable finals A60B VAI SYLLABLE NG A60C VAI SYLLABLE LENGTHENER @ Punctuation A60D VAI COMMA A60E VAI FULL STOP A60F VAI QUESTION MARK @ Historic syllables A610 VAI SYLLABLE NDOLE FA x (vai syllable fa - A558) A611 VAI SYLLABLE NDOLE KA x (vai syllable ka - A56A) A612 VAI SYLLABLE NDOLE SOO x (vai syllable soo - A587) @ Logograms A613 VAI SYMBOL FEENG * logogram for "thing" A614 VAI SYMBOL KEENG * logogram for "foot" A615 VAI SYMBOL TING * logogram for "island" A616 VAI SYMBOL NII * logogram for "cow" * also logogram for kpe kowu "case of gin" A617 VAI SYMBOL BANG * logogram for "finished" A618 VAI SYMBOL FAA * logogram for "die, kill" A619 VAI SYMBOL TAA * logogram for "go, carry, journey" A61A VAI SYMBOL DANG * logogram for "hear, understand" A61B VAI SYMBOL DOONG * logogram for "enter" A61C VAI SYMBOL KUNG * logogram for "head, be able" A61D VAI SYMBOL TONG * logogram for "be named" A61E VAI SYMBOL DO-O * logogram for "be small" A61F VAI SYMBOL JONG * logogram for "slave" @ Digits @+ These are not in modern use. A620 VAI DIGIT ZERO A621 VAI DIGIT ONE A622 VAI DIGIT TWO A623 VAI DIGIT THREE A624 VAI DIGIT FOUR A625 VAI DIGIT FIVE A626 VAI DIGIT SIX A627 VAI DIGIT SEVEN A628 VAI DIGIT EIGHT A629 VAI DIGIT NINE @ Historic syllables A62A VAI SYLLABLE NDOLE MA x (vai syllable ma - A56E) A62B VAI SYLLABLE NDOLE DO x (vai syllable do - A5D1) @@ A640 Cyrillic Extended-B A69F @ Letters for Old Cyrillic A640 CYRILLIC CAPITAL LETTER ZEMLYA A641 CYRILLIC SMALL LETTER ZEMLYA x (cyrillic small letter ze - 0437) A642 CYRILLIC CAPITAL LETTER DZELO A643 CYRILLIC SMALL LETTER DZELO x (cyrillic small letter dze - 0455) A644 CYRILLIC CAPITAL LETTER REVERSED DZE x (roman sextula sign - 10193) A645 CYRILLIC SMALL LETTER REVERSED DZE A646 CYRILLIC CAPITAL LETTER IOTA A647 CYRILLIC SMALL LETTER IOTA x (glagolitic small letter initial izhe - 2C3A) A648 CYRILLIC CAPITAL LETTER DJERV A649 CYRILLIC SMALL LETTER DJERV x (cyrillic small letter dje - 0452) x (cyrillic small letter tshe - 045B) A64A CYRILLIC CAPITAL LETTER MONOGRAPH UK A64B CYRILLIC SMALL LETTER MONOGRAPH UK x (cyrillic small letter u - 0443) A64C CYRILLIC CAPITAL LETTER BROAD OMEGA A64D CYRILLIC SMALL LETTER BROAD OMEGA x (cyrillic small letter omega - 0461) A64E CYRILLIC CAPITAL LETTER NEUTRAL YER A64F CYRILLIC SMALL LETTER NEUTRAL YER x (cyrillic small letter hard sign - 044A) x (cyrillic small letter soft sign - 044C) A650 CYRILLIC CAPITAL LETTER YERU WITH BACK YER A651 CYRILLIC SMALL LETTER YERU WITH BACK YER x (cyrillic small letter yeru - 044B) A652 CYRILLIC CAPITAL LETTER IOTIFIED YAT A653 CYRILLIC SMALL LETTER IOTIFIED YAT x (cyrillic small letter yat - 0463) A654 CYRILLIC CAPITAL LETTER REVERSED YU A655 CYRILLIC SMALL LETTER REVERSED YU x (cyrillic small letter yu - 044E) A656 CYRILLIC CAPITAL LETTER IOTIFIED A A657 CYRILLIC SMALL LETTER IOTIFIED A A658 CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS A659 CYRILLIC SMALL LETTER CLOSED LITTLE YUS x (cyrillic small letter little yus - 0467) A65A CYRILLIC CAPITAL LETTER BLENDED YUS A65B CYRILLIC SMALL LETTER BLENDED YUS x (cyrillic small letter little yus - 0467) x (cyrillic small letter big yus - 046B) A65C CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS A65D CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS x (cyrillic small letter iotified little yus - 0469) A65E CYRILLIC CAPITAL LETTER YN A65F CYRILLIC SMALL LETTER YN * Romanian Cyrillic A660 CYRILLIC CAPITAL LETTER REVERSED TSE A661 CYRILLIC SMALL LETTER REVERSED TSE A662 CYRILLIC CAPITAL LETTER SOFT DE A663 CYRILLIC SMALL LETTER SOFT DE A664 CYRILLIC CAPITAL LETTER SOFT EL A665 CYRILLIC SMALL LETTER SOFT EL A666 CYRILLIC CAPITAL LETTER SOFT EM A667 CYRILLIC SMALL LETTER SOFT EM A668 CYRILLIC CAPITAL LETTER MONOCULAR O A669 CYRILLIC SMALL LETTER MONOCULAR O * used in words based on the root for 'eye' A66A CYRILLIC CAPITAL LETTER BINOCULAR O A66B CYRILLIC SMALL LETTER BINOCULAR O * used in the dual of words based on the root for 'eye' A66C CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O A66D CYRILLIC SMALL LETTER DOUBLE MONOCULAR O * used in the dual of words based on the root for 'eye' A66E CYRILLIC LETTER MULTIOCULAR O * used in the epithet 'many-eyed' @ Abbreviation mark A66F COMBINING CYRILLIC VZMET * used with Cyrillic and Glagolitic letters to indicate abbreviation x (combining cyrillic titlo - 0483) x (combining cyrillic pokrytie - 0487) @ Combining numeric signs A670 COMBINING CYRILLIC TEN MILLIONS SIGN x (combining cyrillic millions sign - 0489) A671 COMBINING CYRILLIC HUNDRED MILLIONS SIGN A672 COMBINING CYRILLIC THOUSAND MILLIONS SIGN @ Punctuation mark A673 SLAVONIC ASTERISK @ Combining marks for Old Cyrillic A674 COMBINING CYRILLIC LETTER UKRAINIAN IE A675 COMBINING CYRILLIC LETTER I A676 COMBINING CYRILLIC LETTER YI A677 COMBINING CYRILLIC LETTER U A678 COMBINING CYRILLIC LETTER HARD SIGN A679 COMBINING CYRILLIC LETTER YERU A67A COMBINING CYRILLIC LETTER SOFT SIGN A67B COMBINING CYRILLIC LETTER OMEGA A67C COMBINING CYRILLIC KAVYKA * indicates an alternative reading to part of a word x (combining breve - 0306) A67D COMBINING CYRILLIC PAYEROK * may indicate an omitted yer x (combining vertical tilde - 033E) @ Punctuation mark A67E CYRILLIC KAVYKA * used to mark off word that has alternative reading @ Modifier letter A67F CYRILLIC PAYEROK * may indicate an omitted yer x (vertical tilde - 2E2F) @ Letters for Old Abkhasian orthography A680 CYRILLIC CAPITAL LETTER DWE A681 CYRILLIC SMALL LETTER DWE A682 CYRILLIC CAPITAL LETTER DZWE A683 CYRILLIC SMALL LETTER DZWE A684 CYRILLIC CAPITAL LETTER ZHWE A685 CYRILLIC SMALL LETTER ZHWE A686 CYRILLIC CAPITAL LETTER CCHE A687 CYRILLIC SMALL LETTER CCHE A688 CYRILLIC CAPITAL LETTER DZZE A689 CYRILLIC SMALL LETTER DZZE A68A CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK A68B CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK A68C CYRILLIC CAPITAL LETTER TWE A68D CYRILLIC SMALL LETTER TWE A68E CYRILLIC CAPITAL LETTER TSWE A68F CYRILLIC SMALL LETTER TSWE A690 CYRILLIC CAPITAL LETTER TSSE A691 CYRILLIC SMALL LETTER TSSE A692 CYRILLIC CAPITAL LETTER TCHE A693 CYRILLIC SMALL LETTER TCHE A694 CYRILLIC CAPITAL LETTER HWE A695 CYRILLIC SMALL LETTER HWE A696 CYRILLIC CAPITAL LETTER SHWE A697 CYRILLIC SMALL LETTER SHWE @ Letters for Old Cyrillic A698 CYRILLIC CAPITAL LETTER DOUBLE O A699 CYRILLIC SMALL LETTER DOUBLE O A69A CYRILLIC CAPITAL LETTER CROSSED O A69B CYRILLIC SMALL LETTER CROSSED O @ Intonation marks for Lithuanian dialectology A69C MODIFIER LETTER CYRILLIC HARD SIGN # 044A A69D MODIFIER LETTER CYRILLIC SOFT SIGN # 044C @ Combining marks for Old Cyrillic A69E COMBINING CYRILLIC LETTER EF A69F COMBINING CYRILLIC LETTER IOTIFIED E @@ A6A0 Bamum A6FF @ Syllables A6A0 BAMUM LETTER A A6A1 BAMUM LETTER KA A6A2 BAMUM LETTER U A6A3 BAMUM LETTER KU A6A4 BAMUM LETTER EE A6A5 BAMUM LETTER REE A6A6 BAMUM LETTER TAE A6A7 BAMUM LETTER O A6A8 BAMUM LETTER NYI A6A9 BAMUM LETTER I A6AA BAMUM LETTER LA A6AB BAMUM LETTER PA A6AC BAMUM LETTER RII A6AD BAMUM LETTER RIEE A6AE BAMUM LETTER LEEEE A6AF BAMUM LETTER MEEEE A6B0 BAMUM LETTER TAA A6B1 BAMUM LETTER NDAA A6B2 BAMUM LETTER NJAEM A6B3 BAMUM LETTER M A6B4 BAMUM LETTER SUU A6B5 BAMUM LETTER MU A6B6 BAMUM LETTER SHII A6B7 BAMUM LETTER SI A6B8 BAMUM LETTER SHEUX A6B9 BAMUM LETTER SEUX A6BA BAMUM LETTER KYEE A6BB BAMUM LETTER KET A6BC BAMUM LETTER NUAE A6BD BAMUM LETTER NU A6BE BAMUM LETTER NJUAE A6BF BAMUM LETTER YOQ A6C0 BAMUM LETTER SHU A6C1 BAMUM LETTER YUQ A6C2 BAMUM LETTER YA A6C3 BAMUM LETTER NSHA A6C4 BAMUM LETTER KEUX A6C5 BAMUM LETTER PEUX A6C6 BAMUM LETTER NJEE A6C7 BAMUM LETTER NTEE A6C8 BAMUM LETTER PUE A6C9 BAMUM LETTER WUE A6CA BAMUM LETTER PEE A6CB BAMUM LETTER FEE A6CC BAMUM LETTER RU A6CD BAMUM LETTER LU A6CE BAMUM LETTER MI A6CF BAMUM LETTER NI A6D0 BAMUM LETTER REUX A6D1 BAMUM LETTER RAE A6D2 BAMUM LETTER KEN A6D3 BAMUM LETTER NGKWAEN A6D4 BAMUM LETTER NGGA A6D5 BAMUM LETTER NGA A6D6 BAMUM LETTER SHO A6D7 BAMUM LETTER PUAE A6D8 BAMUM LETTER FU A6D9 BAMUM LETTER FOM A6DA BAMUM LETTER WA A6DB BAMUM LETTER NA A6DC BAMUM LETTER LI A6DD BAMUM LETTER PI A6DE BAMUM LETTER LOQ A6DF BAMUM LETTER KO A6E0 BAMUM LETTER MBEN A6E1 BAMUM LETTER REN A6E2 BAMUM LETTER MEN A6E3 BAMUM LETTER MA A6E4 BAMUM LETTER TI A6E5 BAMUM LETTER KI A6E6 BAMUM LETTER MO * also used for digit one A6E7 BAMUM LETTER MBAA * also used for digit two A6E8 BAMUM LETTER TET * tèt * also used for digit three A6E9 BAMUM LETTER KPA * also used for digit four A6EA BAMUM LETTER TEN * tèn * also used for digit five A6EB BAMUM LETTER NTUU * also used for digit six A6EC BAMUM LETTER SAMBA * also used for digit seven A6ED BAMUM LETTER FAAMAE * also used for digit eight A6EE BAMUM LETTER KOVUU * also used for digit nine A6EF BAMUM LETTER KOGHOM * also used for digit zero * formerly used for number ten @ Combining marks A6F0 BAMUM COMBINING MARK KOQNDON A6F1 BAMUM COMBINING MARK TUKWENTIS @ Punctuation A6F2 BAMUM NJAEMLI A6F3 BAMUM FULL STOP A6F4 BAMUM COLON A6F5 BAMUM COMMA A6F6 BAMUM SEMICOLON A6F7 BAMUM QUESTION MARK @@ A700 Modifier Tone Letters A71F @ Corner tone marks for Chinese A700 MODIFIER LETTER CHINESE TONE YIN PING A701 MODIFIER LETTER CHINESE TONE YANG PING A702 MODIFIER LETTER CHINESE TONE YIN SHANG A703 MODIFIER LETTER CHINESE TONE YANG SHANG A704 MODIFIER LETTER CHINESE TONE YIN QU A705 MODIFIER LETTER CHINESE TONE YANG QU A706 MODIFIER LETTER CHINESE TONE YIN RU A707 MODIFIER LETTER CHINESE TONE YANG RU @ Dotted tone letters A708 MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR A709 MODIFIER LETTER HIGH DOTTED TONE BAR A70A MODIFIER LETTER MID DOTTED TONE BAR A70B MODIFIER LETTER LOW DOTTED TONE BAR A70C MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR A70D MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR A70E MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR A70F MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR A710 MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR A711 MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR @ Left-stem tone letters A712 MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR A713 MODIFIER LETTER HIGH LEFT-STEM TONE BAR A714 MODIFIER LETTER MID LEFT-STEM TONE BAR A715 MODIFIER LETTER LOW LEFT-STEM TONE BAR A716 MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR @ Chinantec tone marks A717 MODIFIER LETTER DOT VERTICAL BAR A718 MODIFIER LETTER DOT SLASH A719 MODIFIER LETTER DOT HORIZONTAL BAR A71A MODIFIER LETTER LOWER RIGHT CORNER ANGLE @ Africanist tone letters A71B MODIFIER LETTER RAISED UP ARROW A71C MODIFIER LETTER RAISED DOWN ARROW A71D MODIFIER LETTER RAISED EXCLAMATION MARK A71E MODIFIER LETTER RAISED INVERTED EXCLAMATION MARK A71F MODIFIER LETTER LOW INVERTED EXCLAMATION MARK @@ A720 Latin Extended-D A7FF @ Additions for UPA A720 MODIFIER LETTER STRESS AND HIGH TONE A721 MODIFIER LETTER STRESS AND LOW TONE @ Egyptological additions A722 LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF A723 LATIN SMALL LETTER EGYPTOLOGICAL ALEF A724 LATIN CAPITAL LETTER EGYPTOLOGICAL AIN A725 LATIN SMALL LETTER EGYPTOLOGICAL AIN * this is a case pair x (latin letter ain - 1D25) x (modifier letter small ain - 1D5C) @ Mayanist additions A726 LATIN CAPITAL LETTER HENG A727 LATIN SMALL LETTER HENG A728 LATIN CAPITAL LETTER TZ A729 LATIN SMALL LETTER TZ A72A LATIN CAPITAL LETTER TRESILLO A72B LATIN SMALL LETTER TRESILLO x (turned digit three - 218B) A72C LATIN CAPITAL LETTER CUATRILLO A72D LATIN SMALL LETTER CUATRILLO A72E LATIN CAPITAL LETTER CUATRILLO WITH COMMA A72F LATIN SMALL LETTER CUATRILLO WITH COMMA @ Medievalist additions A730 LATIN LETTER SMALL CAPITAL F A731 LATIN LETTER SMALL CAPITAL S A732 LATIN CAPITAL LETTER AA A733 LATIN SMALL LETTER AA A734 LATIN CAPITAL LETTER AO A735 LATIN SMALL LETTER AO A736 LATIN CAPITAL LETTER AU A737 LATIN SMALL LETTER AU A738 LATIN CAPITAL LETTER AV A739 LATIN SMALL LETTER AV A73A LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR A73B LATIN SMALL LETTER AV WITH HORIZONTAL BAR A73C LATIN CAPITAL LETTER AY A73D LATIN SMALL LETTER AY A73E LATIN CAPITAL LETTER REVERSED C WITH DOT A73F LATIN SMALL LETTER REVERSED C WITH DOT A740 LATIN CAPITAL LETTER K WITH STROKE A741 LATIN SMALL LETTER K WITH STROKE A742 LATIN CAPITAL LETTER K WITH DIAGONAL STROKE A743 LATIN SMALL LETTER K WITH DIAGONAL STROKE A744 LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE A745 LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE A746 LATIN CAPITAL LETTER BROKEN L A747 LATIN SMALL LETTER BROKEN L A748 LATIN CAPITAL LETTER L WITH HIGH STROKE A749 LATIN SMALL LETTER L WITH HIGH STROKE A74A LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY A74B LATIN SMALL LETTER O WITH LONG STROKE OVERLAY A74C LATIN CAPITAL LETTER O WITH LOOP A74D LATIN SMALL LETTER O WITH LOOP A74E LATIN CAPITAL LETTER OO A74F LATIN SMALL LETTER OO A750 LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER A751 LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER A752 LATIN CAPITAL LETTER P WITH FLOURISH A753 LATIN SMALL LETTER P WITH FLOURISH A754 LATIN CAPITAL LETTER P WITH SQUIRREL TAIL A755 LATIN SMALL LETTER P WITH SQUIRREL TAIL A756 LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER A757 LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER A758 LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE A759 LATIN SMALL LETTER Q WITH DIAGONAL STROKE A75A LATIN CAPITAL LETTER R ROTUNDA A75B LATIN SMALL LETTER R ROTUNDA A75C LATIN CAPITAL LETTER RUM ROTUNDA A75D LATIN SMALL LETTER RUM ROTUNDA A75E LATIN CAPITAL LETTER V WITH DIAGONAL STROKE A75F LATIN SMALL LETTER V WITH DIAGONAL STROKE A760 LATIN CAPITAL LETTER VY A761 LATIN SMALL LETTER VY A762 LATIN CAPITAL LETTER VISIGOTHIC Z A763 LATIN SMALL LETTER VISIGOTHIC Z A764 LATIN CAPITAL LETTER THORN WITH STROKE A765 LATIN SMALL LETTER THORN WITH STROKE A766 LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER A767 LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER A768 LATIN CAPITAL LETTER VEND A769 LATIN SMALL LETTER VEND A76A LATIN CAPITAL LETTER ET A76B LATIN SMALL LETTER ET A76C LATIN CAPITAL LETTER IS A76D LATIN SMALL LETTER IS A76E LATIN CAPITAL LETTER CON A76F LATIN SMALL LETTER CON A770 MODIFIER LETTER US # A76F A771 LATIN SMALL LETTER DUM A772 LATIN SMALL LETTER LUM A773 LATIN SMALL LETTER MUM A774 LATIN SMALL LETTER NUM A775 LATIN SMALL LETTER RUM A776 LATIN LETTER SMALL CAPITAL RUM A777 LATIN SMALL LETTER TUM A778 LATIN SMALL LETTER UM @ Insular and Celticist letters A779 LATIN CAPITAL LETTER INSULAR D A77A LATIN SMALL LETTER INSULAR D A77B LATIN CAPITAL LETTER INSULAR F A77C LATIN SMALL LETTER INSULAR F A77D LATIN CAPITAL LETTER INSULAR G * lowercase is 1D79 A77E LATIN CAPITAL LETTER TURNED INSULAR G A77F LATIN SMALL LETTER TURNED INSULAR G A780 LATIN CAPITAL LETTER TURNED L A781 LATIN SMALL LETTER TURNED L A782 LATIN CAPITAL LETTER INSULAR R A783 LATIN SMALL LETTER INSULAR R A784 LATIN CAPITAL LETTER INSULAR S A785 LATIN SMALL LETTER INSULAR S A786 LATIN CAPITAL LETTER INSULAR T A787 LATIN SMALL LETTER INSULAR T @ Modifier letters A788 MODIFIER LETTER LOW CIRCUMFLEX ACCENT x (modifier letter circumflex accent - 02C6) x (caret - 2038) A789 MODIFIER LETTER COLON * used as a tone letter in some orthographies * Budu (Congo), Sabaot (Kenya), and several Papua New Guinea languages x (colon - 003A) A78A MODIFIER LETTER SHORT EQUALS SIGN * used as a tone letter in some orthographies * Budu (Congo) x (equals sign - 003D) @ Orthographic letters for glottals A78B LATIN CAPITAL LETTER SALTILLO * Me'phaa (Mexico) A78C LATIN SMALL LETTER SALTILLO * saltillos are used as a casing pair for glottal stop in some orthographies * the lowercase is widely used in many languages in Mexico and other regions, including Izere in Nigeria x (apostrophe - 0027) x (latin small letter glottal stop - 0242) x (latin letter glottal stop - 0294) x (modifier letter apostrophe - 02BC) x (modifier letter glottal stop - 02C0) @ Additional letter A78D LATIN CAPITAL LETTER TURNED H * used in the Dan/Gio orthography in Liberia * lowercase is 0265 @ Phonetic symbol A78E LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT * voiceless lateral retroflex fricative * used to transcribe Toda @ Transliteration letter A78F LATIN LETTER SINOLOGICAL DOT * used in transliteration of Phags-Pa and in phonetic transcription of Tangut x (middle dot - 00B7) @ Additional letters A790 LATIN CAPITAL LETTER N WITH DESCENDER A791 LATIN SMALL LETTER N WITH DESCENDER * Janalif A792 LATIN CAPITAL LETTER C WITH BAR = Cambrian symbol A793 LATIN SMALL LETTER C WITH BAR * Nanai @ Additions for Lithuanian dialectology A794 LATIN SMALL LETTER C WITH PALATAL HOOK A795 LATIN SMALL LETTER H WITH PALATAL HOOK x (latin small letter heng - A727) @ Letters for Middle Vietnamese A796 LATIN CAPITAL LETTER B WITH FLOURISH A797 LATIN SMALL LETTER B WITH FLOURISH @ Archaic letters for Ewe A798 LATIN CAPITAL LETTER F WITH STROKE x (latin capital letter f with hook - 0191) A799 LATIN SMALL LETTER F WITH STROKE * old Ewe orthography * also used in German dialectology @ Archaic letters for Volapük A79A LATIN CAPITAL LETTER VOLAPUK AE A79B LATIN SMALL LETTER VOLAPUK AE A79C LATIN CAPITAL LETTER VOLAPUK OE A79D LATIN SMALL LETTER VOLAPUK OE A79E LATIN CAPITAL LETTER VOLAPUK UE A79F LATIN SMALL LETTER VOLAPUK UE @ Latvian letters for pre-1921 orthography A7A0 LATIN CAPITAL LETTER G WITH OBLIQUE STROKE A7A1 LATIN SMALL LETTER G WITH OBLIQUE STROKE A7A2 LATIN CAPITAL LETTER K WITH OBLIQUE STROKE A7A3 LATIN SMALL LETTER K WITH OBLIQUE STROKE A7A4 LATIN CAPITAL LETTER N WITH OBLIQUE STROKE A7A5 LATIN SMALL LETTER N WITH OBLIQUE STROKE A7A6 LATIN CAPITAL LETTER R WITH OBLIQUE STROKE A7A7 LATIN SMALL LETTER R WITH OBLIQUE STROKE A7A8 LATIN CAPITAL LETTER S WITH OBLIQUE STROKE A7A9 LATIN SMALL LETTER S WITH OBLIQUE STROKE * also used in pre-1950 Lower Sorbian orthography x (latin small letter long s with diagonal stroke - 1E9C) @ Additional letters A7AA LATIN CAPITAL LETTER H WITH HOOK * lowercase is 0266 * used in Chad A7AB LATIN CAPITAL LETTER REVERSED OPEN E * lowercase is 025C A7AC LATIN CAPITAL LETTER SCRIPT G * lowercase is 0261 A7AD LATIN CAPITAL LETTER L WITH BELT * lowercase is 026C @ Letter for West African languages A7AE LATIN CAPITAL LETTER SMALL CAPITAL I * lowercase is 026A * also used in Unifon @ Letters for Americanist orthographies A7B0 LATIN CAPITAL LETTER TURNED K * lowercase is 029E A7B1 LATIN CAPITAL LETTER TURNED T * lowercase is 0287 * also used in Unifon @ Letter for African languages A7B2 LATIN CAPITAL LETTER J WITH CROSSED-TAIL * lowercase is 029D @ Letter for German dialectology A7B3 LATIN CAPITAL LETTER CHI * lowercase is AB53 x (greek capital letter chi - 03A7) @ Letters for African languages A7B4 LATIN CAPITAL LETTER BETA A7B5 LATIN SMALL LETTER BETA x (greek small letter beta - 03B2) A7B6 LATIN CAPITAL LETTER OMEGA A7B7 LATIN SMALL LETTER OMEGA x (greek small letter omega - 03C9) @ Additional letter A7F7 LATIN EPIGRAPHIC LETTER SIDEWAYS I * Celtic inscriptions @ Additions for Extended IPA A7F8 MODIFIER LETTER CAPITAL H WITH STROKE * faucalized # 0126 A7F9 MODIFIER LETTER SMALL LIGATURE OE * labialized: open-rounded # 0153 @ Addition for UPA A7FA LATIN LETTER SMALL CAPITAL TURNED M @ Ancient Roman epigraphic letters A7FB LATIN EPIGRAPHIC LETTER REVERSED F A7FC LATIN EPIGRAPHIC LETTER REVERSED P A7FD LATIN EPIGRAPHIC LETTER INVERTED M A7FE LATIN EPIGRAPHIC LETTER I LONGA A7FF LATIN EPIGRAPHIC LETTER ARCHAIC M @@ A800 Syloti Nagri A82F @ Independent vowels and dvisvara A800 SYLOTI NAGRI LETTER A A801 SYLOTI NAGRI LETTER I A802 SYLOTI NAGRI SIGN DVISVARA A803 SYLOTI NAGRI LETTER U A804 SYLOTI NAGRI LETTER E A805 SYLOTI NAGRI LETTER O @ Sign A806 SYLOTI NAGRI SIGN HASANTA = halant, virama @ Consonants and consonant signs A807 SYLOTI NAGRI LETTER KO A808 SYLOTI NAGRI LETTER KHO A809 SYLOTI NAGRI LETTER GO A80A SYLOTI NAGRI LETTER GHO A80B SYLOTI NAGRI SIGN ANUSVARA A80C SYLOTI NAGRI LETTER CO A80D SYLOTI NAGRI LETTER CHO A80E SYLOTI NAGRI LETTER JO A80F SYLOTI NAGRI LETTER JHO A810 SYLOTI NAGRI LETTER TTO A811 SYLOTI NAGRI LETTER TTHO A812 SYLOTI NAGRI LETTER DDO A813 SYLOTI NAGRI LETTER DDHO A814 SYLOTI NAGRI LETTER TO A815 SYLOTI NAGRI LETTER THO A816 SYLOTI NAGRI LETTER DO A817 SYLOTI NAGRI LETTER DHO A818 SYLOTI NAGRI LETTER NO A819 SYLOTI NAGRI LETTER PO A81A SYLOTI NAGRI LETTER PHO A81B SYLOTI NAGRI LETTER BO A81C SYLOTI NAGRI LETTER BHO A81D SYLOTI NAGRI LETTER MO A81E SYLOTI NAGRI LETTER RO A81F SYLOTI NAGRI LETTER LO A820 SYLOTI NAGRI LETTER RRO A821 SYLOTI NAGRI LETTER SO A822 SYLOTI NAGRI LETTER HO @ Dependent vowel signs A823 SYLOTI NAGRI VOWEL SIGN A A824 SYLOTI NAGRI VOWEL SIGN I A825 SYLOTI NAGRI VOWEL SIGN U A826 SYLOTI NAGRI VOWEL SIGN E A827 SYLOTI NAGRI VOWEL SIGN OO @ Poetry marks A828 SYLOTI NAGRI POETRY MARK-1 A829 SYLOTI NAGRI POETRY MARK-2 A82A SYLOTI NAGRI POETRY MARK-3 A82B SYLOTI NAGRI POETRY MARK-4 @@ A830 Common Indic Number Forms A83F @ Number forms A830 NORTH INDIC FRACTION ONE QUARTER A831 NORTH INDIC FRACTION ONE HALF A832 NORTH INDIC FRACTION THREE QUARTERS A833 NORTH INDIC FRACTION ONE SIXTEENTH A834 NORTH INDIC FRACTION ONE EIGHTH A835 NORTH INDIC FRACTION THREE SIXTEENTHS A836 NORTH INDIC QUARTER MARK @ Miscellaneous sign A837 NORTH INDIC PLACEHOLDER MARK * indicates the absence of an intermediate unit in a currency value @ Currency sign A838 NORTH INDIC RUPEE MARK x (bengali rupee mark - 09F2) @ Miscellaneous sign A839 NORTH INDIC QUANTITY MARK * a unit mark for various weights and measures @@ A840 Phags-pa A87F @+ Phags-pa letters are used for Mongolian, Chinese, Uighur, Tibetan, and Sanskrit unless annotated with a more restricted list of languages. @ Consonants A840 PHAGS-PA LETTER KA * Mongolian, Chinese, Tibetan, Sanskrit x (tibetan letter ka - 0F40) A841 PHAGS-PA LETTER KHA x (tibetan letter kha - 0F41) A842 PHAGS-PA LETTER GA x (tibetan letter ga - 0F42) A843 PHAGS-PA LETTER NGA * Mongolian, Chinese, Tibetan, Sanskrit x (tibetan letter nga - 0F44) A844 PHAGS-PA LETTER CA * Chinese, Tibetan x (tibetan letter ca - 0F45) A845 PHAGS-PA LETTER CHA * Mongolian, Chinese, Uighur, Tibetan x (tibetan letter cha - 0F46) A846 PHAGS-PA LETTER JA * Mongolian, Chinese, Uighur, Tibetan x (tibetan letter ja - 0F47) A847 PHAGS-PA LETTER NYA * Chinese, Tibetan, Sanskrit x (tibetan letter nya - 0F49) A848 PHAGS-PA LETTER TA * Mongolian, Chinese, Tibetan, Sanskrit x (tibetan letter ta - 0F4F) A849 PHAGS-PA LETTER THA x (tibetan letter tha - 0F50) A84A PHAGS-PA LETTER DA x (tibetan letter da - 0F51) A84B PHAGS-PA LETTER NA x (tibetan letter na - 0F53) A84C PHAGS-PA LETTER PA * Mongolian, Chinese, Tibetan, Sanskrit x (tibetan letter pa - 0F54) A84D PHAGS-PA LETTER PHA * Chinese, Tibetan, Sanskrit x (tibetan letter pha - 0F55) A84E PHAGS-PA LETTER BA x (tibetan letter ba - 0F56) A84F PHAGS-PA LETTER MA x (tibetan letter ma - 0F58) A850 PHAGS-PA LETTER TSA * Chinese, Tibetan, Sanskrit x (tibetan letter tsa - 0F59) A851 PHAGS-PA LETTER TSHA * Mongolian, Chinese, Tibetan, Sanskrit x (tibetan letter tsha - 0F5A) A852 PHAGS-PA LETTER DZA * Chinese, Tibetan, Sanskrit x (tibetan letter dza - 0F5B) A853 PHAGS-PA LETTER WA x (tibetan letter wa - 0F5D) A854 PHAGS-PA LETTER ZHA * Chinese, Tibetan x (tibetan letter zha - 0F5E) A855 PHAGS-PA LETTER ZA * Mongolian, Chinese, Tibetan x (tibetan letter za - 0F5F) A856 PHAGS-PA LETTER SMALL A x (tibetan letter -a - 0F60) ~ A856 FE00 phags-pa letter reversed shaping small a A857 PHAGS-PA LETTER YA x (tibetan letter ya - 0F61) A858 PHAGS-PA LETTER RA * Mongolian, Uighur, Tibetan, Sanskrit x (tibetan letter ra - 0F62) A859 PHAGS-PA LETTER LA x (tibetan letter la - 0F63) A85A PHAGS-PA LETTER SHA x (tibetan letter sha - 0F64) A85B PHAGS-PA LETTER SA x (tibetan letter sa - 0F66) A85C PHAGS-PA LETTER HA x (tibetan letter ha - 0F67) ~ A85C FE00 phags-pa letter reversed shaping ha @ Letter A A85D PHAGS-PA LETTER A x (tibetan letter a - 0F68) @ Vowels A85E PHAGS-PA LETTER I x (tibetan vowel sign i - 0F72) ~ A85E FE00 phags-pa letter reversed shaping i A85F PHAGS-PA LETTER U x (tibetan vowel sign u - 0F74) ~ A85F FE00 phags-pa letter reversed shaping u A860 PHAGS-PA LETTER E x (tibetan vowel sign e - 0F7A) ~ A860 FE00 phags-pa letter reversed shaping e A861 PHAGS-PA LETTER O x (tibetan vowel sign o - 0F7C) @ Consonants A862 PHAGS-PA LETTER QA * Mongolian, Uighur A863 PHAGS-PA LETTER XA * Mongolian, Chinese A864 PHAGS-PA LETTER FA * Chinese, Uighur x (phags-pa letter ha - A85C) A865 PHAGS-PA LETTER GGA * language usage unknown * created by reversal of A862 @ Vowel A866 PHAGS-PA LETTER EE * Mongolian, Chinese, Uighur @ Subjoined consonants A867 PHAGS-PA SUBJOINED LETTER WA * Chinese, Tibetan, Sanskrit x (tibetan subjoined letter wa - 0FAD) A868 PHAGS-PA SUBJOINED LETTER YA * Chinese, Tibetan, Sanskrit x (tibetan subjoined letter ya - 0FB1) ~ A868 FE00 phags-pa letter reversed shaping subjoined ya @ Consonant additions for Sanskrit A869 PHAGS-PA LETTER TTA * Sanskrit x (tibetan letter tta - 0F4A) A86A PHAGS-PA LETTER TTHA * Sanskrit x (tibetan letter ttha - 0F4B) A86B PHAGS-PA LETTER DDA * Sanskrit x (tibetan letter dda - 0F4C) A86C PHAGS-PA LETTER NNA * Sanskrit x (tibetan letter nna - 0F4E) @ Alternate consonant forms for Chinese A86D PHAGS-PA LETTER ALTERNATE YA * Chinese x (phags-pa letter ya - A857) A86E PHAGS-PA LETTER VOICELESS SHA * Chinese x (phags-pa letter sha - A85A) A86F PHAGS-PA LETTER VOICED HA * Chinese x (phags-pa letter ha - A85C) A870 PHAGS-PA LETTER ASPIRATED FA * Chinese x (phags-pa letter fa - A864) @ Subjoined consonant A871 PHAGS-PA SUBJOINED LETTER RA * Tibetan, Sanskrit x (tibetan subjoined letter ra - 0FB2) @ Consonant addition for Tibetan A872 PHAGS-PA SUPERFIXED LETTER RA * Tibetan x (tibetan letter ra - 0F62) @ Candrabindu A873 PHAGS-PA LETTER CANDRABINDU * Sanskrit x (tibetan sign sna ldan - 0F83) x (tibetan sign rjes su nga ro - 0F7E) x (mongolian letter ali gali anusvara one - 1880) @ Head marks for Tibetan A874 PHAGS-PA SINGLE HEAD MARK * Tibetan * marks beginning of text x (tibetan mark initial yig mgo mdun ma - 0F04) x (mongolian birga - 1800) A875 PHAGS-PA DOUBLE HEAD MARK * Tibetan * marks beginning of text @ Punctuation for Tibetan A876 PHAGS-PA MARK SHAD * Tibetan x (tibetan mark shad - 0F0D) A877 PHAGS-PA MARK DOUBLE SHAD * Tibetan x (tibetan mark nyis shad - 0F0E) @~ Standardized Variation Sequences @@ A880 Saurashtra A8DF @ Various signs A880 SAURASHTRA SIGN ANUSVARA A881 SAURASHTRA SIGN VISARGA @ Independent vowels A882 SAURASHTRA LETTER A A883 SAURASHTRA LETTER AA A884 SAURASHTRA LETTER I A885 SAURASHTRA LETTER II A886 SAURASHTRA LETTER U A887 SAURASHTRA LETTER UU A888 SAURASHTRA LETTER VOCALIC R A889 SAURASHTRA LETTER VOCALIC RR A88A SAURASHTRA LETTER VOCALIC L A88B SAURASHTRA LETTER VOCALIC LL A88C SAURASHTRA LETTER E A88D SAURASHTRA LETTER EE A88E SAURASHTRA LETTER AI A88F SAURASHTRA LETTER O A890 SAURASHTRA LETTER OO A891 SAURASHTRA LETTER AU @ Consonants A892 SAURASHTRA LETTER KA A893 SAURASHTRA LETTER KHA A894 SAURASHTRA LETTER GA A895 SAURASHTRA LETTER GHA A896 SAURASHTRA LETTER NGA A897 SAURASHTRA LETTER CA A898 SAURASHTRA LETTER CHA A899 SAURASHTRA LETTER JA A89A SAURASHTRA LETTER JHA A89B SAURASHTRA LETTER NYA A89C SAURASHTRA LETTER TTA A89D SAURASHTRA LETTER TTHA A89E SAURASHTRA LETTER DDA A89F SAURASHTRA LETTER DDHA A8A0 SAURASHTRA LETTER NNA A8A1 SAURASHTRA LETTER TA A8A2 SAURASHTRA LETTER THA A8A3 SAURASHTRA LETTER DA A8A4 SAURASHTRA LETTER DHA A8A5 SAURASHTRA LETTER NA A8A6 SAURASHTRA LETTER PA A8A7 SAURASHTRA LETTER PHA A8A8 SAURASHTRA LETTER BA A8A9 SAURASHTRA LETTER BHA A8AA SAURASHTRA LETTER MA A8AB SAURASHTRA LETTER YA A8AC SAURASHTRA LETTER RA A8AD SAURASHTRA LETTER LA A8AE SAURASHTRA LETTER VA A8AF SAURASHTRA LETTER SHA A8B0 SAURASHTRA LETTER SSA A8B1 SAURASHTRA LETTER SA A8B2 SAURASHTRA LETTER HA A8B3 SAURASHTRA LETTER LLA A8B4 SAURASHTRA CONSONANT SIGN HAARU @ Dependent vowel signs A8B5 SAURASHTRA VOWEL SIGN AA A8B6 SAURASHTRA VOWEL SIGN I A8B7 SAURASHTRA VOWEL SIGN II A8B8 SAURASHTRA VOWEL SIGN U A8B9 SAURASHTRA VOWEL SIGN UU A8BA SAURASHTRA VOWEL SIGN VOCALIC R A8BB SAURASHTRA VOWEL SIGN VOCALIC RR A8BC SAURASHTRA VOWEL SIGN VOCALIC L A8BD SAURASHTRA VOWEL SIGN VOCALIC LL A8BE SAURASHTRA VOWEL SIGN E A8BF SAURASHTRA VOWEL SIGN EE A8C0 SAURASHTRA VOWEL SIGN AI A8C1 SAURASHTRA VOWEL SIGN O A8C2 SAURASHTRA VOWEL SIGN OO A8C3 SAURASHTRA VOWEL SIGN AU @ Virama A8C4 SAURASHTRA SIGN VIRAMA @ Sign A8C5 SAURASHTRA SIGN CANDRABINDU @ Punctuation A8CE SAURASHTRA DANDA A8CF SAURASHTRA DOUBLE DANDA @ Digits A8D0 SAURASHTRA DIGIT ZERO A8D1 SAURASHTRA DIGIT ONE A8D2 SAURASHTRA DIGIT TWO A8D3 SAURASHTRA DIGIT THREE A8D4 SAURASHTRA DIGIT FOUR A8D5 SAURASHTRA DIGIT FIVE A8D6 SAURASHTRA DIGIT SIX A8D7 SAURASHTRA DIGIT SEVEN A8D8 SAURASHTRA DIGIT EIGHT A8D9 SAURASHTRA DIGIT NINE @@ A8E0 Devanagari Extended A8FF @ Cantillation marks (svara) for the Samaveda @+ See the similar set of Grantha svara markers for the Samaveda, encoded in the range 11366-11374. A8E0 COMBINING DEVANAGARI DIGIT ZERO = vaidika saamasvara anka shuunya A8E1 COMBINING DEVANAGARI DIGIT ONE = vaidika saamasvara anka eka udaatta A8E2 COMBINING DEVANAGARI DIGIT TWO = vaidika saamasvara anka dvi svarita A8E3 COMBINING DEVANAGARI DIGIT THREE = vaidika saamasvara anka tri anudaatta A8E4 COMBINING DEVANAGARI DIGIT FOUR = vaidika saamasvara anka chatur A8E5 COMBINING DEVANAGARI DIGIT FIVE = vaidika saamasvara anka pancha A8E6 COMBINING DEVANAGARI DIGIT SIX = vaidika saamasvara anka shatt A8E7 COMBINING DEVANAGARI DIGIT SEVEN = vaidika saamasvara anka sapta A8E8 COMBINING DEVANAGARI DIGIT EIGHT = vaidika saamasvara anka ashta A8E9 COMBINING DEVANAGARI DIGIT NINE = vaidika saamasvara anka nava A8EA COMBINING DEVANAGARI LETTER A = vaidika saamasvara abhinihita A8EB COMBINING DEVANAGARI LETTER U = vaidika saamasvara u A8EC COMBINING DEVANAGARI LETTER KA = vaidika saamasvara ka A8ED COMBINING DEVANAGARI LETTER NA = vaidika saamasvara namana A8EE COMBINING DEVANAGARI LETTER PA = vaidika saamasvara prannatam A8EF COMBINING DEVANAGARI LETTER RA = vaidika saamasvara ra A8F0 COMBINING DEVANAGARI LETTER VI = vaidika saamasvara vinata A8F1 COMBINING DEVANAGARI SIGN AVAGRAHA = vaidika saamasvara diirghiibhaava @ Marks of nasalization A8F2 DEVANAGARI SIGN SPACING CANDRABINDU = vaidika candrabindu x (devanagari sign candrabindu - 0901) A8F3 DEVANAGARI SIGN CANDRABINDU VIRAMA = vaidika anusvaara candrabindu tiryak A8F4 DEVANAGARI SIGN DOUBLE CANDRABINDU VIRAMA = vaidika anusvaara dvi candrabindu tiryak A8F5 DEVANAGARI SIGN CANDRABINDU TWO = vaidika anusvaara candrabindu sa-dvi A8F6 DEVANAGARI SIGN CANDRABINDU THREE = vaidika anusvaara candrabindu sa-tri A8F7 DEVANAGARI SIGN CANDRABINDU AVAGRAHA = vaidika anusvaara candrabindu sa-avagraha @ Editorial marks A8F8 DEVANAGARI SIGN PUSHPIKA = vaidika pushpikaa * used as a placeholder or "filler" * often flanked by double dandas A8F9 DEVANAGARI GAP FILLER * used to indicate that a gap in a manuscript or text is not a lacuna A8FA DEVANAGARI CARET = vaidika trutikaa * zero-advance character centered on the point between two orthographic syllables * used for insertion of characters x (caret - 2038) A8FB DEVANAGARI HEADSTROKE = shirorekhaa * used to indicate uncertain manuscript readings x (sharada headstroke - 111DC) @ Signs A8FC DEVANAGARI SIGN SIDDHAM = siddhirastu * used at the beginning of texts as an invocation x (sharada sign siddham - 111DB) A8FD DEVANAGARI JAIN OM @@ A900 Kayah Li A92F @ Digits A900 KAYAH LI DIGIT ZERO A901 KAYAH LI DIGIT ONE A902 KAYAH LI DIGIT TWO A903 KAYAH LI DIGIT THREE A904 KAYAH LI DIGIT FOUR A905 KAYAH LI DIGIT FIVE A906 KAYAH LI DIGIT SIX A907 KAYAH LI DIGIT SEVEN A908 KAYAH LI DIGIT EIGHT A909 KAYAH LI DIGIT NINE @ Consonants A90A KAYAH LI LETTER KA A90B KAYAH LI LETTER KHA A90C KAYAH LI LETTER GA A90D KAYAH LI LETTER NGA A90E KAYAH LI LETTER SA A90F KAYAH LI LETTER SHA A910 KAYAH LI LETTER ZA A911 KAYAH LI LETTER NYA A912 KAYAH LI LETTER TA A913 KAYAH LI LETTER HTA A914 KAYAH LI LETTER NA A915 KAYAH LI LETTER PA A916 KAYAH LI LETTER PHA A917 KAYAH LI LETTER MA A918 KAYAH LI LETTER DA A919 KAYAH LI LETTER BA A91A KAYAH LI LETTER RA A91B KAYAH LI LETTER YA A91C KAYAH LI LETTER LA A91D KAYAH LI LETTER WA A91E KAYAH LI LETTER THA A91F KAYAH LI LETTER HA A920 KAYAH LI LETTER VA A921 KAYAH LI LETTER CA A922 KAYAH LI LETTER A A923 KAYAH LI LETTER OE A924 KAYAH LI LETTER I A925 KAYAH LI LETTER OO @ Vowels A926 KAYAH LI VOWEL UE A927 KAYAH LI VOWEL E A928 KAYAH LI VOWEL U A929 KAYAH LI VOWEL EE A92A KAYAH LI VOWEL O @ Tone marks A92B KAYAH LI TONE PLOPHU A92C KAYAH LI TONE CALYA A92D KAYAH LI TONE CALYA PLOPHU @ Punctuation A92E KAYAH LI SIGN CWI A92F KAYAH LI SIGN SHYA @@ A930 Rejang A95F @ Consonants A930 REJANG LETTER KA A931 REJANG LETTER GA A932 REJANG LETTER NGA A933 REJANG LETTER TA A934 REJANG LETTER DA A935 REJANG LETTER NA A936 REJANG LETTER PA A937 REJANG LETTER BA A938 REJANG LETTER MA A939 REJANG LETTER CA A93A REJANG LETTER JA A93B REJANG LETTER NYA A93C REJANG LETTER SA A93D REJANG LETTER RA A93E REJANG LETTER LA A93F REJANG LETTER YA A940 REJANG LETTER WA A941 REJANG LETTER HA A942 REJANG LETTER MBA A943 REJANG LETTER NGGA A944 REJANG LETTER NDA A945 REJANG LETTER NYJA A946 REJANG LETTER A @ Vowel signs @+ Shown here is the nominal position of the vowel signs relative to the dotted circle before taking account of the oblique nature of the script. A947 REJANG VOWEL SIGN I = kaluan A948 REJANG VOWEL SIGN U = kamitan A949 REJANG VOWEL SIGN E = kamica A94A REJANG VOWEL SIGN AI = katiling A94B REJANG VOWEL SIGN O A94C REJANG VOWEL SIGN AU = katulung A94D REJANG VOWEL SIGN EU A94E REJANG VOWEL SIGN EA = kajina @ Consonant signs @+ Shown here is the nominal position of the consonant signs relative to the dotted circle before taking account of the oblique nature of the script. A94F REJANG CONSONANT SIGN NG = katulang A950 REJANG CONSONANT SIGN N = duo deatas A951 REJANG CONSONANT SIGN R = kajunjung A952 REJANG CONSONANT SIGN H @ Virama A953 REJANG VIRAMA * does not form conjuncts @ Punctuation A95F REJANG SECTION MARK @@ A960 Hangul Jamo Extended-A A97F @ Old initial consonants A960 HANGUL CHOSEONG TIKEUT-MIEUM A961 HANGUL CHOSEONG TIKEUT-PIEUP A962 HANGUL CHOSEONG TIKEUT-SIOS A963 HANGUL CHOSEONG TIKEUT-CIEUC A964 HANGUL CHOSEONG RIEUL-KIYEOK A965 HANGUL CHOSEONG RIEUL-SSANGKIYEOK A966 HANGUL CHOSEONG RIEUL-TIKEUT A967 HANGUL CHOSEONG RIEUL-SSANGTIKEUT A968 HANGUL CHOSEONG RIEUL-MIEUM A969 HANGUL CHOSEONG RIEUL-PIEUP A96A HANGUL CHOSEONG RIEUL-SSANGPIEUP A96B HANGUL CHOSEONG RIEUL-KAPYEOUNPIEUP A96C HANGUL CHOSEONG RIEUL-SIOS A96D HANGUL CHOSEONG RIEUL-CIEUC A96E HANGUL CHOSEONG RIEUL-KHIEUKH A96F HANGUL CHOSEONG MIEUM-KIYEOK A970 HANGUL CHOSEONG MIEUM-TIKEUT A971 HANGUL CHOSEONG MIEUM-SIOS A972 HANGUL CHOSEONG PIEUP-SIOS-THIEUTH A973 HANGUL CHOSEONG PIEUP-KHIEUKH A974 HANGUL CHOSEONG PIEUP-HIEUH A975 HANGUL CHOSEONG SSANGSIOS-PIEUP A976 HANGUL CHOSEONG IEUNG-RIEUL A977 HANGUL CHOSEONG IEUNG-HIEUH A978 HANGUL CHOSEONG SSANGCIEUC-HIEUH A979 HANGUL CHOSEONG SSANGTHIEUTH A97A HANGUL CHOSEONG PHIEUPH-HIEUH A97B HANGUL CHOSEONG HIEUH-SIOS A97C HANGUL CHOSEONG SSANGYEORINHIEUH @@ A980 Javanese A9DF @ Various signs A980 JAVANESE SIGN PANYANGGA = candrabindu A981 JAVANESE SIGN CECAK = anusvara A982 JAVANESE SIGN LAYAR = repha A983 JAVANESE SIGN WIGNYAN = visarga @ Letters A984 JAVANESE LETTER A A985 JAVANESE LETTER I KAWI A986 JAVANESE LETTER I A987 JAVANESE LETTER II A988 JAVANESE LETTER U A989 JAVANESE LETTER PA CEREK = vocalic r A98A JAVANESE LETTER NGA LELET = vocalic l A98B JAVANESE LETTER NGA LELET RASWADI = vocalic ll A98C JAVANESE LETTER E A98D JAVANESE LETTER AI A98E JAVANESE LETTER O A98F JAVANESE LETTER KA A990 JAVANESE LETTER KA SASAK = qa A991 JAVANESE LETTER KA MURDA = kha A992 JAVANESE LETTER GA A993 JAVANESE LETTER GA MURDA = gha A994 JAVANESE LETTER NGA A995 JAVANESE LETTER CA A996 JAVANESE LETTER CA MURDA = cha A997 JAVANESE LETTER JA A998 JAVANESE LETTER NYA MURDA = jnya A999 JAVANESE LETTER JA MAHAPRANA = jha A99A JAVANESE LETTER NYA A99B JAVANESE LETTER TTA A99C JAVANESE LETTER TTA MAHAPRANA = ttha A99D JAVANESE LETTER DDA A99E JAVANESE LETTER DDA MAHAPRANA = ddha A99F JAVANESE LETTER NA MURDA = nna A9A0 JAVANESE LETTER TA A9A1 JAVANESE LETTER TA MURDA = tha A9A2 JAVANESE LETTER DA A9A3 JAVANESE LETTER DA MAHAPRANA = dha A9A4 JAVANESE LETTER NA A9A5 JAVANESE LETTER PA A9A6 JAVANESE LETTER PA MURDA = pha A9A7 JAVANESE LETTER BA A9A8 JAVANESE LETTER BA MURDA = bha A9A9 JAVANESE LETTER MA A9AA JAVANESE LETTER YA A9AB JAVANESE LETTER RA A9AC JAVANESE LETTER RA AGUNG A9AD JAVANESE LETTER LA A9AE JAVANESE LETTER WA A9AF JAVANESE LETTER SA MURDA = sha A9B0 JAVANESE LETTER SA MAHAPRANA = ssa A9B1 JAVANESE LETTER SA A9B2 JAVANESE LETTER HA @ Sign A9B3 JAVANESE SIGN CECAK TELU = nukta @ Dependent vowel signs A9B4 JAVANESE VOWEL SIGN TARUNG = aa A9B5 JAVANESE VOWEL SIGN TOLONG = o A9B6 JAVANESE VOWEL SIGN WULU = i A9B7 JAVANESE VOWEL SIGN WULU MELIK = ii A9B8 JAVANESE VOWEL SIGN SUKU = u A9B9 JAVANESE VOWEL SIGN SUKU MENDUT = uu A9BA JAVANESE VOWEL SIGN TALING = e A9BB JAVANESE VOWEL SIGN DIRGA MURE = ai A9BC JAVANESE VOWEL SIGN PEPET = ae @ Dependent consonant signs A9BD JAVANESE CONSONANT SIGN KERET = vocalic r A9BE JAVANESE CONSONANT SIGN PENGKAL = medial ya A9BF JAVANESE CONSONANT SIGN CAKRA = medial ra @ Sign A9C0 JAVANESE PANGKON = virama @ Punctuation A9C1 JAVANESE LEFT RERENGGAN A9C2 JAVANESE RIGHT RERENGGAN A9C3 JAVANESE PADA ANDAP A9C4 JAVANESE PADA MADYA A9C5 JAVANESE PADA LUHUR A9C6 JAVANESE PADA WINDU A9C7 JAVANESE PADA PANGKAT A9C8 JAVANESE PADA LINGSA = danda A9C9 JAVANESE PADA LUNGSI = double danda A9CA JAVANESE PADA ADEG A9CB JAVANESE PADA ADEG ADEG A9CC JAVANESE PADA PISELEH A9CD JAVANESE TURNED PADA PISELEH @ Syllable reduplicator A9CF JAVANESE PANGRANGKEP * also used in Buginese x (arabic-indic digit two - 0662) @ Digits A9D0 JAVANESE DIGIT ZERO A9D1 JAVANESE DIGIT ONE A9D2 JAVANESE DIGIT TWO A9D3 JAVANESE DIGIT THREE A9D4 JAVANESE DIGIT FOUR A9D5 JAVANESE DIGIT FIVE A9D6 JAVANESE DIGIT SIX A9D7 JAVANESE DIGIT SEVEN A9D8 JAVANESE DIGIT EIGHT A9D9 JAVANESE DIGIT NINE @ Ellipsis marks A9DE JAVANESE PADA TIRTA TUMETES A9DF JAVANESE PADA ISEN-ISEN @@ A9E0 Myanmar Extended-B A9FF @ Additions for Shan Pali A9E0 MYANMAR LETTER SHAN GHA A9E1 MYANMAR LETTER SHAN CHA A9E2 MYANMAR LETTER SHAN JHA A9E3 MYANMAR LETTER SHAN NNA A9E4 MYANMAR LETTER SHAN BHA A9E5 MYANMAR SIGN SHAN SAW @ Reduplication mark A9E6 MYANMAR MODIFIER LETTER SHAN REDUPLICATION x (myanmar modifier letter khamti reduplication - AA70) @ Tai Laing consonants A9E7 MYANMAR LETTER TAI LAING NYA A9E8 MYANMAR LETTER TAI LAING FA A9E9 MYANMAR LETTER TAI LAING GA A9EA MYANMAR LETTER TAI LAING GHA A9EB MYANMAR LETTER TAI LAING JA A9EC MYANMAR LETTER TAI LAING JHA A9ED MYANMAR LETTER TAI LAING DDA A9EE MYANMAR LETTER TAI LAING DDHA A9EF MYANMAR LETTER TAI LAING NNA @ Tai Laing digits A9F0 MYANMAR TAI LAING DIGIT ZERO A9F1 MYANMAR TAI LAING DIGIT ONE A9F2 MYANMAR TAI LAING DIGIT TWO A9F3 MYANMAR TAI LAING DIGIT THREE A9F4 MYANMAR TAI LAING DIGIT FOUR A9F5 MYANMAR TAI LAING DIGIT FIVE A9F6 MYANMAR TAI LAING DIGIT SIX A9F7 MYANMAR TAI LAING DIGIT SEVEN A9F8 MYANMAR TAI LAING DIGIT EIGHT A9F9 MYANMAR TAI LAING DIGIT NINE @ Tai Laing consonants A9FA MYANMAR LETTER TAI LAING LLA A9FB MYANMAR LETTER TAI LAING DA A9FC MYANMAR LETTER TAI LAING DHA A9FD MYANMAR LETTER TAI LAING BA A9FE MYANMAR LETTER TAI LAING BHA @@ AA00 Cham AA5F @ Independent vowels AA00 CHAM LETTER A AA01 CHAM LETTER I AA02 CHAM LETTER U AA03 CHAM LETTER E AA04 CHAM LETTER AI AA05 CHAM LETTER O @ Consonants AA06 CHAM LETTER KA AA07 CHAM LETTER KHA AA08 CHAM LETTER GA AA09 CHAM LETTER GHA AA0A CHAM LETTER NGUE AA0B CHAM LETTER NGA AA0C CHAM LETTER CHA AA0D CHAM LETTER CHHA AA0E CHAM LETTER JA AA0F CHAM LETTER JHA AA10 CHAM LETTER NHUE AA11 CHAM LETTER NHA AA12 CHAM LETTER NHJA AA13 CHAM LETTER TA AA14 CHAM LETTER THA AA15 CHAM LETTER DA AA16 CHAM LETTER DHA AA17 CHAM LETTER NUE AA18 CHAM LETTER NA AA19 CHAM LETTER DDA AA1A CHAM LETTER PA AA1B CHAM LETTER PPA AA1C CHAM LETTER PHA AA1D CHAM LETTER BA AA1E CHAM LETTER BHA AA1F CHAM LETTER MUE AA20 CHAM LETTER MA AA21 CHAM LETTER BBA AA22 CHAM LETTER YA AA23 CHAM LETTER RA AA24 CHAM LETTER LA AA25 CHAM LETTER VA AA26 CHAM LETTER SSA AA27 CHAM LETTER SA AA28 CHAM LETTER HA @ Dependent vowel signs AA29 CHAM VOWEL SIGN AA AA2A CHAM VOWEL SIGN I AA2B CHAM VOWEL SIGN II AA2C CHAM VOWEL SIGN EI AA2D CHAM VOWEL SIGN U AA2E CHAM VOWEL SIGN OE AA2F CHAM VOWEL SIGN O AA30 CHAM VOWEL SIGN AI AA31 CHAM VOWEL SIGN AU AA32 CHAM VOWEL SIGN UE @ Consonant signs AA33 CHAM CONSONANT SIGN YA AA34 CHAM CONSONANT SIGN RA AA35 CHAM CONSONANT SIGN LA AA36 CHAM CONSONANT SIGN WA @ Final letters AA40 CHAM LETTER FINAL K AA41 CHAM LETTER FINAL G AA42 CHAM LETTER FINAL NG AA43 CHAM CONSONANT SIGN FINAL NG AA44 CHAM LETTER FINAL CH AA45 CHAM LETTER FINAL T AA46 CHAM LETTER FINAL N AA47 CHAM LETTER FINAL P AA48 CHAM LETTER FINAL Y AA49 CHAM LETTER FINAL R AA4A CHAM LETTER FINAL L AA4B CHAM LETTER FINAL SS AA4C CHAM CONSONANT SIGN FINAL M AA4D CHAM CONSONANT SIGN FINAL H @ Digits AA50 CHAM DIGIT ZERO AA51 CHAM DIGIT ONE AA52 CHAM DIGIT TWO AA53 CHAM DIGIT THREE AA54 CHAM DIGIT FOUR AA55 CHAM DIGIT FIVE AA56 CHAM DIGIT SIX AA57 CHAM DIGIT SEVEN AA58 CHAM DIGIT EIGHT AA59 CHAM DIGIT NINE @ Punctuation AA5C CHAM PUNCTUATION SPIRAL AA5D CHAM PUNCTUATION DANDA AA5E CHAM PUNCTUATION DOUBLE DANDA AA5F CHAM PUNCTUATION TRIPLE DANDA @@ AA60 Myanmar Extended-A AA7F @ Khamti Shan consonants AA60 MYANMAR LETTER KHAMTI GA ~ AA60 FE00 dotted form AA61 MYANMAR LETTER KHAMTI CA ~ AA61 FE00 dotted form AA62 MYANMAR LETTER KHAMTI CHA ~ AA62 FE00 dotted form AA63 MYANMAR LETTER KHAMTI JA ~ AA63 FE00 dotted form AA64 MYANMAR LETTER KHAMTI JHA ~ AA64 FE00 dotted form AA65 MYANMAR LETTER KHAMTI NYA ~ AA65 FE00 dotted form AA66 MYANMAR LETTER KHAMTI TTA ~ AA66 FE00 dotted form AA67 MYANMAR LETTER KHAMTI TTHA AA68 MYANMAR LETTER KHAMTI DDA AA69 MYANMAR LETTER KHAMTI DDHA AA6A MYANMAR LETTER KHAMTI DHA AA6B MYANMAR LETTER KHAMTI NA ~ AA6B FE00 dotted form AA6C MYANMAR LETTER KHAMTI SA ~ AA6C FE00 dotted form AA6D MYANMAR LETTER KHAMTI HA AA6E MYANMAR LETTER KHAMTI HHA AA6F MYANMAR LETTER KHAMTI FA ~ AA6F FE00 dotted form AA70 MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION x (myanmar modifier letter shan reduplication - A9E6) AA71 MYANMAR LETTER KHAMTI XA AA72 MYANMAR LETTER KHAMTI ZA AA73 MYANMAR LETTER KHAMTI RA @ Khamti Shan logograms AA74 MYANMAR LOGOGRAM KHAMTI OAY AA75 MYANMAR LOGOGRAM KHAMTI QN AA76 MYANMAR LOGOGRAM KHAMTI HM @ Aiton symbols and letters AA77 MYANMAR SYMBOL AITON EXCLAMATION AA78 MYANMAR SYMBOL AITON ONE AA79 MYANMAR SYMBOL AITON TWO AA7A MYANMAR LETTER AITON RA ~ AA7A FE00 dotted form @ Pa'o Karen tone mark AA7B MYANMAR SIGN PAO KAREN TONE @ Tai Laing tone marks AA7C MYANMAR SIGN TAI LAING TONE-2 AA7D MYANMAR SIGN TAI LAING TONE-5 @ Shwe Palaung letters AA7E MYANMAR LETTER SHWE PALAUNG CHA AA7F MYANMAR LETTER SHWE PALAUNG SHA @~ ! @@ AA80 Tai Viet AADF @ Consonants AA80 TAI VIET LETTER LOW KO AA81 TAI VIET LETTER HIGH KO AA82 TAI VIET LETTER LOW KHO AA83 TAI VIET LETTER HIGH KHO AA84 TAI VIET LETTER LOW KHHO AA85 TAI VIET LETTER HIGH KHHO AA86 TAI VIET LETTER LOW GO AA87 TAI VIET LETTER HIGH GO AA88 TAI VIET LETTER LOW NGO AA89 TAI VIET LETTER HIGH NGO AA8A TAI VIET LETTER LOW CO AA8B TAI VIET LETTER HIGH CO AA8C TAI VIET LETTER LOW CHO AA8D TAI VIET LETTER HIGH CHO AA8E TAI VIET LETTER LOW SO AA8F TAI VIET LETTER HIGH SO AA90 TAI VIET LETTER LOW NYO AA91 TAI VIET LETTER HIGH NYO AA92 TAI VIET LETTER LOW DO AA93 TAI VIET LETTER HIGH DO AA94 TAI VIET LETTER LOW TO AA95 TAI VIET LETTER HIGH TO AA96 TAI VIET LETTER LOW THO AA97 TAI VIET LETTER HIGH THO AA98 TAI VIET LETTER LOW NO AA99 TAI VIET LETTER HIGH NO AA9A TAI VIET LETTER LOW BO AA9B TAI VIET LETTER HIGH BO AA9C TAI VIET LETTER LOW PO AA9D TAI VIET LETTER HIGH PO AA9E TAI VIET LETTER LOW PHO AA9F TAI VIET LETTER HIGH PHO AAA0 TAI VIET LETTER LOW FO AAA1 TAI VIET LETTER HIGH FO AAA2 TAI VIET LETTER LOW MO AAA3 TAI VIET LETTER HIGH MO AAA4 TAI VIET LETTER LOW YO AAA5 TAI VIET LETTER HIGH YO AAA6 TAI VIET LETTER LOW RO AAA7 TAI VIET LETTER HIGH RO AAA8 TAI VIET LETTER LOW LO AAA9 TAI VIET LETTER HIGH LO AAAA TAI VIET LETTER LOW VO AAAB TAI VIET LETTER HIGH VO AAAC TAI VIET LETTER LOW HO AAAD TAI VIET LETTER HIGH HO AAAE TAI VIET LETTER LOW O AAAF TAI VIET LETTER HIGH O @ Vowels and finals AAB0 TAI VIET MAI KANG AAB1 TAI VIET VOWEL AA AAB2 TAI VIET VOWEL I AAB3 TAI VIET VOWEL UE AAB4 TAI VIET VOWEL U AAB5 TAI VIET VOWEL E * precedes consonant in visual order AAB6 TAI VIET VOWEL O * precedes consonant in visual order AAB7 TAI VIET MAI KHIT AAB8 TAI VIET VOWEL IA AAB9 TAI VIET VOWEL UEA * precedes consonant in visual order AABA TAI VIET VOWEL UA AABB TAI VIET VOWEL AUE * precedes consonant in visual order AABC TAI VIET VOWEL AY * precedes consonant in visual order AABD TAI VIET VOWEL AN AABE TAI VIET VOWEL AM @ Tones AABF TAI VIET TONE MAI EK AAC0 TAI VIET TONE MAI NUENG AAC1 TAI VIET TONE MAI THO AAC2 TAI VIET TONE MAI SONG @ Word ligature symbols AADB TAI VIET SYMBOL KON = person AADC TAI VIET SYMBOL NUENG = one @ Repetition mark AADD TAI VIET SYMBOL SAM x (thai character maiyamok - 0E46) @ Punctuation AADE TAI VIET SYMBOL HO HOI * marks start of text in songs and poems AADF TAI VIET SYMBOL KOI KOI * marks end of text in songs and poems @@ AAE0 Meetei Mayek Extensions AAFF @+ The characters in this block are extensions for historical orthographies of Meetei and are not specified in the Manipuri Government order No. 1/2/78-SS/E. @ Independent vowel signs AAE0 MEETEI MAYEK LETTER E AAE1 MEETEI MAYEK LETTER O @ Consonants AAE2 MEETEI MAYEK LETTER CHA AAE3 MEETEI MAYEK LETTER NYA AAE4 MEETEI MAYEK LETTER TTA AAE5 MEETEI MAYEK LETTER TTHA AAE6 MEETEI MAYEK LETTER DDA AAE7 MEETEI MAYEK LETTER DDHA AAE8 MEETEI MAYEK LETTER NNA AAE9 MEETEI MAYEK LETTER SHA AAEA MEETEI MAYEK LETTER SSA @ Dependent vowel signs AAEB MEETEI MAYEK VOWEL SIGN II AAEC MEETEI MAYEK VOWEL SIGN UU AAED MEETEI MAYEK VOWEL SIGN AAI AAEE MEETEI MAYEK VOWEL SIGN AU AAEF MEETEI MAYEK VOWEL SIGN AAU @ Punctuation AAF0 MEETEI MAYEK CHEIKHAN = danda AAF1 MEETEI MAYEK AHANG KHUDAM = question mark @ Sign AAF2 MEETEI MAYEK ANJI * a philosophical sign x (devanagari om - 0950) @ Repetition marks @+ These marks have fallen into disuse. AAF3 MEETEI MAYEK SYLLABLE REPETITION MARK AAF4 MEETEI MAYEK WORD REPETITION MARK @ Sign AAF5 MEETEI MAYEK VOWEL SIGN VISARGA @ Virama AAF6 MEETEI MAYEK VIRAMA * used to form conjuncts in historical orthographies x (myanmar sign virama - 1039) @@ AB00 Ethiopic Extended-A AB2F @ Gamo-Gofa-Dawro and Basketo AB01 ETHIOPIC SYLLABLE TTHU AB02 ETHIOPIC SYLLABLE TTHI AB03 ETHIOPIC SYLLABLE TTHAA AB04 ETHIOPIC SYLLABLE TTHEE AB05 ETHIOPIC SYLLABLE TTHE AB06 ETHIOPIC SYLLABLE TTHO AB09 ETHIOPIC SYLLABLE DDHU AB0A ETHIOPIC SYLLABLE DDHI AB0B ETHIOPIC SYLLABLE DDHAA AB0C ETHIOPIC SYLLABLE DDHEE AB0D ETHIOPIC SYLLABLE DDHE AB0E ETHIOPIC SYLLABLE DDHO @ Gamo-Gofa-Dawro AB11 ETHIOPIC SYLLABLE DZU AB12 ETHIOPIC SYLLABLE DZI AB13 ETHIOPIC SYLLABLE DZAA AB14 ETHIOPIC SYLLABLE DZEE AB15 ETHIOPIC SYLLABLE DZE AB16 ETHIOPIC SYLLABLE DZO @ Gumuz AB20 ETHIOPIC SYLLABLE CCHHA AB21 ETHIOPIC SYLLABLE CCHHU AB22 ETHIOPIC SYLLABLE CCHHI AB23 ETHIOPIC SYLLABLE CCHHAA AB24 ETHIOPIC SYLLABLE CCHHEE AB25 ETHIOPIC SYLLABLE CCHHE AB26 ETHIOPIC SYLLABLE CCHHO AB28 ETHIOPIC SYLLABLE BBA AB29 ETHIOPIC SYLLABLE BBU AB2A ETHIOPIC SYLLABLE BBI AB2B ETHIOPIC SYLLABLE BBAA AB2C ETHIOPIC SYLLABLE BBEE AB2D ETHIOPIC SYLLABLE BBE AB2E ETHIOPIC SYLLABLE BBO @@ AB30 Latin Extended-E AB6F @ Letters for German dialectology AB30 LATIN SMALL LETTER BARRED ALPHA AB31 LATIN SMALL LETTER A REVERSED-SCHWA AB32 LATIN SMALL LETTER BLACKLETTER E AB33 LATIN SMALL LETTER BARRED E AB34 LATIN SMALL LETTER E WITH FLOURISH AB35 LATIN SMALL LETTER LENIS F x (latin small letter f - 0066) AB36 LATIN SMALL LETTER SCRIPT G WITH CROSSED-TAIL AB37 LATIN SMALL LETTER L WITH INVERTED LAZY S AB38 LATIN SMALL LETTER L WITH DOUBLE MIDDLE TILDE AB39 LATIN SMALL LETTER L WITH MIDDLE RING AB3A LATIN SMALL LETTER M WITH CROSSED-TAIL AB3B LATIN SMALL LETTER N WITH CROSSED-TAIL AB3C LATIN SMALL LETTER ENG WITH CROSSED-TAIL AB3D LATIN SMALL LETTER BLACKLETTER O AB3E LATIN SMALL LETTER BLACKLETTER O WITH STROKE AB3F LATIN SMALL LETTER OPEN O WITH STROKE AB40 LATIN SMALL LETTER INVERTED OE = latin small letter o reversed-schwa AB41 LATIN SMALL LETTER TURNED OE WITH STROKE AB42 LATIN SMALL LETTER TURNED OE WITH HORIZONTAL STROKE AB43 LATIN SMALL LETTER TURNED O OPEN-O AB44 LATIN SMALL LETTER TURNED O OPEN-O WITH STROKE AB45 LATIN SMALL LETTER STIRRUP R AB46 LATIN LETTER SMALL CAPITAL R WITH RIGHT LEG AB47 LATIN SMALL LETTER R WITHOUT HANDLE AB48 LATIN SMALL LETTER DOUBLE R AB49 LATIN SMALL LETTER R WITH CROSSED-TAIL AB4A LATIN SMALL LETTER DOUBLE R WITH CROSSED-TAIL AB4B LATIN SMALL LETTER SCRIPT R AB4C LATIN SMALL LETTER SCRIPT R WITH RING AB4D LATIN SMALL LETTER BASELINE ESH AB4E LATIN SMALL LETTER U WITH SHORT RIGHT LEG AB4F LATIN SMALL LETTER U BAR WITH SHORT RIGHT LEG AB50 LATIN SMALL LETTER UI AB51 LATIN SMALL LETTER TURNED UI AB52 LATIN SMALL LETTER U WITH LEFT HOOK AB53 LATIN SMALL LETTER CHI * uppercase is A7B3 x (greek small letter chi - 03C7) AB54 LATIN SMALL LETTER CHI WITH LOW RIGHT RING AB55 LATIN SMALL LETTER CHI WITH LOW LEFT SERIF AB56 LATIN SMALL LETTER X WITH LOW RIGHT RING AB57 LATIN SMALL LETTER X WITH LONG LEFT LEG AB58 LATIN SMALL LETTER X WITH LONG LEFT LEG AND LOW RIGHT RING AB59 LATIN SMALL LETTER X WITH LONG LEFT LEG WITH SERIF AB5A LATIN SMALL LETTER Y WITH SHORT RIGHT LEG @ Modifier letters for German dialectology AB5B MODIFIER BREVE WITH INVERTED BREVE x (breve - 02D8) x (close up - 2050) x (metrical breve - 23D1) AB5C MODIFIER LETTER SMALL HENG # A727 AB5D MODIFIER LETTER SMALL L WITH INVERTED LAZY S # AB37 AB5E MODIFIER LETTER SMALL L WITH MIDDLE TILDE # 026B AB5F MODIFIER LETTER SMALL U WITH LEFT HOOK # AB52 @ Historic letters for Sakha (Yakut) @+ These letters were used from 1917 to 1927 in the official IPA-based Latin orthography of that era. AB60 LATIN SMALL LETTER SAKHA YAT x (cyrillic small letter yat - 0463) AB61 LATIN SMALL LETTER IOTIFIED E x (cyrillic small letter iotified e - 0465) AB62 LATIN SMALL LETTER OPEN OE x (latin small letter open o - 0254) AB63 LATIN SMALL LETTER UO @ Letters for Americanist orthographies AB64 LATIN SMALL LETTER INVERTED ALPHA x (latin small letter turned alpha - 0252) AB65 GREEK LETTER SMALL CAPITAL OMEGA * obsolete for mid back rounded vowel x (latin small letter closed omega - 0277) x (greek small letter omega - 03C9) @@ AB70 Cherokee Supplement ABBF @+ The uppercase Cherokee syllables are encoded in the Cherokee block at 13A0..13FF. Lowercase ye, yi, yo, yu, yv, and mv are encoded in that same block. @ Lowercase syllables AB70 CHEROKEE SMALL LETTER A AB71 CHEROKEE SMALL LETTER E AB72 CHEROKEE SMALL LETTER I AB73 CHEROKEE SMALL LETTER O AB74 CHEROKEE SMALL LETTER U AB75 CHEROKEE SMALL LETTER V AB76 CHEROKEE SMALL LETTER GA AB77 CHEROKEE SMALL LETTER KA AB78 CHEROKEE SMALL LETTER GE AB79 CHEROKEE SMALL LETTER GI AB7A CHEROKEE SMALL LETTER GO AB7B CHEROKEE SMALL LETTER GU AB7C CHEROKEE SMALL LETTER GV AB7D CHEROKEE SMALL LETTER HA AB7E CHEROKEE SMALL LETTER HE AB7F CHEROKEE SMALL LETTER HI AB80 CHEROKEE SMALL LETTER HO AB81 CHEROKEE SMALL LETTER HU AB82 CHEROKEE SMALL LETTER HV AB83 CHEROKEE SMALL LETTER LA AB84 CHEROKEE SMALL LETTER LE AB85 CHEROKEE SMALL LETTER LI AB86 CHEROKEE SMALL LETTER LO AB87 CHEROKEE SMALL LETTER LU AB88 CHEROKEE SMALL LETTER LV AB89 CHEROKEE SMALL LETTER MA AB8A CHEROKEE SMALL LETTER ME AB8B CHEROKEE SMALL LETTER MI AB8C CHEROKEE SMALL LETTER MO AB8D CHEROKEE SMALL LETTER MU AB8E CHEROKEE SMALL LETTER NA AB8F CHEROKEE SMALL LETTER HNA AB90 CHEROKEE SMALL LETTER NAH AB91 CHEROKEE SMALL LETTER NE AB92 CHEROKEE SMALL LETTER NI AB93 CHEROKEE SMALL LETTER NO AB94 CHEROKEE SMALL LETTER NU AB95 CHEROKEE SMALL LETTER NV AB96 CHEROKEE SMALL LETTER QUA AB97 CHEROKEE SMALL LETTER QUE AB98 CHEROKEE SMALL LETTER QUI AB99 CHEROKEE SMALL LETTER QUO AB9A CHEROKEE SMALL LETTER QUU AB9B CHEROKEE SMALL LETTER QUV AB9C CHEROKEE SMALL LETTER SA AB9D CHEROKEE SMALL LETTER S AB9E CHEROKEE SMALL LETTER SE AB9F CHEROKEE SMALL LETTER SI ABA0 CHEROKEE SMALL LETTER SO ABA1 CHEROKEE SMALL LETTER SU ABA2 CHEROKEE SMALL LETTER SV ABA3 CHEROKEE SMALL LETTER DA ABA4 CHEROKEE SMALL LETTER TA ABA5 CHEROKEE SMALL LETTER DE ABA6 CHEROKEE SMALL LETTER TE ABA7 CHEROKEE SMALL LETTER DI ABA8 CHEROKEE SMALL LETTER TI ABA9 CHEROKEE SMALL LETTER DO ABAA CHEROKEE SMALL LETTER DU ABAB CHEROKEE SMALL LETTER DV ABAC CHEROKEE SMALL LETTER DLA ABAD CHEROKEE SMALL LETTER TLA ABAE CHEROKEE SMALL LETTER TLE ABAF CHEROKEE SMALL LETTER TLI ABB0 CHEROKEE SMALL LETTER TLO ABB1 CHEROKEE SMALL LETTER TLU ABB2 CHEROKEE SMALL LETTER TLV ABB3 CHEROKEE SMALL LETTER TSA ABB4 CHEROKEE SMALL LETTER TSE ABB5 CHEROKEE SMALL LETTER TSI ABB6 CHEROKEE SMALL LETTER TSO ABB7 CHEROKEE SMALL LETTER TSU ABB8 CHEROKEE SMALL LETTER TSV ABB9 CHEROKEE SMALL LETTER WA ABBA CHEROKEE SMALL LETTER WE ABBB CHEROKEE SMALL LETTER WI ABBC CHEROKEE SMALL LETTER WO ABBD CHEROKEE SMALL LETTER WU ABBE CHEROKEE SMALL LETTER WV ABBF CHEROKEE SMALL LETTER YA @@ ABC0 Meetei Mayek ABFF @+ The name "Meetei Mayek" is used in official documentation in Manipur. Many linguists also use the name "Meitei Mayek", and other transliterations also occur. @ Letters ABC0 MEETEI MAYEK LETTER KOK = ka ABC1 MEETEI MAYEK LETTER SAM = sa ABC2 MEETEI MAYEK LETTER LAI = la ABC3 MEETEI MAYEK LETTER MIT = ma ABC4 MEETEI MAYEK LETTER PA ABC5 MEETEI MAYEK LETTER NA ABC6 MEETEI MAYEK LETTER CHIL = ca ABC7 MEETEI MAYEK LETTER TIL = ta ABC8 MEETEI MAYEK LETTER KHOU = kha ABC9 MEETEI MAYEK LETTER NGOU = nga ABCA MEETEI MAYEK LETTER THOU = tha ABCB MEETEI MAYEK LETTER WAI = wa ABCC MEETEI MAYEK LETTER YANG = ya ABCD MEETEI MAYEK LETTER HUK = ha ABCE MEETEI MAYEK LETTER UN = u ABCF MEETEI MAYEK LETTER I ABD0 MEETEI MAYEK LETTER PHAM = pha ABD1 MEETEI MAYEK LETTER ATIYA = a ABD2 MEETEI MAYEK LETTER GOK = ga ABD3 MEETEI MAYEK LETTER JHAM = jha ABD4 MEETEI MAYEK LETTER RAI = ra ABD5 MEETEI MAYEK LETTER BA ABD6 MEETEI MAYEK LETTER JIL = ja ABD7 MEETEI MAYEK LETTER DIL = da ABD8 MEETEI MAYEK LETTER GHOU = gha ABD9 MEETEI MAYEK LETTER DHOU = dha ABDA MEETEI MAYEK LETTER BHAM = bha @ Final consonants ABDB MEETEI MAYEK LETTER KOK LONSUM = k ABDC MEETEI MAYEK LETTER LAI LONSUM = l ABDD MEETEI MAYEK LETTER MIT LONSUM = m ABDE MEETEI MAYEK LETTER PA LONSUM = p ABDF MEETEI MAYEK LETTER NA LONSUM = n ABE0 MEETEI MAYEK LETTER TIL LONSUM = t ABE1 MEETEI MAYEK LETTER NGOU LONSUM = ng ABE2 MEETEI MAYEK LETTER I LONSUM = i @ Dependent vowel signs ABE3 MEETEI MAYEK VOWEL SIGN ONAP = o ABE4 MEETEI MAYEK VOWEL SIGN INAP = i ABE5 MEETEI MAYEK VOWEL SIGN ANAP = aa ABE6 MEETEI MAYEK VOWEL SIGN YENAP = e ABE7 MEETEI MAYEK VOWEL SIGN SOUNAP = ou ABE8 MEETEI MAYEK VOWEL SIGN UNAP = u ABE9 MEETEI MAYEK VOWEL SIGN CHEINAP = ei ABEA MEETEI MAYEK VOWEL SIGN NUNG = anusvara @ Punctuation ABEB MEETEI MAYEK CHEIKHEI = double danda ABEC MEETEI MAYEK LUM IYEK = heavy tone ABED MEETEI MAYEK APUN IYEK = killer x (myanmar sign asat - 103A) @ Digits ABF0 MEETEI MAYEK DIGIT ZERO = phun ABF1 MEETEI MAYEK DIGIT ONE = ama ABF2 MEETEI MAYEK DIGIT TWO = ani ABF3 MEETEI MAYEK DIGIT THREE = ahum ABF4 MEETEI MAYEK DIGIT FOUR = mari ABF5 MEETEI MAYEK DIGIT FIVE = manga ABF6 MEETEI MAYEK DIGIT SIX = taruk ABF7 MEETEI MAYEK DIGIT SEVEN = taret ABF8 MEETEI MAYEK DIGIT EIGHT = nipal ABF9 MEETEI MAYEK DIGIT NINE = mapal @@ AC00 Hangul Syllables D7A3 @@ D7B0 Hangul Jamo Extended-B D7FF @ Old medial vowels D7B0 HANGUL JUNGSEONG O-YEO D7B1 HANGUL JUNGSEONG O-O-I D7B2 HANGUL JUNGSEONG YO-A D7B3 HANGUL JUNGSEONG YO-AE D7B4 HANGUL JUNGSEONG YO-EO D7B5 HANGUL JUNGSEONG U-YEO D7B6 HANGUL JUNGSEONG U-I-I D7B7 HANGUL JUNGSEONG YU-AE D7B8 HANGUL JUNGSEONG YU-O D7B9 HANGUL JUNGSEONG EU-A D7BA HANGUL JUNGSEONG EU-EO D7BB HANGUL JUNGSEONG EU-E D7BC HANGUL JUNGSEONG EU-O D7BD HANGUL JUNGSEONG I-YA-O D7BE HANGUL JUNGSEONG I-YAE D7BF HANGUL JUNGSEONG I-YEO D7C0 HANGUL JUNGSEONG I-YE D7C1 HANGUL JUNGSEONG I-O-I D7C2 HANGUL JUNGSEONG I-YO D7C3 HANGUL JUNGSEONG I-YU D7C4 HANGUL JUNGSEONG I-I D7C5 HANGUL JUNGSEONG ARAEA-A D7C6 HANGUL JUNGSEONG ARAEA-E @ Old final consonants D7CB HANGUL JONGSEONG NIEUN-RIEUL D7CC HANGUL JONGSEONG NIEUN-CHIEUCH D7CD HANGUL JONGSEONG SSANGTIKEUT D7CE HANGUL JONGSEONG SSANGTIKEUT-PIEUP D7CF HANGUL JONGSEONG TIKEUT-PIEUP D7D0 HANGUL JONGSEONG TIKEUT-SIOS D7D1 HANGUL JONGSEONG TIKEUT-SIOS-KIYEOK D7D2 HANGUL JONGSEONG TIKEUT-CIEUC D7D3 HANGUL JONGSEONG TIKEUT-CHIEUCH D7D4 HANGUL JONGSEONG TIKEUT-THIEUTH D7D5 HANGUL JONGSEONG RIEUL-SSANGKIYEOK D7D6 HANGUL JONGSEONG RIEUL-KIYEOK-HIEUH D7D7 HANGUL JONGSEONG SSANGRIEUL-KHIEUKH D7D8 HANGUL JONGSEONG RIEUL-MIEUM-HIEUH D7D9 HANGUL JONGSEONG RIEUL-PIEUP-TIKEUT D7DA HANGUL JONGSEONG RIEUL-PIEUP-PHIEUPH D7DB HANGUL JONGSEONG RIEUL-YESIEUNG D7DC HANGUL JONGSEONG RIEUL-YEORINHIEUH-HIEUH D7DD HANGUL JONGSEONG KAPYEOUNRIEUL D7DE HANGUL JONGSEONG MIEUM-NIEUN D7DF HANGUL JONGSEONG MIEUM-SSANGNIEUN D7E0 HANGUL JONGSEONG SSANGMIEUM D7E1 HANGUL JONGSEONG MIEUM-PIEUP-SIOS D7E2 HANGUL JONGSEONG MIEUM-CIEUC D7E3 HANGUL JONGSEONG PIEUP-TIKEUT D7E4 HANGUL JONGSEONG PIEUP-RIEUL-PHIEUPH D7E5 HANGUL JONGSEONG PIEUP-MIEUM D7E6 HANGUL JONGSEONG SSANGPIEUP D7E7 HANGUL JONGSEONG PIEUP-SIOS-TIKEUT D7E8 HANGUL JONGSEONG PIEUP-CIEUC D7E9 HANGUL JONGSEONG PIEUP-CHIEUCH D7EA HANGUL JONGSEONG SIOS-MIEUM D7EB HANGUL JONGSEONG SIOS-KAPYEOUNPIEUP D7EC HANGUL JONGSEONG SSANGSIOS-KIYEOK D7ED HANGUL JONGSEONG SSANGSIOS-TIKEUT D7EE HANGUL JONGSEONG SIOS-PANSIOS D7EF HANGUL JONGSEONG SIOS-CIEUC D7F0 HANGUL JONGSEONG SIOS-CHIEUCH D7F1 HANGUL JONGSEONG SIOS-THIEUTH D7F2 HANGUL JONGSEONG SIOS-HIEUH D7F3 HANGUL JONGSEONG PANSIOS-PIEUP D7F4 HANGUL JONGSEONG PANSIOS-KAPYEOUNPIEUP D7F5 HANGUL JONGSEONG YESIEUNG-MIEUM D7F6 HANGUL JONGSEONG YESIEUNG-HIEUH D7F7 HANGUL JONGSEONG CIEUC-PIEUP D7F8 HANGUL JONGSEONG CIEUC-SSANGPIEUP D7F9 HANGUL JONGSEONG SSANGCIEUC D7FA HANGUL JONGSEONG PHIEUPH-SIOS D7FB HANGUL JONGSEONG PHIEUPH-THIEUTH @@ D800 High Surrogates DB7F @@ DB80 High Private Use Surrogates DBFF @@ DC00 Low Surrogates DFFF @@ E000 Private Use Area F8FF @+ This range of 6400 code points is dedicated to private use. @@ F900 CJK Compatibility Ideographs FAFF @@+ @+ This block, despite its name, contains a number of unified CJK ideographs. Each is also individually identified by an annotation. @+ Subheaders identifying sources for subranges do not indicate required usage or preclude mappings to other sources. For example, many pronunciation variants from KS X 1001:1998 are also mapped to a J source. @ Pronunciation variants from KS X 1001:1998 F900 CJK COMPATIBILITY IDEOGRAPH-F900 : 8C48 F901 CJK COMPATIBILITY IDEOGRAPH-F901 : 66F4 F902 CJK COMPATIBILITY IDEOGRAPH-F902 : 8ECA F903 CJK COMPATIBILITY IDEOGRAPH-F903 : 8CC8 F904 CJK COMPATIBILITY IDEOGRAPH-F904 : 6ED1 F905 CJK COMPATIBILITY IDEOGRAPH-F905 : 4E32 F906 CJK COMPATIBILITY IDEOGRAPH-F906 : 53E5 F907 CJK COMPATIBILITY IDEOGRAPH-F907 : 9F9C F908 CJK COMPATIBILITY IDEOGRAPH-F908 : 9F9C F909 CJK COMPATIBILITY IDEOGRAPH-F909 : 5951 F90A CJK COMPATIBILITY IDEOGRAPH-F90A : 91D1 F90B CJK COMPATIBILITY IDEOGRAPH-F90B : 5587 F90C CJK COMPATIBILITY IDEOGRAPH-F90C : 5948 F90D CJK COMPATIBILITY IDEOGRAPH-F90D : 61F6 F90E CJK COMPATIBILITY IDEOGRAPH-F90E : 7669 F90F CJK COMPATIBILITY IDEOGRAPH-F90F : 7F85 F910 CJK COMPATIBILITY IDEOGRAPH-F910 : 863F F911 CJK COMPATIBILITY IDEOGRAPH-F911 : 87BA F912 CJK COMPATIBILITY IDEOGRAPH-F912 : 88F8 F913 CJK COMPATIBILITY IDEOGRAPH-F913 : 908F F914 CJK COMPATIBILITY IDEOGRAPH-F914 : 6A02 F915 CJK COMPATIBILITY IDEOGRAPH-F915 : 6D1B F916 CJK COMPATIBILITY IDEOGRAPH-F916 : 70D9 F917 CJK COMPATIBILITY IDEOGRAPH-F917 : 73DE F918 CJK COMPATIBILITY IDEOGRAPH-F918 : 843D F919 CJK COMPATIBILITY IDEOGRAPH-F919 : 916A F91A CJK COMPATIBILITY IDEOGRAPH-F91A : 99F1 F91B CJK COMPATIBILITY IDEOGRAPH-F91B : 4E82 F91C CJK COMPATIBILITY IDEOGRAPH-F91C : 5375 F91D CJK COMPATIBILITY IDEOGRAPH-F91D : 6B04 F91E CJK COMPATIBILITY IDEOGRAPH-F91E : 721B F91F CJK COMPATIBILITY IDEOGRAPH-F91F : 862D F920 CJK COMPATIBILITY IDEOGRAPH-F920 : 9E1E F921 CJK COMPATIBILITY IDEOGRAPH-F921 : 5D50 F922 CJK COMPATIBILITY IDEOGRAPH-F922 : 6FEB F923 CJK COMPATIBILITY IDEOGRAPH-F923 : 85CD F924 CJK COMPATIBILITY IDEOGRAPH-F924 : 8964 F925 CJK COMPATIBILITY IDEOGRAPH-F925 : 62C9 F926 CJK COMPATIBILITY IDEOGRAPH-F926 : 81D8 F927 CJK COMPATIBILITY IDEOGRAPH-F927 : 881F F928 CJK COMPATIBILITY IDEOGRAPH-F928 : 5ECA F929 CJK COMPATIBILITY IDEOGRAPH-F929 : 6717 F92A CJK COMPATIBILITY IDEOGRAPH-F92A : 6D6A F92B CJK COMPATIBILITY IDEOGRAPH-F92B : 72FC F92C CJK COMPATIBILITY IDEOGRAPH-F92C : 90CE F92D CJK COMPATIBILITY IDEOGRAPH-F92D : 4F86 F92E CJK COMPATIBILITY IDEOGRAPH-F92E : 51B7 F92F CJK COMPATIBILITY IDEOGRAPH-F92F : 52DE F930 CJK COMPATIBILITY IDEOGRAPH-F930 : 64C4 F931 CJK COMPATIBILITY IDEOGRAPH-F931 : 6AD3 F932 CJK COMPATIBILITY IDEOGRAPH-F932 : 7210 F933 CJK COMPATIBILITY IDEOGRAPH-F933 : 76E7 F934 CJK COMPATIBILITY IDEOGRAPH-F934 : 8001 F935 CJK COMPATIBILITY IDEOGRAPH-F935 : 8606 F936 CJK COMPATIBILITY IDEOGRAPH-F936 : 865C F937 CJK COMPATIBILITY IDEOGRAPH-F937 : 8DEF F938 CJK COMPATIBILITY IDEOGRAPH-F938 : 9732 F939 CJK COMPATIBILITY IDEOGRAPH-F939 : 9B6F F93A CJK COMPATIBILITY IDEOGRAPH-F93A : 9DFA F93B CJK COMPATIBILITY IDEOGRAPH-F93B : 788C F93C CJK COMPATIBILITY IDEOGRAPH-F93C : 797F F93D CJK COMPATIBILITY IDEOGRAPH-F93D : 7DA0 F93E CJK COMPATIBILITY IDEOGRAPH-F93E : 83C9 F93F CJK COMPATIBILITY IDEOGRAPH-F93F : 9304 F940 CJK COMPATIBILITY IDEOGRAPH-F940 : 9E7F F941 CJK COMPATIBILITY IDEOGRAPH-F941 : 8AD6 F942 CJK COMPATIBILITY IDEOGRAPH-F942 : 58DF F943 CJK COMPATIBILITY IDEOGRAPH-F943 : 5F04 F944 CJK COMPATIBILITY IDEOGRAPH-F944 : 7C60 F945 CJK COMPATIBILITY IDEOGRAPH-F945 : 807E F946 CJK COMPATIBILITY IDEOGRAPH-F946 : 7262 F947 CJK COMPATIBILITY IDEOGRAPH-F947 : 78CA F948 CJK COMPATIBILITY IDEOGRAPH-F948 : 8CC2 F949 CJK COMPATIBILITY IDEOGRAPH-F949 : 96F7 F94A CJK COMPATIBILITY IDEOGRAPH-F94A : 58D8 F94B CJK COMPATIBILITY IDEOGRAPH-F94B : 5C62 F94C CJK COMPATIBILITY IDEOGRAPH-F94C : 6A13 F94D CJK COMPATIBILITY IDEOGRAPH-F94D : 6DDA F94E CJK COMPATIBILITY IDEOGRAPH-F94E : 6F0F F94F CJK COMPATIBILITY IDEOGRAPH-F94F : 7D2F F950 CJK COMPATIBILITY IDEOGRAPH-F950 : 7E37 F951 CJK COMPATIBILITY IDEOGRAPH-F951 : 964B F952 CJK COMPATIBILITY IDEOGRAPH-F952 : 52D2 F953 CJK COMPATIBILITY IDEOGRAPH-F953 : 808B F954 CJK COMPATIBILITY IDEOGRAPH-F954 : 51DC F955 CJK COMPATIBILITY IDEOGRAPH-F955 : 51CC F956 CJK COMPATIBILITY IDEOGRAPH-F956 : 7A1C F957 CJK COMPATIBILITY IDEOGRAPH-F957 : 7DBE F958 CJK COMPATIBILITY IDEOGRAPH-F958 : 83F1 F959 CJK COMPATIBILITY IDEOGRAPH-F959 : 9675 F95A CJK COMPATIBILITY IDEOGRAPH-F95A : 8B80 F95B CJK COMPATIBILITY IDEOGRAPH-F95B : 62CF F95C CJK COMPATIBILITY IDEOGRAPH-F95C : 6A02 F95D CJK COMPATIBILITY IDEOGRAPH-F95D : 8AFE F95E CJK COMPATIBILITY IDEOGRAPH-F95E : 4E39 F95F CJK COMPATIBILITY IDEOGRAPH-F95F : 5BE7 F960 CJK COMPATIBILITY IDEOGRAPH-F960 : 6012 F961 CJK COMPATIBILITY IDEOGRAPH-F961 : 7387 F962 CJK COMPATIBILITY IDEOGRAPH-F962 : 7570 F963 CJK COMPATIBILITY IDEOGRAPH-F963 : 5317 F964 CJK COMPATIBILITY IDEOGRAPH-F964 : 78FB F965 CJK COMPATIBILITY IDEOGRAPH-F965 : 4FBF F966 CJK COMPATIBILITY IDEOGRAPH-F966 : 5FA9 F967 CJK COMPATIBILITY IDEOGRAPH-F967 : 4E0D F968 CJK COMPATIBILITY IDEOGRAPH-F968 : 6CCC F969 CJK COMPATIBILITY IDEOGRAPH-F969 : 6578 F96A CJK COMPATIBILITY IDEOGRAPH-F96A : 7D22 F96B CJK COMPATIBILITY IDEOGRAPH-F96B : 53C3 F96C CJK COMPATIBILITY IDEOGRAPH-F96C : 585E F96D CJK COMPATIBILITY IDEOGRAPH-F96D : 7701 F96E CJK COMPATIBILITY IDEOGRAPH-F96E : 8449 F96F CJK COMPATIBILITY IDEOGRAPH-F96F : 8AAA F970 CJK COMPATIBILITY IDEOGRAPH-F970 : 6BBA F971 CJK COMPATIBILITY IDEOGRAPH-F971 : 8FB0 F972 CJK COMPATIBILITY IDEOGRAPH-F972 : 6C88 F973 CJK COMPATIBILITY IDEOGRAPH-F973 : 62FE F974 CJK COMPATIBILITY IDEOGRAPH-F974 : 82E5 F975 CJK COMPATIBILITY IDEOGRAPH-F975 : 63A0 F976 CJK COMPATIBILITY IDEOGRAPH-F976 : 7565 F977 CJK COMPATIBILITY IDEOGRAPH-F977 : 4EAE F978 CJK COMPATIBILITY IDEOGRAPH-F978 : 5169 F979 CJK COMPATIBILITY IDEOGRAPH-F979 : 51C9 F97A CJK COMPATIBILITY IDEOGRAPH-F97A : 6881 F97B CJK COMPATIBILITY IDEOGRAPH-F97B : 7CE7 F97C CJK COMPATIBILITY IDEOGRAPH-F97C : 826F F97D CJK COMPATIBILITY IDEOGRAPH-F97D : 8AD2 F97E CJK COMPATIBILITY IDEOGRAPH-F97E : 91CF F97F CJK COMPATIBILITY IDEOGRAPH-F97F : 52F5 F980 CJK COMPATIBILITY IDEOGRAPH-F980 : 5442 F981 CJK COMPATIBILITY IDEOGRAPH-F981 : 5973 F982 CJK COMPATIBILITY IDEOGRAPH-F982 : 5EEC F983 CJK COMPATIBILITY IDEOGRAPH-F983 : 65C5 F984 CJK COMPATIBILITY IDEOGRAPH-F984 : 6FFE F985 CJK COMPATIBILITY IDEOGRAPH-F985 : 792A F986 CJK COMPATIBILITY IDEOGRAPH-F986 : 95AD F987 CJK COMPATIBILITY IDEOGRAPH-F987 : 9A6A F988 CJK COMPATIBILITY IDEOGRAPH-F988 : 9E97 F989 CJK COMPATIBILITY IDEOGRAPH-F989 : 9ECE F98A CJK COMPATIBILITY IDEOGRAPH-F98A : 529B F98B CJK COMPATIBILITY IDEOGRAPH-F98B : 66C6 F98C CJK COMPATIBILITY IDEOGRAPH-F98C : 6B77 F98D CJK COMPATIBILITY IDEOGRAPH-F98D : 8F62 F98E CJK COMPATIBILITY IDEOGRAPH-F98E : 5E74 F98F CJK COMPATIBILITY IDEOGRAPH-F98F : 6190 F990 CJK COMPATIBILITY IDEOGRAPH-F990 : 6200 F991 CJK COMPATIBILITY IDEOGRAPH-F991 : 649A F992 CJK COMPATIBILITY IDEOGRAPH-F992 : 6F23 F993 CJK COMPATIBILITY IDEOGRAPH-F993 : 7149 F994 CJK COMPATIBILITY IDEOGRAPH-F994 : 7489 F995 CJK COMPATIBILITY IDEOGRAPH-F995 : 79CA F996 CJK COMPATIBILITY IDEOGRAPH-F996 : 7DF4 F997 CJK COMPATIBILITY IDEOGRAPH-F997 : 806F F998 CJK COMPATIBILITY IDEOGRAPH-F998 : 8F26 F999 CJK COMPATIBILITY IDEOGRAPH-F999 : 84EE F99A CJK COMPATIBILITY IDEOGRAPH-F99A : 9023 F99B CJK COMPATIBILITY IDEOGRAPH-F99B : 934A F99C CJK COMPATIBILITY IDEOGRAPH-F99C : 5217 F99D CJK COMPATIBILITY IDEOGRAPH-F99D : 52A3 F99E CJK COMPATIBILITY IDEOGRAPH-F99E : 54BD F99F CJK COMPATIBILITY IDEOGRAPH-F99F : 70C8 F9A0 CJK COMPATIBILITY IDEOGRAPH-F9A0 : 88C2 F9A1 CJK COMPATIBILITY IDEOGRAPH-F9A1 : 8AAA F9A2 CJK COMPATIBILITY IDEOGRAPH-F9A2 : 5EC9 F9A3 CJK COMPATIBILITY IDEOGRAPH-F9A3 : 5FF5 F9A4 CJK COMPATIBILITY IDEOGRAPH-F9A4 : 637B F9A5 CJK COMPATIBILITY IDEOGRAPH-F9A5 : 6BAE F9A6 CJK COMPATIBILITY IDEOGRAPH-F9A6 : 7C3E F9A7 CJK COMPATIBILITY IDEOGRAPH-F9A7 : 7375 F9A8 CJK COMPATIBILITY IDEOGRAPH-F9A8 : 4EE4 F9A9 CJK COMPATIBILITY IDEOGRAPH-F9A9 : 56F9 F9AA CJK COMPATIBILITY IDEOGRAPH-F9AA : 5BE7 F9AB CJK COMPATIBILITY IDEOGRAPH-F9AB : 5DBA F9AC CJK COMPATIBILITY IDEOGRAPH-F9AC : 601C F9AD CJK COMPATIBILITY IDEOGRAPH-F9AD : 73B2 F9AE CJK COMPATIBILITY IDEOGRAPH-F9AE : 7469 F9AF CJK COMPATIBILITY IDEOGRAPH-F9AF : 7F9A F9B0 CJK COMPATIBILITY IDEOGRAPH-F9B0 : 8046 F9B1 CJK COMPATIBILITY IDEOGRAPH-F9B1 : 9234 F9B2 CJK COMPATIBILITY IDEOGRAPH-F9B2 : 96F6 F9B3 CJK COMPATIBILITY IDEOGRAPH-F9B3 : 9748 F9B4 CJK COMPATIBILITY IDEOGRAPH-F9B4 : 9818 F9B5 CJK COMPATIBILITY IDEOGRAPH-F9B5 : 4F8B F9B6 CJK COMPATIBILITY IDEOGRAPH-F9B6 : 79AE F9B7 CJK COMPATIBILITY IDEOGRAPH-F9B7 : 91B4 F9B8 CJK COMPATIBILITY IDEOGRAPH-F9B8 x (cjk unified ideograph-96B7 - 96B7) : 96B8 F9B9 CJK COMPATIBILITY IDEOGRAPH-F9B9 : 60E1 F9BA CJK COMPATIBILITY IDEOGRAPH-F9BA : 4E86 F9BB CJK COMPATIBILITY IDEOGRAPH-F9BB : 50DA F9BC CJK COMPATIBILITY IDEOGRAPH-F9BC : 5BEE F9BD CJK COMPATIBILITY IDEOGRAPH-F9BD : 5C3F F9BE CJK COMPATIBILITY IDEOGRAPH-F9BE : 6599 F9BF CJK COMPATIBILITY IDEOGRAPH-F9BF : 6A02 F9C0 CJK COMPATIBILITY IDEOGRAPH-F9C0 : 71CE F9C1 CJK COMPATIBILITY IDEOGRAPH-F9C1 : 7642 F9C2 CJK COMPATIBILITY IDEOGRAPH-F9C2 : 84FC F9C3 CJK COMPATIBILITY IDEOGRAPH-F9C3 : 907C F9C4 CJK COMPATIBILITY IDEOGRAPH-F9C4 : 9F8D F9C5 CJK COMPATIBILITY IDEOGRAPH-F9C5 : 6688 F9C6 CJK COMPATIBILITY IDEOGRAPH-F9C6 : 962E F9C7 CJK COMPATIBILITY IDEOGRAPH-F9C7 : 5289 F9C8 CJK COMPATIBILITY IDEOGRAPH-F9C8 : 677B F9C9 CJK COMPATIBILITY IDEOGRAPH-F9C9 : 67F3 F9CA CJK COMPATIBILITY IDEOGRAPH-F9CA : 6D41 F9CB CJK COMPATIBILITY IDEOGRAPH-F9CB : 6E9C F9CC CJK COMPATIBILITY IDEOGRAPH-F9CC : 7409 F9CD CJK COMPATIBILITY IDEOGRAPH-F9CD : 7559 F9CE CJK COMPATIBILITY IDEOGRAPH-F9CE : 786B F9CF CJK COMPATIBILITY IDEOGRAPH-F9CF : 7D10 F9D0 CJK COMPATIBILITY IDEOGRAPH-F9D0 : 985E F9D1 CJK COMPATIBILITY IDEOGRAPH-F9D1 : 516D F9D2 CJK COMPATIBILITY IDEOGRAPH-F9D2 : 622E F9D3 CJK COMPATIBILITY IDEOGRAPH-F9D3 : 9678 F9D4 CJK COMPATIBILITY IDEOGRAPH-F9D4 : 502B F9D5 CJK COMPATIBILITY IDEOGRAPH-F9D5 : 5D19 F9D6 CJK COMPATIBILITY IDEOGRAPH-F9D6 : 6DEA F9D7 CJK COMPATIBILITY IDEOGRAPH-F9D7 : 8F2A F9D8 CJK COMPATIBILITY IDEOGRAPH-F9D8 : 5F8B F9D9 CJK COMPATIBILITY IDEOGRAPH-F9D9 : 6144 F9DA CJK COMPATIBILITY IDEOGRAPH-F9DA : 6817 F9DB CJK COMPATIBILITY IDEOGRAPH-F9DB : 7387 F9DC CJK COMPATIBILITY IDEOGRAPH-F9DC : 9686 F9DD CJK COMPATIBILITY IDEOGRAPH-F9DD : 5229 F9DE CJK COMPATIBILITY IDEOGRAPH-F9DE : 540F F9DF CJK COMPATIBILITY IDEOGRAPH-F9DF : 5C65 F9E0 CJK COMPATIBILITY IDEOGRAPH-F9E0 : 6613 F9E1 CJK COMPATIBILITY IDEOGRAPH-F9E1 : 674E F9E2 CJK COMPATIBILITY IDEOGRAPH-F9E2 : 68A8 F9E3 CJK COMPATIBILITY IDEOGRAPH-F9E3 : 6CE5 F9E4 CJK COMPATIBILITY IDEOGRAPH-F9E4 : 7406 F9E5 CJK COMPATIBILITY IDEOGRAPH-F9E5 : 75E2 F9E6 CJK COMPATIBILITY IDEOGRAPH-F9E6 : 7F79 F9E7 CJK COMPATIBILITY IDEOGRAPH-F9E7 : 88CF F9E8 CJK COMPATIBILITY IDEOGRAPH-F9E8 : 88E1 F9E9 CJK COMPATIBILITY IDEOGRAPH-F9E9 : 91CC F9EA CJK COMPATIBILITY IDEOGRAPH-F9EA : 96E2 F9EB CJK COMPATIBILITY IDEOGRAPH-F9EB : 533F F9EC CJK COMPATIBILITY IDEOGRAPH-F9EC : 6EBA F9ED CJK COMPATIBILITY IDEOGRAPH-F9ED : 541D F9EE CJK COMPATIBILITY IDEOGRAPH-F9EE : 71D0 F9EF CJK COMPATIBILITY IDEOGRAPH-F9EF : 7498 F9F0 CJK COMPATIBILITY IDEOGRAPH-F9F0 : 85FA F9F1 CJK COMPATIBILITY IDEOGRAPH-F9F1 : 96A3 F9F2 CJK COMPATIBILITY IDEOGRAPH-F9F2 : 9C57 F9F3 CJK COMPATIBILITY IDEOGRAPH-F9F3 : 9E9F F9F4 CJK COMPATIBILITY IDEOGRAPH-F9F4 : 6797 F9F5 CJK COMPATIBILITY IDEOGRAPH-F9F5 : 6DCB F9F6 CJK COMPATIBILITY IDEOGRAPH-F9F6 : 81E8 F9F7 CJK COMPATIBILITY IDEOGRAPH-F9F7 : 7ACB F9F8 CJK COMPATIBILITY IDEOGRAPH-F9F8 : 7B20 F9F9 CJK COMPATIBILITY IDEOGRAPH-F9F9 : 7C92 F9FA CJK COMPATIBILITY IDEOGRAPH-F9FA : 72C0 F9FB CJK COMPATIBILITY IDEOGRAPH-F9FB : 7099 F9FC CJK COMPATIBILITY IDEOGRAPH-F9FC : 8B58 F9FD CJK COMPATIBILITY IDEOGRAPH-F9FD : 4EC0 F9FE CJK COMPATIBILITY IDEOGRAPH-F9FE : 8336 F9FF CJK COMPATIBILITY IDEOGRAPH-F9FF : 523A FA00 CJK COMPATIBILITY IDEOGRAPH-FA00 : 5207 FA01 CJK COMPATIBILITY IDEOGRAPH-FA01 : 5EA6 FA02 CJK COMPATIBILITY IDEOGRAPH-FA02 : 62D3 FA03 CJK COMPATIBILITY IDEOGRAPH-FA03 : 7CD6 FA04 CJK COMPATIBILITY IDEOGRAPH-FA04 : 5B85 FA05 CJK COMPATIBILITY IDEOGRAPH-FA05 : 6D1E FA06 CJK COMPATIBILITY IDEOGRAPH-FA06 : 66B4 FA07 CJK COMPATIBILITY IDEOGRAPH-FA07 : 8F3B FA08 CJK COMPATIBILITY IDEOGRAPH-FA08 : 884C FA09 CJK COMPATIBILITY IDEOGRAPH-FA09 : 964D FA0A CJK COMPATIBILITY IDEOGRAPH-FA0A : 898B FA0B CJK COMPATIBILITY IDEOGRAPH-FA0B : 5ED3 @ Duplicate characters from Big 5 FA0C CJK COMPATIBILITY IDEOGRAPH-FA0C : 5140 FA0D CJK COMPATIBILITY IDEOGRAPH-FA0D : 55C0 @ The IBM 32 compatibility ideographs @+ This section contains twelve characters that are CJK unified ideographs. Each CJK unified ideograph is annotated as such. FA0E CJK COMPATIBILITY IDEOGRAPH-FA0E * a CJK unified ideograph FA0F CJK COMPATIBILITY IDEOGRAPH-FA0F * a CJK unified ideograph FA10 CJK COMPATIBILITY IDEOGRAPH-FA10 : 585A FA11 CJK COMPATIBILITY IDEOGRAPH-FA11 * a CJK unified ideograph FA12 CJK COMPATIBILITY IDEOGRAPH-FA12 : 6674 FA13 CJK COMPATIBILITY IDEOGRAPH-FA13 * a CJK unified ideograph FA14 CJK COMPATIBILITY IDEOGRAPH-FA14 * a CJK unified ideograph FA15 CJK COMPATIBILITY IDEOGRAPH-FA15 : 51DE FA16 CJK COMPATIBILITY IDEOGRAPH-FA16 : 732A FA17 CJK COMPATIBILITY IDEOGRAPH-FA17 : 76CA FA18 CJK COMPATIBILITY IDEOGRAPH-FA18 : 793C FA19 CJK COMPATIBILITY IDEOGRAPH-FA19 : 795E FA1A CJK COMPATIBILITY IDEOGRAPH-FA1A : 7965 FA1B CJK COMPATIBILITY IDEOGRAPH-FA1B : 798F FA1C CJK COMPATIBILITY IDEOGRAPH-FA1C : 9756 FA1D CJK COMPATIBILITY IDEOGRAPH-FA1D : 7CBE FA1E CJK COMPATIBILITY IDEOGRAPH-FA1E : 7FBD FA1F CJK COMPATIBILITY IDEOGRAPH-FA1F * a CJK unified ideograph FA20 CJK COMPATIBILITY IDEOGRAPH-FA20 : 8612 FA21 CJK COMPATIBILITY IDEOGRAPH-FA21 * a CJK unified ideograph FA22 CJK COMPATIBILITY IDEOGRAPH-FA22 : 8AF8 FA23 CJK COMPATIBILITY IDEOGRAPH-FA23 * a CJK unified ideograph FA24 CJK COMPATIBILITY IDEOGRAPH-FA24 * a CJK unified ideograph FA25 CJK COMPATIBILITY IDEOGRAPH-FA25 : 9038 FA26 CJK COMPATIBILITY IDEOGRAPH-FA26 : 90FD FA27 CJK COMPATIBILITY IDEOGRAPH-FA27 * a CJK unified ideograph FA28 CJK COMPATIBILITY IDEOGRAPH-FA28 * a CJK unified ideograph FA29 CJK COMPATIBILITY IDEOGRAPH-FA29 * a CJK unified ideograph FA2A CJK COMPATIBILITY IDEOGRAPH-FA2A : 98EF FA2B CJK COMPATIBILITY IDEOGRAPH-FA2B : 98FC FA2C CJK COMPATIBILITY IDEOGRAPH-FA2C : 9928 FA2D CJK COMPATIBILITY IDEOGRAPH-FA2D : 9DB4 @ Korean compatibility ideographs FA2E CJK COMPATIBILITY IDEOGRAPH-FA2E : 90DE FA2F CJK COMPATIBILITY IDEOGRAPH-FA2F : 96B7 @ JIS X 0213 compatibility ideographs FA30 CJK COMPATIBILITY IDEOGRAPH-FA30 : 4FAE FA31 CJK COMPATIBILITY IDEOGRAPH-FA31 : 50E7 FA32 CJK COMPATIBILITY IDEOGRAPH-FA32 : 514D FA33 CJK COMPATIBILITY IDEOGRAPH-FA33 : 52C9 FA34 CJK COMPATIBILITY IDEOGRAPH-FA34 : 52E4 FA35 CJK COMPATIBILITY IDEOGRAPH-FA35 : 5351 FA36 CJK COMPATIBILITY IDEOGRAPH-FA36 : 559D FA37 CJK COMPATIBILITY IDEOGRAPH-FA37 : 5606 FA38 CJK COMPATIBILITY IDEOGRAPH-FA38 : 5668 FA39 CJK COMPATIBILITY IDEOGRAPH-FA39 : 5840 FA3A CJK COMPATIBILITY IDEOGRAPH-FA3A : 58A8 FA3B CJK COMPATIBILITY IDEOGRAPH-FA3B : 5C64 FA3C CJK COMPATIBILITY IDEOGRAPH-FA3C : 5C6E FA3D CJK COMPATIBILITY IDEOGRAPH-FA3D : 6094 FA3E CJK COMPATIBILITY IDEOGRAPH-FA3E : 6168 FA3F CJK COMPATIBILITY IDEOGRAPH-FA3F : 618E FA40 CJK COMPATIBILITY IDEOGRAPH-FA40 : 61F2 FA41 CJK COMPATIBILITY IDEOGRAPH-FA41 : 654F FA42 CJK COMPATIBILITY IDEOGRAPH-FA42 : 65E2 FA43 CJK COMPATIBILITY IDEOGRAPH-FA43 : 6691 FA44 CJK COMPATIBILITY IDEOGRAPH-FA44 : 6885 FA45 CJK COMPATIBILITY IDEOGRAPH-FA45 : 6D77 FA46 CJK COMPATIBILITY IDEOGRAPH-FA46 : 6E1A FA47 CJK COMPATIBILITY IDEOGRAPH-FA47 : 6F22 FA48 CJK COMPATIBILITY IDEOGRAPH-FA48 : 716E FA49 CJK COMPATIBILITY IDEOGRAPH-FA49 : 722B FA4A CJK COMPATIBILITY IDEOGRAPH-FA4A : 7422 FA4B CJK COMPATIBILITY IDEOGRAPH-FA4B : 7891 FA4C CJK COMPATIBILITY IDEOGRAPH-FA4C : 793E FA4D CJK COMPATIBILITY IDEOGRAPH-FA4D : 7949 FA4E CJK COMPATIBILITY IDEOGRAPH-FA4E : 7948 FA4F CJK COMPATIBILITY IDEOGRAPH-FA4F : 7950 FA50 CJK COMPATIBILITY IDEOGRAPH-FA50 : 7956 FA51 CJK COMPATIBILITY IDEOGRAPH-FA51 : 795D FA52 CJK COMPATIBILITY IDEOGRAPH-FA52 : 798D FA53 CJK COMPATIBILITY IDEOGRAPH-FA53 : 798E FA54 CJK COMPATIBILITY IDEOGRAPH-FA54 : 7A40 FA55 CJK COMPATIBILITY IDEOGRAPH-FA55 : 7A81 FA56 CJK COMPATIBILITY IDEOGRAPH-FA56 : 7BC0 FA57 CJK COMPATIBILITY IDEOGRAPH-FA57 : 7DF4 FA58 CJK COMPATIBILITY IDEOGRAPH-FA58 : 7E09 FA59 CJK COMPATIBILITY IDEOGRAPH-FA59 : 7E41 FA5A CJK COMPATIBILITY IDEOGRAPH-FA5A : 7F72 FA5B CJK COMPATIBILITY IDEOGRAPH-FA5B : 8005 FA5C CJK COMPATIBILITY IDEOGRAPH-FA5C : 81ED FA5D CJK COMPATIBILITY IDEOGRAPH-FA5D : 8279 FA5E CJK COMPATIBILITY IDEOGRAPH-FA5E : 8279 FA5F CJK COMPATIBILITY IDEOGRAPH-FA5F : 8457 FA60 CJK COMPATIBILITY IDEOGRAPH-FA60 : 8910 FA61 CJK COMPATIBILITY IDEOGRAPH-FA61 : 8996 FA62 CJK COMPATIBILITY IDEOGRAPH-FA62 : 8B01 FA63 CJK COMPATIBILITY IDEOGRAPH-FA63 : 8B39 FA64 CJK COMPATIBILITY IDEOGRAPH-FA64 : 8CD3 FA65 CJK COMPATIBILITY IDEOGRAPH-FA65 : 8D08 FA66 CJK COMPATIBILITY IDEOGRAPH-FA66 : 8FB6 FA67 CJK COMPATIBILITY IDEOGRAPH-FA67 : 9038 FA68 CJK COMPATIBILITY IDEOGRAPH-FA68 : 96E3 FA69 CJK COMPATIBILITY IDEOGRAPH-FA69 : 97FF FA6A CJK COMPATIBILITY IDEOGRAPH-FA6A : 983B @ ARIB compatibility ideographs FA6B CJK COMPATIBILITY IDEOGRAPH-FA6B : 6075 FA6C CJK COMPATIBILITY IDEOGRAPH-FA6C : 242EE FA6D CJK COMPATIBILITY IDEOGRAPH-FA6D : 8218 @ DPRK compatibility ideographs FA70 CJK COMPATIBILITY IDEOGRAPH-FA70 : 4E26 FA71 CJK COMPATIBILITY IDEOGRAPH-FA71 : 51B5 FA72 CJK COMPATIBILITY IDEOGRAPH-FA72 : 5168 FA73 CJK COMPATIBILITY IDEOGRAPH-FA73 : 4F80 FA74 CJK COMPATIBILITY IDEOGRAPH-FA74 : 5145 FA75 CJK COMPATIBILITY IDEOGRAPH-FA75 : 5180 FA76 CJK COMPATIBILITY IDEOGRAPH-FA76 : 52C7 FA77 CJK COMPATIBILITY IDEOGRAPH-FA77 : 52FA FA78 CJK COMPATIBILITY IDEOGRAPH-FA78 : 559D FA79 CJK COMPATIBILITY IDEOGRAPH-FA79 : 5555 FA7A CJK COMPATIBILITY IDEOGRAPH-FA7A : 5599 FA7B CJK COMPATIBILITY IDEOGRAPH-FA7B : 55E2 FA7C CJK COMPATIBILITY IDEOGRAPH-FA7C : 585A FA7D CJK COMPATIBILITY IDEOGRAPH-FA7D : 58B3 FA7E CJK COMPATIBILITY IDEOGRAPH-FA7E : 5944 FA7F CJK COMPATIBILITY IDEOGRAPH-FA7F : 5954 FA80 CJK COMPATIBILITY IDEOGRAPH-FA80 : 5A62 FA81 CJK COMPATIBILITY IDEOGRAPH-FA81 : 5B28 FA82 CJK COMPATIBILITY IDEOGRAPH-FA82 : 5ED2 FA83 CJK COMPATIBILITY IDEOGRAPH-FA83 : 5ED9 FA84 CJK COMPATIBILITY IDEOGRAPH-FA84 : 5F69 FA85 CJK COMPATIBILITY IDEOGRAPH-FA85 : 5FAD FA86 CJK COMPATIBILITY IDEOGRAPH-FA86 : 60D8 FA87 CJK COMPATIBILITY IDEOGRAPH-FA87 : 614E FA88 CJK COMPATIBILITY IDEOGRAPH-FA88 : 6108 FA89 CJK COMPATIBILITY IDEOGRAPH-FA89 : 618E FA8A CJK COMPATIBILITY IDEOGRAPH-FA8A : 6160 FA8B CJK COMPATIBILITY IDEOGRAPH-FA8B : 61F2 FA8C CJK COMPATIBILITY IDEOGRAPH-FA8C : 6234 FA8D CJK COMPATIBILITY IDEOGRAPH-FA8D : 63C4 FA8E CJK COMPATIBILITY IDEOGRAPH-FA8E : 641C FA8F CJK COMPATIBILITY IDEOGRAPH-FA8F : 6452 FA90 CJK COMPATIBILITY IDEOGRAPH-FA90 : 6556 FA91 CJK COMPATIBILITY IDEOGRAPH-FA91 : 6674 FA92 CJK COMPATIBILITY IDEOGRAPH-FA92 : 6717 FA93 CJK COMPATIBILITY IDEOGRAPH-FA93 : 671B FA94 CJK COMPATIBILITY IDEOGRAPH-FA94 : 6756 FA95 CJK COMPATIBILITY IDEOGRAPH-FA95 : 6B79 FA96 CJK COMPATIBILITY IDEOGRAPH-FA96 : 6BBA FA97 CJK COMPATIBILITY IDEOGRAPH-FA97 : 6D41 FA98 CJK COMPATIBILITY IDEOGRAPH-FA98 : 6EDB FA99 CJK COMPATIBILITY IDEOGRAPH-FA99 : 6ECB FA9A CJK COMPATIBILITY IDEOGRAPH-FA9A : 6F22 FA9B CJK COMPATIBILITY IDEOGRAPH-FA9B : 701E FA9C CJK COMPATIBILITY IDEOGRAPH-FA9C : 716E FA9D CJK COMPATIBILITY IDEOGRAPH-FA9D : 77A7 FA9E CJK COMPATIBILITY IDEOGRAPH-FA9E : 7235 FA9F CJK COMPATIBILITY IDEOGRAPH-FA9F : 72AF FAA0 CJK COMPATIBILITY IDEOGRAPH-FAA0 : 732A FAA1 CJK COMPATIBILITY IDEOGRAPH-FAA1 : 7471 FAA2 CJK COMPATIBILITY IDEOGRAPH-FAA2 : 7506 FAA3 CJK COMPATIBILITY IDEOGRAPH-FAA3 : 753B FAA4 CJK COMPATIBILITY IDEOGRAPH-FAA4 : 761D FAA5 CJK COMPATIBILITY IDEOGRAPH-FAA5 : 761F FAA6 CJK COMPATIBILITY IDEOGRAPH-FAA6 : 76CA FAA7 CJK COMPATIBILITY IDEOGRAPH-FAA7 : 76DB FAA8 CJK COMPATIBILITY IDEOGRAPH-FAA8 : 76F4 FAA9 CJK COMPATIBILITY IDEOGRAPH-FAA9 : 774A FAAA CJK COMPATIBILITY IDEOGRAPH-FAAA : 7740 FAAB CJK COMPATIBILITY IDEOGRAPH-FAAB : 78CC FAAC CJK COMPATIBILITY IDEOGRAPH-FAAC : 7AB1 FAAD CJK COMPATIBILITY IDEOGRAPH-FAAD : 7BC0 FAAE CJK COMPATIBILITY IDEOGRAPH-FAAE : 7C7B FAAF CJK COMPATIBILITY IDEOGRAPH-FAAF : 7D5B FAB0 CJK COMPATIBILITY IDEOGRAPH-FAB0 : 7DF4 FAB1 CJK COMPATIBILITY IDEOGRAPH-FAB1 : 7F3E FAB2 CJK COMPATIBILITY IDEOGRAPH-FAB2 : 8005 FAB3 CJK COMPATIBILITY IDEOGRAPH-FAB3 : 8352 FAB4 CJK COMPATIBILITY IDEOGRAPH-FAB4 : 83EF FAB5 CJK COMPATIBILITY IDEOGRAPH-FAB5 : 8779 FAB6 CJK COMPATIBILITY IDEOGRAPH-FAB6 : 8941 FAB7 CJK COMPATIBILITY IDEOGRAPH-FAB7 : 8986 FAB8 CJK COMPATIBILITY IDEOGRAPH-FAB8 : 8996 FAB9 CJK COMPATIBILITY IDEOGRAPH-FAB9 : 8ABF FABA CJK COMPATIBILITY IDEOGRAPH-FABA : 8AF8 FABB CJK COMPATIBILITY IDEOGRAPH-FABB : 8ACB FABC CJK COMPATIBILITY IDEOGRAPH-FABC : 8B01 FABD CJK COMPATIBILITY IDEOGRAPH-FABD : 8AFE FABE CJK COMPATIBILITY IDEOGRAPH-FABE : 8AED FABF CJK COMPATIBILITY IDEOGRAPH-FABF : 8B39 FAC0 CJK COMPATIBILITY IDEOGRAPH-FAC0 : 8B8A FAC1 CJK COMPATIBILITY IDEOGRAPH-FAC1 : 8D08 FAC2 CJK COMPATIBILITY IDEOGRAPH-FAC2 : 8F38 FAC3 CJK COMPATIBILITY IDEOGRAPH-FAC3 : 9072 FAC4 CJK COMPATIBILITY IDEOGRAPH-FAC4 : 9199 FAC5 CJK COMPATIBILITY IDEOGRAPH-FAC5 : 9276 FAC6 CJK COMPATIBILITY IDEOGRAPH-FAC6 : 967C FAC7 CJK COMPATIBILITY IDEOGRAPH-FAC7 : 96E3 FAC8 CJK COMPATIBILITY IDEOGRAPH-FAC8 : 9756 FAC9 CJK COMPATIBILITY IDEOGRAPH-FAC9 : 97DB FACA CJK COMPATIBILITY IDEOGRAPH-FACA : 97FF FACB CJK COMPATIBILITY IDEOGRAPH-FACB : 980B FACC CJK COMPATIBILITY IDEOGRAPH-FACC : 983B FACD CJK COMPATIBILITY IDEOGRAPH-FACD : 9B12 FACE CJK COMPATIBILITY IDEOGRAPH-FACE : 9F9C FACF CJK COMPATIBILITY IDEOGRAPH-FACF : 2284A FAD0 CJK COMPATIBILITY IDEOGRAPH-FAD0 : 22844 FAD1 CJK COMPATIBILITY IDEOGRAPH-FAD1 : 233D5 FAD2 CJK COMPATIBILITY IDEOGRAPH-FAD2 : 3B9D FAD3 CJK COMPATIBILITY IDEOGRAPH-FAD3 : 4018 FAD4 CJK COMPATIBILITY IDEOGRAPH-FAD4 * mapping change removed original source x (cjk compatibility ideograph-2F949 - 2F949) : 4039 FAD5 CJK COMPATIBILITY IDEOGRAPH-FAD5 : 25249 FAD6 CJK COMPATIBILITY IDEOGRAPH-FAD6 : 25CD0 FAD7 CJK COMPATIBILITY IDEOGRAPH-FAD7 : 27ED3 FAD8 CJK COMPATIBILITY IDEOGRAPH-FAD8 : 9F43 FAD9 CJK COMPATIBILITY IDEOGRAPH-FAD9 : 9F8E @~ Standardized Variation Sequences @@ FB00 Alphabetic Presentation Forms FB4F @ Latin ligatures @+ See the Basic Latin block starting at 0020 FB00 LATIN SMALL LIGATURE FF # 0066 0066 FB01 LATIN SMALL LIGATURE FI # 0066 0069 FB02 LATIN SMALL LIGATURE FL # 0066 006C FB03 LATIN SMALL LIGATURE FFI # 0066 0066 0069 FB04 LATIN SMALL LIGATURE FFL # 0066 0066 006C FB05 LATIN SMALL LIGATURE LONG S T # 017F 0074 FB06 LATIN SMALL LIGATURE ST # 0073 0074 @ Armenian ligatures @+ See the Armenian block starting at 0530 FB13 ARMENIAN SMALL LIGATURE MEN NOW # 0574 0576 FB14 ARMENIAN SMALL LIGATURE MEN ECH # 0574 0565 FB15 ARMENIAN SMALL LIGATURE MEN INI # 0574 056B FB16 ARMENIAN SMALL LIGATURE VEW NOW # 057E 0576 FB17 ARMENIAN SMALL LIGATURE MEN XEH # 0574 056D @ Hebrew presentation forms @+ See the Hebrew block starting at 0590 FB1D HEBREW LETTER YOD WITH HIRIQ : 05D9 05B4 FB1E HEBREW POINT JUDEO-SPANISH VARIKA * a glyph variant of 05BF FB1F HEBREW LIGATURE YIDDISH YOD YOD PATAH : 05F2 05B7 FB20 HEBREW LETTER ALTERNATIVE AYIN * this form of AYIN has no descender, for use with marks placed below the letter # 05E2 hebrew letter ayin FB21 HEBREW LETTER WIDE ALEF # 05D0 hebrew letter alef FB22 HEBREW LETTER WIDE DALET # 05D3 hebrew letter dalet FB23 HEBREW LETTER WIDE HE # 05D4 hebrew letter he FB24 HEBREW LETTER WIDE KAF # 05DB hebrew letter kaf FB25 HEBREW LETTER WIDE LAMED # 05DC hebrew letter lamed FB26 HEBREW LETTER WIDE FINAL MEM # 05DD hebrew letter final mem FB27 HEBREW LETTER WIDE RESH # 05E8 hebrew letter resh FB28 HEBREW LETTER WIDE TAV # 05EA hebrew letter tav FB29 HEBREW LETTER ALTERNATIVE PLUS SIGN # 002B plus sign FB2A HEBREW LETTER SHIN WITH SHIN DOT : 05E9 05C1 FB2B HEBREW LETTER SHIN WITH SIN DOT : 05E9 05C2 FB2C HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT : FB49 05C1 FB2D HEBREW LETTER SHIN WITH DAGESH AND SIN DOT : FB49 05C2 FB2E HEBREW LETTER ALEF WITH PATAH : 05D0 05B7 FB2F HEBREW LETTER ALEF WITH QAMATS : 05D0 05B8 FB30 HEBREW LETTER ALEF WITH MAPIQ : 05D0 05BC FB31 HEBREW LETTER BET WITH DAGESH : 05D1 05BC FB32 HEBREW LETTER GIMEL WITH DAGESH : 05D2 05BC FB33 HEBREW LETTER DALET WITH DAGESH : 05D3 05BC FB34 HEBREW LETTER HE WITH MAPIQ : 05D4 05BC FB35 HEBREW LETTER VAV WITH DAGESH : 05D5 05BC FB36 HEBREW LETTER ZAYIN WITH DAGESH : 05D6 05BC FB38 HEBREW LETTER TET WITH DAGESH : 05D8 05BC FB39 HEBREW LETTER YOD WITH DAGESH : 05D9 05BC FB3A HEBREW LETTER FINAL KAF WITH DAGESH : 05DA 05BC FB3B HEBREW LETTER KAF WITH DAGESH : 05DB 05BC FB3C HEBREW LETTER LAMED WITH DAGESH : 05DC 05BC FB3E HEBREW LETTER MEM WITH DAGESH : 05DE 05BC FB40 HEBREW LETTER NUN WITH DAGESH : 05E0 05BC FB41 HEBREW LETTER SAMEKH WITH DAGESH : 05E1 05BC FB43 HEBREW LETTER FINAL PE WITH DAGESH : 05E3 05BC FB44 HEBREW LETTER PE WITH DAGESH : 05E4 05BC FB46 HEBREW LETTER TSADI WITH DAGESH : 05E6 05BC FB47 HEBREW LETTER QOF WITH DAGESH : 05E7 05BC FB48 HEBREW LETTER RESH WITH DAGESH : 05E8 05BC FB49 HEBREW LETTER SHIN WITH DAGESH : 05E9 05BC FB4A HEBREW LETTER TAV WITH DAGESH : 05EA 05BC FB4B HEBREW LETTER VAV WITH HOLAM : 05D5 05B9 FB4C HEBREW LETTER BET WITH RAFE : 05D1 05BF FB4D HEBREW LETTER KAF WITH RAFE : 05DB 05BF FB4E HEBREW LETTER PE WITH RAFE : 05E4 05BF FB4F HEBREW LIGATURE ALEF LAMED # 05D0 05DC @@ FB50 Arabic Presentation Forms-A FDFF @+ Preferred characters are found in the Arabic block 0600-06FF. This block also contains 32 noncharacters in the range FDD0-FDEF. @ Glyphs for contextual forms of letters for Persian, Urdu, Sindhi, etc. FB50 ARABIC LETTER ALEF WASLA ISOLATED FORM # 0671 FB51 ARABIC LETTER ALEF WASLA FINAL FORM # 0671 FB52 ARABIC LETTER BEEH ISOLATED FORM # 067B FB53 ARABIC LETTER BEEH FINAL FORM # 067B FB54 ARABIC LETTER BEEH INITIAL FORM # 067B FB55 ARABIC LETTER BEEH MEDIAL FORM # 067B FB56 ARABIC LETTER PEH ISOLATED FORM # 067E FB57 ARABIC LETTER PEH FINAL FORM # 067E FB58 ARABIC LETTER PEH INITIAL FORM # 067E FB59 ARABIC LETTER PEH MEDIAL FORM # 067E FB5A ARABIC LETTER BEHEH ISOLATED FORM # 0680 FB5B ARABIC LETTER BEHEH FINAL FORM # 0680 FB5C ARABIC LETTER BEHEH INITIAL FORM # 0680 FB5D ARABIC LETTER BEHEH MEDIAL FORM # 0680 FB5E ARABIC LETTER TTEHEH ISOLATED FORM # 067A FB5F ARABIC LETTER TTEHEH FINAL FORM # 067A FB60 ARABIC LETTER TTEHEH INITIAL FORM # 067A FB61 ARABIC LETTER TTEHEH MEDIAL FORM # 067A FB62 ARABIC LETTER TEHEH ISOLATED FORM # 067F FB63 ARABIC LETTER TEHEH FINAL FORM # 067F FB64 ARABIC LETTER TEHEH INITIAL FORM # 067F FB65 ARABIC LETTER TEHEH MEDIAL FORM # 067F FB66 ARABIC LETTER TTEH ISOLATED FORM # 0679 FB67 ARABIC LETTER TTEH FINAL FORM # 0679 FB68 ARABIC LETTER TTEH INITIAL FORM # 0679 FB69 ARABIC LETTER TTEH MEDIAL FORM # 0679 FB6A ARABIC LETTER VEH ISOLATED FORM # 06A4 FB6B ARABIC LETTER VEH FINAL FORM # 06A4 FB6C ARABIC LETTER VEH INITIAL FORM # 06A4 FB6D ARABIC LETTER VEH MEDIAL FORM # 06A4 FB6E ARABIC LETTER PEHEH ISOLATED FORM # 06A6 FB6F ARABIC LETTER PEHEH FINAL FORM # 06A6 FB70 ARABIC LETTER PEHEH INITIAL FORM # 06A6 FB71 ARABIC LETTER PEHEH MEDIAL FORM # 06A6 FB72 ARABIC LETTER DYEH ISOLATED FORM # 0684 FB73 ARABIC LETTER DYEH FINAL FORM # 0684 FB74 ARABIC LETTER DYEH INITIAL FORM # 0684 FB75 ARABIC LETTER DYEH MEDIAL FORM # 0684 FB76 ARABIC LETTER NYEH ISOLATED FORM # 0683 FB77 ARABIC LETTER NYEH FINAL FORM # 0683 FB78 ARABIC LETTER NYEH INITIAL FORM # 0683 FB79 ARABIC LETTER NYEH MEDIAL FORM # 0683 FB7A ARABIC LETTER TCHEH ISOLATED FORM # 0686 FB7B ARABIC LETTER TCHEH FINAL FORM # 0686 FB7C ARABIC LETTER TCHEH INITIAL FORM # 0686 FB7D ARABIC LETTER TCHEH MEDIAL FORM # 0686 FB7E ARABIC LETTER TCHEHEH ISOLATED FORM # 0687 FB7F ARABIC LETTER TCHEHEH FINAL FORM # 0687 FB80 ARABIC LETTER TCHEHEH INITIAL FORM # 0687 FB81 ARABIC LETTER TCHEHEH MEDIAL FORM # 0687 FB82 ARABIC LETTER DDAHAL ISOLATED FORM # 068D FB83 ARABIC LETTER DDAHAL FINAL FORM # 068D FB84 ARABIC LETTER DAHAL ISOLATED FORM # 068C FB85 ARABIC LETTER DAHAL FINAL FORM # 068C FB86 ARABIC LETTER DUL ISOLATED FORM # 068E FB87 ARABIC LETTER DUL FINAL FORM # 068E FB88 ARABIC LETTER DDAL ISOLATED FORM # 0688 FB89 ARABIC LETTER DDAL FINAL FORM # 0688 FB8A ARABIC LETTER JEH ISOLATED FORM # 0698 FB8B ARABIC LETTER JEH FINAL FORM # 0698 FB8C ARABIC LETTER RREH ISOLATED FORM # 0691 FB8D ARABIC LETTER RREH FINAL FORM # 0691 FB8E ARABIC LETTER KEHEH ISOLATED FORM # 06A9 FB8F ARABIC LETTER KEHEH FINAL FORM # 06A9 FB90 ARABIC LETTER KEHEH INITIAL FORM # 06A9 FB91 ARABIC LETTER KEHEH MEDIAL FORM # 06A9 FB92 ARABIC LETTER GAF ISOLATED FORM # 06AF FB93 ARABIC LETTER GAF FINAL FORM # 06AF FB94 ARABIC LETTER GAF INITIAL FORM # 06AF FB95 ARABIC LETTER GAF MEDIAL FORM # 06AF FB96 ARABIC LETTER GUEH ISOLATED FORM # 06B3 FB97 ARABIC LETTER GUEH FINAL FORM # 06B3 FB98 ARABIC LETTER GUEH INITIAL FORM # 06B3 FB99 ARABIC LETTER GUEH MEDIAL FORM # 06B3 FB9A ARABIC LETTER NGOEH ISOLATED FORM # 06B1 FB9B ARABIC LETTER NGOEH FINAL FORM # 06B1 FB9C ARABIC LETTER NGOEH INITIAL FORM # 06B1 FB9D ARABIC LETTER NGOEH MEDIAL FORM # 06B1 FB9E ARABIC LETTER NOON GHUNNA ISOLATED FORM # 06BA FB9F ARABIC LETTER NOON GHUNNA FINAL FORM # 06BA FBA0 ARABIC LETTER RNOON ISOLATED FORM # 06BB FBA1 ARABIC LETTER RNOON FINAL FORM # 06BB FBA2 ARABIC LETTER RNOON INITIAL FORM # 06BB FBA3 ARABIC LETTER RNOON MEDIAL FORM # 06BB FBA4 ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM # 06C0 FBA5 ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM # 06C0 FBA6 ARABIC LETTER HEH GOAL ISOLATED FORM # 06C1 FBA7 ARABIC LETTER HEH GOAL FINAL FORM # 06C1 FBA8 ARABIC LETTER HEH GOAL INITIAL FORM # 06C1 FBA9 ARABIC LETTER HEH GOAL MEDIAL FORM # 06C1 FBAA ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM # 06BE FBAB ARABIC LETTER HEH DOACHASHMEE FINAL FORM # 06BE FBAC ARABIC LETTER HEH DOACHASHMEE INITIAL FORM # 06BE FBAD ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM # 06BE FBAE ARABIC LETTER YEH BARREE ISOLATED FORM # 06D2 FBAF ARABIC LETTER YEH BARREE FINAL FORM # 06D2 FBB0 ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM # 06D3 FBB1 ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM # 06D3 @ Arabic pedagogical symbols @+ These are spacing symbols representing Arabic letter diacritics considered in isolation, as for example as in discussions about the Arabic script. FBB2 ARABIC SYMBOL DOT ABOVE FBB3 ARABIC SYMBOL DOT BELOW FBB4 ARABIC SYMBOL TWO DOTS ABOVE FBB5 ARABIC SYMBOL TWO DOTS BELOW FBB6 ARABIC SYMBOL THREE DOTS ABOVE FBB7 ARABIC SYMBOL THREE DOTS BELOW FBB8 ARABIC SYMBOL THREE DOTS POINTING DOWNWARDS ABOVE FBB9 ARABIC SYMBOL THREE DOTS POINTING DOWNWARDS BELOW FBBA ARABIC SYMBOL FOUR DOTS ABOVE * Sindhi FBBB ARABIC SYMBOL FOUR DOTS BELOW * Sindhi FBBC ARABIC SYMBOL DOUBLE VERTICAL BAR BELOW * Sindhi FBBD ARABIC SYMBOL TWO DOTS VERTICALLY ABOVE * Sindhi FBBE ARABIC SYMBOL TWO DOTS VERTICALLY BELOW * Sindhi FBBF ARABIC SYMBOL RING * Pashto FBC0 ARABIC SYMBOL SMALL TAH ABOVE * Urdu FBC1 ARABIC SYMBOL SMALL TAH BELOW * Urdu @ Glyphs for contextual forms of letters for Central Asian languages FBD3 ARABIC LETTER NG ISOLATED FORM # 06AD FBD4 ARABIC LETTER NG FINAL FORM # 06AD FBD5 ARABIC LETTER NG INITIAL FORM # 06AD FBD6 ARABIC LETTER NG MEDIAL FORM # 06AD FBD7 ARABIC LETTER U ISOLATED FORM # 06C7 FBD8 ARABIC LETTER U FINAL FORM # 06C7 FBD9 ARABIC LETTER OE ISOLATED FORM # 06C6 FBDA ARABIC LETTER OE FINAL FORM # 06C6 FBDB ARABIC LETTER YU ISOLATED FORM # 06C8 FBDC ARABIC LETTER YU FINAL FORM # 06C8 FBDD ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM # 0677 FBDE ARABIC LETTER VE ISOLATED FORM # 06CB FBDF ARABIC LETTER VE FINAL FORM # 06CB FBE0 ARABIC LETTER KIRGHIZ OE ISOLATED FORM # 06C5 FBE1 ARABIC LETTER KIRGHIZ OE FINAL FORM # 06C5 FBE2 ARABIC LETTER KIRGHIZ YU ISOLATED FORM # 06C9 FBE3 ARABIC LETTER KIRGHIZ YU FINAL FORM # 06C9 FBE4 ARABIC LETTER E ISOLATED FORM # 06D0 FBE5 ARABIC LETTER E FINAL FORM # 06D0 FBE6 ARABIC LETTER E INITIAL FORM # 06D0 FBE7 ARABIC LETTER E MEDIAL FORM # 06D0 FBE8 ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM # 0649 FBE9 ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM # 0649 @ Ligatures (two elements) FBEA ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM # 0626 0627 FBEB ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM # 0626 0627 FBEC ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM # 0626 06D5 FBED ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM # 0626 06D5 FBEE ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM # 0626 0648 FBEF ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM # 0626 0648 FBF0 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM # 0626 06C7 FBF1 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM # 0626 06C7 FBF2 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM # 0626 06C6 FBF3 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM # 0626 06C6 FBF4 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM # 0626 06C8 FBF5 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM # 0626 06C8 FBF6 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM # 0626 06D0 FBF7 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM # 0626 06D0 FBF8 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM # 0626 06D0 FBF9 ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM # 0626 0649 FBFA ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM # 0626 0649 FBFB ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM # 0626 0649 FBFC ARABIC LETTER FARSI YEH ISOLATED FORM # 06CC FBFD ARABIC LETTER FARSI YEH FINAL FORM # 06CC FBFE ARABIC LETTER FARSI YEH INITIAL FORM # 06CC FBFF ARABIC LETTER FARSI YEH MEDIAL FORM # 06CC FC00 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM # 0626 062C FC01 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM # 0626 062D FC02 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM # 0626 0645 FC03 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM # 0626 0649 FC04 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM # 0626 064A FC05 ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM # 0628 062C FC06 ARABIC LIGATURE BEH WITH HAH ISOLATED FORM # 0628 062D FC07 ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM # 0628 062E FC08 ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM # 0628 0645 FC09 ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM # 0628 0649 FC0A ARABIC LIGATURE BEH WITH YEH ISOLATED FORM # 0628 064A FC0B ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM # 062A 062C FC0C ARABIC LIGATURE TEH WITH HAH ISOLATED FORM # 062A 062D FC0D ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM # 062A 062E FC0E ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM # 062A 0645 FC0F ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM # 062A 0649 FC10 ARABIC LIGATURE TEH WITH YEH ISOLATED FORM # 062A 064A FC11 ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM # 062B 062C FC12 ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM # 062B 0645 FC13 ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM # 062B 0649 FC14 ARABIC LIGATURE THEH WITH YEH ISOLATED FORM # 062B 064A FC15 ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM # 062C 062D FC16 ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM # 062C 0645 FC17 ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM # 062D 062C FC18 ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM # 062D 0645 FC19 ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM # 062E 062C FC1A ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM # 062E 062D FC1B ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM # 062E 0645 FC1C ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM # 0633 062C FC1D ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM # 0633 062D FC1E ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM # 0633 062E FC1F ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM # 0633 0645 FC20 ARABIC LIGATURE SAD WITH HAH ISOLATED FORM # 0635 062D FC21 ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM # 0635 0645 FC22 ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM # 0636 062C FC23 ARABIC LIGATURE DAD WITH HAH ISOLATED FORM # 0636 062D FC24 ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM # 0636 062E FC25 ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM # 0636 0645 FC26 ARABIC LIGATURE TAH WITH HAH ISOLATED FORM # 0637 062D FC27 ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM # 0637 0645 FC28 ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM # 0638 0645 FC29 ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM # 0639 062C FC2A ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM # 0639 0645 FC2B ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM # 063A 062C FC2C ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM # 063A 0645 FC2D ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM # 0641 062C FC2E ARABIC LIGATURE FEH WITH HAH ISOLATED FORM # 0641 062D FC2F ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM # 0641 062E FC30 ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM # 0641 0645 FC31 ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM # 0641 0649 FC32 ARABIC LIGATURE FEH WITH YEH ISOLATED FORM # 0641 064A FC33 ARABIC LIGATURE QAF WITH HAH ISOLATED FORM # 0642 062D FC34 ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM # 0642 0645 FC35 ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM # 0642 0649 FC36 ARABIC LIGATURE QAF WITH YEH ISOLATED FORM # 0642 064A FC37 ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM # 0643 0627 FC38 ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM # 0643 062C FC39 ARABIC LIGATURE KAF WITH HAH ISOLATED FORM # 0643 062D FC3A ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM # 0643 062E FC3B ARABIC LIGATURE KAF WITH LAM ISOLATED FORM # 0643 0644 FC3C ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM # 0643 0645 FC3D ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM # 0643 0649 FC3E ARABIC LIGATURE KAF WITH YEH ISOLATED FORM # 0643 064A FC3F ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM # 0644 062C FC40 ARABIC LIGATURE LAM WITH HAH ISOLATED FORM # 0644 062D FC41 ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM # 0644 062E FC42 ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM # 0644 0645 FC43 ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM # 0644 0649 FC44 ARABIC LIGATURE LAM WITH YEH ISOLATED FORM # 0644 064A FC45 ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM # 0645 062C FC46 ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM # 0645 062D FC47 ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM # 0645 062E FC48 ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM # 0645 0645 FC49 ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM # 0645 0649 FC4A ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM # 0645 064A FC4B ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM # 0646 062C FC4C ARABIC LIGATURE NOON WITH HAH ISOLATED FORM # 0646 062D FC4D ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM # 0646 062E FC4E ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM # 0646 0645 FC4F ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM # 0646 0649 FC50 ARABIC LIGATURE NOON WITH YEH ISOLATED FORM # 0646 064A FC51 ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM # 0647 062C FC52 ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM # 0647 0645 FC53 ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM # 0647 0649 FC54 ARABIC LIGATURE HEH WITH YEH ISOLATED FORM # 0647 064A FC55 ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM # 064A 062C FC56 ARABIC LIGATURE YEH WITH HAH ISOLATED FORM # 064A 062D FC57 ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM # 064A 062E FC58 ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM # 064A 0645 FC59 ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM # 064A 0649 FC5A ARABIC LIGATURE YEH WITH YEH ISOLATED FORM # 064A 064A FC5B ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM # 0630 0670 FC5C ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM # 0631 0670 FC5D ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM # 0649 0670 FC5E ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM # 0020 064C 0651 FC5F ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM # 0020 064D 0651 FC60 ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM # 0020 064E 0651 FC61 ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM # 0020 064F 0651 FC62 ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM # 0020 0650 0651 FC63 ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM # 0020 0651 0670 FC64 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM # 0626 0631 FC65 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM # 0626 0632 FC66 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM # 0626 0645 FC67 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM # 0626 0646 FC68 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM # 0626 0649 FC69 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM # 0626 064A FC6A ARABIC LIGATURE BEH WITH REH FINAL FORM # 0628 0631 FC6B ARABIC LIGATURE BEH WITH ZAIN FINAL FORM # 0628 0632 FC6C ARABIC LIGATURE BEH WITH MEEM FINAL FORM # 0628 0645 FC6D ARABIC LIGATURE BEH WITH NOON FINAL FORM # 0628 0646 FC6E ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM # 0628 0649 FC6F ARABIC LIGATURE BEH WITH YEH FINAL FORM # 0628 064A FC70 ARABIC LIGATURE TEH WITH REH FINAL FORM # 062A 0631 FC71 ARABIC LIGATURE TEH WITH ZAIN FINAL FORM # 062A 0632 FC72 ARABIC LIGATURE TEH WITH MEEM FINAL FORM # 062A 0645 FC73 ARABIC LIGATURE TEH WITH NOON FINAL FORM # 062A 0646 FC74 ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM # 062A 0649 FC75 ARABIC LIGATURE TEH WITH YEH FINAL FORM # 062A 064A FC76 ARABIC LIGATURE THEH WITH REH FINAL FORM # 062B 0631 FC77 ARABIC LIGATURE THEH WITH ZAIN FINAL FORM # 062B 0632 FC78 ARABIC LIGATURE THEH WITH MEEM FINAL FORM # 062B 0645 FC79 ARABIC LIGATURE THEH WITH NOON FINAL FORM # 062B 0646 FC7A ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM # 062B 0649 FC7B ARABIC LIGATURE THEH WITH YEH FINAL FORM # 062B 064A FC7C ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM # 0641 0649 FC7D ARABIC LIGATURE FEH WITH YEH FINAL FORM # 0641 064A FC7E ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM # 0642 0649 FC7F ARABIC LIGATURE QAF WITH YEH FINAL FORM # 0642 064A FC80 ARABIC LIGATURE KAF WITH ALEF FINAL FORM # 0643 0627 FC81 ARABIC LIGATURE KAF WITH LAM FINAL FORM # 0643 0644 FC82 ARABIC LIGATURE KAF WITH MEEM FINAL FORM # 0643 0645 FC83 ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM # 0643 0649 FC84 ARABIC LIGATURE KAF WITH YEH FINAL FORM # 0643 064A FC85 ARABIC LIGATURE LAM WITH MEEM FINAL FORM # 0644 0645 FC86 ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM # 0644 0649 FC87 ARABIC LIGATURE LAM WITH YEH FINAL FORM # 0644 064A FC88 ARABIC LIGATURE MEEM WITH ALEF FINAL FORM # 0645 0627 FC89 ARABIC LIGATURE MEEM WITH MEEM FINAL FORM # 0645 0645 FC8A ARABIC LIGATURE NOON WITH REH FINAL FORM # 0646 0631 FC8B ARABIC LIGATURE NOON WITH ZAIN FINAL FORM # 0646 0632 FC8C ARABIC LIGATURE NOON WITH MEEM FINAL FORM # 0646 0645 FC8D ARABIC LIGATURE NOON WITH NOON FINAL FORM # 0646 0646 FC8E ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM # 0646 0649 FC8F ARABIC LIGATURE NOON WITH YEH FINAL FORM # 0646 064A FC90 ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM # 0649 0670 FC91 ARABIC LIGATURE YEH WITH REH FINAL FORM # 064A 0631 FC92 ARABIC LIGATURE YEH WITH ZAIN FINAL FORM # 064A 0632 FC93 ARABIC LIGATURE YEH WITH MEEM FINAL FORM # 064A 0645 FC94 ARABIC LIGATURE YEH WITH NOON FINAL FORM # 064A 0646 FC95 ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM # 064A 0649 FC96 ARABIC LIGATURE YEH WITH YEH FINAL FORM # 064A 064A FC97 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM # 0626 062C FC98 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM # 0626 062D FC99 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM # 0626 062E FC9A ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM # 0626 0645 FC9B ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM # 0626 0647 FC9C ARABIC LIGATURE BEH WITH JEEM INITIAL FORM # 0628 062C FC9D ARABIC LIGATURE BEH WITH HAH INITIAL FORM # 0628 062D FC9E ARABIC LIGATURE BEH WITH KHAH INITIAL FORM # 0628 062E FC9F ARABIC LIGATURE BEH WITH MEEM INITIAL FORM # 0628 0645 FCA0 ARABIC LIGATURE BEH WITH HEH INITIAL FORM # 0628 0647 FCA1 ARABIC LIGATURE TEH WITH JEEM INITIAL FORM # 062A 062C FCA2 ARABIC LIGATURE TEH WITH HAH INITIAL FORM # 062A 062D FCA3 ARABIC LIGATURE TEH WITH KHAH INITIAL FORM # 062A 062E FCA4 ARABIC LIGATURE TEH WITH MEEM INITIAL FORM # 062A 0645 FCA5 ARABIC LIGATURE TEH WITH HEH INITIAL FORM # 062A 0647 FCA6 ARABIC LIGATURE THEH WITH MEEM INITIAL FORM # 062B 0645 FCA7 ARABIC LIGATURE JEEM WITH HAH INITIAL FORM # 062C 062D FCA8 ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM # 062C 0645 FCA9 ARABIC LIGATURE HAH WITH JEEM INITIAL FORM # 062D 062C FCAA ARABIC LIGATURE HAH WITH MEEM INITIAL FORM # 062D 0645 FCAB ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM # 062E 062C FCAC ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM # 062E 0645 FCAD ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM # 0633 062C FCAE ARABIC LIGATURE SEEN WITH HAH INITIAL FORM # 0633 062D FCAF ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM # 0633 062E FCB0 ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM # 0633 0645 FCB1 ARABIC LIGATURE SAD WITH HAH INITIAL FORM # 0635 062D FCB2 ARABIC LIGATURE SAD WITH KHAH INITIAL FORM # 0635 062E FCB3 ARABIC LIGATURE SAD WITH MEEM INITIAL FORM # 0635 0645 FCB4 ARABIC LIGATURE DAD WITH JEEM INITIAL FORM # 0636 062C FCB5 ARABIC LIGATURE DAD WITH HAH INITIAL FORM # 0636 062D FCB6 ARABIC LIGATURE DAD WITH KHAH INITIAL FORM # 0636 062E FCB7 ARABIC LIGATURE DAD WITH MEEM INITIAL FORM # 0636 0645 FCB8 ARABIC LIGATURE TAH WITH HAH INITIAL FORM # 0637 062D FCB9 ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM # 0638 0645 FCBA ARABIC LIGATURE AIN WITH JEEM INITIAL FORM # 0639 062C FCBB ARABIC LIGATURE AIN WITH MEEM INITIAL FORM # 0639 0645 FCBC ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM # 063A 062C FCBD ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM # 063A 0645 FCBE ARABIC LIGATURE FEH WITH JEEM INITIAL FORM # 0641 062C FCBF ARABIC LIGATURE FEH WITH HAH INITIAL FORM # 0641 062D FCC0 ARABIC LIGATURE FEH WITH KHAH INITIAL FORM # 0641 062E FCC1 ARABIC LIGATURE FEH WITH MEEM INITIAL FORM # 0641 0645 FCC2 ARABIC LIGATURE QAF WITH HAH INITIAL FORM # 0642 062D FCC3 ARABIC LIGATURE QAF WITH MEEM INITIAL FORM # 0642 0645 FCC4 ARABIC LIGATURE KAF WITH JEEM INITIAL FORM # 0643 062C FCC5 ARABIC LIGATURE KAF WITH HAH INITIAL FORM # 0643 062D FCC6 ARABIC LIGATURE KAF WITH KHAH INITIAL FORM # 0643 062E FCC7 ARABIC LIGATURE KAF WITH LAM INITIAL FORM # 0643 0644 FCC8 ARABIC LIGATURE KAF WITH MEEM INITIAL FORM # 0643 0645 FCC9 ARABIC LIGATURE LAM WITH JEEM INITIAL FORM # 0644 062C FCCA ARABIC LIGATURE LAM WITH HAH INITIAL FORM # 0644 062D FCCB ARABIC LIGATURE LAM WITH KHAH INITIAL FORM # 0644 062E FCCC ARABIC LIGATURE LAM WITH MEEM INITIAL FORM # 0644 0645 FCCD ARABIC LIGATURE LAM WITH HEH INITIAL FORM # 0644 0647 FCCE ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM # 0645 062C FCCF ARABIC LIGATURE MEEM WITH HAH INITIAL FORM # 0645 062D FCD0 ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM # 0645 062E FCD1 ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM # 0645 0645 FCD2 ARABIC LIGATURE NOON WITH JEEM INITIAL FORM # 0646 062C FCD3 ARABIC LIGATURE NOON WITH HAH INITIAL FORM # 0646 062D FCD4 ARABIC LIGATURE NOON WITH KHAH INITIAL FORM # 0646 062E FCD5 ARABIC LIGATURE NOON WITH MEEM INITIAL FORM # 0646 0645 FCD6 ARABIC LIGATURE NOON WITH HEH INITIAL FORM # 0646 0647 FCD7 ARABIC LIGATURE HEH WITH JEEM INITIAL FORM # 0647 062C FCD8 ARABIC LIGATURE HEH WITH MEEM INITIAL FORM # 0647 0645 FCD9 ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM # 0647 0670 FCDA ARABIC LIGATURE YEH WITH JEEM INITIAL FORM # 064A 062C FCDB ARABIC LIGATURE YEH WITH HAH INITIAL FORM # 064A 062D FCDC ARABIC LIGATURE YEH WITH KHAH INITIAL FORM # 064A 062E FCDD ARABIC LIGATURE YEH WITH MEEM INITIAL FORM # 064A 0645 FCDE ARABIC LIGATURE YEH WITH HEH INITIAL FORM # 064A 0647 FCDF ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM # 0626 0645 FCE0 ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM # 0626 0647 FCE1 ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM # 0628 0645 FCE2 ARABIC LIGATURE BEH WITH HEH MEDIAL FORM # 0628 0647 FCE3 ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM # 062A 0645 FCE4 ARABIC LIGATURE TEH WITH HEH MEDIAL FORM # 062A 0647 FCE5 ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM # 062B 0645 FCE6 ARABIC LIGATURE THEH WITH HEH MEDIAL FORM # 062B 0647 FCE7 ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM # 0633 0645 FCE8 ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM # 0633 0647 FCE9 ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM # 0634 0645 FCEA ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM # 0634 0647 FCEB ARABIC LIGATURE KAF WITH LAM MEDIAL FORM # 0643 0644 FCEC ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM # 0643 0645 FCED ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM # 0644 0645 FCEE ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM # 0646 0645 FCEF ARABIC LIGATURE NOON WITH HEH MEDIAL FORM # 0646 0647 FCF0 ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM # 064A 0645 FCF1 ARABIC LIGATURE YEH WITH HEH MEDIAL FORM # 064A 0647 FCF2 ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM # 0640 064E 0651 FCF3 ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM # 0640 064F 0651 FCF4 ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM # 0640 0650 0651 FCF5 ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM # 0637 0649 FCF6 ARABIC LIGATURE TAH WITH YEH ISOLATED FORM # 0637 064A FCF7 ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM # 0639 0649 FCF8 ARABIC LIGATURE AIN WITH YEH ISOLATED FORM # 0639 064A FCF9 ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM # 063A 0649 FCFA ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM # 063A 064A FCFB ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM # 0633 0649 FCFC ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM # 0633 064A FCFD ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM # 0634 0649 FCFE ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM # 0634 064A FCFF ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM # 062D 0649 FD00 ARABIC LIGATURE HAH WITH YEH ISOLATED FORM # 062D 064A FD01 ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM # 062C 0649 FD02 ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM # 062C 064A FD03 ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM # 062E 0649 FD04 ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM # 062E 064A FD05 ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM # 0635 0649 FD06 ARABIC LIGATURE SAD WITH YEH ISOLATED FORM # 0635 064A FD07 ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM # 0636 0649 FD08 ARABIC LIGATURE DAD WITH YEH ISOLATED FORM # 0636 064A FD09 ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM # 0634 062C FD0A ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM # 0634 062D FD0B ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM # 0634 062E FD0C ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM # 0634 0645 FD0D ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM # 0634 0631 FD0E ARABIC LIGATURE SEEN WITH REH ISOLATED FORM # 0633 0631 FD0F ARABIC LIGATURE SAD WITH REH ISOLATED FORM # 0635 0631 FD10 ARABIC LIGATURE DAD WITH REH ISOLATED FORM # 0636 0631 FD11 ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM # 0637 0649 FD12 ARABIC LIGATURE TAH WITH YEH FINAL FORM # 0637 064A FD13 ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM # 0639 0649 FD14 ARABIC LIGATURE AIN WITH YEH FINAL FORM # 0639 064A FD15 ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM # 063A 0649 FD16 ARABIC LIGATURE GHAIN WITH YEH FINAL FORM # 063A 064A FD17 ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM # 0633 0649 FD18 ARABIC LIGATURE SEEN WITH YEH FINAL FORM # 0633 064A FD19 ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM # 0634 0649 FD1A ARABIC LIGATURE SHEEN WITH YEH FINAL FORM # 0634 064A FD1B ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM # 062D 0649 FD1C ARABIC LIGATURE HAH WITH YEH FINAL FORM # 062D 064A FD1D ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM # 062C 0649 FD1E ARABIC LIGATURE JEEM WITH YEH FINAL FORM # 062C 064A FD1F ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM # 062E 0649 FD20 ARABIC LIGATURE KHAH WITH YEH FINAL FORM # 062E 064A FD21 ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM # 0635 0649 FD22 ARABIC LIGATURE SAD WITH YEH FINAL FORM # 0635 064A FD23 ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM # 0636 0649 FD24 ARABIC LIGATURE DAD WITH YEH FINAL FORM # 0636 064A FD25 ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM # 0634 062C FD26 ARABIC LIGATURE SHEEN WITH HAH FINAL FORM # 0634 062D FD27 ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM # 0634 062E FD28 ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM # 0634 0645 FD29 ARABIC LIGATURE SHEEN WITH REH FINAL FORM # 0634 0631 FD2A ARABIC LIGATURE SEEN WITH REH FINAL FORM # 0633 0631 FD2B ARABIC LIGATURE SAD WITH REH FINAL FORM # 0635 0631 FD2C ARABIC LIGATURE DAD WITH REH FINAL FORM # 0636 0631 FD2D ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM # 0634 062C FD2E ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM # 0634 062D FD2F ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM # 0634 062E FD30 ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM # 0634 0645 FD31 ARABIC LIGATURE SEEN WITH HEH INITIAL FORM # 0633 0647 FD32 ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM # 0634 0647 FD33 ARABIC LIGATURE TAH WITH MEEM INITIAL FORM # 0637 0645 FD34 ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM # 0633 062C FD35 ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM # 0633 062D FD36 ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM # 0633 062E FD37 ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM # 0634 062C FD38 ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM # 0634 062D FD39 ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM # 0634 062E FD3A ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM # 0637 0645 FD3B ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM # 0638 0645 FD3C ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM # 0627 064B FD3D ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM # 0627 064B @ Punctuation @+ For legacy reasons, these parentheses do not mirror in bidirectional display and do not have the Bidi_Paired_Bracket property. @+ These parentheses also do not have compatibility decompositions and should not be considered presentation forms. FD3E ORNATE LEFT PARENTHESIS FD3F ORNATE RIGHT PARENTHESIS @ Ligatures (three elements) FD50 ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM # 062A 062C 0645 FD51 ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM # 062A 062D 062C FD52 ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM # 062A 062D 062C FD53 ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM # 062A 062D 0645 FD54 ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM # 062A 062E 0645 FD55 ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM # 062A 0645 062C FD56 ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM # 062A 0645 062D FD57 ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM # 062A 0645 062E FD58 ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM # 062C 0645 062D FD59 ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM # 062C 0645 062D FD5A ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM # 062D 0645 064A FD5B ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM # 062D 0645 0649 FD5C ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM # 0633 062D 062C FD5D ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM # 0633 062C 062D FD5E ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM # 0633 062C 0649 FD5F ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM # 0633 0645 062D FD60 ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM # 0633 0645 062D FD61 ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM # 0633 0645 062C FD62 ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM # 0633 0645 0645 FD63 ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM # 0633 0645 0645 FD64 ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM # 0635 062D 062D FD65 ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM # 0635 062D 062D FD66 ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM # 0635 0645 0645 FD67 ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM # 0634 062D 0645 FD68 ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM # 0634 062D 0645 FD69 ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM # 0634 062C 064A FD6A ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM # 0634 0645 062E FD6B ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM # 0634 0645 062E FD6C ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM # 0634 0645 0645 FD6D ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM # 0634 0645 0645 FD6E ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM # 0636 062D 0649 FD6F ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM # 0636 062E 0645 FD70 ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM # 0636 062E 0645 FD71 ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM # 0637 0645 062D FD72 ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM # 0637 0645 062D FD73 ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM # 0637 0645 0645 FD74 ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM # 0637 0645 064A FD75 ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM # 0639 062C 0645 FD76 ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM # 0639 0645 0645 FD77 ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM # 0639 0645 0645 FD78 ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM # 0639 0645 0649 FD79 ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM # 063A 0645 0645 FD7A ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM # 063A 0645 064A FD7B ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM # 063A 0645 0649 FD7C ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM # 0641 062E 0645 FD7D ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM # 0641 062E 0645 FD7E ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM # 0642 0645 062D FD7F ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM # 0642 0645 0645 FD80 ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM # 0644 062D 0645 FD81 ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM # 0644 062D 064A FD82 ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM # 0644 062D 0649 FD83 ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM # 0644 062C 062C FD84 ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM # 0644 062C 062C FD85 ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM # 0644 062E 0645 FD86 ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM # 0644 062E 0645 FD87 ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM # 0644 0645 062D FD88 ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM # 0644 0645 062D FD89 ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM # 0645 062D 062C FD8A ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM # 0645 062D 0645 FD8B ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM # 0645 062D 064A FD8C ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM # 0645 062C 062D FD8D ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM # 0645 062C 0645 FD8E ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM # 0645 062E 062C FD8F ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM # 0645 062E 0645 FD92 ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM # 0645 062C 062E FD93 ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM # 0647 0645 062C FD94 ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM # 0647 0645 0645 FD95 ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM # 0646 062D 0645 FD96 ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM # 0646 062D 0649 FD97 ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM # 0646 062C 0645 FD98 ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM # 0646 062C 0645 FD99 ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM # 0646 062C 0649 FD9A ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM # 0646 0645 064A FD9B ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM # 0646 0645 0649 FD9C ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM # 064A 0645 0645 FD9D ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM # 064A 0645 0645 FD9E ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM # 0628 062E 064A FD9F ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM # 062A 062C 064A FDA0 ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM # 062A 062C 0649 FDA1 ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM # 062A 062E 064A FDA2 ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM # 062A 062E 0649 FDA3 ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM # 062A 0645 064A FDA4 ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM # 062A 0645 0649 FDA5 ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM # 062C 0645 064A FDA6 ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM # 062C 062D 0649 FDA7 ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM # 062C 0645 0649 FDA8 ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM # 0633 062E 0649 FDA9 ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM # 0635 062D 064A FDAA ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM # 0634 062D 064A FDAB ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM # 0636 062D 064A FDAC ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM # 0644 062C 064A FDAD ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM # 0644 0645 064A FDAE ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM # 064A 062D 064A FDAF ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM # 064A 062C 064A FDB0 ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM # 064A 0645 064A FDB1 ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM # 0645 0645 064A FDB2 ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM # 0642 0645 064A FDB3 ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM # 0646 062D 064A FDB4 ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM # 0642 0645 062D FDB5 ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM # 0644 062D 0645 FDB6 ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM # 0639 0645 064A FDB7 ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM # 0643 0645 064A FDB8 ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM # 0646 062C 062D FDB9 ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM # 0645 062E 064A FDBA ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM # 0644 062C 0645 FDBB ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM # 0643 0645 0645 FDBC ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM # 0644 062C 0645 FDBD ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM # 0646 062C 062D FDBE ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM # 062C 062D 064A FDBF ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM # 062D 062C 064A FDC0 ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM # 0645 062C 064A FDC1 ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM # 0641 0645 064A FDC2 ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM # 0628 062D 064A FDC3 ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM # 0643 0645 0645 FDC4 ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM # 0639 062C 0645 FDC5 ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM # 0635 0645 0645 FDC6 ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM # 0633 062E 064A FDC7 ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM # 0646 062C 064A @ Noncharacters @+ These codes are intended for process-internal uses. FDD0 FDD1 FDD2 FDD3 FDD4 FDD5 FDD6 FDD7 FDD8 FDD9 FDDA FDDB FDDC FDDD FDDE FDDF FDE0 FDE1 FDE2 FDE3 FDE4 FDE5 FDE6 FDE7 FDE8 FDE9 FDEA FDEB FDEC FDED FDEE FDEF @ Word ligatures FDF0 ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM # 0635 0644 06D2 FDF1 ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM # 0642 0644 06D2 FDF2 ARABIC LIGATURE ALLAH ISOLATED FORM # 0627 0644 0644 0647 FDF3 ARABIC LIGATURE AKBAR ISOLATED FORM # 0627 0643 0628 0631 FDF4 ARABIC LIGATURE MOHAMMAD ISOLATED FORM # 0645 062D 0645 062F FDF5 ARABIC LIGATURE SALAM ISOLATED FORM * common abbreviation for sallallahou alayhe wasallam x (arabic ligature sallallahou alayhe wasallam - FDFA) # 0635 0644 0639 0645 FDF6 ARABIC LIGATURE RASOUL ISOLATED FORM # 0631 0633 0648 0644 FDF7 ARABIC LIGATURE ALAYHE ISOLATED FORM # 0639 0644 064A 0647 FDF8 ARABIC LIGATURE WASALLAM ISOLATED FORM # 0648 0633 0644 0645 FDF9 ARABIC LIGATURE SALLA ISOLATED FORM # 0635 0644 0649 FDFA ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM # 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645 FDFB ARABIC LIGATURE JALLAJALALOUHOU # 062C 0644 0020 062C 0644 0627 0644 0647 @ Currency sign FDFC RIAL SIGN # 0631 06CC 0627 0644 @ Symbol @+ The bismillah is treated as an atomic symbol, rather than as a word ligature. It has no decomposition. FDFD ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM @@ FE00 Variation Selectors FE0F @ Variation selectors @+ Combining characters; in conjunction with the preceding character these indicate a predetermined choice of variant glyph FE00 VARIATION SELECTOR-1 * these are abbreviated VS1, and so on FE01 VARIATION SELECTOR-2 FE02 VARIATION SELECTOR-3 FE03 VARIATION SELECTOR-4 FE04 VARIATION SELECTOR-5 FE05 VARIATION SELECTOR-6 FE06 VARIATION SELECTOR-7 FE07 VARIATION SELECTOR-8 FE08 VARIATION SELECTOR-9 FE09 VARIATION SELECTOR-10 FE0A VARIATION SELECTOR-11 FE0B VARIATION SELECTOR-12 FE0C VARIATION SELECTOR-13 FE0D VARIATION SELECTOR-14 FE0E VARIATION SELECTOR-15 FE0F VARIATION SELECTOR-16 @@ FE10 Vertical Forms FE1F @+ These characters are compatibility characters needed to map to GB 18030. @ Glyphs for vertical variants FE10 PRESENTATION FORM FOR VERTICAL COMMA x (small comma - FE50) # 002C FE11 PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA x (sesame dot - FE45) x (small ideographic comma - FE51) # 3001 FE12 PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP # 3002 FE13 PRESENTATION FORM FOR VERTICAL COLON x (small colon - FE55) # 003A FE14 PRESENTATION FORM FOR VERTICAL SEMICOLON x (small semicolon - FE54) # 003B FE15 PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK x (small exclamation mark - FE57) # 0021 FE16 PRESENTATION FORM FOR VERTICAL QUESTION MARK x (small question mark - FE56) # 003F FE17 PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET # 3016 FE18 PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET % PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRACKET * misspelling of "BRACKET" in character name is a known defect # 3017 FE19 PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS x (vertical ellipsis - 22EE) # 2026 @@ FE20 Combining Half Marks FE2F @ Combining half marks FE20 COMBINING LIGATURE LEFT HALF FE21 COMBINING LIGATURE RIGHT HALF x (combining double inverted breve - 0361) FE22 COMBINING DOUBLE TILDE LEFT HALF FE23 COMBINING DOUBLE TILDE RIGHT HALF x (combining double tilde - 0360) @ Continuous macrons for Coptic @+ These are used in combinations to represent continuous macrons over a sequence of Coptic letters. FE24 COMBINING MACRON LEFT HALF FE25 COMBINING MACRON RIGHT HALF FE26 COMBINING CONJOINING MACRON x (combining macron - 0304) x (combining double macron - 035E) @ Combining half marks below @+ These are used in combinations to represent a ligature, tilde, or macron that extend underneath more than two characters. FE27 COMBINING LIGATURE LEFT HALF BELOW FE28 COMBINING LIGATURE RIGHT HALF BELOW x (combining double breve below - 035C) FE29 COMBINING TILDE LEFT HALF BELOW FE2A COMBINING TILDE RIGHT HALF BELOW FE2B COMBINING MACRON LEFT HALF BELOW FE2C COMBINING MACRON RIGHT HALF BELOW FE2D COMBINING CONJOINING MACRON BELOW x (combining macron below - 0331) x (combining double macron below - 035F) @ Combining half marks @+ These are used for supralineation in Church Slavonic texts. FE2E COMBINING CYRILLIC TITLO LEFT HALF FE2F COMBINING CYRILLIC TITLO RIGHT HALF x (combining cyrillic titlo - 0483) @@ FE30 CJK Compatibility Forms FE4F @ Glyphs for vertical variants FE30 PRESENTATION FORM FOR VERTICAL TWO DOT LEADER # 2025 FE31 PRESENTATION FORM FOR VERTICAL EM DASH # 2014 FE32 PRESENTATION FORM FOR VERTICAL EN DASH # 2013 FE33 PRESENTATION FORM FOR VERTICAL LOW LINE # 005F FE34 PRESENTATION FORM FOR VERTICAL WAVY LOW LINE # 005F FE35 PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS x (top parenthesis - 23DC) # 0028 FE36 PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS x (bottom parenthesis - 23DD) # 0029 FE37 PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET x (top curly bracket - 23DE) # 007B FE38 PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET x (bottom curly bracket - 23DF) # 007D FE39 PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET x (top tortoise shell bracket - 23E0) # 3014 FE3A PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET x (bottom tortoise shell bracket - 23E1) # 3015 FE3B PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET # 3010 FE3C PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET # 3011 FE3D PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET # 300A FE3E PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET # 300B FE3F PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET # 3008 FE40 PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET # 3009 FE41 PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET # 300C FE42 PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET # 300D FE43 PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET # 300E FE44 PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET # 300F @ Sidelining emphasis marks FE45 SESAME DOT x (small ideographic comma - FE51) FE46 WHITE SESAME DOT * sesame dots are used beside vertical text for emphasis @ Glyphs for vertical variants FE47 PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET x (top square bracket - 23B4) # 005B FE48 PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET x (bottom square bracket - 23B5) # 005D @ Overscores and underscores FE49 DASHED OVERLINE # 203E overline FE4A CENTRELINE OVERLINE # 203E overline FE4B WAVY OVERLINE # 203E overline FE4C DOUBLE WAVY OVERLINE # 203E overline FE4D DASHED LOW LINE # 005F low line FE4E CENTRELINE LOW LINE # 005F low line FE4F WAVY LOW LINE # 005F low line @@ FE50 Small Form Variants FE6F @+ Compatibility variants for CNS 11643. @ Small form variants FE50 SMALL COMMA x (presentation form for vertical comma - FE10) # 002C FE51 SMALL IDEOGRAPHIC COMMA x (presentation form for vertical ideographic comma - FE11) x (sesame dot - FE45) # 3001 FE52 SMALL FULL STOP # 002E FE54 SMALL SEMICOLON x (presentation form for vertical semicolon - FE14) # 003B FE55 SMALL COLON x (presentation form for vertical colon - FE13) # 003A FE56 SMALL QUESTION MARK # 003F FE57 SMALL EXCLAMATION MARK # 0021 FE58 SMALL EM DASH # 2014 FE59 SMALL LEFT PARENTHESIS # 0028 FE5A SMALL RIGHT PARENTHESIS # 0029 FE5B SMALL LEFT CURLY BRACKET # 007B FE5C SMALL RIGHT CURLY BRACKET # 007D FE5D SMALL LEFT TORTOISE SHELL BRACKET # 3014 FE5E SMALL RIGHT TORTOISE SHELL BRACKET # 3015 FE5F SMALL NUMBER SIGN # 0023 FE60 SMALL AMPERSAND # 0026 FE61 SMALL ASTERISK # 002A FE62 SMALL PLUS SIGN # 002B FE63 SMALL HYPHEN-MINUS # 002D FE64 SMALL LESS-THAN SIGN # 003C FE65 SMALL GREATER-THAN SIGN # 003E FE66 SMALL EQUALS SIGN # 003D FE68 SMALL REVERSE SOLIDUS # 005C FE69 SMALL DOLLAR SIGN # 0024 FE6A SMALL PERCENT SIGN # 0025 FE6B SMALL COMMERCIAL AT # 0040 @@ FE70 Arabic Presentation Forms-B FEFF @+ Preferred characters are found in the Arabic block 0600 - 06FF. Some of these characters are used for Arabic mathematics where contextual shape variations are important semantically. @ Glyphs for spacing forms of Arabic points FE70 ARABIC FATHATAN ISOLATED FORM # 0020 064B FE71 ARABIC TATWEEL WITH FATHATAN ABOVE # 0640 064B FE72 ARABIC DAMMATAN ISOLATED FORM # 0020 064C @ Glyph part FE73 ARABIC TAIL FRAGMENT * for compatibility with certain legacy character sets @ Glyphs for spacing forms of Arabic points FE74 ARABIC KASRATAN ISOLATED FORM # 0020 064D FE76 ARABIC FATHA ISOLATED FORM # 0020 064E FE77 ARABIC FATHA MEDIAL FORM # 0640 064E FE78 ARABIC DAMMA ISOLATED FORM # 0020 064F FE79 ARABIC DAMMA MEDIAL FORM # 0640 064F FE7A ARABIC KASRA ISOLATED FORM # 0020 0650 FE7B ARABIC KASRA MEDIAL FORM # 0640 0650 FE7C ARABIC SHADDA ISOLATED FORM # 0020 0651 FE7D ARABIC SHADDA MEDIAL FORM # 0640 0651 FE7E ARABIC SUKUN ISOLATED FORM # 0020 0652 FE7F ARABIC SUKUN MEDIAL FORM # 0640 0652 @ Basic glyphs for Arabic language contextual forms FE80 ARABIC LETTER HAMZA ISOLATED FORM # 0621 FE81 ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM # 0622 FE82 ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM # 0622 FE83 ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM # 0623 FE84 ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM # 0623 FE85 ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM # 0624 FE86 ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM # 0624 FE87 ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM # 0625 FE88 ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM # 0625 FE89 ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM # 0626 FE8A ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM # 0626 FE8B ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM # 0626 FE8C ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM # 0626 FE8D ARABIC LETTER ALEF ISOLATED FORM # 0627 FE8E ARABIC LETTER ALEF FINAL FORM # 0627 FE8F ARABIC LETTER BEH ISOLATED FORM # 0628 FE90 ARABIC LETTER BEH FINAL FORM # 0628 FE91 ARABIC LETTER BEH INITIAL FORM # 0628 FE92 ARABIC LETTER BEH MEDIAL FORM # 0628 FE93 ARABIC LETTER TEH MARBUTA ISOLATED FORM # 0629 FE94 ARABIC LETTER TEH MARBUTA FINAL FORM # 0629 FE95 ARABIC LETTER TEH ISOLATED FORM # 062A FE96 ARABIC LETTER TEH FINAL FORM # 062A FE97 ARABIC LETTER TEH INITIAL FORM # 062A FE98 ARABIC LETTER TEH MEDIAL FORM # 062A FE99 ARABIC LETTER THEH ISOLATED FORM # 062B FE9A ARABIC LETTER THEH FINAL FORM # 062B FE9B ARABIC LETTER THEH INITIAL FORM # 062B FE9C ARABIC LETTER THEH MEDIAL FORM # 062B FE9D ARABIC LETTER JEEM ISOLATED FORM # 062C FE9E ARABIC LETTER JEEM FINAL FORM # 062C FE9F ARABIC LETTER JEEM INITIAL FORM # 062C FEA0 ARABIC LETTER JEEM MEDIAL FORM # 062C FEA1 ARABIC LETTER HAH ISOLATED FORM # 062D FEA2 ARABIC LETTER HAH FINAL FORM # 062D FEA3 ARABIC LETTER HAH INITIAL FORM # 062D FEA4 ARABIC LETTER HAH MEDIAL FORM # 062D FEA5 ARABIC LETTER KHAH ISOLATED FORM # 062E FEA6 ARABIC LETTER KHAH FINAL FORM # 062E FEA7 ARABIC LETTER KHAH INITIAL FORM # 062E FEA8 ARABIC LETTER KHAH MEDIAL FORM # 062E FEA9 ARABIC LETTER DAL ISOLATED FORM # 062F FEAA ARABIC LETTER DAL FINAL FORM # 062F FEAB ARABIC LETTER THAL ISOLATED FORM # 0630 FEAC ARABIC LETTER THAL FINAL FORM # 0630 FEAD ARABIC LETTER REH ISOLATED FORM # 0631 FEAE ARABIC LETTER REH FINAL FORM # 0631 FEAF ARABIC LETTER ZAIN ISOLATED FORM # 0632 FEB0 ARABIC LETTER ZAIN FINAL FORM # 0632 FEB1 ARABIC LETTER SEEN ISOLATED FORM # 0633 FEB2 ARABIC LETTER SEEN FINAL FORM # 0633 FEB3 ARABIC LETTER SEEN INITIAL FORM # 0633 FEB4 ARABIC LETTER SEEN MEDIAL FORM # 0633 FEB5 ARABIC LETTER SHEEN ISOLATED FORM # 0634 FEB6 ARABIC LETTER SHEEN FINAL FORM # 0634 FEB7 ARABIC LETTER SHEEN INITIAL FORM # 0634 FEB8 ARABIC LETTER SHEEN MEDIAL FORM # 0634 FEB9 ARABIC LETTER SAD ISOLATED FORM # 0635 FEBA ARABIC LETTER SAD FINAL FORM # 0635 FEBB ARABIC LETTER SAD INITIAL FORM # 0635 FEBC ARABIC LETTER SAD MEDIAL FORM # 0635 FEBD ARABIC LETTER DAD ISOLATED FORM # 0636 FEBE ARABIC LETTER DAD FINAL FORM # 0636 FEBF ARABIC LETTER DAD INITIAL FORM # 0636 FEC0 ARABIC LETTER DAD MEDIAL FORM # 0636 FEC1 ARABIC LETTER TAH ISOLATED FORM # 0637 FEC2 ARABIC LETTER TAH FINAL FORM # 0637 FEC3 ARABIC LETTER TAH INITIAL FORM # 0637 FEC4 ARABIC LETTER TAH MEDIAL FORM # 0637 FEC5 ARABIC LETTER ZAH ISOLATED FORM # 0638 FEC6 ARABIC LETTER ZAH FINAL FORM # 0638 FEC7 ARABIC LETTER ZAH INITIAL FORM # 0638 FEC8 ARABIC LETTER ZAH MEDIAL FORM # 0638 FEC9 ARABIC LETTER AIN ISOLATED FORM # 0639 FECA ARABIC LETTER AIN FINAL FORM # 0639 FECB ARABIC LETTER AIN INITIAL FORM # 0639 FECC ARABIC LETTER AIN MEDIAL FORM # 0639 FECD ARABIC LETTER GHAIN ISOLATED FORM # 063A FECE ARABIC LETTER GHAIN FINAL FORM # 063A FECF ARABIC LETTER GHAIN INITIAL FORM # 063A FED0 ARABIC LETTER GHAIN MEDIAL FORM # 063A FED1 ARABIC LETTER FEH ISOLATED FORM # 0641 FED2 ARABIC LETTER FEH FINAL FORM # 0641 FED3 ARABIC LETTER FEH INITIAL FORM # 0641 FED4 ARABIC LETTER FEH MEDIAL FORM # 0641 FED5 ARABIC LETTER QAF ISOLATED FORM # 0642 FED6 ARABIC LETTER QAF FINAL FORM # 0642 FED7 ARABIC LETTER QAF INITIAL FORM # 0642 FED8 ARABIC LETTER QAF MEDIAL FORM # 0642 FED9 ARABIC LETTER KAF ISOLATED FORM # 0643 FEDA ARABIC LETTER KAF FINAL FORM # 0643 FEDB ARABIC LETTER KAF INITIAL FORM # 0643 FEDC ARABIC LETTER KAF MEDIAL FORM # 0643 FEDD ARABIC LETTER LAM ISOLATED FORM # 0644 FEDE ARABIC LETTER LAM FINAL FORM # 0644 FEDF ARABIC LETTER LAM INITIAL FORM # 0644 FEE0 ARABIC LETTER LAM MEDIAL FORM # 0644 FEE1 ARABIC LETTER MEEM ISOLATED FORM # 0645 FEE2 ARABIC LETTER MEEM FINAL FORM # 0645 FEE3 ARABIC LETTER MEEM INITIAL FORM # 0645 FEE4 ARABIC LETTER MEEM MEDIAL FORM # 0645 FEE5 ARABIC LETTER NOON ISOLATED FORM # 0646 FEE6 ARABIC LETTER NOON FINAL FORM # 0646 FEE7 ARABIC LETTER NOON INITIAL FORM # 0646 FEE8 ARABIC LETTER NOON MEDIAL FORM # 0646 FEE9 ARABIC LETTER HEH ISOLATED FORM # 0647 FEEA ARABIC LETTER HEH FINAL FORM # 0647 FEEB ARABIC LETTER HEH INITIAL FORM # 0647 FEEC ARABIC LETTER HEH MEDIAL FORM # 0647 FEED ARABIC LETTER WAW ISOLATED FORM # 0648 FEEE ARABIC LETTER WAW FINAL FORM # 0648 FEEF ARABIC LETTER ALEF MAKSURA ISOLATED FORM # 0649 FEF0 ARABIC LETTER ALEF MAKSURA FINAL FORM # 0649 FEF1 ARABIC LETTER YEH ISOLATED FORM # 064A FEF2 ARABIC LETTER YEH FINAL FORM # 064A FEF3 ARABIC LETTER YEH INITIAL FORM # 064A FEF4 ARABIC LETTER YEH MEDIAL FORM # 064A FEF5 ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM # 0644 0622 FEF6 ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM # 0644 0622 FEF7 ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM # 0644 0623 FEF8 ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM # 0644 0623 FEF9 ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM # 0644 0625 FEFA ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM # 0644 0625 FEFB ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM # 0644 0627 FEFC ARABIC LIGATURE LAM WITH ALEF FINAL FORM # 0644 0627 @ Special FEFF ZERO WIDTH NO-BREAK SPACE % BYTE ORDER MARK = BOM, ZWNBSP * may be used to detect byte order by contrast with the noncharacter code point FFFE * use as an indication of non-breaking is deprecated; see 2060 instead x (zero width space - 200B) x (word joiner - 2060) x ( - FFFE) @@ FF00 Halfwidth and Fullwidth Forms FFEF @ Fullwidth ASCII variants @+ See ASCII 0020-007E FF01 FULLWIDTH EXCLAMATION MARK # 0021 FF02 FULLWIDTH QUOTATION MARK # 0022 FF03 FULLWIDTH NUMBER SIGN # 0023 FF04 FULLWIDTH DOLLAR SIGN # 0024 FF05 FULLWIDTH PERCENT SIGN # 0025 FF06 FULLWIDTH AMPERSAND # 0026 FF07 FULLWIDTH APOSTROPHE # 0027 FF08 FULLWIDTH LEFT PARENTHESIS # 0028 FF09 FULLWIDTH RIGHT PARENTHESIS # 0029 FF0A FULLWIDTH ASTERISK # 002A FF0B FULLWIDTH PLUS SIGN # 002B FF0C FULLWIDTH COMMA * in Chinese, indicates a pause x (ideographic comma - 3001) # 002C FF0D FULLWIDTH HYPHEN-MINUS # 002D FF0E FULLWIDTH FULL STOP # 002E FF0F FULLWIDTH SOLIDUS # 002F FF10 FULLWIDTH DIGIT ZERO # 0030 FF11 FULLWIDTH DIGIT ONE # 0031 FF12 FULLWIDTH DIGIT TWO # 0032 FF13 FULLWIDTH DIGIT THREE # 0033 FF14 FULLWIDTH DIGIT FOUR # 0034 FF15 FULLWIDTH DIGIT FIVE # 0035 FF16 FULLWIDTH DIGIT SIX # 0036 FF17 FULLWIDTH DIGIT SEVEN # 0037 FF18 FULLWIDTH DIGIT EIGHT # 0038 FF19 FULLWIDTH DIGIT NINE # 0039 FF1A FULLWIDTH COLON # 003A FF1B FULLWIDTH SEMICOLON # 003B FF1C FULLWIDTH LESS-THAN SIGN # 003C FF1D FULLWIDTH EQUALS SIGN # 003D FF1E FULLWIDTH GREATER-THAN SIGN # 003E FF1F FULLWIDTH QUESTION MARK # 003F FF20 FULLWIDTH COMMERCIAL AT # 0040 FF21 FULLWIDTH LATIN CAPITAL LETTER A # 0041 FF22 FULLWIDTH LATIN CAPITAL LETTER B # 0042 FF23 FULLWIDTH LATIN CAPITAL LETTER C # 0043 FF24 FULLWIDTH LATIN CAPITAL LETTER D # 0044 FF25 FULLWIDTH LATIN CAPITAL LETTER E # 0045 FF26 FULLWIDTH LATIN CAPITAL LETTER F # 0046 FF27 FULLWIDTH LATIN CAPITAL LETTER G # 0047 FF28 FULLWIDTH LATIN CAPITAL LETTER H # 0048 FF29 FULLWIDTH LATIN CAPITAL LETTER I # 0049 FF2A FULLWIDTH LATIN CAPITAL LETTER J # 004A FF2B FULLWIDTH LATIN CAPITAL LETTER K # 004B FF2C FULLWIDTH LATIN CAPITAL LETTER L # 004C FF2D FULLWIDTH LATIN CAPITAL LETTER M # 004D FF2E FULLWIDTH LATIN CAPITAL LETTER N # 004E FF2F FULLWIDTH LATIN CAPITAL LETTER O # 004F FF30 FULLWIDTH LATIN CAPITAL LETTER P # 0050 FF31 FULLWIDTH LATIN CAPITAL LETTER Q # 0051 FF32 FULLWIDTH LATIN CAPITAL LETTER R # 0052 FF33 FULLWIDTH LATIN CAPITAL LETTER S # 0053 FF34 FULLWIDTH LATIN CAPITAL LETTER T # 0054 FF35 FULLWIDTH LATIN CAPITAL LETTER U # 0055 FF36 FULLWIDTH LATIN CAPITAL LETTER V # 0056 FF37 FULLWIDTH LATIN CAPITAL LETTER W # 0057 FF38 FULLWIDTH LATIN CAPITAL LETTER X # 0058 FF39 FULLWIDTH LATIN CAPITAL LETTER Y # 0059 FF3A FULLWIDTH LATIN CAPITAL LETTER Z # 005A FF3B FULLWIDTH LEFT SQUARE BRACKET # 005B FF3C FULLWIDTH REVERSE SOLIDUS # 005C FF3D FULLWIDTH RIGHT SQUARE BRACKET # 005D FF3E FULLWIDTH CIRCUMFLEX ACCENT # 005E FF3F FULLWIDTH LOW LINE # 005F FF40 FULLWIDTH GRAVE ACCENT # 0060 FF41 FULLWIDTH LATIN SMALL LETTER A # 0061 FF42 FULLWIDTH LATIN SMALL LETTER B # 0062 FF43 FULLWIDTH LATIN SMALL LETTER C # 0063 FF44 FULLWIDTH LATIN SMALL LETTER D # 0064 FF45 FULLWIDTH LATIN SMALL LETTER E # 0065 FF46 FULLWIDTH LATIN SMALL LETTER F # 0066 FF47 FULLWIDTH LATIN SMALL LETTER G # 0067 FF48 FULLWIDTH LATIN SMALL LETTER H # 0068 FF49 FULLWIDTH LATIN SMALL LETTER I # 0069 FF4A FULLWIDTH LATIN SMALL LETTER J # 006A FF4B FULLWIDTH LATIN SMALL LETTER K # 006B FF4C FULLWIDTH LATIN SMALL LETTER L # 006C FF4D FULLWIDTH LATIN SMALL LETTER M # 006D FF4E FULLWIDTH LATIN SMALL LETTER N # 006E FF4F FULLWIDTH LATIN SMALL LETTER O # 006F FF50 FULLWIDTH LATIN SMALL LETTER P # 0070 FF51 FULLWIDTH LATIN SMALL LETTER Q # 0071 FF52 FULLWIDTH LATIN SMALL LETTER R # 0072 FF53 FULLWIDTH LATIN SMALL LETTER S # 0073 FF54 FULLWIDTH LATIN SMALL LETTER T # 0074 FF55 FULLWIDTH LATIN SMALL LETTER U # 0075 FF56 FULLWIDTH LATIN SMALL LETTER V # 0076 FF57 FULLWIDTH LATIN SMALL LETTER W # 0077 FF58 FULLWIDTH LATIN SMALL LETTER X # 0078 FF59 FULLWIDTH LATIN SMALL LETTER Y # 0079 FF5A FULLWIDTH LATIN SMALL LETTER Z # 007A FF5B FULLWIDTH LEFT CURLY BRACKET # 007B FF5C FULLWIDTH VERTICAL LINE # 007C FF5D FULLWIDTH RIGHT CURLY BRACKET # 007D FF5E FULLWIDTH TILDE # 007E @ Fullwidth brackets FF5F FULLWIDTH LEFT WHITE PARENTHESIS * the most commonly occurring glyph variant looks like doubled parentheses x (left double parenthesis - 2E28) # 2985 FF60 FULLWIDTH RIGHT WHITE PARENTHESIS # 2986 @ Halfwidth CJK punctuation @+ See CJK punctuation 3000 - 303F FF61 HALFWIDTH IDEOGRAPHIC FULL STOP # 3002 FF62 HALFWIDTH LEFT CORNER BRACKET # 300C FF63 HALFWIDTH RIGHT CORNER BRACKET # 300D FF64 HALFWIDTH IDEOGRAPHIC COMMA # 3001 @ Halfwidth Katakana variants @+ See Katakana 30A0 - 30FF FF65 HALFWIDTH KATAKANA MIDDLE DOT # 30FB FF66 HALFWIDTH KATAKANA LETTER WO # 30F2 FF67 HALFWIDTH KATAKANA LETTER SMALL A # 30A1 FF68 HALFWIDTH KATAKANA LETTER SMALL I # 30A3 FF69 HALFWIDTH KATAKANA LETTER SMALL U # 30A5 FF6A HALFWIDTH KATAKANA LETTER SMALL E # 30A7 FF6B HALFWIDTH KATAKANA LETTER SMALL O # 30A9 FF6C HALFWIDTH KATAKANA LETTER SMALL YA # 30E3 FF6D HALFWIDTH KATAKANA LETTER SMALL YU # 30E5 FF6E HALFWIDTH KATAKANA LETTER SMALL YO # 30E7 FF6F HALFWIDTH KATAKANA LETTER SMALL TU # 30C3 FF70 HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK # 30FC FF71 HALFWIDTH KATAKANA LETTER A # 30A2 FF72 HALFWIDTH KATAKANA LETTER I # 30A4 FF73 HALFWIDTH KATAKANA LETTER U # 30A6 FF74 HALFWIDTH KATAKANA LETTER E # 30A8 FF75 HALFWIDTH KATAKANA LETTER O # 30AA FF76 HALFWIDTH KATAKANA LETTER KA # 30AB FF77 HALFWIDTH KATAKANA LETTER KI # 30AD FF78 HALFWIDTH KATAKANA LETTER KU # 30AF FF79 HALFWIDTH KATAKANA LETTER KE # 30B1 FF7A HALFWIDTH KATAKANA LETTER KO # 30B3 FF7B HALFWIDTH KATAKANA LETTER SA # 30B5 FF7C HALFWIDTH KATAKANA LETTER SI # 30B7 FF7D HALFWIDTH KATAKANA LETTER SU # 30B9 FF7E HALFWIDTH KATAKANA LETTER SE # 30BB FF7F HALFWIDTH KATAKANA LETTER SO # 30BD FF80 HALFWIDTH KATAKANA LETTER TA # 30BF FF81 HALFWIDTH KATAKANA LETTER TI # 30C1 FF82 HALFWIDTH KATAKANA LETTER TU # 30C4 FF83 HALFWIDTH KATAKANA LETTER TE # 30C6 FF84 HALFWIDTH KATAKANA LETTER TO # 30C8 FF85 HALFWIDTH KATAKANA LETTER NA # 30CA FF86 HALFWIDTH KATAKANA LETTER NI # 30CB FF87 HALFWIDTH KATAKANA LETTER NU # 30CC FF88 HALFWIDTH KATAKANA LETTER NE # 30CD FF89 HALFWIDTH KATAKANA LETTER NO # 30CE FF8A HALFWIDTH KATAKANA LETTER HA # 30CF FF8B HALFWIDTH KATAKANA LETTER HI # 30D2 FF8C HALFWIDTH KATAKANA LETTER HU # 30D5 FF8D HALFWIDTH KATAKANA LETTER HE # 30D8 FF8E HALFWIDTH KATAKANA LETTER HO # 30DB FF8F HALFWIDTH KATAKANA LETTER MA # 30DE FF90 HALFWIDTH KATAKANA LETTER MI # 30DF FF91 HALFWIDTH KATAKANA LETTER MU # 30E0 FF92 HALFWIDTH KATAKANA LETTER ME # 30E1 FF93 HALFWIDTH KATAKANA LETTER MO # 30E2 FF94 HALFWIDTH KATAKANA LETTER YA # 30E4 FF95 HALFWIDTH KATAKANA LETTER YU # 30E6 FF96 HALFWIDTH KATAKANA LETTER YO # 30E8 FF97 HALFWIDTH KATAKANA LETTER RA # 30E9 FF98 HALFWIDTH KATAKANA LETTER RI # 30EA FF99 HALFWIDTH KATAKANA LETTER RU # 30EB FF9A HALFWIDTH KATAKANA LETTER RE # 30EC FF9B HALFWIDTH KATAKANA LETTER RO # 30ED FF9C HALFWIDTH KATAKANA LETTER WA # 30EF FF9D HALFWIDTH KATAKANA LETTER N # 30F3 FF9E HALFWIDTH KATAKANA VOICED SOUND MARK # 3099 FF9F HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK # 309A @ Halfwidth Hangul variants @+ See Hangul Compatibility Jamo 3130 - 318F FFA0 HALFWIDTH HANGUL FILLER # 3164 FFA1 HALFWIDTH HANGUL LETTER KIYEOK # 3131 FFA2 HALFWIDTH HANGUL LETTER SSANGKIYEOK # 3132 FFA3 HALFWIDTH HANGUL LETTER KIYEOK-SIOS # 3133 FFA4 HALFWIDTH HANGUL LETTER NIEUN # 3134 FFA5 HALFWIDTH HANGUL LETTER NIEUN-CIEUC # 3135 FFA6 HALFWIDTH HANGUL LETTER NIEUN-HIEUH # 3136 FFA7 HALFWIDTH HANGUL LETTER TIKEUT # 3137 FFA8 HALFWIDTH HANGUL LETTER SSANGTIKEUT # 3138 FFA9 HALFWIDTH HANGUL LETTER RIEUL # 3139 FFAA HALFWIDTH HANGUL LETTER RIEUL-KIYEOK # 313A FFAB HALFWIDTH HANGUL LETTER RIEUL-MIEUM # 313B FFAC HALFWIDTH HANGUL LETTER RIEUL-PIEUP # 313C FFAD HALFWIDTH HANGUL LETTER RIEUL-SIOS # 313D FFAE HALFWIDTH HANGUL LETTER RIEUL-THIEUTH # 313E FFAF HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH # 313F FFB0 HALFWIDTH HANGUL LETTER RIEUL-HIEUH # 3140 FFB1 HALFWIDTH HANGUL LETTER MIEUM # 3141 FFB2 HALFWIDTH HANGUL LETTER PIEUP # 3142 FFB3 HALFWIDTH HANGUL LETTER SSANGPIEUP # 3143 FFB4 HALFWIDTH HANGUL LETTER PIEUP-SIOS # 3144 FFB5 HALFWIDTH HANGUL LETTER SIOS # 3145 FFB6 HALFWIDTH HANGUL LETTER SSANGSIOS # 3146 FFB7 HALFWIDTH HANGUL LETTER IEUNG # 3147 FFB8 HALFWIDTH HANGUL LETTER CIEUC # 3148 FFB9 HALFWIDTH HANGUL LETTER SSANGCIEUC # 3149 FFBA HALFWIDTH HANGUL LETTER CHIEUCH # 314A FFBB HALFWIDTH HANGUL LETTER KHIEUKH # 314B FFBC HALFWIDTH HANGUL LETTER THIEUTH # 314C FFBD HALFWIDTH HANGUL LETTER PHIEUPH # 314D FFBE HALFWIDTH HANGUL LETTER HIEUH # 314E FFC2 HALFWIDTH HANGUL LETTER A # 314F FFC3 HALFWIDTH HANGUL LETTER AE # 3150 FFC4 HALFWIDTH HANGUL LETTER YA # 3151 FFC5 HALFWIDTH HANGUL LETTER YAE # 3152 FFC6 HALFWIDTH HANGUL LETTER EO # 3153 FFC7 HALFWIDTH HANGUL LETTER E # 3154 FFCA HALFWIDTH HANGUL LETTER YEO # 3155 FFCB HALFWIDTH HANGUL LETTER YE # 3156 FFCC HALFWIDTH HANGUL LETTER O # 3157 FFCD HALFWIDTH HANGUL LETTER WA # 3158 FFCE HALFWIDTH HANGUL LETTER WAE # 3159 FFCF HALFWIDTH HANGUL LETTER OE # 315A FFD2 HALFWIDTH HANGUL LETTER YO # 315B FFD3 HALFWIDTH HANGUL LETTER U # 315C FFD4 HALFWIDTH HANGUL LETTER WEO # 315D FFD5 HALFWIDTH HANGUL LETTER WE # 315E FFD6 HALFWIDTH HANGUL LETTER WI # 315F FFD7 HALFWIDTH HANGUL LETTER YU # 3160 FFDA HALFWIDTH HANGUL LETTER EU # 3161 FFDB HALFWIDTH HANGUL LETTER YI # 3162 FFDC HALFWIDTH HANGUL LETTER I # 3163 @ Fullwidth symbol variants @+ See Latin-1 00A0 - 00FF FFE0 FULLWIDTH CENT SIGN # 00A2 FFE1 FULLWIDTH POUND SIGN # 00A3 FFE2 FULLWIDTH NOT SIGN # 00AC FFE3 FULLWIDTH MACRON * sometimes treated as fullwidth overline x (overline - 203E) # 00AF FFE4 FULLWIDTH BROKEN BAR # 00A6 FFE5 FULLWIDTH YEN SIGN # 00A5 FFE6 FULLWIDTH WON SIGN # 20A9 @ Halfwidth symbol variants FFE8 HALFWIDTH FORMS LIGHT VERTICAL # 2502 FFE9 HALFWIDTH LEFTWARDS ARROW # 2190 FFEA HALFWIDTH UPWARDS ARROW # 2191 FFEB HALFWIDTH RIGHTWARDS ARROW # 2192 FFEC HALFWIDTH DOWNWARDS ARROW # 2193 FFED HALFWIDTH BLACK SQUARE # 25A0 FFEE HALFWIDTH WHITE CIRCLE # 25CB @@ FFF0 Specials FFFF @ Interlinear annotation @+ Used internally for Japanese Ruby (furigana), etc. FFF9 INTERLINEAR ANNOTATION ANCHOR * marks start of annotated text FFFA INTERLINEAR ANNOTATION SEPARATOR * marks start of annotating character(s) FFFB INTERLINEAR ANNOTATION TERMINATOR * marks end of annotation block @ Replacement characters FFFC OBJECT REPLACEMENT CHARACTER * used as placeholder in text for an otherwise unspecified object FFFD REPLACEMENT CHARACTER * used to replace an incoming character whose value is unknown or unrepresentable in Unicode * compare the use of 001A as a control character to indicate the substitute function x (uncertainty sign - 2BD1) @ Noncharacters @+ These codes are intended for process-internal uses. FFFE * may be used to detect byte order by contrast with FEFF x (zero width no-break space - FEFF) FFFF @@ 10000 Linear B Syllabary 1007F @@+ @ Basic syllables 10000 LINEAR B SYLLABLE B008 A 10001 LINEAR B SYLLABLE B038 E 10002 LINEAR B SYLLABLE B028 I 10003 LINEAR B SYLLABLE B061 O 10004 LINEAR B SYLLABLE B010 U 10005 LINEAR B SYLLABLE B001 DA 10006 LINEAR B SYLLABLE B045 DE 10007 LINEAR B SYLLABLE B007 DI 10008 LINEAR B SYLLABLE B014 DO 10009 LINEAR B SYLLABLE B051 DU 1000A LINEAR B SYLLABLE B057 JA 1000B LINEAR B SYLLABLE B046 JE 1000D LINEAR B SYLLABLE B036 JO 1000E LINEAR B SYLLABLE B065 JU = ideogram B129 flour 1000F LINEAR B SYLLABLE B077 KA 10010 LINEAR B SYLLABLE B044 KE 10011 LINEAR B SYLLABLE B067 KI 10012 LINEAR B SYLLABLE B070 KO 10013 LINEAR B SYLLABLE B081 KU 10014 LINEAR B SYLLABLE B080 MA 10015 LINEAR B SYLLABLE B013 ME 10016 LINEAR B SYLLABLE B073 MI 10017 LINEAR B SYLLABLE B015 MO 10018 LINEAR B SYLLABLE B023 MU = ideogram B109 ox 10019 LINEAR B SYLLABLE B006 NA 1001A LINEAR B SYLLABLE B024 NE 1001B LINEAR B SYLLABLE B030 NI = ideogram B030 figs 1001C LINEAR B SYLLABLE B052 NO 1001D LINEAR B SYLLABLE B055 NU 1001E LINEAR B SYLLABLE B003 PA 1001F LINEAR B SYLLABLE B072 PE 10020 LINEAR B SYLLABLE B039 PI 10021 LINEAR B SYLLABLE B011 PO 10022 LINEAR B SYLLABLE B050 PU 10023 LINEAR B SYLLABLE B016 QA 10024 LINEAR B SYLLABLE B078 QE 10025 LINEAR B SYLLABLE B021 QI = ideogram B106 sheep 10026 LINEAR B SYLLABLE B032 QO 10028 LINEAR B SYLLABLE B060 RA 10029 LINEAR B SYLLABLE B027 RE 1002A LINEAR B SYLLABLE B053 RI 1002B LINEAR B SYLLABLE B002 RO 1002C LINEAR B SYLLABLE B026 RU 1002D LINEAR B SYLLABLE B031 SA = ideogram B031 flax 1002E LINEAR B SYLLABLE B009 SE 1002F LINEAR B SYLLABLE B041 SI 10030 LINEAR B SYLLABLE B012 SO 10031 LINEAR B SYLLABLE B058 SU 10032 LINEAR B SYLLABLE B059 TA 10033 LINEAR B SYLLABLE B004 TE 10034 LINEAR B SYLLABLE B037 TI 10035 LINEAR B SYLLABLE B005 TO 10036 LINEAR B SYLLABLE B069 TU 10037 LINEAR B SYLLABLE B054 WA 10038 LINEAR B SYLLABLE B075 WE 10039 LINEAR B SYLLABLE B040 WI 1003A LINEAR B SYLLABLE B042 WO 1003C LINEAR B SYLLABLE B017 ZA 1003D LINEAR B SYLLABLE B074 ZE 1003F LINEAR B SYLLABLE B020 ZO @ Supplementary signs 10040 LINEAR B SYLLABLE B025 A2 10041 LINEAR B SYLLABLE B043 A3 10042 LINEAR B SYLLABLE B085 AU = ideogram B108 pig 10043 LINEAR B SYLLABLE B071 DWE 10044 LINEAR B SYLLABLE B090 DWO 10045 LINEAR B SYLLABLE B048 NWA 10046 LINEAR B SYLLABLE B029 PU2 10047 LINEAR B SYLLABLE B062 PTE 10048 LINEAR B SYLLABLE B076 RA2 10049 LINEAR B SYLLABLE B033 RA3 = ideogram B144 saffron 1004A LINEAR B SYLLABLE B068 RO2 1004B LINEAR B SYLLABLE B066 TA2 1004C LINEAR B SYLLABLE B087 TWE 1004D LINEAR B SYLLABLE B091 TWO @ Symbols 10050 LINEAR B SYMBOL B018 10051 LINEAR B SYMBOL B019 10052 LINEAR B SYMBOL B022 = ideogram B107 goat 10053 LINEAR B SYMBOL B034 10054 LINEAR B SYMBOL B047 10055 LINEAR B SYMBOL B049 10056 LINEAR B SYMBOL B056 10057 LINEAR B SYMBOL B063 10058 LINEAR B SYMBOL B064 10059 LINEAR B SYMBOL B079 1005A LINEAR B SYMBOL B082 1005B LINEAR B SYMBOL B083 1005C LINEAR B SYMBOL B086 1005D LINEAR B SYMBOL B089 @@ 10080 Linear B Ideograms 100FF @+ Some Linear B syllables are also used as Linear B ideograms. x (linear b syllable b021 qi - 10025) x (linear b symbol b022 - 10052) x (linear b syllable b023 mu - 10018) x (linear b syllable b030 ni - 1001B) x (linear b syllable b031 sa - 1002D) x (linear b syllable b033 ra3 - 10049) x (linear b syllable b065 ju - 1000E) x (linear b syllable b085 au - 10042) @ People and animals 10080 LINEAR B IDEOGRAM B100 MAN 10081 LINEAR B IDEOGRAM B102 WOMAN 10082 LINEAR B IDEOGRAM B104 DEER 10083 LINEAR B IDEOGRAM B105 EQUID 10084 LINEAR B IDEOGRAM B105F MARE 10085 LINEAR B IDEOGRAM B105M STALLION 10086 LINEAR B IDEOGRAM B106F EWE 10087 LINEAR B IDEOGRAM B106M RAM 10088 LINEAR B IDEOGRAM B107F SHE-GOAT 10089 LINEAR B IDEOGRAM B107M HE-GOAT 1008A LINEAR B IDEOGRAM B108F SOW 1008B LINEAR B IDEOGRAM B108M BOAR 1008C LINEAR B IDEOGRAM B109F COW 1008D LINEAR B IDEOGRAM B109M BULL @ Cereals and plants 1008E LINEAR B IDEOGRAM B120 WHEAT 1008F LINEAR B IDEOGRAM B121 BARLEY 10090 LINEAR B IDEOGRAM B122 OLIVE 10091 LINEAR B IDEOGRAM B123 SPICE 10092 LINEAR B IDEOGRAM B125 CYPERUS 10093 LINEAR B MONOGRAM B127 KAPO = fruit 10094 LINEAR B MONOGRAM B128 KANAKO = saffron @ Extracts 10095 LINEAR B IDEOGRAM B130 OIL 10096 LINEAR B IDEOGRAM B131 WINE 10097 LINEAR B IDEOGRAM B132 10098 LINEAR B MONOGRAM B133 AREPA = ointment 10099 LINEAR B MONOGRAM B135 MERI = honey @ Metals 1009A LINEAR B IDEOGRAM B140 BRONZE 1009B LINEAR B IDEOGRAM B141 GOLD 1009C LINEAR B IDEOGRAM B142 @ Other materials 1009D LINEAR B IDEOGRAM B145 WOOL 1009E LINEAR B IDEOGRAM B146 1009F LINEAR B IDEOGRAM B150 100A0 LINEAR B IDEOGRAM B151 HORN 100A1 LINEAR B IDEOGRAM B152 100A2 LINEAR B IDEOGRAM B153 100A3 LINEAR B IDEOGRAM B154 100A4 LINEAR B MONOGRAM B156 TURO2 = cheese 100A5 LINEAR B IDEOGRAM B157 100A6 LINEAR B IDEOGRAM B158 100A7 LINEAR B IDEOGRAM B159 CLOTH 100A8 LINEAR B IDEOGRAM B160 100A9 LINEAR B IDEOGRAM B161 100AA LINEAR B IDEOGRAM B162 GARMENT 100AB LINEAR B IDEOGRAM B163 ARMOUR 100AC LINEAR B IDEOGRAM B164 100AD LINEAR B IDEOGRAM B165 100AE LINEAR B IDEOGRAM B166 100AF LINEAR B IDEOGRAM B167 100B0 LINEAR B IDEOGRAM B168 100B1 LINEAR B IDEOGRAM B169 100B2 LINEAR B IDEOGRAM B170 100B3 LINEAR B IDEOGRAM B171 100B4 LINEAR B IDEOGRAM B172 100B5 LINEAR B IDEOGRAM B173 MONTH 100B6 LINEAR B IDEOGRAM B174 100B7 LINEAR B IDEOGRAM B176 TREE 100B8 LINEAR B IDEOGRAM B177 100B9 LINEAR B IDEOGRAM B178 100BA LINEAR B IDEOGRAM B179 100BB LINEAR B IDEOGRAM B180 100BC LINEAR B IDEOGRAM B181 100BD LINEAR B IDEOGRAM B182 100BE LINEAR B IDEOGRAM B183 100BF LINEAR B IDEOGRAM B184 * the shape of this ideogram is only partially known 100C0 LINEAR B IDEOGRAM B185 100C1 LINEAR B IDEOGRAM B189 100C2 LINEAR B IDEOGRAM B190 100C3 LINEAR B IDEOGRAM B191 HELMET 100C4 LINEAR B IDEOGRAM B220 FOOTSTOOL 100C5 LINEAR B IDEOGRAM B225 BATHTUB 100C6 LINEAR B IDEOGRAM B230 SPEAR 100C7 LINEAR B IDEOGRAM B231 ARROW 100C8 LINEAR B IDEOGRAM B232 100C9 LINEAR B IDEOGRAM B233 SWORD = pugio 100CA LINEAR B IDEOGRAM B234 100CB LINEAR B IDEOGRAM B236 = "gupio", inverted sword 100CC LINEAR B IDEOGRAM B240 WHEELED CHARIOT 100CD LINEAR B IDEOGRAM B241 CHARIOT 100CE LINEAR B IDEOGRAM B242 CHARIOT FRAME 100CF LINEAR B IDEOGRAM B243 WHEEL 100D0 LINEAR B IDEOGRAM B245 100D1 LINEAR B IDEOGRAM B246 100D2 LINEAR B MONOGRAM B247 DIPTE 100D3 LINEAR B IDEOGRAM B248 100D4 LINEAR B IDEOGRAM B249 100D5 LINEAR B IDEOGRAM B251 * the shape of this ideogram is only partially known 100D6 LINEAR B IDEOGRAM B252 * the shape of this ideogram is only partially known 100D7 LINEAR B IDEOGRAM B253 100D8 LINEAR B IDEOGRAM B254 DART 100D9 LINEAR B IDEOGRAM B255 100DA LINEAR B IDEOGRAM B256 100DB LINEAR B IDEOGRAM B257 100DC LINEAR B IDEOGRAM B258 100DD LINEAR B IDEOGRAM B259 @ Vessels 100DE LINEAR B IDEOGRAM VESSEL B155 100DF LINEAR B IDEOGRAM VESSEL B200 100E0 LINEAR B IDEOGRAM VESSEL B201 100E1 LINEAR B IDEOGRAM VESSEL B202 100E2 LINEAR B IDEOGRAM VESSEL B203 100E3 LINEAR B IDEOGRAM VESSEL B204 100E4 LINEAR B IDEOGRAM VESSEL B205 100E5 LINEAR B IDEOGRAM VESSEL B206 100E6 LINEAR B IDEOGRAM VESSEL B207 100E7 LINEAR B IDEOGRAM VESSEL B208 100E8 LINEAR B IDEOGRAM VESSEL B209 x (amphora - 1F3FA) 100E9 LINEAR B IDEOGRAM VESSEL B210 100EA LINEAR B IDEOGRAM VESSEL B211 100EB LINEAR B IDEOGRAM VESSEL B212 100EC LINEAR B IDEOGRAM VESSEL B213 100ED LINEAR B IDEOGRAM VESSEL B214 100EE LINEAR B IDEOGRAM VESSEL B215 100EF LINEAR B IDEOGRAM VESSEL B216 100F0 LINEAR B IDEOGRAM VESSEL B217 100F1 LINEAR B IDEOGRAM VESSEL B218 100F2 LINEAR B IDEOGRAM VESSEL B219 100F3 LINEAR B IDEOGRAM VESSEL B221 100F4 LINEAR B IDEOGRAM VESSEL B222 100F5 LINEAR B IDEOGRAM VESSEL B226 100F6 LINEAR B IDEOGRAM VESSEL B227 100F7 LINEAR B IDEOGRAM VESSEL B228 100F8 LINEAR B IDEOGRAM VESSEL B229 100F9 LINEAR B IDEOGRAM VESSEL B250 100FA LINEAR B IDEOGRAM VESSEL B305 * the shape of this ideogram is only partially known @@ 10100 Aegean Numbers 1013F @ Punctuation 10100 AEGEAN WORD SEPARATOR LINE 10101 AEGEAN WORD SEPARATOR DOT 10102 AEGEAN CHECK MARK @ Numbers 10107 AEGEAN NUMBER ONE 10108 AEGEAN NUMBER TWO 10109 AEGEAN NUMBER THREE 1010A AEGEAN NUMBER FOUR 1010B AEGEAN NUMBER FIVE 1010C AEGEAN NUMBER SIX 1010D AEGEAN NUMBER SEVEN 1010E AEGEAN NUMBER EIGHT 1010F AEGEAN NUMBER NINE 10110 AEGEAN NUMBER TEN 10111 AEGEAN NUMBER TWENTY 10112 AEGEAN NUMBER THIRTY 10113 AEGEAN NUMBER FORTY 10114 AEGEAN NUMBER FIFTY 10115 AEGEAN NUMBER SIXTY 10116 AEGEAN NUMBER SEVENTY 10117 AEGEAN NUMBER EIGHTY 10118 AEGEAN NUMBER NINETY 10119 AEGEAN NUMBER ONE HUNDRED 1011A AEGEAN NUMBER TWO HUNDRED 1011B AEGEAN NUMBER THREE HUNDRED 1011C AEGEAN NUMBER FOUR HUNDRED 1011D AEGEAN NUMBER FIVE HUNDRED 1011E AEGEAN NUMBER SIX HUNDRED 1011F AEGEAN NUMBER SEVEN HUNDRED 10120 AEGEAN NUMBER EIGHT HUNDRED 10121 AEGEAN NUMBER NINE HUNDRED 10122 AEGEAN NUMBER ONE THOUSAND 10123 AEGEAN NUMBER TWO THOUSAND 10124 AEGEAN NUMBER THREE THOUSAND 10125 AEGEAN NUMBER FOUR THOUSAND 10126 AEGEAN NUMBER FIVE THOUSAND 10127 AEGEAN NUMBER SIX THOUSAND 10128 AEGEAN NUMBER SEVEN THOUSAND 10129 AEGEAN NUMBER EIGHT THOUSAND 1012A AEGEAN NUMBER NINE THOUSAND 1012B AEGEAN NUMBER TEN THOUSAND 1012C AEGEAN NUMBER TWENTY THOUSAND 1012D AEGEAN NUMBER THIRTY THOUSAND 1012E AEGEAN NUMBER FORTY THOUSAND 1012F AEGEAN NUMBER FIFTY THOUSAND 10130 AEGEAN NUMBER SIXTY THOUSAND 10131 AEGEAN NUMBER SEVENTY THOUSAND 10132 AEGEAN NUMBER EIGHTY THOUSAND 10133 AEGEAN NUMBER NINETY THOUSAND @ Measures 10137 AEGEAN WEIGHT BASE UNIT 10138 AEGEAN WEIGHT FIRST SUBUNIT 10139 AEGEAN WEIGHT SECOND SUBUNIT 1013A AEGEAN WEIGHT THIRD SUBUNIT 1013B AEGEAN WEIGHT FOURTH SUBUNIT 1013C AEGEAN DRY MEASURE FIRST SUBUNIT 1013D AEGEAN LIQUID MEASURE FIRST SUBUNIT 1013E AEGEAN MEASURE SECOND SUBUNIT 1013F AEGEAN MEASURE THIRD SUBUNIT @@ 10140 Ancient Greek Numbers 1018F @ Ancient Greek acrophonic numerals @+ These are shown as sans-serif forms because that corresponds more closely to their appearance in ancient texts. 10140 GREEK ACROPHONIC ATTIC ONE QUARTER 10141 GREEK ACROPHONIC ATTIC ONE HALF 10142 GREEK ACROPHONIC ATTIC ONE DRACHMA 10143 GREEK ACROPHONIC ATTIC FIVE 10144 GREEK ACROPHONIC ATTIC FIFTY 10145 GREEK ACROPHONIC ATTIC FIVE HUNDRED 10146 GREEK ACROPHONIC ATTIC FIVE THOUSAND 10147 GREEK ACROPHONIC ATTIC FIFTY THOUSAND 10148 GREEK ACROPHONIC ATTIC FIVE TALENTS 10149 GREEK ACROPHONIC ATTIC TEN TALENTS 1014A GREEK ACROPHONIC ATTIC FIFTY TALENTS 1014B GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS 1014C GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS 1014D GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS 1014E GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS 1014F GREEK ACROPHONIC ATTIC FIVE STATERS 10150 GREEK ACROPHONIC ATTIC TEN STATERS 10151 GREEK ACROPHONIC ATTIC FIFTY STATERS 10152 GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS 10153 GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS 10154 GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS 10155 GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS 10156 GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS 10157 GREEK ACROPHONIC ATTIC TEN MNAS 10158 GREEK ACROPHONIC HERAEUM ONE PLETHRON 10159 GREEK ACROPHONIC THESPIAN ONE 1015A GREEK ACROPHONIC HERMIONIAN ONE 1015B GREEK ACROPHONIC EPIDAUREAN TWO x (two dot punctuation - 205A) 1015C GREEK ACROPHONIC THESPIAN TWO 1015D GREEK ACROPHONIC CYRENAIC TWO DRACHMAS 1015E GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS * top line is at cap height, unlike 10111 x (aegean number twenty - 10111) 1015F GREEK ACROPHONIC TROEZENIAN FIVE 10160 GREEK ACROPHONIC TROEZENIAN TEN 10161 GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM 10162 GREEK ACROPHONIC HERMIONIAN TEN 10163 GREEK ACROPHONIC MESSENIAN TEN 10164 GREEK ACROPHONIC THESPIAN TEN 10165 GREEK ACROPHONIC THESPIAN THIRTY 10166 GREEK ACROPHONIC TROEZENIAN FIFTY 10167 GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM 10168 GREEK ACROPHONIC HERMIONIAN FIFTY 10169 GREEK ACROPHONIC THESPIAN FIFTY 1016A GREEK ACROPHONIC THESPIAN ONE HUNDRED 1016B GREEK ACROPHONIC THESPIAN THREE HUNDRED 1016C GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED 1016D GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED 1016E GREEK ACROPHONIC THESPIAN FIVE HUNDRED 1016F GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED 10170 GREEK ACROPHONIC NAXIAN FIVE HUNDRED 10171 GREEK ACROPHONIC THESPIAN ONE THOUSAND 10172 GREEK ACROPHONIC THESPIAN FIVE THOUSAND 10173 GREEK ACROPHONIC DELPHIC FIVE MNAS 10174 GREEK ACROPHONIC STRATIAN FIFTY MNAS @ Ancient Greek papyrological numbers 10175 GREEK ONE HALF SIGN 10176 GREEK ONE HALF SIGN ALTERNATE FORM 10177 GREEK TWO THIRDS SIGN 10178 GREEK THREE QUARTERS SIGN 10179 GREEK YEAR SIGN 1017A GREEK TALENT SIGN 1017B GREEK DRACHMA SIGN 1017C GREEK OBOL SIGN 1017D GREEK TWO OBOLS SIGN 1017E GREEK THREE OBOLS SIGN 1017F GREEK FOUR OBOLS SIGN 10180 GREEK FIVE OBOLS SIGN 10181 GREEK METRETES SIGN 10182 GREEK KYATHOS BASE SIGN 10183 GREEK LITRA SIGN 10184 GREEK OUNKIA SIGN 10185 GREEK XESTES SIGN 10186 GREEK ARTABE SIGN 10187 GREEK AROURA SIGN 10188 GREEK GRAMMA SIGN 10189 GREEK TRYBLION BASE SIGN 1018A GREEK ZERO SIGN 1018B GREEK ONE QUARTER SIGN @ Ancient Greek symbols 1018C GREEK SINUSOID SIGN * designates year 1018D GREEK INDICTION SIGN * timekeeping 1018E NOMISMA SIGN * currency sign and marker of weight @@ 10190 Ancient Symbols 101CF @ Roman weights and measures 10190 ROMAN SEXTANS SIGN x (equals sign - 003D) 10191 ROMAN UNCIA SIGN x (hyphen-minus - 002D) 10192 ROMAN SEMUNCIA SIGN x (pound sign - 00A3) 10193 ROMAN SEXTULA SIGN x (cyrillic capital letter reversed dze - A644) 10194 ROMAN DIMIDIA SEXTULA SIGN 10195 ROMAN SILIQUA SIGN @ Roman coin symbols 10196 ROMAN DENARIUS SIGN 10197 ROMAN QUINARIUS SIGN 10198 ROMAN SESTERTIUS SIGN 10199 ROMAN DUPONDIUS SIGN 1019A ROMAN AS SIGN x (apl functional symbol slash bar - 233F) @ Roman military symbol 1019B ROMAN CENTURIAL SIGN @ Greek symbol 101A0 GREEK SYMBOL TAU RHO = rho-cross, staurogram x (chi rho - 2627) x (coptic symbol tau ro - 2CE8) @@ 101D0 Phaistos Disc 101FF @+ The characters in this block can be used to represent the signs found on the undeciphered Phaistos Disc. @ Signs 101D0 PHAISTOS DISC SIGN PEDESTRIAN 101D1 PHAISTOS DISC SIGN PLUMED HEAD 101D2 PHAISTOS DISC SIGN TATTOOED HEAD 101D3 PHAISTOS DISC SIGN CAPTIVE 101D4 PHAISTOS DISC SIGN CHILD 101D5 PHAISTOS DISC SIGN WOMAN 101D6 PHAISTOS DISC SIGN HELMET 101D7 PHAISTOS DISC SIGN GAUNTLET 101D8 PHAISTOS DISC SIGN TIARA 101D9 PHAISTOS DISC SIGN ARROW 101DA PHAISTOS DISC SIGN BOW 101DB PHAISTOS DISC SIGN SHIELD 101DC PHAISTOS DISC SIGN CLUB 101DD PHAISTOS DISC SIGN MANACLES 101DE PHAISTOS DISC SIGN MATTOCK 101DF PHAISTOS DISC SIGN SAW 101E0 PHAISTOS DISC SIGN LID 101E1 PHAISTOS DISC SIGN BOOMERANG 101E2 PHAISTOS DISC SIGN CARPENTRY PLANE 101E3 PHAISTOS DISC SIGN DOLIUM 101E4 PHAISTOS DISC SIGN COMB 101E5 PHAISTOS DISC SIGN SLING 101E6 PHAISTOS DISC SIGN COLUMN 101E7 PHAISTOS DISC SIGN BEEHIVE 101E8 PHAISTOS DISC SIGN SHIP 101E9 PHAISTOS DISC SIGN HORN 101EA PHAISTOS DISC SIGN HIDE 101EB PHAISTOS DISC SIGN BULLS LEG 101EC PHAISTOS DISC SIGN CAT 101ED PHAISTOS DISC SIGN RAM 101EE PHAISTOS DISC SIGN EAGLE 101EF PHAISTOS DISC SIGN DOVE 101F0 PHAISTOS DISC SIGN TUNNY 101F1 PHAISTOS DISC SIGN BEE 101F2 PHAISTOS DISC SIGN PLANE TREE 101F3 PHAISTOS DISC SIGN VINE 101F4 PHAISTOS DISC SIGN PAPYRUS 101F5 PHAISTOS DISC SIGN ROSETTE 101F6 PHAISTOS DISC SIGN LILY 101F7 PHAISTOS DISC SIGN OX BACK 101F8 PHAISTOS DISC SIGN FLUTE 101F9 PHAISTOS DISC SIGN GRATER 101FA PHAISTOS DISC SIGN STRAINER 101FB PHAISTOS DISC SIGN SMALL AXE 101FC PHAISTOS DISC SIGN WAVY BAND @ Combining stroke 101FD PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE @@ 10280 Lycian 1029F @ Letters 10280 LYCIAN LETTER A 10281 LYCIAN LETTER E 10282 LYCIAN LETTER B 10283 LYCIAN LETTER BH 10284 LYCIAN LETTER G 10285 LYCIAN LETTER D 10286 LYCIAN LETTER I 10287 LYCIAN LETTER W 10288 LYCIAN LETTER Z 10289 LYCIAN LETTER TH 1028A LYCIAN LETTER J 1028B LYCIAN LETTER K 1028C LYCIAN LETTER Q 1028D LYCIAN LETTER L 1028E LYCIAN LETTER M 1028F LYCIAN LETTER N 10290 LYCIAN LETTER MM 10291 LYCIAN LETTER NN 10292 LYCIAN LETTER U 10293 LYCIAN LETTER P 10294 LYCIAN LETTER KK 10295 LYCIAN LETTER R 10296 LYCIAN LETTER S 10297 LYCIAN LETTER T 10298 LYCIAN LETTER TT 10299 LYCIAN LETTER AN 1029A LYCIAN LETTER EN 1029B LYCIAN LETTER H 1029C LYCIAN LETTER X @@ 102A0 Carian 102DF @ Letters 102A0 CARIAN LETTER A 102A1 CARIAN LETTER P2 102A2 CARIAN LETTER D 102A3 CARIAN LETTER L 102A4 CARIAN LETTER UUU 102A5 CARIAN LETTER R 102A6 CARIAN LETTER LD 102A7 CARIAN LETTER A2 102A8 CARIAN LETTER Q 102A9 CARIAN LETTER B 102AA CARIAN LETTER M 102AB CARIAN LETTER O 102AC CARIAN LETTER D2 102AD CARIAN LETTER T 102AE CARIAN LETTER SH 102AF CARIAN LETTER SH2 102B0 CARIAN LETTER S 102B1 CARIAN LETTER C-18 102B2 CARIAN LETTER U 102B3 CARIAN LETTER NN 102B4 CARIAN LETTER X 102B5 CARIAN LETTER N 102B6 CARIAN LETTER TT2 102B7 CARIAN LETTER P 102B8 CARIAN LETTER SS 102B9 CARIAN LETTER I 102BA CARIAN LETTER E 102BB CARIAN LETTER UUUU 102BC CARIAN LETTER K 102BD CARIAN LETTER K2 102BE CARIAN LETTER ND 102BF CARIAN LETTER UU 102C0 CARIAN LETTER G 102C1 CARIAN LETTER G2 102C2 CARIAN LETTER ST 102C3 CARIAN LETTER ST2 102C4 CARIAN LETTER NG 102C5 CARIAN LETTER II 102C6 CARIAN LETTER C-39 102C7 CARIAN LETTER TT 102C8 CARIAN LETTER UUU2 102C9 CARIAN LETTER RR 102CA CARIAN LETTER MB 102CB CARIAN LETTER MB2 102CC CARIAN LETTER MB3 102CD CARIAN LETTER MB4 102CE CARIAN LETTER LD2 102CF CARIAN LETTER E2 102D0 CARIAN LETTER UUU3 @@ 102E0 Coptic Epact Numbers 102FF @ Sign 102E0 COPTIC EPACT THOUSANDS MARK @ Digits 102E1 COPTIC EPACT DIGIT ONE 102E2 COPTIC EPACT DIGIT TWO 102E3 COPTIC EPACT DIGIT THREE 102E4 COPTIC EPACT DIGIT FOUR 102E5 COPTIC EPACT DIGIT FIVE 102E6 COPTIC EPACT DIGIT SIX 102E7 COPTIC EPACT DIGIT SEVEN 102E8 COPTIC EPACT DIGIT EIGHT 102E9 COPTIC EPACT DIGIT NINE @ Numbers 102EA COPTIC EPACT NUMBER TEN 102EB COPTIC EPACT NUMBER TWENTY 102EC COPTIC EPACT NUMBER THIRTY 102ED COPTIC EPACT NUMBER FORTY 102EE COPTIC EPACT NUMBER FIFTY 102EF COPTIC EPACT NUMBER SIXTY 102F0 COPTIC EPACT NUMBER SEVENTY 102F1 COPTIC EPACT NUMBER EIGHTY 102F2 COPTIC EPACT NUMBER NINETY 102F3 COPTIC EPACT NUMBER ONE HUNDRED 102F4 COPTIC EPACT NUMBER TWO HUNDRED 102F5 COPTIC EPACT NUMBER THREE HUNDRED 102F6 COPTIC EPACT NUMBER FOUR HUNDRED 102F7 COPTIC EPACT NUMBER FIVE HUNDRED 102F8 COPTIC EPACT NUMBER SIX HUNDRED 102F9 COPTIC EPACT NUMBER SEVEN HUNDRED 102FA COPTIC EPACT NUMBER EIGHT HUNDRED 102FB COPTIC EPACT NUMBER NINE HUNDRED @@ 10300 Old Italic 1032F @ Letters 10300 OLD ITALIC LETTER A 10301 OLD ITALIC LETTER BE 10302 OLD ITALIC LETTER KE 10303 OLD ITALIC LETTER DE 10304 OLD ITALIC LETTER E 10305 OLD ITALIC LETTER VE 10306 OLD ITALIC LETTER ZE 10307 OLD ITALIC LETTER HE 10308 OLD ITALIC LETTER THE 10309 OLD ITALIC LETTER I 1030A OLD ITALIC LETTER KA 1030B OLD ITALIC LETTER EL 1030C OLD ITALIC LETTER EM 1030D OLD ITALIC LETTER EN 1030E OLD ITALIC LETTER ESH 1030F OLD ITALIC LETTER O * Faliscan 10310 OLD ITALIC LETTER PE 10311 OLD ITALIC LETTER SHE 10312 OLD ITALIC LETTER KU 10313 OLD ITALIC LETTER ER 10314 OLD ITALIC LETTER ES 10315 OLD ITALIC LETTER TE 10316 OLD ITALIC LETTER U 10317 OLD ITALIC LETTER EKS * Faliscan 10318 OLD ITALIC LETTER PHE 10319 OLD ITALIC LETTER KHE 1031A OLD ITALIC LETTER EF @ Umbrian letters 1031B OLD ITALIC LETTER ERS 1031C OLD ITALIC LETTER CHE @ Oscan letters 1031D OLD ITALIC LETTER II 1031E OLD ITALIC LETTER UU @ South Picene letter 1031F OLD ITALIC LETTER ESS @ Numerals 10320 OLD ITALIC NUMERAL ONE 10321 OLD ITALIC NUMERAL FIVE 10322 OLD ITALIC NUMERAL TEN 10323 OLD ITALIC NUMERAL FIFTY @@ 10330 Gothic 1034F @ Letters 10330 GOTHIC LETTER AHSA 10331 GOTHIC LETTER BAIRKAN 10332 GOTHIC LETTER GIBA 10333 GOTHIC LETTER DAGS 10334 GOTHIC LETTER AIHVUS 10335 GOTHIC LETTER QAIRTHRA 10336 GOTHIC LETTER IUJA 10337 GOTHIC LETTER HAGL 10338 GOTHIC LETTER THIUTH 10339 GOTHIC LETTER EIS 1033A GOTHIC LETTER KUSMA 1033B GOTHIC LETTER LAGUS 1033C GOTHIC LETTER MANNA 1033D GOTHIC LETTER NAUTHS 1033E GOTHIC LETTER JER 1033F GOTHIC LETTER URUS 10340 GOTHIC LETTER PAIRTHRA 10341 GOTHIC LETTER NINETY 10342 GOTHIC LETTER RAIDA 10343 GOTHIC LETTER SAUIL 10344 GOTHIC LETTER TEIWS 10345 GOTHIC LETTER WINJA 10346 GOTHIC LETTER FAIHU 10347 GOTHIC LETTER IGGWS 10348 GOTHIC LETTER HWAIR 10349 GOTHIC LETTER OTHAL 1034A GOTHIC LETTER NINE HUNDRED @@ 10350 Old Permic 1037F @ Letters 10350 OLD PERMIC LETTER AN 10351 OLD PERMIC LETTER BUR 10352 OLD PERMIC LETTER GAI 10353 OLD PERMIC LETTER DOI 10354 OLD PERMIC LETTER E 10355 OLD PERMIC LETTER ZHOI 10356 OLD PERMIC LETTER DZHOI 10357 OLD PERMIC LETTER ZATA 10358 OLD PERMIC LETTER DZITA 10359 OLD PERMIC LETTER I 1035A OLD PERMIC LETTER KOKE 1035B OLD PERMIC LETTER LEI 1035C OLD PERMIC LETTER MENOE 1035D OLD PERMIC LETTER NENOE 1035E OLD PERMIC LETTER VOOI 1035F OLD PERMIC LETTER PEEI 10360 OLD PERMIC LETTER REI 10361 OLD PERMIC LETTER SII 10362 OLD PERMIC LETTER TAI 10363 OLD PERMIC LETTER U 10364 OLD PERMIC LETTER CHERY 10365 OLD PERMIC LETTER SHOOI 10366 OLD PERMIC LETTER SHCHOOI 10367 OLD PERMIC LETTER YRY 10368 OLD PERMIC LETTER YERU 10369 OLD PERMIC LETTER O 1036A OLD PERMIC LETTER OO 1036B OLD PERMIC LETTER EF 1036C OLD PERMIC LETTER HA 1036D OLD PERMIC LETTER TSIU 1036E OLD PERMIC LETTER VER 1036F OLD PERMIC LETTER YER 10370 OLD PERMIC LETTER YERI 10371 OLD PERMIC LETTER YAT 10372 OLD PERMIC LETTER IE 10373 OLD PERMIC LETTER YU 10374 OLD PERMIC LETTER YA 10375 OLD PERMIC LETTER IA @ Combining letters 10376 COMBINING OLD PERMIC LETTER AN 10377 COMBINING OLD PERMIC LETTER DOI 10378 COMBINING OLD PERMIC LETTER ZATA 10379 COMBINING OLD PERMIC LETTER NENOE 1037A COMBINING OLD PERMIC LETTER SII @@ 10380 Ugaritic 1039F @ Letters 10380 UGARITIC LETTER ALPA 10381 UGARITIC LETTER BETA 10382 UGARITIC LETTER GAMLA 10383 UGARITIC LETTER KHA 10384 UGARITIC LETTER DELTA 10385 UGARITIC LETTER HO 10386 UGARITIC LETTER WO 10387 UGARITIC LETTER ZETA 10388 UGARITIC LETTER HOTA 10389 UGARITIC LETTER TET 1038A UGARITIC LETTER YOD 1038B UGARITIC LETTER KAF 1038C UGARITIC LETTER SHIN 1038D UGARITIC LETTER LAMDA 1038E UGARITIC LETTER MEM 1038F UGARITIC LETTER DHAL 10390 UGARITIC LETTER NUN 10391 UGARITIC LETTER ZU 10392 UGARITIC LETTER SAMKA 10393 UGARITIC LETTER AIN 10394 UGARITIC LETTER PU 10395 UGARITIC LETTER SADE 10396 UGARITIC LETTER QOPA 10397 UGARITIC LETTER RASHA 10398 UGARITIC LETTER THANNA 10399 UGARITIC LETTER GHAIN 1039A UGARITIC LETTER TO 1039B UGARITIC LETTER I 1039C UGARITIC LETTER U 1039D UGARITIC LETTER SSU @ Punctuation 1039F UGARITIC WORD DIVIDER @@ 103A0 Old Persian 103DF @ Independent vowels 103A0 OLD PERSIAN SIGN A 103A1 OLD PERSIAN SIGN I 103A2 OLD PERSIAN SIGN U @ Consonants 103A3 OLD PERSIAN SIGN KA 103A4 OLD PERSIAN SIGN KU 103A5 OLD PERSIAN SIGN GA 103A6 OLD PERSIAN SIGN GU 103A7 OLD PERSIAN SIGN XA 103A8 OLD PERSIAN SIGN CA 103A9 OLD PERSIAN SIGN JA 103AA OLD PERSIAN SIGN JI 103AB OLD PERSIAN SIGN TA 103AC OLD PERSIAN SIGN TU 103AD OLD PERSIAN SIGN DA 103AE OLD PERSIAN SIGN DI 103AF OLD PERSIAN SIGN DU 103B0 OLD PERSIAN SIGN THA 103B1 OLD PERSIAN SIGN PA 103B2 OLD PERSIAN SIGN BA 103B3 OLD PERSIAN SIGN FA 103B4 OLD PERSIAN SIGN NA 103B5 OLD PERSIAN SIGN NU 103B6 OLD PERSIAN SIGN MA 103B7 OLD PERSIAN SIGN MI 103B8 OLD PERSIAN SIGN MU 103B9 OLD PERSIAN SIGN YA 103BA OLD PERSIAN SIGN VA 103BB OLD PERSIAN SIGN VI 103BC OLD PERSIAN SIGN RA 103BD OLD PERSIAN SIGN RU 103BE OLD PERSIAN SIGN LA 103BF OLD PERSIAN SIGN SA 103C0 OLD PERSIAN SIGN ZA 103C1 OLD PERSIAN SIGN SHA 103C2 OLD PERSIAN SIGN SSA 103C3 OLD PERSIAN SIGN HA @ Various signs 103C8 OLD PERSIAN SIGN AURAMAZDAA 103C9 OLD PERSIAN SIGN AURAMAZDAA-2 103CA OLD PERSIAN SIGN AURAMAZDAAHA 103CB OLD PERSIAN SIGN XSHAAYATHIYA 103CC OLD PERSIAN SIGN DAHYAAUSH 103CD OLD PERSIAN SIGN DAHYAAUSH-2 103CE OLD PERSIAN SIGN BAGA 103CF OLD PERSIAN SIGN BUUMISH @ Punctuation 103D0 OLD PERSIAN WORD DIVIDER @ Numbers 103D1 OLD PERSIAN NUMBER ONE 103D2 OLD PERSIAN NUMBER TWO 103D3 OLD PERSIAN NUMBER TEN 103D4 OLD PERSIAN NUMBER TWENTY 103D5 OLD PERSIAN NUMBER HUNDRED @@ 10400 Deseret 1044F @ Uppercase letters 10400 DESERET CAPITAL LETTER LONG I 10401 DESERET CAPITAL LETTER LONG E 10402 DESERET CAPITAL LETTER LONG A 10403 DESERET CAPITAL LETTER LONG AH 10404 DESERET CAPITAL LETTER LONG O 10405 DESERET CAPITAL LETTER LONG OO 10406 DESERET CAPITAL LETTER SHORT I 10407 DESERET CAPITAL LETTER SHORT E 10408 DESERET CAPITAL LETTER SHORT A 10409 DESERET CAPITAL LETTER SHORT AH 1040A DESERET CAPITAL LETTER SHORT O 1040B DESERET CAPITAL LETTER SHORT OO 1040C DESERET CAPITAL LETTER AY 1040D DESERET CAPITAL LETTER OW 1040E DESERET CAPITAL LETTER WU 1040F DESERET CAPITAL LETTER YEE 10410 DESERET CAPITAL LETTER H 10411 DESERET CAPITAL LETTER PEE 10412 DESERET CAPITAL LETTER BEE 10413 DESERET CAPITAL LETTER TEE 10414 DESERET CAPITAL LETTER DEE 10415 DESERET CAPITAL LETTER CHEE 10416 DESERET CAPITAL LETTER JEE 10417 DESERET CAPITAL LETTER KAY 10418 DESERET CAPITAL LETTER GAY 10419 DESERET CAPITAL LETTER EF 1041A DESERET CAPITAL LETTER VEE 1041B DESERET CAPITAL LETTER ETH 1041C DESERET CAPITAL LETTER THEE 1041D DESERET CAPITAL LETTER ES 1041E DESERET CAPITAL LETTER ZEE 1041F DESERET CAPITAL LETTER ESH 10420 DESERET CAPITAL LETTER ZHEE 10421 DESERET CAPITAL LETTER ER 10422 DESERET CAPITAL LETTER EL 10423 DESERET CAPITAL LETTER EM 10424 DESERET CAPITAL LETTER EN 10425 DESERET CAPITAL LETTER ENG 10426 DESERET CAPITAL LETTER OI 10427 DESERET CAPITAL LETTER EW @ Lowercase letters 10428 DESERET SMALL LETTER LONG I 10429 DESERET SMALL LETTER LONG E 1042A DESERET SMALL LETTER LONG A 1042B DESERET SMALL LETTER LONG AH 1042C DESERET SMALL LETTER LONG O 1042D DESERET SMALL LETTER LONG OO 1042E DESERET SMALL LETTER SHORT I 1042F DESERET SMALL LETTER SHORT E 10430 DESERET SMALL LETTER SHORT A 10431 DESERET SMALL LETTER SHORT AH 10432 DESERET SMALL LETTER SHORT O 10433 DESERET SMALL LETTER SHORT OO 10434 DESERET SMALL LETTER AY 10435 DESERET SMALL LETTER OW 10436 DESERET SMALL LETTER WU 10437 DESERET SMALL LETTER YEE 10438 DESERET SMALL LETTER H 10439 DESERET SMALL LETTER PEE 1043A DESERET SMALL LETTER BEE 1043B DESERET SMALL LETTER TEE 1043C DESERET SMALL LETTER DEE 1043D DESERET SMALL LETTER CHEE 1043E DESERET SMALL LETTER JEE 1043F DESERET SMALL LETTER KAY 10440 DESERET SMALL LETTER GAY 10441 DESERET SMALL LETTER EF 10442 DESERET SMALL LETTER VEE 10443 DESERET SMALL LETTER ETH 10444 DESERET SMALL LETTER THEE 10445 DESERET SMALL LETTER ES 10446 DESERET SMALL LETTER ZEE 10447 DESERET SMALL LETTER ESH 10448 DESERET SMALL LETTER ZHEE 10449 DESERET SMALL LETTER ER 1044A DESERET SMALL LETTER EL 1044B DESERET SMALL LETTER EM 1044C DESERET SMALL LETTER EN 1044D DESERET SMALL LETTER ENG 1044E DESERET SMALL LETTER OI 1044F DESERET SMALL LETTER EW @@ 10450 Shavian 1047F @ Consonants 10450 SHAVIAN LETTER PEEP 10451 SHAVIAN LETTER TOT 10452 SHAVIAN LETTER KICK 10453 SHAVIAN LETTER FEE 10454 SHAVIAN LETTER THIGH 10455 SHAVIAN LETTER SO 10456 SHAVIAN LETTER SURE 10457 SHAVIAN LETTER CHURCH 10458 SHAVIAN LETTER YEA 10459 SHAVIAN LETTER HUNG 1045A SHAVIAN LETTER BIB 1045B SHAVIAN LETTER DEAD 1045C SHAVIAN LETTER GAG 1045D SHAVIAN LETTER VOW 1045E SHAVIAN LETTER THEY 1045F SHAVIAN LETTER ZOO 10460 SHAVIAN LETTER MEASURE 10461 SHAVIAN LETTER JUDGE 10462 SHAVIAN LETTER WOE 10463 SHAVIAN LETTER HA-HA 10464 SHAVIAN LETTER LOLL 10465 SHAVIAN LETTER MIME @ Vowels 10466 SHAVIAN LETTER IF 10467 SHAVIAN LETTER EGG 10468 SHAVIAN LETTER ASH 10469 SHAVIAN LETTER ADO 1046A SHAVIAN LETTER ON 1046B SHAVIAN LETTER WOOL 1046C SHAVIAN LETTER OUT 1046D SHAVIAN LETTER AH 1046E SHAVIAN LETTER ROAR 1046F SHAVIAN LETTER NUN 10470 SHAVIAN LETTER EAT 10471 SHAVIAN LETTER AGE 10472 SHAVIAN LETTER ICE 10473 SHAVIAN LETTER UP 10474 SHAVIAN LETTER OAK 10475 SHAVIAN LETTER OOZE 10476 SHAVIAN LETTER OIL 10477 SHAVIAN LETTER AWE 10478 SHAVIAN LETTER ARE 10479 SHAVIAN LETTER OR 1047A SHAVIAN LETTER AIR 1047B SHAVIAN LETTER ERR 1047C SHAVIAN LETTER ARRAY 1047D SHAVIAN LETTER EAR 1047E SHAVIAN LETTER IAN 1047F SHAVIAN LETTER YEW @@ 10480 Osmanya 104AF @ Letters 10480 OSMANYA LETTER ALEF 10481 OSMANYA LETTER BA 10482 OSMANYA LETTER TA 10483 OSMANYA LETTER JA 10484 OSMANYA LETTER XA 10485 OSMANYA LETTER KHA 10486 OSMANYA LETTER DEEL 10487 OSMANYA LETTER RA 10488 OSMANYA LETTER SA 10489 OSMANYA LETTER SHIIN 1048A OSMANYA LETTER DHA 1048B OSMANYA LETTER CAYN 1048C OSMANYA LETTER GA 1048D OSMANYA LETTER FA 1048E OSMANYA LETTER QAAF 1048F OSMANYA LETTER KAAF 10490 OSMANYA LETTER LAAN 10491 OSMANYA LETTER MIIN 10492 OSMANYA LETTER NUUN 10493 OSMANYA LETTER WAW 10494 OSMANYA LETTER HA 10495 OSMANYA LETTER YA 10496 OSMANYA LETTER A 10497 OSMANYA LETTER E 10498 OSMANYA LETTER I 10499 OSMANYA LETTER O 1049A OSMANYA LETTER U 1049B OSMANYA LETTER AA 1049C OSMANYA LETTER EE 1049D OSMANYA LETTER OO @ Digits 104A0 OSMANYA DIGIT ZERO 104A1 OSMANYA DIGIT ONE 104A2 OSMANYA DIGIT TWO 104A3 OSMANYA DIGIT THREE 104A4 OSMANYA DIGIT FOUR 104A5 OSMANYA DIGIT FIVE 104A6 OSMANYA DIGIT SIX 104A7 OSMANYA DIGIT SEVEN 104A8 OSMANYA DIGIT EIGHT 104A9 OSMANYA DIGIT NINE @@ 104B0 Osage 104FF @ Uppercase letters 104B0 OSAGE CAPITAL LETTER A 104B1 OSAGE CAPITAL LETTER AI 104B2 OSAGE CAPITAL LETTER AIN 104B3 OSAGE CAPITAL LETTER AH 104B4 OSAGE CAPITAL LETTER BRA 104B5 OSAGE CAPITAL LETTER CHA 104B6 OSAGE CAPITAL LETTER EHCHA 104B7 OSAGE CAPITAL LETTER E 104B8 OSAGE CAPITAL LETTER EIN 104B9 OSAGE CAPITAL LETTER HA 104BA OSAGE CAPITAL LETTER HYA 104BB OSAGE CAPITAL LETTER I 104BC OSAGE CAPITAL LETTER KA 104BD OSAGE CAPITAL LETTER EHKA 104BE OSAGE CAPITAL LETTER KYA 104BF OSAGE CAPITAL LETTER LA 104C0 OSAGE CAPITAL LETTER MA 104C1 OSAGE CAPITAL LETTER NA 104C2 OSAGE CAPITAL LETTER O 104C3 OSAGE CAPITAL LETTER OIN 104C4 OSAGE CAPITAL LETTER PA 104C5 OSAGE CAPITAL LETTER EHPA 104C6 OSAGE CAPITAL LETTER SA 104C7 OSAGE CAPITAL LETTER SHA 104C8 OSAGE CAPITAL LETTER TA 104C9 OSAGE CAPITAL LETTER EHTA 104CA OSAGE CAPITAL LETTER TSA 104CB OSAGE CAPITAL LETTER EHTSA 104CC OSAGE CAPITAL LETTER TSHA 104CD OSAGE CAPITAL LETTER DHA 104CE OSAGE CAPITAL LETTER U 104CF OSAGE CAPITAL LETTER WA 104D0 OSAGE CAPITAL LETTER KHA 104D1 OSAGE CAPITAL LETTER GHA 104D2 OSAGE CAPITAL LETTER ZA 104D3 OSAGE CAPITAL LETTER ZHA @ Lowercase letters 104D8 OSAGE SMALL LETTER A 104D9 OSAGE SMALL LETTER AI 104DA OSAGE SMALL LETTER AIN 104DB OSAGE SMALL LETTER AH 104DC OSAGE SMALL LETTER BRA 104DD OSAGE SMALL LETTER CHA 104DE OSAGE SMALL LETTER EHCHA 104DF OSAGE SMALL LETTER E 104E0 OSAGE SMALL LETTER EIN 104E1 OSAGE SMALL LETTER HA 104E2 OSAGE SMALL LETTER HYA 104E3 OSAGE SMALL LETTER I 104E4 OSAGE SMALL LETTER KA 104E5 OSAGE SMALL LETTER EHKA 104E6 OSAGE SMALL LETTER KYA 104E7 OSAGE SMALL LETTER LA 104E8 OSAGE SMALL LETTER MA 104E9 OSAGE SMALL LETTER NA 104EA OSAGE SMALL LETTER O 104EB OSAGE SMALL LETTER OIN 104EC OSAGE SMALL LETTER PA 104ED OSAGE SMALL LETTER EHPA 104EE OSAGE SMALL LETTER SA 104EF OSAGE SMALL LETTER SHA 104F0 OSAGE SMALL LETTER TA 104F1 OSAGE SMALL LETTER EHTA 104F2 OSAGE SMALL LETTER TSA 104F3 OSAGE SMALL LETTER EHTSA 104F4 OSAGE SMALL LETTER TSHA 104F5 OSAGE SMALL LETTER DHA 104F6 OSAGE SMALL LETTER U 104F7 OSAGE SMALL LETTER WA 104F8 OSAGE SMALL LETTER KHA 104F9 OSAGE SMALL LETTER GHA 104FA OSAGE SMALL LETTER ZA 104FB OSAGE SMALL LETTER ZHA @@ 10500 Elbasan 1052F @ Letters 10500 ELBASAN LETTER A 10501 ELBASAN LETTER BE 10502 ELBASAN LETTER CE 10503 ELBASAN LETTER CHE 10504 ELBASAN LETTER DE 10505 ELBASAN LETTER NDE 10506 ELBASAN LETTER DHE 10507 ELBASAN LETTER EI 10508 ELBASAN LETTER E 10509 ELBASAN LETTER FE 1050A ELBASAN LETTER GE 1050B ELBASAN LETTER GJE 1050C ELBASAN LETTER HE 1050D ELBASAN LETTER I 1050E ELBASAN LETTER JE 1050F ELBASAN LETTER KE 10510 ELBASAN LETTER LE 10511 ELBASAN LETTER LLE 10512 ELBASAN LETTER ME 10513 ELBASAN LETTER NE 10514 ELBASAN LETTER NA 10515 ELBASAN LETTER NJE 10516 ELBASAN LETTER O 10517 ELBASAN LETTER PE 10518 ELBASAN LETTER QE 10519 ELBASAN LETTER RE 1051A ELBASAN LETTER RRE 1051B ELBASAN LETTER SE 1051C ELBASAN LETTER SHE 1051D ELBASAN LETTER TE 1051E ELBASAN LETTER THE 1051F ELBASAN LETTER U 10520 ELBASAN LETTER VE 10521 ELBASAN LETTER XE 10522 ELBASAN LETTER Y 10523 ELBASAN LETTER ZE 10524 ELBASAN LETTER ZHE 10525 ELBASAN LETTER GHE 10526 ELBASAN LETTER GHAMMA 10527 ELBASAN LETTER KHE @@ 10530 Caucasian Albanian 1056F @ Letters 10530 CAUCASIAN ALBANIAN LETTER ALT 10531 CAUCASIAN ALBANIAN LETTER BET 10532 CAUCASIAN ALBANIAN LETTER GIM 10533 CAUCASIAN ALBANIAN LETTER DAT 10534 CAUCASIAN ALBANIAN LETTER EB 10535 CAUCASIAN ALBANIAN LETTER ZARL 10536 CAUCASIAN ALBANIAN LETTER EYN 10537 CAUCASIAN ALBANIAN LETTER ZHIL 10538 CAUCASIAN ALBANIAN LETTER TAS 10539 CAUCASIAN ALBANIAN LETTER CHA 1053A CAUCASIAN ALBANIAN LETTER YOWD 1053B CAUCASIAN ALBANIAN LETTER ZHA 1053C CAUCASIAN ALBANIAN LETTER IRB 1053D CAUCASIAN ALBANIAN LETTER SHA 1053E CAUCASIAN ALBANIAN LETTER LAN 1053F CAUCASIAN ALBANIAN LETTER INYA 10540 CAUCASIAN ALBANIAN LETTER XEYN 10541 CAUCASIAN ALBANIAN LETTER DYAN 10542 CAUCASIAN ALBANIAN LETTER CAR 10543 CAUCASIAN ALBANIAN LETTER JHOX 10544 CAUCASIAN ALBANIAN LETTER KAR 10545 CAUCASIAN ALBANIAN LETTER LYIT 10546 CAUCASIAN ALBANIAN LETTER HEYT 10547 CAUCASIAN ALBANIAN LETTER QAY 10548 CAUCASIAN ALBANIAN LETTER AOR 10549 CAUCASIAN ALBANIAN LETTER CHOY 1054A CAUCASIAN ALBANIAN LETTER CHI 1054B CAUCASIAN ALBANIAN LETTER CYAY 1054C CAUCASIAN ALBANIAN LETTER MAQ 1054D CAUCASIAN ALBANIAN LETTER QAR 1054E CAUCASIAN ALBANIAN LETTER NOWC 1054F CAUCASIAN ALBANIAN LETTER DZYAY 10550 CAUCASIAN ALBANIAN LETTER SHAK 10551 CAUCASIAN ALBANIAN LETTER JAYN 10552 CAUCASIAN ALBANIAN LETTER ON 10553 CAUCASIAN ALBANIAN LETTER TYAY 10554 CAUCASIAN ALBANIAN LETTER FAM 10555 CAUCASIAN ALBANIAN LETTER DZAY 10556 CAUCASIAN ALBANIAN LETTER CHAT 10557 CAUCASIAN ALBANIAN LETTER PEN 10558 CAUCASIAN ALBANIAN LETTER GHEYS 10559 CAUCASIAN ALBANIAN LETTER RAT 1055A CAUCASIAN ALBANIAN LETTER SEYK 1055B CAUCASIAN ALBANIAN LETTER VEYZ 1055C CAUCASIAN ALBANIAN LETTER TIWR 1055D CAUCASIAN ALBANIAN LETTER SHOY 1055E CAUCASIAN ALBANIAN LETTER IWN 1055F CAUCASIAN ALBANIAN LETTER CYAW 10560 CAUCASIAN ALBANIAN LETTER CAYN 10561 CAUCASIAN ALBANIAN LETTER YAYD 10562 CAUCASIAN ALBANIAN LETTER PIWR 10563 CAUCASIAN ALBANIAN LETTER KIW @ Punctuation 1056F CAUCASIAN ALBANIAN CITATION MARK @@ 10600 Linear A 1077F @ Simple signs 10600 LINEAR A SIGN AB001 10601 LINEAR A SIGN AB002 10602 LINEAR A SIGN AB003 10603 LINEAR A SIGN AB004 10604 LINEAR A SIGN AB005 10605 LINEAR A SIGN AB006 10606 LINEAR A SIGN AB007 10607 LINEAR A SIGN AB008 10608 LINEAR A SIGN AB009 10609 LINEAR A SIGN AB010 1060A LINEAR A SIGN AB011 1060B LINEAR A SIGN AB013 1060C LINEAR A SIGN AB016 1060D LINEAR A SIGN AB017 1060E LINEAR A SIGN AB020 1060F LINEAR A SIGN AB021 * sheep x (linear b syllable b021 qi - 10025) 10610 LINEAR A SIGN AB021F * ewe x (linear b ideogram b106f ewe - 10086) 10611 LINEAR A SIGN AB021M * ram x (linear b ideogram b106m ram - 10087) 10612 LINEAR A SIGN AB022 * goat x (linear b symbol b022 - 10052) 10613 LINEAR A SIGN AB022F * she-goat x (linear b ideogram b107f she-goat - 10088) 10614 LINEAR A SIGN AB022M * he-goat x (linear b ideogram b107m he-goat - 10089) 10615 LINEAR A SIGN AB023 * bovine x (linear b syllable b023 mu - 10018) 10616 LINEAR A SIGN AB023M * bull x (linear b ideogram b109m bull - 1008D) 10617 LINEAR A SIGN AB024 10618 LINEAR A SIGN AB026 10619 LINEAR A SIGN AB027 1061A LINEAR A SIGN AB028 1061B LINEAR A SIGN A028B 1061C LINEAR A SIGN AB029 1061D LINEAR A SIGN AB030 * figs x (linear b syllable b030 ni - 1001B) 1061E LINEAR A SIGN AB031 1061F LINEAR A SIGN AB034 10620 LINEAR A SIGN AB037 10621 LINEAR A SIGN AB038 10622 LINEAR A SIGN AB039 10623 LINEAR A SIGN AB040 10624 LINEAR A SIGN AB041 10625 LINEAR A SIGN AB044 10626 LINEAR A SIGN AB045 10627 LINEAR A SIGN AB046 10628 LINEAR A SIGN AB047 10629 LINEAR A SIGN AB048 x (linear b syllable b048 nwa - 10045) 1062A LINEAR A SIGN AB049 1062B LINEAR A SIGN AB050 1062C LINEAR A SIGN AB051 1062D LINEAR A SIGN AB053 1062E LINEAR A SIGN AB054 * cloth x (linear b ideogram b159 cloth - 100A7) 1062F LINEAR A SIGN AB055 10630 LINEAR A SIGN AB056 10631 LINEAR A SIGN AB057 10632 LINEAR A SIGN AB058 10633 LINEAR A SIGN AB059 10634 LINEAR A SIGN AB060 10635 LINEAR A SIGN AB061 10636 LINEAR A SIGN AB065 10637 LINEAR A SIGN AB066 10638 LINEAR A SIGN AB067 10639 LINEAR A SIGN AB069 1063A LINEAR A SIGN AB070 1063B LINEAR A SIGN AB073 1063C LINEAR A SIGN AB074 1063D LINEAR A SIGN AB076 1063E LINEAR A SIGN AB077 1063F LINEAR A SIGN AB078 10640 LINEAR A SIGN AB079 10641 LINEAR A SIGN AB080 10642 LINEAR A SIGN AB081 10643 LINEAR A SIGN AB082 10644 LINEAR A SIGN AB085 * pig x (linear b syllable b085 au - 10042) 10645 LINEAR A SIGN AB086 10646 LINEAR A SIGN AB087 10647 LINEAR A SIGN A100-102 * man or woman x (linear b ideogram b100 man - 10080) x (linear b ideogram b102 woman - 10081) 10648 LINEAR A SIGN AB118 10649 LINEAR A SIGN AB120 * grain x (linear b ideogram b120 wheat - 1008E) 1064A LINEAR A SIGN A120B * grain 1064B LINEAR A SIGN AB122 * olives x (linear b ideogram b122 olive - 10090) 1064C LINEAR A SIGN AB123 1064D LINEAR A SIGN AB131A * wine x (linear b ideogram b131 wine - 10096) 1064E LINEAR A SIGN AB131B * wine 1064F LINEAR A SIGN A131C * wine 10650 LINEAR A SIGN AB164 10651 LINEAR A SIGN AB171 10652 LINEAR A SIGN AB180 10653 LINEAR A SIGN AB188 10654 LINEAR A SIGN AB191 10655 LINEAR A SIGN A301 10656 LINEAR A SIGN A302 * olive oil x (linear b ideogram b130 oil - 10095) 10657 LINEAR A SIGN A303 * cyperus x (linear b ideogram b125 cyperus - 10092) 10658 LINEAR A SIGN A304 10659 LINEAR A SIGN A305 1065A LINEAR A SIGN A306 1065B LINEAR A SIGN A307 1065C LINEAR A SIGN A308 1065D LINEAR A SIGN A309A 1065E LINEAR A SIGN A309B 1065F LINEAR A SIGN A309C 10660 LINEAR A SIGN A310 10661 LINEAR A SIGN A311 * used with 10655 linear a sign a301 10662 LINEAR A SIGN A312 10663 LINEAR A SIGN A313A * used with 10647 linear a sign a100-102 10664 LINEAR A SIGN A313B * used with 10647 linear a sign a100-102 10665 LINEAR A SIGN A313C * used with 10647 linear a sign a100-102 10666 LINEAR A SIGN A314 10667 LINEAR A SIGN A315 10668 LINEAR A SIGN A316 10669 LINEAR A SIGN A317 1066A LINEAR A SIGN A318 1066B LINEAR A SIGN A319 1066C LINEAR A SIGN A320 1066D LINEAR A SIGN A321 1066E LINEAR A SIGN A322 1066F LINEAR A SIGN A323 10670 LINEAR A SIGN A324 10671 LINEAR A SIGN A325 10672 LINEAR A SIGN A326 10673 LINEAR A SIGN A327 10674 LINEAR A SIGN A328 10675 LINEAR A SIGN A329 10676 LINEAR A SIGN A330 * used with 10600 linear a sign ab001 and 1061E linear a sign ab031 10677 LINEAR A SIGN A331 10678 LINEAR A SIGN A332 10679 LINEAR A SIGN A333 1067A LINEAR A SIGN A334 1067B LINEAR A SIGN A335 1067C LINEAR A SIGN A336 1067D LINEAR A SIGN A337 * used with 10653 linear a sign ab188 1067E LINEAR A SIGN A338 1067F LINEAR A SIGN A339 10680 LINEAR A SIGN A340 10681 LINEAR A SIGN A341 * used with 10622 linear a sign ab039 10682 LINEAR A SIGN A342 10683 LINEAR A SIGN A343 10684 LINEAR A SIGN A344 10685 LINEAR A SIGN A345 10686 LINEAR A SIGN A346 10687 LINEAR A SIGN A347 10688 LINEAR A SIGN A348 * used with 10657 linear a sign a303 10689 LINEAR A SIGN A349 1068A LINEAR A SIGN A350 1068B LINEAR A SIGN A351 * used with 10655 linear a sign a301 1068C LINEAR A SIGN A352 1068D LINEAR A SIGN A353 1068E LINEAR A SIGN A354 1068F LINEAR A SIGN A355 10690 LINEAR A SIGN A356 10691 LINEAR A SIGN A357 10692 LINEAR A SIGN A358 10693 LINEAR A SIGN A359 10694 LINEAR A SIGN A360 10695 LINEAR A SIGN A361 10696 LINEAR A SIGN A362 10697 LINEAR A SIGN A363 10698 LINEAR A SIGN A364 10699 LINEAR A SIGN A365 1069A LINEAR A SIGN A366 1069B LINEAR A SIGN A367 1069C LINEAR A SIGN A368 1069D LINEAR A SIGN A369 1069E LINEAR A SIGN A370 1069F LINEAR A SIGN A371 @ Vase shapes 106A0 LINEAR A SIGN A400-VAS 106A1 LINEAR A SIGN A401-VAS 106A2 LINEAR A SIGN A402-VAS 106A3 LINEAR A SIGN A403-VAS 106A4 LINEAR A SIGN A404-VAS 106A5 LINEAR A SIGN A405-VAS 106A6 LINEAR A SIGN A406-VAS 106A7 LINEAR A SIGN A407-VAS 106A8 LINEAR A SIGN A408-VAS 106A9 LINEAR A SIGN A409-VAS 106AA LINEAR A SIGN A410-VAS 106AB LINEAR A SIGN A411-VAS 106AC LINEAR A SIGN A412-VAS 106AD LINEAR A SIGN A413-VAS 106AE LINEAR A SIGN A414-VAS 106AF LINEAR A SIGN A415-VAS 106B0 LINEAR A SIGN A416-VAS 106B1 LINEAR A SIGN A417-VAS 106B2 LINEAR A SIGN A418-VAS @ Complex signs 106B3 LINEAR A SIGN A501 * 10600 ab001, 10601 ab002 106B4 LINEAR A SIGN A502 * 10600 ab001, 10619 ab027, 10608 ab009 106B5 LINEAR A SIGN A503 * 10600 ab001, 10655 a301 106B6 LINEAR A SIGN A504 * 10601 ab002, 10601 ab002 106B7 LINEAR A SIGN A505 * 10603 ab004, 10601 ab002 106B8 LINEAR A SIGN A506 * 10606 ab007, 1063F ab078 106B9 LINEAR A SIGN A508 * 1060C ab016, 10619 ab027 106BA LINEAR A SIGN A509 * 1060C ab016, 10619 ab027, 1062B ab050 106BB LINEAR A SIGN A510 * 1060C ab016, 1062B ab050 106BC LINEAR A SIGN A511 * 1060C ab016, 1062B ab050, 10619 ab027 106BD LINEAR A SIGN A512 * 1060F ab021, 10624 ab041 106BE LINEAR A SIGN A513 * 10614 ab022m, 10642 ab081 106BF LINEAR A SIGN A515 * 10619 ab027, 10608 ab009 106C0 LINEAR A SIGN A516 x (linear a sign ab028 - 1061A) 106C1 LINEAR A SIGN A520 * 1061A ab028, 10655 a301 106C2 LINEAR A SIGN A521 * 1061E ab031, 10615 ab023, 10642 ab081 106C3 LINEAR A SIGN A523 * 10620 ab037, 10607 ab008 106C4 LINEAR A SIGN A524 * 10620 ab037, 106AC a412-vas 106C5 LINEAR A SIGN A525 x (linear a sign ab038 - 10621) 106C6 LINEAR A SIGN A526 * 10621 ab038, 1063E ab077 106C7 LINEAR A SIGN A527 * 10623 ab040, 1063C ab074 106C8 LINEAR A SIGN A528 * 10624 ab041, 10606 ab007 106C9 LINEAR A SIGN A529 * 10624 ab041, 10608 ab009 106CA LINEAR A SIGN A530 * 10624 ab041, 1060B ab013 106CB LINEAR A SIGN A531 * 10624 ab041, 1060B ab013, 10638 ab067 106CC LINEAR A SIGN A532 * 10624 ab041, 10637 ab066 106CD LINEAR A SIGN A534 x (linear a sign ab051 - 1062C) 106CE LINEAR A SIGN A535 * 1062E ab054, 10642 ab081 106CF LINEAR A SIGN A536 * 1062E ab054, 10662 a312 106D0 LINEAR A SIGN A537 * 10630 ab056, 1063F ab078 106D1 LINEAR A SIGN A538 * 10631 ab057, 10618 ab026 106D2 LINEAR A SIGN A539 * 10631 ab057, 1063E ab077 106D3 LINEAR A SIGN A540 * 10632 ab058, 1063B ab073 106D4 LINEAR A SIGN A541 * 10634 ab060, 1063E ab077 106D5 LINEAR A SIGN A542 * 10636 ab065, 10669 a317, 1063F ab078 106D6 LINEAR A SIGN A545 * 10638 ab067, 10615 ab023 106D7 LINEAR A SIGN A547 * 10639 ab069, 10601 ab002 106D8 LINEAR A SIGN A548 * 1063B ab073, 10631 ab057 106D9 LINEAR A SIGN A549 x (linear a sign a548 - 106D8) 106DA LINEAR A SIGN A550 * 1063B ab073, 10631 ab057, 10618 ab026 106DB LINEAR A SIGN A551 * 1063B ab073, 10631 ab057, 1061A ab028 106DC LINEAR A SIGN A552 * 1063B ab073, 10631 ab057, 1063E ab077 106DD LINEAR A SIGN A553 * 1063B ab073, 10655 a301 106DE LINEAR A SIGN A554 * 1063E ab077, 10607 ab008 106DF LINEAR A SIGN A555 * 1063F ab078, 10649 ab120, 10602 ab003 106E0 LINEAR A SIGN A556 x (linear a sign ab080 - 10641) 106E1 LINEAR A SIGN A557 * 10641 ab080, 10607 ab008 106E2 LINEAR A SIGN A559 * 10641 ab080, 10618 ab026 106E3 LINEAR A SIGN A563 * 10641 ab080, 10641 ab080 106E4 LINEAR A SIGN A564 x (linear a sign ab081 - 10642) 106E5 LINEAR A SIGN A565 * 10645 ab086, 10653 ab188 106E6 LINEAR A SIGN A566 * 10645 ab086, 10653 ab188 106E7 LINEAR A SIGN A568 * 10647 a100-102, 1063E ab077 106E8 LINEAR A SIGN A569 * 10647 a100-102, 1065B a307 106E9 LINEAR A SIGN A570 * 10647 a100-102, 10663 a313a 106EA LINEAR A SIGN A571 * 10647 a100-102, 10664 a313b 106EB LINEAR A SIGN A572 * 10647 a100-102, 10665 a313c 106EC LINEAR A SIGN A573 * 10649 ab120, 10600 ab001 106ED LINEAR A SIGN A574 * 10649 ab120, 10602 ab003 106EE LINEAR A SIGN A575 * 10649 ab120, 10610 ab021f 106EF LINEAR A SIGN A576 * 10649 ab120, 10614 ab022m 106F0 LINEAR A SIGN A577 * 10649 ab120, 1062F ab056 106F1 LINEAR A SIGN A578 * 10649 ab120, 1063F ab078 106F2 LINEAR A SIGN A579 * 10649 ab120, 10642 ab081 106F3 LINEAR A SIGN A580 * 10649 ab120, 10741 a702 b 106F4 LINEAR A SIGN A581 * 10649 ab120, 10743 a704 e 106F5 LINEAR A SIGN A582 * 10649 ab120, 10744 a705 f 106F6 LINEAR A SIGN A583 * 10649 ab120, 10745 a706 h 106F7 LINEAR A SIGN A584 * 10649 ab120, 10747 a708 k, 10749 a709-2 l2 106F8 LINEAR A SIGN A585 * 10649 ab120, 10749 a709-2 l2 106F9 LINEAR A SIGN A586 * 10649 ab120, 1074A a709-3 l3, 1074A a709-3 l3 106FA LINEAR A SIGN A587 * 1064B ab122, 10639 ab069 106FB LINEAR A SIGN A588 * 1064D ab131a, 10603 ab004 106FC LINEAR A SIGN A589 * 1064D ab131a, 1061E ab031 106FD LINEAR A SIGN A591 * 1064D ab131a, 1062E ab054 106FE LINEAR A SIGN A592 * 1064D ab131a, 1062E ab054 106FF LINEAR A SIGN A594 * 1064D ab131a, 10634 ab060 10700 LINEAR A SIGN A595 * 1064D ab131a, 10634 ab060 10701 LINEAR A SIGN A596 * 1064D ab131a, 1063E ab077 10702 LINEAR A SIGN A598 * 1064D ab131b, 10623 ab040 10703 LINEAR A SIGN A600 * 10762 a802, 10741 a702 b 10704 LINEAR A SIGN A601 * 10762 a802, 10748 a709 l 10705 LINEAR A SIGN A602 * 10652 ab180, 10741 a702 b 10706 LINEAR A SIGN A603 * 10652 ab180, 10748 a709 l 10707 LINEAR A SIGN A604 * 10653 ab188, 10642 ab081 10708 LINEAR A SIGN A606 * 10655 a301, 10661 a311 10709 LINEAR A SIGN A608 * 10656 a302, 10606 ab007 1070A LINEAR A SIGN A609 * 10656 a302, 10607 ab008 1070B LINEAR A SIGN A610 * 10656 a302, 10609 ab010 1070C LINEAR A SIGN A611 * 10656 a302, 10610 ab021f 1070D LINEAR A SIGN A612 * 10656 a302, 10617 ab024 1070E LINEAR A SIGN A613 * 10656 a302, 10621 ab038 1070F LINEAR A SIGN A614 * 10656 a302, 1062D ab053 10710 LINEAR A SIGN A615 * 10656 a302, 10633 ab059 10711 LINEAR A SIGN A616 * 10656 a302, 10634 ab060 10712 LINEAR A SIGN A617 * 10656 a302, 10638 ab067 10713 LINEAR A SIGN A618 * 10656 a302, 10638 ab067 10714 LINEAR A SIGN A619 * 10656 a302, 10638 ab067, 10609 ab010 10715 LINEAR A SIGN A620 * 10656 a302, 10638 ab067, 1060B ab013 10716 LINEAR A SIGN A621 * 10656 a302, 10639 ab069 10717 LINEAR A SIGN A622 * 10656 a302, 1063B ab073 10718 LINEAR A SIGN A623 * 10656 a302, 1063F ab078, 10606 ab007 10719 LINEAR A SIGN A624 * 10657 a303, 10742 a703 d 1071A LINEAR A SIGN A626 * 10657 a303, 10743 a704 e 1071B LINEAR A SIGN A627 * 10657 a303, 10747 a708 k 1071C LINEAR A SIGN A628 x (linear a sign a304 - 10658) 1071D LINEAR A SIGN A629 * 10658 a304, 10602 ab003 1071E LINEAR A SIGN A634 * 1065A a306, 1063B ab073 1071F LINEAR A SIGN A637 * 1065B a307, 10655 a301 10720 LINEAR A SIGN A638 * 1065B a307, 1065B a307 10721 LINEAR A SIGN A640 * 10668 a316, 10638 ab067 10722 LINEAR A SIGN A642 x (linear a sign a318 - 1066A) 10723 LINEAR A SIGN A643 * 10676 a330, 10600 ab001 10724 LINEAR A SIGN A644 * 10676 a330, 1061E ab031 10725 LINEAR A SIGN A645 * 1067D a337, 10653 ab188 10726 LINEAR A SIGN A646 * 10681 a341, 10622 ab039 @ Complex signs with vase shapes 10727 LINEAR A SIGN A648 * 106A0 a400-vas, 1062D ab053 10728 LINEAR A SIGN A649 x (linear a sign a401-vas - 106A1) 10729 LINEAR A SIGN A651 * 106A1 a401-vas, 10618 ab026 1072A LINEAR A SIGN A652 * 106A1 a401-vas, 10634 ab060 1072B LINEAR A SIGN A653 * 106A1 a401-vas, 10658 a304 1072C LINEAR A SIGN A654 * 106A4 a404-vas, 10607 ab008 1072D LINEAR A SIGN A655 * 106A5 a405-vas, 10750 a713 omega 1072E LINEAR A SIGN A656 * 106A6 a406-vas, 10625 ab044 1072F LINEAR A SIGN A657 * 106A7 a407-vas, 10607 ab008 10730 LINEAR A SIGN A658 * 106AC a412-vas, 10743 a704 e 10731 LINEAR A SIGN A659 * 106AC a412-vas, 10744 a705 f 10732 LINEAR A SIGN A660 * 106AD a413-vas, 10632 ab058 10733 LINEAR A SIGN A661 x (linear a sign a414-vas - 106AE) 10734 LINEAR A SIGN A662 * 106AE a414-vas, 10744 a705 f 10735 LINEAR A SIGN A663 * 106B1 a417-vas, 10749 a709-2 l2 10736 LINEAR A SIGN A664 * 106B2 a418-vas, 10749 a709-2 l2 @ Fractions and compound fractions 10740 LINEAR A SIGN A701 A * possibly one sixth (value uncertain) x (thermodynamic - 29E7) 10741 LINEAR A SIGN A702 B * one third 10742 LINEAR A SIGN A703 D * one fifth 10743 LINEAR A SIGN A704 E * one quarter 10744 LINEAR A SIGN A705 F * one eighth 10745 LINEAR A SIGN A706 H * possibly one sixth (value uncertain) 10746 LINEAR A SIGN A707 J * one half 10747 LINEAR A SIGN A708 K * one sixteenth x (aegean dry measure first subunit - 1013C) 10748 LINEAR A SIGN A709 L 10749 LINEAR A SIGN A709-2 L2 1074A LINEAR A SIGN A709-3 L3 1074B LINEAR A SIGN A709-4 L4 1074C LINEAR A SIGN A709-6 L6 * used with 10655 linear a sign a301 1074D LINEAR A SIGN A710 W 1074E LINEAR A SIGN A711 X x (aegean weight second subunit - 10139) 1074F LINEAR A SIGN A712 Y x (runic letter wunjo wynn w - 16B9) 10750 LINEAR A SIGN A713 OMEGA * used with 106A5 linear a sign a405-vas 10751 LINEAR A SIGN A714 ABB 10752 LINEAR A SIGN A715 BB 10753 LINEAR A SIGN A717 DD 10754 LINEAR A SIGN A726 EYYY 10755 LINEAR A SIGN A732 JE * three quarters @ Additional signs 10760 LINEAR A SIGN A800 * 10603 ab004, 10607 ab008 10761 LINEAR A SIGN A801 * 1062E ab054, 10608 ab009 10762 LINEAR A SIGN A802 x (linear a sign ab060 - 10634) 10763 LINEAR A SIGN A803 * 1064D ab131a, 10762 a802 10764 LINEAR A SIGN A804 * 10652 ab180, 1061E ab031 10765 LINEAR A SIGN A805 x (linear a sign a301 - 10655) 10766 LINEAR A SIGN A806 * 10668 a316, 10601 ab002 10767 LINEAR A SIGN A807 * 10668 a316, 10742 a703 d @@ 10800 Cypriot Syllabary 1083F @ Syllables 10800 CYPRIOT SYLLABLE A 10801 CYPRIOT SYLLABLE E 10802 CYPRIOT SYLLABLE I 10803 CYPRIOT SYLLABLE O 10804 CYPRIOT SYLLABLE U 10805 CYPRIOT SYLLABLE JA 10808 CYPRIOT SYLLABLE JO 1080A CYPRIOT SYLLABLE KA 1080B CYPRIOT SYLLABLE KE 1080C CYPRIOT SYLLABLE KI 1080D CYPRIOT SYLLABLE KO 1080E CYPRIOT SYLLABLE KU 1080F CYPRIOT SYLLABLE LA 10810 CYPRIOT SYLLABLE LE 10811 CYPRIOT SYLLABLE LI 10812 CYPRIOT SYLLABLE LO 10813 CYPRIOT SYLLABLE LU 10814 CYPRIOT SYLLABLE MA 10815 CYPRIOT SYLLABLE ME 10816 CYPRIOT SYLLABLE MI 10817 CYPRIOT SYLLABLE MO 10818 CYPRIOT SYLLABLE MU 10819 CYPRIOT SYLLABLE NA 1081A CYPRIOT SYLLABLE NE 1081B CYPRIOT SYLLABLE NI 1081C CYPRIOT SYLLABLE NO 1081D CYPRIOT SYLLABLE NU 1081E CYPRIOT SYLLABLE PA 1081F CYPRIOT SYLLABLE PE 10820 CYPRIOT SYLLABLE PI 10821 CYPRIOT SYLLABLE PO 10822 CYPRIOT SYLLABLE PU 10823 CYPRIOT SYLLABLE RA 10824 CYPRIOT SYLLABLE RE 10825 CYPRIOT SYLLABLE RI 10826 CYPRIOT SYLLABLE RO 10827 CYPRIOT SYLLABLE RU 10828 CYPRIOT SYLLABLE SA 10829 CYPRIOT SYLLABLE SE 1082A CYPRIOT SYLLABLE SI 1082B CYPRIOT SYLLABLE SO 1082C CYPRIOT SYLLABLE SU 1082D CYPRIOT SYLLABLE TA 1082E CYPRIOT SYLLABLE TE 1082F CYPRIOT SYLLABLE TI 10830 CYPRIOT SYLLABLE TO 10831 CYPRIOT SYLLABLE TU 10832 CYPRIOT SYLLABLE WA 10833 CYPRIOT SYLLABLE WE 10834 CYPRIOT SYLLABLE WI 10835 CYPRIOT SYLLABLE WO 10837 CYPRIOT SYLLABLE XA 10838 CYPRIOT SYLLABLE XE 1083C CYPRIOT SYLLABLE ZA 1083F CYPRIOT SYLLABLE ZO @@ 10840 Imperial Aramaic 1085F @ Letters 10840 IMPERIAL ARAMAIC LETTER ALEPH 10841 IMPERIAL ARAMAIC LETTER BETH 10842 IMPERIAL ARAMAIC LETTER GIMEL 10843 IMPERIAL ARAMAIC LETTER DALETH 10844 IMPERIAL ARAMAIC LETTER HE 10845 IMPERIAL ARAMAIC LETTER WAW 10846 IMPERIAL ARAMAIC LETTER ZAYIN 10847 IMPERIAL ARAMAIC LETTER HETH 10848 IMPERIAL ARAMAIC LETTER TETH 10849 IMPERIAL ARAMAIC LETTER YODH 1084A IMPERIAL ARAMAIC LETTER KAPH 1084B IMPERIAL ARAMAIC LETTER LAMEDH 1084C IMPERIAL ARAMAIC LETTER MEM 1084D IMPERIAL ARAMAIC LETTER NUN 1084E IMPERIAL ARAMAIC LETTER SAMEKH 1084F IMPERIAL ARAMAIC LETTER AYIN 10850 IMPERIAL ARAMAIC LETTER PE 10851 IMPERIAL ARAMAIC LETTER SADHE 10852 IMPERIAL ARAMAIC LETTER QOPH 10853 IMPERIAL ARAMAIC LETTER RESH 10854 IMPERIAL ARAMAIC LETTER SHIN 10855 IMPERIAL ARAMAIC LETTER TAW @ Punctuation 10857 IMPERIAL ARAMAIC SECTION SIGN @ Numbers 10858 IMPERIAL ARAMAIC NUMBER ONE 10859 IMPERIAL ARAMAIC NUMBER TWO 1085A IMPERIAL ARAMAIC NUMBER THREE 1085B IMPERIAL ARAMAIC NUMBER TEN 1085C IMPERIAL ARAMAIC NUMBER TWENTY 1085D IMPERIAL ARAMAIC NUMBER ONE HUNDRED 1085E IMPERIAL ARAMAIC NUMBER ONE THOUSAND 1085F IMPERIAL ARAMAIC NUMBER TEN THOUSAND @@ 10860 Palmyrene 1087F @ Letters 10860 PALMYRENE LETTER ALEPH 10861 PALMYRENE LETTER BETH 10862 PALMYRENE LETTER GIMEL 10863 PALMYRENE LETTER DALETH 10864 PALMYRENE LETTER HE 10865 PALMYRENE LETTER WAW 10866 PALMYRENE LETTER ZAYIN 10867 PALMYRENE LETTER HETH 10868 PALMYRENE LETTER TETH 10869 PALMYRENE LETTER YODH 1086A PALMYRENE LETTER KAPH 1086B PALMYRENE LETTER LAMEDH 1086C PALMYRENE LETTER MEM 1086D PALMYRENE LETTER FINAL NUN 1086E PALMYRENE LETTER NUN 1086F PALMYRENE LETTER SAMEKH 10870 PALMYRENE LETTER AYIN 10871 PALMYRENE LETTER PE 10872 PALMYRENE LETTER SADHE 10873 PALMYRENE LETTER QOPH 10874 PALMYRENE LETTER RESH 10875 PALMYRENE LETTER SHIN 10876 PALMYRENE LETTER TAW @ Symbols 10877 PALMYRENE LEFT-POINTING FLEURON 10878 PALMYRENE RIGHT-POINTING FLEURON @ Numbers 10879 PALMYRENE NUMBER ONE 1087A PALMYRENE NUMBER TWO 1087B PALMYRENE NUMBER THREE 1087C PALMYRENE NUMBER FOUR 1087D PALMYRENE NUMBER FIVE 1087E PALMYRENE NUMBER TEN * also used for hundreds 1087F PALMYRENE NUMBER TWENTY @@ 10880 Nabataean 108AF @ Letters 10880 NABATAEAN LETTER FINAL ALEPH 10881 NABATAEAN LETTER ALEPH 10882 NABATAEAN LETTER FINAL BETH 10883 NABATAEAN LETTER BETH 10884 NABATAEAN LETTER GIMEL 10885 NABATAEAN LETTER DALETH 10886 NABATAEAN LETTER FINAL HE 10887 NABATAEAN LETTER HE 10888 NABATAEAN LETTER WAW 10889 NABATAEAN LETTER ZAYIN 1088A NABATAEAN LETTER HETH 1088B NABATAEAN LETTER TETH 1088C NABATAEAN LETTER FINAL YODH 1088D NABATAEAN LETTER YODH 1088E NABATAEAN LETTER FINAL KAPH 1088F NABATAEAN LETTER KAPH 10890 NABATAEAN LETTER FINAL LAMEDH 10891 NABATAEAN LETTER LAMEDH 10892 NABATAEAN LETTER FINAL MEM 10893 NABATAEAN LETTER MEM 10894 NABATAEAN LETTER FINAL NUN 10895 NABATAEAN LETTER NUN 10896 NABATAEAN LETTER SAMEKH 10897 NABATAEAN LETTER AYIN 10898 NABATAEAN LETTER PE 10899 NABATAEAN LETTER SADHE 1089A NABATAEAN LETTER QOPH 1089B NABATAEAN LETTER RESH 1089C NABATAEAN LETTER FINAL SHIN 1089D NABATAEAN LETTER SHIN 1089E NABATAEAN LETTER TAW @ Numbers 108A7 NABATAEAN NUMBER ONE 108A8 NABATAEAN NUMBER TWO 108A9 NABATAEAN NUMBER THREE 108AA NABATAEAN NUMBER FOUR 108AB NABATAEAN CRUCIFORM NUMBER FOUR 108AC NABATAEAN NUMBER FIVE 108AD NABATAEAN NUMBER TEN 108AE NABATAEAN NUMBER TWENTY 108AF NABATAEAN NUMBER ONE HUNDRED @@ 108E0 Hatran 108FF @ Letters 108E0 HATRAN LETTER ALEPH 108E1 HATRAN LETTER BETH 108E2 HATRAN LETTER GIMEL 108E3 HATRAN LETTER DALETH-RESH 108E4 HATRAN LETTER HE 108E5 HATRAN LETTER WAW 108E6 HATRAN LETTER ZAYN 108E7 HATRAN LETTER HETH 108E8 HATRAN LETTER TETH 108E9 HATRAN LETTER YODH 108EA HATRAN LETTER KAPH 108EB HATRAN LETTER LAMEDH 108EC HATRAN LETTER MEM 108ED HATRAN LETTER NUN 108EE HATRAN LETTER SAMEKH 108EF HATRAN LETTER AYN 108F0 HATRAN LETTER PE 108F1 HATRAN LETTER SADHE 108F2 HATRAN LETTER QOPH 108F4 HATRAN LETTER SHIN 108F5 HATRAN LETTER TAW @ Numbers 108FB HATRAN NUMBER ONE 108FC HATRAN NUMBER FIVE 108FD HATRAN NUMBER TEN 108FE HATRAN NUMBER TWENTY 108FF HATRAN NUMBER ONE HUNDRED @@ 10900 Phoenician 1091F @ Letters 10900 PHOENICIAN LETTER ALF x (hebrew letter alef - 05D0) 10901 PHOENICIAN LETTER BET x (hebrew letter bet - 05D1) 10902 PHOENICIAN LETTER GAML x (hebrew letter gimel - 05D2) 10903 PHOENICIAN LETTER DELT x (hebrew letter dalet - 05D3) 10904 PHOENICIAN LETTER HE x (hebrew letter he - 05D4) 10905 PHOENICIAN LETTER WAU x (hebrew letter vav - 05D5) 10906 PHOENICIAN LETTER ZAI x (hebrew letter zayin - 05D6) 10907 PHOENICIAN LETTER HET x (hebrew letter het - 05D7) 10908 PHOENICIAN LETTER TET x (hebrew letter tet - 05D8) 10909 PHOENICIAN LETTER YOD x (hebrew letter yod - 05D9) 1090A PHOENICIAN LETTER KAF x (hebrew letter kaf - 05DB) 1090B PHOENICIAN LETTER LAMD x (hebrew letter lamed - 05DC) 1090C PHOENICIAN LETTER MEM x (hebrew letter mem - 05DE) 1090D PHOENICIAN LETTER NUN x (hebrew letter nun - 05E0) 1090E PHOENICIAN LETTER SEMK x (hebrew letter samekh - 05E1) 1090F PHOENICIAN LETTER AIN x (hebrew letter ayin - 05E2) 10910 PHOENICIAN LETTER PE x (hebrew letter pe - 05E4) 10911 PHOENICIAN LETTER SADE x (hebrew letter tsadi - 05E6) 10912 PHOENICIAN LETTER QOF x (hebrew letter qof - 05E7) 10913 PHOENICIAN LETTER ROSH x (hebrew letter resh - 05E8) 10914 PHOENICIAN LETTER SHIN x (hebrew letter shin - 05E9) 10915 PHOENICIAN LETTER TAU x (hebrew letter tav - 05EA) @ Numbers 10916 PHOENICIAN NUMBER ONE 10917 PHOENICIAN NUMBER TEN 10918 PHOENICIAN NUMBER TWENTY 10919 PHOENICIAN NUMBER ONE HUNDRED 1091A PHOENICIAN NUMBER TWO 1091B PHOENICIAN NUMBER THREE @ Punctuation 1091F PHOENICIAN WORD SEPARATOR x (full stop - 002E) x (middle dot - 00B7) x (word separator middle dot - 2E31) * sometimes shown with a glyph for a short vertical bar @@ 10920 Lydian 1093F @ Letters 10920 LYDIAN LETTER A 10921 LYDIAN LETTER B 10922 LYDIAN LETTER G 10923 LYDIAN LETTER D 10924 LYDIAN LETTER E 10925 LYDIAN LETTER V 10926 LYDIAN LETTER I 10927 LYDIAN LETTER Y 10928 LYDIAN LETTER K 10929 LYDIAN LETTER L 1092A LYDIAN LETTER M 1092B LYDIAN LETTER N 1092C LYDIAN LETTER O 1092D LYDIAN LETTER R 1092E LYDIAN LETTER SS 1092F LYDIAN LETTER T 10930 LYDIAN LETTER U 10931 LYDIAN LETTER F 10932 LYDIAN LETTER Q 10933 LYDIAN LETTER S 10934 LYDIAN LETTER TT 10935 LYDIAN LETTER AN 10936 LYDIAN LETTER EN 10937 LYDIAN LETTER LY 10938 LYDIAN LETTER NN 10939 LYDIAN LETTER C @ Punctuation 1093F LYDIAN TRIANGULAR MARK @@ 10980 Meroitic Hieroglyphs 1099F @ Vowel letters 10980 MEROITIC HIEROGLYPHIC LETTER A x (egyptian hieroglyph a001 - 13000) 10981 MEROITIC HIEROGLYPHIC LETTER E x (egyptian hieroglyph h006 - 13184) 10982 MEROITIC HIEROGLYPHIC LETTER I x (egyptian hieroglyph a026 - 1301E) 10983 MEROITIC HIEROGLYPHIC LETTER O x (egyptian hieroglyph f001 - 130FE) @ Consonant letters 10984 MEROITIC HIEROGLYPHIC LETTER YA x (egyptian hieroglyph m017a - 131CC) 10985 MEROITIC HIEROGLYPHIC LETTER WA x (egyptian hieroglyph v004 - 1336F) 10986 MEROITIC HIEROGLYPHIC LETTER BA x (egyptian hieroglyph e011 - 130DE) 10987 MEROITIC HIEROGLYPHIC LETTER BA-2 x (egyptian hieroglyph d058 - 130C0) 10988 MEROITIC HIEROGLYPHIC LETTER PA x (egyptian hieroglyph q003 - 132AA) 10989 MEROITIC HIEROGLYPHIC LETTER MA x (egyptian hieroglyph g017 - 13153) 1098A MEROITIC HIEROGLYPHIC LETTER NA x (egyptian hieroglyph n035 - 13216) 1098B MEROITIC HIEROGLYPHIC LETTER NA-2 1098C MEROITIC HIEROGLYPHIC LETTER NE x (egyptian hieroglyph m022a - 131D2) 1098D MEROITIC HIEROGLYPHIC LETTER NE-2 1098E MEROITIC HIEROGLYPHIC LETTER RA x (egyptian hieroglyph d021 - 1308B) 1098F MEROITIC HIEROGLYPHIC LETTER RA-2 10990 MEROITIC HIEROGLYPHIC LETTER LA x (egyptian hieroglyph e023 - 130ED) 10991 MEROITIC HIEROGLYPHIC LETTER KHA x (egyptian hieroglyph aa001 - 1340D) 10992 MEROITIC HIEROGLYPHIC LETTER HHA x (egyptian hieroglyph w011 - 133BC) 10993 MEROITIC HIEROGLYPHIC LETTER SA x (egyptian hieroglyph m008 - 131B7) 10994 MEROITIC HIEROGLYPHIC LETTER SA-2 x (egyptian hieroglyph o034 - 13283) 10995 MEROITIC HIEROGLYPHIC LETTER SE x (egyptian hieroglyph o034 - 13283) 10996 MEROITIC HIEROGLYPHIC LETTER KA x (egyptian hieroglyph g038 - 1316C) 10997 MEROITIC HIEROGLYPHIC LETTER QA x (egyptian hieroglyph n029 - 1320E) 10998 MEROITIC HIEROGLYPHIC LETTER TA x (egyptian hieroglyph v013 - 1337F) 10999 MEROITIC HIEROGLYPHIC LETTER TA-2 x (egyptian hieroglyph n016 - 131FE) 1099A MEROITIC HIEROGLYPHIC LETTER TE x (egyptian hieroglyph n016 - 131FE) x (egyptian hieroglyph o004 - 13254) 1099B MEROITIC HIEROGLYPHIC LETTER TE-2 x (egyptian hieroglyph o004 - 13254) 1099C MEROITIC HIEROGLYPHIC LETTER TO x (egyptian hieroglyph n021 - 13205) 1099D MEROITIC HIEROGLYPHIC LETTER DA x (egyptian hieroglyph d006 - 1307B) @ Symbols 1099E MEROITIC HIEROGLYPHIC SYMBOL VIDJ x (ankh - 2625) x (egyptian hieroglyph s034 - 132F9) 1099F MEROITIC HIEROGLYPHIC SYMBOL VIDJ-2 @@ 109A0 Meroitic Cursive 109FF @ Vowel letters 109A0 MEROITIC CURSIVE LETTER A 109A1 MEROITIC CURSIVE LETTER E 109A2 MEROITIC CURSIVE LETTER I 109A3 MEROITIC CURSIVE LETTER O @ Consonant letters 109A4 MEROITIC CURSIVE LETTER YA 109A5 MEROITIC CURSIVE LETTER WA 109A6 MEROITIC CURSIVE LETTER BA 109A7 MEROITIC CURSIVE LETTER PA 109A8 MEROITIC CURSIVE LETTER MA 109A9 MEROITIC CURSIVE LETTER NA 109AA MEROITIC CURSIVE LETTER NE 109AB MEROITIC CURSIVE LETTER RA 109AC MEROITIC CURSIVE LETTER LA 109AD MEROITIC CURSIVE LETTER KHA 109AE MEROITIC CURSIVE LETTER HHA 109AF MEROITIC CURSIVE LETTER SA 109B0 MEROITIC CURSIVE LETTER ARCHAIC SA 109B1 MEROITIC CURSIVE LETTER SE 109B2 MEROITIC CURSIVE LETTER KA 109B3 MEROITIC CURSIVE LETTER QA 109B4 MEROITIC CURSIVE LETTER TA 109B5 MEROITIC CURSIVE LETTER TE 109B6 MEROITIC CURSIVE LETTER TO 109B7 MEROITIC CURSIVE LETTER DA @ Fractions 109BC MEROITIC CURSIVE FRACTION ELEVEN TWELFTHS 109BD MEROITIC CURSIVE FRACTION ONE HALF @ Logograms 109BE MEROITIC CURSIVE LOGOGRAM RMT 109BF MEROITIC CURSIVE LOGOGRAM IMN @ Digits 109C0 MEROITIC CURSIVE NUMBER ONE 109C1 MEROITIC CURSIVE NUMBER TWO 109C2 MEROITIC CURSIVE NUMBER THREE 109C3 MEROITIC CURSIVE NUMBER FOUR 109C4 MEROITIC CURSIVE NUMBER FIVE 109C5 MEROITIC CURSIVE NUMBER SIX 109C6 MEROITIC CURSIVE NUMBER SEVEN 109C7 MEROITIC CURSIVE NUMBER EIGHT 109C8 MEROITIC CURSIVE NUMBER NINE @ Tens 109C9 MEROITIC CURSIVE NUMBER TEN 109CA MEROITIC CURSIVE NUMBER TWENTY 109CB MEROITIC CURSIVE NUMBER THIRTY 109CC MEROITIC CURSIVE NUMBER FORTY 109CD MEROITIC CURSIVE NUMBER FIFTY 109CE MEROITIC CURSIVE NUMBER SIXTY 109CF MEROITIC CURSIVE NUMBER SEVENTY @ Hundreds 109D2 MEROITIC CURSIVE NUMBER ONE HUNDRED 109D3 MEROITIC CURSIVE NUMBER TWO HUNDRED 109D4 MEROITIC CURSIVE NUMBER THREE HUNDRED 109D5 MEROITIC CURSIVE NUMBER FOUR HUNDRED 109D6 MEROITIC CURSIVE NUMBER FIVE HUNDRED 109D7 MEROITIC CURSIVE NUMBER SIX HUNDRED 109D8 MEROITIC CURSIVE NUMBER SEVEN HUNDRED 109D9 MEROITIC CURSIVE NUMBER EIGHT HUNDRED 109DA MEROITIC CURSIVE NUMBER NINE HUNDRED @ Thousands 109DB MEROITIC CURSIVE NUMBER ONE THOUSAND 109DC MEROITIC CURSIVE NUMBER TWO THOUSAND 109DD MEROITIC CURSIVE NUMBER THREE THOUSAND 109DE MEROITIC CURSIVE NUMBER FOUR THOUSAND 109DF MEROITIC CURSIVE NUMBER FIVE THOUSAND 109E0 MEROITIC CURSIVE NUMBER SIX THOUSAND 109E1 MEROITIC CURSIVE NUMBER SEVEN THOUSAND 109E2 MEROITIC CURSIVE NUMBER EIGHT THOUSAND 109E3 MEROITIC CURSIVE NUMBER NINE THOUSAND @ Ten thousands 109E4 MEROITIC CURSIVE NUMBER TEN THOUSAND 109E5 MEROITIC CURSIVE NUMBER TWENTY THOUSAND 109E6 MEROITIC CURSIVE NUMBER THIRTY THOUSAND 109E7 MEROITIC CURSIVE NUMBER FORTY THOUSAND 109E8 MEROITIC CURSIVE NUMBER FIFTY THOUSAND 109E9 MEROITIC CURSIVE NUMBER SIXTY THOUSAND 109EA MEROITIC CURSIVE NUMBER SEVENTY THOUSAND 109EB MEROITIC CURSIVE NUMBER EIGHTY THOUSAND 109EC MEROITIC CURSIVE NUMBER NINETY THOUSAND @ Hundred thousands 109ED MEROITIC CURSIVE NUMBER ONE HUNDRED THOUSAND 109EE MEROITIC CURSIVE NUMBER TWO HUNDRED THOUSAND 109EF MEROITIC CURSIVE NUMBER THREE HUNDRED THOUSAND 109F0 MEROITIC CURSIVE NUMBER FOUR HUNDRED THOUSAND 109F1 MEROITIC CURSIVE NUMBER FIVE HUNDRED THOUSAND 109F2 MEROITIC CURSIVE NUMBER SIX HUNDRED THOUSAND 109F3 MEROITIC CURSIVE NUMBER SEVEN HUNDRED THOUSAND 109F4 MEROITIC CURSIVE NUMBER EIGHT HUNDRED THOUSAND 109F5 MEROITIC CURSIVE NUMBER NINE HUNDRED THOUSAND @ Fractions 109F6 MEROITIC CURSIVE FRACTION ONE TWELFTH 109F7 MEROITIC CURSIVE FRACTION TWO TWELFTHS 109F8 MEROITIC CURSIVE FRACTION THREE TWELFTHS 109F9 MEROITIC CURSIVE FRACTION FOUR TWELFTHS 109FA MEROITIC CURSIVE FRACTION FIVE TWELFTHS 109FB MEROITIC CURSIVE FRACTION SIX TWELFTHS 109FC MEROITIC CURSIVE FRACTION SEVEN TWELFTHS 109FD MEROITIC CURSIVE FRACTION EIGHT TWELFTHS 109FE MEROITIC CURSIVE FRACTION NINE TWELFTHS 109FF MEROITIC CURSIVE FRACTION TEN TWELFTHS @@ 10A00 Kharoshthi 10A5F @ Vowels 10A00 KHAROSHTHI LETTER A 10A01 KHAROSHTHI VOWEL SIGN I 10A02 KHAROSHTHI VOWEL SIGN U 10A03 KHAROSHTHI VOWEL SIGN VOCALIC R 10A05 KHAROSHTHI VOWEL SIGN E 10A06 KHAROSHTHI VOWEL SIGN O @ Length mark 10A0C KHAROSHTHI VOWEL LENGTH MARK @ Various signs 10A0D KHAROSHTHI SIGN DOUBLE RING BELOW 10A0E KHAROSHTHI SIGN ANUSVARA 10A0F KHAROSHTHI SIGN VISARGA @ Consonants 10A10 KHAROSHTHI LETTER KA 10A11 KHAROSHTHI LETTER KHA 10A12 KHAROSHTHI LETTER GA 10A13 KHAROSHTHI LETTER GHA 10A15 KHAROSHTHI LETTER CA 10A16 KHAROSHTHI LETTER CHA 10A17 KHAROSHTHI LETTER JA 10A19 KHAROSHTHI LETTER NYA 10A1A KHAROSHTHI LETTER TTA 10A1B KHAROSHTHI LETTER TTHA 10A1C KHAROSHTHI LETTER DDA 10A1D KHAROSHTHI LETTER DDHA 10A1E KHAROSHTHI LETTER NNA 10A1F KHAROSHTHI LETTER TA 10A20 KHAROSHTHI LETTER THA 10A21 KHAROSHTHI LETTER DA 10A22 KHAROSHTHI LETTER DHA 10A23 KHAROSHTHI LETTER NA 10A24 KHAROSHTHI LETTER PA 10A25 KHAROSHTHI LETTER PHA 10A26 KHAROSHTHI LETTER BA 10A27 KHAROSHTHI LETTER BHA 10A28 KHAROSHTHI LETTER MA 10A29 KHAROSHTHI LETTER YA 10A2A KHAROSHTHI LETTER RA 10A2B KHAROSHTHI LETTER LA 10A2C KHAROSHTHI LETTER VA 10A2D KHAROSHTHI LETTER SHA 10A2E KHAROSHTHI LETTER SSA 10A2F KHAROSHTHI LETTER SA 10A30 KHAROSHTHI LETTER ZA 10A31 KHAROSHTHI LETTER HA 10A32 KHAROSHTHI LETTER KKA 10A33 KHAROSHTHI LETTER TTTHA @ Various signs 10A38 KHAROSHTHI SIGN BAR ABOVE 10A39 KHAROSHTHI SIGN CAUDA 10A3A KHAROSHTHI SIGN DOT BELOW @ Virama 10A3F KHAROSHTHI VIRAMA = halant * suppresses inherent vowel * shape shown is arbitrary and is not visibly rendered @ Digits 10A40 KHAROSHTHI DIGIT ONE 10A41 KHAROSHTHI DIGIT TWO 10A42 KHAROSHTHI DIGIT THREE 10A43 KHAROSHTHI DIGIT FOUR @ Numbers 10A44 KHAROSHTHI NUMBER TEN 10A45 KHAROSHTHI NUMBER TWENTY 10A46 KHAROSHTHI NUMBER ONE HUNDRED 10A47 KHAROSHTHI NUMBER ONE THOUSAND @ Punctuation 10A50 KHAROSHTHI PUNCTUATION DOT 10A51 KHAROSHTHI PUNCTUATION SMALL CIRCLE 10A52 KHAROSHTHI PUNCTUATION CIRCLE 10A53 KHAROSHTHI PUNCTUATION CRESCENT BAR 10A54 KHAROSHTHI PUNCTUATION MANGALAM 10A55 KHAROSHTHI PUNCTUATION LOTUS 10A56 KHAROSHTHI PUNCTUATION DANDA 10A57 KHAROSHTHI PUNCTUATION DOUBLE DANDA 10A58 KHAROSHTHI PUNCTUATION LINES @@ 10A60 Old South Arabian 10A7F @ Letters @+ Letter names are based on North-West Semitic. Arabic names are given as aliases, along with Latin transliterations. The historically-related Ethiopic letters are also shown. 10A60 OLD SOUTH ARABIAN LETTER HE = heh * transliterated as h x (ethiopic syllable ha - 1200) 10A61 OLD SOUTH ARABIAN LETTER LAMEDH = lam * transliterated as l x (ethiopic syllable la - 1208) 10A62 OLD SOUTH ARABIAN LETTER HETH = hah * transliterated as 1E25 x (ethiopic syllable hha - 1210) 10A63 OLD SOUTH ARABIAN LETTER MEM = meem * transliterated as m x (ethiopic syllable ma - 1218) 10A64 OLD SOUTH ARABIAN LETTER QOPH = qaf * transliterated as q x (ethiopic syllable qa - 1240) 10A65 OLD SOUTH ARABIAN LETTER WAW = waw * transliterated as w x (ethiopic syllable wa - 12C8) 10A66 OLD SOUTH ARABIAN LETTER SHIN = sheen * transliterated as 0161 or s2 x (ethiopic syllable sza - 1220) 10A67 OLD SOUTH ARABIAN LETTER RESH = reh * transliterated as r x (ethiopic syllable ra - 1228) 10A68 OLD SOUTH ARABIAN LETTER BETH = beh * transliterated as b x (ethiopic syllable ba - 1260) 10A69 OLD SOUTH ARABIAN LETTER TAW = teh * transliterated as t x (ethiopic syllable ta - 1270) 10A6A OLD SOUTH ARABIAN LETTER SAT * transliterated as s or s1 x (ethiopic syllable sa - 1230) 10A6B OLD SOUTH ARABIAN LETTER KAPH = kaf * transliterated as k x (ethiopic syllable ka - 12A8) 10A6C OLD SOUTH ARABIAN LETTER NUN = noon * transliterated as n x (ethiopic syllable na - 1290) 10A6D OLD SOUTH ARABIAN LETTER KHETH = khah * transliterated as 1E2B x (ethiopic syllable xa - 1280) 10A6E OLD SOUTH ARABIAN LETTER SADHE = sad * transliterated as 1E63 x (ethiopic syllable tsa - 1338) 10A6F OLD SOUTH ARABIAN LETTER SAMEKH * transliterated as 015B or s3 10A70 OLD SOUTH ARABIAN LETTER FE = feh * transliterated as f x (ethiopic syllable fa - 1348) 10A71 OLD SOUTH ARABIAN LETTER ALEF = alef * transliterated as 02BC x (ethiopic syllable glottal a - 12A0) 10A72 OLD SOUTH ARABIAN LETTER AYN = ain * transliterated as 02BD x (ethiopic syllable pharyngeal a - 12D0) 10A73 OLD SOUTH ARABIAN LETTER DHADHE = dad * transliterated as 1E0D x (ethiopic syllable tza - 1340) 10A74 OLD SOUTH ARABIAN LETTER GIMEL = jeem * transliterated as g x (ethiopic syllable ga - 1308) 10A75 OLD SOUTH ARABIAN LETTER DALETH = dal * transliterated as d x (ethiopic syllable da - 12F0) 10A76 OLD SOUTH ARABIAN LETTER GHAYN = ghain * transliterated as 0121 10A77 OLD SOUTH ARABIAN LETTER TETH = tah * transliterated as 1E6D x (ethiopic syllable tha - 1320) 10A78 OLD SOUTH ARABIAN LETTER ZAYN = zain * transliterated as z x (ethiopic syllable za - 12D8) 10A79 OLD SOUTH ARABIAN LETTER DHALETH = thal * transliterated as 1E0F 10A7A OLD SOUTH ARABIAN LETTER YODH = yeh * transliterated as y x (ethiopic syllable ya - 12E8) 10A7B OLD SOUTH ARABIAN LETTER THAW = theh * transliterated as 1E6F 10A7C OLD SOUTH ARABIAN LETTER THETH = zah * transliterated as 1E93 @ Numbers 10A7D OLD SOUTH ARABIAN NUMBER ONE 10A7E OLD SOUTH ARABIAN NUMBER FIFTY 10A7F OLD SOUTH ARABIAN NUMERIC INDICATOR @@ 10A80 Old North Arabian 10A9F @ Letters 10A80 OLD NORTH ARABIAN LETTER HEH * transliterated as h x (ethiopic syllable ha - 1200) x (old south arabian letter he - 10A60) 10A81 OLD NORTH ARABIAN LETTER LAM * transliterated as l x (ethiopic syllable la - 1208) x (old south arabian letter lamedh - 10A61) 10A82 OLD NORTH ARABIAN LETTER HAH * transliterated as 1E25 x (ethiopic syllable hha - 1210) x (old south arabian letter heth - 10A62) 10A83 OLD NORTH ARABIAN LETTER MEEM * transliterated as m x (ethiopic syllable ma - 1218) x (old south arabian letter mem - 10A63) 10A84 OLD NORTH ARABIAN LETTER QAF * transliterated as q x (ethiopic syllable qa - 1240) x (old south arabian letter qoph - 10A64) 10A85 OLD NORTH ARABIAN LETTER WAW * transliterated as w x (ethiopic syllable wa - 12C8) x (old south arabian letter waw - 10A65) 10A86 OLD NORTH ARABIAN LETTER ES-2 * transliterated as s2 x (ethiopic syllable sza - 1220) x (old south arabian letter shin - 10A66) 10A87 OLD NORTH ARABIAN LETTER REH * transliterated as r x (ethiopic syllable ra - 1228) x (old south arabian letter resh - 10A67) 10A88 OLD NORTH ARABIAN LETTER BEH * transliterated as b x (ethiopic syllable ba - 1260) x (old south arabian letter beth - 10A68) 10A89 OLD NORTH ARABIAN LETTER TEH * transliterated as t x (ethiopic syllable ta - 1270) x (old south arabian letter taw - 10A69) 10A8A OLD NORTH ARABIAN LETTER ES-1 * transliterated as s1 x (ethiopic syllable sa - 1230) x (old south arabian letter sat - 10A6A) 10A8B OLD NORTH ARABIAN LETTER KAF * transliterated as k x (ethiopic syllable ka - 12A8) x (old south arabian letter kaph - 10A6B) 10A8C OLD NORTH ARABIAN LETTER NOON * transliterated as n x (ethiopic syllable na - 1290) x (old south arabian letter nun - 10A6C) 10A8D OLD NORTH ARABIAN LETTER KHAH * transliterated as 1E2B x (ethiopic syllable xa - 1280) x (old south arabian letter kheth - 10A6D) 10A8E OLD NORTH ARABIAN LETTER SAD * transliterated as 1E63 x (ethiopic syllable tsa - 1338) x (old south arabian letter sadhe - 10A6E) 10A8F OLD NORTH ARABIAN LETTER ES-3 * transliterated as s3 x (old south arabian letter samekh - 10A6F) 10A90 OLD NORTH ARABIAN LETTER FEH * transliterated as f x (ethiopic syllable fa - 1348) x (old south arabian letter fe - 10A70) 10A91 OLD NORTH ARABIAN LETTER ALEF * transliterated as 02BC x (ethiopic syllable glottal a - 12A0) x (old south arabian letter alef - 10A71) 10A92 OLD NORTH ARABIAN LETTER AIN * transliterated as 02BD x (ethiopic syllable pharyngeal a - 12D0) x (old south arabian letter ayn - 10A72) 10A93 OLD NORTH ARABIAN LETTER DAD * transliterated as 1E0D x (ethiopic syllable tza - 1340) x (old south arabian letter dhadhe - 10A73) 10A94 OLD NORTH ARABIAN LETTER GEEM * transliterated as g x (ethiopic syllable ga - 1308) x (old south arabian letter gimel - 10A74) 10A95 OLD NORTH ARABIAN LETTER DAL * transliterated as d x (ethiopic syllable da - 12F0) x (old south arabian letter daleth - 10A75) 10A96 OLD NORTH ARABIAN LETTER GHAIN * transliterated as 0121 x (old south arabian letter ghayn - 10A76) 10A97 OLD NORTH ARABIAN LETTER TAH * transliterated as 1E6D x (ethiopic syllable tha - 1320) x (old south arabian letter teth - 10A77) 10A98 OLD NORTH ARABIAN LETTER ZAIN * transliterated as z x (ethiopic syllable za - 12D8) x (old south arabian letter zayn - 10A78) 10A99 OLD NORTH ARABIAN LETTER THAL * transliterated as 1E0F x (old south arabian letter dhaleth - 10A79) 10A9A OLD NORTH ARABIAN LETTER YEH * transliterated as y x (ethiopic syllable ya - 12E8) x (old south arabian letter yodh - 10A7A) 10A9B OLD NORTH ARABIAN LETTER THEH * transliterated as 1E6F x (old south arabian letter thaw - 10A7B) 10A9C OLD NORTH ARABIAN LETTER ZAH * transliterated as 1E93 x (old south arabian letter theth - 10A7C) @ Numbers 10A9D OLD NORTH ARABIAN NUMBER ONE 10A9E OLD NORTH ARABIAN NUMBER TEN 10A9F OLD NORTH ARABIAN NUMBER TWENTY @@ 10AC0 Manichaean 10AFF @ Letters 10AC0 MANICHAEAN LETTER ALEPH 10AC1 MANICHAEAN LETTER BETH 10AC2 MANICHAEAN LETTER BHETH 10AC3 MANICHAEAN LETTER GIMEL 10AC4 MANICHAEAN LETTER GHIMEL 10AC5 MANICHAEAN LETTER DALETH ~ 10AC5 FE00 alternate form (isolate) 10AC6 MANICHAEAN LETTER HE ~ 10AC6 FE00 alternate form (isolate) 10AC7 MANICHAEAN LETTER WAW 10AC8 MANICHAEAN SIGN UD 10AC9 MANICHAEAN LETTER ZAYIN 10ACA MANICHAEAN LETTER ZHAYIN 10ACB MANICHAEAN LETTER JAYIN 10ACC MANICHAEAN LETTER JHAYIN 10ACD MANICHAEAN LETTER HETH 10ACE MANICHAEAN LETTER TETH 10ACF MANICHAEAN LETTER YODH 10AD0 MANICHAEAN LETTER KAPH 10AD1 MANICHAEAN LETTER XAPH 10AD2 MANICHAEAN LETTER KHAPH 10AD3 MANICHAEAN LETTER LAMEDH 10AD4 MANICHAEAN LETTER DHAMEDH 10AD5 MANICHAEAN LETTER THAMEDH 10AD6 MANICHAEAN LETTER MEM ~ 10AD6 FE00 alternate form (isolate) ~ 10AD6 FE00 alternate form (final) 10AD7 MANICHAEAN LETTER NUN ~ 10AD7 FE00 alternate form (isolate) 10AD8 MANICHAEAN LETTER SAMEKH 10AD9 MANICHAEAN LETTER AYIN 10ADA MANICHAEAN LETTER AAYIN 10ADB MANICHAEAN LETTER PE 10ADC MANICHAEAN LETTER FE 10ADD MANICHAEAN LETTER SADHE 10ADE MANICHAEAN LETTER QOPH 10ADF MANICHAEAN LETTER XOPH 10AE0 MANICHAEAN LETTER QHOPH 10AE1 MANICHAEAN LETTER RESH ~ 10AE1 FE00 alternate form (isolate) 10AE2 MANICHAEAN LETTER SHIN 10AE3 MANICHAEAN LETTER SSHIN 10AE4 MANICHAEAN LETTER TAW @ Combining marks 10AE5 MANICHAEAN ABBREVIATION MARK ABOVE 10AE6 MANICHAEAN ABBREVIATION MARK BELOW @ Numbers 10AEB MANICHAEAN NUMBER ONE 10AEC MANICHAEAN NUMBER FIVE 10AED MANICHAEAN NUMBER TEN 10AEE MANICHAEAN NUMBER TWENTY 10AEF MANICHAEAN NUMBER ONE HUNDRED @ Punctuation 10AF0 MANICHAEAN PUNCTUATION STAR 10AF1 MANICHAEAN PUNCTUATION FLEURON 10AF2 MANICHAEAN PUNCTUATION DOUBLE DOT WITHIN DOT 10AF3 MANICHAEAN PUNCTUATION DOT WITHIN DOT 10AF4 MANICHAEAN PUNCTUATION DOT 10AF5 MANICHAEAN PUNCTUATION TWO DOTS 10AF6 MANICHAEAN PUNCTUATION LINE FILLER @~ Standardized Variation Sequences @@ 10B00 Avestan 10B3F @ Vowels 10B00 AVESTAN LETTER A 10B01 AVESTAN LETTER AA 10B02 AVESTAN LETTER AO 10B03 AVESTAN LETTER AAO 10B04 AVESTAN LETTER AN 10B05 AVESTAN LETTER AAN 10B06 AVESTAN LETTER AE 10B07 AVESTAN LETTER AEE 10B08 AVESTAN LETTER E 10B09 AVESTAN LETTER EE 10B0A AVESTAN LETTER O 10B0B AVESTAN LETTER OO 10B0C AVESTAN LETTER I 10B0D AVESTAN LETTER II 10B0E AVESTAN LETTER U 10B0F AVESTAN LETTER UU @ Consonants 10B10 AVESTAN LETTER KE 10B11 AVESTAN LETTER XE 10B12 AVESTAN LETTER XYE 10B13 AVESTAN LETTER XVE 10B14 AVESTAN LETTER GE 10B15 AVESTAN LETTER GGE 10B16 AVESTAN LETTER GHE 10B17 AVESTAN LETTER CE 10B18 AVESTAN LETTER JE 10B19 AVESTAN LETTER TE 10B1A AVESTAN LETTER THE 10B1B AVESTAN LETTER DE 10B1C AVESTAN LETTER DHE 10B1D AVESTAN LETTER TTE 10B1E AVESTAN LETTER PE 10B1F AVESTAN LETTER FE 10B20 AVESTAN LETTER BE 10B21 AVESTAN LETTER BHE 10B22 AVESTAN LETTER NGE 10B23 AVESTAN LETTER NGYE 10B24 AVESTAN LETTER NGVE 10B25 AVESTAN LETTER NE 10B26 AVESTAN LETTER NYE 10B27 AVESTAN LETTER NNE 10B28 AVESTAN LETTER ME 10B29 AVESTAN LETTER HME 10B2A AVESTAN LETTER YYE 10B2B AVESTAN LETTER YE 10B2C AVESTAN LETTER VE 10B2D AVESTAN LETTER RE 10B2E AVESTAN LETTER LE 10B2F AVESTAN LETTER SE 10B30 AVESTAN LETTER ZE 10B31 AVESTAN LETTER SHE 10B32 AVESTAN LETTER ZHE 10B33 AVESTAN LETTER SHYE 10B34 AVESTAN LETTER SSHE 10B35 AVESTAN LETTER HE @ Punctuation 10B39 AVESTAN ABBREVIATION MARK x (ring operator - 2218) x (ring point - 2E30) x (word separator middle dot - 2E31) 10B3A TINY TWO DOTS OVER ONE DOT PUNCTUATION 10B3B SMALL TWO DOTS OVER ONE DOT PUNCTUATION 10B3C LARGE TWO DOTS OVER ONE DOT PUNCTUATION 10B3D LARGE ONE DOT OVER TWO DOTS PUNCTUATION 10B3E LARGE TWO RINGS OVER ONE RING PUNCTUATION 10B3F LARGE ONE RING OVER TWO RINGS PUNCTUATION @@ 10B40 Inscriptional Parthian 10B5F @ Letters 10B40 INSCRIPTIONAL PARTHIAN LETTER ALEPH 10B41 INSCRIPTIONAL PARTHIAN LETTER BETH 10B42 INSCRIPTIONAL PARTHIAN LETTER GIMEL 10B43 INSCRIPTIONAL PARTHIAN LETTER DALETH 10B44 INSCRIPTIONAL PARTHIAN LETTER HE 10B45 INSCRIPTIONAL PARTHIAN LETTER WAW 10B46 INSCRIPTIONAL PARTHIAN LETTER ZAYIN 10B47 INSCRIPTIONAL PARTHIAN LETTER HETH 10B48 INSCRIPTIONAL PARTHIAN LETTER TETH 10B49 INSCRIPTIONAL PARTHIAN LETTER YODH 10B4A INSCRIPTIONAL PARTHIAN LETTER KAPH 10B4B INSCRIPTIONAL PARTHIAN LETTER LAMEDH 10B4C INSCRIPTIONAL PARTHIAN LETTER MEM 10B4D INSCRIPTIONAL PARTHIAN LETTER NUN 10B4E INSCRIPTIONAL PARTHIAN LETTER SAMEKH 10B4F INSCRIPTIONAL PARTHIAN LETTER AYIN 10B50 INSCRIPTIONAL PARTHIAN LETTER PE 10B51 INSCRIPTIONAL PARTHIAN LETTER SADHE 10B52 INSCRIPTIONAL PARTHIAN LETTER QOPH 10B53 INSCRIPTIONAL PARTHIAN LETTER RESH 10B54 INSCRIPTIONAL PARTHIAN LETTER SHIN 10B55 INSCRIPTIONAL PARTHIAN LETTER TAW @ Numbers 10B58 INSCRIPTIONAL PARTHIAN NUMBER ONE 10B59 INSCRIPTIONAL PARTHIAN NUMBER TWO 10B5A INSCRIPTIONAL PARTHIAN NUMBER THREE 10B5B INSCRIPTIONAL PARTHIAN NUMBER FOUR 10B5C INSCRIPTIONAL PARTHIAN NUMBER TEN 10B5D INSCRIPTIONAL PARTHIAN NUMBER TWENTY 10B5E INSCRIPTIONAL PARTHIAN NUMBER ONE HUNDRED 10B5F INSCRIPTIONAL PARTHIAN NUMBER ONE THOUSAND @@ 10B60 Inscriptional Pahlavi 10B7F @ Letters 10B60 INSCRIPTIONAL PAHLAVI LETTER ALEPH 10B61 INSCRIPTIONAL PAHLAVI LETTER BETH 10B62 INSCRIPTIONAL PAHLAVI LETTER GIMEL 10B63 INSCRIPTIONAL PAHLAVI LETTER DALETH 10B64 INSCRIPTIONAL PAHLAVI LETTER HE 10B65 INSCRIPTIONAL PAHLAVI LETTER WAW-AYIN-RESH 10B66 INSCRIPTIONAL PAHLAVI LETTER ZAYIN 10B67 INSCRIPTIONAL PAHLAVI LETTER HETH 10B68 INSCRIPTIONAL PAHLAVI LETTER TETH 10B69 INSCRIPTIONAL PAHLAVI LETTER YODH 10B6A INSCRIPTIONAL PAHLAVI LETTER KAPH 10B6B INSCRIPTIONAL PAHLAVI LETTER LAMEDH 10B6C INSCRIPTIONAL PAHLAVI LETTER MEM-QOPH 10B6D INSCRIPTIONAL PAHLAVI LETTER NUN 10B6E INSCRIPTIONAL PAHLAVI LETTER SAMEKH 10B6F INSCRIPTIONAL PAHLAVI LETTER PE 10B70 INSCRIPTIONAL PAHLAVI LETTER SADHE 10B71 INSCRIPTIONAL PAHLAVI LETTER SHIN 10B72 INSCRIPTIONAL PAHLAVI LETTER TAW @ Numbers 10B78 INSCRIPTIONAL PAHLAVI NUMBER ONE 10B79 INSCRIPTIONAL PAHLAVI NUMBER TWO 10B7A INSCRIPTIONAL PAHLAVI NUMBER THREE 10B7B INSCRIPTIONAL PAHLAVI NUMBER FOUR 10B7C INSCRIPTIONAL PAHLAVI NUMBER TEN 10B7D INSCRIPTIONAL PAHLAVI NUMBER TWENTY 10B7E INSCRIPTIONAL PAHLAVI NUMBER ONE HUNDRED 10B7F INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND @@ 10B80 Psalter Pahlavi 10BAF @ Letters 10B80 PSALTER PAHLAVI LETTER ALEPH 10B81 PSALTER PAHLAVI LETTER BETH 10B82 PSALTER PAHLAVI LETTER GIMEL 10B83 PSALTER PAHLAVI LETTER DALETH 10B84 PSALTER PAHLAVI LETTER HE 10B85 PSALTER PAHLAVI LETTER WAW-AYIN-RESH 10B86 PSALTER PAHLAVI LETTER ZAYIN 10B87 PSALTER PAHLAVI LETTER HETH 10B88 PSALTER PAHLAVI LETTER YODH 10B89 PSALTER PAHLAVI LETTER KAPH 10B8A PSALTER PAHLAVI LETTER LAMEDH 10B8B PSALTER PAHLAVI LETTER MEM-QOPH 10B8C PSALTER PAHLAVI LETTER NUN 10B8D PSALTER PAHLAVI LETTER SAMEKH 10B8E PSALTER PAHLAVI LETTER PE 10B8F PSALTER PAHLAVI LETTER SADHE 10B90 PSALTER PAHLAVI LETTER SHIN 10B91 PSALTER PAHLAVI LETTER TAW @ Punctuation 10B99 PSALTER PAHLAVI SECTION MARK 10B9A PSALTER PAHLAVI TURNED SECTION MARK 10B9B PSALTER PAHLAVI FOUR DOTS WITH CROSS 10B9C PSALTER PAHLAVI FOUR DOTS WITH DOT @ Numbers 10BA9 PSALTER PAHLAVI NUMBER ONE 10BAA PSALTER PAHLAVI NUMBER TWO 10BAB PSALTER PAHLAVI NUMBER THREE 10BAC PSALTER PAHLAVI NUMBER FOUR 10BAD PSALTER PAHLAVI NUMBER TEN 10BAE PSALTER PAHLAVI NUMBER TWENTY 10BAF PSALTER PAHLAVI NUMBER ONE HUNDRED @@ 10C00 Old Turkic 10C4F @ Vowels 10C00 OLD TURKIC LETTER ORKHON A 10C01 OLD TURKIC LETTER YENISEI A 10C02 OLD TURKIC LETTER YENISEI AE 10C03 OLD TURKIC LETTER ORKHON I 10C04 OLD TURKIC LETTER YENISEI I 10C05 OLD TURKIC LETTER YENISEI E 10C06 OLD TURKIC LETTER ORKHON O 10C07 OLD TURKIC LETTER ORKHON OE 10C08 OLD TURKIC LETTER YENISEI OE @ Consonants 10C09 OLD TURKIC LETTER ORKHON AB 10C0A OLD TURKIC LETTER YENISEI AB 10C0B OLD TURKIC LETTER ORKHON AEB 10C0C OLD TURKIC LETTER YENISEI AEB 10C0D OLD TURKIC LETTER ORKHON AG 10C0E OLD TURKIC LETTER YENISEI AG 10C0F OLD TURKIC LETTER ORKHON AEG 10C10 OLD TURKIC LETTER YENISEI AEG 10C11 OLD TURKIC LETTER ORKHON AD 10C12 OLD TURKIC LETTER YENISEI AD 10C13 OLD TURKIC LETTER ORKHON AED 10C14 OLD TURKIC LETTER ORKHON EZ 10C15 OLD TURKIC LETTER YENISEI EZ 10C16 OLD TURKIC LETTER ORKHON AY 10C17 OLD TURKIC LETTER YENISEI AY 10C18 OLD TURKIC LETTER ORKHON AEY 10C19 OLD TURKIC LETTER YENISEI AEY 10C1A OLD TURKIC LETTER ORKHON AEK 10C1B OLD TURKIC LETTER YENISEI AEK 10C1C OLD TURKIC LETTER ORKHON OEK 10C1D OLD TURKIC LETTER YENISEI OEK 10C1E OLD TURKIC LETTER ORKHON AL 10C1F OLD TURKIC LETTER YENISEI AL 10C20 OLD TURKIC LETTER ORKHON AEL 10C21 OLD TURKIC LETTER ORKHON ELT 10C22 OLD TURKIC LETTER ORKHON EM 10C23 OLD TURKIC LETTER ORKHON AN 10C24 OLD TURKIC LETTER ORKHON AEN 10C25 OLD TURKIC LETTER YENISEI AEN 10C26 OLD TURKIC LETTER ORKHON ENT 10C27 OLD TURKIC LETTER YENISEI ENT 10C28 OLD TURKIC LETTER ORKHON ENC 10C29 OLD TURKIC LETTER YENISEI ENC 10C2A OLD TURKIC LETTER ORKHON ENY 10C2B OLD TURKIC LETTER YENISEI ENY 10C2C OLD TURKIC LETTER YENISEI ANG 10C2D OLD TURKIC LETTER ORKHON ENG 10C2E OLD TURKIC LETTER YENISEI AENG 10C2F OLD TURKIC LETTER ORKHON EP 10C30 OLD TURKIC LETTER ORKHON OP 10C31 OLD TURKIC LETTER ORKHON IC 10C32 OLD TURKIC LETTER ORKHON EC 10C33 OLD TURKIC LETTER YENISEI EC 10C34 OLD TURKIC LETTER ORKHON AQ 10C35 OLD TURKIC LETTER YENISEI AQ 10C36 OLD TURKIC LETTER ORKHON IQ 10C37 OLD TURKIC LETTER YENISEI IQ 10C38 OLD TURKIC LETTER ORKHON OQ 10C39 OLD TURKIC LETTER YENISEI OQ 10C3A OLD TURKIC LETTER ORKHON AR 10C3B OLD TURKIC LETTER YENISEI AR 10C3C OLD TURKIC LETTER ORKHON AER 10C3D OLD TURKIC LETTER ORKHON AS 10C3E OLD TURKIC LETTER ORKHON AES 10C3F OLD TURKIC LETTER ORKHON ASH 10C40 OLD TURKIC LETTER YENISEI ASH 10C41 OLD TURKIC LETTER ORKHON ESH 10C42 OLD TURKIC LETTER YENISEI ESH 10C43 OLD TURKIC LETTER ORKHON AT 10C44 OLD TURKIC LETTER YENISEI AT 10C45 OLD TURKIC LETTER ORKHON AET 10C46 OLD TURKIC LETTER YENISEI AET 10C47 OLD TURKIC LETTER ORKHON OT 10C48 OLD TURKIC LETTER ORKHON BASH @@ 10C80 Old Hungarian 10CFF @ Uppercase letters @+ The use of uppercase letters is a modern innovation. 10C80 OLD HUNGARIAN CAPITAL LETTER A 10C81 OLD HUNGARIAN CAPITAL LETTER AA = Á 10C82 OLD HUNGARIAN CAPITAL LETTER EB = B 10C83 OLD HUNGARIAN CAPITAL LETTER AMB 10C84 OLD HUNGARIAN CAPITAL LETTER EC = C 10C85 OLD HUNGARIAN CAPITAL LETTER ENC 10C86 OLD HUNGARIAN CAPITAL LETTER ECS = Cs 10C87 OLD HUNGARIAN CAPITAL LETTER ED = D 10C88 OLD HUNGARIAN CAPITAL LETTER AND 10C89 OLD HUNGARIAN CAPITAL LETTER E 10C8A OLD HUNGARIAN CAPITAL LETTER CLOSE E = Ë 10C8B OLD HUNGARIAN CAPITAL LETTER EE = É 10C8C OLD HUNGARIAN CAPITAL LETTER EF = F 10C8D OLD HUNGARIAN CAPITAL LETTER EG = G 10C8E OLD HUNGARIAN CAPITAL LETTER EGY = Gy 10C8F OLD HUNGARIAN CAPITAL LETTER EH = H 10C90 OLD HUNGARIAN CAPITAL LETTER I 10C91 OLD HUNGARIAN CAPITAL LETTER II = Í 10C92 OLD HUNGARIAN CAPITAL LETTER EJ = J 10C93 OLD HUNGARIAN CAPITAL LETTER EK = K 10C94 OLD HUNGARIAN CAPITAL LETTER AK 10C95 OLD HUNGARIAN CAPITAL LETTER UNK 10C96 OLD HUNGARIAN CAPITAL LETTER EL = L 10C97 OLD HUNGARIAN CAPITAL LETTER ELY = Ly 10C98 OLD HUNGARIAN CAPITAL LETTER EM = M 10C99 OLD HUNGARIAN CAPITAL LETTER EN = N 10C9A OLD HUNGARIAN CAPITAL LETTER ENY = Ny 10C9B OLD HUNGARIAN CAPITAL LETTER O = O 10C9C OLD HUNGARIAN CAPITAL LETTER OO = Ó 10C9D OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG OE = Ö 10C9E OLD HUNGARIAN CAPITAL LETTER RUDIMENTA OE = Ö 10C9F OLD HUNGARIAN CAPITAL LETTER OEE = O with double acute 10CA0 OLD HUNGARIAN CAPITAL LETTER EP = P 10CA1 OLD HUNGARIAN CAPITAL LETTER EMP 10CA2 OLD HUNGARIAN CAPITAL LETTER ER = R 10CA3 OLD HUNGARIAN CAPITAL LETTER SHORT ER 10CA4 OLD HUNGARIAN CAPITAL LETTER ES = S 10CA5 OLD HUNGARIAN CAPITAL LETTER ESZ = Sz 10CA6 OLD HUNGARIAN CAPITAL LETTER ET = T 10CA7 OLD HUNGARIAN CAPITAL LETTER ENT * also used for Ant and Int 10CA8 OLD HUNGARIAN CAPITAL LETTER ETY = Ty 10CA9 OLD HUNGARIAN CAPITAL LETTER ECH 10CAA OLD HUNGARIAN CAPITAL LETTER U 10CAB OLD HUNGARIAN CAPITAL LETTER UU = Ú 10CAC OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG UE = Ü * also used for Ö * used for U with double acute in Sándor Forrai's orthography 10CAD OLD HUNGARIAN CAPITAL LETTER RUDIMENTA UE = Ü, U with double acute * used for Ü in Sándor Forrai's orthography 10CAE OLD HUNGARIAN CAPITAL LETTER EV = V 10CAF OLD HUNGARIAN CAPITAL LETTER EZ = Z 10CB0 OLD HUNGARIAN CAPITAL LETTER EZS = Zs 10CB1 OLD HUNGARIAN CAPITAL LETTER ENT-SHAPED SIGN 10CB2 OLD HUNGARIAN CAPITAL LETTER US @ Lowercase letters 10CC0 OLD HUNGARIAN SMALL LETTER A 10CC1 OLD HUNGARIAN SMALL LETTER AA = á 10CC2 OLD HUNGARIAN SMALL LETTER EB = b 10CC3 OLD HUNGARIAN SMALL LETTER AMB 10CC4 OLD HUNGARIAN SMALL LETTER EC = c 10CC5 OLD HUNGARIAN SMALL LETTER ENC 10CC6 OLD HUNGARIAN SMALL LETTER ECS = cs 10CC7 OLD HUNGARIAN SMALL LETTER ED = d 10CC8 OLD HUNGARIAN SMALL LETTER AND 10CC9 OLD HUNGARIAN SMALL LETTER E 10CCA OLD HUNGARIAN SMALL LETTER CLOSE E = ë 10CCB OLD HUNGARIAN SMALL LETTER EE = é 10CCC OLD HUNGARIAN SMALL LETTER EF = f 10CCD OLD HUNGARIAN SMALL LETTER EG = g 10CCE OLD HUNGARIAN SMALL LETTER EGY = gy 10CCF OLD HUNGARIAN SMALL LETTER EH = h 10CD0 OLD HUNGARIAN SMALL LETTER I 10CD1 OLD HUNGARIAN SMALL LETTER II = í 10CD2 OLD HUNGARIAN SMALL LETTER EJ = j 10CD3 OLD HUNGARIAN SMALL LETTER EK = k 10CD4 OLD HUNGARIAN SMALL LETTER AK 10CD5 OLD HUNGARIAN SMALL LETTER UNK 10CD6 OLD HUNGARIAN SMALL LETTER EL = l 10CD7 OLD HUNGARIAN SMALL LETTER ELY = ly 10CD8 OLD HUNGARIAN SMALL LETTER EM = m 10CD9 OLD HUNGARIAN SMALL LETTER EN = n 10CDA OLD HUNGARIAN SMALL LETTER ENY = ny 10CDB OLD HUNGARIAN SMALL LETTER O 10CDC OLD HUNGARIAN SMALL LETTER OO = ó 10CDD OLD HUNGARIAN SMALL LETTER NIKOLSBURG OE = ö * also used for ü 10CDE OLD HUNGARIAN SMALL LETTER RUDIMENTA OE = ö 10CDF OLD HUNGARIAN SMALL LETTER OEE = o with double acute 10CE0 OLD HUNGARIAN SMALL LETTER EP = p 10CE1 OLD HUNGARIAN SMALL LETTER EMP 10CE2 OLD HUNGARIAN SMALL LETTER ER = r 10CE3 OLD HUNGARIAN SMALL LETTER SHORT ER 10CE4 OLD HUNGARIAN SMALL LETTER ES = s 10CE5 OLD HUNGARIAN SMALL LETTER ESZ = sz 10CE6 OLD HUNGARIAN SMALL LETTER ET = t 10CE7 OLD HUNGARIAN SMALL LETTER ENT * also used for ant and int 10CE8 OLD HUNGARIAN SMALL LETTER ETY = ty 10CE9 OLD HUNGARIAN SMALL LETTER ECH 10CEA OLD HUNGARIAN SMALL LETTER U 10CEB OLD HUNGARIAN SMALL LETTER UU = ú 10CEC OLD HUNGARIAN SMALL LETTER NIKOLSBURG UE = ü * also used for ö * used for u with double acute in Sándor Forrai's orthography 10CED OLD HUNGARIAN SMALL LETTER RUDIMENTA UE = ü, u with double acute * used for ü in Sándor Forrai's orthography 10CEE OLD HUNGARIAN SMALL LETTER EV = v 10CEF OLD HUNGARIAN SMALL LETTER EZ = z 10CF0 OLD HUNGARIAN SMALL LETTER EZS = zs 10CF1 OLD HUNGARIAN SMALL LETTER ENT-SHAPED SIGN * in earlier literature called "tprus" (later recognized as an abbreviation for "temperius") 10CF2 OLD HUNGARIAN SMALL LETTER US @ Numbers 10CFA OLD HUNGARIAN NUMBER ONE 10CFB OLD HUNGARIAN NUMBER FIVE 10CFC OLD HUNGARIAN NUMBER TEN 10CFD OLD HUNGARIAN NUMBER FIFTY 10CFE OLD HUNGARIAN NUMBER ONE HUNDRED 10CFF OLD HUNGARIAN NUMBER ONE THOUSAND @@ 10E60 Rumi Numeral Symbols 10E7F @ Digits 10E60 RUMI DIGIT ONE 10E61 RUMI DIGIT TWO 10E62 RUMI DIGIT THREE 10E63 RUMI DIGIT FOUR 10E64 RUMI DIGIT FIVE 10E65 RUMI DIGIT SIX 10E66 RUMI DIGIT SEVEN 10E67 RUMI DIGIT EIGHT 10E68 RUMI DIGIT NINE @ Numbers 10E69 RUMI NUMBER TEN 10E6A RUMI NUMBER TWENTY 10E6B RUMI NUMBER THIRTY 10E6C RUMI NUMBER FORTY 10E6D RUMI NUMBER FIFTY 10E6E RUMI NUMBER SIXTY 10E6F RUMI NUMBER SEVENTY 10E70 RUMI NUMBER EIGHTY 10E71 RUMI NUMBER NINETY 10E72 RUMI NUMBER ONE HUNDRED 10E73 RUMI NUMBER TWO HUNDRED 10E74 RUMI NUMBER THREE HUNDRED 10E75 RUMI NUMBER FOUR HUNDRED 10E76 RUMI NUMBER FIVE HUNDRED 10E77 RUMI NUMBER SIX HUNDRED 10E78 RUMI NUMBER SEVEN HUNDRED 10E79 RUMI NUMBER EIGHT HUNDRED 10E7A RUMI NUMBER NINE HUNDRED @ Fractions 10E7B RUMI FRACTION ONE HALF 10E7C RUMI FRACTION ONE QUARTER 10E7D RUMI FRACTION ONE THIRD 10E7E RUMI FRACTION TWO THIRDS @@ 11000 Brahmi 1107F @ Various signs 11000 BRAHMI SIGN CANDRABINDU 11001 BRAHMI SIGN ANUSVARA 11002 BRAHMI SIGN VISARGA 11003 BRAHMI SIGN JIHVAMULIYA 11004 BRAHMI SIGN UPADHMANIYA @ Independent vowels 11005 BRAHMI LETTER A 11006 BRAHMI LETTER AA 11007 BRAHMI LETTER I 11008 BRAHMI LETTER II 11009 BRAHMI LETTER U 1100A BRAHMI LETTER UU 1100B BRAHMI LETTER VOCALIC R 1100C BRAHMI LETTER VOCALIC RR 1100D BRAHMI LETTER VOCALIC L 1100E BRAHMI LETTER VOCALIC LL 1100F BRAHMI LETTER E 11010 BRAHMI LETTER AI 11011 BRAHMI LETTER O 11012 BRAHMI LETTER AU @ Consonants 11013 BRAHMI LETTER KA 11014 BRAHMI LETTER KHA 11015 BRAHMI LETTER GA 11016 BRAHMI LETTER GHA 11017 BRAHMI LETTER NGA 11018 BRAHMI LETTER CA 11019 BRAHMI LETTER CHA 1101A BRAHMI LETTER JA 1101B BRAHMI LETTER JHA 1101C BRAHMI LETTER NYA 1101D BRAHMI LETTER TTA 1101E BRAHMI LETTER TTHA 1101F BRAHMI LETTER DDA 11020 BRAHMI LETTER DDHA 11021 BRAHMI LETTER NNA 11022 BRAHMI LETTER TA 11023 BRAHMI LETTER THA 11024 BRAHMI LETTER DA 11025 BRAHMI LETTER DHA 11026 BRAHMI LETTER NA 11027 BRAHMI LETTER PA 11028 BRAHMI LETTER PHA 11029 BRAHMI LETTER BA 1102A BRAHMI LETTER BHA 1102B BRAHMI LETTER MA 1102C BRAHMI LETTER YA 1102D BRAHMI LETTER RA 1102E BRAHMI LETTER LA 1102F BRAHMI LETTER VA 11030 BRAHMI LETTER SHA 11031 BRAHMI LETTER SSA 11032 BRAHMI LETTER SA 11033 BRAHMI LETTER HA 11034 BRAHMI LETTER LLA 11035 BRAHMI LETTER OLD TAMIL LLLA 11036 BRAHMI LETTER OLD TAMIL RRA 11037 BRAHMI LETTER OLD TAMIL NNNA @ Dependent vowel signs 11038 BRAHMI VOWEL SIGN AA 11039 BRAHMI VOWEL SIGN BHATTIPROLU AA 1103A BRAHMI VOWEL SIGN I 1103B BRAHMI VOWEL SIGN II 1103C BRAHMI VOWEL SIGN U 1103D BRAHMI VOWEL SIGN UU 1103E BRAHMI VOWEL SIGN VOCALIC R 1103F BRAHMI VOWEL SIGN VOCALIC RR 11040 BRAHMI VOWEL SIGN VOCALIC L 11041 BRAHMI VOWEL SIGN VOCALIC LL 11042 BRAHMI VOWEL SIGN E 11043 BRAHMI VOWEL SIGN AI 11044 BRAHMI VOWEL SIGN O 11045 BRAHMI VOWEL SIGN AU @ Virama 11046 BRAHMI VIRAMA @ Punctuation 11047 BRAHMI DANDA 11048 BRAHMI DOUBLE DANDA 11049 BRAHMI PUNCTUATION DOT 1104A BRAHMI PUNCTUATION DOUBLE DOT 1104B BRAHMI PUNCTUATION LINE 1104C BRAHMI PUNCTUATION CRESCENT BAR 1104D BRAHMI PUNCTUATION LOTUS @ Numbers 11052 BRAHMI NUMBER ONE 11053 BRAHMI NUMBER TWO 11054 BRAHMI NUMBER THREE 11055 BRAHMI NUMBER FOUR 11056 BRAHMI NUMBER FIVE 11057 BRAHMI NUMBER SIX 11058 BRAHMI NUMBER SEVEN 11059 BRAHMI NUMBER EIGHT 1105A BRAHMI NUMBER NINE 1105B BRAHMI NUMBER TEN 1105C BRAHMI NUMBER TWENTY 1105D BRAHMI NUMBER THIRTY 1105E BRAHMI NUMBER FORTY 1105F BRAHMI NUMBER FIFTY 11060 BRAHMI NUMBER SIXTY 11061 BRAHMI NUMBER SEVENTY 11062 BRAHMI NUMBER EIGHTY 11063 BRAHMI NUMBER NINETY 11064 BRAHMI NUMBER ONE HUNDRED 11065 BRAHMI NUMBER ONE THOUSAND @ Digits 11066 BRAHMI DIGIT ZERO 11067 BRAHMI DIGIT ONE 11068 BRAHMI DIGIT TWO 11069 BRAHMI DIGIT THREE 1106A BRAHMI DIGIT FOUR 1106B BRAHMI DIGIT FIVE 1106C BRAHMI DIGIT SIX 1106D BRAHMI DIGIT SEVEN 1106E BRAHMI DIGIT EIGHT 1106F BRAHMI DIGIT NINE @ Number joiner 1107F BRAHMI NUMBER JOINER * a virama used to form ligatures between Brahmi numbers signifying multiplication @@ 11080 Kaithi 110CF @ Various signs 11080 KAITHI SIGN CANDRABINDU 11081 KAITHI SIGN ANUSVARA 11082 KAITHI SIGN VISARGA @ Independent vowels 11083 KAITHI LETTER A 11084 KAITHI LETTER AA 11085 KAITHI LETTER I 11086 KAITHI LETTER II 11087 KAITHI LETTER U 11088 KAITHI LETTER UU 11089 KAITHI LETTER E 1108A KAITHI LETTER AI 1108B KAITHI LETTER O 1108C KAITHI LETTER AU @ Consonants 1108D KAITHI LETTER KA 1108E KAITHI LETTER KHA 1108F KAITHI LETTER GA 11090 KAITHI LETTER GHA 11091 KAITHI LETTER NGA 11092 KAITHI LETTER CA 11093 KAITHI LETTER CHA 11094 KAITHI LETTER JA 11095 KAITHI LETTER JHA 11096 KAITHI LETTER NYA 11097 KAITHI LETTER TTA 11098 KAITHI LETTER TTHA 11099 KAITHI LETTER DDA 1109A KAITHI LETTER DDDHA : 11099 110BA 1109B KAITHI LETTER DDHA 1109C KAITHI LETTER RHA : 1109B 110BA 1109D KAITHI LETTER NNA 1109E KAITHI LETTER TA 1109F KAITHI LETTER THA 110A0 KAITHI LETTER DA 110A1 KAITHI LETTER DHA 110A2 KAITHI LETTER NA 110A3 KAITHI LETTER PA 110A4 KAITHI LETTER PHA 110A5 KAITHI LETTER BA 110A6 KAITHI LETTER BHA 110A7 KAITHI LETTER MA 110A8 KAITHI LETTER YA * glyph may be rendered with or without the visible dot 110A9 KAITHI LETTER RA 110AA KAITHI LETTER LA 110AB KAITHI LETTER VA : 110A5 110BA 110AC KAITHI LETTER SHA 110AD KAITHI LETTER SSA 110AE KAITHI LETTER SA 110AF KAITHI LETTER HA @ Dependent vowel signs 110B0 KAITHI VOWEL SIGN AA 110B1 KAITHI VOWEL SIGN I 110B2 KAITHI VOWEL SIGN II 110B3 KAITHI VOWEL SIGN U 110B4 KAITHI VOWEL SIGN UU 110B5 KAITHI VOWEL SIGN E 110B6 KAITHI VOWEL SIGN AI 110B7 KAITHI VOWEL SIGN O 110B8 KAITHI VOWEL SIGN AU @ Various signs 110B9 KAITHI SIGN VIRAMA 110BA KAITHI SIGN NUKTA 110BB KAITHI ABBREVIATION SIGN 110BC KAITHI ENUMERATION SIGN 110BD KAITHI NUMBER SIGN 110BE KAITHI SECTION MARK * marks end of sentence x (khojki section mark - 1123B) 110BF KAITHI DOUBLE SECTION MARK * delimits larger chunks of text, such as paragraphs x (khojki double section mark - 1123C) 110C0 KAITHI DANDA 110C1 KAITHI DOUBLE DANDA @@ 110D0 Sora Sompeng 110FF @ Consonants 110D0 SORA SOMPENG LETTER SAH 110D1 SORA SOMPENG LETTER TAH 110D2 SORA SOMPENG LETTER BAH 110D3 SORA SOMPENG LETTER CAH 110D4 SORA SOMPENG LETTER DAH 110D5 SORA SOMPENG LETTER GAH 110D6 SORA SOMPENG LETTER MAH 110D7 SORA SOMPENG LETTER NGAH 110D8 SORA SOMPENG LETTER LAH 110D9 SORA SOMPENG LETTER NAH 110DA SORA SOMPENG LETTER VAH 110DB SORA SOMPENG LETTER PAH 110DC SORA SOMPENG LETTER YAH 110DD SORA SOMPENG LETTER RAH 110DE SORA SOMPENG LETTER HAH 110DF SORA SOMPENG LETTER KAH 110E0 SORA SOMPENG LETTER JAH 110E1 SORA SOMPENG LETTER NYAH @ Vowels 110E2 SORA SOMPENG LETTER AH 110E3 SORA SOMPENG LETTER EEH 110E4 SORA SOMPENG LETTER IH 110E5 SORA SOMPENG LETTER UH 110E6 SORA SOMPENG LETTER OH 110E7 SORA SOMPENG LETTER EH @ Other letter 110E8 SORA SOMPENG LETTER MAE @ Digits 110F0 SORA SOMPENG DIGIT ZERO 110F1 SORA SOMPENG DIGIT ONE 110F2 SORA SOMPENG DIGIT TWO 110F3 SORA SOMPENG DIGIT THREE 110F4 SORA SOMPENG DIGIT FOUR 110F5 SORA SOMPENG DIGIT FIVE 110F6 SORA SOMPENG DIGIT SIX 110F7 SORA SOMPENG DIGIT SEVEN 110F8 SORA SOMPENG DIGIT EIGHT 110F9 SORA SOMPENG DIGIT NINE @@ 11100 Chakma 1114F @ Various signs 11100 CHAKMA SIGN CANDRABINDU = caanaphupudaa 11101 CHAKMA SIGN ANUSVARA = ekaphudaa 11102 CHAKMA SIGN VISARGA = dviphudaa @ Independent vowels 11103 CHAKMA LETTER AA = pichapujhaa aa 11104 CHAKMA LETTER I = delabhaangagaa i 11105 CHAKMA LETTER U = bacacu u 11106 CHAKMA LETTER E = lejaubaa e @ Consonants 11107 CHAKMA LETTER KAA = cucyaangyaa kaa 11108 CHAKMA LETTER KHAA = grajaangyaa khaa 11109 CHAKMA LETTER GAA = caandyaa gaa 1110A CHAKMA LETTER GHAA = tinaddaalyaa ghaa 1110B CHAKMA LETTER NGAA = cilaama ngaa 1110C CHAKMA LETTER CAA = dvibhalyaa caa 1110D CHAKMA LETTER CHAA = majaraa chaa 1110E CHAKMA LETTER JAA = dvipadalaa jaa 1110F CHAKMA LETTER JHAA = uraauraa jhaa 11110 CHAKMA LETTER NYAA = silaacyaa nyaa 11111 CHAKMA LETTER TTAA = dviyaadaat ttaa 11112 CHAKMA LETTER TTHAA = phudaadviyaat tthaa 11113 CHAKMA LETTER DDAA = aadudaangaat ddaa 11114 CHAKMA LETTER DDHAA = lejabharaat ddhaa 11115 CHAKMA LETTER NNAA = pettttuyaa nnaa 11116 CHAKMA LETTER TAA = ghangadaat taa 11117 CHAKMA LETTER THAA = jagadaat thaa 11118 CHAKMA LETTER DAA = dolaniit daa 11119 CHAKMA LETTER DHAA = talamuyaat dhaa 1111A CHAKMA LETTER NAA = phaarabaanyaa naa 1111B CHAKMA LETTER PAA = paalyaa paa 1111C CHAKMA LETTER PHAA = ubaraphudaa phaa 1111D CHAKMA LETTER BAA = ubaramuyaa baa 1111E CHAKMA LETTER BHAA = ciraddaalyaa bhaa 1111F CHAKMA LETTER MAA = bugatpadalaa maa 11120 CHAKMA LETTER YYAA = cimayyaa yyaa 11121 CHAKMA LETTER YAA = jilyaa yaa 11122 CHAKMA LETTER RAA = dvidaayyaa raa 11123 CHAKMA LETTER LAA = talamuyaa laa 11124 CHAKMA LETTER WAA = bajhonyaa waa 11125 CHAKMA LETTER SAA = bhudibukyaa saa 11126 CHAKMA LETTER HAA = ubaramuyaa haa @ Dependent vowel signs 11127 CHAKMA VOWEL SIGN A = ubaratulyaa a 11128 CHAKMA VOWEL SIGN I = bahryaa i 11129 CHAKMA VOWEL SIGN II = baaniiphadaa ii 1112A CHAKMA VOWEL SIGN U = ekattaana u 1112B CHAKMA VOWEL SIGN UU = dvittaana uu 1112C CHAKMA VOWEL SIGN E = ekaara e 1112D CHAKMA VOWEL SIGN AI = delabhaanga ai 1112E CHAKMA VOWEL SIGN O = okaara o : 11131 11127 1112F CHAKMA VOWEL SIGN AU = aukaara au : 11132 11127 11130 CHAKMA VOWEL SIGN OI = oikaara oi 11131 CHAKMA O MARK 11132 CHAKMA AU MARK @ Various signs 11133 CHAKMA VIRAMA * used to form conjuncts x (myanmar sign virama - 1039) 11134 CHAKMA MAAYYAA * killer x (myanmar sign asat - 103A) @ Digits 11136 CHAKMA DIGIT ZERO 11137 CHAKMA DIGIT ONE 11138 CHAKMA DIGIT TWO 11139 CHAKMA DIGIT THREE 1113A CHAKMA DIGIT FOUR 1113B CHAKMA DIGIT FIVE 1113C CHAKMA DIGIT SIX 1113D CHAKMA DIGIT SEVEN 1113E CHAKMA DIGIT EIGHT 1113F CHAKMA DIGIT NINE @ Punctuation 11140 CHAKMA SECTION MARK = phulacihna 11141 CHAKMA DANDA = ekacilyaa 11142 CHAKMA DOUBLE DANDA = dvicilyaa 11143 CHAKMA QUESTION MARK = pujhaar @@ 11150 Mahajani 1117F @ Vowels 11150 MAHAJANI LETTER A 11151 MAHAJANI LETTER I 11152 MAHAJANI LETTER U 11153 MAHAJANI LETTER E 11154 MAHAJANI LETTER O @ Consonants 11155 MAHAJANI LETTER KA 11156 MAHAJANI LETTER KHA 11157 MAHAJANI LETTER GA 11158 MAHAJANI LETTER GHA 11159 MAHAJANI LETTER CA 1115A MAHAJANI LETTER CHA 1115B MAHAJANI LETTER JA 1115C MAHAJANI LETTER JHA 1115D MAHAJANI LETTER NYA 1115E MAHAJANI LETTER TTA 1115F MAHAJANI LETTER TTHA 11160 MAHAJANI LETTER DDA 11161 MAHAJANI LETTER DDHA 11162 MAHAJANI LETTER NNA 11163 MAHAJANI LETTER TA 11164 MAHAJANI LETTER THA 11165 MAHAJANI LETTER DA 11166 MAHAJANI LETTER DHA 11167 MAHAJANI LETTER NA 11168 MAHAJANI LETTER PA 11169 MAHAJANI LETTER PHA 1116A MAHAJANI LETTER BA 1116B MAHAJANI LETTER BHA 1116C MAHAJANI LETTER MA 1116D MAHAJANI LETTER RA 1116E MAHAJANI LETTER LA 1116F MAHAJANI LETTER VA 11170 MAHAJANI LETTER SA 11171 MAHAJANI LETTER HA 11172 MAHAJANI LETTER RRA @ Sign 11173 MAHAJANI SIGN NUKTA @ Punctuation 11174 MAHAJANI ABBREVIATION SIGN 11175 MAHAJANI SECTION MARK @ Word ligature 11176 MAHAJANI LIGATURE SHRI @@ 11180 Sharada 111DF @ Various signs 11180 SHARADA SIGN CANDRABINDU 11181 SHARADA SIGN ANUSVARA 11182 SHARADA SIGN VISARGA @ Independent vowels 11183 SHARADA LETTER A 11184 SHARADA LETTER AA 11185 SHARADA LETTER I 11186 SHARADA LETTER II 11187 SHARADA LETTER U 11188 SHARADA LETTER UU 11189 SHARADA LETTER VOCALIC R 1118A SHARADA LETTER VOCALIC RR 1118B SHARADA LETTER VOCALIC L 1118C SHARADA LETTER VOCALIC LL 1118D SHARADA LETTER E 1118E SHARADA LETTER AI 1118F SHARADA LETTER O 11190 SHARADA LETTER AU @ Consonants 11191 SHARADA LETTER KA 11192 SHARADA LETTER KHA 11193 SHARADA LETTER GA 11194 SHARADA LETTER GHA 11195 SHARADA LETTER NGA 11196 SHARADA LETTER CA 11197 SHARADA LETTER CHA 11198 SHARADA LETTER JA 11199 SHARADA LETTER JHA 1119A SHARADA LETTER NYA 1119B SHARADA LETTER TTA 1119C SHARADA LETTER TTHA 1119D SHARADA LETTER DDA 1119E SHARADA LETTER DDHA 1119F SHARADA LETTER NNA 111A0 SHARADA LETTER TA 111A1 SHARADA LETTER THA 111A2 SHARADA LETTER DA 111A3 SHARADA LETTER DHA 111A4 SHARADA LETTER NA 111A5 SHARADA LETTER PA 111A6 SHARADA LETTER PHA 111A7 SHARADA LETTER BA 111A8 SHARADA LETTER BHA 111A9 SHARADA LETTER MA 111AA SHARADA LETTER YA 111AB SHARADA LETTER RA 111AC SHARADA LETTER LA 111AD SHARADA LETTER LLA 111AE SHARADA LETTER VA 111AF SHARADA LETTER SHA 111B0 SHARADA LETTER SSA 111B1 SHARADA LETTER SA 111B2 SHARADA LETTER HA @ Dependent vowel signs 111B3 SHARADA VOWEL SIGN AA 111B4 SHARADA VOWEL SIGN I 111B5 SHARADA VOWEL SIGN II 111B6 SHARADA VOWEL SIGN U 111B7 SHARADA VOWEL SIGN UU 111B8 SHARADA VOWEL SIGN VOCALIC R 111B9 SHARADA VOWEL SIGN VOCALIC RR 111BA SHARADA VOWEL SIGN VOCALIC L 111BB SHARADA VOWEL SIGN VOCALIC LL 111BC SHARADA VOWEL SIGN E 111BD SHARADA VOWEL SIGN AI 111BE SHARADA VOWEL SIGN O 111BF SHARADA VOWEL SIGN AU @ Virama 111C0 SHARADA SIGN VIRAMA @ Various signs 111C1 SHARADA SIGN AVAGRAHA 111C2 SHARADA SIGN JIHVAMULIYA 111C3 SHARADA SIGN UPADHMANIYA 111C4 SHARADA OM * use of this character is discouraged * recommended sequence is 1118F 11180 @ Punctuation 111C5 SHARADA DANDA 111C6 SHARADA DOUBLE DANDA 111C7 SHARADA ABBREVIATION SIGN 111C8 SHARADA SEPARATOR 111C9 SHARADA SANDHI MARK * indicates external sandhi in Sanskrit documents @ Signs for Kashmiri 111CA SHARADA SIGN NUKTA * for extending the alphabet to new letters 111CB SHARADA VOWEL MODIFIER MARK * represents regressive metaphony 111CC SHARADA EXTRA SHORT VOWEL MARK * used for writing "matra-vowels" @ Punctuation 111CD SHARADA SUTRA MARK * used for indicating the end of a sutra in the Bakhshali manuscript @ Digits 111D0 SHARADA DIGIT ZERO 111D1 SHARADA DIGIT ONE 111D2 SHARADA DIGIT TWO 111D3 SHARADA DIGIT THREE 111D4 SHARADA DIGIT FOUR 111D5 SHARADA DIGIT FIVE 111D6 SHARADA DIGIT SIX 111D7 SHARADA DIGIT SEVEN 111D8 SHARADA DIGIT EIGHT 111D9 SHARADA DIGIT NINE @ Punctuation 111DA SHARADA EKAM * invocation symbol used at the beginning or end of texts 111DB SHARADA SIGN SIDDHAM = siddhirastu * used at the beginning of texts as an invocation x (devanagari sign siddham - A8FC) 111DC SHARADA HEADSTROKE * used for joining words across imperfections x (devanagari headstroke - A8FB) 111DD SHARADA CONTINUATION SIGN * indicates a breaking opportunity within a word @ Section marks 111DE SHARADA SECTION MARK-1 111DF SHARADA SECTION MARK-2 @@ 111E0 Sinhala Archaic Numbers 111FF @+ This number system is also known as Sinhala Illakkam. This number system does not have a zero place holder concept, unlike the Sinhala astrological numbers, Sinhala Lith Illakkam, encoded in the range 0DE6-0DEF. @ Historical digits 111E1 SINHALA ARCHAIC DIGIT ONE 111E2 SINHALA ARCHAIC DIGIT TWO 111E3 SINHALA ARCHAIC DIGIT THREE 111E4 SINHALA ARCHAIC DIGIT FOUR 111E5 SINHALA ARCHAIC DIGIT FIVE 111E6 SINHALA ARCHAIC DIGIT SIX 111E7 SINHALA ARCHAIC DIGIT SEVEN 111E8 SINHALA ARCHAIC DIGIT EIGHT 111E9 SINHALA ARCHAIC DIGIT NINE @ Historical numbers 111EA SINHALA ARCHAIC NUMBER TEN 111EB SINHALA ARCHAIC NUMBER TWENTY 111EC SINHALA ARCHAIC NUMBER THIRTY 111ED SINHALA ARCHAIC NUMBER FORTY 111EE SINHALA ARCHAIC NUMBER FIFTY 111EF SINHALA ARCHAIC NUMBER SIXTY 111F0 SINHALA ARCHAIC NUMBER SEVENTY 111F1 SINHALA ARCHAIC NUMBER EIGHTY 111F2 SINHALA ARCHAIC NUMBER NINETY 111F3 SINHALA ARCHAIC NUMBER ONE HUNDRED 111F4 SINHALA ARCHAIC NUMBER ONE THOUSAND @@ 11200 Khojki 1124F @ Independent vowels 11200 KHOJKI LETTER A 11201 KHOJKI LETTER AA 11202 KHOJKI LETTER I 11203 KHOJKI LETTER U 11204 KHOJKI LETTER E 11205 KHOJKI LETTER AI 11206 KHOJKI LETTER O 11207 KHOJKI LETTER AU @ Consonants 11208 KHOJKI LETTER KA 11209 KHOJKI LETTER KHA 1120A KHOJKI LETTER GA 1120B KHOJKI LETTER GGA 1120C KHOJKI LETTER GHA 1120D KHOJKI LETTER NGA 1120E KHOJKI LETTER CA 1120F KHOJKI LETTER CHA 11210 KHOJKI LETTER JA 11211 KHOJKI LETTER JJA 11213 KHOJKI LETTER NYA 11214 KHOJKI LETTER TTA 11215 KHOJKI LETTER TTHA 11216 KHOJKI LETTER DDA 11217 KHOJKI LETTER DDHA 11218 KHOJKI LETTER NNA 11219 KHOJKI LETTER TA 1121A KHOJKI LETTER THA 1121B KHOJKI LETTER DA 1121C KHOJKI LETTER DDDA 1121D KHOJKI LETTER DHA 1121E KHOJKI LETTER NA 1121F KHOJKI LETTER PA 11220 KHOJKI LETTER PHA 11221 KHOJKI LETTER BA 11222 KHOJKI LETTER BBA 11223 KHOJKI LETTER BHA 11224 KHOJKI LETTER MA 11225 KHOJKI LETTER YA 11226 KHOJKI LETTER RA 11227 KHOJKI LETTER LA 11228 KHOJKI LETTER VA 11229 KHOJKI LETTER SA 1122A KHOJKI LETTER HA 1122B KHOJKI LETTER LLA @ Dependent vowel signs 1122C KHOJKI VOWEL SIGN AA 1122D KHOJKI VOWEL SIGN I 1122E KHOJKI VOWEL SIGN II 1122F KHOJKI VOWEL SIGN U 11230 KHOJKI VOWEL SIGN E 11231 KHOJKI VOWEL SIGN AI 11232 KHOJKI VOWEL SIGN O 11233 KHOJKI VOWEL SIGN AU @ Various signs 11234 KHOJKI SIGN ANUSVARA 11235 KHOJKI SIGN VIRAMA 11236 KHOJKI SIGN NUKTA 11237 KHOJKI SIGN SHADDA @ Punctuation 11238 KHOJKI DANDA 11239 KHOJKI DOUBLE DANDA 1123A KHOJKI WORD SEPARATOR 1123B KHOJKI SECTION MARK * marks end of sentence x (kaithi section mark - 110BE) 1123C KHOJKI DOUBLE SECTION MARK * delimits larger chunks of text, such as paragraphs x (kaithi double section mark - 110BF) 1123D KHOJKI ABBREVIATION SIGN @ Sign 1123E KHOJKI SIGN SUKUN * used for Arabic transliteration @@ 11280 Multani 112AF @ Vowels 11280 MULTANI LETTER A 11281 MULTANI LETTER I 11282 MULTANI LETTER U 11283 MULTANI LETTER E @ Consonants 11284 MULTANI LETTER KA 11285 MULTANI LETTER KHA 11286 MULTANI LETTER GA 11288 MULTANI LETTER GHA 1128A MULTANI LETTER CA 1128B MULTANI LETTER CHA 1128C MULTANI LETTER JA 1128D MULTANI LETTER JJA 1128F MULTANI LETTER NYA 11290 MULTANI LETTER TTA 11291 MULTANI LETTER TTHA 11292 MULTANI LETTER DDA 11293 MULTANI LETTER DDDA = tra 11294 MULTANI LETTER DDHA 11295 MULTANI LETTER NNA 11296 MULTANI LETTER TA 11297 MULTANI LETTER THA 11298 MULTANI LETTER DA 11299 MULTANI LETTER DHA 1129A MULTANI LETTER NA 1129B MULTANI LETTER PA 1129C MULTANI LETTER PHA 1129D MULTANI LETTER BA 1129F MULTANI LETTER BHA 112A0 MULTANI LETTER MA 112A1 MULTANI LETTER YA 112A2 MULTANI LETTER RA 112A3 MULTANI LETTER LA 112A4 MULTANI LETTER VA 112A5 MULTANI LETTER SA 112A6 MULTANI LETTER HA 112A7 MULTANI LETTER RRA 112A8 MULTANI LETTER RHA @ Punctuation 112A9 MULTANI SECTION MARK @@ 112B0 Khudawadi 112FF @ Independent vowels 112B0 KHUDAWADI LETTER A 112B1 KHUDAWADI LETTER AA 112B2 KHUDAWADI LETTER I 112B3 KHUDAWADI LETTER II 112B4 KHUDAWADI LETTER U 112B5 KHUDAWADI LETTER UU 112B6 KHUDAWADI LETTER E 112B7 KHUDAWADI LETTER AI 112B8 KHUDAWADI LETTER O 112B9 KHUDAWADI LETTER AU @ Consonants 112BA KHUDAWADI LETTER KA 112BB KHUDAWADI LETTER KHA 112BC KHUDAWADI LETTER GA 112BD KHUDAWADI LETTER GGA 112BE KHUDAWADI LETTER GHA 112BF KHUDAWADI LETTER NGA 112C0 KHUDAWADI LETTER CA 112C1 KHUDAWADI LETTER CHA 112C2 KHUDAWADI LETTER JA 112C3 KHUDAWADI LETTER JJA 112C4 KHUDAWADI LETTER JHA 112C5 KHUDAWADI LETTER NYA 112C6 KHUDAWADI LETTER TTA 112C7 KHUDAWADI LETTER TTHA 112C8 KHUDAWADI LETTER DDA 112C9 KHUDAWADI LETTER DDDA 112CA KHUDAWADI LETTER RRA 112CB KHUDAWADI LETTER DDHA 112CC KHUDAWADI LETTER NNA 112CD KHUDAWADI LETTER TA 112CE KHUDAWADI LETTER THA 112CF KHUDAWADI LETTER DA 112D0 KHUDAWADI LETTER DHA 112D1 KHUDAWADI LETTER NA 112D2 KHUDAWADI LETTER PA 112D3 KHUDAWADI LETTER PHA 112D4 KHUDAWADI LETTER BA 112D5 KHUDAWADI LETTER BBA 112D6 KHUDAWADI LETTER BHA 112D7 KHUDAWADI LETTER MA 112D8 KHUDAWADI LETTER YA 112D9 KHUDAWADI LETTER RA 112DA KHUDAWADI LETTER LA 112DB KHUDAWADI LETTER VA 112DC KHUDAWADI LETTER SHA 112DD KHUDAWADI LETTER SA 112DE KHUDAWADI LETTER HA @ Sign 112DF KHUDAWADI SIGN ANUSVARA @ Dependent vowel signs 112E0 KHUDAWADI VOWEL SIGN AA 112E1 KHUDAWADI VOWEL SIGN I 112E2 KHUDAWADI VOWEL SIGN II 112E3 KHUDAWADI VOWEL SIGN U 112E4 KHUDAWADI VOWEL SIGN UU 112E5 KHUDAWADI VOWEL SIGN E 112E6 KHUDAWADI VOWEL SIGN AI 112E7 KHUDAWADI VOWEL SIGN O 112E8 KHUDAWADI VOWEL SIGN AU @ Various signs 112E9 KHUDAWADI SIGN NUKTA 112EA KHUDAWADI SIGN VIRAMA @ Digits 112F0 KHUDAWADI DIGIT ZERO 112F1 KHUDAWADI DIGIT ONE 112F2 KHUDAWADI DIGIT TWO 112F3 KHUDAWADI DIGIT THREE 112F4 KHUDAWADI DIGIT FOUR 112F5 KHUDAWADI DIGIT FIVE 112F6 KHUDAWADI DIGIT SIX 112F7 KHUDAWADI DIGIT SEVEN 112F8 KHUDAWADI DIGIT EIGHT 112F9 KHUDAWADI DIGIT NINE @@ 11300 Grantha 1137F @+ The Grantha script uses digits from the Tamil block. @ Various signs 11300 GRANTHA SIGN COMBINING ANUSVARA ABOVE * used in Prakrit language Jain texts for the linguistic anusvara 11301 GRANTHA SIGN CANDRABINDU 11302 GRANTHA SIGN ANUSVARA * used in Prakrit language Jain texts to indicate gemination of the following consonant 11303 GRANTHA SIGN VISARGA @ Independent vowels 11305 GRANTHA LETTER A 11306 GRANTHA LETTER AA 11307 GRANTHA LETTER I 11308 GRANTHA LETTER II 11309 GRANTHA LETTER U 1130A GRANTHA LETTER UU 1130B GRANTHA LETTER VOCALIC R 1130C GRANTHA LETTER VOCALIC L 1130F GRANTHA LETTER EE 11310 GRANTHA LETTER AI 11313 GRANTHA LETTER OO 11314 GRANTHA LETTER AU @ Consonants 11315 GRANTHA LETTER KA 11316 GRANTHA LETTER KHA 11317 GRANTHA LETTER GA 11318 GRANTHA LETTER GHA 11319 GRANTHA LETTER NGA 1131A GRANTHA LETTER CA 1131B GRANTHA LETTER CHA 1131C GRANTHA LETTER JA 1131D GRANTHA LETTER JHA 1131E GRANTHA LETTER NYA 1131F GRANTHA LETTER TTA 11320 GRANTHA LETTER TTHA 11321 GRANTHA LETTER DDA 11322 GRANTHA LETTER DDHA 11323 GRANTHA LETTER NNA 11324 GRANTHA LETTER TA 11325 GRANTHA LETTER THA 11326 GRANTHA LETTER DA 11327 GRANTHA LETTER DHA 11328 GRANTHA LETTER NA 1132A GRANTHA LETTER PA 1132B GRANTHA LETTER PHA 1132C GRANTHA LETTER BA 1132D GRANTHA LETTER BHA 1132E GRANTHA LETTER MA 1132F GRANTHA LETTER YA 11330 GRANTHA LETTER RA 11332 GRANTHA LETTER LA 11333 GRANTHA LETTER LLA 11335 GRANTHA LETTER VA 11336 GRANTHA LETTER SHA 11337 GRANTHA LETTER SSA 11338 GRANTHA LETTER SA 11339 GRANTHA LETTER HA @ Various signs 1133C GRANTHA SIGN NUKTA 1133D GRANTHA SIGN AVAGRAHA @ Dependent vowel signs 1133E GRANTHA VOWEL SIGN AA 1133F GRANTHA VOWEL SIGN I 11340 GRANTHA VOWEL SIGN II 11341 GRANTHA VOWEL SIGN U 11342 GRANTHA VOWEL SIGN UU 11343 GRANTHA VOWEL SIGN VOCALIC R 11344 GRANTHA VOWEL SIGN VOCALIC RR 11347 GRANTHA VOWEL SIGN EE 11348 GRANTHA VOWEL SIGN AI @ Two-part dependent vowel signs 1134B GRANTHA VOWEL SIGN OO : 11347 1133E 1134C GRANTHA VOWEL SIGN AU : 11347 11357 @ Virama 1134D GRANTHA SIGN VIRAMA @ Sign 11350 GRANTHA OM @ Dependent vowel sign 11357 GRANTHA AU LENGTH MARK @ Sign 1135D GRANTHA SIGN PLUTA * vowel-lengthening mark @ Anusvaras 1135E GRANTHA LETTER VEDIC ANUSVARA 1135F GRANTHA LETTER VEDIC DOUBLE ANUSVARA @ Independent vowels 11360 GRANTHA LETTER VOCALIC RR 11361 GRANTHA LETTER VOCALIC LL @ Dependent vowel signs 11362 GRANTHA VOWEL SIGN VOCALIC L 11363 GRANTHA VOWEL SIGN VOCALIC LL @ Cantillation marks (svara) for the Samaveda @+ See the similar set of Devanagari svara markers for the Samaveda, encoded in the range A8E0-A8F1. 11366 COMBINING GRANTHA DIGIT ZERO 11367 COMBINING GRANTHA DIGIT ONE 11368 COMBINING GRANTHA DIGIT TWO 11369 COMBINING GRANTHA DIGIT THREE 1136A COMBINING GRANTHA DIGIT FOUR 1136B COMBINING GRANTHA DIGIT FIVE 1136C COMBINING GRANTHA DIGIT SIX 11370 COMBINING GRANTHA LETTER A 11371 COMBINING GRANTHA LETTER KA 11372 COMBINING GRANTHA LETTER NA 11373 COMBINING GRANTHA LETTER VI 11374 COMBINING GRANTHA LETTER PA @@ 11400 Newa 1147F @+ This script is also known as Nepaalalipi, Nepalakshar, Newah Akhah, Pachumol, Prachalit, and other names. @ Independent vowels @+ Some of the vowels are only used for Sanskrit, and are not needed for Nepal Bhasa. 11400 NEWA LETTER A 11401 NEWA LETTER AA 11402 NEWA LETTER I 11403 NEWA LETTER II 11404 NEWA LETTER U 11405 NEWA LETTER UU 11406 NEWA LETTER VOCALIC R 11407 NEWA LETTER VOCALIC RR 11408 NEWA LETTER VOCALIC L 11409 NEWA LETTER VOCALIC LL 1140A NEWA LETTER E 1140B NEWA LETTER AI 1140C NEWA LETTER O 1140D NEWA LETTER AU @ Consonants @+ Six consonant letters involving ha are encoded for the representation of murmured resonants in Nepal Bhasa, a Tibeto-Burman language. Those letters are not used for the representation of Sanskrit in the Newa script. 1140E NEWA LETTER KA 1140F NEWA LETTER KHA 11410 NEWA LETTER GA 11411 NEWA LETTER GHA 11412 NEWA LETTER NGA 11413 NEWA LETTER NGHA * murmured nasal for Nepal Bhasa language 11414 NEWA LETTER CA 11415 NEWA LETTER CHA 11416 NEWA LETTER JA 11417 NEWA LETTER JHA 11418 NEWA LETTER NYA 11419 NEWA LETTER NYHA * murmured nasal for Nepal Bhasa language 1141A NEWA LETTER TTA 1141B NEWA LETTER TTHA 1141C NEWA LETTER DDA 1141D NEWA LETTER DDHA 1141E NEWA LETTER NNA 1141F NEWA LETTER TA 11420 NEWA LETTER THA 11421 NEWA LETTER DA 11422 NEWA LETTER DHA 11423 NEWA LETTER NA 11424 NEWA LETTER NHA * murmured nasal for Nepal Bhasa language 11425 NEWA LETTER PA 11426 NEWA LETTER PHA 11427 NEWA LETTER BA 11428 NEWA LETTER BHA 11429 NEWA LETTER MA 1142A NEWA LETTER MHA * murmured nasal for Nepal Bhasa language 1142B NEWA LETTER YA 1142C NEWA LETTER RA 1142D NEWA LETTER RHA * murmured tap for Nepal Bhasa language 1142E NEWA LETTER LA 1142F NEWA LETTER LHA * murmured lateral for Nepal Bhasa language 11430 NEWA LETTER WA 11431 NEWA LETTER SHA 11432 NEWA LETTER SSA 11433 NEWA LETTER SA 11434 NEWA LETTER HA @ Dependent vowel signs @+ Some of the vowel signs are only used for Sanskrit, and are not needed for Nepal Bhasa. 11435 NEWA VOWEL SIGN AA 11436 NEWA VOWEL SIGN I 11437 NEWA VOWEL SIGN II 11438 NEWA VOWEL SIGN U 11439 NEWA VOWEL SIGN UU 1143A NEWA VOWEL SIGN VOCALIC R 1143B NEWA VOWEL SIGN VOCALIC RR 1143C NEWA VOWEL SIGN VOCALIC L 1143D NEWA VOWEL SIGN VOCALIC LL 1143E NEWA VOWEL SIGN E 1143F NEWA VOWEL SIGN AI 11440 NEWA VOWEL SIGN O 11441 NEWA VOWEL SIGN AU @ Various signs 11442 NEWA SIGN VIRAMA = tutisaalaa 11443 NEWA SIGN CANDRABINDU = milaaphuti 11444 NEWA SIGN ANUSVARA = sinhaphuti 11445 NEWA SIGN VISARGA = liphuti 11446 NEWA SIGN NUKTA 11447 NEWA SIGN AVAGRAHA = sulaa 11448 NEWA SIGN FINAL ANUSVARA = baadipu @ Invocation signs 11449 NEWA OM 1144A NEWA SIDDHI @ Punctuation 1144B NEWA DANDA = dipu 1144C NEWA DOUBLE DANDA 1144D NEWA COMMA = jhaasu 1144E NEWA GAP FILLER = thaayjaayekaa 1144F NEWA ABBREVIATION SIGN @ Digits 11450 NEWA DIGIT ZERO = guli 11451 NEWA DIGIT ONE = chi 11452 NEWA DIGIT TWO = nasi 11453 NEWA DIGIT THREE = swa 11454 NEWA DIGIT FOUR = pi 11455 NEWA DIGIT FIVE = njaa 11456 NEWA DIGIT SIX = khu 11457 NEWA DIGIT SEVEN = nhasa 11458 NEWA DIGIT EIGHT = cyaa 11459 NEWA DIGIT NINE = gu @ Various signs 1145B NEWA PLACEHOLDER MARK = jaayekaa 1145D NEWA INSERTION SIGN = tansaa @@ 11480 Tirhuta 114DF @+ The Tirhuta script is also known by the names Mithilakshara and Maithili. @ Sign 11480 TIRHUTA ANJI @ Independent vowels 11481 TIRHUTA LETTER A 11482 TIRHUTA LETTER AA 11483 TIRHUTA LETTER I 11484 TIRHUTA LETTER II 11485 TIRHUTA LETTER U 11486 TIRHUTA LETTER UU 11487 TIRHUTA LETTER VOCALIC R 11488 TIRHUTA LETTER VOCALIC RR 11489 TIRHUTA LETTER VOCALIC L 1148A TIRHUTA LETTER VOCALIC LL 1148B TIRHUTA LETTER E 1148C TIRHUTA LETTER AI 1148D TIRHUTA LETTER O 1148E TIRHUTA LETTER AU @ Consonants 1148F TIRHUTA LETTER KA 11490 TIRHUTA LETTER KHA 11491 TIRHUTA LETTER GA 11492 TIRHUTA LETTER GHA 11493 TIRHUTA LETTER NGA 11494 TIRHUTA LETTER CA 11495 TIRHUTA LETTER CHA 11496 TIRHUTA LETTER JA 11497 TIRHUTA LETTER JHA 11498 TIRHUTA LETTER NYA 11499 TIRHUTA LETTER TTA 1149A TIRHUTA LETTER TTHA 1149B TIRHUTA LETTER DDA 1149C TIRHUTA LETTER DDHA 1149D TIRHUTA LETTER NNA 1149E TIRHUTA LETTER TA 1149F TIRHUTA LETTER THA 114A0 TIRHUTA LETTER DA 114A1 TIRHUTA LETTER DHA 114A2 TIRHUTA LETTER NA 114A3 TIRHUTA LETTER PA 114A4 TIRHUTA LETTER PHA 114A5 TIRHUTA LETTER BA 114A6 TIRHUTA LETTER BHA 114A7 TIRHUTA LETTER MA 114A8 TIRHUTA LETTER YA 114A9 TIRHUTA LETTER RA 114AA TIRHUTA LETTER LA 114AB TIRHUTA LETTER VA 114AC TIRHUTA LETTER SHA 114AD TIRHUTA LETTER SSA 114AE TIRHUTA LETTER SA 114AF TIRHUTA LETTER HA @ Dependent vowel signs 114B0 TIRHUTA VOWEL SIGN AA 114B1 TIRHUTA VOWEL SIGN I 114B2 TIRHUTA VOWEL SIGN II 114B3 TIRHUTA VOWEL SIGN U 114B4 TIRHUTA VOWEL SIGN UU 114B5 TIRHUTA VOWEL SIGN VOCALIC R 114B6 TIRHUTA VOWEL SIGN VOCALIC RR 114B7 TIRHUTA VOWEL SIGN VOCALIC L 114B8 TIRHUTA VOWEL SIGN VOCALIC LL 114B9 TIRHUTA VOWEL SIGN E 114BA TIRHUTA VOWEL SIGN SHORT E 114BB TIRHUTA VOWEL SIGN AI : 114B9 114BA 114BC TIRHUTA VOWEL SIGN O : 114B9 114B0 114BD TIRHUTA VOWEL SIGN SHORT O 114BE TIRHUTA VOWEL SIGN AU : 114B9 114BD @ Various signs 114BF TIRHUTA SIGN CANDRABINDU 114C0 TIRHUTA SIGN ANUSVARA 114C1 TIRHUTA SIGN VISARGA 114C2 TIRHUTA SIGN VIRAMA = halant 114C3 TIRHUTA SIGN NUKTA 114C4 TIRHUTA SIGN AVAGRAHA 114C5 TIRHUTA GVANG = vedic anusvara 114C6 TIRHUTA ABBREVIATION SIGN 114C7 TIRHUTA OM @ Digits 114D0 TIRHUTA DIGIT ZERO 114D1 TIRHUTA DIGIT ONE 114D2 TIRHUTA DIGIT TWO 114D3 TIRHUTA DIGIT THREE 114D4 TIRHUTA DIGIT FOUR 114D5 TIRHUTA DIGIT FIVE 114D6 TIRHUTA DIGIT SIX 114D7 TIRHUTA DIGIT SEVEN 114D8 TIRHUTA DIGIT EIGHT 114D9 TIRHUTA DIGIT NINE @@ 11580 Siddham 115FF @+ The script is also known by the name 'Siddhamatrika'. @ Independent vowels 11580 SIDDHAM LETTER A 11581 SIDDHAM LETTER AA 11582 SIDDHAM LETTER I 11583 SIDDHAM LETTER II 11584 SIDDHAM LETTER U 11585 SIDDHAM LETTER UU 11586 SIDDHAM LETTER VOCALIC R 11587 SIDDHAM LETTER VOCALIC RR 11588 SIDDHAM LETTER VOCALIC L 11589 SIDDHAM LETTER VOCALIC LL 1158A SIDDHAM LETTER E 1158B SIDDHAM LETTER AI 1158C SIDDHAM LETTER O 1158D SIDDHAM LETTER AU @ Consonants 1158E SIDDHAM LETTER KA 1158F SIDDHAM LETTER KHA 11590 SIDDHAM LETTER GA 11591 SIDDHAM LETTER GHA 11592 SIDDHAM LETTER NGA 11593 SIDDHAM LETTER CA 11594 SIDDHAM LETTER CHA 11595 SIDDHAM LETTER JA 11596 SIDDHAM LETTER JHA 11597 SIDDHAM LETTER NYA 11598 SIDDHAM LETTER TTA 11599 SIDDHAM LETTER TTHA 1159A SIDDHAM LETTER DDA 1159B SIDDHAM LETTER DDHA 1159C SIDDHAM LETTER NNA 1159D SIDDHAM LETTER TA 1159E SIDDHAM LETTER THA 1159F SIDDHAM LETTER DA 115A0 SIDDHAM LETTER DHA 115A1 SIDDHAM LETTER NA 115A2 SIDDHAM LETTER PA 115A3 SIDDHAM LETTER PHA 115A4 SIDDHAM LETTER BA 115A5 SIDDHAM LETTER BHA 115A6 SIDDHAM LETTER MA 115A7 SIDDHAM LETTER YA 115A8 SIDDHAM LETTER RA 115A9 SIDDHAM LETTER LA 115AA SIDDHAM LETTER VA 115AB SIDDHAM LETTER SHA 115AC SIDDHAM LETTER SSA 115AD SIDDHAM LETTER SA 115AE SIDDHAM LETTER HA @ Dependent vowel signs 115AF SIDDHAM VOWEL SIGN AA 115B0 SIDDHAM VOWEL SIGN I 115B1 SIDDHAM VOWEL SIGN II 115B2 SIDDHAM VOWEL SIGN U 115B3 SIDDHAM VOWEL SIGN UU 115B4 SIDDHAM VOWEL SIGN VOCALIC R 115B5 SIDDHAM VOWEL SIGN VOCALIC RR 115B8 SIDDHAM VOWEL SIGN E 115B9 SIDDHAM VOWEL SIGN AI 115BA SIDDHAM VOWEL SIGN O : 115B8 115AF 115BB SIDDHAM VOWEL SIGN AU : 115B9 115AF @ Various signs 115BC SIDDHAM SIGN CANDRABINDU 115BD SIDDHAM SIGN ANUSVARA 115BE SIDDHAM SIGN VISARGA 115BF SIDDHAM SIGN VIRAMA 115C0 SIDDHAM SIGN NUKTA * used for writing foreign sounds @ Head mark 115C1 SIDDHAM SIGN SIDDHAM = siddhirastu * used at the beginning of texts @ Punctuation 115C2 SIDDHAM DANDA 115C3 SIDDHAM DOUBLE DANDA 115C4 SIDDHAM SEPARATOR DOT * used for separating syllables and words 115C5 SIDDHAM SEPARATOR BAR * used for separating syllables and words @ Repetition marks 115C6 SIDDHAM REPETITION MARK-1 115C7 SIDDHAM REPETITION MARK-2 115C8 SIDDHAM REPETITION MARK-3 @ Terminal mark 115C9 SIDDHAM END OF TEXT MARK * indicates the completion of a text @ Section marks @+ These characters are used at the end of a section or text. 115CA SIDDHAM SECTION MARK WITH TRIDENT AND U-SHAPED ORNAMENTS 115CB SIDDHAM SECTION MARK WITH TRIDENT AND DOTTED CRESCENTS 115CC SIDDHAM SECTION MARK WITH RAYS AND DOTTED CRESCENTS 115CD SIDDHAM SECTION MARK WITH RAYS AND DOTTED DOUBLE CRESCENTS 115CE SIDDHAM SECTION MARK WITH RAYS AND DOTTED TRIPLE CRESCENTS 115CF SIDDHAM SECTION MARK DOUBLE RING 115D0 SIDDHAM SECTION MARK DOUBLE RING WITH RAYS 115D1 SIDDHAM SECTION MARK WITH DOUBLE CRESCENTS 115D2 SIDDHAM SECTION MARK WITH TRIPLE CRESCENTS 115D3 SIDDHAM SECTION MARK WITH QUADRUPLE CRESCENTS 115D4 SIDDHAM SECTION MARK WITH SEPTUPLE CRESCENTS 115D5 SIDDHAM SECTION MARK WITH CIRCLES AND RAYS 115D6 SIDDHAM SECTION MARK WITH CIRCLES AND TWO ENCLOSURES 115D7 SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES @ Alternate letters 115D8 SIDDHAM LETTER THREE-CIRCLE ALTERNATE I x (siddham letter i - 11582) 115D9 SIDDHAM LETTER TWO-CIRCLE ALTERNATE I 115DA SIDDHAM LETTER TWO-CIRCLE ALTERNATE II x (siddham letter ii - 11583) 115DB SIDDHAM LETTER ALTERNATE U x (siddham letter u - 11584) @ Alternate vowel signs @+ These alternate vowel signs are the 'warbler' forms while the regular vowel signs are the 'cloud' forms. 115DC SIDDHAM VOWEL SIGN ALTERNATE U 115DD SIDDHAM VOWEL SIGN ALTERNATE UU @@ 11600 Modi 1165F @ Independent vowels 11600 MODI LETTER A 11601 MODI LETTER AA 11602 MODI LETTER I 11603 MODI LETTER II 11604 MODI LETTER U 11605 MODI LETTER UU 11606 MODI LETTER VOCALIC R 11607 MODI LETTER VOCALIC RR 11608 MODI LETTER VOCALIC L 11609 MODI LETTER VOCALIC LL 1160A MODI LETTER E 1160B MODI LETTER AI 1160C MODI LETTER O 1160D MODI LETTER AU @ Consonants 1160E MODI LETTER KA 1160F MODI LETTER KHA 11610 MODI LETTER GA 11611 MODI LETTER GHA 11612 MODI LETTER NGA 11613 MODI LETTER CA 11614 MODI LETTER CHA 11615 MODI LETTER JA 11616 MODI LETTER JHA 11617 MODI LETTER NYA 11618 MODI LETTER TTA 11619 MODI LETTER TTHA 1161A MODI LETTER DDA 1161B MODI LETTER DDHA 1161C MODI LETTER NNA 1161D MODI LETTER TA 1161E MODI LETTER THA 1161F MODI LETTER DA 11620 MODI LETTER DHA 11621 MODI LETTER NA 11622 MODI LETTER PA 11623 MODI LETTER PHA 11624 MODI LETTER BA 11625 MODI LETTER BHA 11626 MODI LETTER MA 11627 MODI LETTER YA 11628 MODI LETTER RA 11629 MODI LETTER LA 1162A MODI LETTER VA 1162B MODI LETTER SHA 1162C MODI LETTER SSA 1162D MODI LETTER SA 1162E MODI LETTER HA 1162F MODI LETTER LLA @ Dependent vowel signs 11630 MODI VOWEL SIGN AA 11631 MODI VOWEL SIGN I 11632 MODI VOWEL SIGN II 11633 MODI VOWEL SIGN U 11634 MODI VOWEL SIGN UU 11635 MODI VOWEL SIGN VOCALIC R 11636 MODI VOWEL SIGN VOCALIC RR 11637 MODI VOWEL SIGN VOCALIC L 11638 MODI VOWEL SIGN VOCALIC LL 11639 MODI VOWEL SIGN E 1163A MODI VOWEL SIGN AI 1163B MODI VOWEL SIGN O 1163C MODI VOWEL SIGN AU @ Various signs 1163D MODI SIGN ANUSVARA 1163E MODI SIGN VISARGA 1163F MODI SIGN VIRAMA = halant 11640 MODI SIGN ARDHACANDRA * used for transcribing English @ Punctuation 11641 MODI DANDA 11642 MODI DOUBLE DANDA 11643 MODI ABBREVIATION SIGN @ Sign 11644 MODI SIGN HUVA * used as an invocation @ Digits 11650 MODI DIGIT ZERO 11651 MODI DIGIT ONE 11652 MODI DIGIT TWO 11653 MODI DIGIT THREE 11654 MODI DIGIT FOUR 11655 MODI DIGIT FIVE 11656 MODI DIGIT SIX 11657 MODI DIGIT SEVEN 11658 MODI DIGIT EIGHT 11659 MODI DIGIT NINE @@ 11660 Mongolian Supplement 1167F @ Punctuation 11660 MONGOLIAN BIRGA WITH ORNAMENT x (mongolian birga - 1800) 11661 MONGOLIAN ROTATED BIRGA 11662 MONGOLIAN DOUBLE BIRGA WITH ORNAMENT 11663 MONGOLIAN TRIPLE BIRGA WITH ORNAMENT 11664 MONGOLIAN BIRGA WITH DOUBLE ORNAMENT 11665 MONGOLIAN ROTATED BIRGA WITH ORNAMENT 11666 MONGOLIAN ROTATED BIRGA WITH DOUBLE ORNAMENT 11667 MONGOLIAN INVERTED BIRGA 11668 MONGOLIAN INVERTED BIRGA WITH DOUBLE ORNAMENT 11669 MONGOLIAN SWIRL BIRGA 1166A MONGOLIAN SWIRL BIRGA WITH ORNAMENT 1166B MONGOLIAN SWIRL BIRGA WITH DOUBLE ORNAMENT 1166C MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT @@ 11680 Takri 116CF @ Independent vowels 11680 TAKRI LETTER A 11681 TAKRI LETTER AA 11682 TAKRI LETTER I 11683 TAKRI LETTER II 11684 TAKRI LETTER U 11685 TAKRI LETTER UU 11686 TAKRI LETTER E 11687 TAKRI LETTER AI 11688 TAKRI LETTER O 11689 TAKRI LETTER AU @ Consonants 1168A TAKRI LETTER KA 1168B TAKRI LETTER KHA 1168C TAKRI LETTER GA 1168D TAKRI LETTER GHA 1168E TAKRI LETTER NGA 1168F TAKRI LETTER CA 11690 TAKRI LETTER CHA 11691 TAKRI LETTER JA 11692 TAKRI LETTER JHA 11693 TAKRI LETTER NYA 11694 TAKRI LETTER TTA 11695 TAKRI LETTER TTHA 11696 TAKRI LETTER DDA 11697 TAKRI LETTER DDHA 11698 TAKRI LETTER NNA 11699 TAKRI LETTER TA 1169A TAKRI LETTER THA 1169B TAKRI LETTER DA 1169C TAKRI LETTER DHA 1169D TAKRI LETTER NA 1169E TAKRI LETTER PA 1169F TAKRI LETTER PHA 116A0 TAKRI LETTER BA 116A1 TAKRI LETTER BHA 116A2 TAKRI LETTER MA 116A3 TAKRI LETTER YA 116A4 TAKRI LETTER RA 116A5 TAKRI LETTER LA 116A6 TAKRI LETTER VA 116A7 TAKRI LETTER SHA 116A8 TAKRI LETTER SA 116A9 TAKRI LETTER HA 116AA TAKRI LETTER RRA @ Various signs 116AB TAKRI SIGN ANUSVARA 116AC TAKRI SIGN VISARGA @ Dependent vowel signs 116AD TAKRI VOWEL SIGN AA 116AE TAKRI VOWEL SIGN I 116AF TAKRI VOWEL SIGN II 116B0 TAKRI VOWEL SIGN U 116B1 TAKRI VOWEL SIGN UU 116B2 TAKRI VOWEL SIGN E 116B3 TAKRI VOWEL SIGN AI 116B4 TAKRI VOWEL SIGN O 116B5 TAKRI VOWEL SIGN AU @ Virama 116B6 TAKRI SIGN VIRAMA @ Nukta 116B7 TAKRI SIGN NUKTA @ Digits 116C0 TAKRI DIGIT ZERO 116C1 TAKRI DIGIT ONE 116C2 TAKRI DIGIT TWO 116C3 TAKRI DIGIT THREE 116C4 TAKRI DIGIT FOUR 116C5 TAKRI DIGIT FIVE 116C6 TAKRI DIGIT SIX 116C7 TAKRI DIGIT SEVEN 116C8 TAKRI DIGIT EIGHT 116C9 TAKRI DIGIT NINE @@ 11700 Ahom 1173F @ Consonants 11700 AHOM LETTER KA 11701 AHOM LETTER KHA 11702 AHOM LETTER NGA 11703 AHOM LETTER NA 11704 AHOM LETTER TA 11705 AHOM LETTER ALTERNATE TA 11706 AHOM LETTER PA 11707 AHOM LETTER PHA 11708 AHOM LETTER BA 11709 AHOM LETTER MA 1170A AHOM LETTER JA 1170B AHOM LETTER CHA 1170C AHOM LETTER THA 1170D AHOM LETTER RA 1170E AHOM LETTER LA 1170F AHOM LETTER SA 11710 AHOM LETTER NYA 11711 AHOM LETTER HA 11712 AHOM LETTER A 11713 AHOM LETTER DA 11714 AHOM LETTER DHA 11715 AHOM LETTER GA 11716 AHOM LETTER ALTERNATE GA 11717 AHOM LETTER GHA 11718 AHOM LETTER BHA 11719 AHOM LETTER JHA @ Medials 1171D AHOM CONSONANT SIGN MEDIAL LA 1171E AHOM CONSONANT SIGN MEDIAL RA 1171F AHOM CONSONANT SIGN MEDIAL LIGATING RA @ Vowel signs 11720 AHOM VOWEL SIGN A 11721 AHOM VOWEL SIGN AA 11722 AHOM VOWEL SIGN I 11723 AHOM VOWEL SIGN II 11724 AHOM VOWEL SIGN U 11725 AHOM VOWEL SIGN UU 11726 AHOM VOWEL SIGN E 11727 AHOM VOWEL SIGN AW 11728 AHOM VOWEL SIGN O 11729 AHOM VOWEL SIGN AI 1172A AHOM VOWEL SIGN AM 1172B AHOM SIGN KILLER @ Digits 11730 AHOM DIGIT ZERO 11731 AHOM DIGIT ONE 11732 AHOM DIGIT TWO 11733 AHOM DIGIT THREE 11734 AHOM DIGIT FOUR 11735 AHOM DIGIT FIVE 11736 AHOM DIGIT SIX 11737 AHOM DIGIT SEVEN 11738 AHOM DIGIT EIGHT 11739 AHOM DIGIT NINE @ Numbers 1173A AHOM NUMBER TEN 1173B AHOM NUMBER TWENTY @ Punctuation 1173C AHOM SIGN SMALL SECTION 1173D AHOM SIGN SECTION 1173E AHOM SIGN RULAI 1173F AHOM SYMBOL VI @@ 118A0 Warang Citi 118FF @ Uppercase vowels 118A0 WARANG CITI CAPITAL LETTER NGAA * functions as an anusvara 118A1 WARANG CITI CAPITAL LETTER A 118A2 WARANG CITI CAPITAL LETTER WI 118A3 WARANG CITI CAPITAL LETTER YU 118A4 WARANG CITI CAPITAL LETTER YA 118A5 WARANG CITI CAPITAL LETTER YO 118A6 WARANG CITI CAPITAL LETTER II 118A7 WARANG CITI CAPITAL LETTER UU 118A8 WARANG CITI CAPITAL LETTER E 118A9 WARANG CITI CAPITAL LETTER O @ Uppercase consonants 118AA WARANG CITI CAPITAL LETTER ANG 118AB WARANG CITI CAPITAL LETTER GA 118AC WARANG CITI CAPITAL LETTER KO 118AD WARANG CITI CAPITAL LETTER ENY 118AE WARANG CITI CAPITAL LETTER YUJ 118AF WARANG CITI CAPITAL LETTER UC 118B0 WARANG CITI CAPITAL LETTER ENN 118B1 WARANG CITI CAPITAL LETTER ODD 118B2 WARANG CITI CAPITAL LETTER TTE 118B3 WARANG CITI CAPITAL LETTER NUNG 118B4 WARANG CITI CAPITAL LETTER DA 118B5 WARANG CITI CAPITAL LETTER AT 118B6 WARANG CITI CAPITAL LETTER AM 118B7 WARANG CITI CAPITAL LETTER BU 118B8 WARANG CITI CAPITAL LETTER PU 118B9 WARANG CITI CAPITAL LETTER HIYO 118BA WARANG CITI CAPITAL LETTER HOLO 118BB WARANG CITI CAPITAL LETTER HORR 118BC WARANG CITI CAPITAL LETTER HAR 118BD WARANG CITI CAPITAL LETTER SSUU 118BE WARANG CITI CAPITAL LETTER SII 118BF WARANG CITI CAPITAL LETTER VIYO @ Lowercase vowels 118C0 WARANG CITI SMALL LETTER NGAA 118C1 WARANG CITI SMALL LETTER A 118C2 WARANG CITI SMALL LETTER WI 118C3 WARANG CITI SMALL LETTER YU 118C4 WARANG CITI SMALL LETTER YA 118C5 WARANG CITI SMALL LETTER YO 118C6 WARANG CITI SMALL LETTER II 118C7 WARANG CITI SMALL LETTER UU 118C8 WARANG CITI SMALL LETTER E 118C9 WARANG CITI SMALL LETTER O @ Lowercase consonants 118CA WARANG CITI SMALL LETTER ANG 118CB WARANG CITI SMALL LETTER GA 118CC WARANG CITI SMALL LETTER KO 118CD WARANG CITI SMALL LETTER ENY 118CE WARANG CITI SMALL LETTER YUJ 118CF WARANG CITI SMALL LETTER UC 118D0 WARANG CITI SMALL LETTER ENN 118D1 WARANG CITI SMALL LETTER ODD 118D2 WARANG CITI SMALL LETTER TTE 118D3 WARANG CITI SMALL LETTER NUNG 118D4 WARANG CITI SMALL LETTER DA 118D5 WARANG CITI SMALL LETTER AT 118D6 WARANG CITI SMALL LETTER AM 118D7 WARANG CITI SMALL LETTER BU 118D8 WARANG CITI SMALL LETTER PU 118D9 WARANG CITI SMALL LETTER HIYO 118DA WARANG CITI SMALL LETTER HOLO 118DB WARANG CITI SMALL LETTER HORR 118DC WARANG CITI SMALL LETTER HAR 118DD WARANG CITI SMALL LETTER SSUU 118DE WARANG CITI SMALL LETTER SII 118DF WARANG CITI SMALL LETTER VIYO @ Digits 118E0 WARANG CITI DIGIT ZERO 118E1 WARANG CITI DIGIT ONE 118E2 WARANG CITI DIGIT TWO 118E3 WARANG CITI DIGIT THREE 118E4 WARANG CITI DIGIT FOUR 118E5 WARANG CITI DIGIT FIVE 118E6 WARANG CITI DIGIT SIX 118E7 WARANG CITI DIGIT SEVEN 118E8 WARANG CITI DIGIT EIGHT 118E9 WARANG CITI DIGIT NINE @ Numbers 118EA WARANG CITI NUMBER TEN 118EB WARANG CITI NUMBER TWENTY 118EC WARANG CITI NUMBER THIRTY 118ED WARANG CITI NUMBER FORTY 118EE WARANG CITI NUMBER FIFTY 118EF WARANG CITI NUMBER SIXTY 118F0 WARANG CITI NUMBER SEVENTY 118F1 WARANG CITI NUMBER EIGHTY 118F2 WARANG CITI NUMBER NINETY @ Sign 118FF WARANG CITI OM @@ 11AC0 Pau Cin Hau 11AFF @ Consonants 11AC0 PAU CIN HAU LETTER PA 11AC1 PAU CIN HAU LETTER KA 11AC2 PAU CIN HAU LETTER LA 11AC3 PAU CIN HAU LETTER MA 11AC4 PAU CIN HAU LETTER DA 11AC5 PAU CIN HAU LETTER ZA 11AC6 PAU CIN HAU LETTER VA 11AC7 PAU CIN HAU LETTER NGA 11AC8 PAU CIN HAU LETTER HA 11AC9 PAU CIN HAU LETTER GA 11ACA PAU CIN HAU LETTER KHA 11ACB PAU CIN HAU LETTER SA 11ACC PAU CIN HAU LETTER BA 11ACD PAU CIN HAU LETTER CA 11ACE PAU CIN HAU LETTER TA 11ACF PAU CIN HAU LETTER THA 11AD0 PAU CIN HAU LETTER NA 11AD1 PAU CIN HAU LETTER PHA 11AD2 PAU CIN HAU LETTER RA 11AD3 PAU CIN HAU LETTER FA 11AD4 PAU CIN HAU LETTER CHA @ Vowels 11AD5 PAU CIN HAU LETTER A 11AD6 PAU CIN HAU LETTER E 11AD7 PAU CIN HAU LETTER I 11AD8 PAU CIN HAU LETTER O 11AD9 PAU CIN HAU LETTER U 11ADA PAU CIN HAU LETTER UA 11ADB PAU CIN HAU LETTER IA @ Final consonants 11ADC PAU CIN HAU LETTER FINAL P 11ADD PAU CIN HAU LETTER FINAL K 11ADE PAU CIN HAU LETTER FINAL T 11ADF PAU CIN HAU LETTER FINAL M 11AE0 PAU CIN HAU LETTER FINAL N 11AE1 PAU CIN HAU LETTER FINAL L 11AE2 PAU CIN HAU LETTER FINAL W 11AE3 PAU CIN HAU LETTER FINAL NG 11AE4 PAU CIN HAU LETTER FINAL Y @ Tone marks 11AE5 PAU CIN HAU RISING TONE LONG 11AE6 PAU CIN HAU RISING TONE 11AE7 PAU CIN HAU SANDHI GLOTTAL STOP 11AE8 PAU CIN HAU RISING TONE LONG FINAL 11AE9 PAU CIN HAU RISING TONE FINAL 11AEA PAU CIN HAU SANDHI GLOTTAL STOP FINAL 11AEB PAU CIN HAU SANDHI TONE LONG 11AEC PAU CIN HAU SANDHI TONE 11AED PAU CIN HAU SANDHI TONE LONG FINAL 11AEE PAU CIN HAU SANDHI TONE FINAL 11AEF PAU CIN HAU MID-LEVEL TONE 11AF0 PAU CIN HAU GLOTTAL STOP VARIANT 11AF1 PAU CIN HAU MID-LEVEL TONE LONG FINAL 11AF2 PAU CIN HAU MID-LEVEL TONE FINAL 11AF3 PAU CIN HAU LOW-FALLING TONE LONG 11AF4 PAU CIN HAU LOW-FALLING TONE 11AF5 PAU CIN HAU GLOTTAL STOP 11AF6 PAU CIN HAU LOW-FALLING TONE LONG FINAL 11AF7 PAU CIN HAU LOW-FALLING TONE FINAL 11AF8 PAU CIN HAU GLOTTAL STOP FINAL @@ 11C00 Bhaiksuki 11C6F @ Independent vowels 11C00 BHAIKSUKI LETTER A 11C01 BHAIKSUKI LETTER AA 11C02 BHAIKSUKI LETTER I 11C03 BHAIKSUKI LETTER II 11C04 BHAIKSUKI LETTER U 11C05 BHAIKSUKI LETTER UU 11C06 BHAIKSUKI LETTER VOCALIC R 11C07 BHAIKSUKI LETTER VOCALIC RR 11C08 BHAIKSUKI LETTER VOCALIC L 11C0A BHAIKSUKI LETTER E 11C0B BHAIKSUKI LETTER AI 11C0C BHAIKSUKI LETTER O 11C0D BHAIKSUKI LETTER AU @ Consonants 11C0E BHAIKSUKI LETTER KA 11C0F BHAIKSUKI LETTER KHA 11C10 BHAIKSUKI LETTER GA 11C11 BHAIKSUKI LETTER GHA 11C12 BHAIKSUKI LETTER NGA 11C13 BHAIKSUKI LETTER CA 11C14 BHAIKSUKI LETTER CHA 11C15 BHAIKSUKI LETTER JA 11C16 BHAIKSUKI LETTER JHA 11C17 BHAIKSUKI LETTER NYA 11C18 BHAIKSUKI LETTER TTA 11C19 BHAIKSUKI LETTER TTHA 11C1A BHAIKSUKI LETTER DDA 11C1B BHAIKSUKI LETTER DDHA 11C1C BHAIKSUKI LETTER NNA 11C1D BHAIKSUKI LETTER TA 11C1E BHAIKSUKI LETTER THA 11C1F BHAIKSUKI LETTER DA 11C20 BHAIKSUKI LETTER DHA 11C21 BHAIKSUKI LETTER NA 11C22 BHAIKSUKI LETTER PA 11C23 BHAIKSUKI LETTER PHA 11C24 BHAIKSUKI LETTER BA 11C25 BHAIKSUKI LETTER BHA 11C26 BHAIKSUKI LETTER MA 11C27 BHAIKSUKI LETTER YA 11C28 BHAIKSUKI LETTER RA 11C29 BHAIKSUKI LETTER LA 11C2A BHAIKSUKI LETTER VA 11C2B BHAIKSUKI LETTER SHA 11C2C BHAIKSUKI LETTER SSA 11C2D BHAIKSUKI LETTER SA 11C2E BHAIKSUKI LETTER HA @ Dependent vowel signs 11C2F BHAIKSUKI VOWEL SIGN AA 11C30 BHAIKSUKI VOWEL SIGN I 11C31 BHAIKSUKI VOWEL SIGN II 11C32 BHAIKSUKI VOWEL SIGN U 11C33 BHAIKSUKI VOWEL SIGN UU 11C34 BHAIKSUKI VOWEL SIGN VOCALIC R 11C35 BHAIKSUKI VOWEL SIGN VOCALIC RR 11C36 BHAIKSUKI VOWEL SIGN VOCALIC L 11C38 BHAIKSUKI VOWEL SIGN E 11C39 BHAIKSUKI VOWEL SIGN AI 11C3A BHAIKSUKI VOWEL SIGN O 11C3B BHAIKSUKI VOWEL SIGN AU @ Various signs 11C3C BHAIKSUKI SIGN CANDRABINDU 11C3D BHAIKSUKI SIGN ANUSVARA 11C3E BHAIKSUKI SIGN VISARGA 11C3F BHAIKSUKI SIGN VIRAMA 11C40 BHAIKSUKI SIGN AVAGRAHA @ Punctuation 11C41 BHAIKSUKI DANDA 11C42 BHAIKSUKI DOUBLE DANDA 11C43 BHAIKSUKI WORD SEPARATOR @ Gap fillers 11C44 BHAIKSUKI GAP FILLER-1 11C45 BHAIKSUKI GAP FILLER-2 @ Digits 11C50 BHAIKSUKI DIGIT ZERO 11C51 BHAIKSUKI DIGIT ONE 11C52 BHAIKSUKI DIGIT TWO 11C53 BHAIKSUKI DIGIT THREE 11C54 BHAIKSUKI DIGIT FOUR 11C55 BHAIKSUKI DIGIT FIVE 11C56 BHAIKSUKI DIGIT SIX 11C57 BHAIKSUKI DIGIT SEVEN 11C58 BHAIKSUKI DIGIT EIGHT 11C59 BHAIKSUKI DIGIT NINE @ Numbers 11C5A BHAIKSUKI NUMBER ONE 11C5B BHAIKSUKI NUMBER TWO 11C5C BHAIKSUKI NUMBER THREE 11C5D BHAIKSUKI NUMBER FOUR 11C5E BHAIKSUKI NUMBER FIVE 11C5F BHAIKSUKI NUMBER SIX 11C60 BHAIKSUKI NUMBER SEVEN 11C61 BHAIKSUKI NUMBER EIGHT 11C62 BHAIKSUKI NUMBER NINE 11C63 BHAIKSUKI NUMBER TEN 11C64 BHAIKSUKI NUMBER TWENTY 11C65 BHAIKSUKI NUMBER THIRTY 11C66 BHAIKSUKI NUMBER FORTY 11C67 BHAIKSUKI NUMBER FIFTY 11C68 BHAIKSUKI NUMBER SIXTY 11C69 BHAIKSUKI NUMBER SEVENTY 11C6A BHAIKSUKI NUMBER EIGHTY 11C6B BHAIKSUKI NUMBER NINETY 11C6C BHAIKSUKI HUNDREDS UNIT MARK @@ 11C70 Marchen 11CBF @ Punctuation 11C70 MARCHEN HEAD MARK x (left-facing svasti sign - 0FD6) 11C71 MARCHEN MARK SHAD @ Letters 11C72 MARCHEN LETTER KA 11C73 MARCHEN LETTER KHA 11C74 MARCHEN LETTER GA 11C75 MARCHEN LETTER NGA 11C76 MARCHEN LETTER CA 11C77 MARCHEN LETTER CHA 11C78 MARCHEN LETTER JA 11C79 MARCHEN LETTER NYA 11C7A MARCHEN LETTER TA 11C7B MARCHEN LETTER THA 11C7C MARCHEN LETTER DA 11C7D MARCHEN LETTER NA 11C7E MARCHEN LETTER PA 11C7F MARCHEN LETTER PHA 11C80 MARCHEN LETTER BA 11C81 MARCHEN LETTER MA 11C82 MARCHEN LETTER TSA 11C83 MARCHEN LETTER TSHA 11C84 MARCHEN LETTER DZA 11C85 MARCHEN LETTER WA 11C86 MARCHEN LETTER ZHA 11C87 MARCHEN LETTER ZA 11C88 MARCHEN LETTER -A 11C89 MARCHEN LETTER YA 11C8A MARCHEN LETTER RA 11C8B MARCHEN LETTER LA 11C8C MARCHEN LETTER SHA 11C8D MARCHEN LETTER SA 11C8E MARCHEN LETTER HA 11C8F MARCHEN LETTER A @ Subjoined letters 11C92 MARCHEN SUBJOINED LETTER KA 11C93 MARCHEN SUBJOINED LETTER KHA 11C94 MARCHEN SUBJOINED LETTER GA 11C95 MARCHEN SUBJOINED LETTER NGA 11C96 MARCHEN SUBJOINED LETTER CA 11C97 MARCHEN SUBJOINED LETTER CHA 11C98 MARCHEN SUBJOINED LETTER JA 11C99 MARCHEN SUBJOINED LETTER NYA 11C9A MARCHEN SUBJOINED LETTER TA 11C9B MARCHEN SUBJOINED LETTER THA 11C9C MARCHEN SUBJOINED LETTER DA 11C9D MARCHEN SUBJOINED LETTER NA 11C9E MARCHEN SUBJOINED LETTER PA 11C9F MARCHEN SUBJOINED LETTER PHA 11CA0 MARCHEN SUBJOINED LETTER BA 11CA1 MARCHEN SUBJOINED LETTER MA 11CA2 MARCHEN SUBJOINED LETTER TSA 11CA3 MARCHEN SUBJOINED LETTER TSHA 11CA4 MARCHEN SUBJOINED LETTER DZA 11CA5 MARCHEN SUBJOINED LETTER WA 11CA6 MARCHEN SUBJOINED LETTER ZHA 11CA7 MARCHEN SUBJOINED LETTER ZA 11CA9 MARCHEN SUBJOINED LETTER YA 11CAA MARCHEN SUBJOINED LETTER RA 11CAB MARCHEN SUBJOINED LETTER LA 11CAC MARCHEN SUBJOINED LETTER SHA 11CAD MARCHEN SUBJOINED LETTER SA 11CAE MARCHEN SUBJOINED LETTER HA 11CAF MARCHEN SUBJOINED LETTER A @ Dependent vowel signs 11CB0 MARCHEN VOWEL SIGN AA 11CB1 MARCHEN VOWEL SIGN I 11CB2 MARCHEN VOWEL SIGN U 11CB3 MARCHEN VOWEL SIGN E 11CB4 MARCHEN VOWEL SIGN O @ Various signs 11CB5 MARCHEN SIGN ANUSVARA 11CB6 MARCHEN SIGN CANDRABINDU @@ 12000 Cuneiform 123FF @ Signs 12000 CUNEIFORM SIGN A 12001 CUNEIFORM SIGN A TIMES A 12002 CUNEIFORM SIGN A TIMES BAD 12003 CUNEIFORM SIGN A TIMES GAN2 TENU 12004 CUNEIFORM SIGN A TIMES HA 12005 CUNEIFORM SIGN A TIMES IGI 12006 CUNEIFORM SIGN A TIMES LAGAR GUNU 12007 CUNEIFORM SIGN A TIMES MUSH 12008 CUNEIFORM SIGN A TIMES SAG 12009 CUNEIFORM SIGN A2 1200A CUNEIFORM SIGN AB 1200B CUNEIFORM SIGN AB TIMES ASH2 1200C CUNEIFORM SIGN AB TIMES DUN3 GUNU 1200D CUNEIFORM SIGN AB TIMES GAL 1200E CUNEIFORM SIGN AB TIMES GAN2 TENU 1200F CUNEIFORM SIGN AB TIMES HA 12010 CUNEIFORM SIGN AB TIMES IGI GUNU 12011 CUNEIFORM SIGN AB TIMES IMIN 12012 CUNEIFORM SIGN AB TIMES LAGAB 12013 CUNEIFORM SIGN AB TIMES SHESH 12014 CUNEIFORM SIGN AB TIMES U PLUS U PLUS U 12015 CUNEIFORM SIGN AB GUNU 12016 CUNEIFORM SIGN AB2 12017 CUNEIFORM SIGN AB2 TIMES BALAG 12018 CUNEIFORM SIGN AB2 TIMES GAN2 TENU 12019 CUNEIFORM SIGN AB2 TIMES ME PLUS EN 1201A CUNEIFORM SIGN AB2 TIMES SHA3 1201B CUNEIFORM SIGN AB2 TIMES TAK4 1201C CUNEIFORM SIGN AD 1201D CUNEIFORM SIGN AK 1201E CUNEIFORM SIGN AK TIMES ERIN2 1201F CUNEIFORM SIGN AK TIMES SHITA PLUS GISH 12020 CUNEIFORM SIGN AL 12021 CUNEIFORM SIGN AL TIMES AL 12022 CUNEIFORM SIGN AL TIMES DIM2 12023 CUNEIFORM SIGN AL TIMES GISH 12024 CUNEIFORM SIGN AL TIMES HA 12025 CUNEIFORM SIGN AL TIMES KAD3 12026 CUNEIFORM SIGN AL TIMES KI 12027 CUNEIFORM SIGN AL TIMES SHE 12028 CUNEIFORM SIGN AL TIMES USH 12029 CUNEIFORM SIGN ALAN 1202A CUNEIFORM SIGN ALEPH 1202B CUNEIFORM SIGN AMAR 1202C CUNEIFORM SIGN AMAR TIMES SHE 1202D CUNEIFORM SIGN AN 1202E CUNEIFORM SIGN AN OVER AN 1202F CUNEIFORM SIGN AN THREE TIMES 12030 CUNEIFORM SIGN AN PLUS NAGA OPPOSING AN PLUS NAGA 12031 CUNEIFORM SIGN AN PLUS NAGA SQUARED 12032 CUNEIFORM SIGN ANSHE 12033 CUNEIFORM SIGN APIN 12034 CUNEIFORM SIGN ARAD 12035 CUNEIFORM SIGN ARAD TIMES KUR 12036 CUNEIFORM SIGN ARKAB 12037 CUNEIFORM SIGN ASAL2 12038 CUNEIFORM SIGN ASH 12039 CUNEIFORM SIGN ASH ZIDA TENU 1203A CUNEIFORM SIGN ASH KABA TENU 1203B CUNEIFORM SIGN ASH OVER ASH TUG2 OVER TUG2 TUG2 OVER TUG2 PAP 1203C CUNEIFORM SIGN ASH OVER ASH OVER ASH 1203D CUNEIFORM SIGN ASH OVER ASH OVER ASH CROSSING ASH OVER ASH OVER ASH 1203E CUNEIFORM SIGN ASH2 1203F CUNEIFORM SIGN ASHGAB 12040 CUNEIFORM SIGN BA 12041 CUNEIFORM SIGN BAD 12042 CUNEIFORM SIGN BAG3 12043 CUNEIFORM SIGN BAHAR2 12044 CUNEIFORM SIGN BAL 12045 CUNEIFORM SIGN BAL OVER BAL 12046 CUNEIFORM SIGN BALAG 12047 CUNEIFORM SIGN BAR 12048 CUNEIFORM SIGN BARA2 12049 CUNEIFORM SIGN BI 1204A CUNEIFORM SIGN BI TIMES A 1204B CUNEIFORM SIGN BI TIMES GAR 1204C CUNEIFORM SIGN BI TIMES IGI GUNU 1204D CUNEIFORM SIGN BU 1204E CUNEIFORM SIGN BU OVER BU AB 1204F CUNEIFORM SIGN BU OVER BU UN 12050 CUNEIFORM SIGN BU CROSSING BU 12051 CUNEIFORM SIGN BULUG 12052 CUNEIFORM SIGN BULUG OVER BULUG 12053 CUNEIFORM SIGN BUR 12054 CUNEIFORM SIGN BUR2 12055 CUNEIFORM SIGN DA 12056 CUNEIFORM SIGN DAG 12057 CUNEIFORM SIGN DAG KISIM5 TIMES A PLUS MASH 12058 CUNEIFORM SIGN DAG KISIM5 TIMES AMAR 12059 CUNEIFORM SIGN DAG KISIM5 TIMES BALAG 1205A CUNEIFORM SIGN DAG KISIM5 TIMES BI 1205B CUNEIFORM SIGN DAG KISIM5 TIMES GA 1205C CUNEIFORM SIGN DAG KISIM5 TIMES GA PLUS MASH 1205D CUNEIFORM SIGN DAG KISIM5 TIMES GI 1205E CUNEIFORM SIGN DAG KISIM5 TIMES GIR2 1205F CUNEIFORM SIGN DAG KISIM5 TIMES GUD 12060 CUNEIFORM SIGN DAG KISIM5 TIMES HA 12061 CUNEIFORM SIGN DAG KISIM5 TIMES IR 12062 CUNEIFORM SIGN DAG KISIM5 TIMES IR PLUS LU 12063 CUNEIFORM SIGN DAG KISIM5 TIMES KAK 12064 CUNEIFORM SIGN DAG KISIM5 TIMES LA 12065 CUNEIFORM SIGN DAG KISIM5 TIMES LU 12066 CUNEIFORM SIGN DAG KISIM5 TIMES LU PLUS MASH2 12067 CUNEIFORM SIGN DAG KISIM5 TIMES LUM 12068 CUNEIFORM SIGN DAG KISIM5 TIMES NE 12069 CUNEIFORM SIGN DAG KISIM5 TIMES PAP PLUS PAP 1206A CUNEIFORM SIGN DAG KISIM5 TIMES SI 1206B CUNEIFORM SIGN DAG KISIM5 TIMES TAK4 1206C CUNEIFORM SIGN DAG KISIM5 TIMES U2 PLUS GIR2 1206D CUNEIFORM SIGN DAG KISIM5 TIMES USH 1206E CUNEIFORM SIGN DAM 1206F CUNEIFORM SIGN DAR 12070 CUNEIFORM SIGN DARA3 12071 CUNEIFORM SIGN DARA4 12072 CUNEIFORM SIGN DI 12073 CUNEIFORM SIGN DIB 12074 CUNEIFORM SIGN DIM 12075 CUNEIFORM SIGN DIM TIMES SHE 12076 CUNEIFORM SIGN DIM2 12077 CUNEIFORM SIGN DIN 12078 CUNEIFORM SIGN DIN KASKAL U GUNU DISH 12079 CUNEIFORM SIGN DISH 1207A CUNEIFORM SIGN DU 1207B CUNEIFORM SIGN DU OVER DU 1207C CUNEIFORM SIGN DU GUNU 1207D CUNEIFORM SIGN DU SHESHIG 1207E CUNEIFORM SIGN DUB 1207F CUNEIFORM SIGN DUB TIMES ESH2 12080 CUNEIFORM SIGN DUB2 12081 CUNEIFORM SIGN DUG 12082 CUNEIFORM SIGN DUGUD 12083 CUNEIFORM SIGN DUH 12084 CUNEIFORM SIGN DUN 12085 CUNEIFORM SIGN DUN3 12086 CUNEIFORM SIGN DUN3 GUNU 12087 CUNEIFORM SIGN DUN3 GUNU GUNU 12088 CUNEIFORM SIGN DUN4 12089 CUNEIFORM SIGN DUR2 1208A CUNEIFORM SIGN E 1208B CUNEIFORM SIGN E TIMES PAP 1208C CUNEIFORM SIGN E OVER E NUN OVER NUN 1208D CUNEIFORM SIGN E2 1208E CUNEIFORM SIGN E2 TIMES A PLUS HA PLUS DA 1208F CUNEIFORM SIGN E2 TIMES GAR 12090 CUNEIFORM SIGN E2 TIMES MI 12091 CUNEIFORM SIGN E2 TIMES SAL 12092 CUNEIFORM SIGN E2 TIMES SHE 12093 CUNEIFORM SIGN E2 TIMES U 12094 CUNEIFORM SIGN EDIN 12095 CUNEIFORM SIGN EGIR 12096 CUNEIFORM SIGN EL 12097 CUNEIFORM SIGN EN 12098 CUNEIFORM SIGN EN TIMES GAN2 12099 CUNEIFORM SIGN EN TIMES GAN2 TENU 1209A CUNEIFORM SIGN EN TIMES ME 1209B CUNEIFORM SIGN EN CROSSING EN 1209C CUNEIFORM SIGN EN OPPOSING EN 1209D CUNEIFORM SIGN EN SQUARED 1209E CUNEIFORM SIGN EREN 1209F CUNEIFORM SIGN ERIN2 120A0 CUNEIFORM SIGN ESH2 120A1 CUNEIFORM SIGN EZEN 120A2 CUNEIFORM SIGN EZEN TIMES A 120A3 CUNEIFORM SIGN EZEN TIMES A PLUS LAL 120A4 CUNEIFORM SIGN EZEN TIMES A PLUS LAL TIMES LAL 120A5 CUNEIFORM SIGN EZEN TIMES AN 120A6 CUNEIFORM SIGN EZEN TIMES BAD 120A7 CUNEIFORM SIGN EZEN TIMES DUN3 GUNU 120A8 CUNEIFORM SIGN EZEN TIMES DUN3 GUNU GUNU 120A9 CUNEIFORM SIGN EZEN TIMES HA 120AA CUNEIFORM SIGN EZEN TIMES HA GUNU 120AB CUNEIFORM SIGN EZEN TIMES IGI GUNU 120AC CUNEIFORM SIGN EZEN TIMES KASKAL 120AD CUNEIFORM SIGN EZEN TIMES KASKAL SQUARED 120AE CUNEIFORM SIGN EZEN TIMES KU3 120AF CUNEIFORM SIGN EZEN TIMES LA 120B0 CUNEIFORM SIGN EZEN TIMES LAL TIMES LAL 120B1 CUNEIFORM SIGN EZEN TIMES LI 120B2 CUNEIFORM SIGN EZEN TIMES LU 120B3 CUNEIFORM SIGN EZEN TIMES U2 120B4 CUNEIFORM SIGN EZEN TIMES UD 120B5 CUNEIFORM SIGN GA 120B6 CUNEIFORM SIGN GA GUNU 120B7 CUNEIFORM SIGN GA2 120B8 CUNEIFORM SIGN GA2 TIMES A PLUS DA PLUS HA 120B9 CUNEIFORM SIGN GA2 TIMES A PLUS HA 120BA CUNEIFORM SIGN GA2 TIMES A PLUS IGI 120BB CUNEIFORM SIGN GA2 TIMES AB2 TENU PLUS TAB 120BC CUNEIFORM SIGN GA2 TIMES AN 120BD CUNEIFORM SIGN GA2 TIMES ASH 120BE CUNEIFORM SIGN GA2 TIMES ASH2 PLUS GAL 120BF CUNEIFORM SIGN GA2 TIMES BAD 120C0 CUNEIFORM SIGN GA2 TIMES BAR PLUS RA 120C1 CUNEIFORM SIGN GA2 TIMES BUR 120C2 CUNEIFORM SIGN GA2 TIMES BUR PLUS RA 120C3 CUNEIFORM SIGN GA2 TIMES DA 120C4 CUNEIFORM SIGN GA2 TIMES DI 120C5 CUNEIFORM SIGN GA2 TIMES DIM TIMES SHE 120C6 CUNEIFORM SIGN GA2 TIMES DUB 120C7 CUNEIFORM SIGN GA2 TIMES EL 120C8 CUNEIFORM SIGN GA2 TIMES EL PLUS LA 120C9 CUNEIFORM SIGN GA2 TIMES EN 120CA CUNEIFORM SIGN GA2 TIMES EN TIMES GAN2 TENU 120CB CUNEIFORM SIGN GA2 TIMES GAN2 TENU 120CC CUNEIFORM SIGN GA2 TIMES GAR 120CD CUNEIFORM SIGN GA2 TIMES GI 120CE CUNEIFORM SIGN GA2 TIMES GI4 120CF CUNEIFORM SIGN GA2 TIMES GI4 PLUS A 120D0 CUNEIFORM SIGN GA2 TIMES GIR2 PLUS SU 120D1 CUNEIFORM SIGN GA2 TIMES HA PLUS LU PLUS ESH2 120D2 CUNEIFORM SIGN GA2 TIMES HAL 120D3 CUNEIFORM SIGN GA2 TIMES HAL PLUS LA 120D4 CUNEIFORM SIGN GA2 TIMES HI PLUS LI 120D5 CUNEIFORM SIGN GA2 TIMES HUB2 120D6 CUNEIFORM SIGN GA2 TIMES IGI GUNU 120D7 CUNEIFORM SIGN GA2 TIMES ISH PLUS HU PLUS ASH 120D8 CUNEIFORM SIGN GA2 TIMES KAK 120D9 CUNEIFORM SIGN GA2 TIMES KASKAL 120DA CUNEIFORM SIGN GA2 TIMES KID 120DB CUNEIFORM SIGN GA2 TIMES KID PLUS LAL 120DC CUNEIFORM SIGN GA2 TIMES KU3 PLUS AN 120DD CUNEIFORM SIGN GA2 TIMES LA 120DE CUNEIFORM SIGN GA2 TIMES ME PLUS EN 120DF CUNEIFORM SIGN GA2 TIMES MI 120E0 CUNEIFORM SIGN GA2 TIMES NUN 120E1 CUNEIFORM SIGN GA2 TIMES NUN OVER NUN 120E2 CUNEIFORM SIGN GA2 TIMES PA 120E3 CUNEIFORM SIGN GA2 TIMES SAL 120E4 CUNEIFORM SIGN GA2 TIMES SAR 120E5 CUNEIFORM SIGN GA2 TIMES SHE 120E6 CUNEIFORM SIGN GA2 TIMES SHE PLUS TUR 120E7 CUNEIFORM SIGN GA2 TIMES SHID 120E8 CUNEIFORM SIGN GA2 TIMES SUM 120E9 CUNEIFORM SIGN GA2 TIMES TAK4 120EA CUNEIFORM SIGN GA2 TIMES U 120EB CUNEIFORM SIGN GA2 TIMES UD 120EC CUNEIFORM SIGN GA2 TIMES UD PLUS DU 120ED CUNEIFORM SIGN GA2 OVER GA2 120EE CUNEIFORM SIGN GABA 120EF CUNEIFORM SIGN GABA CROSSING GABA 120F0 CUNEIFORM SIGN GAD 120F1 CUNEIFORM SIGN GAD OVER GAD GAR OVER GAR 120F2 CUNEIFORM SIGN GAL 120F3 CUNEIFORM SIGN GAL GAD OVER GAD GAR OVER GAR 120F4 CUNEIFORM SIGN GALAM 120F5 CUNEIFORM SIGN GAM 120F6 CUNEIFORM SIGN GAN 120F7 CUNEIFORM SIGN GAN2 120F8 CUNEIFORM SIGN GAN2 TENU 120F9 CUNEIFORM SIGN GAN2 OVER GAN2 120FA CUNEIFORM SIGN GAN2 CROSSING GAN2 120FB CUNEIFORM SIGN GAR 120FC CUNEIFORM SIGN GAR3 120FD CUNEIFORM SIGN GASHAN 120FE CUNEIFORM SIGN GESHTIN 120FF CUNEIFORM SIGN GESHTIN TIMES KUR 12100 CUNEIFORM SIGN GI 12101 CUNEIFORM SIGN GI TIMES E 12102 CUNEIFORM SIGN GI TIMES U 12103 CUNEIFORM SIGN GI CROSSING GI 12104 CUNEIFORM SIGN GI4 12105 CUNEIFORM SIGN GI4 OVER GI4 12106 CUNEIFORM SIGN GI4 CROSSING GI4 12107 CUNEIFORM SIGN GIDIM 12108 CUNEIFORM SIGN GIR2 12109 CUNEIFORM SIGN GIR2 GUNU 1210A CUNEIFORM SIGN GIR3 1210B CUNEIFORM SIGN GIR3 TIMES A PLUS IGI 1210C CUNEIFORM SIGN GIR3 TIMES GAN2 TENU 1210D CUNEIFORM SIGN GIR3 TIMES IGI 1210E CUNEIFORM SIGN GIR3 TIMES LU PLUS IGI 1210F CUNEIFORM SIGN GIR3 TIMES PA 12110 CUNEIFORM SIGN GISAL 12111 CUNEIFORM SIGN GISH 12112 CUNEIFORM SIGN GISH CROSSING GISH 12113 CUNEIFORM SIGN GISH TIMES BAD 12114 CUNEIFORM SIGN GISH TIMES TAK4 12115 CUNEIFORM SIGN GISH TENU 12116 CUNEIFORM SIGN GU 12117 CUNEIFORM SIGN GU CROSSING GU 12118 CUNEIFORM SIGN GU2 12119 CUNEIFORM SIGN GU2 TIMES KAK 1211A CUNEIFORM SIGN GU2 TIMES KAK TIMES IGI GUNU 1211B CUNEIFORM SIGN GU2 TIMES NUN 1211C CUNEIFORM SIGN GU2 TIMES SAL PLUS TUG2 1211D CUNEIFORM SIGN GU2 GUNU 1211E CUNEIFORM SIGN GUD 1211F CUNEIFORM SIGN GUD TIMES A PLUS KUR 12120 CUNEIFORM SIGN GUD TIMES KUR 12121 CUNEIFORM SIGN GUD OVER GUD LUGAL 12122 CUNEIFORM SIGN GUL 12123 CUNEIFORM SIGN GUM 12124 CUNEIFORM SIGN GUM TIMES SHE 12125 CUNEIFORM SIGN GUR 12126 CUNEIFORM SIGN GUR7 12127 CUNEIFORM SIGN GURUN 12128 CUNEIFORM SIGN GURUSH 12129 CUNEIFORM SIGN HA 1212A CUNEIFORM SIGN HA TENU 1212B CUNEIFORM SIGN HA GUNU 1212C CUNEIFORM SIGN HAL 1212D CUNEIFORM SIGN HI 1212E CUNEIFORM SIGN HI TIMES ASH 1212F CUNEIFORM SIGN HI TIMES ASH2 12130 CUNEIFORM SIGN HI TIMES BAD 12131 CUNEIFORM SIGN HI TIMES DISH 12132 CUNEIFORM SIGN HI TIMES GAD 12133 CUNEIFORM SIGN HI TIMES KIN 12134 CUNEIFORM SIGN HI TIMES NUN 12135 CUNEIFORM SIGN HI TIMES SHE 12136 CUNEIFORM SIGN HI TIMES U 12137 CUNEIFORM SIGN HU 12138 CUNEIFORM SIGN HUB2 12139 CUNEIFORM SIGN HUB2 TIMES AN 1213A CUNEIFORM SIGN HUB2 TIMES HAL 1213B CUNEIFORM SIGN HUB2 TIMES KASKAL 1213C CUNEIFORM SIGN HUB2 TIMES LISH 1213D CUNEIFORM SIGN HUB2 TIMES UD 1213E CUNEIFORM SIGN HUL2 1213F CUNEIFORM SIGN I 12140 CUNEIFORM SIGN I A 12141 CUNEIFORM SIGN IB 12142 CUNEIFORM SIGN IDIM 12143 CUNEIFORM SIGN IDIM OVER IDIM BUR 12144 CUNEIFORM SIGN IDIM OVER IDIM SQUARED 12145 CUNEIFORM SIGN IG 12146 CUNEIFORM SIGN IGI 12147 CUNEIFORM SIGN IGI DIB 12148 CUNEIFORM SIGN IGI RI 12149 CUNEIFORM SIGN IGI OVER IGI SHIR OVER SHIR UD OVER UD 1214A CUNEIFORM SIGN IGI GUNU 1214B CUNEIFORM SIGN IL 1214C CUNEIFORM SIGN IL TIMES GAN2 TENU 1214D CUNEIFORM SIGN IL2 1214E CUNEIFORM SIGN IM 1214F CUNEIFORM SIGN IM TIMES TAK4 12150 CUNEIFORM SIGN IM CROSSING IM 12151 CUNEIFORM SIGN IM OPPOSING IM 12152 CUNEIFORM SIGN IM SQUARED 12153 CUNEIFORM SIGN IMIN 12154 CUNEIFORM SIGN IN 12155 CUNEIFORM SIGN IR 12156 CUNEIFORM SIGN ISH 12157 CUNEIFORM SIGN KA 12158 CUNEIFORM SIGN KA TIMES A 12159 CUNEIFORM SIGN KA TIMES AD 1215A CUNEIFORM SIGN KA TIMES AD PLUS KU3 1215B CUNEIFORM SIGN KA TIMES ASH2 1215C CUNEIFORM SIGN KA TIMES BAD 1215D CUNEIFORM SIGN KA TIMES BALAG 1215E CUNEIFORM SIGN KA TIMES BAR 1215F CUNEIFORM SIGN KA TIMES BI 12160 CUNEIFORM SIGN KA TIMES ERIN2 12161 CUNEIFORM SIGN KA TIMES ESH2 12162 CUNEIFORM SIGN KA TIMES GA 12163 CUNEIFORM SIGN KA TIMES GAL 12164 CUNEIFORM SIGN KA TIMES GAN2 TENU 12165 CUNEIFORM SIGN KA TIMES GAR 12166 CUNEIFORM SIGN KA TIMES GAR PLUS SHA3 PLUS A 12167 CUNEIFORM SIGN KA TIMES GI 12168 CUNEIFORM SIGN KA TIMES GIR2 12169 CUNEIFORM SIGN KA TIMES GISH PLUS SAR 1216A CUNEIFORM SIGN KA TIMES GISH CROSSING GISH 1216B CUNEIFORM SIGN KA TIMES GU 1216C CUNEIFORM SIGN KA TIMES GUR7 1216D CUNEIFORM SIGN KA TIMES IGI 1216E CUNEIFORM SIGN KA TIMES IM 1216F CUNEIFORM SIGN KA TIMES KAK 12170 CUNEIFORM SIGN KA TIMES KI 12171 CUNEIFORM SIGN KA TIMES KID 12172 CUNEIFORM SIGN KA TIMES LI 12173 CUNEIFORM SIGN KA TIMES LU 12174 CUNEIFORM SIGN KA TIMES ME 12175 CUNEIFORM SIGN KA TIMES ME PLUS DU 12176 CUNEIFORM SIGN KA TIMES ME PLUS GI 12177 CUNEIFORM SIGN KA TIMES ME PLUS TE 12178 CUNEIFORM SIGN KA TIMES MI 12179 CUNEIFORM SIGN KA TIMES MI PLUS NUNUZ 1217A CUNEIFORM SIGN KA TIMES NE 1217B CUNEIFORM SIGN KA TIMES NUN 1217C CUNEIFORM SIGN KA TIMES PI 1217D CUNEIFORM SIGN KA TIMES RU 1217E CUNEIFORM SIGN KA TIMES SA 1217F CUNEIFORM SIGN KA TIMES SAR 12180 CUNEIFORM SIGN KA TIMES SHA 12181 CUNEIFORM SIGN KA TIMES SHE 12182 CUNEIFORM SIGN KA TIMES SHID 12183 CUNEIFORM SIGN KA TIMES SHU 12184 CUNEIFORM SIGN KA TIMES SIG 12185 CUNEIFORM SIGN KA TIMES SUHUR 12186 CUNEIFORM SIGN KA TIMES TAR 12187 CUNEIFORM SIGN KA TIMES U 12188 CUNEIFORM SIGN KA TIMES U2 12189 CUNEIFORM SIGN KA TIMES UD 1218A CUNEIFORM SIGN KA TIMES UMUM TIMES PA 1218B CUNEIFORM SIGN KA TIMES USH 1218C CUNEIFORM SIGN KA TIMES ZI 1218D CUNEIFORM SIGN KA2 1218E CUNEIFORM SIGN KA2 CROSSING KA2 1218F CUNEIFORM SIGN KAB 12190 CUNEIFORM SIGN KAD2 12191 CUNEIFORM SIGN KAD3 12192 CUNEIFORM SIGN KAD4 12193 CUNEIFORM SIGN KAD5 12194 CUNEIFORM SIGN KAD5 OVER KAD5 12195 CUNEIFORM SIGN KAK 12196 CUNEIFORM SIGN KAK TIMES IGI GUNU 12197 CUNEIFORM SIGN KAL 12198 CUNEIFORM SIGN KAL TIMES BAD 12199 CUNEIFORM SIGN KAL CROSSING KAL 1219A CUNEIFORM SIGN KAM2 1219B CUNEIFORM SIGN KAM4 1219C CUNEIFORM SIGN KASKAL 1219D CUNEIFORM SIGN KASKAL LAGAB TIMES U OVER LAGAB TIMES U 1219E CUNEIFORM SIGN KASKAL OVER KASKAL LAGAB TIMES U OVER LAGAB TIMES U 1219F CUNEIFORM SIGN KESH2 121A0 CUNEIFORM SIGN KI 121A1 CUNEIFORM SIGN KI TIMES BAD 121A2 CUNEIFORM SIGN KI TIMES U 121A3 CUNEIFORM SIGN KI TIMES UD 121A4 CUNEIFORM SIGN KID 121A5 CUNEIFORM SIGN KIN 121A6 CUNEIFORM SIGN KISAL 121A7 CUNEIFORM SIGN KISH 121A8 CUNEIFORM SIGN KISIM5 121A9 CUNEIFORM SIGN KISIM5 OVER KISIM5 121AA CUNEIFORM SIGN KU 121AB CUNEIFORM SIGN KU OVER HI TIMES ASH2 KU OVER HI TIMES ASH2 121AC CUNEIFORM SIGN KU3 121AD CUNEIFORM SIGN KU4 121AE CUNEIFORM SIGN KU4 VARIANT FORM 121AF CUNEIFORM SIGN KU7 121B0 CUNEIFORM SIGN KUL 121B1 CUNEIFORM SIGN KUL GUNU 121B2 CUNEIFORM SIGN KUN 121B3 CUNEIFORM SIGN KUR 121B4 CUNEIFORM SIGN KUR OPPOSING KUR 121B5 CUNEIFORM SIGN KUSHU2 121B6 CUNEIFORM SIGN KWU318 121B7 CUNEIFORM SIGN LA 121B8 CUNEIFORM SIGN LAGAB 121B9 CUNEIFORM SIGN LAGAB TIMES A 121BA CUNEIFORM SIGN LAGAB TIMES A PLUS DA PLUS HA 121BB CUNEIFORM SIGN LAGAB TIMES A PLUS GAR 121BC CUNEIFORM SIGN LAGAB TIMES A PLUS LAL 121BD CUNEIFORM SIGN LAGAB TIMES AL 121BE CUNEIFORM SIGN LAGAB TIMES AN 121BF CUNEIFORM SIGN LAGAB TIMES ASH ZIDA TENU 121C0 CUNEIFORM SIGN LAGAB TIMES BAD 121C1 CUNEIFORM SIGN LAGAB TIMES BI 121C2 CUNEIFORM SIGN LAGAB TIMES DAR 121C3 CUNEIFORM SIGN LAGAB TIMES EN 121C4 CUNEIFORM SIGN LAGAB TIMES GA 121C5 CUNEIFORM SIGN LAGAB TIMES GAR 121C6 CUNEIFORM SIGN LAGAB TIMES GUD 121C7 CUNEIFORM SIGN LAGAB TIMES GUD PLUS GUD 121C8 CUNEIFORM SIGN LAGAB TIMES HA 121C9 CUNEIFORM SIGN LAGAB TIMES HAL 121CA CUNEIFORM SIGN LAGAB TIMES HI TIMES NUN 121CB CUNEIFORM SIGN LAGAB TIMES IGI GUNU 121CC CUNEIFORM SIGN LAGAB TIMES IM 121CD CUNEIFORM SIGN LAGAB TIMES IM PLUS HA 121CE CUNEIFORM SIGN LAGAB TIMES IM PLUS LU 121CF CUNEIFORM SIGN LAGAB TIMES KI 121D0 CUNEIFORM SIGN LAGAB TIMES KIN 121D1 CUNEIFORM SIGN LAGAB TIMES KU3 121D2 CUNEIFORM SIGN LAGAB TIMES KUL 121D3 CUNEIFORM SIGN LAGAB TIMES KUL PLUS HI PLUS A 121D4 CUNEIFORM SIGN LAGAB TIMES LAGAB 121D5 CUNEIFORM SIGN LAGAB TIMES LISH 121D6 CUNEIFORM SIGN LAGAB TIMES LU 121D7 CUNEIFORM SIGN LAGAB TIMES LUL 121D8 CUNEIFORM SIGN LAGAB TIMES ME 121D9 CUNEIFORM SIGN LAGAB TIMES ME PLUS EN 121DA CUNEIFORM SIGN LAGAB TIMES MUSH 121DB CUNEIFORM SIGN LAGAB TIMES NE 121DC CUNEIFORM SIGN LAGAB TIMES SHE PLUS SUM 121DD CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH PLUS ERIN2 121DE CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH TENU 121DF CUNEIFORM SIGN LAGAB TIMES SHU2 121E0 CUNEIFORM SIGN LAGAB TIMES SHU2 PLUS SHU2 121E1 CUNEIFORM SIGN LAGAB TIMES SUM 121E2 CUNEIFORM SIGN LAGAB TIMES TAG 121E3 CUNEIFORM SIGN LAGAB TIMES TAK4 121E4 CUNEIFORM SIGN LAGAB TIMES TE PLUS A PLUS SU PLUS NA 121E5 CUNEIFORM SIGN LAGAB TIMES U 121E6 CUNEIFORM SIGN LAGAB TIMES U PLUS A 121E7 CUNEIFORM SIGN LAGAB TIMES U PLUS U PLUS U 121E8 CUNEIFORM SIGN LAGAB TIMES U2 PLUS ASH 121E9 CUNEIFORM SIGN LAGAB TIMES UD 121EA CUNEIFORM SIGN LAGAB TIMES USH 121EB CUNEIFORM SIGN LAGAB SQUARED 121EC CUNEIFORM SIGN LAGAR 121ED CUNEIFORM SIGN LAGAR TIMES SHE 121EE CUNEIFORM SIGN LAGAR TIMES SHE PLUS SUM 121EF CUNEIFORM SIGN LAGAR GUNU 121F0 CUNEIFORM SIGN LAGAR GUNU OVER LAGAR GUNU SHE 121F1 CUNEIFORM SIGN LAHSHU 121F2 CUNEIFORM SIGN LAL 121F3 CUNEIFORM SIGN LAL TIMES LAL 121F4 CUNEIFORM SIGN LAM 121F5 CUNEIFORM SIGN LAM TIMES KUR 121F6 CUNEIFORM SIGN LAM TIMES KUR PLUS RU 121F7 CUNEIFORM SIGN LI 121F8 CUNEIFORM SIGN LIL 121F9 CUNEIFORM SIGN LIMMU2 121FA CUNEIFORM SIGN LISH 121FB CUNEIFORM SIGN LU 121FC CUNEIFORM SIGN LU TIMES BAD 121FD CUNEIFORM SIGN LU2 121FE CUNEIFORM SIGN LU2 TIMES AL 121FF CUNEIFORM SIGN LU2 TIMES BAD 12200 CUNEIFORM SIGN LU2 TIMES ESH2 12201 CUNEIFORM SIGN LU2 TIMES ESH2 TENU 12202 CUNEIFORM SIGN LU2 TIMES GAN2 TENU 12203 CUNEIFORM SIGN LU2 TIMES HI TIMES BAD 12204 CUNEIFORM SIGN LU2 TIMES IM 12205 CUNEIFORM SIGN LU2 TIMES KAD2 12206 CUNEIFORM SIGN LU2 TIMES KAD3 12207 CUNEIFORM SIGN LU2 TIMES KAD3 PLUS ASH 12208 CUNEIFORM SIGN LU2 TIMES KI 12209 CUNEIFORM SIGN LU2 TIMES LA PLUS ASH 1220A CUNEIFORM SIGN LU2 TIMES LAGAB 1220B CUNEIFORM SIGN LU2 TIMES ME PLUS EN 1220C CUNEIFORM SIGN LU2 TIMES NE 1220D CUNEIFORM SIGN LU2 TIMES NU 1220E CUNEIFORM SIGN LU2 TIMES SI PLUS ASH 1220F CUNEIFORM SIGN LU2 TIMES SIK2 PLUS BU 12210 CUNEIFORM SIGN LU2 TIMES TUG2 12211 CUNEIFORM SIGN LU2 TENU 12212 CUNEIFORM SIGN LU2 CROSSING LU2 12213 CUNEIFORM SIGN LU2 OPPOSING LU2 12214 CUNEIFORM SIGN LU2 SQUARED 12215 CUNEIFORM SIGN LU2 SHESHIG 12216 CUNEIFORM SIGN LU3 12217 CUNEIFORM SIGN LUGAL 12218 CUNEIFORM SIGN LUGAL OVER LUGAL 12219 CUNEIFORM SIGN LUGAL OPPOSING LUGAL 1221A CUNEIFORM SIGN LUGAL SHESHIG 1221B CUNEIFORM SIGN LUH 1221C CUNEIFORM SIGN LUL 1221D CUNEIFORM SIGN LUM 1221E CUNEIFORM SIGN LUM OVER LUM 1221F CUNEIFORM SIGN LUM OVER LUM GAR OVER GAR 12220 CUNEIFORM SIGN MA 12221 CUNEIFORM SIGN MA TIMES TAK4 12222 CUNEIFORM SIGN MA GUNU 12223 CUNEIFORM SIGN MA2 12224 CUNEIFORM SIGN MAH 12225 CUNEIFORM SIGN MAR 12226 CUNEIFORM SIGN MASH 12227 CUNEIFORM SIGN MASH2 12228 CUNEIFORM SIGN ME 12229 CUNEIFORM SIGN MES 1222A CUNEIFORM SIGN MI 1222B CUNEIFORM SIGN MIN 1222C CUNEIFORM SIGN MU 1222D CUNEIFORM SIGN MU OVER MU 1222E CUNEIFORM SIGN MUG 1222F CUNEIFORM SIGN MUG GUNU 12230 CUNEIFORM SIGN MUNSUB 12231 CUNEIFORM SIGN MURGU2 12232 CUNEIFORM SIGN MUSH 12233 CUNEIFORM SIGN MUSH TIMES A 12234 CUNEIFORM SIGN MUSH TIMES KUR 12235 CUNEIFORM SIGN MUSH TIMES ZA 12236 CUNEIFORM SIGN MUSH OVER MUSH 12237 CUNEIFORM SIGN MUSH OVER MUSH TIMES A PLUS NA 12238 CUNEIFORM SIGN MUSH CROSSING MUSH 12239 CUNEIFORM SIGN MUSH3 1223A CUNEIFORM SIGN MUSH3 TIMES A 1223B CUNEIFORM SIGN MUSH3 TIMES A PLUS DI 1223C CUNEIFORM SIGN MUSH3 TIMES DI 1223D CUNEIFORM SIGN MUSH3 GUNU 1223E CUNEIFORM SIGN NA 1223F CUNEIFORM SIGN NA2 12240 CUNEIFORM SIGN NAGA 12241 CUNEIFORM SIGN NAGA INVERTED 12242 CUNEIFORM SIGN NAGA TIMES SHU TENU 12243 CUNEIFORM SIGN NAGA OPPOSING NAGA 12244 CUNEIFORM SIGN NAGAR 12245 CUNEIFORM SIGN NAM NUTILLU 12246 CUNEIFORM SIGN NAM 12247 CUNEIFORM SIGN NAM2 12248 CUNEIFORM SIGN NE 12249 CUNEIFORM SIGN NE TIMES A 1224A CUNEIFORM SIGN NE TIMES UD 1224B CUNEIFORM SIGN NE SHESHIG 1224C CUNEIFORM SIGN NI 1224D CUNEIFORM SIGN NI TIMES E 1224E CUNEIFORM SIGN NI2 1224F CUNEIFORM SIGN NIM 12250 CUNEIFORM SIGN NIM TIMES GAN2 TENU 12251 CUNEIFORM SIGN NIM TIMES GAR PLUS GAN2 TENU 12252 CUNEIFORM SIGN NINDA2 12253 CUNEIFORM SIGN NINDA2 TIMES AN 12254 CUNEIFORM SIGN NINDA2 TIMES ASH 12255 CUNEIFORM SIGN NINDA2 TIMES ASH PLUS ASH 12256 CUNEIFORM SIGN NINDA2 TIMES GUD 12257 CUNEIFORM SIGN NINDA2 TIMES ME PLUS GAN2 TENU 12258 CUNEIFORM SIGN NINDA2 TIMES NE 12259 CUNEIFORM SIGN NINDA2 TIMES NUN 1225A CUNEIFORM SIGN NINDA2 TIMES SHE 1225B CUNEIFORM SIGN NINDA2 TIMES SHE PLUS A AN 1225C CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH 1225D CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH PLUS ASH 1225E CUNEIFORM SIGN NINDA2 TIMES U2 PLUS ASH 1225F CUNEIFORM SIGN NINDA2 TIMES USH 12260 CUNEIFORM SIGN NISAG 12261 CUNEIFORM SIGN NU 12262 CUNEIFORM SIGN NU11 12263 CUNEIFORM SIGN NUN 12264 CUNEIFORM SIGN NUN LAGAR TIMES GAR 12265 CUNEIFORM SIGN NUN LAGAR TIMES MASH 12266 CUNEIFORM SIGN NUN LAGAR TIMES SAL 12267 CUNEIFORM SIGN NUN LAGAR TIMES SAL OVER NUN LAGAR TIMES SAL 12268 CUNEIFORM SIGN NUN LAGAR TIMES USH 12269 CUNEIFORM SIGN NUN TENU 1226A CUNEIFORM SIGN NUN OVER NUN 1226B CUNEIFORM SIGN NUN CROSSING NUN 1226C CUNEIFORM SIGN NUN CROSSING NUN LAGAR OVER LAGAR 1226D CUNEIFORM SIGN NUNUZ 1226E CUNEIFORM SIGN NUNUZ AB2 TIMES ASHGAB 1226F CUNEIFORM SIGN NUNUZ AB2 TIMES BI 12270 CUNEIFORM SIGN NUNUZ AB2 TIMES DUG 12271 CUNEIFORM SIGN NUNUZ AB2 TIMES GUD 12272 CUNEIFORM SIGN NUNUZ AB2 TIMES IGI GUNU 12273 CUNEIFORM SIGN NUNUZ AB2 TIMES KAD3 12274 CUNEIFORM SIGN NUNUZ AB2 TIMES LA 12275 CUNEIFORM SIGN NUNUZ AB2 TIMES NE 12276 CUNEIFORM SIGN NUNUZ AB2 TIMES SILA3 12277 CUNEIFORM SIGN NUNUZ AB2 TIMES U2 12278 CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI 12279 CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI U 1227A CUNEIFORM SIGN PA 1227B CUNEIFORM SIGN PAD 1227C CUNEIFORM SIGN PAN 1227D CUNEIFORM SIGN PAP 1227E CUNEIFORM SIGN PESH2 1227F CUNEIFORM SIGN PI 12280 CUNEIFORM SIGN PI TIMES A 12281 CUNEIFORM SIGN PI TIMES AB 12282 CUNEIFORM SIGN PI TIMES BI 12283 CUNEIFORM SIGN PI TIMES BU 12284 CUNEIFORM SIGN PI TIMES E 12285 CUNEIFORM SIGN PI TIMES I 12286 CUNEIFORM SIGN PI TIMES IB 12287 CUNEIFORM SIGN PI TIMES U 12288 CUNEIFORM SIGN PI TIMES U2 12289 CUNEIFORM SIGN PI CROSSING PI 1228A CUNEIFORM SIGN PIRIG 1228B CUNEIFORM SIGN PIRIG TIMES KAL 1228C CUNEIFORM SIGN PIRIG TIMES UD 1228D CUNEIFORM SIGN PIRIG TIMES ZA 1228E CUNEIFORM SIGN PIRIG OPPOSING PIRIG 1228F CUNEIFORM SIGN RA 12290 CUNEIFORM SIGN RAB 12291 CUNEIFORM SIGN RI 12292 CUNEIFORM SIGN RU 12293 CUNEIFORM SIGN SA 12294 CUNEIFORM SIGN SAG NUTILLU 12295 CUNEIFORM SIGN SAG 12296 CUNEIFORM SIGN SAG TIMES A 12297 CUNEIFORM SIGN SAG TIMES DU 12298 CUNEIFORM SIGN SAG TIMES DUB 12299 CUNEIFORM SIGN SAG TIMES HA 1229A CUNEIFORM SIGN SAG TIMES KAK 1229B CUNEIFORM SIGN SAG TIMES KUR 1229C CUNEIFORM SIGN SAG TIMES LUM 1229D CUNEIFORM SIGN SAG TIMES MI 1229E CUNEIFORM SIGN SAG TIMES NUN 1229F CUNEIFORM SIGN SAG TIMES SAL 122A0 CUNEIFORM SIGN SAG TIMES SHID 122A1 CUNEIFORM SIGN SAG TIMES TAB 122A2 CUNEIFORM SIGN SAG TIMES U2 122A3 CUNEIFORM SIGN SAG TIMES UB 122A4 CUNEIFORM SIGN SAG TIMES UM 122A5 CUNEIFORM SIGN SAG TIMES UR 122A6 CUNEIFORM SIGN SAG TIMES USH 122A7 CUNEIFORM SIGN SAG OVER SAG 122A8 CUNEIFORM SIGN SAG GUNU 122A9 CUNEIFORM SIGN SAL 122AA CUNEIFORM SIGN SAL LAGAB TIMES ASH2 122AB CUNEIFORM SIGN SANGA2 122AC CUNEIFORM SIGN SAR 122AD CUNEIFORM SIGN SHA 122AE CUNEIFORM SIGN SHA3 122AF CUNEIFORM SIGN SHA3 TIMES A 122B0 CUNEIFORM SIGN SHA3 TIMES BAD 122B1 CUNEIFORM SIGN SHA3 TIMES GISH 122B2 CUNEIFORM SIGN SHA3 TIMES NE 122B3 CUNEIFORM SIGN SHA3 TIMES SHU2 122B4 CUNEIFORM SIGN SHA3 TIMES TUR 122B5 CUNEIFORM SIGN SHA3 TIMES U 122B6 CUNEIFORM SIGN SHA3 TIMES U PLUS A 122B7 CUNEIFORM SIGN SHA6 122B8 CUNEIFORM SIGN SHAB6 122B9 CUNEIFORM SIGN SHAR2 * formed by making a circular indentation with the end of the stylus 122BA CUNEIFORM SIGN SHE 122BB CUNEIFORM SIGN SHE HU 122BC CUNEIFORM SIGN SHE OVER SHE GAD OVER GAD GAR OVER GAR 122BD CUNEIFORM SIGN SHE OVER SHE TAB OVER TAB GAR OVER GAR 122BE CUNEIFORM SIGN SHEG9 122BF CUNEIFORM SIGN SHEN 122C0 CUNEIFORM SIGN SHESH 122C1 CUNEIFORM SIGN SHESH2 122C2 CUNEIFORM SIGN SHESHLAM 122C3 CUNEIFORM SIGN SHID 122C4 CUNEIFORM SIGN SHID TIMES A 122C5 CUNEIFORM SIGN SHID TIMES IM 122C6 CUNEIFORM SIGN SHIM 122C7 CUNEIFORM SIGN SHIM TIMES A 122C8 CUNEIFORM SIGN SHIM TIMES BAL 122C9 CUNEIFORM SIGN SHIM TIMES BULUG 122CA CUNEIFORM SIGN SHIM TIMES DIN 122CB CUNEIFORM SIGN SHIM TIMES GAR 122CC CUNEIFORM SIGN SHIM TIMES IGI 122CD CUNEIFORM SIGN SHIM TIMES IGI GUNU 122CE CUNEIFORM SIGN SHIM TIMES KUSHU2 122CF CUNEIFORM SIGN SHIM TIMES LUL 122D0 CUNEIFORM SIGN SHIM TIMES MUG 122D1 CUNEIFORM SIGN SHIM TIMES SAL 122D2 CUNEIFORM SIGN SHINIG 122D3 CUNEIFORM SIGN SHIR 122D4 CUNEIFORM SIGN SHIR TENU % CUNEIFORM SIGN NU11 TENU 122D5 CUNEIFORM SIGN SHIR OVER SHIR BUR OVER BUR % CUNEIFORM SIGN NU11 OVER NU11 BUR OVER BUR 122D6 CUNEIFORM SIGN SHITA 122D7 CUNEIFORM SIGN SHU 122D8 CUNEIFORM SIGN SHU OVER INVERTED SHU 122D9 CUNEIFORM SIGN SHU2 122DA CUNEIFORM SIGN SHUBUR 122DB CUNEIFORM SIGN SI 122DC CUNEIFORM SIGN SI GUNU 122DD CUNEIFORM SIGN SIG 122DE CUNEIFORM SIGN SIG4 122DF CUNEIFORM SIGN SIG4 OVER SIG4 SHU2 122E0 CUNEIFORM SIGN SIK2 122E1 CUNEIFORM SIGN SILA3 122E2 CUNEIFORM SIGN SU 122E3 CUNEIFORM SIGN SU OVER SU 122E4 CUNEIFORM SIGN SUD 122E5 CUNEIFORM SIGN SUD2 122E6 CUNEIFORM SIGN SUHUR 122E7 CUNEIFORM SIGN SUM 122E8 CUNEIFORM SIGN SUMASH 122E9 CUNEIFORM SIGN SUR 122EA CUNEIFORM SIGN SUR9 122EB CUNEIFORM SIGN TA 122EC CUNEIFORM SIGN TA ASTERISK 122ED CUNEIFORM SIGN TA TIMES HI 122EE CUNEIFORM SIGN TA TIMES MI 122EF CUNEIFORM SIGN TA GUNU 122F0 CUNEIFORM SIGN TAB 122F1 CUNEIFORM SIGN TAB OVER TAB NI OVER NI DISH OVER DISH 122F2 CUNEIFORM SIGN TAB SQUARED 122F3 CUNEIFORM SIGN TAG 122F4 CUNEIFORM SIGN TAG TIMES BI 122F5 CUNEIFORM SIGN TAG TIMES GUD 122F6 CUNEIFORM SIGN TAG TIMES SHE 122F7 CUNEIFORM SIGN TAG TIMES SHU 122F8 CUNEIFORM SIGN TAG TIMES TUG2 122F9 CUNEIFORM SIGN TAG TIMES UD 122FA CUNEIFORM SIGN TAK4 122FB CUNEIFORM SIGN TAR 122FC CUNEIFORM SIGN TE 122FD CUNEIFORM SIGN TE GUNU 122FE CUNEIFORM SIGN TI 122FF CUNEIFORM SIGN TI TENU 12300 CUNEIFORM SIGN TIL 12301 CUNEIFORM SIGN TIR 12302 CUNEIFORM SIGN TIR TIMES TAK4 12303 CUNEIFORM SIGN TIR OVER TIR 12304 CUNEIFORM SIGN TIR OVER TIR GAD OVER GAD GAR OVER GAR 12305 CUNEIFORM SIGN TU 12306 CUNEIFORM SIGN TUG2 12307 CUNEIFORM SIGN TUK 12308 CUNEIFORM SIGN TUM 12309 CUNEIFORM SIGN TUR 1230A CUNEIFORM SIGN TUR OVER TUR ZA OVER ZA 1230B CUNEIFORM SIGN U 1230C CUNEIFORM SIGN U GUD 1230D CUNEIFORM SIGN U U U 1230E CUNEIFORM SIGN U OVER U PA OVER PA GAR OVER GAR 1230F CUNEIFORM SIGN U OVER U SUR OVER SUR 12310 CUNEIFORM SIGN U OVER U U REVERSED OVER U REVERSED 12311 CUNEIFORM SIGN U2 12312 CUNEIFORM SIGN UB 12313 CUNEIFORM SIGN UD 12314 CUNEIFORM SIGN UD KUSHU2 12315 CUNEIFORM SIGN UD TIMES BAD 12316 CUNEIFORM SIGN UD TIMES MI 12317 CUNEIFORM SIGN UD TIMES U PLUS U PLUS U 12318 CUNEIFORM SIGN UD TIMES U PLUS U PLUS U GUNU 12319 CUNEIFORM SIGN UD GUNU 1231A CUNEIFORM SIGN UD SHESHIG 1231B CUNEIFORM SIGN UD SHESHIG TIMES BAD 1231C CUNEIFORM SIGN UDUG 1231D CUNEIFORM SIGN UM 1231E CUNEIFORM SIGN UM TIMES LAGAB 1231F CUNEIFORM SIGN UM TIMES ME PLUS DA 12320 CUNEIFORM SIGN UM TIMES SHA3 12321 CUNEIFORM SIGN UM TIMES U 12322 CUNEIFORM SIGN UMBIN 12323 CUNEIFORM SIGN UMUM 12324 CUNEIFORM SIGN UMUM TIMES KASKAL 12325 CUNEIFORM SIGN UMUM TIMES PA 12326 CUNEIFORM SIGN UN 12327 CUNEIFORM SIGN UN GUNU 12328 CUNEIFORM SIGN UR 12329 CUNEIFORM SIGN UR CROSSING UR 1232A CUNEIFORM SIGN UR SHESHIG 1232B CUNEIFORM SIGN UR2 1232C CUNEIFORM SIGN UR2 TIMES A PLUS HA 1232D CUNEIFORM SIGN UR2 TIMES A PLUS NA 1232E CUNEIFORM SIGN UR2 TIMES AL 1232F CUNEIFORM SIGN UR2 TIMES HA 12330 CUNEIFORM SIGN UR2 TIMES NUN 12331 CUNEIFORM SIGN UR2 TIMES U2 12332 CUNEIFORM SIGN UR2 TIMES U2 PLUS ASH 12333 CUNEIFORM SIGN UR2 TIMES U2 PLUS BI 12334 CUNEIFORM SIGN UR4 12335 CUNEIFORM SIGN URI 12336 CUNEIFORM SIGN URI3 12337 CUNEIFORM SIGN URU 12338 CUNEIFORM SIGN URU TIMES A 12339 CUNEIFORM SIGN URU TIMES ASHGAB 1233A CUNEIFORM SIGN URU TIMES BAR 1233B CUNEIFORM SIGN URU TIMES DUN 1233C CUNEIFORM SIGN URU TIMES GA 1233D CUNEIFORM SIGN URU TIMES GAL 1233E CUNEIFORM SIGN URU TIMES GAN2 TENU 1233F CUNEIFORM SIGN URU TIMES GAR 12340 CUNEIFORM SIGN URU TIMES GU 12341 CUNEIFORM SIGN URU TIMES HA 12342 CUNEIFORM SIGN URU TIMES IGI 12343 CUNEIFORM SIGN URU TIMES IM 12344 CUNEIFORM SIGN URU TIMES ISH 12345 CUNEIFORM SIGN URU TIMES KI 12346 CUNEIFORM SIGN URU TIMES LUM 12347 CUNEIFORM SIGN URU TIMES MIN 12348 CUNEIFORM SIGN URU TIMES PA 12349 CUNEIFORM SIGN URU TIMES SHE 1234A CUNEIFORM SIGN URU TIMES SIG4 1234B CUNEIFORM SIGN URU TIMES TU 1234C CUNEIFORM SIGN URU TIMES U PLUS GUD 1234D CUNEIFORM SIGN URU TIMES UD 1234E CUNEIFORM SIGN URU TIMES URUDA 1234F CUNEIFORM SIGN URUDA 12350 CUNEIFORM SIGN URUDA TIMES U 12351 CUNEIFORM SIGN USH 12352 CUNEIFORM SIGN USH TIMES A 12353 CUNEIFORM SIGN USH TIMES KU 12354 CUNEIFORM SIGN USH TIMES KUR 12355 CUNEIFORM SIGN USH TIMES TAK4 12356 CUNEIFORM SIGN USHX 12357 CUNEIFORM SIGN USH2 12358 CUNEIFORM SIGN USHUMX 12359 CUNEIFORM SIGN UTUKI 1235A CUNEIFORM SIGN UZ3 1235B CUNEIFORM SIGN UZ3 TIMES KASKAL 1235C CUNEIFORM SIGN UZU 1235D CUNEIFORM SIGN ZA 1235E CUNEIFORM SIGN ZA TENU 1235F CUNEIFORM SIGN ZA SQUARED TIMES KUR 12360 CUNEIFORM SIGN ZAG 12361 CUNEIFORM SIGN ZAMX 12362 CUNEIFORM SIGN ZE2 12363 CUNEIFORM SIGN ZI 12364 CUNEIFORM SIGN ZI OVER ZI 12365 CUNEIFORM SIGN ZI3 12366 CUNEIFORM SIGN ZIB 12367 CUNEIFORM SIGN ZIB KABA TENU 12368 CUNEIFORM SIGN ZIG 12369 CUNEIFORM SIGN ZIZ2 1236A CUNEIFORM SIGN ZU 1236B CUNEIFORM SIGN ZU5 1236C CUNEIFORM SIGN ZU5 TIMES A 1236D CUNEIFORM SIGN ZUBUR 1236E CUNEIFORM SIGN ZUM @ Elamite sign 1236F CUNEIFORM SIGN KAP ELAMITE @ Signs 12370 CUNEIFORM SIGN AB TIMES NUN 12371 CUNEIFORM SIGN AB2 TIMES A 12372 CUNEIFORM SIGN AMAR TIMES KUG 12373 CUNEIFORM SIGN DAG KISIM5 TIMES U2 PLUS MASH 12374 CUNEIFORM SIGN DAG3 12375 CUNEIFORM SIGN DISH PLUS SHU 12376 CUNEIFORM SIGN DUB TIMES SHE 12377 CUNEIFORM SIGN EZEN TIMES GUD 12378 CUNEIFORM SIGN EZEN TIMES SHE 12379 CUNEIFORM SIGN GA2 TIMES AN PLUS KAK PLUS A 1237A CUNEIFORM SIGN GA2 TIMES ASH2 1237B CUNEIFORM SIGN GE22 1237C CUNEIFORM SIGN GIG 1237D CUNEIFORM SIGN HUSH 1237E CUNEIFORM SIGN KA TIMES ANSHE 1237F CUNEIFORM SIGN KA TIMES ASH3 12380 CUNEIFORM SIGN KA TIMES GISH 12381 CUNEIFORM SIGN KA TIMES GUD 12382 CUNEIFORM SIGN KA TIMES HI TIMES ASH2 12383 CUNEIFORM SIGN KA TIMES LUM 12384 CUNEIFORM SIGN KA TIMES PA 12385 CUNEIFORM SIGN KA TIMES SHUL 12386 CUNEIFORM SIGN KA TIMES TU 12387 CUNEIFORM SIGN KA TIMES UR2 12388 CUNEIFORM SIGN LAGAB TIMES GI 12389 CUNEIFORM SIGN LU2 SHESHIG TIMES BAD 1238A CUNEIFORM SIGN LU2 TIMES ESH2 PLUS LAL 1238B CUNEIFORM SIGN LU2 TIMES SHU 1238C CUNEIFORM SIGN MESH 1238D CUNEIFORM SIGN MUSH3 TIMES ZA 1238E CUNEIFORM SIGN NA4 1238F CUNEIFORM SIGN NIN 12390 CUNEIFORM SIGN NIN9 12391 CUNEIFORM SIGN NINDA2 TIMES BAL 12392 CUNEIFORM SIGN NINDA2 TIMES GI 12393 CUNEIFORM SIGN NU11 ROTATED NINETY DEGREES 12394 CUNEIFORM SIGN PESH2 ASTERISK 12395 CUNEIFORM SIGN PIR2 12396 CUNEIFORM SIGN SAG TIMES IGI GUNU 12397 CUNEIFORM SIGN TI2 12398 CUNEIFORM SIGN UM TIMES ME 12399 CUNEIFORM SIGN U U @@ 12400 Cuneiform Numbers and Punctuation 1247F @ Numeric signs 12400 CUNEIFORM NUMERIC SIGN TWO ASH 12401 CUNEIFORM NUMERIC SIGN THREE ASH 12402 CUNEIFORM NUMERIC SIGN FOUR ASH 12403 CUNEIFORM NUMERIC SIGN FIVE ASH 12404 CUNEIFORM NUMERIC SIGN SIX ASH 12405 CUNEIFORM NUMERIC SIGN SEVEN ASH 12406 CUNEIFORM NUMERIC SIGN EIGHT ASH 12407 CUNEIFORM NUMERIC SIGN NINE ASH 12408 CUNEIFORM NUMERIC SIGN THREE DISH 12409 CUNEIFORM NUMERIC SIGN FOUR DISH 1240A CUNEIFORM NUMERIC SIGN FIVE DISH 1240B CUNEIFORM NUMERIC SIGN SIX DISH 1240C CUNEIFORM NUMERIC SIGN SEVEN DISH 1240D CUNEIFORM NUMERIC SIGN EIGHT DISH 1240E CUNEIFORM NUMERIC SIGN NINE DISH 1240F CUNEIFORM NUMERIC SIGN FOUR U 12410 CUNEIFORM NUMERIC SIGN FIVE U 12411 CUNEIFORM NUMERIC SIGN SIX U 12412 CUNEIFORM NUMERIC SIGN SEVEN U 12413 CUNEIFORM NUMERIC SIGN EIGHT U 12414 CUNEIFORM NUMERIC SIGN NINE U 12415 CUNEIFORM NUMERIC SIGN ONE GESH2 12416 CUNEIFORM NUMERIC SIGN TWO GESH2 12417 CUNEIFORM NUMERIC SIGN THREE GESH2 12418 CUNEIFORM NUMERIC SIGN FOUR GESH2 12419 CUNEIFORM NUMERIC SIGN FIVE GESH2 1241A CUNEIFORM NUMERIC SIGN SIX GESH2 1241B CUNEIFORM NUMERIC SIGN SEVEN GESH2 1241C CUNEIFORM NUMERIC SIGN EIGHT GESH2 1241D CUNEIFORM NUMERIC SIGN NINE GESH2 1241E CUNEIFORM NUMERIC SIGN ONE GESHU 1241F CUNEIFORM NUMERIC SIGN TWO GESHU 12420 CUNEIFORM NUMERIC SIGN THREE GESHU 12421 CUNEIFORM NUMERIC SIGN FOUR GESHU 12422 CUNEIFORM NUMERIC SIGN FIVE GESHU 12423 CUNEIFORM NUMERIC SIGN TWO SHAR2 12424 CUNEIFORM NUMERIC SIGN THREE SHAR2 12425 CUNEIFORM NUMERIC SIGN THREE SHAR2 VARIANT FORM 12426 CUNEIFORM NUMERIC SIGN FOUR SHAR2 12427 CUNEIFORM NUMERIC SIGN FIVE SHAR2 12428 CUNEIFORM NUMERIC SIGN SIX SHAR2 12429 CUNEIFORM NUMERIC SIGN SEVEN SHAR2 1242A CUNEIFORM NUMERIC SIGN EIGHT SHAR2 1242B CUNEIFORM NUMERIC SIGN NINE SHAR2 1242C CUNEIFORM NUMERIC SIGN ONE SHARU 1242D CUNEIFORM NUMERIC SIGN TWO SHARU 1242E CUNEIFORM NUMERIC SIGN THREE SHARU 1242F CUNEIFORM NUMERIC SIGN THREE SHARU VARIANT FORM 12430 CUNEIFORM NUMERIC SIGN FOUR SHARU 12431 CUNEIFORM NUMERIC SIGN FIVE SHARU 12432 CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH 12433 CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN 12434 CUNEIFORM NUMERIC SIGN ONE BURU 12435 CUNEIFORM NUMERIC SIGN TWO BURU 12436 CUNEIFORM NUMERIC SIGN THREE BURU 12437 CUNEIFORM NUMERIC SIGN THREE BURU VARIANT FORM 12438 CUNEIFORM NUMERIC SIGN FOUR BURU 12439 CUNEIFORM NUMERIC SIGN FIVE BURU 1243A CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH16 1243B CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH21 1243C CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU 1243D CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU4 1243E CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU A 1243F CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU B 12440 CUNEIFORM NUMERIC SIGN SIX VARIANT FORM ASH9 12441 CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN3 12442 CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN A 12443 CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN B 12444 CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU 12445 CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU3 12446 CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU 12447 CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU3 12448 CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU4 12449 CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU A 1244A CUNEIFORM NUMERIC SIGN TWO ASH TENU 1244B CUNEIFORM NUMERIC SIGN THREE ASH TENU 1244C CUNEIFORM NUMERIC SIGN FOUR ASH TENU 1244D CUNEIFORM NUMERIC SIGN FIVE ASH TENU 1244E CUNEIFORM NUMERIC SIGN SIX ASH TENU 1244F CUNEIFORM NUMERIC SIGN ONE BAN2 12450 CUNEIFORM NUMERIC SIGN TWO BAN2 12451 CUNEIFORM NUMERIC SIGN THREE BAN2 12452 CUNEIFORM NUMERIC SIGN FOUR BAN2 12453 CUNEIFORM NUMERIC SIGN FOUR BAN2 VARIANT FORM 12454 CUNEIFORM NUMERIC SIGN FIVE BAN2 12455 CUNEIFORM NUMERIC SIGN FIVE BAN2 VARIANT FORM 12456 CUNEIFORM NUMERIC SIGN NIGIDAMIN 12457 CUNEIFORM NUMERIC SIGN NIGIDAESH 12458 CUNEIFORM NUMERIC SIGN ONE ESHE3 12459 CUNEIFORM NUMERIC SIGN TWO ESHE3 @ Fractions 1245A CUNEIFORM NUMERIC SIGN ONE THIRD DISH 1245B CUNEIFORM NUMERIC SIGN TWO THIRDS DISH 1245C CUNEIFORM NUMERIC SIGN FIVE SIXTHS DISH 1245D CUNEIFORM NUMERIC SIGN ONE THIRD VARIANT FORM A 1245E CUNEIFORM NUMERIC SIGN TWO THIRDS VARIANT FORM A 1245F CUNEIFORM NUMERIC SIGN ONE EIGHTH ASH 12460 CUNEIFORM NUMERIC SIGN ONE QUARTER ASH 12461 CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE SIXTH 12462 CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER 12463 CUNEIFORM NUMERIC SIGN ONE QUARTER GUR 12464 CUNEIFORM NUMERIC SIGN ONE HALF GUR @ Elamite fractions 12465 CUNEIFORM NUMERIC SIGN ELAMITE ONE THIRD 12466 CUNEIFORM NUMERIC SIGN ELAMITE TWO THIRDS @ Elamite numeric signs 12467 CUNEIFORM NUMERIC SIGN ELAMITE FORTY 12468 CUNEIFORM NUMERIC SIGN ELAMITE FIFTY @ Numeric signs 12469 CUNEIFORM NUMERIC SIGN FOUR U VARIANT FORM 1246A CUNEIFORM NUMERIC SIGN FIVE U VARIANT FORM 1246B CUNEIFORM NUMERIC SIGN SIX U VARIANT FORM 1246C CUNEIFORM NUMERIC SIGN SEVEN U VARIANT FORM 1246D CUNEIFORM NUMERIC SIGN EIGHT U VARIANT FORM 1246E CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM @ Punctuation 12470 CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER x (ugaritic word divider - 1039F) x (old persian word divider - 103D0) 12471 CUNEIFORM PUNCTUATION SIGN VERTICAL COLON 12472 CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON 12473 CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON 12474 CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON @@ 12480 Early Dynastic Cuneiform 1254F @ Signs 12480 CUNEIFORM SIGN AB TIMES NUN TENU 12481 CUNEIFORM SIGN AB TIMES SHU2 12482 CUNEIFORM SIGN AD TIMES ESH2 12483 CUNEIFORM SIGN BAD TIMES DISH TENU 12484 CUNEIFORM SIGN BAHAR2 TIMES AB2 12485 CUNEIFORM SIGN BAHAR2 TIMES NI 12486 CUNEIFORM SIGN BAHAR2 TIMES ZA 12487 CUNEIFORM SIGN BU OVER BU TIMES NA2 12488 CUNEIFORM SIGN DA TIMES TAK4 12489 CUNEIFORM SIGN DAG TIMES KUR 1248A CUNEIFORM SIGN DIM TIMES IGI 1248B CUNEIFORM SIGN DIM TIMES U U U 1248C CUNEIFORM SIGN DIM2 TIMES UD 1248D CUNEIFORM SIGN DUG TIMES ANSHE 1248E CUNEIFORM SIGN DUG TIMES ASH 1248F CUNEIFORM SIGN DUG TIMES ASH AT LEFT 12490 CUNEIFORM SIGN DUG TIMES DIN 12491 CUNEIFORM SIGN DUG TIMES DUN 12492 CUNEIFORM SIGN DUG TIMES ERIN2 12493 CUNEIFORM SIGN DUG TIMES GA 12494 CUNEIFORM SIGN DUG TIMES GI 12495 CUNEIFORM SIGN DUG TIMES GIR2 GUNU 12496 CUNEIFORM SIGN DUG TIMES GISH 12497 CUNEIFORM SIGN DUG TIMES HA 12498 CUNEIFORM SIGN DUG TIMES HI 12499 CUNEIFORM SIGN DUG TIMES IGI GUNU 1249A CUNEIFORM SIGN DUG TIMES KASKAL 1249B CUNEIFORM SIGN DUG TIMES KUR 1249C CUNEIFORM SIGN DUG TIMES KUSHU2 1249D CUNEIFORM SIGN DUG TIMES KUSHU2 PLUS KASKAL 1249E CUNEIFORM SIGN DUG TIMES LAK-020 1249F CUNEIFORM SIGN DUG TIMES LAM 124A0 CUNEIFORM SIGN DUG TIMES LAM TIMES KUR 124A1 CUNEIFORM SIGN DUG TIMES LUH PLUS GISH 124A2 CUNEIFORM SIGN DUG TIMES MASH 124A3 CUNEIFORM SIGN DUG TIMES MES 124A4 CUNEIFORM SIGN DUG TIMES MI 124A5 CUNEIFORM SIGN DUG TIMES NI 124A6 CUNEIFORM SIGN DUG TIMES PI 124A7 CUNEIFORM SIGN DUG TIMES SHE 124A8 CUNEIFORM SIGN DUG TIMES SI GUNU 124A9 CUNEIFORM SIGN E2 TIMES KUR 124AA CUNEIFORM SIGN E2 TIMES PAP 124AB CUNEIFORM SIGN ERIN2 X 124AC CUNEIFORM SIGN ESH2 CROSSING ESH2 124AD CUNEIFORM SIGN EZEN SHESHIG TIMES ASH 124AE CUNEIFORM SIGN EZEN SHESHIG TIMES HI 124AF CUNEIFORM SIGN EZEN SHESHIG TIMES IGI GUNU 124B0 CUNEIFORM SIGN EZEN SHESHIG TIMES LA 124B1 CUNEIFORM SIGN EZEN SHESHIG TIMES LAL 124B2 CUNEIFORM SIGN EZEN SHESHIG TIMES ME 124B3 CUNEIFORM SIGN EZEN SHESHIG TIMES MES 124B4 CUNEIFORM SIGN EZEN SHESHIG TIMES SU 124B5 CUNEIFORM SIGN EZEN TIMES SU 124B6 CUNEIFORM SIGN GA2 TIMES BAHAR2 124B7 CUNEIFORM SIGN GA2 TIMES DIM GUNU 124B8 CUNEIFORM SIGN GA2 TIMES DUG TIMES IGI GUNU 124B9 CUNEIFORM SIGN GA2 TIMES DUG TIMES KASKAL 124BA CUNEIFORM SIGN GA2 TIMES EREN 124BB CUNEIFORM SIGN GA2 TIMES GA 124BC CUNEIFORM SIGN GA2 TIMES GAR PLUS DI 124BD CUNEIFORM SIGN GA2 TIMES GAR PLUS NE 124BE CUNEIFORM SIGN GA2 TIMES HA PLUS A 124BF CUNEIFORM SIGN GA2 TIMES KUSHU2 PLUS KASKAL 124C0 CUNEIFORM SIGN GA2 TIMES LAM 124C1 CUNEIFORM SIGN GA2 TIMES LAM TIMES KUR 124C2 CUNEIFORM SIGN GA2 TIMES LUH 124C3 CUNEIFORM SIGN GA2 TIMES MUSH 124C4 CUNEIFORM SIGN GA2 TIMES NE 124C5 CUNEIFORM SIGN GA2 TIMES NE PLUS E2 124C6 CUNEIFORM SIGN GA2 TIMES NE PLUS GI 124C7 CUNEIFORM SIGN GA2 TIMES SHIM 124C8 CUNEIFORM SIGN GA2 TIMES ZIZ2 124C9 CUNEIFORM SIGN GABA ROTATED NINETY DEGREES 124CA CUNEIFORM SIGN GESHTIN TIMES U 124CB CUNEIFORM SIGN GISH TIMES GISH CROSSING GISH 124CC CUNEIFORM SIGN GU2 TIMES IGI GUNU 124CD CUNEIFORM SIGN GUD PLUS GISH TIMES TAK4 124CE CUNEIFORM SIGN HA TENU GUNU 124CF CUNEIFORM SIGN HI TIMES ASH OVER HI TIMES ASH 124D0 CUNEIFORM SIGN KA TIMES BU 124D1 CUNEIFORM SIGN KA TIMES KA 124D2 CUNEIFORM SIGN KA TIMES U U U 124D3 CUNEIFORM SIGN KA TIMES UR 124D4 CUNEIFORM SIGN LAGAB TIMES ZU OVER ZU 124D5 CUNEIFORM SIGN LAK-003 124D6 CUNEIFORM SIGN LAK-021 124D7 CUNEIFORM SIGN LAK-025 124D8 CUNEIFORM SIGN LAK-030 124D9 CUNEIFORM SIGN LAK-050 124DA CUNEIFORM SIGN LAK-051 124DB CUNEIFORM SIGN LAK-062 124DC CUNEIFORM SIGN LAK-079 OVER LAK-079 GUNU 124DD CUNEIFORM SIGN LAK-080 124DE CUNEIFORM SIGN LAK-081 OVER LAK-081 124DF CUNEIFORM SIGN LAK-092 124E0 CUNEIFORM SIGN LAK-130 124E1 CUNEIFORM SIGN LAK-142 124E2 CUNEIFORM SIGN LAK-210 124E3 CUNEIFORM SIGN LAK-219 124E4 CUNEIFORM SIGN LAK-220 124E5 CUNEIFORM SIGN LAK-225 124E6 CUNEIFORM SIGN LAK-228 124E7 CUNEIFORM SIGN LAK-238 124E8 CUNEIFORM SIGN LAK-265 124E9 CUNEIFORM SIGN LAK-266 124EA CUNEIFORM SIGN LAK-343 124EB CUNEIFORM SIGN LAK-347 124EC CUNEIFORM SIGN LAK-348 124ED CUNEIFORM SIGN LAK-383 124EE CUNEIFORM SIGN LAK-384 124EF CUNEIFORM SIGN LAK-390 124F0 CUNEIFORM SIGN LAK-441 124F1 CUNEIFORM SIGN LAK-449 124F2 CUNEIFORM SIGN LAK-449 TIMES GU 124F3 CUNEIFORM SIGN LAK-449 TIMES IGI 124F4 CUNEIFORM SIGN LAK-449 TIMES PAP PLUS LU3 124F5 CUNEIFORM SIGN LAK-449 TIMES PAP PLUS PAP PLUS LU3 124F6 CUNEIFORM SIGN LAK-449 TIMES U2 PLUS BA 124F7 CUNEIFORM SIGN LAK-450 124F8 CUNEIFORM SIGN LAK-457 124F9 CUNEIFORM SIGN LAK-470 124FA CUNEIFORM SIGN LAK-483 124FB CUNEIFORM SIGN LAK-490 124FC CUNEIFORM SIGN LAK-492 124FD CUNEIFORM SIGN LAK-493 124FE CUNEIFORM SIGN LAK-495 124FF CUNEIFORM SIGN LAK-550 12500 CUNEIFORM SIGN LAK-608 12501 CUNEIFORM SIGN LAK-617 12502 CUNEIFORM SIGN LAK-617 TIMES ASH 12503 CUNEIFORM SIGN LAK-617 TIMES BAD 12504 CUNEIFORM SIGN LAK-617 TIMES DUN3 GUNU GUNU 12505 CUNEIFORM SIGN LAK-617 TIMES KU3 12506 CUNEIFORM SIGN LAK-617 TIMES LA 12507 CUNEIFORM SIGN LAK-617 TIMES TAR 12508 CUNEIFORM SIGN LAK-617 TIMES TE 12509 CUNEIFORM SIGN LAK-617 TIMES U2 1250A CUNEIFORM SIGN LAK-617 TIMES UD 1250B CUNEIFORM SIGN LAK-617 TIMES URUDA 1250C CUNEIFORM SIGN LAK-636 1250D CUNEIFORM SIGN LAK-648 1250E CUNEIFORM SIGN LAK-648 TIMES DUB 1250F CUNEIFORM SIGN LAK-648 TIMES GA 12510 CUNEIFORM SIGN LAK-648 TIMES IGI 12511 CUNEIFORM SIGN LAK-648 TIMES IGI GUNU 12512 CUNEIFORM SIGN LAK-648 TIMES NI 12513 CUNEIFORM SIGN LAK-648 TIMES PAP PLUS PAP PLUS LU3 12514 CUNEIFORM SIGN LAK-648 TIMES SHESH PLUS KI 12515 CUNEIFORM SIGN LAK-648 TIMES UD 12516 CUNEIFORM SIGN LAK-648 TIMES URUDA 12517 CUNEIFORM SIGN LAK-724 12518 CUNEIFORM SIGN LAK-749 12519 CUNEIFORM SIGN LU2 GUNU TIMES ASH 1251A CUNEIFORM SIGN LU2 TIMES DISH 1251B CUNEIFORM SIGN LU2 TIMES HAL 1251C CUNEIFORM SIGN LU2 TIMES PAP 1251D CUNEIFORM SIGN LU2 TIMES PAP PLUS PAP PLUS LU3 1251E CUNEIFORM SIGN LU2 TIMES TAK4 1251F CUNEIFORM SIGN MI PLUS ZA7 12520 CUNEIFORM SIGN MUSH OVER MUSH TIMES GA 12521 CUNEIFORM SIGN MUSH OVER MUSH TIMES KAK 12522 CUNEIFORM SIGN NINDA2 TIMES DIM GUNU 12523 CUNEIFORM SIGN NINDA2 TIMES GISH 12524 CUNEIFORM SIGN NINDA2 TIMES GUL 12525 CUNEIFORM SIGN NINDA2 TIMES HI 12526 CUNEIFORM SIGN NINDA2 TIMES KESH2 12527 CUNEIFORM SIGN NINDA2 TIMES LAK-050 12528 CUNEIFORM SIGN NINDA2 TIMES MASH 12529 CUNEIFORM SIGN NINDA2 TIMES PAP PLUS PAP 1252A CUNEIFORM SIGN NINDA2 TIMES U 1252B CUNEIFORM SIGN NINDA2 TIMES U PLUS U 1252C CUNEIFORM SIGN NINDA2 TIMES URUDA 1252D CUNEIFORM SIGN SAG GUNU TIMES HA 1252E CUNEIFORM SIGN SAG TIMES EN 1252F CUNEIFORM SIGN SAG TIMES SHE AT LEFT 12530 CUNEIFORM SIGN SAG TIMES TAK4 12531 CUNEIFORM SIGN SHA6 TENU 12532 CUNEIFORM SIGN SHE OVER SHE 12533 CUNEIFORM SIGN SHE PLUS HUB2 12534 CUNEIFORM SIGN SHE PLUS NAM2 12535 CUNEIFORM SIGN SHE PLUS SAR 12536 CUNEIFORM SIGN SHU2 PLUS DUG TIMES NI 12537 CUNEIFORM SIGN SHU2 PLUS E2 TIMES AN 12538 CUNEIFORM SIGN SI TIMES TAK4 12539 CUNEIFORM SIGN TAK4 PLUS SAG 1253A CUNEIFORM SIGN TUM TIMES GAN2 TENU 1253B CUNEIFORM SIGN TUM TIMES THREE DISH 1253C CUNEIFORM SIGN UR2 INVERTED 1253D CUNEIFORM SIGN UR2 TIMES UD 1253E CUNEIFORM SIGN URU TIMES DARA3 1253F CUNEIFORM SIGN URU TIMES LAK-668 12540 CUNEIFORM SIGN URU TIMES LU3 12541 CUNEIFORM SIGN ZA7 12542 CUNEIFORM SIGN ZU OVER ZU PLUS SAR 12543 CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU @@ 13000 Egyptian Hieroglyphs 1342F @+ The characters in this block are taken primarily from Alan Gardiner's works on Middle Egyptian. @ A. Man and his occupations 13000 EGYPTIAN HIEROGLYPH A001 13001 EGYPTIAN HIEROGLYPH A002 13002 EGYPTIAN HIEROGLYPH A003 13003 EGYPTIAN HIEROGLYPH A004 13004 EGYPTIAN HIEROGLYPH A005 13005 EGYPTIAN HIEROGLYPH A005A 13006 EGYPTIAN HIEROGLYPH A006 13007 EGYPTIAN HIEROGLYPH A006A 13008 EGYPTIAN HIEROGLYPH A006B 13009 EGYPTIAN HIEROGLYPH A007 1300A EGYPTIAN HIEROGLYPH A008 1300B EGYPTIAN HIEROGLYPH A009 1300C EGYPTIAN HIEROGLYPH A010 1300D EGYPTIAN HIEROGLYPH A011 1300E EGYPTIAN HIEROGLYPH A012 1300F EGYPTIAN HIEROGLYPH A013 13010 EGYPTIAN HIEROGLYPH A014 13011 EGYPTIAN HIEROGLYPH A014A 13012 EGYPTIAN HIEROGLYPH A015 13013 EGYPTIAN HIEROGLYPH A016 13014 EGYPTIAN HIEROGLYPH A017 13015 EGYPTIAN HIEROGLYPH A017A 13016 EGYPTIAN HIEROGLYPH A018 13017 EGYPTIAN HIEROGLYPH A019 13018 EGYPTIAN HIEROGLYPH A020 13019 EGYPTIAN HIEROGLYPH A021 1301A EGYPTIAN HIEROGLYPH A022 1301B EGYPTIAN HIEROGLYPH A023 1301C EGYPTIAN HIEROGLYPH A024 1301D EGYPTIAN HIEROGLYPH A025 1301E EGYPTIAN HIEROGLYPH A026 1301F EGYPTIAN HIEROGLYPH A027 13020 EGYPTIAN HIEROGLYPH A028 13021 EGYPTIAN HIEROGLYPH A029 13022 EGYPTIAN HIEROGLYPH A030 13023 EGYPTIAN HIEROGLYPH A031 13024 EGYPTIAN HIEROGLYPH A032 13025 EGYPTIAN HIEROGLYPH A032A 13026 EGYPTIAN HIEROGLYPH A033 13027 EGYPTIAN HIEROGLYPH A034 13028 EGYPTIAN HIEROGLYPH A035 13029 EGYPTIAN HIEROGLYPH A036 1302A EGYPTIAN HIEROGLYPH A037 1302B EGYPTIAN HIEROGLYPH A038 1302C EGYPTIAN HIEROGLYPH A039 1302D EGYPTIAN HIEROGLYPH A040 1302E EGYPTIAN HIEROGLYPH A040A 1302F EGYPTIAN HIEROGLYPH A041 13030 EGYPTIAN HIEROGLYPH A042 13031 EGYPTIAN HIEROGLYPH A042A 13032 EGYPTIAN HIEROGLYPH A043 13033 EGYPTIAN HIEROGLYPH A043A 13034 EGYPTIAN HIEROGLYPH A044 13035 EGYPTIAN HIEROGLYPH A045 13036 EGYPTIAN HIEROGLYPH A045A 13037 EGYPTIAN HIEROGLYPH A046 13038 EGYPTIAN HIEROGLYPH A047 13039 EGYPTIAN HIEROGLYPH A048 1303A EGYPTIAN HIEROGLYPH A049 1303B EGYPTIAN HIEROGLYPH A050 1303C EGYPTIAN HIEROGLYPH A051 1303D EGYPTIAN HIEROGLYPH A052 1303E EGYPTIAN HIEROGLYPH A053 1303F EGYPTIAN HIEROGLYPH A054 13040 EGYPTIAN HIEROGLYPH A055 13041 EGYPTIAN HIEROGLYPH A056 13042 EGYPTIAN HIEROGLYPH A057 13043 EGYPTIAN HIEROGLYPH A058 13044 EGYPTIAN HIEROGLYPH A059 13045 EGYPTIAN HIEROGLYPH A060 13046 EGYPTIAN HIEROGLYPH A061 13047 EGYPTIAN HIEROGLYPH A062 13048 EGYPTIAN HIEROGLYPH A063 13049 EGYPTIAN HIEROGLYPH A064 1304A EGYPTIAN HIEROGLYPH A065 1304B EGYPTIAN HIEROGLYPH A066 1304C EGYPTIAN HIEROGLYPH A067 1304D EGYPTIAN HIEROGLYPH A068 1304E EGYPTIAN HIEROGLYPH A069 1304F EGYPTIAN HIEROGLYPH A070 @ B. Woman and her occupations 13050 EGYPTIAN HIEROGLYPH B001 13051 EGYPTIAN HIEROGLYPH B002 13052 EGYPTIAN HIEROGLYPH B003 13053 EGYPTIAN HIEROGLYPH B004 13054 EGYPTIAN HIEROGLYPH B005 13055 EGYPTIAN HIEROGLYPH B005A 13056 EGYPTIAN HIEROGLYPH B006 13057 EGYPTIAN HIEROGLYPH B007 13058 EGYPTIAN HIEROGLYPH B008 13059 EGYPTIAN HIEROGLYPH B009 @ C. Anthropomorphic deities 1305A EGYPTIAN HIEROGLYPH C001 1305B EGYPTIAN HIEROGLYPH C002 1305C EGYPTIAN HIEROGLYPH C002A 1305D EGYPTIAN HIEROGLYPH C002B 1305E EGYPTIAN HIEROGLYPH C002C 1305F EGYPTIAN HIEROGLYPH C003 13060 EGYPTIAN HIEROGLYPH C004 13061 EGYPTIAN HIEROGLYPH C005 13062 EGYPTIAN HIEROGLYPH C006 13063 EGYPTIAN HIEROGLYPH C007 13064 EGYPTIAN HIEROGLYPH C008 13065 EGYPTIAN HIEROGLYPH C009 13066 EGYPTIAN HIEROGLYPH C010 13067 EGYPTIAN HIEROGLYPH C010A 13068 EGYPTIAN HIEROGLYPH C011 * 1,000,000 13069 EGYPTIAN HIEROGLYPH C012 1306A EGYPTIAN HIEROGLYPH C013 1306B EGYPTIAN HIEROGLYPH C014 1306C EGYPTIAN HIEROGLYPH C015 1306D EGYPTIAN HIEROGLYPH C016 1306E EGYPTIAN HIEROGLYPH C017 1306F EGYPTIAN HIEROGLYPH C018 13070 EGYPTIAN HIEROGLYPH C019 13071 EGYPTIAN HIEROGLYPH C020 13072 EGYPTIAN HIEROGLYPH C021 13073 EGYPTIAN HIEROGLYPH C022 13074 EGYPTIAN HIEROGLYPH C023 13075 EGYPTIAN HIEROGLYPH C024 @ D. Parts of the human body 13076 EGYPTIAN HIEROGLYPH D001 13077 EGYPTIAN HIEROGLYPH D002 13078 EGYPTIAN HIEROGLYPH D003 13079 EGYPTIAN HIEROGLYPH D004 1307A EGYPTIAN HIEROGLYPH D005 1307B EGYPTIAN HIEROGLYPH D006 1307C EGYPTIAN HIEROGLYPH D007 1307D EGYPTIAN HIEROGLYPH D008 1307E EGYPTIAN HIEROGLYPH D008A 1307F EGYPTIAN HIEROGLYPH D009 13080 EGYPTIAN HIEROGLYPH D010 13081 EGYPTIAN HIEROGLYPH D011 * 1/2 13082 EGYPTIAN HIEROGLYPH D012 * 1/4 13083 EGYPTIAN HIEROGLYPH D013 * 1/8 13084 EGYPTIAN HIEROGLYPH D014 * 1/16 13085 EGYPTIAN HIEROGLYPH D015 * 1/32 13086 EGYPTIAN HIEROGLYPH D016 * 1/64 13087 EGYPTIAN HIEROGLYPH D017 13088 EGYPTIAN HIEROGLYPH D018 13089 EGYPTIAN HIEROGLYPH D019 1308A EGYPTIAN HIEROGLYPH D020 1308B EGYPTIAN HIEROGLYPH D021 * transliterated as r 1308C EGYPTIAN HIEROGLYPH D022 1308D EGYPTIAN HIEROGLYPH D023 1308E EGYPTIAN HIEROGLYPH D024 1308F EGYPTIAN HIEROGLYPH D025 13090 EGYPTIAN HIEROGLYPH D026 13091 EGYPTIAN HIEROGLYPH D027 13092 EGYPTIAN HIEROGLYPH D027A 13093 EGYPTIAN HIEROGLYPH D028 13094 EGYPTIAN HIEROGLYPH D029 13095 EGYPTIAN HIEROGLYPH D030 13096 EGYPTIAN HIEROGLYPH D031 13097 EGYPTIAN HIEROGLYPH D031A 13098 EGYPTIAN HIEROGLYPH D032 13099 EGYPTIAN HIEROGLYPH D033 1309A EGYPTIAN HIEROGLYPH D034 1309B EGYPTIAN HIEROGLYPH D034A 1309C EGYPTIAN HIEROGLYPH D035 1309D EGYPTIAN HIEROGLYPH D036 * transliterated as A725 x (hebrew letter ayin - 05E2) x (arabic letter ain - 0639) 1309E EGYPTIAN HIEROGLYPH D037 1309F EGYPTIAN HIEROGLYPH D038 130A0 EGYPTIAN HIEROGLYPH D039 130A1 EGYPTIAN HIEROGLYPH D040 130A2 EGYPTIAN HIEROGLYPH D041 130A3 EGYPTIAN HIEROGLYPH D042 130A4 EGYPTIAN HIEROGLYPH D043 130A5 EGYPTIAN HIEROGLYPH D044 130A6 EGYPTIAN HIEROGLYPH D045 130A7 EGYPTIAN HIEROGLYPH D046 * transliterated as d 130A8 EGYPTIAN HIEROGLYPH D046A 130A9 EGYPTIAN HIEROGLYPH D047 130AA EGYPTIAN HIEROGLYPH D048 130AB EGYPTIAN HIEROGLYPH D048A 130AC EGYPTIAN HIEROGLYPH D049 130AD EGYPTIAN HIEROGLYPH D050 * 10,000 130AE EGYPTIAN HIEROGLYPH D050A * 20,000 130AF EGYPTIAN HIEROGLYPH D050B * 30,000 130B0 EGYPTIAN HIEROGLYPH D050C * 40,000 130B1 EGYPTIAN HIEROGLYPH D050D * 50,000 130B2 EGYPTIAN HIEROGLYPH D050E * 60,000 130B3 EGYPTIAN HIEROGLYPH D050F * 70,000 130B4 EGYPTIAN HIEROGLYPH D050G * 80,000 130B5 EGYPTIAN HIEROGLYPH D050H * 90,000 130B6 EGYPTIAN HIEROGLYPH D050I * 50,000 130B7 EGYPTIAN HIEROGLYPH D051 130B8 EGYPTIAN HIEROGLYPH D052 130B9 EGYPTIAN HIEROGLYPH D052A 130BA EGYPTIAN HIEROGLYPH D053 130BB EGYPTIAN HIEROGLYPH D054 130BC EGYPTIAN HIEROGLYPH D054A 130BD EGYPTIAN HIEROGLYPH D055 130BE EGYPTIAN HIEROGLYPH D056 130BF EGYPTIAN HIEROGLYPH D057 130C0 EGYPTIAN HIEROGLYPH D058 * transliterated as b 130C1 EGYPTIAN HIEROGLYPH D059 130C2 EGYPTIAN HIEROGLYPH D060 130C3 EGYPTIAN HIEROGLYPH D061 130C4 EGYPTIAN HIEROGLYPH D062 130C5 EGYPTIAN HIEROGLYPH D063 130C6 EGYPTIAN HIEROGLYPH D064 130C7 EGYPTIAN HIEROGLYPH D065 130C8 EGYPTIAN HIEROGLYPH D066 130C9 EGYPTIAN HIEROGLYPH D067 * 1 heqat measure 130CA EGYPTIAN HIEROGLYPH D067A * 2 heqat measures 130CB EGYPTIAN HIEROGLYPH D067B * 3 heqat measures 130CC EGYPTIAN HIEROGLYPH D067C * 4 heqat measures 130CD EGYPTIAN HIEROGLYPH D067D * 5 heqat measures 130CE EGYPTIAN HIEROGLYPH D067E * 6 heqat measures 130CF EGYPTIAN HIEROGLYPH D067F * 7 heqat measures 130D0 EGYPTIAN HIEROGLYPH D067G * 8 heqat measures 130D1 EGYPTIAN HIEROGLYPH D067H * 9 heqat measures @ E. Mammals 130D2 EGYPTIAN HIEROGLYPH E001 130D3 EGYPTIAN HIEROGLYPH E002 130D4 EGYPTIAN HIEROGLYPH E003 130D5 EGYPTIAN HIEROGLYPH E004 130D6 EGYPTIAN HIEROGLYPH E005 130D7 EGYPTIAN HIEROGLYPH E006 130D8 EGYPTIAN HIEROGLYPH E007 130D9 EGYPTIAN HIEROGLYPH E008 130DA EGYPTIAN HIEROGLYPH E008A 130DB EGYPTIAN HIEROGLYPH E009 130DC EGYPTIAN HIEROGLYPH E009A 130DD EGYPTIAN HIEROGLYPH E010 130DE EGYPTIAN HIEROGLYPH E011 130DF EGYPTIAN HIEROGLYPH E012 130E0 EGYPTIAN HIEROGLYPH E013 130E1 EGYPTIAN HIEROGLYPH E014 130E2 EGYPTIAN HIEROGLYPH E015 130E3 EGYPTIAN HIEROGLYPH E016 130E4 EGYPTIAN HIEROGLYPH E016A 130E5 EGYPTIAN HIEROGLYPH E017 130E6 EGYPTIAN HIEROGLYPH E017A 130E7 EGYPTIAN HIEROGLYPH E018 130E8 EGYPTIAN HIEROGLYPH E019 130E9 EGYPTIAN HIEROGLYPH E020 130EA EGYPTIAN HIEROGLYPH E020A 130EB EGYPTIAN HIEROGLYPH E021 130EC EGYPTIAN HIEROGLYPH E022 130ED EGYPTIAN HIEROGLYPH E023 130EE EGYPTIAN HIEROGLYPH E024 130EF EGYPTIAN HIEROGLYPH E025 130F0 EGYPTIAN HIEROGLYPH E026 130F1 EGYPTIAN HIEROGLYPH E027 130F2 EGYPTIAN HIEROGLYPH E028 130F3 EGYPTIAN HIEROGLYPH E028A 130F4 EGYPTIAN HIEROGLYPH E029 130F5 EGYPTIAN HIEROGLYPH E030 130F6 EGYPTIAN HIEROGLYPH E031 130F7 EGYPTIAN HIEROGLYPH E032 130F8 EGYPTIAN HIEROGLYPH E033 130F9 EGYPTIAN HIEROGLYPH E034 130FA EGYPTIAN HIEROGLYPH E034A 130FB EGYPTIAN HIEROGLYPH E036 130FC EGYPTIAN HIEROGLYPH E037 130FD EGYPTIAN HIEROGLYPH E038 @ F. Parts of mammals 130FE EGYPTIAN HIEROGLYPH F001 130FF EGYPTIAN HIEROGLYPH F001A 13100 EGYPTIAN HIEROGLYPH F002 13101 EGYPTIAN HIEROGLYPH F003 13102 EGYPTIAN HIEROGLYPH F004 13103 EGYPTIAN HIEROGLYPH F005 13104 EGYPTIAN HIEROGLYPH F006 13105 EGYPTIAN HIEROGLYPH F007 13106 EGYPTIAN HIEROGLYPH F008 13107 EGYPTIAN HIEROGLYPH F009 13108 EGYPTIAN HIEROGLYPH F010 13109 EGYPTIAN HIEROGLYPH F011 1310A EGYPTIAN HIEROGLYPH F012 1310B EGYPTIAN HIEROGLYPH F013 1310C EGYPTIAN HIEROGLYPH F013A 1310D EGYPTIAN HIEROGLYPH F014 1310E EGYPTIAN HIEROGLYPH F015 1310F EGYPTIAN HIEROGLYPH F016 13110 EGYPTIAN HIEROGLYPH F017 13111 EGYPTIAN HIEROGLYPH F018 13112 EGYPTIAN HIEROGLYPH F019 13113 EGYPTIAN HIEROGLYPH F020 13114 EGYPTIAN HIEROGLYPH F021 13115 EGYPTIAN HIEROGLYPH F021A 13116 EGYPTIAN HIEROGLYPH F022 13117 EGYPTIAN HIEROGLYPH F023 13118 EGYPTIAN HIEROGLYPH F024 13119 EGYPTIAN HIEROGLYPH F025 1311A EGYPTIAN HIEROGLYPH F026 1311B EGYPTIAN HIEROGLYPH F027 1311C EGYPTIAN HIEROGLYPH F028 1311D EGYPTIAN HIEROGLYPH F029 1311E EGYPTIAN HIEROGLYPH F030 1311F EGYPTIAN HIEROGLYPH F031 13120 EGYPTIAN HIEROGLYPH F031A 13121 EGYPTIAN HIEROGLYPH F032 * transliterated as 1E96 13122 EGYPTIAN HIEROGLYPH F033 13123 EGYPTIAN HIEROGLYPH F034 13124 EGYPTIAN HIEROGLYPH F035 13125 EGYPTIAN HIEROGLYPH F036 13126 EGYPTIAN HIEROGLYPH F037 13127 EGYPTIAN HIEROGLYPH F037A 13128 EGYPTIAN HIEROGLYPH F038 13129 EGYPTIAN HIEROGLYPH F038A 1312A EGYPTIAN HIEROGLYPH F039 1312B EGYPTIAN HIEROGLYPH F040 1312C EGYPTIAN HIEROGLYPH F041 1312D EGYPTIAN HIEROGLYPH F042 1312E EGYPTIAN HIEROGLYPH F043 1312F EGYPTIAN HIEROGLYPH F044 13130 EGYPTIAN HIEROGLYPH F045 13131 EGYPTIAN HIEROGLYPH F045A 13132 EGYPTIAN HIEROGLYPH F046 13133 EGYPTIAN HIEROGLYPH F046A 13134 EGYPTIAN HIEROGLYPH F047 13135 EGYPTIAN HIEROGLYPH F047A 13136 EGYPTIAN HIEROGLYPH F048 13137 EGYPTIAN HIEROGLYPH F049 13138 EGYPTIAN HIEROGLYPH F050 13139 EGYPTIAN HIEROGLYPH F051 1313A EGYPTIAN HIEROGLYPH F051A 1313B EGYPTIAN HIEROGLYPH F051B 1313C EGYPTIAN HIEROGLYPH F051C 1313D EGYPTIAN HIEROGLYPH F052 1313E EGYPTIAN HIEROGLYPH F053 @ G. Birds 1313F EGYPTIAN HIEROGLYPH G001 * transliterated as A723 x (hebrew letter alef - 05D0) x (arabic letter alef with hamza above - 0623) 13140 EGYPTIAN HIEROGLYPH G002 13141 EGYPTIAN HIEROGLYPH G003 13142 EGYPTIAN HIEROGLYPH G004 13143 EGYPTIAN HIEROGLYPH G005 13144 EGYPTIAN HIEROGLYPH G006 13145 EGYPTIAN HIEROGLYPH G006A 13146 EGYPTIAN HIEROGLYPH G007 13147 EGYPTIAN HIEROGLYPH G007A 13148 EGYPTIAN HIEROGLYPH G007B 13149 EGYPTIAN HIEROGLYPH G008 1314A EGYPTIAN HIEROGLYPH G009 1314B EGYPTIAN HIEROGLYPH G010 1314C EGYPTIAN HIEROGLYPH G011 1314D EGYPTIAN HIEROGLYPH G011A 1314E EGYPTIAN HIEROGLYPH G012 1314F EGYPTIAN HIEROGLYPH G013 13150 EGYPTIAN HIEROGLYPH G014 13151 EGYPTIAN HIEROGLYPH G015 13152 EGYPTIAN HIEROGLYPH G016 13153 EGYPTIAN HIEROGLYPH G017 * transliterated as m 13154 EGYPTIAN HIEROGLYPH G018 13155 EGYPTIAN HIEROGLYPH G019 13156 EGYPTIAN HIEROGLYPH G020 13157 EGYPTIAN HIEROGLYPH G020A 13158 EGYPTIAN HIEROGLYPH G021 13159 EGYPTIAN HIEROGLYPH G022 1315A EGYPTIAN HIEROGLYPH G023 1315B EGYPTIAN HIEROGLYPH G024 1315C EGYPTIAN HIEROGLYPH G025 1315D EGYPTIAN HIEROGLYPH G026 1315E EGYPTIAN HIEROGLYPH G026A 1315F EGYPTIAN HIEROGLYPH G027 13160 EGYPTIAN HIEROGLYPH G028 13161 EGYPTIAN HIEROGLYPH G029 13162 EGYPTIAN HIEROGLYPH G030 13163 EGYPTIAN HIEROGLYPH G031 13164 EGYPTIAN HIEROGLYPH G032 13165 EGYPTIAN HIEROGLYPH G033 13166 EGYPTIAN HIEROGLYPH G034 13167 EGYPTIAN HIEROGLYPH G035 13168 EGYPTIAN HIEROGLYPH G036 13169 EGYPTIAN HIEROGLYPH G036A 1316A EGYPTIAN HIEROGLYPH G037 1316B EGYPTIAN HIEROGLYPH G037A 1316C EGYPTIAN HIEROGLYPH G038 1316D EGYPTIAN HIEROGLYPH G039 1316E EGYPTIAN HIEROGLYPH G040 1316F EGYPTIAN HIEROGLYPH G041 13170 EGYPTIAN HIEROGLYPH G042 13171 EGYPTIAN HIEROGLYPH G043 * transliterated as w 13172 EGYPTIAN HIEROGLYPH G043A 13173 EGYPTIAN HIEROGLYPH G044 13174 EGYPTIAN HIEROGLYPH G045 13175 EGYPTIAN HIEROGLYPH G045A 13176 EGYPTIAN HIEROGLYPH G046 13177 EGYPTIAN HIEROGLYPH G047 13178 EGYPTIAN HIEROGLYPH G048 13179 EGYPTIAN HIEROGLYPH G049 1317A EGYPTIAN HIEROGLYPH G050 1317B EGYPTIAN HIEROGLYPH G051 1317C EGYPTIAN HIEROGLYPH G052 1317D EGYPTIAN HIEROGLYPH G053 1317E EGYPTIAN HIEROGLYPH G054 @ H. Parts of birds 1317F EGYPTIAN HIEROGLYPH H001 13180 EGYPTIAN HIEROGLYPH H002 13181 EGYPTIAN HIEROGLYPH H003 13182 EGYPTIAN HIEROGLYPH H004 13183 EGYPTIAN HIEROGLYPH H005 13184 EGYPTIAN HIEROGLYPH H006 13185 EGYPTIAN HIEROGLYPH H006A 13186 EGYPTIAN HIEROGLYPH H007 13187 EGYPTIAN HIEROGLYPH H008 @ I. Amphibious animals, reptiles, etc. 13188 EGYPTIAN HIEROGLYPH I001 13189 EGYPTIAN HIEROGLYPH I002 1318A EGYPTIAN HIEROGLYPH I003 1318B EGYPTIAN HIEROGLYPH I004 1318C EGYPTIAN HIEROGLYPH I005 1318D EGYPTIAN HIEROGLYPH I005A 1318E EGYPTIAN HIEROGLYPH I006 1318F EGYPTIAN HIEROGLYPH I007 13190 EGYPTIAN HIEROGLYPH I008 * 100,000 13191 EGYPTIAN HIEROGLYPH I009 * transliterated as f 13192 EGYPTIAN HIEROGLYPH I009A 13193 EGYPTIAN HIEROGLYPH I010 * transliterated as 1E0F 13194 EGYPTIAN HIEROGLYPH I010A 13195 EGYPTIAN HIEROGLYPH I011 13196 EGYPTIAN HIEROGLYPH I011A 13197 EGYPTIAN HIEROGLYPH I012 13198 EGYPTIAN HIEROGLYPH I013 13199 EGYPTIAN HIEROGLYPH I014 1319A EGYPTIAN HIEROGLYPH I015 @ K. Fishes and parts of fishes 1319B EGYPTIAN HIEROGLYPH K001 1319C EGYPTIAN HIEROGLYPH K002 1319D EGYPTIAN HIEROGLYPH K003 1319E EGYPTIAN HIEROGLYPH K004 1319F EGYPTIAN HIEROGLYPH K005 131A0 EGYPTIAN HIEROGLYPH K006 131A1 EGYPTIAN HIEROGLYPH K007 131A2 EGYPTIAN HIEROGLYPH K008 @ L. Invertabrata and lesser animals 131A3 EGYPTIAN HIEROGLYPH L001 131A4 EGYPTIAN HIEROGLYPH L002 131A5 EGYPTIAN HIEROGLYPH L002A 131A6 EGYPTIAN HIEROGLYPH L003 131A7 EGYPTIAN HIEROGLYPH L004 131A8 EGYPTIAN HIEROGLYPH L005 131A9 EGYPTIAN HIEROGLYPH L006 131AA EGYPTIAN HIEROGLYPH L006A 131AB EGYPTIAN HIEROGLYPH L007 131AC EGYPTIAN HIEROGLYPH L008 @ M. Trees and plants 131AD EGYPTIAN HIEROGLYPH M001 131AE EGYPTIAN HIEROGLYPH M001A 131AF EGYPTIAN HIEROGLYPH M001B 131B0 EGYPTIAN HIEROGLYPH M002 131B1 EGYPTIAN HIEROGLYPH M003 131B2 EGYPTIAN HIEROGLYPH M003A 131B3 EGYPTIAN HIEROGLYPH M004 131B4 EGYPTIAN HIEROGLYPH M005 131B5 EGYPTIAN HIEROGLYPH M006 131B6 EGYPTIAN HIEROGLYPH M007 131B7 EGYPTIAN HIEROGLYPH M008 131B8 EGYPTIAN HIEROGLYPH M009 131B9 EGYPTIAN HIEROGLYPH M010 131BA EGYPTIAN HIEROGLYPH M010A 131BB EGYPTIAN HIEROGLYPH M011 131BC EGYPTIAN HIEROGLYPH M012 * 1,000 131BD EGYPTIAN HIEROGLYPH M012A * 2,000 131BE EGYPTIAN HIEROGLYPH M012B * 3,000 131BF EGYPTIAN HIEROGLYPH M012C * 4,000 131C0 EGYPTIAN HIEROGLYPH M012D * 5,000 131C1 EGYPTIAN HIEROGLYPH M012E * 6,000 131C2 EGYPTIAN HIEROGLYPH M012F * 7,000 131C3 EGYPTIAN HIEROGLYPH M012G * 8,000 131C4 EGYPTIAN HIEROGLYPH M012H * 9,000 131C5 EGYPTIAN HIEROGLYPH M013 131C6 EGYPTIAN HIEROGLYPH M014 131C7 EGYPTIAN HIEROGLYPH M015 131C8 EGYPTIAN HIEROGLYPH M015A 131C9 EGYPTIAN HIEROGLYPH M016 131CA EGYPTIAN HIEROGLYPH M016A 131CB EGYPTIAN HIEROGLYPH M017 * yod x (hebrew letter yod - 05D9) x (arabic letter yeh - 064A) 131CC EGYPTIAN HIEROGLYPH M017A * transliterated as y x (egyptian hieroglyph z004 - 133ED) 131CD EGYPTIAN HIEROGLYPH M018 131CE EGYPTIAN HIEROGLYPH M019 131CF EGYPTIAN HIEROGLYPH M020 131D0 EGYPTIAN HIEROGLYPH M021 131D1 EGYPTIAN HIEROGLYPH M022 131D2 EGYPTIAN HIEROGLYPH M022A 131D3 EGYPTIAN HIEROGLYPH M023 131D4 EGYPTIAN HIEROGLYPH M024 131D5 EGYPTIAN HIEROGLYPH M024A 131D6 EGYPTIAN HIEROGLYPH M025 131D7 EGYPTIAN HIEROGLYPH M026 131D8 EGYPTIAN HIEROGLYPH M027 131D9 EGYPTIAN HIEROGLYPH M028 131DA EGYPTIAN HIEROGLYPH M028A 131DB EGYPTIAN HIEROGLYPH M029 131DC EGYPTIAN HIEROGLYPH M030 131DD EGYPTIAN HIEROGLYPH M031 131DE EGYPTIAN HIEROGLYPH M031A 131DF EGYPTIAN HIEROGLYPH M032 131E0 EGYPTIAN HIEROGLYPH M033 131E1 EGYPTIAN HIEROGLYPH M033A 131E2 EGYPTIAN HIEROGLYPH M033B 131E3 EGYPTIAN HIEROGLYPH M034 131E4 EGYPTIAN HIEROGLYPH M035 131E5 EGYPTIAN HIEROGLYPH M036 131E6 EGYPTIAN HIEROGLYPH M037 131E7 EGYPTIAN HIEROGLYPH M038 131E8 EGYPTIAN HIEROGLYPH M039 131E9 EGYPTIAN HIEROGLYPH M040 131EA EGYPTIAN HIEROGLYPH M040A 131EB EGYPTIAN HIEROGLYPH M041 131EC EGYPTIAN HIEROGLYPH M042 131ED EGYPTIAN HIEROGLYPH M043 131EE EGYPTIAN HIEROGLYPH M044 @ N. Sky, earth, water 131EF EGYPTIAN HIEROGLYPH N001 131F0 EGYPTIAN HIEROGLYPH N002 131F1 EGYPTIAN HIEROGLYPH N003 131F2 EGYPTIAN HIEROGLYPH N004 131F3 EGYPTIAN HIEROGLYPH N005 131F4 EGYPTIAN HIEROGLYPH N006 131F5 EGYPTIAN HIEROGLYPH N007 131F6 EGYPTIAN HIEROGLYPH N008 131F7 EGYPTIAN HIEROGLYPH N009 131F8 EGYPTIAN HIEROGLYPH N010 131F9 EGYPTIAN HIEROGLYPH N011 131FA EGYPTIAN HIEROGLYPH N012 131FB EGYPTIAN HIEROGLYPH N013 131FC EGYPTIAN HIEROGLYPH N014 131FD EGYPTIAN HIEROGLYPH N015 131FE EGYPTIAN HIEROGLYPH N016 131FF EGYPTIAN HIEROGLYPH N017 13200 EGYPTIAN HIEROGLYPH N018 13201 EGYPTIAN HIEROGLYPH N018A 13202 EGYPTIAN HIEROGLYPH N018B 13203 EGYPTIAN HIEROGLYPH N019 13204 EGYPTIAN HIEROGLYPH N020 13205 EGYPTIAN HIEROGLYPH N021 13206 EGYPTIAN HIEROGLYPH N022 13207 EGYPTIAN HIEROGLYPH N023 13208 EGYPTIAN HIEROGLYPH N024 13209 EGYPTIAN HIEROGLYPH N025 1320A EGYPTIAN HIEROGLYPH N025A 1320B EGYPTIAN HIEROGLYPH N026 1320C EGYPTIAN HIEROGLYPH N027 1320D EGYPTIAN HIEROGLYPH N028 1320E EGYPTIAN HIEROGLYPH N029 * transliterated as q or as 1E33 x (hebrew letter qof - 05E7) x (arabic letter qaf - 0642) 1320F EGYPTIAN HIEROGLYPH N030 13210 EGYPTIAN HIEROGLYPH N031 13211 EGYPTIAN HIEROGLYPH N032 13212 EGYPTIAN HIEROGLYPH N033 13213 EGYPTIAN HIEROGLYPH N033A 13214 EGYPTIAN HIEROGLYPH N034 13215 EGYPTIAN HIEROGLYPH N034A 13216 EGYPTIAN HIEROGLYPH N035 * transliterated as n 13217 EGYPTIAN HIEROGLYPH N035A 13218 EGYPTIAN HIEROGLYPH N036 13219 EGYPTIAN HIEROGLYPH N037 * transliterated as 0161 1321A EGYPTIAN HIEROGLYPH N037A 1321B EGYPTIAN HIEROGLYPH N038 1321C EGYPTIAN HIEROGLYPH N039 1321D EGYPTIAN HIEROGLYPH N040 1321E EGYPTIAN HIEROGLYPH N041 1321F EGYPTIAN HIEROGLYPH N042 @ NL. Nomes of Lower Egypt 13220 EGYPTIAN HIEROGLYPH NL001 13221 EGYPTIAN HIEROGLYPH NL002 13222 EGYPTIAN HIEROGLYPH NL003 13223 EGYPTIAN HIEROGLYPH NL004 13224 EGYPTIAN HIEROGLYPH NL005 13225 EGYPTIAN HIEROGLYPH NL005A 13226 EGYPTIAN HIEROGLYPH NL006 13227 EGYPTIAN HIEROGLYPH NL007 13228 EGYPTIAN HIEROGLYPH NL008 13229 EGYPTIAN HIEROGLYPH NL009 1322A EGYPTIAN HIEROGLYPH NL010 1322B EGYPTIAN HIEROGLYPH NL011 1322C EGYPTIAN HIEROGLYPH NL012 1322D EGYPTIAN HIEROGLYPH NL013 1322E EGYPTIAN HIEROGLYPH NL014 1322F EGYPTIAN HIEROGLYPH NL015 13230 EGYPTIAN HIEROGLYPH NL016 13231 EGYPTIAN HIEROGLYPH NL017 13232 EGYPTIAN HIEROGLYPH NL017A 13233 EGYPTIAN HIEROGLYPH NL018 13234 EGYPTIAN HIEROGLYPH NL019 13235 EGYPTIAN HIEROGLYPH NL020 @ NU. Nomes of Upper Egypt 13236 EGYPTIAN HIEROGLYPH NU001 13237 EGYPTIAN HIEROGLYPH NU002 13238 EGYPTIAN HIEROGLYPH NU003 13239 EGYPTIAN HIEROGLYPH NU004 1323A EGYPTIAN HIEROGLYPH NU005 1323B EGYPTIAN HIEROGLYPH NU006 1323C EGYPTIAN HIEROGLYPH NU007 1323D EGYPTIAN HIEROGLYPH NU008 1323E EGYPTIAN HIEROGLYPH NU009 1323F EGYPTIAN HIEROGLYPH NU010 13240 EGYPTIAN HIEROGLYPH NU010A 13241 EGYPTIAN HIEROGLYPH NU011 13242 EGYPTIAN HIEROGLYPH NU011A 13243 EGYPTIAN HIEROGLYPH NU012 13244 EGYPTIAN HIEROGLYPH NU013 13245 EGYPTIAN HIEROGLYPH NU014 13246 EGYPTIAN HIEROGLYPH NU015 13247 EGYPTIAN HIEROGLYPH NU016 13248 EGYPTIAN HIEROGLYPH NU017 13249 EGYPTIAN HIEROGLYPH NU018 1324A EGYPTIAN HIEROGLYPH NU018A 1324B EGYPTIAN HIEROGLYPH NU019 1324C EGYPTIAN HIEROGLYPH NU020 1324D EGYPTIAN HIEROGLYPH NU021 1324E EGYPTIAN HIEROGLYPH NU022 1324F EGYPTIAN HIEROGLYPH NU022A @ O. Buildings, parts of buildings, etc. 13250 EGYPTIAN HIEROGLYPH O001 13251 EGYPTIAN HIEROGLYPH O001A 13252 EGYPTIAN HIEROGLYPH O002 13253 EGYPTIAN HIEROGLYPH O003 13254 EGYPTIAN HIEROGLYPH O004 * transliterated as h x (hebrew letter he - 05D4) x (arabic letter heh - 0647) 13255 EGYPTIAN HIEROGLYPH O005 13256 EGYPTIAN HIEROGLYPH O005A 13257 EGYPTIAN HIEROGLYPH O006 13258 EGYPTIAN HIEROGLYPH O006A * beginning of hwt or serekh enclosure x (egyptian hieroglyph o033a - 13282) 13259 EGYPTIAN HIEROGLYPH O006B * beginning of low hwt enclosure 1325A EGYPTIAN HIEROGLYPH O006C * beginning of high hwt enclosure 1325B EGYPTIAN HIEROGLYPH O006D * end of high hwt enclosure 1325C EGYPTIAN HIEROGLYPH O006E * end of low hwt enclosure 1325D EGYPTIAN HIEROGLYPH O006F * end of hwt enclosure 1325E EGYPTIAN HIEROGLYPH O007 1325F EGYPTIAN HIEROGLYPH O008 13260 EGYPTIAN HIEROGLYPH O009 13261 EGYPTIAN HIEROGLYPH O010 13262 EGYPTIAN HIEROGLYPH O010A 13263 EGYPTIAN HIEROGLYPH O010B 13264 EGYPTIAN HIEROGLYPH O010C 13265 EGYPTIAN HIEROGLYPH O011 13266 EGYPTIAN HIEROGLYPH O012 13267 EGYPTIAN HIEROGLYPH O013 13268 EGYPTIAN HIEROGLYPH O014 13269 EGYPTIAN HIEROGLYPH O015 1326A EGYPTIAN HIEROGLYPH O016 1326B EGYPTIAN HIEROGLYPH O017 1326C EGYPTIAN HIEROGLYPH O018 1326D EGYPTIAN HIEROGLYPH O019 1326E EGYPTIAN HIEROGLYPH O019A 1326F EGYPTIAN HIEROGLYPH O020 13270 EGYPTIAN HIEROGLYPH O020A 13271 EGYPTIAN HIEROGLYPH O021 13272 EGYPTIAN HIEROGLYPH O022 13273 EGYPTIAN HIEROGLYPH O023 13274 EGYPTIAN HIEROGLYPH O024 13275 EGYPTIAN HIEROGLYPH O024A 13276 EGYPTIAN HIEROGLYPH O025 13277 EGYPTIAN HIEROGLYPH O025A 13278 EGYPTIAN HIEROGLYPH O026 13279 EGYPTIAN HIEROGLYPH O027 1327A EGYPTIAN HIEROGLYPH O028 1327B EGYPTIAN HIEROGLYPH O029 1327C EGYPTIAN HIEROGLYPH O029A 1327D EGYPTIAN HIEROGLYPH O030 1327E EGYPTIAN HIEROGLYPH O030A 1327F EGYPTIAN HIEROGLYPH O031 13280 EGYPTIAN HIEROGLYPH O032 13281 EGYPTIAN HIEROGLYPH O033 13282 EGYPTIAN HIEROGLYPH O033A * end of serekh enclosure x (egyptian hieroglyph o006a - 13258) 13283 EGYPTIAN HIEROGLYPH O034 * transliterated as s or as z x (egyptian hieroglyph s029 - 132F4) 13284 EGYPTIAN HIEROGLYPH O035 13285 EGYPTIAN HIEROGLYPH O036 13286 EGYPTIAN HIEROGLYPH O036A * beginning of fortified wall cartouche 13287 EGYPTIAN HIEROGLYPH O036B * end of fortified wall cartouche 13288 EGYPTIAN HIEROGLYPH O036C * beginning of fortified wall enclosure 13289 EGYPTIAN HIEROGLYPH O036D * end of fortified wall enclosure 1328A EGYPTIAN HIEROGLYPH O037 1328B EGYPTIAN HIEROGLYPH O038 1328C EGYPTIAN HIEROGLYPH O039 1328D EGYPTIAN HIEROGLYPH O040 1328E EGYPTIAN HIEROGLYPH O041 1328F EGYPTIAN HIEROGLYPH O042 13290 EGYPTIAN HIEROGLYPH O043 13291 EGYPTIAN HIEROGLYPH O044 13292 EGYPTIAN HIEROGLYPH O045 13293 EGYPTIAN HIEROGLYPH O046 13294 EGYPTIAN HIEROGLYPH O047 13295 EGYPTIAN HIEROGLYPH O048 13296 EGYPTIAN HIEROGLYPH O049 13297 EGYPTIAN HIEROGLYPH O050 13298 EGYPTIAN HIEROGLYPH O050A 13299 EGYPTIAN HIEROGLYPH O050B 1329A EGYPTIAN HIEROGLYPH O051 @ P. Ships and parts of ships 1329B EGYPTIAN HIEROGLYPH P001 1329C EGYPTIAN HIEROGLYPH P001A 1329D EGYPTIAN HIEROGLYPH P002 1329E EGYPTIAN HIEROGLYPH P003 1329F EGYPTIAN HIEROGLYPH P003A 132A0 EGYPTIAN HIEROGLYPH P004 132A1 EGYPTIAN HIEROGLYPH P005 132A2 EGYPTIAN HIEROGLYPH P006 132A3 EGYPTIAN HIEROGLYPH P007 132A4 EGYPTIAN HIEROGLYPH P008 132A5 EGYPTIAN HIEROGLYPH P009 132A6 EGYPTIAN HIEROGLYPH P010 132A7 EGYPTIAN HIEROGLYPH P011 @ Q. Domestic and funerary furniture 132A8 EGYPTIAN HIEROGLYPH Q001 132A9 EGYPTIAN HIEROGLYPH Q002 132AA EGYPTIAN HIEROGLYPH Q003 * transliterated as p 132AB EGYPTIAN HIEROGLYPH Q004 132AC EGYPTIAN HIEROGLYPH Q005 132AD EGYPTIAN HIEROGLYPH Q006 132AE EGYPTIAN HIEROGLYPH Q007 @ R. Temple furniture and sacred emblems 132AF EGYPTIAN HIEROGLYPH R001 132B0 EGYPTIAN HIEROGLYPH R002 132B1 EGYPTIAN HIEROGLYPH R002A 132B2 EGYPTIAN HIEROGLYPH R003 132B3 EGYPTIAN HIEROGLYPH R003A 132B4 EGYPTIAN HIEROGLYPH R003B 132B5 EGYPTIAN HIEROGLYPH R004 132B6 EGYPTIAN HIEROGLYPH R005 132B7 EGYPTIAN HIEROGLYPH R006 132B8 EGYPTIAN HIEROGLYPH R007 132B9 EGYPTIAN HIEROGLYPH R008 132BA EGYPTIAN HIEROGLYPH R009 132BB EGYPTIAN HIEROGLYPH R010 132BC EGYPTIAN HIEROGLYPH R010A 132BD EGYPTIAN HIEROGLYPH R011 132BE EGYPTIAN HIEROGLYPH R012 132BF EGYPTIAN HIEROGLYPH R013 132C0 EGYPTIAN HIEROGLYPH R014 132C1 EGYPTIAN HIEROGLYPH R015 132C2 EGYPTIAN HIEROGLYPH R016 132C3 EGYPTIAN HIEROGLYPH R016A 132C4 EGYPTIAN HIEROGLYPH R017 132C5 EGYPTIAN HIEROGLYPH R018 132C6 EGYPTIAN HIEROGLYPH R019 132C7 EGYPTIAN HIEROGLYPH R020 132C8 EGYPTIAN HIEROGLYPH R021 132C9 EGYPTIAN HIEROGLYPH R022 132CA EGYPTIAN HIEROGLYPH R023 132CB EGYPTIAN HIEROGLYPH R024 132CC EGYPTIAN HIEROGLYPH R025 132CD EGYPTIAN HIEROGLYPH R026 132CE EGYPTIAN HIEROGLYPH R027 132CF EGYPTIAN HIEROGLYPH R028 132D0 EGYPTIAN HIEROGLYPH R029 @ S. Crowns, dress, staves, etc. 132D1 EGYPTIAN HIEROGLYPH S001 132D2 EGYPTIAN HIEROGLYPH S002 132D3 EGYPTIAN HIEROGLYPH S002A 132D4 EGYPTIAN HIEROGLYPH S003 132D5 EGYPTIAN HIEROGLYPH S004 132D6 EGYPTIAN HIEROGLYPH S005 132D7 EGYPTIAN HIEROGLYPH S006 132D8 EGYPTIAN HIEROGLYPH S006A 132D9 EGYPTIAN HIEROGLYPH S007 132DA EGYPTIAN HIEROGLYPH S008 132DB EGYPTIAN HIEROGLYPH S009 132DC EGYPTIAN HIEROGLYPH S010 132DD EGYPTIAN HIEROGLYPH S011 132DE EGYPTIAN HIEROGLYPH S012 132DF EGYPTIAN HIEROGLYPH S013 132E0 EGYPTIAN HIEROGLYPH S014 132E1 EGYPTIAN HIEROGLYPH S014A 132E2 EGYPTIAN HIEROGLYPH S014B 132E3 EGYPTIAN HIEROGLYPH S015 132E4 EGYPTIAN HIEROGLYPH S016 132E5 EGYPTIAN HIEROGLYPH S017 132E6 EGYPTIAN HIEROGLYPH S017A 132E7 EGYPTIAN HIEROGLYPH S018 132E8 EGYPTIAN HIEROGLYPH S019 132E9 EGYPTIAN HIEROGLYPH S020 132EA EGYPTIAN HIEROGLYPH S021 132EB EGYPTIAN HIEROGLYPH S022 132EC EGYPTIAN HIEROGLYPH S023 132ED EGYPTIAN HIEROGLYPH S024 132EE EGYPTIAN HIEROGLYPH S025 132EF EGYPTIAN HIEROGLYPH S026 132F0 EGYPTIAN HIEROGLYPH S026A 132F1 EGYPTIAN HIEROGLYPH S026B 132F2 EGYPTIAN HIEROGLYPH S027 132F3 EGYPTIAN HIEROGLYPH S028 132F4 EGYPTIAN HIEROGLYPH S029 * transliterated as s or as z x (egyptian hieroglyph o034 - 13283) 132F5 EGYPTIAN HIEROGLYPH S030 132F6 EGYPTIAN HIEROGLYPH S031 132F7 EGYPTIAN HIEROGLYPH S032 132F8 EGYPTIAN HIEROGLYPH S033 132F9 EGYPTIAN HIEROGLYPH S034 132FA EGYPTIAN HIEROGLYPH S035 132FB EGYPTIAN HIEROGLYPH S035A 132FC EGYPTIAN HIEROGLYPH S036 132FD EGYPTIAN HIEROGLYPH S037 132FE EGYPTIAN HIEROGLYPH S038 132FF EGYPTIAN HIEROGLYPH S039 13300 EGYPTIAN HIEROGLYPH S040 13301 EGYPTIAN HIEROGLYPH S041 13302 EGYPTIAN HIEROGLYPH S042 13303 EGYPTIAN HIEROGLYPH S043 13304 EGYPTIAN HIEROGLYPH S044 13305 EGYPTIAN HIEROGLYPH S045 13306 EGYPTIAN HIEROGLYPH S046 @ T. Warfare, hunting, butchery 13307 EGYPTIAN HIEROGLYPH T001 13308 EGYPTIAN HIEROGLYPH T002 13309 EGYPTIAN HIEROGLYPH T003 1330A EGYPTIAN HIEROGLYPH T003A 1330B EGYPTIAN HIEROGLYPH T004 1330C EGYPTIAN HIEROGLYPH T005 1330D EGYPTIAN HIEROGLYPH T006 1330E EGYPTIAN HIEROGLYPH T007 1330F EGYPTIAN HIEROGLYPH T007A 13310 EGYPTIAN HIEROGLYPH T008 13311 EGYPTIAN HIEROGLYPH T008A 13312 EGYPTIAN HIEROGLYPH T009 13313 EGYPTIAN HIEROGLYPH T009A 13314 EGYPTIAN HIEROGLYPH T010 13315 EGYPTIAN HIEROGLYPH T011 13316 EGYPTIAN HIEROGLYPH T011A 13317 EGYPTIAN HIEROGLYPH T012 13318 EGYPTIAN HIEROGLYPH T013 13319 EGYPTIAN HIEROGLYPH T014 1331A EGYPTIAN HIEROGLYPH T015 1331B EGYPTIAN HIEROGLYPH T016 1331C EGYPTIAN HIEROGLYPH T016A 1331D EGYPTIAN HIEROGLYPH T017 1331E EGYPTIAN HIEROGLYPH T018 1331F EGYPTIAN HIEROGLYPH T019 13320 EGYPTIAN HIEROGLYPH T020 13321 EGYPTIAN HIEROGLYPH T021 13322 EGYPTIAN HIEROGLYPH T022 13323 EGYPTIAN HIEROGLYPH T023 13324 EGYPTIAN HIEROGLYPH T024 13325 EGYPTIAN HIEROGLYPH T025 13326 EGYPTIAN HIEROGLYPH T026 13327 EGYPTIAN HIEROGLYPH T027 13328 EGYPTIAN HIEROGLYPH T028 13329 EGYPTIAN HIEROGLYPH T029 1332A EGYPTIAN HIEROGLYPH T030 1332B EGYPTIAN HIEROGLYPH T031 1332C EGYPTIAN HIEROGLYPH T032 1332D EGYPTIAN HIEROGLYPH T032A 1332E EGYPTIAN HIEROGLYPH T033 1332F EGYPTIAN HIEROGLYPH T033A 13330 EGYPTIAN HIEROGLYPH T034 13331 EGYPTIAN HIEROGLYPH T035 13332 EGYPTIAN HIEROGLYPH T036 @ U. Agriculture, crafts, and professions 13333 EGYPTIAN HIEROGLYPH U001 13334 EGYPTIAN HIEROGLYPH U002 13335 EGYPTIAN HIEROGLYPH U003 13336 EGYPTIAN HIEROGLYPH U004 13337 EGYPTIAN HIEROGLYPH U005 13338 EGYPTIAN HIEROGLYPH U006 13339 EGYPTIAN HIEROGLYPH U006A 1333A EGYPTIAN HIEROGLYPH U006B 1333B EGYPTIAN HIEROGLYPH U007 1333C EGYPTIAN HIEROGLYPH U008 1333D EGYPTIAN HIEROGLYPH U009 1333E EGYPTIAN HIEROGLYPH U010 1333F EGYPTIAN HIEROGLYPH U011 13340 EGYPTIAN HIEROGLYPH U012 13341 EGYPTIAN HIEROGLYPH U013 13342 EGYPTIAN HIEROGLYPH U014 13343 EGYPTIAN HIEROGLYPH U015 13344 EGYPTIAN HIEROGLYPH U016 13345 EGYPTIAN HIEROGLYPH U017 13346 EGYPTIAN HIEROGLYPH U018 13347 EGYPTIAN HIEROGLYPH U019 13348 EGYPTIAN HIEROGLYPH U020 13349 EGYPTIAN HIEROGLYPH U021 1334A EGYPTIAN HIEROGLYPH U022 1334B EGYPTIAN HIEROGLYPH U023 1334C EGYPTIAN HIEROGLYPH U023A 1334D EGYPTIAN HIEROGLYPH U024 1334E EGYPTIAN HIEROGLYPH U025 1334F EGYPTIAN HIEROGLYPH U026 13350 EGYPTIAN HIEROGLYPH U027 13351 EGYPTIAN HIEROGLYPH U028 13352 EGYPTIAN HIEROGLYPH U029 13353 EGYPTIAN HIEROGLYPH U029A 13354 EGYPTIAN HIEROGLYPH U030 13355 EGYPTIAN HIEROGLYPH U031 13356 EGYPTIAN HIEROGLYPH U032 13357 EGYPTIAN HIEROGLYPH U032A 13358 EGYPTIAN HIEROGLYPH U033 13359 EGYPTIAN HIEROGLYPH U034 1335A EGYPTIAN HIEROGLYPH U035 1335B EGYPTIAN HIEROGLYPH U036 1335C EGYPTIAN HIEROGLYPH U037 1335D EGYPTIAN HIEROGLYPH U038 1335E EGYPTIAN HIEROGLYPH U039 1335F EGYPTIAN HIEROGLYPH U040 13360 EGYPTIAN HIEROGLYPH U041 13361 EGYPTIAN HIEROGLYPH U042 @ V. Rope, fiber, baskets, bags, etc. 13362 EGYPTIAN HIEROGLYPH V001 * 100 13363 EGYPTIAN HIEROGLYPH V001A * 200 13364 EGYPTIAN HIEROGLYPH V001B * 300 13365 EGYPTIAN HIEROGLYPH V001C * 400 13366 EGYPTIAN HIEROGLYPH V001D * 500 13367 EGYPTIAN HIEROGLYPH V001E * 600 13368 EGYPTIAN HIEROGLYPH V001F * 700 13369 EGYPTIAN HIEROGLYPH V001G * 800 1336A EGYPTIAN HIEROGLYPH V001H * 900 1336B EGYPTIAN HIEROGLYPH V001I * 500 1336C EGYPTIAN HIEROGLYPH V002 1336D EGYPTIAN HIEROGLYPH V002A 1336E EGYPTIAN HIEROGLYPH V003 1336F EGYPTIAN HIEROGLYPH V004 13370 EGYPTIAN HIEROGLYPH V005 13371 EGYPTIAN HIEROGLYPH V006 13372 EGYPTIAN HIEROGLYPH V007 13373 EGYPTIAN HIEROGLYPH V007A 13374 EGYPTIAN HIEROGLYPH V007B 13375 EGYPTIAN HIEROGLYPH V008 13376 EGYPTIAN HIEROGLYPH V009 13377 EGYPTIAN HIEROGLYPH V010 13378 EGYPTIAN HIEROGLYPH V011 13379 EGYPTIAN HIEROGLYPH V011A * beginning of cartouche 1337A EGYPTIAN HIEROGLYPH V011B * end of cartouche 1337B EGYPTIAN HIEROGLYPH V011C * end of knotless cartouche 1337C EGYPTIAN HIEROGLYPH V012 1337D EGYPTIAN HIEROGLYPH V012A 1337E EGYPTIAN HIEROGLYPH V012B 1337F EGYPTIAN HIEROGLYPH V013 * transliterated as 1E6F 13380 EGYPTIAN HIEROGLYPH V014 13381 EGYPTIAN HIEROGLYPH V015 13382 EGYPTIAN HIEROGLYPH V016 13383 EGYPTIAN HIEROGLYPH V017 13384 EGYPTIAN HIEROGLYPH V018 13385 EGYPTIAN HIEROGLYPH V019 13386 EGYPTIAN HIEROGLYPH V020 * 10 13387 EGYPTIAN HIEROGLYPH V020A * 20 13388 EGYPTIAN HIEROGLYPH V020B * 30 13389 EGYPTIAN HIEROGLYPH V020C * 40 1338A EGYPTIAN HIEROGLYPH V020D * 50 1338B EGYPTIAN HIEROGLYPH V020E * 60 1338C EGYPTIAN HIEROGLYPH V020F * 70 1338D EGYPTIAN HIEROGLYPH V020G * 80 1338E EGYPTIAN HIEROGLYPH V020H * 90 1338F EGYPTIAN HIEROGLYPH V020I * 20 13390 EGYPTIAN HIEROGLYPH V020J * 30 13391 EGYPTIAN HIEROGLYPH V020K * 40 13392 EGYPTIAN HIEROGLYPH V020L * 50 13393 EGYPTIAN HIEROGLYPH V021 13394 EGYPTIAN HIEROGLYPH V022 13395 EGYPTIAN HIEROGLYPH V023 13396 EGYPTIAN HIEROGLYPH V023A 13397 EGYPTIAN HIEROGLYPH V024 13398 EGYPTIAN HIEROGLYPH V025 13399 EGYPTIAN HIEROGLYPH V026 1339A EGYPTIAN HIEROGLYPH V027 1339B EGYPTIAN HIEROGLYPH V028 * transliterated as 1E25 x (arabic letter hah - 062D) 1339C EGYPTIAN HIEROGLYPH V028A 1339D EGYPTIAN HIEROGLYPH V029 1339E EGYPTIAN HIEROGLYPH V029A 1339F EGYPTIAN HIEROGLYPH V030 133A0 EGYPTIAN HIEROGLYPH V030A 133A1 EGYPTIAN HIEROGLYPH V031 * transliterated as k x (hebrew letter kaf - 05DB) x (arabic letter kaf - 0643) 133A2 EGYPTIAN HIEROGLYPH V031A 133A3 EGYPTIAN HIEROGLYPH V032 133A4 EGYPTIAN HIEROGLYPH V033 133A5 EGYPTIAN HIEROGLYPH V033A 133A6 EGYPTIAN HIEROGLYPH V034 133A7 EGYPTIAN HIEROGLYPH V035 133A8 EGYPTIAN HIEROGLYPH V036 133A9 EGYPTIAN HIEROGLYPH V037 133AA EGYPTIAN HIEROGLYPH V037A 133AB EGYPTIAN HIEROGLYPH V038 133AC EGYPTIAN HIEROGLYPH V039 133AD EGYPTIAN HIEROGLYPH V040 * 10 in dates 133AE EGYPTIAN HIEROGLYPH V040A * 20 in dates @ W. Vessels of stone and earthenware 133AF EGYPTIAN HIEROGLYPH W001 133B0 EGYPTIAN HIEROGLYPH W002 133B1 EGYPTIAN HIEROGLYPH W003 133B2 EGYPTIAN HIEROGLYPH W003A 133B3 EGYPTIAN HIEROGLYPH W004 133B4 EGYPTIAN HIEROGLYPH W005 133B5 EGYPTIAN HIEROGLYPH W006 133B6 EGYPTIAN HIEROGLYPH W007 133B7 EGYPTIAN HIEROGLYPH W008 133B8 EGYPTIAN HIEROGLYPH W009 133B9 EGYPTIAN HIEROGLYPH W009A 133BA EGYPTIAN HIEROGLYPH W010 133BB EGYPTIAN HIEROGLYPH W010A 133BC EGYPTIAN HIEROGLYPH W011 * transliterated as g 133BD EGYPTIAN HIEROGLYPH W012 133BE EGYPTIAN HIEROGLYPH W013 133BF EGYPTIAN HIEROGLYPH W014 133C0 EGYPTIAN HIEROGLYPH W014A 133C1 EGYPTIAN HIEROGLYPH W015 133C2 EGYPTIAN HIEROGLYPH W016 133C3 EGYPTIAN HIEROGLYPH W017 133C4 EGYPTIAN HIEROGLYPH W017A 133C5 EGYPTIAN HIEROGLYPH W018 133C6 EGYPTIAN HIEROGLYPH W018A 133C7 EGYPTIAN HIEROGLYPH W019 133C8 EGYPTIAN HIEROGLYPH W020 133C9 EGYPTIAN HIEROGLYPH W021 133CA EGYPTIAN HIEROGLYPH W022 133CB EGYPTIAN HIEROGLYPH W023 133CC EGYPTIAN HIEROGLYPH W024 133CD EGYPTIAN HIEROGLYPH W024A 133CE EGYPTIAN HIEROGLYPH W025 @ X. Loaves and cakes 133CF EGYPTIAN HIEROGLYPH X001 * transliterated as t 133D0 EGYPTIAN HIEROGLYPH X002 133D1 EGYPTIAN HIEROGLYPH X003 133D2 EGYPTIAN HIEROGLYPH X004 133D3 EGYPTIAN HIEROGLYPH X004A 133D4 EGYPTIAN HIEROGLYPH X004B 133D5 EGYPTIAN HIEROGLYPH X005 133D6 EGYPTIAN HIEROGLYPH X006 133D7 EGYPTIAN HIEROGLYPH X006A 133D8 EGYPTIAN HIEROGLYPH X007 133D9 EGYPTIAN HIEROGLYPH X008 133DA EGYPTIAN HIEROGLYPH X008A @ Y. Writings, games, music 133DB EGYPTIAN HIEROGLYPH Y001 133DC EGYPTIAN HIEROGLYPH Y001A 133DD EGYPTIAN HIEROGLYPH Y002 133DE EGYPTIAN HIEROGLYPH Y003 133DF EGYPTIAN HIEROGLYPH Y004 133E0 EGYPTIAN HIEROGLYPH Y005 133E1 EGYPTIAN HIEROGLYPH Y006 133E2 EGYPTIAN HIEROGLYPH Y007 133E3 EGYPTIAN HIEROGLYPH Y008 @ Z. Strokes, signs derived from Hieratic, geometrical figures 133E4 EGYPTIAN HIEROGLYPH Z001 x (egyptian hieroglyph z015 - 133FA) 133E5 EGYPTIAN HIEROGLYPH Z002 * plurality x (egyptian hieroglyph z015b - 133FC) 133E6 EGYPTIAN HIEROGLYPH Z002A 133E7 EGYPTIAN HIEROGLYPH Z002B 133E8 EGYPTIAN HIEROGLYPH Z002C 133E9 EGYPTIAN HIEROGLYPH Z002D 133EA EGYPTIAN HIEROGLYPH Z003 133EB EGYPTIAN HIEROGLYPH Z003A 133EC EGYPTIAN HIEROGLYPH Z003B * 3 133ED EGYPTIAN HIEROGLYPH Z004 * duality * transliterated as y x (egyptian hieroglyph m017a - 131CC) 133EE EGYPTIAN HIEROGLYPH Z004A * duality x (egyptian hieroglyph z015a - 133FB) 133EF EGYPTIAN HIEROGLYPH Z005 133F0 EGYPTIAN HIEROGLYPH Z005A 133F1 EGYPTIAN HIEROGLYPH Z006 133F2 EGYPTIAN HIEROGLYPH Z007 133F3 EGYPTIAN HIEROGLYPH Z008 133F4 EGYPTIAN HIEROGLYPH Z009 133F5 EGYPTIAN HIEROGLYPH Z010 133F6 EGYPTIAN HIEROGLYPH Z011 133F7 EGYPTIAN HIEROGLYPH Z012 133F8 EGYPTIAN HIEROGLYPH Z013 133F9 EGYPTIAN HIEROGLYPH Z014 133FA EGYPTIAN HIEROGLYPH Z015 * 1 x (egyptian hieroglyph z001 - 133E4) 133FB EGYPTIAN HIEROGLYPH Z015A * 2 x (egyptian hieroglyph z004a - 133EE) 133FC EGYPTIAN HIEROGLYPH Z015B * 3 x (egyptian hieroglyph z002 - 133E5) x (egyptian hieroglyph z003 - 133EA) 133FD EGYPTIAN HIEROGLYPH Z015C * 4 133FE EGYPTIAN HIEROGLYPH Z015D * 5 133FF EGYPTIAN HIEROGLYPH Z015E * 6 13400 EGYPTIAN HIEROGLYPH Z015F * 7 13401 EGYPTIAN HIEROGLYPH Z015G * 8 13402 EGYPTIAN HIEROGLYPH Z015H * 9 13403 EGYPTIAN HIEROGLYPH Z015I * 5 13404 EGYPTIAN HIEROGLYPH Z016 * 1 in dates 13405 EGYPTIAN HIEROGLYPH Z016A * 2 in dates 13406 EGYPTIAN HIEROGLYPH Z016B * 3 in dates 13407 EGYPTIAN HIEROGLYPH Z016C * 4 in dates 13408 EGYPTIAN HIEROGLYPH Z016D * 5 in dates 13409 EGYPTIAN HIEROGLYPH Z016E * 6 in dates 1340A EGYPTIAN HIEROGLYPH Z016F * 7 in dates 1340B EGYPTIAN HIEROGLYPH Z016G * 8 in dates 1340C EGYPTIAN HIEROGLYPH Z016H * 9 in dates @ Aa. Unclassified 1340D EGYPTIAN HIEROGLYPH AA001 * transliterated as 1E2B x (arabic letter khah - 062E) 1340E EGYPTIAN HIEROGLYPH AA002 1340F EGYPTIAN HIEROGLYPH AA003 13410 EGYPTIAN HIEROGLYPH AA004 13411 EGYPTIAN HIEROGLYPH AA005 13412 EGYPTIAN HIEROGLYPH AA006 13413 EGYPTIAN HIEROGLYPH AA007 13414 EGYPTIAN HIEROGLYPH AA007A 13415 EGYPTIAN HIEROGLYPH AA007B 13416 EGYPTIAN HIEROGLYPH AA008 13417 EGYPTIAN HIEROGLYPH AA009 13418 EGYPTIAN HIEROGLYPH AA010 13419 EGYPTIAN HIEROGLYPH AA011 1341A EGYPTIAN HIEROGLYPH AA012 1341B EGYPTIAN HIEROGLYPH AA013 1341C EGYPTIAN HIEROGLYPH AA014 1341D EGYPTIAN HIEROGLYPH AA015 1341E EGYPTIAN HIEROGLYPH AA016 1341F EGYPTIAN HIEROGLYPH AA017 13420 EGYPTIAN HIEROGLYPH AA018 13421 EGYPTIAN HIEROGLYPH AA019 13422 EGYPTIAN HIEROGLYPH AA020 13423 EGYPTIAN HIEROGLYPH AA021 13424 EGYPTIAN HIEROGLYPH AA022 13425 EGYPTIAN HIEROGLYPH AA023 13426 EGYPTIAN HIEROGLYPH AA024 13427 EGYPTIAN HIEROGLYPH AA025 13428 EGYPTIAN HIEROGLYPH AA026 13429 EGYPTIAN HIEROGLYPH AA027 1342A EGYPTIAN HIEROGLYPH AA028 1342B EGYPTIAN HIEROGLYPH AA029 1342C EGYPTIAN HIEROGLYPH AA030 1342D EGYPTIAN HIEROGLYPH AA031 1342E EGYPTIAN HIEROGLYPH AA032 @@ 14400 Anatolian Hieroglyphs 1467F @+ In the names list, most of the comments are in Latin. Those which have a Luwian phonetic value are identified as syllabic. @ A. The human body and clothing 14400 ANATOLIAN HIEROGLYPH A001 = ego 14401 ANATOLIAN HIEROGLYPH A002 = ego2 14402 ANATOLIAN HIEROGLYPH A003 14403 ANATOLIAN HIEROGLYPH A004 = mons2 14404 ANATOLIAN HIEROGLYPH A005 14405 ANATOLIAN HIEROGLYPH A006 = adorare 14406 ANATOLIAN HIEROGLYPH A007 = edere 14407 ANATOLIAN HIEROGLYPH A008 = bibere 14408 ANATOLIAN HIEROGLYPH A009 = amplecti 14409 ANATOLIAN HIEROGLYPH A010 = caput 1440A ANATOLIAN HIEROGLYPH A010A = caput+scalprum 1440B ANATOLIAN HIEROGLYPH A011 1440C ANATOLIAN HIEROGLYPH A012 = statua 1440D ANATOLIAN HIEROGLYPH A013 1440E ANATOLIAN HIEROGLYPH A014 = prae = logosyllabic pari 1440F ANATOLIAN HIEROGLYPH A015 = domina 14410 ANATOLIAN HIEROGLYPH A016 = magnus.domina 14411 ANATOLIAN HIEROGLYPH A017 = rex 14412 ANATOLIAN HIEROGLYPH A018 = magnus.rex 14413 ANATOLIAN HIEROGLYPH A019 = syllabic á 14414 ANATOLIAN HIEROGLYPH A020 14415 ANATOLIAN HIEROGLYPH A021 = heros 14416 ANATOLIAN HIEROGLYPH A022 = loqui 14417 ANATOLIAN HIEROGLYPH A023 14418 ANATOLIAN HIEROGLYPH A024 = lis 14419 ANATOLIAN HIEROGLYPH A025 = oculus 1441A ANATOLIAN HIEROGLYPH A026 = frons 1441B ANATOLIAN HIEROGLYPH A026A = versus 1441C ANATOLIAN HIEROGLYPH A027 = libare 1441D ANATOLIAN HIEROGLYPH A028 = fortis 1441E ANATOLIAN HIEROGLYPH A029 = syllabic tá 1441F ANATOLIAN HIEROGLYPH A030 14420 ANATOLIAN HIEROGLYPH A031 = ligare, pugnus+pugnus 14421 ANATOLIAN HIEROGLYPH A032 = bracchium 14422 ANATOLIAN HIEROGLYPH A033 14423 ANATOLIAN HIEROGLYPH A034 = post 14424 ANATOLIAN HIEROGLYPH A035 = syllabic na 14425 ANATOLIAN HIEROGLYPH A036 = lituus+na 14426 ANATOLIAN HIEROGLYPH A037 14427 ANATOLIAN HIEROGLYPH A038 14428 ANATOLIAN HIEROGLYPH A039 = pugnus 14429 ANATOLIAN HIEROGLYPH A039A = pugnus+x 1442A ANATOLIAN HIEROGLYPH A040 1442B ANATOLIAN HIEROGLYPH A041 = capere = syllabic tà 1442C ANATOLIAN HIEROGLYPH A041A = syllabic tà 1442D ANATOLIAN HIEROGLYPH A042 = capere2.capere2 = syllabic ta-x? 1442E ANATOLIAN HIEROGLYPH A043 = capere2 1442F ANATOLIAN HIEROGLYPH A044 14430 ANATOLIAN HIEROGLYPH A045 = infans, filius, frater 14431 ANATOLIAN HIEROGLYPH A045A = filia 14432 ANATOLIAN HIEROGLYPH A046 = rex.infans, rex.filius 14433 ANATOLIAN HIEROGLYPH A046A = rex.filia 14434 ANATOLIAN HIEROGLYPH A046B = magnus.filia 14435 ANATOLIAN HIEROGLYPH A047 14436 ANATOLIAN HIEROGLYPH A048 14437 ANATOLIAN HIEROGLYPH A049 = syllabic a+tá 14438 ANATOLIAN HIEROGLYPH A050 14439 ANATOLIAN HIEROGLYPH A051 1443A ANATOLIAN HIEROGLYPH A052 = manus.culter 1443B ANATOLIAN HIEROGLYPH A053 = manus+culter, ensis 1443C ANATOLIAN HIEROGLYPH A054 1443D ANATOLIAN HIEROGLYPH A055 = syllabic nì 1443E ANATOLIAN HIEROGLYPH A056 = syllabic ká 1443F ANATOLIAN HIEROGLYPH A057 = infra, sub = syllabic ká 14440 ANATOLIAN HIEROGLYPH A058 = cum 14441 ANATOLIAN HIEROGLYPH A059 = manus 14442 ANATOLIAN HIEROGLYPH A060 14443 ANATOLIAN HIEROGLYPH A061 14444 ANATOLIAN HIEROGLYPH A062 = longus, manus+minus? 14445 ANATOLIAN HIEROGLYPH A063 14446 ANATOLIAN HIEROGLYPH A064 14447 ANATOLIAN HIEROGLYPH A065 = ponere 14448 ANATOLIAN HIEROGLYPH A066 = dare = syllabic pi 14449 ANATOLIAN HIEROGLYPH A066A = syllabic pi 1444A ANATOLIAN HIEROGLYPH A066B = mandare, dare.dare 1444B ANATOLIAN HIEROGLYPH A066C = mandare2 1444C ANATOLIAN HIEROGLYPH A067 1444D ANATOLIAN HIEROGLYPH A068 1444E ANATOLIAN HIEROGLYPH A069 1444F ANATOLIAN HIEROGLYPH A070 = super = logosyllabic sara/i 14450 ANATOLIAN HIEROGLYPH A071 14451 ANATOLIAN HIEROGLYPH A072 14452 ANATOLIAN HIEROGLYPH A073 = audire, auris+tu+mi 14453 ANATOLIAN HIEROGLYPH A074 14454 ANATOLIAN HIEROGLYPH A075 14455 ANATOLIAN HIEROGLYPH A076 14456 ANATOLIAN HIEROGLYPH A077 14457 ANATOLIAN HIEROGLYPH A078 = ala 14458 ANATOLIAN HIEROGLYPH A079 = femina, mater 14459 ANATOLIAN HIEROGLYPH A080 = Sarma 1445A ANATOLIAN HIEROGLYPH A081 = Sarma2 1445B ANATOLIAN HIEROGLYPH A082 = crus = syllabic ta6 1445C ANATOLIAN HIEROGLYPH A083 = crus+flumen 1445D ANATOLIAN HIEROGLYPH A084 = crus2 = syllabic nà 1445E ANATOLIAN HIEROGLYPH A085 = genuflectere 1445F ANATOLIAN HIEROGLYPH A086 = crus.crus 14460 ANATOLIAN HIEROGLYPH A087 14461 ANATOLIAN HIEROGLYPH A088 14462 ANATOLIAN HIEROGLYPH A089 = syllabic tu 14463 ANATOLIAN HIEROGLYPH A090 = pes = syllabic ti 14464 ANATOLIAN HIEROGLYPH A091 = pes.scala.rotae 14465 ANATOLIAN HIEROGLYPH A092 14466 ANATOLIAN HIEROGLYPH A093 = pes2 14467 ANATOLIAN HIEROGLYPH A094 14468 ANATOLIAN HIEROGLYPH A095 = pes2.pes2 14469 ANATOLIAN HIEROGLYPH A096 = pes2.pes @ B. Animals 1446A ANATOLIAN HIEROGLYPH A097 = leo, bestia 1446B ANATOLIAN HIEROGLYPH A097A = leo2 1446C ANATOLIAN HIEROGLYPH A098 = canis 1446D ANATOLIAN HIEROGLYPH A098A = canis2 1446E ANATOLIAN HIEROGLYPH A099 = equus 1446F ANATOLIAN HIEROGLYPH A100 = asinus = syllabic ta 14470 ANATOLIAN HIEROGLYPH A100A = syllabic ta 14471 ANATOLIAN HIEROGLYPH A101 = asinus2 14472 ANATOLIAN HIEROGLYPH A101A = asinus2a 14473 ANATOLIAN HIEROGLYPH A102 = cervus = syllabic rú 14474 ANATOLIAN HIEROGLYPH A102A = cervus2 = syllabic rú 14475 ANATOLIAN HIEROGLYPH A103 = cervus3 = syllabic rú 14476 ANATOLIAN HIEROGLYPH A104 = capra = syllabic sà 14477 ANATOLIAN HIEROGLYPH A104A = syllabic sà 14478 ANATOLIAN HIEROGLYPH A104B = capra2 = syllabic sà 14479 ANATOLIAN HIEROGLYPH A104C = capra2a = syllabic sà 1447A ANATOLIAN HIEROGLYPH A105 = bos = syllabic u 1447B ANATOLIAN HIEROGLYPH A105A = bos = syllabic u 1447C ANATOLIAN HIEROGLYPH A105B = bos2 = syllabic u 1447D ANATOLIAN HIEROGLYPH A106 1447E ANATOLIAN HIEROGLYPH A107 = bos+mi = syllabic mu = logosyllabic muwa 1447F ANATOLIAN HIEROGLYPH A107A = syllabic mu = logosyllabic muwa 14480 ANATOLIAN HIEROGLYPH A107B = bos.mi = syllabic mu = logosyllabic muwa 14481 ANATOLIAN HIEROGLYPH A107C = bos2.mi = syllabic mu = logosyllabic muwa 14482 ANATOLIAN HIEROGLYPH A108 = cornu = sú 14483 ANATOLIAN HIEROGLYPH A109 = vitellus = syllabic ma-x 14484 ANATOLIAN HIEROGLYPH A110 = ovis = syllabic ma 14485 ANATOLIAN HIEROGLYPH A110A = syllabic ma 14486 ANATOLIAN HIEROGLYPH A110B = ovis2 = syllabic ma 14487 ANATOLIAN HIEROGLYPH A111 = ovis3 14488 ANATOLIAN HIEROGLYPH A112 = lingere = syllabic za4 14489 ANATOLIAN HIEROGLYPH A113 1448A ANATOLIAN HIEROGLYPH A114 = lituus+u 1448B ANATOLIAN HIEROGLYPH A115 = lepus = logosyllabic tapa 1448C ANATOLIAN HIEROGLYPH A115A = lepus2 = logosyllabic tapa 1448D ANATOLIAN HIEROGLYPH A116 1448E ANATOLIAN HIEROGLYPH A117 1448F ANATOLIAN HIEROGLYPH A118 14490 ANATOLIAN HIEROGLYPH A119 14491 ANATOLIAN HIEROGLYPH A120 = gryllus 14492 ANATOLIAN HIEROGLYPH A121 = sphinx 14493 ANATOLIAN HIEROGLYPH A122 14494 ANATOLIAN HIEROGLYPH A123 14495 ANATOLIAN HIEROGLYPH A124 14496 ANATOLIAN HIEROGLYPH A125 = syllabic lí 14497 ANATOLIAN HIEROGLYPH A125A = ungula = syllabic li-x 14498 ANATOLIAN HIEROGLYPH A126 14499 ANATOLIAN HIEROGLYPH A127 1449A ANATOLIAN HIEROGLYPH A128 = avis = zi4 1449B ANATOLIAN HIEROGLYPH A129 1449C ANATOLIAN HIEROGLYPH A130 = avis3 1449D ANATOLIAN HIEROGLYPH A131 = avis5 1449E ANATOLIAN HIEROGLYPH A132 = avis2 1449F ANATOLIAN HIEROGLYPH A133 = aquila, avis4 = syllabic ara/i 144A0 ANATOLIAN HIEROGLYPH A134 = syllabic ara/i * 1449F anatolian hieroglyph a133 + 145B1 anatolian hieroglyph a383 ra or ri 144A1 ANATOLIAN HIEROGLYPH A135 = avis-x 144A2 ANATOLIAN HIEROGLYPH A135A 144A3 ANATOLIAN HIEROGLYPH A136 144A4 ANATOLIAN HIEROGLYPH A137 = libatio 144A5 ANATOLIAN HIEROGLYPH A138 = piscis 144A6 ANATOLIAN HIEROGLYPH A139 144A7 ANATOLIAN HIEROGLYPH A140 144A8 ANATOLIAN HIEROGLYPH A141 144A9 ANATOLIAN HIEROGLYPH A142 144AA ANATOLIAN HIEROGLYPH A143 144AB ANATOLIAN HIEROGLYPH A144 144AC ANATOLIAN HIEROGLYPH A145 144AD ANATOLIAN HIEROGLYPH A146 144AE ANATOLIAN HIEROGLYPH A147 144AF ANATOLIAN HIEROGLYPH A148 = Janus @ C. Plants 144B0 ANATOLIAN HIEROGLYPH A149 144B1 ANATOLIAN HIEROGLYPH A150 144B2 ANATOLIAN HIEROGLYPH A151 = Telipinu 144B3 ANATOLIAN HIEROGLYPH A152 144B4 ANATOLIAN HIEROGLYPH A153 = syllabic nu 144B5 ANATOLIAN HIEROGLYPH A154 144B6 ANATOLIAN HIEROGLYPH A155 144B7 ANATOLIAN HIEROGLYPH A156 144B8 ANATOLIAN HIEROGLYPH A157 144B9 ANATOLIAN HIEROGLYPH A158 144BA ANATOLIAN HIEROGLYPH A159 144BB ANATOLIAN HIEROGLYPH A160 = vitis = syllabic wi(ya) 144BC ANATOLIAN HIEROGLYPH A161 144BD ANATOLIAN HIEROGLYPH A162 144BE ANATOLIAN HIEROGLYPH A163 144BF ANATOLIAN HIEROGLYPH A164 144C0 ANATOLIAN HIEROGLYPH A165 = bonus = syllabic wà/ì 144C1 ANATOLIAN HIEROGLYPH A166 = syllabic wá/í 144C2 ANATOLIAN HIEROGLYPH A167 144C3 ANATOLIAN HIEROGLYPH A168 144C4 ANATOLIAN HIEROGLYPH A169 144C5 ANATOLIAN HIEROGLYPH A170 144C6 ANATOLIAN HIEROGLYPH A171 144C7 ANATOLIAN HIEROGLYPH A172 = syllabic ta/i5, lá/í 144C8 ANATOLIAN HIEROGLYPH A173 = hastarius 144C9 ANATOLIAN HIEROGLYPH A174 = syllabic si 144CA ANATOLIAN HIEROGLYPH A175 = lingua = syllabic la 144CB ANATOLIAN HIEROGLYPH A176 = syllabic la+la 144CC ANATOLIAN HIEROGLYPH A177 = lingua+clavus 144CD ANATOLIAN HIEROGLYPH A178 = syllabic la+ra+a 144CE ANATOLIAN HIEROGLYPH A179 = hordeum = syllabic hwi-x 144CF ANATOLIAN HIEROGLYPH A180 144D0 ANATOLIAN HIEROGLYPH A181 = panis = syllabic pa-x @ D. Nature 144D1 ANATOLIAN HIEROGLYPH A182 = caelum 144D2 ANATOLIAN HIEROGLYPH A183 144D3 ANATOLIAN HIEROGLYPH A184 144D4 ANATOLIAN HIEROGLYPH A185 144D5 ANATOLIAN HIEROGLYPH A186 144D6 ANATOLIAN HIEROGLYPH A187 144D7 ANATOLIAN HIEROGLYPH A188 144D8 ANATOLIAN HIEROGLYPH A189 144D9 ANATOLIAN HIEROGLYPH A190 = sol2 144DA ANATOLIAN HIEROGLYPH A191 = sol 144DB ANATOLIAN HIEROGLYPH A192 = oriens 144DC ANATOLIAN HIEROGLYPH A193 = luna 144DD ANATOLIAN HIEROGLYPH A194 144DE ANATOLIAN HIEROGLYPH A195 144DF ANATOLIAN HIEROGLYPH A196 = Hatti = syllabic há 144E0 ANATOLIAN HIEROGLYPH A197 = Hatti+li, Hattusili = logosyllabic há-li 144E1 ANATOLIAN HIEROGLYPH A198 144E2 ANATOLIAN HIEROGLYPH A199 = tonitrus 144E3 ANATOLIAN HIEROGLYPH A200 = fulgur 144E4 ANATOLIAN HIEROGLYPH A201 = terra, locus = syllabic wa/i6 144E5 ANATOLIAN HIEROGLYPH A202 = via+terra.scalprum 144E6 ANATOLIAN HIEROGLYPH A202A = via+terra+scalprum 144E7 ANATOLIAN HIEROGLYPH A202B = (deus)via+terra 144E8 ANATOLIAN HIEROGLYPH A203 144E9 ANATOLIAN HIEROGLYPH A204 = syllabic wa/i5 144EA ANATOLIAN HIEROGLYPH A205 144EB ANATOLIAN HIEROGLYPH A206 144EC ANATOLIAN HIEROGLYPH A207 = mons = syllabic wa/i5 144ED ANATOLIAN HIEROGLYPH A207A = leo+mons.tu+leo 144EE ANATOLIAN HIEROGLYPH A208 144EF ANATOLIAN HIEROGLYPH A209 = syllabic i, i(a) 144F0 ANATOLIAN HIEROGLYPH A209A = syllabic i+ra/i, ri+i * 144EF anatolian hieroglyph a209 + 145B1 anatolian hieroglyph a383 ra or ri 144F1 ANATOLIAN HIEROGLYPH A210 = syllabic ia 144F2 ANATOLIAN HIEROGLYPH A211 144F3 ANATOLIAN HIEROGLYPH A212 = flumen 144F4 ANATOLIAN HIEROGLYPH A213 144F5 ANATOLIAN HIEROGLYPH A214 = syllabic ní 144F6 ANATOLIAN HIEROGLYPH A215 = fons 144F7 ANATOLIAN HIEROGLYPH A215A = syllabic ha 144F8 ANATOLIAN HIEROGLYPH A216 = fines = syllabic arha 144F9 ANATOLIAN HIEROGLYPH A216A = fines+ha, arha 144FA ANATOLIAN HIEROGLYPH A217 144FB ANATOLIAN HIEROGLYPH A218 144FC ANATOLIAN HIEROGLYPH A219 144FD ANATOLIAN HIEROGLYPH A220 144FE ANATOLIAN HIEROGLYPH A221 = via 144FF ANATOLIAN HIEROGLYPH A222 14500 ANATOLIAN HIEROGLYPH A223 = syllabic sa6 14501 ANATOLIAN HIEROGLYPH A224 = syllabic ha? pa? @ E. Buildings 14502 ANATOLIAN HIEROGLYPH A225 = urbs 14503 ANATOLIAN HIEROGLYPH A226 = Ishuwa 14504 ANATOLIAN HIEROGLYPH A227 = urbs+ra/i?+li, urbs+ra/i?-li 14505 ANATOLIAN HIEROGLYPH A227A = urbs+li, urbs-li, Mursili 14506 ANATOLIAN HIEROGLYPH A228 = regio = syllabic tu4 14507 ANATOLIAN HIEROGLYPH A229 = syllabic mí.regio 14508 ANATOLIAN HIEROGLYPH A230 14509 ANATOLIAN HIEROGLYPH A231 = castrum 1450A ANATOLIAN HIEROGLYPH A232 1450B ANATOLIAN HIEROGLYPH A233 1450C ANATOLIAN HIEROGLYPH A234 1450D ANATOLIAN HIEROGLYPH A235 = turris? 1450E ANATOLIAN HIEROGLYPH A236 = murus? 1450F ANATOLIAN HIEROGLYPH A237 = porta 14510 ANATOLIAN HIEROGLYPH A238 14511 ANATOLIAN HIEROGLYPH A239 = porta2 14512 ANATOLIAN HIEROGLYPH A240 14513 ANATOLIAN HIEROGLYPH A241 = syllabic ki-x 14514 ANATOLIAN HIEROGLYPH A242 14515 ANATOLIAN HIEROGLYPH A243 = cubitum 14516 ANATOLIAN HIEROGLYPH A244 = aedificium 14517 ANATOLIAN HIEROGLYPH A245 = vacuus, aedificium+minus 14518 ANATOLIAN HIEROGLYPH A246 = aedificare, aedificium.ponere 14519 ANATOLIAN HIEROGLYPH A247 = domus 1451A ANATOLIAN HIEROGLYPH A248 = delere, domus+minus 1451B ANATOLIAN HIEROGLYPH A249 = deus.domus 1451C ANATOLIAN HIEROGLYPH A250 = magnus.domus 1451D ANATOLIAN HIEROGLYPH A251 = domus+x 1451E ANATOLIAN HIEROGLYPH A252 = domus+scala 1451F ANATOLIAN HIEROGLYPH A253 14520 ANATOLIAN HIEROGLYPH A254 = eunuchus2 14521 ANATOLIAN HIEROGLYPH A255 = horreum 14522 ANATOLIAN HIEROGLYPH A256 14523 ANATOLIAN HIEROGLYPH A257 = argentum 14524 ANATOLIAN HIEROGLYPH A258 14525 ANATOLIAN HIEROGLYPH A259 14526 ANATOLIAN HIEROGLYPH A260 14527 ANATOLIAN HIEROGLYPH A261 14528 ANATOLIAN HIEROGLYPH A262 14529 ANATOLIAN HIEROGLYPH A263 1452A ANATOLIAN HIEROGLYPH A264 = podium 1452B ANATOLIAN HIEROGLYPH A265 1452C ANATOLIAN HIEROGLYPH A266 = pes.regio 1452D ANATOLIAN HIEROGLYPH A267 = stele, lapis+scalprum 1452E ANATOLIAN HIEROGLYPH A267A = lapis 1452F ANATOLIAN HIEROGLYPH A268 = scalprum @ F. Arms, tools, furniture, and other instruments 14530 ANATOLIAN HIEROGLYPH A269 = exercitus 14531 ANATOLIAN HIEROGLYPH A270 14532 ANATOLIAN HIEROGLYPH A271 14533 ANATOLIAN HIEROGLYPH A272 = scutum 14534 ANATOLIAN HIEROGLYPH A273 14535 ANATOLIAN HIEROGLYPH A274 14536 ANATOLIAN HIEROGLYPH A275 14537 ANATOLIAN HIEROGLYPH A276 = frater2 14538 ANATOLIAN HIEROGLYPH A277 = iudex.la, iudex+la 14539 ANATOLIAN HIEROGLYPH A278 = syllabic li 1453A ANATOLIAN HIEROGLYPH A279 1453B ANATOLIAN HIEROGLYPH A280 = malleus = syllabic wa/i9 1453C ANATOLIAN HIEROGLYPH A281 = ascia 1453D ANATOLIAN HIEROGLYPH A282 1453E ANATOLIAN HIEROGLYPH A283 = logosyllabic tuzzi 1453F ANATOLIAN HIEROGLYPH A284 14540 ANATOLIAN HIEROGLYPH A285 = iaculum = syllabic zu? = logosyllabic zuwa 14541 ANATOLIAN HIEROGLYPH A286 = syllabic wa/i7 14542 ANATOLIAN HIEROGLYPH A287 14543 ANATOLIAN HIEROGLYPH A288 = currus 14544 ANATOLIAN HIEROGLYPH A289 = auriga 14545 ANATOLIAN HIEROGLYPH A289A = auriga2 14546 ANATOLIAN HIEROGLYPH A290 = syllabic hara/i * 14548 anatolian hieroglyph a292 + 145B1 anatolian hieroglyph a383 ra or ri 14547 ANATOLIAN HIEROGLYPH A291 = syllabic lì 14548 ANATOLIAN HIEROGLYPH A292 = rota = logosyllabic hala/i 14549 ANATOLIAN HIEROGLYPH A293 1454A ANATOLIAN HIEROGLYPH A294 = thronus, mensa 1454B ANATOLIAN HIEROGLYPH A294A = thronus, mensa2 = Sarpa 1454C ANATOLIAN HIEROGLYPH A295 = sol2.thronus/mensa 1454D ANATOLIAN HIEROGLYPH A296 = (deus)mons.Sarpa, (deus)mons.mensa = thronus 1454E ANATOLIAN HIEROGLYPH A297 1454F ANATOLIAN HIEROGLYPH A298 = thronus2 14550 ANATOLIAN HIEROGLYPH A299 = solium = syllabic í 14551 ANATOLIAN HIEROGLYPH A299A = syllabic iá 14552 ANATOLIAN HIEROGLYPH A300 = nepos 14553 ANATOLIAN HIEROGLYPH A301 = lectus 14554 ANATOLIAN HIEROGLYPH A302 14555 ANATOLIAN HIEROGLYPH A303 = syllabic sara/i * 1456E anatolian hieroglyph a327 + 145B1 anatolian hieroglyph a383 ra or ri 14556 ANATOLIAN HIEROGLYPH A304 = syllabic mà 14557 ANATOLIAN HIEROGLYPH A305 = fusus 14558 ANATOLIAN HIEROGLYPH A306 = syllabic hí 14559 ANATOLIAN HIEROGLYPH A307 = syllabic hu 1455A ANATOLIAN HIEROGLYPH A308 1455B ANATOLIAN HIEROGLYPH A309 = crux 1455C ANATOLIAN HIEROGLYPH A309A = crux2 1455D ANATOLIAN HIEROGLYPH A310 1455E ANATOLIAN HIEROGLYPH A311 1455F ANATOLIAN HIEROGLYPH A312 14560 ANATOLIAN HIEROGLYPH A313 = vir = syllabic zí 14561 ANATOLIAN HIEROGLYPH A314 = syllabic ha-x 14562 ANATOLIAN HIEROGLYPH A315 = syllabic kar * 14561 anatolian hieroglyph a314 + 145B1 anatolian hieroglyph a383 ra or ri 14563 ANATOLIAN HIEROGLYPH A316 = syllabic sa7 14564 ANATOLIAN HIEROGLYPH A317 14565 ANATOLIAN HIEROGLYPH A318 = Teshub 14566 ANATOLIAN HIEROGLYPH A319 = syllabic ta/i4, la/i 14567 ANATOLIAN HIEROGLYPH A320 14568 ANATOLIAN HIEROGLYPH A321 14569 ANATOLIAN HIEROGLYPH A322 = purus 1456A ANATOLIAN HIEROGLYPH A323 1456B ANATOLIAN HIEROGLYPH A324 1456C ANATOLIAN HIEROGLYPH A325 = syllabic tú 1456D ANATOLIAN HIEROGLYPH A326 = scriba = syllabic tù 1456E ANATOLIAN HIEROGLYPH A327 = sigillum = syllabic sa5 1456F ANATOLIAN HIEROGLYPH A328 = syllabic pu 14570 ANATOLIAN HIEROGLYPH A329 = relative = syllabic kwi/a 14571 ANATOLIAN HIEROGLYPH A329A 14572 ANATOLIAN HIEROGLYPH A330 = capere+scalprum 14573 ANATOLIAN HIEROGLYPH A331 = avus 14574 ANATOLIAN HIEROGLYPH A332A = negative 14575 ANATOLIAN HIEROGLYPH A332B = negative2 = syllabic ná 14576 ANATOLIAN HIEROGLYPH A332C = negative3 @ G. Vases and receptacles 14577 ANATOLIAN HIEROGLYPH A333 14578 ANATOLIAN HIEROGLYPH A334 = syllabic pa 14579 ANATOLIAN HIEROGLYPH A335 = syllabic zá 1457A ANATOLIAN HIEROGLYPH A336 = annus, pithos.scutella, pithos = syllabic zì 1457B ANATOLIAN HIEROGLYPH A336A = syllabic zì 1457C ANATOLIAN HIEROGLYPH A336B = syllabic zà 1457D ANATOLIAN HIEROGLYPH A336C = syllabic za-x 1457E ANATOLIAN HIEROGLYPH A337 = pithos 1457F ANATOLIAN HIEROGLYPH A338 = culter 14580 ANATOLIAN HIEROGLYPH A339 14581 ANATOLIAN HIEROGLYPH A340 = annus+annus 14582 ANATOLIAN HIEROGLYPH A341 = vas 14583 ANATOLIAN HIEROGLYPH A342 14584 ANATOLIAN HIEROGLYPH A343 = pithos 14585 ANATOLIAN HIEROGLYPH A344 = contractus 14586 ANATOLIAN HIEROGLYPH A345 = urceus 14587 ANATOLIAN HIEROGLYPH A346 = poculum 14588 ANATOLIAN HIEROGLYPH A347 = syllabic hú 14589 ANATOLIAN HIEROGLYPH A348 1458A ANATOLIAN HIEROGLYPH A349 1458B ANATOLIAN HIEROGLYPH A350 1458C ANATOLIAN HIEROGLYPH A351 1458D ANATOLIAN HIEROGLYPH A352 1458E ANATOLIAN HIEROGLYPH A353 1458F ANATOLIAN HIEROGLYPH A354 14590 ANATOLIAN HIEROGLYPH A355 = sacerdos 14591 ANATOLIAN HIEROGLYPH A356 14592 ANATOLIAN HIEROGLYPH A357 14593 ANATOLIAN HIEROGLYPH A358 = dies 14594 ANATOLIAN HIEROGLYPH A359 14595 ANATOLIAN HIEROGLYPH A359A @ H. Symbols 14596 ANATOLIAN HIEROGLYPH A360 = deus 14597 ANATOLIAN HIEROGLYPH A361 14598 ANATOLIAN HIEROGLYPH A362 = syllabic má 14599 ANATOLIAN HIEROGLYPH A363 = magnus = syllabic ur 1459A ANATOLIAN HIEROGLYPH A364 = syllabic u 1459B ANATOLIAN HIEROGLYPH A364A = syllabic mu 1459C ANATOLIAN HIEROGLYPH A365 1459D ANATOLIAN HIEROGLYPH A366 = omnis(+mi) 1459E ANATOLIAN HIEROGLYPH A367 = logosyllabic tala 1459F ANATOLIAN HIEROGLYPH A368 = malus 145A0 ANATOLIAN HIEROGLYPH A368A = malus2 145A1 ANATOLIAN HIEROGLYPH A369 = vita 145A2 ANATOLIAN HIEROGLYPH A370 = bonus2 = syllabic su 145A3 ANATOLIAN HIEROGLYPH A371 = iustitia, iudex 145A4 ANATOLIAN HIEROGLYPH A371A = iudex+ra/i, tara/i-x * 145A3 anatolian hieroglyph a371 + 145B1 anatolian hieroglyph a383 ra or ri 145A5 ANATOLIAN HIEROGLYPH A372 = sacerdos2 145A6 ANATOLIAN HIEROGLYPH A373 145A7 ANATOLIAN HIEROGLYPH A374 145A8 ANATOLIAN HIEROGLYPH A375 145A9 ANATOLIAN HIEROGLYPH A376 = syllabic zi, zi/a 145AA ANATOLIAN HIEROGLYPH A377 = syllabic za 145AB ANATOLIAN HIEROGLYPH A378 = lituus 145AC ANATOLIAN HIEROGLYPH A379 = occidens = syllabic ià @ J. Lines, numbers, and geometric shapes 145AD ANATOLIAN HIEROGLYPH A380 = one = unus = syllabic sa8 145AE ANATOLIAN HIEROGLYPH A381 = minus 145AF ANATOLIAN HIEROGLYPH A381A = mori, vir2.minus 145B0 ANATOLIAN HIEROGLYPH A382 = lignum 145B1 ANATOLIAN HIEROGLYPH A383 RA OR RI x (anatolian hieroglyph a134 - 144A0) x (anatolian hieroglyph a209a - 144F0) x (anatolian hieroglyph a290 - 14546) x (anatolian hieroglyph a303 - 14555) x (anatolian hieroglyph a315 - 14562) x (anatolian hieroglyph a371a - 145A4) x (anatolian hieroglyph a389 - 145B9) x (anatolian hieroglyph a450a - 145F8) 145B2 ANATOLIAN HIEROGLYPH A383A = personal determinative 145B3 ANATOLIAN HIEROGLYPH A384 = two 145B4 ANATOLIAN HIEROGLYPH A385 = two 145B5 ANATOLIAN HIEROGLYPH A386 = vir2 = word divider 145B6 ANATOLIAN HIEROGLYPH A386A = vir2a 145B7 ANATOLIAN HIEROGLYPH A387 = servus = syllabic mì 145B8 ANATOLIAN HIEROGLYPH A388 = three = tara/i 145B9 ANATOLIAN HIEROGLYPH A389 = tara/i * 145B8 anatolian hieroglyph a388 + 145B1 anatolian hieroglyph a383 ra or ri 145BA ANATOLIAN HIEROGLYPH A390 = dominus 145BB ANATOLIAN HIEROGLYPH A391 = four = syllabic mi 145BC ANATOLIAN HIEROGLYPH A392 = five 145BD ANATOLIAN HIEROGLYPH A393 EIGHT = eight 145BE ANATOLIAN HIEROGLYPH A394 145BF ANATOLIAN HIEROGLYPH A395 = nine = syllabic nú 145C0 ANATOLIAN HIEROGLYPH A396 145C1 ANATOLIAN HIEROGLYPH A397 = ten = decem 145C2 ANATOLIAN HIEROGLYPH A398 145C3 ANATOLIAN HIEROGLYPH A399 = hundred = centum 145C4 ANATOLIAN HIEROGLYPH A400 = thousand = mille 145C5 ANATOLIAN HIEROGLYPH A401 145C6 ANATOLIAN HIEROGLYPH A402 = scutella = syllabic sa4 145C7 ANATOLIAN HIEROGLYPH A403 145C8 ANATOLIAN HIEROGLYPH A404 = animal 145C9 ANATOLIAN HIEROGLYPH A405 145CA ANATOLIAN HIEROGLYPH A406 145CB ANATOLIAN HIEROGLYPH A407 145CC ANATOLIAN HIEROGLYPH A408 145CD ANATOLIAN HIEROGLYPH A409 145CE ANATOLIAN HIEROGLYPH A410 BEGIN LOGOGRAM MARK 145CF ANATOLIAN HIEROGLYPH A410A END LOGOGRAM MARK 145D0 ANATOLIAN HIEROGLYPH A411 = syllabic ni 145D1 ANATOLIAN HIEROGLYPH A412 = syllabic ru 145D2 ANATOLIAN HIEROGLYPH A413 = syllabic hi 145D3 ANATOLIAN HIEROGLYPH A414 145D4 ANATOLIAN HIEROGLYPH A415 = syllabic sa 145D5 ANATOLIAN HIEROGLYPH A416 145D6 ANATOLIAN HIEROGLYPH A417 = syllabic sa-x 145D7 ANATOLIAN HIEROGLYPH A418 145D8 ANATOLIAN HIEROGLYPH A419 = syllabic mí = logosyllabic urhi 145D9 ANATOLIAN HIEROGLYPH A420 145DA ANATOLIAN HIEROGLYPH A421 = syllabic us 145DB ANATOLIAN HIEROGLYPH A422 = panis.scutella 145DC ANATOLIAN HIEROGLYPH A423 = syllabic ku 145DD ANATOLIAN HIEROGLYPH A424 145DE ANATOLIAN HIEROGLYPH A425 145DF ANATOLIAN HIEROGLYPH A426 145E0 ANATOLIAN HIEROGLYPH A427 145E1 ANATOLIAN HIEROGLYPH A428 145E2 ANATOLIAN HIEROGLYPH A429 = syllabic tana 145E3 ANATOLIAN HIEROGLYPH A430 = omnis2 = syllabic pú 145E4 ANATOLIAN HIEROGLYPH A431 145E5 ANATOLIAN HIEROGLYPH A432 = syllabic zu? @ K. Varia 145E6 ANATOLIAN HIEROGLYPH A433 = syllabic sá 145E7 ANATOLIAN HIEROGLYPH A434 = syllabic ka 145E8 ANATOLIAN HIEROGLYPH A435 = syllabic a-x? 145E9 ANATOLIAN HIEROGLYPH A436 145EA ANATOLIAN HIEROGLYPH A437 145EB ANATOLIAN HIEROGLYPH A438 = pastor 145EC ANATOLIAN HIEROGLYPH A439 = syllabic wa/i 145ED ANATOLIAN HIEROGLYPH A440 145EE ANATOLIAN HIEROGLYPH A441 145EF ANATOLIAN HIEROGLYPH A442 145F0 ANATOLIAN HIEROGLYPH A443 145F1 ANATOLIAN HIEROGLYPH A444 145F2 ANATOLIAN HIEROGLYPH A445 = syllabic la, li, lu 145F3 ANATOLIAN HIEROGLYPH A446 = syllabic ki 145F4 ANATOLIAN HIEROGLYPH A447 = syllabic ni-x 145F5 ANATOLIAN HIEROGLYPH A448 = syllabic sù?, zú? 145F6 ANATOLIAN HIEROGLYPH A449 145F7 ANATOLIAN HIEROGLYPH A450 = syllabic a = end of a word 145F8 ANATOLIAN HIEROGLYPH A450A = a+ra/i, ra+a * 145F7 anatolian hieroglyph a450 + 145B1 anatolian hieroglyph a383 ra or ri 145F9 ANATOLIAN HIEROGLYPH A451 = logosyllabic huru 145FA ANATOLIAN HIEROGLYPH A452 145FB ANATOLIAN HIEROGLYPH A453 145FC ANATOLIAN HIEROGLYPH A454 145FD ANATOLIAN HIEROGLYPH A455 = syllabic la-x 145FE ANATOLIAN HIEROGLYPH A456 = syllabic sí? 145FF ANATOLIAN HIEROGLYPH A457 14600 ANATOLIAN HIEROGLYPH A457A 14601 ANATOLIAN HIEROGLYPH A458 14602 ANATOLIAN HIEROGLYPH A459 14603 ANATOLIAN HIEROGLYPH A460 14604 ANATOLIAN HIEROGLYPH A461 14605 ANATOLIAN HIEROGLYPH A462 = syllabic ma-x? 14606 ANATOLIAN HIEROGLYPH A463 14607 ANATOLIAN HIEROGLYPH A464 14608 ANATOLIAN HIEROGLYPH A465 14609 ANATOLIAN HIEROGLYPH A466 1460A ANATOLIAN HIEROGLYPH A467 1460B ANATOLIAN HIEROGLYPH A468 1460C ANATOLIAN HIEROGLYPH A469 1460D ANATOLIAN HIEROGLYPH A470 = twelve 1460E ANATOLIAN HIEROGLYPH A471 1460F ANATOLIAN HIEROGLYPH A472 14610 ANATOLIAN HIEROGLYPH A473 14611 ANATOLIAN HIEROGLYPH A474 = eunuchus 14612 ANATOLIAN HIEROGLYPH A475 14613 ANATOLIAN HIEROGLYPH A476 14614 ANATOLIAN HIEROGLYPH A477 = flammae? 14615 ANATOLIAN HIEROGLYPH A478 14616 ANATOLIAN HIEROGLYPH A479 14617 ANATOLIAN HIEROGLYPH A480 14618 ANATOLIAN HIEROGLYPH A481 14619 ANATOLIAN HIEROGLYPH A482 1461A ANATOLIAN HIEROGLYPH A483 1461B ANATOLIAN HIEROGLYPH A484 1461C ANATOLIAN HIEROGLYPH A485 1461D ANATOLIAN HIEROGLYPH A486 = falx? 1461E ANATOLIAN HIEROGLYPH A487 1461F ANATOLIAN HIEROGLYPH A488 = syllabic tí 14620 ANATOLIAN HIEROGLYPH A489 14621 ANATOLIAN HIEROGLYPH A490 14622 ANATOLIAN HIEROGLYPH A491 14623 ANATOLIAN HIEROGLYPH A492 14624 ANATOLIAN HIEROGLYPH A493 14625 ANATOLIAN HIEROGLYPH A494 14626 ANATOLIAN HIEROGLYPH A495 14627 ANATOLIAN HIEROGLYPH A496 14628 ANATOLIAN HIEROGLYPH A497 @ M. Additional signs 14629 ANATOLIAN HIEROGLYPH A501 1462A ANATOLIAN HIEROGLYPH A502 1462B ANATOLIAN HIEROGLYPH A503 1462C ANATOLIAN HIEROGLYPH A504 1462D ANATOLIAN HIEROGLYPH A505 1462E ANATOLIAN HIEROGLYPH A506 = syllabic hana 1462F ANATOLIAN HIEROGLYPH A507 14630 ANATOLIAN HIEROGLYPH A508 = currere = syllabic hwi/a 14631 ANATOLIAN HIEROGLYPH A509 14632 ANATOLIAN HIEROGLYPH A510 14633 ANATOLIAN HIEROGLYPH A511 14634 ANATOLIAN HIEROGLYPH A512 14635 ANATOLIAN HIEROGLYPH A513 14636 ANATOLIAN HIEROGLYPH A514 14637 ANATOLIAN HIEROGLYPH A515 14638 ANATOLIAN HIEROGLYPH A516 14639 ANATOLIAN HIEROGLYPH A517 1463A ANATOLIAN HIEROGLYPH A518 1463B ANATOLIAN HIEROGLYPH A519 1463C ANATOLIAN HIEROGLYPH A520 1463D ANATOLIAN HIEROGLYPH A521 1463E ANATOLIAN HIEROGLYPH A522 1463F ANATOLIAN HIEROGLYPH A523 14640 ANATOLIAN HIEROGLYPH A524 = propheta?, cornu+caput 14641 ANATOLIAN HIEROGLYPH A525 = princeps 14642 ANATOLIAN HIEROGLYPH A526 = Güterbock G195 14643 ANATOLIAN HIEROGLYPH A527 = aper 14644 ANATOLIAN HIEROGLYPH A528 = tì 14645 ANATOLIAN HIEROGLYPH A529 = lingua+x 14646 ANATOLIAN HIEROGLYPH A530 @@ 16800 Bamum Supplement 16A3F @ Characters found through Phase A 16800 BAMUM LETTER PHASE-A NGKUE MFON 16801 BAMUM LETTER PHASE-A GBIEE FON 16802 BAMUM LETTER PHASE-A PON MFON PIPAEMGBIEE 16803 BAMUM LETTER PHASE-A PON MFON PIPAEMBA 16804 BAMUM LETTER PHASE-A NAA MFON 16805 BAMUM LETTER PHASE-A SHUENSHUET 16806 BAMUM LETTER PHASE-A TITA MFON 16807 BAMUM LETTER PHASE-A NZA MFON 16808 BAMUM LETTER PHASE-A SHINDA PA NJI 16809 BAMUM LETTER PHASE-A PON PA NJI PIPAEMGBIEE 1680A BAMUM LETTER PHASE-A PON PA NJI PIPAEMBA 1680B BAMUM LETTER PHASE-A MAEMBGBIEE 1680C BAMUM LETTER PHASE-A TU MAEMBA 1680D BAMUM LETTER PHASE-A NGANGU 1680E BAMUM LETTER PHASE-A MAEMVEUX 1680F BAMUM LETTER PHASE-A MANSUAE 16810 BAMUM LETTER PHASE-A MVEUAENGAM 16811 BAMUM LETTER PHASE-A SEUNYAM 16812 BAMUM LETTER PHASE-A NTOQPEN 16813 BAMUM LETTER PHASE-A KEUKEUTNDA 16814 BAMUM LETTER PHASE-A NKINDI 16815 BAMUM LETTER PHASE-A SUU 16816 BAMUM LETTER PHASE-A NGKUENZEUM 16817 BAMUM LETTER PHASE-A LAPAQ 16818 BAMUM LETTER PHASE-A LET KUT 16819 BAMUM LETTER PHASE-A NTAP MFAA 1681A BAMUM LETTER PHASE-A MAEKEUP 1681B BAMUM LETTER PHASE-A PASHAE 1681C BAMUM LETTER PHASE-A GHEUAERAE 1681D BAMUM LETTER PHASE-A PAMSHAE 1681E BAMUM LETTER PHASE-A MON NGGEUAET 1681F BAMUM LETTER PHASE-A NZUN MEUT 16820 BAMUM LETTER PHASE-A U YUQ NAE 16821 BAMUM LETTER PHASE-A GHEUAEGHEUAE 16822 BAMUM LETTER PHASE-A NTAP NTAA 16823 BAMUM LETTER PHASE-A SISA 16824 BAMUM LETTER PHASE-A MGBASA 16825 BAMUM LETTER PHASE-A MEUNJOMNDEUQ 16826 BAMUM LETTER PHASE-A MOOMPUQ 16827 BAMUM LETTER PHASE-A KAFA 16828 BAMUM LETTER PHASE-A PA LEERAEWA 16829 BAMUM LETTER PHASE-A NDA LEERAEWA 1682A BAMUM LETTER PHASE-A PET 1682B BAMUM LETTER PHASE-A MAEMKPEN 1682C BAMUM LETTER PHASE-A NIKA 1682D BAMUM LETTER PHASE-A PUP 1682E BAMUM LETTER PHASE-A TUAEP 1682F BAMUM LETTER PHASE-A LUAEP 16830 BAMUM LETTER PHASE-A SONJAM 16831 BAMUM LETTER PHASE-A TEUTEUWEN 16832 BAMUM LETTER PHASE-A MAENYI 16833 BAMUM LETTER PHASE-A KET 16834 BAMUM LETTER PHASE-A NDAANGGEUAET 16835 BAMUM LETTER PHASE-A KUOQ 16836 BAMUM LETTER PHASE-A MOOMEUT 16837 BAMUM LETTER PHASE-A SHUM 16838 BAMUM LETTER PHASE-A LOMMAE 16839 BAMUM LETTER PHASE-A FIRI 1683A BAMUM LETTER PHASE-A ROM 1683B BAMUM LETTER PHASE-A KPOQ 1683C BAMUM LETTER PHASE-A SOQ 1683D BAMUM LETTER PHASE-A MAP PIEET 1683E BAMUM LETTER PHASE-A SHIRAE 1683F BAMUM LETTER PHASE-A NTAP 16840 BAMUM LETTER PHASE-A SHOQ NSHUT YUM 16841 BAMUM LETTER PHASE-A NYIT MONGKEUAEQ 16842 BAMUM LETTER PHASE-A PAARAE 16843 BAMUM LETTER PHASE-A NKAARAE 16844 BAMUM LETTER PHASE-A UNKNOWN 16845 BAMUM LETTER PHASE-A NGGEN 16846 BAMUM LETTER PHASE-A MAESI 16847 BAMUM LETTER PHASE-A NJAM 16848 BAMUM LETTER PHASE-A MBANYI 16849 BAMUM LETTER PHASE-A NYET 1684A BAMUM LETTER PHASE-A TEUAEN 1684B BAMUM LETTER PHASE-A SOT 1684C BAMUM LETTER PHASE-A PAAM 1684D BAMUM LETTER PHASE-A NSHIEE 1684E BAMUM LETTER PHASE-A MAEM 1684F BAMUM LETTER PHASE-A NYI 16850 BAMUM LETTER PHASE-A KAQ 16851 BAMUM LETTER PHASE-A NSHA 16852 BAMUM LETTER PHASE-A VEE 16853 BAMUM LETTER PHASE-A LU 16854 BAMUM LETTER PHASE-A NEN 16855 BAMUM LETTER PHASE-A NAQ 16856 BAMUM LETTER PHASE-A MBAQ @ Characters found through Phase B 16857 BAMUM LETTER PHASE-B NSHUET 16858 BAMUM LETTER PHASE-B TU MAEMGBIEE 16859 BAMUM LETTER PHASE-B SIEE 1685A BAMUM LETTER PHASE-B SET TU 1685B BAMUM LETTER PHASE-B LOM NTEUM 1685C BAMUM LETTER PHASE-B MBA MAELEE 1685D BAMUM LETTER PHASE-B KIEEM 1685E BAMUM LETTER PHASE-B YEURAE 1685F BAMUM LETTER PHASE-B MBAARAE 16860 BAMUM LETTER PHASE-B KAM 16861 BAMUM LETTER PHASE-B PEESHI 16862 BAMUM LETTER PHASE-B YAFU LEERAEWA 16863 BAMUM LETTER PHASE-B LAM NSHUT NYAM 16864 BAMUM LETTER PHASE-B NTIEE SHEUOQ 16865 BAMUM LETTER PHASE-B NDU NJAA 16866 BAMUM LETTER PHASE-B GHEUGHEUAEM 16867 BAMUM LETTER PHASE-B PIT 16868 BAMUM LETTER PHASE-B TU NSIEE 16869 BAMUM LETTER PHASE-B SHET NJAQ 1686A BAMUM LETTER PHASE-B SHEUAEQTU 1686B BAMUM LETTER PHASE-B MFON TEUAEQ 1686C BAMUM LETTER PHASE-B MBIT MBAAKET 1686D BAMUM LETTER PHASE-B NYI NTEUM 1686E BAMUM LETTER PHASE-B KEUPUQ 1686F BAMUM LETTER PHASE-B GHEUGHEN 16870 BAMUM LETTER PHASE-B KEUYEUX 16871 BAMUM LETTER PHASE-B LAANAE 16872 BAMUM LETTER PHASE-B PARUM * nsen in Phases C-E 16873 BAMUM LETTER PHASE-B VEUM 16874 BAMUM LETTER PHASE-B NGKINDI MVOP 16875 BAMUM LETTER PHASE-B NGGEU MBU 16876 BAMUM LETTER PHASE-B WUAET 16877 BAMUM LETTER PHASE-B SAKEUAE 16878 BAMUM LETTER PHASE-B TAAM 16879 BAMUM LETTER PHASE-B MEUQ 1687A BAMUM LETTER PHASE-B NGGUOQ 1687B BAMUM LETTER PHASE-B NGGUOQ LARGE 1687C BAMUM LETTER PHASE-B MFIYAQ 1687D BAMUM LETTER PHASE-B SUE 1687E BAMUM LETTER PHASE-B MBEURI 1687F BAMUM LETTER PHASE-B MONTIEEN 16880 BAMUM LETTER PHASE-B NYAEMAE 16881 BAMUM LETTER PHASE-B PUNGAAM 16882 BAMUM LETTER PHASE-B MEUT NGGEET 16883 BAMUM LETTER PHASE-B FEUX 16884 BAMUM LETTER PHASE-B MBUOQ 16885 BAMUM LETTER PHASE-B FEE 16886 BAMUM LETTER PHASE-B KEUAEM 16887 BAMUM LETTER PHASE-B MA NJEUAENA 16888 BAMUM LETTER PHASE-B MA NJUQA 16889 BAMUM LETTER PHASE-B LET 1688A BAMUM LETTER PHASE-B NGGAAM 1688B BAMUM LETTER PHASE-B NSEN 1688C BAMUM LETTER PHASE-B MA 1688D BAMUM LETTER PHASE-B KIQ 1688E BAMUM LETTER PHASE-B NGOM @ Characters found through Phase C 1688F BAMUM LETTER PHASE-C NGKUE MAEMBA 16890 BAMUM LETTER PHASE-C NZA 16891 BAMUM LETTER PHASE-C YUM 16892 BAMUM LETTER PHASE-C WANGKUOQ 16893 BAMUM LETTER PHASE-C NGGEN 16894 BAMUM LETTER PHASE-C NDEUAEREE 16895 BAMUM LETTER PHASE-C NGKAQ 16896 BAMUM LETTER PHASE-C GHARAE 16897 BAMUM LETTER PHASE-C MBEEKEET 16898 BAMUM LETTER PHASE-C GBAYI 16899 BAMUM LETTER PHASE-C NYIR MKPARAQ MEUN 1689A BAMUM LETTER PHASE-C NTU MBIT 1689B BAMUM LETTER PHASE-C MBEUM 1689C BAMUM LETTER PHASE-C PIRIEEN 1689D BAMUM LETTER PHASE-C NDOMBU 1689E BAMUM LETTER PHASE-C MBAA CABBAGE-TREE 1689F BAMUM LETTER PHASE-C KEUSHEUAEP 168A0 BAMUM LETTER PHASE-C GHAP 168A1 BAMUM LETTER PHASE-C KEUKAQ 168A2 BAMUM LETTER PHASE-C YU MUOMAE 168A3 BAMUM LETTER PHASE-C NZEUM 168A4 BAMUM LETTER PHASE-C MBUE 168A5 BAMUM LETTER PHASE-C NSEUAEN 168A6 BAMUM LETTER PHASE-C MBIT 168A7 BAMUM LETTER PHASE-C YEUQ 168A8 BAMUM LETTER PHASE-C KPARAQ 168A9 BAMUM LETTER PHASE-C KAA 168AA BAMUM LETTER PHASE-C SEUX 168AB BAMUM LETTER PHASE-C NDIDA 168AC BAMUM LETTER PHASE-C TAASHAE 168AD BAMUM LETTER PHASE-C NJUEQ 168AE BAMUM LETTER PHASE-C TITA YUE 168AF BAMUM LETTER PHASE-C SUAET 168B0 BAMUM LETTER PHASE-C NGGUAEN NYAM 168B1 BAMUM LETTER PHASE-C VEUX 168B2 BAMUM LETTER PHASE-C NANSANAQ 168B3 BAMUM LETTER PHASE-C MA KEUAERI 168B4 BAMUM LETTER PHASE-C NTAA 168B5 BAMUM LETTER PHASE-C NGGUON 168B6 BAMUM LETTER PHASE-C LAP 168B7 BAMUM LETTER PHASE-C MBIRIEEN 168B8 BAMUM LETTER PHASE-C MGBASAQ 168B9 BAMUM LETTER PHASE-C NTEUNGBA 168BA BAMUM LETTER PHASE-C TEUTEUX 168BB BAMUM LETTER PHASE-C NGGUM 168BC BAMUM LETTER PHASE-C FUE 168BD BAMUM LETTER PHASE-C NDEUT 168BE BAMUM LETTER PHASE-C NSA 168BF BAMUM LETTER PHASE-C NSHAQ 168C0 BAMUM LETTER PHASE-C BUNG 168C1 BAMUM LETTER PHASE-C VEUAEPEN 168C2 BAMUM LETTER PHASE-C MBERAE 168C3 BAMUM LETTER PHASE-C RU 168C4 BAMUM LETTER PHASE-C NJAEM 168C5 BAMUM LETTER PHASE-C LAM 168C6 BAMUM LETTER PHASE-C TITUAEP 168C7 BAMUM LETTER PHASE-C NSUOT NGOM 168C8 BAMUM LETTER PHASE-C NJEEEE 168C9 BAMUM LETTER PHASE-C KET 168CA BAMUM LETTER PHASE-C NGGU 168CB BAMUM LETTER PHASE-C MAESI 168CC BAMUM LETTER PHASE-C MBUAEM 168CD BAMUM LETTER PHASE-C LU 168CE BAMUM LETTER PHASE-C KUT 168CF BAMUM LETTER PHASE-C NJAM 168D0 BAMUM LETTER PHASE-C NGOM 168D1 BAMUM LETTER PHASE-C WUP 168D2 BAMUM LETTER PHASE-C NGGUEET 168D3 BAMUM LETTER PHASE-C NSOM 168D4 BAMUM LETTER PHASE-C NTEN 168D5 BAMUM LETTER PHASE-C KUOP NKAARAE 168D6 BAMUM LETTER PHASE-C NSUN 168D7 BAMUM LETTER PHASE-C NDAM * pen in Phase D 168D8 BAMUM LETTER PHASE-C MA NSIEE 168D9 BAMUM LETTER PHASE-C YAA 168DA BAMUM LETTER PHASE-C NDAP 168DB BAMUM LETTER PHASE-C SHUEQ 168DC BAMUM LETTER PHASE-C SETFON 168DD BAMUM LETTER PHASE-C MBI 168DE BAMUM LETTER PHASE-C MAEMBA 168DF BAMUM LETTER PHASE-C MBANYI 168E0 BAMUM LETTER PHASE-C KEUSEUX 168E1 BAMUM LETTER PHASE-C MBEUX 168E2 BAMUM LETTER PHASE-C KEUM 168E3 BAMUM LETTER PHASE-C MBAA PICKET 168E4 BAMUM LETTER PHASE-C YUWOQ 168E5 BAMUM LETTER PHASE-C NJEUX 168E6 BAMUM LETTER PHASE-C MIEE 168E7 BAMUM LETTER PHASE-C MUAE 168E8 BAMUM LETTER PHASE-C SHIQ 168E9 BAMUM LETTER PHASE-C KEN LAW 168EA BAMUM LETTER PHASE-C KEN FATIGUE 168EB BAMUM LETTER PHASE-C NGAQ 168EC BAMUM LETTER PHASE-C NAQ 168ED BAMUM LETTER PHASE-C LIQ 168EE BAMUM LETTER PHASE-C PIN 168EF BAMUM LETTER PHASE-C PEN 168F0 BAMUM LETTER PHASE-C TET @ Characters found through Phase D 168F1 BAMUM LETTER PHASE-D MBUO 168F2 BAMUM LETTER PHASE-D WAP 168F3 BAMUM LETTER PHASE-D NJI 168F4 BAMUM LETTER PHASE-D MFON 168F5 BAMUM LETTER PHASE-D NJIEE 168F6 BAMUM LETTER PHASE-D LIEE 168F7 BAMUM LETTER PHASE-D NJEUT 168F8 BAMUM LETTER PHASE-D NSHEE 168F9 BAMUM LETTER PHASE-D NGGAAMAE 168FA BAMUM LETTER PHASE-D NYAM 168FB BAMUM LETTER PHASE-D WUAEN * ti in Phases E-F 168FC BAMUM LETTER PHASE-D NGKUN 168FD BAMUM LETTER PHASE-D SHEE 168FE BAMUM LETTER PHASE-D NGKAP 168FF BAMUM LETTER PHASE-D KEUAETMEUN 16900 BAMUM LETTER PHASE-D TEUT 16901 BAMUM LETTER PHASE-D SHEUAE 16902 BAMUM LETTER PHASE-D NJAP 16903 BAMUM LETTER PHASE-D SUE 16904 BAMUM LETTER PHASE-D KET 16905 BAMUM LETTER PHASE-D YAEMMAE 16906 BAMUM LETTER PHASE-D KUOM 16907 BAMUM LETTER PHASE-D SAP 16908 BAMUM LETTER PHASE-D MFEUT 16909 BAMUM LETTER PHASE-D NDEUX 1690A BAMUM LETTER PHASE-D MALEERI 1690B BAMUM LETTER PHASE-D MEUT 1690C BAMUM LETTER PHASE-D SEUAEQ 1690D BAMUM LETTER PHASE-D YEN 1690E BAMUM LETTER PHASE-D NJEUAEM 1690F BAMUM LETTER PHASE-D KEUOT MBUAE 16910 BAMUM LETTER PHASE-D NGKEURI 16911 BAMUM LETTER PHASE-D TU 16912 BAMUM LETTER PHASE-D GHAA 16913 BAMUM LETTER PHASE-D NGKYEE 16914 BAMUM LETTER PHASE-D FEUFEUAET 16915 BAMUM LETTER PHASE-D NDEE 16916 BAMUM LETTER PHASE-D MGBOFUM 16917 BAMUM LETTER PHASE-D LEUAEP 16918 BAMUM LETTER PHASE-D NDON 16919 BAMUM LETTER PHASE-D MONI 1691A BAMUM LETTER PHASE-D MGBEUN 1691B BAMUM LETTER PHASE-D PUUT 1691C BAMUM LETTER PHASE-D MGBIEE 1691D BAMUM LETTER PHASE-D MFO 1691E BAMUM LETTER PHASE-D LUM 1691F BAMUM LETTER PHASE-D NSIEEP 16920 BAMUM LETTER PHASE-D MBAA 16921 BAMUM LETTER PHASE-D KWAET 16922 BAMUM LETTER PHASE-D NYET 16923 BAMUM LETTER PHASE-D TEUAEN 16924 BAMUM LETTER PHASE-D SOT 16925 BAMUM LETTER PHASE-D YUWOQ 16926 BAMUM LETTER PHASE-D KEUM 16927 BAMUM LETTER PHASE-D RAEM 16928 BAMUM LETTER PHASE-D TEEEE 16929 BAMUM LETTER PHASE-D NGKEUAEQ * faamae '8' in Phase F 1692A BAMUM LETTER PHASE-D MFEUAE 1692B BAMUM LETTER PHASE-D NSIEET 1692C BAMUM LETTER PHASE-D KEUP 1692D BAMUM LETTER PHASE-D PIP 1692E BAMUM LETTER PHASE-D PEUTAE 1692F BAMUM LETTER PHASE-D NYUE 16930 BAMUM LETTER PHASE-D LET * lee in Phases E-F 16931 BAMUM LETTER PHASE-D NGGAAM * mu in Phases E-F 16932 BAMUM LETTER PHASE-D MFIEE 16933 BAMUM LETTER PHASE-D NGGWAEN 16934 BAMUM LETTER PHASE-D YUOM 16935 BAMUM LETTER PHASE-D PAP 16936 BAMUM LETTER PHASE-D YUOP 16937 BAMUM LETTER PHASE-D NDAM 16938 BAMUM LETTER PHASE-D NTEUM 16939 BAMUM LETTER PHASE-D SUAE 1693A BAMUM LETTER PHASE-D KUN 1693B BAMUM LETTER PHASE-D NGGEUX 1693C BAMUM LETTER PHASE-D NGKIEE 1693D BAMUM LETTER PHASE-D TUOT 1693E BAMUM LETTER PHASE-D MEUN 1693F BAMUM LETTER PHASE-D KUQ 16940 BAMUM LETTER PHASE-D NSUM 16941 BAMUM LETTER PHASE-D TEUN 16942 BAMUM LETTER PHASE-D MAENJET 16943 BAMUM LETTER PHASE-D NGGAP 16944 BAMUM LETTER PHASE-D LEUM 16945 BAMUM LETTER PHASE-D NGGUOM 16946 BAMUM LETTER PHASE-D NSHUT 16947 BAMUM LETTER PHASE-D NJUEQ 16948 BAMUM LETTER PHASE-D GHEUAE 16949 BAMUM LETTER PHASE-D KU 1694A BAMUM LETTER PHASE-D REN OLD 1694B BAMUM LETTER PHASE-D TAE 1694C BAMUM LETTER PHASE-D TOQ 1694D BAMUM LETTER PHASE-D NYI 1694E BAMUM LETTER PHASE-D RII 1694F BAMUM LETTER PHASE-D LEEEE 16950 BAMUM LETTER PHASE-D MEEEE * meq in Phase E 16951 BAMUM LETTER PHASE-D M 16952 BAMUM LETTER PHASE-D SUU 16953 BAMUM LETTER PHASE-D MU 16954 BAMUM LETTER PHASE-D SHII 16955 BAMUM LETTER PHASE-D SHEUX 16956 BAMUM LETTER PHASE-D KYEE 16957 BAMUM LETTER PHASE-D NU 16958 BAMUM LETTER PHASE-D SHU 16959 BAMUM LETTER PHASE-D NTEE 1695A BAMUM LETTER PHASE-D PEE 1695B BAMUM LETTER PHASE-D NI 1695C BAMUM LETTER PHASE-D SHOQ 1695D BAMUM LETTER PHASE-D PUQ 1695E BAMUM LETTER PHASE-D MVOP 1695F BAMUM LETTER PHASE-D LOQ 16960 BAMUM LETTER PHASE-D REN MUCH 16961 BAMUM LETTER PHASE-D TI 16962 BAMUM LETTER PHASE-D NTUU 16963 BAMUM LETTER PHASE-D MBAA SEVEN * used after 16985 for samba '7' in Phases A-D 16964 BAMUM LETTER PHASE-D SAQ 16965 BAMUM LETTER PHASE-D FAA * used before 169B8 for faamae '8' in Phases A-D @ Characters found through Phase E 16966 BAMUM LETTER PHASE-E NDAP * i in Phase F 16967 BAMUM LETTER PHASE-E TOON 16968 BAMUM LETTER PHASE-E MBEUM 16969 BAMUM LETTER PHASE-E LAP * men in Phase F 1696A BAMUM LETTER PHASE-E VOM 1696B BAMUM LETTER PHASE-E LOON 1696C BAMUM LETTER PHASE-E PAA 1696D BAMUM LETTER PHASE-E SOM 1696E BAMUM LETTER PHASE-E RAQ * nga in Phase F 1696F BAMUM LETTER PHASE-E NSHUOP * pa in Phase F 16970 BAMUM LETTER PHASE-E NDUN * pue in Phase F 16971 BAMUM LETTER PHASE-E PUAE * fae in Phase F 16972 BAMUM LETTER PHASE-E TAM 16973 BAMUM LETTER PHASE-E NGKA 16974 BAMUM LETTER PHASE-E KPEUX 16975 BAMUM LETTER PHASE-E WUO 16976 BAMUM LETTER PHASE-E SEE 16977 BAMUM LETTER PHASE-E NGGEUAET 16978 BAMUM LETTER PHASE-E PAAM 16979 BAMUM LETTER PHASE-E TOO 1697A BAMUM LETTER PHASE-E KUOP 1697B BAMUM LETTER PHASE-E LOM 1697C BAMUM LETTER PHASE-E NSHIEE 1697D BAMUM LETTER PHASE-E NGOP 1697E BAMUM LETTER PHASE-E MAEM 1697F BAMUM LETTER PHASE-E NGKEUX 16980 BAMUM LETTER PHASE-E NGOQ 16981 BAMUM LETTER PHASE-E NSHUE 16982 BAMUM LETTER PHASE-E RIMGBA 16983 BAMUM LETTER PHASE-E NJEUX 16984 BAMUM LETTER PHASE-E PEEM 16985 BAMUM LETTER PHASE-E SAA * used before 16963 for samba '7' in Phases A-D 16986 BAMUM LETTER PHASE-E NGGURAE 16987 BAMUM LETTER PHASE-E MGBA 16988 BAMUM LETTER PHASE-E GHEUX 16989 BAMUM LETTER PHASE-E NGKEUAEM 1698A BAMUM LETTER PHASE-E NJAEMLI 1698B BAMUM LETTER PHASE-E MAP 1698C BAMUM LETTER PHASE-E LOOT 1698D BAMUM LETTER PHASE-E NGGEEEE 1698E BAMUM LETTER PHASE-E NDIQ 1698F BAMUM LETTER PHASE-E TAEN NTEUM 16990 BAMUM LETTER PHASE-E SET 16991 BAMUM LETTER PHASE-E PUM * o in Phase F 16992 BAMUM LETTER PHASE-E NDAA SOFTNESS 16993 BAMUM LETTER PHASE-E NGGUAESHAE NYAM * fee in Phase F 16994 BAMUM LETTER PHASE-E YIEE 16995 BAMUM LETTER PHASE-E GHEUN 16996 BAMUM LETTER PHASE-E TUAE 16997 BAMUM LETTER PHASE-E YEUAE 16998 BAMUM LETTER PHASE-E PO 16999 BAMUM LETTER PHASE-E TUMAE 1699A BAMUM LETTER PHASE-E KEUAE 1699B BAMUM LETTER PHASE-E SUAEN 1699C BAMUM LETTER PHASE-E TEUAEQ 1699D BAMUM LETTER PHASE-E VEUAE 1699E BAMUM LETTER PHASE-E WEUX 1699F BAMUM LETTER PHASE-E LAAM 169A0 BAMUM LETTER PHASE-E PU * also puq in Phase E 169A1 BAMUM LETTER PHASE-E TAAQ 169A2 BAMUM LETTER PHASE-E GHAAMAE 169A3 BAMUM LETTER PHASE-E NGEUREUT 169A4 BAMUM LETTER PHASE-E SHEUAEQ 169A5 BAMUM LETTER PHASE-E MGBEN 169A6 BAMUM LETTER PHASE-E MBEE 169A7 BAMUM LETTER PHASE-E NZAQ 169A8 BAMUM LETTER PHASE-E NKOM * ten in Phase F 169A9 BAMUM LETTER PHASE-E GBET 169AA BAMUM LETTER PHASE-E TUM 169AB BAMUM LETTER PHASE-E KUET 169AC BAMUM LETTER PHASE-E YAP 169AD BAMUM LETTER PHASE-E NYI CLEAVER 169AE BAMUM LETTER PHASE-E YIT 169AF BAMUM LETTER PHASE-E MFEUQ 169B0 BAMUM LETTER PHASE-E NDIAQ 169B1 BAMUM LETTER PHASE-E PIEEQ 169B2 BAMUM LETTER PHASE-E YUEQ 169B3 BAMUM LETTER PHASE-E LEUAEM 169B4 BAMUM LETTER PHASE-E FUE 169B5 BAMUM LETTER PHASE-E GBEUX 169B6 BAMUM LETTER PHASE-E NGKUP 169B7 BAMUM LETTER PHASE-E KET 169B8 BAMUM LETTER PHASE-E MAE * used after 16965 for faamae '8' in Phases A-D 169B9 BAMUM LETTER PHASE-E NGKAAMI 169BA BAMUM LETTER PHASE-E GHET 169BB BAMUM LETTER PHASE-E FA 169BC BAMUM LETTER PHASE-E NTUM 169BD BAMUM LETTER PHASE-E PEUT 169BE BAMUM LETTER PHASE-E YEUM 169BF BAMUM LETTER PHASE-E NGGEUAE 169C0 BAMUM LETTER PHASE-E NYI BETWEEN 169C1 BAMUM LETTER PHASE-E NZUQ 169C2 BAMUM LETTER PHASE-E POON 169C3 BAMUM LETTER PHASE-E MIEE 169C4 BAMUM LETTER PHASE-E FUET 169C5 BAMUM LETTER PHASE-E NAE 169C6 BAMUM LETTER PHASE-E MUAE 169C7 BAMUM LETTER PHASE-E GHEUAE 169C8 BAMUM LETTER PHASE-E FU I 169C9 BAMUM LETTER PHASE-E MVI 169CA BAMUM LETTER PHASE-E PUAQ 169CB BAMUM LETTER PHASE-E NGKUM 169CC BAMUM LETTER PHASE-E KUT 169CD BAMUM LETTER PHASE-E PIET 169CE BAMUM LETTER PHASE-E NTAP 169CF BAMUM LETTER PHASE-E YEUAET 169D0 BAMUM LETTER PHASE-E NGGUP 169D1 BAMUM LETTER PHASE-E PA PEOPLE 169D2 BAMUM LETTER PHASE-E FU CALL 169D3 BAMUM LETTER PHASE-E FOM 169D4 BAMUM LETTER PHASE-E NJEE 169D5 BAMUM LETTER PHASE-E A 169D6 BAMUM LETTER PHASE-E TOQ 169D7 BAMUM LETTER PHASE-E O 169D8 BAMUM LETTER PHASE-E I 169D9 BAMUM LETTER PHASE-E LAQ 169DA BAMUM LETTER PHASE-E PA PLURAL 169DB BAMUM LETTER PHASE-E TAA 169DC BAMUM LETTER PHASE-E TAQ 169DD BAMUM LETTER PHASE-E NDAA MY HOUSE 169DE BAMUM LETTER PHASE-E SHIQ 169DF BAMUM LETTER PHASE-E YEUX 169E0 BAMUM LETTER PHASE-E NGUAE 169E1 BAMUM LETTER PHASE-E YUAEN * pi in Phase F 169E2 BAMUM LETTER PHASE-E YOQ SWIMMING 169E3 BAMUM LETTER PHASE-E YOQ COVER 169E4 BAMUM LETTER PHASE-E YUQ 169E5 BAMUM LETTER PHASE-E YUN 169E6 BAMUM LETTER PHASE-E KEUX 169E7 BAMUM LETTER PHASE-E PEUX 169E8 BAMUM LETTER PHASE-E NJEE EPOCH 169E9 BAMUM LETTER PHASE-E PUE 169EA BAMUM LETTER PHASE-E WUE 169EB BAMUM LETTER PHASE-E FEE 169EC BAMUM LETTER PHASE-E VEE 169ED BAMUM LETTER PHASE-E LU 169EE BAMUM LETTER PHASE-E MI 169EF BAMUM LETTER PHASE-E REUX 169F0 BAMUM LETTER PHASE-E RAE 169F1 BAMUM LETTER PHASE-E NGUAET 169F2 BAMUM LETTER PHASE-E NGA 169F3 BAMUM LETTER PHASE-E SHO 169F4 BAMUM LETTER PHASE-E SHOQ 169F5 BAMUM LETTER PHASE-E FU REMEDY 169F6 BAMUM LETTER PHASE-E NA 169F7 BAMUM LETTER PHASE-E PI 169F8 BAMUM LETTER PHASE-E LOQ 169F9 BAMUM LETTER PHASE-E KO * used before 16A02 for koghom '10' in Phases A-D * used before 16A38 for kovue '9' in Phases A-D 169FA BAMUM LETTER PHASE-E MEN 169FB BAMUM LETTER PHASE-E MA 169FC BAMUM LETTER PHASE-E MAQ 169FD BAMUM LETTER PHASE-E TEU 169FE BAMUM LETTER PHASE-E KI * koghom in Phase F 169FF BAMUM LETTER PHASE-E MON 16A00 BAMUM LETTER PHASE-E TEN 16A01 BAMUM LETTER PHASE-E FAQ 16A02 BAMUM LETTER PHASE-E GHOM * used after 169F9 for koghom '10' in Phases A-D @ Characters found through Phase F 16A03 BAMUM LETTER PHASE-F KA 16A04 BAMUM LETTER PHASE-F U 16A05 BAMUM LETTER PHASE-F KU 16A06 BAMUM LETTER PHASE-F EE 16A07 BAMUM LETTER PHASE-F REE 16A08 BAMUM LETTER PHASE-F TAE 16A09 BAMUM LETTER PHASE-F NYI 16A0A BAMUM LETTER PHASE-F LA 16A0B BAMUM LETTER PHASE-F RII 16A0C BAMUM LETTER PHASE-F RIEE 16A0D BAMUM LETTER PHASE-F MEEEE 16A0E BAMUM LETTER PHASE-F TAA 16A0F BAMUM LETTER PHASE-F NDAA 16A10 BAMUM LETTER PHASE-F NJAEM 16A11 BAMUM LETTER PHASE-F M 16A12 BAMUM LETTER PHASE-F SUU 16A13 BAMUM LETTER PHASE-F SHII 16A14 BAMUM LETTER PHASE-F SI 16A15 BAMUM LETTER PHASE-F SEUX 16A16 BAMUM LETTER PHASE-F KYEE 16A17 BAMUM LETTER PHASE-F KET 16A18 BAMUM LETTER PHASE-F NUAE 16A19 BAMUM LETTER PHASE-F NU 16A1A BAMUM LETTER PHASE-F NJUAE 16A1B BAMUM LETTER PHASE-F YOQ 16A1C BAMUM LETTER PHASE-F SHU 16A1D BAMUM LETTER PHASE-F YA 16A1E BAMUM LETTER PHASE-F NSHA 16A1F BAMUM LETTER PHASE-F PEUX 16A20 BAMUM LETTER PHASE-F NTEE 16A21 BAMUM LETTER PHASE-F WUE 16A22 BAMUM LETTER PHASE-F PEE 16A23 BAMUM LETTER PHASE-F RU 16A24 BAMUM LETTER PHASE-F NI 16A25 BAMUM LETTER PHASE-F REUX 16A26 BAMUM LETTER PHASE-F KEN 16A27 BAMUM LETTER PHASE-F NGKWAEN 16A28 BAMUM LETTER PHASE-F NGGA 16A29 BAMUM LETTER PHASE-F SHO 16A2A BAMUM LETTER PHASE-F PUAE 16A2B BAMUM LETTER PHASE-F FOM 16A2C BAMUM LETTER PHASE-F WA 16A2D BAMUM LETTER PHASE-F LI 16A2E BAMUM LETTER PHASE-F LOQ 16A2F BAMUM LETTER PHASE-F KO 16A30 BAMUM LETTER PHASE-F MBEN 16A31 BAMUM LETTER PHASE-F REN 16A32 BAMUM LETTER PHASE-F MA 16A33 BAMUM LETTER PHASE-F MO 16A34 BAMUM LETTER PHASE-F MBAA 16A35 BAMUM LETTER PHASE-F TET 16A36 BAMUM LETTER PHASE-F KPA 16A37 BAMUM LETTER PHASE-F SAMBA 16A38 BAMUM LETTER PHASE-F VUEQ * used after 169F9 for kovue '9' in Phases A-D @@ 16A40 Mro 16A6F @ Letters 16A40 MRO LETTER TA 16A41 MRO LETTER NGI 16A42 MRO LETTER YO 16A43 MRO LETTER MIM 16A44 MRO LETTER BA 16A45 MRO LETTER DA 16A46 MRO LETTER A 16A47 MRO LETTER PHI 16A48 MRO LETTER KHAI 16A49 MRO LETTER HAO 16A4A MRO LETTER DAI = i 16A4B MRO LETTER CHU 16A4C MRO LETTER KEAAE 16A4D MRO LETTER OL 16A4E MRO LETTER MAEM 16A4F MRO LETTER NIN 16A50 MRO LETTER PA 16A51 MRO LETTER OO 16A52 MRO LETTER O 16A53 MRO LETTER RO 16A54 MRO LETTER SHI 16A55 MRO LETTER THEA 16A56 MRO LETTER EA 16A57 MRO LETTER WA 16A58 MRO LETTER E 16A59 MRO LETTER KO 16A5A MRO LETTER LAN 16A5B MRO LETTER LA * symbol for 'month' 16A5C MRO LETTER HAI 16A5D MRO LETTER RI = o 16A5E MRO LETTER TEK @ Digits 16A60 MRO DIGIT ZERO 16A61 MRO DIGIT ONE 16A62 MRO DIGIT TWO 16A63 MRO DIGIT THREE 16A64 MRO DIGIT FOUR 16A65 MRO DIGIT FIVE 16A66 MRO DIGIT SIX 16A67 MRO DIGIT SEVEN 16A68 MRO DIGIT EIGHT 16A69 MRO DIGIT NINE @ Punctuation 16A6E MRO DANDA 16A6F MRO DOUBLE DANDA @@ 16AD0 Bassa Vah 16AFF @ Consonant letters 16AD0 BASSA VAH LETTER ENNI 16AD1 BASSA VAH LETTER KA 16AD2 BASSA VAH LETTER SE 16AD3 BASSA VAH LETTER FA 16AD4 BASSA VAH LETTER MBE 16AD5 BASSA VAH LETTER YIE 16AD6 BASSA VAH LETTER GAH 16AD7 BASSA VAH LETTER DHII 16AD8 BASSA VAH LETTER KPAH 16AD9 BASSA VAH LETTER JO 16ADA BASSA VAH LETTER HWAH 16ADB BASSA VAH LETTER WA 16ADC BASSA VAH LETTER ZO 16ADD BASSA VAH LETTER GBU 16ADE BASSA VAH LETTER DO 16ADF BASSA VAH LETTER CE 16AE0 BASSA VAH LETTER UWU 16AE1 BASSA VAH LETTER TO 16AE2 BASSA VAH LETTER BA 16AE3 BASSA VAH LETTER VU 16AE4 BASSA VAH LETTER YEIN 16AE5 BASSA VAH LETTER PA 16AE6 BASSA VAH LETTER WADDA @ Vowel letters 16AE7 BASSA VAH LETTER A 16AE8 BASSA VAH LETTER O 16AE9 BASSA VAH LETTER OO 16AEA BASSA VAH LETTER U 16AEB BASSA VAH LETTER EE 16AEC BASSA VAH LETTER E 16AED BASSA VAH LETTER I @ Combining tone marks 16AF0 BASSA VAH COMBINING HIGH TONE 16AF1 BASSA VAH COMBINING LOW TONE 16AF2 BASSA VAH COMBINING MID TONE 16AF3 BASSA VAH COMBINING LOW-MID TONE 16AF4 BASSA VAH COMBINING HIGH-LOW TONE @ Punctuation 16AF5 BASSA VAH FULL STOP @@ 16B00 Pahawh Hmong 16B8F @+ The character names used for Pahawh Hmong vowel rimes and consonant onsets follow the Third Stage Reduced Version orthography. Annotations give the character names in the Second Stage Reduced Version orthography. @ Vowel rimes 16B00 PAHAWH HMONG VOWEL KEEB = keem 16B01 PAHAWH HMONG VOWEL KEEV = kee 16B02 PAHAWH HMONG VOWEL KIB = kim 16B03 PAHAWH HMONG VOWEL KIV = ki 16B04 PAHAWH HMONG VOWEL KAUB = kaum 16B05 PAHAWH HMONG VOWEL KAUV = kau 16B06 PAHAWH HMONG VOWEL KUB = kum 16B07 PAHAWH HMONG VOWEL KUV = ke 16B08 PAHAWH HMONG VOWEL KEB = kem 16B09 PAHAWH HMONG VOWEL KEV 16B0A PAHAWH HMONG VOWEL KAIB = kaim 16B0B PAHAWH HMONG VOWEL KAIV = kai 16B0C PAHAWH HMONG VOWEL KOOB 16B0D PAHAWH HMONG VOWEL KOOV 16B0E PAHAWH HMONG VOWEL KAWB 16B0F PAHAWH HMONG VOWEL KAWV = kaw 16B10 PAHAWH HMONG VOWEL KUAB = kuam 16B11 PAHAWH HMONG VOWEL KUAV = kua 16B12 PAHAWH HMONG VOWEL KOB = kom 16B13 PAHAWH HMONG VOWEL KOV = kog 16B14 PAHAWH HMONG VOWEL KIAB 16B15 PAHAWH HMONG VOWEL KIAV = kia 16B16 PAHAWH HMONG VOWEL KAB = kam 16B17 PAHAWH HMONG VOWEL KAV 16B18 PAHAWH HMONG VOWEL KWB = kwm 16B19 PAHAWH HMONG VOWEL KWV 16B1A PAHAWH HMONG VOWEL KAAB = kaam 16B1B PAHAWH HMONG VOWEL KAAV @ Consonant onsets 16B1C PAHAWH HMONG CONSONANT VAU 16B1D PAHAWH HMONG CONSONANT NTSAU 16B1E PAHAWH HMONG CONSONANT LAU 16B1F PAHAWH HMONG CONSONANT HAU 16B20 PAHAWH HMONG CONSONANT NLAU 16B21 PAHAWH HMONG CONSONANT RAU 16B22 PAHAWH HMONG CONSONANT NKAU 16B23 PAHAWH HMONG CONSONANT QHAU 16B24 PAHAWH HMONG CONSONANT YAU 16B25 PAHAWH HMONG CONSONANT HLAU 16B26 PAHAWH HMONG CONSONANT MAU 16B27 PAHAWH HMONG CONSONANT CHAU 16B28 PAHAWH HMONG CONSONANT NCHAU 16B29 PAHAWH HMONG CONSONANT HNAU 16B2A PAHAWH HMONG CONSONANT PLHAU 16B2B PAHAWH HMONG CONSONANT NTHAU 16B2C PAHAWH HMONG CONSONANT NAU 16B2D PAHAWH HMONG CONSONANT AU 16B2E PAHAWH HMONG CONSONANT XAU 16B2F PAHAWH HMONG CONSONANT CAU @ Combining diacritical marks 16B30 PAHAWH HMONG MARK CIM TUB 16B31 PAHAWH HMONG MARK CIM SO 16B32 PAHAWH HMONG MARK CIM KES 16B33 PAHAWH HMONG MARK CIM KHAV 16B34 PAHAWH HMONG MARK CIM SUAM 16B35 PAHAWH HMONG MARK CIM HOM 16B36 PAHAWH HMONG MARK CIM TAUM @ Punctuation 16B37 PAHAWH HMONG SIGN VOS THOM * functions as a question mark 16B38 PAHAWH HMONG SIGN VOS TSHAB CEEB * functions as an exclamation mark 16B39 PAHAWH HMONG SIGN CIM CHEEM * functions as a comma 16B3A PAHAWH HMONG SIGN VOS THIAB * functions as an ampersand x (ampersand - 0026) 16B3B PAHAWH HMONG SIGN VOS FEEM * functions as a percent sign x (percent sign - 0025) @ Mathematical operators 16B3C PAHAWH HMONG SIGN XYEEM NTXIV * functions as a plus sign 16B3D PAHAWH HMONG SIGN XYEEM RHO * functions as a minus sign 16B3E PAHAWH HMONG SIGN XYEEM TOV * functions as a multiplication sign 16B3F PAHAWH HMONG SIGN XYEEM FAIB * functions as a division sign @ Modifier letters 16B40 PAHAWH HMONG SIGN VOS SEEV * indicates chanting intonation 16B41 PAHAWH HMONG SIGN MEEJ SUAB * indicates foreign pronunciation 16B42 PAHAWH HMONG SIGN VOS NRUA * reduplication 16B43 PAHAWH HMONG SIGN IB YAM * replication, ditto mark @ Punctuation 16B44 PAHAWH HMONG SIGN XAUS * indicates completion of a section 16B45 PAHAWH HMONG SIGN CIM TSOV ROG * indicates military topics @ Digits 16B50 PAHAWH HMONG DIGIT ZERO * some users prefer a circular glyph for this character 16B51 PAHAWH HMONG DIGIT ONE 16B52 PAHAWH HMONG DIGIT TWO 16B53 PAHAWH HMONG DIGIT THREE 16B54 PAHAWH HMONG DIGIT FOUR 16B55 PAHAWH HMONG DIGIT FIVE 16B56 PAHAWH HMONG DIGIT SIX 16B57 PAHAWH HMONG DIGIT SEVEN 16B58 PAHAWH HMONG DIGIT EIGHT 16B59 PAHAWH HMONG DIGIT NINE @ Numbers 16B5B PAHAWH HMONG NUMBER TENS = caum * some users prefer a vertical bar glyph for this character 16B5C PAHAWH HMONG NUMBER HUNDREDS = pua 16B5D PAHAWH HMONG NUMBER TEN THOUSANDS = vam 16B5E PAHAWH HMONG NUMBER MILLIONS = roob 16B5F PAHAWH HMONG NUMBER HUNDRED MILLIONS = neev 16B60 PAHAWH HMONG NUMBER TEN BILLIONS = ruav 16B61 PAHAWH HMONG NUMBER TRILLIONS = tas @ Logographs 16B63 PAHAWH HMONG SIGN VOS LUB * a classifier 16B64 PAHAWH HMONG SIGN XYOO = year 16B65 PAHAWH HMONG SIGN HLI = month 16B66 PAHAWH HMONG SIGN THIRD-STAGE HLI = month 16B67 PAHAWH HMONG SIGN ZWJ THAJ = date 16B68 PAHAWH HMONG SIGN HNUB = day 16B69 PAHAWH HMONG SIGN NQIG = waning moon 16B6A PAHAWH HMONG SIGN XIAB = waxing moon 16B6B PAHAWH HMONG SIGN NTUJ = season 16B6C PAHAWH HMONG SIGN AV = earth 16B6D PAHAWH HMONG SIGN TXHEEJ CEEV = urgent 16B6E PAHAWH HMONG SIGN MEEJ TSEEB = facts 16B6F PAHAWH HMONG SIGN TAU = received 16B70 PAHAWH HMONG SIGN LOS = come 16B71 PAHAWH HMONG SIGN MUS = go 16B72 PAHAWH HMONG SIGN CIM HAIS LUS NTOG NTOG = smooth 16B73 PAHAWH HMONG SIGN CIM CUAM TSHOOJ = fraction 16B74 PAHAWH HMONG SIGN CIM TXWV = do not open 16B75 PAHAWH HMONG SIGN CIM TXWV CHWV = do not touch 16B76 PAHAWH HMONG SIGN CIM PUB DAWB = give freely 16B77 PAHAWH HMONG SIGN CIM NRES TOS = stop @ Logographs for clan names 16B7D PAHAWH HMONG CLAN SIGN TSHEEJ = Cheng 16B7E PAHAWH HMONG CLAN SIGN YEEG = Yeng 16B7F PAHAWH HMONG CLAN SIGN LIS = Lee 16B80 PAHAWH HMONG CLAN SIGN LAUJ = Lor 16B81 PAHAWH HMONG CLAN SIGN XYOOJ = Xiong 16B82 PAHAWH HMONG CLAN SIGN KOO = Kong 16B83 PAHAWH HMONG CLAN SIGN HAWJ = Her 16B84 PAHAWH HMONG CLAN SIGN MUAS = Moua 16B85 PAHAWH HMONG CLAN SIGN THOJ = Thao 16B86 PAHAWH HMONG CLAN SIGN TSAB = Chang 16B87 PAHAWH HMONG CLAN SIGN PHAB = Pha 16B88 PAHAWH HMONG CLAN SIGN KHAB = Khang 16B89 PAHAWH HMONG CLAN SIGN HAM = Hang 16B8A PAHAWH HMONG CLAN SIGN VAJ = Vang 16B8B PAHAWH HMONG CLAN SIGN FAJ = Fang 16B8C PAHAWH HMONG CLAN SIGN YAJ = Yang 16B8D PAHAWH HMONG CLAN SIGN TSWB = Chue 16B8E PAHAWH HMONG CLAN SIGN KWM = Kw 16B8F PAHAWH HMONG CLAN SIGN VWJ = Vue @@ 16F00 Miao 16F9F @ Consonant onsets 16F00 MIAO LETTER PA * used for ba in Dry Yi 16F01 MIAO LETTER BA 16F02 MIAO LETTER YI PA * used for pa in Dry Yi 16F03 MIAO LETTER PLA * used in Sichuan Hmong 16F04 MIAO LETTER MA 16F05 MIAO LETTER MHA 16F06 MIAO LETTER ARCHAIC MA * used in Pollard's early orthography 16F07 MIAO LETTER FA 16F08 MIAO LETTER VA 16F09 MIAO LETTER VFA * used in Black Yi 16F0A MIAO LETTER TA * used for da in Dry Yi 16F0B MIAO LETTER DA 16F0C MIAO LETTER YI TTA * used in Hei Yi 16F0D MIAO LETTER YI TA * used for ta in Dry Yi 16F0E MIAO LETTER TTA 16F0F MIAO LETTER DDA 16F10 MIAO LETTER NA 16F11 MIAO LETTER NHA 16F12 MIAO LETTER YI NNA * used in Hei Yi 16F13 MIAO LETTER ARCHAIC NA * used in Pollard's early orthography 16F14 MIAO LETTER NNA 16F15 MIAO LETTER NNHA 16F16 MIAO LETTER LA 16F17 MIAO LETTER LYA * used in Black Yi 16F18 MIAO LETTER LHA 16F19 MIAO LETTER LHYA * used in Black Yi 16F1A MIAO LETTER TLHA 16F1B MIAO LETTER DLHA 16F1C MIAO LETTER TLHYA 16F1D MIAO LETTER DLHYA 16F1E MIAO LETTER KA * used for ga in Dry Yi 16F1F MIAO LETTER GA 16F20 MIAO LETTER YI KA * used for ka in Dry Yi 16F21 MIAO LETTER QA 16F22 MIAO LETTER QGA 16F23 MIAO LETTER NGA 16F24 MIAO LETTER NGHA 16F25 MIAO LETTER ARCHAIC NGA * used in Pollard's early orthography 16F26 MIAO LETTER HA 16F27 MIAO LETTER XA @+ * archaic character used in a post-1949 reformed orthography 16F28 MIAO LETTER GHA 16F29 MIAO LETTER GHHA 16F2A MIAO LETTER TSSA 16F2B MIAO LETTER DZZA 16F2C MIAO LETTER NYA 16F2D MIAO LETTER NYHA 16F2E MIAO LETTER TSHA * used for dzha in Dry Yi 16F2F MIAO LETTER DZHA 16F30 MIAO LETTER YI TSHA * used for tsha in Dry Yi 16F31 MIAO LETTER YI DZHA * used in Hei Yi 16F32 MIAO LETTER REFORMED TSHA @+ * archaic character used in a post-1949 reformed orthography 16F33 MIAO LETTER SHA 16F34 MIAO LETTER SSA 16F35 MIAO LETTER ZHA * used in Black Yi 16F36 MIAO LETTER ZSHA * used in Black Yi 16F37 MIAO LETTER TSA * used for dza in Dry Yi 16F38 MIAO LETTER DZA 16F39 MIAO LETTER YI TSA * used for tsa in Dry Yi 16F3A MIAO LETTER SA 16F3B MIAO LETTER ZA 16F3C MIAO LETTER ZSA * used in Black Yi 16F3D MIAO LETTER ZZA 16F3E MIAO LETTER ZZSA * used in Black Yi 16F3F MIAO LETTER ARCHAIC ZZA * used in Pollard's early orthography 16F40 MIAO LETTER ZZYA * used in Black Yi 16F41 MIAO LETTER ZZSYA * used in Black Yi 16F42 MIAO LETTER WA 16F43 MIAO LETTER AH * glottal stop 16F44 MIAO LETTER HHA * used in Black Yi @ Modifiers 16F50 MIAO LETTER NASALIZATION 16F51 MIAO SIGN ASPIRATION 16F52 MIAO SIGN REFORMED VOICING @+ * archaic character used in a post-1949 reformed orthography 16F53 MIAO SIGN REFORMED ASPIRATION @+ * archaic character used in a post-1949 reformed orthography @ Vowels and finals 16F54 MIAO VOWEL SIGN A 16F55 MIAO VOWEL SIGN AA * used in Eastern Lisu 16F56 MIAO VOWEL SIGN AHH * used in Gan Yi 16F57 MIAO VOWEL SIGN AN 16F58 MIAO VOWEL SIGN ANG * also used for aw 16F59 MIAO VOWEL SIGN O 16F5A MIAO VOWEL SIGN OO 16F5B MIAO VOWEL SIGN WO * used in Hei Yi 16F5C MIAO VOWEL SIGN W 16F5D MIAO VOWEL SIGN E 16F5E MIAO VOWEL SIGN EN 16F5F MIAO VOWEL SIGN ENG 16F60 MIAO VOWEL SIGN OEY 16F61 MIAO VOWEL SIGN I 16F62 MIAO VOWEL SIGN IA 16F63 MIAO VOWEL SIGN IAN 16F64 MIAO VOWEL SIGN IANG * also used for iaw 16F65 MIAO VOWEL SIGN IO 16F66 MIAO VOWEL SIGN IE 16F67 MIAO VOWEL SIGN II * used in Eastern Lisu 16F68 MIAO VOWEL SIGN IU 16F69 MIAO VOWEL SIGN ING * also used for in 16F6A MIAO VOWEL SIGN U 16F6B MIAO VOWEL SIGN UA 16F6C MIAO VOWEL SIGN UAN 16F6D MIAO VOWEL SIGN UANG * also used for uaw 16F6E MIAO VOWEL SIGN UU * used in Eastern Lisu 16F6F MIAO VOWEL SIGN UEI 16F70 MIAO VOWEL SIGN UNG 16F71 MIAO VOWEL SIGN Y 16F72 MIAO VOWEL SIGN YI 16F73 MIAO VOWEL SIGN AE 16F74 MIAO VOWEL SIGN AEE * used in Eastern Lisu 16F75 MIAO VOWEL SIGN ERR 16F76 MIAO VOWEL SIGN ROUNDED ERR * used in Eastern Lisu 16F77 MIAO VOWEL SIGN ER 16F78 MIAO VOWEL SIGN ROUNDED ER * used in Eastern Lisu 16F79 MIAO VOWEL SIGN AI 16F7A MIAO VOWEL SIGN EI 16F7B MIAO VOWEL SIGN AU 16F7C MIAO VOWEL SIGN OU 16F7D MIAO VOWEL SIGN N 16F7E MIAO VOWEL SIGN NG @ Positioning tone marks @+ These are used to position the vowel off of the baseline position to indicate a changed tone. 16F8F MIAO TONE RIGHT 16F90 MIAO TONE TOP RIGHT 16F91 MIAO TONE ABOVE 16F92 MIAO TONE BELOW @ Baseline tone marks @+ These are used in Chuxiong Ahmao instead of the positioning tone marks. 16F93 MIAO LETTER TONE-2 16F94 MIAO LETTER TONE-3 16F95 MIAO LETTER TONE-4 16F96 MIAO LETTER TONE-5 16F97 MIAO LETTER TONE-6 16F98 MIAO LETTER TONE-7 16F99 MIAO LETTER TONE-8 @ Archaic baseline tone marks @+ These are archaic characters used in a post-1949 reformed orthography. 16F9A MIAO LETTER REFORMED TONE-1 16F9B MIAO LETTER REFORMED TONE-2 16F9C MIAO LETTER REFORMED TONE-4 16F9D MIAO LETTER REFORMED TONE-5 16F9E MIAO LETTER REFORMED TONE-6 16F9F MIAO LETTER REFORMED TONE-8 @@ 16FE0 Ideographic Symbols and Punctuation 16FFF @ Tangut mark 16FE0 TANGUT ITERATION MARK x (ideographic iteration mark - 3005) @@ 17000 Tangut 187EC @@ 18800 Tangut Components 18AFF @+ This is a superset of components used in various Tangut sources. Indexes of components (001..755) used for Tangut ideographs are shown in the Tangut block. @ One-stroke components 18800 TANGUT COMPONENT-001 18801 TANGUT COMPONENT-002 18802 TANGUT COMPONENT-003 18803 TANGUT COMPONENT-004 18804 TANGUT COMPONENT-005 18805 TANGUT COMPONENT-006 18806 TANGUT COMPONENT-007 18807 TANGUT COMPONENT-008 18808 TANGUT COMPONENT-009 18809 TANGUT COMPONENT-010 @ Two-stroke components 1880A TANGUT COMPONENT-011 1880B TANGUT COMPONENT-012 1880C TANGUT COMPONENT-013 1880D TANGUT COMPONENT-014 1880E TANGUT COMPONENT-015 1880F TANGUT COMPONENT-016 18810 TANGUT COMPONENT-017 18811 TANGUT COMPONENT-018 18812 TANGUT COMPONENT-019 18813 TANGUT COMPONENT-020 18814 TANGUT COMPONENT-021 18815 TANGUT COMPONENT-022 18816 TANGUT COMPONENT-023 18817 TANGUT COMPONENT-024 18818 TANGUT COMPONENT-025 18819 TANGUT COMPONENT-026 1881A TANGUT COMPONENT-027 1881B TANGUT COMPONENT-028 1881C TANGUT COMPONENT-029 1881D TANGUT COMPONENT-030 1881E TANGUT COMPONENT-031 1881F TANGUT COMPONENT-032 18820 TANGUT COMPONENT-033 18821 TANGUT COMPONENT-034 18822 TANGUT COMPONENT-035 18823 TANGUT COMPONENT-036 18824 TANGUT COMPONENT-037 18825 TANGUT COMPONENT-038 @ Three-stroke components 18826 TANGUT COMPONENT-039 18827 TANGUT COMPONENT-040 18828 TANGUT COMPONENT-041 18829 TANGUT COMPONENT-042 1882A TANGUT COMPONENT-043 1882B TANGUT COMPONENT-044 1882C TANGUT COMPONENT-045 1882D TANGUT COMPONENT-046 1882E TANGUT COMPONENT-047 1882F TANGUT COMPONENT-048 18830 TANGUT COMPONENT-049 18831 TANGUT COMPONENT-050 18832 TANGUT COMPONENT-051 18833 TANGUT COMPONENT-052 18834 TANGUT COMPONENT-053 18835 TANGUT COMPONENT-054 18836 TANGUT COMPONENT-055 18837 TANGUT COMPONENT-056 18838 TANGUT COMPONENT-057 18839 TANGUT COMPONENT-058 1883A TANGUT COMPONENT-059 1883B TANGUT COMPONENT-060 1883C TANGUT COMPONENT-061 1883D TANGUT COMPONENT-062 1883E TANGUT COMPONENT-063 1883F TANGUT COMPONENT-064 18840 TANGUT COMPONENT-065 18841 TANGUT COMPONENT-066 18842 TANGUT COMPONENT-067 18843 TANGUT COMPONENT-068 18844 TANGUT COMPONENT-069 18845 TANGUT COMPONENT-070 18846 TANGUT COMPONENT-071 18847 TANGUT COMPONENT-072 18848 TANGUT COMPONENT-073 18849 TANGUT COMPONENT-074 1884A TANGUT COMPONENT-075 1884B TANGUT COMPONENT-076 1884C TANGUT COMPONENT-077 1884D TANGUT COMPONENT-078 1884E TANGUT COMPONENT-079 1884F TANGUT COMPONENT-080 18850 TANGUT COMPONENT-081 18851 TANGUT COMPONENT-082 18852 TANGUT COMPONENT-083 18853 TANGUT COMPONENT-084 18854 TANGUT COMPONENT-085 18855 TANGUT COMPONENT-086 18856 TANGUT COMPONENT-087 18857 TANGUT COMPONENT-088 18858 TANGUT COMPONENT-089 18859 TANGUT COMPONENT-090 1885A TANGUT COMPONENT-091 1885B TANGUT COMPONENT-092 1885C TANGUT COMPONENT-093 1885D TANGUT COMPONENT-094 1885E TANGUT COMPONENT-095 1885F TANGUT COMPONENT-096 @ Four-stroke components 18860 TANGUT COMPONENT-097 18861 TANGUT COMPONENT-098 18862 TANGUT COMPONENT-099 18863 TANGUT COMPONENT-100 18864 TANGUT COMPONENT-101 18865 TANGUT COMPONENT-102 18866 TANGUT COMPONENT-103 18867 TANGUT COMPONENT-104 18868 TANGUT COMPONENT-105 18869 TANGUT COMPONENT-106 1886A TANGUT COMPONENT-107 1886B TANGUT COMPONENT-108 1886C TANGUT COMPONENT-109 1886D TANGUT COMPONENT-110 1886E TANGUT COMPONENT-111 1886F TANGUT COMPONENT-112 18870 TANGUT COMPONENT-113 18871 TANGUT COMPONENT-114 18872 TANGUT COMPONENT-115 18873 TANGUT COMPONENT-116 18874 TANGUT COMPONENT-117 18875 TANGUT COMPONENT-118 18876 TANGUT COMPONENT-119 18877 TANGUT COMPONENT-120 18878 TANGUT COMPONENT-121 18879 TANGUT COMPONENT-122 1887A TANGUT COMPONENT-123 1887B TANGUT COMPONENT-124 1887C TANGUT COMPONENT-125 1887D TANGUT COMPONENT-126 1887E TANGUT COMPONENT-127 1887F TANGUT COMPONENT-128 18880 TANGUT COMPONENT-129 18881 TANGUT COMPONENT-130 18882 TANGUT COMPONENT-131 18883 TANGUT COMPONENT-132 18884 TANGUT COMPONENT-133 18885 TANGUT COMPONENT-134 18886 TANGUT COMPONENT-135 18887 TANGUT COMPONENT-136 18888 TANGUT COMPONENT-137 18889 TANGUT COMPONENT-138 1888A TANGUT COMPONENT-139 1888B TANGUT COMPONENT-140 1888C TANGUT COMPONENT-141 1888D TANGUT COMPONENT-142 1888E TANGUT COMPONENT-143 1888F TANGUT COMPONENT-144 18890 TANGUT COMPONENT-145 18891 TANGUT COMPONENT-146 18892 TANGUT COMPONENT-147 18893 TANGUT COMPONENT-148 18894 TANGUT COMPONENT-149 18895 TANGUT COMPONENT-150 18896 TANGUT COMPONENT-151 18897 TANGUT COMPONENT-152 18898 TANGUT COMPONENT-153 18899 TANGUT COMPONENT-154 1889A TANGUT COMPONENT-155 1889B TANGUT COMPONENT-156 1889C TANGUT COMPONENT-157 1889D TANGUT COMPONENT-158 1889E TANGUT COMPONENT-159 1889F TANGUT COMPONENT-160 188A0 TANGUT COMPONENT-161 188A1 TANGUT COMPONENT-162 188A2 TANGUT COMPONENT-163 188A3 TANGUT COMPONENT-164 188A4 TANGUT COMPONENT-165 188A5 TANGUT COMPONENT-166 188A6 TANGUT COMPONENT-167 188A7 TANGUT COMPONENT-168 188A8 TANGUT COMPONENT-169 188A9 TANGUT COMPONENT-170 188AA TANGUT COMPONENT-171 188AB TANGUT COMPONENT-172 188AC TANGUT COMPONENT-173 188AD TANGUT COMPONENT-174 188AE TANGUT COMPONENT-175 188AF TANGUT COMPONENT-176 188B0 TANGUT COMPONENT-177 188B1 TANGUT COMPONENT-178 188B2 TANGUT COMPONENT-179 188B3 TANGUT COMPONENT-180 188B4 TANGUT COMPONENT-181 188B5 TANGUT COMPONENT-182 188B6 TANGUT COMPONENT-183 188B7 TANGUT COMPONENT-184 188B8 TANGUT COMPONENT-185 188B9 TANGUT COMPONENT-186 188BA TANGUT COMPONENT-187 188BB TANGUT COMPONENT-188 188BC TANGUT COMPONENT-189 188BD TANGUT COMPONENT-190 188BE TANGUT COMPONENT-191 188BF TANGUT COMPONENT-192 188C0 TANGUT COMPONENT-193 188C1 TANGUT COMPONENT-194 188C2 TANGUT COMPONENT-195 188C3 TANGUT COMPONENT-196 188C4 TANGUT COMPONENT-197 188C5 TANGUT COMPONENT-198 188C6 TANGUT COMPONENT-199 188C7 TANGUT COMPONENT-200 188C8 TANGUT COMPONENT-201 188C9 TANGUT COMPONENT-202 188CA TANGUT COMPONENT-203 188CB TANGUT COMPONENT-204 @ Five-stroke components 188CC TANGUT COMPONENT-205 188CD TANGUT COMPONENT-206 188CE TANGUT COMPONENT-207 188CF TANGUT COMPONENT-208 188D0 TANGUT COMPONENT-209 188D1 TANGUT COMPONENT-210 188D2 TANGUT COMPONENT-211 188D3 TANGUT COMPONENT-212 188D4 TANGUT COMPONENT-213 188D5 TANGUT COMPONENT-214 188D6 TANGUT COMPONENT-215 188D7 TANGUT COMPONENT-216 188D8 TANGUT COMPONENT-217 188D9 TANGUT COMPONENT-218 188DA TANGUT COMPONENT-219 188DB TANGUT COMPONENT-220 188DC TANGUT COMPONENT-221 188DD TANGUT COMPONENT-222 188DE TANGUT COMPONENT-223 188DF TANGUT COMPONENT-224 188E0 TANGUT COMPONENT-225 188E1 TANGUT COMPONENT-226 188E2 TANGUT COMPONENT-227 188E3 TANGUT COMPONENT-228 188E4 TANGUT COMPONENT-229 188E5 TANGUT COMPONENT-230 188E6 TANGUT COMPONENT-231 188E7 TANGUT COMPONENT-232 188E8 TANGUT COMPONENT-233 188E9 TANGUT COMPONENT-234 188EA TANGUT COMPONENT-235 188EB TANGUT COMPONENT-236 188EC TANGUT COMPONENT-237 188ED TANGUT COMPONENT-238 188EE TANGUT COMPONENT-239 188EF TANGUT COMPONENT-240 188F0 TANGUT COMPONENT-241 188F1 TANGUT COMPONENT-242 188F2 TANGUT COMPONENT-243 188F3 TANGUT COMPONENT-244 188F4 TANGUT COMPONENT-245 188F5 TANGUT COMPONENT-246 188F6 TANGUT COMPONENT-247 188F7 TANGUT COMPONENT-248 188F8 TANGUT COMPONENT-249 188F9 TANGUT COMPONENT-250 188FA TANGUT COMPONENT-251 188FB TANGUT COMPONENT-252 188FC TANGUT COMPONENT-253 188FD TANGUT COMPONENT-254 188FE TANGUT COMPONENT-255 188FF TANGUT COMPONENT-256 18900 TANGUT COMPONENT-257 18901 TANGUT COMPONENT-258 18902 TANGUT COMPONENT-259 18903 TANGUT COMPONENT-260 18904 TANGUT COMPONENT-261 18905 TANGUT COMPONENT-262 18906 TANGUT COMPONENT-263 18907 TANGUT COMPONENT-264 18908 TANGUT COMPONENT-265 18909 TANGUT COMPONENT-266 1890A TANGUT COMPONENT-267 1890B TANGUT COMPONENT-268 1890C TANGUT COMPONENT-269 1890D TANGUT COMPONENT-270 1890E TANGUT COMPONENT-271 1890F TANGUT COMPONENT-272 18910 TANGUT COMPONENT-273 18911 TANGUT COMPONENT-274 18912 TANGUT COMPONENT-275 18913 TANGUT COMPONENT-276 18914 TANGUT COMPONENT-277 18915 TANGUT COMPONENT-278 18916 TANGUT COMPONENT-279 18917 TANGUT COMPONENT-280 18918 TANGUT COMPONENT-281 18919 TANGUT COMPONENT-282 1891A TANGUT COMPONENT-283 1891B TANGUT COMPONENT-284 1891C TANGUT COMPONENT-285 1891D TANGUT COMPONENT-286 1891E TANGUT COMPONENT-287 1891F TANGUT COMPONENT-288 18920 TANGUT COMPONENT-289 18921 TANGUT COMPONENT-290 18922 TANGUT COMPONENT-291 18923 TANGUT COMPONENT-292 18924 TANGUT COMPONENT-293 18925 TANGUT COMPONENT-294 18926 TANGUT COMPONENT-295 18927 TANGUT COMPONENT-296 18928 TANGUT COMPONENT-297 18929 TANGUT COMPONENT-298 1892A TANGUT COMPONENT-299 1892B TANGUT COMPONENT-300 1892C TANGUT COMPONENT-301 1892D TANGUT COMPONENT-302 1892E TANGUT COMPONENT-303 1892F TANGUT COMPONENT-304 18930 TANGUT COMPONENT-305 18931 TANGUT COMPONENT-306 18932 TANGUT COMPONENT-307 18933 TANGUT COMPONENT-308 18934 TANGUT COMPONENT-309 18935 TANGUT COMPONENT-310 18936 TANGUT COMPONENT-311 18937 TANGUT COMPONENT-312 18938 TANGUT COMPONENT-313 18939 TANGUT COMPONENT-314 1893A TANGUT COMPONENT-315 1893B TANGUT COMPONENT-316 1893C TANGUT COMPONENT-317 1893D TANGUT COMPONENT-318 1893E TANGUT COMPONENT-319 1893F TANGUT COMPONENT-320 18940 TANGUT COMPONENT-321 18941 TANGUT COMPONENT-322 18942 TANGUT COMPONENT-323 18943 TANGUT COMPONENT-324 18944 TANGUT COMPONENT-325 18945 TANGUT COMPONENT-326 18946 TANGUT COMPONENT-327 18947 TANGUT COMPONENT-328 18948 TANGUT COMPONENT-329 18949 TANGUT COMPONENT-330 1894A TANGUT COMPONENT-331 1894B TANGUT COMPONENT-332 1894C TANGUT COMPONENT-333 1894D TANGUT COMPONENT-334 1894E TANGUT COMPONENT-335 1894F TANGUT COMPONENT-336 18950 TANGUT COMPONENT-337 18951 TANGUT COMPONENT-338 18952 TANGUT COMPONENT-339 18953 TANGUT COMPONENT-340 18954 TANGUT COMPONENT-341 18955 TANGUT COMPONENT-342 18956 TANGUT COMPONENT-343 18957 TANGUT COMPONENT-344 18958 TANGUT COMPONENT-345 @ Six-stroke components 18959 TANGUT COMPONENT-346 1895A TANGUT COMPONENT-347 1895B TANGUT COMPONENT-348 1895C TANGUT COMPONENT-349 1895D TANGUT COMPONENT-350 1895E TANGUT COMPONENT-351 1895F TANGUT COMPONENT-352 18960 TANGUT COMPONENT-353 18961 TANGUT COMPONENT-354 18962 TANGUT COMPONENT-355 18963 TANGUT COMPONENT-356 18964 TANGUT COMPONENT-357 18965 TANGUT COMPONENT-358 18966 TANGUT COMPONENT-359 18967 TANGUT COMPONENT-360 18968 TANGUT COMPONENT-361 18969 TANGUT COMPONENT-362 1896A TANGUT COMPONENT-363 1896B TANGUT COMPONENT-364 1896C TANGUT COMPONENT-365 1896D TANGUT COMPONENT-366 1896E TANGUT COMPONENT-367 1896F TANGUT COMPONENT-368 18970 TANGUT COMPONENT-369 18971 TANGUT COMPONENT-370 18972 TANGUT COMPONENT-371 18973 TANGUT COMPONENT-372 18974 TANGUT COMPONENT-373 18975 TANGUT COMPONENT-374 18976 TANGUT COMPONENT-375 18977 TANGUT COMPONENT-376 18978 TANGUT COMPONENT-377 18979 TANGUT COMPONENT-378 1897A TANGUT COMPONENT-379 1897B TANGUT COMPONENT-380 1897C TANGUT COMPONENT-381 1897D TANGUT COMPONENT-382 1897E TANGUT COMPONENT-383 1897F TANGUT COMPONENT-384 18980 TANGUT COMPONENT-385 18981 TANGUT COMPONENT-386 18982 TANGUT COMPONENT-387 18983 TANGUT COMPONENT-388 18984 TANGUT COMPONENT-389 18985 TANGUT COMPONENT-390 18986 TANGUT COMPONENT-391 18987 TANGUT COMPONENT-392 18988 TANGUT COMPONENT-393 18989 TANGUT COMPONENT-394 1898A TANGUT COMPONENT-395 1898B TANGUT COMPONENT-396 1898C TANGUT COMPONENT-397 1898D TANGUT COMPONENT-398 1898E TANGUT COMPONENT-399 1898F TANGUT COMPONENT-400 18990 TANGUT COMPONENT-401 18991 TANGUT COMPONENT-402 18992 TANGUT COMPONENT-403 18993 TANGUT COMPONENT-404 18994 TANGUT COMPONENT-405 18995 TANGUT COMPONENT-406 18996 TANGUT COMPONENT-407 18997 TANGUT COMPONENT-408 18998 TANGUT COMPONENT-409 18999 TANGUT COMPONENT-410 1899A TANGUT COMPONENT-411 1899B TANGUT COMPONENT-412 1899C TANGUT COMPONENT-413 1899D TANGUT COMPONENT-414 1899E TANGUT COMPONENT-415 1899F TANGUT COMPONENT-416 189A0 TANGUT COMPONENT-417 189A1 TANGUT COMPONENT-418 189A2 TANGUT COMPONENT-419 189A3 TANGUT COMPONENT-420 189A4 TANGUT COMPONENT-421 189A5 TANGUT COMPONENT-422 189A6 TANGUT COMPONENT-423 189A7 TANGUT COMPONENT-424 189A8 TANGUT COMPONENT-425 189A9 TANGUT COMPONENT-426 189AA TANGUT COMPONENT-427 189AB TANGUT COMPONENT-428 189AC TANGUT COMPONENT-429 189AD TANGUT COMPONENT-430 189AE TANGUT COMPONENT-431 189AF TANGUT COMPONENT-432 189B0 TANGUT COMPONENT-433 189B1 TANGUT COMPONENT-434 189B2 TANGUT COMPONENT-435 189B3 TANGUT COMPONENT-436 189B4 TANGUT COMPONENT-437 189B5 TANGUT COMPONENT-438 189B6 TANGUT COMPONENT-439 189B7 TANGUT COMPONENT-440 189B8 TANGUT COMPONENT-441 189B9 TANGUT COMPONENT-442 189BA TANGUT COMPONENT-443 189BB TANGUT COMPONENT-444 189BC TANGUT COMPONENT-445 189BD TANGUT COMPONENT-446 189BE TANGUT COMPONENT-447 189BF TANGUT COMPONENT-448 189C0 TANGUT COMPONENT-449 189C1 TANGUT COMPONENT-450 189C2 TANGUT COMPONENT-451 189C3 TANGUT COMPONENT-452 189C4 TANGUT COMPONENT-453 189C5 TANGUT COMPONENT-454 189C6 TANGUT COMPONENT-455 189C7 TANGUT COMPONENT-456 189C8 TANGUT COMPONENT-457 189C9 TANGUT COMPONENT-458 189CA TANGUT COMPONENT-459 189CB TANGUT COMPONENT-460 189CC TANGUT COMPONENT-461 189CD TANGUT COMPONENT-462 189CE TANGUT COMPONENT-463 189CF TANGUT COMPONENT-464 189D0 TANGUT COMPONENT-465 189D1 TANGUT COMPONENT-466 189D2 TANGUT COMPONENT-467 189D3 TANGUT COMPONENT-468 189D4 TANGUT COMPONENT-469 189D5 TANGUT COMPONENT-470 189D6 TANGUT COMPONENT-471 189D7 TANGUT COMPONENT-472 189D8 TANGUT COMPONENT-473 189D9 TANGUT COMPONENT-474 189DA TANGUT COMPONENT-475 @ Seven-stroke components 189DB TANGUT COMPONENT-476 189DC TANGUT COMPONENT-477 189DD TANGUT COMPONENT-478 189DE TANGUT COMPONENT-479 189DF TANGUT COMPONENT-480 189E0 TANGUT COMPONENT-481 189E1 TANGUT COMPONENT-482 189E2 TANGUT COMPONENT-483 189E3 TANGUT COMPONENT-484 189E4 TANGUT COMPONENT-485 189E5 TANGUT COMPONENT-486 189E6 TANGUT COMPONENT-487 189E7 TANGUT COMPONENT-488 189E8 TANGUT COMPONENT-489 189E9 TANGUT COMPONENT-490 189EA TANGUT COMPONENT-491 189EB TANGUT COMPONENT-492 189EC TANGUT COMPONENT-493 189ED TANGUT COMPONENT-494 189EE TANGUT COMPONENT-495 189EF TANGUT COMPONENT-496 189F0 TANGUT COMPONENT-497 189F1 TANGUT COMPONENT-498 189F2 TANGUT COMPONENT-499 189F3 TANGUT COMPONENT-500 189F4 TANGUT COMPONENT-501 189F5 TANGUT COMPONENT-502 189F6 TANGUT COMPONENT-503 189F7 TANGUT COMPONENT-504 189F8 TANGUT COMPONENT-505 189F9 TANGUT COMPONENT-506 189FA TANGUT COMPONENT-507 189FB TANGUT COMPONENT-508 189FC TANGUT COMPONENT-509 189FD TANGUT COMPONENT-510 189FE TANGUT COMPONENT-511 189FF TANGUT COMPONENT-512 18A00 TANGUT COMPONENT-513 18A01 TANGUT COMPONENT-514 18A02 TANGUT COMPONENT-515 18A03 TANGUT COMPONENT-516 18A04 TANGUT COMPONENT-517 18A05 TANGUT COMPONENT-518 18A06 TANGUT COMPONENT-519 18A07 TANGUT COMPONENT-520 18A08 TANGUT COMPONENT-521 18A09 TANGUT COMPONENT-522 18A0A TANGUT COMPONENT-523 18A0B TANGUT COMPONENT-524 18A0C TANGUT COMPONENT-525 18A0D TANGUT COMPONENT-526 18A0E TANGUT COMPONENT-527 18A0F TANGUT COMPONENT-528 18A10 TANGUT COMPONENT-529 18A11 TANGUT COMPONENT-530 18A12 TANGUT COMPONENT-531 18A13 TANGUT COMPONENT-532 18A14 TANGUT COMPONENT-533 18A15 TANGUT COMPONENT-534 18A16 TANGUT COMPONENT-535 18A17 TANGUT COMPONENT-536 18A18 TANGUT COMPONENT-537 18A19 TANGUT COMPONENT-538 18A1A TANGUT COMPONENT-539 18A1B TANGUT COMPONENT-540 18A1C TANGUT COMPONENT-541 18A1D TANGUT COMPONENT-542 18A1E TANGUT COMPONENT-543 18A1F TANGUT COMPONENT-544 18A20 TANGUT COMPONENT-545 18A21 TANGUT COMPONENT-546 18A22 TANGUT COMPONENT-547 18A23 TANGUT COMPONENT-548 18A24 TANGUT COMPONENT-549 18A25 TANGUT COMPONENT-550 18A26 TANGUT COMPONENT-551 18A27 TANGUT COMPONENT-552 18A28 TANGUT COMPONENT-553 18A29 TANGUT COMPONENT-554 18A2A TANGUT COMPONENT-555 18A2B TANGUT COMPONENT-556 18A2C TANGUT COMPONENT-557 18A2D TANGUT COMPONENT-558 18A2E TANGUT COMPONENT-559 18A2F TANGUT COMPONENT-560 18A30 TANGUT COMPONENT-561 18A31 TANGUT COMPONENT-562 18A32 TANGUT COMPONENT-563 18A33 TANGUT COMPONENT-564 18A34 TANGUT COMPONENT-565 18A35 TANGUT COMPONENT-566 18A36 TANGUT COMPONENT-567 18A37 TANGUT COMPONENT-568 18A38 TANGUT COMPONENT-569 18A39 TANGUT COMPONENT-570 18A3A TANGUT COMPONENT-571 18A3B TANGUT COMPONENT-572 18A3C TANGUT COMPONENT-573 18A3D TANGUT COMPONENT-574 18A3E TANGUT COMPONENT-575 18A3F TANGUT COMPONENT-576 18A40 TANGUT COMPONENT-577 @ Eight-stroke components 18A41 TANGUT COMPONENT-578 18A42 TANGUT COMPONENT-579 18A43 TANGUT COMPONENT-580 18A44 TANGUT COMPONENT-581 18A45 TANGUT COMPONENT-582 18A46 TANGUT COMPONENT-583 18A47 TANGUT COMPONENT-584 18A48 TANGUT COMPONENT-585 18A49 TANGUT COMPONENT-586 18A4A TANGUT COMPONENT-587 18A4B TANGUT COMPONENT-588 18A4C TANGUT COMPONENT-589 18A4D TANGUT COMPONENT-590 18A4E TANGUT COMPONENT-591 18A4F TANGUT COMPONENT-592 18A50 TANGUT COMPONENT-593 18A51 TANGUT COMPONENT-594 18A52 TANGUT COMPONENT-595 18A53 TANGUT COMPONENT-596 18A54 TANGUT COMPONENT-597 18A55 TANGUT COMPONENT-598 18A56 TANGUT COMPONENT-599 18A57 TANGUT COMPONENT-600 18A58 TANGUT COMPONENT-601 18A59 TANGUT COMPONENT-602 18A5A TANGUT COMPONENT-603 18A5B TANGUT COMPONENT-604 18A5C TANGUT COMPONENT-605 18A5D TANGUT COMPONENT-606 18A5E TANGUT COMPONENT-607 18A5F TANGUT COMPONENT-608 18A60 TANGUT COMPONENT-609 18A61 TANGUT COMPONENT-610 18A62 TANGUT COMPONENT-611 18A63 TANGUT COMPONENT-612 18A64 TANGUT COMPONENT-613 18A65 TANGUT COMPONENT-614 18A66 TANGUT COMPONENT-615 18A67 TANGUT COMPONENT-616 18A68 TANGUT COMPONENT-617 18A69 TANGUT COMPONENT-618 18A6A TANGUT COMPONENT-619 18A6B TANGUT COMPONENT-620 18A6C TANGUT COMPONENT-621 18A6D TANGUT COMPONENT-622 18A6E TANGUT COMPONENT-623 18A6F TANGUT COMPONENT-624 18A70 TANGUT COMPONENT-625 18A71 TANGUT COMPONENT-626 18A72 TANGUT COMPONENT-627 18A73 TANGUT COMPONENT-628 18A74 TANGUT COMPONENT-629 18A75 TANGUT COMPONENT-630 18A76 TANGUT COMPONENT-631 18A77 TANGUT COMPONENT-632 18A78 TANGUT COMPONENT-633 18A79 TANGUT COMPONENT-634 18A7A TANGUT COMPONENT-635 18A7B TANGUT COMPONENT-636 18A7C TANGUT COMPONENT-637 18A7D TANGUT COMPONENT-638 18A7E TANGUT COMPONENT-639 18A7F TANGUT COMPONENT-640 18A80 TANGUT COMPONENT-641 18A81 TANGUT COMPONENT-642 18A82 TANGUT COMPONENT-643 18A83 TANGUT COMPONENT-644 18A84 TANGUT COMPONENT-645 18A85 TANGUT COMPONENT-646 18A86 TANGUT COMPONENT-647 18A87 TANGUT COMPONENT-648 18A88 TANGUT COMPONENT-649 18A89 TANGUT COMPONENT-650 18A8A TANGUT COMPONENT-651 18A8B TANGUT COMPONENT-652 18A8C TANGUT COMPONENT-653 18A8D TANGUT COMPONENT-654 18A8E TANGUT COMPONENT-655 18A8F TANGUT COMPONENT-656 18A90 TANGUT COMPONENT-657 18A91 TANGUT COMPONENT-658 18A92 TANGUT COMPONENT-659 18A93 TANGUT COMPONENT-660 18A94 TANGUT COMPONENT-661 18A95 TANGUT COMPONENT-662 18A96 TANGUT COMPONENT-663 18A97 TANGUT COMPONENT-664 18A98 TANGUT COMPONENT-665 @ Nine-stroke components 18A99 TANGUT COMPONENT-666 18A9A TANGUT COMPONENT-667 18A9B TANGUT COMPONENT-668 18A9C TANGUT COMPONENT-669 18A9D TANGUT COMPONENT-670 18A9E TANGUT COMPONENT-671 18A9F TANGUT COMPONENT-672 18AA0 TANGUT COMPONENT-673 18AA1 TANGUT COMPONENT-674 18AA2 TANGUT COMPONENT-675 18AA3 TANGUT COMPONENT-676 18AA4 TANGUT COMPONENT-677 18AA5 TANGUT COMPONENT-678 18AA6 TANGUT COMPONENT-679 18AA7 TANGUT COMPONENT-680 18AA8 TANGUT COMPONENT-681 18AA9 TANGUT COMPONENT-682 18AAA TANGUT COMPONENT-683 18AAB TANGUT COMPONENT-684 18AAC TANGUT COMPONENT-685 18AAD TANGUT COMPONENT-686 18AAE TANGUT COMPONENT-687 18AAF TANGUT COMPONENT-688 18AB0 TANGUT COMPONENT-689 18AB1 TANGUT COMPONENT-690 18AB2 TANGUT COMPONENT-691 18AB3 TANGUT COMPONENT-692 18AB4 TANGUT COMPONENT-693 18AB5 TANGUT COMPONENT-694 18AB6 TANGUT COMPONENT-695 18AB7 TANGUT COMPONENT-696 18AB8 TANGUT COMPONENT-697 18AB9 TANGUT COMPONENT-698 18ABA TANGUT COMPONENT-699 18ABB TANGUT COMPONENT-700 18ABC TANGUT COMPONENT-701 18ABD TANGUT COMPONENT-702 18ABE TANGUT COMPONENT-703 18ABF TANGUT COMPONENT-704 18AC0 TANGUT COMPONENT-705 @ Ten-stroke components 18AC1 TANGUT COMPONENT-706 18AC2 TANGUT COMPONENT-707 18AC3 TANGUT COMPONENT-708 18AC4 TANGUT COMPONENT-709 18AC5 TANGUT COMPONENT-710 18AC6 TANGUT COMPONENT-711 18AC7 TANGUT COMPONENT-712 18AC8 TANGUT COMPONENT-713 18AC9 TANGUT COMPONENT-714 18ACA TANGUT COMPONENT-715 18ACB TANGUT COMPONENT-716 18ACC TANGUT COMPONENT-717 18ACD TANGUT COMPONENT-718 18ACE TANGUT COMPONENT-719 18ACF TANGUT COMPONENT-720 18AD0 TANGUT COMPONENT-721 18AD1 TANGUT COMPONENT-722 18AD2 TANGUT COMPONENT-723 18AD3 TANGUT COMPONENT-724 18AD4 TANGUT COMPONENT-725 @ Eleven-stroke components 18AD5 TANGUT COMPONENT-726 18AD6 TANGUT COMPONENT-727 18AD7 TANGUT COMPONENT-728 18AD8 TANGUT COMPONENT-729 18AD9 TANGUT COMPONENT-730 18ADA TANGUT COMPONENT-731 18ADB TANGUT COMPONENT-732 18ADC TANGUT COMPONENT-733 18ADD TANGUT COMPONENT-734 18ADE TANGUT COMPONENT-735 18ADF TANGUT COMPONENT-736 18AE0 TANGUT COMPONENT-737 18AE1 TANGUT COMPONENT-738 18AE2 TANGUT COMPONENT-739 @ Twelve-stroke components 18AE3 TANGUT COMPONENT-740 18AE4 TANGUT COMPONENT-741 18AE5 TANGUT COMPONENT-742 18AE6 TANGUT COMPONENT-743 18AE7 TANGUT COMPONENT-744 18AE8 TANGUT COMPONENT-745 18AE9 TANGUT COMPONENT-746 18AEA TANGUT COMPONENT-747 18AEB TANGUT COMPONENT-748 @ Thirteen-stroke components 18AEC TANGUT COMPONENT-749 18AED TANGUT COMPONENT-750 18AEE TANGUT COMPONENT-751 18AEF TANGUT COMPONENT-752 18AF0 TANGUT COMPONENT-753 18AF1 TANGUT COMPONENT-754 @ Sixteen-stroke components 18AF2 TANGUT COMPONENT-755 @@ 1B000 Kana Supplement 1B0FF @ Historic Katakana 1B000 KATAKANA LETTER ARCHAIC E @ Historic Hiragana 1B001 HIRAGANA LETTER ARCHAIC YE @@ 1BC00 Duployan 1BC9F @ Non-joining consonants 1BC00 DUPLOYAN LETTER H * Chinook, Pernin, Sloan, Perrault 1BC01 DUPLOYAN LETTER X * Salishan @ Line consonants 1BC02 DUPLOYAN LETTER P * Chinook number 1 1BC03 DUPLOYAN LETTER T * Chinook number 2 1BC04 DUPLOYAN LETTER F * Chinook number 3 1BC05 DUPLOYAN LETTER K * written down and to the left * Chinook number 4 1BC06 DUPLOYAN LETTER L * written up and to the right * Pernin letter R 1BC07 DUPLOYAN LETTER B x (duployan affix low vertical secant - 1BC73) x (duployan affix mid vertical secant - 1BC74) x (duployan affix high vertical secant - 1BC75) 1BC08 DUPLOYAN LETTER D x (duployan affix left horizontal secant - 1BC70) x (duployan affix mid horizontal secant - 1BC71) x (duployan affix right horizontal secant - 1BC72) 1BC09 DUPLOYAN LETTER V 1BC0A DUPLOYAN LETTER G * written down and to the left 1BC0B DUPLOYAN LETTER R * written up and to the right * Chinook number 5 * French number milliards * Pernin L * Pernin Reporters' word repeat sign 1BC0C DUPLOYAN LETTER P N * Sloan B B x (duployan letter p - 1BC02) x (duployan letter n - 1BC1A) 1BC0D DUPLOYAN LETTER D S * Sloan D D x (duployan letter d - 1BC08) x (duployan letter s - 1BC1C) 1BC0E DUPLOYAN LETTER F N * Sloan V V x (duployan letter f - 1BC04) x (duployan letter n - 1BC1A) 1BC0F DUPLOYAN LETTER K M * written down and to the left * Sloan G G x (duployan letter k - 1BC05) x (duployan letter m - 1BC19) 1BC10 DUPLOYAN LETTER R S * written up and to the right * Sloan R R x (duployan letter r - 1BC0B) x (duployan letter s - 1BC1C) 1BC11 DUPLOYAN LETTER TH * Chinook, Sloan, Pernin, Perrault 1BC12 DUPLOYAN LETTER SLOAN DH 1BC13 DUPLOYAN LETTER DH * Chinook x (duployan letter d - 1BC08) 1BC14 DUPLOYAN LETTER KK * written down and to the left * Chinook 1BC15 DUPLOYAN LETTER SLOAN J * written down and to the left 1BC16 DUPLOYAN LETTER HL * written up and to the right * Chinook 1BC17 DUPLOYAN LETTER LH * written up and to the right * Chinook 1BC18 DUPLOYAN LETTER RH * written up and to the right * Chinook @ Arc consonants 1BC19 DUPLOYAN LETTER M * Chinook number 6 1BC1A DUPLOYAN LETTER N * Chinook number 7 1BC1B DUPLOYAN LETTER J * Chinook number 8 * Chinook, Pernin sh 1BC1C DUPLOYAN LETTER S * Chinook number 9 * French hundreds 1BC1D DUPLOYAN LETTER M N * Romanian mai mult, not Romanian mult mai sign 1BC1E DUPLOYAN LETTER N M * not Romanian nu nu sign 1BC1F DUPLOYAN LETTER J M * not Romanian ceea ce sign 1BC20 DUPLOYAN LETTER S J * not Romanian sa se sign 1BC21 DUPLOYAN LETTER M WITH DOT * Romanian sign mijloc 1BC22 DUPLOYAN LETTER N WITH DOT * Chinook ng * Romanian sign nici 1BC23 DUPLOYAN LETTER J WITH DOT * Chinook, Romanian ch * Sloan zh * Chinook, Perrault j 1BC24 DUPLOYAN LETTER J WITH DOTS INSIDE AND ABOVE * used in isolation * Romanian sign ici si colo 1BC25 DUPLOYAN LETTER S WITH DOT * Chinook ts * Chinook, Romanian, Sloan z 1BC26 DUPLOYAN LETTER S WITH DOT BELOW * Romanian sh 1BC27 DUPLOYAN LETTER M S * Sloan m m 1BC28 DUPLOYAN LETTER N S * Pernin, Sloan, Perrault ng 1BC29 DUPLOYAN LETTER J S * Romanian ge * Pernin, Perrault zh * Sloan ch 1BC2A DUPLOYAN LETTER S S * French, Sloan * Romanian ts * Pernin, Perrault z 1BC2B DUPLOYAN LETTER M N S 1BC2C DUPLOYAN LETTER N M S 1BC2D DUPLOYAN LETTER J M S 1BC2E DUPLOYAN LETTER S J S 1BC2F DUPLOYAN LETTER J S WITH DOT * Sloan hard ch * Pernin, Perrault ch 1BC30 DUPLOYAN LETTER J N 1BC31 DUPLOYAN LETTER J N S @ Quarter-arc consonants written downwards 1BC32 DUPLOYAN LETTER S T * Pernin, Perrault * Sloan sm 1BC33 DUPLOYAN LETTER S T R * Pernin, Perrault * Sloan sn 1BC34 DUPLOYAN LETTER S P * Pernin, Perrault * Sloan kw 1BC35 DUPLOYAN LETTER S P R * Pernin, Perrault * Sloan skw 1BC36 DUPLOYAN LETTER T S * Perrault * Sloan std 1BC37 DUPLOYAN LETTER T R S * Perrault * Sloan sst 1BC38 DUPLOYAN LETTER W * Sloan, Perrault, Pernin * takes form of a hook or wave after k and g 1BC39 DUPLOYAN LETTER WH 1BC3A DUPLOYAN LETTER W R * Perrault * Sloan sw @ Quarter-arc consonants written upwards 1BC3B DUPLOYAN LETTER S N * Perrault * Pernin krs * Sloan SP 1BC3C DUPLOYAN LETTER S M * Perrault * Pernin grs * Sloan sl 1BC3D DUPLOYAN LETTER K R S * Perrault 1BC3E DUPLOYAN LETTER G R S * Perrault 1BC3F DUPLOYAN LETTER S K * Perrault, Pernin * Sloan ts 1BC40 DUPLOYAN LETTER S K R * Perrault, Pernin * Sloan ds @ Circle vowels 1BC41 DUPLOYAN LETTER A * Chinook number tens 1BC42 DUPLOYAN LETTER SLOAN OW * reverse circle vowel 1BC43 DUPLOYAN LETTER OA * Pernin aw * Perrault aw 1BC44 DUPLOYAN LETTER O * Chinook number 0 1BC45 DUPLOYAN LETTER AOU @ Semi-circle vowels 1BC46 DUPLOYAN LETTER I * character rotates to match entry angle of preceding consonant * primary orientating (right and up) * Perrault long a, short e (with accents) 1BC47 DUPLOYAN LETTER E * character rotates to match entry angle of preceding consonant * secondary orientating (left and down) * Sloan long a * Perrault short i, long e (with dot accent) x (duployan affix attached e hook - 1BC7A) 1BC48 DUPLOYAN LETTER IE * used as an invariant vowel and for orientating word abbreviations consisting of only vowels * Duployan * Pernin a 1BC49 DUPLOYAN LETTER SHORT I * used as an invariant vowel and for orientating word abbreviations consisting of only vowels * Pernin, Duployan * Consolidated Duployan r t r 1BC4A DUPLOYAN LETTER UI * used as an invariant vowel and for orientating word abbreviations consisting of only vowels * Duployan * Pernin e 1BC4B DUPLOYAN LETTER EE * used as an invariant vowel and for orientating word abbreviations consisting of only vowels * Pernin, Duployan 1BC4C DUPLOYAN LETTER SLOAN EH 1BC4D DUPLOYAN LETTER ROMANIAN I * character rotates to match entry angle of preceding consonant, with dot maintaining relative position * secondary orientating (left and down) 1BC4E DUPLOYAN LETTER SLOAN EE @ Diagonal-line vowels 1BC4F DUPLOYAN LETTER LONG I * Pernin * angles like an "f" when adjacent to a k-type consonant 1BC50 DUPLOYAN LETTER YE @ Quarter-circle vowels 1BC51 DUPLOYAN LETTER U * character rotates to match entry angle of preceding consonant * primary orientating (right and up) * Romanian en x (duployan letter w - 1BC38) x (duployan letter romanian u - 1BC56) x (duployan letter long u - 1BC55) 1BC52 DUPLOYAN LETTER EU * character rotates to match entry angle of preceding consonant * secondary orientating (left and down) * Romanian an * in French usage, may be rendered with a dot contextually 1BC53 DUPLOYAN LETTER XW * Perrault uh * not French eu 1BC54 DUPLOYAN LETTER U N x (duployan letter n - 1BC1A) @ Other vowels 1BC55 DUPLOYAN LETTER LONG U * this character does not rotate to match entry angle of preceding consonant * Pernin, Perrault 1BC56 DUPLOYAN LETTER ROMANIAN U 1BC57 DUPLOYAN LETTER UH * Sloan 1BC58 DUPLOYAN LETTER SLOAN U 1BC59 DUPLOYAN LETTER OOH * Sloan @ Dotted-circle vowels 1BC5A DUPLOYAN LETTER OW * should not be used for Romanian u 1BC5B DUPLOYAN LETTER OU * should not be used for Perrault ow * Chinook letter oo @ Compound vowels 1BC5C DUPLOYAN LETTER WA * Chinook * Chinook number hundreds * Perrault oy * not Romanian o+a 1BC5D DUPLOYAN LETTER WO * Chinook 1BC5E DUPLOYAN LETTER WI * Chinook 1BC5F DUPLOYAN LETTER WEI * Salishan 1BC60 DUPLOYAN LETTER WOW * Salishan @ Basic nasal vowels @+ These nasal vowel characters position diacritically, as an orientating vowel, or as an invariant vowel. 1BC61 DUPLOYAN LETTER NASAL U * secondary orientating; invariant direction downwards * French number 1 * Pernin in * Consolidated Duployan affix int-r- 1BC62 DUPLOYAN LETTER NASAL O * secondary orientating; invariant direction upwards * neutral nasal vowel for transcription of an ambiguous secondary orientating nasal vowel * Pernin om, im * Perrault letters an, en, in, un (with accents) * Consolidated Duployan affix int-r- 1BC63 DUPLOYAN LETTER NASAL I * primary orientating; invariant direction downwards * Romanian multiplicative number prefix * Pernin im * Consolidated Duployan affix int-r- 1BC64 DUPLOYAN LETTER NASAL A * primary orientating; invariant direction upwards * neutral nasal vowel for transcription of an ambiguous primary orientating nasal vowel * Perrault vocalic n - an, en, in, un (with accents) * Pernin on * Romanian yn @ Additional nasal vowels 1BC65 DUPLOYAN LETTER PERNIN AN * written downwards 1BC66 DUPLOYAN LETTER PERNIN AM * written downwards 1BC67 DUPLOYAN LETTER SLOAN EN 1BC68 DUPLOYAN LETTER SLOAN AN 1BC69 DUPLOYAN LETTER SLOAN ON 1BC6A DUPLOYAN LETTER VOCALIC M * primary orientating vowel * Perrault am, em, im, um (with accents) @ Attached affixes @+ The dots in the chart glyphs for these attached affixes show the position on and relative orientation to the base glyph they are attached to, and are not visibly rendered. 1BC70 DUPLOYAN AFFIX LEFT HORIZONTAL SECANT * Pernin Reporters' extra- x (duployan letter d - 1BC08) 1BC71 DUPLOYAN AFFIX MID HORIZONTAL SECANT * Pernin Reporters' inter- 1BC72 DUPLOYAN AFFIX RIGHT HORIZONTAL SECANT * Pernin Reporters' contra- 1BC73 DUPLOYAN AFFIX LOW VERTICAL SECANT * Pernin Reporters' sub- x (duployan letter b - 1BC07) 1BC74 DUPLOYAN AFFIX MID VERTICAL SECANT * Pernin Reporters' trans- 1BC75 DUPLOYAN AFFIX HIGH VERTICAL SECANT * Pernin Reporters' super- 1BC76 DUPLOYAN AFFIX ATTACHED SECANT * generally crosses adjacent character at perpendicular, but has a bias towards SW/NE angle in contrast to 1BC77 * as a prefix, takes opposite relative position to following glyph * default neutral secant affix * French suffix -anse * Pernin prefix pre- * Sloan affix ax-/-ext 1BC77 DUPLOYAN AFFIX ATTACHED LEFT-TO-RIGHT SECANT * generally crosses adjacent character at perpendicular, but has a bias towards NW/SE angle in contrast to 1BC76 * as a suffix, takes opposite relative position to following glyph * Pernin prefix per- 1BC78 DUPLOYAN AFFIX ATTACHED TANGENT * as a prefix, takes opposite relative position to following glyph * French suffix -tan * Romanian str-/-str 1BC79 DUPLOYAN AFFIX ATTACHED TAIL * orientating character * French suffix -sionaire 1BC7A DUPLOYAN AFFIX ATTACHED E HOOK * glyph is retrograde and opens up or down, depending on preceding letter * French suffix -te x (duployan letter e - 1BC47) 1BC7B DUPLOYAN AFFIX ATTACHED I HOOK * glyph is retrograde and opens left or right, depending on preceding letter * French suffix -tou * Sloan affix irre-/-ary x (duployan letter i - 1BC46) 1BC7C DUPLOYAN AFFIX ATTACHED TANGENT HOOK * attached affix * Romanian affix ist-/-ism * Consolidated Duployan prefix t-r- @ High affixes 1BC80 DUPLOYAN AFFIX HIGH ACUTE * French suffix -ment * Romanian suffix -mant * Pernin sub- * Pernin Reporters' prefix pro- x (modifier letter acute accent - 02CA) 1BC81 DUPLOYAN AFFIX HIGH TIGHT ACUTE * as a suffix, placed above and to the right of the following letter * Pernin Pro- 1BC82 DUPLOYAN AFFIX HIGH GRAVE * French suffix -ien * Pernin prefix con- x (modifier letter grave accent - 02CB) 1BC83 DUPLOYAN AFFIX HIGH LONG GRAVE * Pernin prefix contra- 1BC84 DUPLOYAN AFFIX HIGH DOT * French number thousands * French suffix -eur * Romanian affix trans-/-lui * not Romanian hundreds - use 0307 combining dot above and 0308 combining diaeresis x (dot above - 02D9) 1BC85 DUPLOYAN AFFIX HIGH CIRCLE * French ordinal number * French suffix -euse * not Romanian number grade or percent suffix x (degree sign - 00B0) x (ring above - 02DA) 1BC86 DUPLOYAN AFFIX HIGH LINE * French suffix -iste * Romanian affix -tor * Pernin affix dis- x (modifier letter macron - 02C9) 1BC87 DUPLOYAN AFFIX HIGH WAVE * French suffix -ificatif x (small tilde - 02DC) 1BC88 DUPLOYAN AFFIX HIGH VERTICAL * also functions as attached affix vertical up with ZWJ * about half as long as Duployan letter p * as a prefix, has falling stroke direction * Pernin ZWJ + -ime * Sloan tele- x (duployan letter p - 1BC02) @ Low affixes 1BC90 DUPLOYAN AFFIX LOW ACUTE * French suffix -cion * Pernin prefix ex- x (modifier letter low acute accent - 02CF) 1BC91 DUPLOYAN AFFIX LOW TIGHT ACUTE * as a suffix, placed under and to the right of the following letter * Pernin suf-, sug- 1BC92 DUPLOYAN AFFIX LOW GRAVE * French suffix -ion * French number millions x (modifier letter low grave accent - 02CE) 1BC93 DUPLOYAN AFFIX LOW LONG GRAVE * Pernin extra- 1BC94 DUPLOYAN AFFIX LOW DOT * French suffix -ie * French iterative number * Romanian affix inter- * not Romanian millions - see 0323 combining dot below and 0324 combining diaeresis below 1BC95 DUPLOYAN AFFIX LOW CIRCLE * French suffix -iere * French percent x (modifier letter low ring - 02F3) 1BC96 DUPLOYAN AFFIX LOW LINE * French suffix -isme * Pernin affix mis- x (modifier letter minus sign - 02D7) 1BC97 DUPLOYAN AFFIX LOW WAVE * French suffix -ification x (modifier letter low tilde - 02F7) 1BC98 DUPLOYAN AFFIX LOW VERTICAL * functions as attached affix vertical down with ZWJ * about half as long as the Duployan letter p * as a prefix, has rising stroke direction * Pernin ZWJ + -ine x (duployan letter p - 1BC02) 1BC99 DUPLOYAN AFFIX LOW ARROW * Romanian prefix sub- @ Miscellaneous sign 1BC9C DUPLOYAN SIGN O WITH CROSS * Chinook Likalisti @ Sloan R-form selector @+ The Sloan R-form selector denotes an r-flavored letter. It causes the previous Duployan character to be rendered bold. The glyph shown in the code chart is arbitrary and is not visibly rendered. 1BC9D DUPLOYAN THICK LETTER SELECTOR @ Shorthand double mark @+ The dots in the chart glyph for this mark show the position on and relative orientation to the base glyph the mark is attached to, and are not visibly rendered. 1BC9E DUPLOYAN DOUBLE MARK * Romanian, Sloan * should be used with m, n, j, and s for the Romanian word signs mai mult, nu nu, ceea ce, and sa se * can be doubled and tripled @ Chinook punctuation 1BC9F DUPLOYAN PUNCTUATION CHINOOK FULL STOP @@ 1BCA0 Shorthand Format Controls 1BCAF @ Shorthand format controls @+ The glyphs for these format controls in the code charts are arbitrary and are not visibly rendered. 1BCA0 SHORTHAND FORMAT LETTER OVERLAP 1BCA1 SHORTHAND FORMAT CONTINUING OVERLAP 1BCA2 SHORTHAND FORMAT DOWN STEP = Romanian affix -tsion- = Sloan contracted ending oo/o + ZWSP 1BCA3 SHORTHAND FORMAT UP STEP = Sloan contracted ending uh/au/aui + ZWSP @@ 1D000 Byzantine Musical Symbols 1D0FF @@+ @ Prosodies (Prosodics) @+ These three characters are not actually attested in musical contexts. 1D000 BYZANTINE MUSICAL SYMBOL PSILI 1D001 BYZANTINE MUSICAL SYMBOL DASEIA 1D002 BYZANTINE MUSICAL SYMBOL PERISPOMENI @ Ekfonetika 1D003 BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON 1D004 BYZANTINE MUSICAL SYMBOL OXEIA DIPLI 1D005 BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON 1D006 BYZANTINE MUSICAL SYMBOL VAREIA DIPLI 1D007 BYZANTINE MUSICAL SYMBOL KATHISTI 1D008 BYZANTINE MUSICAL SYMBOL SYRMATIKI 1D009 BYZANTINE MUSICAL SYMBOL PARAKLITIKI 1D00A BYZANTINE MUSICAL SYMBOL YPOKRISIS 1D00B BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI 1D00C BYZANTINE MUSICAL SYMBOL KREMASTI 1D00D BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON 1D00E BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON 1D00F BYZANTINE MUSICAL SYMBOL TELEIA 1D010 BYZANTINE MUSICAL SYMBOL KENTIMATA 1D011 BYZANTINE MUSICAL SYMBOL APOSTROFOS 1D012 BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI 1D013 BYZANTINE MUSICAL SYMBOL SYNEVMA 1D014 BYZANTINE MUSICAL SYMBOL THITA @ Melodimata (Melodics) 1D015 BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION 1D016 BYZANTINE MUSICAL SYMBOL GORGON ARCHAION 1D017 BYZANTINE MUSICAL SYMBOL PSILON 1D018 BYZANTINE MUSICAL SYMBOL CHAMILON 1D019 BYZANTINE MUSICAL SYMBOL VATHY 1D01A BYZANTINE MUSICAL SYMBOL ISON ARCHAION 1D01B BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION 1D01C BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION 1D01D BYZANTINE MUSICAL SYMBOL SAXIMATA 1D01E BYZANTINE MUSICAL SYMBOL PARICHON 1D01F BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA 1D020 BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION 1D021 BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION 1D022 BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION 1D023 BYZANTINE MUSICAL SYMBOL APOTHEMA 1D024 BYZANTINE MUSICAL SYMBOL KLASMA 1D025 BYZANTINE MUSICAL SYMBOL REVMA 1D026 BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION 1D027 BYZANTINE MUSICAL SYMBOL TINAGMA 1D028 BYZANTINE MUSICAL SYMBOL ANATRICHISMA 1D029 BYZANTINE MUSICAL SYMBOL SEISMA 1D02A BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION 1D02B BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU 1D02C BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION 1D02D BYZANTINE MUSICAL SYMBOL THEMA 1D02E BYZANTINE MUSICAL SYMBOL LEMOI 1D02F BYZANTINE MUSICAL SYMBOL DYO 1D030 BYZANTINE MUSICAL SYMBOL TRIA 1D031 BYZANTINE MUSICAL SYMBOL TESSERA 1D032 BYZANTINE MUSICAL SYMBOL KRATIMATA 1D033 BYZANTINE MUSICAL SYMBOL APESO EXO NEO 1D034 BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION 1D035 BYZANTINE MUSICAL SYMBOL IMIFTHORA 1D036 BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION 1D037 BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON 1D038 BYZANTINE MUSICAL SYMBOL PELASTON 1D039 BYZANTINE MUSICAL SYMBOL PSIFISTON 1D03A BYZANTINE MUSICAL SYMBOL KONTEVMA 1D03B BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION 1D03C BYZANTINE MUSICAL SYMBOL RAPISMA 1D03D BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION 1D03E BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION 1D03F BYZANTINE MUSICAL SYMBOL ICHADIN 1D040 BYZANTINE MUSICAL SYMBOL NANA 1D041 BYZANTINE MUSICAL SYMBOL PETASMA 1D042 BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO 1D043 BYZANTINE MUSICAL SYMBOL TROMIKON ALLO 1D044 BYZANTINE MUSICAL SYMBOL STRAGGISMATA 1D045 BYZANTINE MUSICAL SYMBOL GRONTHISMATA @ Fonitika (Vocals) 1D046 BYZANTINE MUSICAL SYMBOL ISON NEO 1D047 BYZANTINE MUSICAL SYMBOL OLIGON NEO 1D048 BYZANTINE MUSICAL SYMBOL OXEIA NEO 1D049 BYZANTINE MUSICAL SYMBOL PETASTI 1D04A BYZANTINE MUSICAL SYMBOL KOUFISMA 1D04B BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA 1D04C BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA 1D04D BYZANTINE MUSICAL SYMBOL PELASTON NEO 1D04E BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO 1D04F BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO 1D050 BYZANTINE MUSICAL SYMBOL YPSILI 1D051 BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO 1D052 BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO 1D053 BYZANTINE MUSICAL SYMBOL YPORROI 1D054 BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON 1D055 BYZANTINE MUSICAL SYMBOL ELAFRON 1D056 BYZANTINE MUSICAL SYMBOL CHAMILI @ Afona or Ypostaseis (Mutes or Hypostases) 1D057 BYZANTINE MUSICAL SYMBOL MIKRON ISON 1D058 BYZANTINE MUSICAL SYMBOL VAREIA NEO 1D059 BYZANTINE MUSICAL SYMBOL PIASMA NEO 1D05A BYZANTINE MUSICAL SYMBOL PSIFISTON NEO 1D05B BYZANTINE MUSICAL SYMBOL OMALON 1D05C BYZANTINE MUSICAL SYMBOL ANTIKENOMA 1D05D BYZANTINE MUSICAL SYMBOL LYGISMA 1D05E BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO 1D05F BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO 1D060 BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA 1D061 BYZANTINE MUSICAL SYMBOL KYLISMA 1D062 BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA 1D063 BYZANTINE MUSICAL SYMBOL TROMIKON NEO 1D064 BYZANTINE MUSICAL SYMBOL EKSTREPTON 1D065 BYZANTINE MUSICAL SYMBOL SYNAGMA NEO 1D066 BYZANTINE MUSICAL SYMBOL SYRMA 1D067 BYZANTINE MUSICAL SYMBOL CHOREVMA NEO 1D068 BYZANTINE MUSICAL SYMBOL EPEGERMA 1D069 BYZANTINE MUSICAL SYMBOL SEISMA NEO 1D06A BYZANTINE MUSICAL SYMBOL XIRON KLASMA 1D06B BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON 1D06C BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA 1D06D BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA 1D06E BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA 1D06F BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA 1D070 BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA 1D071 BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA 1D072 BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON 1D073 BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON 1D074 BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON 1D075 BYZANTINE MUSICAL SYMBOL OYRANISMA NEO 1D076 BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO 1D077 BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO 1D078 BYZANTINE MUSICAL SYMBOL THEMA APLOUN 1D079 BYZANTINE MUSICAL SYMBOL THES KAI APOTHES 1D07A BYZANTINE MUSICAL SYMBOL KATAVASMA 1D07B BYZANTINE MUSICAL SYMBOL ENDOFONON 1D07C BYZANTINE MUSICAL SYMBOL YFEN KATO 1D07D BYZANTINE MUSICAL SYMBOL YFEN ANO 1D07E BYZANTINE MUSICAL SYMBOL STAVROS @ Argies (Retards) 1D07F BYZANTINE MUSICAL SYMBOL KLASMA ANO 1D080 BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION 1D081 BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION 1D082 BYZANTINE MUSICAL SYMBOL KRATIMA ALLO 1D083 BYZANTINE MUSICAL SYMBOL KRATIMA NEO 1D084 BYZANTINE MUSICAL SYMBOL APODERMA NEO 1D085 BYZANTINE MUSICAL SYMBOL APLI 1D086 BYZANTINE MUSICAL SYMBOL DIPLI 1D087 BYZANTINE MUSICAL SYMBOL TRIPLI 1D088 BYZANTINE MUSICAL SYMBOL TETRAPLI 1D089 BYZANTINE MUSICAL SYMBOL KORONIS @ Leimmata or Siopes (Leimmas or Silencers) 1D08A BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU 1D08B BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON 1D08C BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON 1D08D BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON 1D08E BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU @ Synagmata or Gorgotites (Synagmas or Quickeners) 1D08F BYZANTINE MUSICAL SYMBOL GORGON NEO ANO 1D090 BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA 1D091 BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA 1D092 BYZANTINE MUSICAL SYMBOL DIGORGON 1D093 BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO 1D094 BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO 1D095 BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA 1D096 BYZANTINE MUSICAL SYMBOL TRIGORGON 1D097 BYZANTINE MUSICAL SYMBOL ARGON 1D098 BYZANTINE MUSICAL SYMBOL IMIDIARGON * called diargon by some authorities 1D099 BYZANTINE MUSICAL SYMBOL DIARGON * called triargon by some authorities @ Agogika (Conduits) @+ Glyphs shown for conduits reflect Greek practice, with chi as the base letter; different national traditions use glyphs with different base letters. 1D09A BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI 1D09B BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI 1D09C BYZANTINE MUSICAL SYMBOL AGOGI ARGI 1D09D BYZANTINE MUSICAL SYMBOL AGOGI METRIA 1D09E BYZANTINE MUSICAL SYMBOL AGOGI MESI 1D09F BYZANTINE MUSICAL SYMBOL AGOGI GORGI 1D0A0 BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI 1D0A1 BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI @ Ichimata and Martyrika (Ichimas and Evidentials) 1D0A2 BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS 1D0A3 BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS 1D0A4 BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS 1D0A5 BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS 1D0A6 BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS 1D0A7 BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS 1D0A8 BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS 1D0A9 BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS 1D0AA BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS 1D0AB BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS 1D0AC BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS 1D0AD BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS 1D0AE BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS 1D0AF BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS 1D0B0 BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS 1D0B1 BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS 1D0B2 BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS 1D0B3 BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS 1D0B4 BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN * used in intonation formulas instead of nu, before phonemes a, i, o, u x (greek small letter nu - 03BD) 1D0B5 BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN * used in intonation formulas instead of nu, before phoneme e x (greek small letter nu - 03BD) @ Fthores (Destroyers) 1D0B6 BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU 1D0B7 BYZANTINE MUSICAL SYMBOL IMIFONON 1D0B8 BYZANTINE MUSICAL SYMBOL IMIFTHORON 1D0B9 BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU 1D0BA BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA 1D0BB BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA 1D0BC BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS 1D0BD BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI 1D0BE BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI 1D0BF BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE 1D0C0 BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO 1D0C1 BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO 1D0C2 BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO 1D0C3 BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS 1D0C4 BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS 1D0C5 BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS % BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA VASIS * misspelling of "FTHORA" in character name is a known defect 1D0C6 BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI 1D0C7 BYZANTINE MUSICAL SYMBOL FTHORA NENANO 1D0C8 BYZANTINE MUSICAL SYMBOL CHROA ZYGOS 1D0C9 BYZANTINE MUSICAL SYMBOL CHROA KLITON 1D0CA BYZANTINE MUSICAL SYMBOL CHROA SPATHI @ Alloioseis (Differentiators) 1D0CB BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION 1D0CC BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA 1D0CD BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION 1D0CE BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION 1D0CF BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION 1D0D0 BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA 1D0D1 BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA 1D0D2 BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA 1D0D3 BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA 1D0D4 BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA 1D0D5 BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA 1D0D6 BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA 1D0D7 BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA 1D0D8 BYZANTINE MUSICAL SYMBOL GENIKI DIESIS 1D0D9 BYZANTINE MUSICAL SYMBOL GENIKI YFESIS @ Rythmika (Rhythmics) 1D0DA BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI x (musical symbol short barline - 1D105) 1D0DB BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI x (musical symbol single barline - 1D100) 1D0DC BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI 1D0DD BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS 1D0DE BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS 1D0DF BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU 1D0E0 BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU 1D0E1 BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU 1D0E2 BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS 1D0E3 BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU 1D0E4 BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU 1D0E5 BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU @ Grammata (Letters) @+ The first three characters are not actually attested in musical contexts. 1D0E6 BYZANTINE MUSICAL SYMBOL DIGRAMMA GG 1D0E7 BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU x (latin small letter ou - 0223) 1D0E8 BYZANTINE MUSICAL SYMBOL STIGMA x (greek small letter stigma - 03DB) 1D0E9 BYZANTINE MUSICAL SYMBOL ARKTIKO PA 1D0EA BYZANTINE MUSICAL SYMBOL ARKTIKO VOU 1D0EB BYZANTINE MUSICAL SYMBOL ARKTIKO GA 1D0EC BYZANTINE MUSICAL SYMBOL ARKTIKO DI 1D0ED BYZANTINE MUSICAL SYMBOL ARKTIKO KE 1D0EE BYZANTINE MUSICAL SYMBOL ARKTIKO ZO 1D0EF BYZANTINE MUSICAL SYMBOL ARKTIKO NI @ Specials 1D0F0 BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO 1D0F1 BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO 1D0F2 BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO 1D0F3 BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO 1D0F4 BYZANTINE MUSICAL SYMBOL KLASMA KATO 1D0F5 BYZANTINE MUSICAL SYMBOL GORGON NEO KATO @@ 1D100 Musical Symbols 1D1FF @ Bars 1D100 MUSICAL SYMBOL SINGLE BARLINE 1D101 MUSICAL SYMBOL DOUBLE BARLINE 1D102 MUSICAL SYMBOL FINAL BARLINE 1D103 MUSICAL SYMBOL REVERSE FINAL BARLINE 1D104 MUSICAL SYMBOL DASHED BARLINE 1D105 MUSICAL SYMBOL SHORT BARLINE @ Codas 1D106 MUSICAL SYMBOL LEFT REPEAT SIGN 1D107 MUSICAL SYMBOL RIGHT REPEAT SIGN 1D108 MUSICAL SYMBOL REPEAT DOTS 1D109 MUSICAL SYMBOL DAL SEGNO 1D10A MUSICAL SYMBOL DA CAPO 1D10B MUSICAL SYMBOL SEGNO 1D10C MUSICAL SYMBOL CODA @ Figure repetitions 1D10D MUSICAL SYMBOL REPEATED FIGURE-1 1D10E MUSICAL SYMBOL REPEATED FIGURE-2 1D10F MUSICAL SYMBOL REPEATED FIGURE-3 @ Holds and pauses 1D110 MUSICAL SYMBOL FERMATA 1D111 MUSICAL SYMBOL FERMATA BELOW 1D112 MUSICAL SYMBOL BREATH MARK 1D113 MUSICAL SYMBOL CAESURA @ Staff brackets 1D114 MUSICAL SYMBOL BRACE 1D115 MUSICAL SYMBOL BRACKET @ Staves 1D116 MUSICAL SYMBOL ONE-LINE STAFF 1D117 MUSICAL SYMBOL TWO-LINE STAFF 1D118 MUSICAL SYMBOL THREE-LINE STAFF 1D119 MUSICAL SYMBOL FOUR-LINE STAFF 1D11A MUSICAL SYMBOL FIVE-LINE STAFF 1D11B MUSICAL SYMBOL SIX-LINE STAFF @ Tablature 1D11C MUSICAL SYMBOL SIX-STRING FRETBOARD 1D11D MUSICAL SYMBOL FOUR-STRING FRETBOARD @ Clefs 1D11E MUSICAL SYMBOL G CLEF x (musical score - 1F3BC) 1D11F MUSICAL SYMBOL G CLEF OTTAVA ALTA 1D120 MUSICAL SYMBOL G CLEF OTTAVA BASSA 1D121 MUSICAL SYMBOL C CLEF 1D122 MUSICAL SYMBOL F CLEF 1D123 MUSICAL SYMBOL F CLEF OTTAVA ALTA 1D124 MUSICAL SYMBOL F CLEF OTTAVA BASSA 1D125 MUSICAL SYMBOL DRUM CLEF-1 1D126 MUSICAL SYMBOL DRUM CLEF-2 @ Rest 1D129 MUSICAL SYMBOL MULTIPLE MEASURE REST * used to represent rests of arbitrary lengths, extending across multiple measures x (musical symbol multi rest - 1D13A) @ Accidentals @+ The most common accidentals are encoded in the Miscellaneous Symbols block. x (music flat sign - 266D) x (music natural sign - 266E) x (music sharp sign - 266F) 1D12A MUSICAL SYMBOL DOUBLE SHARP 1D12B MUSICAL SYMBOL DOUBLE FLAT 1D12C MUSICAL SYMBOL FLAT UP 1D12D MUSICAL SYMBOL FLAT DOWN 1D12E MUSICAL SYMBOL NATURAL UP 1D12F MUSICAL SYMBOL NATURAL DOWN 1D130 MUSICAL SYMBOL SHARP UP 1D131 MUSICAL SYMBOL SHARP DOWN 1D132 MUSICAL SYMBOL QUARTER TONE SHARP 1D133 MUSICAL SYMBOL QUARTER TONE FLAT @ Time signatures 1D134 MUSICAL SYMBOL COMMON TIME 1D135 MUSICAL SYMBOL CUT TIME @ Octaves 1D136 MUSICAL SYMBOL OTTAVA ALTA 1D137 MUSICAL SYMBOL OTTAVA BASSA 1D138 MUSICAL SYMBOL QUINDICESIMA ALTA 1D139 MUSICAL SYMBOL QUINDICESIMA BASSA @ Rests 1D13A MUSICAL SYMBOL MULTI REST = double whole-rest, breve rest x (musical symbol multiple measure rest - 1D129) 1D13B MUSICAL SYMBOL WHOLE REST = semibreve rest 1D13C MUSICAL SYMBOL HALF REST = minim rest 1D13D MUSICAL SYMBOL QUARTER REST = crochet rest 1D13E MUSICAL SYMBOL EIGHTH REST = quaver rest 1D13F MUSICAL SYMBOL SIXTEENTH REST = semiquaver rest 1D140 MUSICAL SYMBOL THIRTY-SECOND REST = demisemiquaver rest 1D141 MUSICAL SYMBOL SIXTY-FOURTH REST = hemidemisemiquaver rest, semidemisemiquaver rest 1D142 MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST = semihemidemisemiquaver rest, quasihemidemisemiquaver rest @ Noteheads 1D143 MUSICAL SYMBOL X NOTEHEAD 1D144 MUSICAL SYMBOL PLUS NOTEHEAD 1D145 MUSICAL SYMBOL CIRCLE X NOTEHEAD 1D146 MUSICAL SYMBOL SQUARE NOTEHEAD WHITE 1D147 MUSICAL SYMBOL SQUARE NOTEHEAD BLACK 1D148 MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE 1D149 MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK 1D14A MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE 1D14B MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK 1D14C MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE 1D14D MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK 1D14E MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE 1D14F MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK 1D150 MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE 1D151 MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK 1D152 MUSICAL SYMBOL MOON NOTEHEAD WHITE 1D153 MUSICAL SYMBOL MOON NOTEHEAD BLACK 1D154 MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE 1D155 MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK 1D156 MUSICAL SYMBOL PARENTHESIS NOTEHEAD 1D157 MUSICAL SYMBOL VOID NOTEHEAD 1D158 MUSICAL SYMBOL NOTEHEAD BLACK 1D159 MUSICAL SYMBOL NULL NOTEHEAD 1D15A MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE 1D15B MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK @ Notes 1D15C MUSICAL SYMBOL BREVE 1D15D MUSICAL SYMBOL WHOLE NOTE = semibreve 1D15E MUSICAL SYMBOL HALF NOTE = minim : 1D157 1D165 1D15F MUSICAL SYMBOL QUARTER NOTE = crotchet x (quarter note - 2669) : 1D158 1D165 1D160 MUSICAL SYMBOL EIGHTH NOTE = quaver x (eighth note - 266A) : 1D15F 1D16E 1D161 MUSICAL SYMBOL SIXTEENTH NOTE = semiquaver : 1D15F 1D16F 1D162 MUSICAL SYMBOL THIRTY-SECOND NOTE = demisemiquaver : 1D15F 1D170 1D163 MUSICAL SYMBOL SIXTY-FOURTH NOTE = hemidemisemiquaver, semidemisemiquaver : 1D15F 1D171 1D164 MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE = semihemidemisemiquaver, quasihemidemisemiquaver : 1D15F 1D172 @ Stems 1D165 MUSICAL SYMBOL COMBINING STEM 1D166 MUSICAL SYMBOL COMBINING SPRECHGESANG STEM @ Tremolos 1D167 MUSICAL SYMBOL COMBINING TREMOLO-1 1D168 MUSICAL SYMBOL COMBINING TREMOLO-2 1D169 MUSICAL SYMBOL COMBINING TREMOLO-3 1D16A MUSICAL SYMBOL FINGERED TREMOLO-1 1D16B MUSICAL SYMBOL FINGERED TREMOLO-2 1D16C MUSICAL SYMBOL FINGERED TREMOLO-3 @ Augmentation dot 1D16D MUSICAL SYMBOL COMBINING AUGMENTATION DOT @ Flags 1D16E MUSICAL SYMBOL COMBINING FLAG-1 1D16F MUSICAL SYMBOL COMBINING FLAG-2 1D170 MUSICAL SYMBOL COMBINING FLAG-3 1D171 MUSICAL SYMBOL COMBINING FLAG-4 1D172 MUSICAL SYMBOL COMBINING FLAG-5 @ Beams and slurs 1D173 MUSICAL SYMBOL BEGIN BEAM 1D174 MUSICAL SYMBOL END BEAM 1D175 MUSICAL SYMBOL BEGIN TIE 1D176 MUSICAL SYMBOL END TIE 1D177 MUSICAL SYMBOL BEGIN SLUR 1D178 MUSICAL SYMBOL END SLUR 1D179 MUSICAL SYMBOL BEGIN PHRASE 1D17A MUSICAL SYMBOL END PHRASE @ Articulation 1D17B MUSICAL SYMBOL COMBINING ACCENT 1D17C MUSICAL SYMBOL COMBINING STACCATO 1D17D MUSICAL SYMBOL COMBINING TENUTO 1D17E MUSICAL SYMBOL COMBINING STACCATISSIMO 1D17F MUSICAL SYMBOL COMBINING MARCATO 1D180 MUSICAL SYMBOL COMBINING MARCATO-STACCATO 1D181 MUSICAL SYMBOL COMBINING ACCENT-STACCATO 1D182 MUSICAL SYMBOL COMBINING LOURE 1D183 MUSICAL SYMBOL ARPEGGIATO UP 1D184 MUSICAL SYMBOL ARPEGGIATO DOWN 1D185 MUSICAL SYMBOL COMBINING DOIT 1D186 MUSICAL SYMBOL COMBINING RIP 1D187 MUSICAL SYMBOL COMBINING FLIP 1D188 MUSICAL SYMBOL COMBINING SMEAR 1D189 MUSICAL SYMBOL COMBINING BEND 1D18A MUSICAL SYMBOL COMBINING DOUBLE TONGUE 1D18B MUSICAL SYMBOL COMBINING TRIPLE TONGUE 1D18C MUSICAL SYMBOL RINFORZANDO 1D18D MUSICAL SYMBOL SUBITO 1D18E MUSICAL SYMBOL Z @ Dynamics 1D18F MUSICAL SYMBOL PIANO 1D190 MUSICAL SYMBOL MEZZO 1D191 MUSICAL SYMBOL FORTE 1D192 MUSICAL SYMBOL CRESCENDO 1D193 MUSICAL SYMBOL DECRESCENDO @ Ornaments 1D194 MUSICAL SYMBOL GRACE NOTE SLASH 1D195 MUSICAL SYMBOL GRACE NOTE NO SLASH 1D196 MUSICAL SYMBOL TR 1D197 MUSICAL SYMBOL TURN 1D198 MUSICAL SYMBOL INVERTED TURN 1D199 MUSICAL SYMBOL TURN SLASH 1D19A MUSICAL SYMBOL TURN UP 1D19B MUSICAL SYMBOL ORNAMENT STROKE-1 1D19C MUSICAL SYMBOL ORNAMENT STROKE-2 1D19D MUSICAL SYMBOL ORNAMENT STROKE-3 1D19E MUSICAL SYMBOL ORNAMENT STROKE-4 1D19F MUSICAL SYMBOL ORNAMENT STROKE-5 1D1A0 MUSICAL SYMBOL ORNAMENT STROKE-6 1D1A1 MUSICAL SYMBOL ORNAMENT STROKE-7 1D1A2 MUSICAL SYMBOL ORNAMENT STROKE-8 1D1A3 MUSICAL SYMBOL ORNAMENT STROKE-9 1D1A4 MUSICAL SYMBOL ORNAMENT STROKE-10 1D1A5 MUSICAL SYMBOL ORNAMENT STROKE-11 @ Analytics 1D1A6 MUSICAL SYMBOL HAUPTSTIMME 1D1A7 MUSICAL SYMBOL NEBENSTIMME 1D1A8 MUSICAL SYMBOL END OF STIMME 1D1A9 MUSICAL SYMBOL DEGREE SLASH @ Instrumentation 1D1AA MUSICAL SYMBOL COMBINING DOWN BOW 1D1AB MUSICAL SYMBOL COMBINING UP BOW 1D1AC MUSICAL SYMBOL COMBINING HARMONIC 1D1AD MUSICAL SYMBOL COMBINING SNAP PIZZICATO @ Pedals 1D1AE MUSICAL SYMBOL PEDAL MARK 1D1AF MUSICAL SYMBOL PEDAL UP MARK 1D1B0 MUSICAL SYMBOL HALF PEDAL MARK @ Miscellaneous symbols 1D1B1 MUSICAL SYMBOL GLISSANDO UP 1D1B2 MUSICAL SYMBOL GLISSANDO DOWN 1D1B3 MUSICAL SYMBOL WITH FINGERNAILS 1D1B4 MUSICAL SYMBOL DAMP 1D1B5 MUSICAL SYMBOL DAMP ALL @ Mensural notation @+ The following range is specific to Mensural notation. @ Mensural notes 1D1B6 MUSICAL SYMBOL MAXIMA 1D1B7 MUSICAL SYMBOL LONGA 1D1B8 MUSICAL SYMBOL BREVIS 1D1B9 MUSICAL SYMBOL SEMIBREVIS WHITE 1D1BA MUSICAL SYMBOL SEMIBREVIS BLACK 1D1BB MUSICAL SYMBOL MINIMA : 1D1B9 1D165 1D1BC MUSICAL SYMBOL MINIMA BLACK : 1D1BA 1D165 1D1BD MUSICAL SYMBOL SEMIMINIMA WHITE : 1D1BB 1D16E 1D1BE MUSICAL SYMBOL SEMIMINIMA BLACK : 1D1BC 1D16E 1D1BF MUSICAL SYMBOL FUSA WHITE : 1D1BB 1D16F 1D1C0 MUSICAL SYMBOL FUSA BLACK : 1D1BC 1D16F @ Mensural rests 1D1C1 MUSICAL SYMBOL LONGA PERFECTA REST 1D1C2 MUSICAL SYMBOL LONGA IMPERFECTA REST 1D1C3 MUSICAL SYMBOL BREVIS REST 1D1C4 MUSICAL SYMBOL SEMIBREVIS REST 1D1C5 MUSICAL SYMBOL MINIMA REST 1D1C6 MUSICAL SYMBOL SEMIMINIMA REST @ Mensural prolations 1D1C7 MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA 1D1C8 MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA 1D1C9 MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1 1D1CA MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA 1D1CB MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA 1D1CC MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1 1D1CD MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2 1D1CE MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3 @ Miscellaneous symbol 1D1CF MUSICAL SYMBOL CROIX @ Gregorian notation @+ The following range is specific to Gregorian notation. @ Clefs 1D1D0 MUSICAL SYMBOL GREGORIAN C CLEF 1D1D1 MUSICAL SYMBOL GREGORIAN F CLEF @ Accidental 1D1D2 MUSICAL SYMBOL SQUARE B @ Notes 1D1D3 MUSICAL SYMBOL VIRGA 1D1D4 MUSICAL SYMBOL PODATUS 1D1D5 MUSICAL SYMBOL CLIVIS 1D1D6 MUSICAL SYMBOL SCANDICUS 1D1D7 MUSICAL SYMBOL CLIMACUS 1D1D8 MUSICAL SYMBOL TORCULUS 1D1D9 MUSICAL SYMBOL PORRECTUS 1D1DA MUSICAL SYMBOL PORRECTUS FLEXUS 1D1DB MUSICAL SYMBOL SCANDICUS FLEXUS 1D1DC MUSICAL SYMBOL TORCULUS RESUPINUS 1D1DD MUSICAL SYMBOL PES SUBPUNCTIS @ Kievan notation @+ The following range is specific to Kievan notation. @ Clef 1D1DE MUSICAL SYMBOL KIEVAN C CLEF * Tsefaut (do or fa) clef @ Ornamentation 1D1DF MUSICAL SYMBOL KIEVAN END OF PIECE @ Notes 1D1E0 MUSICAL SYMBOL KIEVAN FINAL NOTE * nominal note located between the two rectangles 1D1E1 MUSICAL SYMBOL KIEVAN RECITATIVE MARK * nominal note located between the two rectangles 1D1E2 MUSICAL SYMBOL KIEVAN WHOLE NOTE * nominal note located between the two diamonds 1D1E3 MUSICAL SYMBOL KIEVAN HALF NOTE 1D1E4 MUSICAL SYMBOL KIEVAN QUARTER NOTE STEM DOWN 1D1E5 MUSICAL SYMBOL KIEVAN QUARTER NOTE STEM UP 1D1E6 MUSICAL SYMBOL KIEVAN EIGHTH NOTE STEM DOWN * nominal note located on the top diamond 1D1E7 MUSICAL SYMBOL KIEVAN EIGHTH NOTE STEM UP @ Accidental 1D1E8 MUSICAL SYMBOL KIEVAN FLAT SIGN @@ 1D200 Ancient Greek Musical Notation 1D24F @ Ancient Greek vocalic notation @+ In a few instances vocalic and instrumental symbols have been unified with each other. In other instances they have been unified with regular Greek letters. 1D200 GREEK VOCAL NOTATION SYMBOL-1 * vocal E 1D201 GREEK VOCAL NOTATION SYMBOL-2 * vocal first sharp of E 1D202 GREEK VOCAL NOTATION SYMBOL-3 = Greek instrumental notation symbol-3 * vocal or instrumental second sharp of E 1D203 GREEK VOCAL NOTATION SYMBOL-4 * vocal F 1D204 GREEK VOCAL NOTATION SYMBOL-5 * vocal first sharp of F 1D205 GREEK VOCAL NOTATION SYMBOL-6 = Greek instrumental notation symbol-21 * vocal second sharp of F * instrumental second sharp of d 1D206 GREEK VOCAL NOTATION SYMBOL-7 = Greek instrumental notation symbol-9 * vocal G * instrumental second sharp of G 1D207 GREEK VOCAL NOTATION SYMBOL-8 * vocal first sharp of G 1D208 GREEK VOCAL NOTATION SYMBOL-9 = Greek instrumental notation symbol-44 * vocal second sharp of G * instrumental first sharp of e´ 1D209 GREEK VOCAL NOTATION SYMBOL-10 * vocal A * this is a modification of 039F and is therefore not the same as 03D8 1D20A GREEK VOCAL NOTATION SYMBOL-11 * vocal first sharp of A 1D20B GREEK VOCAL NOTATION SYMBOL-12 * vocal second sharp of A 1D20C GREEK VOCAL NOTATION SYMBOL-13 * vocal B 1D20D GREEK VOCAL NOTATION SYMBOL-14 = Greek instrumental notation symbol-41 * vocal first sharp of B * instrumental first sharp of d´ x (latin capital letter v - 0056) 1D20E GREEK VOCAL NOTATION SYMBOL-15 = Greek instrumental notation symbol-35 * vocal second sharp of B * instrumental first sharp of b 1D20F GREEK VOCAL NOTATION SYMBOL-16 * vocal c * unlike 1D23B this character has a glyph variant that looks like a horizontal line 1D210 GREEK VOCAL NOTATION SYMBOL-17 * vocal first sharp of c 1D211 GREEK VOCAL NOTATION SYMBOL-18 = Greek instrumental notation symbol-15 * vocal second sharp of c * instrumental second sharp of B 1D212 GREEK VOCAL NOTATION SYMBOL-19 * vocal d 1D213 GREEK VOCAL NOTATION SYMBOL-20 = Greek instrumental notation symbol-28 * vocal first sharp of d * instrumental g * this is a modification of 0395 and is therefore not the same as 0046 1D214 GREEK VOCAL NOTATION SYMBOL-21 * vocal second sharp of d 1D215 GREEK VOCAL NOTATION SYMBOL-22 * vocal e 1D216 GREEK VOCAL NOTATION SYMBOL-23 * vocal first sharp of e * this is a modification of 0392 and is therefore not the same as 0052 1D217 GREEK VOCAL NOTATION SYMBOL-24 * vocal second sharp of e 1D218 GREEK VOCAL NOTATION SYMBOL-50 * vocal first sharp of g´ 1D219 GREEK VOCAL NOTATION SYMBOL-51 * vocal second sharp of g´ 1D21A GREEK VOCAL NOTATION SYMBOL-52 * vocal a´ 1D21B GREEK VOCAL NOTATION SYMBOL-53 * vocal first sharp of a´ 1D21C GREEK VOCAL NOTATION SYMBOL-54 = Greek instrumental notation symbol-20 * vocal second sharp of a´ * instrumental first sharp of d @ Ancient Greek instrumental notation 1D21D GREEK INSTRUMENTAL NOTATION SYMBOL-1 * instrumental E 1D21E GREEK INSTRUMENTAL NOTATION SYMBOL-2 * instrumental first sharp of E 1D21F GREEK INSTRUMENTAL NOTATION SYMBOL-4 * instrumental F 1D220 GREEK INSTRUMENTAL NOTATION SYMBOL-5 * instrumental first sharp of F 1D221 GREEK INSTRUMENTAL NOTATION SYMBOL-7 * instrumental G 1D222 GREEK INSTRUMENTAL NOTATION SYMBOL-8 * instrumental first sharp of G 1D223 GREEK INSTRUMENTAL NOTATION SYMBOL-11 * instrumental first sharp of A 1D224 GREEK INSTRUMENTAL NOTATION SYMBOL-12 * instrumental second sharp of A 1D225 GREEK INSTRUMENTAL NOTATION SYMBOL-13 * instrumental B 1D226 GREEK INSTRUMENTAL NOTATION SYMBOL-14 * instrumental first sharp of B 1D227 GREEK INSTRUMENTAL NOTATION SYMBOL-17 * instrumental first sharp of c 1D228 GREEK INSTRUMENTAL NOTATION SYMBOL-18 * instrumental second sharp of c 1D229 GREEK INSTRUMENTAL NOTATION SYMBOL-19 * instrumental d 1D22A GREEK INSTRUMENTAL NOTATION SYMBOL-23 * instrumental first sharp of e 1D22B GREEK INSTRUMENTAL NOTATION SYMBOL-24 * instrumental second sharp of e 1D22C GREEK INSTRUMENTAL NOTATION SYMBOL-25 * instrumental f 1D22D GREEK INSTRUMENTAL NOTATION SYMBOL-26 * instrumental first sharp of f 1D22E GREEK INSTRUMENTAL NOTATION SYMBOL-27 * instrumental second sharp of f 1D22F GREEK INSTRUMENTAL NOTATION SYMBOL-29 * instrumental first sharp of g 1D230 GREEK INSTRUMENTAL NOTATION SYMBOL-30 * instrumental second sharp of g 1D231 GREEK INSTRUMENTAL NOTATION SYMBOL-32 * instrumental first sharp of a 1D232 GREEK INSTRUMENTAL NOTATION SYMBOL-36 * instrumental second sharp of b 1D233 GREEK INSTRUMENTAL NOTATION SYMBOL-37 * instrumental c´ 1D234 GREEK INSTRUMENTAL NOTATION SYMBOL-38 * instrumental first sharp of c´ 1D235 GREEK INSTRUMENTAL NOTATION SYMBOL-39 * instrumental second sharp of c´ 1D236 GREEK INSTRUMENTAL NOTATION SYMBOL-40 * instrumental d´ 1D237 GREEK INSTRUMENTAL NOTATION SYMBOL-42 * instrumental second sharp of d´ 1D238 GREEK INSTRUMENTAL NOTATION SYMBOL-43 * instrumental e´ 1D239 GREEK INSTRUMENTAL NOTATION SYMBOL-45 * instrumental second sharp of e´ 1D23A GREEK INSTRUMENTAL NOTATION SYMBOL-47 * instrumental first sharp of f´ * similar but not identical to 002F 1D23B GREEK INSTRUMENTAL NOTATION SYMBOL-48 * instrumental second sharp of f´ * similar but not identical to 005C 1D23C GREEK INSTRUMENTAL NOTATION SYMBOL-49 * instrumental g´ 1D23D GREEK INSTRUMENTAL NOTATION SYMBOL-50 * instrumental first sharp of g´ 1D23E GREEK INSTRUMENTAL NOTATION SYMBOL-51 * instrumental second sharp of g´ 1D23F GREEK INSTRUMENTAL NOTATION SYMBOL-52 * instrumental a´ 1D240 GREEK INSTRUMENTAL NOTATION SYMBOL-53 * instrumental first sharp of a´ 1D241 GREEK INSTRUMENTAL NOTATION SYMBOL-54 * instrumental second sharp of a´ @ Further Greek musical notation symbols 1D242 COMBINING GREEK MUSICAL TRISEME x (metrical triseme - 23D7) 1D243 COMBINING GREEK MUSICAL TETRASEME x (metrical tetraseme - 23D8) 1D244 COMBINING GREEK MUSICAL PENTASEME x (metrical pentaseme - 23D9) 1D245 GREEK MUSICAL LEIMMA @@ 1D300 Tai Xuan Jing Symbols 1D35F @+ These symbols are an extension of the better-known Yijing symbols found in the Miscellaneous Symbols block. The names for the monogram and digram symbols here are not correct translations of the usual Chinese terminology. @ Monogram 1D300 MONOGRAM FOR EARTH = ren * usually associated with human (Chinese ren), rather than earth x (monogram for yang - 268A) x (monogram for yin - 268B) @ Digrams @+ The digrams extend the set of Yijing digrams; note that the Chinese aliases more correctly represent their interpretation. 1D301 DIGRAM FOR HEAVENLY EARTH = tian ren 1D302 DIGRAM FOR HUMAN EARTH = di ren 1D303 DIGRAM FOR EARTHLY HEAVEN = ren tian 1D304 DIGRAM FOR EARTHLY HUMAN = ren di 1D305 DIGRAM FOR EARTH = ren ren @ Tetragrams 1D306 TETRAGRAM FOR CENTRE 1D307 TETRAGRAM FOR FULL CIRCLE 1D308 TETRAGRAM FOR MIRED 1D309 TETRAGRAM FOR BARRIER 1D30A TETRAGRAM FOR KEEPING SMALL 1D30B TETRAGRAM FOR CONTRARIETY 1D30C TETRAGRAM FOR ASCENT 1D30D TETRAGRAM FOR OPPOSITION 1D30E TETRAGRAM FOR BRANCHING OUT 1D30F TETRAGRAM FOR DEFECTIVENESS OR DISTORTION 1D310 TETRAGRAM FOR DIVERGENCE 1D311 TETRAGRAM FOR YOUTHFULNESS 1D312 TETRAGRAM FOR INCREASE 1D313 TETRAGRAM FOR PENETRATION 1D314 TETRAGRAM FOR REACH 1D315 TETRAGRAM FOR CONTACT 1D316 TETRAGRAM FOR HOLDING BACK 1D317 TETRAGRAM FOR WAITING 1D318 TETRAGRAM FOR FOLLOWING 1D319 TETRAGRAM FOR ADVANCE 1D31A TETRAGRAM FOR RELEASE 1D31B TETRAGRAM FOR RESISTANCE 1D31C TETRAGRAM FOR EASE 1D31D TETRAGRAM FOR JOY 1D31E TETRAGRAM FOR CONTENTION 1D31F TETRAGRAM FOR ENDEAVOUR 1D320 TETRAGRAM FOR DUTIES 1D321 TETRAGRAM FOR CHANGE 1D322 TETRAGRAM FOR DECISIVENESS 1D323 TETRAGRAM FOR BOLD RESOLUTION 1D324 TETRAGRAM FOR PACKING 1D325 TETRAGRAM FOR LEGION 1D326 TETRAGRAM FOR CLOSENESS 1D327 TETRAGRAM FOR KINSHIP 1D328 TETRAGRAM FOR GATHERING 1D329 TETRAGRAM FOR STRENGTH 1D32A TETRAGRAM FOR PURITY 1D32B TETRAGRAM FOR FULLNESS 1D32C TETRAGRAM FOR RESIDENCE 1D32D TETRAGRAM FOR LAW OR MODEL 1D32E TETRAGRAM FOR RESPONSE 1D32F TETRAGRAM FOR GOING TO MEET 1D330 TETRAGRAM FOR ENCOUNTERS 1D331 TETRAGRAM FOR STOVE 1D332 TETRAGRAM FOR GREATNESS 1D333 TETRAGRAM FOR ENLARGEMENT 1D334 TETRAGRAM FOR PATTERN 1D335 TETRAGRAM FOR RITUAL 1D336 TETRAGRAM FOR FLIGHT 1D337 TETRAGRAM FOR VASTNESS OR WASTING 1D338 TETRAGRAM FOR CONSTANCY 1D339 TETRAGRAM FOR MEASURE 1D33A TETRAGRAM FOR ETERNITY 1D33B TETRAGRAM FOR UNITY 1D33C TETRAGRAM FOR DIMINISHMENT 1D33D TETRAGRAM FOR CLOSED MOUTH 1D33E TETRAGRAM FOR GUARDEDNESS 1D33F TETRAGRAM FOR GATHERING IN 1D340 TETRAGRAM FOR MASSING 1D341 TETRAGRAM FOR ACCUMULATION 1D342 TETRAGRAM FOR EMBELLISHMENT 1D343 TETRAGRAM FOR DOUBT 1D344 TETRAGRAM FOR WATCH 1D345 TETRAGRAM FOR SINKING 1D346 TETRAGRAM FOR INNER 1D347 TETRAGRAM FOR DEPARTURE 1D348 TETRAGRAM FOR DARKENING 1D349 TETRAGRAM FOR DIMMING 1D34A TETRAGRAM FOR EXHAUSTION 1D34B TETRAGRAM FOR SEVERANCE 1D34C TETRAGRAM FOR STOPPAGE 1D34D TETRAGRAM FOR HARDNESS 1D34E TETRAGRAM FOR COMPLETION 1D34F TETRAGRAM FOR CLOSURE 1D350 TETRAGRAM FOR FAILURE 1D351 TETRAGRAM FOR AGGRAVATION 1D352 TETRAGRAM FOR COMPLIANCE 1D353 TETRAGRAM FOR ON THE VERGE 1D354 TETRAGRAM FOR DIFFICULTIES 1D355 TETRAGRAM FOR LABOURING 1D356 TETRAGRAM FOR FOSTERING @@ 1D360 Counting Rod Numerals 1D37F @ Counting rod units 1D360 COUNTING ROD UNIT DIGIT ONE 1D361 COUNTING ROD UNIT DIGIT TWO 1D362 COUNTING ROD UNIT DIGIT THREE 1D363 COUNTING ROD UNIT DIGIT FOUR 1D364 COUNTING ROD UNIT DIGIT FIVE 1D365 COUNTING ROD UNIT DIGIT SIX 1D366 COUNTING ROD UNIT DIGIT SEVEN 1D367 COUNTING ROD UNIT DIGIT EIGHT 1D368 COUNTING ROD UNIT DIGIT NINE 1D369 COUNTING ROD TENS DIGIT ONE 1D36A COUNTING ROD TENS DIGIT TWO 1D36B COUNTING ROD TENS DIGIT THREE 1D36C COUNTING ROD TENS DIGIT FOUR 1D36D COUNTING ROD TENS DIGIT FIVE 1D36E COUNTING ROD TENS DIGIT SIX 1D36F COUNTING ROD TENS DIGIT SEVEN 1D370 COUNTING ROD TENS DIGIT EIGHT 1D371 COUNTING ROD TENS DIGIT NINE @@ 1D400 Mathematical Alphanumeric Symbols 1D7FF @@+ @+ To be used for mathematical variables where style variations are important semantically. For general text, use standard Latin and Greek letters with markup. @ Bold symbols 1D400 MATHEMATICAL BOLD CAPITAL A # 0041 latin capital letter a 1D401 MATHEMATICAL BOLD CAPITAL B # 0042 latin capital letter b 1D402 MATHEMATICAL BOLD CAPITAL C # 0043 latin capital letter c 1D403 MATHEMATICAL BOLD CAPITAL D # 0044 latin capital letter d 1D404 MATHEMATICAL BOLD CAPITAL E # 0045 latin capital letter e 1D405 MATHEMATICAL BOLD CAPITAL F # 0046 latin capital letter f 1D406 MATHEMATICAL BOLD CAPITAL G # 0047 latin capital letter g 1D407 MATHEMATICAL BOLD CAPITAL H # 0048 latin capital letter h 1D408 MATHEMATICAL BOLD CAPITAL I # 0049 latin capital letter i 1D409 MATHEMATICAL BOLD CAPITAL J # 004A latin capital letter j 1D40A MATHEMATICAL BOLD CAPITAL K # 004B latin capital letter k 1D40B MATHEMATICAL BOLD CAPITAL L # 004C latin capital letter l 1D40C MATHEMATICAL BOLD CAPITAL M # 004D latin capital letter m 1D40D MATHEMATICAL BOLD CAPITAL N # 004E latin capital letter n 1D40E MATHEMATICAL BOLD CAPITAL O # 004F latin capital letter o 1D40F MATHEMATICAL BOLD CAPITAL P # 0050 latin capital letter p 1D410 MATHEMATICAL BOLD CAPITAL Q # 0051 latin capital letter q 1D411 MATHEMATICAL BOLD CAPITAL R # 0052 latin capital letter r 1D412 MATHEMATICAL BOLD CAPITAL S # 0053 latin capital letter s 1D413 MATHEMATICAL BOLD CAPITAL T # 0054 latin capital letter t 1D414 MATHEMATICAL BOLD CAPITAL U # 0055 latin capital letter u 1D415 MATHEMATICAL BOLD CAPITAL V # 0056 latin capital letter v 1D416 MATHEMATICAL BOLD CAPITAL W # 0057 latin capital letter w 1D417 MATHEMATICAL BOLD CAPITAL X # 0058 latin capital letter x 1D418 MATHEMATICAL BOLD CAPITAL Y # 0059 latin capital letter y 1D419 MATHEMATICAL BOLD CAPITAL Z # 005A latin capital letter z 1D41A MATHEMATICAL BOLD SMALL A # 0061 latin small letter a 1D41B MATHEMATICAL BOLD SMALL B # 0062 latin small letter b 1D41C MATHEMATICAL BOLD SMALL C # 0063 latin small letter c 1D41D MATHEMATICAL BOLD SMALL D # 0064 latin small letter d 1D41E MATHEMATICAL BOLD SMALL E # 0065 latin small letter e 1D41F MATHEMATICAL BOLD SMALL F # 0066 latin small letter f 1D420 MATHEMATICAL BOLD SMALL G # 0067 latin small letter g 1D421 MATHEMATICAL BOLD SMALL H # 0068 latin small letter h 1D422 MATHEMATICAL BOLD SMALL I # 0069 latin small letter i 1D423 MATHEMATICAL BOLD SMALL J # 006A latin small letter j 1D424 MATHEMATICAL BOLD SMALL K # 006B latin small letter k 1D425 MATHEMATICAL BOLD SMALL L # 006C latin small letter l 1D426 MATHEMATICAL BOLD SMALL M # 006D latin small letter m 1D427 MATHEMATICAL BOLD SMALL N # 006E latin small letter n 1D428 MATHEMATICAL BOLD SMALL O # 006F latin small letter o 1D429 MATHEMATICAL BOLD SMALL P # 0070 latin small letter p 1D42A MATHEMATICAL BOLD SMALL Q # 0071 latin small letter q 1D42B MATHEMATICAL BOLD SMALL R # 0072 latin small letter r 1D42C MATHEMATICAL BOLD SMALL S # 0073 latin small letter s 1D42D MATHEMATICAL BOLD SMALL T # 0074 latin small letter t 1D42E MATHEMATICAL BOLD SMALL U # 0075 latin small letter u 1D42F MATHEMATICAL BOLD SMALL V # 0076 latin small letter v 1D430 MATHEMATICAL BOLD SMALL W # 0077 latin small letter w 1D431 MATHEMATICAL BOLD SMALL X # 0078 latin small letter x 1D432 MATHEMATICAL BOLD SMALL Y # 0079 latin small letter y 1D433 MATHEMATICAL BOLD SMALL Z # 007A latin small letter z @ Italic symbols @+ Italic symbols already encoded in the Letterlike Symbols block are omitted here to avoid duplicate encoding. 1D434 MATHEMATICAL ITALIC CAPITAL A # 0041 latin capital letter a 1D435 MATHEMATICAL ITALIC CAPITAL B # 0042 latin capital letter b 1D436 MATHEMATICAL ITALIC CAPITAL C # 0043 latin capital letter c 1D437 MATHEMATICAL ITALIC CAPITAL D # 0044 latin capital letter d 1D438 MATHEMATICAL ITALIC CAPITAL E # 0045 latin capital letter e 1D439 MATHEMATICAL ITALIC CAPITAL F # 0046 latin capital letter f 1D43A MATHEMATICAL ITALIC CAPITAL G # 0047 latin capital letter g 1D43B MATHEMATICAL ITALIC CAPITAL H # 0048 latin capital letter h 1D43C MATHEMATICAL ITALIC CAPITAL I # 0049 latin capital letter i 1D43D MATHEMATICAL ITALIC CAPITAL J # 004A latin capital letter j 1D43E MATHEMATICAL ITALIC CAPITAL K # 004B latin capital letter k 1D43F MATHEMATICAL ITALIC CAPITAL L # 004C latin capital letter l 1D440 MATHEMATICAL ITALIC CAPITAL M # 004D latin capital letter m 1D441 MATHEMATICAL ITALIC CAPITAL N # 004E latin capital letter n 1D442 MATHEMATICAL ITALIC CAPITAL O # 004F latin capital letter o 1D443 MATHEMATICAL ITALIC CAPITAL P # 0050 latin capital letter p 1D444 MATHEMATICAL ITALIC CAPITAL Q # 0051 latin capital letter q 1D445 MATHEMATICAL ITALIC CAPITAL R # 0052 latin capital letter r 1D446 MATHEMATICAL ITALIC CAPITAL S # 0053 latin capital letter s 1D447 MATHEMATICAL ITALIC CAPITAL T # 0054 latin capital letter t 1D448 MATHEMATICAL ITALIC CAPITAL U # 0055 latin capital letter u 1D449 MATHEMATICAL ITALIC CAPITAL V # 0056 latin capital letter v 1D44A MATHEMATICAL ITALIC CAPITAL W # 0057 latin capital letter w 1D44B MATHEMATICAL ITALIC CAPITAL X # 0058 latin capital letter x 1D44C MATHEMATICAL ITALIC CAPITAL Y # 0059 latin capital letter y 1D44D MATHEMATICAL ITALIC CAPITAL Z # 005A latin capital letter z 1D44E MATHEMATICAL ITALIC SMALL A # 0061 latin small letter a 1D44F MATHEMATICAL ITALIC SMALL B # 0062 latin small letter b 1D450 MATHEMATICAL ITALIC SMALL C # 0063 latin small letter c 1D451 MATHEMATICAL ITALIC SMALL D # 0064 latin small letter d 1D452 MATHEMATICAL ITALIC SMALL E # 0065 latin small letter e 1D453 MATHEMATICAL ITALIC SMALL F # 0066 latin small letter f 1D454 MATHEMATICAL ITALIC SMALL G # 0067 latin small letter g 1D455 x (planck constant - 210E) 1D456 MATHEMATICAL ITALIC SMALL I # 0069 latin small letter i 1D457 MATHEMATICAL ITALIC SMALL J # 006A latin small letter j 1D458 MATHEMATICAL ITALIC SMALL K # 006B latin small letter k 1D459 MATHEMATICAL ITALIC SMALL L # 006C latin small letter l 1D45A MATHEMATICAL ITALIC SMALL M # 006D latin small letter m 1D45B MATHEMATICAL ITALIC SMALL N # 006E latin small letter n 1D45C MATHEMATICAL ITALIC SMALL O # 006F latin small letter o 1D45D MATHEMATICAL ITALIC SMALL P # 0070 latin small letter p 1D45E MATHEMATICAL ITALIC SMALL Q # 0071 latin small letter q 1D45F MATHEMATICAL ITALIC SMALL R # 0072 latin small letter r 1D460 MATHEMATICAL ITALIC SMALL S # 0073 latin small letter s 1D461 MATHEMATICAL ITALIC SMALL T # 0074 latin small letter t 1D462 MATHEMATICAL ITALIC SMALL U # 0075 latin small letter u 1D463 MATHEMATICAL ITALIC SMALL V # 0076 latin small letter v 1D464 MATHEMATICAL ITALIC SMALL W # 0077 latin small letter w 1D465 MATHEMATICAL ITALIC SMALL X # 0078 latin small letter x 1D466 MATHEMATICAL ITALIC SMALL Y # 0079 latin small letter y 1D467 MATHEMATICAL ITALIC SMALL Z # 007A latin small letter z @ Bold italic symbols 1D468 MATHEMATICAL BOLD ITALIC CAPITAL A # 0041 latin capital letter a 1D469 MATHEMATICAL BOLD ITALIC CAPITAL B # 0042 latin capital letter b 1D46A MATHEMATICAL BOLD ITALIC CAPITAL C # 0043 latin capital letter c 1D46B MATHEMATICAL BOLD ITALIC CAPITAL D # 0044 latin capital letter d 1D46C MATHEMATICAL BOLD ITALIC CAPITAL E # 0045 latin capital letter e 1D46D MATHEMATICAL BOLD ITALIC CAPITAL F # 0046 latin capital letter f 1D46E MATHEMATICAL BOLD ITALIC CAPITAL G # 0047 latin capital letter g 1D46F MATHEMATICAL BOLD ITALIC CAPITAL H # 0048 latin capital letter h 1D470 MATHEMATICAL BOLD ITALIC CAPITAL I # 0049 latin capital letter i 1D471 MATHEMATICAL BOLD ITALIC CAPITAL J # 004A latin capital letter j 1D472 MATHEMATICAL BOLD ITALIC CAPITAL K # 004B latin capital letter k 1D473 MATHEMATICAL BOLD ITALIC CAPITAL L # 004C latin capital letter l 1D474 MATHEMATICAL BOLD ITALIC CAPITAL M # 004D latin capital letter m 1D475 MATHEMATICAL BOLD ITALIC CAPITAL N # 004E latin capital letter n 1D476 MATHEMATICAL BOLD ITALIC CAPITAL O # 004F latin capital letter o 1D477 MATHEMATICAL BOLD ITALIC CAPITAL P # 0050 latin capital letter p 1D478 MATHEMATICAL BOLD ITALIC CAPITAL Q # 0051 latin capital letter q 1D479 MATHEMATICAL BOLD ITALIC CAPITAL R # 0052 latin capital letter r 1D47A MATHEMATICAL BOLD ITALIC CAPITAL S # 0053 latin capital letter s 1D47B MATHEMATICAL BOLD ITALIC CAPITAL T # 0054 latin capital letter t 1D47C MATHEMATICAL BOLD ITALIC CAPITAL U # 0055 latin capital letter u 1D47D MATHEMATICAL BOLD ITALIC CAPITAL V # 0056 latin capital letter v 1D47E MATHEMATICAL BOLD ITALIC CAPITAL W # 0057 latin capital letter w 1D47F MATHEMATICAL BOLD ITALIC CAPITAL X # 0058 latin capital letter x 1D480 MATHEMATICAL BOLD ITALIC CAPITAL Y # 0059 latin capital letter y 1D481 MATHEMATICAL BOLD ITALIC CAPITAL Z # 005A latin capital letter z 1D482 MATHEMATICAL BOLD ITALIC SMALL A # 0061 latin small letter a 1D483 MATHEMATICAL BOLD ITALIC SMALL B # 0062 latin small letter b 1D484 MATHEMATICAL BOLD ITALIC SMALL C # 0063 latin small letter c 1D485 MATHEMATICAL BOLD ITALIC SMALL D # 0064 latin small letter d 1D486 MATHEMATICAL BOLD ITALIC SMALL E # 0065 latin small letter e 1D487 MATHEMATICAL BOLD ITALIC SMALL F # 0066 latin small letter f 1D488 MATHEMATICAL BOLD ITALIC SMALL G # 0067 latin small letter g 1D489 MATHEMATICAL BOLD ITALIC SMALL H # 0068 latin small letter h 1D48A MATHEMATICAL BOLD ITALIC SMALL I # 0069 latin small letter i 1D48B MATHEMATICAL BOLD ITALIC SMALL J # 006A latin small letter j 1D48C MATHEMATICAL BOLD ITALIC SMALL K # 006B latin small letter k 1D48D MATHEMATICAL BOLD ITALIC SMALL L # 006C latin small letter l 1D48E MATHEMATICAL BOLD ITALIC SMALL M # 006D latin small letter m 1D48F MATHEMATICAL BOLD ITALIC SMALL N # 006E latin small letter n 1D490 MATHEMATICAL BOLD ITALIC SMALL O # 006F latin small letter o 1D491 MATHEMATICAL BOLD ITALIC SMALL P # 0070 latin small letter p 1D492 MATHEMATICAL BOLD ITALIC SMALL Q # 0071 latin small letter q 1D493 MATHEMATICAL BOLD ITALIC SMALL R # 0072 latin small letter r 1D494 MATHEMATICAL BOLD ITALIC SMALL S # 0073 latin small letter s 1D495 MATHEMATICAL BOLD ITALIC SMALL T # 0074 latin small letter t 1D496 MATHEMATICAL BOLD ITALIC SMALL U # 0075 latin small letter u 1D497 MATHEMATICAL BOLD ITALIC SMALL V # 0076 latin small letter v 1D498 MATHEMATICAL BOLD ITALIC SMALL W # 0077 latin small letter w 1D499 MATHEMATICAL BOLD ITALIC SMALL X # 0078 latin small letter x 1D49A MATHEMATICAL BOLD ITALIC SMALL Y # 0079 latin small letter y 1D49B MATHEMATICAL BOLD ITALIC SMALL Z # 007A latin small letter z @ Script symbols @+ Script symbols already encoded in the Letterlike Symbols block are omitted here to avoid duplicate encoding. Fonts that use a less elaborate style are also acceptable for many uses, as long as they can be distinguished from serifed and italic styles. 1D49C MATHEMATICAL SCRIPT CAPITAL A # 0041 latin capital letter a 1D49D x (script capital b - 212C) 1D49E MATHEMATICAL SCRIPT CAPITAL C # 0043 latin capital letter c 1D49F MATHEMATICAL SCRIPT CAPITAL D # 0044 latin capital letter d 1D4A0 x (script capital e - 2130) 1D4A1 x (script capital f - 2131) 1D4A2 MATHEMATICAL SCRIPT CAPITAL G # 0047 latin capital letter g 1D4A3 x (script capital h - 210B) 1D4A4 x (script capital i - 2110) 1D4A5 MATHEMATICAL SCRIPT CAPITAL J # 004A latin capital letter j 1D4A6 MATHEMATICAL SCRIPT CAPITAL K # 004B latin capital letter k 1D4A7 x (script capital l - 2112) 1D4A8 x (script capital m - 2133) 1D4A9 MATHEMATICAL SCRIPT CAPITAL N # 004E latin capital letter n 1D4AA MATHEMATICAL SCRIPT CAPITAL O # 004F latin capital letter o 1D4AB MATHEMATICAL SCRIPT CAPITAL P = power set # 0050 latin capital letter p 1D4AC MATHEMATICAL SCRIPT CAPITAL Q # 0051 latin capital letter q 1D4AD x (script capital r - 211B) 1D4AE MATHEMATICAL SCRIPT CAPITAL S # 0053 latin capital letter s 1D4AF MATHEMATICAL SCRIPT CAPITAL T # 0054 latin capital letter t 1D4B0 MATHEMATICAL SCRIPT CAPITAL U # 0055 latin capital letter u 1D4B1 MATHEMATICAL SCRIPT CAPITAL V # 0056 latin capital letter v 1D4B2 MATHEMATICAL SCRIPT CAPITAL W # 0057 latin capital letter w 1D4B3 MATHEMATICAL SCRIPT CAPITAL X # 0058 latin capital letter x 1D4B4 MATHEMATICAL SCRIPT CAPITAL Y # 0059 latin capital letter y 1D4B5 MATHEMATICAL SCRIPT CAPITAL Z # 005A latin capital letter z 1D4B6 MATHEMATICAL SCRIPT SMALL A # 0061 latin small letter a 1D4B7 MATHEMATICAL SCRIPT SMALL B # 0062 latin small letter b 1D4B8 MATHEMATICAL SCRIPT SMALL C # 0063 latin small letter c 1D4B9 MATHEMATICAL SCRIPT SMALL D # 0064 latin small letter d 1D4BA x (script small e - 212F) 1D4BB MATHEMATICAL SCRIPT SMALL F # 0066 latin small letter f 1D4BC x (script small g - 210A) 1D4BD MATHEMATICAL SCRIPT SMALL H # 0068 latin small letter h 1D4BE MATHEMATICAL SCRIPT SMALL I # 0069 latin small letter i 1D4BF MATHEMATICAL SCRIPT SMALL J # 006A latin small letter j 1D4C0 MATHEMATICAL SCRIPT SMALL K # 006B latin small letter k 1D4C1 MATHEMATICAL SCRIPT SMALL L x (script small l - 2113) # 006C latin small letter l 1D4C2 MATHEMATICAL SCRIPT SMALL M # 006D latin small letter m 1D4C3 MATHEMATICAL SCRIPT SMALL N # 006E latin small letter n 1D4C4 x (script small o - 2134) 1D4C5 MATHEMATICAL SCRIPT SMALL P # 0070 latin small letter p 1D4C6 MATHEMATICAL SCRIPT SMALL Q # 0071 latin small letter q 1D4C7 MATHEMATICAL SCRIPT SMALL R # 0072 latin small letter r 1D4C8 MATHEMATICAL SCRIPT SMALL S # 0073 latin small letter s 1D4C9 MATHEMATICAL SCRIPT SMALL T # 0074 latin small letter t 1D4CA MATHEMATICAL SCRIPT SMALL U # 0075 latin small letter u 1D4CB MATHEMATICAL SCRIPT SMALL V # 0076 latin small letter v 1D4CC MATHEMATICAL SCRIPT SMALL W # 0077 latin small letter w 1D4CD MATHEMATICAL SCRIPT SMALL X # 0078 latin small letter x 1D4CE MATHEMATICAL SCRIPT SMALL Y # 0079 latin small letter y 1D4CF MATHEMATICAL SCRIPT SMALL Z # 007A latin small letter z @ Bold script symbols 1D4D0 MATHEMATICAL BOLD SCRIPT CAPITAL A # 0041 latin capital letter a 1D4D1 MATHEMATICAL BOLD SCRIPT CAPITAL B # 0042 latin capital letter b 1D4D2 MATHEMATICAL BOLD SCRIPT CAPITAL C # 0043 latin capital letter c 1D4D3 MATHEMATICAL BOLD SCRIPT CAPITAL D # 0044 latin capital letter d 1D4D4 MATHEMATICAL BOLD SCRIPT CAPITAL E # 0045 latin capital letter e 1D4D5 MATHEMATICAL BOLD SCRIPT CAPITAL F # 0046 latin capital letter f 1D4D6 MATHEMATICAL BOLD SCRIPT CAPITAL G # 0047 latin capital letter g 1D4D7 MATHEMATICAL BOLD SCRIPT CAPITAL H # 0048 latin capital letter h 1D4D8 MATHEMATICAL BOLD SCRIPT CAPITAL I # 0049 latin capital letter i 1D4D9 MATHEMATICAL BOLD SCRIPT CAPITAL J # 004A latin capital letter j 1D4DA MATHEMATICAL BOLD SCRIPT CAPITAL K # 004B latin capital letter k 1D4DB MATHEMATICAL BOLD SCRIPT CAPITAL L # 004C latin capital letter l 1D4DC MATHEMATICAL BOLD SCRIPT CAPITAL M # 004D latin capital letter m 1D4DD MATHEMATICAL BOLD SCRIPT CAPITAL N # 004E latin capital letter n 1D4DE MATHEMATICAL BOLD SCRIPT CAPITAL O # 004F latin capital letter o 1D4DF MATHEMATICAL BOLD SCRIPT CAPITAL P # 0050 latin capital letter p 1D4E0 MATHEMATICAL BOLD SCRIPT CAPITAL Q # 0051 latin capital letter q 1D4E1 MATHEMATICAL BOLD SCRIPT CAPITAL R # 0052 latin capital letter r 1D4E2 MATHEMATICAL BOLD SCRIPT CAPITAL S # 0053 latin capital letter s 1D4E3 MATHEMATICAL BOLD SCRIPT CAPITAL T # 0054 latin capital letter t 1D4E4 MATHEMATICAL BOLD SCRIPT CAPITAL U # 0055 latin capital letter u 1D4E5 MATHEMATICAL BOLD SCRIPT CAPITAL V # 0056 latin capital letter v 1D4E6 MATHEMATICAL BOLD SCRIPT CAPITAL W # 0057 latin capital letter w 1D4E7 MATHEMATICAL BOLD SCRIPT CAPITAL X # 0058 latin capital letter x 1D4E8 MATHEMATICAL BOLD SCRIPT CAPITAL Y # 0059 latin capital letter y 1D4E9 MATHEMATICAL BOLD SCRIPT CAPITAL Z # 005A latin capital letter z 1D4EA MATHEMATICAL BOLD SCRIPT SMALL A # 0061 latin small letter a 1D4EB MATHEMATICAL BOLD SCRIPT SMALL B # 0062 latin small letter b 1D4EC MATHEMATICAL BOLD SCRIPT SMALL C # 0063 latin small letter c 1D4ED MATHEMATICAL BOLD SCRIPT SMALL D # 0064 latin small letter d 1D4EE MATHEMATICAL BOLD SCRIPT SMALL E # 0065 latin small letter e 1D4EF MATHEMATICAL BOLD SCRIPT SMALL F # 0066 latin small letter f 1D4F0 MATHEMATICAL BOLD SCRIPT SMALL G # 0067 latin small letter g 1D4F1 MATHEMATICAL BOLD SCRIPT SMALL H # 0068 latin small letter h 1D4F2 MATHEMATICAL BOLD SCRIPT SMALL I # 0069 latin small letter i 1D4F3 MATHEMATICAL BOLD SCRIPT SMALL J # 006A latin small letter j 1D4F4 MATHEMATICAL BOLD SCRIPT SMALL K # 006B latin small letter k 1D4F5 MATHEMATICAL BOLD SCRIPT SMALL L # 006C latin small letter l 1D4F6 MATHEMATICAL BOLD SCRIPT SMALL M # 006D latin small letter m 1D4F7 MATHEMATICAL BOLD SCRIPT SMALL N # 006E latin small letter n 1D4F8 MATHEMATICAL BOLD SCRIPT SMALL O # 006F latin small letter o 1D4F9 MATHEMATICAL BOLD SCRIPT SMALL P # 0070 latin small letter p 1D4FA MATHEMATICAL BOLD SCRIPT SMALL Q # 0071 latin small letter q 1D4FB MATHEMATICAL BOLD SCRIPT SMALL R # 0072 latin small letter r 1D4FC MATHEMATICAL BOLD SCRIPT SMALL S # 0073 latin small letter s 1D4FD MATHEMATICAL BOLD SCRIPT SMALL T # 0074 latin small letter t 1D4FE MATHEMATICAL BOLD SCRIPT SMALL U # 0075 latin small letter u 1D4FF MATHEMATICAL BOLD SCRIPT SMALL V # 0076 latin small letter v 1D500 MATHEMATICAL BOLD SCRIPT SMALL W # 0077 latin small letter w 1D501 MATHEMATICAL BOLD SCRIPT SMALL X # 0078 latin small letter x 1D502 MATHEMATICAL BOLD SCRIPT SMALL Y # 0079 latin small letter y 1D503 MATHEMATICAL BOLD SCRIPT SMALL Z # 007A latin small letter z @ Fraktur symbols @+ This style is sometimes known as black-letter. Black-letter symbols already encoded in the Letterlike Symbols block are omitted here to avoid duplicate encoding. 1D504 MATHEMATICAL FRAKTUR CAPITAL A # 0041 latin capital letter a 1D505 MATHEMATICAL FRAKTUR CAPITAL B # 0042 latin capital letter b 1D506 x (black-letter capital c - 212D) 1D507 MATHEMATICAL FRAKTUR CAPITAL D # 0044 latin capital letter d 1D508 MATHEMATICAL FRAKTUR CAPITAL E # 0045 latin capital letter e 1D509 MATHEMATICAL FRAKTUR CAPITAL F # 0046 latin capital letter f 1D50A MATHEMATICAL FRAKTUR CAPITAL G # 0047 latin capital letter g 1D50B x (black-letter capital h - 210C) 1D50C x (black-letter capital i - 2111) 1D50D MATHEMATICAL FRAKTUR CAPITAL J # 004A latin capital letter j 1D50E MATHEMATICAL FRAKTUR CAPITAL K # 004B latin capital letter k 1D50F MATHEMATICAL FRAKTUR CAPITAL L # 004C latin capital letter l 1D510 MATHEMATICAL FRAKTUR CAPITAL M = New Testament majority text # 004D latin capital letter m 1D511 MATHEMATICAL FRAKTUR CAPITAL N # 004E latin capital letter n 1D512 MATHEMATICAL FRAKTUR CAPITAL O # 004F latin capital letter o 1D513 MATHEMATICAL FRAKTUR CAPITAL P # 0050 latin capital letter p 1D514 MATHEMATICAL FRAKTUR CAPITAL Q # 0051 latin capital letter q 1D515 x (black-letter capital r - 211C) 1D516 MATHEMATICAL FRAKTUR CAPITAL S = Septuagint, Greek Old Testament # 0053 latin capital letter s 1D517 MATHEMATICAL FRAKTUR CAPITAL T # 0054 latin capital letter t 1D518 MATHEMATICAL FRAKTUR CAPITAL U # 0055 latin capital letter u 1D519 MATHEMATICAL FRAKTUR CAPITAL V # 0056 latin capital letter v 1D51A MATHEMATICAL FRAKTUR CAPITAL W # 0057 latin capital letter w 1D51B MATHEMATICAL FRAKTUR CAPITAL X # 0058 latin capital letter x 1D51C MATHEMATICAL FRAKTUR CAPITAL Y # 0059 latin capital letter y 1D51D x (black-letter capital z - 2128) 1D51E MATHEMATICAL FRAKTUR SMALL A # 0061 latin small letter a 1D51F MATHEMATICAL FRAKTUR SMALL B # 0062 latin small letter b 1D520 MATHEMATICAL FRAKTUR SMALL C # 0063 latin small letter c 1D521 MATHEMATICAL FRAKTUR SMALL D # 0064 latin small letter d 1D522 MATHEMATICAL FRAKTUR SMALL E # 0065 latin small letter e 1D523 MATHEMATICAL FRAKTUR SMALL F # 0066 latin small letter f 1D524 MATHEMATICAL FRAKTUR SMALL G # 0067 latin small letter g 1D525 MATHEMATICAL FRAKTUR SMALL H # 0068 latin small letter h 1D526 MATHEMATICAL FRAKTUR SMALL I # 0069 latin small letter i 1D527 MATHEMATICAL FRAKTUR SMALL J # 006A latin small letter j 1D528 MATHEMATICAL FRAKTUR SMALL K # 006B latin small letter k 1D529 MATHEMATICAL FRAKTUR SMALL L # 006C latin small letter l 1D52A MATHEMATICAL FRAKTUR SMALL M # 006D latin small letter m 1D52B MATHEMATICAL FRAKTUR SMALL N # 006E latin small letter n 1D52C MATHEMATICAL FRAKTUR SMALL O # 006F latin small letter o 1D52D MATHEMATICAL FRAKTUR SMALL P # 0070 latin small letter p 1D52E MATHEMATICAL FRAKTUR SMALL Q # 0071 latin small letter q 1D52F MATHEMATICAL FRAKTUR SMALL R # 0072 latin small letter r 1D530 MATHEMATICAL FRAKTUR SMALL S # 0073 latin small letter s 1D531 MATHEMATICAL FRAKTUR SMALL T # 0074 latin small letter t 1D532 MATHEMATICAL FRAKTUR SMALL U # 0075 latin small letter u 1D533 MATHEMATICAL FRAKTUR SMALL V # 0076 latin small letter v 1D534 MATHEMATICAL FRAKTUR SMALL W # 0077 latin small letter w 1D535 MATHEMATICAL FRAKTUR SMALL X # 0078 latin small letter x 1D536 MATHEMATICAL FRAKTUR SMALL Y # 0079 latin small letter y 1D537 MATHEMATICAL FRAKTUR SMALL Z # 007A latin small letter z @ Double-struck symbols @+ This style is sometimes known as open-face or blackboard-bold. Double-struck symbols already encoded in the Letterlike Symbols block and omitted here to avoid duplicate encoding. Considerable variation in font style is acceptable, as long as the glyphs retain the visual element of doubled strokes. 1D538 MATHEMATICAL DOUBLE-STRUCK CAPITAL A * a glyph variant with doubled stroke on the right exists # 0041 latin capital letter a 1D539 MATHEMATICAL DOUBLE-STRUCK CAPITAL B # 0042 latin capital letter b 1D53A x (double-struck capital c - 2102) 1D53B MATHEMATICAL DOUBLE-STRUCK CAPITAL D # 0044 latin capital letter d 1D53C MATHEMATICAL DOUBLE-STRUCK CAPITAL E # 0045 latin capital letter e 1D53D MATHEMATICAL DOUBLE-STRUCK CAPITAL F # 0046 latin capital letter f 1D53E MATHEMATICAL DOUBLE-STRUCK CAPITAL G # 0047 latin capital letter g 1D53F x (double-struck capital h - 210D) 1D540 MATHEMATICAL DOUBLE-STRUCK CAPITAL I # 0049 latin capital letter i 1D541 MATHEMATICAL DOUBLE-STRUCK CAPITAL J # 004A latin capital letter j 1D542 MATHEMATICAL DOUBLE-STRUCK CAPITAL K # 004B latin capital letter k 1D543 MATHEMATICAL DOUBLE-STRUCK CAPITAL L # 004C latin capital letter l 1D544 MATHEMATICAL DOUBLE-STRUCK CAPITAL M # 004D latin capital letter m 1D545 x (double-struck capital n - 2115) 1D546 MATHEMATICAL DOUBLE-STRUCK CAPITAL O # 004F latin capital letter o 1D547 x (double-struck capital p - 2119) 1D548 x (double-struck capital q - 211A) 1D549 x (double-struck capital r - 211D) 1D54A MATHEMATICAL DOUBLE-STRUCK CAPITAL S # 0053 latin capital letter s 1D54B MATHEMATICAL DOUBLE-STRUCK CAPITAL T # 0054 latin capital letter t 1D54C MATHEMATICAL DOUBLE-STRUCK CAPITAL U # 0055 latin capital letter u 1D54D MATHEMATICAL DOUBLE-STRUCK CAPITAL V # 0056 latin capital letter v 1D54E MATHEMATICAL DOUBLE-STRUCK CAPITAL W # 0057 latin capital letter w 1D54F MATHEMATICAL DOUBLE-STRUCK CAPITAL X # 0058 latin capital letter x 1D550 MATHEMATICAL DOUBLE-STRUCK CAPITAL Y # 0059 latin capital letter y 1D551 x (double-struck capital z - 2124) 1D552 MATHEMATICAL DOUBLE-STRUCK SMALL A # 0061 latin small letter a 1D553 MATHEMATICAL DOUBLE-STRUCK SMALL B # 0062 latin small letter b 1D554 MATHEMATICAL DOUBLE-STRUCK SMALL C # 0063 latin small letter c 1D555 MATHEMATICAL DOUBLE-STRUCK SMALL D # 0064 latin small letter d 1D556 MATHEMATICAL DOUBLE-STRUCK SMALL E # 0065 latin small letter e 1D557 MATHEMATICAL DOUBLE-STRUCK SMALL F # 0066 latin small letter f 1D558 MATHEMATICAL DOUBLE-STRUCK SMALL G # 0067 latin small letter g 1D559 MATHEMATICAL DOUBLE-STRUCK SMALL H # 0068 latin small letter h 1D55A MATHEMATICAL DOUBLE-STRUCK SMALL I # 0069 latin small letter i 1D55B MATHEMATICAL DOUBLE-STRUCK SMALL J # 006A latin small letter j 1D55C MATHEMATICAL DOUBLE-STRUCK SMALL K # 006B latin small letter k 1D55D MATHEMATICAL DOUBLE-STRUCK SMALL L # 006C latin small letter l 1D55E MATHEMATICAL DOUBLE-STRUCK SMALL M # 006D latin small letter m 1D55F MATHEMATICAL DOUBLE-STRUCK SMALL N # 006E latin small letter n 1D560 MATHEMATICAL DOUBLE-STRUCK SMALL O # 006F latin small letter o 1D561 MATHEMATICAL DOUBLE-STRUCK SMALL P # 0070 latin small letter p 1D562 MATHEMATICAL DOUBLE-STRUCK SMALL Q # 0071 latin small letter q 1D563 MATHEMATICAL DOUBLE-STRUCK SMALL R # 0072 latin small letter r 1D564 MATHEMATICAL DOUBLE-STRUCK SMALL S # 0073 latin small letter s 1D565 MATHEMATICAL DOUBLE-STRUCK SMALL T # 0074 latin small letter t 1D566 MATHEMATICAL DOUBLE-STRUCK SMALL U # 0075 latin small letter u 1D567 MATHEMATICAL DOUBLE-STRUCK SMALL V # 0076 latin small letter v 1D568 MATHEMATICAL DOUBLE-STRUCK SMALL W # 0077 latin small letter w 1D569 MATHEMATICAL DOUBLE-STRUCK SMALL X # 0078 latin small letter x 1D56A MATHEMATICAL DOUBLE-STRUCK SMALL Y # 0079 latin small letter y 1D56B MATHEMATICAL DOUBLE-STRUCK SMALL Z # 007A latin small letter z @ Bold Fraktur symbols 1D56C MATHEMATICAL BOLD FRAKTUR CAPITAL A # 0041 latin capital letter a 1D56D MATHEMATICAL BOLD FRAKTUR CAPITAL B # 0042 latin capital letter b 1D56E MATHEMATICAL BOLD FRAKTUR CAPITAL C # 0043 latin capital letter c 1D56F MATHEMATICAL BOLD FRAKTUR CAPITAL D # 0044 latin capital letter d 1D570 MATHEMATICAL BOLD FRAKTUR CAPITAL E # 0045 latin capital letter e 1D571 MATHEMATICAL BOLD FRAKTUR CAPITAL F # 0046 latin capital letter f 1D572 MATHEMATICAL BOLD FRAKTUR CAPITAL G # 0047 latin capital letter g 1D573 MATHEMATICAL BOLD FRAKTUR CAPITAL H # 0048 latin capital letter h 1D574 MATHEMATICAL BOLD FRAKTUR CAPITAL I # 0049 latin capital letter i 1D575 MATHEMATICAL BOLD FRAKTUR CAPITAL J # 004A latin capital letter j 1D576 MATHEMATICAL BOLD FRAKTUR CAPITAL K # 004B latin capital letter k 1D577 MATHEMATICAL BOLD FRAKTUR CAPITAL L # 004C latin capital letter l 1D578 MATHEMATICAL BOLD FRAKTUR CAPITAL M # 004D latin capital letter m 1D579 MATHEMATICAL BOLD FRAKTUR CAPITAL N # 004E latin capital letter n 1D57A MATHEMATICAL BOLD FRAKTUR CAPITAL O # 004F latin capital letter o 1D57B MATHEMATICAL BOLD FRAKTUR CAPITAL P # 0050 latin capital letter p 1D57C MATHEMATICAL BOLD FRAKTUR CAPITAL Q # 0051 latin capital letter q 1D57D MATHEMATICAL BOLD FRAKTUR CAPITAL R # 0052 latin capital letter r 1D57E MATHEMATICAL BOLD FRAKTUR CAPITAL S # 0053 latin capital letter s 1D57F MATHEMATICAL BOLD FRAKTUR CAPITAL T # 0054 latin capital letter t 1D580 MATHEMATICAL BOLD FRAKTUR CAPITAL U # 0055 latin capital letter u 1D581 MATHEMATICAL BOLD FRAKTUR CAPITAL V # 0056 latin capital letter v 1D582 MATHEMATICAL BOLD FRAKTUR CAPITAL W # 0057 latin capital letter w 1D583 MATHEMATICAL BOLD FRAKTUR CAPITAL X # 0058 latin capital letter x 1D584 MATHEMATICAL BOLD FRAKTUR CAPITAL Y # 0059 latin capital letter y 1D585 MATHEMATICAL BOLD FRAKTUR CAPITAL Z # 005A latin capital letter z 1D586 MATHEMATICAL BOLD FRAKTUR SMALL A # 0061 latin small letter a 1D587 MATHEMATICAL BOLD FRAKTUR SMALL B # 0062 latin small letter b 1D588 MATHEMATICAL BOLD FRAKTUR SMALL C # 0063 latin small letter c 1D589 MATHEMATICAL BOLD FRAKTUR SMALL D # 0064 latin small letter d 1D58A MATHEMATICAL BOLD FRAKTUR SMALL E # 0065 latin small letter e 1D58B MATHEMATICAL BOLD FRAKTUR SMALL F # 0066 latin small letter f 1D58C MATHEMATICAL BOLD FRAKTUR SMALL G # 0067 latin small letter g 1D58D MATHEMATICAL BOLD FRAKTUR SMALL H # 0068 latin small letter h 1D58E MATHEMATICAL BOLD FRAKTUR SMALL I # 0069 latin small letter i 1D58F MATHEMATICAL BOLD FRAKTUR SMALL J # 006A latin small letter j 1D590 MATHEMATICAL BOLD FRAKTUR SMALL K # 006B latin small letter k 1D591 MATHEMATICAL BOLD FRAKTUR SMALL L # 006C latin small letter l 1D592 MATHEMATICAL BOLD FRAKTUR SMALL M # 006D latin small letter m 1D593 MATHEMATICAL BOLD FRAKTUR SMALL N # 006E latin small letter n 1D594 MATHEMATICAL BOLD FRAKTUR SMALL O # 006F latin small letter o 1D595 MATHEMATICAL BOLD FRAKTUR SMALL P # 0070 latin small letter p 1D596 MATHEMATICAL BOLD FRAKTUR SMALL Q # 0071 latin small letter q 1D597 MATHEMATICAL BOLD FRAKTUR SMALL R # 0072 latin small letter r 1D598 MATHEMATICAL BOLD FRAKTUR SMALL S # 0073 latin small letter s 1D599 MATHEMATICAL BOLD FRAKTUR SMALL T # 0074 latin small letter t 1D59A MATHEMATICAL BOLD FRAKTUR SMALL U # 0075 latin small letter u 1D59B MATHEMATICAL BOLD FRAKTUR SMALL V # 0076 latin small letter v 1D59C MATHEMATICAL BOLD FRAKTUR SMALL W # 0077 latin small letter w 1D59D MATHEMATICAL BOLD FRAKTUR SMALL X # 0078 latin small letter x 1D59E MATHEMATICAL BOLD FRAKTUR SMALL Y # 0079 latin small letter y 1D59F MATHEMATICAL BOLD FRAKTUR SMALL Z # 007A latin small letter z @ Sans-serif symbols 1D5A0 MATHEMATICAL SANS-SERIF CAPITAL A # 0041 latin capital letter a 1D5A1 MATHEMATICAL SANS-SERIF CAPITAL B # 0042 latin capital letter b 1D5A2 MATHEMATICAL SANS-SERIF CAPITAL C # 0043 latin capital letter c 1D5A3 MATHEMATICAL SANS-SERIF CAPITAL D # 0044 latin capital letter d 1D5A4 MATHEMATICAL SANS-SERIF CAPITAL E # 0045 latin capital letter e 1D5A5 MATHEMATICAL SANS-SERIF CAPITAL F # 0046 latin capital letter f 1D5A6 MATHEMATICAL SANS-SERIF CAPITAL G # 0047 latin capital letter g 1D5A7 MATHEMATICAL SANS-SERIF CAPITAL H # 0048 latin capital letter h 1D5A8 MATHEMATICAL SANS-SERIF CAPITAL I # 0049 latin capital letter i 1D5A9 MATHEMATICAL SANS-SERIF CAPITAL J # 004A latin capital letter j 1D5AA MATHEMATICAL SANS-SERIF CAPITAL K # 004B latin capital letter k 1D5AB MATHEMATICAL SANS-SERIF CAPITAL L # 004C latin capital letter l 1D5AC MATHEMATICAL SANS-SERIF CAPITAL M # 004D latin capital letter m 1D5AD MATHEMATICAL SANS-SERIF CAPITAL N # 004E latin capital letter n 1D5AE MATHEMATICAL SANS-SERIF CAPITAL O # 004F latin capital letter o 1D5AF MATHEMATICAL SANS-SERIF CAPITAL P # 0050 latin capital letter p 1D5B0 MATHEMATICAL SANS-SERIF CAPITAL Q # 0051 latin capital letter q 1D5B1 MATHEMATICAL SANS-SERIF CAPITAL R # 0052 latin capital letter r 1D5B2 MATHEMATICAL SANS-SERIF CAPITAL S # 0053 latin capital letter s 1D5B3 MATHEMATICAL SANS-SERIF CAPITAL T # 0054 latin capital letter t 1D5B4 MATHEMATICAL SANS-SERIF CAPITAL U # 0055 latin capital letter u 1D5B5 MATHEMATICAL SANS-SERIF CAPITAL V # 0056 latin capital letter v 1D5B6 MATHEMATICAL SANS-SERIF CAPITAL W # 0057 latin capital letter w 1D5B7 MATHEMATICAL SANS-SERIF CAPITAL X # 0058 latin capital letter x 1D5B8 MATHEMATICAL SANS-SERIF CAPITAL Y # 0059 latin capital letter y 1D5B9 MATHEMATICAL SANS-SERIF CAPITAL Z # 005A latin capital letter z 1D5BA MATHEMATICAL SANS-SERIF SMALL A # 0061 latin small letter a 1D5BB MATHEMATICAL SANS-SERIF SMALL B # 0062 latin small letter b 1D5BC MATHEMATICAL SANS-SERIF SMALL C # 0063 latin small letter c 1D5BD MATHEMATICAL SANS-SERIF SMALL D # 0064 latin small letter d 1D5BE MATHEMATICAL SANS-SERIF SMALL E # 0065 latin small letter e 1D5BF MATHEMATICAL SANS-SERIF SMALL F # 0066 latin small letter f 1D5C0 MATHEMATICAL SANS-SERIF SMALL G # 0067 latin small letter g 1D5C1 MATHEMATICAL SANS-SERIF SMALL H # 0068 latin small letter h 1D5C2 MATHEMATICAL SANS-SERIF SMALL I # 0069 latin small letter i 1D5C3 MATHEMATICAL SANS-SERIF SMALL J # 006A latin small letter j 1D5C4 MATHEMATICAL SANS-SERIF SMALL K # 006B latin small letter k 1D5C5 MATHEMATICAL SANS-SERIF SMALL L # 006C latin small letter l 1D5C6 MATHEMATICAL SANS-SERIF SMALL M # 006D latin small letter m 1D5C7 MATHEMATICAL SANS-SERIF SMALL N # 006E latin small letter n 1D5C8 MATHEMATICAL SANS-SERIF SMALL O # 006F latin small letter o 1D5C9 MATHEMATICAL SANS-SERIF SMALL P # 0070 latin small letter p 1D5CA MATHEMATICAL SANS-SERIF SMALL Q # 0071 latin small letter q 1D5CB MATHEMATICAL SANS-SERIF SMALL R # 0072 latin small letter r 1D5CC MATHEMATICAL SANS-SERIF SMALL S # 0073 latin small letter s 1D5CD MATHEMATICAL SANS-SERIF SMALL T # 0074 latin small letter t 1D5CE MATHEMATICAL SANS-SERIF SMALL U # 0075 latin small letter u 1D5CF MATHEMATICAL SANS-SERIF SMALL V # 0076 latin small letter v 1D5D0 MATHEMATICAL SANS-SERIF SMALL W # 0077 latin small letter w 1D5D1 MATHEMATICAL SANS-SERIF SMALL X # 0078 latin small letter x 1D5D2 MATHEMATICAL SANS-SERIF SMALL Y # 0079 latin small letter y 1D5D3 MATHEMATICAL SANS-SERIF SMALL Z # 007A latin small letter z @ Sans-serif bold symbols 1D5D4 MATHEMATICAL SANS-SERIF BOLD CAPITAL A # 0041 latin capital letter a 1D5D5 MATHEMATICAL SANS-SERIF BOLD CAPITAL B # 0042 latin capital letter b 1D5D6 MATHEMATICAL SANS-SERIF BOLD CAPITAL C # 0043 latin capital letter c 1D5D7 MATHEMATICAL SANS-SERIF BOLD CAPITAL D # 0044 latin capital letter d 1D5D8 MATHEMATICAL SANS-SERIF BOLD CAPITAL E # 0045 latin capital letter e 1D5D9 MATHEMATICAL SANS-SERIF BOLD CAPITAL F # 0046 latin capital letter f 1D5DA MATHEMATICAL SANS-SERIF BOLD CAPITAL G # 0047 latin capital letter g 1D5DB MATHEMATICAL SANS-SERIF BOLD CAPITAL H # 0048 latin capital letter h 1D5DC MATHEMATICAL SANS-SERIF BOLD CAPITAL I # 0049 latin capital letter i 1D5DD MATHEMATICAL SANS-SERIF BOLD CAPITAL J # 004A latin capital letter j 1D5DE MATHEMATICAL SANS-SERIF BOLD CAPITAL K # 004B latin capital letter k 1D5DF MATHEMATICAL SANS-SERIF BOLD CAPITAL L # 004C latin capital letter l 1D5E0 MATHEMATICAL SANS-SERIF BOLD CAPITAL M # 004D latin capital letter m 1D5E1 MATHEMATICAL SANS-SERIF BOLD CAPITAL N # 004E latin capital letter n 1D5E2 MATHEMATICAL SANS-SERIF BOLD CAPITAL O # 004F latin capital letter o 1D5E3 MATHEMATICAL SANS-SERIF BOLD CAPITAL P # 0050 latin capital letter p 1D5E4 MATHEMATICAL SANS-SERIF BOLD CAPITAL Q # 0051 latin capital letter q 1D5E5 MATHEMATICAL SANS-SERIF BOLD CAPITAL R # 0052 latin capital letter r 1D5E6 MATHEMATICAL SANS-SERIF BOLD CAPITAL S # 0053 latin capital letter s 1D5E7 MATHEMATICAL SANS-SERIF BOLD CAPITAL T # 0054 latin capital letter t 1D5E8 MATHEMATICAL SANS-SERIF BOLD CAPITAL U # 0055 latin capital letter u 1D5E9 MATHEMATICAL SANS-SERIF BOLD CAPITAL V # 0056 latin capital letter v 1D5EA MATHEMATICAL SANS-SERIF BOLD CAPITAL W # 0057 latin capital letter w 1D5EB MATHEMATICAL SANS-SERIF BOLD CAPITAL X # 0058 latin capital letter x 1D5EC MATHEMATICAL SANS-SERIF BOLD CAPITAL Y # 0059 latin capital letter y 1D5ED MATHEMATICAL SANS-SERIF BOLD CAPITAL Z # 005A latin capital letter z 1D5EE MATHEMATICAL SANS-SERIF BOLD SMALL A # 0061 latin small letter a 1D5EF MATHEMATICAL SANS-SERIF BOLD SMALL B # 0062 latin small letter b 1D5F0 MATHEMATICAL SANS-SERIF BOLD SMALL C # 0063 latin small letter c 1D5F1 MATHEMATICAL SANS-SERIF BOLD SMALL D # 0064 latin small letter d 1D5F2 MATHEMATICAL SANS-SERIF BOLD SMALL E # 0065 latin small letter e 1D5F3 MATHEMATICAL SANS-SERIF BOLD SMALL F # 0066 latin small letter f 1D5F4 MATHEMATICAL SANS-SERIF BOLD SMALL G # 0067 latin small letter g 1D5F5 MATHEMATICAL SANS-SERIF BOLD SMALL H # 0068 latin small letter h 1D5F6 MATHEMATICAL SANS-SERIF BOLD SMALL I # 0069 latin small letter i 1D5F7 MATHEMATICAL SANS-SERIF BOLD SMALL J # 006A latin small letter j 1D5F8 MATHEMATICAL SANS-SERIF BOLD SMALL K # 006B latin small letter k 1D5F9 MATHEMATICAL SANS-SERIF BOLD SMALL L # 006C latin small letter l 1D5FA MATHEMATICAL SANS-SERIF BOLD SMALL M # 006D latin small letter m 1D5FB MATHEMATICAL SANS-SERIF BOLD SMALL N # 006E latin small letter n 1D5FC MATHEMATICAL SANS-SERIF BOLD SMALL O # 006F latin small letter o 1D5FD MATHEMATICAL SANS-SERIF BOLD SMALL P # 0070 latin small letter p 1D5FE MATHEMATICAL SANS-SERIF BOLD SMALL Q # 0071 latin small letter q 1D5FF MATHEMATICAL SANS-SERIF BOLD SMALL R # 0072 latin small letter r 1D600 MATHEMATICAL SANS-SERIF BOLD SMALL S # 0073 latin small letter s 1D601 MATHEMATICAL SANS-SERIF BOLD SMALL T # 0074 latin small letter t 1D602 MATHEMATICAL SANS-SERIF BOLD SMALL U # 0075 latin small letter u 1D603 MATHEMATICAL SANS-SERIF BOLD SMALL V # 0076 latin small letter v 1D604 MATHEMATICAL SANS-SERIF BOLD SMALL W # 0077 latin small letter w 1D605 MATHEMATICAL SANS-SERIF BOLD SMALL X # 0078 latin small letter x 1D606 MATHEMATICAL SANS-SERIF BOLD SMALL Y # 0079 latin small letter y 1D607 MATHEMATICAL SANS-SERIF BOLD SMALL Z # 007A latin small letter z @ Sans-serif italic symbols 1D608 MATHEMATICAL SANS-SERIF ITALIC CAPITAL A # 0041 latin capital letter a 1D609 MATHEMATICAL SANS-SERIF ITALIC CAPITAL B # 0042 latin capital letter b 1D60A MATHEMATICAL SANS-SERIF ITALIC CAPITAL C # 0043 latin capital letter c 1D60B MATHEMATICAL SANS-SERIF ITALIC CAPITAL D # 0044 latin capital letter d 1D60C MATHEMATICAL SANS-SERIF ITALIC CAPITAL E # 0045 latin capital letter e 1D60D MATHEMATICAL SANS-SERIF ITALIC CAPITAL F # 0046 latin capital letter f 1D60E MATHEMATICAL SANS-SERIF ITALIC CAPITAL G # 0047 latin capital letter g 1D60F MATHEMATICAL SANS-SERIF ITALIC CAPITAL H # 0048 latin capital letter h 1D610 MATHEMATICAL SANS-SERIF ITALIC CAPITAL I # 0049 latin capital letter i 1D611 MATHEMATICAL SANS-SERIF ITALIC CAPITAL J # 004A latin capital letter j 1D612 MATHEMATICAL SANS-SERIF ITALIC CAPITAL K # 004B latin capital letter k 1D613 MATHEMATICAL SANS-SERIF ITALIC CAPITAL L # 004C latin capital letter l 1D614 MATHEMATICAL SANS-SERIF ITALIC CAPITAL M # 004D latin capital letter m 1D615 MATHEMATICAL SANS-SERIF ITALIC CAPITAL N # 004E latin capital letter n 1D616 MATHEMATICAL SANS-SERIF ITALIC CAPITAL O # 004F latin capital letter o 1D617 MATHEMATICAL SANS-SERIF ITALIC CAPITAL P # 0050 latin capital letter p 1D618 MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q # 0051 latin capital letter q 1D619 MATHEMATICAL SANS-SERIF ITALIC CAPITAL R # 0052 latin capital letter r 1D61A MATHEMATICAL SANS-SERIF ITALIC CAPITAL S # 0053 latin capital letter s 1D61B MATHEMATICAL SANS-SERIF ITALIC CAPITAL T # 0054 latin capital letter t 1D61C MATHEMATICAL SANS-SERIF ITALIC CAPITAL U # 0055 latin capital letter u 1D61D MATHEMATICAL SANS-SERIF ITALIC CAPITAL V # 0056 latin capital letter v 1D61E MATHEMATICAL SANS-SERIF ITALIC CAPITAL W # 0057 latin capital letter w 1D61F MATHEMATICAL SANS-SERIF ITALIC CAPITAL X # 0058 latin capital letter x 1D620 MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y # 0059 latin capital letter y 1D621 MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z # 005A latin capital letter z 1D622 MATHEMATICAL SANS-SERIF ITALIC SMALL A # 0061 latin small letter a 1D623 MATHEMATICAL SANS-SERIF ITALIC SMALL B # 0062 latin small letter b 1D624 MATHEMATICAL SANS-SERIF ITALIC SMALL C # 0063 latin small letter c 1D625 MATHEMATICAL SANS-SERIF ITALIC SMALL D # 0064 latin small letter d 1D626 MATHEMATICAL SANS-SERIF ITALIC SMALL E # 0065 latin small letter e 1D627 MATHEMATICAL SANS-SERIF ITALIC SMALL F # 0066 latin small letter f 1D628 MATHEMATICAL SANS-SERIF ITALIC SMALL G # 0067 latin small letter g 1D629 MATHEMATICAL SANS-SERIF ITALIC SMALL H # 0068 latin small letter h 1D62A MATHEMATICAL SANS-SERIF ITALIC SMALL I # 0069 latin small letter i 1D62B MATHEMATICAL SANS-SERIF ITALIC SMALL J # 006A latin small letter j 1D62C MATHEMATICAL SANS-SERIF ITALIC SMALL K # 006B latin small letter k 1D62D MATHEMATICAL SANS-SERIF ITALIC SMALL L # 006C latin small letter l 1D62E MATHEMATICAL SANS-SERIF ITALIC SMALL M # 006D latin small letter m 1D62F MATHEMATICAL SANS-SERIF ITALIC SMALL N # 006E latin small letter n 1D630 MATHEMATICAL SANS-SERIF ITALIC SMALL O # 006F latin small letter o 1D631 MATHEMATICAL SANS-SERIF ITALIC SMALL P # 0070 latin small letter p 1D632 MATHEMATICAL SANS-SERIF ITALIC SMALL Q # 0071 latin small letter q 1D633 MATHEMATICAL SANS-SERIF ITALIC SMALL R # 0072 latin small letter r 1D634 MATHEMATICAL SANS-SERIF ITALIC SMALL S # 0073 latin small letter s 1D635 MATHEMATICAL SANS-SERIF ITALIC SMALL T # 0074 latin small letter t 1D636 MATHEMATICAL SANS-SERIF ITALIC SMALL U # 0075 latin small letter u 1D637 MATHEMATICAL SANS-SERIF ITALIC SMALL V # 0076 latin small letter v 1D638 MATHEMATICAL SANS-SERIF ITALIC SMALL W # 0077 latin small letter w 1D639 MATHEMATICAL SANS-SERIF ITALIC SMALL X # 0078 latin small letter x 1D63A MATHEMATICAL SANS-SERIF ITALIC SMALL Y # 0079 latin small letter y 1D63B MATHEMATICAL SANS-SERIF ITALIC SMALL Z # 007A latin small letter z @ Sans-serif bold italic symbols 1D63C MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A # 0041 latin capital letter a 1D63D MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B # 0042 latin capital letter b 1D63E MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C # 0043 latin capital letter c 1D63F MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D # 0044 latin capital letter d 1D640 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E # 0045 latin capital letter e 1D641 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F # 0046 latin capital letter f 1D642 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G # 0047 latin capital letter g 1D643 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H # 0048 latin capital letter h 1D644 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I # 0049 latin capital letter i 1D645 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J # 004A latin capital letter j 1D646 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K # 004B latin capital letter k 1D647 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L # 004C latin capital letter l 1D648 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M # 004D latin capital letter m 1D649 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N # 004E latin capital letter n 1D64A MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O # 004F latin capital letter o 1D64B MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P # 0050 latin capital letter p 1D64C MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q # 0051 latin capital letter q 1D64D MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R # 0052 latin capital letter r 1D64E MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S # 0053 latin capital letter s 1D64F MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T # 0054 latin capital letter t 1D650 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U # 0055 latin capital letter u 1D651 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V # 0056 latin capital letter v 1D652 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W # 0057 latin capital letter w 1D653 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X # 0058 latin capital letter x 1D654 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y # 0059 latin capital letter y 1D655 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z # 005A latin capital letter z 1D656 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A # 0061 latin small letter a 1D657 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B # 0062 latin small letter b 1D658 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C # 0063 latin small letter c 1D659 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D # 0064 latin small letter d 1D65A MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E # 0065 latin small letter e 1D65B MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F # 0066 latin small letter f 1D65C MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G # 0067 latin small letter g 1D65D MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H # 0068 latin small letter h 1D65E MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I # 0069 latin small letter i 1D65F MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J # 006A latin small letter j 1D660 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K # 006B latin small letter k 1D661 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L # 006C latin small letter l 1D662 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M # 006D latin small letter m 1D663 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N # 006E latin small letter n 1D664 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O # 006F latin small letter o 1D665 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P # 0070 latin small letter p 1D666 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q # 0071 latin small letter q 1D667 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R # 0072 latin small letter r 1D668 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S # 0073 latin small letter s 1D669 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T # 0074 latin small letter t 1D66A MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U # 0075 latin small letter u 1D66B MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V # 0076 latin small letter v 1D66C MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W # 0077 latin small letter w 1D66D MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X # 0078 latin small letter x 1D66E MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y # 0079 latin small letter y 1D66F MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z # 007A latin small letter z @ Monospace symbols 1D670 MATHEMATICAL MONOSPACE CAPITAL A # 0041 latin capital letter a 1D671 MATHEMATICAL MONOSPACE CAPITAL B # 0042 latin capital letter b 1D672 MATHEMATICAL MONOSPACE CAPITAL C # 0043 latin capital letter c 1D673 MATHEMATICAL MONOSPACE CAPITAL D # 0044 latin capital letter d 1D674 MATHEMATICAL MONOSPACE CAPITAL E # 0045 latin capital letter e 1D675 MATHEMATICAL MONOSPACE CAPITAL F # 0046 latin capital letter f 1D676 MATHEMATICAL MONOSPACE CAPITAL G # 0047 latin capital letter g 1D677 MATHEMATICAL MONOSPACE CAPITAL H # 0048 latin capital letter h 1D678 MATHEMATICAL MONOSPACE CAPITAL I # 0049 latin capital letter i 1D679 MATHEMATICAL MONOSPACE CAPITAL J # 004A latin capital letter j 1D67A MATHEMATICAL MONOSPACE CAPITAL K # 004B latin capital letter k 1D67B MATHEMATICAL MONOSPACE CAPITAL L # 004C latin capital letter l 1D67C MATHEMATICAL MONOSPACE CAPITAL M # 004D latin capital letter m 1D67D MATHEMATICAL MONOSPACE CAPITAL N # 004E latin capital letter n 1D67E MATHEMATICAL MONOSPACE CAPITAL O # 004F latin capital letter o 1D67F MATHEMATICAL MONOSPACE CAPITAL P # 0050 latin capital letter p 1D680 MATHEMATICAL MONOSPACE CAPITAL Q # 0051 latin capital letter q 1D681 MATHEMATICAL MONOSPACE CAPITAL R # 0052 latin capital letter r 1D682 MATHEMATICAL MONOSPACE CAPITAL S # 0053 latin capital letter s 1D683 MATHEMATICAL MONOSPACE CAPITAL T # 0054 latin capital letter t 1D684 MATHEMATICAL MONOSPACE CAPITAL U # 0055 latin capital letter u 1D685 MATHEMATICAL MONOSPACE CAPITAL V # 0056 latin capital letter v 1D686 MATHEMATICAL MONOSPACE CAPITAL W # 0057 latin capital letter w 1D687 MATHEMATICAL MONOSPACE CAPITAL X # 0058 latin capital letter x 1D688 MATHEMATICAL MONOSPACE CAPITAL Y # 0059 latin capital letter y 1D689 MATHEMATICAL MONOSPACE CAPITAL Z # 005A latin capital letter z 1D68A MATHEMATICAL MONOSPACE SMALL A # 0061 latin small letter a 1D68B MATHEMATICAL MONOSPACE SMALL B # 0062 latin small letter b 1D68C MATHEMATICAL MONOSPACE SMALL C # 0063 latin small letter c 1D68D MATHEMATICAL MONOSPACE SMALL D # 0064 latin small letter d 1D68E MATHEMATICAL MONOSPACE SMALL E # 0065 latin small letter e 1D68F MATHEMATICAL MONOSPACE SMALL F # 0066 latin small letter f 1D690 MATHEMATICAL MONOSPACE SMALL G # 0067 latin small letter g 1D691 MATHEMATICAL MONOSPACE SMALL H # 0068 latin small letter h 1D692 MATHEMATICAL MONOSPACE SMALL I # 0069 latin small letter i 1D693 MATHEMATICAL MONOSPACE SMALL J # 006A latin small letter j 1D694 MATHEMATICAL MONOSPACE SMALL K # 006B latin small letter k 1D695 MATHEMATICAL MONOSPACE SMALL L # 006C latin small letter l 1D696 MATHEMATICAL MONOSPACE SMALL M # 006D latin small letter m 1D697 MATHEMATICAL MONOSPACE SMALL N # 006E latin small letter n 1D698 MATHEMATICAL MONOSPACE SMALL O # 006F latin small letter o 1D699 MATHEMATICAL MONOSPACE SMALL P # 0070 latin small letter p 1D69A MATHEMATICAL MONOSPACE SMALL Q # 0071 latin small letter q 1D69B MATHEMATICAL MONOSPACE SMALL R # 0072 latin small letter r 1D69C MATHEMATICAL MONOSPACE SMALL S # 0073 latin small letter s 1D69D MATHEMATICAL MONOSPACE SMALL T # 0074 latin small letter t 1D69E MATHEMATICAL MONOSPACE SMALL U # 0075 latin small letter u 1D69F MATHEMATICAL MONOSPACE SMALL V # 0076 latin small letter v 1D6A0 MATHEMATICAL MONOSPACE SMALL W # 0077 latin small letter w 1D6A1 MATHEMATICAL MONOSPACE SMALL X # 0078 latin small letter x 1D6A2 MATHEMATICAL MONOSPACE SMALL Y # 0079 latin small letter y 1D6A3 MATHEMATICAL MONOSPACE SMALL Z # 007A latin small letter z @ Dotless symbols @+ For use as independent symbols. These are not required as base characters for accents since regular i and j are soft-dotted in Unicode. 1D6A4 MATHEMATICAL ITALIC SMALL DOTLESS I = \imath x (latin small letter dotless i - 0131) x (mathematical italic small i - 1D456) # 0131 latin small letter dotless i 1D6A5 MATHEMATICAL ITALIC SMALL DOTLESS J = \jmath x (latin small letter dotless j - 0237) x (mathematical italic small j - 1D457) # 0237 latin small letter dotless j @ Bold Greek symbols 1D6A8 MATHEMATICAL BOLD CAPITAL ALPHA # 0391 greek capital letter alpha 1D6A9 MATHEMATICAL BOLD CAPITAL BETA # 0392 greek capital letter beta 1D6AA MATHEMATICAL BOLD CAPITAL GAMMA # 0393 greek capital letter gamma 1D6AB MATHEMATICAL BOLD CAPITAL DELTA # 0394 greek capital letter delta 1D6AC MATHEMATICAL BOLD CAPITAL EPSILON # 0395 greek capital letter epsilon 1D6AD MATHEMATICAL BOLD CAPITAL ZETA # 0396 greek capital letter zeta 1D6AE MATHEMATICAL BOLD CAPITAL ETA # 0397 greek capital letter eta 1D6AF MATHEMATICAL BOLD CAPITAL THETA # 0398 greek capital letter theta 1D6B0 MATHEMATICAL BOLD CAPITAL IOTA # 0399 greek capital letter iota 1D6B1 MATHEMATICAL BOLD CAPITAL KAPPA # 039A greek capital letter kappa 1D6B2 MATHEMATICAL BOLD CAPITAL LAMDA # 039B greek capital letter lamda 1D6B3 MATHEMATICAL BOLD CAPITAL MU # 039C greek capital letter mu 1D6B4 MATHEMATICAL BOLD CAPITAL NU # 039D greek capital letter nu 1D6B5 MATHEMATICAL BOLD CAPITAL XI # 039E greek capital letter xi 1D6B6 MATHEMATICAL BOLD CAPITAL OMICRON # 039F greek capital letter omicron 1D6B7 MATHEMATICAL BOLD CAPITAL PI # 03A0 greek capital letter pi 1D6B8 MATHEMATICAL BOLD CAPITAL RHO # 03A1 greek capital letter rho 1D6B9 MATHEMATICAL BOLD CAPITAL THETA SYMBOL # 03F4 greek capital theta symbol 1D6BA MATHEMATICAL BOLD CAPITAL SIGMA # 03A3 greek capital letter sigma 1D6BB MATHEMATICAL BOLD CAPITAL TAU # 03A4 greek capital letter tau 1D6BC MATHEMATICAL BOLD CAPITAL UPSILON # 03A5 greek capital letter upsilon 1D6BD MATHEMATICAL BOLD CAPITAL PHI # 03A6 greek capital letter phi 1D6BE MATHEMATICAL BOLD CAPITAL CHI # 03A7 greek capital letter chi 1D6BF MATHEMATICAL BOLD CAPITAL PSI # 03A8 greek capital letter psi 1D6C0 MATHEMATICAL BOLD CAPITAL OMEGA # 03A9 greek capital letter omega 1D6C1 MATHEMATICAL BOLD NABLA # 2207 nabla 1D6C2 MATHEMATICAL BOLD SMALL ALPHA # 03B1 greek small letter alpha 1D6C3 MATHEMATICAL BOLD SMALL BETA # 03B2 greek small letter beta 1D6C4 MATHEMATICAL BOLD SMALL GAMMA # 03B3 greek small letter gamma 1D6C5 MATHEMATICAL BOLD SMALL DELTA # 03B4 greek small letter delta 1D6C6 MATHEMATICAL BOLD SMALL EPSILON # 03B5 greek small letter epsilon 1D6C7 MATHEMATICAL BOLD SMALL ZETA # 03B6 greek small letter zeta 1D6C8 MATHEMATICAL BOLD SMALL ETA # 03B7 greek small letter eta 1D6C9 MATHEMATICAL BOLD SMALL THETA # 03B8 greek small letter theta 1D6CA MATHEMATICAL BOLD SMALL IOTA # 03B9 greek small letter iota 1D6CB MATHEMATICAL BOLD SMALL KAPPA # 03BA greek small letter kappa 1D6CC MATHEMATICAL BOLD SMALL LAMDA # 03BB greek small letter lamda 1D6CD MATHEMATICAL BOLD SMALL MU # 03BC greek small letter mu 1D6CE MATHEMATICAL BOLD SMALL NU # 03BD greek small letter nu 1D6CF MATHEMATICAL BOLD SMALL XI # 03BE greek small letter xi 1D6D0 MATHEMATICAL BOLD SMALL OMICRON # 03BF greek small letter omicron 1D6D1 MATHEMATICAL BOLD SMALL PI # 03C0 greek small letter pi 1D6D2 MATHEMATICAL BOLD SMALL RHO # 03C1 greek small letter rho 1D6D3 MATHEMATICAL BOLD SMALL FINAL SIGMA # 03C2 greek small letter final sigma 1D6D4 MATHEMATICAL BOLD SMALL SIGMA # 03C3 greek small letter sigma 1D6D5 MATHEMATICAL BOLD SMALL TAU # 03C4 greek small letter tau 1D6D6 MATHEMATICAL BOLD SMALL UPSILON # 03C5 greek small letter upsilon 1D6D7 MATHEMATICAL BOLD SMALL PHI # 03C6 greek small letter phi 1D6D8 MATHEMATICAL BOLD SMALL CHI # 03C7 greek small letter chi 1D6D9 MATHEMATICAL BOLD SMALL PSI # 03C8 greek small letter psi 1D6DA MATHEMATICAL BOLD SMALL OMEGA # 03C9 greek small letter omega @ Additional bold Greek symbols 1D6DB MATHEMATICAL BOLD PARTIAL DIFFERENTIAL # 2202 partial differential 1D6DC MATHEMATICAL BOLD EPSILON SYMBOL # 03F5 greek lunate epsilon symbol 1D6DD MATHEMATICAL BOLD THETA SYMBOL # 03D1 greek theta symbol 1D6DE MATHEMATICAL BOLD KAPPA SYMBOL # 03F0 greek kappa symbol 1D6DF MATHEMATICAL BOLD PHI SYMBOL # 03D5 greek phi symbol 1D6E0 MATHEMATICAL BOLD RHO SYMBOL # 03F1 greek rho symbol 1D6E1 MATHEMATICAL BOLD PI SYMBOL # 03D6 greek pi symbol @ Italic Greek symbols 1D6E2 MATHEMATICAL ITALIC CAPITAL ALPHA # 0391 greek capital letter alpha 1D6E3 MATHEMATICAL ITALIC CAPITAL BETA # 0392 greek capital letter beta 1D6E4 MATHEMATICAL ITALIC CAPITAL GAMMA # 0393 greek capital letter gamma 1D6E5 MATHEMATICAL ITALIC CAPITAL DELTA # 0394 greek capital letter delta 1D6E6 MATHEMATICAL ITALIC CAPITAL EPSILON # 0395 greek capital letter epsilon 1D6E7 MATHEMATICAL ITALIC CAPITAL ZETA # 0396 greek capital letter zeta 1D6E8 MATHEMATICAL ITALIC CAPITAL ETA # 0397 greek capital letter eta 1D6E9 MATHEMATICAL ITALIC CAPITAL THETA # 0398 greek capital letter theta 1D6EA MATHEMATICAL ITALIC CAPITAL IOTA # 0399 greek capital letter iota 1D6EB MATHEMATICAL ITALIC CAPITAL KAPPA # 039A greek capital letter kappa 1D6EC MATHEMATICAL ITALIC CAPITAL LAMDA # 039B greek capital letter lamda 1D6ED MATHEMATICAL ITALIC CAPITAL MU # 039C greek capital letter mu 1D6EE MATHEMATICAL ITALIC CAPITAL NU # 039D greek capital letter nu 1D6EF MATHEMATICAL ITALIC CAPITAL XI # 039E greek capital letter xi 1D6F0 MATHEMATICAL ITALIC CAPITAL OMICRON # 039F greek capital letter omicron 1D6F1 MATHEMATICAL ITALIC CAPITAL PI # 03A0 greek capital letter pi 1D6F2 MATHEMATICAL ITALIC CAPITAL RHO # 03A1 greek capital letter rho 1D6F3 MATHEMATICAL ITALIC CAPITAL THETA SYMBOL # 03F4 greek capital theta symbol 1D6F4 MATHEMATICAL ITALIC CAPITAL SIGMA # 03A3 greek capital letter sigma 1D6F5 MATHEMATICAL ITALIC CAPITAL TAU # 03A4 greek capital letter tau 1D6F6 MATHEMATICAL ITALIC CAPITAL UPSILON # 03A5 greek capital letter upsilon 1D6F7 MATHEMATICAL ITALIC CAPITAL PHI # 03A6 greek capital letter phi 1D6F8 MATHEMATICAL ITALIC CAPITAL CHI # 03A7 greek capital letter chi 1D6F9 MATHEMATICAL ITALIC CAPITAL PSI # 03A8 greek capital letter psi 1D6FA MATHEMATICAL ITALIC CAPITAL OMEGA # 03A9 greek capital letter omega 1D6FB MATHEMATICAL ITALIC NABLA # 2207 nabla 1D6FC MATHEMATICAL ITALIC SMALL ALPHA # 03B1 greek small letter alpha 1D6FD MATHEMATICAL ITALIC SMALL BETA # 03B2 greek small letter beta 1D6FE MATHEMATICAL ITALIC SMALL GAMMA # 03B3 greek small letter gamma 1D6FF MATHEMATICAL ITALIC SMALL DELTA # 03B4 greek small letter delta 1D700 MATHEMATICAL ITALIC SMALL EPSILON # 03B5 greek small letter epsilon 1D701 MATHEMATICAL ITALIC SMALL ZETA # 03B6 greek small letter zeta 1D702 MATHEMATICAL ITALIC SMALL ETA # 03B7 greek small letter eta 1D703 MATHEMATICAL ITALIC SMALL THETA # 03B8 greek small letter theta 1D704 MATHEMATICAL ITALIC SMALL IOTA # 03B9 greek small letter iota 1D705 MATHEMATICAL ITALIC SMALL KAPPA # 03BA greek small letter kappa 1D706 MATHEMATICAL ITALIC SMALL LAMDA # 03BB greek small letter lamda 1D707 MATHEMATICAL ITALIC SMALL MU # 03BC greek small letter mu 1D708 MATHEMATICAL ITALIC SMALL NU # 03BD greek small letter nu 1D709 MATHEMATICAL ITALIC SMALL XI # 03BE greek small letter xi 1D70A MATHEMATICAL ITALIC SMALL OMICRON # 03BF greek small letter omicron 1D70B MATHEMATICAL ITALIC SMALL PI # 03C0 greek small letter pi 1D70C MATHEMATICAL ITALIC SMALL RHO # 03C1 greek small letter rho 1D70D MATHEMATICAL ITALIC SMALL FINAL SIGMA # 03C2 greek small letter final sigma 1D70E MATHEMATICAL ITALIC SMALL SIGMA # 03C3 greek small letter sigma 1D70F MATHEMATICAL ITALIC SMALL TAU # 03C4 greek small letter tau 1D710 MATHEMATICAL ITALIC SMALL UPSILON # 03C5 greek small letter upsilon 1D711 MATHEMATICAL ITALIC SMALL PHI # 03C6 greek small letter phi 1D712 MATHEMATICAL ITALIC SMALL CHI # 03C7 greek small letter chi 1D713 MATHEMATICAL ITALIC SMALL PSI # 03C8 greek small letter psi 1D714 MATHEMATICAL ITALIC SMALL OMEGA # 03C9 greek small letter omega @ Additional italic Greek symbols 1D715 MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL # 2202 partial differential 1D716 MATHEMATICAL ITALIC EPSILON SYMBOL # 03F5 greek lunate epsilon symbol 1D717 MATHEMATICAL ITALIC THETA SYMBOL # 03D1 greek theta symbol 1D718 MATHEMATICAL ITALIC KAPPA SYMBOL # 03F0 greek kappa symbol 1D719 MATHEMATICAL ITALIC PHI SYMBOL # 03D5 greek phi symbol 1D71A MATHEMATICAL ITALIC RHO SYMBOL # 03F1 greek rho symbol 1D71B MATHEMATICAL ITALIC PI SYMBOL # 03D6 greek pi symbol @ Bold italic Greek symbols 1D71C MATHEMATICAL BOLD ITALIC CAPITAL ALPHA # 0391 greek capital letter alpha 1D71D MATHEMATICAL BOLD ITALIC CAPITAL BETA # 0392 greek capital letter beta 1D71E MATHEMATICAL BOLD ITALIC CAPITAL GAMMA # 0393 greek capital letter gamma 1D71F MATHEMATICAL BOLD ITALIC CAPITAL DELTA # 0394 greek capital letter delta 1D720 MATHEMATICAL BOLD ITALIC CAPITAL EPSILON # 0395 greek capital letter epsilon 1D721 MATHEMATICAL BOLD ITALIC CAPITAL ZETA # 0396 greek capital letter zeta 1D722 MATHEMATICAL BOLD ITALIC CAPITAL ETA # 0397 greek capital letter eta 1D723 MATHEMATICAL BOLD ITALIC CAPITAL THETA # 0398 greek capital letter theta 1D724 MATHEMATICAL BOLD ITALIC CAPITAL IOTA # 0399 greek capital letter iota 1D725 MATHEMATICAL BOLD ITALIC CAPITAL KAPPA # 039A greek capital letter kappa 1D726 MATHEMATICAL BOLD ITALIC CAPITAL LAMDA # 039B greek capital letter lamda 1D727 MATHEMATICAL BOLD ITALIC CAPITAL MU # 039C greek capital letter mu 1D728 MATHEMATICAL BOLD ITALIC CAPITAL NU # 039D greek capital letter nu 1D729 MATHEMATICAL BOLD ITALIC CAPITAL XI # 039E greek capital letter xi 1D72A MATHEMATICAL BOLD ITALIC CAPITAL OMICRON # 039F greek capital letter omicron 1D72B MATHEMATICAL BOLD ITALIC CAPITAL PI # 03A0 greek capital letter pi 1D72C MATHEMATICAL BOLD ITALIC CAPITAL RHO # 03A1 greek capital letter rho 1D72D MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL # 03F4 greek capital theta symbol 1D72E MATHEMATICAL BOLD ITALIC CAPITAL SIGMA # 03A3 greek capital letter sigma 1D72F MATHEMATICAL BOLD ITALIC CAPITAL TAU # 03A4 greek capital letter tau 1D730 MATHEMATICAL BOLD ITALIC CAPITAL UPSILON # 03A5 greek capital letter upsilon 1D731 MATHEMATICAL BOLD ITALIC CAPITAL PHI # 03A6 greek capital letter phi 1D732 MATHEMATICAL BOLD ITALIC CAPITAL CHI # 03A7 greek capital letter chi 1D733 MATHEMATICAL BOLD ITALIC CAPITAL PSI # 03A8 greek capital letter psi 1D734 MATHEMATICAL BOLD ITALIC CAPITAL OMEGA # 03A9 greek capital letter omega 1D735 MATHEMATICAL BOLD ITALIC NABLA # 2207 nabla 1D736 MATHEMATICAL BOLD ITALIC SMALL ALPHA # 03B1 greek small letter alpha 1D737 MATHEMATICAL BOLD ITALIC SMALL BETA # 03B2 greek small letter beta 1D738 MATHEMATICAL BOLD ITALIC SMALL GAMMA # 03B3 greek small letter gamma 1D739 MATHEMATICAL BOLD ITALIC SMALL DELTA # 03B4 greek small letter delta 1D73A MATHEMATICAL BOLD ITALIC SMALL EPSILON # 03B5 greek small letter epsilon 1D73B MATHEMATICAL BOLD ITALIC SMALL ZETA # 03B6 greek small letter zeta 1D73C MATHEMATICAL BOLD ITALIC SMALL ETA # 03B7 greek small letter eta 1D73D MATHEMATICAL BOLD ITALIC SMALL THETA # 03B8 greek small letter theta 1D73E MATHEMATICAL BOLD ITALIC SMALL IOTA # 03B9 greek small letter iota 1D73F MATHEMATICAL BOLD ITALIC SMALL KAPPA # 03BA greek small letter kappa 1D740 MATHEMATICAL BOLD ITALIC SMALL LAMDA # 03BB greek small letter lamda 1D741 MATHEMATICAL BOLD ITALIC SMALL MU # 03BC greek small letter mu 1D742 MATHEMATICAL BOLD ITALIC SMALL NU # 03BD greek small letter nu 1D743 MATHEMATICAL BOLD ITALIC SMALL XI # 03BE greek small letter xi 1D744 MATHEMATICAL BOLD ITALIC SMALL OMICRON # 03BF greek small letter omicron 1D745 MATHEMATICAL BOLD ITALIC SMALL PI # 03C0 greek small letter pi 1D746 MATHEMATICAL BOLD ITALIC SMALL RHO # 03C1 greek small letter rho 1D747 MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA # 03C2 greek small letter final sigma 1D748 MATHEMATICAL BOLD ITALIC SMALL SIGMA # 03C3 greek small letter sigma 1D749 MATHEMATICAL BOLD ITALIC SMALL TAU # 03C4 greek small letter tau 1D74A MATHEMATICAL BOLD ITALIC SMALL UPSILON # 03C5 greek small letter upsilon 1D74B MATHEMATICAL BOLD ITALIC SMALL PHI # 03C6 greek small letter phi 1D74C MATHEMATICAL BOLD ITALIC SMALL CHI # 03C7 greek small letter chi 1D74D MATHEMATICAL BOLD ITALIC SMALL PSI # 03C8 greek small letter psi 1D74E MATHEMATICAL BOLD ITALIC SMALL OMEGA # 03C9 greek small letter omega @ Additional bold italic Greek symbols 1D74F MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL # 2202 partial differential 1D750 MATHEMATICAL BOLD ITALIC EPSILON SYMBOL # 03F5 greek lunate epsilon symbol 1D751 MATHEMATICAL BOLD ITALIC THETA SYMBOL # 03D1 greek theta symbol 1D752 MATHEMATICAL BOLD ITALIC KAPPA SYMBOL # 03F0 greek kappa symbol 1D753 MATHEMATICAL BOLD ITALIC PHI SYMBOL # 03D5 greek phi symbol 1D754 MATHEMATICAL BOLD ITALIC RHO SYMBOL # 03F1 greek rho symbol 1D755 MATHEMATICAL BOLD ITALIC PI SYMBOL # 03D6 greek pi symbol @ Sans-serif bold Greek symbols 1D756 MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA # 0391 greek capital letter alpha 1D757 MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA # 0392 greek capital letter beta 1D758 MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA # 0393 greek capital letter gamma 1D759 MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA # 0394 greek capital letter delta 1D75A MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON # 0395 greek capital letter epsilon 1D75B MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA # 0396 greek capital letter zeta 1D75C MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA # 0397 greek capital letter eta 1D75D MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA # 0398 greek capital letter theta 1D75E MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA # 0399 greek capital letter iota 1D75F MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA # 039A greek capital letter kappa 1D760 MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA # 039B greek capital letter lamda 1D761 MATHEMATICAL SANS-SERIF BOLD CAPITAL MU # 039C greek capital letter mu 1D762 MATHEMATICAL SANS-SERIF BOLD CAPITAL NU # 039D greek capital letter nu 1D763 MATHEMATICAL SANS-SERIF BOLD CAPITAL XI # 039E greek capital letter xi 1D764 MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON # 039F greek capital letter omicron 1D765 MATHEMATICAL SANS-SERIF BOLD CAPITAL PI # 03A0 greek capital letter pi 1D766 MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO # 03A1 greek capital letter rho 1D767 MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL # 03F4 greek capital theta symbol 1D768 MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA # 03A3 greek capital letter sigma 1D769 MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU # 03A4 greek capital letter tau 1D76A MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON # 03A5 greek capital letter upsilon 1D76B MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI # 03A6 greek capital letter phi 1D76C MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI # 03A7 greek capital letter chi 1D76D MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI # 03A8 greek capital letter psi 1D76E MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA # 03A9 greek capital letter omega 1D76F MATHEMATICAL SANS-SERIF BOLD NABLA # 2207 nabla 1D770 MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA # 03B1 greek small letter alpha 1D771 MATHEMATICAL SANS-SERIF BOLD SMALL BETA # 03B2 greek small letter beta 1D772 MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA # 03B3 greek small letter gamma 1D773 MATHEMATICAL SANS-SERIF BOLD SMALL DELTA # 03B4 greek small letter delta 1D774 MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON # 03B5 greek small letter epsilon 1D775 MATHEMATICAL SANS-SERIF BOLD SMALL ZETA # 03B6 greek small letter zeta 1D776 MATHEMATICAL SANS-SERIF BOLD SMALL ETA # 03B7 greek small letter eta 1D777 MATHEMATICAL SANS-SERIF BOLD SMALL THETA # 03B8 greek small letter theta 1D778 MATHEMATICAL SANS-SERIF BOLD SMALL IOTA # 03B9 greek small letter iota 1D779 MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA # 03BA greek small letter kappa 1D77A MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA # 03BB greek small letter lamda 1D77B MATHEMATICAL SANS-SERIF BOLD SMALL MU # 03BC greek small letter mu 1D77C MATHEMATICAL SANS-SERIF BOLD SMALL NU # 03BD greek small letter nu 1D77D MATHEMATICAL SANS-SERIF BOLD SMALL XI # 03BE greek small letter xi 1D77E MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON # 03BF greek small letter omicron 1D77F MATHEMATICAL SANS-SERIF BOLD SMALL PI # 03C0 greek small letter pi 1D780 MATHEMATICAL SANS-SERIF BOLD SMALL RHO # 03C1 greek small letter rho 1D781 MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA # 03C2 greek small letter final sigma 1D782 MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA # 03C3 greek small letter sigma 1D783 MATHEMATICAL SANS-SERIF BOLD SMALL TAU # 03C4 greek small letter tau 1D784 MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON # 03C5 greek small letter upsilon 1D785 MATHEMATICAL SANS-SERIF BOLD SMALL PHI # 03C6 greek small letter phi 1D786 MATHEMATICAL SANS-SERIF BOLD SMALL CHI # 03C7 greek small letter chi 1D787 MATHEMATICAL SANS-SERIF BOLD SMALL PSI # 03C8 greek small letter psi 1D788 MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA # 03C9 greek small letter omega @ Additional sans-serif bold Greek symbols 1D789 MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL # 2202 partial differential 1D78A MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL # 03F5 greek lunate epsilon symbol 1D78B MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL # 03D1 greek theta symbol 1D78C MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL # 03F0 greek kappa symbol 1D78D MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL # 03D5 greek phi symbol 1D78E MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL # 03F1 greek rho symbol 1D78F MATHEMATICAL SANS-SERIF BOLD PI SYMBOL # 03D6 greek pi symbol @ Sans-serif bold italic Greek symbols 1D790 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA # 0391 greek capital letter alpha 1D791 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA # 0392 greek capital letter beta 1D792 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA # 0393 greek capital letter gamma 1D793 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA # 0394 greek capital letter delta 1D794 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON # 0395 greek capital letter epsilon 1D795 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA # 0396 greek capital letter zeta 1D796 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA # 0397 greek capital letter eta 1D797 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA # 0398 greek capital letter theta 1D798 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA # 0399 greek capital letter iota 1D799 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA # 039A greek capital letter kappa 1D79A MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA # 039B greek capital letter lamda 1D79B MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU # 039C greek capital letter mu 1D79C MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU # 039D greek capital letter nu 1D79D MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI # 039E greek capital letter xi 1D79E MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON # 039F greek capital letter omicron 1D79F MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI # 03A0 greek capital letter pi 1D7A0 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO # 03A1 greek capital letter rho 1D7A1 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL # 03F4 greek capital theta symbol 1D7A2 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA # 03A3 greek capital letter sigma 1D7A3 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU # 03A4 greek capital letter tau 1D7A4 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON # 03A5 greek capital letter upsilon 1D7A5 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI # 03A6 greek capital letter phi 1D7A6 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI # 03A7 greek capital letter chi 1D7A7 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI # 03A8 greek capital letter psi 1D7A8 MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA # 03A9 greek capital letter omega 1D7A9 MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA # 2207 nabla 1D7AA MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA # 03B1 greek small letter alpha 1D7AB MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA # 03B2 greek small letter beta 1D7AC MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA # 03B3 greek small letter gamma 1D7AD MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA # 03B4 greek small letter delta 1D7AE MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON # 03B5 greek small letter epsilon 1D7AF MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA # 03B6 greek small letter zeta 1D7B0 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA # 03B7 greek small letter eta 1D7B1 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA # 03B8 greek small letter theta 1D7B2 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA # 03B9 greek small letter iota 1D7B3 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA # 03BA greek small letter kappa 1D7B4 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA # 03BB greek small letter lamda 1D7B5 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU # 03BC greek small letter mu 1D7B6 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU # 03BD greek small letter nu 1D7B7 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI # 03BE greek small letter xi 1D7B8 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON # 03BF greek small letter omicron 1D7B9 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI # 03C0 greek small letter pi 1D7BA MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO # 03C1 greek small letter rho 1D7BB MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA # 03C2 greek small letter final sigma 1D7BC MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA # 03C3 greek small letter sigma 1D7BD MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU # 03C4 greek small letter tau 1D7BE MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON # 03C5 greek small letter upsilon 1D7BF MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI # 03C6 greek small letter phi 1D7C0 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI # 03C7 greek small letter chi 1D7C1 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI # 03C8 greek small letter psi 1D7C2 MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA # 03C9 greek small letter omega @ Additional sans-serif bold italic Greek symbols 1D7C3 MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL # 2202 partial differential 1D7C4 MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL # 03F5 greek lunate epsilon symbol 1D7C5 MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL # 03D1 greek theta symbol 1D7C6 MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL # 03F0 greek kappa symbol 1D7C7 MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL # 03D5 greek phi symbol 1D7C8 MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL # 03F1 greek rho symbol 1D7C9 MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL # 03D6 greek pi symbol @ Additional bold Greek symbols 1D7CA MATHEMATICAL BOLD CAPITAL DIGAMMA # 03DC greek letter digamma 1D7CB MATHEMATICAL BOLD SMALL DIGAMMA # 03DD greek small letter digamma @ Bold digits 1D7CE MATHEMATICAL BOLD DIGIT ZERO # 0030 digit zero 1D7CF MATHEMATICAL BOLD DIGIT ONE # 0031 digit one 1D7D0 MATHEMATICAL BOLD DIGIT TWO # 0032 digit two 1D7D1 MATHEMATICAL BOLD DIGIT THREE # 0033 digit three 1D7D2 MATHEMATICAL BOLD DIGIT FOUR # 0034 digit four 1D7D3 MATHEMATICAL BOLD DIGIT FIVE # 0035 digit five 1D7D4 MATHEMATICAL BOLD DIGIT SIX # 0036 digit six 1D7D5 MATHEMATICAL BOLD DIGIT SEVEN # 0037 digit seven 1D7D6 MATHEMATICAL BOLD DIGIT EIGHT # 0038 digit eight 1D7D7 MATHEMATICAL BOLD DIGIT NINE # 0039 digit nine @ Double-struck digits 1D7D8 MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO # 0030 digit zero 1D7D9 MATHEMATICAL DOUBLE-STRUCK DIGIT ONE # 0031 digit one 1D7DA MATHEMATICAL DOUBLE-STRUCK DIGIT TWO # 0032 digit two 1D7DB MATHEMATICAL DOUBLE-STRUCK DIGIT THREE # 0033 digit three 1D7DC MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR # 0034 digit four 1D7DD MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE # 0035 digit five 1D7DE MATHEMATICAL DOUBLE-STRUCK DIGIT SIX # 0036 digit six 1D7DF MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN # 0037 digit seven 1D7E0 MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT # 0038 digit eight 1D7E1 MATHEMATICAL DOUBLE-STRUCK DIGIT NINE # 0039 digit nine @ Sans-serif digits 1D7E2 MATHEMATICAL SANS-SERIF DIGIT ZERO # 0030 digit zero 1D7E3 MATHEMATICAL SANS-SERIF DIGIT ONE # 0031 digit one 1D7E4 MATHEMATICAL SANS-SERIF DIGIT TWO # 0032 digit two 1D7E5 MATHEMATICAL SANS-SERIF DIGIT THREE # 0033 digit three 1D7E6 MATHEMATICAL SANS-SERIF DIGIT FOUR # 0034 digit four 1D7E7 MATHEMATICAL SANS-SERIF DIGIT FIVE # 0035 digit five 1D7E8 MATHEMATICAL SANS-SERIF DIGIT SIX # 0036 digit six 1D7E9 MATHEMATICAL SANS-SERIF DIGIT SEVEN # 0037 digit seven 1D7EA MATHEMATICAL SANS-SERIF DIGIT EIGHT # 0038 digit eight 1D7EB MATHEMATICAL SANS-SERIF DIGIT NINE # 0039 digit nine @ Sans-serif bold digits 1D7EC MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO # 0030 digit zero 1D7ED MATHEMATICAL SANS-SERIF BOLD DIGIT ONE # 0031 digit one 1D7EE MATHEMATICAL SANS-SERIF BOLD DIGIT TWO # 0032 digit two 1D7EF MATHEMATICAL SANS-SERIF BOLD DIGIT THREE # 0033 digit three 1D7F0 MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR # 0034 digit four 1D7F1 MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE # 0035 digit five 1D7F2 MATHEMATICAL SANS-SERIF BOLD DIGIT SIX # 0036 digit six 1D7F3 MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN # 0037 digit seven 1D7F4 MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT # 0038 digit eight 1D7F5 MATHEMATICAL SANS-SERIF BOLD DIGIT NINE # 0039 digit nine @ Monospace digits 1D7F6 MATHEMATICAL MONOSPACE DIGIT ZERO # 0030 digit zero 1D7F7 MATHEMATICAL MONOSPACE DIGIT ONE # 0031 digit one 1D7F8 MATHEMATICAL MONOSPACE DIGIT TWO # 0032 digit two 1D7F9 MATHEMATICAL MONOSPACE DIGIT THREE # 0033 digit three 1D7FA MATHEMATICAL MONOSPACE DIGIT FOUR # 0034 digit four 1D7FB MATHEMATICAL MONOSPACE DIGIT FIVE # 0035 digit five 1D7FC MATHEMATICAL MONOSPACE DIGIT SIX # 0036 digit six 1D7FD MATHEMATICAL MONOSPACE DIGIT SEVEN # 0037 digit seven 1D7FE MATHEMATICAL MONOSPACE DIGIT EIGHT # 0038 digit eight 1D7FF MATHEMATICAL MONOSPACE DIGIT NINE # 0039 digit nine @@ 1D800 Sutton SignWriting 1DAAF @ Hand shapes with index finger 1D800 SIGNWRITING HAND-FIST INDEX 1D801 SIGNWRITING HAND-CIRCLE INDEX 1D802 SIGNWRITING HAND-CUP INDEX 1D803 SIGNWRITING HAND-OVAL INDEX 1D804 SIGNWRITING HAND-HINGE INDEX 1D805 SIGNWRITING HAND-ANGLE INDEX 1D806 SIGNWRITING HAND-FIST INDEX BENT 1D807 SIGNWRITING HAND-CIRCLE INDEX BENT 1D808 SIGNWRITING HAND-FIST THUMB UNDER INDEX BENT 1D809 SIGNWRITING HAND-FIST INDEX RAISED KNUCKLE 1D80A SIGNWRITING HAND-FIST INDEX CUPPED 1D80B SIGNWRITING HAND-FIST INDEX HINGED 1D80C SIGNWRITING HAND-FIST INDEX HINGED LOW 1D80D SIGNWRITING HAND-CIRCLE INDEX HINGE @ Hand shapes with index and middle fingers 1D80E SIGNWRITING HAND-FIST INDEX MIDDLE 1D80F SIGNWRITING HAND-CIRCLE INDEX MIDDLE 1D810 SIGNWRITING HAND-FIST INDEX MIDDLE BENT 1D811 SIGNWRITING HAND-FIST INDEX MIDDLE RAISED KNUCKLES 1D812 SIGNWRITING HAND-FIST INDEX MIDDLE HINGED 1D813 SIGNWRITING HAND-FIST INDEX UP MIDDLE HINGED 1D814 SIGNWRITING HAND-FIST INDEX HINGED MIDDLE UP 1D815 SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED 1D816 SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED INDEX BENT 1D817 SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED MIDDLE BENT 1D818 SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED CUPPED 1D819 SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED HINGED 1D81A SIGNWRITING HAND-FIST INDEX MIDDLE CROSSED 1D81B SIGNWRITING HAND-CIRCLE INDEX MIDDLE CROSSED 1D81C SIGNWRITING HAND-FIST MIDDLE BENT OVER INDEX 1D81D SIGNWRITING HAND-FIST INDEX BENT OVER MIDDLE @ Hand shapes with index and middle fingers and thumb 1D81E SIGNWRITING HAND-FIST INDEX MIDDLE THUMB 1D81F SIGNWRITING HAND-CIRCLE INDEX MIDDLE THUMB 1D820 SIGNWRITING HAND-FIST INDEX MIDDLE STRAIGHT THUMB BENT 1D821 SIGNWRITING HAND-FIST INDEX MIDDLE BENT THUMB STRAIGHT 1D822 SIGNWRITING HAND-FIST INDEX MIDDLE THUMB BENT 1D823 SIGNWRITING HAND-FIST INDEX MIDDLE HINGED SPREAD THUMB SIDE 1D824 SIGNWRITING HAND-FIST INDEX UP MIDDLE HINGED THUMB SIDE 1D825 SIGNWRITING HAND-FIST INDEX UP MIDDLE HINGED THUMB CONJOINED 1D826 SIGNWRITING HAND-FIST INDEX HINGED MIDDLE UP THUMB SIDE 1D827 SIGNWRITING HAND-FIST INDEX MIDDLE UP SPREAD THUMB FORWARD 1D828 SIGNWRITING HAND-FIST INDEX MIDDLE THUMB CUPPED 1D829 SIGNWRITING HAND-FIST INDEX MIDDLE THUMB CIRCLED 1D82A SIGNWRITING HAND-FIST INDEX MIDDLE THUMB HOOKED 1D82B SIGNWRITING HAND-FIST INDEX MIDDLE THUMB HINGED 1D82C SIGNWRITING HAND-FIST THUMB BETWEEN INDEX MIDDLE STRAIGHT 1D82D SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED THUMB SIDE 1D82E SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED THUMB SIDE CONJOINED 1D82F SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED THUMB SIDE BENT 1D830 SIGNWRITING HAND-FIST MIDDLE THUMB HOOKED INDEX UP 1D831 SIGNWRITING HAND-FIST INDEX THUMB HOOKED MIDDLE UP 1D832 SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED HINGED THUMB SIDE 1D833 SIGNWRITING HAND-FIST INDEX MIDDLE CROSSED THUMB SIDE 1D834 SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED THUMB FORWARD 1D835 SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED CUPPED THUMB FORWARD 1D836 SIGNWRITING HAND-FIST MIDDLE THUMB CUPPED INDEX UP 1D837 SIGNWRITING HAND-FIST INDEX THUMB CUPPED MIDDLE UP 1D838 SIGNWRITING HAND-FIST MIDDLE THUMB CIRCLED INDEX UP 1D839 SIGNWRITING HAND-FIST MIDDLE THUMB CIRCLED INDEX HINGED 1D83A SIGNWRITING HAND-FIST INDEX THUMB ANGLED OUT MIDDLE UP 1D83B SIGNWRITING HAND-FIST INDEX THUMB ANGLED IN MIDDLE UP 1D83C SIGNWRITING HAND-FIST INDEX THUMB CIRCLED MIDDLE UP 1D83D SIGNWRITING HAND-FIST INDEX MIDDLE THUMB CONJOINED HINGED 1D83E SIGNWRITING HAND-FIST INDEX MIDDLE THUMB ANGLED OUT 1D83F SIGNWRITING HAND-FIST INDEX MIDDLE THUMB ANGLED 1D840 SIGNWRITING HAND-FIST MIDDLE THUMB ANGLED OUT INDEX UP 1D841 SIGNWRITING HAND-FIST MIDDLE THUMB ANGLED OUT INDEX CROSSED 1D842 SIGNWRITING HAND-FIST MIDDLE THUMB ANGLED INDEX UP 1D843 SIGNWRITING HAND-FIST INDEX THUMB HOOKED MIDDLE HINGED @ Hand shapes with four fingers 1D844 SIGNWRITING HAND-FLAT FOUR FINGERS 1D845 SIGNWRITING HAND-FLAT FOUR FINGERS BENT 1D846 SIGNWRITING HAND-FLAT FOUR FINGERS HINGED 1D847 SIGNWRITING HAND-FLAT FOUR FINGERS CONJOINED 1D848 SIGNWRITING HAND-FLAT FOUR FINGERS CONJOINED SPLIT 1D849 SIGNWRITING HAND-CLAW FOUR FINGERS CONJOINED 1D84A SIGNWRITING HAND-FIST FOUR FINGERS CONJOINED BENT 1D84B SIGNWRITING HAND-HINGE FOUR FINGERS CONJOINED @ Hand shapes with five fingers 1D84C SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD 1D84D SIGNWRITING HAND-FLAT HEEL FIVE FINGERS SPREAD 1D84E SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD FOUR BENT 1D84F SIGNWRITING HAND-FLAT HEEL FIVE FINGERS SPREAD FOUR BENT 1D850 SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD BENT 1D851 SIGNWRITING HAND-FLAT HEEL FIVE FINGERS SPREAD BENT 1D852 SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD THUMB FORWARD 1D853 SIGNWRITING HAND-CUP FIVE FINGERS SPREAD 1D854 SIGNWRITING HAND-CUP FIVE FINGERS SPREAD OPEN 1D855 SIGNWRITING HAND-HINGE FIVE FINGERS SPREAD OPEN 1D856 SIGNWRITING HAND-OVAL FIVE FINGERS SPREAD 1D857 SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD HINGED 1D858 SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD HINGED THUMB SIDE 1D859 SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD HINGED NO THUMB 1D85A SIGNWRITING HAND-FLAT 1D85B SIGNWRITING HAND-FLAT BETWEEN PALM FACINGS 1D85C SIGNWRITING HAND-FLAT HEEL 1D85D SIGNWRITING HAND-FLAT THUMB SIDE 1D85E SIGNWRITING HAND-FLAT HEEL THUMB SIDE 1D85F SIGNWRITING HAND-FLAT THUMB BENT 1D860 SIGNWRITING HAND-FLAT THUMB FORWARD 1D861 SIGNWRITING HAND-FLAT SPLIT INDEX THUMB SIDE 1D862 SIGNWRITING HAND-FLAT SPLIT CENTRE 1D863 SIGNWRITING HAND-FLAT SPLIT CENTRE THUMB SIDE 1D864 SIGNWRITING HAND-FLAT SPLIT CENTRE THUMB SIDE BENT 1D865 SIGNWRITING HAND-FLAT SPLIT LITTLE 1D866 SIGNWRITING HAND-CLAW 1D867 SIGNWRITING HAND-CLAW THUMB SIDE 1D868 SIGNWRITING HAND-CLAW NO THUMB 1D869 SIGNWRITING HAND-CLAW THUMB FORWARD 1D86A SIGNWRITING HAND-HOOK CURLICUE 1D86B SIGNWRITING HAND-HOOK 1D86C SIGNWRITING HAND-CUP OPEN 1D86D SIGNWRITING HAND-CUP 1D86E SIGNWRITING HAND-CUP OPEN THUMB SIDE 1D86F SIGNWRITING HAND-CUP THUMB SIDE 1D870 SIGNWRITING HAND-CUP OPEN NO THUMB 1D871 SIGNWRITING HAND-CUP NO THUMB 1D872 SIGNWRITING HAND-CUP OPEN THUMB FORWARD 1D873 SIGNWRITING HAND-CUP THUMB FORWARD 1D874 SIGNWRITING HAND-CURLICUE OPEN 1D875 SIGNWRITING HAND-CURLICUE 1D876 SIGNWRITING HAND-CIRCLE 1D877 SIGNWRITING HAND-OVAL 1D878 SIGNWRITING HAND-OVAL THUMB SIDE 1D879 SIGNWRITING HAND-OVAL NO THUMB 1D87A SIGNWRITING HAND-OVAL THUMB FORWARD 1D87B SIGNWRITING HAND-HINGE OPEN 1D87C SIGNWRITING HAND-HINGE OPEN THUMB FORWARD 1D87D SIGNWRITING HAND-HINGE 1D87E SIGNWRITING HAND-HINGE SMALL 1D87F SIGNWRITING HAND-HINGE OPEN THUMB SIDE 1D880 SIGNWRITING HAND-HINGE THUMB SIDE 1D881 SIGNWRITING HAND-HINGE OPEN NO THUMB 1D882 SIGNWRITING HAND-HINGE NO THUMB 1D883 SIGNWRITING HAND-HINGE THUMB SIDE TOUCHING INDEX 1D884 SIGNWRITING HAND-HINGE THUMB BETWEEN MIDDLE RING 1D885 SIGNWRITING HAND-ANGLE @ Hand shapes with little finger 1D886 SIGNWRITING HAND-FIST INDEX MIDDLE RING 1D887 SIGNWRITING HAND-CIRCLE INDEX MIDDLE RING 1D888 SIGNWRITING HAND-HINGE INDEX MIDDLE RING 1D889 SIGNWRITING HAND-ANGLE INDEX MIDDLE RING 1D88A SIGNWRITING HAND-HINGE LITTLE 1D88B SIGNWRITING HAND-FIST INDEX MIDDLE RING BENT 1D88C SIGNWRITING HAND-FIST INDEX MIDDLE RING CONJOINED 1D88D SIGNWRITING HAND-HINGE INDEX MIDDLE RING CONJOINED 1D88E SIGNWRITING HAND-FIST LITTLE DOWN 1D88F SIGNWRITING HAND-FIST LITTLE DOWN RIPPLE STRAIGHT 1D890 SIGNWRITING HAND-FIST LITTLE DOWN RIPPLE CURVED 1D891 SIGNWRITING HAND-FIST LITTLE DOWN OTHERS CIRCLED 1D892 SIGNWRITING HAND-FIST LITTLE UP 1D893 SIGNWRITING HAND-FIST THUMB UNDER LITTLE UP 1D894 SIGNWRITING HAND-CIRCLE LITTLE UP 1D895 SIGNWRITING HAND-OVAL LITTLE UP 1D896 SIGNWRITING HAND-ANGLE LITTLE UP 1D897 SIGNWRITING HAND-FIST LITTLE RAISED KNUCKLE 1D898 SIGNWRITING HAND-FIST LITTLE BENT 1D899 SIGNWRITING HAND-FIST LITTLE TOUCHES THUMB 1D89A SIGNWRITING HAND-FIST LITTLE THUMB 1D89B SIGNWRITING HAND-HINGE LITTLE THUMB 1D89C SIGNWRITING HAND-FIST LITTLE INDEX THUMB 1D89D SIGNWRITING HAND-HINGE LITTLE INDEX THUMB 1D89E SIGNWRITING HAND-ANGLE LITTLE INDEX THUMB INDEX THUMB OUT 1D89F SIGNWRITING HAND-ANGLE LITTLE INDEX THUMB INDEX THUMB 1D8A0 SIGNWRITING HAND-FIST LITTLE INDEX 1D8A1 SIGNWRITING HAND-CIRCLE LITTLE INDEX 1D8A2 SIGNWRITING HAND-HINGE LITTLE INDEX 1D8A3 SIGNWRITING HAND-ANGLE LITTLE INDEX @ Hand shapes with ring finger 1D8A4 SIGNWRITING HAND-FIST INDEX MIDDLE LITTLE 1D8A5 SIGNWRITING HAND-CIRCLE INDEX MIDDLE LITTLE 1D8A6 SIGNWRITING HAND-HINGE INDEX MIDDLE LITTLE 1D8A7 SIGNWRITING HAND-HINGE RING 1D8A8 SIGNWRITING HAND-ANGLE INDEX MIDDLE LITTLE 1D8A9 SIGNWRITING HAND-FIST INDEX MIDDLE CROSS LITTLE 1D8AA SIGNWRITING HAND-CIRCLE INDEX MIDDLE CROSS LITTLE 1D8AB SIGNWRITING HAND-FIST RING DOWN 1D8AC SIGNWRITING HAND-HINGE RING DOWN INDEX THUMB HOOK MIDDLE 1D8AD SIGNWRITING HAND-ANGLE RING DOWN MIDDLE THUMB INDEX CROSS 1D8AE SIGNWRITING HAND-FIST RING UP 1D8AF SIGNWRITING HAND-FIST RING RAISED KNUCKLE 1D8B0 SIGNWRITING HAND-FIST RING LITTLE 1D8B1 SIGNWRITING HAND-CIRCLE RING LITTLE 1D8B2 SIGNWRITING HAND-OVAL RING LITTLE 1D8B3 SIGNWRITING HAND-ANGLE RING LITTLE 1D8B4 SIGNWRITING HAND-FIST RING MIDDLE 1D8B5 SIGNWRITING HAND-FIST RING MIDDLE CONJOINED 1D8B6 SIGNWRITING HAND-FIST RING MIDDLE RAISED KNUCKLES 1D8B7 SIGNWRITING HAND-FIST RING INDEX 1D8B8 SIGNWRITING HAND-FIST RING THUMB 1D8B9 SIGNWRITING HAND-HOOK RING THUMB @ Hand shapes with middle finger 1D8BA SIGNWRITING HAND-FIST INDEX RING LITTLE 1D8BB SIGNWRITING HAND-CIRCLE INDEX RING LITTLE 1D8BC SIGNWRITING HAND-CURLICUE INDEX RING LITTLE ON 1D8BD SIGNWRITING HAND-HOOK INDEX RING LITTLE OUT 1D8BE SIGNWRITING HAND-HOOK INDEX RING LITTLE IN 1D8BF SIGNWRITING HAND-HOOK INDEX RING LITTLE UNDER 1D8C0 SIGNWRITING HAND-CUP INDEX RING LITTLE 1D8C1 SIGNWRITING HAND-HINGE INDEX RING LITTLE 1D8C2 SIGNWRITING HAND-ANGLE INDEX RING LITTLE OUT 1D8C3 SIGNWRITING HAND-ANGLE INDEX RING LITTLE 1D8C4 SIGNWRITING HAND-FIST MIDDLE DOWN 1D8C5 SIGNWRITING HAND-HINGE MIDDLE 1D8C6 SIGNWRITING HAND-FIST MIDDLE UP 1D8C7 SIGNWRITING HAND-CIRCLE MIDDLE UP 1D8C8 SIGNWRITING HAND-FIST MIDDLE RAISED KNUCKLE 1D8C9 SIGNWRITING HAND-FIST MIDDLE UP THUMB SIDE 1D8CA SIGNWRITING HAND-HOOK MIDDLE THUMB 1D8CB SIGNWRITING HAND-FIST MIDDLE THUMB LITTLE 1D8CC SIGNWRITING HAND-FIST MIDDLE LITTLE @ Hand shapes with index finger and thumb 1D8CD SIGNWRITING HAND-FIST MIDDLE RING LITTLE 1D8CE SIGNWRITING HAND-CIRCLE MIDDLE RING LITTLE 1D8CF SIGNWRITING HAND-CURLICUE MIDDLE RING LITTLE ON 1D8D0 SIGNWRITING HAND-CUP MIDDLE RING LITTLE 1D8D1 SIGNWRITING HAND-HINGE MIDDLE RING LITTLE 1D8D2 SIGNWRITING HAND-ANGLE MIDDLE RING LITTLE OUT 1D8D3 SIGNWRITING HAND-ANGLE MIDDLE RING LITTLE IN 1D8D4 SIGNWRITING HAND-ANGLE MIDDLE RING LITTLE 1D8D5 SIGNWRITING HAND-CIRCLE MIDDLE RING LITTLE BENT 1D8D6 SIGNWRITING HAND-CLAW MIDDLE RING LITTLE CONJOINED 1D8D7 SIGNWRITING HAND-CLAW MIDDLE RING LITTLE CONJOINED SIDE 1D8D8 SIGNWRITING HAND-HOOK MIDDLE RING LITTLE CONJOINED OUT 1D8D9 SIGNWRITING HAND-HOOK MIDDLE RING LITTLE CONJOINED IN 1D8DA SIGNWRITING HAND-HOOK MIDDLE RING LITTLE CONJOINED 1D8DB SIGNWRITING HAND-HINGE INDEX HINGED 1D8DC SIGNWRITING HAND-FIST INDEX THUMB SIDE 1D8DD SIGNWRITING HAND-HINGE INDEX THUMB SIDE 1D8DE SIGNWRITING HAND-FIST INDEX THUMB SIDE THUMB DIAGONAL 1D8DF SIGNWRITING HAND-FIST INDEX THUMB SIDE THUMB CONJOINED 1D8E0 SIGNWRITING HAND-FIST INDEX THUMB SIDE THUMB BENT 1D8E1 SIGNWRITING HAND-FIST INDEX THUMB SIDE INDEX BENT 1D8E2 SIGNWRITING HAND-FIST INDEX THUMB SIDE BOTH BENT 1D8E3 SIGNWRITING HAND-FIST INDEX THUMB SIDE INDEX HINGE 1D8E4 SIGNWRITING HAND-FIST INDEX THUMB FORWARD INDEX STRAIGHT 1D8E5 SIGNWRITING HAND-FIST INDEX THUMB FORWARD INDEX BENT 1D8E6 SIGNWRITING HAND-FIST INDEX THUMB HOOK 1D8E7 SIGNWRITING HAND-FIST INDEX THUMB CURLICUE 1D8E8 SIGNWRITING HAND-FIST INDEX THUMB CURVE THUMB INSIDE 1D8E9 SIGNWRITING HAND-CLAW INDEX THUMB CURVE THUMB INSIDE 1D8EA SIGNWRITING HAND-FIST INDEX THUMB CURVE THUMB UNDER 1D8EB SIGNWRITING HAND-FIST INDEX THUMB CIRCLE 1D8EC SIGNWRITING HAND-CUP INDEX THUMB 1D8ED SIGNWRITING HAND-CUP INDEX THUMB OPEN 1D8EE SIGNWRITING HAND-HINGE INDEX THUMB OPEN 1D8EF SIGNWRITING HAND-HINGE INDEX THUMB LARGE 1D8F0 SIGNWRITING HAND-HINGE INDEX THUMB 1D8F1 SIGNWRITING HAND-HINGE INDEX THUMB SMALL 1D8F2 SIGNWRITING HAND-ANGLE INDEX THUMB OUT 1D8F3 SIGNWRITING HAND-ANGLE INDEX THUMB IN 1D8F4 SIGNWRITING HAND-ANGLE INDEX THUMB @ Hand shapes with thumb 1D8F5 SIGNWRITING HAND-FIST THUMB 1D8F6 SIGNWRITING HAND-FIST THUMB HEEL 1D8F7 SIGNWRITING HAND-FIST THUMB SIDE DIAGONAL 1D8F8 SIGNWRITING HAND-FIST THUMB SIDE CONJOINED 1D8F9 SIGNWRITING HAND-FIST THUMB SIDE BENT 1D8FA SIGNWRITING HAND-FIST THUMB FORWARD 1D8FB SIGNWRITING HAND-FIST THUMB BETWEEN INDEX MIDDLE 1D8FC SIGNWRITING HAND-FIST THUMB BETWEEN MIDDLE RING 1D8FD SIGNWRITING HAND-FIST THUMB BETWEEN RING LITTLE 1D8FE SIGNWRITING HAND-FIST THUMB UNDER TWO FINGERS 1D8FF SIGNWRITING HAND-FIST THUMB OVER TWO FINGERS 1D900 SIGNWRITING HAND-FIST THUMB UNDER THREE FINGERS 1D901 SIGNWRITING HAND-FIST THUMB UNDER FOUR FINGERS 1D902 SIGNWRITING HAND-FIST THUMB OVER FOUR RAISED KNUCKLES 1D903 SIGNWRITING HAND-FIST 1D904 SIGNWRITING HAND-FIST HEEL @ Contact movement indicators 1D905 SIGNWRITING TOUCH SINGLE 1D906 SIGNWRITING TOUCH MULTIPLE 1D907 SIGNWRITING TOUCH BETWEEN 1D908 SIGNWRITING GRASP SINGLE 1D909 SIGNWRITING GRASP MULTIPLE 1D90A SIGNWRITING GRASP BETWEEN 1D90B SIGNWRITING STRIKE SINGLE 1D90C SIGNWRITING STRIKE MULTIPLE 1D90D SIGNWRITING STRIKE BETWEEN 1D90E SIGNWRITING BRUSH SINGLE 1D90F SIGNWRITING BRUSH MULTIPLE 1D910 SIGNWRITING BRUSH BETWEEN 1D911 SIGNWRITING RUB SINGLE 1D912 SIGNWRITING RUB MULTIPLE 1D913 SIGNWRITING RUB BETWEEN 1D914 SIGNWRITING SURFACE SYMBOLS 1D915 SIGNWRITING SURFACE BETWEEN @ Finger movement indicators 1D916 SIGNWRITING SQUEEZE LARGE SINGLE 1D917 SIGNWRITING SQUEEZE SMALL SINGLE 1D918 SIGNWRITING SQUEEZE LARGE MULTIPLE 1D919 SIGNWRITING SQUEEZE SMALL MULTIPLE 1D91A SIGNWRITING SQUEEZE SEQUENTIAL 1D91B SIGNWRITING FLICK LARGE SINGLE 1D91C SIGNWRITING FLICK SMALL SINGLE 1D91D SIGNWRITING FLICK LARGE MULTIPLE 1D91E SIGNWRITING FLICK SMALL MULTIPLE 1D91F SIGNWRITING FLICK SEQUENTIAL 1D920 SIGNWRITING SQUEEZE FLICK ALTERNATING 1D921 SIGNWRITING MOVEMENT-HINGE UP DOWN LARGE 1D922 SIGNWRITING MOVEMENT-HINGE UP DOWN SMALL 1D923 SIGNWRITING MOVEMENT-HINGE UP SEQUENTIAL 1D924 SIGNWRITING MOVEMENT-HINGE DOWN SEQUENTIAL 1D925 SIGNWRITING MOVEMENT-HINGE UP DOWN ALTERNATING LARGE 1D926 SIGNWRITING MOVEMENT-HINGE UP DOWN ALTERNATING SMALL 1D927 SIGNWRITING MOVEMENT-HINGE SIDE TO SIDE SCISSORS 1D928 SIGNWRITING MOVEMENT-WALLPLANE FINGER CONTACT 1D929 SIGNWRITING MOVEMENT-FLOORPLANE FINGER CONTACT @ Movement indicators 1D92A SIGNWRITING MOVEMENT-WALLPLANE SINGLE STRAIGHT SMALL 1D92B SIGNWRITING MOVEMENT-WALLPLANE SINGLE STRAIGHT MEDIUM 1D92C SIGNWRITING MOVEMENT-WALLPLANE SINGLE STRAIGHT LARGE 1D92D SIGNWRITING MOVEMENT-WALLPLANE SINGLE STRAIGHT LARGEST 1D92E SIGNWRITING MOVEMENT-WALLPLANE SINGLE WRIST FLEX 1D92F SIGNWRITING MOVEMENT-WALLPLANE DOUBLE STRAIGHT 1D930 SIGNWRITING MOVEMENT-WALLPLANE DOUBLE WRIST FLEX 1D931 SIGNWRITING MOVEMENT-WALLPLANE DOUBLE ALTERNATING 1D932 SIGNWRITING MOVEMENT-WALLPLANE DOUBLE ALTERNATING WRIST FLEX 1D933 SIGNWRITING MOVEMENT-WALLPLANE CROSS 1D934 SIGNWRITING MOVEMENT-WALLPLANE TRIPLE STRAIGHT MOVEMENT 1D935 SIGNWRITING MOVEMENT-WALLPLANE TRIPLE WRIST FLEX 1D936 SIGNWRITING MOVEMENT-WALLPLANE TRIPLE ALTERNATING 1D937 SIGNWRITING MOVEMENT-WALLPLANE TRIPLE ALTERNATING WRIST FLEX 1D938 SIGNWRITING MOVEMENT-WALLPLANE BEND SMALL 1D939 SIGNWRITING MOVEMENT-WALLPLANE BEND MEDIUM 1D93A SIGNWRITING MOVEMENT-WALLPLANE BEND LARGE 1D93B SIGNWRITING MOVEMENT-WALLPLANE CORNER SMALL 1D93C SIGNWRITING MOVEMENT-WALLPLANE CORNER MEDIUM 1D93D SIGNWRITING MOVEMENT-WALLPLANE CORNER LARGE 1D93E SIGNWRITING MOVEMENT-WALLPLANE CORNER ROTATION 1D93F SIGNWRITING MOVEMENT-WALLPLANE CHECK SMALL 1D940 SIGNWRITING MOVEMENT-WALLPLANE CHECK MEDIUM 1D941 SIGNWRITING MOVEMENT-WALLPLANE CHECK LARGE 1D942 SIGNWRITING MOVEMENT-WALLPLANE BOX SMALL 1D943 SIGNWRITING MOVEMENT-WALLPLANE BOX MEDIUM 1D944 SIGNWRITING MOVEMENT-WALLPLANE BOX LARGE 1D945 SIGNWRITING MOVEMENT-WALLPLANE ZIGZAG SMALL 1D946 SIGNWRITING MOVEMENT-WALLPLANE ZIGZAG MEDIUM 1D947 SIGNWRITING MOVEMENT-WALLPLANE ZIGZAG LARGE 1D948 SIGNWRITING MOVEMENT-WALLPLANE PEAKS SMALL 1D949 SIGNWRITING MOVEMENT-WALLPLANE PEAKS MEDIUM 1D94A SIGNWRITING MOVEMENT-WALLPLANE PEAKS LARGE 1D94B SIGNWRITING TRAVEL-WALLPLANE ROTATION-WALLPLANE SINGLE 1D94C SIGNWRITING TRAVEL-WALLPLANE ROTATION-WALLPLANE DOUBLE 1D94D SIGNWRITING TRAVEL-WALLPLANE ROTATION-WALLPLANE ALTERNATING 1D94E SIGNWRITING TRAVEL-WALLPLANE ROTATION-FLOORPLANE SINGLE 1D94F SIGNWRITING TRAVEL-WALLPLANE ROTATION-FLOORPLANE DOUBLE 1D950 SIGNWRITING TRAVEL-WALLPLANE ROTATION-FLOORPLANE ALTERNATING 1D951 SIGNWRITING TRAVEL-WALLPLANE SHAKING 1D952 SIGNWRITING TRAVEL-WALLPLANE ARM SPIRAL SINGLE 1D953 SIGNWRITING TRAVEL-WALLPLANE ARM SPIRAL DOUBLE 1D954 SIGNWRITING TRAVEL-WALLPLANE ARM SPIRAL TRIPLE 1D955 SIGNWRITING MOVEMENT-DIAGONAL AWAY SMALL 1D956 SIGNWRITING MOVEMENT-DIAGONAL AWAY MEDIUM 1D957 SIGNWRITING MOVEMENT-DIAGONAL AWAY LARGE 1D958 SIGNWRITING MOVEMENT-DIAGONAL AWAY LARGEST 1D959 SIGNWRITING MOVEMENT-DIAGONAL TOWARDS SMALL 1D95A SIGNWRITING MOVEMENT-DIAGONAL TOWARDS MEDIUM 1D95B SIGNWRITING MOVEMENT-DIAGONAL TOWARDS LARGE 1D95C SIGNWRITING MOVEMENT-DIAGONAL TOWARDS LARGEST 1D95D SIGNWRITING MOVEMENT-DIAGONAL BETWEEN AWAY SMALL 1D95E SIGNWRITING MOVEMENT-DIAGONAL BETWEEN AWAY MEDIUM 1D95F SIGNWRITING MOVEMENT-DIAGONAL BETWEEN AWAY LARGE 1D960 SIGNWRITING MOVEMENT-DIAGONAL BETWEEN AWAY LARGEST 1D961 SIGNWRITING MOVEMENT-DIAGONAL BETWEEN TOWARDS SMALL 1D962 SIGNWRITING MOVEMENT-DIAGONAL BETWEEN TOWARDS MEDIUM 1D963 SIGNWRITING MOVEMENT-DIAGONAL BETWEEN TOWARDS LARGE 1D964 SIGNWRITING MOVEMENT-DIAGONAL BETWEEN TOWARDS LARGEST 1D965 SIGNWRITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT SMALL 1D966 SIGNWRITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT MEDIUM 1D967 SIGNWRITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT LARGE 1D968 SIGNWRITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT LARGEST 1D969 SIGNWRITING MOVEMENT-FLOORPLANE SINGLE WRIST FLEX 1D96A SIGNWRITING MOVEMENT-FLOORPLANE DOUBLE STRAIGHT 1D96B SIGNWRITING MOVEMENT-FLOORPLANE DOUBLE WRIST FLEX 1D96C SIGNWRITING MOVEMENT-FLOORPLANE DOUBLE ALTERNATING 1D96D SIGNWRITING MOVEMENT-FLOORPLANE DOUBLE ALTERNATING WRIST FLEX 1D96E SIGNWRITING MOVEMENT-FLOORPLANE CROSS 1D96F SIGNWRITING MOVEMENT-FLOORPLANE TRIPLE STRAIGHT MOVEMENT 1D970 SIGNWRITING MOVEMENT-FLOORPLANE TRIPLE WRIST FLEX 1D971 SIGNWRITING MOVEMENT-FLOORPLANE TRIPLE ALTERNATING MOVEMENT 1D972 SIGNWRITING MOVEMENT-FLOORPLANE TRIPLE ALTERNATING WRIST FLEX 1D973 SIGNWRITING MOVEMENT-FLOORPLANE BEND 1D974 SIGNWRITING MOVEMENT-FLOORPLANE CORNER SMALL 1D975 SIGNWRITING MOVEMENT-FLOORPLANE CORNER MEDIUM 1D976 SIGNWRITING MOVEMENT-FLOORPLANE CORNER LARGE 1D977 SIGNWRITING MOVEMENT-FLOORPLANE CHECK 1D978 SIGNWRITING MOVEMENT-FLOORPLANE BOX SMALL 1D979 SIGNWRITING MOVEMENT-FLOORPLANE BOX MEDIUM 1D97A SIGNWRITING MOVEMENT-FLOORPLANE BOX LARGE 1D97B SIGNWRITING MOVEMENT-FLOORPLANE ZIGZAG SMALL 1D97C SIGNWRITING MOVEMENT-FLOORPLANE ZIGZAG MEDIUM 1D97D SIGNWRITING MOVEMENT-FLOORPLANE ZIGZAG LARGE 1D97E SIGNWRITING MOVEMENT-FLOORPLANE PEAKS SMALL 1D97F SIGNWRITING MOVEMENT-FLOORPLANE PEAKS MEDIUM 1D980 SIGNWRITING MOVEMENT-FLOORPLANE PEAKS LARGE 1D981 SIGNWRITING TRAVEL-FLOORPLANE ROTATION-FLOORPLANE SINGLE 1D982 SIGNWRITING TRAVEL-FLOORPLANE ROTATION-FLOORPLANE DOUBLE 1D983 SIGNWRITING TRAVEL-FLOORPLANE ROTATION-FLOORPLANE ALTERNATING 1D984 SIGNWRITING TRAVEL-FLOORPLANE ROTATION-WALLPLANE SINGLE 1D985 SIGNWRITING TRAVEL-FLOORPLANE ROTATION-WALLPLANE DOUBLE 1D986 SIGNWRITING TRAVEL-FLOORPLANE ROTATION-WALLPLANE ALTERNATING 1D987 SIGNWRITING TRAVEL-FLOORPLANE SHAKING 1D988 SIGNWRITING MOVEMENT-WALLPLANE CURVE QUARTER SMALL 1D989 SIGNWRITING MOVEMENT-WALLPLANE CURVE QUARTER MEDIUM 1D98A SIGNWRITING MOVEMENT-WALLPLANE CURVE QUARTER LARGE 1D98B SIGNWRITING MOVEMENT-WALLPLANE CURVE QUARTER LARGEST 1D98C SIGNWRITING MOVEMENT-WALLPLANE CURVE HALF-CIRCLE SMALL 1D98D SIGNWRITING MOVEMENT-WALLPLANE CURVE HALF-CIRCLE MEDIUM 1D98E SIGNWRITING MOVEMENT-WALLPLANE CURVE HALF-CIRCLE LARGE 1D98F SIGNWRITING MOVEMENT-WALLPLANE CURVE HALF-CIRCLE LARGEST 1D990 SIGNWRITING MOVEMENT-WALLPLANE CURVE THREE-QUARTER CIRCLE SMALL 1D991 SIGNWRITING MOVEMENT-WALLPLANE CURVE THREE-QUARTER CIRCLE MEDIUM 1D992 SIGNWRITING MOVEMENT-WALLPLANE HUMP SMALL 1D993 SIGNWRITING MOVEMENT-WALLPLANE HUMP MEDIUM 1D994 SIGNWRITING MOVEMENT-WALLPLANE HUMP LARGE 1D995 SIGNWRITING MOVEMENT-WALLPLANE LOOP SMALL 1D996 SIGNWRITING MOVEMENT-WALLPLANE LOOP MEDIUM 1D997 SIGNWRITING MOVEMENT-WALLPLANE LOOP LARGE 1D998 SIGNWRITING MOVEMENT-WALLPLANE LOOP SMALL DOUBLE 1D999 SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE DOUBLE SMALL 1D99A SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE DOUBLE MEDIUM 1D99B SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE DOUBLE LARGE 1D99C SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE TRIPLE SMALL 1D99D SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE TRIPLE MEDIUM 1D99E SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE TRIPLE LARGE 1D99F SIGNWRITING MOVEMENT-WALLPLANE CURVE THEN STRAIGHT 1D9A0 SIGNWRITING MOVEMENT-WALLPLANE CURVED CROSS SMALL 1D9A1 SIGNWRITING MOVEMENT-WALLPLANE CURVED CROSS MEDIUM 1D9A2 SIGNWRITING ROTATION-WALLPLANE SINGLE 1D9A3 SIGNWRITING ROTATION-WALLPLANE DOUBLE 1D9A4 SIGNWRITING ROTATION-WALLPLANE ALTERNATE 1D9A5 SIGNWRITING MOVEMENT-WALLPLANE SHAKING 1D9A6 SIGNWRITING MOVEMENT-WALLPLANE CURVE HITTING FRONT WALL 1D9A7 SIGNWRITING MOVEMENT-WALLPLANE HUMP HITTING FRONT WALL 1D9A8 SIGNWRITING MOVEMENT-WALLPLANE LOOP HITTING FRONT WALL 1D9A9 SIGNWRITING MOVEMENT-WALLPLANE WAVE HITTING FRONT WALL 1D9AA SIGNWRITING ROTATION-WALLPLANE SINGLE HITTING FRONT WALL 1D9AB SIGNWRITING ROTATION-WALLPLANE DOUBLE HITTING FRONT WALL 1D9AC SIGNWRITING ROTATION-WALLPLANE ALTERNATING HITTING FRONT WALL 1D9AD SIGNWRITING MOVEMENT-WALLPLANE CURVE HITTING CHEST 1D9AE SIGNWRITING MOVEMENT-WALLPLANE HUMP HITTING CHEST 1D9AF SIGNWRITING MOVEMENT-WALLPLANE LOOP HITTING CHEST 1D9B0 SIGNWRITING MOVEMENT-WALLPLANE WAVE HITTING CHEST 1D9B1 SIGNWRITING ROTATION-WALLPLANE SINGLE HITTING CHEST 1D9B2 SIGNWRITING ROTATION-WALLPLANE DOUBLE HITTING CHEST 1D9B3 SIGNWRITING ROTATION-WALLPLANE ALTERNATING HITTING CHEST 1D9B4 SIGNWRITING MOVEMENT-WALLPLANE WAVE DIAGONAL PATH SMALL 1D9B5 SIGNWRITING MOVEMENT-WALLPLANE WAVE DIAGONAL PATH MEDIUM 1D9B6 SIGNWRITING MOVEMENT-WALLPLANE WAVE DIAGONAL PATH LARGE 1D9B7 SIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING CEILING SMALL 1D9B8 SIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING CEILING LARGE 1D9B9 SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING SMALL DOUBLE 1D9BA SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING LARGE DOUBLE 1D9BB SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING SMALL TRIPLE 1D9BC SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING LARGE TRIPLE 1D9BD SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING CEILING SMALL SINGLE 1D9BE SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING CEILING LARGE SINGLE 1D9BF SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING CEILING SMALL DOUBLE 1D9C0 SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING CEILING LARGE DOUBLE 1D9C1 SIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING CEILING SMALL 1D9C2 SIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING CEILING LARGE 1D9C3 SIGNWRITING ROTATION-FLOORPLANE SINGLE HITTING CEILING 1D9C4 SIGNWRITING ROTATION-FLOORPLANE DOUBLE HITTING CEILING 1D9C5 SIGNWRITING ROTATION-FLOORPLANE ALTERNATING HITTING CEILING 1D9C6 SIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING FLOOR SMALL 1D9C7 SIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING FLOOR LARGE 1D9C8 SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING FLOOR SMALL DOUBLE 1D9C9 SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING FLOOR LARGE DOUBLE 1D9CA SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING FLOOR TRIPLE SMALL TRIPLE 1D9CB SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING FLOOR TRIPLE LARGE TRIPLE 1D9CC SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING FLOOR SMALL SINGLE 1D9CD SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING FLOOR LARGE SINGLE 1D9CE SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING FLOOR SMALL DOUBLE 1D9CF SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING FLOOR LARGE DOUBLE 1D9D0 SIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING FLOOR SMALL 1D9D1 SIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING FLOOR LARGE 1D9D2 SIGNWRITING ROTATION-FLOORPLANE SINGLE HITTING FLOOR 1D9D3 SIGNWRITING ROTATION-FLOORPLANE DOUBLE HITTING FLOOR 1D9D4 SIGNWRITING ROTATION-FLOORPLANE ALTERNATING HITTING FLOOR 1D9D5 SIGNWRITING MOVEMENT-FLOORPLANE CURVE SMALL 1D9D6 SIGNWRITING MOVEMENT-FLOORPLANE CURVE MEDIUM 1D9D7 SIGNWRITING MOVEMENT-FLOORPLANE CURVE LARGE 1D9D8 SIGNWRITING MOVEMENT-FLOORPLANE CURVE LARGEST 1D9D9 SIGNWRITING MOVEMENT-FLOORPLANE CURVE COMBINED 1D9DA SIGNWRITING MOVEMENT-FLOORPLANE HUMP SMALL 1D9DB SIGNWRITING MOVEMENT-FLOORPLANE LOOP SMALL 1D9DC SIGNWRITING MOVEMENT-FLOORPLANE WAVE SNAKE 1D9DD SIGNWRITING MOVEMENT-FLOORPLANE WAVE SMALL 1D9DE SIGNWRITING MOVEMENT-FLOORPLANE WAVE LARGE 1D9DF SIGNWRITING ROTATION-FLOORPLANE SINGLE 1D9E0 SIGNWRITING ROTATION-FLOORPLANE DOUBLE 1D9E1 SIGNWRITING ROTATION-FLOORPLANE ALTERNATING 1D9E2 SIGNWRITING MOVEMENT-FLOORPLANE SHAKING PARALLEL 1D9E3 SIGNWRITING MOVEMENT-WALLPLANE ARM CIRCLE SMALL SINGLE 1D9E4 SIGNWRITING MOVEMENT-WALLPLANE ARM CIRCLE MEDIUM SINGLE 1D9E5 SIGNWRITING MOVEMENT-WALLPLANE ARM CIRCLE SMALL DOUBLE 1D9E6 SIGNWRITING MOVEMENT-WALLPLANE ARM CIRCLE MEDIUM DOUBLE 1D9E7 SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL SMALL SINGLE 1D9E8 SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL MEDIUM SINGLE 1D9E9 SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL LARGE SINGLE 1D9EA SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL SMALL DOUBLE 1D9EB SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL MEDIUM DOUBLE 1D9EC SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL LARGE DOUBLE 1D9ED SIGNWRITING MOVEMENT-WALLPLANE WRIST CIRCLE FRONT SINGLE 1D9EE SIGNWRITING MOVEMENT-WALLPLANE WRIST CIRCLE FRONT DOUBLE 1D9EF SIGNWRITING MOVEMENT-FLOORPLANE WRIST CIRCLE HITTING WALL SINGLE 1D9F0 SIGNWRITING MOVEMENT-FLOORPLANE WRIST CIRCLE HITTING WALL DOUBLE 1D9F1 SIGNWRITING MOVEMENT-WALLPLANE FINGER CIRCLES SINGLE 1D9F2 SIGNWRITING MOVEMENT-WALLPLANE FINGER CIRCLES DOUBLE 1D9F3 SIGNWRITING MOVEMENT-FLOORPLANE FINGER CIRCLES HITTING WALL SINGLE 1D9F4 SIGNWRITING MOVEMENT-FLOORPLANE FINGER CIRCLES HITTING WALL DOUBLE @ Dynamics indicators 1D9F5 SIGNWRITING DYNAMIC ARROWHEAD SMALL 1D9F6 SIGNWRITING DYNAMIC ARROWHEAD LARGE 1D9F7 SIGNWRITING DYNAMIC FAST 1D9F8 SIGNWRITING DYNAMIC SLOW 1D9F9 SIGNWRITING DYNAMIC TENSE 1D9FA SIGNWRITING DYNAMIC RELAXED 1D9FB SIGNWRITING DYNAMIC SIMULTANEOUS 1D9FC SIGNWRITING DYNAMIC SIMULTANEOUS ALTERNATING 1D9FD SIGNWRITING DYNAMIC EVERY OTHER TIME 1D9FE SIGNWRITING DYNAMIC GRADUAL @ Head shapes 1D9FF SIGNWRITING HEAD 1DA00 SIGNWRITING HEAD RIM 1DA01 SIGNWRITING HEAD MOVEMENT-WALLPLANE STRAIGHT 1DA02 SIGNWRITING HEAD MOVEMENT-WALLPLANE TILT 1DA03 SIGNWRITING HEAD MOVEMENT-FLOORPLANE STRAIGHT 1DA04 SIGNWRITING HEAD MOVEMENT-WALLPLANE CURVE 1DA05 SIGNWRITING HEAD MOVEMENT-FLOORPLANE CURVE 1DA06 SIGNWRITING HEAD MOVEMENT CIRCLE 1DA07 SIGNWRITING FACE DIRECTION POSITION NOSE FORWARD TILTING 1DA08 SIGNWRITING FACE DIRECTION POSITION NOSE UP OR DOWN 1DA09 SIGNWRITING FACE DIRECTION POSITION NOSE UP OR DOWN TILTING 1DA0A SIGNWRITING EYEBROWS STRAIGHT UP 1DA0B SIGNWRITING EYEBROWS STRAIGHT NEUTRAL 1DA0C SIGNWRITING EYEBROWS STRAIGHT DOWN 1DA0D SIGNWRITING DREAMY EYEBROWS NEUTRAL DOWN 1DA0E SIGNWRITING DREAMY EYEBROWS DOWN NEUTRAL 1DA0F SIGNWRITING DREAMY EYEBROWS UP NEUTRAL 1DA10 SIGNWRITING DREAMY EYEBROWS NEUTRAL UP 1DA11 SIGNWRITING FOREHEAD NEUTRAL 1DA12 SIGNWRITING FOREHEAD CONTACT 1DA13 SIGNWRITING FOREHEAD WRINKLED 1DA14 SIGNWRITING EYES OPEN 1DA15 SIGNWRITING EYES SQUEEZED 1DA16 SIGNWRITING EYES CLOSED 1DA17 SIGNWRITING EYE BLINK SINGLE 1DA18 SIGNWRITING EYE BLINK MULTIPLE 1DA19 SIGNWRITING EYES HALF OPEN 1DA1A SIGNWRITING EYES WIDE OPEN 1DA1B SIGNWRITING EYES HALF CLOSED 1DA1C SIGNWRITING EYES WIDENING MOVEMENT 1DA1D SIGNWRITING EYE WINK * squeezed eye blink 1DA1E SIGNWRITING EYELASHES UP 1DA1F SIGNWRITING EYELASHES DOWN 1DA20 SIGNWRITING EYELASHES FLUTTERING 1DA21 SIGNWRITING EYEGAZE-WALLPLANE STRAIGHT 1DA22 SIGNWRITING EYEGAZE-WALLPLANE STRAIGHT DOUBLE 1DA23 SIGNWRITING EYEGAZE-WALLPLANE STRAIGHT ALTERNATING 1DA24 SIGNWRITING EYEGAZE-FLOORPLANE STRAIGHT 1DA25 SIGNWRITING EYEGAZE-FLOORPLANE STRAIGHT DOUBLE 1DA26 SIGNWRITING EYEGAZE-FLOORPLANE STRAIGHT ALTERNATING 1DA27 SIGNWRITING EYEGAZE-WALLPLANE CURVED 1DA28 SIGNWRITING EYEGAZE-FLOORPLANE CURVED 1DA29 SIGNWRITING EYEGAZE-WALLPLANE CIRCLING 1DA2A SIGNWRITING CHEEKS PUFFED 1DA2B SIGNWRITING CHEEKS NEUTRAL 1DA2C SIGNWRITING CHEEKS SUCKED 1DA2D SIGNWRITING TENSE CHEEKS HIGH 1DA2E SIGNWRITING TENSE CHEEKS MIDDLE 1DA2F SIGNWRITING TENSE CHEEKS LOW 1DA30 SIGNWRITING EARS 1DA31 SIGNWRITING NOSE NEUTRAL 1DA32 SIGNWRITING NOSE CONTACT 1DA33 SIGNWRITING NOSE WRINKLES 1DA34 SIGNWRITING NOSE WIGGLES 1DA35 SIGNWRITING AIR BLOWING OUT 1DA36 SIGNWRITING AIR SUCKING IN 1DA37 SIGNWRITING AIR BLOW SMALL ROTATIONS 1DA38 SIGNWRITING AIR SUCK SMALL ROTATIONS 1DA39 SIGNWRITING BREATH INHALE 1DA3A SIGNWRITING BREATH EXHALE 1DA3B SIGNWRITING MOUTH CLOSED NEUTRAL 1DA3C SIGNWRITING MOUTH CLOSED FORWARD 1DA3D SIGNWRITING MOUTH CLOSED CONTACT 1DA3E SIGNWRITING MOUTH SMILE 1DA3F SIGNWRITING MOUTH SMILE WRINKLED 1DA40 SIGNWRITING MOUTH SMILE OPEN 1DA41 SIGNWRITING MOUTH FROWN 1DA42 SIGNWRITING MOUTH FROWN WRINKLED 1DA43 SIGNWRITING MOUTH FROWN OPEN 1DA44 SIGNWRITING MOUTH OPEN CIRCLE 1DA45 SIGNWRITING MOUTH OPEN FORWARD 1DA46 SIGNWRITING MOUTH OPEN WRINKLED 1DA47 SIGNWRITING MOUTH OPEN OVAL 1DA48 SIGNWRITING MOUTH OPEN OVAL WRINKLED 1DA49 SIGNWRITING MOUTH OPEN OVAL YAWN 1DA4A SIGNWRITING MOUTH OPEN RECTANGLE 1DA4B SIGNWRITING MOUTH OPEN RECTANGLE WRINKLED 1DA4C SIGNWRITING MOUTH OPEN RECTANGLE YAWN 1DA4D SIGNWRITING MOUTH KISS 1DA4E SIGNWRITING MOUTH KISS FORWARD 1DA4F SIGNWRITING MOUTH KISS WRINKLED 1DA50 SIGNWRITING MOUTH TENSE 1DA51 SIGNWRITING MOUTH TENSE FORWARD 1DA52 SIGNWRITING MOUTH TENSE SUCKED 1DA53 SIGNWRITING LIPS PRESSED TOGETHER 1DA54 SIGNWRITING LIP LOWER OVER UPPER 1DA55 SIGNWRITING LIP UPPER OVER LOWER 1DA56 SIGNWRITING MOUTH CORNERS 1DA57 SIGNWRITING MOUTH WRINKLES SINGLE 1DA58 SIGNWRITING MOUTH WRINKLES DOUBLE 1DA59 SIGNWRITING TONGUE STICKING OUT FAR 1DA5A SIGNWRITING TONGUE LICKING LIPS 1DA5B SIGNWRITING TONGUE TIP BETWEEN LIPS 1DA5C SIGNWRITING TONGUE TIP TOUCHING INSIDE MOUTH 1DA5D SIGNWRITING TONGUE INSIDE MOUTH RELAXED 1DA5E SIGNWRITING TONGUE MOVES AGAINST CHEEK 1DA5F SIGNWRITING TONGUE CENTRE STICKING OUT 1DA60 SIGNWRITING TONGUE CENTRE INSIDE MOUTH 1DA61 SIGNWRITING TEETH 1DA62 SIGNWRITING TEETH MOVEMENT 1DA63 SIGNWRITING TEETH ON TONGUE 1DA64 SIGNWRITING TEETH ON TONGUE MOVEMENT 1DA65 SIGNWRITING TEETH ON LIPS 1DA66 SIGNWRITING TEETH ON LIPS MOVEMENT 1DA67 SIGNWRITING TEETH BITE LIPS 1DA68 SIGNWRITING MOVEMENT-WALLPLANE JAW 1DA69 SIGNWRITING MOVEMENT-FLOORPLANE JAW 1DA6A SIGNWRITING NECK 1DA6B SIGNWRITING HAIR 1DA6C SIGNWRITING EXCITEMENT @ Body shapes 1DA6D SIGNWRITING SHOULDER HIP SPINE 1DA6E SIGNWRITING SHOULDER HIP POSITIONS 1DA6F SIGNWRITING WALLPLANE SHOULDER HIP MOVE 1DA70 SIGNWRITING FLOORPLANE SHOULDER HIP MOVE 1DA71 SIGNWRITING SHOULDER TILTING FROM WAIST 1DA72 SIGNWRITING TORSO-WALLPLANE STRAIGHT STRETCH 1DA73 SIGNWRITING TORSO-WALLPLANE CURVED BEND 1DA74 SIGNWRITING TORSO-FLOORPLANE TWISTING 1DA75 SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS 1DA76 SIGNWRITING LIMB COMBINATION 1DA77 SIGNWRITING LIMB LENGTH-1 1DA78 SIGNWRITING LIMB LENGTH-2 1DA79 SIGNWRITING LIMB LENGTH-3 1DA7A SIGNWRITING LIMB LENGTH-4 1DA7B SIGNWRITING LIMB LENGTH-5 1DA7C SIGNWRITING LIMB LENGTH-6 1DA7D SIGNWRITING LIMB LENGTH-7 1DA7E SIGNWRITING FINGER @ Location bases 1DA7F SIGNWRITING LOCATION-WALLPLANE SPACE 1DA80 SIGNWRITING LOCATION-FLOORPLANE SPACE 1DA81 SIGNWRITING LOCATION HEIGHT 1DA82 SIGNWRITING LOCATION WIDTH 1DA83 SIGNWRITING LOCATION DEPTH 1DA84 SIGNWRITING LOCATION HEAD NECK 1DA85 SIGNWRITING LOCATION TORSO 1DA86 SIGNWRITING LOCATION LIMBS DIGITS @ Punctuation 1DA87 SIGNWRITING COMMA 1DA88 SIGNWRITING FULL STOP 1DA89 SIGNWRITING SEMICOLON 1DA8A SIGNWRITING COLON 1DA8B SIGNWRITING PARENTHESIS * is a closing parenthesis when used with 1DAA4 signwriting rotation modifier-5 @ Fill modifiers 1DA9B SIGNWRITING FILL MODIFIER-2 1DA9C SIGNWRITING FILL MODIFIER-3 1DA9D SIGNWRITING FILL MODIFIER-4 1DA9E SIGNWRITING FILL MODIFIER-5 1DA9F SIGNWRITING FILL MODIFIER-6 @ Rotation modifiers 1DAA1 SIGNWRITING ROTATION MODIFIER-2 1DAA2 SIGNWRITING ROTATION MODIFIER-3 1DAA3 SIGNWRITING ROTATION MODIFIER-4 1DAA4 SIGNWRITING ROTATION MODIFIER-5 1DAA5 SIGNWRITING ROTATION MODIFIER-6 1DAA6 SIGNWRITING ROTATION MODIFIER-7 1DAA7 SIGNWRITING ROTATION MODIFIER-8 1DAA8 SIGNWRITING ROTATION MODIFIER-9 1DAA9 SIGNWRITING ROTATION MODIFIER-10 1DAAA SIGNWRITING ROTATION MODIFIER-11 1DAAB SIGNWRITING ROTATION MODIFIER-12 1DAAC SIGNWRITING ROTATION MODIFIER-13 1DAAD SIGNWRITING ROTATION MODIFIER-14 1DAAE SIGNWRITING ROTATION MODIFIER-15 1DAAF SIGNWRITING ROTATION MODIFIER-16 @@ 1E000 Glagolitic Supplement 1E02F @ Combining letters 1E000 COMBINING GLAGOLITIC LETTER AZU 1E001 COMBINING GLAGOLITIC LETTER BUKY 1E002 COMBINING GLAGOLITIC LETTER VEDE 1E003 COMBINING GLAGOLITIC LETTER GLAGOLI 1E004 COMBINING GLAGOLITIC LETTER DOBRO 1E005 COMBINING GLAGOLITIC LETTER YESTU 1E006 COMBINING GLAGOLITIC LETTER ZHIVETE 1E008 COMBINING GLAGOLITIC LETTER ZEMLJA 1E009 COMBINING GLAGOLITIC LETTER IZHE 1E00A COMBINING GLAGOLITIC LETTER INITIAL IZHE 1E00B COMBINING GLAGOLITIC LETTER I 1E00C COMBINING GLAGOLITIC LETTER DJERVI 1E00D COMBINING GLAGOLITIC LETTER KAKO 1E00E COMBINING GLAGOLITIC LETTER LJUDIJE 1E00F COMBINING GLAGOLITIC LETTER MYSLITE 1E010 COMBINING GLAGOLITIC LETTER NASHI 1E011 COMBINING GLAGOLITIC LETTER ONU 1E012 COMBINING GLAGOLITIC LETTER POKOJI 1E013 COMBINING GLAGOLITIC LETTER RITSI 1E014 COMBINING GLAGOLITIC LETTER SLOVO 1E015 COMBINING GLAGOLITIC LETTER TVRIDO 1E016 COMBINING GLAGOLITIC LETTER UKU 1E017 COMBINING GLAGOLITIC LETTER FRITU 1E018 COMBINING GLAGOLITIC LETTER HERU 1E01B COMBINING GLAGOLITIC LETTER SHTA 1E01C COMBINING GLAGOLITIC LETTER TSI 1E01D COMBINING GLAGOLITIC LETTER CHRIVI 1E01E COMBINING GLAGOLITIC LETTER SHA 1E01F COMBINING GLAGOLITIC LETTER YERU 1E020 COMBINING GLAGOLITIC LETTER YERI 1E021 COMBINING GLAGOLITIC LETTER YATI 1E023 COMBINING GLAGOLITIC LETTER YU 1E024 COMBINING GLAGOLITIC LETTER SMALL YUS 1E026 COMBINING GLAGOLITIC LETTER YO 1E027 COMBINING GLAGOLITIC LETTER IOTATED SMALL YUS 1E028 COMBINING GLAGOLITIC LETTER BIG YUS 1E029 COMBINING GLAGOLITIC LETTER IOTATED BIG YUS 1E02A COMBINING GLAGOLITIC LETTER FITA @@ 1E800 Mende Kikakui 1E8DF @ Syllables in k- 1E800 MENDE KIKAKUI SYLLABLE M001 KI 1E801 MENDE KIKAKUI SYLLABLE M002 KA 1E802 MENDE KIKAKUI SYLLABLE M003 KU 1E803 MENDE KIKAKUI SYLLABLE M065 KEE 1E804 MENDE KIKAKUI SYLLABLE M095 KE 1E805 MENDE KIKAKUI SYLLABLE M076 KOO 1E806 MENDE KIKAKUI SYLLABLE M048 KO 1E807 MENDE KIKAKUI SYLLABLE M179 KUA * equivalent to Dalby M177 @ Syllables in w- 1E808 MENDE KIKAKUI SYLLABLE M004 WI 1E809 MENDE KIKAKUI SYLLABLE M005 WA 1E80A MENDE KIKAKUI SYLLABLE M006 WU 1E80B MENDE KIKAKUI SYLLABLE M126 WEE 1E80C MENDE KIKAKUI SYLLABLE M118 WE 1E80D MENDE KIKAKUI SYLLABLE M114 WOO 1E80E MENDE KIKAKUI SYLLABLE M045 WO 1E80F MENDE KIKAKUI SYLLABLE M194 WUI 1E810 MENDE KIKAKUI SYLLABLE M143 WEI @ Syllables in wv- 1E811 MENDE KIKAKUI SYLLABLE M061 WVI 1E812 MENDE KIKAKUI SYLLABLE M049 WVA 1E813 MENDE KIKAKUI SYLLABLE M139 WVE @ Syllables in m- 1E814 MENDE KIKAKUI SYLLABLE M007 MIN 1E815 MENDE KIKAKUI SYLLABLE M008 MAN 1E816 MENDE KIKAKUI SYLLABLE M009 MUN 1E817 MENDE KIKAKUI SYLLABLE M059 MEN 1E818 MENDE KIKAKUI SYLLABLE M094 MON 1E819 MENDE KIKAKUI SYLLABLE M154 MUAN 1E81A MENDE KIKAKUI SYLLABLE M189 MUEN @ Syllables in b- 1E81B MENDE KIKAKUI SYLLABLE M010 BI 1E81C MENDE KIKAKUI SYLLABLE M011 BA 1E81D MENDE KIKAKUI SYLLABLE M012 BU 1E81E MENDE KIKAKUI SYLLABLE M150 BEE 1E81F MENDE KIKAKUI SYLLABLE M097 BE 1E820 MENDE KIKAKUI SYLLABLE M103 BOO 1E821 MENDE KIKAKUI SYLLABLE M138 BO @ Vowels 1E822 MENDE KIKAKUI SYLLABLE M013 I 1E823 MENDE KIKAKUI SYLLABLE M014 A 1E824 MENDE KIKAKUI SYLLABLE M015 U 1E825 MENDE KIKAKUI SYLLABLE M163 EE 1E826 MENDE KIKAKUI SYLLABLE M100 E 1E827 MENDE KIKAKUI SYLLABLE M165 OO 1E828 MENDE KIKAKUI SYLLABLE M147 O 1E829 MENDE KIKAKUI SYLLABLE M137 EI 1E82A MENDE KIKAKUI SYLLABLE M131 IN 1E82B MENDE KIKAKUI SYLLABLE M135 IN * used for the negative particle 1E82C MENDE KIKAKUI SYLLABLE M195 AN * Dalby's M195 HO has different shape and value 1E82D MENDE KIKAKUI SYLLABLE M178 EN * equivalent to Dalby M182 @ Syllables in s- 1E82E MENDE KIKAKUI SYLLABLE M019 SI 1E82F MENDE KIKAKUI SYLLABLE M020 SA 1E830 MENDE KIKAKUI SYLLABLE M021 SU 1E831 MENDE KIKAKUI SYLLABLE M162 SEE 1E832 MENDE KIKAKUI SYLLABLE M116 SE 1E833 MENDE KIKAKUI SYLLABLE M136 SOO 1E834 MENDE KIKAKUI SYLLABLE M079 SO 1E835 MENDE KIKAKUI SYLLABLE M196 SIA * not in Dalby or in Mansaray @ Syllables in l- 1E836 MENDE KIKAKUI SYLLABLE M025 LI * equivalent to Dalby and Mansaray M022 1E837 MENDE KIKAKUI SYLLABLE M026 LA * equivalent to Dalby and Mansaray M023 1E838 MENDE KIKAKUI SYLLABLE M027 LU * equivalent to Dalby and Mansaray M024 1E839 MENDE KIKAKUI SYLLABLE M084 LEE 1E83A MENDE KIKAKUI SYLLABLE M073 LE 1E83B MENDE KIKAKUI SYLLABLE M054 LOO 1E83C MENDE KIKAKUI SYLLABLE M153 LO 1E83D MENDE KIKAKUI SYLLABLE M110 LONG LE @ Syllables in d- 1E83E MENDE KIKAKUI SYLLABLE M016 DI 1E83F MENDE KIKAKUI SYLLABLE M017 DA 1E840 MENDE KIKAKUI SYLLABLE M018 DU 1E841 MENDE KIKAKUI SYLLABLE M089 DEE 1E842 MENDE KIKAKUI SYLLABLE M180 DOO * equivalent to Dalby M178 1E843 MENDE KIKAKUI SYLLABLE M181 DO * equivalent to Dalby M179 @ Syllables in t- 1E844 MENDE KIKAKUI SYLLABLE M022 TI * equivalent to Dalby and Mansaray M025 1E845 MENDE KIKAKUI SYLLABLE M023 TA * equivalent to Dalby and Mansaray M026 1E846 MENDE KIKAKUI SYLLABLE M024 TU * equivalent to Dalby and Mansaray M027 1E847 MENDE KIKAKUI SYLLABLE M091 TEE 1E848 MENDE KIKAKUI SYLLABLE M055 TE 1E849 MENDE KIKAKUI SYLLABLE M104 TOO 1E84A MENDE KIKAKUI SYLLABLE M069 TO @ Syllables in j- 1E84B MENDE KIKAKUI SYLLABLE M028 JI * equivalent to Mansaray M034 1E84C MENDE KIKAKUI SYLLABLE M029 JA * equivalent to Mansaray M035 1E84D MENDE KIKAKUI SYLLABLE M030 JU * equivalent to Mansaray M036 1E84E MENDE KIKAKUI SYLLABLE M157 JEE 1E84F MENDE KIKAKUI SYLLABLE M113 JE 1E850 MENDE KIKAKUI SYLLABLE M160 JOO 1E851 MENDE KIKAKUI SYLLABLE M063 JO 1E852 MENDE KIKAKUI SYLLABLE M175 LONG JO @ Syllables in y- 1E853 MENDE KIKAKUI SYLLABLE M031 YI 1E854 MENDE KIKAKUI SYLLABLE M032 YA 1E855 MENDE KIKAKUI SYLLABLE M033 YU 1E856 MENDE KIKAKUI SYLLABLE M109 YEE 1E857 MENDE KIKAKUI SYLLABLE M080 YE 1E858 MENDE KIKAKUI SYLLABLE M141 YOO 1E859 MENDE KIKAKUI SYLLABLE M121 YO @ Syllables in f- 1E85A MENDE KIKAKUI SYLLABLE M034 FI * equivalent to Mansaray M028 1E85B MENDE KIKAKUI SYLLABLE M035 FA * equivalent to Mansaray M029 1E85C MENDE KIKAKUI SYLLABLE M036 FU * equivalent to Mansaray M030 1E85D MENDE KIKAKUI SYLLABLE M078 FEE 1E85E MENDE KIKAKUI SYLLABLE M075 FE 1E85F MENDE KIKAKUI SYLLABLE M133 FOO 1E860 MENDE KIKAKUI SYLLABLE M088 FO 1E861 MENDE KIKAKUI SYLLABLE M197 FUA * not in Dalby or in Mansaray 1E862 MENDE KIKAKUI SYLLABLE M101 FAN @ Syllables in n- 1E863 MENDE KIKAKUI SYLLABLE M037 NIN 1E864 MENDE KIKAKUI SYLLABLE M038 NAN 1E865 MENDE KIKAKUI SYLLABLE M039 NUN 1E866 MENDE KIKAKUI SYLLABLE M117 NEN 1E867 MENDE KIKAKUI SYLLABLE M169 NON @ Syllables in h- 1E868 MENDE KIKAKUI SYLLABLE M176 HI 1E869 MENDE KIKAKUI SYLLABLE M041 HA 1E86A MENDE KIKAKUI SYLLABLE M186 HU 1E86B MENDE KIKAKUI SYLLABLE M040 HEE 1E86C MENDE KIKAKUI SYLLABLE M096 HE 1E86D MENDE KIKAKUI SYLLABLE M042 HOO 1E86E MENDE KIKAKUI SYLLABLE M140 HO 1E86F MENDE KIKAKUI SYLLABLE M083 HEEI 1E870 MENDE KIKAKUI SYLLABLE M128 HOOU 1E871 MENDE KIKAKUI SYLLABLE M053 HIN 1E872 MENDE KIKAKUI SYLLABLE M130 HAN 1E873 MENDE KIKAKUI SYLLABLE M087 HUN 1E874 MENDE KIKAKUI SYLLABLE M052 HEN 1E875 MENDE KIKAKUI SYLLABLE M193 HON * Dalby's M193 NGGEE has different shape and value 1E876 MENDE KIKAKUI SYLLABLE M046 HUAN @ Syllables in ngg- 1E877 MENDE KIKAKUI SYLLABLE M090 NGGI 1E878 MENDE KIKAKUI SYLLABLE M043 NGGA 1E879 MENDE KIKAKUI SYLLABLE M082 NGGU 1E87A MENDE KIKAKUI SYLLABLE M115 NGGEE 1E87B MENDE KIKAKUI SYLLABLE M146 NGGE 1E87C MENDE KIKAKUI SYLLABLE M156 NGGOO 1E87D MENDE KIKAKUI SYLLABLE M120 NGGO 1E87E MENDE KIKAKUI SYLLABLE M159 NGGAA 1E87F MENDE KIKAKUI SYLLABLE M127 NGGUA 1E880 MENDE KIKAKUI SYLLABLE M086 LONG NGGE 1E881 MENDE KIKAKUI SYLLABLE M106 LONG NGGOO 1E882 MENDE KIKAKUI SYLLABLE M183 LONG NGGO @ Syllables in g- 1E883 MENDE KIKAKUI SYLLABLE M155 GI 1E884 MENDE KIKAKUI SYLLABLE M111 GA 1E885 MENDE KIKAKUI SYLLABLE M168 GU 1E886 MENDE KIKAKUI SYLLABLE M190 GEE 1E887 MENDE KIKAKUI SYLLABLE M166 GUEI 1E888 MENDE KIKAKUI SYLLABLE M167 GUAN @ Syllables in ng- 1E889 MENDE KIKAKUI SYLLABLE M184 NGEN 1E88A MENDE KIKAKUI SYLLABLE M057 NGON 1E88B MENDE KIKAKUI SYLLABLE M177 NGUAN * equivalent to Dalby M181 @ Syllables in p- 1E88C MENDE KIKAKUI SYLLABLE M068 PI 1E88D MENDE KIKAKUI SYLLABLE M099 PA 1E88E MENDE KIKAKUI SYLLABLE M050 PU 1E88F MENDE KIKAKUI SYLLABLE M081 PEE 1E890 MENDE KIKAKUI SYLLABLE M051 PE 1E891 MENDE KIKAKUI SYLLABLE M102 POO 1E892 MENDE KIKAKUI SYLLABLE M066 PO @ Syllables in mb- 1E893 MENDE KIKAKUI SYLLABLE M145 MBI 1E894 MENDE KIKAKUI SYLLABLE M062 MBA 1E895 MENDE KIKAKUI SYLLABLE M122 MBU 1E896 MENDE KIKAKUI SYLLABLE M047 MBEE 1E897 MENDE KIKAKUI SYLLABLE M188 MBEE 1E898 MENDE KIKAKUI SYLLABLE M072 MBE 1E899 MENDE KIKAKUI SYLLABLE M172 MBOO 1E89A MENDE KIKAKUI SYLLABLE M174 MBO 1E89B MENDE KIKAKUI SYLLABLE M187 MBUU 1E89C MENDE KIKAKUI SYLLABLE M161 LONG MBE 1E89D MENDE KIKAKUI SYLLABLE M105 LONG MBOO 1E89E MENDE KIKAKUI SYLLABLE M142 LONG MBO @ Syllables in kp- 1E89F MENDE KIKAKUI SYLLABLE M132 KPI 1E8A0 MENDE KIKAKUI SYLLABLE M092 KPA 1E8A1 MENDE KIKAKUI SYLLABLE M074 KPU 1E8A2 MENDE KIKAKUI SYLLABLE M044 KPEE 1E8A3 MENDE KIKAKUI SYLLABLE M108 KPE 1E8A4 MENDE KIKAKUI SYLLABLE M112 KPOO 1E8A5 MENDE KIKAKUI SYLLABLE M158 KPO @ Syllables in gb- 1E8A6 MENDE KIKAKUI SYLLABLE M124 GBI 1E8A7 MENDE KIKAKUI SYLLABLE M056 GBA 1E8A8 MENDE KIKAKUI SYLLABLE M148 GBU 1E8A9 MENDE KIKAKUI SYLLABLE M093 GBEE 1E8AA MENDE KIKAKUI SYLLABLE M107 GBE 1E8AB MENDE KIKAKUI SYLLABLE M071 GBOO 1E8AC MENDE KIKAKUI SYLLABLE M070 GBO @ Syllable in r- 1E8AD MENDE KIKAKUI SYLLABLE M171 RA @ Syllables in nd- 1E8AE MENDE KIKAKUI SYLLABLE M123 NDI 1E8AF MENDE KIKAKUI SYLLABLE M129 NDA 1E8B0 MENDE KIKAKUI SYLLABLE M125 NDU 1E8B1 MENDE KIKAKUI SYLLABLE M191 NDEE 1E8B2 MENDE KIKAKUI SYLLABLE M119 NDE 1E8B3 MENDE KIKAKUI SYLLABLE M067 NDOO 1E8B4 MENDE KIKAKUI SYLLABLE M064 NDO @ Syllables in nj- 1E8B5 MENDE KIKAKUI SYLLABLE M152 NJA 1E8B6 MENDE KIKAKUI SYLLABLE M192 NJU 1E8B7 MENDE KIKAKUI SYLLABLE M149 NJEE 1E8B8 MENDE KIKAKUI SYLLABLE M134 NJOO @ Syllables in v- 1E8B9 MENDE KIKAKUI SYLLABLE M182 VI * equivalent to Dalby M180 1E8BA MENDE KIKAKUI SYLLABLE M185 VA 1E8BB MENDE KIKAKUI SYLLABLE M151 VU 1E8BC MENDE KIKAKUI SYLLABLE M173 VEE 1E8BD MENDE KIKAKUI SYLLABLE M085 VE 1E8BE MENDE KIKAKUI SYLLABLE M144 VOO 1E8BF MENDE KIKAKUI SYLLABLE M077 VO @ Syllables in ny- 1E8C0 MENDE KIKAKUI SYLLABLE M164 NYIN 1E8C1 MENDE KIKAKUI SYLLABLE M058 NYAN 1E8C2 MENDE KIKAKUI SYLLABLE M170 NYUN 1E8C3 MENDE KIKAKUI SYLLABLE M098 NYEN 1E8C4 MENDE KIKAKUI SYLLABLE M060 NYON @ Digits 1E8C7 MENDE KIKAKUI DIGIT ONE 1E8C8 MENDE KIKAKUI DIGIT TWO 1E8C9 MENDE KIKAKUI DIGIT THREE 1E8CA MENDE KIKAKUI DIGIT FOUR 1E8CB MENDE KIKAKUI DIGIT FIVE 1E8CC MENDE KIKAKUI DIGIT SIX 1E8CD MENDE KIKAKUI DIGIT SEVEN 1E8CE MENDE KIKAKUI DIGIT EIGHT 1E8CF MENDE KIKAKUI DIGIT NINE @ Combining number bases 1E8D0 MENDE KIKAKUI COMBINING NUMBER TEENS 1E8D1 MENDE KIKAKUI COMBINING NUMBER TENS 1E8D2 MENDE KIKAKUI COMBINING NUMBER HUNDREDS 1E8D3 MENDE KIKAKUI COMBINING NUMBER THOUSANDS 1E8D4 MENDE KIKAKUI COMBINING NUMBER TEN THOUSANDS 1E8D5 MENDE KIKAKUI COMBINING NUMBER HUNDRED THOUSANDS 1E8D6 MENDE KIKAKUI COMBINING NUMBER MILLIONS @@ 1E900 Adlam 1E95F @ Capital letters 1E900 ADLAM CAPITAL LETTER ALIF 1E901 ADLAM CAPITAL LETTER DAALI 1E902 ADLAM CAPITAL LETTER LAAM 1E903 ADLAM CAPITAL LETTER MIIM 1E904 ADLAM CAPITAL LETTER BA 1E905 ADLAM CAPITAL LETTER SINNYIIYHE 1E906 ADLAM CAPITAL LETTER PE 1E907 ADLAM CAPITAL LETTER BHE 1E908 ADLAM CAPITAL LETTER RA 1E909 ADLAM CAPITAL LETTER E 1E90A ADLAM CAPITAL LETTER FA 1E90B ADLAM CAPITAL LETTER I 1E90C ADLAM CAPITAL LETTER O 1E90D ADLAM CAPITAL LETTER DHA 1E90E ADLAM CAPITAL LETTER YHE 1E90F ADLAM CAPITAL LETTER WAW 1E910 ADLAM CAPITAL LETTER NUN 1E911 ADLAM CAPITAL LETTER KAF 1E912 ADLAM CAPITAL LETTER YA 1E913 ADLAM CAPITAL LETTER U 1E914 ADLAM CAPITAL LETTER JIIM 1E915 ADLAM CAPITAL LETTER CHI 1E916 ADLAM CAPITAL LETTER HA 1E917 ADLAM CAPITAL LETTER QAAF 1E918 ADLAM CAPITAL LETTER GA 1E919 ADLAM CAPITAL LETTER NYA 1E91A ADLAM CAPITAL LETTER TU 1E91B ADLAM CAPITAL LETTER NHA @ Supplementary capital letters 1E91C ADLAM CAPITAL LETTER VA 1E91D ADLAM CAPITAL LETTER KHA 1E91E ADLAM CAPITAL LETTER GBE 1E91F ADLAM CAPITAL LETTER ZAL 1E920 ADLAM CAPITAL LETTER KPO 1E921 ADLAM CAPITAL LETTER SHA @ Small letters 1E922 ADLAM SMALL LETTER ALIF 1E923 ADLAM SMALL LETTER DAALI 1E924 ADLAM SMALL LETTER LAAM 1E925 ADLAM SMALL LETTER MIIM 1E926 ADLAM SMALL LETTER BA 1E927 ADLAM SMALL LETTER SINNYIIYHE 1E928 ADLAM SMALL LETTER PE 1E929 ADLAM SMALL LETTER BHE 1E92A ADLAM SMALL LETTER RA 1E92B ADLAM SMALL LETTER E 1E92C ADLAM SMALL LETTER FA 1E92D ADLAM SMALL LETTER I 1E92E ADLAM SMALL LETTER O 1E92F ADLAM SMALL LETTER DHA 1E930 ADLAM SMALL LETTER YHE 1E931 ADLAM SMALL LETTER WAW 1E932 ADLAM SMALL LETTER NUN 1E933 ADLAM SMALL LETTER KAF 1E934 ADLAM SMALL LETTER YA 1E935 ADLAM SMALL LETTER U 1E936 ADLAM SMALL LETTER JIIM 1E937 ADLAM SMALL LETTER CHI 1E938 ADLAM SMALL LETTER HA 1E939 ADLAM SMALL LETTER QAAF 1E93A ADLAM SMALL LETTER GA 1E93B ADLAM SMALL LETTER NYA 1E93C ADLAM SMALL LETTER TU 1E93D ADLAM SMALL LETTER NHA @ Supplementary small letters 1E93E ADLAM SMALL LETTER VA 1E93F ADLAM SMALL LETTER KHA 1E940 ADLAM SMALL LETTER GBE 1E941 ADLAM SMALL LETTER ZAL 1E942 ADLAM SMALL LETTER KPO 1E943 ADLAM SMALL LETTER SHA @ Diacritical marks 1E944 ADLAM ALIF LENGTHENER 1E945 ADLAM VOWEL LENGTHENER 1E946 ADLAM GEMINATION MARK 1E947 ADLAM HAMZA 1E948 ADLAM CONSONANT MODIFIER 1E949 ADLAM GEMINATE CONSONANT MODIFIER 1E94A ADLAM NUKTA * called hoortobbhere when drawn above and lestobbhere when drawn below the base character @ Digits 1E950 ADLAM DIGIT ZERO 1E951 ADLAM DIGIT ONE 1E952 ADLAM DIGIT TWO 1E953 ADLAM DIGIT THREE 1E954 ADLAM DIGIT FOUR 1E955 ADLAM DIGIT FIVE 1E956 ADLAM DIGIT SIX 1E957 ADLAM DIGIT SEVEN 1E958 ADLAM DIGIT EIGHT 1E959 ADLAM DIGIT NINE @ Punctuation 1E95E ADLAM INITIAL EXCLAMATION MARK 1E95F ADLAM INITIAL QUESTION MARK @@ 1EE00 Arabic Mathematical Alphabetic Symbols 1EEFF @ Isolated symbols 1EE00 ARABIC MATHEMATICAL ALEF x (arabic letter alef isolated form - FE8D) # 0627 arabic letter alef 1EE01 ARABIC MATHEMATICAL BEH x (arabic letter beh isolated form - FE8F) # 0628 arabic letter beh 1EE02 ARABIC MATHEMATICAL JEEM x (arabic letter jeem isolated form - FE9D) # 062C arabic letter jeem 1EE03 ARABIC MATHEMATICAL DAL x (arabic letter dal isolated form - FEA9) # 062F arabic letter dal 1EE05 ARABIC MATHEMATICAL WAW x (arabic letter waw isolated form - FEED) # 0648 arabic letter waw 1EE06 ARABIC MATHEMATICAL ZAIN x (arabic letter zain isolated form - FEAF) # 0632 arabic letter zain 1EE07 ARABIC MATHEMATICAL HAH x (arabic letter hah isolated form - FEA1) # 062D arabic letter hah 1EE08 ARABIC MATHEMATICAL TAH x (arabic letter tah isolated form - FEC1) # 0637 arabic letter tah 1EE09 ARABIC MATHEMATICAL YEH x (arabic letter yeh isolated form - FEF1) # 064A arabic letter yeh 1EE0A ARABIC MATHEMATICAL KAF x (arabic letter kaf isolated form - FED9) # 0643 arabic letter kaf 1EE0B ARABIC MATHEMATICAL LAM x (arabic letter lam isolated form - FEDD) # 0644 arabic letter lam 1EE0C ARABIC MATHEMATICAL MEEM x (arabic letter meem isolated form - FEE1) # 0645 arabic letter meem 1EE0D ARABIC MATHEMATICAL NOON x (arabic letter noon isolated form - FEE5) # 0646 arabic letter noon 1EE0E ARABIC MATHEMATICAL SEEN x (arabic letter seen isolated form - FEB1) # 0633 arabic letter seen 1EE0F ARABIC MATHEMATICAL AIN x (arabic letter ain isolated form - FEC9) # 0639 arabic letter ain 1EE10 ARABIC MATHEMATICAL FEH x (arabic letter feh isolated form - FED1) # 0641 arabic letter feh 1EE11 ARABIC MATHEMATICAL SAD x (arabic letter sad isolated form - FEB9) # 0635 arabic letter sad 1EE12 ARABIC MATHEMATICAL QAF x (arabic letter qaf isolated form - FED5) # 0642 arabic letter qaf 1EE13 ARABIC MATHEMATICAL REH x (arabic letter reh isolated form - FEAD) # 0631 arabic letter reh 1EE14 ARABIC MATHEMATICAL SHEEN x (arabic letter sheen isolated form - FEB5) # 0634 arabic letter sheen 1EE15 ARABIC MATHEMATICAL TEH x (arabic letter teh isolated form - FE95) # 062A arabic letter teh 1EE16 ARABIC MATHEMATICAL THEH x (arabic letter theh isolated form - FE99) # 062B arabic letter theh 1EE17 ARABIC MATHEMATICAL KHAH x (arabic letter khah isolated form - FEA5) # 062E arabic letter khah 1EE18 ARABIC MATHEMATICAL THAL x (arabic letter thal isolated form - FEAB) # 0630 arabic letter thal 1EE19 ARABIC MATHEMATICAL DAD x (arabic letter dad isolated form - FEBD) # 0636 arabic letter dad 1EE1A ARABIC MATHEMATICAL ZAH x (arabic letter zah isolated form - FEC5) # 0638 arabic letter zah 1EE1B ARABIC MATHEMATICAL GHAIN x (arabic letter ghain isolated form - FECD) # 063A arabic letter ghain 1EE1C ARABIC MATHEMATICAL DOTLESS BEH x (arabic letter dotless beh - 066E) # 066E arabic letter dotless beh 1EE1D ARABIC MATHEMATICAL DOTLESS NOON x (arabic letter noon ghunna isolated form - FB9E) # 06BA arabic letter noon ghunna 1EE1E ARABIC MATHEMATICAL DOTLESS FEH x (arabic letter dotless feh - 06A1) # 06A1 arabic letter dotless feh 1EE1F ARABIC MATHEMATICAL DOTLESS QAF x (arabic letter dotless qaf - 066F) # 066F arabic letter dotless qaf @ Initial symbols 1EE21 ARABIC MATHEMATICAL INITIAL BEH x (arabic letter beh initial form - FE91) # 0628 arabic letter beh 1EE22 ARABIC MATHEMATICAL INITIAL JEEM x (arabic letter jeem initial form - FE9F) # 062C arabic letter jeem 1EE24 ARABIC MATHEMATICAL INITIAL HEH x (arabic letter heh initial form - FEEB) # 0647 arabic letter heh 1EE27 ARABIC MATHEMATICAL INITIAL HAH x (arabic letter hah initial form - FEA3) # 062D arabic letter hah 1EE29 ARABIC MATHEMATICAL INITIAL YEH x (arabic letter yeh initial form - FEF3) # 064A arabic letter yeh 1EE2A ARABIC MATHEMATICAL INITIAL KAF x (arabic letter kaf initial form - FEDB) # 0643 arabic letter kaf 1EE2B ARABIC MATHEMATICAL INITIAL LAM x (arabic letter lam initial form - FEDF) # 0644 arabic letter lam 1EE2C ARABIC MATHEMATICAL INITIAL MEEM x (arabic letter meem initial form - FEE3) # 0645 arabic letter meem 1EE2D ARABIC MATHEMATICAL INITIAL NOON x (arabic letter noon initial form - FEE7) # 0646 arabic letter noon 1EE2E ARABIC MATHEMATICAL INITIAL SEEN x (arabic letter seen initial form - FEB3) # 0633 arabic letter seen 1EE2F ARABIC MATHEMATICAL INITIAL AIN x (arabic letter ain initial form - FECB) # 0639 arabic letter ain 1EE30 ARABIC MATHEMATICAL INITIAL FEH x (arabic letter feh initial form - FED3) # 0641 arabic letter feh 1EE31 ARABIC MATHEMATICAL INITIAL SAD x (arabic letter sad initial form - FEBB) # 0635 arabic letter sad 1EE32 ARABIC MATHEMATICAL INITIAL QAF x (arabic letter qaf initial form - FED7) # 0642 arabic letter qaf 1EE34 ARABIC MATHEMATICAL INITIAL SHEEN x (arabic letter sheen initial form - FEB7) # 0634 arabic letter sheen 1EE35 ARABIC MATHEMATICAL INITIAL TEH x (arabic letter teh initial form - FE97) # 062A arabic letter teh 1EE36 ARABIC MATHEMATICAL INITIAL THEH x (arabic letter theh initial form - FE9B) # 062B arabic letter theh 1EE37 ARABIC MATHEMATICAL INITIAL KHAH x (arabic letter khah initial form - FEA7) # 062E arabic letter khah 1EE39 ARABIC MATHEMATICAL INITIAL DAD x (arabic letter dad initial form - FEBF) # 0636 arabic letter dad 1EE3B ARABIC MATHEMATICAL INITIAL GHAIN x (arabic letter ghain initial form - FECF) # 063A arabic letter ghain @ Tailed symbols 1EE42 ARABIC MATHEMATICAL TAILED JEEM # 062C arabic letter jeem 1EE47 ARABIC MATHEMATICAL TAILED HAH # 062D arabic letter hah 1EE49 ARABIC MATHEMATICAL TAILED YEH # 064A arabic letter yeh 1EE4B ARABIC MATHEMATICAL TAILED LAM # 0644 arabic letter lam 1EE4D ARABIC MATHEMATICAL TAILED NOON # 0646 arabic letter noon 1EE4E ARABIC MATHEMATICAL TAILED SEEN # 0633 arabic letter seen 1EE4F ARABIC MATHEMATICAL TAILED AIN # 0639 arabic letter ain 1EE51 ARABIC MATHEMATICAL TAILED SAD # 0635 arabic letter sad 1EE52 ARABIC MATHEMATICAL TAILED QAF # 0642 arabic letter qaf 1EE54 ARABIC MATHEMATICAL TAILED SHEEN # 0634 arabic letter sheen 1EE57 ARABIC MATHEMATICAL TAILED KHAH # 062E arabic letter khah 1EE59 ARABIC MATHEMATICAL TAILED DAD # 0636 arabic letter dad 1EE5B ARABIC MATHEMATICAL TAILED GHAIN # 063A arabic letter ghain 1EE5D ARABIC MATHEMATICAL TAILED DOTLESS NOON # 06BA arabic letter noon ghunna 1EE5F ARABIC MATHEMATICAL TAILED DOTLESS QAF # 066F arabic letter dotless qaf @ Stretched symbols 1EE61 ARABIC MATHEMATICAL STRETCHED BEH # 0628 arabic letter beh 1EE62 ARABIC MATHEMATICAL STRETCHED JEEM # 062C arabic letter jeem 1EE64 ARABIC MATHEMATICAL STRETCHED HEH # 0647 arabic letter heh 1EE67 ARABIC MATHEMATICAL STRETCHED HAH # 062D arabic letter hah 1EE68 ARABIC MATHEMATICAL STRETCHED TAH # 0637 arabic letter tah 1EE69 ARABIC MATHEMATICAL STRETCHED YEH # 064A arabic letter yeh 1EE6A ARABIC MATHEMATICAL STRETCHED KAF # 0643 arabic letter kaf 1EE6C ARABIC MATHEMATICAL STRETCHED MEEM # 0645 arabic letter meem 1EE6D ARABIC MATHEMATICAL STRETCHED NOON # 0646 arabic letter noon 1EE6E ARABIC MATHEMATICAL STRETCHED SEEN # 0633 arabic letter seen 1EE6F ARABIC MATHEMATICAL STRETCHED AIN # 0639 arabic letter ain 1EE70 ARABIC MATHEMATICAL STRETCHED FEH # 0641 arabic letter feh 1EE71 ARABIC MATHEMATICAL STRETCHED SAD # 0635 arabic letter sad 1EE72 ARABIC MATHEMATICAL STRETCHED QAF # 0642 arabic letter qaf 1EE74 ARABIC MATHEMATICAL STRETCHED SHEEN # 0634 arabic letter sheen 1EE75 ARABIC MATHEMATICAL STRETCHED TEH # 062A arabic letter teh 1EE76 ARABIC MATHEMATICAL STRETCHED THEH # 062B arabic letter theh 1EE77 ARABIC MATHEMATICAL STRETCHED KHAH # 062E arabic letter khah 1EE79 ARABIC MATHEMATICAL STRETCHED DAD # 0636 arabic letter dad 1EE7A ARABIC MATHEMATICAL STRETCHED ZAH # 0638 arabic letter zah 1EE7B ARABIC MATHEMATICAL STRETCHED GHAIN # 063A arabic letter ghain 1EE7C ARABIC MATHEMATICAL STRETCHED DOTLESS BEH # 066E arabic letter dotless beh 1EE7E ARABIC MATHEMATICAL STRETCHED DOTLESS FEH # 06A1 arabic letter dotless feh @ Looped symbols 1EE80 ARABIC MATHEMATICAL LOOPED ALEF # 0627 arabic letter alef 1EE81 ARABIC MATHEMATICAL LOOPED BEH # 0628 arabic letter beh 1EE82 ARABIC MATHEMATICAL LOOPED JEEM # 062C arabic letter jeem 1EE83 ARABIC MATHEMATICAL LOOPED DAL # 062F arabic letter dal 1EE84 ARABIC MATHEMATICAL LOOPED HEH # 0647 arabic letter heh 1EE85 ARABIC MATHEMATICAL LOOPED WAW # 0648 arabic letter waw 1EE86 ARABIC MATHEMATICAL LOOPED ZAIN # 0632 arabic letter zain 1EE87 ARABIC MATHEMATICAL LOOPED HAH # 062D arabic letter hah 1EE88 ARABIC MATHEMATICAL LOOPED TAH # 0637 arabic letter tah 1EE89 ARABIC MATHEMATICAL LOOPED YEH # 064A arabic letter yeh 1EE8B ARABIC MATHEMATICAL LOOPED LAM # 0644 arabic letter lam 1EE8C ARABIC MATHEMATICAL LOOPED MEEM # 0645 arabic letter meem 1EE8D ARABIC MATHEMATICAL LOOPED NOON # 0646 arabic letter noon 1EE8E ARABIC MATHEMATICAL LOOPED SEEN # 0633 arabic letter seen 1EE8F ARABIC MATHEMATICAL LOOPED AIN # 0639 arabic letter ain 1EE90 ARABIC MATHEMATICAL LOOPED FEH # 0641 arabic letter feh 1EE91 ARABIC MATHEMATICAL LOOPED SAD # 0635 arabic letter sad 1EE92 ARABIC MATHEMATICAL LOOPED QAF # 0642 arabic letter qaf 1EE93 ARABIC MATHEMATICAL LOOPED REH # 0631 arabic letter reh 1EE94 ARABIC MATHEMATICAL LOOPED SHEEN # 0634 arabic letter sheen 1EE95 ARABIC MATHEMATICAL LOOPED TEH # 062A arabic letter teh 1EE96 ARABIC MATHEMATICAL LOOPED THEH # 062B arabic letter theh 1EE97 ARABIC MATHEMATICAL LOOPED KHAH # 062E arabic letter khah 1EE98 ARABIC MATHEMATICAL LOOPED THAL # 0630 arabic letter thal 1EE99 ARABIC MATHEMATICAL LOOPED DAD # 0636 arabic letter dad 1EE9A ARABIC MATHEMATICAL LOOPED ZAH # 0638 arabic letter zah 1EE9B ARABIC MATHEMATICAL LOOPED GHAIN # 063A arabic letter ghain @ Double-struck symbols 1EEA1 ARABIC MATHEMATICAL DOUBLE-STRUCK BEH # 0628 arabic letter beh 1EEA2 ARABIC MATHEMATICAL DOUBLE-STRUCK JEEM # 062C arabic letter jeem 1EEA3 ARABIC MATHEMATICAL DOUBLE-STRUCK DAL # 062F arabic letter dal 1EEA5 ARABIC MATHEMATICAL DOUBLE-STRUCK WAW # 0648 arabic letter waw 1EEA6 ARABIC MATHEMATICAL DOUBLE-STRUCK ZAIN # 0632 arabic letter zain 1EEA7 ARABIC MATHEMATICAL DOUBLE-STRUCK HAH # 062D arabic letter hah 1EEA8 ARABIC MATHEMATICAL DOUBLE-STRUCK TAH # 0637 arabic letter tah 1EEA9 ARABIC MATHEMATICAL DOUBLE-STRUCK YEH # 064A arabic letter yeh 1EEAB ARABIC MATHEMATICAL DOUBLE-STRUCK LAM # 0644 arabic letter lam 1EEAC ARABIC MATHEMATICAL DOUBLE-STRUCK MEEM # 0645 arabic letter meem 1EEAD ARABIC MATHEMATICAL DOUBLE-STRUCK NOON # 0646 arabic letter noon 1EEAE ARABIC MATHEMATICAL DOUBLE-STRUCK SEEN # 0633 arabic letter seen 1EEAF ARABIC MATHEMATICAL DOUBLE-STRUCK AIN # 0639 arabic letter ain 1EEB0 ARABIC MATHEMATICAL DOUBLE-STRUCK FEH # 0641 arabic letter feh 1EEB1 ARABIC MATHEMATICAL DOUBLE-STRUCK SAD # 0635 arabic letter sad 1EEB2 ARABIC MATHEMATICAL DOUBLE-STRUCK QAF # 0642 arabic letter qaf 1EEB3 ARABIC MATHEMATICAL DOUBLE-STRUCK REH # 0631 arabic letter reh 1EEB4 ARABIC MATHEMATICAL DOUBLE-STRUCK SHEEN # 0634 arabic letter sheen 1EEB5 ARABIC MATHEMATICAL DOUBLE-STRUCK TEH # 062A arabic letter teh 1EEB6 ARABIC MATHEMATICAL DOUBLE-STRUCK THEH # 062B arabic letter theh 1EEB7 ARABIC MATHEMATICAL DOUBLE-STRUCK KHAH # 062E arabic letter khah 1EEB8 ARABIC MATHEMATICAL DOUBLE-STRUCK THAL # 0630 arabic letter thal 1EEB9 ARABIC MATHEMATICAL DOUBLE-STRUCK DAD # 0636 arabic letter dad 1EEBA ARABIC MATHEMATICAL DOUBLE-STRUCK ZAH # 0638 arabic letter zah 1EEBB ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN # 063A arabic letter ghain @ Stretching operators @+ The following operators stretch based on the width of the text that is displayed below or above them. 1EEF0 ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL * used in Arabic mathematics to denote summation * stretched at the tatweel x (n-ary summation - 2211) 1EEF1 ARABIC MATHEMATICAL OPERATOR HAH WITH DAL * used in Persian mathematics to denote limits * stretched between the hah and the dal @@ 1F000 Mahjong Tiles 1F02F @ Prevailing wind tiles 1F000 MAHJONG TILE EAST WIND 1F001 MAHJONG TILE SOUTH WIND 1F002 MAHJONG TILE WEST WIND 1F003 MAHJONG TILE NORTH WIND @ Dragon tiles 1F004 MAHJONG TILE RED DRAGON = hongzhong ~ 1F004 FE0E text style ~ 1F004 FE0F emoji style 1F005 MAHJONG TILE GREEN DRAGON = qingfa 1F006 MAHJONG TILE WHITE DRAGON = baiban @ Character suit tiles 1F007 MAHJONG TILE ONE OF CHARACTERS = wan 1F008 MAHJONG TILE TWO OF CHARACTERS 1F009 MAHJONG TILE THREE OF CHARACTERS 1F00A MAHJONG TILE FOUR OF CHARACTERS 1F00B MAHJONG TILE FIVE OF CHARACTERS 1F00C MAHJONG TILE SIX OF CHARACTERS 1F00D MAHJONG TILE SEVEN OF CHARACTERS 1F00E MAHJONG TILE EIGHT OF CHARACTERS 1F00F MAHJONG TILE NINE OF CHARACTERS @ Bamboo suit tiles 1F010 MAHJONG TILE ONE OF BAMBOOS = tiao 1F011 MAHJONG TILE TWO OF BAMBOOS 1F012 MAHJONG TILE THREE OF BAMBOOS 1F013 MAHJONG TILE FOUR OF BAMBOOS 1F014 MAHJONG TILE FIVE OF BAMBOOS 1F015 MAHJONG TILE SIX OF BAMBOOS 1F016 MAHJONG TILE SEVEN OF BAMBOOS 1F017 MAHJONG TILE EIGHT OF BAMBOOS 1F018 MAHJONG TILE NINE OF BAMBOOS @ Circle suit tiles 1F019 MAHJONG TILE ONE OF CIRCLES = bing 1F01A MAHJONG TILE TWO OF CIRCLES 1F01B MAHJONG TILE THREE OF CIRCLES 1F01C MAHJONG TILE FOUR OF CIRCLES 1F01D MAHJONG TILE FIVE OF CIRCLES 1F01E MAHJONG TILE SIX OF CIRCLES 1F01F MAHJONG TILE SEVEN OF CIRCLES 1F020 MAHJONG TILE EIGHT OF CIRCLES 1F021 MAHJONG TILE NINE OF CIRCLES @ Flower tiles 1F022 MAHJONG TILE PLUM = mei 1F023 MAHJONG TILE ORCHID = lan 1F024 MAHJONG TILE BAMBOO = zhu 1F025 MAHJONG TILE CHRYSANTHEMUM = ju @ Season tiles 1F026 MAHJONG TILE SPRING 1F027 MAHJONG TILE SUMMER 1F028 MAHJONG TILE AUTUMN 1F029 MAHJONG TILE WINTER @ Miscellaneous tiles 1F02A MAHJONG TILE JOKER = baida 1F02B MAHJONG TILE BACK @~ ! @@ 1F030 Domino Tiles 1F09F @ Horizontal tiles 1F030 DOMINO TILE HORIZONTAL BACK @ Zeroes 1F031 DOMINO TILE HORIZONTAL-00-00 1F032 DOMINO TILE HORIZONTAL-00-01 1F033 DOMINO TILE HORIZONTAL-00-02 1F034 DOMINO TILE HORIZONTAL-00-03 1F035 DOMINO TILE HORIZONTAL-00-04 1F036 DOMINO TILE HORIZONTAL-00-05 1F037 DOMINO TILE HORIZONTAL-00-06 @ Ones 1F038 DOMINO TILE HORIZONTAL-01-00 1F039 DOMINO TILE HORIZONTAL-01-01 1F03A DOMINO TILE HORIZONTAL-01-02 1F03B DOMINO TILE HORIZONTAL-01-03 1F03C DOMINO TILE HORIZONTAL-01-04 1F03D DOMINO TILE HORIZONTAL-01-05 1F03E DOMINO TILE HORIZONTAL-01-06 @ Twos 1F03F DOMINO TILE HORIZONTAL-02-00 1F040 DOMINO TILE HORIZONTAL-02-01 1F041 DOMINO TILE HORIZONTAL-02-02 1F042 DOMINO TILE HORIZONTAL-02-03 1F043 DOMINO TILE HORIZONTAL-02-04 1F044 DOMINO TILE HORIZONTAL-02-05 1F045 DOMINO TILE HORIZONTAL-02-06 @ Threes 1F046 DOMINO TILE HORIZONTAL-03-00 1F047 DOMINO TILE HORIZONTAL-03-01 1F048 DOMINO TILE HORIZONTAL-03-02 1F049 DOMINO TILE HORIZONTAL-03-03 1F04A DOMINO TILE HORIZONTAL-03-04 1F04B DOMINO TILE HORIZONTAL-03-05 1F04C DOMINO TILE HORIZONTAL-03-06 @ Fours 1F04D DOMINO TILE HORIZONTAL-04-00 1F04E DOMINO TILE HORIZONTAL-04-01 1F04F DOMINO TILE HORIZONTAL-04-02 1F050 DOMINO TILE HORIZONTAL-04-03 1F051 DOMINO TILE HORIZONTAL-04-04 1F052 DOMINO TILE HORIZONTAL-04-05 1F053 DOMINO TILE HORIZONTAL-04-06 @ Fives 1F054 DOMINO TILE HORIZONTAL-05-00 1F055 DOMINO TILE HORIZONTAL-05-01 1F056 DOMINO TILE HORIZONTAL-05-02 1F057 DOMINO TILE HORIZONTAL-05-03 1F058 DOMINO TILE HORIZONTAL-05-04 1F059 DOMINO TILE HORIZONTAL-05-05 1F05A DOMINO TILE HORIZONTAL-05-06 @ Sixes 1F05B DOMINO TILE HORIZONTAL-06-00 1F05C DOMINO TILE HORIZONTAL-06-01 1F05D DOMINO TILE HORIZONTAL-06-02 1F05E DOMINO TILE HORIZONTAL-06-03 1F05F DOMINO TILE HORIZONTAL-06-04 1F060 DOMINO TILE HORIZONTAL-06-05 1F061 DOMINO TILE HORIZONTAL-06-06 @ Vertical tiles 1F062 DOMINO TILE VERTICAL BACK @ Zeroes 1F063 DOMINO TILE VERTICAL-00-00 1F064 DOMINO TILE VERTICAL-00-01 1F065 DOMINO TILE VERTICAL-00-02 1F066 DOMINO TILE VERTICAL-00-03 1F067 DOMINO TILE VERTICAL-00-04 1F068 DOMINO TILE VERTICAL-00-05 1F069 DOMINO TILE VERTICAL-00-06 @ Ones 1F06A DOMINO TILE VERTICAL-01-00 1F06B DOMINO TILE VERTICAL-01-01 1F06C DOMINO TILE VERTICAL-01-02 1F06D DOMINO TILE VERTICAL-01-03 1F06E DOMINO TILE VERTICAL-01-04 1F06F DOMINO TILE VERTICAL-01-05 1F070 DOMINO TILE VERTICAL-01-06 @ Twos 1F071 DOMINO TILE VERTICAL-02-00 1F072 DOMINO TILE VERTICAL-02-01 1F073 DOMINO TILE VERTICAL-02-02 1F074 DOMINO TILE VERTICAL-02-03 1F075 DOMINO TILE VERTICAL-02-04 1F076 DOMINO TILE VERTICAL-02-05 1F077 DOMINO TILE VERTICAL-02-06 @ Threes 1F078 DOMINO TILE VERTICAL-03-00 1F079 DOMINO TILE VERTICAL-03-01 1F07A DOMINO TILE VERTICAL-03-02 1F07B DOMINO TILE VERTICAL-03-03 1F07C DOMINO TILE VERTICAL-03-04 1F07D DOMINO TILE VERTICAL-03-05 1F07E DOMINO TILE VERTICAL-03-06 @ Fours 1F07F DOMINO TILE VERTICAL-04-00 1F080 DOMINO TILE VERTICAL-04-01 1F081 DOMINO TILE VERTICAL-04-02 1F082 DOMINO TILE VERTICAL-04-03 1F083 DOMINO TILE VERTICAL-04-04 1F084 DOMINO TILE VERTICAL-04-05 1F085 DOMINO TILE VERTICAL-04-06 @ Fives 1F086 DOMINO TILE VERTICAL-05-00 1F087 DOMINO TILE VERTICAL-05-01 1F088 DOMINO TILE VERTICAL-05-02 1F089 DOMINO TILE VERTICAL-05-03 1F08A DOMINO TILE VERTICAL-05-04 1F08B DOMINO TILE VERTICAL-05-05 1F08C DOMINO TILE VERTICAL-05-06 @ Sixes 1F08D DOMINO TILE VERTICAL-06-00 1F08E DOMINO TILE VERTICAL-06-01 1F08F DOMINO TILE VERTICAL-06-02 1F090 DOMINO TILE VERTICAL-06-03 1F091 DOMINO TILE VERTICAL-06-04 1F092 DOMINO TILE VERTICAL-06-05 1F093 DOMINO TILE VERTICAL-06-06 @@ 1F0A0 Playing Cards 1F0FF @+ These characters are used to represent the 52-card and 56-card variants of modern playing cards, as well as the 56-card Minor Arcana of the Western Tarot. The glyphs shown in the charts have only a symbolic and schematic equivalence to particular varieties of actual playing cards. @ Back of card 1F0A0 PLAYING CARD BACK @ Spades or swords 1F0A1 PLAYING CARD ACE OF SPADES 1F0A2 PLAYING CARD TWO OF SPADES 1F0A3 PLAYING CARD THREE OF SPADES 1F0A4 PLAYING CARD FOUR OF SPADES 1F0A5 PLAYING CARD FIVE OF SPADES 1F0A6 PLAYING CARD SIX OF SPADES 1F0A7 PLAYING CARD SEVEN OF SPADES 1F0A8 PLAYING CARD EIGHT OF SPADES 1F0A9 PLAYING CARD NINE OF SPADES 1F0AA PLAYING CARD TEN OF SPADES 1F0AB PLAYING CARD JACK OF SPADES = valet, Bube, Unter, Page, fante = page of swords 1F0AC PLAYING CARD KNIGHT OF SPADES = chevalier, Ober, Ritter, cavall, cavaliere = knight of swords 1F0AD PLAYING CARD QUEEN OF SPADES = dame, Dame, Königin, regina = queen of swords 1F0AE PLAYING CARD KING OF SPADES = roi, König, re = king of swords @ Hearts or cups 1F0B1 PLAYING CARD ACE OF HEARTS 1F0B2 PLAYING CARD TWO OF HEARTS 1F0B3 PLAYING CARD THREE OF HEARTS 1F0B4 PLAYING CARD FOUR OF HEARTS 1F0B5 PLAYING CARD FIVE OF HEARTS 1F0B6 PLAYING CARD SIX OF HEARTS 1F0B7 PLAYING CARD SEVEN OF HEARTS 1F0B8 PLAYING CARD EIGHT OF HEARTS 1F0B9 PLAYING CARD NINE OF HEARTS 1F0BA PLAYING CARD TEN OF HEARTS 1F0BB PLAYING CARD JACK OF HEARTS 1F0BC PLAYING CARD KNIGHT OF HEARTS 1F0BD PLAYING CARD QUEEN OF HEARTS 1F0BE PLAYING CARD KING OF HEARTS @ Joker 1F0BF PLAYING CARD RED JOKER * used as the third joker @ Diamonds or pentacles 1F0C1 PLAYING CARD ACE OF DIAMONDS 1F0C2 PLAYING CARD TWO OF DIAMONDS 1F0C3 PLAYING CARD THREE OF DIAMONDS 1F0C4 PLAYING CARD FOUR OF DIAMONDS 1F0C5 PLAYING CARD FIVE OF DIAMONDS 1F0C6 PLAYING CARD SIX OF DIAMONDS 1F0C7 PLAYING CARD SEVEN OF DIAMONDS 1F0C8 PLAYING CARD EIGHT OF DIAMONDS 1F0C9 PLAYING CARD NINE OF DIAMONDS 1F0CA PLAYING CARD TEN OF DIAMONDS 1F0CB PLAYING CARD JACK OF DIAMONDS 1F0CC PLAYING CARD KNIGHT OF DIAMONDS 1F0CD PLAYING CARD QUEEN OF DIAMONDS 1F0CE PLAYING CARD KING OF DIAMONDS @ Joker 1F0CF PLAYING CARD BLACK JOKER @ Clubs or wands 1F0D1 PLAYING CARD ACE OF CLUBS 1F0D2 PLAYING CARD TWO OF CLUBS 1F0D3 PLAYING CARD THREE OF CLUBS 1F0D4 PLAYING CARD FOUR OF CLUBS 1F0D5 PLAYING CARD FIVE OF CLUBS 1F0D6 PLAYING CARD SIX OF CLUBS 1F0D7 PLAYING CARD SEVEN OF CLUBS 1F0D8 PLAYING CARD EIGHT OF CLUBS 1F0D9 PLAYING CARD NINE OF CLUBS 1F0DA PLAYING CARD TEN OF CLUBS 1F0DB PLAYING CARD JACK OF CLUBS 1F0DC PLAYING CARD KNIGHT OF CLUBS 1F0DD PLAYING CARD QUEEN OF CLUBS 1F0DE PLAYING CARD KING OF CLUBS @ Joker 1F0DF PLAYING CARD WHITE JOKER * may also be red @ Trumps 1F0E0 PLAYING CARD FOOL 1F0E1 PLAYING CARD TRUMP-1 * individual 1F0E2 PLAYING CARD TRUMP-2 * childhood 1F0E3 PLAYING CARD TRUMP-3 * youth 1F0E4 PLAYING CARD TRUMP-4 * maturity 1F0E5 PLAYING CARD TRUMP-5 * old age 1F0E6 PLAYING CARD TRUMP-6 * morning 1F0E7 PLAYING CARD TRUMP-7 * afternoon 1F0E8 PLAYING CARD TRUMP-8 * evening 1F0E9 PLAYING CARD TRUMP-9 * night 1F0EA PLAYING CARD TRUMP-10 * earth and air 1F0EB PLAYING CARD TRUMP-11 * water and fire 1F0EC PLAYING CARD TRUMP-12 * dance 1F0ED PLAYING CARD TRUMP-13 * shopping 1F0EE PLAYING CARD TRUMP-14 * open air 1F0EF PLAYING CARD TRUMP-15 * visual arts 1F0F0 PLAYING CARD TRUMP-16 * spring 1F0F1 PLAYING CARD TRUMP-17 * summer 1F0F2 PLAYING CARD TRUMP-18 * autumn 1F0F3 PLAYING CARD TRUMP-19 * winter 1F0F4 PLAYING CARD TRUMP-20 * the game 1F0F5 PLAYING CARD TRUMP-21 * collective @@ 1F100 Enclosed Alphanumeric Supplement 1F1FF @ Number with full stop @+ This symbol completes the set of numbers with full stop starting at 2488. 1F100 DIGIT ZERO FULL STOP # 0030 002E @ Numbers with comma 1F101 DIGIT ZERO COMMA # 0030 002C 1F102 DIGIT ONE COMMA # 0031 002C 1F103 DIGIT TWO COMMA # 0032 002C 1F104 DIGIT THREE COMMA # 0033 002C 1F105 DIGIT FOUR COMMA # 0034 002C 1F106 DIGIT FIVE COMMA # 0035 002C 1F107 DIGIT SIX COMMA # 0036 002C 1F108 DIGIT SEVEN COMMA # 0037 002C 1F109 DIGIT EIGHT COMMA # 0038 002C 1F10A DIGIT NINE COMMA # 0039 002C @ Circled sans-serif digits @+ These digits complement the sans-serif digit sets in the Dingbat block ranges 2780-2789 and 278A-2793. 1F10B DINGBAT CIRCLED SANS-SERIF DIGIT ZERO 1F10C DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO @ Parenthesized Latin letters @+ This set provides uppercase versions of the set starting at 249C. Parenthesized Latin letters do not have case mappings. 1F110 PARENTHESIZED LATIN CAPITAL LETTER A # 0028 0041 0029 1F111 PARENTHESIZED LATIN CAPITAL LETTER B # 0028 0042 0029 1F112 PARENTHESIZED LATIN CAPITAL LETTER C # 0028 0043 0029 1F113 PARENTHESIZED LATIN CAPITAL LETTER D # 0028 0044 0029 1F114 PARENTHESIZED LATIN CAPITAL LETTER E # 0028 0045 0029 1F115 PARENTHESIZED LATIN CAPITAL LETTER F # 0028 0046 0029 1F116 PARENTHESIZED LATIN CAPITAL LETTER G # 0028 0047 0029 1F117 PARENTHESIZED LATIN CAPITAL LETTER H # 0028 0048 0029 1F118 PARENTHESIZED LATIN CAPITAL LETTER I # 0028 0049 0029 1F119 PARENTHESIZED LATIN CAPITAL LETTER J # 0028 004A 0029 1F11A PARENTHESIZED LATIN CAPITAL LETTER K # 0028 004B 0029 1F11B PARENTHESIZED LATIN CAPITAL LETTER L # 0028 004C 0029 1F11C PARENTHESIZED LATIN CAPITAL LETTER M # 0028 004D 0029 1F11D PARENTHESIZED LATIN CAPITAL LETTER N # 0028 004E 0029 1F11E PARENTHESIZED LATIN CAPITAL LETTER O # 0028 004F 0029 1F11F PARENTHESIZED LATIN CAPITAL LETTER P # 0028 0050 0029 1F120 PARENTHESIZED LATIN CAPITAL LETTER Q # 0028 0051 0029 1F121 PARENTHESIZED LATIN CAPITAL LETTER R # 0028 0052 0029 1F122 PARENTHESIZED LATIN CAPITAL LETTER S # 0028 0053 0029 1F123 PARENTHESIZED LATIN CAPITAL LETTER T # 0028 0054 0029 1F124 PARENTHESIZED LATIN CAPITAL LETTER U # 0028 0055 0029 1F125 PARENTHESIZED LATIN CAPITAL LETTER V # 0028 0056 0029 1F126 PARENTHESIZED LATIN CAPITAL LETTER W # 0028 0057 0029 1F127 PARENTHESIZED LATIN CAPITAL LETTER X # 0028 0058 0029 1F128 PARENTHESIZED LATIN CAPITAL LETTER Y # 0028 0059 0029 1F129 PARENTHESIZED LATIN CAPITAL LETTER Z # 0028 005A 0029 @ Latin letter with tortoise shell brackets 1F12A TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S * used in baseball scoring # 3014 0053 3015 @ Circled italic Latin letters 1F12B CIRCLED ITALIC LATIN CAPITAL LETTER C = compact disc, single disc record # 0043 1F12C CIRCLED ITALIC LATIN CAPITAL LETTER R = disc record # 0052 @ Circled Latin letter sequences 1F12D CIRCLED CD x (square cd - 33C5) # 0043 0044 1F12E CIRCLED WZ * from the German term "Warenzeichen" * indicate a trademarked term without making a legal claim of trademark status * decomposition is anomalous, as the usual glyph shows a capital W and a small z x (trade mark sign - 2122) # 0057 005A @ Squared Latin letters 1F130 SQUARED LATIN CAPITAL LETTER A = Anreisetag (day of arrival) # 0041 1F131 SQUARED LATIN CAPITAL LETTER B = bank = b-mode stereo compression broadcasting service (ARIB STD B24) # 0042 1F132 SQUARED LATIN CAPITAL LETTER C # 0043 1F133 SQUARED LATIN CAPITAL LETTER D # 0044 1F134 SQUARED LATIN CAPITAL LETTER E # 0045 1F135 SQUARED LATIN CAPITAL LETTER F # 0046 1F136 SQUARED LATIN CAPITAL LETTER G # 0047 1F137 SQUARED LATIN CAPITAL LETTER H # 0048 1F138 SQUARED LATIN CAPITAL LETTER I # 0049 1F139 SQUARED LATIN CAPITAL LETTER J # 004A 1F13A SQUARED LATIN CAPITAL LETTER K # 004B 1F13B SQUARED LATIN CAPITAL LETTER L # 004C 1F13C SQUARED LATIN CAPITAL LETTER M # 004D 1F13D SQUARED LATIN CAPITAL LETTER N = news (ARIB STD B24) # 004E 1F13E SQUARED LATIN CAPITAL LETTER O # 004F 1F13F SQUARED LATIN CAPITAL LETTER P = progressive broadcasting (ARIB STD B24) # 0050 1F140 SQUARED LATIN CAPITAL LETTER Q # 0051 1F141 SQUARED LATIN CAPITAL LETTER R # 0052 1F142 SQUARED LATIN CAPITAL LETTER S = stereo broadcasting service (ARIB STD B24) # 0053 1F143 SQUARED LATIN CAPITAL LETTER T = tobacconist # 0054 1F144 SQUARED LATIN CAPITAL LETTER U # 0055 1F145 SQUARED LATIN CAPITAL LETTER V # 0056 1F146 SQUARED LATIN CAPITAL LETTER W = wide-format 16:9 broadcasting service (ARIB STD B24) # 0057 1F147 SQUARED LATIN CAPITAL LETTER X # 0058 1F148 SQUARED LATIN CAPITAL LETTER Y # 0059 1F149 SQUARED LATIN CAPITAL LETTER Z # 005A 1F14A SQUARED HV = hdtv # 0048 0056 1F14B SQUARED MV = multi-view television # 004D 0056 1F14C SQUARED SD = sdtv # 0053 0044 1F14D SQUARED SS = surround stereo broadcasting service # 0053 0053 1F14E SQUARED PPV = pay-per-view # 0050 0050 0056 1F14F SQUARED WC = water closet, public toilet # 0057 0043 @ White on black circled Latin letters 1F150 NEGATIVE CIRCLED LATIN CAPITAL LETTER A = airport 1F151 NEGATIVE CIRCLED LATIN CAPITAL LETTER B 1F152 NEGATIVE CIRCLED LATIN CAPITAL LETTER C 1F153 NEGATIVE CIRCLED LATIN CAPITAL LETTER D 1F154 NEGATIVE CIRCLED LATIN CAPITAL LETTER E 1F155 NEGATIVE CIRCLED LATIN CAPITAL LETTER F = ferry 1F156 NEGATIVE CIRCLED LATIN CAPITAL LETTER G 1F157 NEGATIVE CIRCLED LATIN CAPITAL LETTER H = hotel (ARIB STD B24) 1F158 NEGATIVE CIRCLED LATIN CAPITAL LETTER I 1F159 NEGATIVE CIRCLED LATIN CAPITAL LETTER J 1F15A NEGATIVE CIRCLED LATIN CAPITAL LETTER K = Kurort (spa) x (hot springs - 2668) 1F15B NEGATIVE CIRCLED LATIN CAPITAL LETTER L = light rail x (light rail - 1F688) 1F15C NEGATIVE CIRCLED LATIN CAPITAL LETTER M = metro x (metro - 1F687) 1F15D NEGATIVE CIRCLED LATIN CAPITAL LETTER N 1F15E NEGATIVE CIRCLED LATIN CAPITAL LETTER O 1F15F NEGATIVE CIRCLED LATIN CAPITAL LETTER P = parking space (ARIB STD B24) 1F160 NEGATIVE CIRCLED LATIN CAPITAL LETTER Q 1F161 NEGATIVE CIRCLED LATIN CAPITAL LETTER R = Raststätte (rest stop) 1F162 NEGATIVE CIRCLED LATIN CAPITAL LETTER S = Stadtbahn (metropolitan railway) 1F163 NEGATIVE CIRCLED LATIN CAPITAL LETTER T = Tankstelle (petrol station) x (fuel pump - 26FD) 1F164 NEGATIVE CIRCLED LATIN CAPITAL LETTER U = underground rail x (metro - 1F687) 1F165 NEGATIVE CIRCLED LATIN CAPITAL LETTER V 1F166 NEGATIVE CIRCLED LATIN CAPITAL LETTER W 1F167 NEGATIVE CIRCLED LATIN CAPITAL LETTER X 1F168 NEGATIVE CIRCLED LATIN CAPITAL LETTER Y 1F169 NEGATIVE CIRCLED LATIN CAPITAL LETTER Z @ Raised squared Latin sequences 1F16A RAISED MC SIGN = marque de commerce * used in Canada x (trade mark sign - 2122) # 004D 0043 1F16B RAISED MD SIGN = marque déposée * used in Canada x (registered sign - 00AE) # 004D 0044 @ White on black squared Latin letters @+ The square edges may be slightly rounded. 1F170 NEGATIVE SQUARED LATIN CAPITAL LETTER A = blood type A ~ 1F170 FE0E text style ~ 1F170 FE0F emoji style 1F171 NEGATIVE SQUARED LATIN CAPITAL LETTER B = blood type B ~ 1F171 FE0E text style ~ 1F171 FE0F emoji style 1F172 NEGATIVE SQUARED LATIN CAPITAL LETTER C = centre, city centre 1F173 NEGATIVE SQUARED LATIN CAPITAL LETTER D 1F174 NEGATIVE SQUARED LATIN CAPITAL LETTER E 1F175 NEGATIVE SQUARED LATIN CAPITAL LETTER F = Feuerwache (fire department) 1F176 NEGATIVE SQUARED LATIN CAPITAL LETTER G 1F177 NEGATIVE SQUARED LATIN CAPITAL LETTER H = Haltestelle (bus stop) x (bus stop - 1F68F) 1F178 NEGATIVE SQUARED LATIN CAPITAL LETTER I 1F179 NEGATIVE SQUARED LATIN CAPITAL LETTER J = junction (ARIB STD B24) 1F17A NEGATIVE SQUARED LATIN CAPITAL LETTER K 1F17B NEGATIVE SQUARED LATIN CAPITAL LETTER L = leisure center (ARIB STD B24) 1F17C NEGATIVE SQUARED LATIN CAPITAL LETTER M = museum, cultural center (ARIB STD B24) 1F17D NEGATIVE SQUARED LATIN CAPITAL LETTER N 1F17E NEGATIVE SQUARED LATIN CAPITAL LETTER O = blood type O ~ 1F17E FE0E text style ~ 1F17E FE0F emoji style 1F17F NEGATIVE SQUARED LATIN CAPITAL LETTER P = parking space empty-full (ARIB STD B24) ~ 1F17F FE0E text style ~ 1F17F FE0F emoji style 1F180 NEGATIVE SQUARED LATIN CAPITAL LETTER Q 1F181 NEGATIVE SQUARED LATIN CAPITAL LETTER R 1F182 NEGATIVE SQUARED LATIN CAPITAL LETTER S 1F183 NEGATIVE SQUARED LATIN CAPITAL LETTER T 1F184 NEGATIVE SQUARED LATIN CAPITAL LETTER U 1F185 NEGATIVE SQUARED LATIN CAPITAL LETTER V 1F186 NEGATIVE SQUARED LATIN CAPITAL LETTER W 1F187 NEGATIVE SQUARED LATIN CAPITAL LETTER X 1F188 NEGATIVE SQUARED LATIN CAPITAL LETTER Y 1F189 NEGATIVE SQUARED LATIN CAPITAL LETTER Z 1F18A CROSSED NEGATIVE SQUARED LATIN CAPITAL LETTER P = parking space closed 1F18B NEGATIVE SQUARED IC = interchange, ramp 1F18C NEGATIVE SQUARED PA = parking area 1F18D NEGATIVE SQUARED SA = service area 1F18E NEGATIVE SQUARED AB = blood type AB 1F18F NEGATIVE SQUARED WC = water closet, public toilet @ Squared Latin letter sequences 1F190 SQUARE DJ = disc jockey # 0044 004A 1F191 SQUARED CL = clear 1F192 SQUARED COOL 1F193 SQUARED FREE = free postage 1F194 SQUARED ID = identification, ID 1F195 SQUARED NEW 1F196 SQUARED NG = no good 1F197 SQUARED OK 1F198 SQUARED SOS = search, hunt for missing person 1F199 SQUARED UP WITH EXCLAMATION MARK = new information, update 1F19A SQUARED VS = versus @ Squared Latin letter sequences from ARIB STD B62 1F19B SQUARED THREE D 1F19C SQUARED SECOND SCREEN 1F19D SQUARED TWO K 1F19E SQUARED FOUR K 1F19F SQUARED EIGHT K 1F1A0 SQUARED FIVE POINT ONE 1F1A1 SQUARED SEVEN POINT ONE 1F1A2 SQUARED TWENTY-TWO POINT TWO 1F1A3 SQUARED SIXTY P 1F1A4 SQUARED ONE HUNDRED TWENTY P 1F1A5 SQUARED LATIN SMALL LETTER D = data 1F1A6 SQUARED HC = hybrid cast 1F1A7 SQUARED HDR = high dynamic range 1F1A8 SQUARED HI-RES = high resolution 1F1A9 SQUARED LOSSLESS 1F1AA SQUARED SHV = super high vision 1F1AB SQUARED UHD = ultra-high definition 1F1AC SQUARED VOD = video on demand @ Regional indicator symbols @+ These characters can be used in pairs to represent regional codes. In some emoji implementations, certain pairs may be recognized and displayed by alternate means; for instance, an implementation might recognize F + R and display this combination with a symbol representing the flag of France. 1F1E6 REGIONAL INDICATOR SYMBOL LETTER A 1F1E7 REGIONAL INDICATOR SYMBOL LETTER B 1F1E8 REGIONAL INDICATOR SYMBOL LETTER C 1F1E9 REGIONAL INDICATOR SYMBOL LETTER D 1F1EA REGIONAL INDICATOR SYMBOL LETTER E 1F1EB REGIONAL INDICATOR SYMBOL LETTER F 1F1EC REGIONAL INDICATOR SYMBOL LETTER G 1F1ED REGIONAL INDICATOR SYMBOL LETTER H 1F1EE REGIONAL INDICATOR SYMBOL LETTER I 1F1EF REGIONAL INDICATOR SYMBOL LETTER J 1F1F0 REGIONAL INDICATOR SYMBOL LETTER K 1F1F1 REGIONAL INDICATOR SYMBOL LETTER L 1F1F2 REGIONAL INDICATOR SYMBOL LETTER M 1F1F3 REGIONAL INDICATOR SYMBOL LETTER N 1F1F4 REGIONAL INDICATOR SYMBOL LETTER O 1F1F5 REGIONAL INDICATOR SYMBOL LETTER P 1F1F6 REGIONAL INDICATOR SYMBOL LETTER Q 1F1F7 REGIONAL INDICATOR SYMBOL LETTER R 1F1F8 REGIONAL INDICATOR SYMBOL LETTER S 1F1F9 REGIONAL INDICATOR SYMBOL LETTER T 1F1FA REGIONAL INDICATOR SYMBOL LETTER U 1F1FB REGIONAL INDICATOR SYMBOL LETTER V 1F1FC REGIONAL INDICATOR SYMBOL LETTER W 1F1FD REGIONAL INDICATOR SYMBOL LETTER X 1F1FE REGIONAL INDICATOR SYMBOL LETTER Y 1F1FF REGIONAL INDICATOR SYMBOL LETTER Z @~ ! @@ 1F200 Enclosed Ideographic Supplement 1F2FF @ Squared hiragana from ARIB STD B24 1F200 SQUARE HIRAGANA HOKA = and others # 307B 304B @ Squared katakana 1F201 SQUARED KATAKANA KOKO = here sign # 30B3 30B3 1F202 SQUARED KATAKANA SA = service sign x (circled katakana sa - 32DA) ~ 1F202 FE0E text style ~ 1F202 FE0F emoji style # 30B5 @ Squared ideographs and kana from ARIB STD B24 1F210 SQUARED CJK UNIFIED IDEOGRAPH-624B = broadcasting service with sign language interpretation # 624B 1F211 SQUARED CJK UNIFIED IDEOGRAPH-5B57 = close-captioned broadcasting # 5B57 1F212 SQUARED CJK UNIFIED IDEOGRAPH-53CC = two-way broadcasting service # 53CC 1F213 SQUARED KATAKANA DE = data broadcasting service linked with a main program # 30C7 1F214 SQUARED CJK UNIFIED IDEOGRAPH-4E8C = bilingual broadcasting service = second base # 4E8C 1F215 SQUARED CJK UNIFIED IDEOGRAPH-591A = sound-multiplex broadcasting service # 591A 1F216 SQUARED CJK UNIFIED IDEOGRAPH-89E3 = commentary broadcasting # 89E3 1F217 SQUARED CJK UNIFIED IDEOGRAPH-5929 = weather forecast # 5929 1F218 SQUARED CJK UNIFIED IDEOGRAPH-4EA4 = traffic information # 4EA4 1F219 SQUARED CJK UNIFIED IDEOGRAPH-6620 = drama film # 6620 1F21A SQUARED CJK UNIFIED IDEOGRAPH-7121 = free broadcasting service = non-existence sign ~ 1F21A FE0E text style ~ 1F21A FE0F emoji style # 7121 1F21B SQUARED CJK UNIFIED IDEOGRAPH-6599 = pay broadcasting service # 6599 1F21C SQUARED CJK UNIFIED IDEOGRAPH-524D = the first part # 524D 1F21D SQUARED CJK UNIFIED IDEOGRAPH-5F8C = the latter part # 5F8C 1F21E SQUARED CJK UNIFIED IDEOGRAPH-518D = rebroadcast # 518D 1F21F SQUARED CJK UNIFIED IDEOGRAPH-65B0 = new series of programs # 65B0 1F220 SQUARED CJK UNIFIED IDEOGRAPH-521D = first released program # 521D 1F221 SQUARED CJK UNIFIED IDEOGRAPH-7D42 = the last episode # 7D42 1F222 SQUARED CJK UNIFIED IDEOGRAPH-751F = live broadcast # 751F 1F223 SQUARED CJK UNIFIED IDEOGRAPH-8CA9 = mail-order # 8CA9 1F224 SQUARED CJK UNIFIED IDEOGRAPH-58F0 = voice actors # 58F0 1F225 SQUARED CJK UNIFIED IDEOGRAPH-5439 = dubbed version # 5439 1F226 SQUARED CJK UNIFIED IDEOGRAPH-6F14 = performed by # 6F14 1F227 SQUARED CJK UNIFIED IDEOGRAPH-6295 = pitcher # 6295 1F228 SQUARED CJK UNIFIED IDEOGRAPH-6355 = catcher # 6355 1F229 SQUARED CJK UNIFIED IDEOGRAPH-4E00 = first base # 4E00 1F22A SQUARED CJK UNIFIED IDEOGRAPH-4E09 = third base # 4E09 1F22B SQUARED CJK UNIFIED IDEOGRAPH-904A = short stop # 904A 1F22C SQUARED CJK UNIFIED IDEOGRAPH-5DE6 = left field # 5DE6 1F22D SQUARED CJK UNIFIED IDEOGRAPH-4E2D = center field # 4E2D 1F22E SQUARED CJK UNIFIED IDEOGRAPH-53F3 = right field # 53F3 1F22F SQUARED CJK UNIFIED IDEOGRAPH-6307 = designated hitter = reserved sign ~ 1F22F FE0E text style ~ 1F22F FE0F emoji style # 6307 1F230 SQUARED CJK UNIFIED IDEOGRAPH-8D70 = runner # 8D70 1F231 SQUARED CJK UNIFIED IDEOGRAPH-6253 = batter # 6253 @ Squared ideographs 1F232 SQUARED CJK UNIFIED IDEOGRAPH-7981 = prohibited sign # 7981 1F233 SQUARED CJK UNIFIED IDEOGRAPH-7A7A = empty sign # 7A7A 1F234 SQUARED CJK UNIFIED IDEOGRAPH-5408 = passed sign # 5408 1F235 SQUARED CJK UNIFIED IDEOGRAPH-6E80 = full sign # 6E80 1F236 SQUARED CJK UNIFIED IDEOGRAPH-6709 = existence sign x (circled ideograph have - 3292) # 6709 1F237 SQUARED CJK UNIFIED IDEOGRAPH-6708 = monthly sign x (circled ideograph moon - 328A) ~ 1F237 FE0E text style ~ 1F237 FE0F emoji style # 6708 1F238 SQUARED CJK UNIFIED IDEOGRAPH-7533 = application sign # 7533 1F239 SQUARED CJK UNIFIED IDEOGRAPH-5272 = discount sign # 5272 1F23A SQUARED CJK UNIFIED IDEOGRAPH-55B6 = in business sign # 55B6 1F23B SQUARED CJK UNIFIED IDEOGRAPH-914D = program delivery over network (ARIB STD B62) # 914D @ Ideographs with tortoise shell brackets from ARIB STD B24 1F240 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C = home run # 3014 672C 3015 1F241 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09 = triple # 3014 4E09 3015 1F242 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C = double # 3014 4E8C 3015 1F243 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89 = safe # 3014 5B89 3015 1F244 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9 = run # 3014 70B9 3015 1F245 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253 = hit # 3014 6253 3015 1F246 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7 = steal # 3014 76D7 3015 1F247 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD = win # 3014 52DD 3015 1F248 TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557 = loss # 3014 6557 3015 @ Circled ideographs 1F250 CIRCLED IDEOGRAPH ADVANTAGE = advantage sign # 5F97 1F251 CIRCLED IDEOGRAPH ACCEPT = accept sign # 53EF @~ ! @@ 1F300 Miscellaneous Symbols and Pictographs 1F5FF @ Weather, landscape, and sky symbols 1F300 CYCLONE = typhoon, hurricane 1F301 FOGGY x (fog - 1F32B) 1F302 CLOSED UMBRELLA 1F303 NIGHT WITH STARS 1F304 SUNRISE OVER MOUNTAINS 1F305 SUNRISE 1F306 CITYSCAPE AT DUSK x (cityscape - 1F3D9) 1F307 SUNSET OVER BUILDINGS 1F308 RAINBOW 1F309 BRIDGE AT NIGHT 1F30A WATER WAVE 1F30B VOLCANO 1F30C MILKY WAY @ Globe symbols 1F30D EARTH GLOBE EUROPE-AFRICA 1F30E EARTH GLOBE AMERICAS 1F30F EARTH GLOBE ASIA-AUSTRALIA 1F310 GLOBE WITH MERIDIANS * used to indicate international input source, world clocks with time zones, etc. @ Moon, sun, and star symbols 1F311 NEW MOON SYMBOL x (black circle - 25CF) 1F312 WAXING CRESCENT MOON SYMBOL 1F313 FIRST QUARTER MOON SYMBOL = half moon x (circle with left half black - 25D0) 1F314 WAXING GIBBOUS MOON SYMBOL = waxing moon 1F315 FULL MOON SYMBOL x (white circle - 25CB) 1F316 WANING GIBBOUS MOON SYMBOL 1F317 LAST QUARTER MOON SYMBOL x (circle with right half black - 25D1) 1F318 WANING CRESCENT MOON SYMBOL 1F319 CRESCENT MOON * may indicate either the first or last quarter moon x (first quarter moon - 263D) x (last quarter moon - 263E) 1F31A NEW MOON WITH FACE 1F31B FIRST QUARTER MOON WITH FACE 1F31C LAST QUARTER MOON WITH FACE 1F31D FULL MOON WITH FACE 1F31E SUN WITH FACE 1F31F GLOWING STAR 1F320 SHOOTING STAR @ Weather symbols 1F321 THERMOMETER = temperature, warm ~ 1F321 FE0E text style ~ 1F321 FE0F emoji style 1F322 BLACK DROPLET = droplet x (droplet - 1F4A7) 1F323 WHITE SUN = sunny x (white sun with rays - 263C) 1F324 WHITE SUN WITH SMALL CLOUD = mostly sunny x (sun behind cloud - 26C5) ~ 1F324 FE0E text style ~ 1F324 FE0F emoji style 1F325 WHITE SUN BEHIND CLOUD = mostly cloudy ~ 1F325 FE0E text style ~ 1F325 FE0F emoji style 1F326 WHITE SUN BEHIND CLOUD WITH RAIN = showers ~ 1F326 FE0E text style ~ 1F326 FE0F emoji style 1F327 CLOUD WITH RAIN = rain ~ 1F327 FE0E text style ~ 1F327 FE0F emoji style 1F328 CLOUD WITH SNOW = snow, snow showers ~ 1F328 FE0E text style ~ 1F328 FE0F emoji style 1F329 CLOUD WITH LIGHTNING = lightning, thunderstorm x (thunder cloud and rain - 26C8) ~ 1F329 FE0E text style ~ 1F329 FE0F emoji style 1F32A CLOUD WITH TORNADO = tornado, twister ~ 1F32A FE0E text style ~ 1F32A FE0F emoji style 1F32B FOG x (foggy - 1F301) ~ 1F32B FE0E text style ~ 1F32B FE0F emoji style 1F32C WIND BLOWING FACE = wind ~ 1F32C FE0E text style ~ 1F32C FE0F emoji style @ Food symbols 1F32D HOT DOG 1F32E TACO 1F32F BURRITO @ Plant symbols 1F330 CHESTNUT 1F331 SEEDLING 1F332 EVERGREEN TREE x (national park - 1F3DE) 1F333 DECIDUOUS TREE 1F334 PALM TREE x (desert island - 1F3DD) 1F335 CACTUS x (desert - 1F3DC) 1F336 HOT PEPPER = hot, spicy ~ 1F336 FE0E text style ~ 1F336 FE0F emoji style 1F337 TULIP x (flower - 2698) 1F338 CHERRY BLOSSOM 1F339 ROSE x (wilted flower - 1F940) 1F33A HIBISCUS 1F33B SUNFLOWER 1F33C BLOSSOM = daisy 1F33D EAR OF MAIZE 1F33E EAR OF RICE 1F33F HERB 1F340 FOUR LEAF CLOVER x (shamrock - 2618) 1F341 MAPLE LEAF 1F342 FALLEN LEAF 1F343 LEAF FLUTTERING IN WIND 1F344 MUSHROOM @ Fruit and vegetable symbols 1F345 TOMATO 1F346 AUBERGINE = eggplant 1F347 GRAPES 1F348 MELON 1F349 WATERMELON 1F34A TANGERINE 1F34B LEMON 1F34C BANANA 1F34D PINEAPPLE 1F34E RED APPLE 1F34F GREEN APPLE 1F350 PEAR 1F351 PEACH 1F352 CHERRIES 1F353 STRAWBERRY @ Food symbols 1F354 HAMBURGER = fast food place 1F355 SLICE OF PIZZA 1F356 MEAT ON BONE 1F357 POULTRY LEG 1F358 RICE CRACKER 1F359 RICE BALL 1F35A COOKED RICE = bowl of rice 1F35B CURRY AND RICE = Japanese style curry 1F35C STEAMING BOWL = ramen noodles 1F35D SPAGHETTI 1F35E BREAD 1F35F FRENCH FRIES 1F360 ROASTED SWEET POTATO 1F361 DANGO = mochi balls on skewer 1F362 ODEN = seafood on skewer 1F363 SUSHI 1F364 FRIED SHRIMP 1F365 FISH CAKE WITH SWIRL DESIGN 1F366 SOFT ICE CREAM 1F367 SHAVED ICE 1F368 ICE CREAM 1F369 DOUGHNUT 1F36A COOKIE = biscuit 1F36B CHOCOLATE BAR 1F36C CANDY 1F36D LOLLIPOP 1F36E CUSTARD 1F36F HONEY POT 1F370 SHORTCAKE 1F371 BENTO BOX 1F372 POT OF FOOD 1F373 COOKING = frying pan, cooking utensil 1F374 FORK AND KNIFE = restaurant, meal * glyph may show a fork and spoon * glyph may show a crossed fork and knife x (fork and knife with plate - 1F37D) x (spoon - 1F944) @ Beverage symbols 1F375 TEACUP WITHOUT HANDLE x (hot beverage - 2615) x (cup on black square - 26FE) 1F376 SAKE BOTTLE AND CUP 1F377 WINE GLASS 1F378 COCKTAIL GLASS = lounge x (couch and lamp - 1F6CB) x (tumbler glass - 1F943) 1F379 TROPICAL DRINK 1F37A BEER MUG 1F37B CLINKING BEER MUGS = cheers x (clinking glasses - 1F942) 1F37C BABY BOTTLE @ Accommodation symbol 1F37D FORK AND KNIFE WITH PLATE = dining x (fork and knife - 1F374) ~ 1F37D FE0E text style ~ 1F37D FE0F emoji style @ Beverage and food symbols 1F37E BOTTLE WITH POPPING CORK 1F37F POPCORN @ Celebration symbols 1F380 RIBBON 1F381 WRAPPED PRESENT x (package - 1F4E6) 1F382 BIRTHDAY CAKE 1F383 JACK-O-LANTERN = Hallowe'en 1F384 CHRISTMAS TREE 1F385 FATHER CHRISTMAS = Santa Claus x (mother christmas - 1F936) 1F386 FIREWORKS 1F387 FIREWORK SPARKLER * long, stick-like firework that looks like a burning incense stick 1F388 BALLOON 1F389 PARTY POPPER 1F38A CONFETTI BALL = congratulations 1F38B TANABATA TREE = tanabata tree with wishing papers 1F38C CROSSED FLAGS * Japanese national holiday 1F38D PINE DECORATION * Japanese new year's door decoration 1F38E JAPANESE DOLLS * Japanese Hinamatsuri or girls' doll festival 1F38F CARP STREAMER 1F390 WIND CHIME 1F391 MOON VIEWING CEREMONY * Japanese Otsukimi harvest celebration 1F392 SCHOOL SATCHEL * Japanese school entrance ceremony 1F393 GRADUATION CAP = mortarboard, education * graduation ceremony 1F394 HEART WITH TIP ON THE LEFT = favorite x (black heart suit - 2665) 1F395 BOUQUET OF FLOWERS = occasion x (bouquet - 1F490) 1F396 MILITARY MEDAL ~ 1F396 FE0E text style ~ 1F396 FE0F emoji style 1F397 REMINDER RIBBON ~ 1F397 FE0E text style ~ 1F397 FE0F emoji style @ Musical symbols 1F398 MUSICAL KEYBOARD WITH JACKS = midi, midi keyboard x (musical keyboard - 1F3B9) 1F399 STUDIO MICROPHONE = microphone x (microphone - 1F3A4) ~ 1F399 FE0E text style ~ 1F399 FE0F emoji style 1F39A LEVEL SLIDER = level control ~ 1F39A FE0E text style ~ 1F39A FE0F emoji style 1F39B CONTROL KNOBS = audio control ~ 1F39B FE0E text style ~ 1F39B FE0F emoji style 1F39C BEAMED ASCENDING MUSICAL NOTES = musical performance = music, musical background * always ascending, unlike 266C x (beamed sixteenth notes - 266C) 1F39D BEAMED DESCENDING MUSICAL NOTES * always descending, unlike 266C x (beamed eighth notes - 266B) @ Entertainment symbols 1F39E FILM FRAMES = film clip x (movie camera - 1F3A5) ~ 1F39E FE0E text style ~ 1F39E FE0F emoji style 1F39F ADMISSION TICKETS = ticket x (ticket - 1F3AB) ~ 1F39F FE0E text style ~ 1F39F FE0F emoji style 1F3A0 CAROUSEL HORSE = amusement park 1F3A1 FERRIS WHEEL = amusement park 1F3A2 ROLLER COASTER 1F3A3 FISHING POLE AND FISH = fishing 1F3A4 MICROPHONE = karaoke x (studio microphone - 1F399) 1F3A5 MOVIE CAMERA = film, movies x (film frames - 1F39E) 1F3A6 CINEMA = movie theater, movie projector x (film projector - 1F4FD) 1F3A7 HEADPHONE = music 1F3A8 ARTIST PALETTE = art 1F3A9 TOP HAT = drama, performing arts, theater 1F3AA CIRCUS TENT = event 1F3AB TICKET * indicates an event x (admission tickets - 1F39F) 1F3AC CLAPPER BOARD = film 1F3AD PERFORMING ARTS = theater masks, theater @ Game symbols 1F3AE VIDEO GAME = video game controller 1F3AF DIRECT HIT = archery target, hitting the target x (bullseye - 25CE) 1F3B0 SLOT MACHINE 1F3B1 BILLIARDS * sometimes depicted as just an 8-ball 1F3B2 GAME DIE 1F3B3 BOWLING 1F3B4 FLOWER PLAYING CARDS = flower cards @ Musical symbols 1F3B5 MUSICAL NOTE = music, being in good mood x (eighth note - 266A) 1F3B6 MULTIPLE MUSICAL NOTES = dancing notes, mood, melody x (beamed eighth notes - 266B) 1F3B7 SAXOPHONE 1F3B8 GUITAR 1F3B9 MUSICAL KEYBOARD x (musical keyboard with jacks - 1F398) 1F3BA TRUMPET 1F3BB VIOLIN 1F3BC MUSICAL SCORE x (musical symbol g clef - 1D11E) @ Sport symbols @+ See other sport symbols in the Miscelleaneous Symbols block. 1F3BD RUNNING SHIRT WITH SASH = ekiden (Japanese) * running shirt with separate sash signifies long-distance relay running * symbol is generalized to represent athletics * glyph may be shown with a sash, a stripe, or neither 1F3BE TENNIS RACQUET AND BALL = tennis 1F3BF SKI AND SKI BOOT = skiing x (skier - 26F7) 1F3C0 BASKETBALL AND HOOP = basketball 1F3C1 CHEQUERED FLAG = motor sports 1F3C2 SNOWBOARDER 1F3C3 RUNNER = running, marathon, track and fields 1F3C4 SURFER = surfing 1F3C5 SPORTS MEDAL x (first place medal - 1F947) 1F3C6 TROPHY 1F3C7 HORSE RACING 1F3C8 AMERICAN FOOTBALL 1F3C9 RUGBY FOOTBALL 1F3CA SWIMMER 1F3CB WEIGHT LIFTER = health ~ 1F3CB FE0E text style ~ 1F3CB FE0F emoji style 1F3CC GOLFER ~ 1F3CC FE0E text style ~ 1F3CC FE0F emoji style 1F3CD RACING MOTORCYCLE = motorcycle * may be depicted as an ordinary motorcycle, especially in emoji presentation ~ 1F3CD FE0E text style ~ 1F3CD FE0F emoji style 1F3CE RACING CAR = race car ~ 1F3CE FE0E text style ~ 1F3CE FE0F emoji style 1F3CF CRICKET BAT AND BALL 1F3D0 VOLLEYBALL 1F3D1 FIELD HOCKEY STICK AND BALL 1F3D2 ICE HOCKEY STICK AND PUCK 1F3D3 TABLE TENNIS PADDLE AND BALL @ Building and map symbols 1F3D4 SNOW CAPPED MOUNTAIN x (mountain - 26F0) ~ 1F3D4 FE0E text style ~ 1F3D4 FE0F emoji style 1F3D5 CAMPING = camping site x (tent - 26FA) ~ 1F3D5 FE0E text style ~ 1F3D5 FE0F emoji style 1F3D6 BEACH WITH UMBRELLA x (umbrella on ground - 26F1) ~ 1F3D6 FE0E text style ~ 1F3D6 FE0F emoji style 1F3D7 BUILDING CONSTRUCTION = under construction x (construction sign - 1F6A7) ~ 1F3D7 FE0E text style ~ 1F3D7 FE0F emoji style 1F3D8 HOUSE BUILDINGS = town x (house with garden - 1F3E1) ~ 1F3D8 FE0E text style ~ 1F3D8 FE0F emoji style 1F3D9 CITYSCAPE = skyline, city x (cityscape at dusk - 1F306) ~ 1F3D9 FE0E text style ~ 1F3D9 FE0F emoji style 1F3DA DERELICT HOUSE BUILDING = derelict site ~ 1F3DA FE0E text style ~ 1F3DA FE0F emoji style 1F3DB CLASSICAL BUILDING = public building ~ 1F3DB FE0E text style ~ 1F3DB FE0F emoji style 1F3DC DESERT = desert x (cactus - 1F335) ~ 1F3DC FE0E text style ~ 1F3DC FE0F emoji style 1F3DD DESERT ISLAND = island x (palm tree - 1F334) ~ 1F3DD FE0E text style ~ 1F3DD FE0F emoji style 1F3DE NATIONAL PARK * by semantic extension has come to connote saving trees, and hence is also used as a symbol meaning "do not print this (email, document)" x (evergreen tree - 1F332) ~ 1F3DE FE0E text style ~ 1F3DE FE0F emoji style 1F3DF STADIUM ~ 1F3DF FE0E text style ~ 1F3DF FE0F emoji style 1F3E0 HOUSE BUILDING 1F3E1 HOUSE WITH GARDEN = home, house with yard x (house buildings - 1F3D8) 1F3E2 OFFICE BUILDING 1F3E3 JAPANESE POST OFFICE x (postal mark - 3012) 1F3E4 EUROPEAN POST OFFICE 1F3E5 HOSPITAL x (black cross on shield - 26E8) 1F3E6 BANK x (squared latin capital letter b - 1F131) 1F3E7 AUTOMATED TELLER MACHINE = ATM 1F3E8 HOTEL x (negative circled latin capital letter h - 1F157) x (sleeping accommodation - 1F6CC) 1F3E9 LOVE HOTEL 1F3EA CONVENIENCE STORE 1F3EB SCHOOL 1F3EC DEPARTMENT STORE 1F3ED FACTORY = industrial production site = date of production x (gear without hub - 26ED) 1F3EE IZAKAYA LANTERN = japanese izakaya restaurant 1F3EF JAPANESE CASTLE 1F3F0 EUROPEAN CASTLE x (castle - 26EB) @ Flag symbols 1F3F1 WHITE PENNANT x (triangular flag on post - 1F6A9) 1F3F2 BLACK PENNANT 1F3F3 WAVING WHITE FLAG = flag x (white flag - 2690) ~ 1F3F3 FE0E text style ~ 1F3F3 FE0F emoji style 1F3F4 WAVING BLACK FLAG @ Rosettes 1F3F5 ROSETTE x (white florette - 2740) ~ 1F3F5 FE0E text style ~ 1F3F5 FE0F emoji style 1F3F6 BLACK ROSETTE x (eight petalled outlined black florette - 2741) @ Miscellaneous symbol 1F3F7 LABEL = price, price tag x (bookmark - 1F516) ~ 1F3F7 FE0E text style ~ 1F3F7 FE0F emoji style @ Sport symbols 1F3F8 BADMINTON RACQUET AND SHUTTLECOCK 1F3F9 BOW AND ARROW = archery * also used for Sagittarius x (sagittarius - 2650) @ Miscellaneous symbol 1F3FA AMPHORA * used for Aquarius x (aquarius - 2652) x (linear b ideogram vessel b209 - 100E8) @ Emoji modifiers 1F3FB EMOJI MODIFIER FITZPATRICK TYPE-1-2 1F3FC EMOJI MODIFIER FITZPATRICK TYPE-3 1F3FD EMOJI MODIFIER FITZPATRICK TYPE-4 1F3FE EMOJI MODIFIER FITZPATRICK TYPE-5 1F3FF EMOJI MODIFIER FITZPATRICK TYPE-6 @ Animal symbols 1F400 RAT * first of the signs of the Asian zodiac 1F401 MOUSE * first of the signs of the Asian zodiac, used in Persia 1F402 OX * second of the signs of the Asian zodiac 1F403 WATER BUFFALO * second of the signs of the Asian zodiac, used in Vietnam 1F404 COW * second of the signs of the Asian zodiac, used in Persia = beef (on menus) 1F405 TIGER * third of the signs of the Asian zodiac 1F406 LEOPARD * third of the signs of the Asian zodiac, used in Persia 1F407 RABBIT * fourth of the signs of the Asian zodiac 1F408 CAT * fourth of the signs of the Asian zodiac, used in Vietnam 1F409 DRAGON * fifth of the signs of the Asian zodiac 1F40A CROCODILE * fifth of the signs of the Asian zodiac, used in Persia 1F40B WHALE * fifth of the signs of the Asian zodiac, used in Persia 1F40C SNAIL * fifth of the signs of the Asian zodiac, used in Kazakhstan 1F40D SNAKE * sixth of the signs of the Asian zodiac 1F40E HORSE = equestrian sports * seventh of the signs of the Asian zodiac 1F40F RAM * eighth of the signs of the Asian zodiac x (aries - 2648) 1F410 GOAT * eighth of the signs of the Asian zodiac, used in Vietnam 1F411 SHEEP * eighth of the signs of the Asian zodiac, used in Persia 1F412 MONKEY * ninth of the signs of the Asian zodiac 1F413 ROOSTER * tenth of the signs of the Asian zodiac = cock 1F414 CHICKEN * tenth of the signs of the Asian zodiac, used in Persia = hen = poultry (on menus) 1F415 DOG * eleventh of the signs of the Asian zodiac 1F416 PIG * twelfth of the signs of the Asian zodiac = pork (on menus) 1F417 BOAR * twelfth of the signs of the Asian zodiac, used in Japan 1F418 ELEPHANT * twelfth of the signs of the Asian zodiac, used in Thailand 1F419 OCTOPUS 1F41A SPIRAL SHELL 1F41B BUG 1F41C ANT 1F41D HONEYBEE 1F41E LADY BEETLE = ladybird, ladybug, coccinellids 1F41F FISH 1F420 TROPICAL FISH 1F421 BLOWFISH 1F422 TURTLE = tortoise, terrapin 1F423 HATCHING CHICK 1F424 BABY CHICK 1F425 FRONT-FACING BABY CHICK 1F426 BIRD 1F427 PENGUIN 1F428 KOALA 1F429 POODLE 1F42A DROMEDARY CAMEL * has a single hump 1F42B BACTRIAN CAMEL * has two humps 1F42C DOLPHIN @ Animal faces 1F42D MOUSE FACE 1F42E COW FACE 1F42F TIGER FACE 1F430 RABBIT FACE 1F431 CAT FACE x (smiling cat face with open mouth - 1F63A) 1F432 DRAGON FACE 1F433 SPOUTING WHALE 1F434 HORSE FACE 1F435 MONKEY FACE 1F436 DOG FACE 1F437 PIG FACE 1F438 FROG FACE 1F439 HAMSTER FACE 1F43A WOLF FACE 1F43B BEAR FACE 1F43C PANDA FACE 1F43D PIG NOSE @ Animal symbols 1F43E PAW PRINTS x (footprints - 1F463) 1F43F CHIPMUNK = animal, critter ~ 1F43F FE0E text style ~ 1F43F FE0F emoji style @ Facial parts symbols 1F440 EYES 1F441 EYE = sight ~ 1F441 FE0E text style ~ 1F441 FE0F emoji style 1F442 EAR 1F443 NOSE 1F444 MOUTH 1F445 TONGUE @ Hand symbols 1F446 WHITE UP POINTING BACKHAND INDEX x (white up pointing index - 261D) x (black up pointing backhand index - 1F5A2) 1F447 WHITE DOWN POINTING BACKHAND INDEX x (white down pointing index - 261F) x (white down pointing left hand index - 1F597) x (black down pointing backhand index - 1F5A3) 1F448 WHITE LEFT POINTING BACKHAND INDEX x (white left pointing index - 261C) x (black left pointing backhand index - 1F59C) 1F449 WHITE RIGHT POINTING BACKHAND INDEX x (white right pointing index - 261E) x (black right pointing backhand index - 1F59D) 1F44A FISTED HAND SIGN = punch x (raised fist - 270A) 1F44B WAVING HAND SIGN x (raised hand - 270B) 1F44C OK HAND SIGN x (turned ok hand sign - 1F58F) 1F44D THUMBS UP SIGN x (reversed thumbs up sign - 1F592) 1F44E THUMBS DOWN SIGN x (reversed thumbs down sign - 1F593) 1F44F CLAPPING HANDS SIGN 1F450 OPEN HANDS SIGN @ Clothing and accessories 1F451 CROWN 1F452 WOMANS HAT 1F453 EYEGLASSES 1F454 NECKTIE 1F455 T-SHIRT 1F456 JEANS 1F457 DRESS 1F458 KIMONO 1F459 BIKINI 1F45A WOMANS CLOTHES 1F45B PURSE 1F45C HANDBAG 1F45D POUCH 1F45E MANS SHOE 1F45F ATHLETIC SHOE = runner, sneaker, tennis shoe 1F460 HIGH-HEELED SHOE 1F461 WOMANS SANDAL 1F462 WOMANS BOOTS 1F463 FOOTPRINTS x (paw prints - 1F43E) @ Portrait and role symbols 1F464 BUST IN SILHOUETTE = guest account 1F465 BUSTS IN SILHOUETTE = accounts 1F466 BOY 1F467 GIRL 1F468 MAN 1F469 WOMAN 1F46A FAMILY = rated for family 1F46B MAN AND WOMAN HOLDING HANDS x (restroom - 1F6BB) 1F46C TWO MEN HOLDING HANDS 1F46D TWO WOMEN HOLDING HANDS 1F46E POLICE OFFICER 1F46F WOMAN WITH BUNNY EARS * most popularly depicted as two women dancing 1F470 BRIDE WITH VEIL x (man in tuxedo - 1F935) 1F471 PERSON WITH BLOND HAIR 1F472 MAN WITH GUA PI MAO 1F473 MAN WITH TURBAN * may be shown with or without a beard 1F474 OLDER MAN 1F475 OLDER WOMAN 1F476 BABY 1F477 CONSTRUCTION WORKER * the helmet may show a green cross, used as a safety reminder in Japan x (helmet with white cross - 26D1) @ Fairy tale symbols 1F478 PRINCESS x (prince - 1F934) 1F479 JAPANESE OGRE 1F47A JAPANESE GOBLIN 1F47B GHOST 1F47C BABY ANGEL 1F47D EXTRATERRESTRIAL ALIEN 1F47E ALIEN MONSTER x (robot face - 1F916) 1F47F IMP * commonly depicted as a frowning/angry version of 1F608 smiling face with horns 1F480 SKULL @ Role symbols 1F481 INFORMATION DESK PERSON * often used to indicate "sassy" or "carefree" 1F482 GUARDSMAN 1F483 DANCER * also used for "let's party" * may be depicted as gender neutral x (man dancing - 1F57A) @ Personal care symbols 1F484 LIPSTICK 1F485 NAIL POLISH = manicure, nail care 1F486 FACE MASSAGE 1F487 HAIRCUT * usually indicates a beauty parlor 1F488 BARBER POLE @ Medical symbols 1F489 SYRINGE 1F48A PILL @ Romance symbols 1F48B KISS MARK = lips x (lips - 1F5E2) 1F48C LOVE LETTER 1F48D RING = jewelry 1F48E GEM STONE 1F48F KISS = two people kissing 1F490 BOUQUET x (bouquet of flowers - 1F395) 1F491 COUPLE WITH HEART 1F492 WEDDING = wedding chapel x (marriage symbol - 26AD) @ Heart symbols 1F493 BEATING HEART 1F494 BROKEN HEART 1F495 TWO HEARTS 1F496 SPARKLING HEART 1F497 GROWING HEART 1F498 HEART WITH ARROW 1F499 BLUE HEART x (white heart suit - 2661) x (black heart suit - 2665) x (heavy black heart - 2764) 1F49A GREEN HEART 1F49B YELLOW HEART 1F49C PURPLE HEART 1F49D HEART WITH RIBBON 1F49E REVOLVING HEARTS 1F49F HEART DECORATION @ Comic style symbols 1F4A0 DIAMOND SHAPE WITH A DOT INSIDE = kawaii, cute * meaning of cuteness is based on association of glyph with shape of a flower x (white diamond with centred dot - 27D0) 1F4A1 ELECTRIC LIGHT BULB = idea 1F4A2 ANGER SYMBOL 1F4A3 BOMB 1F4A4 SLEEPING SYMBOL 1F4A5 COLLISION SYMBOL x (mood bubble - 1F5F0) 1F4A6 SPLASHING SWEAT SYMBOL = plewds 1F4A7 DROPLET * represents a drop of sweat or drop of water x (black droplet - 1F322) 1F4A8 DASH SYMBOL = running dash, briffits 1F4A9 PILE OF POO = dog dirt * may be depicted with a friendly face 1F4AA FLEXED BICEPS = strong, muscled 1F4AB DIZZY SYMBOL = circling stars, squeans 1F4AC SPEECH BALLOON = comic book conversation bubble 1F4AD THOUGHT BALLOON x (right thought bubble - 1F5ED) @ Japanese school grade symbols 1F4AE WHITE FLOWER = brilliant homework x (white florette - 2740) 1F4AF HUNDRED POINTS SYMBOL = perfect score @ Money symbols 1F4B0 MONEY BAG * glyph may show any currency symbol instead of a dollar sign 1F4B1 CURRENCY EXCHANGE 1F4B2 HEAVY DOLLAR SIGN x (dollar sign - 0024) 1F4B3 CREDIT CARD 1F4B4 BANKNOTE WITH YEN SIGN 1F4B5 BANKNOTE WITH DOLLAR SIGN 1F4B6 BANKNOTE WITH EURO SIGN 1F4B7 BANKNOTE WITH POUND SIGN 1F4B8 MONEY WITH WINGS 1F4B9 CHART WITH UPWARDS TREND AND YEN SIGN @ Office symbols 1F4BA SEAT * intended to denote a reserved or ticketed seat, as for an airplane, train, or theater 1F4BB PERSONAL COMPUTER x (old personal computer - 1F5B3) 1F4BC BRIEFCASE 1F4BD MINIDISC 1F4BE FLOPPY DISK = flexible disk cartridge, floppy disc, floppy, diskette x (black hard shell floppy disk - 1F5AA) 1F4BF OPTICAL DISC x (optical disc icon - 1F5B8) 1F4C0 DVD = digital video/versatile disc 1F4C1 FILE FOLDER x (folder - 1F5C0) 1F4C2 OPEN FILE FOLDER x (open folder - 1F5C1) 1F4C3 PAGE WITH CURL x (page - 1F5CF) 1F4C4 PAGE FACING UP x (document - 1F5CE) 1F4C5 CALENDAR x (spiral note pad - 1F5D2) 1F4C6 TEAR-OFF CALENDAR x (spiral calendar pad - 1F5D3) 1F4C7 CARD INDEX x (card index dividers - 1F5C2) 1F4C8 CHART WITH UPWARDS TREND x (stock chart - 1F5E0) 1F4C9 CHART WITH DOWNWARDS TREND 1F4CA BAR CHART 1F4CB CLIPBOARD 1F4CC PUSHPIN x (black pushpin - 1F588) 1F4CD ROUND PUSHPIN 1F4CE PAPERCLIP x (linked paperclips - 1F587) 1F4CF STRAIGHT RULER 1F4D0 TRIANGULAR RULER 1F4D1 BOOKMARK TABS 1F4D2 LEDGER 1F4D3 NOTEBOOK 1F4D4 NOTEBOOK WITH DECORATIVE COVER 1F4D5 CLOSED BOOK 1F4D6 OPEN BOOK = read operator's manual * similar to ISO/IEC 7000-0790 "Read operator's manual" x (book - 1F56E) 1F4D7 GREEN BOOK 1F4D8 BLUE BOOK 1F4D9 ORANGE BOOK 1F4DA BOOKS 1F4DB NAME BADGE 1F4DC SCROLL @ Communication symbols 1F4DD MEMO 1F4DE TELEPHONE RECEIVER * commonly oriented rightwards, so that a face emoticon can be positioned to the right x (left hand telephone receiver - 1F57B) x (right hand telephone receiver - 1F57D) 1F4DF PAGER 1F4E0 FAX MACHINE x (facsimile sign - 213B) x (telephone receiver with page - 1F57C) x (printer - 1F5A8) x (fax icon - 1F5B7) 1F4E1 SATELLITE ANTENNA = position indicator, news 1F4E2 PUBLIC ADDRESS LOUDSPEAKER 1F4E3 CHEERING MEGAPHONE x (bullhorn with sound waves - 1F56C) 1F4E4 OUTBOX TRAY 1F4E5 INBOX TRAY 1F4E6 PACKAGE x (wrapped present - 1F381) 1F4E7 E-MAIL SYMBOL * glyph may show an E instead of an @-sign x (envelope with lightning - 1F584) 1F4E8 INCOMING ENVELOPE x (envelope - 2709) 1F4E9 ENVELOPE WITH DOWNWARDS ARROW ABOVE * sending mail x (flying envelope - 1F585) 1F4EA CLOSED MAILBOX WITH LOWERED FLAG = letter box, mail reception = empty mailbox 1F4EB CLOSED MAILBOX WITH RAISED FLAG = mailbox containing mail 1F4EC OPEN MAILBOX WITH RAISED FLAG 1F4ED OPEN MAILBOX WITH LOWERED FLAG 1F4EE POSTBOX = mailbox for sending mail 1F4EF POSTAL HORN 1F4F0 NEWSPAPER x (rolled-up newspaper - 1F5DE) 1F4F1 MOBILE PHONE x (clamshell mobile phone - 1F581) 1F4F2 MOBILE PHONE WITH RIGHTWARDS ARROW AT LEFT * making a phone call 1F4F3 VIBRATION MODE 1F4F4 MOBILE PHONE OFF 1F4F5 NO MOBILE PHONES 1F4F6 ANTENNA WITH BARS = cellular reception @ Audio and video symbols 1F4F7 CAMERA 1F4F8 CAMERA WITH FLASH 1F4F9 VIDEO CAMERA = video 1F4FA TELEVISION 1F4FB RADIO 1F4FC VIDEOCASSETTE 1F4FD FILM PROJECTOR = movies x (cinema - 1F3A6) ~ 1F4FD FE0E text style ~ 1F4FD FE0F emoji style 1F4FE PORTABLE STEREO = stereo @ Religious symbol 1F4FF PRAYER BEADS @ User interface symbols 1F500 TWISTED RIGHTWARDS ARROWS = shuffle 1F501 CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS = repeat x (black universal recycling symbol - 267B) 1F502 CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS WITH CIRCLED ONE OVERLAY = repeat one item over 1F503 CLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS = reload x (clockwise right and left semicircle arrows - 1F5D8) 1F504 ANTICLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS = reload 1F505 LOW BRIGHTNESS SYMBOL 1F506 HIGH BRIGHTNESS SYMBOL x (black sun with rays - 2600) x (white sun with rays - 263C) x (gear without hub - 26ED) 1F507 SPEAKER WITH CANCELLATION STROKE 1F508 SPEAKER = left speaker x (right speaker - 1F568) x (bullhorn - 1F56B) 1F509 SPEAKER WITH ONE SOUND WAVE 1F50A SPEAKER WITH THREE SOUND WAVES = sound 1F50B BATTERY 1F50C ELECTRIC PLUG 1F50D LEFT-POINTING MAGNIFYING GLASS = search x (bullhorn with sound waves - 1F56C) 1F50E RIGHT-POINTING MAGNIFYING GLASS = get more details 1F50F LOCK WITH INK PEN = privacy 1F510 CLOSED LOCK WITH KEY = secure 1F511 KEY x (squared key - 26BF) x (old key - 1F5DD) 1F512 LOCK = padlock in locked position 1F513 OPEN LOCK 1F514 BELL x (tibetan symbol dril bu - 0FC4) x (symbol for bell - 2407) x (ringing bell - 1F56D) 1F515 BELL WITH CANCELLATION STROKE 1F516 BOOKMARK * indicates a bookmark, not a price tag x (label - 1F3F7) 1F517 LINK SYMBOL 1F518 RADIO BUTTON x (circled dot operator - 2299) x (fisheye - 25C9) x (bullseye - 25CE) @ Words with arrows 1F519 BACK WITH LEFTWARDS ARROW ABOVE x (previous page - 2397) 1F51A END WITH LEFTWARDS ARROW ABOVE 1F51B ON WITH EXCLAMATION MARK WITH LEFT RIGHT ARROW ABOVE 1F51C SOON WITH RIGHTWARDS ARROW ABOVE 1F51D TOP WITH UPWARDS ARROW ABOVE = top of page @ Enclosed alphanumeric symbols 1F51E NO ONE UNDER EIGHTEEN SYMBOL 1F51F KEYCAP TEN x (combining enclosing keycap - 20E3) @ User interface input status symbols 1F520 INPUT SYMBOL FOR LATIN CAPITAL LETTERS 1F521 INPUT SYMBOL FOR LATIN SMALL LETTERS 1F522 INPUT SYMBOL FOR NUMBERS 1F523 INPUT SYMBOL FOR SYMBOLS 1F524 INPUT SYMBOL FOR LATIN LETTERS = English input (ABC) @ Tool symbols 1F525 FIRE 1F526 ELECTRIC TORCH = flashlight 1F527 WRENCH 1F528 HAMMER 1F529 NUT AND BOLT 1F52A HOCHO = Japanese kitchen knife x (dagger knife - 1F5E1) 1F52B PISTOL = handgun, revolver 1F52C MICROSCOPE 1F52D TELESCOPE 1F52E CRYSTAL BALL @ Miscellaneous symbols 1F52F SIX POINTED STAR WITH MIDDLE DOT x (star of david - 2721) 1F530 JAPANESE SYMBOL FOR BEGINNER 1F531 TRIDENT EMBLEM @ Geometric shapes 1F532 BLACK SQUARE BUTTON 1F533 WHITE SQUARE BUTTON 1F534 LARGE RED CIRCLE x (black circle - 25CF) x (large circle - 25EF) x (black large circle - 2B24) x (heavy large circle - 2B55) 1F535 LARGE BLUE CIRCLE 1F536 LARGE ORANGE DIAMOND x (black diamond - 25C6) 1F537 LARGE BLUE DIAMOND 1F538 SMALL ORANGE DIAMOND x (black small diamond - 2B29) 1F539 SMALL BLUE DIAMOND @ User interface symbols 1F53A UP-POINTING RED TRIANGLE x (black up-pointing triangle - 25B2) 1F53B DOWN-POINTING RED TRIANGLE x (black down-pointing triangle - 25BC) 1F53C UP-POINTING SMALL RED TRIANGLE = play arrow up x (black up-pointing small triangle - 25B4) 1F53D DOWN-POINTING SMALL RED TRIANGLE = play arrow down x (black down-pointing small triangle - 25BE) @ Shadowed geometric shapes 1F53E LOWER RIGHT SHADOWED WHITE CIRCLE = circle shadow down x (shadowed white circle - 274D) 1F53F UPPER RIGHT SHADOWED WHITE CIRCLE @ Religious symbols 1F540 CIRCLED CROSS POMMEE * Orthodox typicon symbol for great feast service 1F541 CROSS POMMEE WITH HALF-CIRCLE BELOW * Orthodox typicon symbol for vigil service 1F542 CROSS POMMEE * Orthodox typicon symbol for Polyeleos x (four teardrop-spoked asterisk - 2722) 1F543 NOTCHED LEFT SEMICIRCLE WITH THREE DOTS * Orthodox typicon symbol for lower rank feast 1F544 NOTCHED RIGHT SEMICIRCLE WITH THREE DOTS * Orthodox typicon symbol for lower rank feast 1F545 SYMBOL FOR MARKS CHAPTER * Orthodox typicon symbol for difficult sections 1F546 WHITE LATIN CROSS = cross outline x (shadowed white latin cross - 271E) 1F547 HEAVY LATIN CROSS 1F548 CELTIC CROSS 1F549 OM SYMBOL * generic symbol independent of Devanagari font x (devanagari om - 0950) ~ 1F549 FE0E text style ~ 1F549 FE0F emoji style 1F54A DOVE OF PEACE = peace ~ 1F54A FE0E text style ~ 1F54A FE0F emoji style 1F54B KAABA 1F54C MOSQUE 1F54D SYNAGOGUE 1F54E MENORAH WITH NINE BRANCHES = hanukiah @ Miscellaneous symbol 1F54F BOWL OF HYGIEIA x (staff of aesculapius - 2695) @ Clock face symbols 1F550 CLOCK FACE ONE OCLOCK x (watch - 231A) x (alarm clock - 23F0) 1F551 CLOCK FACE TWO OCLOCK 1F552 CLOCK FACE THREE OCLOCK 1F553 CLOCK FACE FOUR OCLOCK 1F554 CLOCK FACE FIVE OCLOCK 1F555 CLOCK FACE SIX OCLOCK 1F556 CLOCK FACE SEVEN OCLOCK 1F557 CLOCK FACE EIGHT OCLOCK 1F558 CLOCK FACE NINE OCLOCK 1F559 CLOCK FACE TEN OCLOCK 1F55A CLOCK FACE ELEVEN OCLOCK 1F55B CLOCK FACE TWELVE OCLOCK 1F55C CLOCK FACE ONE-THIRTY 1F55D CLOCK FACE TWO-THIRTY 1F55E CLOCK FACE THREE-THIRTY 1F55F CLOCK FACE FOUR-THIRTY 1F560 CLOCK FACE FIVE-THIRTY 1F561 CLOCK FACE SIX-THIRTY 1F562 CLOCK FACE SEVEN-THIRTY 1F563 CLOCK FACE EIGHT-THIRTY 1F564 CLOCK FACE NINE-THIRTY 1F565 CLOCK FACE TEN-THIRTY 1F566 CLOCK FACE ELEVEN-THIRTY 1F567 CLOCK FACE TWELVE-THIRTY @ Communication symbols 1F568 RIGHT SPEAKER x (speaker - 1F508) 1F569 RIGHT SPEAKER WITH ONE SOUND WAVE 1F56A RIGHT SPEAKER WITH THREE SOUND WAVES 1F56B BULLHORN = sound off x (speaker - 1F508) 1F56C BULLHORN WITH SOUND WAVES = sound on x (cheering megaphone - 1F4E3) x (speaker with three sound waves - 1F50A) @ Miscellaneous symbols 1F56D RINGING BELL x (bell - 1F514) 1F56E BOOK x (open book - 1F4D6) 1F56F CANDLE ~ 1F56F FE0E text style ~ 1F56F FE0F emoji style 1F570 MANTELPIECE CLOCK = clock x (alarm clock - 23F0) ~ 1F570 FE0E text style ~ 1F570 FE0F emoji style 1F571 BLACK SKULL AND CROSSBONES x (skull and crossbones - 2620) 1F572 NO PIRACY 1F573 HOLE = portable hole ~ 1F573 FE0E text style ~ 1F573 FE0F emoji style 1F574 MAN IN BUSINESS SUIT LEVITATING = jump ~ 1F574 FE0E text style ~ 1F574 FE0F emoji style 1F575 SLEUTH OR SPY = investigate ~ 1F575 FE0E text style ~ 1F575 FE0F emoji style 1F576 DARK SUNGLASSES = cool ~ 1F576 FE0E text style ~ 1F576 FE0F emoji style @ Animal symbols 1F577 SPIDER ~ 1F577 FE0E text style ~ 1F577 FE0F emoji style 1F578 SPIDER WEB ~ 1F578 FE0E text style ~ 1F578 FE0F emoji style @ Game symbol 1F579 JOYSTICK ~ 1F579 FE0E text style ~ 1F579 FE0F emoji style @ Role symbol 1F57A MAN DANCING * forms a gender pair with 1F483 x (dancer - 1F483) @ Communication symbols 1F57B LEFT HAND TELEPHONE RECEIVER x (telephone receiver - 1F4DE) 1F57C TELEPHONE RECEIVER WITH PAGE = fax x (fax machine - 1F4E0) 1F57D RIGHT HAND TELEPHONE RECEIVER = telephone handset 1F57E WHITE TOUCHTONE TELEPHONE x (white telephone - 260F) 1F57F BLACK TOUCHTONE TELEPHONE x (black telephone - 260E) 1F580 TELEPHONE ON TOP OF MODEM = modem 1F581 CLAMSHELL MOBILE PHONE = cellular phone x (mobile phone - 1F4F1) 1F582 BACK OF ENVELOPE x (envelope - 2709) * 2709 shows a seal 1F583 STAMPED ENVELOPE = mail 1F584 ENVELOPE WITH LIGHTNING = e-mail x (e-mail symbol - 1F4E7) 1F585 FLYING ENVELOPE = send message x (envelope with downwards arrow above - 1F4E9) 1F586 PEN OVER STAMPED ENVELOPE 1F587 LINKED PAPERCLIPS = links x (paperclip - 1F4CE) ~ 1F587 FE0E text style ~ 1F587 FE0F emoji style 1F588 BLACK PUSHPIN = marker x (pushpin - 1F4CC) 1F589 LOWER LEFT PENCIL = pencil x (lower right pencil - 270E) 1F58A LOWER LEFT BALLPOINT PEN = ballpoint pen ~ 1F58A FE0E text style ~ 1F58A FE0F emoji style 1F58B LOWER LEFT FOUNTAIN PEN = fountain pen x (white nib - 2711) ~ 1F58B FE0E text style ~ 1F58B FE0F emoji style 1F58C LOWER LEFT PAINTBRUSH = brush ~ 1F58C FE0E text style ~ 1F58C FE0F emoji style 1F58D LOWER LEFT CRAYON = crayon ~ 1F58D FE0E text style ~ 1F58D FE0F emoji style @ Hand symbols 1F58E LEFT WRITING HAND x (writing hand - 270D) 1F58F TURNED OK HAND SIGN x (ok hand sign - 1F44C) 1F590 RAISED HAND WITH FINGERS SPLAYED = halt x (raised hand - 270B) ~ 1F590 FE0E text style ~ 1F590 FE0F emoji style 1F591 REVERSED RAISED HAND WITH FINGERS SPLAYED 1F592 REVERSED THUMBS UP SIGN x (thumbs up sign - 1F44D) 1F593 REVERSED THUMBS DOWN SIGN x (thumbs down sign - 1F44E) 1F594 REVERSED VICTORY HAND x (victory hand - 270C) 1F595 REVERSED HAND WITH MIDDLE FINGER EXTENDED 1F596 RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS = Vulcan salute 1F597 WHITE DOWN POINTING LEFT HAND INDEX x (white down pointing index - 261F) x (white down pointing backhand index - 1F447) 1F598 SIDEWAYS WHITE LEFT POINTING INDEX x (white left pointing index - 261C) 1F599 SIDEWAYS WHITE RIGHT POINTING INDEX x (white right pointing index - 261E) 1F59A SIDEWAYS BLACK LEFT POINTING INDEX 1F59B SIDEWAYS BLACK RIGHT POINTING INDEX 1F59C BLACK LEFT POINTING BACKHAND INDEX x (white left pointing backhand index - 1F448) 1F59D BLACK RIGHT POINTING BACKHAND INDEX x (white right pointing backhand index - 1F449) 1F59E SIDEWAYS WHITE UP POINTING INDEX x (white up pointing index - 261D) 1F59F SIDEWAYS WHITE DOWN POINTING INDEX x (white down pointing index - 261F) 1F5A0 SIDEWAYS BLACK UP POINTING INDEX 1F5A1 SIDEWAYS BLACK DOWN POINTING INDEX 1F5A2 BLACK UP POINTING BACKHAND INDEX x (white up pointing backhand index - 1F446) 1F5A3 BLACK DOWN POINTING BACKHAND INDEX x (white down pointing backhand index - 1F447) @ Heart symbol 1F5A4 BLACK HEART * unequivocally represented as black in all variants x (black heart suit - 2665) @ Computer symbols 1F5A5 DESKTOP COMPUTER = tower computer ~ 1F5A5 FE0E text style ~ 1F5A5 FE0F emoji style 1F5A6 KEYBOARD AND MOUSE x (keyboard - 2328) 1F5A7 THREE NETWORKED COMPUTERS = computer network 1F5A8 PRINTER x (fax machine - 1F4E0) ~ 1F5A8 FE0E text style ~ 1F5A8 FE0F emoji style 1F5A9 POCKET CALCULATOR = calculator 1F5AA BLACK HARD SHELL FLOPPY DISK = disk x (floppy disk - 1F4BE) 1F5AB WHITE HARD SHELL FLOPPY DISK 1F5AC SOFT SHELL FLOPPY DISK 1F5AD TAPE CARTRIDGE 1F5AE WIRED KEYBOARD = keyboard x (keyboard - 2328) 1F5AF ONE BUTTON MOUSE 1F5B0 TWO BUTTON MOUSE 1F5B1 THREE BUTTON MOUSE ~ 1F5B1 FE0E text style ~ 1F5B1 FE0F emoji style 1F5B2 TRACKBALL = ballpoint ~ 1F5B2 FE0E text style ~ 1F5B2 FE0F emoji style 1F5B3 OLD PERSONAL COMPUTER = personal computer x (personal computer - 1F4BB) 1F5B4 HARD DISK 1F5B5 SCREEN = monitor x (combining enclosing screen - 20E2) 1F5B6 PRINTER ICON x (printer - 1F5A8) 1F5B7 FAX ICON x (fax machine - 1F4E0) 1F5B8 OPTICAL DISC ICON = compact disc x (optical disc - 1F4BF) @ Office symbols 1F5B9 DOCUMENT WITH TEXT 1F5BA DOCUMENT WITH TEXT AND PICTURE 1F5BB DOCUMENT WITH PICTURE = graphic document 1F5BC FRAME WITH PICTURE = art ~ 1F5BC FE0E text style ~ 1F5BC FE0F emoji style 1F5BD FRAME WITH TILES = frames 1F5BE FRAME WITH AN X = no frames, no picture @ User interface symbols 1F5BF BLACK FOLDER 1F5C0 FOLDER = directory x (file folder - 1F4C1) 1F5C1 OPEN FOLDER x (open file folder - 1F4C2) 1F5C2 CARD INDEX DIVIDERS = index x (card index - 1F4C7) ~ 1F5C2 FE0E text style ~ 1F5C2 FE0F emoji style 1F5C3 CARD FILE BOX = archive ~ 1F5C3 FE0E text style ~ 1F5C3 FE0F emoji style 1F5C4 FILE CABINET ~ 1F5C4 FE0E text style ~ 1F5C4 FE0F emoji style 1F5C5 EMPTY NOTE 1F5C6 EMPTY NOTE PAGE 1F5C7 EMPTY NOTE PAD 1F5C8 NOTE 1F5C9 NOTE PAGE 1F5CA NOTE PAD 1F5CB EMPTY DOCUMENT 1F5CC EMPTY PAGE 1F5CD EMPTY PAGES 1F5CE DOCUMENT x (page facing up - 1F4C4) 1F5CF PAGE x (page with curl - 1F4C3) 1F5D0 PAGES 1F5D1 WASTEBASKET = trashcan ~ 1F5D1 FE0E text style ~ 1F5D1 FE0F emoji style 1F5D2 SPIRAL NOTE PAD = note, empty calendar x (calendar - 1F4C5) ~ 1F5D2 FE0E text style ~ 1F5D2 FE0F emoji style 1F5D3 SPIRAL CALENDAR PAD = calendar, day 1 x (tear-off calendar - 1F4C6) ~ 1F5D3 FE0E text style ~ 1F5D3 FE0F emoji style 1F5D4 DESKTOP WINDOW 1F5D5 MINIMIZE 1F5D6 MAXIMIZE 1F5D7 OVERLAP = overlapping offset windows 1F5D8 CLOCKWISE RIGHT AND LEFT SEMICIRCLE ARROWS = refresh x (clockwise downwards and upwards open circle arrows - 1F503) 1F5D9 CANCELLATION X = close x (cross mark - 274C) 1F5DA INCREASE FONT SIZE SYMBOL 1F5DB DECREASE FONT SIZE SYMBOL 1F5DC COMPRESSION * symbol depicts a hand press with a box inside ~ 1F5DC FE0E text style ~ 1F5DC FE0F emoji style 1F5DD OLD KEY = encryption x (key - 1F511) ~ 1F5DD FE0E text style ~ 1F5DD FE0F emoji style @ Miscellaneous symbols 1F5DE ROLLED-UP NEWSPAPER = news x (newspaper - 1F4F0) ~ 1F5DE FE0E text style ~ 1F5DE FE0F emoji style 1F5DF PAGE WITH CIRCLED TEXT = classified 1F5E0 STOCK CHART = finance x (chart with upwards trend - 1F4C8) @ Rating symbols @+ The following symbols are used for ratings. This set also includes 1F46A for family rating. 1F5E1 DAGGER KNIFE = rated for violence = hate x (hocho - 1F52A) ~ 1F5E1 FE0E text style ~ 1F5E1 FE0F emoji style 1F5E2 LIPS = rated for sex = kiss x (kiss mark - 1F48B) 1F5E3 SPEAKING HEAD IN SILHOUETTE = rated for strong language ~ 1F5E3 FE0E text style ~ 1F5E3 FE0F emoji style @ Sound symbols 1F5E4 THREE RAYS ABOVE 1F5E5 THREE RAYS BELOW 1F5E6 THREE RAYS LEFT x (three lines converging right - 269E) 1F5E7 THREE RAYS RIGHT x (three lines converging left - 269F) @ Bubble symbols 1F5E8 LEFT SPEECH BUBBLE ~ 1F5E8 FE0E text style ~ 1F5E8 FE0F emoji style 1F5E9 RIGHT SPEECH BUBBLE 1F5EA TWO SPEECH BUBBLES = chat 1F5EB THREE SPEECH BUBBLES = conference 1F5EC LEFT THOUGHT BUBBLE 1F5ED RIGHT THOUGHT BUBBLE x (thought balloon - 1F4AD) 1F5EE LEFT ANGER BUBBLE = shout left 1F5EF RIGHT ANGER BUBBLE = shout right ~ 1F5EF FE0E text style ~ 1F5EF FE0F emoji style 1F5F0 MOOD BUBBLE = new x (collision symbol - 1F4A5) 1F5F1 LIGHTNING MOOD BUBBLE = updated 1F5F2 LIGHTNING MOOD = lightning bolt x (high voltage sign - 26A1) @ Ballot symbols 1F5F3 BALLOT BOX WITH BALLOT = vote x (ballot box with x - 2612) ~ 1F5F3 FE0E text style ~ 1F5F3 FE0F emoji style 1F5F4 BALLOT SCRIPT X = x mark x (ballot x - 2717) 1F5F5 BALLOT BOX WITH SCRIPT X x (ballot box with x - 2612) 1F5F6 BALLOT BOLD SCRIPT X x (heavy ballot x - 2718) 1F5F7 BALLOT BOX WITH BOLD SCRIPT X 1F5F8 LIGHT CHECK MARK = check x (check mark - 2713) 1F5F9 BALLOT BOX WITH BOLD CHECK x (ballot box with check - 2611) @ Map symbol 1F5FA WORLD MAP ~ 1F5FA FE0E text style ~ 1F5FA FE0F emoji style @ Cultural symbols 1F5FB MOUNT FUJI 1F5FC TOKYO TOWER 1F5FD STATUE OF LIBERTY 1F5FE SILHOUETTE OF JAPAN 1F5FF MOYAI * Japanese stone statue like Moai on Easter Island @~ ! @@ 1F600 Emoticons 1F64F @+ The emoticons have been organized by mouth shape to make it easier to locate the different characters in the code chart. @ Faces 1F600 GRINNING FACE 1F601 GRINNING FACE WITH SMILING EYES 1F602 FACE WITH TEARS OF JOY 1F603 SMILING FACE WITH OPEN MOUTH x (white smiling face - 263A) 1F604 SMILING FACE WITH OPEN MOUTH AND SMILING EYES 1F605 SMILING FACE WITH OPEN MOUTH AND COLD SWEAT 1F606 SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES 1F607 SMILING FACE WITH HALO 1F608 SMILING FACE WITH HORNS * commonly depicted as a (sinister) smiling version of 1F47F imp 1F609 WINKING FACE 1F60A SMILING FACE WITH SMILING EYES 1F60B FACE SAVOURING DELICIOUS FOOD 1F60C RELIEVED FACE * indicates relief, not sleeping 1F60D SMILING FACE WITH HEART-SHAPED EYES 1F60E SMILING FACE WITH SUNGLASSES 1F60F SMIRKING FACE 1F610 NEUTRAL FACE * used for the West Wind in some Mahjong annotation 1F611 EXPRESSIONLESS FACE 1F612 UNAMUSED FACE 1F613 FACE WITH COLD SWEAT 1F614 PENSIVE FACE 1F615 CONFUSED FACE 1F616 CONFOUNDED FACE 1F617 KISSING FACE 1F618 FACE THROWING A KISS 1F619 KISSING FACE WITH SMILING EYES 1F61A KISSING FACE WITH CLOSED EYES 1F61B FACE WITH STUCK-OUT TONGUE 1F61C FACE WITH STUCK-OUT TONGUE AND WINKING EYE * kidding, not serious 1F61D FACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLOSED EYES * kidding, not serious 1F61E DISAPPOINTED FACE x (white frowning face - 2639) 1F61F WORRIED FACE 1F620 ANGRY FACE 1F621 POUTING FACE * intended to depict pouting rather than simply anger 1F622 CRYING FACE 1F623 PERSEVERING FACE 1F624 FACE WITH LOOK OF TRIUMPH * indicates triumph, not anger 1F625 DISAPPOINTED BUT RELIEVED FACE 1F626 FROWNING FACE WITH OPEN MOUTH * frowning, not shocked or surprised 1F627 ANGUISHED FACE 1F628 FEARFUL FACE 1F629 WEARY FACE 1F62A SLEEPY FACE 1F62B TIRED FACE 1F62C GRIMACING FACE * should not be depicted with zipper mouth x (zipper-mouth face - 1F910) 1F62D LOUDLY CRYING FACE 1F62E FACE WITH OPEN MOUTH 1F62F HUSHED FACE 1F630 FACE WITH OPEN MOUTH AND COLD SWEAT 1F631 FACE SCREAMING IN FEAR 1F632 ASTONISHED FACE 1F633 FLUSHED FACE * embarrassed 1F634 SLEEPING FACE 1F635 DIZZY FACE 1F636 FACE WITHOUT MOUTH x (white circle with two dots - 2687) 1F637 FACE WITH MEDICAL MASK @ Cat faces 1F638 GRINNING CAT FACE WITH SMILING EYES 1F639 CAT FACE WITH TEARS OF JOY 1F63A SMILING CAT FACE WITH OPEN MOUTH 1F63B SMILING CAT FACE WITH HEART-SHAPED EYES 1F63C CAT FACE WITH WRY SMILE 1F63D KISSING CAT FACE WITH CLOSED EYES 1F63E POUTING CAT FACE * intended to depict pouting rather than simply anger 1F63F CRYING CAT FACE 1F640 WEARY CAT FACE * indicates tired, not horrified @ Faces 1F641 SLIGHTLY FROWNING FACE x (white frowning face - 2639) 1F642 SLIGHTLY SMILING FACE x (white smiling face - 263A) 1F643 UPSIDE-DOWN FACE 1F644 FACE WITH ROLLING EYES @ Gesture symbols 1F645 FACE WITH NO GOOD GESTURE * conveys "no deal" or "not ok", not anger; the inverse of 1F646 face with ok gesture 1F646 FACE WITH OK GESTURE 1F647 PERSON BOWING DEEPLY * most commonly depicted as Japanese-style bowing while seated (dogeza) 1F648 SEE-NO-EVIL MONKEY 1F649 HEAR-NO-EVIL MONKEY 1F64A SPEAK-NO-EVIL MONKEY 1F64B HAPPY PERSON RAISING ONE HAND 1F64C PERSON RAISING BOTH HANDS IN CELEBRATION = banzai! 1F64D PERSON FROWNING 1F64E PERSON WITH POUTING FACE * intended to depict pouting rather than simply anger 1F64F PERSON WITH FOLDED HANDS * can indicate sorrow or regret * can also indicate pleading, praying, bowing, or thanking @@ 1F650 Ornamental Dingbats 1F67F @ Fleurons @+ Fleurons are leaf or floral-shaped ornaments used for text decoration. 1F650 NORTH WEST POINTING LEAF 1F651 SOUTH WEST POINTING LEAF 1F652 NORTH EAST POINTING LEAF 1F653 SOUTH EAST POINTING LEAF 1F654 TURNED NORTH WEST POINTING LEAF 1F655 TURNED SOUTH WEST POINTING LEAF 1F656 TURNED NORTH EAST POINTING LEAF 1F657 TURNED SOUTH EAST POINTING LEAF 1F658 NORTH WEST POINTING VINE LEAF 1F659 SOUTH WEST POINTING VINE LEAF x (reversed rotated floral heart bullet - 2619) 1F65A NORTH EAST POINTING VINE LEAF 1F65B SOUTH EAST POINTING VINE LEAF x (rotated floral heart bullet - 2767) 1F65C HEAVY NORTH WEST POINTING VINE LEAF 1F65D HEAVY SOUTH WEST POINTING VINE LEAF 1F65E HEAVY NORTH EAST POINTING VINE LEAF 1F65F HEAVY SOUTH EAST POINTING VINE LEAF 1F660 NORTH WEST POINTING BUD 1F661 SOUTH WEST POINTING BUD 1F662 NORTH EAST POINTING BUD 1F663 SOUTH EAST POINTING BUD 1F664 HEAVY NORTH WEST POINTING BUD 1F665 HEAVY SOUTH WEST POINTING BUD 1F666 HEAVY NORTH EAST POINTING BUD 1F667 HEAVY SOUTH EAST POINTING BUD @ Quilt square ornaments 1F668 HOLLOW QUILT SQUARE ORNAMENT 1F669 HOLLOW QUILT SQUARE ORNAMENT IN BLACK SQUARE 1F66A SOLID QUILT SQUARE ORNAMENT = fourfold knot ornament 1F66B SOLID QUILT SQUARE ORNAMENT IN BLACK SQUARE = inverse fourfold knot ornament @ Rocket ornaments @+ The rocket ornaments function similarly to fleurons for text decoration, and are not intended as pictographs for spaceships. 1F66C LEFTWARDS ROCKET x (rocket - 1F680) 1F66D UPWARDS ROCKET 1F66E RIGHTWARDS ROCKET 1F66F DOWNWARDS ROCKET @ Ampersand and ligature et ornaments 1F670 SCRIPT LIGATURE ET ORNAMENT = italic ampersand lowercase x (tironian sign et - 204A) 1F671 HEAVY SCRIPT LIGATURE ET ORNAMENT 1F672 LIGATURE OPEN ET ORNAMENT 1F673 HEAVY LIGATURE OPEN ET ORNAMENT 1F674 HEAVY AMPERSAND ORNAMENT x (ampersand - 0026) 1F675 SWASH AMPERSAND ORNAMENT = italic ampersand @ Punctuation mark ornaments 1F676 SANS-SERIF HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT x (heavy double turned comma quotation mark ornament - 275D) 1F677 SANS-SERIF HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT x (heavy double comma quotation mark ornament - 275E) 1F678 SANS-SERIF HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT x (heavy low double comma quotation mark ornament - 2760) 1F679 HEAVY INTERROBANG ORNAMENT x (interrobang - 203D) 1F67A SANS-SERIF INTERROBANG ORNAMENT 1F67B HEAVY SANS-SERIF INTERROBANG ORNAMENT 1F67C VERY HEAVY SOLIDUS 1F67D VERY HEAVY REVERSE SOLIDUS @ Miscellaneous symbols 1F67E CHECKER BOARD x (quadrant upper right and lower left - 259E) 1F67F REVERSE CHECKER BOARD x (quadrant upper left and lower right - 259A) @@ 1F680 Transport and Map Symbols 1F6FF @ Vehicles 1F680 ROCKET x (leftwards rocket - 1F66C) 1F681 HELICOPTER x (airplane - 2708) 1F682 STEAM LOCOMOTIVE x (diesel locomotive - 1F6F2) 1F683 RAILWAY CAR 1F684 HIGH-SPEED TRAIN 1F685 HIGH-SPEED TRAIN WITH BULLET NOSE 1F686 TRAIN = intercity train 1F687 METRO = subway, underground train 1F688 LIGHT RAIL 1F689 STATION = train, subway station 1F68A TRAM 1F68B TRAM CAR 1F68C BUS 1F68D ONCOMING BUS 1F68E TROLLEYBUS 1F68F BUS STOP 1F690 MINIBUS 1F691 AMBULANCE 1F692 FIRE ENGINE x (oncoming fire engine - 1F6F1) 1F693 POLICE CAR 1F694 ONCOMING POLICE CAR 1F695 TAXI 1F696 ONCOMING TAXI 1F697 AUTOMOBILE 1F698 ONCOMING AUTOMOBILE 1F699 RECREATIONAL VEHICLE 1F69A DELIVERY TRUCK x (black truck - 26DF) 1F69B ARTICULATED LORRY 1F69C TRACTOR 1F69D MONORAIL 1F69E MOUNTAIN RAILWAY 1F69F SUSPENSION RAILWAY 1F6A0 MOUNTAIN CABLEWAY 1F6A1 AERIAL TRAMWAY 1F6A2 SHIP = cruise line vacation x (ferry - 26F4) x (passenger ship - 1F6F3) 1F6A3 ROWBOAT x (sailboat - 26F5) 1F6A4 SPEEDBOAT x (motor boat - 1F6E5) @ Traffic signs 1F6A5 HORIZONTAL TRAFFIC LIGHT 1F6A6 VERTICAL TRAFFIC LIGHT 1F6A7 CONSTRUCTION SIGN x (pick - 26CF) x (building construction - 1F3D7) 1F6A8 POLICE CARS REVOLVING LIGHT = rotating beacon @ Signage and other symbols 1F6A9 TRIANGULAR FLAG ON POST = location information x (flag in hole - 26F3) x (white pennant - 1F3F1) 1F6AA DOOR 1F6AB NO ENTRY SIGN x (combining enclosing circle backslash - 20E0) x (no entry - 26D4) x (prohibited sign - 1F6C7) 1F6AC SMOKING SYMBOL 1F6AD NO SMOKING SYMBOL 1F6AE PUT LITTER IN ITS PLACE SYMBOL 1F6AF DO NOT LITTER SYMBOL 1F6B0 POTABLE WATER SYMBOL 1F6B1 NON-POTABLE WATER SYMBOL 1F6B2 BICYCLE 1F6B3 NO BICYCLES 1F6B4 BICYCLIST 1F6B5 MOUNTAIN BICYCLIST 1F6B6 PEDESTRIAN = walking 1F6B7 NO PEDESTRIANS 1F6B8 CHILDREN CROSSING 1F6B9 MENS SYMBOL = man symbol = men's restroom 1F6BA WOMENS SYMBOL = woman symbol = women's restroom 1F6BB RESTROOM = man and woman symbol with divider = unisex restroom x (man and woman holding hands - 1F46B) 1F6BC BABY SYMBOL = baby on board, baby changing station 1F6BD TOILET 1F6BE WATER CLOSET 1F6BF SHOWER 1F6C0 BATH 1F6C1 BATHTUB 1F6C2 PASSPORT CONTROL 1F6C3 CUSTOMS 1F6C4 BAGGAGE CLAIM 1F6C5 LEFT LUGGAGE 1F6C6 TRIANGLE WITH ROUNDED CORNERS = caution x (white up-pointing triangle - 25B3) 1F6C7 PROHIBITED SIGN x (combining enclosing circle backslash - 20E0) x (no entry sign - 1F6AB) 1F6C8 CIRCLED INFORMATION SOURCE = information x (information source - 2139) 1F6C9 BOYS SYMBOL 1F6CA GIRLS SYMBOL @ Accommodation symbols @+ These symbols constitute a set along with 1F378 for lounge. 1F6CB COUCH AND LAMP = furniture, lifestyles ~ 1F6CB FE0E text style ~ 1F6CB FE0F emoji style 1F6CC SLEEPING ACCOMMODATION = hotel, guestrooms x (hotel - 1F3E8) 1F6CD SHOPPING BAGS = shopping ~ 1F6CD FE0E text style ~ 1F6CD FE0F emoji style 1F6CE BELLHOP BELL = reception, services ~ 1F6CE FE0E text style ~ 1F6CE FE0F emoji style 1F6CF BED ~ 1F6CF FE0E text style ~ 1F6CF FE0F emoji style @ Signage and other symbols 1F6D0 PLACE OF WORSHIP 1F6D1 OCTAGONAL SIGN = stop sign * may contain text indicating stop x (warning sign - 26A0) x (heavy white down-pointing triangle - 26DB) 1F6D2 SHOPPING TROLLEY = shopping cart @ Miscellaneous symbols 1F6E0 HAMMER AND WRENCH = tools, repair facility x (hammer and pick - 2692) ~ 1F6E0 FE0E text style ~ 1F6E0 FE0F emoji style 1F6E1 SHIELD = US road interstate highway ~ 1F6E1 FE0E text style ~ 1F6E1 FE0F emoji style 1F6E2 OIL DRUM = commodities ~ 1F6E2 FE0E text style ~ 1F6E2 FE0F emoji style 1F6E3 MOTORWAY ~ 1F6E3 FE0E text style ~ 1F6E3 FE0F emoji style 1F6E4 RAILWAY TRACK = railroad ~ 1F6E4 FE0E text style ~ 1F6E4 FE0F emoji style @ Vehicles 1F6E5 MOTOR BOAT = boat x (speedboat - 1F6A4) ~ 1F6E5 FE0E text style ~ 1F6E5 FE0F emoji style 1F6E6 UP-POINTING MILITARY AIRPLANE = military airport 1F6E7 UP-POINTING AIRPLANE = commercial airport x (airplane - 2708) 1F6E8 UP-POINTING SMALL AIRPLANE = airfield 1F6E9 SMALL AIRPLANE ~ 1F6E9 FE0E text style ~ 1F6E9 FE0F emoji style 1F6EA NORTHEAST-POINTING AIRPLANE 1F6EB AIRPLANE DEPARTURE = departures 1F6EC AIRPLANE ARRIVING = arrivals 1F6F0 SATELLITE ~ 1F6F0 FE0E text style ~ 1F6F0 FE0F emoji style 1F6F1 ONCOMING FIRE ENGINE = fire x (fire engine - 1F692) 1F6F2 DIESEL LOCOMOTIVE = train x (steam locomotive - 1F682) x (train - 1F686) 1F6F3 PASSENGER SHIP = cruise line vacation x (ship - 1F6A2) ~ 1F6F3 FE0E text style ~ 1F6F3 FE0F emoji style 1F6F4 SCOOTER 1F6F5 MOTOR SCOOTER 1F6F6 CANOE @~ ! @@ 1F700 Alchemical Symbols 1F77F @ Symbols for Aristotelian elements 1F700 ALCHEMICAL SYMBOL FOR QUINTESSENCE 1F701 ALCHEMICAL SYMBOL FOR AIR 1F702 ALCHEMICAL SYMBOL FOR FIRE x (white up-pointing triangle - 25B3) 1F703 ALCHEMICAL SYMBOL FOR EARTH x (earth - 2641) 1F704 ALCHEMICAL SYMBOL FOR WATER x (white down-pointing triangle - 25BD) @ Symbols for important solvents 1F705 ALCHEMICAL SYMBOL FOR AQUAFORTIS 1F706 ALCHEMICAL SYMBOL FOR AQUA REGIA 1F707 ALCHEMICAL SYMBOL FOR AQUA REGIA-2 = balneum arenae (sand bath), lapis armenus (Armenian stone) 1F708 ALCHEMICAL SYMBOL FOR AQUA VITAE = spiritus vini 1F709 ALCHEMICAL SYMBOL FOR AQUA VITAE-2 1F70A ALCHEMICAL SYMBOL FOR VINEGAR = crucible; acid; distill; atrament; vitriol; red sulfur; borax; wine; alkali salt; mercurius vivus, quick silver x (cross of jerusalem - 2629) 1F70B ALCHEMICAL SYMBOL FOR VINEGAR-2 = distilled vinegar 1F70C ALCHEMICAL SYMBOL FOR VINEGAR-3 @ Symbols for sulfur and mercury 1F70D ALCHEMICAL SYMBOL FOR SULFUR = brimstone 1F70E ALCHEMICAL SYMBOL FOR PHILOSOPHERS SULFUR 1F70F ALCHEMICAL SYMBOL FOR BLACK SULFUR = sulfur nigra, dye 1F710 ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE x (mercury - 263F) x (alchemical symbol for sublimation - 1F75E) 1F711 ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE-2 1F712 ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE-3 1F713 ALCHEMICAL SYMBOL FOR CINNABAR @ Symbols for salt, vitriol, and nitre 1F714 ALCHEMICAL SYMBOL FOR SALT x (white square - 25A1) x (circled minus - 2296) 1F715 ALCHEMICAL SYMBOL FOR NITRE x (circled vertical bar - 29B6) 1F716 ALCHEMICAL SYMBOL FOR VITRIOL 1F717 ALCHEMICAL SYMBOL FOR VITRIOL-2 1F718 ALCHEMICAL SYMBOL FOR ROCK SALT = sal gemmae 1F719 ALCHEMICAL SYMBOL FOR ROCK SALT-2 @ Symbols for gold and silver 1F71A ALCHEMICAL SYMBOL FOR GOLD x (sun - 2609) 1F71B ALCHEMICAL SYMBOL FOR SILVER x (first quarter moon - 263D) x (last quarter moon - 263E) @ Symbols for iron, iron ore and derivatives 1F71C ALCHEMICAL SYMBOL FOR IRON ORE x (male sign - 2642) 1F71D ALCHEMICAL SYMBOL FOR IRON ORE-2 1F71E ALCHEMICAL SYMBOL FOR CROCUS OF IRON = crocus martis, red or yellow calcined powder of iron 1F71F ALCHEMICAL SYMBOL FOR REGULUS OF IRON = regulus martis, scoria from refining stibnite/antimony with iron @ Symbols for copper, copper ore and derivatives 1F720 ALCHEMICAL SYMBOL FOR COPPER ORE x (female sign - 2640) 1F721 ALCHEMICAL SYMBOL FOR IRON-COPPER ORE x (male and female sign - 26A5) 1F722 ALCHEMICAL SYMBOL FOR SUBLIMATE OF COPPER x (alchemical symbol for sal-ammoniac - 1F739) 1F723 ALCHEMICAL SYMBOL FOR CROCUS OF COPPER = crocus veneris, aes ustum 1F724 ALCHEMICAL SYMBOL FOR CROCUS OF COPPER-2 1F725 ALCHEMICAL SYMBOL FOR COPPER ANTIMONIATE = crocus of copper, crocus veneris, lapis haematites x (earth - 2641) 1F726 ALCHEMICAL SYMBOL FOR SALT OF COPPER ANTIMONIATE x (alchemical symbol for salt - 1F714) 1F727 ALCHEMICAL SYMBOL FOR SUBLIMATE OF SALT OF COPPER x (alchemical symbol for sal-ammoniac - 1F739) 1F728 ALCHEMICAL SYMBOL FOR VERDIGRIS = aes viride, copper subacetate = early astronomical symbol for earth x (circled plus - 2295) @ Symbols for tin and lead ore 1F729 ALCHEMICAL SYMBOL FOR TIN ORE x (jupiter - 2643) 1F72A ALCHEMICAL SYMBOL FOR LEAD ORE x (saturn - 2644) @ Symbols for antimony, antimony ore and derivatives 1F72B ALCHEMICAL SYMBOL FOR ANTIMONY ORE = stibnite x (earth - 2641) 1F72C ALCHEMICAL SYMBOL FOR SUBLIMATE OF ANTIMONY x (alchemical symbol for sal-ammoniac - 1F739) 1F72D ALCHEMICAL SYMBOL FOR SALT OF ANTIMONY = cinnabar x (alchemical symbol for salt - 1F714) 1F72E ALCHEMICAL SYMBOL FOR SUBLIMATE OF SALT OF ANTIMONY 1F72F ALCHEMICAL SYMBOL FOR VINEGAR OF ANTIMONY 1F730 ALCHEMICAL SYMBOL FOR REGULUS OF ANTIMONY = antimony metal 1F731 ALCHEMICAL SYMBOL FOR REGULUS OF ANTIMONY-2 1F732 ALCHEMICAL SYMBOL FOR REGULUS 1F733 ALCHEMICAL SYMBOL FOR REGULUS-2 1F734 ALCHEMICAL SYMBOL FOR REGULUS-3 1F735 ALCHEMICAL SYMBOL FOR REGULUS-4 @ Symbols for other substances 1F736 ALCHEMICAL SYMBOL FOR ALKALI = sal alkali 1F737 ALCHEMICAL SYMBOL FOR ALKALI-2 1F738 ALCHEMICAL SYMBOL FOR MARCASITE = iron pyrite, iron sulfide 1F739 ALCHEMICAL SYMBOL FOR SAL-AMMONIAC = ammonium chloride x (asterisk - 002A) x (sextile - 26B9) x (eight spoked asterisk - 2733) 1F73A ALCHEMICAL SYMBOL FOR ARSENIC x (double-ended multimap - 29DF) 1F73B ALCHEMICAL SYMBOL FOR REALGAR = arsenic sulfide 1F73C ALCHEMICAL SYMBOL FOR REALGAR-2 = arsenic sulfide 1F73D ALCHEMICAL SYMBOL FOR AURIPIGMENT = orpiment = arsenic trisulfide 1F73E ALCHEMICAL SYMBOL FOR BISMUTH ORE = tinglass x (neptune - 2646) 1F73F ALCHEMICAL SYMBOL FOR TARTAR = impure potassium tartrate 1F740 ALCHEMICAL SYMBOL FOR TARTAR-2 = impure potassium tartrate 1F741 ALCHEMICAL SYMBOL FOR QUICK LIME = calx viva = calcium oxide 1F742 ALCHEMICAL SYMBOL FOR BORAX 1F743 ALCHEMICAL SYMBOL FOR BORAX-2 1F744 ALCHEMICAL SYMBOL FOR BORAX-3 1F745 ALCHEMICAL SYMBOL FOR ALUM 1F746 ALCHEMICAL SYMBOL FOR OIL x (tibetan sign rdel dkar gsum - 0F1C) 1F747 ALCHEMICAL SYMBOL FOR SPIRIT 1F748 ALCHEMICAL SYMBOL FOR TINCTURE 1F749 ALCHEMICAL SYMBOL FOR GUM 1F74A ALCHEMICAL SYMBOL FOR WAX = cera 1F74B ALCHEMICAL SYMBOL FOR POWDER = pulvis 1F74C ALCHEMICAL SYMBOL FOR CALX = calcinare = oxide residue, calcium oxide 1F74D ALCHEMICAL SYMBOL FOR TUTTY = tutia, crude zinc oxide sublimate = aes viride 1F74E ALCHEMICAL SYMBOL FOR CAPUT MORTUUM = worthless residue of sublimation or distillation 1F74F ALCHEMICAL SYMBOL FOR SCEPTER OF JOVE 1F750 ALCHEMICAL SYMBOL FOR CADUCEUS x (caduceus - 2624) 1F751 ALCHEMICAL SYMBOL FOR TRIDENT 1F752 ALCHEMICAL SYMBOL FOR STARRED TRIDENT 1F753 ALCHEMICAL SYMBOL FOR LODESTONE = magnes 1F754 ALCHEMICAL SYMBOL FOR SOAP x (lozenge - 25CA) x (white medium diamond - 2B26) 1F755 ALCHEMICAL SYMBOL FOR URINE x (squared dot operator - 22A1) 1F756 ALCHEMICAL SYMBOL FOR HORSE DUNG = fimus equinus 1F757 ALCHEMICAL SYMBOL FOR ASHES = cineres 1F758 ALCHEMICAL SYMBOL FOR POT ASHES = cineres clavellati, alumen 1F759 ALCHEMICAL SYMBOL FOR BRICK 1F75A ALCHEMICAL SYMBOL FOR POWDERED BRICK = later cibratus, farina laterum 1F75B ALCHEMICAL SYMBOL FOR AMALGAM 1F75C ALCHEMICAL SYMBOL FOR STRATUM SUPER STRATUM 1F75D ALCHEMICAL SYMBOL FOR STRATUM SUPER STRATUM-2 @ Processes 1F75E ALCHEMICAL SYMBOL FOR SUBLIMATION x (ascending node - 260A) x (libra - 264E) 1F75F ALCHEMICAL SYMBOL FOR PRECIPITATE 1F760 ALCHEMICAL SYMBOL FOR DISTILL = sublimate 1F761 ALCHEMICAL SYMBOL FOR DISSOLVE 1F762 ALCHEMICAL SYMBOL FOR DISSOLVE-2 = water, aqua 1F763 ALCHEMICAL SYMBOL FOR PURIFY x (descending node - 260B) 1F764 ALCHEMICAL SYMBOL FOR PUTREFACTION @ Apparatus 1F765 ALCHEMICAL SYMBOL FOR CRUCIBLE = tigellum x (alchemical symbol for vinegar - 1F70A) 1F766 ALCHEMICAL SYMBOL FOR CRUCIBLE-2 1F767 ALCHEMICAL SYMBOL FOR CRUCIBLE-3 1F768 ALCHEMICAL SYMBOL FOR CRUCIBLE-4 x (down tack - 22A4) 1F769 ALCHEMICAL SYMBOL FOR CRUCIBLE-5 1F76A ALCHEMICAL SYMBOL FOR ALEMBIC 1F76B ALCHEMICAL SYMBOL FOR BATH OF MARY = balneum mariae 1F76C ALCHEMICAL SYMBOL FOR BATH OF VAPOURS = balneum vaporis 1F76D ALCHEMICAL SYMBOL FOR RETORT x (alembic - 2697) @ Time 1F76E ALCHEMICAL SYMBOL FOR HOUR x (hourglass - 231B) 1F76F ALCHEMICAL SYMBOL FOR NIGHT 1F770 ALCHEMICAL SYMBOL FOR DAY-NIGHT 1F771 ALCHEMICAL SYMBOL FOR MONTH = mensis x (squared times - 22A0) @ Measures 1F772 ALCHEMICAL SYMBOL FOR HALF DRAM = drachma semis x (latin small letter ezh - 0292) 1F773 ALCHEMICAL SYMBOL FOR HALF OUNCE = uncia semis x (ounce sign - 2125) @@ 1F780 Geometric Shapes Extended 1F7FF @+ These geometric shapes originate from the Webdings/Wingdings collections. @ Isosceles right triangles 1F780 BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE x (black medium left-pointing triangle - 23F4) 1F781 BLACK UP-POINTING ISOSCELES RIGHT TRIANGLE x (black medium up-pointing triangle - 23F6) 1F782 BLACK RIGHT-POINTING ISOSCELES RIGHT TRIANGLE x (black medium right-pointing triangle - 23F5) 1F783 BLACK DOWN-POINTING ISOSCELES RIGHT TRIANGLE x (black medium down-pointing triangle - 23F7) @ Black circles @+ Constitute a set as follows: 22C5, 2219, 1F784, 2022, 2981, 26AB, 25CF, and 2B24 1F784 BLACK SLIGHTLY SMALL CIRCLE @ White circles @+ Adjective refers to the thickness of the ring. @+ Constitute a set as follows: 25CB, 2B58, 1F785-1F789 1F785 MEDIUM BOLD WHITE CIRCLE x (medium white circle - 26AA) 1F786 BOLD WHITE CIRCLE = very heavy circle 1F787 HEAVY WHITE CIRCLE 1F788 VERY HEAVY WHITE CIRCLE 1F789 EXTREMELY HEAVY WHITE CIRCLE @ White circles containing another black circle @+ Constitute a set as follows: 2299, 1F78A, and 29BF 1F78A WHITE CIRCLE CONTAINING BLACK SMALL CIRCLE @ Target symbol 1F78B ROUND TARGET x (bullseye - 25CE) x (circled white bullet - 29BE) x (heavy circle with circle inside - 2B57) @ Black squares @+ Constitute a set as follows: 1F78C, 2B1D, 1F78D, 25AA, 25FE, 25FC, 25A0, and 2B1B 1F78C BLACK TINY SQUARE 1F78D BLACK SLIGHTLY SMALL SQUARE @ White squares @+ Constitute a set as follows: 25A1, 1F78E-1F793 1F78E LIGHT WHITE SQUARE 1F78F MEDIUM WHITE SQUARE 1F790 BOLD WHITE SQUARE = heavy white square 1F791 HEAVY WHITE SQUARE 1F792 VERY HEAVY WHITE SQUARE 1F793 EXTREMELY HEAVY WHITE SQUARE @ White squares containing another black square @+ Constitute a set as follows: 1F794, 25A3, and 1F795 1F794 WHITE SQUARE CONTAINING BLACK VERY SMALL SQUARE 1F795 WHITE SQUARE CONTAINING BLACK MEDIUM SQUARE @ Target symbol 1F796 SQUARE TARGET @ Black diamonds @+ Constitute a set as follows: 1F797, 1F798, 2B29, 1F799, 2B25, and 25C6 1F797 BLACK TINY DIAMOND 1F798 BLACK VERY SMALL DIAMOND 1F799 BLACK MEDIUM SMALL DIAMOND @ White diamonds containing another black diamond @+ Constitute a set as follows: 1F79A, 25C8, and 1F79B 1F79A WHITE DIAMOND CONTAINING BLACK VERY SMALL DIAMOND 1F79B WHITE DIAMOND CONTAINING BLACK MEDIUM DIAMOND @ Target symbol 1F79C DIAMOND TARGET @ Black lozenges @+ Constitute a set as follows: 1F79D, 1F79E, 2B2A, 1F79F, 2B27, and 29EB 1F79D BLACK TINY LOZENGE 1F79E BLACK VERY SMALL LOZENGE 1F79F BLACK MEDIUM SMALL LOZENGE @ White lozenge containing another black lozenge 1F7A0 WHITE LOZENGE CONTAINING BLACK SMALL LOZENGE @ Greek crosses 1F7A1 THIN GREEK CROSS 1F7A2 LIGHT GREEK CROSS 1F7A3 MEDIUM GREEK CROSS 1F7A4 BOLD GREEK CROSS 1F7A5 VERY BOLD GREEK CROSS x (heavy greek cross - 271A) 1F7A6 VERY HEAVY GREEK CROSS 1F7A7 EXTREMELY HEAVY GREEK CROSS @ Saltires 1F7A8 THIN SALTIRE 1F7A9 LIGHT SALTIRE x (saltire - 2613) 1F7AA MEDIUM SALTIRE 1F7AB BOLD SALTIRE 1F7AC HEAVY SALTIRE 1F7AD VERY HEAVY SALTIRE 1F7AE EXTREMELY HEAVY SALTIRE @ Five spoked asterisks 1F7AF LIGHT FIVE SPOKED ASTERISK 1F7B0 MEDIUM FIVE SPOKED ASTERISK 1F7B1 BOLD FIVE SPOKED ASTERISK 1F7B2 HEAVY FIVE SPOKED ASTERISK 1F7B3 VERY HEAVY FIVE SPOKED ASTERISK 1F7B4 EXTREMELY HEAVY FIVE SPOKED ASTERISK @ Six spoked asterisks 1F7B5 LIGHT SIX SPOKED ASTERISK 1F7B6 MEDIUM SIX SPOKED ASTERISK 1F7B7 BOLD SIX SPOKED ASTERISK 1F7B8 HEAVY SIX SPOKED ASTERISK x (heavy asterisk - 2731) 1F7B9 VERY HEAVY SIX SPOKED ASTERISK 1F7BA EXTREMELY HEAVY SIX SPOKED ASTERISK @ Eight spoked asterisks 1F7BB LIGHT EIGHT SPOKED ASTERISK x (eight spoked asterisk - 2733) 1F7BC MEDIUM EIGHT SPOKED ASTERISK 1F7BD BOLD EIGHT SPOKED ASTERISK 1F7BE HEAVY EIGHT SPOKED ASTERISK 1F7BF VERY HEAVY EIGHT SPOKED ASTERISK @ Three pointed stars 1F7C0 LIGHT THREE POINTED BLACK STAR 1F7C1 MEDIUM THREE POINTED BLACK STAR 1F7C2 THREE POINTED BLACK STAR 1F7C3 MEDIUM THREE POINTED PINWHEEL STAR @ Four pointed stars 1F7C4 LIGHT FOUR POINTED BLACK STAR 1F7C5 MEDIUM FOUR POINTED BLACK STAR 1F7C6 FOUR POINTED BLACK STAR * 2726 is a cusp x (black four pointed star - 2726) 1F7C7 MEDIUM FOUR POINTED PINWHEEL STAR 1F7C8 REVERSE LIGHT FOUR POINTED PINWHEEL STAR = navigate @ Five pointed stars @+ Constitute a set as follows: 1F7C9, 2605, 1F7CA, and 272F 1F7C9 LIGHT FIVE POINTED BLACK STAR 1F7CA HEAVY FIVE POINTED BLACK STAR @ Six pointed stars @+ Constitute a set as follows: 2736, 1F7CB-1F7CD 1F7CB MEDIUM SIX POINTED BLACK STAR 1F7CC HEAVY SIX POINTED BLACK STAR 1F7CD SIX POINTED PINWHEEL STAR @ Eight pointed stars @+ Constitute a set as follows: 2735, 1F7CE-1F7D1 1F7CE MEDIUM EIGHT POINTED BLACK STAR x (eight pointed rectilinear black star - 2737) 1F7CF HEAVY EIGHT POINTED BLACK STAR x (heavy eight pointed rectilinear black star - 2738) 1F7D0 VERY HEAVY EIGHT POINTED BLACK STAR 1F7D1 HEAVY EIGHT POINTED PINWHEEL STAR x (eight pointed pinwheel star - 2735) @ Twelve pointed stars @+ Constitute a set as follows: 1F7D2, 2739, 1F7D3, and 1F7D4 1F7D2 LIGHT TWELVE POINTED BLACK STAR 1F7D3 HEAVY TWELVE POINTED BLACK STAR 1F7D4 HEAVY TWELVE POINTED PINWHEEL STAR @@ 1F800 Supplemental Arrows-C 1F8FF @ Arrows with triangle arrowheads 1F800 LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD 1F801 UPWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD 1F802 RIGHTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD 1F803 DOWNWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD 1F804 LEFTWARDS ARROW WITH MEDIUM TRIANGLE ARROWHEAD 1F805 UPWARDS ARROW WITH MEDIUM TRIANGLE ARROWHEAD 1F806 RIGHTWARDS ARROW WITH MEDIUM TRIANGLE ARROWHEAD 1F807 DOWNWARDS ARROW WITH MEDIUM TRIANGLE ARROWHEAD 1F808 LEFTWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD 1F809 UPWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD 1F80A RIGHTWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD 1F80B DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD @ Arrows with equilateral triangle arrowheads 1F810 LEFTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD 1F811 UPWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD 1F812 RIGHTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD 1F813 DOWNWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD 1F814 LEFTWARDS ARROW WITH EQUILATERAL ARROWHEAD 1F815 UPWARDS ARROW WITH EQUILATERAL ARROWHEAD 1F816 RIGHTWARDS ARROW WITH EQUILATERAL ARROWHEAD 1F817 DOWNWARDS ARROW WITH EQUILATERAL ARROWHEAD 1F818 HEAVY LEFTWARDS ARROW WITH EQUILATERAL ARROWHEAD 1F819 HEAVY UPWARDS ARROW WITH EQUILATERAL ARROWHEAD 1F81A HEAVY RIGHTWARDS ARROW WITH EQUILATERAL ARROWHEAD 1F81B HEAVY DOWNWARDS ARROW WITH EQUILATERAL ARROWHEAD 1F81C HEAVY LEFTWARDS ARROW WITH LARGE EQUILATERAL ARROWHEAD 1F81D HEAVY UPWARDS ARROW WITH LARGE EQUILATERAL ARROWHEAD 1F81E HEAVY RIGHTWARDS ARROW WITH LARGE EQUILATERAL ARROWHEAD 1F81F HEAVY DOWNWARDS ARROW WITH LARGE EQUILATERAL ARROWHEAD @ Triangle headed arrows with different shaft weights 1F820 LEFTWARDS TRIANGLE-HEADED ARROW WITH NARROW SHAFT 1F821 UPWARDS TRIANGLE-HEADED ARROW WITH NARROW SHAFT 1F822 RIGHTWARDS TRIANGLE-HEADED ARROW WITH NARROW SHAFT 1F823 DOWNWARDS TRIANGLE-HEADED ARROW WITH NARROW SHAFT 1F824 LEFTWARDS TRIANGLE-HEADED ARROW WITH MEDIUM SHAFT 1F825 UPWARDS TRIANGLE-HEADED ARROW WITH MEDIUM SHAFT 1F826 RIGHTWARDS TRIANGLE-HEADED ARROW WITH MEDIUM SHAFT 1F827 DOWNWARDS TRIANGLE-HEADED ARROW WITH MEDIUM SHAFT 1F828 LEFTWARDS TRIANGLE-HEADED ARROW WITH BOLD SHAFT 1F829 UPWARDS TRIANGLE-HEADED ARROW WITH BOLD SHAFT 1F82A RIGHTWARDS TRIANGLE-HEADED ARROW WITH BOLD SHAFT 1F82B DOWNWARDS TRIANGLE-HEADED ARROW WITH BOLD SHAFT 1F82C LEFTWARDS TRIANGLE-HEADED ARROW WITH HEAVY SHAFT 1F82D UPWARDS TRIANGLE-HEADED ARROW WITH HEAVY SHAFT 1F82E RIGHTWARDS TRIANGLE-HEADED ARROW WITH HEAVY SHAFT 1F82F DOWNWARDS TRIANGLE-HEADED ARROW WITH HEAVY SHAFT 1F830 LEFTWARDS TRIANGLE-HEADED ARROW WITH VERY HEAVY SHAFT 1F831 UPWARDS TRIANGLE-HEADED ARROW WITH VERY HEAVY SHAFT 1F832 RIGHTWARDS TRIANGLE-HEADED ARROW WITH VERY HEAVY SHAFT 1F833 DOWNWARDS TRIANGLE-HEADED ARROW WITH VERY HEAVY SHAFT @ Finger-post arrows 1F834 LEFTWARDS FINGER-POST ARROW 1F835 UPWARDS FINGER-POST ARROW 1F836 RIGHTWARDS FINGER-POST ARROW 1F837 DOWNWARDS FINGER-POST ARROW @ Squared arrows 1F838 LEFTWARDS SQUARED ARROW 1F839 UPWARDS SQUARED ARROW 1F83A RIGHTWARDS SQUARED ARROW 1F83B DOWNWARDS SQUARED ARROW @ Compressed arrows 1F83C LEFTWARDS COMPRESSED ARROW 1F83D UPWARDS COMPRESSED ARROW 1F83E RIGHTWARDS COMPRESSED ARROW 1F83F DOWNWARDS COMPRESSED ARROW 1F840 LEFTWARDS HEAVY COMPRESSED ARROW 1F841 UPWARDS HEAVY COMPRESSED ARROW 1F842 RIGHTWARDS HEAVY COMPRESSED ARROW x (squat black rightwards arrow - 27A7) 1F843 DOWNWARDS HEAVY COMPRESSED ARROW @ Heavy arrows 1F844 LEFTWARDS HEAVY ARROW 1F845 UPWARDS HEAVY ARROW 1F846 RIGHTWARDS HEAVY ARROW 1F847 DOWNWARDS HEAVY ARROW @ Sans-serif arrows 1F850 LEFTWARDS SANS-SERIF ARROW x (leftwards arrow - 2190) 1F851 UPWARDS SANS-SERIF ARROW x (upwards arrow - 2191) 1F852 RIGHTWARDS SANS-SERIF ARROW x (rightwards arrow - 2192) 1F853 DOWNWARDS SANS-SERIF ARROW x (downwards arrow - 2193) 1F854 NORTH WEST SANS-SERIF ARROW x (north west arrow - 2196) 1F855 NORTH EAST SANS-SERIF ARROW x (north east arrow - 2197) 1F856 SOUTH EAST SANS-SERIF ARROW x (south east arrow - 2198) 1F857 SOUTH WEST SANS-SERIF ARROW x (south west arrow - 2199) 1F858 LEFT RIGHT SANS-SERIF ARROW x (left right arrow - 2194) 1F859 UP DOWN SANS-SERIF ARROW x (up down arrow - 2195) @ Wide-headed barb arrows 1F860 WIDE-HEADED LEFTWARDS LIGHT BARB ARROW 1F861 WIDE-HEADED UPWARDS LIGHT BARB ARROW 1F862 WIDE-HEADED RIGHTWARDS LIGHT BARB ARROW 1F863 WIDE-HEADED DOWNWARDS LIGHT BARB ARROW 1F864 WIDE-HEADED NORTH WEST LIGHT BARB ARROW 1F865 WIDE-HEADED NORTH EAST LIGHT BARB ARROW 1F866 WIDE-HEADED SOUTH EAST LIGHT BARB ARROW 1F867 WIDE-HEADED SOUTH WEST LIGHT BARB ARROW 1F868 WIDE-HEADED LEFTWARDS BARB ARROW 1F869 WIDE-HEADED UPWARDS BARB ARROW 1F86A WIDE-HEADED RIGHTWARDS BARB ARROW 1F86B WIDE-HEADED DOWNWARDS BARB ARROW 1F86C WIDE-HEADED NORTH WEST BARB ARROW 1F86D WIDE-HEADED NORTH EAST BARB ARROW 1F86E WIDE-HEADED SOUTH EAST BARB ARROW 1F86F WIDE-HEADED SOUTH WEST BARB ARROW 1F870 WIDE-HEADED LEFTWARDS MEDIUM BARB ARROW 1F871 WIDE-HEADED UPWARDS MEDIUM BARB ARROW 1F872 WIDE-HEADED RIGHTWARDS MEDIUM BARB ARROW x (heavy wide-headed rightwards arrow - 2794) 1F873 WIDE-HEADED DOWNWARDS MEDIUM BARB ARROW 1F874 WIDE-HEADED NORTH WEST MEDIUM BARB ARROW 1F875 WIDE-HEADED NORTH EAST MEDIUM BARB ARROW 1F876 WIDE-HEADED SOUTH EAST MEDIUM BARB ARROW 1F877 WIDE-HEADED SOUTH WEST MEDIUM BARB ARROW 1F878 WIDE-HEADED LEFTWARDS HEAVY BARB ARROW 1F879 WIDE-HEADED UPWARDS HEAVY BARB ARROW 1F87A WIDE-HEADED RIGHTWARDS HEAVY BARB ARROW 1F87B WIDE-HEADED DOWNWARDS HEAVY BARB ARROW 1F87C WIDE-HEADED NORTH WEST HEAVY BARB ARROW 1F87D WIDE-HEADED NORTH EAST HEAVY BARB ARROW 1F87E WIDE-HEADED SOUTH EAST HEAVY BARB ARROW 1F87F WIDE-HEADED SOUTH WEST HEAVY BARB ARROW 1F880 WIDE-HEADED LEFTWARDS VERY HEAVY BARB ARROW 1F881 WIDE-HEADED UPWARDS VERY HEAVY BARB ARROW 1F882 WIDE-HEADED RIGHTWARDS VERY HEAVY BARB ARROW 1F883 WIDE-HEADED DOWNWARDS VERY HEAVY BARB ARROW 1F884 WIDE-HEADED NORTH WEST VERY HEAVY BARB ARROW 1F885 WIDE-HEADED NORTH EAST VERY HEAVY BARB ARROW 1F886 WIDE-HEADED SOUTH EAST VERY HEAVY BARB ARROW 1F887 WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW @ Arrowheads 1F890 LEFTWARDS TRIANGLE ARROWHEAD 1F891 UPWARDS TRIANGLE ARROWHEAD 1F892 RIGHTWARDS TRIANGLE ARROWHEAD 1F893 DOWNWARDS TRIANGLE ARROWHEAD 1F894 LEFTWARDS WHITE ARROW WITHIN TRIANGLE ARROWHEAD 1F895 UPWARDS WHITE ARROW WITHIN TRIANGLE ARROWHEAD 1F896 RIGHTWARDS WHITE ARROW WITHIN TRIANGLE ARROWHEAD 1F897 DOWNWARDS WHITE ARROW WITHIN TRIANGLE ARROWHEAD @ Notched arrows 1F898 LEFTWARDS ARROW WITH NOTCHED TAIL 1F899 UPWARDS ARROW WITH NOTCHED TAIL 1F89A RIGHTWARDS ARROW WITH NOTCHED TAIL x (notched lower right-shadowed white rightwards arrow - 27AF) 1F89B DOWNWARDS ARROW WITH NOTCHED TAIL @ Heavy arrow shafts @+ The vertical alignment and thickness of this set are compatible with heavy shaft arrows. 1F89C HEAVY ARROW SHAFT WIDTH ONE 1F89D HEAVY ARROW SHAFT WIDTH TWO THIRDS 1F89E HEAVY ARROW SHAFT WIDTH ONE HALF 1F89F HEAVY ARROW SHAFT WIDTH ONE THIRD @ Shaded white arrows 1F8A0 LEFTWARDS BOTTOM-SHADED WHITE ARROW 1F8A1 RIGHTWARDS BOTTOM SHADED WHITE ARROW 1F8A2 LEFTWARDS TOP SHADED WHITE ARROW 1F8A3 RIGHTWARDS TOP SHADED WHITE ARROW 1F8A4 LEFTWARDS LEFT-SHADED WHITE ARROW 1F8A5 RIGHTWARDS RIGHT-SHADED WHITE ARROW x (right-shaded white rightwards arrow - 27A9) 1F8A6 LEFTWARDS RIGHT-SHADED WHITE ARROW 1F8A7 RIGHTWARDS LEFT-SHADED WHITE ARROW x (left-shaded white rightwards arrow - 27AA) 1F8A8 LEFTWARDS BACK-TILTED SHADOWED WHITE ARROW 1F8A9 RIGHTWARDS BACK-TILTED SHADOWED WHITE ARROW x (back-tilted shadowed white rightwards arrow - 27AB) 1F8AA LEFTWARDS FRONT-TILTED SHADOWED WHITE ARROW 1F8AB RIGHTWARDS FRONT-TILTED SHADOWED WHITE ARROW x (front-tilted shadowed white rightwards arrow - 27AC) @ White arrow shafts @+ The vertical alignment and thickness of this set are compatible with white arrows. 1F8AC WHITE ARROW SHAFT WIDTH ONE 1F8AD WHITE ARROW SHAFT WIDTH TWO THIRDS @@ 1F900 Supplemental Symbols and Pictographs 1F9FF @ Emoticon faces 1F910 ZIPPER-MOUTH FACE 1F911 MONEY-MOUTH FACE 1F912 FACE WITH THERMOMETER 1F913 NERD FACE 1F914 THINKING FACE 1F915 FACE WITH HEAD-BANDAGE 1F916 ROBOT FACE x (alien monster - 1F47E) 1F917 HUGGING FACE @ Hand symbols 1F918 SIGN OF THE HORNS 1F919 CALL ME HAND 1F91A RAISED BACK OF HAND 1F91B LEFT-FACING FIST 1F91C RIGHT-FACING FIST 1F91D HANDSHAKE 1F91E HAND WITH INDEX AND MIDDLE FINGERS CROSSED @ Emoticon faces 1F920 FACE WITH COWBOY HAT 1F921 CLOWN FACE 1F922 NAUSEATED FACE 1F923 ROLLING ON THE FLOOR LAUGHING = rofl, rotfl 1F924 DROOLING FACE 1F925 LYING FACE 1F926 FACE PALM = frustration, disbelief 1F927 SNEEZING FACE = gesundheit @ Portrait and role symbols 1F930 PREGNANT WOMAN 1F933 SELFIE * typically used with face or human figure on the left 1F934 PRINCE x (princess - 1F478) 1F935 MAN IN TUXEDO * appearance for groom, may be paired with 1F470 x (bride with veil - 1F470) 1F936 MOTHER CHRISTMAS = Mrs. Claus x (father christmas - 1F385) 1F937 SHRUG 1F938 PERSON DOING CARTWHEEL = gymnastics 1F939 JUGGLING 1F93A FENCER = fencing x (crossed swords - 2694) 1F93B MODERN PENTATHLON 1F93C WRESTLERS = wrestling 1F93D WATER POLO 1F93E HANDBALL @ Miscellaneous symbols 1F940 WILTED FLOWER x (rose - 1F339) 1F941 DRUM WITH DRUMSTICKS 1F942 CLINKING GLASSES = celebration, formal toasting x (clinking beer mugs - 1F37B) 1F943 TUMBLER GLASS = whisky * typically shown with ice x (cocktail glass - 1F378) 1F944 SPOON x (fork and knife - 1F374) 1F945 GOAL NET 1F946 RIFLE = marksmanship, shooting, hunting 1F947 FIRST PLACE MEDAL = gold medal x (sports medal - 1F3C5) 1F948 SECOND PLACE MEDAL = silver medal 1F949 THIRD PLACE MEDAL = bronze medal 1F94A BOXING GLOVE = boxing 1F94B MARTIAL ARTS UNIFORM = judo, karate, taekwondo @ Food symbols 1F950 CROISSANT 1F951 AVOCADO 1F952 CUCUMBER = pickle 1F953 BACON 1F954 POTATO 1F955 CARROT 1F956 BAGUETTE BREAD = French bread 1F957 GREEN SALAD 1F958 SHALLOW PAN OF FOOD = paella, casserole 1F959 STUFFED FLATBREAD = döner kebab, falafel, gyro, shawarma 1F95A EGG = chicken egg 1F95B GLASS OF MILK = milk 1F95C PEANUTS 1F95D KIWIFRUIT 1F95E PANCAKES = hotcakes, crêpes, blini * sweet or savory @ Animal symbols 1F980 CRAB * used for Cancer x (cancer - 264B) 1F981 LION FACE * used for Leo x (leo - 264C) 1F982 SCORPION * used for Scorpio x (scorpius - 264F) 1F983 TURKEY 1F984 UNICORN FACE 1F985 EAGLE 1F986 DUCK 1F987 BAT 1F988 SHARK 1F989 OWL 1F98A FOX FACE 1F98B BUTTERFLY 1F98C DEER 1F98D GORILLA 1F98E LIZARD 1F98F RHINOCEROS 1F990 SHRIMP 1F991 SQUID @ Food symbol 1F9C0 CHEESE WEDGE @@ 1FF80 Unassigned 1FFFF @ Noncharacters @+ These codes are intended for process-internal uses. 1FFFE 1FFFF @@ 20000 CJK Unified Ideographs Extension B 2A6D6 @@ 2A700 CJK Unified Ideographs Extension C 2B734 @@ 2B740 CJK Unified Ideographs Extension D 2B81D @@ 2B820 CJK Unified Ideographs Extension E 2CEA1 @@ 2F800 CJK Compatibility Ideographs Supplement 2FA1F @ Duplicate characters from CNS 11643-1992 2F800 CJK COMPATIBILITY IDEOGRAPH-2F800 : 4E3D 2F801 CJK COMPATIBILITY IDEOGRAPH-2F801 : 4E38 2F802 CJK COMPATIBILITY IDEOGRAPH-2F802 : 4E41 2F803 CJK COMPATIBILITY IDEOGRAPH-2F803 : 20122 2F804 CJK COMPATIBILITY IDEOGRAPH-2F804 : 4F60 2F805 CJK COMPATIBILITY IDEOGRAPH-2F805 : 4FAE 2F806 CJK COMPATIBILITY IDEOGRAPH-2F806 : 4FBB 2F807 CJK COMPATIBILITY IDEOGRAPH-2F807 : 5002 2F808 CJK COMPATIBILITY IDEOGRAPH-2F808 : 507A 2F809 CJK COMPATIBILITY IDEOGRAPH-2F809 : 5099 2F80A CJK COMPATIBILITY IDEOGRAPH-2F80A : 50E7 2F80B CJK COMPATIBILITY IDEOGRAPH-2F80B : 50CF 2F80C CJK COMPATIBILITY IDEOGRAPH-2F80C : 349E 2F80D CJK COMPATIBILITY IDEOGRAPH-2F80D x 5145 : 2063A 2F80E CJK COMPATIBILITY IDEOGRAPH-2F80E : 514D 2F80F CJK COMPATIBILITY IDEOGRAPH-2F80F : 5154 2F810 CJK COMPATIBILITY IDEOGRAPH-2F810 : 5164 2F811 CJK COMPATIBILITY IDEOGRAPH-2F811 : 5177 2F812 CJK COMPATIBILITY IDEOGRAPH-2F812 : 2051C 2F813 CJK COMPATIBILITY IDEOGRAPH-2F813 : 34B9 2F814 CJK COMPATIBILITY IDEOGRAPH-2F814 x 5185 : 5167 2F815 CJK COMPATIBILITY IDEOGRAPH-2F815 : 518D 2F816 CJK COMPATIBILITY IDEOGRAPH-2F816 : 2054B 2F817 CJK COMPATIBILITY IDEOGRAPH-2F817 : 5197 2F818 CJK COMPATIBILITY IDEOGRAPH-2F818 : 51A4 2F819 CJK COMPATIBILITY IDEOGRAPH-2F819 : 4ECC 2F81A CJK COMPATIBILITY IDEOGRAPH-2F81A : 51AC 2F81B CJK COMPATIBILITY IDEOGRAPH-2F81B : 51B5 2F81C CJK COMPATIBILITY IDEOGRAPH-2F81C : 291DF 2F81D CJK COMPATIBILITY IDEOGRAPH-2F81D : 51F5 2F81E CJK COMPATIBILITY IDEOGRAPH-2F81E : 5203 2F81F CJK COMPATIBILITY IDEOGRAPH-2F81F : 34DF 2F820 CJK COMPATIBILITY IDEOGRAPH-2F820 : 523B 2F821 CJK COMPATIBILITY IDEOGRAPH-2F821 : 5246 2F822 CJK COMPATIBILITY IDEOGRAPH-2F822 : 5272 2F823 CJK COMPATIBILITY IDEOGRAPH-2F823 : 5277 2F824 CJK COMPATIBILITY IDEOGRAPH-2F824 : 3515 2F825 CJK COMPATIBILITY IDEOGRAPH-2F825 : 52C7 2F826 CJK COMPATIBILITY IDEOGRAPH-2F826 : 52C9 2F827 CJK COMPATIBILITY IDEOGRAPH-2F827 : 52E4 2F828 CJK COMPATIBILITY IDEOGRAPH-2F828 : 52FA 2F829 CJK COMPATIBILITY IDEOGRAPH-2F829 : 5305 2F82A CJK COMPATIBILITY IDEOGRAPH-2F82A : 5306 2F82B CJK COMPATIBILITY IDEOGRAPH-2F82B : 5317 2F82C CJK COMPATIBILITY IDEOGRAPH-2F82C : 5349 2F82D CJK COMPATIBILITY IDEOGRAPH-2F82D : 5351 2F82E CJK COMPATIBILITY IDEOGRAPH-2F82E : 535A 2F82F CJK COMPATIBILITY IDEOGRAPH-2F82F : 5373 2F830 CJK COMPATIBILITY IDEOGRAPH-2F830 : 537D 2F831 CJK COMPATIBILITY IDEOGRAPH-2F831 : 537F 2F832 CJK COMPATIBILITY IDEOGRAPH-2F832 : 537F 2F833 CJK COMPATIBILITY IDEOGRAPH-2F833 : 537F 2F834 CJK COMPATIBILITY IDEOGRAPH-2F834 : 20A2C 2F835 CJK COMPATIBILITY IDEOGRAPH-2F835 : 7070 2F836 CJK COMPATIBILITY IDEOGRAPH-2F836 : 53CA 2F837 CJK COMPATIBILITY IDEOGRAPH-2F837 : 53DF 2F838 CJK COMPATIBILITY IDEOGRAPH-2F838 : 20B63 2F839 CJK COMPATIBILITY IDEOGRAPH-2F839 : 53EB 2F83A CJK COMPATIBILITY IDEOGRAPH-2F83A : 53F1 2F83B CJK COMPATIBILITY IDEOGRAPH-2F83B : 5406 2F83C CJK COMPATIBILITY IDEOGRAPH-2F83C : 549E 2F83D CJK COMPATIBILITY IDEOGRAPH-2F83D : 5438 2F83E CJK COMPATIBILITY IDEOGRAPH-2F83E : 5448 2F83F CJK COMPATIBILITY IDEOGRAPH-2F83F : 5468 2F840 CJK COMPATIBILITY IDEOGRAPH-2F840 : 54A2 2F841 CJK COMPATIBILITY IDEOGRAPH-2F841 : 54F6 2F842 CJK COMPATIBILITY IDEOGRAPH-2F842 : 5510 2F843 CJK COMPATIBILITY IDEOGRAPH-2F843 : 5553 2F844 CJK COMPATIBILITY IDEOGRAPH-2F844 : 5563 2F845 CJK COMPATIBILITY IDEOGRAPH-2F845 : 5584 2F846 CJK COMPATIBILITY IDEOGRAPH-2F846 : 5584 2F847 CJK COMPATIBILITY IDEOGRAPH-2F847 : 5599 2F848 CJK COMPATIBILITY IDEOGRAPH-2F848 : 55AB 2F849 CJK COMPATIBILITY IDEOGRAPH-2F849 : 55B3 2F84A CJK COMPATIBILITY IDEOGRAPH-2F84A : 55C2 2F84B CJK COMPATIBILITY IDEOGRAPH-2F84B : 5716 2F84C CJK COMPATIBILITY IDEOGRAPH-2F84C : 5606 2F84D CJK COMPATIBILITY IDEOGRAPH-2F84D : 5717 2F84E CJK COMPATIBILITY IDEOGRAPH-2F84E : 5651 2F84F CJK COMPATIBILITY IDEOGRAPH-2F84F : 5674 2F850 CJK COMPATIBILITY IDEOGRAPH-2F850 : 5207 2F851 CJK COMPATIBILITY IDEOGRAPH-2F851 : 58EE 2F852 CJK COMPATIBILITY IDEOGRAPH-2F852 : 57CE 2F853 CJK COMPATIBILITY IDEOGRAPH-2F853 : 57F4 2F854 CJK COMPATIBILITY IDEOGRAPH-2F854 : 580D 2F855 CJK COMPATIBILITY IDEOGRAPH-2F855 : 578B 2F856 CJK COMPATIBILITY IDEOGRAPH-2F856 : 5832 2F857 CJK COMPATIBILITY IDEOGRAPH-2F857 : 5831 2F858 CJK COMPATIBILITY IDEOGRAPH-2F858 : 58AC 2F859 CJK COMPATIBILITY IDEOGRAPH-2F859 : 214E4 2F85A CJK COMPATIBILITY IDEOGRAPH-2F85A x 58F3 : 58F2 2F85B CJK COMPATIBILITY IDEOGRAPH-2F85B x 21533 : 58F7 2F85C CJK COMPATIBILITY IDEOGRAPH-2F85C : 5906 2F85D CJK COMPATIBILITY IDEOGRAPH-2F85D : 591A 2F85E CJK COMPATIBILITY IDEOGRAPH-2F85E : 5922 2F85F CJK COMPATIBILITY IDEOGRAPH-2F85F : 5962 2F860 CJK COMPATIBILITY IDEOGRAPH-2F860 : 216A8 2F861 CJK COMPATIBILITY IDEOGRAPH-2F861 : 216EA 2F862 CJK COMPATIBILITY IDEOGRAPH-2F862 : 59EC 2F863 CJK COMPATIBILITY IDEOGRAPH-2F863 : 5A1B 2F864 CJK COMPATIBILITY IDEOGRAPH-2F864 : 5A27 2F865 CJK COMPATIBILITY IDEOGRAPH-2F865 : 59D8 2F866 CJK COMPATIBILITY IDEOGRAPH-2F866 : 5A66 2F867 CJK COMPATIBILITY IDEOGRAPH-2F867 : 36EE 2F868 CJK COMPATIBILITY IDEOGRAPH-2F868 : 36FC 2F869 CJK COMPATIBILITY IDEOGRAPH-2F869 : 5B08 2F86A CJK COMPATIBILITY IDEOGRAPH-2F86A : 5B3E 2F86B CJK COMPATIBILITY IDEOGRAPH-2F86B : 5B3E 2F86C CJK COMPATIBILITY IDEOGRAPH-2F86C : 219C8 2F86D CJK COMPATIBILITY IDEOGRAPH-2F86D : 5BC3 2F86E CJK COMPATIBILITY IDEOGRAPH-2F86E : 5BD8 2F86F CJK COMPATIBILITY IDEOGRAPH-2F86F : 5BE7 2F870 CJK COMPATIBILITY IDEOGRAPH-2F870 : 5BF3 2F871 CJK COMPATIBILITY IDEOGRAPH-2F871 : 21B18 2F872 CJK COMPATIBILITY IDEOGRAPH-2F872 : 5BFF 2F873 CJK COMPATIBILITY IDEOGRAPH-2F873 : 5C06 2F874 CJK COMPATIBILITY IDEOGRAPH-2F874 : 5F53 2F875 CJK COMPATIBILITY IDEOGRAPH-2F875 : 5C22 2F876 CJK COMPATIBILITY IDEOGRAPH-2F876 : 3781 2F877 CJK COMPATIBILITY IDEOGRAPH-2F877 : 5C60 2F878 CJK COMPATIBILITY IDEOGRAPH-2F878 : 5C6E 2F879 CJK COMPATIBILITY IDEOGRAPH-2F879 : 5CC0 2F87A CJK COMPATIBILITY IDEOGRAPH-2F87A : 5C8D 2F87B CJK COMPATIBILITY IDEOGRAPH-2F87B : 21DE4 2F87C CJK COMPATIBILITY IDEOGRAPH-2F87C : 5D43 2F87D CJK COMPATIBILITY IDEOGRAPH-2F87D : 21DE6 2F87E CJK COMPATIBILITY IDEOGRAPH-2F87E : 5D6E 2F87F CJK COMPATIBILITY IDEOGRAPH-2F87F : 5D6B 2F880 CJK COMPATIBILITY IDEOGRAPH-2F880 : 5D7C 2F881 CJK COMPATIBILITY IDEOGRAPH-2F881 : 5DE1 2F882 CJK COMPATIBILITY IDEOGRAPH-2F882 : 5DE2 2F883 CJK COMPATIBILITY IDEOGRAPH-2F883 : 382F 2F884 CJK COMPATIBILITY IDEOGRAPH-2F884 : 5DFD 2F885 CJK COMPATIBILITY IDEOGRAPH-2F885 : 5E28 2F886 CJK COMPATIBILITY IDEOGRAPH-2F886 : 5E3D 2F887 CJK COMPATIBILITY IDEOGRAPH-2F887 : 5E69 2F888 CJK COMPATIBILITY IDEOGRAPH-2F888 : 3862 2F889 CJK COMPATIBILITY IDEOGRAPH-2F889 : 22183 2F88A CJK COMPATIBILITY IDEOGRAPH-2F88A : 387C 2F88B CJK COMPATIBILITY IDEOGRAPH-2F88B : 5EB0 2F88C CJK COMPATIBILITY IDEOGRAPH-2F88C : 5EB3 2F88D CJK COMPATIBILITY IDEOGRAPH-2F88D : 5EB6 2F88E CJK COMPATIBILITY IDEOGRAPH-2F88E : 5ECA 2F88F CJK COMPATIBILITY IDEOGRAPH-2F88F : 2A392 2F890 CJK COMPATIBILITY IDEOGRAPH-2F890 : 5EFE 2F891 CJK COMPATIBILITY IDEOGRAPH-2F891 : 22331 2F892 CJK COMPATIBILITY IDEOGRAPH-2F892 : 22331 2F893 CJK COMPATIBILITY IDEOGRAPH-2F893 : 8201 2F894 CJK COMPATIBILITY IDEOGRAPH-2F894 : 5F22 2F895 CJK COMPATIBILITY IDEOGRAPH-2F895 : 5F22 2F896 CJK COMPATIBILITY IDEOGRAPH-2F896 : 38C7 2F897 CJK COMPATIBILITY IDEOGRAPH-2F897 : 232B8 2F898 CJK COMPATIBILITY IDEOGRAPH-2F898 : 261DA 2F899 CJK COMPATIBILITY IDEOGRAPH-2F899 : 5F62 2F89A CJK COMPATIBILITY IDEOGRAPH-2F89A : 5F6B 2F89B CJK COMPATIBILITY IDEOGRAPH-2F89B : 38E3 2F89C CJK COMPATIBILITY IDEOGRAPH-2F89C x 22505 : 5F9A 2F89D CJK COMPATIBILITY IDEOGRAPH-2F89D : 5FCD 2F89E CJK COMPATIBILITY IDEOGRAPH-2F89E : 5FD7 2F89F CJK COMPATIBILITY IDEOGRAPH-2F89F : 5FF9 2F8A0 CJK COMPATIBILITY IDEOGRAPH-2F8A0 : 6081 2F8A1 CJK COMPATIBILITY IDEOGRAPH-2F8A1 : 393A 2F8A2 CJK COMPATIBILITY IDEOGRAPH-2F8A2 : 391C 2F8A3 CJK COMPATIBILITY IDEOGRAPH-2F8A3 : 6094 2F8A4 CJK COMPATIBILITY IDEOGRAPH-2F8A4 : 226D4 2F8A5 CJK COMPATIBILITY IDEOGRAPH-2F8A5 : 60C7 2F8A6 CJK COMPATIBILITY IDEOGRAPH-2F8A6 : 6148 2F8A7 CJK COMPATIBILITY IDEOGRAPH-2F8A7 : 614C 2F8A8 CJK COMPATIBILITY IDEOGRAPH-2F8A8 : 614E 2F8A9 CJK COMPATIBILITY IDEOGRAPH-2F8A9 : 614C 2F8AA CJK COMPATIBILITY IDEOGRAPH-2F8AA : 617A 2F8AB CJK COMPATIBILITY IDEOGRAPH-2F8AB : 618E 2F8AC CJK COMPATIBILITY IDEOGRAPH-2F8AC : 61B2 2F8AD CJK COMPATIBILITY IDEOGRAPH-2F8AD : 61A4 2F8AE CJK COMPATIBILITY IDEOGRAPH-2F8AE : 61AF 2F8AF CJK COMPATIBILITY IDEOGRAPH-2F8AF : 61DE 2F8B0 CJK COMPATIBILITY IDEOGRAPH-2F8B0 : 61F2 2F8B1 CJK COMPATIBILITY IDEOGRAPH-2F8B1 : 61F6 2F8B2 CJK COMPATIBILITY IDEOGRAPH-2F8B2 : 6210 2F8B3 CJK COMPATIBILITY IDEOGRAPH-2F8B3 : 621B 2F8B4 CJK COMPATIBILITY IDEOGRAPH-2F8B4 : 625D 2F8B5 CJK COMPATIBILITY IDEOGRAPH-2F8B5 : 62B1 2F8B6 CJK COMPATIBILITY IDEOGRAPH-2F8B6 : 62D4 2F8B7 CJK COMPATIBILITY IDEOGRAPH-2F8B7 : 6350 2F8B8 CJK COMPATIBILITY IDEOGRAPH-2F8B8 : 22B0C 2F8B9 CJK COMPATIBILITY IDEOGRAPH-2F8B9 : 633D 2F8BA CJK COMPATIBILITY IDEOGRAPH-2F8BA : 62FC 2F8BB CJK COMPATIBILITY IDEOGRAPH-2F8BB : 6368 2F8BC CJK COMPATIBILITY IDEOGRAPH-2F8BC : 6383 2F8BD CJK COMPATIBILITY IDEOGRAPH-2F8BD : 63E4 2F8BE CJK COMPATIBILITY IDEOGRAPH-2F8BE : 22BF1 2F8BF CJK COMPATIBILITY IDEOGRAPH-2F8BF : 6422 2F8C0 CJK COMPATIBILITY IDEOGRAPH-2F8C0 : 63C5 2F8C1 CJK COMPATIBILITY IDEOGRAPH-2F8C1 : 63A9 2F8C2 CJK COMPATIBILITY IDEOGRAPH-2F8C2 : 3A2E 2F8C3 CJK COMPATIBILITY IDEOGRAPH-2F8C3 : 6469 2F8C4 CJK COMPATIBILITY IDEOGRAPH-2F8C4 : 647E 2F8C5 CJK COMPATIBILITY IDEOGRAPH-2F8C5 : 649D 2F8C6 CJK COMPATIBILITY IDEOGRAPH-2F8C6 : 6477 2F8C7 CJK COMPATIBILITY IDEOGRAPH-2F8C7 : 3A6C 2F8C8 CJK COMPATIBILITY IDEOGRAPH-2F8C8 : 654F 2F8C9 CJK COMPATIBILITY IDEOGRAPH-2F8C9 : 656C 2F8CA CJK COMPATIBILITY IDEOGRAPH-2F8CA : 2300A 2F8CB CJK COMPATIBILITY IDEOGRAPH-2F8CB : 65E3 2F8CC CJK COMPATIBILITY IDEOGRAPH-2F8CC : 66F8 2F8CD CJK COMPATIBILITY IDEOGRAPH-2F8CD : 6649 2F8CE CJK COMPATIBILITY IDEOGRAPH-2F8CE : 3B19 2F8CF CJK COMPATIBILITY IDEOGRAPH-2F8CF : 6691 2F8D0 CJK COMPATIBILITY IDEOGRAPH-2F8D0 : 3B08 2F8D1 CJK COMPATIBILITY IDEOGRAPH-2F8D1 : 3AE4 2F8D2 CJK COMPATIBILITY IDEOGRAPH-2F8D2 : 5192 2F8D3 CJK COMPATIBILITY IDEOGRAPH-2F8D3 : 5195 2F8D4 CJK COMPATIBILITY IDEOGRAPH-2F8D4 : 6700 2F8D5 CJK COMPATIBILITY IDEOGRAPH-2F8D5 : 669C 2F8D6 CJK COMPATIBILITY IDEOGRAPH-2F8D6 : 80AD 2F8D7 CJK COMPATIBILITY IDEOGRAPH-2F8D7 : 43D9 2F8D8 CJK COMPATIBILITY IDEOGRAPH-2F8D8 : 6717 2F8D9 CJK COMPATIBILITY IDEOGRAPH-2F8D9 : 671B 2F8DA CJK COMPATIBILITY IDEOGRAPH-2F8DA : 6721 2F8DB CJK COMPATIBILITY IDEOGRAPH-2F8DB : 675E 2F8DC CJK COMPATIBILITY IDEOGRAPH-2F8DC : 6753 2F8DD CJK COMPATIBILITY IDEOGRAPH-2F8DD : 233C3 2F8DE CJK COMPATIBILITY IDEOGRAPH-2F8DE : 3B49 2F8DF CJK COMPATIBILITY IDEOGRAPH-2F8DF : 67FA 2F8E0 CJK COMPATIBILITY IDEOGRAPH-2F8E0 : 6785 2F8E1 CJK COMPATIBILITY IDEOGRAPH-2F8E1 : 6852 2F8E2 CJK COMPATIBILITY IDEOGRAPH-2F8E2 : 6885 2F8E3 CJK COMPATIBILITY IDEOGRAPH-2F8E3 : 2346D 2F8E4 CJK COMPATIBILITY IDEOGRAPH-2F8E4 : 688E 2F8E5 CJK COMPATIBILITY IDEOGRAPH-2F8E5 : 681F 2F8E6 CJK COMPATIBILITY IDEOGRAPH-2F8E6 : 6914 2F8E7 CJK COMPATIBILITY IDEOGRAPH-2F8E7 : 3B9D 2F8E8 CJK COMPATIBILITY IDEOGRAPH-2F8E8 : 6942 2F8E9 CJK COMPATIBILITY IDEOGRAPH-2F8E9 : 69A3 2F8EA CJK COMPATIBILITY IDEOGRAPH-2F8EA : 69EA 2F8EB CJK COMPATIBILITY IDEOGRAPH-2F8EB : 6AA8 2F8EC CJK COMPATIBILITY IDEOGRAPH-2F8EC : 236A3 2F8ED CJK COMPATIBILITY IDEOGRAPH-2F8ED : 6ADB 2F8EE CJK COMPATIBILITY IDEOGRAPH-2F8EE : 3C18 2F8EF CJK COMPATIBILITY IDEOGRAPH-2F8EF : 6B21 2F8F0 CJK COMPATIBILITY IDEOGRAPH-2F8F0 : 238A7 2F8F1 CJK COMPATIBILITY IDEOGRAPH-2F8F1 : 6B54 2F8F2 CJK COMPATIBILITY IDEOGRAPH-2F8F2 : 3C4E 2F8F3 CJK COMPATIBILITY IDEOGRAPH-2F8F3 : 6B72 2F8F4 CJK COMPATIBILITY IDEOGRAPH-2F8F4 : 6B9F 2F8F5 CJK COMPATIBILITY IDEOGRAPH-2F8F5 : 6BBA 2F8F6 CJK COMPATIBILITY IDEOGRAPH-2F8F6 : 6BBB 2F8F7 CJK COMPATIBILITY IDEOGRAPH-2F8F7 : 23A8D 2F8F8 CJK COMPATIBILITY IDEOGRAPH-2F8F8 : 21D0B 2F8F9 CJK COMPATIBILITY IDEOGRAPH-2F8F9 : 23AFA 2F8FA CJK COMPATIBILITY IDEOGRAPH-2F8FA : 6C4E 2F8FB CJK COMPATIBILITY IDEOGRAPH-2F8FB : 23CBC 2F8FC CJK COMPATIBILITY IDEOGRAPH-2F8FC : 6CBF 2F8FD CJK COMPATIBILITY IDEOGRAPH-2F8FD : 6CCD 2F8FE CJK COMPATIBILITY IDEOGRAPH-2F8FE : 6C67 2F8FF CJK COMPATIBILITY IDEOGRAPH-2F8FF : 6D16 2F900 CJK COMPATIBILITY IDEOGRAPH-2F900 : 6D3E 2F901 CJK COMPATIBILITY IDEOGRAPH-2F901 : 6D77 2F902 CJK COMPATIBILITY IDEOGRAPH-2F902 : 6D41 2F903 CJK COMPATIBILITY IDEOGRAPH-2F903 : 6D69 2F904 CJK COMPATIBILITY IDEOGRAPH-2F904 : 6D78 2F905 CJK COMPATIBILITY IDEOGRAPH-2F905 : 6D85 2F906 CJK COMPATIBILITY IDEOGRAPH-2F906 : 23D1E 2F907 CJK COMPATIBILITY IDEOGRAPH-2F907 : 6D34 2F908 CJK COMPATIBILITY IDEOGRAPH-2F908 : 6E2F 2F909 CJK COMPATIBILITY IDEOGRAPH-2F909 : 6E6E 2F90A CJK COMPATIBILITY IDEOGRAPH-2F90A : 3D33 2F90B CJK COMPATIBILITY IDEOGRAPH-2F90B : 6ECB 2F90C CJK COMPATIBILITY IDEOGRAPH-2F90C : 6EC7 2F90D CJK COMPATIBILITY IDEOGRAPH-2F90D : 23ED1 2F90E CJK COMPATIBILITY IDEOGRAPH-2F90E : 6DF9 2F90F CJK COMPATIBILITY IDEOGRAPH-2F90F : 6F6E 2F910 CJK COMPATIBILITY IDEOGRAPH-2F910 : 23F5E 2F911 CJK COMPATIBILITY IDEOGRAPH-2F911 : 23F8E 2F912 CJK COMPATIBILITY IDEOGRAPH-2F912 : 6FC6 2F913 CJK COMPATIBILITY IDEOGRAPH-2F913 : 7039 2F914 CJK COMPATIBILITY IDEOGRAPH-2F914 : 701E 2F915 CJK COMPATIBILITY IDEOGRAPH-2F915 : 701B 2F916 CJK COMPATIBILITY IDEOGRAPH-2F916 : 3D96 2F917 CJK COMPATIBILITY IDEOGRAPH-2F917 : 704A 2F918 CJK COMPATIBILITY IDEOGRAPH-2F918 : 707D 2F919 CJK COMPATIBILITY IDEOGRAPH-2F919 : 7077 2F91A CJK COMPATIBILITY IDEOGRAPH-2F91A : 70AD 2F91B CJK COMPATIBILITY IDEOGRAPH-2F91B : 20525 2F91C CJK COMPATIBILITY IDEOGRAPH-2F91C : 7145 2F91D CJK COMPATIBILITY IDEOGRAPH-2F91D : 24263 2F91E CJK COMPATIBILITY IDEOGRAPH-2F91E : 719C 2F91F CJK COMPATIBILITY IDEOGRAPH-2F91F : 243AB 2F920 CJK COMPATIBILITY IDEOGRAPH-2F920 : 7228 2F921 CJK COMPATIBILITY IDEOGRAPH-2F921 : 7235 2F922 CJK COMPATIBILITY IDEOGRAPH-2F922 : 7250 2F923 CJK COMPATIBILITY IDEOGRAPH-2F923 : 24608 2F924 CJK COMPATIBILITY IDEOGRAPH-2F924 : 7280 2F925 CJK COMPATIBILITY IDEOGRAPH-2F925 : 7295 2F926 CJK COMPATIBILITY IDEOGRAPH-2F926 : 24735 2F927 CJK COMPATIBILITY IDEOGRAPH-2F927 : 24814 2F928 CJK COMPATIBILITY IDEOGRAPH-2F928 : 737A 2F929 CJK COMPATIBILITY IDEOGRAPH-2F929 : 738B 2F92A CJK COMPATIBILITY IDEOGRAPH-2F92A : 3EAC 2F92B CJK COMPATIBILITY IDEOGRAPH-2F92B : 73A5 2F92C CJK COMPATIBILITY IDEOGRAPH-2F92C : 3EB8 2F92D CJK COMPATIBILITY IDEOGRAPH-2F92D : 3EB8 2F92E CJK COMPATIBILITY IDEOGRAPH-2F92E : 7447 2F92F CJK COMPATIBILITY IDEOGRAPH-2F92F : 745C 2F930 CJK COMPATIBILITY IDEOGRAPH-2F930 : 7471 2F931 CJK COMPATIBILITY IDEOGRAPH-2F931 : 7485 2F932 CJK COMPATIBILITY IDEOGRAPH-2F932 : 74CA 2F933 CJK COMPATIBILITY IDEOGRAPH-2F933 : 3F1B 2F934 CJK COMPATIBILITY IDEOGRAPH-2F934 : 7524 2F935 CJK COMPATIBILITY IDEOGRAPH-2F935 : 24C36 2F936 CJK COMPATIBILITY IDEOGRAPH-2F936 : 753E 2F937 CJK COMPATIBILITY IDEOGRAPH-2F937 : 24C92 2F938 CJK COMPATIBILITY IDEOGRAPH-2F938 : 7570 2F939 CJK COMPATIBILITY IDEOGRAPH-2F939 : 2219F 2F93A CJK COMPATIBILITY IDEOGRAPH-2F93A : 7610 2F93B CJK COMPATIBILITY IDEOGRAPH-2F93B : 24FA1 2F93C CJK COMPATIBILITY IDEOGRAPH-2F93C : 24FB8 2F93D CJK COMPATIBILITY IDEOGRAPH-2F93D : 25044 2F93E CJK COMPATIBILITY IDEOGRAPH-2F93E : 3FFC 2F93F CJK COMPATIBILITY IDEOGRAPH-2F93F : 4008 2F940 CJK COMPATIBILITY IDEOGRAPH-2F940 : 76F4 2F941 CJK COMPATIBILITY IDEOGRAPH-2F941 : 250F3 2F942 CJK COMPATIBILITY IDEOGRAPH-2F942 : 250F2 2F943 CJK COMPATIBILITY IDEOGRAPH-2F943 : 25119 2F944 CJK COMPATIBILITY IDEOGRAPH-2F944 : 25133 2F945 CJK COMPATIBILITY IDEOGRAPH-2F945 : 771E 2F946 CJK COMPATIBILITY IDEOGRAPH-2F946 : 771F 2F947 CJK COMPATIBILITY IDEOGRAPH-2F947 : 771F 2F948 CJK COMPATIBILITY IDEOGRAPH-2F948 : 774A 2F949 CJK COMPATIBILITY IDEOGRAPH-2F949 : 4039 2F94A CJK COMPATIBILITY IDEOGRAPH-2F94A : 778B 2F94B CJK COMPATIBILITY IDEOGRAPH-2F94B : 4046 2F94C CJK COMPATIBILITY IDEOGRAPH-2F94C : 4096 2F94D CJK COMPATIBILITY IDEOGRAPH-2F94D : 2541D 2F94E CJK COMPATIBILITY IDEOGRAPH-2F94E : 784E 2F94F CJK COMPATIBILITY IDEOGRAPH-2F94F : 788C 2F950 CJK COMPATIBILITY IDEOGRAPH-2F950 : 78CC 2F951 CJK COMPATIBILITY IDEOGRAPH-2F951 : 40E3 2F952 CJK COMPATIBILITY IDEOGRAPH-2F952 : 25626 2F953 CJK COMPATIBILITY IDEOGRAPH-2F953 : 7956 2F954 CJK COMPATIBILITY IDEOGRAPH-2F954 : 2569A 2F955 CJK COMPATIBILITY IDEOGRAPH-2F955 : 256C5 2F956 CJK COMPATIBILITY IDEOGRAPH-2F956 : 798F 2F957 CJK COMPATIBILITY IDEOGRAPH-2F957 : 79EB 2F958 CJK COMPATIBILITY IDEOGRAPH-2F958 : 412F 2F959 CJK COMPATIBILITY IDEOGRAPH-2F959 : 7A40 2F95A CJK COMPATIBILITY IDEOGRAPH-2F95A : 7A4A 2F95B CJK COMPATIBILITY IDEOGRAPH-2F95B : 7A4F 2F95C CJK COMPATIBILITY IDEOGRAPH-2F95C : 2597C 2F95D CJK COMPATIBILITY IDEOGRAPH-2F95D : 25AA7 2F95E CJK COMPATIBILITY IDEOGRAPH-2F95E : 25AA7 2F95F CJK COMPATIBILITY IDEOGRAPH-2F95F : 7AEE 2F960 CJK COMPATIBILITY IDEOGRAPH-2F960 : 4202 2F961 CJK COMPATIBILITY IDEOGRAPH-2F961 : 25BAB 2F962 CJK COMPATIBILITY IDEOGRAPH-2F962 : 7BC6 2F963 CJK COMPATIBILITY IDEOGRAPH-2F963 : 7BC9 2F964 CJK COMPATIBILITY IDEOGRAPH-2F964 : 4227 2F965 CJK COMPATIBILITY IDEOGRAPH-2F965 : 25C80 2F966 CJK COMPATIBILITY IDEOGRAPH-2F966 : 7CD2 2F967 CJK COMPATIBILITY IDEOGRAPH-2F967 : 42A0 2F968 CJK COMPATIBILITY IDEOGRAPH-2F968 : 7CE8 2F969 CJK COMPATIBILITY IDEOGRAPH-2F969 : 7CE3 2F96A CJK COMPATIBILITY IDEOGRAPH-2F96A : 7D00 2F96B CJK COMPATIBILITY IDEOGRAPH-2F96B : 25F86 2F96C CJK COMPATIBILITY IDEOGRAPH-2F96C : 7D63 2F96D CJK COMPATIBILITY IDEOGRAPH-2F96D : 4301 2F96E CJK COMPATIBILITY IDEOGRAPH-2F96E : 7DC7 2F96F CJK COMPATIBILITY IDEOGRAPH-2F96F : 7E02 2F970 CJK COMPATIBILITY IDEOGRAPH-2F970 : 7E45 2F971 CJK COMPATIBILITY IDEOGRAPH-2F971 : 4334 2F972 CJK COMPATIBILITY IDEOGRAPH-2F972 : 26228 2F973 CJK COMPATIBILITY IDEOGRAPH-2F973 : 26247 2F974 CJK COMPATIBILITY IDEOGRAPH-2F974 : 4359 2F975 CJK COMPATIBILITY IDEOGRAPH-2F975 : 262D9 2F976 CJK COMPATIBILITY IDEOGRAPH-2F976 : 7F7A 2F977 CJK COMPATIBILITY IDEOGRAPH-2F977 : 2633E 2F978 CJK COMPATIBILITY IDEOGRAPH-2F978 : 7F95 2F979 CJK COMPATIBILITY IDEOGRAPH-2F979 : 7FFA 2F97A CJK COMPATIBILITY IDEOGRAPH-2F97A : 8005 2F97B CJK COMPATIBILITY IDEOGRAPH-2F97B : 264DA 2F97C CJK COMPATIBILITY IDEOGRAPH-2F97C : 26523 2F97D CJK COMPATIBILITY IDEOGRAPH-2F97D : 8060 2F97E CJK COMPATIBILITY IDEOGRAPH-2F97E : 265A8 2F97F CJK COMPATIBILITY IDEOGRAPH-2F97F : 8070 2F980 CJK COMPATIBILITY IDEOGRAPH-2F980 : 2335F 2F981 CJK COMPATIBILITY IDEOGRAPH-2F981 : 43D5 2F982 CJK COMPATIBILITY IDEOGRAPH-2F982 : 80B2 2F983 CJK COMPATIBILITY IDEOGRAPH-2F983 : 8103 2F984 CJK COMPATIBILITY IDEOGRAPH-2F984 : 440B 2F985 CJK COMPATIBILITY IDEOGRAPH-2F985 : 813E 2F986 CJK COMPATIBILITY IDEOGRAPH-2F986 : 5AB5 2F987 CJK COMPATIBILITY IDEOGRAPH-2F987 : 267A7 2F988 CJK COMPATIBILITY IDEOGRAPH-2F988 : 267B5 2F989 CJK COMPATIBILITY IDEOGRAPH-2F989 : 23393 2F98A CJK COMPATIBILITY IDEOGRAPH-2F98A : 2339C 2F98B CJK COMPATIBILITY IDEOGRAPH-2F98B : 8201 2F98C CJK COMPATIBILITY IDEOGRAPH-2F98C : 8204 2F98D CJK COMPATIBILITY IDEOGRAPH-2F98D : 8F9E 2F98E CJK COMPATIBILITY IDEOGRAPH-2F98E : 446B 2F98F CJK COMPATIBILITY IDEOGRAPH-2F98F : 8291 2F990 CJK COMPATIBILITY IDEOGRAPH-2F990 : 828B 2F991 CJK COMPATIBILITY IDEOGRAPH-2F991 : 829D 2F992 CJK COMPATIBILITY IDEOGRAPH-2F992 : 52B3 2F993 CJK COMPATIBILITY IDEOGRAPH-2F993 : 82B1 2F994 CJK COMPATIBILITY IDEOGRAPH-2F994 : 82B3 2F995 CJK COMPATIBILITY IDEOGRAPH-2F995 : 82BD 2F996 CJK COMPATIBILITY IDEOGRAPH-2F996 : 82E6 2F997 CJK COMPATIBILITY IDEOGRAPH-2F997 : 26B3C 2F998 CJK COMPATIBILITY IDEOGRAPH-2F998 : 82E5 2F999 CJK COMPATIBILITY IDEOGRAPH-2F999 : 831D 2F99A CJK COMPATIBILITY IDEOGRAPH-2F99A : 8363 2F99B CJK COMPATIBILITY IDEOGRAPH-2F99B : 83AD 2F99C CJK COMPATIBILITY IDEOGRAPH-2F99C : 8323 2F99D CJK COMPATIBILITY IDEOGRAPH-2F99D : 83BD 2F99E CJK COMPATIBILITY IDEOGRAPH-2F99E : 83E7 2F99F CJK COMPATIBILITY IDEOGRAPH-2F99F : 8457 2F9A0 CJK COMPATIBILITY IDEOGRAPH-2F9A0 : 8353 2F9A1 CJK COMPATIBILITY IDEOGRAPH-2F9A1 : 83CA 2F9A2 CJK COMPATIBILITY IDEOGRAPH-2F9A2 : 83CC 2F9A3 CJK COMPATIBILITY IDEOGRAPH-2F9A3 : 83DC 2F9A4 CJK COMPATIBILITY IDEOGRAPH-2F9A4 : 26C36 2F9A5 CJK COMPATIBILITY IDEOGRAPH-2F9A5 : 26D6B 2F9A6 CJK COMPATIBILITY IDEOGRAPH-2F9A6 : 26CD5 2F9A7 CJK COMPATIBILITY IDEOGRAPH-2F9A7 : 452B 2F9A8 CJK COMPATIBILITY IDEOGRAPH-2F9A8 : 84F1 2F9A9 CJK COMPATIBILITY IDEOGRAPH-2F9A9 : 84F3 2F9AA CJK COMPATIBILITY IDEOGRAPH-2F9AA : 8516 2F9AB CJK COMPATIBILITY IDEOGRAPH-2F9AB : 273CA 2F9AC CJK COMPATIBILITY IDEOGRAPH-2F9AC : 8564 2F9AD CJK COMPATIBILITY IDEOGRAPH-2F9AD : 26F2C 2F9AE CJK COMPATIBILITY IDEOGRAPH-2F9AE : 455D 2F9AF CJK COMPATIBILITY IDEOGRAPH-2F9AF : 4561 2F9B0 CJK COMPATIBILITY IDEOGRAPH-2F9B0 : 26FB1 2F9B1 CJK COMPATIBILITY IDEOGRAPH-2F9B1 : 270D2 2F9B2 CJK COMPATIBILITY IDEOGRAPH-2F9B2 x 5914 x 270CD x 270F0 : 456B 2F9B3 CJK COMPATIBILITY IDEOGRAPH-2F9B3 : 8650 2F9B4 CJK COMPATIBILITY IDEOGRAPH-2F9B4 : 865C 2F9B5 CJK COMPATIBILITY IDEOGRAPH-2F9B5 : 8667 2F9B6 CJK COMPATIBILITY IDEOGRAPH-2F9B6 x 27205 : 8669 2F9B7 CJK COMPATIBILITY IDEOGRAPH-2F9B7 : 86A9 2F9B8 CJK COMPATIBILITY IDEOGRAPH-2F9B8 : 8688 2F9B9 CJK COMPATIBILITY IDEOGRAPH-2F9B9 : 870E 2F9BA CJK COMPATIBILITY IDEOGRAPH-2F9BA : 86E2 2F9BB CJK COMPATIBILITY IDEOGRAPH-2F9BB : 8779 2F9BC CJK COMPATIBILITY IDEOGRAPH-2F9BC : 8728 2F9BD CJK COMPATIBILITY IDEOGRAPH-2F9BD : 876B 2F9BE CJK COMPATIBILITY IDEOGRAPH-2F9BE : 8786 2F9BF CJK COMPATIBILITY IDEOGRAPH-2F9BF : 45D7 2F9C0 CJK COMPATIBILITY IDEOGRAPH-2F9C0 : 87E1 2F9C1 CJK COMPATIBILITY IDEOGRAPH-2F9C1 : 8801 2F9C2 CJK COMPATIBILITY IDEOGRAPH-2F9C2 : 45F9 2F9C3 CJK COMPATIBILITY IDEOGRAPH-2F9C3 : 8860 2F9C4 CJK COMPATIBILITY IDEOGRAPH-2F9C4 : 8863 2F9C5 CJK COMPATIBILITY IDEOGRAPH-2F9C5 : 27667 2F9C6 CJK COMPATIBILITY IDEOGRAPH-2F9C6 : 88D7 2F9C7 CJK COMPATIBILITY IDEOGRAPH-2F9C7 : 88DE 2F9C8 CJK COMPATIBILITY IDEOGRAPH-2F9C8 : 4635 2F9C9 CJK COMPATIBILITY IDEOGRAPH-2F9C9 : 88FA 2F9CA CJK COMPATIBILITY IDEOGRAPH-2F9CA : 34BB 2F9CB CJK COMPATIBILITY IDEOGRAPH-2F9CB x 4695 : 278AE 2F9CC CJK COMPATIBILITY IDEOGRAPH-2F9CC : 27966 2F9CD CJK COMPATIBILITY IDEOGRAPH-2F9CD : 46BE 2F9CE CJK COMPATIBILITY IDEOGRAPH-2F9CE : 46C7 2F9CF CJK COMPATIBILITY IDEOGRAPH-2F9CF : 8AA0 2F9D0 CJK COMPATIBILITY IDEOGRAPH-2F9D0 : 8AED 2F9D1 CJK COMPATIBILITY IDEOGRAPH-2F9D1 : 8B8A 2F9D2 CJK COMPATIBILITY IDEOGRAPH-2F9D2 : 8C55 2F9D3 CJK COMPATIBILITY IDEOGRAPH-2F9D3 : 27CA8 2F9D4 CJK COMPATIBILITY IDEOGRAPH-2F9D4 : 8CAB 2F9D5 CJK COMPATIBILITY IDEOGRAPH-2F9D5 : 8CC1 2F9D6 CJK COMPATIBILITY IDEOGRAPH-2F9D6 x 25AD4 : 8D1B 2F9D7 CJK COMPATIBILITY IDEOGRAPH-2F9D7 : 8D77 2F9D8 CJK COMPATIBILITY IDEOGRAPH-2F9D8 : 27F2F 2F9D9 CJK COMPATIBILITY IDEOGRAPH-2F9D9 : 20804 2F9DA CJK COMPATIBILITY IDEOGRAPH-2F9DA : 8DCB 2F9DB CJK COMPATIBILITY IDEOGRAPH-2F9DB : 8DBC 2F9DC CJK COMPATIBILITY IDEOGRAPH-2F9DC : 8DF0 2F9DD CJK COMPATIBILITY IDEOGRAPH-2F9DD : 208DE 2F9DE CJK COMPATIBILITY IDEOGRAPH-2F9DE : 8ED4 2F9DF CJK COMPATIBILITY IDEOGRAPH-2F9DF : 8F38 2F9E0 CJK COMPATIBILITY IDEOGRAPH-2F9E0 : 285D2 2F9E1 CJK COMPATIBILITY IDEOGRAPH-2F9E1 : 285ED 2F9E2 CJK COMPATIBILITY IDEOGRAPH-2F9E2 : 9094 2F9E3 CJK COMPATIBILITY IDEOGRAPH-2F9E3 : 90F1 2F9E4 CJK COMPATIBILITY IDEOGRAPH-2F9E4 : 9111 2F9E5 CJK COMPATIBILITY IDEOGRAPH-2F9E5 : 2872E 2F9E6 CJK COMPATIBILITY IDEOGRAPH-2F9E6 : 911B 2F9E7 CJK COMPATIBILITY IDEOGRAPH-2F9E7 : 9238 2F9E8 CJK COMPATIBILITY IDEOGRAPH-2F9E8 : 92D7 2F9E9 CJK COMPATIBILITY IDEOGRAPH-2F9E9 : 92D8 2F9EA CJK COMPATIBILITY IDEOGRAPH-2F9EA : 927C 2F9EB CJK COMPATIBILITY IDEOGRAPH-2F9EB : 93F9 2F9EC CJK COMPATIBILITY IDEOGRAPH-2F9EC : 9415 2F9ED CJK COMPATIBILITY IDEOGRAPH-2F9ED : 28BFA 2F9EE CJK COMPATIBILITY IDEOGRAPH-2F9EE : 958B 2F9EF CJK COMPATIBILITY IDEOGRAPH-2F9EF : 4995 2F9F0 CJK COMPATIBILITY IDEOGRAPH-2F9F0 : 95B7 2F9F1 CJK COMPATIBILITY IDEOGRAPH-2F9F1 : 28D77 2F9F2 CJK COMPATIBILITY IDEOGRAPH-2F9F2 : 49E6 2F9F3 CJK COMPATIBILITY IDEOGRAPH-2F9F3 : 96C3 2F9F4 CJK COMPATIBILITY IDEOGRAPH-2F9F4 : 5DB2 2F9F5 CJK COMPATIBILITY IDEOGRAPH-2F9F5 : 9723 2F9F6 CJK COMPATIBILITY IDEOGRAPH-2F9F6 : 29145 2F9F7 CJK COMPATIBILITY IDEOGRAPH-2F9F7 : 2921A 2F9F8 CJK COMPATIBILITY IDEOGRAPH-2F9F8 : 4A6E 2F9F9 CJK COMPATIBILITY IDEOGRAPH-2F9F9 : 4A76 2F9FA CJK COMPATIBILITY IDEOGRAPH-2F9FA : 97E0 2F9FB CJK COMPATIBILITY IDEOGRAPH-2F9FB : 2940A 2F9FC CJK COMPATIBILITY IDEOGRAPH-2F9FC : 4AB2 2F9FD CJK COMPATIBILITY IDEOGRAPH-2F9FD : 29496 2F9FE CJK COMPATIBILITY IDEOGRAPH-2F9FE : 980B 2F9FF CJK COMPATIBILITY IDEOGRAPH-2F9FF : 980B 2FA00 CJK COMPATIBILITY IDEOGRAPH-2FA00 : 9829 2FA01 CJK COMPATIBILITY IDEOGRAPH-2FA01 : 295B6 2FA02 CJK COMPATIBILITY IDEOGRAPH-2FA02 : 98E2 2FA03 CJK COMPATIBILITY IDEOGRAPH-2FA03 : 4B33 2FA04 CJK COMPATIBILITY IDEOGRAPH-2FA04 : 9929 2FA05 CJK COMPATIBILITY IDEOGRAPH-2FA05 : 99A7 2FA06 CJK COMPATIBILITY IDEOGRAPH-2FA06 : 99C2 2FA07 CJK COMPATIBILITY IDEOGRAPH-2FA07 : 99FE 2FA08 CJK COMPATIBILITY IDEOGRAPH-2FA08 : 4BCE 2FA09 CJK COMPATIBILITY IDEOGRAPH-2FA09 : 29B30 2FA0A CJK COMPATIBILITY IDEOGRAPH-2FA0A : 9B12 2FA0B CJK COMPATIBILITY IDEOGRAPH-2FA0B : 9C40 2FA0C CJK COMPATIBILITY IDEOGRAPH-2FA0C : 9CFD 2FA0D CJK COMPATIBILITY IDEOGRAPH-2FA0D : 4CCE 2FA0E CJK COMPATIBILITY IDEOGRAPH-2FA0E : 4CED 2FA0F CJK COMPATIBILITY IDEOGRAPH-2FA0F : 9D67 2FA10 CJK COMPATIBILITY IDEOGRAPH-2FA10 : 2A0CE 2FA11 CJK COMPATIBILITY IDEOGRAPH-2FA11 : 4CF8 2FA12 CJK COMPATIBILITY IDEOGRAPH-2FA12 : 2A105 2FA13 CJK COMPATIBILITY IDEOGRAPH-2FA13 : 2A20E 2FA14 CJK COMPATIBILITY IDEOGRAPH-2FA14 : 2A291 2FA15 CJK COMPATIBILITY IDEOGRAPH-2FA15 : 9EBB 2FA16 CJK COMPATIBILITY IDEOGRAPH-2FA16 : 4D56 2FA17 CJK COMPATIBILITY IDEOGRAPH-2FA17 : 9EF9 2FA18 CJK COMPATIBILITY IDEOGRAPH-2FA18 : 9EFE 2FA19 CJK COMPATIBILITY IDEOGRAPH-2FA19 : 9F05 2FA1A CJK COMPATIBILITY IDEOGRAPH-2FA1A : 9F0F 2FA1B CJK COMPATIBILITY IDEOGRAPH-2FA1B : 9F16 2FA1C CJK COMPATIBILITY IDEOGRAPH-2FA1C : 9F3B 2FA1D CJK COMPATIBILITY IDEOGRAPH-2FA1D : 2A600 @~ Standardized Variation Sequences @@ 2FF80 Unassigned 2FFFF @ Noncharacters @+ These codes are intended for process-internal uses. 2FFFE 2FFFF @@ 3FF80 Unassigned 3FFFF @ Noncharacters @+ These codes are intended for process-internal uses. 3FFFE 3FFFF @@ 4FF80 Unassigned 4FFFF @ Noncharacters @+ These codes are intended for process-internal uses. 4FFFE 4FFFF @@ 5FF80 Unassigned 5FFFF @ Noncharacters @+ These codes are intended for process-internal uses. 5FFFE 5FFFF @@ 6FF80 Unassigned 6FFFF @ Noncharacters @+ These codes are intended for process-internal uses. 6FFFE 6FFFF @@ 7FF80 Unassigned 7FFFF @ Noncharacters @+ These codes are intended for process-internal uses. 7FFFE 7FFFF @@ 8FF80 Unassigned 8FFFF @ Noncharacters @+ These codes are intended for process-internal uses. 8FFFE 8FFFF @@ 9FF80 Unassigned 9FFFF @ Noncharacters @+ These codes are intended for process-internal uses. 9FFFE 9FFFF @@ AFF80 Unassigned AFFFF @ Noncharacters @+ These codes are intended for process-internal uses. AFFFE AFFFF @@ BFF80 Unassigned BFFFF @ Noncharacters @+ These codes are intended for process-internal uses. BFFFE BFFFF @@ CFF80 Unassigned CFFFF @ Noncharacters @+ These codes are intended for process-internal uses. CFFFE CFFFF @@ DFF80 Unassigned DFFFF @ Noncharacters @+ These codes are intended for process-internal uses. DFFFE DFFFF @@ E0000 Tags E007F @+ The use of tag characters to convey language tags is strongly discouraged. @ Tag identifiers E0001 LANGUAGE TAG * This character is deprecated, and its use is strongly discouraged. @ Tag components E0020 TAG SPACE E0021 TAG EXCLAMATION MARK E0022 TAG QUOTATION MARK E0023 TAG NUMBER SIGN E0024 TAG DOLLAR SIGN E0025 TAG PERCENT SIGN E0026 TAG AMPERSAND E0027 TAG APOSTROPHE E0028 TAG LEFT PARENTHESIS E0029 TAG RIGHT PARENTHESIS E002A TAG ASTERISK E002B TAG PLUS SIGN E002C TAG COMMA E002D TAG HYPHEN-MINUS E002E TAG FULL STOP E002F TAG SOLIDUS E0030 TAG DIGIT ZERO E0031 TAG DIGIT ONE E0032 TAG DIGIT TWO E0033 TAG DIGIT THREE E0034 TAG DIGIT FOUR E0035 TAG DIGIT FIVE E0036 TAG DIGIT SIX E0037 TAG DIGIT SEVEN E0038 TAG DIGIT EIGHT E0039 TAG DIGIT NINE E003A TAG COLON E003B TAG SEMICOLON E003C TAG LESS-THAN SIGN E003D TAG EQUALS SIGN E003E TAG GREATER-THAN SIGN E003F TAG QUESTION MARK E0040 TAG COMMERCIAL AT E0041 TAG LATIN CAPITAL LETTER A E0042 TAG LATIN CAPITAL LETTER B E0043 TAG LATIN CAPITAL LETTER C E0044 TAG LATIN CAPITAL LETTER D E0045 TAG LATIN CAPITAL LETTER E E0046 TAG LATIN CAPITAL LETTER F E0047 TAG LATIN CAPITAL LETTER G E0048 TAG LATIN CAPITAL LETTER H E0049 TAG LATIN CAPITAL LETTER I E004A TAG LATIN CAPITAL LETTER J E004B TAG LATIN CAPITAL LETTER K E004C TAG LATIN CAPITAL LETTER L E004D TAG LATIN CAPITAL LETTER M E004E TAG LATIN CAPITAL LETTER N E004F TAG LATIN CAPITAL LETTER O E0050 TAG LATIN CAPITAL LETTER P E0051 TAG LATIN CAPITAL LETTER Q E0052 TAG LATIN CAPITAL LETTER R E0053 TAG LATIN CAPITAL LETTER S E0054 TAG LATIN CAPITAL LETTER T E0055 TAG LATIN CAPITAL LETTER U E0056 TAG LATIN CAPITAL LETTER V E0057 TAG LATIN CAPITAL LETTER W E0058 TAG LATIN CAPITAL LETTER X E0059 TAG LATIN CAPITAL LETTER Y E005A TAG LATIN CAPITAL LETTER Z E005B TAG LEFT SQUARE BRACKET E005C TAG REVERSE SOLIDUS E005D TAG RIGHT SQUARE BRACKET E005E TAG CIRCUMFLEX ACCENT E005F TAG LOW LINE E0060 TAG GRAVE ACCENT E0061 TAG LATIN SMALL LETTER A E0062 TAG LATIN SMALL LETTER B E0063 TAG LATIN SMALL LETTER C E0064 TAG LATIN SMALL LETTER D E0065 TAG LATIN SMALL LETTER E E0066 TAG LATIN SMALL LETTER F E0067 TAG LATIN SMALL LETTER G E0068 TAG LATIN SMALL LETTER H E0069 TAG LATIN SMALL LETTER I E006A TAG LATIN SMALL LETTER J E006B TAG LATIN SMALL LETTER K E006C TAG LATIN SMALL LETTER L E006D TAG LATIN SMALL LETTER M E006E TAG LATIN SMALL LETTER N E006F TAG LATIN SMALL LETTER O E0070 TAG LATIN SMALL LETTER P E0071 TAG LATIN SMALL LETTER Q E0072 TAG LATIN SMALL LETTER R E0073 TAG LATIN SMALL LETTER S E0074 TAG LATIN SMALL LETTER T E0075 TAG LATIN SMALL LETTER U E0076 TAG LATIN SMALL LETTER V E0077 TAG LATIN SMALL LETTER W E0078 TAG LATIN SMALL LETTER X E0079 TAG LATIN SMALL LETTER Y E007A TAG LATIN SMALL LETTER Z E007B TAG LEFT CURLY BRACKET E007C TAG VERTICAL LINE E007D TAG RIGHT CURLY BRACKET E007E TAG TILDE @ Stateful tag terminator E007F CANCEL TAG @@ E0100 Variation Selectors Supplement E01EF @+ These complete the set started at FE00 to FE0F @ Variation selectors E0100 VARIATION SELECTOR-17 * these are abbreviated VS17, and so on E0101 VARIATION SELECTOR-18 E0102 VARIATION SELECTOR-19 E0103 VARIATION SELECTOR-20 E0104 VARIATION SELECTOR-21 E0105 VARIATION SELECTOR-22 E0106 VARIATION SELECTOR-23 E0107 VARIATION SELECTOR-24 E0108 VARIATION SELECTOR-25 E0109 VARIATION SELECTOR-26 E010A VARIATION SELECTOR-27 E010B VARIATION SELECTOR-28 E010C VARIATION SELECTOR-29 E010D VARIATION SELECTOR-30 E010E VARIATION SELECTOR-31 E010F VARIATION SELECTOR-32 E0110 VARIATION SELECTOR-33 E0111 VARIATION SELECTOR-34 E0112 VARIATION SELECTOR-35 E0113 VARIATION SELECTOR-36 E0114 VARIATION SELECTOR-37 E0115 VARIATION SELECTOR-38 E0116 VARIATION SELECTOR-39 E0117 VARIATION SELECTOR-40 E0118 VARIATION SELECTOR-41 E0119 VARIATION SELECTOR-42 E011A VARIATION SELECTOR-43 E011B VARIATION SELECTOR-44 E011C VARIATION SELECTOR-45 E011D VARIATION SELECTOR-46 E011E VARIATION SELECTOR-47 E011F VARIATION SELECTOR-48 E0120 VARIATION SELECTOR-49 E0121 VARIATION SELECTOR-50 E0122 VARIATION SELECTOR-51 E0123 VARIATION SELECTOR-52 E0124 VARIATION SELECTOR-53 E0125 VARIATION SELECTOR-54 E0126 VARIATION SELECTOR-55 E0127 VARIATION SELECTOR-56 E0128 VARIATION SELECTOR-57 E0129 VARIATION SELECTOR-58 E012A VARIATION SELECTOR-59 E012B VARIATION SELECTOR-60 E012C VARIATION SELECTOR-61 E012D VARIATION SELECTOR-62 E012E VARIATION SELECTOR-63 E012F VARIATION SELECTOR-64 E0130 VARIATION SELECTOR-65 E0131 VARIATION SELECTOR-66 E0132 VARIATION SELECTOR-67 E0133 VARIATION SELECTOR-68 E0134 VARIATION SELECTOR-69 E0135 VARIATION SELECTOR-70 E0136 VARIATION SELECTOR-71 E0137 VARIATION SELECTOR-72 E0138 VARIATION SELECTOR-73 E0139 VARIATION SELECTOR-74 E013A VARIATION SELECTOR-75 E013B VARIATION SELECTOR-76 E013C VARIATION SELECTOR-77 E013D VARIATION SELECTOR-78 E013E VARIATION SELECTOR-79 E013F VARIATION SELECTOR-80 E0140 VARIATION SELECTOR-81 E0141 VARIATION SELECTOR-82 E0142 VARIATION SELECTOR-83 E0143 VARIATION SELECTOR-84 E0144 VARIATION SELECTOR-85 E0145 VARIATION SELECTOR-86 E0146 VARIATION SELECTOR-87 E0147 VARIATION SELECTOR-88 E0148 VARIATION SELECTOR-89 E0149 VARIATION SELECTOR-90 E014A VARIATION SELECTOR-91 E014B VARIATION SELECTOR-92 E014C VARIATION SELECTOR-93 E014D VARIATION SELECTOR-94 E014E VARIATION SELECTOR-95 E014F VARIATION SELECTOR-96 E0150 VARIATION SELECTOR-97 E0151 VARIATION SELECTOR-98 E0152 VARIATION SELECTOR-99 E0153 VARIATION SELECTOR-100 E0154 VARIATION SELECTOR-101 E0155 VARIATION SELECTOR-102 E0156 VARIATION SELECTOR-103 E0157 VARIATION SELECTOR-104 E0158 VARIATION SELECTOR-105 E0159 VARIATION SELECTOR-106 E015A VARIATION SELECTOR-107 E015B VARIATION SELECTOR-108 E015C VARIATION SELECTOR-109 E015D VARIATION SELECTOR-110 E015E VARIATION SELECTOR-111 E015F VARIATION SELECTOR-112 E0160 VARIATION SELECTOR-113 E0161 VARIATION SELECTOR-114 E0162 VARIATION SELECTOR-115 E0163 VARIATION SELECTOR-116 E0164 VARIATION SELECTOR-117 E0165 VARIATION SELECTOR-118 E0166 VARIATION SELECTOR-119 E0167 VARIATION SELECTOR-120 E0168 VARIATION SELECTOR-121 E0169 VARIATION SELECTOR-122 E016A VARIATION SELECTOR-123 E016B VARIATION SELECTOR-124 E016C VARIATION SELECTOR-125 E016D VARIATION SELECTOR-126 E016E VARIATION SELECTOR-127 E016F VARIATION SELECTOR-128 E0170 VARIATION SELECTOR-129 E0171 VARIATION SELECTOR-130 E0172 VARIATION SELECTOR-131 E0173 VARIATION SELECTOR-132 E0174 VARIATION SELECTOR-133 E0175 VARIATION SELECTOR-134 E0176 VARIATION SELECTOR-135 E0177 VARIATION SELECTOR-136 E0178 VARIATION SELECTOR-137 E0179 VARIATION SELECTOR-138 E017A VARIATION SELECTOR-139 E017B VARIATION SELECTOR-140 E017C VARIATION SELECTOR-141 E017D VARIATION SELECTOR-142 E017E VARIATION SELECTOR-143 E017F VARIATION SELECTOR-144 E0180 VARIATION SELECTOR-145 E0181 VARIATION SELECTOR-146 E0182 VARIATION SELECTOR-147 E0183 VARIATION SELECTOR-148 E0184 VARIATION SELECTOR-149 E0185 VARIATION SELECTOR-150 E0186 VARIATION SELECTOR-151 E0187 VARIATION SELECTOR-152 E0188 VARIATION SELECTOR-153 E0189 VARIATION SELECTOR-154 E018A VARIATION SELECTOR-155 E018B VARIATION SELECTOR-156 E018C VARIATION SELECTOR-157 E018D VARIATION SELECTOR-158 E018E VARIATION SELECTOR-159 E018F VARIATION SELECTOR-160 E0190 VARIATION SELECTOR-161 E0191 VARIATION SELECTOR-162 E0192 VARIATION SELECTOR-163 E0193 VARIATION SELECTOR-164 E0194 VARIATION SELECTOR-165 E0195 VARIATION SELECTOR-166 E0196 VARIATION SELECTOR-167 E0197 VARIATION SELECTOR-168 E0198 VARIATION SELECTOR-169 E0199 VARIATION SELECTOR-170 E019A VARIATION SELECTOR-171 E019B VARIATION SELECTOR-172 E019C VARIATION SELECTOR-173 E019D VARIATION SELECTOR-174 E019E VARIATION SELECTOR-175 E019F VARIATION SELECTOR-176 E01A0 VARIATION SELECTOR-177 E01A1 VARIATION SELECTOR-178 E01A2 VARIATION SELECTOR-179 E01A3 VARIATION SELECTOR-180 E01A4 VARIATION SELECTOR-181 E01A5 VARIATION SELECTOR-182 E01A6 VARIATION SELECTOR-183 E01A7 VARIATION SELECTOR-184 E01A8 VARIATION SELECTOR-185 E01A9 VARIATION SELECTOR-186 E01AA VARIATION SELECTOR-187 E01AB VARIATION SELECTOR-188 E01AC VARIATION SELECTOR-189 E01AD VARIATION SELECTOR-190 E01AE VARIATION SELECTOR-191 E01AF VARIATION SELECTOR-192 E01B0 VARIATION SELECTOR-193 E01B1 VARIATION SELECTOR-194 E01B2 VARIATION SELECTOR-195 E01B3 VARIATION SELECTOR-196 E01B4 VARIATION SELECTOR-197 E01B5 VARIATION SELECTOR-198 E01B6 VARIATION SELECTOR-199 E01B7 VARIATION SELECTOR-200 E01B8 VARIATION SELECTOR-201 E01B9 VARIATION SELECTOR-202 E01BA VARIATION SELECTOR-203 E01BB VARIATION SELECTOR-204 E01BC VARIATION SELECTOR-205 E01BD VARIATION SELECTOR-206 E01BE VARIATION SELECTOR-207 E01BF VARIATION SELECTOR-208 E01C0 VARIATION SELECTOR-209 E01C1 VARIATION SELECTOR-210 E01C2 VARIATION SELECTOR-211 E01C3 VARIATION SELECTOR-212 E01C4 VARIATION SELECTOR-213 E01C5 VARIATION SELECTOR-214 E01C6 VARIATION SELECTOR-215 E01C7 VARIATION SELECTOR-216 E01C8 VARIATION SELECTOR-217 E01C9 VARIATION SELECTOR-218 E01CA VARIATION SELECTOR-219 E01CB VARIATION SELECTOR-220 E01CC VARIATION SELECTOR-221 E01CD VARIATION SELECTOR-222 E01CE VARIATION SELECTOR-223 E01CF VARIATION SELECTOR-224 E01D0 VARIATION SELECTOR-225 E01D1 VARIATION SELECTOR-226 E01D2 VARIATION SELECTOR-227 E01D3 VARIATION SELECTOR-228 E01D4 VARIATION SELECTOR-229 E01D5 VARIATION SELECTOR-230 E01D6 VARIATION SELECTOR-231 E01D7 VARIATION SELECTOR-232 E01D8 VARIATION SELECTOR-233 E01D9 VARIATION SELECTOR-234 E01DA VARIATION SELECTOR-235 E01DB VARIATION SELECTOR-236 E01DC VARIATION SELECTOR-237 E01DD VARIATION SELECTOR-238 E01DE VARIATION SELECTOR-239 E01DF VARIATION SELECTOR-240 E01E0 VARIATION SELECTOR-241 E01E1 VARIATION SELECTOR-242 E01E2 VARIATION SELECTOR-243 E01E3 VARIATION SELECTOR-244 E01E4 VARIATION SELECTOR-245 E01E5 VARIATION SELECTOR-246 E01E6 VARIATION SELECTOR-247 E01E7 VARIATION SELECTOR-248 E01E8 VARIATION SELECTOR-249 E01E9 VARIATION SELECTOR-250 E01EA VARIATION SELECTOR-251 E01EB VARIATION SELECTOR-252 E01EC VARIATION SELECTOR-253 E01ED VARIATION SELECTOR-254 E01EE VARIATION SELECTOR-255 E01EF VARIATION SELECTOR-256 @@ EFF80 Unassigned EFFFF @ Noncharacters @+ These codes are intended for process-internal uses. EFFFE EFFFF @@ FFF80 Supplementary Private Use Area-A FFFFF @+ The entire plane is dedicated to private use with the exception of the last two code points. @ Noncharacters @+ These codes are intended for process-internal uses. FFFFE FFFFF @@ 10FF80 Supplementary Private Use Area-B 10FFFF @+ The entire plane is dedicated to private use with the exception of the last two code points. @ Noncharacters @+ These codes are intended for process-internal uses. 10FFFE 10FFFF nototools-2017-09-25-tooling-for-phase3-update/third_party/ucd/PropertyValueAliases.txt000066400000000000000000002057431316231664500310670ustar00rootroot00000000000000# PropertyValueAliases-9.0.0.txt # Date: 2016-02-09, 18:49:19 GMT # © 2016 Unicode®, Inc. # For terms of use, see http://www.unicode.org/terms_of_use.html # # Unicode Character Database # For documentation, see http://www.unicode.org/reports/tr44/ # # This file contains aliases for property values used in the UCD. # These names can be used for XML formats of UCD data, for regular-expression # property tests, and other programmatic textual descriptions of Unicode data. # # The names may be translated in appropriate environments, and additional # aliases may be useful. # # FORMAT # # Each line describes a property value name. # This consists of three or more fields, separated by semicolons. # # First Field: The first field describes the property for which that # property value name is used. # # Second Field: The second field is an abbreviated name. # # Third Field: The third field is a long name. # # In the case of ccc, there are 4 fields. The second field is numeric, third # is abbreviated, and fourth is long. # # The above are the preferred aliases. Other aliases may be listed in additional fields. # # Loose matching should be applied to all property names and property values, with # the exception of String Property values. With loose matching of property names and # values, the case distinctions, whitespace, hyphens, and '_' are ignored. # For Numeric Property values, numeric equivalence is applied: thus "01.00" # is equivalent to "1". # # NOTE: Property value names are NOT unique across properties. For example: # # AL means Arabic Letter for the Bidi_Class property, and # AL means Above_Left for the Canonical_Combining_Class property, and # AL means Alphabetic for the Line_Break property. # # In addition, some property names may be the same as some property value names. # For example: # # sc means the Script property, and # Sc means the General_Category property value Currency_Symbol (Sc) # # The combination of property value and property name is, however, unique. # # For more information, see UTS #18: Unicode Regular Expressions # ================================================ # ASCII_Hex_Digit (AHex) AHex; N ; No ; F ; False AHex; Y ; Yes ; T ; True # Age (age) age; 1.1 ; V1_1 age; 2.0 ; V2_0 age; 2.1 ; V2_1 age; 3.0 ; V3_0 age; 3.1 ; V3_1 age; 3.2 ; V3_2 age; 4.0 ; V4_0 age; 4.1 ; V4_1 age; 5.0 ; V5_0 age; 5.1 ; V5_1 age; 5.2 ; V5_2 age; 6.0 ; V6_0 age; 6.1 ; V6_1 age; 6.2 ; V6_2 age; 6.3 ; V6_3 age; 7.0 ; V7_0 age; 8.0 ; V8_0 age; 9.0 ; V9_0 age; NA ; Unassigned # Alphabetic (Alpha) Alpha; N ; No ; F ; False Alpha; Y ; Yes ; T ; True # Bidi_Class (bc) bc ; AL ; Arabic_Letter bc ; AN ; Arabic_Number bc ; B ; Paragraph_Separator bc ; BN ; Boundary_Neutral bc ; CS ; Common_Separator bc ; EN ; European_Number bc ; ES ; European_Separator bc ; ET ; European_Terminator bc ; FSI ; First_Strong_Isolate bc ; L ; Left_To_Right bc ; LRE ; Left_To_Right_Embedding bc ; LRI ; Left_To_Right_Isolate bc ; LRO ; Left_To_Right_Override bc ; NSM ; Nonspacing_Mark bc ; ON ; Other_Neutral bc ; PDF ; Pop_Directional_Format bc ; PDI ; Pop_Directional_Isolate bc ; R ; Right_To_Left bc ; RLE ; Right_To_Left_Embedding bc ; RLI ; Right_To_Left_Isolate bc ; RLO ; Right_To_Left_Override bc ; S ; Segment_Separator bc ; WS ; White_Space # Bidi_Control (Bidi_C) Bidi_C; N ; No ; F ; False Bidi_C; Y ; Yes ; T ; True # Bidi_Mirrored (Bidi_M) Bidi_M; N ; No ; F ; False Bidi_M; Y ; Yes ; T ; True # Bidi_Mirroring_Glyph (bmg) # @missing: 0000..10FFFF; Bidi_Mirroring_Glyph; # Bidi_Paired_Bracket (bpb) # @missing: 0000..10FFFF; Bidi_Paired_Bracket; # Bidi_Paired_Bracket_Type (bpt) bpt; c ; Close bpt; n ; None bpt; o ; Open # @missing: 0000..10FFFF; Bidi_Paired_Bracket_Type; n # Block (blk) blk; Adlam ; Adlam blk; Aegean_Numbers ; Aegean_Numbers blk; Ahom ; Ahom blk; Alchemical ; Alchemical_Symbols blk; Alphabetic_PF ; Alphabetic_Presentation_Forms blk; Anatolian_Hieroglyphs ; Anatolian_Hieroglyphs blk; Ancient_Greek_Music ; Ancient_Greek_Musical_Notation blk; Ancient_Greek_Numbers ; Ancient_Greek_Numbers blk; Ancient_Symbols ; Ancient_Symbols blk; Arabic ; Arabic blk; Arabic_Ext_A ; Arabic_Extended_A blk; Arabic_Math ; Arabic_Mathematical_Alphabetic_Symbols blk; Arabic_PF_A ; Arabic_Presentation_Forms_A ; Arabic_Presentation_Forms-A blk; Arabic_PF_B ; Arabic_Presentation_Forms_B blk; Arabic_Sup ; Arabic_Supplement blk; Armenian ; Armenian blk; Arrows ; Arrows blk; ASCII ; Basic_Latin blk; Avestan ; Avestan blk; Balinese ; Balinese blk; Bamum ; Bamum blk; Bamum_Sup ; Bamum_Supplement blk; Bassa_Vah ; Bassa_Vah blk; Batak ; Batak blk; Bengali ; Bengali blk; Bhaiksuki ; Bhaiksuki blk; Block_Elements ; Block_Elements blk; Bopomofo ; Bopomofo blk; Bopomofo_Ext ; Bopomofo_Extended blk; Box_Drawing ; Box_Drawing blk; Brahmi ; Brahmi blk; Braille ; Braille_Patterns blk; Buginese ; Buginese blk; Buhid ; Buhid blk; Byzantine_Music ; Byzantine_Musical_Symbols blk; Carian ; Carian blk; Caucasian_Albanian ; Caucasian_Albanian blk; Chakma ; Chakma blk; Cham ; Cham blk; Cherokee ; Cherokee blk; Cherokee_Sup ; Cherokee_Supplement blk; CJK ; CJK_Unified_Ideographs blk; CJK_Compat ; CJK_Compatibility blk; CJK_Compat_Forms ; CJK_Compatibility_Forms blk; CJK_Compat_Ideographs ; CJK_Compatibility_Ideographs blk; CJK_Compat_Ideographs_Sup ; CJK_Compatibility_Ideographs_Supplement blk; CJK_Ext_A ; CJK_Unified_Ideographs_Extension_A blk; CJK_Ext_B ; CJK_Unified_Ideographs_Extension_B blk; CJK_Ext_C ; CJK_Unified_Ideographs_Extension_C blk; CJK_Ext_D ; CJK_Unified_Ideographs_Extension_D blk; CJK_Ext_E ; CJK_Unified_Ideographs_Extension_E blk; CJK_Radicals_Sup ; CJK_Radicals_Supplement blk; CJK_Strokes ; CJK_Strokes blk; CJK_Symbols ; CJK_Symbols_And_Punctuation blk; Compat_Jamo ; Hangul_Compatibility_Jamo blk; Control_Pictures ; Control_Pictures blk; Coptic ; Coptic blk; Coptic_Epact_Numbers ; Coptic_Epact_Numbers blk; Counting_Rod ; Counting_Rod_Numerals blk; Cuneiform ; Cuneiform blk; Cuneiform_Numbers ; Cuneiform_Numbers_And_Punctuation blk; Currency_Symbols ; Currency_Symbols blk; Cypriot_Syllabary ; Cypriot_Syllabary blk; Cyrillic ; Cyrillic blk; Cyrillic_Ext_A ; Cyrillic_Extended_A blk; Cyrillic_Ext_B ; Cyrillic_Extended_B blk; Cyrillic_Ext_C ; Cyrillic_Extended_C blk; Cyrillic_Sup ; Cyrillic_Supplement ; Cyrillic_Supplementary blk; Deseret ; Deseret blk; Devanagari ; Devanagari blk; Devanagari_Ext ; Devanagari_Extended blk; Diacriticals ; Combining_Diacritical_Marks blk; Diacriticals_Ext ; Combining_Diacritical_Marks_Extended blk; Diacriticals_For_Symbols ; Combining_Diacritical_Marks_For_Symbols; Combining_Marks_For_Symbols blk; Diacriticals_Sup ; Combining_Diacritical_Marks_Supplement blk; Dingbats ; Dingbats blk; Domino ; Domino_Tiles blk; Duployan ; Duployan blk; Early_Dynastic_Cuneiform ; Early_Dynastic_Cuneiform blk; Egyptian_Hieroglyphs ; Egyptian_Hieroglyphs blk; Elbasan ; Elbasan blk; Emoticons ; Emoticons blk; Enclosed_Alphanum ; Enclosed_Alphanumerics blk; Enclosed_Alphanum_Sup ; Enclosed_Alphanumeric_Supplement blk; Enclosed_CJK ; Enclosed_CJK_Letters_And_Months blk; Enclosed_Ideographic_Sup ; Enclosed_Ideographic_Supplement blk; Ethiopic ; Ethiopic blk; Ethiopic_Ext ; Ethiopic_Extended blk; Ethiopic_Ext_A ; Ethiopic_Extended_A blk; Ethiopic_Sup ; Ethiopic_Supplement blk; Geometric_Shapes ; Geometric_Shapes blk; Geometric_Shapes_Ext ; Geometric_Shapes_Extended blk; Georgian ; Georgian blk; Georgian_Sup ; Georgian_Supplement blk; Glagolitic ; Glagolitic blk; Glagolitic_Sup ; Glagolitic_Supplement blk; Gothic ; Gothic blk; Grantha ; Grantha blk; Greek ; Greek_And_Coptic blk; Greek_Ext ; Greek_Extended blk; Gujarati ; Gujarati blk; Gurmukhi ; Gurmukhi blk; Half_And_Full_Forms ; Halfwidth_And_Fullwidth_Forms blk; Half_Marks ; Combining_Half_Marks blk; Hangul ; Hangul_Syllables blk; Hanunoo ; Hanunoo blk; Hatran ; Hatran blk; Hebrew ; Hebrew blk; High_PU_Surrogates ; High_Private_Use_Surrogates blk; High_Surrogates ; High_Surrogates blk; Hiragana ; Hiragana blk; IDC ; Ideographic_Description_Characters blk; Ideographic_Symbols ; Ideographic_Symbols_And_Punctuation blk; Imperial_Aramaic ; Imperial_Aramaic blk; Indic_Number_Forms ; Common_Indic_Number_Forms blk; Inscriptional_Pahlavi ; Inscriptional_Pahlavi blk; Inscriptional_Parthian ; Inscriptional_Parthian blk; IPA_Ext ; IPA_Extensions blk; Jamo ; Hangul_Jamo blk; Jamo_Ext_A ; Hangul_Jamo_Extended_A blk; Jamo_Ext_B ; Hangul_Jamo_Extended_B blk; Javanese ; Javanese blk; Kaithi ; Kaithi blk; Kana_Sup ; Kana_Supplement blk; Kanbun ; Kanbun blk; Kangxi ; Kangxi_Radicals blk; Kannada ; Kannada blk; Katakana ; Katakana blk; Katakana_Ext ; Katakana_Phonetic_Extensions blk; Kayah_Li ; Kayah_Li blk; Kharoshthi ; Kharoshthi blk; Khmer ; Khmer blk; Khmer_Symbols ; Khmer_Symbols blk; Khojki ; Khojki blk; Khudawadi ; Khudawadi blk; Lao ; Lao blk; Latin_1_Sup ; Latin_1_Supplement ; Latin_1 blk; Latin_Ext_A ; Latin_Extended_A blk; Latin_Ext_Additional ; Latin_Extended_Additional blk; Latin_Ext_B ; Latin_Extended_B blk; Latin_Ext_C ; Latin_Extended_C blk; Latin_Ext_D ; Latin_Extended_D blk; Latin_Ext_E ; Latin_Extended_E blk; Lepcha ; Lepcha blk; Letterlike_Symbols ; Letterlike_Symbols blk; Limbu ; Limbu blk; Linear_A ; Linear_A blk; Linear_B_Ideograms ; Linear_B_Ideograms blk; Linear_B_Syllabary ; Linear_B_Syllabary blk; Lisu ; Lisu blk; Low_Surrogates ; Low_Surrogates blk; Lycian ; Lycian blk; Lydian ; Lydian blk; Mahajani ; Mahajani blk; Mahjong ; Mahjong_Tiles blk; Malayalam ; Malayalam blk; Mandaic ; Mandaic blk; Manichaean ; Manichaean blk; Marchen ; Marchen blk; Math_Alphanum ; Mathematical_Alphanumeric_Symbols blk; Math_Operators ; Mathematical_Operators blk; Meetei_Mayek ; Meetei_Mayek blk; Meetei_Mayek_Ext ; Meetei_Mayek_Extensions blk; Mende_Kikakui ; Mende_Kikakui blk; Meroitic_Cursive ; Meroitic_Cursive blk; Meroitic_Hieroglyphs ; Meroitic_Hieroglyphs blk; Miao ; Miao blk; Misc_Arrows ; Miscellaneous_Symbols_And_Arrows blk; Misc_Math_Symbols_A ; Miscellaneous_Mathematical_Symbols_A blk; Misc_Math_Symbols_B ; Miscellaneous_Mathematical_Symbols_B blk; Misc_Pictographs ; Miscellaneous_Symbols_And_Pictographs blk; Misc_Symbols ; Miscellaneous_Symbols blk; Misc_Technical ; Miscellaneous_Technical blk; Modi ; Modi blk; Modifier_Letters ; Spacing_Modifier_Letters blk; Modifier_Tone_Letters ; Modifier_Tone_Letters blk; Mongolian ; Mongolian blk; Mongolian_Sup ; Mongolian_Supplement blk; Mro ; Mro blk; Multani ; Multani blk; Music ; Musical_Symbols blk; Myanmar ; Myanmar blk; Myanmar_Ext_A ; Myanmar_Extended_A blk; Myanmar_Ext_B ; Myanmar_Extended_B blk; Nabataean ; Nabataean blk; NB ; No_Block blk; New_Tai_Lue ; New_Tai_Lue blk; Newa ; Newa blk; NKo ; NKo blk; Number_Forms ; Number_Forms blk; OCR ; Optical_Character_Recognition blk; Ogham ; Ogham blk; Ol_Chiki ; Ol_Chiki blk; Old_Hungarian ; Old_Hungarian blk; Old_Italic ; Old_Italic blk; Old_North_Arabian ; Old_North_Arabian blk; Old_Permic ; Old_Permic blk; Old_Persian ; Old_Persian blk; Old_South_Arabian ; Old_South_Arabian blk; Old_Turkic ; Old_Turkic blk; Oriya ; Oriya blk; Ornamental_Dingbats ; Ornamental_Dingbats blk; Osage ; Osage blk; Osmanya ; Osmanya blk; Pahawh_Hmong ; Pahawh_Hmong blk; Palmyrene ; Palmyrene blk; Pau_Cin_Hau ; Pau_Cin_Hau blk; Phags_Pa ; Phags_Pa blk; Phaistos ; Phaistos_Disc blk; Phoenician ; Phoenician blk; Phonetic_Ext ; Phonetic_Extensions blk; Phonetic_Ext_Sup ; Phonetic_Extensions_Supplement blk; Playing_Cards ; Playing_Cards blk; Psalter_Pahlavi ; Psalter_Pahlavi blk; PUA ; Private_Use_Area ; Private_Use blk; Punctuation ; General_Punctuation blk; Rejang ; Rejang blk; Rumi ; Rumi_Numeral_Symbols blk; Runic ; Runic blk; Samaritan ; Samaritan blk; Saurashtra ; Saurashtra blk; Sharada ; Sharada blk; Shavian ; Shavian blk; Shorthand_Format_Controls ; Shorthand_Format_Controls blk; Siddham ; Siddham blk; Sinhala ; Sinhala blk; Sinhala_Archaic_Numbers ; Sinhala_Archaic_Numbers blk; Small_Forms ; Small_Form_Variants blk; Sora_Sompeng ; Sora_Sompeng blk; Specials ; Specials blk; Sundanese ; Sundanese blk; Sundanese_Sup ; Sundanese_Supplement blk; Sup_Arrows_A ; Supplemental_Arrows_A blk; Sup_Arrows_B ; Supplemental_Arrows_B blk; Sup_Arrows_C ; Supplemental_Arrows_C blk; Sup_Math_Operators ; Supplemental_Mathematical_Operators blk; Sup_PUA_A ; Supplementary_Private_Use_Area_A blk; Sup_PUA_B ; Supplementary_Private_Use_Area_B blk; Sup_Punctuation ; Supplemental_Punctuation blk; Sup_Symbols_And_Pictographs ; Supplemental_Symbols_And_Pictographs blk; Super_And_Sub ; Superscripts_And_Subscripts blk; Sutton_SignWriting ; Sutton_SignWriting blk; Syloti_Nagri ; Syloti_Nagri blk; Syriac ; Syriac blk; Tagalog ; Tagalog blk; Tagbanwa ; Tagbanwa blk; Tags ; Tags blk; Tai_Le ; Tai_Le blk; Tai_Tham ; Tai_Tham blk; Tai_Viet ; Tai_Viet blk; Tai_Xuan_Jing ; Tai_Xuan_Jing_Symbols blk; Takri ; Takri blk; Tamil ; Tamil blk; Tangut ; Tangut blk; Tangut_Components ; Tangut_Components blk; Telugu ; Telugu blk; Thaana ; Thaana blk; Thai ; Thai blk; Tibetan ; Tibetan blk; Tifinagh ; Tifinagh blk; Tirhuta ; Tirhuta blk; Transport_And_Map ; Transport_And_Map_Symbols blk; UCAS ; Unified_Canadian_Aboriginal_Syllabics; Canadian_Syllabics blk; UCAS_Ext ; Unified_Canadian_Aboriginal_Syllabics_Extended blk; Ugaritic ; Ugaritic blk; Vai ; Vai blk; Vedic_Ext ; Vedic_Extensions blk; Vertical_Forms ; Vertical_Forms blk; VS ; Variation_Selectors blk; VS_Sup ; Variation_Selectors_Supplement blk; Warang_Citi ; Warang_Citi blk; Yi_Radicals ; Yi_Radicals blk; Yi_Syllables ; Yi_Syllables blk; Yijing ; Yijing_Hexagram_Symbols # Canonical_Combining_Class (ccc) ccc; 0; NR ; Not_Reordered ccc; 1; OV ; Overlay ccc; 7; NK ; Nukta ccc; 8; KV ; Kana_Voicing ccc; 9; VR ; Virama ccc; 10; CCC10 ; CCC10 ccc; 11; CCC11 ; CCC11 ccc; 12; CCC12 ; CCC12 ccc; 13; CCC13 ; CCC13 ccc; 14; CCC14 ; CCC14 ccc; 15; CCC15 ; CCC15 ccc; 16; CCC16 ; CCC16 ccc; 17; CCC17 ; CCC17 ccc; 18; CCC18 ; CCC18 ccc; 19; CCC19 ; CCC19 ccc; 20; CCC20 ; CCC20 ccc; 21; CCC21 ; CCC21 ccc; 22; CCC22 ; CCC22 ccc; 23; CCC23 ; CCC23 ccc; 24; CCC24 ; CCC24 ccc; 25; CCC25 ; CCC25 ccc; 26; CCC26 ; CCC26 ccc; 27; CCC27 ; CCC27 ccc; 28; CCC28 ; CCC28 ccc; 29; CCC29 ; CCC29 ccc; 30; CCC30 ; CCC30 ccc; 31; CCC31 ; CCC31 ccc; 32; CCC32 ; CCC32 ccc; 33; CCC33 ; CCC33 ccc; 34; CCC34 ; CCC34 ccc; 35; CCC35 ; CCC35 ccc; 36; CCC36 ; CCC36 ccc; 84; CCC84 ; CCC84 ccc; 91; CCC91 ; CCC91 ccc; 103; CCC103 ; CCC103 ccc; 107; CCC107 ; CCC107 ccc; 118; CCC118 ; CCC118 ccc; 122; CCC122 ; CCC122 ccc; 129; CCC129 ; CCC129 ccc; 130; CCC130 ; CCC130 ccc; 132; CCC132 ; CCC132 ccc; 133; CCC133 ; CCC133 # RESERVED ccc; 200; ATBL ; Attached_Below_Left ccc; 202; ATB ; Attached_Below ccc; 214; ATA ; Attached_Above ccc; 216; ATAR ; Attached_Above_Right ccc; 218; BL ; Below_Left ccc; 220; B ; Below ccc; 222; BR ; Below_Right ccc; 224; L ; Left ccc; 226; R ; Right ccc; 228; AL ; Above_Left ccc; 230; A ; Above ccc; 232; AR ; Above_Right ccc; 233; DB ; Double_Below ccc; 234; DA ; Double_Above ccc; 240; IS ; Iota_Subscript # Case_Folding (cf) # @missing: 0000..10FFFF; Case_Folding; # Case_Ignorable (CI) CI ; N ; No ; F ; False CI ; Y ; Yes ; T ; True # Cased (Cased) Cased; N ; No ; F ; False Cased; Y ; Yes ; T ; True # Changes_When_Casefolded (CWCF) CWCF; N ; No ; F ; False CWCF; Y ; Yes ; T ; True # Changes_When_Casemapped (CWCM) CWCM; N ; No ; F ; False CWCM; Y ; Yes ; T ; True # Changes_When_Lowercased (CWL) CWL; N ; No ; F ; False CWL; Y ; Yes ; T ; True # Changes_When_NFKC_Casefolded (CWKCF) CWKCF; N ; No ; F ; False CWKCF; Y ; Yes ; T ; True # Changes_When_Titlecased (CWT) CWT; N ; No ; F ; False CWT; Y ; Yes ; T ; True # Changes_When_Uppercased (CWU) CWU; N ; No ; F ; False CWU; Y ; Yes ; T ; True # Composition_Exclusion (CE) CE ; N ; No ; F ; False CE ; Y ; Yes ; T ; True # Dash (Dash) Dash; N ; No ; F ; False Dash; Y ; Yes ; T ; True # Decomposition_Mapping (dm) # @missing: 0000..10FFFF; Decomposition_Mapping; # Decomposition_Type (dt) dt ; Can ; Canonical ; can dt ; Com ; Compat ; com dt ; Enc ; Circle ; enc dt ; Fin ; Final ; fin dt ; Font ; Font ; font dt ; Fra ; Fraction ; fra dt ; Init ; Initial ; init dt ; Iso ; Isolated ; iso dt ; Med ; Medial ; med dt ; Nar ; Narrow ; nar dt ; Nb ; Nobreak ; nb dt ; None ; None ; none dt ; Sml ; Small ; sml dt ; Sqr ; Square ; sqr dt ; Sub ; Sub ; sub dt ; Sup ; Super ; sup dt ; Vert ; Vertical ; vert dt ; Wide ; Wide ; wide # Default_Ignorable_Code_Point (DI) DI ; N ; No ; F ; False DI ; Y ; Yes ; T ; True # Deprecated (Dep) Dep; N ; No ; F ; False Dep; Y ; Yes ; T ; True # Diacritic (Dia) Dia; N ; No ; F ; False Dia; Y ; Yes ; T ; True # East_Asian_Width (ea) ea ; A ; Ambiguous ea ; F ; Fullwidth ea ; H ; Halfwidth ea ; N ; Neutral ea ; Na ; Narrow ea ; W ; Wide # Expands_On_NFC (XO_NFC) XO_NFC; N ; No ; F ; False XO_NFC; Y ; Yes ; T ; True # Expands_On_NFD (XO_NFD) XO_NFD; N ; No ; F ; False XO_NFD; Y ; Yes ; T ; True # Expands_On_NFKC (XO_NFKC) XO_NFKC; N ; No ; F ; False XO_NFKC; Y ; Yes ; T ; True # Expands_On_NFKD (XO_NFKD) XO_NFKD; N ; No ; F ; False XO_NFKD; Y ; Yes ; T ; True # Extender (Ext) Ext; N ; No ; F ; False Ext; Y ; Yes ; T ; True # FC_NFKC_Closure (FC_NFKC) # @missing: 0000..10FFFF; FC_NFKC_Closure; # Full_Composition_Exclusion (Comp_Ex) Comp_Ex; N ; No ; F ; False Comp_Ex; Y ; Yes ; T ; True # General_Category (gc) gc ; C ; Other # Cc | Cf | Cn | Co | Cs gc ; Cc ; Control ; cntrl gc ; Cf ; Format gc ; Cn ; Unassigned gc ; Co ; Private_Use gc ; Cs ; Surrogate gc ; L ; Letter # Ll | Lm | Lo | Lt | Lu gc ; LC ; Cased_Letter # Ll | Lt | Lu gc ; Ll ; Lowercase_Letter gc ; Lm ; Modifier_Letter gc ; Lo ; Other_Letter gc ; Lt ; Titlecase_Letter gc ; Lu ; Uppercase_Letter gc ; M ; Mark ; Combining_Mark # Mc | Me | Mn gc ; Mc ; Spacing_Mark gc ; Me ; Enclosing_Mark gc ; Mn ; Nonspacing_Mark gc ; N ; Number # Nd | Nl | No gc ; Nd ; Decimal_Number ; digit gc ; Nl ; Letter_Number gc ; No ; Other_Number gc ; P ; Punctuation ; punct # Pc | Pd | Pe | Pf | Pi | Po | Ps gc ; Pc ; Connector_Punctuation gc ; Pd ; Dash_Punctuation gc ; Pe ; Close_Punctuation gc ; Pf ; Final_Punctuation gc ; Pi ; Initial_Punctuation gc ; Po ; Other_Punctuation gc ; Ps ; Open_Punctuation gc ; S ; Symbol # Sc | Sk | Sm | So gc ; Sc ; Currency_Symbol gc ; Sk ; Modifier_Symbol gc ; Sm ; Math_Symbol gc ; So ; Other_Symbol gc ; Z ; Separator # Zl | Zp | Zs gc ; Zl ; Line_Separator gc ; Zp ; Paragraph_Separator gc ; Zs ; Space_Separator # @missing: 0000..10FFFF; General_Category; Unassigned # Grapheme_Base (Gr_Base) Gr_Base; N ; No ; F ; False Gr_Base; Y ; Yes ; T ; True # Grapheme_Cluster_Break (GCB) GCB; CN ; Control GCB; CR ; CR GCB; EB ; E_Base GCB; EM ; E_Modifier GCB; EX ; Extend GCB; GAZ ; Glue_After_Zwj GCB; L ; L GCB; LF ; LF GCB; LV ; LV GCB; LVT ; LVT GCB; PP ; Prepend GCB; RI ; Regional_Indicator GCB; SM ; SpacingMark GCB; T ; T GCB; V ; V GCB; XX ; Other GCB; ZWJ ; ZWJ # Grapheme_Extend (Gr_Ext) Gr_Ext; N ; No ; F ; False Gr_Ext; Y ; Yes ; T ; True # Grapheme_Link (Gr_Link) Gr_Link; N ; No ; F ; False Gr_Link; Y ; Yes ; T ; True # Hangul_Syllable_Type (hst) hst; L ; Leading_Jamo hst; LV ; LV_Syllable hst; LVT ; LVT_Syllable hst; NA ; Not_Applicable hst; T ; Trailing_Jamo hst; V ; Vowel_Jamo # Hex_Digit (Hex) Hex; N ; No ; F ; False Hex; Y ; Yes ; T ; True # Hyphen (Hyphen) Hyphen; N ; No ; F ; False Hyphen; Y ; Yes ; T ; True # IDS_Binary_Operator (IDSB) IDSB; N ; No ; F ; False IDSB; Y ; Yes ; T ; True # IDS_Trinary_Operator (IDST) IDST; N ; No ; F ; False IDST; Y ; Yes ; T ; True # ID_Continue (IDC) IDC; N ; No ; F ; False IDC; Y ; Yes ; T ; True # ID_Start (IDS) IDS; N ; No ; F ; False IDS; Y ; Yes ; T ; True # ISO_Comment (isc) # @missing: 0000..10FFFF; ISO_Comment; # Ideographic (Ideo) Ideo; N ; No ; F ; False Ideo; Y ; Yes ; T ; True # Indic_Positional_Category (InPC) InPC; Bottom ; Bottom InPC; Bottom_And_Right ; Bottom_And_Right InPC; Left ; Left InPC; Left_And_Right ; Left_And_Right InPC; NA ; NA InPC; Overstruck ; Overstruck InPC; Right ; Right InPC; Top ; Top InPC; Top_And_Bottom ; Top_And_Bottom InPC; Top_And_Bottom_And_Right ; Top_And_Bottom_And_Right InPC; Top_And_Left ; Top_And_Left InPC; Top_And_Left_And_Right ; Top_And_Left_And_Right InPC; Top_And_Right ; Top_And_Right InPC; Visual_Order_Left ; Visual_Order_Left # Indic_Syllabic_Category (InSC) InSC; Avagraha ; Avagraha InSC; Bindu ; Bindu InSC; Brahmi_Joining_Number ; Brahmi_Joining_Number InSC; Cantillation_Mark ; Cantillation_Mark InSC; Consonant ; Consonant InSC; Consonant_Dead ; Consonant_Dead InSC; Consonant_Final ; Consonant_Final InSC; Consonant_Head_Letter ; Consonant_Head_Letter InSC; Consonant_Killer ; Consonant_Killer InSC; Consonant_Medial ; Consonant_Medial InSC; Consonant_Placeholder ; Consonant_Placeholder InSC; Consonant_Preceding_Repha ; Consonant_Preceding_Repha InSC; Consonant_Prefixed ; Consonant_Prefixed InSC; Consonant_Subjoined ; Consonant_Subjoined InSC; Consonant_Succeeding_Repha ; Consonant_Succeeding_Repha InSC; Consonant_With_Stacker ; Consonant_With_Stacker InSC; Gemination_Mark ; Gemination_Mark InSC; Invisible_Stacker ; Invisible_Stacker InSC; Joiner ; Joiner InSC; Modifying_Letter ; Modifying_Letter InSC; Non_Joiner ; Non_Joiner InSC; Nukta ; Nukta InSC; Number ; Number InSC; Number_Joiner ; Number_Joiner InSC; Other ; Other InSC; Pure_Killer ; Pure_Killer InSC; Register_Shifter ; Register_Shifter InSC; Syllable_Modifier ; Syllable_Modifier InSC; Tone_Letter ; Tone_Letter InSC; Tone_Mark ; Tone_Mark InSC; Virama ; Virama InSC; Visarga ; Visarga InSC; Vowel ; Vowel InSC; Vowel_Dependent ; Vowel_Dependent InSC; Vowel_Independent ; Vowel_Independent # Jamo_Short_Name (JSN) JSN; A ; A JSN; AE ; AE JSN; B ; B JSN; BB ; BB JSN; BS ; BS JSN; C ; C JSN; D ; D JSN; DD ; DD JSN; E ; E JSN; EO ; EO JSN; EU ; EU JSN; G ; G JSN; GG ; GG JSN; GS ; GS JSN; H ; H JSN; I ; I JSN; J ; J JSN; JJ ; JJ JSN; K ; K JSN; L ; L JSN; LB ; LB JSN; LG ; LG JSN; LH ; LH JSN; LM ; LM JSN; LP ; LP JSN; LS ; LS JSN; LT ; LT JSN; M ; M JSN; N ; N JSN; NG ; NG JSN; NH ; NH JSN; NJ ; NJ JSN; O ; O JSN; OE ; OE JSN; P ; P JSN; R ; R JSN; S ; S JSN; SS ; SS JSN; T ; T JSN; U ; U JSN; WA ; WA JSN; WAE ; WAE JSN; WE ; WE JSN; WEO ; WEO JSN; WI ; WI JSN; YA ; YA JSN; YAE ; YAE JSN; YE ; YE JSN; YEO ; YEO JSN; YI ; YI JSN; YO ; YO JSN; YU ; YU # @missing: 0000..10FFFF; Jamo_Short_Name; # Join_Control (Join_C) Join_C; N ; No ; F ; False Join_C; Y ; Yes ; T ; True # Joining_Group (jg) jg ; African_Feh ; African_Feh jg ; African_Noon ; African_Noon jg ; African_Qaf ; African_Qaf jg ; Ain ; Ain jg ; Alaph ; Alaph jg ; Alef ; Alef jg ; Beh ; Beh jg ; Beth ; Beth jg ; Burushaski_Yeh_Barree ; Burushaski_Yeh_Barree jg ; Dal ; Dal jg ; Dalath_Rish ; Dalath_Rish jg ; E ; E jg ; Farsi_Yeh ; Farsi_Yeh jg ; Fe ; Fe jg ; Feh ; Feh jg ; Final_Semkath ; Final_Semkath jg ; Gaf ; Gaf jg ; Gamal ; Gamal jg ; Hah ; Hah jg ; He ; He jg ; Heh ; Heh jg ; Heh_Goal ; Heh_Goal jg ; Heth ; Heth jg ; Kaf ; Kaf jg ; Kaph ; Kaph jg ; Khaph ; Khaph jg ; Knotted_Heh ; Knotted_Heh jg ; Lam ; Lam jg ; Lamadh ; Lamadh jg ; Manichaean_Aleph ; Manichaean_Aleph jg ; Manichaean_Ayin ; Manichaean_Ayin jg ; Manichaean_Beth ; Manichaean_Beth jg ; Manichaean_Daleth ; Manichaean_Daleth jg ; Manichaean_Dhamedh ; Manichaean_Dhamedh jg ; Manichaean_Five ; Manichaean_Five jg ; Manichaean_Gimel ; Manichaean_Gimel jg ; Manichaean_Heth ; Manichaean_Heth jg ; Manichaean_Hundred ; Manichaean_Hundred jg ; Manichaean_Kaph ; Manichaean_Kaph jg ; Manichaean_Lamedh ; Manichaean_Lamedh jg ; Manichaean_Mem ; Manichaean_Mem jg ; Manichaean_Nun ; Manichaean_Nun jg ; Manichaean_One ; Manichaean_One jg ; Manichaean_Pe ; Manichaean_Pe jg ; Manichaean_Qoph ; Manichaean_Qoph jg ; Manichaean_Resh ; Manichaean_Resh jg ; Manichaean_Sadhe ; Manichaean_Sadhe jg ; Manichaean_Samekh ; Manichaean_Samekh jg ; Manichaean_Taw ; Manichaean_Taw jg ; Manichaean_Ten ; Manichaean_Ten jg ; Manichaean_Teth ; Manichaean_Teth jg ; Manichaean_Thamedh ; Manichaean_Thamedh jg ; Manichaean_Twenty ; Manichaean_Twenty jg ; Manichaean_Waw ; Manichaean_Waw jg ; Manichaean_Yodh ; Manichaean_Yodh jg ; Manichaean_Zayin ; Manichaean_Zayin jg ; Meem ; Meem jg ; Mim ; Mim jg ; No_Joining_Group ; No_Joining_Group jg ; Noon ; Noon jg ; Nun ; Nun jg ; Nya ; Nya jg ; Pe ; Pe jg ; Qaf ; Qaf jg ; Qaph ; Qaph jg ; Reh ; Reh jg ; Reversed_Pe ; Reversed_Pe jg ; Rohingya_Yeh ; Rohingya_Yeh jg ; Sad ; Sad jg ; Sadhe ; Sadhe jg ; Seen ; Seen jg ; Semkath ; Semkath jg ; Shin ; Shin jg ; Straight_Waw ; Straight_Waw jg ; Swash_Kaf ; Swash_Kaf jg ; Syriac_Waw ; Syriac_Waw jg ; Tah ; Tah jg ; Taw ; Taw jg ; Teh_Marbuta ; Teh_Marbuta jg ; Teh_Marbuta_Goal ; Hamza_On_Heh_Goal jg ; Teth ; Teth jg ; Waw ; Waw jg ; Yeh ; Yeh jg ; Yeh_Barree ; Yeh_Barree jg ; Yeh_With_Tail ; Yeh_With_Tail jg ; Yudh ; Yudh jg ; Yudh_He ; Yudh_He jg ; Zain ; Zain jg ; Zhain ; Zhain # Joining_Type (jt) jt ; C ; Join_Causing jt ; D ; Dual_Joining jt ; L ; Left_Joining jt ; R ; Right_Joining jt ; T ; Transparent jt ; U ; Non_Joining # Line_Break (lb) lb ; AI ; Ambiguous lb ; AL ; Alphabetic lb ; B2 ; Break_Both lb ; BA ; Break_After lb ; BB ; Break_Before lb ; BK ; Mandatory_Break lb ; CB ; Contingent_Break lb ; CJ ; Conditional_Japanese_Starter lb ; CL ; Close_Punctuation lb ; CM ; Combining_Mark lb ; CP ; Close_Parenthesis lb ; CR ; Carriage_Return lb ; EB ; E_Base lb ; EM ; E_Modifier lb ; EX ; Exclamation lb ; GL ; Glue lb ; H2 ; H2 lb ; H3 ; H3 lb ; HL ; Hebrew_Letter lb ; HY ; Hyphen lb ; ID ; Ideographic lb ; IN ; Inseparable ; Inseperable lb ; IS ; Infix_Numeric lb ; JL ; JL lb ; JT ; JT lb ; JV ; JV lb ; LF ; Line_Feed lb ; NL ; Next_Line lb ; NS ; Nonstarter lb ; NU ; Numeric lb ; OP ; Open_Punctuation lb ; PO ; Postfix_Numeric lb ; PR ; Prefix_Numeric lb ; QU ; Quotation lb ; RI ; Regional_Indicator lb ; SA ; Complex_Context lb ; SG ; Surrogate lb ; SP ; Space lb ; SY ; Break_Symbols lb ; WJ ; Word_Joiner lb ; XX ; Unknown lb ; ZW ; ZWSpace lb ; ZWJ ; ZWJ # Logical_Order_Exception (LOE) LOE; N ; No ; F ; False LOE; Y ; Yes ; T ; True # Lowercase (Lower) Lower; N ; No ; F ; False Lower; Y ; Yes ; T ; True # Lowercase_Mapping (lc) # @missing: 0000..10FFFF; Lowercase_Mapping; # Math (Math) Math; N ; No ; F ; False Math; Y ; Yes ; T ; True # NFC_Quick_Check (NFC_QC) NFC_QC; M ; Maybe NFC_QC; N ; No NFC_QC; Y ; Yes # NFD_Quick_Check (NFD_QC) NFD_QC; N ; No NFD_QC; Y ; Yes # NFKC_Casefold (NFKC_CF) # @missing: 0000..10FFFF; NFKC_Casefold; # NFKC_Quick_Check (NFKC_QC) NFKC_QC; M ; Maybe NFKC_QC; N ; No NFKC_QC; Y ; Yes # NFKD_Quick_Check (NFKD_QC) NFKD_QC; N ; No NFKD_QC; Y ; Yes # Name (na) # @missing: 0000..10FFFF; Name; # Name_Alias (Name_Alias) # @missing: 0000..10FFFF; Name_Alias; # Noncharacter_Code_Point (NChar) NChar; N ; No ; F ; False NChar; Y ; Yes ; T ; True # Numeric_Type (nt) nt ; De ; Decimal nt ; Di ; Digit nt ; None ; None nt ; Nu ; Numeric # Numeric_Value (nv) # @missing: 0000..10FFFF; Numeric_Value; NaN # Other_Alphabetic (OAlpha) OAlpha; N ; No ; F ; False OAlpha; Y ; Yes ; T ; True # Other_Default_Ignorable_Code_Point (ODI) ODI; N ; No ; F ; False ODI; Y ; Yes ; T ; True # Other_Grapheme_Extend (OGr_Ext) OGr_Ext; N ; No ; F ; False OGr_Ext; Y ; Yes ; T ; True # Other_ID_Continue (OIDC) OIDC; N ; No ; F ; False OIDC; Y ; Yes ; T ; True # Other_ID_Start (OIDS) OIDS; N ; No ; F ; False OIDS; Y ; Yes ; T ; True # Other_Lowercase (OLower) OLower; N ; No ; F ; False OLower; Y ; Yes ; T ; True # Other_Math (OMath) OMath; N ; No ; F ; False OMath; Y ; Yes ; T ; True # Other_Uppercase (OUpper) OUpper; N ; No ; F ; False OUpper; Y ; Yes ; T ; True # Pattern_Syntax (Pat_Syn) Pat_Syn; N ; No ; F ; False Pat_Syn; Y ; Yes ; T ; True # Pattern_White_Space (Pat_WS) Pat_WS; N ; No ; F ; False Pat_WS; Y ; Yes ; T ; True # Prepended_Concatenation_Mark (PCM) PCM; N ; No ; F ; False PCM; Y ; Yes ; T ; True # Quotation_Mark (QMark) QMark; N ; No ; F ; False QMark; Y ; Yes ; T ; True # Radical (Radical) Radical; N ; No ; F ; False Radical; Y ; Yes ; T ; True # Script (sc) sc ; Adlm ; Adlam sc ; Aghb ; Caucasian_Albanian sc ; Ahom ; Ahom sc ; Arab ; Arabic sc ; Armi ; Imperial_Aramaic sc ; Armn ; Armenian sc ; Avst ; Avestan sc ; Bali ; Balinese sc ; Bamu ; Bamum sc ; Bass ; Bassa_Vah sc ; Batk ; Batak sc ; Beng ; Bengali sc ; Bhks ; Bhaiksuki sc ; Bopo ; Bopomofo sc ; Brah ; Brahmi sc ; Brai ; Braille sc ; Bugi ; Buginese sc ; Buhd ; Buhid sc ; Cakm ; Chakma sc ; Cans ; Canadian_Aboriginal sc ; Cari ; Carian sc ; Cham ; Cham sc ; Cher ; Cherokee sc ; Copt ; Coptic ; Qaac sc ; Cprt ; Cypriot sc ; Cyrl ; Cyrillic sc ; Deva ; Devanagari sc ; Dsrt ; Deseret sc ; Dupl ; Duployan sc ; Egyp ; Egyptian_Hieroglyphs sc ; Elba ; Elbasan sc ; Ethi ; Ethiopic sc ; Geor ; Georgian sc ; Glag ; Glagolitic sc ; Goth ; Gothic sc ; Gran ; Grantha sc ; Grek ; Greek sc ; Gujr ; Gujarati sc ; Guru ; Gurmukhi sc ; Hang ; Hangul sc ; Hani ; Han sc ; Hano ; Hanunoo sc ; Hatr ; Hatran sc ; Hebr ; Hebrew sc ; Hira ; Hiragana sc ; Hluw ; Anatolian_Hieroglyphs sc ; Hmng ; Pahawh_Hmong sc ; Hrkt ; Katakana_Or_Hiragana sc ; Hung ; Old_Hungarian sc ; Ital ; Old_Italic sc ; Java ; Javanese sc ; Kali ; Kayah_Li sc ; Kana ; Katakana sc ; Khar ; Kharoshthi sc ; Khmr ; Khmer sc ; Khoj ; Khojki sc ; Knda ; Kannada sc ; Kthi ; Kaithi sc ; Lana ; Tai_Tham sc ; Laoo ; Lao sc ; Latn ; Latin sc ; Lepc ; Lepcha sc ; Limb ; Limbu sc ; Lina ; Linear_A sc ; Linb ; Linear_B sc ; Lisu ; Lisu sc ; Lyci ; Lycian sc ; Lydi ; Lydian sc ; Mahj ; Mahajani sc ; Mand ; Mandaic sc ; Mani ; Manichaean sc ; Marc ; Marchen sc ; Mend ; Mende_Kikakui sc ; Merc ; Meroitic_Cursive sc ; Mero ; Meroitic_Hieroglyphs sc ; Mlym ; Malayalam sc ; Modi ; Modi sc ; Mong ; Mongolian sc ; Mroo ; Mro sc ; Mtei ; Meetei_Mayek sc ; Mult ; Multani sc ; Mymr ; Myanmar sc ; Narb ; Old_North_Arabian sc ; Nbat ; Nabataean sc ; Newa ; Newa sc ; Nkoo ; Nko sc ; Ogam ; Ogham sc ; Olck ; Ol_Chiki sc ; Orkh ; Old_Turkic sc ; Orya ; Oriya sc ; Osge ; Osage sc ; Osma ; Osmanya sc ; Palm ; Palmyrene sc ; Pauc ; Pau_Cin_Hau sc ; Perm ; Old_Permic sc ; Phag ; Phags_Pa sc ; Phli ; Inscriptional_Pahlavi sc ; Phlp ; Psalter_Pahlavi sc ; Phnx ; Phoenician sc ; Plrd ; Miao sc ; Prti ; Inscriptional_Parthian sc ; Rjng ; Rejang sc ; Runr ; Runic sc ; Samr ; Samaritan sc ; Sarb ; Old_South_Arabian sc ; Saur ; Saurashtra sc ; Sgnw ; SignWriting sc ; Shaw ; Shavian sc ; Shrd ; Sharada sc ; Sidd ; Siddham sc ; Sind ; Khudawadi sc ; Sinh ; Sinhala sc ; Sora ; Sora_Sompeng sc ; Sund ; Sundanese sc ; Sylo ; Syloti_Nagri sc ; Syrc ; Syriac sc ; Tagb ; Tagbanwa sc ; Takr ; Takri sc ; Tale ; Tai_Le sc ; Talu ; New_Tai_Lue sc ; Taml ; Tamil sc ; Tang ; Tangut sc ; Tavt ; Tai_Viet sc ; Telu ; Telugu sc ; Tfng ; Tifinagh sc ; Tglg ; Tagalog sc ; Thaa ; Thaana sc ; Thai ; Thai sc ; Tibt ; Tibetan sc ; Tirh ; Tirhuta sc ; Ugar ; Ugaritic sc ; Vaii ; Vai sc ; Wara ; Warang_Citi sc ; Xpeo ; Old_Persian sc ; Xsux ; Cuneiform sc ; Yiii ; Yi sc ; Zinh ; Inherited ; Qaai sc ; Zyyy ; Common sc ; Zzzz ; Unknown # Script_Extensions (scx) # @missing: 0000..10FFFF; Script_Extensions;