├── setup.cfg ├── MANIFEST.in ├── docs ├── grapheme.rst ├── Makefile ├── make.bat ├── index.rst └── conf.py ├── .travis.yml ├── Makefile ├── grapheme ├── __init__.py ├── grapheme_property_group.py ├── finder.py ├── api.py └── data │ └── grapheme_break_property.json ├── .gitignore ├── tests ├── benchmark.py └── test_mod.py ├── CHANGELOG.md ├── LICENSE ├── setup.py ├── unicode-data ├── read_property_file.py └── GraphemeBreakTest.txt └── README.rst /setup.cfg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include grapheme/data/*.json 2 | -------------------------------------------------------------------------------- /docs/grapheme.rst: -------------------------------------------------------------------------------- 1 | grapheme (API documentation) 2 | ==================================== 3 | 4 | .. automodule:: grapheme 5 | :members: 6 | :undoc-members: 7 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: python 2 | python: 3 | - "3.5" 4 | - "3.6" 5 | - "3.7" 6 | - "3.8" 7 | install: 8 | - "pip install coveralls" 9 | - "pip install -e .[test]" 10 | script: 11 | - py.test 12 | - coverage run --source=grapheme -m py.test 13 | after_success: 14 | - coveralls 15 | sudo: false 16 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: process-data-files 2 | process-data-files: 3 | python unicode-data/read_property_file.py 4 | 5 | .PHONY: build-release 6 | build-release: 7 | rm dist/* 8 | python setup.py sdist 9 | 10 | .PHONY: release-to-test 11 | release-to-test: 12 | twine upload --repository-url https://test.pypi.org/legacy/ dist/* 13 | 14 | .PHONY: release-to-prod 15 | release-to-prod: 16 | twine upload dist/* 17 | -------------------------------------------------------------------------------- /grapheme/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | Main module for the grapheme package. 3 | 4 | .. data:: UNICODE_VERSION 5 | 6 | The currently supported Unicode version 7 | """ 8 | 9 | from .api import (graphemes, length, grapheme_lengths, slice, contains, safe_split_index, startswith, endswith, 10 | UNICODE_VERSION) 11 | 12 | __all__ = ['graphemes', 'length', 'grapheme_lengths', 'slice', 'contains', 'safe_split_index', 'startswith', 'endswith', 13 | 'UNICODE_VERSION'] 14 | -------------------------------------------------------------------------------- /docs/Makefile: -------------------------------------------------------------------------------- 1 | # Minimal makefile for Sphinx documentation 2 | # 3 | 4 | # You can set these variables from the command line. 5 | SPHINXOPTS = 6 | SPHINXBUILD = python -msphinx 7 | SPHINXPROJ = grapheme 8 | SOURCEDIR = . 9 | BUILDDIR = _build 10 | 11 | # Put it first so that "make" without argument is like "make help". 12 | help: 13 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 14 | 15 | .PHONY: help Makefile 16 | 17 | # Catch-all target: route all unknown targets to Sphinx using the new 18 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). 19 | %: Makefile 20 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) -------------------------------------------------------------------------------- /docs/make.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | pushd %~dp0 4 | 5 | REM Command file for Sphinx documentation 6 | 7 | if "%SPHINXBUILD%" == "" ( 8 | set SPHINXBUILD=python -msphinx 9 | ) 10 | set SOURCEDIR=. 11 | set BUILDDIR=_build 12 | set SPHINXPROJ=grapheme 13 | 14 | if "%1" == "" goto help 15 | 16 | %SPHINXBUILD% >NUL 2>NUL 17 | if errorlevel 9009 ( 18 | echo. 19 | echo.The Sphinx module was not found. Make sure you have Sphinx installed, 20 | echo.then set the SPHINXBUILD environment variable to point to the full 21 | echo.path of the 'sphinx-build' executable. Alternatively you may add the 22 | echo.Sphinx directory to PATH. 23 | echo. 24 | echo.If you don't have Sphinx installed, grab it from 25 | echo.http://sphinx-doc.org/ 26 | exit /b 1 27 | ) 28 | 29 | %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% 30 | goto end 31 | 32 | :help 33 | %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% 34 | 35 | :end 36 | popd 37 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | 5 | # C extensions 6 | *.so 7 | 8 | # Distribution / packaging 9 | .Python 10 | env/ 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | lib/ 17 | lib64/ 18 | parts/ 19 | sdist/ 20 | var/ 21 | *.egg-info/ 22 | .installed.cfg 23 | *.egg 24 | 25 | # PyInstaller 26 | # Usually these files are written by a python script from a template 27 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 28 | *.manifest 29 | *.spec 30 | 31 | # Installer logs 32 | pip-log.txt 33 | pip-delete-this-directory.txt 34 | 35 | # Unit test / coverage reports 36 | htmlcov/ 37 | .tox/ 38 | .coverage 39 | .cache 40 | nosetests.xml 41 | coverage.xml 42 | 43 | # Translations 44 | *.mo 45 | *.pot 46 | 47 | # Django stuff: 48 | *.log 49 | 50 | # Sphinx documentation 51 | docs/_build/ 52 | 53 | # PyBuilder 54 | target/ 55 | 56 | # OS X 57 | .DS_Store 58 | 59 | # Other 60 | .python-version 61 | .pytest_cache 62 | -------------------------------------------------------------------------------- /tests/benchmark.py: -------------------------------------------------------------------------------- 1 | from random import choice 2 | from string import ascii_lowercase 3 | import timeit 4 | 5 | 6 | def random_ascii_string(n): 7 | return "".join(choice(ascii_lowercase) for i in range(n)) 8 | 9 | long_ascii_string = random_ascii_string(10000) 10 | 11 | statements = [ 12 | ("len(long_ascii_string)", 1000), 13 | ("grapheme.length(long_ascii_string)", 500), 14 | ("grapheme.length(long_ascii_string, 500)", 1000), 15 | ("long_ascii_string[0:100]", 1000), 16 | ("grapheme.slice(long_ascii_string, 0, 100)", 1000), 17 | ("long_ascii_string[:100] in long_ascii_string", 1000), 18 | ("grapheme.contains(long_ascii_string, long_ascii_string[:100])", 500), 19 | ("long_ascii_string[-100:] in long_ascii_string", 1000), 20 | ("grapheme.contains(long_ascii_string, long_ascii_string[-100:])", 500), 21 | 22 | ] 23 | for statement, n in statements: 24 | result = timeit.timeit(statement, setup="from __main__ import long_ascii_string; import grapheme", number=n) / 100 25 | print("{}: {} seconds".format(statement, result / n)) 26 | 27 | -------------------------------------------------------------------------------- /docs/index.rst: -------------------------------------------------------------------------------- 1 | .. grapheme documentation master file, created by 2 | sphinx-quickstart on Mon Jul 24 23:09:29 2017. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | grapheme 7 | ==================================== 8 | 9 | .. toctree:: 10 | :maxdepth: 2 11 | :caption: Contents: 12 | 13 | grapheme 14 | 15 | A library for working with grapheme cluster groups (graphemes), as defined by 16 | the Unicode Standard. 17 | 18 | A grapheme is single character, as perceived by users. Some graphemes are 19 | represented as multiple unicode characters (code points), yet still be 20 | connected visually and semantically. 21 | 22 | Pythons built in string functions work with unicode code points as the basic 23 | unit, so lengths, slicing, matching etc is done on the code points. This 24 | module adds helper functions for common string operations with respect to 25 | graphemes instead. 26 | 27 | 28 | Indices and tables 29 | ================== 30 | 31 | * :ref:`genindex` 32 | * :ref:`modindex` 33 | * :ref:`search` 34 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.6.0 2 | Added support for Unicode 13. 3 | 4 | Drops support for python 3.4 & 3.5. Now tested on python 3.6 - 3.8. 5 | No API changes 6 | 7 | ## 0.5.0 8 | Added support for Unicode 12. 9 | 10 | No API changes 11 | 12 | ## 0.4.0 13 | Added support for Unicode 11. 14 | 15 | Added `grapheme.UNICODE_VERSION`. 16 | 17 | No other API changes 18 | 19 | ## 0.3.0 20 | Added a few new functions: 21 | 22 | * `grapheme.safe_split_index`, which can find the highest grapheme boundary index in a given string without traversing the full grapheme sequence. 23 | * `grapheme.startswith`, which tests that a given string starts with the same grapheme sequence as a given prefix. 24 | * `grapheme.endswith`, which tests that a given string ends with the same grapheme sequence as a given suffix. 25 | 26 | ## 0.2.1 27 | Performance improvements 28 | 29 | No new functionality, but noticably better performance. 30 | 31 | ## 0.2.0 32 | * Adds `grapheme.contains` 33 | * Bugfix for empty strings 34 | 35 | ## 0.1.0 36 | Initial release 37 | 38 | Basic support for getting graphemes, grapheme string lengths and grapheme based slicing. 39 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2017 The Python Packaging Authority (PyPA) 2 | Copyright (c) 2014 Mapbox 3 | Copyright (c) 2017 Alvin Lindstam 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | from codecs import open as codecs_open 2 | from setuptools import setup, find_packages 3 | 4 | 5 | # Get the long description from the relevant file 6 | with codecs_open('README.rst', encoding='utf-8') as f: 7 | long_description = f.read() 8 | 9 | 10 | setup(name='grapheme', 11 | version='0.6.0', 12 | description=u"Unicode grapheme helpers", 13 | long_description=long_description, 14 | keywords='', 15 | author=u"Alvin Lindstam", 16 | author_email='alvin.lindstam@gmail.com', 17 | url='https://github.com/alvinlindstam/grapheme', 18 | license='MIT', 19 | packages=find_packages(exclude=['ez_setup', 'examples', 'tests']), 20 | include_package_data=True, 21 | zip_safe=False, 22 | install_requires=[], 23 | extras_require={ 24 | 'test': ['pytest', 'sphinx', 'sphinx-autobuild', 'wheel', 'twine'] 25 | }, 26 | classifiers=[ 27 | 'Development Status :: 3 - Alpha', 28 | 'Intended Audience :: Developers', 29 | 'Programming Language :: Python', 30 | 'Programming Language :: Python :: 3', 31 | 'Programming Language :: Python :: 3.5', 32 | 'Programming Language :: Python :: 3.6', 33 | 'Programming Language :: Python :: 3.7', 34 | 'Programming Language :: Python :: 3.8', 35 | ], 36 | ) 37 | -------------------------------------------------------------------------------- /unicode-data/read_property_file.py: -------------------------------------------------------------------------------- 1 | import json 2 | import os 3 | import re 4 | from collections import defaultdict 5 | 6 | 7 | BREAK_PROPERTY_FILE = "GraphemeBreakProperty.txt" 8 | EMOJI_DATA_FILE = "emoji-data.txt" 9 | BREAK_PROPERTY_JSON_FILE = "../grapheme/data/grapheme_break_property.json" 10 | 11 | pattern = re.compile(r"^([0-9A-F]+)(\.\.([0-9A-F]+))?\s+;\s*(\w*)\s*#") 12 | dir_path = os.path.dirname(os.path.realpath(__file__)) 13 | 14 | 15 | class Group: 16 | single_chars = [] 17 | ranges = [] 18 | def group(): 19 | return dict( 20 | single_chars=[], 21 | ranges=[] 22 | ) 23 | 24 | chardata = defaultdict(group) 25 | 26 | with open(os.path.join(dir_path, BREAK_PROPERTY_FILE), "r") as file: 27 | for line in file: 28 | if line.startswith("#"): 29 | continue 30 | 31 | match = pattern.search(line) 32 | if not match: 33 | continue 34 | 35 | (start, _, end, group_name) = match.groups() 36 | 37 | if end is None: 38 | chardata[group_name]["single_chars"].append(int(start, 16)) 39 | else: 40 | chardata[group_name]["ranges"].append((int(start, 16), int(end, 16))) 41 | 42 | # Find characters with Extended_Pictographic flag from the emoji data file 43 | with open(os.path.join(dir_path, EMOJI_DATA_FILE), "r") as file: 44 | for line in file: 45 | match = pattern.search(line) 46 | if not match: 47 | continue 48 | 49 | (start, _, end, group_name) = match.groups() 50 | 51 | if group_name != "Extended_Pictographic": 52 | continue 53 | 54 | if end is None: 55 | chardata[group_name]["single_chars"].append(int(start, 16)) 56 | else: 57 | chardata[group_name]["ranges"].append((int(start, 16), int(end, 16))) 58 | 59 | 60 | for group in chardata.values(): 61 | single_chars = group["single_chars"] 62 | ranges = [] 63 | last_max = None 64 | for min_, max_ in sorted(group["ranges"]): 65 | # Extend range with adjacent single chars 66 | while min_ - 1 in single_chars: 67 | min_ -= 1 68 | single_chars.remove(min_) 69 | 70 | while max_ + 1 in single_chars: 71 | max_ += 1 72 | single_chars.remove(max_) 73 | 74 | # Join adjacent ranges. 75 | if last_max and last_max + 1 == min_: 76 | ranges[-1][1] = max_ 77 | else: 78 | ranges.append([min_, max_]) 79 | last_max = max_ 80 | group["ranges"] = ranges 81 | 82 | 83 | with open(os.path.join(dir_path, BREAK_PROPERTY_JSON_FILE), "w") as out_file: 84 | out_file.write(json.dumps(chardata, indent=2)) 85 | -------------------------------------------------------------------------------- /grapheme/grapheme_property_group.py: -------------------------------------------------------------------------------- 1 | import json 2 | import os 3 | import string 4 | from enum import Enum 5 | 6 | 7 | class GraphemePropertyGroup(Enum): 8 | PREPEND = "Prepend" 9 | CR = "CR" 10 | LF = "LF" 11 | CONTROL = "Control" 12 | EXTEND = "Extend" 13 | REGIONAL_INDICATOR = "Regional_Indicator" 14 | SPACING_MARK = "SpacingMark" 15 | L = "L" 16 | V = "V" 17 | T = "T" 18 | LV = "LV" 19 | LVT = "LVT" 20 | ZWJ = "ZWJ" 21 | EXTENDED_PICTOGRAPHIC = "Extended_Pictographic" 22 | 23 | OTHER = "Other" 24 | 25 | COMMON_OTHER_GROUP_CHARS = "" 26 | 27 | def get_group(char): 28 | if char in COMMON_OTHER_GROUP_CHARS: 29 | return GraphemePropertyGroup.OTHER 30 | else: 31 | return get_group_ord(ord(char)) 32 | 33 | 34 | def get_group_ord(char): 35 | group = SINGLE_CHAR_MAPPINGS.get(char, None) 36 | if group: 37 | return group 38 | 39 | return RANGE_TREE.get_value(char) or GraphemePropertyGroup.OTHER 40 | 41 | 42 | class ContainerNode: 43 | """ 44 | Simple implementation of interval based BTree with no support for deletion. 45 | """ 46 | def __init__(self, children): 47 | self.children = self._sorted(children) 48 | self._set_min_max() 49 | 50 | def _set_min_max(self): 51 | self.min = self.children[0].min 52 | self.max = self.children[-1].max 53 | 54 | # Adds an item to the node or it's subnodes. Returns a new node if this node is split, or None. 55 | def add(self, item): 56 | for child in self.children: 57 | if child.min <= item.min <= child.max: 58 | assert child.min <= item.max <= child.max 59 | new_child = child.add(item) 60 | if new_child: 61 | return self._add_child(new_child) 62 | else: 63 | self._set_min_max() 64 | return None 65 | return self._add_child(item) 66 | 67 | def get_value(self, key): 68 | for child in self.children: 69 | if child.min <= key <= child.max: 70 | return child.get_value(key) 71 | return None 72 | 73 | def _add_child(self, child): 74 | self.children.append(child) 75 | self.children = self._sorted(self.children) 76 | other = None 77 | if len(self.children) >= 4: 78 | other = ContainerNode(self.children[2:]) 79 | self.children = self.children[0:2] 80 | self._set_min_max() 81 | return other 82 | 83 | def _sorted(self, children): 84 | return sorted(children, key=lambda c: c.min) 85 | 86 | 87 | class LeafNode: 88 | def __init__(self, range_min, range_max, group): 89 | self.min = range_min 90 | self.max = range_max 91 | self.group = group 92 | 93 | # Assumes range check has already been done 94 | def get_value(self, _key): 95 | return self.group 96 | 97 | with open(os.path.join(os.path.dirname(__file__), "data/grapheme_break_property.json"), 'r') as f: 98 | data = json.load(f) 99 | 100 | assert len(data) == len(GraphemePropertyGroup) - 1 101 | 102 | SINGLE_CHAR_MAPPINGS = {} 103 | 104 | for key, value in data.items(): 105 | group = GraphemePropertyGroup(key) 106 | for char in value["single_chars"]: 107 | SINGLE_CHAR_MAPPINGS[char] = group 108 | 109 | RANGE_TREE = None 110 | for key, value in data.items(): 111 | for range_ in value["ranges"]: 112 | min_ = range_[0] 113 | max_ = range_[1] 114 | group = GraphemePropertyGroup(key) 115 | if max_ - min_ < 20: 116 | for i in range(min_, max_ + 1): 117 | SINGLE_CHAR_MAPPINGS[i] = group 118 | continue 119 | new_node = LeafNode( min_, max_, group) 120 | if RANGE_TREE: 121 | new_subtree = RANGE_TREE.add(new_node) 122 | if new_subtree: 123 | RANGE_TREE = ContainerNode([RANGE_TREE, new_subtree]) 124 | else: 125 | RANGE_TREE = ContainerNode([new_node]) 126 | 127 | common_ascii = string.ascii_letters + string.digits + string.punctuation 128 | COMMON_OTHER_GROUP_CHARS = "".join(c for c in common_ascii if get_group(c) == GraphemePropertyGroup.OTHER) 129 | del data 130 | -------------------------------------------------------------------------------- /docs/conf.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | # 4 | # grapheme documentation build configuration file, created by 5 | # sphinx-quickstart on Mon Jul 24 23:09:29 2017. 6 | # 7 | # This file is execfile()d with the current directory set to its 8 | # containing dir. 9 | # 10 | # Note that not all possible configuration values are present in this 11 | # autogenerated file. 12 | # 13 | # All configuration values have a default; values that are commented out 14 | # serve to show the default. 15 | 16 | # If extensions (or modules to document with autodoc) are in another directory, 17 | # add these directories to sys.path here. If the directory is relative to the 18 | # documentation root, use os.path.abspath to make it absolute, like shown here. 19 | # 20 | import os 21 | import sys 22 | sys.path.insert(0, os.path.abspath('..')) 23 | 24 | 25 | # -- General configuration ------------------------------------------------ 26 | 27 | # If your documentation needs a minimal Sphinx version, state it here. 28 | # 29 | # needs_sphinx = '1.0' 30 | 31 | # Add any Sphinx extension module names here, as strings. They can be 32 | # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom 33 | # ones. 34 | extensions = ['sphinx.ext.autodoc'] 35 | 36 | # Add any paths that contain templates here, relative to this directory. 37 | templates_path = ['_templates'] 38 | 39 | # The suffix(es) of source filenames. 40 | # You can specify multiple suffix as a list of string: 41 | # 42 | # source_suffix = ['.rst', '.md'] 43 | source_suffix = '.rst' 44 | 45 | # The master toctree document. 46 | master_doc = 'index' 47 | 48 | # General information about the project. 49 | project = 'grapheme' 50 | copyright = 'Alvin Lindstam' 51 | author = 'Alvin Lindstam' 52 | 53 | # The version info for the project you're documenting, acts as replacement for 54 | # |version| and |release|, also used in various other places throughout the 55 | # built documents. 56 | # 57 | # The short X.Y version. 58 | version = '0.6' 59 | # The full version, including alpha/beta/rc tags. 60 | release = '0.6.0' 61 | 62 | # The language for content autogenerated by Sphinx. Refer to documentation 63 | # for a list of supported languages. 64 | # 65 | # This is also used if you do content translation via gettext catalogs. 66 | # Usually you set "language" from the command line for these cases. 67 | language = None 68 | 69 | # List of patterns, relative to source directory, that match files and 70 | # directories to ignore when looking for source files. 71 | # This patterns also effect to html_static_path and html_extra_path 72 | exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] 73 | 74 | # The name of the Pygments (syntax highlighting) style to use. 75 | pygments_style = 'sphinx' 76 | 77 | # If true, `todo` and `todoList` produce output, else they produce nothing. 78 | todo_include_todos = False 79 | 80 | 81 | # -- Options for HTML output ---------------------------------------------- 82 | 83 | # The theme to use for HTML and HTML Help pages. See the documentation for 84 | # a list of builtin themes. 85 | # 86 | html_theme = 'alabaster' 87 | 88 | # Theme options are theme-specific and customize the look and feel of a theme 89 | # further. For a list of options available for each theme, see the 90 | # documentation. 91 | # 92 | # html_theme_options = {} 93 | 94 | # Add any paths that contain custom static files (such as style sheets) here, 95 | # relative to this directory. They are copied after the builtin static files, 96 | # so a file named "default.css" will overwrite the builtin "default.css". 97 | html_static_path = ['_static'] 98 | 99 | # Custom sidebar templates, must be a dictionary that maps document names 100 | # to template names. 101 | # 102 | # This is required for the alabaster theme 103 | # refs: http://alabaster.readthedocs.io/en/latest/installation.html#sidebars 104 | html_sidebars = { 105 | '**': [ 106 | 'about.html', 107 | 'navigation.html', 108 | 'relations.html', # needs 'show_related': True theme option to display 109 | 'searchbox.html', 110 | 'donate.html', 111 | ] 112 | } 113 | 114 | 115 | # -- Options for HTMLHelp output ------------------------------------------ 116 | 117 | # Output file base name for HTML help builder. 118 | htmlhelp_basename = 'graphemedoc' 119 | 120 | 121 | # -- Options for LaTeX output --------------------------------------------- 122 | 123 | latex_elements = { 124 | # The paper size ('letterpaper' or 'a4paper'). 125 | # 126 | # 'papersize': 'letterpaper', 127 | 128 | # The font size ('10pt', '11pt' or '12pt'). 129 | # 130 | # 'pointsize': '10pt', 131 | 132 | # Additional stuff for the LaTeX preamble. 133 | # 134 | # 'preamble': '', 135 | 136 | # Latex figure (float) alignment 137 | # 138 | # 'figure_align': 'htbp', 139 | } 140 | 141 | # Grouping the document tree into LaTeX files. List of tuples 142 | # (source start file, target name, title, 143 | # author, documentclass [howto, manual, or own class]). 144 | latex_documents = [ 145 | (master_doc, 'grapheme.tex', 'grapheme Documentation', 146 | 'Alvin Lindstam', 'manual'), 147 | ] 148 | 149 | 150 | # -- Options for manual page output --------------------------------------- 151 | 152 | # One entry per manual page. List of tuples 153 | # (source start file, name, description, authors, manual section). 154 | man_pages = [ 155 | (master_doc, 'grapheme', 'grapheme Documentation', 156 | [author], 1) 157 | ] 158 | 159 | 160 | # -- Options for Texinfo output ------------------------------------------- 161 | 162 | # Grouping the document tree into Texinfo files. List of tuples 163 | # (source start file, target name, title, author, 164 | # dir menu entry, description, category) 165 | texinfo_documents = [ 166 | (master_doc, 'grapheme', 'grapheme Documentation', 167 | author, 'grapheme', 'One line description of project.', 168 | 'Miscellaneous'), 169 | ] 170 | 171 | 172 | 173 | -------------------------------------------------------------------------------- /README.rst: -------------------------------------------------------------------------------- 1 | grapheme 2 | ======== 3 | 4 | A Python package for working with user perceived characters. More specifically, 5 | string manipulation and calculation functions for working with grapheme cluster 6 | groups (graphemes) as defined by the `Unicode Standard Annex #29 `_. 7 | 8 | `documentation `_ 9 | 10 | .. code-block:: console 11 | 12 | pip install grapheme 13 | 14 | The currently supported version of Unicode: 13.0.0. 15 | 16 | What? Why? 17 | ========== 18 | 19 | Unicode strings are made up of a series of unicode characters, but a unicode character does not 20 | always map to a user perceived character. Some human perceived characters are represented as two 21 | or more unicode characters. 22 | 23 | However, all built in python string functions and string methods work with single unicode characters 24 | without considering their connection to each other. 25 | 26 | .. code-block:: python 27 | 28 | >>> string = 'u̲n̲d̲e̲r̲l̲i̲n̲e̲d̲' 29 | >>> len(string) 30 | 20 31 | >>> grapheme.length(string) 32 | 10 33 | >>> string[:3] 34 | 'u̲n' 35 | >>> grapheme.substr(string, 0, 3) 36 | 'u̲n̲d̲' 37 | 38 | This library implements the unicode default rules for extended grapheme clusters, and provides 39 | a set of functions for string manipulation based on graphemes. 40 | 41 | Documentation 42 | ============= 43 | 44 | See ``_. 45 | 46 | When should I consider graphemes instead of unicode characters? 47 | =============================================================== 48 | 49 | You should consider working with graphemes over unicode code points when: 50 | 51 | * You wish to count characters as perceived by users. 52 | * You wish to split or truncate text at some user perceived lengths. 53 | * You wish to split or truncate text without risk of corrupting the characters. 54 | * Formatting text by length, such as creating text based tables in monospaced fonts 55 | 56 | You should work with normal python string functions when: 57 | 58 | * You wish to count or split by unicode codepoints for compliance with storage 59 | limitations (such as database maximum length) 60 | * When working with systems that put limits on strings by unicode character 61 | lengths 62 | * When you prioritize performance over correctness (see performance notes below) 63 | * When working with very long strings (see performance notes below) 64 | * If simplicity is more important than accuracy 65 | 66 | Performance 67 | =========== 68 | 69 | Calculating graphemes require traversing the string and checking each character 70 | against a set of rules and the previous character(s). Because of this, all 71 | functions in this module will scale linearly to the string length. 72 | 73 | Whenever possible, they will only traverse the string for as long as needed and return 74 | early as soon as the requested output is generated. For example, the `grapheme.slice` 75 | function only has to traverse the string until the last requested grapheme is found, and 76 | does not care about the rest of the string. 77 | 78 | You should probably only use this package for testing/manipulating fairly short strings 79 | or with the beginning of long strings. 80 | 81 | When testing with a string of 10 000 ascii characters, and a 3.1 GHz processor, the execution 82 | time for some possible calls is roughly: 83 | 84 | ================================================================ ========================== 85 | Code Approximate execution time 86 | ================================================================ ========================== 87 | `len(long_ascii_string)` 8.1e-10 seconds 88 | `grapheme.length(long_ascii_string)` 1.5e-04 seconds 89 | `grapheme.length(long_ascii_string, 500)` 8.7e-06 seconds 90 | `long_ascii_string[0:100]` 1.3e-09 seconds 91 | `grapheme.slice(long_ascii_string, 0, 100)` 2.5e-06 seconds 92 | `long_ascii_string[:100] in long_ascii_string` 4.0e-09 seconds 93 | `grapheme.contains(long_ascii_string, long_ascii_string[:100])` 3.9e-06 seconds 94 | `long_ascii_string[-100:] in long_ascii_string` 2.1e-07 seconds 95 | `grapheme.contains(long_ascii_string, long_ascii_string[-100:])` 1.9e-04 seconds 96 | ================================================================ ========================== 97 | 98 | Execution times may improve in later releases, but calculating graphemes is and will continue 99 | to be notably slower than just counting unicode code points. 100 | 101 | Examples of grapheme cluster groups 102 | =================================== 103 | 104 | This is not a complete list, but a some examples of when graphemes use multiple 105 | characters: 106 | 107 | * CR+LF 108 | * Hangul (korean) 109 | * Emoji with modifiers 110 | * Combining marks 111 | * Zero Width Join 112 | 113 | Development quick start 114 | ======================= 115 | 116 | If you wish to contribute or edit this package, create a fork and clone it. 117 | 118 | Then install in locally editable (``-e``) mode and run the tests. 119 | 120 | .. code-block:: console 121 | 122 | pip install -e .[test] 123 | py.test 124 | 125 | Unicode version upgrade 126 | ----------------------- 127 | 128 | The library will issue a new release for each new unicode version. 129 | 130 | The steps necessary for this: 131 | 132 | 1. Verify that there has been no material changes to the rulesets in Unicode 133 | `Annex #29 `_ (see modifications). 134 | 2. Download the `data files `_ from unicode into the unicode-data folder. 135 | For the given version, some are in `ucd` and some are in `ucd/auxiliary`. 136 | 3. Run `make process-data-files` to parse those files (will update the 137 | `grapheme_break_property.json` file). 138 | 4. Update the unicode version in the documentation and in the source code. 139 | 5. Bump the version. 140 | -------------------------------------------------------------------------------- /tests/test_mod.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | import os 5 | from unittest import TestCase 6 | 7 | import pytest 8 | from grapheme.api import safe_split_index 9 | 10 | from grapheme.grapheme_property_group import GraphemePropertyGroup, get_group 11 | import grapheme 12 | 13 | 14 | class GetGroupTest(TestCase): 15 | def test_get_group_prepend(self): 16 | self.assertEqual(get_group("\u0605"), GraphemePropertyGroup.PREPEND) 17 | 18 | def test_get_group_cr(self): 19 | self.assertEqual(get_group("\u000D"), GraphemePropertyGroup.CR) 20 | 21 | def test_get_group_lf(self): 22 | self.assertEqual(get_group("\u000A"), GraphemePropertyGroup.LF) 23 | 24 | def test_get_group(self): 25 | self.assertEqual(get_group("s"), GraphemePropertyGroup.OTHER) 26 | 27 | 28 | class GraphemesTest(TestCase): 29 | def test_empty(self): 30 | self.assertEqual(list(grapheme.graphemes("")), []) 31 | 32 | def test_simple(self): 33 | self.assertEqual(list(grapheme.graphemes("alvin")), list("alvin")) 34 | 35 | def test_emoji_with_modifier(self): 36 | input_str = "\U0001F476\U0001F3FB" 37 | self.assertEqual(list(grapheme.graphemes(input_str)), [input_str]) 38 | 39 | def test_cr_lf(self): 40 | self.assertEqual(list(grapheme.graphemes("\u000D\u000A")), ["\u000D\u000A"]) 41 | 42 | def test_mixed_text(self): 43 | input_str = " \U0001F476\U0001F3FB ascii \u000D\u000A" 44 | graphemes = [" ", "\U0001F476\U0001F3FB", " ", "a", "s", "c", "i", "i", " ", input_str[-2:]] 45 | self.assertEqual(list(grapheme.graphemes(input_str)), graphemes) 46 | self.assertEqual(list(grapheme.grapheme_lengths(input_str)), [len(g) for g in graphemes]) 47 | self.assertEqual(grapheme.slice(input_str, 0, 2), " \U0001F476\U0001F3FB") 48 | self.assertEqual(grapheme.slice(input_str, 0, 3), " \U0001F476\U0001F3FB ") 49 | self.assertEqual(grapheme.slice(input_str, end=3), " \U0001F476\U0001F3FB ") 50 | self.assertEqual(grapheme.slice(input_str, 1, 4), "\U0001F476\U0001F3FB a") 51 | self.assertEqual(grapheme.slice(input_str, 2), input_str[3:]) 52 | self.assertEqual(grapheme.slice(input_str, 2, 4), " a") 53 | self.assertEqual(grapheme.length(input_str), 10) 54 | self.assertEqual(grapheme.length(input_str, until=0), 0) 55 | self.assertEqual(grapheme.length(input_str, until=1), 1) 56 | self.assertEqual(grapheme.length(input_str, until=4), 4) 57 | self.assertEqual(grapheme.length(input_str, until=10), 10) 58 | self.assertEqual(grapheme.length(input_str, until=11), 10) 59 | 60 | def test_contains(self): 61 | input_str = " \U0001F476\U0001F3FB ascii \u000D\u000A" 62 | 63 | self.assertFalse(grapheme.contains(input_str, " \U0001F476")) 64 | self.assertFalse(grapheme.contains(input_str, "\u000D")) 65 | self.assertFalse(grapheme.contains(input_str, "\U0001F3FB")) 66 | self.assertTrue(grapheme.contains(input_str, "")) 67 | 68 | graphemes = list(grapheme.graphemes(input_str)) 69 | for grapheme_ in graphemes: 70 | self.assertTrue(grapheme.contains(input_str, grapheme_)) 71 | 72 | for i in range(len(graphemes) - 1): 73 | self.assertTrue(grapheme.contains(input_str, "".join(graphemes[i:i+2]))) 74 | 75 | 76 | def read_test_data(): 77 | TEST_CASES = [] 78 | with open(os.path.join(os.path.dirname(__file__), "../unicode-data/GraphemeBreakTest.txt"), 'r') as f: 79 | for line in f.readlines(): 80 | if line.startswith("#"): 81 | continue 82 | 83 | test_data, description = line.split("#") 84 | 85 | expected_graphemes = [ 86 | "".join([ 87 | chr(int(char, 16)) for char in cluster.split("×") if char.strip() 88 | ]) 89 | for cluster in test_data.split("÷") if cluster.strip() 90 | ] 91 | 92 | input_string = "".join(expected_graphemes) 93 | TEST_CASES.append((input_string, expected_graphemes, description)) 94 | return TEST_CASES 95 | 96 | TEST_CASES = read_test_data() 97 | 98 | 99 | @pytest.mark.parametrize("input_string,expected_graphemes,description", TEST_CASES) 100 | def test_default_grapheme_suit(input_string, expected_graphemes, description): 101 | assert list(grapheme.graphemes(input_string)) == expected_graphemes 102 | assert grapheme.length(input_string) == len(expected_graphemes) 103 | 104 | 105 | @pytest.mark.parametrize("input_string,expected_graphemes,description", TEST_CASES) 106 | def test_safe_split_index(input_string, expected_graphemes, description): 107 | # Verify that we can always find the last grapheme index 108 | cur_len = 0 109 | cur_grapheme_break_index = 0 110 | for g in expected_graphemes: 111 | next_limit = cur_grapheme_break_index + len(g) 112 | for _c in g: 113 | cur_len += 1 114 | if cur_len == next_limit: 115 | cur_grapheme_break_index = next_limit 116 | assert safe_split_index(input_string, cur_len) == cur_grapheme_break_index 117 | 118 | 119 | @pytest.mark.parametrize("input_string,expected_graphemes,description", TEST_CASES) 120 | def test_prefixes(input_string, expected_graphemes, description): 121 | prefix = "" 122 | allowed_prefixes = [prefix] 123 | for g in expected_graphemes: 124 | prefix += g 125 | allowed_prefixes.append(prefix) 126 | 127 | for i in range(len(input_string)): 128 | prefix = input_string[:i] 129 | assert grapheme.startswith(input_string, prefix) == (prefix in allowed_prefixes) 130 | 131 | 132 | @pytest.mark.parametrize("input_string,expected_graphemes,description", TEST_CASES) 133 | def test_suffixes(input_string, expected_graphemes, description): 134 | suffix = "" 135 | allowed_suffixes = [suffix] 136 | for g in reversed(expected_graphemes): 137 | suffix = g + suffix 138 | allowed_suffixes.append(suffix) 139 | 140 | for i in range(len(input_string)): 141 | suffix = input_string[i:] 142 | assert grapheme.endswith(input_string, suffix) == (suffix in allowed_suffixes) 143 | -------------------------------------------------------------------------------- /grapheme/finder.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | 3 | from grapheme.grapheme_property_group import GraphemePropertyGroup as G 4 | from grapheme.grapheme_property_group import get_group 5 | 6 | 7 | class FSM: 8 | @classmethod 9 | def default(cls, n): 10 | if n is G.OTHER: 11 | return True, cls.default 12 | 13 | if n is G.CR: 14 | return True, cls.cr 15 | 16 | if n in [G.LF, G.CONTROL]: 17 | return True, cls.lf_or_control 18 | 19 | if n in [G.EXTEND, G.SPACING_MARK, G.ZWJ]: 20 | return False, cls.default 21 | 22 | if n is G.EXTENDED_PICTOGRAPHIC: 23 | return True, cls.emoji 24 | 25 | if n is G.REGIONAL_INDICATOR: 26 | return True, cls.ri 27 | 28 | if n is G.L: 29 | return True, cls.hangul_l 30 | 31 | if n in [G.LV, G.V]: 32 | return True, cls.hangul_lv_or_v 33 | 34 | if n in [G.LVT, G.T]: 35 | return True, cls.hangul_lvt_or_t 36 | 37 | if n is G.PREPEND: 38 | return True, cls.prepend 39 | 40 | return True, cls.default 41 | 42 | @classmethod 43 | def default_next_state(cls, n, should_break): 44 | _, next_state = cls.default(n) 45 | return should_break, next_state 46 | 47 | @classmethod 48 | def cr(cls, n): 49 | if n is G.LF: 50 | return False, cls.lf_or_control 51 | return cls.default_next_state(n, should_break=True) 52 | 53 | @classmethod 54 | def lf_or_control(cls, n): 55 | return cls.default_next_state(n, should_break=True) 56 | 57 | @classmethod 58 | def prepend(cls, n): 59 | if n in [G.CONTROL, G.LF]: 60 | return True, cls.default 61 | if n is G.CR: 62 | return True, cls.cr 63 | return cls.default_next_state(n, should_break=False) 64 | 65 | # Hanguls 66 | @classmethod 67 | def hangul_l(cls, n): 68 | if n in [G.V, G.LV]: 69 | return False, cls.hangul_lv_or_v 70 | if n is G.LVT: 71 | return False, cls.hangul_lvt_or_t 72 | if n is G.L: 73 | return False, cls.hangul_l 74 | return cls.default(n) 75 | 76 | @classmethod 77 | def hangul_lv_or_v(cls, n): 78 | if n is G.V: 79 | return False, cls.hangul_lv_or_v 80 | if n is G.T: 81 | return False, cls.hangul_lvt_or_t 82 | return cls.default(n) 83 | 84 | @classmethod 85 | def hangul_lvt_or_t(cls, n): 86 | if n is G.T: 87 | return False, cls.hangul_lvt_or_t 88 | return cls.default(n) 89 | 90 | # Emojis 91 | @classmethod 92 | def emoji(cls, n): 93 | if n is G.EXTEND: 94 | return False, cls.emoji 95 | if n is G.ZWJ: 96 | return False, cls.emoji_zjw 97 | return cls.default(n) 98 | 99 | @classmethod 100 | def emoji_zjw(cls, n): 101 | if n is G.EXTENDED_PICTOGRAPHIC: 102 | return False, cls.emoji 103 | return cls.default(n) 104 | 105 | # Regional indication (flag) 106 | @classmethod 107 | def ri(cls, n): 108 | if n is G.REGIONAL_INDICATOR: 109 | return False, cls.default 110 | return cls.default(n) 111 | 112 | class BreakPossibility(Enum): 113 | CERTAIN = "certain" 114 | POSSIBLE = "possible" 115 | NO_BREAK = "nobreak" 116 | 117 | 118 | def get_break_possibility(a, b): 119 | # Probably most common, included as short circuit before checking all else 120 | if a is G.OTHER and b is G.OTHER: 121 | return BreakPossibility.CERTAIN 122 | 123 | assert isinstance(a, G) 124 | assert isinstance(b, G) 125 | 126 | # Only break if preceeded by an uneven number of REGIONAL_INDICATORS 127 | # sot (RI RI)* RI × RI 128 | # [ ^ RI] (RI RI) * RI × RI 129 | if a is G.REGIONAL_INDICATOR and b is G.REGIONAL_INDICATOR: 130 | return BreakPossibility.POSSIBLE 131 | 132 | # (Control | CR | LF) ÷ 133 | # ÷ (Control | CR | LF) 134 | if a in [G.CONTROL, G.CR, G.LF] or b in [G.CONTROL, G.CR, G.LF]: 135 | # CR × LF 136 | if a is G.CR and b is G.LF: 137 | return BreakPossibility.NO_BREAK 138 | else: 139 | return BreakPossibility.CERTAIN 140 | 141 | # L × (L | V | LV | LVT) 142 | if a is G.L and b in [G.L, G.V, G.LV, G.LVT]: 143 | return BreakPossibility.NO_BREAK 144 | 145 | # (LV | V) × (V | T) 146 | if a in [G.LV, G.V] and b in [G.V, G.T]: 147 | return BreakPossibility.NO_BREAK 148 | 149 | # (LVT | T) × T 150 | if a in [G.LVT, G.T] and b is G.T: 151 | return BreakPossibility.NO_BREAK 152 | 153 | # × (Extend | ZWJ) 154 | # × SpacingMark 155 | # Prepend × 156 | if b in [G.EXTEND, G.ZWJ, G.SPACING_MARK] or a is G.PREPEND: 157 | return BreakPossibility.NO_BREAK 158 | 159 | # \p{Extended_Pictographic} Extend* ZWJ × \p{Extended_Pictographic} 160 | if a is G.ZWJ and b is G.EXTENDED_PICTOGRAPHIC: 161 | return BreakPossibility.POSSIBLE 162 | 163 | # everything else, assumes all other rules are included above 164 | return BreakPossibility.CERTAIN 165 | 166 | 167 | def get_last_certain_break_index(string, index): 168 | if index >= len(string): 169 | return len(string) 170 | 171 | prev = get_group(string[index]) 172 | while True: 173 | if index <= 0: 174 | return 0 175 | index -= 1 176 | cur = get_group(string[index]) 177 | if get_break_possibility(cur, prev) == BreakPossibility.CERTAIN: 178 | return index + 1 179 | prev = cur 180 | 181 | 182 | class GraphemeIterator: 183 | def __init__(self, string): 184 | self.str_iter = iter(string) 185 | try: 186 | self.buffer = next(self.str_iter) 187 | except StopIteration: 188 | self.buffer = None 189 | else: 190 | _, state = FSM.default(get_group(self.buffer)) 191 | self.state = state 192 | 193 | def __iter__(self): 194 | return self 195 | 196 | def __next__(self): 197 | for codepoint in self.str_iter: 198 | should_break, state = self.state(get_group(codepoint)) 199 | self.state = state 200 | 201 | if should_break: 202 | return self._break(codepoint) 203 | self.buffer += codepoint 204 | 205 | if self.buffer: 206 | return self._break(None) 207 | 208 | raise StopIteration() 209 | 210 | def _break(self, new): 211 | old_buffer = self.buffer 212 | self.buffer = new 213 | return old_buffer 214 | -------------------------------------------------------------------------------- /grapheme/api.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from grapheme.finder import GraphemeIterator, get_last_certain_break_index 3 | 4 | 5 | UNICODE_VERSION = "13.0.0" 6 | 7 | 8 | def graphemes(string): 9 | """ 10 | Returns an iterator of all graphemes of given string. 11 | 12 | >>> rainbow_flag = "🏳️‍🌈" 13 | >>> [codepoint for codepoint in rainbow_flag] 14 | ['🏳', '️', '\u200d', '🌈'] 15 | >>> list(grapheme.graphemes("multi codepoint grapheme: " + rainbow_flag)) 16 | ['m', 'u', 'l', 't', 'i', ' ', 'c', 'o', 'd', 'e', 'p', 'o', 'i', 'n', 't', ' ', 'g', 'r', 'a', 'p', 'h', 'e', 'm', 'e', ':', ' ', '🏳️‍🌈'] 17 | """ 18 | return iter(GraphemeIterator(string)) 19 | 20 | 21 | def length(string, until=None): 22 | """ 23 | Returns the number of graphemes in the string. 24 | 25 | Note that this functions needs to traverse the full string to calculate the length, 26 | unlike `len(string)` and it's time consumption is linear to the length of the string 27 | (up to the `until` value). 28 | 29 | Only counts up to the `until` argument, if given. This is useful when testing 30 | the length of a string against some limit and the excess length is not interesting. 31 | 32 | >>> rainbow_flag = "🏳️‍🌈" 33 | >>> len(rainbow_flag) 34 | 4 35 | >>> graphemes.length(rainbow_flag) 36 | 1 37 | >>> graphemes.length("".join(str(i) for i in range(100)), 30) 38 | 30 39 | """ 40 | if until is None: 41 | return sum(1 for _ in GraphemeIterator(string)) 42 | 43 | iterator = graphemes(string) 44 | count = 0 45 | while True: 46 | try: 47 | if count >= until: 48 | break 49 | next(iterator) 50 | except StopIteration: 51 | break 52 | else: 53 | count += 1 54 | 55 | return count 56 | 57 | 58 | # todo: should probably use an optimized iterator that only deals with code point counts (optimization) 59 | def grapheme_lengths(string): 60 | """ 61 | Returns an iterator of number of code points in each grapheme of the string. 62 | """ 63 | return iter(len(g) for g in graphemes(string)) 64 | 65 | 66 | def slice(string, start=None, end=None): 67 | """ 68 | Returns a substring of the given string, counting graphemes instead of codepoints. 69 | 70 | Negative indices is currently not supported. 71 | >>> string = "tamil நி (ni)" 72 | 73 | >>> string[:7] 74 | 'tamil ந' 75 | >>> grapheme.slice(string, end=7) 76 | 'tamil நி' 77 | >>> string[7:] 78 | 'ி (ni)' 79 | >>> grapheme.slice(string, 7) 80 | ' (ni)' 81 | """ 82 | 83 | if start is None: 84 | start = 0 85 | if end is not None and start >= end: 86 | return "" 87 | 88 | if start < 0: 89 | raise NotImplementedError("Negative indexing is currently not supported.") 90 | 91 | sum_ = 0 92 | start_index = None 93 | for grapheme_index, grapheme_length in enumerate(grapheme_lengths(string)): 94 | if grapheme_index == start: 95 | start_index = sum_ 96 | elif grapheme_index == end: 97 | return string[start_index:sum_] 98 | sum_ += grapheme_length 99 | 100 | if start_index is not None: 101 | return string[start_index:] 102 | 103 | return "" 104 | 105 | def contains(string, substring): 106 | """ 107 | Returns true if the sequence of graphemes in substring is also present in string. 108 | 109 | This differs from the normal python `in` operator, since the python operator will return 110 | true if the sequence of codepoints are withing the other string without considering 111 | grapheme boundaries. 112 | 113 | Performance notes: Very fast if `substring not in string`, since that also means that 114 | the same graphemes can not be in the two strings. Otherwise this function has linear time 115 | complexity in relation to the string length. It will traverse the sequence of graphemes until 116 | a match is found, so it will generally perform better for grapheme sequences that match early. 117 | 118 | >>> "🇸🇪" in "🇪🇸🇪🇪" 119 | True 120 | >>> grapheme.contains("🇪🇸🇪🇪", "🇸🇪") 121 | False 122 | """ 123 | if substring not in string: 124 | return False 125 | 126 | substr_graphemes = list(graphemes(substring)) 127 | 128 | if len(substr_graphemes) == 0: 129 | return True 130 | elif len(substr_graphemes) == 1: 131 | return substr_graphemes[0] in graphemes(string) 132 | else: 133 | str_iter = graphemes(string) 134 | str_sub_part = [] 135 | for _ in range(len(substr_graphemes)): 136 | try: 137 | str_sub_part.append(next(str_iter)) 138 | except StopIteration: 139 | return False 140 | 141 | for g in str_iter: 142 | if str_sub_part == substr_graphemes: 143 | return True 144 | 145 | str_sub_part.append(g) 146 | str_sub_part.pop(0) 147 | return str_sub_part == substr_graphemes 148 | 149 | 150 | def startswith(string, prefix): 151 | """ 152 | Like str.startswith, but also checks that the string starts with the given prefixes sequence of graphemes. 153 | 154 | str.startswith may return true for a prefix that is not visually represented as a prefix if a grapheme cluster 155 | is continued after the prefix ends. 156 | 157 | >>> grapheme.startswith("✊🏾", "✊") 158 | False 159 | >>> "✊🏾".startswith("✊") 160 | True 161 | """ 162 | return string.startswith(prefix) and safe_split_index(string, len(prefix)) == len(prefix) 163 | 164 | 165 | def endswith(string, suffix): 166 | """ 167 | Like str.endswith, but also checks that the string ends with the given prefixes sequence of graphemes. 168 | 169 | str.endswith may return true for a suffix that is not visually represented as a suffix if a grapheme cluster 170 | is initiated before the suffix starts. 171 | 172 | >>> grapheme.endswith("🏳️‍🌈", "🌈") 173 | False 174 | >>> "🏳️‍🌈".endswith("🌈") 175 | True 176 | """ 177 | expected_index = len(string) - len(suffix) 178 | return string.endswith(suffix) and safe_split_index(string, expected_index) == expected_index 179 | 180 | 181 | def safe_split_index(string, max_len): 182 | """ 183 | Returns the highest index up to `max_len` at which the given string can be sliced, without breaking a grapheme. 184 | 185 | This is useful for when you want to split or take a substring from a string, and don't really care about 186 | the exact grapheme length, but don't want to risk breaking existing graphemes. 187 | 188 | This function does normally not traverse the full grapheme sequence up to the given length, so it can be used 189 | for arbitrarily long strings and high `max_len`s. However, some grapheme boundaries depend on the previous state, 190 | so the worst case performance is O(n). In practice, it's only very long non-broken sequences of country flags 191 | (represented as Regional Indicators) that will perform badly. 192 | 193 | The return value will always be between `0` and `len(string)`. 194 | 195 | >>> string = "tamil நி (ni)" 196 | >>> i = grapheme.safe_split_index(string, 7) 197 | >>> i 198 | 6 199 | >>> string[:i] 200 | 'tamil ' 201 | >>> string[i:] 202 | 'நி (ni)' 203 | """ 204 | last_index = get_last_certain_break_index(string, max_len) 205 | for l in grapheme_lengths(string[last_index:]): 206 | if last_index + l > max_len: 207 | break 208 | last_index += l 209 | return last_index 210 | -------------------------------------------------------------------------------- /grapheme/data/grapheme_break_property.json: -------------------------------------------------------------------------------- 1 | { 2 | "Prepend": { 3 | "single_chars": [ 4 | 1757, 5 | 1807, 6 | 2274, 7 | 3406, 8 | 69821, 9 | 69837, 10 | 71999, 11 | 72001, 12 | 72250, 13 | 73030 14 | ], 15 | "ranges": [ 16 | [ 17 | 1536, 18 | 1541 19 | ], 20 | [ 21 | 70082, 22 | 70083 23 | ], 24 | [ 25 | 72324, 26 | 72329 27 | ] 28 | ] 29 | }, 30 | "CR": { 31 | "single_chars": [ 32 | 13 33 | ], 34 | "ranges": [] 35 | }, 36 | "LF": { 37 | "single_chars": [ 38 | 10 39 | ], 40 | "ranges": [] 41 | }, 42 | "Control": { 43 | "single_chars": [ 44 | 173, 45 | 1564, 46 | 6158, 47 | 8203, 48 | 65279 49 | ], 50 | "ranges": [ 51 | [ 52 | 0, 53 | 9 54 | ], 55 | [ 56 | 11, 57 | 12 58 | ], 59 | [ 60 | 14, 61 | 31 62 | ], 63 | [ 64 | 127, 65 | 159 66 | ], 67 | [ 68 | 8206, 69 | 8207 70 | ], 71 | [ 72 | 8232, 73 | 8238 74 | ], 75 | [ 76 | 8288, 77 | 8303 78 | ], 79 | [ 80 | 65520, 81 | 65531 82 | ], 83 | [ 84 | 78896, 85 | 78904 86 | ], 87 | [ 88 | 113824, 89 | 113827 90 | ], 91 | [ 92 | 119155, 93 | 119162 94 | ], 95 | [ 96 | 917504, 97 | 917535 98 | ], 99 | [ 100 | 917632, 101 | 917759 102 | ], 103 | [ 104 | 918000, 105 | 921599 106 | ] 107 | ] 108 | }, 109 | "Extend": { 110 | "single_chars": [ 111 | 1471, 112 | 1479, 113 | 1648, 114 | 1809, 115 | 2045, 116 | 2362, 117 | 2364, 118 | 2381, 119 | 2433, 120 | 2492, 121 | 2494, 122 | 2509, 123 | 2519, 124 | 2558, 125 | 2620, 126 | 2641, 127 | 2677, 128 | 2748, 129 | 2765, 130 | 2817, 131 | 2876, 132 | 2878, 133 | 2879, 134 | 2893, 135 | 2946, 136 | 3006, 137 | 3008, 138 | 3021, 139 | 3031, 140 | 3072, 141 | 3076, 142 | 3201, 143 | 3260, 144 | 3263, 145 | 3266, 146 | 3270, 147 | 3390, 148 | 3405, 149 | 3415, 150 | 3457, 151 | 3530, 152 | 3535, 153 | 3542, 154 | 3551, 155 | 3633, 156 | 3761, 157 | 3893, 158 | 3895, 159 | 3897, 160 | 4038, 161 | 4226, 162 | 4237, 163 | 4253, 164 | 6086, 165 | 6109, 166 | 6313, 167 | 6450, 168 | 6683, 169 | 6742, 170 | 6752, 171 | 6754, 172 | 6783, 173 | 6972, 174 | 6978, 175 | 7142, 176 | 7149, 177 | 7405, 178 | 7412, 179 | 8204, 180 | 11647, 181 | 43010, 182 | 43014, 183 | 43019, 184 | 43052, 185 | 43263, 186 | 43443, 187 | 43493, 188 | 43587, 189 | 43596, 190 | 43644, 191 | 43696, 192 | 43713, 193 | 43766, 194 | 44005, 195 | 44008, 196 | 44013, 197 | 64286, 198 | 66045, 199 | 66272, 200 | 68159, 201 | 69633, 202 | 70003, 203 | 70095, 204 | 70196, 205 | 70206, 206 | 70367, 207 | 70462, 208 | 70464, 209 | 70487, 210 | 70726, 211 | 70750, 212 | 70832, 213 | 70842, 214 | 70845, 215 | 71087, 216 | 71229, 217 | 71339, 218 | 71341, 219 | 71351, 220 | 71984, 221 | 71998, 222 | 72003, 223 | 72160, 224 | 72263, 225 | 72767, 226 | 73018, 227 | 73031, 228 | 73109, 229 | 73111, 230 | 94031, 231 | 94180, 232 | 119141, 233 | 121461, 234 | 121476 235 | ], 236 | "ranges": [ 237 | [ 238 | 768, 239 | 879 240 | ], 241 | [ 242 | 1155, 243 | 1161 244 | ], 245 | [ 246 | 1425, 247 | 1469 248 | ], 249 | [ 250 | 1473, 251 | 1474 252 | ], 253 | [ 254 | 1476, 255 | 1477 256 | ], 257 | [ 258 | 1552, 259 | 1562 260 | ], 261 | [ 262 | 1611, 263 | 1631 264 | ], 265 | [ 266 | 1750, 267 | 1756 268 | ], 269 | [ 270 | 1759, 271 | 1764 272 | ], 273 | [ 274 | 1767, 275 | 1768 276 | ], 277 | [ 278 | 1770, 279 | 1773 280 | ], 281 | [ 282 | 1840, 283 | 1866 284 | ], 285 | [ 286 | 1958, 287 | 1968 288 | ], 289 | [ 290 | 2027, 291 | 2035 292 | ], 293 | [ 294 | 2070, 295 | 2073 296 | ], 297 | [ 298 | 2075, 299 | 2083 300 | ], 301 | [ 302 | 2085, 303 | 2087 304 | ], 305 | [ 306 | 2089, 307 | 2093 308 | ], 309 | [ 310 | 2137, 311 | 2139 312 | ], 313 | [ 314 | 2259, 315 | 2273 316 | ], 317 | [ 318 | 2275, 319 | 2306 320 | ], 321 | [ 322 | 2369, 323 | 2376 324 | ], 325 | [ 326 | 2385, 327 | 2391 328 | ], 329 | [ 330 | 2402, 331 | 2403 332 | ], 333 | [ 334 | 2497, 335 | 2500 336 | ], 337 | [ 338 | 2530, 339 | 2531 340 | ], 341 | [ 342 | 2561, 343 | 2562 344 | ], 345 | [ 346 | 2625, 347 | 2626 348 | ], 349 | [ 350 | 2631, 351 | 2632 352 | ], 353 | [ 354 | 2635, 355 | 2637 356 | ], 357 | [ 358 | 2672, 359 | 2673 360 | ], 361 | [ 362 | 2689, 363 | 2690 364 | ], 365 | [ 366 | 2753, 367 | 2757 368 | ], 369 | [ 370 | 2759, 371 | 2760 372 | ], 373 | [ 374 | 2786, 375 | 2787 376 | ], 377 | [ 378 | 2810, 379 | 2815 380 | ], 381 | [ 382 | 2881, 383 | 2884 384 | ], 385 | [ 386 | 2901, 387 | 2903 388 | ], 389 | [ 390 | 2914, 391 | 2915 392 | ], 393 | [ 394 | 3134, 395 | 3136 396 | ], 397 | [ 398 | 3142, 399 | 3144 400 | ], 401 | [ 402 | 3146, 403 | 3149 404 | ], 405 | [ 406 | 3157, 407 | 3158 408 | ], 409 | [ 410 | 3170, 411 | 3171 412 | ], 413 | [ 414 | 3276, 415 | 3277 416 | ], 417 | [ 418 | 3285, 419 | 3286 420 | ], 421 | [ 422 | 3298, 423 | 3299 424 | ], 425 | [ 426 | 3328, 427 | 3329 428 | ], 429 | [ 430 | 3387, 431 | 3388 432 | ], 433 | [ 434 | 3393, 435 | 3396 436 | ], 437 | [ 438 | 3426, 439 | 3427 440 | ], 441 | [ 442 | 3538, 443 | 3540 444 | ], 445 | [ 446 | 3636, 447 | 3642 448 | ], 449 | [ 450 | 3655, 451 | 3662 452 | ], 453 | [ 454 | 3764, 455 | 3772 456 | ], 457 | [ 458 | 3784, 459 | 3789 460 | ], 461 | [ 462 | 3864, 463 | 3865 464 | ], 465 | [ 466 | 3953, 467 | 3966 468 | ], 469 | [ 470 | 3968, 471 | 3972 472 | ], 473 | [ 474 | 3974, 475 | 3975 476 | ], 477 | [ 478 | 3981, 479 | 3991 480 | ], 481 | [ 482 | 3993, 483 | 4028 484 | ], 485 | [ 486 | 4141, 487 | 4144 488 | ], 489 | [ 490 | 4146, 491 | 4151 492 | ], 493 | [ 494 | 4153, 495 | 4154 496 | ], 497 | [ 498 | 4157, 499 | 4158 500 | ], 501 | [ 502 | 4184, 503 | 4185 504 | ], 505 | [ 506 | 4190, 507 | 4192 508 | ], 509 | [ 510 | 4209, 511 | 4212 512 | ], 513 | [ 514 | 4229, 515 | 4230 516 | ], 517 | [ 518 | 4957, 519 | 4959 520 | ], 521 | [ 522 | 5906, 523 | 5908 524 | ], 525 | [ 526 | 5938, 527 | 5940 528 | ], 529 | [ 530 | 5970, 531 | 5971 532 | ], 533 | [ 534 | 6002, 535 | 6003 536 | ], 537 | [ 538 | 6068, 539 | 6069 540 | ], 541 | [ 542 | 6071, 543 | 6077 544 | ], 545 | [ 546 | 6089, 547 | 6099 548 | ], 549 | [ 550 | 6155, 551 | 6157 552 | ], 553 | [ 554 | 6277, 555 | 6278 556 | ], 557 | [ 558 | 6432, 559 | 6434 560 | ], 561 | [ 562 | 6439, 563 | 6440 564 | ], 565 | [ 566 | 6457, 567 | 6459 568 | ], 569 | [ 570 | 6679, 571 | 6680 572 | ], 573 | [ 574 | 6744, 575 | 6750 576 | ], 577 | [ 578 | 6757, 579 | 6764 580 | ], 581 | [ 582 | 6771, 583 | 6780 584 | ], 585 | [ 586 | 6832, 587 | 6848 588 | ], 589 | [ 590 | 6912, 591 | 6915 592 | ], 593 | [ 594 | 6964, 595 | 6970 596 | ], 597 | [ 598 | 7019, 599 | 7027 600 | ], 601 | [ 602 | 7040, 603 | 7041 604 | ], 605 | [ 606 | 7074, 607 | 7077 608 | ], 609 | [ 610 | 7080, 611 | 7081 612 | ], 613 | [ 614 | 7083, 615 | 7085 616 | ], 617 | [ 618 | 7144, 619 | 7145 620 | ], 621 | [ 622 | 7151, 623 | 7153 624 | ], 625 | [ 626 | 7212, 627 | 7219 628 | ], 629 | [ 630 | 7222, 631 | 7223 632 | ], 633 | [ 634 | 7376, 635 | 7378 636 | ], 637 | [ 638 | 7380, 639 | 7392 640 | ], 641 | [ 642 | 7394, 643 | 7400 644 | ], 645 | [ 646 | 7416, 647 | 7417 648 | ], 649 | [ 650 | 7616, 651 | 7673 652 | ], 653 | [ 654 | 7675, 655 | 7679 656 | ], 657 | [ 658 | 8400, 659 | 8432 660 | ], 661 | [ 662 | 11503, 663 | 11505 664 | ], 665 | [ 666 | 11744, 667 | 11775 668 | ], 669 | [ 670 | 12330, 671 | 12335 672 | ], 673 | [ 674 | 12441, 675 | 12442 676 | ], 677 | [ 678 | 42607, 679 | 42610 680 | ], 681 | [ 682 | 42612, 683 | 42621 684 | ], 685 | [ 686 | 42654, 687 | 42655 688 | ], 689 | [ 690 | 42736, 691 | 42737 692 | ], 693 | [ 694 | 43045, 695 | 43046 696 | ], 697 | [ 698 | 43204, 699 | 43205 700 | ], 701 | [ 702 | 43232, 703 | 43249 704 | ], 705 | [ 706 | 43302, 707 | 43309 708 | ], 709 | [ 710 | 43335, 711 | 43345 712 | ], 713 | [ 714 | 43392, 715 | 43394 716 | ], 717 | [ 718 | 43446, 719 | 43449 720 | ], 721 | [ 722 | 43452, 723 | 43453 724 | ], 725 | [ 726 | 43561, 727 | 43566 728 | ], 729 | [ 730 | 43569, 731 | 43570 732 | ], 733 | [ 734 | 43573, 735 | 43574 736 | ], 737 | [ 738 | 43698, 739 | 43700 740 | ], 741 | [ 742 | 43703, 743 | 43704 744 | ], 745 | [ 746 | 43710, 747 | 43711 748 | ], 749 | [ 750 | 43756, 751 | 43757 752 | ], 753 | [ 754 | 65024, 755 | 65039 756 | ], 757 | [ 758 | 65056, 759 | 65071 760 | ], 761 | [ 762 | 65438, 763 | 65439 764 | ], 765 | [ 766 | 66422, 767 | 66426 768 | ], 769 | [ 770 | 68097, 771 | 68099 772 | ], 773 | [ 774 | 68101, 775 | 68102 776 | ], 777 | [ 778 | 68108, 779 | 68111 780 | ], 781 | [ 782 | 68152, 783 | 68154 784 | ], 785 | [ 786 | 68325, 787 | 68326 788 | ], 789 | [ 790 | 68900, 791 | 68903 792 | ], 793 | [ 794 | 69291, 795 | 69292 796 | ], 797 | [ 798 | 69446, 799 | 69456 800 | ], 801 | [ 802 | 69688, 803 | 69702 804 | ], 805 | [ 806 | 69759, 807 | 69761 808 | ], 809 | [ 810 | 69811, 811 | 69814 812 | ], 813 | [ 814 | 69817, 815 | 69818 816 | ], 817 | [ 818 | 69888, 819 | 69890 820 | ], 821 | [ 822 | 69927, 823 | 69931 824 | ], 825 | [ 826 | 69933, 827 | 69940 828 | ], 829 | [ 830 | 70016, 831 | 70017 832 | ], 833 | [ 834 | 70070, 835 | 70078 836 | ], 837 | [ 838 | 70089, 839 | 70092 840 | ], 841 | [ 842 | 70191, 843 | 70193 844 | ], 845 | [ 846 | 70198, 847 | 70199 848 | ], 849 | [ 850 | 70371, 851 | 70378 852 | ], 853 | [ 854 | 70400, 855 | 70401 856 | ], 857 | [ 858 | 70459, 859 | 70460 860 | ], 861 | [ 862 | 70502, 863 | 70508 864 | ], 865 | [ 866 | 70512, 867 | 70516 868 | ], 869 | [ 870 | 70712, 871 | 70719 872 | ], 873 | [ 874 | 70722, 875 | 70724 876 | ], 877 | [ 878 | 70835, 879 | 70840 880 | ], 881 | [ 882 | 70847, 883 | 70848 884 | ], 885 | [ 886 | 70850, 887 | 70851 888 | ], 889 | [ 890 | 71090, 891 | 71093 892 | ], 893 | [ 894 | 71100, 895 | 71101 896 | ], 897 | [ 898 | 71103, 899 | 71104 900 | ], 901 | [ 902 | 71132, 903 | 71133 904 | ], 905 | [ 906 | 71219, 907 | 71226 908 | ], 909 | [ 910 | 71231, 911 | 71232 912 | ], 913 | [ 914 | 71344, 915 | 71349 916 | ], 917 | [ 918 | 71453, 919 | 71455 920 | ], 921 | [ 922 | 71458, 923 | 71461 924 | ], 925 | [ 926 | 71463, 927 | 71467 928 | ], 929 | [ 930 | 71727, 931 | 71735 932 | ], 933 | [ 934 | 71737, 935 | 71738 936 | ], 937 | [ 938 | 71995, 939 | 71996 940 | ], 941 | [ 942 | 72148, 943 | 72151 944 | ], 945 | [ 946 | 72154, 947 | 72155 948 | ], 949 | [ 950 | 72193, 951 | 72202 952 | ], 953 | [ 954 | 72243, 955 | 72248 956 | ], 957 | [ 958 | 72251, 959 | 72254 960 | ], 961 | [ 962 | 72273, 963 | 72278 964 | ], 965 | [ 966 | 72281, 967 | 72283 968 | ], 969 | [ 970 | 72330, 971 | 72342 972 | ], 973 | [ 974 | 72344, 975 | 72345 976 | ], 977 | [ 978 | 72752, 979 | 72758 980 | ], 981 | [ 982 | 72760, 983 | 72765 984 | ], 985 | [ 986 | 72850, 987 | 72871 988 | ], 989 | [ 990 | 72874, 991 | 72880 992 | ], 993 | [ 994 | 72882, 995 | 72883 996 | ], 997 | [ 998 | 72885, 999 | 72886 1000 | ], 1001 | [ 1002 | 73009, 1003 | 73014 1004 | ], 1005 | [ 1006 | 73020, 1007 | 73021 1008 | ], 1009 | [ 1010 | 73023, 1011 | 73029 1012 | ], 1013 | [ 1014 | 73104, 1015 | 73105 1016 | ], 1017 | [ 1018 | 73459, 1019 | 73460 1020 | ], 1021 | [ 1022 | 92912, 1023 | 92916 1024 | ], 1025 | [ 1026 | 92976, 1027 | 92982 1028 | ], 1029 | [ 1030 | 94095, 1031 | 94098 1032 | ], 1033 | [ 1034 | 113821, 1035 | 113822 1036 | ], 1037 | [ 1038 | 119143, 1039 | 119145 1040 | ], 1041 | [ 1042 | 119150, 1043 | 119154 1044 | ], 1045 | [ 1046 | 119163, 1047 | 119170 1048 | ], 1049 | [ 1050 | 119173, 1051 | 119179 1052 | ], 1053 | [ 1054 | 119210, 1055 | 119213 1056 | ], 1057 | [ 1058 | 119362, 1059 | 119364 1060 | ], 1061 | [ 1062 | 121344, 1063 | 121398 1064 | ], 1065 | [ 1066 | 121403, 1067 | 121452 1068 | ], 1069 | [ 1070 | 121499, 1071 | 121503 1072 | ], 1073 | [ 1074 | 121505, 1075 | 121519 1076 | ], 1077 | [ 1078 | 122880, 1079 | 122886 1080 | ], 1081 | [ 1082 | 122888, 1083 | 122904 1084 | ], 1085 | [ 1086 | 122907, 1087 | 122913 1088 | ], 1089 | [ 1090 | 122915, 1091 | 122916 1092 | ], 1093 | [ 1094 | 122918, 1095 | 122922 1096 | ], 1097 | [ 1098 | 123184, 1099 | 123190 1100 | ], 1101 | [ 1102 | 123628, 1103 | 123631 1104 | ], 1105 | [ 1106 | 125136, 1107 | 125142 1108 | ], 1109 | [ 1110 | 125252, 1111 | 125258 1112 | ], 1113 | [ 1114 | 127995, 1115 | 127999 1116 | ], 1117 | [ 1118 | 917536, 1119 | 917631 1120 | ], 1121 | [ 1122 | 917760, 1123 | 917999 1124 | ] 1125 | ] 1126 | }, 1127 | "Regional_Indicator": { 1128 | "single_chars": [], 1129 | "ranges": [ 1130 | [ 1131 | 127462, 1132 | 127487 1133 | ] 1134 | ] 1135 | }, 1136 | "SpacingMark": { 1137 | "single_chars": [ 1138 | 2307, 1139 | 2363, 1140 | 2563, 1141 | 2691, 1142 | 2761, 1143 | 2880, 1144 | 3007, 1145 | 3262, 1146 | 3635, 1147 | 3763, 1148 | 3967, 1149 | 4145, 1150 | 4228, 1151 | 6070, 1152 | 6741, 1153 | 6743, 1154 | 6916, 1155 | 6971, 1156 | 7042, 1157 | 7073, 1158 | 7082, 1159 | 7143, 1160 | 7150, 1161 | 7393, 1162 | 7415, 1163 | 43047, 1164 | 43395, 1165 | 43597, 1166 | 43755, 1167 | 43765, 1168 | 44012, 1169 | 69632, 1170 | 69634, 1171 | 69762, 1172 | 69932, 1173 | 70018, 1174 | 70094, 1175 | 70197, 1176 | 70463, 1177 | 70725, 1178 | 70841, 1179 | 70846, 1180 | 70849, 1181 | 71102, 1182 | 71230, 1183 | 71340, 1184 | 71350, 1185 | 71462, 1186 | 71736, 1187 | 71997, 1188 | 72000, 1189 | 72002, 1190 | 72164, 1191 | 72249, 1192 | 72343, 1193 | 72751, 1194 | 72766, 1195 | 72873, 1196 | 72881, 1197 | 72884, 1198 | 73110, 1199 | 119142, 1200 | 119149 1201 | ], 1202 | "ranges": [ 1203 | [ 1204 | 2366, 1205 | 2368 1206 | ], 1207 | [ 1208 | 2377, 1209 | 2380 1210 | ], 1211 | [ 1212 | 2382, 1213 | 2383 1214 | ], 1215 | [ 1216 | 2434, 1217 | 2435 1218 | ], 1219 | [ 1220 | 2495, 1221 | 2496 1222 | ], 1223 | [ 1224 | 2503, 1225 | 2504 1226 | ], 1227 | [ 1228 | 2507, 1229 | 2508 1230 | ], 1231 | [ 1232 | 2622, 1233 | 2624 1234 | ], 1235 | [ 1236 | 2750, 1237 | 2752 1238 | ], 1239 | [ 1240 | 2763, 1241 | 2764 1242 | ], 1243 | [ 1244 | 2818, 1245 | 2819 1246 | ], 1247 | [ 1248 | 2887, 1249 | 2888 1250 | ], 1251 | [ 1252 | 2891, 1253 | 2892 1254 | ], 1255 | [ 1256 | 3009, 1257 | 3010 1258 | ], 1259 | [ 1260 | 3014, 1261 | 3016 1262 | ], 1263 | [ 1264 | 3018, 1265 | 3020 1266 | ], 1267 | [ 1268 | 3073, 1269 | 3075 1270 | ], 1271 | [ 1272 | 3137, 1273 | 3140 1274 | ], 1275 | [ 1276 | 3202, 1277 | 3203 1278 | ], 1279 | [ 1280 | 3264, 1281 | 3265 1282 | ], 1283 | [ 1284 | 3267, 1285 | 3268 1286 | ], 1287 | [ 1288 | 3271, 1289 | 3272 1290 | ], 1291 | [ 1292 | 3274, 1293 | 3275 1294 | ], 1295 | [ 1296 | 3330, 1297 | 3331 1298 | ], 1299 | [ 1300 | 3391, 1301 | 3392 1302 | ], 1303 | [ 1304 | 3398, 1305 | 3400 1306 | ], 1307 | [ 1308 | 3402, 1309 | 3404 1310 | ], 1311 | [ 1312 | 3458, 1313 | 3459 1314 | ], 1315 | [ 1316 | 3536, 1317 | 3537 1318 | ], 1319 | [ 1320 | 3544, 1321 | 3550 1322 | ], 1323 | [ 1324 | 3570, 1325 | 3571 1326 | ], 1327 | [ 1328 | 3902, 1329 | 3903 1330 | ], 1331 | [ 1332 | 4155, 1333 | 4156 1334 | ], 1335 | [ 1336 | 4182, 1337 | 4183 1338 | ], 1339 | [ 1340 | 6078, 1341 | 6085 1342 | ], 1343 | [ 1344 | 6087, 1345 | 6088 1346 | ], 1347 | [ 1348 | 6435, 1349 | 6438 1350 | ], 1351 | [ 1352 | 6441, 1353 | 6443 1354 | ], 1355 | [ 1356 | 6448, 1357 | 6449 1358 | ], 1359 | [ 1360 | 6451, 1361 | 6456 1362 | ], 1363 | [ 1364 | 6681, 1365 | 6682 1366 | ], 1367 | [ 1368 | 6765, 1369 | 6770 1370 | ], 1371 | [ 1372 | 6973, 1373 | 6977 1374 | ], 1375 | [ 1376 | 6979, 1377 | 6980 1378 | ], 1379 | [ 1380 | 7078, 1381 | 7079 1382 | ], 1383 | [ 1384 | 7146, 1385 | 7148 1386 | ], 1387 | [ 1388 | 7154, 1389 | 7155 1390 | ], 1391 | [ 1392 | 7204, 1393 | 7211 1394 | ], 1395 | [ 1396 | 7220, 1397 | 7221 1398 | ], 1399 | [ 1400 | 43043, 1401 | 43044 1402 | ], 1403 | [ 1404 | 43136, 1405 | 43137 1406 | ], 1407 | [ 1408 | 43188, 1409 | 43203 1410 | ], 1411 | [ 1412 | 43346, 1413 | 43347 1414 | ], 1415 | [ 1416 | 43444, 1417 | 43445 1418 | ], 1419 | [ 1420 | 43450, 1421 | 43451 1422 | ], 1423 | [ 1424 | 43454, 1425 | 43456 1426 | ], 1427 | [ 1428 | 43567, 1429 | 43568 1430 | ], 1431 | [ 1432 | 43571, 1433 | 43572 1434 | ], 1435 | [ 1436 | 43758, 1437 | 43759 1438 | ], 1439 | [ 1440 | 44003, 1441 | 44004 1442 | ], 1443 | [ 1444 | 44006, 1445 | 44007 1446 | ], 1447 | [ 1448 | 44009, 1449 | 44010 1450 | ], 1451 | [ 1452 | 69808, 1453 | 69810 1454 | ], 1455 | [ 1456 | 69815, 1457 | 69816 1458 | ], 1459 | [ 1460 | 69957, 1461 | 69958 1462 | ], 1463 | [ 1464 | 70067, 1465 | 70069 1466 | ], 1467 | [ 1468 | 70079, 1469 | 70080 1470 | ], 1471 | [ 1472 | 70188, 1473 | 70190 1474 | ], 1475 | [ 1476 | 70194, 1477 | 70195 1478 | ], 1479 | [ 1480 | 70368, 1481 | 70370 1482 | ], 1483 | [ 1484 | 70402, 1485 | 70403 1486 | ], 1487 | [ 1488 | 70465, 1489 | 70468 1490 | ], 1491 | [ 1492 | 70471, 1493 | 70472 1494 | ], 1495 | [ 1496 | 70475, 1497 | 70477 1498 | ], 1499 | [ 1500 | 70498, 1501 | 70499 1502 | ], 1503 | [ 1504 | 70709, 1505 | 70711 1506 | ], 1507 | [ 1508 | 70720, 1509 | 70721 1510 | ], 1511 | [ 1512 | 70833, 1513 | 70834 1514 | ], 1515 | [ 1516 | 70843, 1517 | 70844 1518 | ], 1519 | [ 1520 | 71088, 1521 | 71089 1522 | ], 1523 | [ 1524 | 71096, 1525 | 71099 1526 | ], 1527 | [ 1528 | 71216, 1529 | 71218 1530 | ], 1531 | [ 1532 | 71227, 1533 | 71228 1534 | ], 1535 | [ 1536 | 71342, 1537 | 71343 1538 | ], 1539 | [ 1540 | 71456, 1541 | 71457 1542 | ], 1543 | [ 1544 | 71724, 1545 | 71726 1546 | ], 1547 | [ 1548 | 71985, 1549 | 71989 1550 | ], 1551 | [ 1552 | 71991, 1553 | 71992 1554 | ], 1555 | [ 1556 | 72145, 1557 | 72147 1558 | ], 1559 | [ 1560 | 72156, 1561 | 72159 1562 | ], 1563 | [ 1564 | 72279, 1565 | 72280 1566 | ], 1567 | [ 1568 | 73098, 1569 | 73102 1570 | ], 1571 | [ 1572 | 73107, 1573 | 73108 1574 | ], 1575 | [ 1576 | 73461, 1577 | 73462 1578 | ], 1579 | [ 1580 | 94033, 1581 | 94087 1582 | ], 1583 | [ 1584 | 94192, 1585 | 94193 1586 | ] 1587 | ] 1588 | }, 1589 | "L": { 1590 | "single_chars": [], 1591 | "ranges": [ 1592 | [ 1593 | 4352, 1594 | 4447 1595 | ], 1596 | [ 1597 | 43360, 1598 | 43388 1599 | ] 1600 | ] 1601 | }, 1602 | "V": { 1603 | "single_chars": [], 1604 | "ranges": [ 1605 | [ 1606 | 4448, 1607 | 4519 1608 | ], 1609 | [ 1610 | 55216, 1611 | 55238 1612 | ] 1613 | ] 1614 | }, 1615 | "T": { 1616 | "single_chars": [], 1617 | "ranges": [ 1618 | [ 1619 | 4520, 1620 | 4607 1621 | ], 1622 | [ 1623 | 55243, 1624 | 55291 1625 | ] 1626 | ] 1627 | }, 1628 | "LV": { 1629 | "single_chars": [ 1630 | 44032, 1631 | 44060, 1632 | 44088, 1633 | 44116, 1634 | 44144, 1635 | 44172, 1636 | 44200, 1637 | 44228, 1638 | 44256, 1639 | 44284, 1640 | 44312, 1641 | 44340, 1642 | 44368, 1643 | 44396, 1644 | 44424, 1645 | 44452, 1646 | 44480, 1647 | 44508, 1648 | 44536, 1649 | 44564, 1650 | 44592, 1651 | 44620, 1652 | 44648, 1653 | 44676, 1654 | 44704, 1655 | 44732, 1656 | 44760, 1657 | 44788, 1658 | 44816, 1659 | 44844, 1660 | 44872, 1661 | 44900, 1662 | 44928, 1663 | 44956, 1664 | 44984, 1665 | 45012, 1666 | 45040, 1667 | 45068, 1668 | 45096, 1669 | 45124, 1670 | 45152, 1671 | 45180, 1672 | 45208, 1673 | 45236, 1674 | 45264, 1675 | 45292, 1676 | 45320, 1677 | 45348, 1678 | 45376, 1679 | 45404, 1680 | 45432, 1681 | 45460, 1682 | 45488, 1683 | 45516, 1684 | 45544, 1685 | 45572, 1686 | 45600, 1687 | 45628, 1688 | 45656, 1689 | 45684, 1690 | 45712, 1691 | 45740, 1692 | 45768, 1693 | 45796, 1694 | 45824, 1695 | 45852, 1696 | 45880, 1697 | 45908, 1698 | 45936, 1699 | 45964, 1700 | 45992, 1701 | 46020, 1702 | 46048, 1703 | 46076, 1704 | 46104, 1705 | 46132, 1706 | 46160, 1707 | 46188, 1708 | 46216, 1709 | 46244, 1710 | 46272, 1711 | 46300, 1712 | 46328, 1713 | 46356, 1714 | 46384, 1715 | 46412, 1716 | 46440, 1717 | 46468, 1718 | 46496, 1719 | 46524, 1720 | 46552, 1721 | 46580, 1722 | 46608, 1723 | 46636, 1724 | 46664, 1725 | 46692, 1726 | 46720, 1727 | 46748, 1728 | 46776, 1729 | 46804, 1730 | 46832, 1731 | 46860, 1732 | 46888, 1733 | 46916, 1734 | 46944, 1735 | 46972, 1736 | 47000, 1737 | 47028, 1738 | 47056, 1739 | 47084, 1740 | 47112, 1741 | 47140, 1742 | 47168, 1743 | 47196, 1744 | 47224, 1745 | 47252, 1746 | 47280, 1747 | 47308, 1748 | 47336, 1749 | 47364, 1750 | 47392, 1751 | 47420, 1752 | 47448, 1753 | 47476, 1754 | 47504, 1755 | 47532, 1756 | 47560, 1757 | 47588, 1758 | 47616, 1759 | 47644, 1760 | 47672, 1761 | 47700, 1762 | 47728, 1763 | 47756, 1764 | 47784, 1765 | 47812, 1766 | 47840, 1767 | 47868, 1768 | 47896, 1769 | 47924, 1770 | 47952, 1771 | 47980, 1772 | 48008, 1773 | 48036, 1774 | 48064, 1775 | 48092, 1776 | 48120, 1777 | 48148, 1778 | 48176, 1779 | 48204, 1780 | 48232, 1781 | 48260, 1782 | 48288, 1783 | 48316, 1784 | 48344, 1785 | 48372, 1786 | 48400, 1787 | 48428, 1788 | 48456, 1789 | 48484, 1790 | 48512, 1791 | 48540, 1792 | 48568, 1793 | 48596, 1794 | 48624, 1795 | 48652, 1796 | 48680, 1797 | 48708, 1798 | 48736, 1799 | 48764, 1800 | 48792, 1801 | 48820, 1802 | 48848, 1803 | 48876, 1804 | 48904, 1805 | 48932, 1806 | 48960, 1807 | 48988, 1808 | 49016, 1809 | 49044, 1810 | 49072, 1811 | 49100, 1812 | 49128, 1813 | 49156, 1814 | 49184, 1815 | 49212, 1816 | 49240, 1817 | 49268, 1818 | 49296, 1819 | 49324, 1820 | 49352, 1821 | 49380, 1822 | 49408, 1823 | 49436, 1824 | 49464, 1825 | 49492, 1826 | 49520, 1827 | 49548, 1828 | 49576, 1829 | 49604, 1830 | 49632, 1831 | 49660, 1832 | 49688, 1833 | 49716, 1834 | 49744, 1835 | 49772, 1836 | 49800, 1837 | 49828, 1838 | 49856, 1839 | 49884, 1840 | 49912, 1841 | 49940, 1842 | 49968, 1843 | 49996, 1844 | 50024, 1845 | 50052, 1846 | 50080, 1847 | 50108, 1848 | 50136, 1849 | 50164, 1850 | 50192, 1851 | 50220, 1852 | 50248, 1853 | 50276, 1854 | 50304, 1855 | 50332, 1856 | 50360, 1857 | 50388, 1858 | 50416, 1859 | 50444, 1860 | 50472, 1861 | 50500, 1862 | 50528, 1863 | 50556, 1864 | 50584, 1865 | 50612, 1866 | 50640, 1867 | 50668, 1868 | 50696, 1869 | 50724, 1870 | 50752, 1871 | 50780, 1872 | 50808, 1873 | 50836, 1874 | 50864, 1875 | 50892, 1876 | 50920, 1877 | 50948, 1878 | 50976, 1879 | 51004, 1880 | 51032, 1881 | 51060, 1882 | 51088, 1883 | 51116, 1884 | 51144, 1885 | 51172, 1886 | 51200, 1887 | 51228, 1888 | 51256, 1889 | 51284, 1890 | 51312, 1891 | 51340, 1892 | 51368, 1893 | 51396, 1894 | 51424, 1895 | 51452, 1896 | 51480, 1897 | 51508, 1898 | 51536, 1899 | 51564, 1900 | 51592, 1901 | 51620, 1902 | 51648, 1903 | 51676, 1904 | 51704, 1905 | 51732, 1906 | 51760, 1907 | 51788, 1908 | 51816, 1909 | 51844, 1910 | 51872, 1911 | 51900, 1912 | 51928, 1913 | 51956, 1914 | 51984, 1915 | 52012, 1916 | 52040, 1917 | 52068, 1918 | 52096, 1919 | 52124, 1920 | 52152, 1921 | 52180, 1922 | 52208, 1923 | 52236, 1924 | 52264, 1925 | 52292, 1926 | 52320, 1927 | 52348, 1928 | 52376, 1929 | 52404, 1930 | 52432, 1931 | 52460, 1932 | 52488, 1933 | 52516, 1934 | 52544, 1935 | 52572, 1936 | 52600, 1937 | 52628, 1938 | 52656, 1939 | 52684, 1940 | 52712, 1941 | 52740, 1942 | 52768, 1943 | 52796, 1944 | 52824, 1945 | 52852, 1946 | 52880, 1947 | 52908, 1948 | 52936, 1949 | 52964, 1950 | 52992, 1951 | 53020, 1952 | 53048, 1953 | 53076, 1954 | 53104, 1955 | 53132, 1956 | 53160, 1957 | 53188, 1958 | 53216, 1959 | 53244, 1960 | 53272, 1961 | 53300, 1962 | 53328, 1963 | 53356, 1964 | 53384, 1965 | 53412, 1966 | 53440, 1967 | 53468, 1968 | 53496, 1969 | 53524, 1970 | 53552, 1971 | 53580, 1972 | 53608, 1973 | 53636, 1974 | 53664, 1975 | 53692, 1976 | 53720, 1977 | 53748, 1978 | 53776, 1979 | 53804, 1980 | 53832, 1981 | 53860, 1982 | 53888, 1983 | 53916, 1984 | 53944, 1985 | 53972, 1986 | 54000, 1987 | 54028, 1988 | 54056, 1989 | 54084, 1990 | 54112, 1991 | 54140, 1992 | 54168, 1993 | 54196, 1994 | 54224, 1995 | 54252, 1996 | 54280, 1997 | 54308, 1998 | 54336, 1999 | 54364, 2000 | 54392, 2001 | 54420, 2002 | 54448, 2003 | 54476, 2004 | 54504, 2005 | 54532, 2006 | 54560, 2007 | 54588, 2008 | 54616, 2009 | 54644, 2010 | 54672, 2011 | 54700, 2012 | 54728, 2013 | 54756, 2014 | 54784, 2015 | 54812, 2016 | 54840, 2017 | 54868, 2018 | 54896, 2019 | 54924, 2020 | 54952, 2021 | 54980, 2022 | 55008, 2023 | 55036, 2024 | 55064, 2025 | 55092, 2026 | 55120, 2027 | 55148, 2028 | 55176 2029 | ], 2030 | "ranges": [] 2031 | }, 2032 | "LVT": { 2033 | "single_chars": [], 2034 | "ranges": [ 2035 | [ 2036 | 44033, 2037 | 44059 2038 | ], 2039 | [ 2040 | 44061, 2041 | 44087 2042 | ], 2043 | [ 2044 | 44089, 2045 | 44115 2046 | ], 2047 | [ 2048 | 44117, 2049 | 44143 2050 | ], 2051 | [ 2052 | 44145, 2053 | 44171 2054 | ], 2055 | [ 2056 | 44173, 2057 | 44199 2058 | ], 2059 | [ 2060 | 44201, 2061 | 44227 2062 | ], 2063 | [ 2064 | 44229, 2065 | 44255 2066 | ], 2067 | [ 2068 | 44257, 2069 | 44283 2070 | ], 2071 | [ 2072 | 44285, 2073 | 44311 2074 | ], 2075 | [ 2076 | 44313, 2077 | 44339 2078 | ], 2079 | [ 2080 | 44341, 2081 | 44367 2082 | ], 2083 | [ 2084 | 44369, 2085 | 44395 2086 | ], 2087 | [ 2088 | 44397, 2089 | 44423 2090 | ], 2091 | [ 2092 | 44425, 2093 | 44451 2094 | ], 2095 | [ 2096 | 44453, 2097 | 44479 2098 | ], 2099 | [ 2100 | 44481, 2101 | 44507 2102 | ], 2103 | [ 2104 | 44509, 2105 | 44535 2106 | ], 2107 | [ 2108 | 44537, 2109 | 44563 2110 | ], 2111 | [ 2112 | 44565, 2113 | 44591 2114 | ], 2115 | [ 2116 | 44593, 2117 | 44619 2118 | ], 2119 | [ 2120 | 44621, 2121 | 44647 2122 | ], 2123 | [ 2124 | 44649, 2125 | 44675 2126 | ], 2127 | [ 2128 | 44677, 2129 | 44703 2130 | ], 2131 | [ 2132 | 44705, 2133 | 44731 2134 | ], 2135 | [ 2136 | 44733, 2137 | 44759 2138 | ], 2139 | [ 2140 | 44761, 2141 | 44787 2142 | ], 2143 | [ 2144 | 44789, 2145 | 44815 2146 | ], 2147 | [ 2148 | 44817, 2149 | 44843 2150 | ], 2151 | [ 2152 | 44845, 2153 | 44871 2154 | ], 2155 | [ 2156 | 44873, 2157 | 44899 2158 | ], 2159 | [ 2160 | 44901, 2161 | 44927 2162 | ], 2163 | [ 2164 | 44929, 2165 | 44955 2166 | ], 2167 | [ 2168 | 44957, 2169 | 44983 2170 | ], 2171 | [ 2172 | 44985, 2173 | 45011 2174 | ], 2175 | [ 2176 | 45013, 2177 | 45039 2178 | ], 2179 | [ 2180 | 45041, 2181 | 45067 2182 | ], 2183 | [ 2184 | 45069, 2185 | 45095 2186 | ], 2187 | [ 2188 | 45097, 2189 | 45123 2190 | ], 2191 | [ 2192 | 45125, 2193 | 45151 2194 | ], 2195 | [ 2196 | 45153, 2197 | 45179 2198 | ], 2199 | [ 2200 | 45181, 2201 | 45207 2202 | ], 2203 | [ 2204 | 45209, 2205 | 45235 2206 | ], 2207 | [ 2208 | 45237, 2209 | 45263 2210 | ], 2211 | [ 2212 | 45265, 2213 | 45291 2214 | ], 2215 | [ 2216 | 45293, 2217 | 45319 2218 | ], 2219 | [ 2220 | 45321, 2221 | 45347 2222 | ], 2223 | [ 2224 | 45349, 2225 | 45375 2226 | ], 2227 | [ 2228 | 45377, 2229 | 45403 2230 | ], 2231 | [ 2232 | 45405, 2233 | 45431 2234 | ], 2235 | [ 2236 | 45433, 2237 | 45459 2238 | ], 2239 | [ 2240 | 45461, 2241 | 45487 2242 | ], 2243 | [ 2244 | 45489, 2245 | 45515 2246 | ], 2247 | [ 2248 | 45517, 2249 | 45543 2250 | ], 2251 | [ 2252 | 45545, 2253 | 45571 2254 | ], 2255 | [ 2256 | 45573, 2257 | 45599 2258 | ], 2259 | [ 2260 | 45601, 2261 | 45627 2262 | ], 2263 | [ 2264 | 45629, 2265 | 45655 2266 | ], 2267 | [ 2268 | 45657, 2269 | 45683 2270 | ], 2271 | [ 2272 | 45685, 2273 | 45711 2274 | ], 2275 | [ 2276 | 45713, 2277 | 45739 2278 | ], 2279 | [ 2280 | 45741, 2281 | 45767 2282 | ], 2283 | [ 2284 | 45769, 2285 | 45795 2286 | ], 2287 | [ 2288 | 45797, 2289 | 45823 2290 | ], 2291 | [ 2292 | 45825, 2293 | 45851 2294 | ], 2295 | [ 2296 | 45853, 2297 | 45879 2298 | ], 2299 | [ 2300 | 45881, 2301 | 45907 2302 | ], 2303 | [ 2304 | 45909, 2305 | 45935 2306 | ], 2307 | [ 2308 | 45937, 2309 | 45963 2310 | ], 2311 | [ 2312 | 45965, 2313 | 45991 2314 | ], 2315 | [ 2316 | 45993, 2317 | 46019 2318 | ], 2319 | [ 2320 | 46021, 2321 | 46047 2322 | ], 2323 | [ 2324 | 46049, 2325 | 46075 2326 | ], 2327 | [ 2328 | 46077, 2329 | 46103 2330 | ], 2331 | [ 2332 | 46105, 2333 | 46131 2334 | ], 2335 | [ 2336 | 46133, 2337 | 46159 2338 | ], 2339 | [ 2340 | 46161, 2341 | 46187 2342 | ], 2343 | [ 2344 | 46189, 2345 | 46215 2346 | ], 2347 | [ 2348 | 46217, 2349 | 46243 2350 | ], 2351 | [ 2352 | 46245, 2353 | 46271 2354 | ], 2355 | [ 2356 | 46273, 2357 | 46299 2358 | ], 2359 | [ 2360 | 46301, 2361 | 46327 2362 | ], 2363 | [ 2364 | 46329, 2365 | 46355 2366 | ], 2367 | [ 2368 | 46357, 2369 | 46383 2370 | ], 2371 | [ 2372 | 46385, 2373 | 46411 2374 | ], 2375 | [ 2376 | 46413, 2377 | 46439 2378 | ], 2379 | [ 2380 | 46441, 2381 | 46467 2382 | ], 2383 | [ 2384 | 46469, 2385 | 46495 2386 | ], 2387 | [ 2388 | 46497, 2389 | 46523 2390 | ], 2391 | [ 2392 | 46525, 2393 | 46551 2394 | ], 2395 | [ 2396 | 46553, 2397 | 46579 2398 | ], 2399 | [ 2400 | 46581, 2401 | 46607 2402 | ], 2403 | [ 2404 | 46609, 2405 | 46635 2406 | ], 2407 | [ 2408 | 46637, 2409 | 46663 2410 | ], 2411 | [ 2412 | 46665, 2413 | 46691 2414 | ], 2415 | [ 2416 | 46693, 2417 | 46719 2418 | ], 2419 | [ 2420 | 46721, 2421 | 46747 2422 | ], 2423 | [ 2424 | 46749, 2425 | 46775 2426 | ], 2427 | [ 2428 | 46777, 2429 | 46803 2430 | ], 2431 | [ 2432 | 46805, 2433 | 46831 2434 | ], 2435 | [ 2436 | 46833, 2437 | 46859 2438 | ], 2439 | [ 2440 | 46861, 2441 | 46887 2442 | ], 2443 | [ 2444 | 46889, 2445 | 46915 2446 | ], 2447 | [ 2448 | 46917, 2449 | 46943 2450 | ], 2451 | [ 2452 | 46945, 2453 | 46971 2454 | ], 2455 | [ 2456 | 46973, 2457 | 46999 2458 | ], 2459 | [ 2460 | 47001, 2461 | 47027 2462 | ], 2463 | [ 2464 | 47029, 2465 | 47055 2466 | ], 2467 | [ 2468 | 47057, 2469 | 47083 2470 | ], 2471 | [ 2472 | 47085, 2473 | 47111 2474 | ], 2475 | [ 2476 | 47113, 2477 | 47139 2478 | ], 2479 | [ 2480 | 47141, 2481 | 47167 2482 | ], 2483 | [ 2484 | 47169, 2485 | 47195 2486 | ], 2487 | [ 2488 | 47197, 2489 | 47223 2490 | ], 2491 | [ 2492 | 47225, 2493 | 47251 2494 | ], 2495 | [ 2496 | 47253, 2497 | 47279 2498 | ], 2499 | [ 2500 | 47281, 2501 | 47307 2502 | ], 2503 | [ 2504 | 47309, 2505 | 47335 2506 | ], 2507 | [ 2508 | 47337, 2509 | 47363 2510 | ], 2511 | [ 2512 | 47365, 2513 | 47391 2514 | ], 2515 | [ 2516 | 47393, 2517 | 47419 2518 | ], 2519 | [ 2520 | 47421, 2521 | 47447 2522 | ], 2523 | [ 2524 | 47449, 2525 | 47475 2526 | ], 2527 | [ 2528 | 47477, 2529 | 47503 2530 | ], 2531 | [ 2532 | 47505, 2533 | 47531 2534 | ], 2535 | [ 2536 | 47533, 2537 | 47559 2538 | ], 2539 | [ 2540 | 47561, 2541 | 47587 2542 | ], 2543 | [ 2544 | 47589, 2545 | 47615 2546 | ], 2547 | [ 2548 | 47617, 2549 | 47643 2550 | ], 2551 | [ 2552 | 47645, 2553 | 47671 2554 | ], 2555 | [ 2556 | 47673, 2557 | 47699 2558 | ], 2559 | [ 2560 | 47701, 2561 | 47727 2562 | ], 2563 | [ 2564 | 47729, 2565 | 47755 2566 | ], 2567 | [ 2568 | 47757, 2569 | 47783 2570 | ], 2571 | [ 2572 | 47785, 2573 | 47811 2574 | ], 2575 | [ 2576 | 47813, 2577 | 47839 2578 | ], 2579 | [ 2580 | 47841, 2581 | 47867 2582 | ], 2583 | [ 2584 | 47869, 2585 | 47895 2586 | ], 2587 | [ 2588 | 47897, 2589 | 47923 2590 | ], 2591 | [ 2592 | 47925, 2593 | 47951 2594 | ], 2595 | [ 2596 | 47953, 2597 | 47979 2598 | ], 2599 | [ 2600 | 47981, 2601 | 48007 2602 | ], 2603 | [ 2604 | 48009, 2605 | 48035 2606 | ], 2607 | [ 2608 | 48037, 2609 | 48063 2610 | ], 2611 | [ 2612 | 48065, 2613 | 48091 2614 | ], 2615 | [ 2616 | 48093, 2617 | 48119 2618 | ], 2619 | [ 2620 | 48121, 2621 | 48147 2622 | ], 2623 | [ 2624 | 48149, 2625 | 48175 2626 | ], 2627 | [ 2628 | 48177, 2629 | 48203 2630 | ], 2631 | [ 2632 | 48205, 2633 | 48231 2634 | ], 2635 | [ 2636 | 48233, 2637 | 48259 2638 | ], 2639 | [ 2640 | 48261, 2641 | 48287 2642 | ], 2643 | [ 2644 | 48289, 2645 | 48315 2646 | ], 2647 | [ 2648 | 48317, 2649 | 48343 2650 | ], 2651 | [ 2652 | 48345, 2653 | 48371 2654 | ], 2655 | [ 2656 | 48373, 2657 | 48399 2658 | ], 2659 | [ 2660 | 48401, 2661 | 48427 2662 | ], 2663 | [ 2664 | 48429, 2665 | 48455 2666 | ], 2667 | [ 2668 | 48457, 2669 | 48483 2670 | ], 2671 | [ 2672 | 48485, 2673 | 48511 2674 | ], 2675 | [ 2676 | 48513, 2677 | 48539 2678 | ], 2679 | [ 2680 | 48541, 2681 | 48567 2682 | ], 2683 | [ 2684 | 48569, 2685 | 48595 2686 | ], 2687 | [ 2688 | 48597, 2689 | 48623 2690 | ], 2691 | [ 2692 | 48625, 2693 | 48651 2694 | ], 2695 | [ 2696 | 48653, 2697 | 48679 2698 | ], 2699 | [ 2700 | 48681, 2701 | 48707 2702 | ], 2703 | [ 2704 | 48709, 2705 | 48735 2706 | ], 2707 | [ 2708 | 48737, 2709 | 48763 2710 | ], 2711 | [ 2712 | 48765, 2713 | 48791 2714 | ], 2715 | [ 2716 | 48793, 2717 | 48819 2718 | ], 2719 | [ 2720 | 48821, 2721 | 48847 2722 | ], 2723 | [ 2724 | 48849, 2725 | 48875 2726 | ], 2727 | [ 2728 | 48877, 2729 | 48903 2730 | ], 2731 | [ 2732 | 48905, 2733 | 48931 2734 | ], 2735 | [ 2736 | 48933, 2737 | 48959 2738 | ], 2739 | [ 2740 | 48961, 2741 | 48987 2742 | ], 2743 | [ 2744 | 48989, 2745 | 49015 2746 | ], 2747 | [ 2748 | 49017, 2749 | 49043 2750 | ], 2751 | [ 2752 | 49045, 2753 | 49071 2754 | ], 2755 | [ 2756 | 49073, 2757 | 49099 2758 | ], 2759 | [ 2760 | 49101, 2761 | 49127 2762 | ], 2763 | [ 2764 | 49129, 2765 | 49155 2766 | ], 2767 | [ 2768 | 49157, 2769 | 49183 2770 | ], 2771 | [ 2772 | 49185, 2773 | 49211 2774 | ], 2775 | [ 2776 | 49213, 2777 | 49239 2778 | ], 2779 | [ 2780 | 49241, 2781 | 49267 2782 | ], 2783 | [ 2784 | 49269, 2785 | 49295 2786 | ], 2787 | [ 2788 | 49297, 2789 | 49323 2790 | ], 2791 | [ 2792 | 49325, 2793 | 49351 2794 | ], 2795 | [ 2796 | 49353, 2797 | 49379 2798 | ], 2799 | [ 2800 | 49381, 2801 | 49407 2802 | ], 2803 | [ 2804 | 49409, 2805 | 49435 2806 | ], 2807 | [ 2808 | 49437, 2809 | 49463 2810 | ], 2811 | [ 2812 | 49465, 2813 | 49491 2814 | ], 2815 | [ 2816 | 49493, 2817 | 49519 2818 | ], 2819 | [ 2820 | 49521, 2821 | 49547 2822 | ], 2823 | [ 2824 | 49549, 2825 | 49575 2826 | ], 2827 | [ 2828 | 49577, 2829 | 49603 2830 | ], 2831 | [ 2832 | 49605, 2833 | 49631 2834 | ], 2835 | [ 2836 | 49633, 2837 | 49659 2838 | ], 2839 | [ 2840 | 49661, 2841 | 49687 2842 | ], 2843 | [ 2844 | 49689, 2845 | 49715 2846 | ], 2847 | [ 2848 | 49717, 2849 | 49743 2850 | ], 2851 | [ 2852 | 49745, 2853 | 49771 2854 | ], 2855 | [ 2856 | 49773, 2857 | 49799 2858 | ], 2859 | [ 2860 | 49801, 2861 | 49827 2862 | ], 2863 | [ 2864 | 49829, 2865 | 49855 2866 | ], 2867 | [ 2868 | 49857, 2869 | 49883 2870 | ], 2871 | [ 2872 | 49885, 2873 | 49911 2874 | ], 2875 | [ 2876 | 49913, 2877 | 49939 2878 | ], 2879 | [ 2880 | 49941, 2881 | 49967 2882 | ], 2883 | [ 2884 | 49969, 2885 | 49995 2886 | ], 2887 | [ 2888 | 49997, 2889 | 50023 2890 | ], 2891 | [ 2892 | 50025, 2893 | 50051 2894 | ], 2895 | [ 2896 | 50053, 2897 | 50079 2898 | ], 2899 | [ 2900 | 50081, 2901 | 50107 2902 | ], 2903 | [ 2904 | 50109, 2905 | 50135 2906 | ], 2907 | [ 2908 | 50137, 2909 | 50163 2910 | ], 2911 | [ 2912 | 50165, 2913 | 50191 2914 | ], 2915 | [ 2916 | 50193, 2917 | 50219 2918 | ], 2919 | [ 2920 | 50221, 2921 | 50247 2922 | ], 2923 | [ 2924 | 50249, 2925 | 50275 2926 | ], 2927 | [ 2928 | 50277, 2929 | 50303 2930 | ], 2931 | [ 2932 | 50305, 2933 | 50331 2934 | ], 2935 | [ 2936 | 50333, 2937 | 50359 2938 | ], 2939 | [ 2940 | 50361, 2941 | 50387 2942 | ], 2943 | [ 2944 | 50389, 2945 | 50415 2946 | ], 2947 | [ 2948 | 50417, 2949 | 50443 2950 | ], 2951 | [ 2952 | 50445, 2953 | 50471 2954 | ], 2955 | [ 2956 | 50473, 2957 | 50499 2958 | ], 2959 | [ 2960 | 50501, 2961 | 50527 2962 | ], 2963 | [ 2964 | 50529, 2965 | 50555 2966 | ], 2967 | [ 2968 | 50557, 2969 | 50583 2970 | ], 2971 | [ 2972 | 50585, 2973 | 50611 2974 | ], 2975 | [ 2976 | 50613, 2977 | 50639 2978 | ], 2979 | [ 2980 | 50641, 2981 | 50667 2982 | ], 2983 | [ 2984 | 50669, 2985 | 50695 2986 | ], 2987 | [ 2988 | 50697, 2989 | 50723 2990 | ], 2991 | [ 2992 | 50725, 2993 | 50751 2994 | ], 2995 | [ 2996 | 50753, 2997 | 50779 2998 | ], 2999 | [ 3000 | 50781, 3001 | 50807 3002 | ], 3003 | [ 3004 | 50809, 3005 | 50835 3006 | ], 3007 | [ 3008 | 50837, 3009 | 50863 3010 | ], 3011 | [ 3012 | 50865, 3013 | 50891 3014 | ], 3015 | [ 3016 | 50893, 3017 | 50919 3018 | ], 3019 | [ 3020 | 50921, 3021 | 50947 3022 | ], 3023 | [ 3024 | 50949, 3025 | 50975 3026 | ], 3027 | [ 3028 | 50977, 3029 | 51003 3030 | ], 3031 | [ 3032 | 51005, 3033 | 51031 3034 | ], 3035 | [ 3036 | 51033, 3037 | 51059 3038 | ], 3039 | [ 3040 | 51061, 3041 | 51087 3042 | ], 3043 | [ 3044 | 51089, 3045 | 51115 3046 | ], 3047 | [ 3048 | 51117, 3049 | 51143 3050 | ], 3051 | [ 3052 | 51145, 3053 | 51171 3054 | ], 3055 | [ 3056 | 51173, 3057 | 51199 3058 | ], 3059 | [ 3060 | 51201, 3061 | 51227 3062 | ], 3063 | [ 3064 | 51229, 3065 | 51255 3066 | ], 3067 | [ 3068 | 51257, 3069 | 51283 3070 | ], 3071 | [ 3072 | 51285, 3073 | 51311 3074 | ], 3075 | [ 3076 | 51313, 3077 | 51339 3078 | ], 3079 | [ 3080 | 51341, 3081 | 51367 3082 | ], 3083 | [ 3084 | 51369, 3085 | 51395 3086 | ], 3087 | [ 3088 | 51397, 3089 | 51423 3090 | ], 3091 | [ 3092 | 51425, 3093 | 51451 3094 | ], 3095 | [ 3096 | 51453, 3097 | 51479 3098 | ], 3099 | [ 3100 | 51481, 3101 | 51507 3102 | ], 3103 | [ 3104 | 51509, 3105 | 51535 3106 | ], 3107 | [ 3108 | 51537, 3109 | 51563 3110 | ], 3111 | [ 3112 | 51565, 3113 | 51591 3114 | ], 3115 | [ 3116 | 51593, 3117 | 51619 3118 | ], 3119 | [ 3120 | 51621, 3121 | 51647 3122 | ], 3123 | [ 3124 | 51649, 3125 | 51675 3126 | ], 3127 | [ 3128 | 51677, 3129 | 51703 3130 | ], 3131 | [ 3132 | 51705, 3133 | 51731 3134 | ], 3135 | [ 3136 | 51733, 3137 | 51759 3138 | ], 3139 | [ 3140 | 51761, 3141 | 51787 3142 | ], 3143 | [ 3144 | 51789, 3145 | 51815 3146 | ], 3147 | [ 3148 | 51817, 3149 | 51843 3150 | ], 3151 | [ 3152 | 51845, 3153 | 51871 3154 | ], 3155 | [ 3156 | 51873, 3157 | 51899 3158 | ], 3159 | [ 3160 | 51901, 3161 | 51927 3162 | ], 3163 | [ 3164 | 51929, 3165 | 51955 3166 | ], 3167 | [ 3168 | 51957, 3169 | 51983 3170 | ], 3171 | [ 3172 | 51985, 3173 | 52011 3174 | ], 3175 | [ 3176 | 52013, 3177 | 52039 3178 | ], 3179 | [ 3180 | 52041, 3181 | 52067 3182 | ], 3183 | [ 3184 | 52069, 3185 | 52095 3186 | ], 3187 | [ 3188 | 52097, 3189 | 52123 3190 | ], 3191 | [ 3192 | 52125, 3193 | 52151 3194 | ], 3195 | [ 3196 | 52153, 3197 | 52179 3198 | ], 3199 | [ 3200 | 52181, 3201 | 52207 3202 | ], 3203 | [ 3204 | 52209, 3205 | 52235 3206 | ], 3207 | [ 3208 | 52237, 3209 | 52263 3210 | ], 3211 | [ 3212 | 52265, 3213 | 52291 3214 | ], 3215 | [ 3216 | 52293, 3217 | 52319 3218 | ], 3219 | [ 3220 | 52321, 3221 | 52347 3222 | ], 3223 | [ 3224 | 52349, 3225 | 52375 3226 | ], 3227 | [ 3228 | 52377, 3229 | 52403 3230 | ], 3231 | [ 3232 | 52405, 3233 | 52431 3234 | ], 3235 | [ 3236 | 52433, 3237 | 52459 3238 | ], 3239 | [ 3240 | 52461, 3241 | 52487 3242 | ], 3243 | [ 3244 | 52489, 3245 | 52515 3246 | ], 3247 | [ 3248 | 52517, 3249 | 52543 3250 | ], 3251 | [ 3252 | 52545, 3253 | 52571 3254 | ], 3255 | [ 3256 | 52573, 3257 | 52599 3258 | ], 3259 | [ 3260 | 52601, 3261 | 52627 3262 | ], 3263 | [ 3264 | 52629, 3265 | 52655 3266 | ], 3267 | [ 3268 | 52657, 3269 | 52683 3270 | ], 3271 | [ 3272 | 52685, 3273 | 52711 3274 | ], 3275 | [ 3276 | 52713, 3277 | 52739 3278 | ], 3279 | [ 3280 | 52741, 3281 | 52767 3282 | ], 3283 | [ 3284 | 52769, 3285 | 52795 3286 | ], 3287 | [ 3288 | 52797, 3289 | 52823 3290 | ], 3291 | [ 3292 | 52825, 3293 | 52851 3294 | ], 3295 | [ 3296 | 52853, 3297 | 52879 3298 | ], 3299 | [ 3300 | 52881, 3301 | 52907 3302 | ], 3303 | [ 3304 | 52909, 3305 | 52935 3306 | ], 3307 | [ 3308 | 52937, 3309 | 52963 3310 | ], 3311 | [ 3312 | 52965, 3313 | 52991 3314 | ], 3315 | [ 3316 | 52993, 3317 | 53019 3318 | ], 3319 | [ 3320 | 53021, 3321 | 53047 3322 | ], 3323 | [ 3324 | 53049, 3325 | 53075 3326 | ], 3327 | [ 3328 | 53077, 3329 | 53103 3330 | ], 3331 | [ 3332 | 53105, 3333 | 53131 3334 | ], 3335 | [ 3336 | 53133, 3337 | 53159 3338 | ], 3339 | [ 3340 | 53161, 3341 | 53187 3342 | ], 3343 | [ 3344 | 53189, 3345 | 53215 3346 | ], 3347 | [ 3348 | 53217, 3349 | 53243 3350 | ], 3351 | [ 3352 | 53245, 3353 | 53271 3354 | ], 3355 | [ 3356 | 53273, 3357 | 53299 3358 | ], 3359 | [ 3360 | 53301, 3361 | 53327 3362 | ], 3363 | [ 3364 | 53329, 3365 | 53355 3366 | ], 3367 | [ 3368 | 53357, 3369 | 53383 3370 | ], 3371 | [ 3372 | 53385, 3373 | 53411 3374 | ], 3375 | [ 3376 | 53413, 3377 | 53439 3378 | ], 3379 | [ 3380 | 53441, 3381 | 53467 3382 | ], 3383 | [ 3384 | 53469, 3385 | 53495 3386 | ], 3387 | [ 3388 | 53497, 3389 | 53523 3390 | ], 3391 | [ 3392 | 53525, 3393 | 53551 3394 | ], 3395 | [ 3396 | 53553, 3397 | 53579 3398 | ], 3399 | [ 3400 | 53581, 3401 | 53607 3402 | ], 3403 | [ 3404 | 53609, 3405 | 53635 3406 | ], 3407 | [ 3408 | 53637, 3409 | 53663 3410 | ], 3411 | [ 3412 | 53665, 3413 | 53691 3414 | ], 3415 | [ 3416 | 53693, 3417 | 53719 3418 | ], 3419 | [ 3420 | 53721, 3421 | 53747 3422 | ], 3423 | [ 3424 | 53749, 3425 | 53775 3426 | ], 3427 | [ 3428 | 53777, 3429 | 53803 3430 | ], 3431 | [ 3432 | 53805, 3433 | 53831 3434 | ], 3435 | [ 3436 | 53833, 3437 | 53859 3438 | ], 3439 | [ 3440 | 53861, 3441 | 53887 3442 | ], 3443 | [ 3444 | 53889, 3445 | 53915 3446 | ], 3447 | [ 3448 | 53917, 3449 | 53943 3450 | ], 3451 | [ 3452 | 53945, 3453 | 53971 3454 | ], 3455 | [ 3456 | 53973, 3457 | 53999 3458 | ], 3459 | [ 3460 | 54001, 3461 | 54027 3462 | ], 3463 | [ 3464 | 54029, 3465 | 54055 3466 | ], 3467 | [ 3468 | 54057, 3469 | 54083 3470 | ], 3471 | [ 3472 | 54085, 3473 | 54111 3474 | ], 3475 | [ 3476 | 54113, 3477 | 54139 3478 | ], 3479 | [ 3480 | 54141, 3481 | 54167 3482 | ], 3483 | [ 3484 | 54169, 3485 | 54195 3486 | ], 3487 | [ 3488 | 54197, 3489 | 54223 3490 | ], 3491 | [ 3492 | 54225, 3493 | 54251 3494 | ], 3495 | [ 3496 | 54253, 3497 | 54279 3498 | ], 3499 | [ 3500 | 54281, 3501 | 54307 3502 | ], 3503 | [ 3504 | 54309, 3505 | 54335 3506 | ], 3507 | [ 3508 | 54337, 3509 | 54363 3510 | ], 3511 | [ 3512 | 54365, 3513 | 54391 3514 | ], 3515 | [ 3516 | 54393, 3517 | 54419 3518 | ], 3519 | [ 3520 | 54421, 3521 | 54447 3522 | ], 3523 | [ 3524 | 54449, 3525 | 54475 3526 | ], 3527 | [ 3528 | 54477, 3529 | 54503 3530 | ], 3531 | [ 3532 | 54505, 3533 | 54531 3534 | ], 3535 | [ 3536 | 54533, 3537 | 54559 3538 | ], 3539 | [ 3540 | 54561, 3541 | 54587 3542 | ], 3543 | [ 3544 | 54589, 3545 | 54615 3546 | ], 3547 | [ 3548 | 54617, 3549 | 54643 3550 | ], 3551 | [ 3552 | 54645, 3553 | 54671 3554 | ], 3555 | [ 3556 | 54673, 3557 | 54699 3558 | ], 3559 | [ 3560 | 54701, 3561 | 54727 3562 | ], 3563 | [ 3564 | 54729, 3565 | 54755 3566 | ], 3567 | [ 3568 | 54757, 3569 | 54783 3570 | ], 3571 | [ 3572 | 54785, 3573 | 54811 3574 | ], 3575 | [ 3576 | 54813, 3577 | 54839 3578 | ], 3579 | [ 3580 | 54841, 3581 | 54867 3582 | ], 3583 | [ 3584 | 54869, 3585 | 54895 3586 | ], 3587 | [ 3588 | 54897, 3589 | 54923 3590 | ], 3591 | [ 3592 | 54925, 3593 | 54951 3594 | ], 3595 | [ 3596 | 54953, 3597 | 54979 3598 | ], 3599 | [ 3600 | 54981, 3601 | 55007 3602 | ], 3603 | [ 3604 | 55009, 3605 | 55035 3606 | ], 3607 | [ 3608 | 55037, 3609 | 55063 3610 | ], 3611 | [ 3612 | 55065, 3613 | 55091 3614 | ], 3615 | [ 3616 | 55093, 3617 | 55119 3618 | ], 3619 | [ 3620 | 55121, 3621 | 55147 3622 | ], 3623 | [ 3624 | 55149, 3625 | 55175 3626 | ], 3627 | [ 3628 | 55177, 3629 | 55203 3630 | ] 3631 | ] 3632 | }, 3633 | "ZWJ": { 3634 | "single_chars": [ 3635 | 8205 3636 | ], 3637 | "ranges": [] 3638 | }, 3639 | "Extended_Pictographic": { 3640 | "single_chars": [ 3641 | 169, 3642 | 174, 3643 | 8252, 3644 | 8265, 3645 | 8482, 3646 | 8505, 3647 | 9000, 3648 | 9096, 3649 | 9167, 3650 | 9410, 3651 | 9654, 3652 | 9664, 3653 | 10004, 3654 | 10006, 3655 | 10013, 3656 | 10017, 3657 | 10024, 3658 | 10052, 3659 | 10055, 3660 | 10060, 3661 | 10062, 3662 | 10071, 3663 | 10145, 3664 | 10160, 3665 | 10175, 3666 | 11088, 3667 | 11093, 3668 | 12336, 3669 | 12349, 3670 | 12951, 3671 | 12953, 3672 | 127279, 3673 | 127374, 3674 | 127514, 3675 | 127535 3676 | ], 3677 | "ranges": [ 3678 | [ 3679 | 8596, 3680 | 8601 3681 | ], 3682 | [ 3683 | 8617, 3684 | 8618 3685 | ], 3686 | [ 3687 | 8986, 3688 | 8987 3689 | ], 3690 | [ 3691 | 9193, 3692 | 9203 3693 | ], 3694 | [ 3695 | 9208, 3696 | 9210 3697 | ], 3698 | [ 3699 | 9642, 3700 | 9643 3701 | ], 3702 | [ 3703 | 9723, 3704 | 9726 3705 | ], 3706 | [ 3707 | 9728, 3708 | 9733 3709 | ], 3710 | [ 3711 | 9735, 3712 | 9746 3713 | ], 3714 | [ 3715 | 9748, 3716 | 9861 3717 | ], 3718 | [ 3719 | 9872, 3720 | 9989 3721 | ], 3722 | [ 3723 | 9992, 3724 | 10002 3725 | ], 3726 | [ 3727 | 10035, 3728 | 10036 3729 | ], 3730 | [ 3731 | 10067, 3732 | 10069 3733 | ], 3734 | [ 3735 | 10083, 3736 | 10087 3737 | ], 3738 | [ 3739 | 10133, 3740 | 10135 3741 | ], 3742 | [ 3743 | 10548, 3744 | 10549 3745 | ], 3746 | [ 3747 | 11013, 3748 | 11015 3749 | ], 3750 | [ 3751 | 11035, 3752 | 11036 3753 | ], 3754 | [ 3755 | 126976, 3756 | 127231 3757 | ], 3758 | [ 3759 | 127245, 3760 | 127247 3761 | ], 3762 | [ 3763 | 127340, 3764 | 127345 3765 | ], 3766 | [ 3767 | 127358, 3768 | 127359 3769 | ], 3770 | [ 3771 | 127377, 3772 | 127386 3773 | ], 3774 | [ 3775 | 127405, 3776 | 127461 3777 | ], 3778 | [ 3779 | 127489, 3780 | 127503 3781 | ], 3782 | [ 3783 | 127538, 3784 | 127546 3785 | ], 3786 | [ 3787 | 127548, 3788 | 127551 3789 | ], 3790 | [ 3791 | 127561, 3792 | 127994 3793 | ], 3794 | [ 3795 | 128000, 3796 | 128317 3797 | ], 3798 | [ 3799 | 128326, 3800 | 128591 3801 | ], 3802 | [ 3803 | 128640, 3804 | 128767 3805 | ], 3806 | [ 3807 | 128884, 3808 | 128895 3809 | ], 3810 | [ 3811 | 128981, 3812 | 129023 3813 | ], 3814 | [ 3815 | 129036, 3816 | 129039 3817 | ], 3818 | [ 3819 | 129096, 3820 | 129103 3821 | ], 3822 | [ 3823 | 129114, 3824 | 129119 3825 | ], 3826 | [ 3827 | 129160, 3828 | 129167 3829 | ], 3830 | [ 3831 | 129198, 3832 | 129279 3833 | ], 3834 | [ 3835 | 129292, 3836 | 129338 3837 | ], 3838 | [ 3839 | 129340, 3840 | 129349 3841 | ], 3842 | [ 3843 | 129351, 3844 | 129791 3845 | ], 3846 | [ 3847 | 130048, 3848 | 131069 3849 | ] 3850 | ] 3851 | } 3852 | } -------------------------------------------------------------------------------- /unicode-data/GraphemeBreakTest.txt: -------------------------------------------------------------------------------- 1 | # GraphemeBreakTest-13.0.0.txt 2 | # Date: 2019-11-15, 19:49:10 GMT 3 | # © 2019 Unicode®, Inc. 4 | # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. 5 | # For terms of use, see http://www.unicode.org/terms_of_use.html 6 | # 7 | # Unicode Character Database 8 | # For documentation, see http://www.unicode.org/reports/tr44/ 9 | # 10 | # Default Grapheme_Cluster_Break Test 11 | # 12 | # Format: 13 | # (# )? 14 | # contains hex Unicode code points, with 15 | # ÷ wherever there is a break opportunity, and 16 | # × wherever there is not. 17 | # the format can change, but currently it shows: 18 | # - the sample character name 19 | # - (x) the Grapheme_Cluster_Break property value for the sample character 20 | # - [x] the rule that determines whether there is a break or not, 21 | # as listed in the Rules section of GraphemeBreakTest.html 22 | # 23 | # These samples may be extended or changed in the future. 24 | # 25 | ÷ 0020 ÷ 0020 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] SPACE (Other) ÷ [0.3] 26 | ÷ 0020 × 0308 ÷ 0020 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] 27 | ÷ 0020 ÷ 000D ÷ # ÷ [0.2] SPACE (Other) ÷ [5.0] (CR) ÷ [0.3] 28 | ÷ 0020 × 0308 ÷ 000D ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] 29 | ÷ 0020 ÷ 000A ÷ # ÷ [0.2] SPACE (Other) ÷ [5.0] (LF) ÷ [0.3] 30 | ÷ 0020 × 0308 ÷ 000A ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] 31 | ÷ 0020 ÷ 0001 ÷ # ÷ [0.2] SPACE (Other) ÷ [5.0] (Control) ÷ [0.3] 32 | ÷ 0020 × 0308 ÷ 0001 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] 33 | ÷ 0020 × 034F ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 34 | ÷ 0020 × 0308 × 034F ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 35 | ÷ 0020 ÷ 1F1E6 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 36 | ÷ 0020 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 37 | ÷ 0020 ÷ 0600 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 38 | ÷ 0020 × 0308 ÷ 0600 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 39 | ÷ 0020 × 0903 ÷ # ÷ [0.2] SPACE (Other) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 40 | ÷ 0020 × 0308 × 0903 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 41 | ÷ 0020 ÷ 1100 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 42 | ÷ 0020 × 0308 ÷ 1100 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 43 | ÷ 0020 ÷ 1160 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 44 | ÷ 0020 × 0308 ÷ 1160 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 45 | ÷ 0020 ÷ 11A8 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 46 | ÷ 0020 × 0308 ÷ 11A8 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 47 | ÷ 0020 ÷ AC00 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 48 | ÷ 0020 × 0308 ÷ AC00 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 49 | ÷ 0020 ÷ AC01 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 50 | ÷ 0020 × 0308 ÷ AC01 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 51 | ÷ 0020 ÷ 231A ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] 52 | ÷ 0020 × 0308 ÷ 231A ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] 53 | ÷ 0020 × 0300 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 54 | ÷ 0020 × 0308 × 0300 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 55 | ÷ 0020 × 200D ÷ # ÷ [0.2] SPACE (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 56 | ÷ 0020 × 0308 × 200D ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 57 | ÷ 0020 ÷ 0378 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] (Other) ÷ [0.3] 58 | ÷ 0020 × 0308 ÷ 0378 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] 59 | ÷ 000D ÷ 0020 ÷ # ÷ [0.2] (CR) ÷ [4.0] SPACE (Other) ÷ [0.3] 60 | ÷ 000D ÷ 0308 ÷ 0020 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] 61 | ÷ 000D ÷ 000D ÷ # ÷ [0.2] (CR) ÷ [4.0] (CR) ÷ [0.3] 62 | ÷ 000D ÷ 0308 ÷ 000D ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] 63 | ÷ 000D × 000A ÷ # ÷ [0.2] (CR) × [3.0] (LF) ÷ [0.3] 64 | ÷ 000D ÷ 0308 ÷ 000A ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] 65 | ÷ 000D ÷ 0001 ÷ # ÷ [0.2] (CR) ÷ [4.0] (Control) ÷ [0.3] 66 | ÷ 000D ÷ 0308 ÷ 0001 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] 67 | ÷ 000D ÷ 034F ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 68 | ÷ 000D ÷ 0308 × 034F ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 69 | ÷ 000D ÷ 1F1E6 ÷ # ÷ [0.2] (CR) ÷ [4.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 70 | ÷ 000D ÷ 0308 ÷ 1F1E6 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 71 | ÷ 000D ÷ 0600 ÷ # ÷ [0.2] (CR) ÷ [4.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 72 | ÷ 000D ÷ 0308 ÷ 0600 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 73 | ÷ 000D ÷ 0903 ÷ # ÷ [0.2] (CR) ÷ [4.0] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 74 | ÷ 000D ÷ 0308 × 0903 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 75 | ÷ 000D ÷ 1100 ÷ # ÷ [0.2] (CR) ÷ [4.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 76 | ÷ 000D ÷ 0308 ÷ 1100 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 77 | ÷ 000D ÷ 1160 ÷ # ÷ [0.2] (CR) ÷ [4.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 78 | ÷ 000D ÷ 0308 ÷ 1160 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 79 | ÷ 000D ÷ 11A8 ÷ # ÷ [0.2] (CR) ÷ [4.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 80 | ÷ 000D ÷ 0308 ÷ 11A8 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 81 | ÷ 000D ÷ AC00 ÷ # ÷ [0.2] (CR) ÷ [4.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 82 | ÷ 000D ÷ 0308 ÷ AC00 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 83 | ÷ 000D ÷ AC01 ÷ # ÷ [0.2] (CR) ÷ [4.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 84 | ÷ 000D ÷ 0308 ÷ AC01 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 85 | ÷ 000D ÷ 231A ÷ # ÷ [0.2] (CR) ÷ [4.0] WATCH (ExtPict) ÷ [0.3] 86 | ÷ 000D ÷ 0308 ÷ 231A ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] 87 | ÷ 000D ÷ 0300 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 88 | ÷ 000D ÷ 0308 × 0300 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 89 | ÷ 000D ÷ 200D ÷ # ÷ [0.2] (CR) ÷ [4.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 90 | ÷ 000D ÷ 0308 × 200D ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 91 | ÷ 000D ÷ 0378 ÷ # ÷ [0.2] (CR) ÷ [4.0] (Other) ÷ [0.3] 92 | ÷ 000D ÷ 0308 ÷ 0378 ÷ # ÷ [0.2] (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] 93 | ÷ 000A ÷ 0020 ÷ # ÷ [0.2] (LF) ÷ [4.0] SPACE (Other) ÷ [0.3] 94 | ÷ 000A ÷ 0308 ÷ 0020 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] 95 | ÷ 000A ÷ 000D ÷ # ÷ [0.2] (LF) ÷ [4.0] (CR) ÷ [0.3] 96 | ÷ 000A ÷ 0308 ÷ 000D ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] 97 | ÷ 000A ÷ 000A ÷ # ÷ [0.2] (LF) ÷ [4.0] (LF) ÷ [0.3] 98 | ÷ 000A ÷ 0308 ÷ 000A ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] 99 | ÷ 000A ÷ 0001 ÷ # ÷ [0.2] (LF) ÷ [4.0] (Control) ÷ [0.3] 100 | ÷ 000A ÷ 0308 ÷ 0001 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] 101 | ÷ 000A ÷ 034F ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 102 | ÷ 000A ÷ 0308 × 034F ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 103 | ÷ 000A ÷ 1F1E6 ÷ # ÷ [0.2] (LF) ÷ [4.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 104 | ÷ 000A ÷ 0308 ÷ 1F1E6 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 105 | ÷ 000A ÷ 0600 ÷ # ÷ [0.2] (LF) ÷ [4.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 106 | ÷ 000A ÷ 0308 ÷ 0600 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 107 | ÷ 000A ÷ 0903 ÷ # ÷ [0.2] (LF) ÷ [4.0] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 108 | ÷ 000A ÷ 0308 × 0903 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 109 | ÷ 000A ÷ 1100 ÷ # ÷ [0.2] (LF) ÷ [4.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 110 | ÷ 000A ÷ 0308 ÷ 1100 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 111 | ÷ 000A ÷ 1160 ÷ # ÷ [0.2] (LF) ÷ [4.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 112 | ÷ 000A ÷ 0308 ÷ 1160 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 113 | ÷ 000A ÷ 11A8 ÷ # ÷ [0.2] (LF) ÷ [4.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 114 | ÷ 000A ÷ 0308 ÷ 11A8 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 115 | ÷ 000A ÷ AC00 ÷ # ÷ [0.2] (LF) ÷ [4.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 116 | ÷ 000A ÷ 0308 ÷ AC00 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 117 | ÷ 000A ÷ AC01 ÷ # ÷ [0.2] (LF) ÷ [4.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 118 | ÷ 000A ÷ 0308 ÷ AC01 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 119 | ÷ 000A ÷ 231A ÷ # ÷ [0.2] (LF) ÷ [4.0] WATCH (ExtPict) ÷ [0.3] 120 | ÷ 000A ÷ 0308 ÷ 231A ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] 121 | ÷ 000A ÷ 0300 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 122 | ÷ 000A ÷ 0308 × 0300 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 123 | ÷ 000A ÷ 200D ÷ # ÷ [0.2] (LF) ÷ [4.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 124 | ÷ 000A ÷ 0308 × 200D ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 125 | ÷ 000A ÷ 0378 ÷ # ÷ [0.2] (LF) ÷ [4.0] (Other) ÷ [0.3] 126 | ÷ 000A ÷ 0308 ÷ 0378 ÷ # ÷ [0.2] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] 127 | ÷ 0001 ÷ 0020 ÷ # ÷ [0.2] (Control) ÷ [4.0] SPACE (Other) ÷ [0.3] 128 | ÷ 0001 ÷ 0308 ÷ 0020 ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] 129 | ÷ 0001 ÷ 000D ÷ # ÷ [0.2] (Control) ÷ [4.0] (CR) ÷ [0.3] 130 | ÷ 0001 ÷ 0308 ÷ 000D ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] 131 | ÷ 0001 ÷ 000A ÷ # ÷ [0.2] (Control) ÷ [4.0] (LF) ÷ [0.3] 132 | ÷ 0001 ÷ 0308 ÷ 000A ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] 133 | ÷ 0001 ÷ 0001 ÷ # ÷ [0.2] (Control) ÷ [4.0] (Control) ÷ [0.3] 134 | ÷ 0001 ÷ 0308 ÷ 0001 ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] 135 | ÷ 0001 ÷ 034F ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 136 | ÷ 0001 ÷ 0308 × 034F ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 137 | ÷ 0001 ÷ 1F1E6 ÷ # ÷ [0.2] (Control) ÷ [4.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 138 | ÷ 0001 ÷ 0308 ÷ 1F1E6 ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 139 | ÷ 0001 ÷ 0600 ÷ # ÷ [0.2] (Control) ÷ [4.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 140 | ÷ 0001 ÷ 0308 ÷ 0600 ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 141 | ÷ 0001 ÷ 0903 ÷ # ÷ [0.2] (Control) ÷ [4.0] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 142 | ÷ 0001 ÷ 0308 × 0903 ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 143 | ÷ 0001 ÷ 1100 ÷ # ÷ [0.2] (Control) ÷ [4.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 144 | ÷ 0001 ÷ 0308 ÷ 1100 ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 145 | ÷ 0001 ÷ 1160 ÷ # ÷ [0.2] (Control) ÷ [4.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 146 | ÷ 0001 ÷ 0308 ÷ 1160 ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 147 | ÷ 0001 ÷ 11A8 ÷ # ÷ [0.2] (Control) ÷ [4.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 148 | ÷ 0001 ÷ 0308 ÷ 11A8 ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 149 | ÷ 0001 ÷ AC00 ÷ # ÷ [0.2] (Control) ÷ [4.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 150 | ÷ 0001 ÷ 0308 ÷ AC00 ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 151 | ÷ 0001 ÷ AC01 ÷ # ÷ [0.2] (Control) ÷ [4.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 152 | ÷ 0001 ÷ 0308 ÷ AC01 ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 153 | ÷ 0001 ÷ 231A ÷ # ÷ [0.2] (Control) ÷ [4.0] WATCH (ExtPict) ÷ [0.3] 154 | ÷ 0001 ÷ 0308 ÷ 231A ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] 155 | ÷ 0001 ÷ 0300 ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 156 | ÷ 0001 ÷ 0308 × 0300 ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 157 | ÷ 0001 ÷ 200D ÷ # ÷ [0.2] (Control) ÷ [4.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 158 | ÷ 0001 ÷ 0308 × 200D ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 159 | ÷ 0001 ÷ 0378 ÷ # ÷ [0.2] (Control) ÷ [4.0] (Other) ÷ [0.3] 160 | ÷ 0001 ÷ 0308 ÷ 0378 ÷ # ÷ [0.2] (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] 161 | ÷ 034F ÷ 0020 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] SPACE (Other) ÷ [0.3] 162 | ÷ 034F × 0308 ÷ 0020 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] 163 | ÷ 034F ÷ 000D ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [5.0] (CR) ÷ [0.3] 164 | ÷ 034F × 0308 ÷ 000D ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] 165 | ÷ 034F ÷ 000A ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [5.0] (LF) ÷ [0.3] 166 | ÷ 034F × 0308 ÷ 000A ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] 167 | ÷ 034F ÷ 0001 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [5.0] (Control) ÷ [0.3] 168 | ÷ 034F × 0308 ÷ 0001 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] 169 | ÷ 034F × 034F ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 170 | ÷ 034F × 0308 × 034F ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 171 | ÷ 034F ÷ 1F1E6 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 172 | ÷ 034F × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 173 | ÷ 034F ÷ 0600 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 174 | ÷ 034F × 0308 ÷ 0600 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 175 | ÷ 034F × 0903 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 176 | ÷ 034F × 0308 × 0903 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 177 | ÷ 034F ÷ 1100 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 178 | ÷ 034F × 0308 ÷ 1100 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 179 | ÷ 034F ÷ 1160 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 180 | ÷ 034F × 0308 ÷ 1160 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 181 | ÷ 034F ÷ 11A8 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 182 | ÷ 034F × 0308 ÷ 11A8 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 183 | ÷ 034F ÷ AC00 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 184 | ÷ 034F × 0308 ÷ AC00 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 185 | ÷ 034F ÷ AC01 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 186 | ÷ 034F × 0308 ÷ AC01 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 187 | ÷ 034F ÷ 231A ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] 188 | ÷ 034F × 0308 ÷ 231A ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] 189 | ÷ 034F × 0300 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 190 | ÷ 034F × 0308 × 0300 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 191 | ÷ 034F × 200D ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 192 | ÷ 034F × 0308 × 200D ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 193 | ÷ 034F ÷ 0378 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] (Other) ÷ [0.3] 194 | ÷ 034F × 0308 ÷ 0378 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] 195 | ÷ 1F1E6 ÷ 0020 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] SPACE (Other) ÷ [0.3] 196 | ÷ 1F1E6 × 0308 ÷ 0020 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] 197 | ÷ 1F1E6 ÷ 000D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [5.0] (CR) ÷ [0.3] 198 | ÷ 1F1E6 × 0308 ÷ 000D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] 199 | ÷ 1F1E6 ÷ 000A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [5.0] (LF) ÷ [0.3] 200 | ÷ 1F1E6 × 0308 ÷ 000A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] 201 | ÷ 1F1E6 ÷ 0001 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [5.0] (Control) ÷ [0.3] 202 | ÷ 1F1E6 × 0308 ÷ 0001 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] 203 | ÷ 1F1E6 × 034F ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 204 | ÷ 1F1E6 × 0308 × 034F ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 205 | ÷ 1F1E6 × 1F1E6 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [12.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 206 | ÷ 1F1E6 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 207 | ÷ 1F1E6 ÷ 0600 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 208 | ÷ 1F1E6 × 0308 ÷ 0600 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 209 | ÷ 1F1E6 × 0903 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 210 | ÷ 1F1E6 × 0308 × 0903 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 211 | ÷ 1F1E6 ÷ 1100 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 212 | ÷ 1F1E6 × 0308 ÷ 1100 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 213 | ÷ 1F1E6 ÷ 1160 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 214 | ÷ 1F1E6 × 0308 ÷ 1160 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 215 | ÷ 1F1E6 ÷ 11A8 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 216 | ÷ 1F1E6 × 0308 ÷ 11A8 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 217 | ÷ 1F1E6 ÷ AC00 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 218 | ÷ 1F1E6 × 0308 ÷ AC00 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 219 | ÷ 1F1E6 ÷ AC01 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 220 | ÷ 1F1E6 × 0308 ÷ AC01 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 221 | ÷ 1F1E6 ÷ 231A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] 222 | ÷ 1F1E6 × 0308 ÷ 231A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] 223 | ÷ 1F1E6 × 0300 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 224 | ÷ 1F1E6 × 0308 × 0300 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 225 | ÷ 1F1E6 × 200D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 226 | ÷ 1F1E6 × 0308 × 200D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 227 | ÷ 1F1E6 ÷ 0378 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] (Other) ÷ [0.3] 228 | ÷ 1F1E6 × 0308 ÷ 0378 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] 229 | ÷ 0600 × 0020 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] SPACE (Other) ÷ [0.3] 230 | ÷ 0600 × 0308 ÷ 0020 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] 231 | ÷ 0600 ÷ 000D ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) ÷ [5.0] (CR) ÷ [0.3] 232 | ÷ 0600 × 0308 ÷ 000D ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] 233 | ÷ 0600 ÷ 000A ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) ÷ [5.0] (LF) ÷ [0.3] 234 | ÷ 0600 × 0308 ÷ 000A ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] 235 | ÷ 0600 ÷ 0001 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) ÷ [5.0] (Control) ÷ [0.3] 236 | ÷ 0600 × 0308 ÷ 0001 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] 237 | ÷ 0600 × 034F ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 238 | ÷ 0600 × 0308 × 034F ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 239 | ÷ 0600 × 1F1E6 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 240 | ÷ 0600 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 241 | ÷ 0600 × 0600 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 242 | ÷ 0600 × 0308 ÷ 0600 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 243 | ÷ 0600 × 0903 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 244 | ÷ 0600 × 0308 × 0903 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 245 | ÷ 0600 × 1100 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 246 | ÷ 0600 × 0308 ÷ 1100 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 247 | ÷ 0600 × 1160 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 248 | ÷ 0600 × 0308 ÷ 1160 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 249 | ÷ 0600 × 11A8 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 250 | ÷ 0600 × 0308 ÷ 11A8 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 251 | ÷ 0600 × AC00 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL SYLLABLE GA (LV) ÷ [0.3] 252 | ÷ 0600 × 0308 ÷ AC00 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 253 | ÷ 0600 × AC01 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 254 | ÷ 0600 × 0308 ÷ AC01 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 255 | ÷ 0600 × 231A ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] WATCH (ExtPict) ÷ [0.3] 256 | ÷ 0600 × 0308 ÷ 231A ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] 257 | ÷ 0600 × 0300 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 258 | ÷ 0600 × 0308 × 0300 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 259 | ÷ 0600 × 200D ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 260 | ÷ 0600 × 0308 × 200D ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 261 | ÷ 0600 × 0378 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] (Other) ÷ [0.3] 262 | ÷ 0600 × 0308 ÷ 0378 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] 263 | ÷ 0903 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] SPACE (Other) ÷ [0.3] 264 | ÷ 0903 × 0308 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] 265 | ÷ 0903 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [5.0] (CR) ÷ [0.3] 266 | ÷ 0903 × 0308 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] 267 | ÷ 0903 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [5.0] (LF) ÷ [0.3] 268 | ÷ 0903 × 0308 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] 269 | ÷ 0903 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [5.0] (Control) ÷ [0.3] 270 | ÷ 0903 × 0308 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] 271 | ÷ 0903 × 034F ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 272 | ÷ 0903 × 0308 × 034F ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 273 | ÷ 0903 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 274 | ÷ 0903 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 275 | ÷ 0903 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 276 | ÷ 0903 × 0308 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 277 | ÷ 0903 × 0903 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 278 | ÷ 0903 × 0308 × 0903 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 279 | ÷ 0903 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 280 | ÷ 0903 × 0308 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 281 | ÷ 0903 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 282 | ÷ 0903 × 0308 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 283 | ÷ 0903 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 284 | ÷ 0903 × 0308 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 285 | ÷ 0903 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 286 | ÷ 0903 × 0308 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 287 | ÷ 0903 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 288 | ÷ 0903 × 0308 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 289 | ÷ 0903 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] 290 | ÷ 0903 × 0308 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] 291 | ÷ 0903 × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 292 | ÷ 0903 × 0308 × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 293 | ÷ 0903 × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 294 | ÷ 0903 × 0308 × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 295 | ÷ 0903 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] (Other) ÷ [0.3] 296 | ÷ 0903 × 0308 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] 297 | ÷ 1100 ÷ 0020 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] SPACE (Other) ÷ [0.3] 298 | ÷ 1100 × 0308 ÷ 0020 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] 299 | ÷ 1100 ÷ 000D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [5.0] (CR) ÷ [0.3] 300 | ÷ 1100 × 0308 ÷ 000D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] 301 | ÷ 1100 ÷ 000A ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [5.0] (LF) ÷ [0.3] 302 | ÷ 1100 × 0308 ÷ 000A ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] 303 | ÷ 1100 ÷ 0001 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [5.0] (Control) ÷ [0.3] 304 | ÷ 1100 × 0308 ÷ 0001 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] 305 | ÷ 1100 × 034F ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 306 | ÷ 1100 × 0308 × 034F ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 307 | ÷ 1100 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 308 | ÷ 1100 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 309 | ÷ 1100 ÷ 0600 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 310 | ÷ 1100 × 0308 ÷ 0600 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 311 | ÷ 1100 × 0903 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 312 | ÷ 1100 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 313 | ÷ 1100 × 1100 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 314 | ÷ 1100 × 0308 ÷ 1100 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 315 | ÷ 1100 × 1160 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 316 | ÷ 1100 × 0308 ÷ 1160 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 317 | ÷ 1100 ÷ 11A8 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 318 | ÷ 1100 × 0308 ÷ 11A8 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 319 | ÷ 1100 × AC00 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 320 | ÷ 1100 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 321 | ÷ 1100 × AC01 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 322 | ÷ 1100 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 323 | ÷ 1100 ÷ 231A ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] 324 | ÷ 1100 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] 325 | ÷ 1100 × 0300 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 326 | ÷ 1100 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 327 | ÷ 1100 × 200D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 328 | ÷ 1100 × 0308 × 200D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 329 | ÷ 1100 ÷ 0378 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] (Other) ÷ [0.3] 330 | ÷ 1100 × 0308 ÷ 0378 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] 331 | ÷ 1160 ÷ 0020 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] SPACE (Other) ÷ [0.3] 332 | ÷ 1160 × 0308 ÷ 0020 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] 333 | ÷ 1160 ÷ 000D ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [5.0] (CR) ÷ [0.3] 334 | ÷ 1160 × 0308 ÷ 000D ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] 335 | ÷ 1160 ÷ 000A ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [5.0] (LF) ÷ [0.3] 336 | ÷ 1160 × 0308 ÷ 000A ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] 337 | ÷ 1160 ÷ 0001 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [5.0] (Control) ÷ [0.3] 338 | ÷ 1160 × 0308 ÷ 0001 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] 339 | ÷ 1160 × 034F ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 340 | ÷ 1160 × 0308 × 034F ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 341 | ÷ 1160 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 342 | ÷ 1160 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 343 | ÷ 1160 ÷ 0600 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 344 | ÷ 1160 × 0308 ÷ 0600 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 345 | ÷ 1160 × 0903 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 346 | ÷ 1160 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 347 | ÷ 1160 ÷ 1100 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 348 | ÷ 1160 × 0308 ÷ 1100 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 349 | ÷ 1160 × 1160 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [7.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 350 | ÷ 1160 × 0308 ÷ 1160 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 351 | ÷ 1160 × 11A8 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [7.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 352 | ÷ 1160 × 0308 ÷ 11A8 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 353 | ÷ 1160 ÷ AC00 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 354 | ÷ 1160 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 355 | ÷ 1160 ÷ AC01 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 356 | ÷ 1160 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 357 | ÷ 1160 ÷ 231A ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] 358 | ÷ 1160 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] 359 | ÷ 1160 × 0300 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 360 | ÷ 1160 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 361 | ÷ 1160 × 200D ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 362 | ÷ 1160 × 0308 × 200D ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 363 | ÷ 1160 ÷ 0378 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] (Other) ÷ [0.3] 364 | ÷ 1160 × 0308 ÷ 0378 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] 365 | ÷ 11A8 ÷ 0020 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] SPACE (Other) ÷ [0.3] 366 | ÷ 11A8 × 0308 ÷ 0020 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] 367 | ÷ 11A8 ÷ 000D ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [5.0] (CR) ÷ [0.3] 368 | ÷ 11A8 × 0308 ÷ 000D ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] 369 | ÷ 11A8 ÷ 000A ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [5.0] (LF) ÷ [0.3] 370 | ÷ 11A8 × 0308 ÷ 000A ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] 371 | ÷ 11A8 ÷ 0001 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [5.0] (Control) ÷ [0.3] 372 | ÷ 11A8 × 0308 ÷ 0001 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] 373 | ÷ 11A8 × 034F ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 374 | ÷ 11A8 × 0308 × 034F ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 375 | ÷ 11A8 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 376 | ÷ 11A8 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 377 | ÷ 11A8 ÷ 0600 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 378 | ÷ 11A8 × 0308 ÷ 0600 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 379 | ÷ 11A8 × 0903 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 380 | ÷ 11A8 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 381 | ÷ 11A8 ÷ 1100 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 382 | ÷ 11A8 × 0308 ÷ 1100 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 383 | ÷ 11A8 ÷ 1160 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 384 | ÷ 11A8 × 0308 ÷ 1160 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 385 | ÷ 11A8 × 11A8 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [8.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 386 | ÷ 11A8 × 0308 ÷ 11A8 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 387 | ÷ 11A8 ÷ AC00 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 388 | ÷ 11A8 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 389 | ÷ 11A8 ÷ AC01 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 390 | ÷ 11A8 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 391 | ÷ 11A8 ÷ 231A ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] 392 | ÷ 11A8 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] 393 | ÷ 11A8 × 0300 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 394 | ÷ 11A8 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 395 | ÷ 11A8 × 200D ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 396 | ÷ 11A8 × 0308 × 200D ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 397 | ÷ 11A8 ÷ 0378 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] (Other) ÷ [0.3] 398 | ÷ 11A8 × 0308 ÷ 0378 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] 399 | ÷ AC00 ÷ 0020 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] SPACE (Other) ÷ [0.3] 400 | ÷ AC00 × 0308 ÷ 0020 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] 401 | ÷ AC00 ÷ 000D ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [5.0] (CR) ÷ [0.3] 402 | ÷ AC00 × 0308 ÷ 000D ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] 403 | ÷ AC00 ÷ 000A ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [5.0] (LF) ÷ [0.3] 404 | ÷ AC00 × 0308 ÷ 000A ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] 405 | ÷ AC00 ÷ 0001 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [5.0] (Control) ÷ [0.3] 406 | ÷ AC00 × 0308 ÷ 0001 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] 407 | ÷ AC00 × 034F ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 408 | ÷ AC00 × 0308 × 034F ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 409 | ÷ AC00 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 410 | ÷ AC00 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 411 | ÷ AC00 ÷ 0600 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 412 | ÷ AC00 × 0308 ÷ 0600 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 413 | ÷ AC00 × 0903 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 414 | ÷ AC00 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 415 | ÷ AC00 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 416 | ÷ AC00 × 0308 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 417 | ÷ AC00 × 1160 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [7.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 418 | ÷ AC00 × 0308 ÷ 1160 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 419 | ÷ AC00 × 11A8 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [7.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 420 | ÷ AC00 × 0308 ÷ 11A8 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 421 | ÷ AC00 ÷ AC00 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 422 | ÷ AC00 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 423 | ÷ AC00 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 424 | ÷ AC00 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 425 | ÷ AC00 ÷ 231A ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] 426 | ÷ AC00 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] 427 | ÷ AC00 × 0300 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 428 | ÷ AC00 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 429 | ÷ AC00 × 200D ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 430 | ÷ AC00 × 0308 × 200D ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 431 | ÷ AC00 ÷ 0378 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] (Other) ÷ [0.3] 432 | ÷ AC00 × 0308 ÷ 0378 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] 433 | ÷ AC01 ÷ 0020 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] SPACE (Other) ÷ [0.3] 434 | ÷ AC01 × 0308 ÷ 0020 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] 435 | ÷ AC01 ÷ 000D ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [5.0] (CR) ÷ [0.3] 436 | ÷ AC01 × 0308 ÷ 000D ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] 437 | ÷ AC01 ÷ 000A ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [5.0] (LF) ÷ [0.3] 438 | ÷ AC01 × 0308 ÷ 000A ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] 439 | ÷ AC01 ÷ 0001 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [5.0] (Control) ÷ [0.3] 440 | ÷ AC01 × 0308 ÷ 0001 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] 441 | ÷ AC01 × 034F ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 442 | ÷ AC01 × 0308 × 034F ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 443 | ÷ AC01 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 444 | ÷ AC01 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 445 | ÷ AC01 ÷ 0600 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 446 | ÷ AC01 × 0308 ÷ 0600 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 447 | ÷ AC01 × 0903 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 448 | ÷ AC01 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 449 | ÷ AC01 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 450 | ÷ AC01 × 0308 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 451 | ÷ AC01 ÷ 1160 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 452 | ÷ AC01 × 0308 ÷ 1160 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 453 | ÷ AC01 × 11A8 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [8.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 454 | ÷ AC01 × 0308 ÷ 11A8 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 455 | ÷ AC01 ÷ AC00 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 456 | ÷ AC01 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 457 | ÷ AC01 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 458 | ÷ AC01 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 459 | ÷ AC01 ÷ 231A ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] 460 | ÷ AC01 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] 461 | ÷ AC01 × 0300 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 462 | ÷ AC01 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 463 | ÷ AC01 × 200D ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 464 | ÷ AC01 × 0308 × 200D ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 465 | ÷ AC01 ÷ 0378 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] (Other) ÷ [0.3] 466 | ÷ AC01 × 0308 ÷ 0378 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] 467 | ÷ 231A ÷ 0020 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] SPACE (Other) ÷ [0.3] 468 | ÷ 231A × 0308 ÷ 0020 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] 469 | ÷ 231A ÷ 000D ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [5.0] (CR) ÷ [0.3] 470 | ÷ 231A × 0308 ÷ 000D ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] 471 | ÷ 231A ÷ 000A ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [5.0] (LF) ÷ [0.3] 472 | ÷ 231A × 0308 ÷ 000A ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] 473 | ÷ 231A ÷ 0001 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [5.0] (Control) ÷ [0.3] 474 | ÷ 231A × 0308 ÷ 0001 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] 475 | ÷ 231A × 034F ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 476 | ÷ 231A × 0308 × 034F ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 477 | ÷ 231A ÷ 1F1E6 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 478 | ÷ 231A × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 479 | ÷ 231A ÷ 0600 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 480 | ÷ 231A × 0308 ÷ 0600 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 481 | ÷ 231A × 0903 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 482 | ÷ 231A × 0308 × 0903 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 483 | ÷ 231A ÷ 1100 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 484 | ÷ 231A × 0308 ÷ 1100 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 485 | ÷ 231A ÷ 1160 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 486 | ÷ 231A × 0308 ÷ 1160 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 487 | ÷ 231A ÷ 11A8 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 488 | ÷ 231A × 0308 ÷ 11A8 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 489 | ÷ 231A ÷ AC00 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 490 | ÷ 231A × 0308 ÷ AC00 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 491 | ÷ 231A ÷ AC01 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 492 | ÷ 231A × 0308 ÷ AC01 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 493 | ÷ 231A ÷ 231A ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] 494 | ÷ 231A × 0308 ÷ 231A ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] 495 | ÷ 231A × 0300 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 496 | ÷ 231A × 0308 × 0300 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 497 | ÷ 231A × 200D ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 498 | ÷ 231A × 0308 × 200D ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 499 | ÷ 231A ÷ 0378 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] (Other) ÷ [0.3] 500 | ÷ 231A × 0308 ÷ 0378 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] 501 | ÷ 0300 ÷ 0020 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] 502 | ÷ 0300 × 0308 ÷ 0020 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] 503 | ÷ 0300 ÷ 000D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] 504 | ÷ 0300 × 0308 ÷ 000D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] 505 | ÷ 0300 ÷ 000A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] 506 | ÷ 0300 × 0308 ÷ 000A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] 507 | ÷ 0300 ÷ 0001 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] 508 | ÷ 0300 × 0308 ÷ 0001 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] 509 | ÷ 0300 × 034F ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 510 | ÷ 0300 × 0308 × 034F ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 511 | ÷ 0300 ÷ 1F1E6 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 512 | ÷ 0300 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 513 | ÷ 0300 ÷ 0600 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 514 | ÷ 0300 × 0308 ÷ 0600 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 515 | ÷ 0300 × 0903 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 516 | ÷ 0300 × 0308 × 0903 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 517 | ÷ 0300 ÷ 1100 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 518 | ÷ 0300 × 0308 ÷ 1100 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 519 | ÷ 0300 ÷ 1160 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 520 | ÷ 0300 × 0308 ÷ 1160 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 521 | ÷ 0300 ÷ 11A8 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 522 | ÷ 0300 × 0308 ÷ 11A8 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 523 | ÷ 0300 ÷ AC00 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 524 | ÷ 0300 × 0308 ÷ AC00 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 525 | ÷ 0300 ÷ AC01 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 526 | ÷ 0300 × 0308 ÷ AC01 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 527 | ÷ 0300 ÷ 231A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] 528 | ÷ 0300 × 0308 ÷ 231A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] 529 | ÷ 0300 × 0300 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 530 | ÷ 0300 × 0308 × 0300 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 531 | ÷ 0300 × 200D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 532 | ÷ 0300 × 0308 × 200D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 533 | ÷ 0300 ÷ 0378 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] 534 | ÷ 0300 × 0308 ÷ 0378 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] 535 | ÷ 200D ÷ 0020 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] 536 | ÷ 200D × 0308 ÷ 0020 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] 537 | ÷ 200D ÷ 000D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] 538 | ÷ 200D × 0308 ÷ 000D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] 539 | ÷ 200D ÷ 000A ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] 540 | ÷ 200D × 0308 ÷ 000A ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] 541 | ÷ 200D ÷ 0001 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] 542 | ÷ 200D × 0308 ÷ 0001 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] 543 | ÷ 200D × 034F ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 544 | ÷ 200D × 0308 × 034F ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 545 | ÷ 200D ÷ 1F1E6 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 546 | ÷ 200D × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 547 | ÷ 200D ÷ 0600 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 548 | ÷ 200D × 0308 ÷ 0600 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 549 | ÷ 200D × 0903 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 550 | ÷ 200D × 0308 × 0903 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 551 | ÷ 200D ÷ 1100 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 552 | ÷ 200D × 0308 ÷ 1100 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 553 | ÷ 200D ÷ 1160 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 554 | ÷ 200D × 0308 ÷ 1160 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 555 | ÷ 200D ÷ 11A8 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 556 | ÷ 200D × 0308 ÷ 11A8 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 557 | ÷ 200D ÷ AC00 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 558 | ÷ 200D × 0308 ÷ AC00 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 559 | ÷ 200D ÷ AC01 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 560 | ÷ 200D × 0308 ÷ AC01 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 561 | ÷ 200D ÷ 231A ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] 562 | ÷ 200D × 0308 ÷ 231A ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] 563 | ÷ 200D × 0300 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 564 | ÷ 200D × 0308 × 0300 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 565 | ÷ 200D × 200D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 566 | ÷ 200D × 0308 × 200D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 567 | ÷ 200D ÷ 0378 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] 568 | ÷ 200D × 0308 ÷ 0378 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] 569 | ÷ 0378 ÷ 0020 ÷ # ÷ [0.2] (Other) ÷ [999.0] SPACE (Other) ÷ [0.3] 570 | ÷ 0378 × 0308 ÷ 0020 ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] 571 | ÷ 0378 ÷ 000D ÷ # ÷ [0.2] (Other) ÷ [5.0] (CR) ÷ [0.3] 572 | ÷ 0378 × 0308 ÷ 000D ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (CR) ÷ [0.3] 573 | ÷ 0378 ÷ 000A ÷ # ÷ [0.2] (Other) ÷ [5.0] (LF) ÷ [0.3] 574 | ÷ 0378 × 0308 ÷ 000A ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (LF) ÷ [0.3] 575 | ÷ 0378 ÷ 0001 ÷ # ÷ [0.2] (Other) ÷ [5.0] (Control) ÷ [0.3] 576 | ÷ 0378 × 0308 ÷ 0001 ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] (Control) ÷ [0.3] 577 | ÷ 0378 × 034F ÷ # ÷ [0.2] (Other) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 578 | ÷ 0378 × 0308 × 034F ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3] 579 | ÷ 0378 ÷ 1F1E6 ÷ # ÷ [0.2] (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 580 | ÷ 0378 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3] 581 | ÷ 0378 ÷ 0600 ÷ # ÷ [0.2] (Other) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 582 | ÷ 0378 × 0308 ÷ 0600 ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3] 583 | ÷ 0378 × 0903 ÷ # ÷ [0.2] (Other) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 584 | ÷ 0378 × 0308 × 0903 ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3] 585 | ÷ 0378 ÷ 1100 ÷ # ÷ [0.2] (Other) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 586 | ÷ 0378 × 0308 ÷ 1100 ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 587 | ÷ 0378 ÷ 1160 ÷ # ÷ [0.2] (Other) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 588 | ÷ 0378 × 0308 ÷ 1160 ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3] 589 | ÷ 0378 ÷ 11A8 ÷ # ÷ [0.2] (Other) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 590 | ÷ 0378 × 0308 ÷ 11A8 ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3] 591 | ÷ 0378 ÷ AC00 ÷ # ÷ [0.2] (Other) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 592 | ÷ 0378 × 0308 ÷ AC00 ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3] 593 | ÷ 0378 ÷ AC01 ÷ # ÷ [0.2] (Other) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 594 | ÷ 0378 × 0308 ÷ AC01 ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3] 595 | ÷ 0378 ÷ 231A ÷ # ÷ [0.2] (Other) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] 596 | ÷ 0378 × 0308 ÷ 231A ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3] 597 | ÷ 0378 × 0300 ÷ # ÷ [0.2] (Other) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 598 | ÷ 0378 × 0308 × 0300 ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3] 599 | ÷ 0378 × 200D ÷ # ÷ [0.2] (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 600 | ÷ 0378 × 0308 × 200D ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 601 | ÷ 0378 ÷ 0378 ÷ # ÷ [0.2] (Other) ÷ [999.0] (Other) ÷ [0.3] 602 | ÷ 0378 × 0308 ÷ 0378 ÷ # ÷ [0.2] (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] (Other) ÷ [0.3] 603 | ÷ 000D × 000A ÷ 0061 ÷ 000A ÷ 0308 ÷ # ÷ [0.2] (CR) × [3.0] (LF) ÷ [4.0] LATIN SMALL LETTER A (Other) ÷ [5.0] (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [0.3] 604 | ÷ 0061 × 0308 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [0.3] 605 | ÷ 0020 × 200D ÷ 0646 ÷ # ÷ [0.2] SPACE (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] ARABIC LETTER NOON (Other) ÷ [0.3] 606 | ÷ 0646 × 200D ÷ 0020 ÷ # ÷ [0.2] ARABIC LETTER NOON (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3] 607 | ÷ 1100 × 1100 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 608 | ÷ AC00 × 11A8 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [7.0] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 609 | ÷ AC01 × 11A8 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [8.0] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3] 610 | ÷ 1F1E6 × 1F1E7 ÷ 1F1E8 ÷ 0062 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [12.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3] 611 | ÷ 0061 ÷ 1F1E6 × 1F1E7 ÷ 1F1E8 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [13.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3] 612 | ÷ 0061 ÷ 1F1E6 × 1F1E7 × 200D ÷ 1F1E8 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [13.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3] 613 | ÷ 0061 ÷ 1F1E6 × 200D ÷ 1F1E7 × 1F1E8 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) × [13.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3] 614 | ÷ 0061 ÷ 1F1E6 × 1F1E7 ÷ 1F1E8 × 1F1E9 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [13.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) × [13.0] REGIONAL INDICATOR SYMBOL LETTER D (RI) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3] 615 | ÷ 0061 × 200D ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3] 616 | ÷ 0061 × 0308 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3] 617 | ÷ 0061 × 0903 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3] 618 | ÷ 0061 ÷ 0600 × 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) × [9.2] LATIN SMALL LETTER B (Other) ÷ [0.3] 619 | ÷ 1F476 × 1F3FF ÷ 1F476 ÷ # ÷ [0.2] BABY (ExtPict) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [999.0] BABY (ExtPict) ÷ [0.3] 620 | ÷ 0061 × 1F3FF ÷ 1F476 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [999.0] BABY (ExtPict) ÷ [0.3] 621 | ÷ 0061 × 1F3FF ÷ 1F476 × 200D × 1F6D1 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [999.0] BABY (ExtPict) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] OCTAGONAL SIGN (ExtPict) ÷ [0.3] 622 | ÷ 1F476 × 1F3FF × 0308 × 200D × 1F476 × 1F3FF ÷ # ÷ [0.2] BABY (ExtPict) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] BABY (ExtPict) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [0.3] 623 | ÷ 1F6D1 × 200D × 1F6D1 ÷ # ÷ [0.2] OCTAGONAL SIGN (ExtPict) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] OCTAGONAL SIGN (ExtPict) ÷ [0.3] 624 | ÷ 0061 × 200D ÷ 1F6D1 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] OCTAGONAL SIGN (ExtPict) ÷ [0.3] 625 | ÷ 2701 × 200D × 2701 ÷ # ÷ [0.2] UPPER BLADE SCISSORS (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] UPPER BLADE SCISSORS (Other) ÷ [0.3] 626 | ÷ 0061 × 200D ÷ 2701 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] UPPER BLADE SCISSORS (Other) ÷ [0.3] 627 | # 628 | # Lines: 602 629 | # 630 | # EOF 631 | --------------------------------------------------------------------------------