├── 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]