Merge
This commit is contained in:
commit
4651ce7fc9
3
.hgtags
3
.hgtags
@ -558,3 +558,6 @@ f855ec13aa2501ae184c8b3e0626a8cec9966116 jdk-13+15
|
||||
bebb82ef3434a25f8142edafec20165f07ac562d jdk-13+18
|
||||
a43d6467317d8f1e160f67aadec37919c9d64443 jdk-13+19
|
||||
6ccc7cd7931e34129f6b7e04988fc9a63958dde0 jdk-13+20
|
||||
f2f11d7f7f4e7128f8aba6ffa576cfa76fbf7d1a jdk-13+21
|
||||
181986c5476468bc2dd4532af49599003ee8af37 jdk-13+22
|
||||
b034d2dee5fc93d42a81b65e58ce3f91e42586ff jdk-13+23
|
||||
|
@ -184,7 +184,7 @@
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td style="text-align: left;">Solaris</td>
|
||||
<td style="text-align: left;">Solaris 11.3</td>
|
||||
<td style="text-align: left;">Solaris 11.3 SRU 20</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td style="text-align: left;">macOS</td>
|
||||
@ -297,6 +297,10 @@
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>All compilers are expected to be able to compile to the C99 language standard,
|
||||
as some C99 features are used in the source code. Microsoft Visual Studio
|
||||
doesn't fully support C99 so in practice shared code is limited to using C99
|
||||
features that it does support.</p>
|
||||
<h3 id="gcc">gcc</h3>
|
||||
<p>The minimum accepted version of gcc is 4.8. Older versions will generate a warning by <code>configure</code> and are unlikely to work.</p>
|
||||
<p>The JDK is currently known to be able to compile with at least version 7.4 of gcc.</p>
|
||||
@ -497,7 +501,7 @@ CC: Sun C++ 5.13 SunOS_i386 151846-10 2015/10/30</code></pre>
|
||||
<li><code>--with-libffi=<path></code> - Set the path to <a href="#libffi">libffi</a></li>
|
||||
<li><code>--with-jtreg=<path></code> - Set the path to JTReg. See <a href="#running-tests">Running Tests</a></li>
|
||||
</ul>
|
||||
<p>Certain third-party libraries used by the JDK (libjpeg, giflib, libpng, lcms and zlib) are included in the JDK repository. The default behavior of the JDK build is to use this version of these libraries, but they might be replaced by an external version. To do so, specify <code>system</code> as the <code><source></code> option in these arguments. (The default is <code>bundled</code>).</p>
|
||||
<p>Certain third-party libraries used by the JDK (libjpeg, giflib, libpng, lcms and zlib) are included in the JDK repository. The default behavior of the JDK build is to use the included ("bundled") versions of libjpeg, giflib, libpng and lcms. For zlib, the system lib (if present) is used except on Windows and AIX. However the bundled libraries may be replaced by an external version. To do so, specify <code>system</code> as the <code><source></code> option in these arguments. (The default is <code>bundled</code>).</p>
|
||||
<ul>
|
||||
<li><code>--with-libjpeg=<source></code> - Use the specified source for libjpeg</li>
|
||||
<li><code>--with-giflib=<source></code> - Use the specified source for giflib</li>
|
||||
|
@ -328,6 +328,11 @@ issues.
|
||||
Solaris Oracle Solaris Studio 12.6 (with compiler version 5.15)
|
||||
Windows Microsoft Visual Studio 2017 update 15.9.6
|
||||
|
||||
All compilers are expected to be able to compile to the C99 language standard,
|
||||
as some C99 features are used in the source code. Microsoft Visual Studio
|
||||
doesn't fully support C99 so in practice shared code is limited to using C99
|
||||
features that it does support.
|
||||
|
||||
### gcc
|
||||
|
||||
The minimum accepted version of gcc is 4.8. Older versions will generate a warning
|
||||
@ -722,9 +727,12 @@ can in turn be overriden at runtime by setting the `java.library.path` property.
|
||||
|
||||
Certain third-party libraries used by the JDK (libjpeg, giflib, libpng, lcms
|
||||
and zlib) are included in the JDK repository. The default behavior of the
|
||||
JDK build is to use this version of these libraries, but they might be
|
||||
replaced by an external version. To do so, specify `system` as the `<source>`
|
||||
option in these arguments. (The default is `bundled`).
|
||||
JDK build is to use the included ("bundled") versions of libjpeg, giflib,
|
||||
libpng and lcms.
|
||||
For zlib, the system lib (if present) is used except on Windows and AIX.
|
||||
However the bundled libraries may be replaced by an external version.
|
||||
To do so, specify `system` as the `<source>` option in these arguments.
|
||||
(The default is `bundled`).
|
||||
|
||||
* `--with-libjpeg=<source>` - Use the specified source for libjpeg
|
||||
* `--with-giflib=<source>` - Use the specified source for giflib
|
||||
|
@ -39,7 +39,7 @@ $(eval $(call IncludeCustomExtension, CompileJavaModules.gmk))
|
||||
# Module specific build settings
|
||||
|
||||
java.base_ADD_JAVAC_FLAGS += -Xdoclint:all/protected,-reference,-accessibility '-Xdoclint/package:java.*,javax.*' -XDstringConcat=inline
|
||||
java.base_COPY += .icu .dat .spp content-types.properties hijrah-config-islamic-umalqura.properties
|
||||
java.base_COPY += .icu .dat .spp .nrm content-types.properties hijrah-config-islamic-umalqura.properties
|
||||
java.base_CLEAN += intrinsic.properties
|
||||
|
||||
java.base_EXCLUDE_FILES += \
|
||||
|
@ -85,13 +85,14 @@ JAVADOC_TAGS := \
|
||||
-tag param \
|
||||
-tag return \
|
||||
-tag throws \
|
||||
-taglet build.tools.taglet.JSpec\$$JLS \
|
||||
-taglet build.tools.taglet.JSpec\$$JVMS \
|
||||
-taglet build.tools.taglet.ModuleGraph \
|
||||
-taglet build.tools.taglet.ToolGuide \
|
||||
-tag since \
|
||||
-tag serialData \
|
||||
-tag factory \
|
||||
-tag see \
|
||||
-tag 'jvms:a:See <cite>The Java™ Virtual Machine Specification</cite>:' \
|
||||
-tag 'jls:a:See <cite>The Java™ Language Specification</cite>:' \
|
||||
-taglet build.tools.taglet.ExtLink \
|
||||
-taglet build.tools.taglet.Incubating \
|
||||
-tagletpath $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes \
|
||||
@ -275,7 +276,8 @@ define SetupApiDocsGenerationBody
|
||||
$1_INDIRECT_EXPORTS := $$(call FindTransitiveIndirectDepsForModules, $$($1_MODULES))
|
||||
$1_ALL_MODULES := $$(sort $$($1_MODULES) $$($1_INDIRECT_EXPORTS))
|
||||
|
||||
$1_JAVA_ARGS := -Dextlink.spec.version=$$(VERSION_SPECIFICATION)
|
||||
$1_JAVA_ARGS := -Dextlink.spec.version=$$(VERSION_SPECIFICATION) \
|
||||
-Djspec.version=$$(VERSION_SPECIFICATION)
|
||||
|
||||
ifeq ($$(ENABLE_FULL_DOCS), true)
|
||||
# Tell the ModuleGraph taglet to generate html links to soon-to-be-created
|
||||
@ -584,6 +586,7 @@ ifeq ($(ENABLE_PANDOC), true)
|
||||
CSS := $(GLOBAL_SPECS_DEFAULT_CSS_FILE), \
|
||||
OPTIONS := -A $($m_$f_BOTTOM_FILE), \
|
||||
EXTRA_DEPS := $($m_$f_BOTTOM_FILE), \
|
||||
POST_PROCESS := $(TOOL_FIXUPPANDOC), \
|
||||
)) \
|
||||
$(eval JDK_SPECS_TARGETS += $($($m_$f_NAME))) \
|
||||
) \
|
||||
@ -614,6 +617,7 @@ ifeq ($(ENABLE_PANDOC), true)
|
||||
CSS := $(GLOBAL_SPECS_DEFAULT_CSS_FILE), \
|
||||
REPLACEMENTS := @@VERSION_SHORT@@ => $(VERSION_SHORT), \
|
||||
OPTIONS := -A $(SPECS_BOTTOM_FILE_1), \
|
||||
POST_PROCESS := $(TOOL_FIXUPPANDOC), \
|
||||
EXTRA_DEPS := $(PANDOC_HTML_MANPAGE_FILTER) \
|
||||
$(PANDOC_HTML_MANPAGE_FILTER_JAVASCRIPT) \
|
||||
$(SPECS_BOTTOM_FILE_1), \
|
||||
|
@ -869,7 +869,7 @@ else
|
||||
JVM_DOCS_TARGETS ?= hotspot-$(JVM_VARIANT_MAIN)-gensrc
|
||||
|
||||
# The gensrc steps for hotspot and jdk.jdi create html spec files.
|
||||
docs-jdk-specs: $(JVM_DOCS_TARGETS) jdk.jdi-gensrc \
|
||||
docs-jdk-specs: buildtools-jdk $(JVM_DOCS_TARGETS) jdk.jdi-gensrc \
|
||||
docs-jdk-index
|
||||
|
||||
docs-zip: docs-jdk
|
||||
|
@ -1200,7 +1200,7 @@ ifeq ($(TEST_OPTS_JCOV), true)
|
||||
JCOV_REPORT_TITLE += Code filters: $(JCOV_FILTERS)<br>
|
||||
endif
|
||||
JCOV_REPORT_TITLE += Tests: $(TEST)
|
||||
|
||||
|
||||
jcov-gen-report: jcov-stop-grabber
|
||||
$(call LogWarn, Generating JCov report ...)
|
||||
$(JAVA) -Xmx4g -jar $(JCOV_HOME)/lib/jcov.jar RepGen -sourcepath \
|
||||
|
@ -337,6 +337,10 @@ SPEC := $(NEW_SPEC)
|
||||
default: all
|
||||
|
||||
run-test-prebuilt:
|
||||
# Need to make sure the failure logs output dir exists since
|
||||
# ExecuteWithLog is called in RunTests.gmk. The PrepareFailureLogs macro
|
||||
# is unfortunately not available at this point.
|
||||
$(call MakeDir, $(MAKESUPPORT_OUTPUTDIR)/failure-logs)
|
||||
@$(RM) -f $(MAKESUPPORT_OUTPUTDIR)/exit-with-error
|
||||
# The lazy initialization of the cache file in FindTests.gmk does not
|
||||
# always work with RunTests.gmk. To guarantee that the jtreg test groups
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -73,6 +73,9 @@ TOOL_BLACKLISTED_CERTS = $(JAVA_SMALL) -cp $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_cla
|
||||
TOOL_MAKEJAVASECURITY = $(JAVA_SMALL) -cp $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes \
|
||||
build.tools.makejavasecurity.MakeJavaSecurity
|
||||
|
||||
TOOL_GENERATEEMOJIDATA = $(JAVA_SMALL) -cp $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes \
|
||||
build.tools.generateemojidata.GenerateEmojiData
|
||||
|
||||
|
||||
# TODO: There are references to the jdwpgen.jar in jdk/make/netbeans/jdwpgen/build.xml
|
||||
# and nbproject/project.properties in the same dir. Needs to be looked at.
|
||||
@ -114,6 +117,9 @@ TOOL_GENCLASSLOADERMAP = $(JAVA_SMALL) $(INTERIM_LANGTOOLS_BOOTCLASSPATH) \
|
||||
TOOL_PUBLICSUFFIXLIST = $(JAVA_SMALL) -cp $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes \
|
||||
build.tools.publicsuffixlist.GeneratePublicSuffixList
|
||||
|
||||
TOOL_FIXUPPANDOC = $(JAVA_SMALL) -cp $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes \
|
||||
build.tools.fixuppandoc.Main
|
||||
|
||||
##########################################################################################
|
||||
|
||||
# Executable javascript filter for man page generation using pandoc.
|
||||
|
@ -300,6 +300,20 @@ AC_DEFUN([FLAGS_SETUP_OPTIMIZATION],
|
||||
C_O_FLAG_DEBUG="-O0"
|
||||
C_O_FLAG_DEBUG_JVM="-O0"
|
||||
C_O_FLAG_NONE="-O0"
|
||||
# -D_FORTIFY_SOURCE=2 hardening option needs optimization (at least -O1) enabled
|
||||
# set for lower O-levels -U_FORTIFY_SOURCE to overwrite previous settings
|
||||
if test "x$OPENJDK_TARGET_OS" = xlinux -a "x$DEBUG_LEVEL" = "xfastdebug"; then
|
||||
ENABLE_FORTIFY_CFLAGS="-D_FORTIFY_SOURCE=2"
|
||||
DISABLE_FORTIFY_CFLAGS="-U_FORTIFY_SOURCE"
|
||||
C_O_FLAG_HIGHEST_JVM="${C_O_FLAG_HIGHEST_JVM} ${ENABLE_FORTIFY_CFLAGS}"
|
||||
C_O_FLAG_HIGHEST="${C_O_FLAG_HIGHEST} ${ENABLE_FORTIFY_CFLAGS}"
|
||||
C_O_FLAG_HI="${C_O_FLAG_HI} ${ENABLE_FORTIFY_CFLAGS}"
|
||||
C_O_FLAG_NORM="${C_O_FLAG_NORM} ${ENABLE_FORTIFY_CFLAGS}"
|
||||
C_O_FLAG_SIZE="${C_O_FLAG_SIZE} ${DISABLE_FORTIFY_CFLAGS}"
|
||||
C_O_FLAG_DEBUG="${C_O_FLAG_DEBUG} ${DISABLE_FORTIFY_CFLAGS}"
|
||||
C_O_FLAG_DEBUG_JVM="${C_O_FLAG_DEBUG_JVM} ${DISABLE_FORTIFY_CFLAGS}"
|
||||
C_O_FLAG_NONE="${C_O_FLAG_NONE} ${DISABLE_FORTIFY_CFLAGS}"
|
||||
fi
|
||||
elif test "x$TOOLCHAIN_TYPE" = xclang; then
|
||||
if test "x$OPENJDK_TARGET_OS" = xmacosx; then
|
||||
# On MacOSX we optimize for size, something
|
||||
@ -550,7 +564,7 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_HELPER],
|
||||
TOOLCHAIN_CFLAGS="-errshort=tags"
|
||||
|
||||
TOOLCHAIN_CFLAGS_JDK="-mt $TOOLCHAIN_FLAGS"
|
||||
TOOLCHAIN_CFLAGS_JDK_CONLY="-xCC -Xa -W0,-noglobal $TOOLCHAIN_CFLAGS" # C only
|
||||
TOOLCHAIN_CFLAGS_JDK_CONLY="-W0,-noglobal $TOOLCHAIN_CFLAGS" # C only
|
||||
TOOLCHAIN_CFLAGS_JDK_CXXONLY="-features=no%except -norunpath -xnolib" # CXX only
|
||||
TOOLCHAIN_CFLAGS_JVM="-template=no%extdef -features=no%split_init \
|
||||
-library=stlport4 -mt -features=no%except $TOOLCHAIN_FLAGS"
|
||||
@ -571,6 +585,30 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_HELPER],
|
||||
TOOLCHAIN_CFLAGS_JDK="-nologo -MD -Zc:wchar_t-"
|
||||
fi
|
||||
|
||||
# CFLAGS C language level for JDK sources (hotspot only uses C++)
|
||||
# Ideally we would have a common level across all toolchains so that all sources
|
||||
# are sure to conform to the same standard. Unfortunately neither our sources nor
|
||||
# our toolchains are in a condition to support that. But what we loosely aim for is
|
||||
# C99 level.
|
||||
if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang || test "x$TOOLCHAIN_TYPE" = xxlc; then
|
||||
# This raises the language level for older 4.8 gcc, while lowering it for later
|
||||
# versions. clang and xlclang support the same flag.
|
||||
LANGSTD_CFLAGS="-std=c99"
|
||||
elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
|
||||
# We can't turn on -std=c99 without breaking compilation of the splashscreen/png
|
||||
# utilities. But we can enable c99 as below (previously achieved by using -Xa).
|
||||
# It is the no_lib that makes the difference.
|
||||
LANGSTD_CFLAGS="-xc99=all,no_lib"
|
||||
elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
|
||||
# MSVC doesn't support C99/C11 explicitly, unless you compile as C++:
|
||||
# LANGSTD_CFLAGS="/TP"
|
||||
# but that requires numerous changes to the sources files. So we are limited
|
||||
# to C89/C90 plus whatever extensions Visual Studio has decided to implement.
|
||||
# This is the lowest bar for shared code.
|
||||
LANGSTD_CFLAGS=""
|
||||
fi
|
||||
TOOLCHAIN_CFLAGS_JDK_CONLY="$LANGSTD_CFLAGS $TOOLCHAIN_CFLAGS_JDK_CONLY"
|
||||
|
||||
# CFLAGS WARNINGS STUFF
|
||||
# Set JVM_CFLAGS warning handling
|
||||
if test "x$TOOLCHAIN_TYPE" = xgcc; then
|
||||
|
@ -34,7 +34,9 @@ AC_DEFUN([HELP_MSG_MISSING_DEPENDENCY],
|
||||
# $1 is the help tag: cups, alsa etc
|
||||
MISSING_DEPENDENCY=$1
|
||||
|
||||
if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
|
||||
if test "x$MISSING_DEPENDENCY" = "xopenjdk"; then
|
||||
HELP_MSG="OpenJDK distributions are available at http://jdk.java.net/."
|
||||
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
|
||||
cygwin_help $MISSING_DEPENDENCY
|
||||
elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
|
||||
msys_help $MISSING_DEPENDENCY
|
||||
@ -91,8 +93,6 @@ apt_help() {
|
||||
PKGHANDLER_COMMAND="sudo apt-get install gcc-multilib g++-multilib" ;;
|
||||
devkit)
|
||||
PKGHANDLER_COMMAND="sudo apt-get install build-essential" ;;
|
||||
openjdk)
|
||||
PKGHANDLER_COMMAND="sudo apt-get install openjdk-8-jdk" ;;
|
||||
alsa)
|
||||
PKGHANDLER_COMMAND="sudo apt-get install libasound2-dev" ;;
|
||||
cups)
|
||||
@ -135,8 +135,6 @@ yum_help() {
|
||||
case $1 in
|
||||
devkit)
|
||||
PKGHANDLER_COMMAND="sudo yum groupinstall \"Development Tools\"" ;;
|
||||
openjdk)
|
||||
PKGHANDLER_COMMAND="sudo yum install java-1.8.0-openjdk-devel" ;;
|
||||
alsa)
|
||||
PKGHANDLER_COMMAND="sudo yum install alsa-lib-devel" ;;
|
||||
cups)
|
||||
@ -154,8 +152,6 @@ yum_help() {
|
||||
|
||||
brew_help() {
|
||||
case $1 in
|
||||
openjdk)
|
||||
PKGHANDLER_COMMAND="brew cask install java" ;;
|
||||
freetype)
|
||||
PKGHANDLER_COMMAND="brew install freetype" ;;
|
||||
ccache)
|
||||
|
@ -341,7 +341,7 @@ AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_FEATURES],
|
||||
|
||||
# Only enable Shenandoah on supported arches
|
||||
AC_MSG_CHECKING([if shenandoah can be built])
|
||||
if test "x$OPENJDK_TARGET_CPU" = "xx86_64" || test "x$OPENJDK_TARGET_CPU" = "xaarch64" ; then
|
||||
if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86" || test "x$OPENJDK_TARGET_CPU" = "xaarch64" ; then
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
DISABLED_JVM_FEATURES="$DISABLED_JVM_FEATURES shenandoahgc"
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -26,9 +26,12 @@
|
||||
################################################################################
|
||||
# Setup bundled libraries.
|
||||
#
|
||||
# For libjpeg, giflib, libpng, lcms2 and zlib, the source is present in the
|
||||
# OpenJDK repository. Default is to use these libraries as bundled, but they
|
||||
# might be replaced by en external version by the user.
|
||||
# For libjpeg, giflib, libpng, lcms2 and zlib the source is present in the
|
||||
# OpenJDK repository (referred to as "bundled"). Default is to use libjpeg,
|
||||
# giflib, libpng and lcms2 libraries as "bundled". The default for zlib is
|
||||
# to use the bundled zlib on Windows and AIX, otherwise the external ("system")
|
||||
# zlib, if present. However the libs may be replaced by an external ("system")
|
||||
# version by the user.
|
||||
################################################################################
|
||||
AC_DEFUN_ONCE([LIB_SETUP_BUNDLED_LIBS],
|
||||
[
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -365,6 +365,8 @@ class CharacterData00 extends CharacterData {
|
||||
case 0xA7B1: mapChar = 0x0287; break;
|
||||
case 0xA7B2: mapChar = 0x029D; break;
|
||||
case 0xA7B3: mapChar = 0xAB53; break;
|
||||
case 0xA7C5: mapChar = 0x0282; break;
|
||||
case 0xA7C6: mapChar = 0x1D8E; break;
|
||||
// default mapChar is already set, so no
|
||||
// need to redo it here.
|
||||
// default : mapChar = ch;
|
||||
@ -400,6 +402,7 @@ class CharacterData00 extends CharacterData {
|
||||
case 0x026C: mapChar = 0xA7AD; break;
|
||||
case 0x0271: mapChar = 0x2C6E; break;
|
||||
case 0x027D: mapChar = 0x2C64; break;
|
||||
case 0x0282: mapChar = 0xA7C5; break;
|
||||
case 0x0287: mapChar = 0xA7B1; break;
|
||||
case 0x029D: mapChar = 0xA7B2; break;
|
||||
case 0x029E: mapChar = 0xA7B0; break;
|
||||
@ -460,6 +463,7 @@ class CharacterData00 extends CharacterData {
|
||||
case 0x1C88: mapChar = 0xA64A; break;
|
||||
case 0x1D79: mapChar = 0xA77D; break;
|
||||
case 0x1D7D: mapChar = 0x2C63; break;
|
||||
case 0x1D8E: mapChar = 0xA7C6; break;
|
||||
case 0x1F80: mapChar = 0x1F88; break;
|
||||
case 0x1F81: mapChar = 0x1F89; break;
|
||||
case 0x1F82: mapChar = 0x1F8A; break;
|
||||
@ -854,6 +858,7 @@ class CharacterData00 extends CharacterData {
|
||||
case 0x026C: mapChar = 0xA7AD; break;
|
||||
case 0x0271: mapChar = 0x2C6E; break;
|
||||
case 0x027D: mapChar = 0x2C64; break;
|
||||
case 0x0282: mapChar = 0xA7C5; break;
|
||||
case 0x0287: mapChar = 0xA7B1; break;
|
||||
case 0x029D: mapChar = 0xA7B2; break;
|
||||
case 0x029E: mapChar = 0xA7B0; break;
|
||||
@ -914,6 +919,7 @@ class CharacterData00 extends CharacterData {
|
||||
case 0x1C88: mapChar = 0xA64A; break;
|
||||
case 0x1D79: mapChar = 0xA77D; break;
|
||||
case 0x1D7D: mapChar = 0x2C63; break;
|
||||
case 0x1D8E: mapChar = 0xA7C6; break;
|
||||
case 0x1FBE: mapChar = 0x0399; break;
|
||||
case 0x2C65: mapChar = 0x023A; break;
|
||||
case 0x2C66: mapChar = 0x023E; break;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -433,22 +433,59 @@ class CharacterData01 extends CharacterData {
|
||||
case 0X1EC92: retval = 7000; break; // INDIC SIYAQ NUMBER SEVEN THOUSAND
|
||||
case 0X1EC93: retval = 8000; break; // INDIC SIYAQ NUMBER EIGHT THOUSAND
|
||||
case 0X1EC94: retval = 9000; break; // INDIC SIYAQ NUMBER NINE THOUSAND
|
||||
case 0X1EC95: retval = 10000; break; // INDIC SIYAQ NUMBER TEN THOUSAND
|
||||
case 0X1EC96: retval = 20000; break; // INDIC SIYAQ NUMBER TWENTY THOUSAND
|
||||
case 0X1EC97: retval = 30000; break; // INDIC SIYAQ NUMBER THIRTY THOUSAND
|
||||
case 0X1EC98: retval = 40000; break; // INDIC SIYAQ NUMBER FORTY THOUSAND
|
||||
case 0X1EC99: retval = 50000; break; // INDIC SIYAQ NUMBER FIFTY THOUSAND
|
||||
case 0X1EC9A: retval = 60000; break; // INDIC SIYAQ NUMBER SIXTY THOUSAND
|
||||
case 0X1EC9B: retval = 70000; break; // INDIC SIYAQ NUMBER SEVENTY THOUSAND
|
||||
case 0X1EC9C: retval = 80000; break; // INDIC SIYAQ NUMBER EIGHTY THOUSAND
|
||||
case 0X1EC9D: retval = 90000; break; // INDIC SIYAQ NUMBER NINETY THOUSAND
|
||||
case 0X1EC9E: retval = 100000; break; // INDIC SIYAQ NUMBER LAKH
|
||||
case 0X1EC9F: retval = 200000; break; // INDIC SIYAQ NUMBER LAKHAN
|
||||
case 0X1ECA0: retval = 100000; break; // INDIC SIYAQ LAKH MARK
|
||||
case 0X1ECA1: retval = 10000000; break; // INDIC SIYAQ NUMBER KAROR
|
||||
case 0X1ECA2: retval = 20000000; break; // INDIC SIYAQ NUMBER KARORAN
|
||||
case 0X1ECB3: retval = 10000; break; // INDIC SIYAQ NUMBER ALTERNATE TEN THOUSAND
|
||||
case 0X1ECB4: retval = 100000; break; // INDIC SIYAQ NUMBER ALTERNATE LAKH MARK
|
||||
case 0X1EC95: retval = 10000; break; // INDIC SIYAQ NUMBER TEN THOUSAND
|
||||
case 0X1EC96: retval = 20000; break; // INDIC SIYAQ NUMBER TWENTY THOUSAND
|
||||
case 0X1EC97: retval = 30000; break; // INDIC SIYAQ NUMBER THIRTY THOUSAND
|
||||
case 0X1EC98: retval = 40000; break; // INDIC SIYAQ NUMBER FORTY THOUSAND
|
||||
case 0X1EC99: retval = 50000; break; // INDIC SIYAQ NUMBER FIFTY THOUSAND
|
||||
case 0X1EC9A: retval = 60000; break; // INDIC SIYAQ NUMBER SIXTY THOUSAND
|
||||
case 0X1EC9B: retval = 70000; break; // INDIC SIYAQ NUMBER SEVENTY THOUSAND
|
||||
case 0X1EC9C: retval = 80000; break; // INDIC SIYAQ NUMBER EIGHTY THOUSAND
|
||||
case 0X1EC9D: retval = 90000; break; // INDIC SIYAQ NUMBER NINETY THOUSAND
|
||||
case 0X1EC9E: retval = 100000; break; // INDIC SIYAQ NUMBER LAKH
|
||||
case 0X1EC9F: retval = 200000; break; // INDIC SIYAQ NUMBER LAKHAN
|
||||
case 0X1ECA0: retval = 100000; break; // INDIC SIYAQ LAKH MARK
|
||||
case 0X1ECA1: retval = 10000000; break;// INDIC SIYAQ NUMBER KAROR
|
||||
case 0X1ECA2: retval = 20000000; break;// INDIC SIYAQ NUMBER KARORAN
|
||||
case 0X1ECB3: retval = 10000; break; // INDIC SIYAQ NUMBER ALTERNATE TEN THOUSAND
|
||||
case 0X1ECB4: retval = 100000; break; // INDIC SIYAQ NUMBER ALTERNATE LAKH MARK
|
||||
case 0X1ED0D: retval = 40; break; // OTTOMAN SIYAQ NUMBER FORTY
|
||||
case 0X1ED0E: retval = 50; break; // OTTOMAN SIYAQ NUMBER FIFTY
|
||||
case 0X1ED0F: retval = 60; break; // OTTOMAN SIYAQ NUMBER SIXTY
|
||||
case 0X1ED10: retval = 70; break; // OTTOMAN SIYAQ NUMBER SEVENTY
|
||||
case 0X1ED11: retval = 80; break; // OTTOMAN SIYAQ NUMBER EIGHTY
|
||||
case 0X1ED12: retval = 90; break; // OTTOMAN SIYAQ NUMBER NINETY
|
||||
case 0X1ED13: retval = 100; break; // OTTOMAN SIYAQ NUMBER ONE HUNDRED
|
||||
case 0X1ED14: retval = 200; break; // OTTOMAN SIYAQ NUMBER TWO HUNDRED
|
||||
case 0X1ED15: retval = 300; break; // OTTOMAN SIYAQ NUMBER THREE HUNDRED
|
||||
case 0X1ED16: retval = 400; break; // OTTOMAN SIYAQ NUMBER FOUR HUNDRED
|
||||
case 0X1ED17: retval = 500; break; // OTTOMAN SIYAQ NUMBER FIVE HUNDRED
|
||||
case 0X1ED18: retval = 600; break; // OTTOMAN SIYAQ NUMBER SIX HUNDRED
|
||||
case 0X1ED19: retval = 700; break; // OTTOMAN SIYAQ NUMBER SEVEN HUNDRED
|
||||
case 0X1ED1A: retval = 800; break; // OTTOMAN SIYAQ NUMBER EIGHT HUNDRED
|
||||
case 0X1ED1B: retval = 900; break; // OTTOMAN SIYAQ NUMBER NINE HUNDRED
|
||||
case 0X1ED1C: retval = 1000; break; // OTTOMAN SIYAQ NUMBER ONE THOUSAND
|
||||
case 0X1ED1D: retval = 2000; break; // OTTOMAN SIYAQ NUMBER TWO THOUSAND
|
||||
case 0X1ED1E: retval = 3000; break; // OTTOMAN SIYAQ NUMBER THREE THOUSAND
|
||||
case 0X1ED1F: retval = 4000; break; // OTTOMAN SIYAQ NUMBER FOUR THOUSAND
|
||||
case 0X1ED20: retval = 5000; break; // OTTOMAN SIYAQ NUMBER FIVE THOUSAND
|
||||
case 0X1ED21: retval = 6000; break; // OTTOMAN SIYAQ NUMBER SIX THOUSAND
|
||||
case 0X1ED22: retval = 7000; break; // OTTOMAN SIYAQ NUMBER SEVEN THOUSAND
|
||||
case 0X1ED23: retval = 8000; break; // OTTOMAN SIYAQ NUMBER EIGHT THOUSAND
|
||||
case 0X1ED24: retval = 9000; break; // OTTOMAN SIYAQ NUMBER NINE THOUSAND
|
||||
case 0X1ED25: retval = 10000; break; // OTTOMAN SIYAQ NUMBER TEN THOUSAND
|
||||
case 0X1ED26: retval = 20000; break; // OTTOMAN SIYAQ NUMBER TWENTY THOUSAND
|
||||
case 0X1ED27: retval = 30000; break; // OTTOMAN SIYAQ NUMBER THIRTY THOUSAND
|
||||
case 0X1ED28: retval = 40000; break; // OTTOMAN SIYAQ NUMBER FORTY THOUSAND
|
||||
case 0X1ED29: retval = 50000; break; // OTTOMAN SIYAQ NUMBER FIFTY THOUSAND
|
||||
case 0X1ED2A: retval = 60000; break; // OTTOMAN SIYAQ NUMBER SIXTY THOUSAND
|
||||
case 0X1ED2B: retval = 70000; break; // OTTOMAN SIYAQ NUMBER SEVENTY THOUSAND
|
||||
case 0X1ED2C: retval = 80000; break; // OTTOMAN SIYAQ NUMBER EIGHTY THOUSAND
|
||||
case 0X1ED2D: retval = 90000; break; // OTTOMAN SIYAQ NUMBER NINETY THOUSAND
|
||||
case 0X1ED38: retval = 400; break; // OTTOMAN SIYAQ ALTERNATE NUMBER FOUR HUNDRED
|
||||
case 0X1ED39: retval = 600; break; // OTTOMAN SIYAQ ALTERNATE NUMBER SIX HUNDRED
|
||||
case 0X1ED3A: retval = 2000; break; // OTTOMAN SIYAQ ALTERNATE NUMBER TWO THOUSAND
|
||||
case 0X1ED3B: retval = 10000; break; // OTTOMAN SIYAQ ALTERNATE NUMBER TEN THOUSAND
|
||||
default: retval = -2; break;
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Blocks-11.0.0.txt
|
||||
# Date: 2017-10-16, 24:39:00 GMT [KW]
|
||||
# Copyright (c) 2018 Unicode, Inc.
|
||||
# Blocks-12.1.0.txt
|
||||
# Date: 2019-03-08, 23:59:00 GMT [KW]
|
||||
# Copyright (c) 2019 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/terms_of_use.html
|
||||
#
|
||||
# Unicode Character Database
|
||||
@ -239,6 +239,7 @@ FFF0..FFFF; Specials
|
||||
10E60..10E7F; Rumi Numeral Symbols
|
||||
10F00..10F2F; Old Sogdian
|
||||
10F30..10F6F; Sogdian
|
||||
10FE0..10FFF; Elymaic
|
||||
11000..1107F; Brahmi
|
||||
11080..110CF; Kaithi
|
||||
110D0..110FF; Sora Sompeng
|
||||
@ -259,6 +260,7 @@ FFF0..FFFF; Specials
|
||||
11700..1173F; Ahom
|
||||
11800..1184F; Dogra
|
||||
118A0..118FF; Warang Citi
|
||||
119A0..119FF; Nandinagari
|
||||
11A00..11A4F; Zanabazar Square
|
||||
11A50..11AAF; Soyombo
|
||||
11AC0..11AFF; Pau Cin Hau
|
||||
@ -267,10 +269,12 @@ FFF0..FFFF; Specials
|
||||
11D00..11D5F; Masaram Gondi
|
||||
11D60..11DAF; Gunjala Gondi
|
||||
11EE0..11EFF; Makasar
|
||||
11FC0..11FFF; Tamil Supplement
|
||||
12000..123FF; Cuneiform
|
||||
12400..1247F; Cuneiform Numbers and Punctuation
|
||||
12480..1254F; Early Dynastic Cuneiform
|
||||
13000..1342F; Egyptian Hieroglyphs
|
||||
13430..1343F; Egyptian Hieroglyph Format Controls
|
||||
14400..1467F; Anatolian Hieroglyphs
|
||||
16800..16A3F; Bamum Supplement
|
||||
16A40..16A6F; Mro
|
||||
@ -283,6 +287,7 @@ FFF0..FFFF; Specials
|
||||
18800..18AFF; Tangut Components
|
||||
1B000..1B0FF; Kana Supplement
|
||||
1B100..1B12F; Kana Extended-A
|
||||
1B130..1B16F; Small Kana Extension
|
||||
1B170..1B2FF; Nushu
|
||||
1BC00..1BC9F; Duployan
|
||||
1BCA0..1BCAF; Shorthand Format Controls
|
||||
@ -295,9 +300,12 @@ FFF0..FFFF; Specials
|
||||
1D400..1D7FF; Mathematical Alphanumeric Symbols
|
||||
1D800..1DAAF; Sutton SignWriting
|
||||
1E000..1E02F; Glagolitic Supplement
|
||||
1E100..1E14F; Nyiakeng Puachue Hmong
|
||||
1E2C0..1E2FF; Wancho
|
||||
1E800..1E8DF; Mende Kikakui
|
||||
1E900..1E95F; Adlam
|
||||
1EC70..1ECBF; Indic Siyaq Numbers
|
||||
1ED00..1ED4F; Ottoman Siyaq Numbers
|
||||
1EE00..1EEFF; Arabic Mathematical Alphabetic Symbols
|
||||
1F000..1F02F; Mahjong Tiles
|
||||
1F030..1F09F; Domino Tiles
|
||||
@ -313,6 +321,7 @@ FFF0..FFFF; Specials
|
||||
1F800..1F8FF; Supplemental Arrows-C
|
||||
1F900..1F9FF; Supplemental Symbols and Pictographs
|
||||
1FA00..1FA6F; Chess Symbols
|
||||
1FA70..1FAFF; Symbols and Pictographs Extended-A
|
||||
20000..2A6DF; CJK Unified Ideographs Extension B
|
||||
2A700..2B73F; CJK Unified Ideographs Extension C
|
||||
2B740..2B81F; CJK Unified Ideographs Extension D
|
18875
make/data/unicodedata/NormalizationTest.txt
Normal file
18875
make/data/unicodedata/NormalizationTest.txt
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
||||
# PropList-11.0.0.txt
|
||||
# Date: 2018-03-15, 04:28:35 GMT
|
||||
# Copyright (c) 2018 Unicode, Inc.
|
||||
# PropList-12.1.0.txt
|
||||
# Date: 2019-03-10, 10:53:16 GMT
|
||||
# Copyright (c) 2019 Unicode, Inc.
|
||||
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
|
||||
# For terms of use, see http://www.unicode.org/terms_of_use.html
|
||||
#
|
||||
@ -138,7 +138,7 @@ FF63 ; Quotation_Mark # Pe HALFWIDTH RIGHT CORNER BRACKET
|
||||
0F0D..0F12 ; Terminal_Punctuation # Po [6] TIBETAN MARK SHAD..TIBETAN MARK RGYA GRAM SHAD
|
||||
104A..104B ; Terminal_Punctuation # Po [2] MYANMAR SIGN LITTLE SECTION..MYANMAR SIGN SECTION
|
||||
1361..1368 ; Terminal_Punctuation # Po [8] ETHIOPIC WORDSPACE..ETHIOPIC PARAGRAPH SEPARATOR
|
||||
166D..166E ; Terminal_Punctuation # Po [2] CANADIAN SYLLABICS CHI SIGN..CANADIAN SYLLABICS FULL STOP
|
||||
166E ; Terminal_Punctuation # Po CANADIAN SYLLABICS FULL STOP
|
||||
16EB..16ED ; Terminal_Punctuation # Po [3] RUNIC SINGLE PUNCTUATION..RUNIC CROSS PUNCTUATION
|
||||
1735..1736 ; Terminal_Punctuation # Po [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION
|
||||
17D4..17D6 ; Terminal_Punctuation # Po [3] KHMER SIGN KHAN..KHMER SIGN CAMNUC PII KUUH
|
||||
@ -157,7 +157,7 @@ FF63 ; Quotation_Mark # Pe HALFWIDTH RIGHT CORNER BRACKET
|
||||
2E3C ; Terminal_Punctuation # Po STENOGRAPHIC FULL STOP
|
||||
2E41 ; Terminal_Punctuation # Po REVERSED COMMA
|
||||
2E4C ; Terminal_Punctuation # Po MEDIEVAL COMMA
|
||||
2E4E ; Terminal_Punctuation # Po PUNCTUS ELEVATUS MARK
|
||||
2E4E..2E4F ; Terminal_Punctuation # Po [2] PUNCTUS ELEVATUS MARK..CORNISH VERSE DIVIDER
|
||||
3001..3002 ; Terminal_Punctuation # Po [2] IDEOGRAPHIC COMMA..IDEOGRAPHIC FULL STOP
|
||||
A4FE..A4FF ; Terminal_Punctuation # Po [2] LISU PUNCTUATION COMMA..LISU PUNCTUATION FULL STOP
|
||||
A60D..A60F ; Terminal_Punctuation # Po [3] VAI COMMA..VAI QUESTION MARK
|
||||
@ -553,15 +553,17 @@ FF41..FF46 ; Hex_Digit # L& [6] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH L
|
||||
1056..1057 ; Other_Alphabetic # Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR
|
||||
1058..1059 ; Other_Alphabetic # Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL
|
||||
105E..1060 ; Other_Alphabetic # Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA
|
||||
1062 ; Other_Alphabetic # Mc MYANMAR VOWEL SIGN SGAW KAREN EU
|
||||
1067..1068 ; Other_Alphabetic # Mc [2] MYANMAR VOWEL SIGN WESTERN PWO KAREN EU..MYANMAR VOWEL SIGN WESTERN PWO KAREN UE
|
||||
1062..1064 ; Other_Alphabetic # Mc [3] MYANMAR VOWEL SIGN SGAW KAREN EU..MYANMAR TONE MARK SGAW KAREN KE PHO
|
||||
1067..106D ; Other_Alphabetic # Mc [7] MYANMAR VOWEL SIGN WESTERN PWO KAREN EU..MYANMAR SIGN WESTERN PWO KAREN TONE-5
|
||||
1071..1074 ; Other_Alphabetic # Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE
|
||||
1082 ; Other_Alphabetic # Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA
|
||||
1083..1084 ; Other_Alphabetic # Mc [2] MYANMAR VOWEL SIGN SHAN AA..MYANMAR VOWEL SIGN SHAN E
|
||||
1085..1086 ; Other_Alphabetic # Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y
|
||||
109C ; Other_Alphabetic # Mc MYANMAR VOWEL SIGN AITON A
|
||||
1087..108C ; Other_Alphabetic # Mc [6] MYANMAR SIGN SHAN TONE-2..MYANMAR SIGN SHAN COUNCIL TONE-3
|
||||
108D ; Other_Alphabetic # Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE
|
||||
108F ; Other_Alphabetic # Mc MYANMAR SIGN RUMAI PALAUNG TONE-5
|
||||
109A..109C ; Other_Alphabetic # Mc [3] MYANMAR SIGN KHAMTI TONE-1..MYANMAR VOWEL SIGN AITON A
|
||||
109D ; Other_Alphabetic # Mn MYANMAR VOWEL SIGN AITON AI
|
||||
135F ; Other_Alphabetic # Mn ETHIOPIC COMBINING GEMINATION MARK
|
||||
1712..1713 ; Other_Alphabetic # Mn [2] TAGALOG VOWEL SIGN I..TAGALOG VOWEL SIGN U
|
||||
1732..1733 ; Other_Alphabetic # Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U
|
||||
1752..1753 ; Other_Alphabetic # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U
|
||||
@ -618,18 +620,21 @@ FF41..FF46 ; Hex_Digit # L& [6] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH L
|
||||
1C24..1C2B ; Other_Alphabetic # Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU
|
||||
1C2C..1C33 ; Other_Alphabetic # Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T
|
||||
1C34..1C35 ; Other_Alphabetic # Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG
|
||||
1CF2..1CF3 ; Other_Alphabetic # Mc [2] VEDIC SIGN ARDHAVISARGA..VEDIC SIGN ROTATED ARDHAVISARGA
|
||||
1C36 ; Other_Alphabetic # Mn LEPCHA SIGN RAN
|
||||
1DE7..1DF4 ; Other_Alphabetic # Mn [14] COMBINING LATIN SMALL LETTER ALPHA..COMBINING LATIN SMALL LETTER U WITH DIAERESIS
|
||||
24B6..24E9 ; Other_Alphabetic # So [52] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN SMALL LETTER Z
|
||||
2DE0..2DFF ; Other_Alphabetic # Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS
|
||||
A674..A67B ; Other_Alphabetic # Mn [8] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC LETTER OMEGA
|
||||
A69E..A69F ; Other_Alphabetic # Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E
|
||||
A802 ; Other_Alphabetic # Mn SYLOTI NAGRI SIGN DVISVARA
|
||||
A80B ; Other_Alphabetic # Mn SYLOTI NAGRI SIGN ANUSVARA
|
||||
A823..A824 ; Other_Alphabetic # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I
|
||||
A825..A826 ; Other_Alphabetic # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
|
||||
A827 ; Other_Alphabetic # Mc SYLOTI NAGRI VOWEL SIGN OO
|
||||
A880..A881 ; Other_Alphabetic # Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA
|
||||
A8B4..A8C3 ; Other_Alphabetic # Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU
|
||||
A8C5 ; Other_Alphabetic # Mn SAURASHTRA SIGN CANDRABINDU
|
||||
A8FF ; Other_Alphabetic # Mn DEVANAGARI VOWEL SIGN AY
|
||||
A926..A92A ; Other_Alphabetic # Mn [5] KAYAH LI VOWEL UE..KAYAH LI VOWEL O
|
||||
A947..A951 ; Other_Alphabetic # Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R
|
||||
A952 ; Other_Alphabetic # Mc REJANG CONSONANT SIGN H
|
||||
@ -638,8 +643,9 @@ A983 ; Other_Alphabetic # Mc JAVANESE SIGN WIGNYAN
|
||||
A9B4..A9B5 ; Other_Alphabetic # Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG
|
||||
A9B6..A9B9 ; Other_Alphabetic # Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT
|
||||
A9BA..A9BB ; Other_Alphabetic # Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE
|
||||
A9BC ; Other_Alphabetic # Mn JAVANESE VOWEL SIGN PEPET
|
||||
A9BD..A9BF ; Other_Alphabetic # Mc [3] JAVANESE CONSONANT SIGN KERET..JAVANESE CONSONANT SIGN CAKRA
|
||||
A9BC..A9BD ; Other_Alphabetic # Mn [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET
|
||||
A9BE..A9BF ; Other_Alphabetic # Mc [2] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE CONSONANT SIGN CAKRA
|
||||
A9E5 ; Other_Alphabetic # Mn MYANMAR SIGN SHAN SAW
|
||||
AA29..AA2E ; Other_Alphabetic # Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE
|
||||
AA2F..AA30 ; Other_Alphabetic # Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI
|
||||
AA31..AA32 ; Other_Alphabetic # Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE
|
||||
@ -648,6 +654,9 @@ AA35..AA36 ; Other_Alphabetic # Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONA
|
||||
AA43 ; Other_Alphabetic # Mn CHAM CONSONANT SIGN FINAL NG
|
||||
AA4C ; Other_Alphabetic # Mn CHAM CONSONANT SIGN FINAL M
|
||||
AA4D ; Other_Alphabetic # Mc CHAM CONSONANT SIGN FINAL H
|
||||
AA7B ; Other_Alphabetic # Mc MYANMAR SIGN PAO KAREN TONE
|
||||
AA7C ; Other_Alphabetic # Mn MYANMAR SIGN TAI LAING TONE-2
|
||||
AA7D ; Other_Alphabetic # Mc MYANMAR SIGN TAI LAING TONE-5
|
||||
AAB0 ; Other_Alphabetic # Mn TAI VIET MAI KANG
|
||||
AAB2..AAB4 ; Other_Alphabetic # Mn [3] TAI VIET VOWEL I..TAI VIET VOWEL U
|
||||
AAB7..AAB8 ; Other_Alphabetic # Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA
|
||||
@ -740,6 +749,11 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA
|
||||
1182C..1182E ; Other_Alphabetic # Mc [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II
|
||||
1182F..11837 ; Other_Alphabetic # Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA
|
||||
11838 ; Other_Alphabetic # Mc DOGRA SIGN VISARGA
|
||||
119D1..119D3 ; Other_Alphabetic # Mc [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II
|
||||
119D4..119D7 ; Other_Alphabetic # Mn [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR
|
||||
119DA..119DB ; Other_Alphabetic # Mn [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI
|
||||
119DC..119DF ; Other_Alphabetic # Mc [4] NANDINAGARI VOWEL SIGN O..NANDINAGARI SIGN VISARGA
|
||||
119E4 ; Other_Alphabetic # Mc NANDINAGARI VOWEL SIGN PRISHTHAMATRA E
|
||||
11A01..11A0A ; Other_Alphabetic # Mn [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK
|
||||
11A35..11A38 ; Other_Alphabetic # Mn [4] ZANABAZAR SQUARE SIGN CANDRABINDU..ZANABAZAR SQUARE SIGN ANUSVARA
|
||||
11A39 ; Other_Alphabetic # Mc ZANABAZAR SQUARE SIGN VISARGA
|
||||
@ -773,8 +787,9 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA
|
||||
11D96 ; Other_Alphabetic # Mc GUNJALA GONDI SIGN VISARGA
|
||||
11EF3..11EF4 ; Other_Alphabetic # Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U
|
||||
11EF5..11EF6 ; Other_Alphabetic # Mc [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O
|
||||
16B30..16B36 ; Other_Alphabetic # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
|
||||
16F51..16F7E ; Other_Alphabetic # Mc [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG
|
||||
16F4F ; Other_Alphabetic # Mn MIAO SIGN CONSONANT MODIFIER BAR
|
||||
16F51..16F87 ; Other_Alphabetic # Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI
|
||||
16F8F..16F92 ; Other_Alphabetic # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW
|
||||
1BC9E ; Other_Alphabetic # Mn DUPLOYAN DOUBLE MARK
|
||||
1E000..1E006 ; Other_Alphabetic # Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
|
||||
1E008..1E018 ; Other_Alphabetic # Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
|
||||
@ -786,7 +801,7 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA
|
||||
1F150..1F169 ; Other_Alphabetic # So [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
|
||||
1F170..1F189 ; Other_Alphabetic # So [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z
|
||||
|
||||
# Total code points: 1334
|
||||
# Total code points: 1377
|
||||
|
||||
# ================================================
|
||||
|
||||
@ -798,7 +813,7 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA
|
||||
4E00..9FEF ; Ideographic # Lo [20976] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FEF
|
||||
F900..FA6D ; Ideographic # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D
|
||||
FA70..FAD9 ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
|
||||
17000..187F1 ; Ideographic # Lo [6130] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F1
|
||||
17000..187F7 ; Ideographic # Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7
|
||||
18800..18AF2 ; Ideographic # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755
|
||||
1B170..1B2FB ; Ideographic # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB
|
||||
20000..2A6D6 ; Ideographic # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
|
||||
@ -808,7 +823,7 @@ FA70..FAD9 ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COM
|
||||
2CEB0..2EBE0 ; Ideographic # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0
|
||||
2F800..2FA1D ; Ideographic # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
|
||||
|
||||
# Total code points: 96184
|
||||
# Total code points: 96190
|
||||
|
||||
# ================================================
|
||||
|
||||
@ -876,6 +891,7 @@ FA70..FAD9 ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COM
|
||||
0DCA ; Diacritic # Mn SINHALA SIGN AL-LAKUNA
|
||||
0E47..0E4C ; Diacritic # Mn [6] THAI CHARACTER MAITAIKHU..THAI CHARACTER THANTHAKHAT
|
||||
0E4E ; Diacritic # Mn THAI CHARACTER YAMAKKAN
|
||||
0EBA ; Diacritic # Mn LAO SIGN PALI VIRAMA
|
||||
0EC8..0ECC ; Diacritic # Mn [5] LAO TONE MAI EK..LAO CANCELLATION MARK
|
||||
0F18..0F19 ; Diacritic # Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
|
||||
0F35 ; Diacritic # Mn TIBETAN MARK NGAS BZUNG NYI ZLA
|
||||
@ -887,10 +903,13 @@ FA70..FAD9 ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COM
|
||||
0FC6 ; Diacritic # Mn TIBETAN SYMBOL PADMA GDAN
|
||||
1037 ; Diacritic # Mn MYANMAR SIGN DOT BELOW
|
||||
1039..103A ; Diacritic # Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT
|
||||
1063..1064 ; Diacritic # Mc [2] MYANMAR TONE MARK SGAW KAREN HATHI..MYANMAR TONE MARK SGAW KAREN KE PHO
|
||||
1069..106D ; Diacritic # Mc [5] MYANMAR SIGN WESTERN PWO KAREN TONE-1..MYANMAR SIGN WESTERN PWO KAREN TONE-5
|
||||
1087..108C ; Diacritic # Mc [6] MYANMAR SIGN SHAN TONE-2..MYANMAR SIGN SHAN COUNCIL TONE-3
|
||||
108D ; Diacritic # Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE
|
||||
108F ; Diacritic # Mc MYANMAR SIGN RUMAI PALAUNG TONE-5
|
||||
109A..109B ; Diacritic # Mc [2] MYANMAR SIGN KHAMTI TONE-1..MYANMAR SIGN KHAMTI TONE-3
|
||||
135D..135F ; Diacritic # Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK
|
||||
17C9..17D3 ; Diacritic # Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
|
||||
17DD ; Diacritic # Mn KHMER SIGN ATTHACAN
|
||||
1939..193B ; Diacritic # Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I
|
||||
@ -935,9 +954,11 @@ A67C..A67D ; Diacritic # Mn [2] COMBINING CYRILLIC KAVYKA..COMBINING CYRILL
|
||||
A67F ; Diacritic # Lm CYRILLIC PAYEROK
|
||||
A69C..A69D ; Diacritic # Lm [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN
|
||||
A6F0..A6F1 ; Diacritic # Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS
|
||||
A700..A716 ; Diacritic # Sk [23] MODIFIER LETTER CHINESE TONE YIN PING..MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR
|
||||
A717..A71F ; Diacritic # Lm [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK
|
||||
A720..A721 ; Diacritic # Sk [2] MODIFIER LETTER STRESS AND HIGH TONE..MODIFIER LETTER STRESS AND LOW TONE
|
||||
A788 ; Diacritic # Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT
|
||||
A789..A78A ; Diacritic # Sk [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN
|
||||
A7F8..A7F9 ; Diacritic # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
|
||||
A8C4 ; Diacritic # Mn SAURASHTRA SIGN VIRAMA
|
||||
A8E0..A8F1 ; Diacritic # Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
|
||||
@ -992,6 +1013,7 @@ FFE3 ; Diacritic # Sk FULLWIDTH MACRON
|
||||
116B7 ; Diacritic # Mn TAKRI SIGN NUKTA
|
||||
1172B ; Diacritic # Mn AHOM SIGN KILLER
|
||||
11839..1183A ; Diacritic # Mn [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA
|
||||
119E0 ; Diacritic # Mn NANDINAGARI SIGN VIRAMA
|
||||
11A34 ; Diacritic # Mn ZANABAZAR SQUARE SIGN VIRAMA
|
||||
11A47 ; Diacritic # Mn ZANABAZAR SQUARE SUBJOINER
|
||||
11A99 ; Diacritic # Mn SOYOMBO SUBJOINER
|
||||
@ -1000,6 +1022,7 @@ FFE3 ; Diacritic # Sk FULLWIDTH MACRON
|
||||
11D44..11D45 ; Diacritic # Mn [2] MASARAM GONDI SIGN HALANTA..MASARAM GONDI VIRAMA
|
||||
11D97 ; Diacritic # Mn GUNJALA GONDI VIRAMA
|
||||
16AF0..16AF4 ; Diacritic # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
|
||||
16B30..16B36 ; Diacritic # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
|
||||
16F8F..16F92 ; Diacritic # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW
|
||||
16F93..16F9F ; Diacritic # Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
|
||||
1D167..1D169 ; Diacritic # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
|
||||
@ -1007,11 +1030,13 @@ FFE3 ; Diacritic # Sk FULLWIDTH MACRON
|
||||
1D17B..1D182 ; Diacritic # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE
|
||||
1D185..1D18B ; Diacritic # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
|
||||
1D1AA..1D1AD ; Diacritic # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
|
||||
1E130..1E136 ; Diacritic # Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D
|
||||
1E2EC..1E2EF ; Diacritic # Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI
|
||||
1E8D0..1E8D6 ; Diacritic # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
|
||||
1E944..1E946 ; Diacritic # Mn [3] ADLAM ALIF LENGTHENER..ADLAM GEMINATION MARK
|
||||
1E948..1E94A ; Diacritic # Mn [3] ADLAM CONSONANT MODIFIER..ADLAM NUKTA
|
||||
|
||||
# Total code points: 818
|
||||
# Total code points: 873
|
||||
|
||||
# ================================================
|
||||
|
||||
@ -1043,9 +1068,11 @@ FF70 ; Extender # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND
|
||||
11A98 ; Extender # Mn SOYOMBO GEMINATION MARK
|
||||
16B42..16B43 ; Extender # Lm [2] PAHAWH HMONG SIGN VOS NRUA..PAHAWH HMONG SIGN IB YAM
|
||||
16FE0..16FE1 ; Extender # Lm [2] TANGUT ITERATION MARK..NUSHU ITERATION MARK
|
||||
16FE3 ; Extender # Lm OLD CHINESE ITERATION MARK
|
||||
1E13C..1E13D ; Extender # Lm [2] NYIAKENG PUACHUE HMONG SIGN XW XW..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER
|
||||
1E944..1E946 ; Extender # Mn [3] ADLAM ALIF LENGTHENER..ADLAM GEMINATION MARK
|
||||
|
||||
# Total code points: 44
|
||||
# Total code points: 47
|
||||
|
||||
# ================================================
|
||||
|
||||
@ -1119,6 +1146,7 @@ FFFFE..FFFFF ; Noncharacter_Code_Point # Cn [2] <noncharacter-FFFFE>..<noncha
|
||||
0D57 ; Other_Grapheme_Extend # Mc MALAYALAM AU LENGTH MARK
|
||||
0DCF ; Other_Grapheme_Extend # Mc SINHALA VOWEL SIGN AELA-PILLA
|
||||
0DDF ; Other_Grapheme_Extend # Mc SINHALA VOWEL SIGN GAYANUKITTA
|
||||
1B35 ; Other_Grapheme_Extend # Mc BALINESE VOWEL SIGN TEDUNG
|
||||
200C ; Other_Grapheme_Extend # Cf ZERO WIDTH NON-JOINER
|
||||
302E..302F ; Other_Grapheme_Extend # Mc [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK
|
||||
FF9E..FF9F ; Other_Grapheme_Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
|
||||
@ -1131,7 +1159,7 @@ FF9E..FF9F ; Other_Grapheme_Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND
|
||||
1D16E..1D172 ; Other_Grapheme_Extend # Mc [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5
|
||||
E0020..E007F ; Other_Grapheme_Extend # Cf [96] TAG SPACE..CANCEL TAG
|
||||
|
||||
# Total code points: 125
|
||||
# Total code points: 126
|
||||
|
||||
# ================================================
|
||||
|
||||
@ -1547,10 +1575,7 @@ E0100..E01EF ; Variation_Selector # Mn [240] VARIATION SELECTOR-17..VARIATION S
|
||||
2B74..2B75 ; Pattern_Syntax # Cn [2] <reserved-2B74>..<reserved-2B75>
|
||||
2B76..2B95 ; Pattern_Syntax # So [32] NORTH WEST TRIANGLE-HEADED ARROW TO BAR..RIGHTWARDS BLACK ARROW
|
||||
2B96..2B97 ; Pattern_Syntax # Cn [2] <reserved-2B96>..<reserved-2B97>
|
||||
2B98..2BC8 ; Pattern_Syntax # So [49] THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED
|
||||
2BC9 ; Pattern_Syntax # Cn <reserved-2BC9>
|
||||
2BCA..2BFE ; Pattern_Syntax # So [53] TOP HALF BLACK CIRCLE..REVERSED RIGHT ANGLE
|
||||
2BFF ; Pattern_Syntax # Cn <reserved-2BFF>
|
||||
2B98..2BFF ; Pattern_Syntax # So [104] THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..HELLSCHREIBER PAUSE SYMBOL
|
||||
2E00..2E01 ; Pattern_Syntax # Po [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER
|
||||
2E02 ; Pattern_Syntax # Pi LEFT SUBSTITUTION BRACKET
|
||||
2E03 ; Pattern_Syntax # Pf RIGHT SUBSTITUTION BRACKET
|
||||
@ -1588,8 +1613,8 @@ E0100..E01EF ; Variation_Selector # Mn [240] VARIATION SELECTOR-17..VARIATION S
|
||||
2E40 ; Pattern_Syntax # Pd DOUBLE HYPHEN
|
||||
2E41 ; Pattern_Syntax # Po REVERSED COMMA
|
||||
2E42 ; Pattern_Syntax # Ps DOUBLE LOW-REVERSED-9 QUOTATION MARK
|
||||
2E43..2E4E ; Pattern_Syntax # Po [12] DASH WITH LEFT UPTURN..PUNCTUS ELEVATUS MARK
|
||||
2E4F..2E7F ; Pattern_Syntax # Cn [49] <reserved-2E4F>..<reserved-2E7F>
|
||||
2E43..2E4F ; Pattern_Syntax # Po [13] DASH WITH LEFT UPTURN..CORNISH VERSE DIVIDER
|
||||
2E50..2E7F ; Pattern_Syntax # Cn [48] <reserved-2E50>..<reserved-2E7F>
|
||||
3001..3003 ; Pattern_Syntax # Po [3] IDEOGRAPHIC COMMA..DITTO MARK
|
||||
3008 ; Pattern_Syntax # Ps LEFT ANGLE BRACKET
|
||||
3009 ; Pattern_Syntax # Pe RIGHT ANGLE BRACKET
|
||||
|
@ -1,6 +1,6 @@
|
||||
# PropertyValueAliases-11.0.0.txt
|
||||
# Date: 2018-05-20, 09:03:12 GMT
|
||||
# Copyright (c) 2018 Unicode, Inc.
|
||||
# PropertyValueAliases-12.1.0.txt
|
||||
# Date: 2019-03-10, 10:53:18 GMT
|
||||
# Copyright (c) 2019 Unicode, Inc.
|
||||
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
|
||||
# For terms of use, see http://www.unicode.org/terms_of_use.html
|
||||
#
|
||||
@ -22,12 +22,15 @@
|
||||
# First Field: The first field describes the property for which that
|
||||
# property value name is used.
|
||||
#
|
||||
# Second Field: The second field is an abbreviated name.
|
||||
# Second Field: The second field is the short name for the property value.
|
||||
# It is typically an abbreviation, but in a number of cases it is simply
|
||||
# a duplicate of the "long name" in the third field.
|
||||
#
|
||||
# Third Field: The third field is a long name.
|
||||
# Third Field: The third field is the long name for the property value,
|
||||
# typically the formal name used in documentation about the property value.
|
||||
#
|
||||
# In the case of ccc, there are 4 fields. The second field is numeric, third
|
||||
# is abbreviated, and fourth is long.
|
||||
# In the case of Canonical_Combining_Class (ccc), there are 4 fields:
|
||||
# The second field is numeric, the third is the short name, and the fourth is the long name.
|
||||
#
|
||||
# The above are the preferred aliases. Other aliases may be listed in additional fields.
|
||||
#
|
||||
@ -51,7 +54,8 @@
|
||||
#
|
||||
# The combination of property value and property name is, however, unique.
|
||||
#
|
||||
# For more information, see UTS #18: Unicode Regular Expressions
|
||||
# For more information, see UAX #44, Unicode Character Database, and
|
||||
# UTS #18, Unicode Regular Expressions.
|
||||
# ================================================
|
||||
|
||||
|
||||
@ -82,6 +86,8 @@ age; 8.0 ; V8_0
|
||||
age; 9.0 ; V9_0
|
||||
age; 10.0 ; V10_0
|
||||
age; 11.0 ; V11_0
|
||||
age; 12.0 ; V12_0
|
||||
age; 12.1 ; V12_1
|
||||
age; NA ; Unassigned
|
||||
|
||||
# Alphabetic (Alpha)
|
||||
@ -224,8 +230,10 @@ blk; Dogra ; Dogra
|
||||
blk; Domino ; Domino_Tiles
|
||||
blk; Duployan ; Duployan
|
||||
blk; Early_Dynastic_Cuneiform ; Early_Dynastic_Cuneiform
|
||||
blk; Egyptian_Hieroglyph_Format_Controls; Egyptian_Hieroglyph_Format_Controls
|
||||
blk; Egyptian_Hieroglyphs ; Egyptian_Hieroglyphs
|
||||
blk; Elbasan ; Elbasan
|
||||
blk; Elymaic ; Elymaic
|
||||
blk; Emoticons ; Emoticons
|
||||
blk; Enclosed_Alphanum ; Enclosed_Alphanumerics
|
||||
blk; Enclosed_Alphanum_Sup ; Enclosed_Alphanumeric_Supplement
|
||||
@ -339,12 +347,14 @@ blk; Myanmar ; Myanmar
|
||||
blk; Myanmar_Ext_A ; Myanmar_Extended_A
|
||||
blk; Myanmar_Ext_B ; Myanmar_Extended_B
|
||||
blk; Nabataean ; Nabataean
|
||||
blk; Nandinagari ; Nandinagari
|
||||
blk; NB ; No_Block
|
||||
blk; New_Tai_Lue ; New_Tai_Lue
|
||||
blk; Newa ; Newa
|
||||
blk; NKo ; NKo
|
||||
blk; Number_Forms ; Number_Forms
|
||||
blk; Nushu ; Nushu
|
||||
blk; Nyiakeng_Puachue_Hmong ; Nyiakeng_Puachue_Hmong
|
||||
blk; OCR ; Optical_Character_Recognition
|
||||
blk; Ogham ; Ogham
|
||||
blk; Ol_Chiki ; Ol_Chiki
|
||||
@ -360,6 +370,7 @@ blk; Oriya ; Oriya
|
||||
blk; Ornamental_Dingbats ; Ornamental_Dingbats
|
||||
blk; Osage ; Osage
|
||||
blk; Osmanya ; Osmanya
|
||||
blk; Ottoman_Siyaq_Numbers ; Ottoman_Siyaq_Numbers
|
||||
blk; Pahawh_Hmong ; Pahawh_Hmong
|
||||
blk; Palmyrene ; Palmyrene
|
||||
blk; Pau_Cin_Hau ; Pau_Cin_Hau
|
||||
@ -384,6 +395,7 @@ blk; Siddham ; Siddham
|
||||
blk; Sinhala ; Sinhala
|
||||
blk; Sinhala_Archaic_Numbers ; Sinhala_Archaic_Numbers
|
||||
blk; Small_Forms ; Small_Form_Variants
|
||||
blk; Small_Kana_Ext ; Small_Kana_Extension
|
||||
blk; Sogdian ; Sogdian
|
||||
blk; Sora_Sompeng ; Sora_Sompeng
|
||||
blk; Soyombo ; Soyombo
|
||||
@ -401,6 +413,7 @@ blk; Sup_Symbols_And_Pictographs ; Supplemental_Symbols_And_Pictographs
|
||||
blk; Super_And_Sub ; Superscripts_And_Subscripts
|
||||
blk; Sutton_SignWriting ; Sutton_SignWriting
|
||||
blk; Syloti_Nagri ; Syloti_Nagri
|
||||
blk; Symbols_And_Pictographs_Ext_A ; Symbols_And_Pictographs_Extended_A
|
||||
blk; Syriac ; Syriac
|
||||
blk; Syriac_Sup ; Syriac_Supplement
|
||||
blk; Tagalog ; Tagalog
|
||||
@ -412,6 +425,7 @@ blk; Tai_Viet ; Tai_Viet
|
||||
blk; Tai_Xuan_Jing ; Tai_Xuan_Jing_Symbols
|
||||
blk; Takri ; Takri
|
||||
blk; Tamil ; Tamil
|
||||
blk; Tamil_Sup ; Tamil_Supplement
|
||||
blk; Tangut ; Tangut
|
||||
blk; Tangut_Components ; Tangut_Components
|
||||
blk; Telugu ; Telugu
|
||||
@ -429,6 +443,7 @@ blk; Vedic_Ext ; Vedic_Extensions
|
||||
blk; Vertical_Forms ; Vertical_Forms
|
||||
blk; VS ; Variation_Selectors
|
||||
blk; VS_Sup ; Variation_Selectors_Supplement
|
||||
blk; Wancho ; Wancho
|
||||
blk; Warang_Citi ; Warang_Citi
|
||||
blk; Yi_Radicals ; Yi_Radicals
|
||||
blk; Yi_Syllables ; Yi_Syllables
|
||||
@ -1213,6 +1228,7 @@ sc ; Dsrt ; Deseret
|
||||
sc ; Dupl ; Duployan
|
||||
sc ; Egyp ; Egyptian_Hieroglyphs
|
||||
sc ; Elba ; Elbasan
|
||||
sc ; Elym ; Elymaic
|
||||
sc ; Ethi ; Ethiopic
|
||||
sc ; Geor ; Georgian
|
||||
sc ; Glag ; Glagolitic
|
||||
@ -1231,6 +1247,7 @@ sc ; Hebr ; Hebrew
|
||||
sc ; Hira ; Hiragana
|
||||
sc ; Hluw ; Anatolian_Hieroglyphs
|
||||
sc ; Hmng ; Pahawh_Hmong
|
||||
sc ; Hmnp ; Nyiakeng_Puachue_Hmong
|
||||
sc ; Hrkt ; Katakana_Or_Hiragana
|
||||
sc ; Hung ; Old_Hungarian
|
||||
sc ; Ital ; Old_Italic
|
||||
@ -1268,6 +1285,7 @@ sc ; Mroo ; Mro
|
||||
sc ; Mtei ; Meetei_Mayek
|
||||
sc ; Mult ; Multani
|
||||
sc ; Mymr ; Myanmar
|
||||
sc ; Nand ; Nandinagari
|
||||
sc ; Narb ; Old_North_Arabian
|
||||
sc ; Nbat ; Nabataean
|
||||
sc ; Newa ; Newa
|
||||
@ -1324,6 +1342,7 @@ sc ; Tirh ; Tirhuta
|
||||
sc ; Ugar ; Ugaritic
|
||||
sc ; Vaii ; Vai
|
||||
sc ; Wara ; Warang_Citi
|
||||
sc ; Wcho ; Wancho
|
||||
sc ; Xpeo ; Old_Persian
|
||||
sc ; Xsux ; Cuneiform
|
||||
sc ; Yiii ; Yi
|
@ -1,6 +1,6 @@
|
||||
# Scripts-11.0.0.txt
|
||||
# Date: 2018-02-21, 05:34:31 GMT
|
||||
# Copyright (c) 2018 Unicode, Inc.
|
||||
# Scripts-12.1.0.txt
|
||||
# Date: 2019-04-01, 09:10:42 GMT
|
||||
# Copyright (c) 2019 Unicode, Inc.
|
||||
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
|
||||
# For terms of use, see http://www.unicode.org/terms_of_use.html
|
||||
#
|
||||
@ -108,10 +108,10 @@
|
||||
1CD3 ; Common # Po VEDIC SIGN NIHSHVASA
|
||||
1CE1 ; Common # Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA
|
||||
1CE9..1CEC ; Common # Lo [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL
|
||||
1CEE..1CF1 ; Common # Lo [4] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ANUSVARA UBHAYATO MUKHA
|
||||
1CF2..1CF3 ; Common # Mc [2] VEDIC SIGN ARDHAVISARGA..VEDIC SIGN ROTATED ARDHAVISARGA
|
||||
1CEE..1CF3 ; Common # Lo [6] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ROTATED ARDHAVISARGA
|
||||
1CF5..1CF6 ; Common # Lo [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA
|
||||
1CF7 ; Common # Mc VEDIC SIGN ATIKRAMA
|
||||
1CFA ; Common # Lo VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA
|
||||
2000..200A ; Common # Zs [11] EN QUAD..HAIR SPACE
|
||||
200B ; Common # Cf ZERO WIDTH SPACE
|
||||
200E..200F ; Common # Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK
|
||||
@ -308,8 +308,7 @@
|
||||
2B47..2B4C ; Common # Sm [6] REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW..RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR
|
||||
2B4D..2B73 ; Common # So [39] DOWNWARDS TRIANGLE-HEADED ZIGZAG ARROW..DOWNWARDS TRIANGLE-HEADED ARROW TO BAR
|
||||
2B76..2B95 ; Common # So [32] NORTH WEST TRIANGLE-HEADED ARROW TO BAR..RIGHTWARDS BLACK ARROW
|
||||
2B98..2BC8 ; Common # So [49] THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED
|
||||
2BCA..2BFE ; Common # So [53] TOP HALF BLACK CIRCLE..REVERSED RIGHT ANGLE
|
||||
2B98..2BFF ; Common # So [104] THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..HELLSCHREIBER PAUSE SYMBOL
|
||||
2E00..2E01 ; Common # Po [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER
|
||||
2E02 ; Common # Pi LEFT SUBSTITUTION BRACKET
|
||||
2E03 ; Common # Pf RIGHT SUBSTITUTION BRACKET
|
||||
@ -347,7 +346,7 @@
|
||||
2E40 ; Common # Pd DOUBLE HYPHEN
|
||||
2E41 ; Common # Po REVERSED COMMA
|
||||
2E42 ; Common # Ps DOUBLE LOW-REVERSED-9 QUOTATION MARK
|
||||
2E43..2E4E ; Common # Po [12] DASH WITH LEFT UPTURN..PUNCTUS ELEVATUS MARK
|
||||
2E43..2E4F ; Common # Po [13] DASH WITH LEFT UPTURN..CORNISH VERSE DIVIDER
|
||||
2FF0..2FFB ; Common # So [12] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
|
||||
3000 ; Common # Zs IDEOGRAPHIC SPACE
|
||||
3001..3003 ; Common # Po [3] IDEOGRAPHIC COMMA..DITTO MARK
|
||||
@ -400,6 +399,7 @@
|
||||
328A..32B0 ; Common # So [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT
|
||||
32B1..32BF ; Common # No [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY
|
||||
32C0..32CF ; Common # So [16] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..LIMITED LIABILITY SIGN
|
||||
32FF ; Common # So SQUARE ERA NAME REIWA
|
||||
3358..33FF ; Common # So [168] IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO..SQUARE GAL
|
||||
4DC0..4DFF ; Common # So [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION
|
||||
A700..A716 ; Common # Sk [23] MODIFIER LETTER CHINESE TONE YIN PING..MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR
|
||||
@ -509,6 +509,8 @@ FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHAR
|
||||
10190..1019B ; Common # So [12] ROMAN SEXTANS SIGN..ROMAN CENTURIAL SIGN
|
||||
101D0..101FC ; Common # So [45] PHAISTOS DISC SIGN PEDESTRIAN..PHAISTOS DISC SIGN WAVY BAND
|
||||
102E1..102FB ; Common # No [27] COPTIC EPACT DIGIT ONE..COPTIC EPACT NUMBER NINE HUNDRED
|
||||
16FE2 ; Common # Po OLD CHINESE HOOK MARK
|
||||
16FE3 ; Common # Lm OLD CHINESE ITERATION MARK
|
||||
1BCA0..1BCA3 ; Common # Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP
|
||||
1D000..1D0F5 ; Common # So [246] BYZANTINE MUSICAL SYMBOL PSILI..BYZANTINE MUSICAL SYMBOL GORGON NEO KATO
|
||||
1D100..1D126 ; Common # So [39] MUSICAL SYMBOL SINGLE BARLINE..MUSICAL SYMBOL DRUM CLEF-2
|
||||
@ -569,6 +571,9 @@ FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHAR
|
||||
1ECAD..1ECAF ; Common # No [3] INDIC SIYAQ FRACTION ONE QUARTER..INDIC SIYAQ FRACTION THREE QUARTERS
|
||||
1ECB0 ; Common # Sc INDIC SIYAQ RUPEE MARK
|
||||
1ECB1..1ECB4 ; Common # No [4] INDIC SIYAQ NUMBER ALTERNATE ONE..INDIC SIYAQ ALTERNATE LAKH MARK
|
||||
1ED01..1ED2D ; Common # No [45] OTTOMAN SIYAQ NUMBER ONE..OTTOMAN SIYAQ NUMBER NINETY THOUSAND
|
||||
1ED2E ; Common # So OTTOMAN SIYAQ MARRATAN
|
||||
1ED2F..1ED3D ; Common # No [15] OTTOMAN SIYAQ ALTERNATE NUMBER TWO..OTTOMAN SIYAQ FRACTION ONE SIXTH
|
||||
1F000..1F02B ; Common # So [44] MAHJONG TILE EAST WIND..MAHJONG TILE BACK
|
||||
1F030..1F093 ; Common # So [100] DOMINO TILE HORIZONTAL BACK..DOMINO TILE VERTICAL-06-06
|
||||
1F0A0..1F0AE ; Common # So [15] PLAYING CARD BACK..PLAYING CARD KING OF SPADES
|
||||
@ -576,7 +581,7 @@ FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHAR
|
||||
1F0C1..1F0CF ; Common # So [15] PLAYING CARD ACE OF DIAMONDS..PLAYING CARD BLACK JOKER
|
||||
1F0D1..1F0F5 ; Common # So [37] PLAYING CARD ACE OF CLUBS..PLAYING CARD TRUMP-21
|
||||
1F100..1F10C ; Common # No [13] DIGIT ZERO FULL STOP..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO
|
||||
1F110..1F16B ; Common # So [92] PARENTHESIZED LATIN CAPITAL LETTER A..RAISED MD SIGN
|
||||
1F110..1F16C ; Common # So [93] PARENTHESIZED LATIN CAPITAL LETTER A..RAISED MR SIGN
|
||||
1F170..1F1AC ; Common # So [61] NEGATIVE SQUARED LATIN CAPITAL LETTER A..SQUARED VOD
|
||||
1F1E6..1F1FF ; Common # So [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z
|
||||
1F201..1F202 ; Common # So [2] SQUARED KATAKANA KOKO..SQUARED KATAKANA SA
|
||||
@ -586,30 +591,33 @@ FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHAR
|
||||
1F260..1F265 ; Common # So [6] ROUNDED SYMBOL FOR FU..ROUNDED SYMBOL FOR CAI
|
||||
1F300..1F3FA ; Common # So [251] CYCLONE..AMPHORA
|
||||
1F3FB..1F3FF ; Common # Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6
|
||||
1F400..1F6D4 ; Common # So [725] RAT..PAGODA
|
||||
1F400..1F6D5 ; Common # So [726] RAT..HINDU TEMPLE
|
||||
1F6E0..1F6EC ; Common # So [13] HAMMER AND WRENCH..AIRPLANE ARRIVING
|
||||
1F6F0..1F6F9 ; Common # So [10] SATELLITE..SKATEBOARD
|
||||
1F6F0..1F6FA ; Common # So [11] SATELLITE..AUTO RICKSHAW
|
||||
1F700..1F773 ; Common # So [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE
|
||||
1F780..1F7D8 ; Common # So [89] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..NEGATIVE CIRCLED SQUARE
|
||||
1F7E0..1F7EB ; Common # So [12] LARGE ORANGE CIRCLE..LARGE BROWN SQUARE
|
||||
1F800..1F80B ; Common # So [12] LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD..DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD
|
||||
1F810..1F847 ; Common # So [56] LEFTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD..DOWNWARDS HEAVY ARROW
|
||||
1F850..1F859 ; Common # So [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW
|
||||
1F860..1F887 ; Common # So [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW
|
||||
1F890..1F8AD ; Common # So [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS
|
||||
1F900..1F90B ; Common # So [12] CIRCLED CROSS FORMEE WITH FOUR DOTS..DOWNWARD FACING NOTCHED HOOK WITH DOT
|
||||
1F910..1F93E ; Common # So [47] ZIPPER-MOUTH FACE..HANDBALL
|
||||
1F940..1F970 ; Common # So [49] WILTED FLOWER..SMILING FACE WITH SMILING EYES AND THREE HEARTS
|
||||
1F90D..1F971 ; Common # So [101] WHITE HEART..YAWNING FACE
|
||||
1F973..1F976 ; Common # So [4] FACE WITH PARTY HORN AND PARTY HAT..FREEZING FACE
|
||||
1F97A ; Common # So FACE WITH PLEADING EYES
|
||||
1F97C..1F9A2 ; Common # So [39] LAB COAT..SWAN
|
||||
1F9B0..1F9B9 ; Common # So [10] EMOJI COMPONENT RED HAIR..SUPERVILLAIN
|
||||
1F9C0..1F9C2 ; Common # So [3] CHEESE WEDGE..SALT SHAKER
|
||||
1F9D0..1F9FF ; Common # So [48] FACE WITH MONOCLE..NAZAR AMULET
|
||||
1F97A..1F9A2 ; Common # So [41] FACE WITH PLEADING EYES..SWAN
|
||||
1F9A5..1F9AA ; Common # So [6] SLOTH..OYSTER
|
||||
1F9AE..1F9CA ; Common # So [29] GUIDE DOG..ICE CUBE
|
||||
1F9CD..1FA53 ; Common # So [135] STANDING PERSON..BLACK CHESS KNIGHT-BISHOP
|
||||
1FA60..1FA6D ; Common # So [14] XIANGQI RED GENERAL..XIANGQI BLACK SOLDIER
|
||||
1FA70..1FA73 ; Common # So [4] BALLET SHOES..SHORTS
|
||||
1FA78..1FA7A ; Common # So [3] DROP OF BLOOD..STETHOSCOPE
|
||||
1FA80..1FA82 ; Common # So [3] YO-YO..PARACHUTE
|
||||
1FA90..1FA95 ; Common # So [6] RINGED PLANET..BANJO
|
||||
E0001 ; Common # Cf LANGUAGE TAG
|
||||
E0020..E007F ; Common # Cf [96] TAG SPACE..CANCEL TAG
|
||||
|
||||
# Total code points: 7591
|
||||
# Total code points: 7805
|
||||
|
||||
# ================================================
|
||||
|
||||
@ -652,7 +660,8 @@ A770 ; Latin # Lm MODIFIER LETTER US
|
||||
A771..A787 ; Latin # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T
|
||||
A78B..A78E ; Latin # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
|
||||
A78F ; Latin # Lo LATIN LETTER SINOLOGICAL DOT
|
||||
A790..A7B9 ; Latin # L& [42] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER U WITH STROKE
|
||||
A790..A7BF ; Latin # L& [48] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER GLOTTAL U
|
||||
A7C2..A7C6 ; Latin # L& [5] LATIN CAPITAL LETTER ANGLICANA W..LATIN CAPITAL LETTER Z WITH PALATAL HOOK
|
||||
A7F7 ; Latin # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I
|
||||
A7F8..A7F9 ; Latin # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
|
||||
A7FA ; Latin # L& LATIN LETTER SMALL CAPITAL TURNED M
|
||||
@ -660,11 +669,12 @@ A7FB..A7FF ; Latin # Lo [5] LATIN EPIGRAPHIC LETTER REVERSED F..LATIN EPIGR
|
||||
AB30..AB5A ; Latin # L& [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG
|
||||
AB5C..AB5F ; Latin # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK
|
||||
AB60..AB64 ; Latin # L& [5] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER INVERTED ALPHA
|
||||
AB66..AB67 ; Latin # L& [2] LATIN SMALL LETTER DZ DIGRAPH WITH RETROFLEX HOOK..LATIN SMALL LETTER TS DIGRAPH WITH RETROFLEX HOOK
|
||||
FB00..FB06 ; Latin # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
|
||||
FF21..FF3A ; Latin # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
|
||||
FF41..FF5A ; Latin # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
|
||||
|
||||
# Total code points: 1353
|
||||
# Total code points: 1366
|
||||
|
||||
# ================================================
|
||||
|
||||
@ -914,7 +924,7 @@ FE76..FEFC ; Arabic # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LA
|
||||
094D ; Devanagari # Mn DEVANAGARI SIGN VIRAMA
|
||||
094E..094F ; Devanagari # Mc [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW
|
||||
0950 ; Devanagari # Lo DEVANAGARI OM
|
||||
0953..0957 ; Devanagari # Mn [5] DEVANAGARI GRAVE ACCENT..DEVANAGARI VOWEL SIGN UUE
|
||||
0955..0957 ; Devanagari # Mn [3] DEVANAGARI VOWEL SIGN CANDRA LONG E..DEVANAGARI VOWEL SIGN UUE
|
||||
0958..0961 ; Devanagari # Lo [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL
|
||||
0962..0963 ; Devanagari # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL
|
||||
0966..096F ; Devanagari # Nd [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE
|
||||
@ -929,7 +939,7 @@ A8FC ; Devanagari # Po DEVANAGARI SIGN SIDDHAM
|
||||
A8FD..A8FE ; Devanagari # Lo [2] DEVANAGARI JAIN OM..DEVANAGARI LETTER AY
|
||||
A8FF ; Devanagari # Mn DEVANAGARI VOWEL SIGN AY
|
||||
|
||||
# Total code points: 156
|
||||
# Total code points: 154
|
||||
|
||||
# ================================================
|
||||
|
||||
@ -1079,8 +1089,13 @@ A8FF ; Devanagari # Mn DEVANAGARI VOWEL SIGN AY
|
||||
0BF3..0BF8 ; Tamil # So [6] TAMIL DAY SIGN..TAMIL AS ABOVE SIGN
|
||||
0BF9 ; Tamil # Sc TAMIL RUPEE SIGN
|
||||
0BFA ; Tamil # So TAMIL NUMBER SIGN
|
||||
11FC0..11FD4 ; Tamil # No [21] TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH..TAMIL FRACTION DOWNSCALING FACTOR KIIZH
|
||||
11FD5..11FDC ; Tamil # So [8] TAMIL SIGN NEL..TAMIL SIGN MUKKURUNI
|
||||
11FDD..11FE0 ; Tamil # Sc [4] TAMIL SIGN KAACU..TAMIL SIGN VARAAKAN
|
||||
11FE1..11FF1 ; Tamil # So [17] TAMIL SIGN PAARAM..TAMIL SIGN VAKAIYARAA
|
||||
11FFF ; Tamil # Po TAMIL PUNCTUATION END OF TEXT
|
||||
|
||||
# Total code points: 72
|
||||
# Total code points: 123
|
||||
|
||||
# ================================================
|
||||
|
||||
@ -1101,10 +1116,11 @@ A8FF ; Devanagari # Mn DEVANAGARI VOWEL SIGN AY
|
||||
0C60..0C61 ; Telugu # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
|
||||
0C62..0C63 ; Telugu # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL
|
||||
0C66..0C6F ; Telugu # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE
|
||||
0C77 ; Telugu # Po TELUGU SIGN SIDDHAM
|
||||
0C78..0C7E ; Telugu # No [7] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR
|
||||
0C7F ; Telugu # So TELUGU SIGN TUUMU
|
||||
|
||||
# Total code points: 97
|
||||
# Total code points: 98
|
||||
|
||||
# ================================================
|
||||
|
||||
@ -1202,20 +1218,13 @@ A8FF ; Devanagari # Mn DEVANAGARI VOWEL SIGN AY
|
||||
|
||||
0E81..0E82 ; Lao # Lo [2] LAO LETTER KO..LAO LETTER KHO SUNG
|
||||
0E84 ; Lao # Lo LAO LETTER KHO TAM
|
||||
0E87..0E88 ; Lao # Lo [2] LAO LETTER NGO..LAO LETTER CO
|
||||
0E8A ; Lao # Lo LAO LETTER SO TAM
|
||||
0E8D ; Lao # Lo LAO LETTER NYO
|
||||
0E94..0E97 ; Lao # Lo [4] LAO LETTER DO..LAO LETTER THO TAM
|
||||
0E99..0E9F ; Lao # Lo [7] LAO LETTER NO..LAO LETTER FO SUNG
|
||||
0EA1..0EA3 ; Lao # Lo [3] LAO LETTER MO..LAO LETTER LO LING
|
||||
0E86..0E8A ; Lao # Lo [5] LAO LETTER PALI GHA..LAO LETTER SO TAM
|
||||
0E8C..0EA3 ; Lao # Lo [24] LAO LETTER PALI JHA..LAO LETTER LO LING
|
||||
0EA5 ; Lao # Lo LAO LETTER LO LOOT
|
||||
0EA7 ; Lao # Lo LAO LETTER WO
|
||||
0EAA..0EAB ; Lao # Lo [2] LAO LETTER SO SUNG..LAO LETTER HO SUNG
|
||||
0EAD..0EB0 ; Lao # Lo [4] LAO LETTER O..LAO VOWEL SIGN A
|
||||
0EA7..0EB0 ; Lao # Lo [10] LAO LETTER WO..LAO VOWEL SIGN A
|
||||
0EB1 ; Lao # Mn LAO VOWEL SIGN MAI KAN
|
||||
0EB2..0EB3 ; Lao # Lo [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM
|
||||
0EB4..0EB9 ; Lao # Mn [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU
|
||||
0EBB..0EBC ; Lao # Mn [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO
|
||||
0EB4..0EBC ; Lao # Mn [9] LAO VOWEL SIGN I..LAO SEMIVOWEL SIGN LO
|
||||
0EBD ; Lao # Lo LAO SEMIVOWEL SIGN NYO
|
||||
0EC0..0EC4 ; Lao # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI
|
||||
0EC6 ; Lao # Lm LAO KO LA
|
||||
@ -1223,7 +1232,7 @@ A8FF ; Devanagari # Mn DEVANAGARI VOWEL SIGN AY
|
||||
0ED0..0ED9 ; Lao # Nd [10] LAO DIGIT ZERO..LAO DIGIT NINE
|
||||
0EDC..0EDF ; Lao # Lo [4] LAO HO NO..LAO LETTER KHMU NYO
|
||||
|
||||
# Total code points: 67
|
||||
# Total code points: 82
|
||||
|
||||
# ================================================
|
||||
|
||||
@ -1409,7 +1418,8 @@ AB70..ABBF ; Cherokee # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETT
|
||||
|
||||
1400 ; Canadian_Aboriginal # Pd CANADIAN SYLLABICS HYPHEN
|
||||
1401..166C ; Canadian_Aboriginal # Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA
|
||||
166D..166E ; Canadian_Aboriginal # Po [2] CANADIAN SYLLABICS CHI SIGN..CANADIAN SYLLABICS FULL STOP
|
||||
166D ; Canadian_Aboriginal # So CANADIAN SYLLABICS CHI SIGN
|
||||
166E ; Canadian_Aboriginal # Po CANADIAN SYLLABICS FULL STOP
|
||||
166F..167F ; Canadian_Aboriginal # Lo [17] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS BLACKFOOT W
|
||||
18B0..18F5 ; Canadian_Aboriginal # Lo [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S
|
||||
|
||||
@ -1481,9 +1491,10 @@ AB70..ABBF ; Cherokee # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETT
|
||||
309D..309E ; Hiragana # Lm [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK
|
||||
309F ; Hiragana # Lo HIRAGANA DIGRAPH YORI
|
||||
1B001..1B11E ; Hiragana # Lo [286] HIRAGANA LETTER ARCHAIC YE..HENTAIGANA LETTER N-MU-MO-2
|
||||
1B150..1B152 ; Hiragana # Lo [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO
|
||||
1F200 ; Hiragana # So SQUARE HIRAGANA HOKA
|
||||
|
||||
# Total code points: 376
|
||||
# Total code points: 379
|
||||
|
||||
# ================================================
|
||||
|
||||
@ -1496,8 +1507,9 @@ AB70..ABBF ; Cherokee # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETT
|
||||
FF66..FF6F ; Katakana # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU
|
||||
FF71..FF9D ; Katakana # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
|
||||
1B000 ; Katakana # Lo KATAKANA LETTER ARCHAIC E
|
||||
1B164..1B167 ; Katakana # Lo [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N
|
||||
|
||||
# Total code points: 300
|
||||
# Total code points: 304
|
||||
|
||||
# ================================================
|
||||
|
||||
@ -1568,7 +1580,7 @@ A490..A4C6 ; Yi # So [55] YI RADICAL QOT..YI RADICAL KE
|
||||
0485..0486 ; Inherited # Mn [2] COMBINING CYRILLIC DASIA PNEUMATA..COMBINING CYRILLIC PSILI PNEUMATA
|
||||
064B..0655 ; Inherited # Mn [11] ARABIC FATHATAN..ARABIC HAMZA BELOW
|
||||
0670 ; Inherited # Mn ARABIC LETTER SUPERSCRIPT ALEF
|
||||
0951..0952 ; Inherited # Mn [2] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI STRESS SIGN ANUDATTA
|
||||
0951..0954 ; Inherited # Mn [4] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI ACUTE ACCENT
|
||||
1AB0..1ABD ; Inherited # Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW
|
||||
1ABE ; Inherited # Me COMBINING PARENTHESES OVERLAY
|
||||
1CD0..1CD2 ; Inherited # Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA
|
||||
@ -1598,7 +1610,7 @@ FE20..FE2D ; Inherited # Mn [14] COMBINING LIGATURE LEFT HALF..COMBINING CON
|
||||
1D1AA..1D1AD ; Inherited # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
|
||||
E0100..E01EF ; Inherited # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
|
||||
|
||||
# Total code points: 569
|
||||
# Total code points: 571
|
||||
|
||||
# ================================================
|
||||
|
||||
@ -2028,8 +2040,9 @@ AADE..AADF ; Tai_Viet # Po [2] TAI VIET SYMBOL HO HOI..TAI VIET SYMBOL KOI
|
||||
# ================================================
|
||||
|
||||
13000..1342E ; Egyptian_Hieroglyphs # Lo [1071] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH AA032
|
||||
13430..13438 ; Egyptian_Hieroglyphs # Cf [9] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END SEGMENT
|
||||
|
||||
# Total code points: 1071
|
||||
# Total code points: 1080
|
||||
|
||||
# ================================================
|
||||
|
||||
@ -2072,8 +2085,8 @@ A9B3 ; Javanese # Mn JAVANESE SIGN CECAK TELU
|
||||
A9B4..A9B5 ; Javanese # Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG
|
||||
A9B6..A9B9 ; Javanese # Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT
|
||||
A9BA..A9BB ; Javanese # Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE
|
||||
A9BC ; Javanese # Mn JAVANESE VOWEL SIGN PEPET
|
||||
A9BD..A9C0 ; Javanese # Mc [4] JAVANESE CONSONANT SIGN KERET..JAVANESE PANGKON
|
||||
A9BC..A9BD ; Javanese # Mn [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET
|
||||
A9BE..A9C0 ; Javanese # Mc [3] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE PANGKON
|
||||
A9C1..A9CD ; Javanese # Po [13] JAVANESE LEFT RERENGGAN..JAVANESE TURNED PADA PISELEH
|
||||
A9D0..A9D9 ; Javanese # Nd [10] JAVANESE DIGIT ZERO..JAVANESE DIGIT NINE
|
||||
A9DE..A9DF ; Javanese # Po [2] JAVANESE PADA TIRTA TUMETES..JAVANESE PADA ISEN-ISEN
|
||||
@ -2225,13 +2238,14 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI
|
||||
|
||||
# ================================================
|
||||
|
||||
16F00..16F44 ; Miao # Lo [69] MIAO LETTER PA..MIAO LETTER HHA
|
||||
16F00..16F4A ; Miao # Lo [75] MIAO LETTER PA..MIAO LETTER RTE
|
||||
16F4F ; Miao # Mn MIAO SIGN CONSONANT MODIFIER BAR
|
||||
16F50 ; Miao # Lo MIAO LETTER NASALIZATION
|
||||
16F51..16F7E ; Miao # Mc [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG
|
||||
16F51..16F87 ; Miao # Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI
|
||||
16F8F..16F92 ; Miao # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW
|
||||
16F93..16F9F ; Miao # Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
|
||||
|
||||
# Total code points: 133
|
||||
# Total code points: 149
|
||||
|
||||
# ================================================
|
||||
|
||||
@ -2270,9 +2284,10 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI
|
||||
116B0..116B5 ; Takri # Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU
|
||||
116B6 ; Takri # Mc TAKRI SIGN VIRAMA
|
||||
116B7 ; Takri # Mn TAKRI SIGN NUKTA
|
||||
116B8 ; Takri # Lo TAKRI LETTER ARCHAIC KHA
|
||||
116C0..116C9 ; Takri # Nd [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE
|
||||
|
||||
# Total code points: 66
|
||||
# Total code points: 67
|
||||
|
||||
# ================================================
|
||||
|
||||
@ -2587,10 +2602,11 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI
|
||||
|
||||
1E900..1E943 ; Adlam # L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA
|
||||
1E944..1E94A ; Adlam # Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
|
||||
1E94B ; Adlam # Lm ADLAM NASALIZATION MARK
|
||||
1E950..1E959 ; Adlam # Nd [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE
|
||||
1E95E..1E95F ; Adlam # Po [2] ADLAM INITIAL EXCLAMATION MARK..ADLAM INITIAL QUESTION MARK
|
||||
|
||||
# Total code points: 87
|
||||
# Total code points: 88
|
||||
|
||||
# ================================================
|
||||
|
||||
@ -2637,8 +2653,9 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI
|
||||
1145B ; Newa # Po NEWA PLACEHOLDER MARK
|
||||
1145D ; Newa # Po NEWA INSERTION SIGN
|
||||
1145E ; Newa # Mn NEWA SANDHI MARK
|
||||
1145F ; Newa # Lo NEWA LETTER VEDIC ANUSVARA
|
||||
|
||||
# Total code points: 93
|
||||
# Total code points: 94
|
||||
|
||||
# ================================================
|
||||
|
||||
@ -2650,10 +2667,10 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI
|
||||
# ================================================
|
||||
|
||||
16FE0 ; Tangut # Lm TANGUT ITERATION MARK
|
||||
17000..187F1 ; Tangut # Lo [6130] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F1
|
||||
17000..187F7 ; Tangut # Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7
|
||||
18800..18AF2 ; Tangut # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755
|
||||
|
||||
# Total code points: 6886
|
||||
# Total code points: 6892
|
||||
|
||||
# ================================================
|
||||
|
||||
@ -2683,8 +2700,7 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI
|
||||
11A51..11A56 ; Soyombo # Mn [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE
|
||||
11A57..11A58 ; Soyombo # Mc [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU
|
||||
11A59..11A5B ; Soyombo # Mn [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK
|
||||
11A5C..11A83 ; Soyombo # Lo [40] SOYOMBO LETTER KA..SOYOMBO LETTER KSSA
|
||||
11A86..11A89 ; Soyombo # Lo [4] SOYOMBO CLUSTER-INITIAL LETTER RA..SOYOMBO CLUSTER-INITIAL LETTER SA
|
||||
11A5C..11A89 ; Soyombo # Lo [46] SOYOMBO LETTER KA..SOYOMBO CLUSTER-INITIAL LETTER SA
|
||||
11A8A..11A96 ; Soyombo # Mn [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA
|
||||
11A97 ; Soyombo # Mc SOYOMBO SIGN VISARGA
|
||||
11A98..11A99 ; Soyombo # Mn [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER
|
||||
@ -2692,7 +2708,7 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI
|
||||
11A9D ; Soyombo # Lo SOYOMBO MARK PLUTA
|
||||
11A9E..11AA2 ; Soyombo # Po [5] SOYOMBO HEAD MARK WITH MOON AND SUN AND TRIPLE FLAME..SOYOMBO TERMINAL MARK-2
|
||||
|
||||
# Total code points: 81
|
||||
# Total code points: 83
|
||||
|
||||
# ================================================
|
||||
|
||||
@ -2777,4 +2793,46 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI
|
||||
|
||||
# Total code points: 40
|
||||
|
||||
# ================================================
|
||||
|
||||
10FE0..10FF6 ; Elymaic # Lo [23] ELYMAIC LETTER ALEPH..ELYMAIC LIGATURE ZAYIN-YODH
|
||||
|
||||
# Total code points: 23
|
||||
|
||||
# ================================================
|
||||
|
||||
119A0..119A7 ; Nandinagari # Lo [8] NANDINAGARI LETTER A..NANDINAGARI LETTER VOCALIC RR
|
||||
119AA..119D0 ; Nandinagari # Lo [39] NANDINAGARI LETTER E..NANDINAGARI LETTER RRA
|
||||
119D1..119D3 ; Nandinagari # Mc [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II
|
||||
119D4..119D7 ; Nandinagari # Mn [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR
|
||||
119DA..119DB ; Nandinagari # Mn [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI
|
||||
119DC..119DF ; Nandinagari # Mc [4] NANDINAGARI VOWEL SIGN O..NANDINAGARI SIGN VISARGA
|
||||
119E0 ; Nandinagari # Mn NANDINAGARI SIGN VIRAMA
|
||||
119E1 ; Nandinagari # Lo NANDINAGARI SIGN AVAGRAHA
|
||||
119E2 ; Nandinagari # Po NANDINAGARI SIGN SIDDHAM
|
||||
119E3 ; Nandinagari # Lo NANDINAGARI HEADSTROKE
|
||||
119E4 ; Nandinagari # Mc NANDINAGARI VOWEL SIGN PRISHTHAMATRA E
|
||||
|
||||
# Total code points: 65
|
||||
|
||||
# ================================================
|
||||
|
||||
1E100..1E12C ; Nyiakeng_Puachue_Hmong # Lo [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W
|
||||
1E130..1E136 ; Nyiakeng_Puachue_Hmong # Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D
|
||||
1E137..1E13D ; Nyiakeng_Puachue_Hmong # Lm [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER
|
||||
1E140..1E149 ; Nyiakeng_Puachue_Hmong # Nd [10] NYIAKENG PUACHUE HMONG DIGIT ZERO..NYIAKENG PUACHUE HMONG DIGIT NINE
|
||||
1E14E ; Nyiakeng_Puachue_Hmong # Lo NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ
|
||||
1E14F ; Nyiakeng_Puachue_Hmong # So NYIAKENG PUACHUE HMONG CIRCLED CA
|
||||
|
||||
# Total code points: 71
|
||||
|
||||
# ================================================
|
||||
|
||||
1E2C0..1E2EB ; Wancho # Lo [44] WANCHO LETTER AA..WANCHO LETTER YIH
|
||||
1E2EC..1E2EF ; Wancho # Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI
|
||||
1E2F0..1E2F9 ; Wancho # Nd [10] WANCHO DIGIT ZERO..WANCHO DIGIT NINE
|
||||
1E2FF ; Wancho # Sc WANCHO NGUN SIGN
|
||||
|
||||
# Total code points: 59
|
||||
|
||||
# EOF
|
||||
|
@ -1,6 +1,6 @@
|
||||
# SpecialCasing-11.0.0.txt
|
||||
# Date: 2018-02-22, 06:16:47 GMT
|
||||
# Copyright (c) 2018 Unicode, Inc.
|
||||
# SpecialCasing-12.1.0.txt
|
||||
# Date: 2019-03-10, 10:53:28 GMT
|
||||
# Copyright (c) 2019 Unicode, Inc.
|
||||
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
|
||||
# For terms of use, see http://www.unicode.org/terms_of_use.html
|
||||
#
|
||||
|
@ -640,7 +640,7 @@
|
||||
027F;LATIN SMALL LETTER REVERSED R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED FISHHOOK R;;;;
|
||||
0280;LATIN LETTER SMALL CAPITAL R;Ll;0;L;;;;;N;;;01A6;;01A6
|
||||
0281;LATIN LETTER SMALL CAPITAL INVERTED R;Ll;0;L;;;;;N;;;;;
|
||||
0282;LATIN SMALL LETTER S WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER S HOOK;;;;
|
||||
0282;LATIN SMALL LETTER S WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER S HOOK;;A7C5;;A7C5
|
||||
0283;LATIN SMALL LETTER ESH;Ll;0;L;;;;;N;;;01A9;;01A9
|
||||
0284;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR HOOK;;;;
|
||||
0285;LATIN SMALL LETTER SQUAT REVERSED ESH;Ll;0;L;;;;;N;;;;;
|
||||
@ -2809,6 +2809,7 @@
|
||||
0C6D;TELUGU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
|
||||
0C6E;TELUGU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
|
||||
0C6F;TELUGU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
|
||||
0C77;TELUGU SIGN SIDDHAM;Po;0;L;;;;;N;;;;;
|
||||
0C78;TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR;No;0;ON;;;;0;N;;;;;
|
||||
0C79;TELUGU FRACTION DIGIT ONE FOR ODD POWERS OF FOUR;No;0;ON;;;;1;N;;;;;
|
||||
0C7A;TELUGU FRACTION DIGIT TWO FOR ODD POWERS OF FOUR;No;0;ON;;;;2;N;;;;;
|
||||
@ -3203,14 +3204,24 @@
|
||||
0E81;LAO LETTER KO;Lo;0;L;;;;;N;;;;;
|
||||
0E82;LAO LETTER KHO SUNG;Lo;0;L;;;;;N;;;;;
|
||||
0E84;LAO LETTER KHO TAM;Lo;0;L;;;;;N;;;;;
|
||||
0E86;LAO LETTER PALI GHA;Lo;0;L;;;;;N;;;;;
|
||||
0E87;LAO LETTER NGO;Lo;0;L;;;;;N;;;;;
|
||||
0E88;LAO LETTER CO;Lo;0;L;;;;;N;;;;;
|
||||
0E89;LAO LETTER PALI CHA;Lo;0;L;;;;;N;;;;;
|
||||
0E8A;LAO LETTER SO TAM;Lo;0;L;;;;;N;;;;;
|
||||
0E8C;LAO LETTER PALI JHA;Lo;0;L;;;;;N;;;;;
|
||||
0E8D;LAO LETTER NYO;Lo;0;L;;;;;N;;;;;
|
||||
0E8E;LAO LETTER PALI NYA;Lo;0;L;;;;;N;;;;;
|
||||
0E8F;LAO LETTER PALI TTA;Lo;0;L;;;;;N;;;;;
|
||||
0E90;LAO LETTER PALI TTHA;Lo;0;L;;;;;N;;;;;
|
||||
0E91;LAO LETTER PALI DDA;Lo;0;L;;;;;N;;;;;
|
||||
0E92;LAO LETTER PALI DDHA;Lo;0;L;;;;;N;;;;;
|
||||
0E93;LAO LETTER PALI NNA;Lo;0;L;;;;;N;;;;;
|
||||
0E94;LAO LETTER DO;Lo;0;L;;;;;N;;;;;
|
||||
0E95;LAO LETTER TO;Lo;0;L;;;;;N;;;;;
|
||||
0E96;LAO LETTER THO SUNG;Lo;0;L;;;;;N;;;;;
|
||||
0E97;LAO LETTER THO TAM;Lo;0;L;;;;;N;;;;;
|
||||
0E98;LAO LETTER PALI DHA;Lo;0;L;;;;;N;;;;;
|
||||
0E99;LAO LETTER NO;Lo;0;L;;;;;N;;;;;
|
||||
0E9A;LAO LETTER BO;Lo;0;L;;;;;N;;;;;
|
||||
0E9B;LAO LETTER PO;Lo;0;L;;;;;N;;;;;
|
||||
@ -3218,13 +3229,17 @@
|
||||
0E9D;LAO LETTER FO TAM;Lo;0;L;;;;;N;;;;;
|
||||
0E9E;LAO LETTER PHO TAM;Lo;0;L;;;;;N;;;;;
|
||||
0E9F;LAO LETTER FO SUNG;Lo;0;L;;;;;N;;;;;
|
||||
0EA0;LAO LETTER PALI BHA;Lo;0;L;;;;;N;;;;;
|
||||
0EA1;LAO LETTER MO;Lo;0;L;;;;;N;;;;;
|
||||
0EA2;LAO LETTER YO;Lo;0;L;;;;;N;;;;;
|
||||
0EA3;LAO LETTER LO LING;Lo;0;L;;;;;N;;;;;
|
||||
0EA5;LAO LETTER LO LOOT;Lo;0;L;;;;;N;;;;;
|
||||
0EA7;LAO LETTER WO;Lo;0;L;;;;;N;;;;;
|
||||
0EA8;LAO LETTER SANSKRIT SHA;Lo;0;L;;;;;N;;;;;
|
||||
0EA9;LAO LETTER SANSKRIT SSA;Lo;0;L;;;;;N;;;;;
|
||||
0EAA;LAO LETTER SO SUNG;Lo;0;L;;;;;N;;;;;
|
||||
0EAB;LAO LETTER HO SUNG;Lo;0;L;;;;;N;;;;;
|
||||
0EAC;LAO LETTER PALI LLA;Lo;0;L;;;;;N;;;;;
|
||||
0EAD;LAO LETTER O;Lo;0;L;;;;;N;;;;;
|
||||
0EAE;LAO LETTER HO TAM;Lo;0;L;;;;;N;;;;;
|
||||
0EAF;LAO ELLIPSIS;Lo;0;L;;;;;N;;;;;
|
||||
@ -3238,6 +3253,7 @@
|
||||
0EB7;LAO VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
|
||||
0EB8;LAO VOWEL SIGN U;Mn;118;NSM;;;;;N;;;;;
|
||||
0EB9;LAO VOWEL SIGN UU;Mn;118;NSM;;;;;N;;;;;
|
||||
0EBA;LAO SIGN PALI VIRAMA;Mn;9;NSM;;;;;N;;;;;
|
||||
0EBB;LAO VOWEL SIGN MAI KON;Mn;0;NSM;;;;;N;;;;;
|
||||
0EBC;LAO SEMIVOWEL SIGN LO;Mn;0;NSM;;;;;N;;;;;
|
||||
0EBD;LAO SEMIVOWEL SIGN NYO;Lo;0;L;;;;;N;;;;;
|
||||
@ -5079,7 +5095,7 @@
|
||||
166A;CANADIAN SYLLABICS CARRIER TTSEE;Lo;0;L;;;;;N;;;;;
|
||||
166B;CANADIAN SYLLABICS CARRIER TTSI;Lo;0;L;;;;;N;;;;;
|
||||
166C;CANADIAN SYLLABICS CARRIER TTSA;Lo;0;L;;;;;N;;;;;
|
||||
166D;CANADIAN SYLLABICS CHI SIGN;Po;0;L;;;;;N;;;;;
|
||||
166D;CANADIAN SYLLABICS CHI SIGN;So;0;L;;;;;N;;;;;
|
||||
166E;CANADIAN SYLLABICS FULL STOP;Po;0;L;;;;;N;;;;;
|
||||
166F;CANADIAN SYLLABICS QAI;Lo;0;L;;;;;N;;;;;
|
||||
1670;CANADIAN SYLLABICS NGAI;Lo;0;L;;;;;N;;;;;
|
||||
@ -6488,14 +6504,15 @@
|
||||
1CEF;VEDIC SIGN LONG ANUSVARA;Lo;0;L;;;;;N;;;;;
|
||||
1CF0;VEDIC SIGN RTHANG LONG ANUSVARA;Lo;0;L;;;;;N;;;;;
|
||||
1CF1;VEDIC SIGN ANUSVARA UBHAYATO MUKHA;Lo;0;L;;;;;N;;;;;
|
||||
1CF2;VEDIC SIGN ARDHAVISARGA;Mc;0;L;;;;;N;;;;;
|
||||
1CF3;VEDIC SIGN ROTATED ARDHAVISARGA;Mc;0;L;;;;;N;;;;;
|
||||
1CF2;VEDIC SIGN ARDHAVISARGA;Lo;0;L;;;;;N;;;;;
|
||||
1CF3;VEDIC SIGN ROTATED ARDHAVISARGA;Lo;0;L;;;;;N;;;;;
|
||||
1CF4;VEDIC TONE CANDRA ABOVE;Mn;230;NSM;;;;;N;;;;;
|
||||
1CF5;VEDIC SIGN JIHVAMULIYA;Lo;0;L;;;;;N;;;;;
|
||||
1CF6;VEDIC SIGN UPADHMANIYA;Lo;0;L;;;;;N;;;;;
|
||||
1CF7;VEDIC SIGN ATIKRAMA;Mc;0;L;;;;;N;;;;;
|
||||
1CF8;VEDIC TONE RING ABOVE;Mn;230;NSM;;;;;N;;;;;
|
||||
1CF9;VEDIC TONE DOUBLE RING ABOVE;Mn;230;NSM;;;;;N;;;;;
|
||||
1CFA;VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA;Lo;0;L;;;;;N;;;;;
|
||||
1D00;LATIN LETTER SMALL CAPITAL A;Ll;0;L;;;;;N;;;;;
|
||||
1D01;LATIN LETTER SMALL CAPITAL AE;Ll;0;L;;;;;N;;;;;
|
||||
1D02;LATIN SMALL LETTER TURNED AE;Ll;0;L;;;;;N;;;;;
|
||||
@ -6638,7 +6655,7 @@
|
||||
1D8B;LATIN SMALL LETTER ESH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
|
||||
1D8C;LATIN SMALL LETTER V WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
|
||||
1D8D;LATIN SMALL LETTER X WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
|
||||
1D8E;LATIN SMALL LETTER Z WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
|
||||
1D8E;LATIN SMALL LETTER Z WITH PALATAL HOOK;Ll;0;L;;;;;N;;;A7C6;;A7C6
|
||||
1D8F;LATIN SMALL LETTER A WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
|
||||
1D90;LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
|
||||
1D91;LATIN SMALL LETTER D WITH HOOK AND TAIL;Ll;0;L;;;;;N;;;;;
|
||||
@ -10165,6 +10182,7 @@
|
||||
2BC6;BLACK MEDIUM DOWN-POINTING TRIANGLE CENTRED;So;0;ON;;;;;N;;;;;
|
||||
2BC7;BLACK MEDIUM LEFT-POINTING TRIANGLE CENTRED;So;0;ON;;;;;N;;;;;
|
||||
2BC8;BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED;So;0;ON;;;;;N;;;;;
|
||||
2BC9;NEPTUNE FORM TWO;So;0;ON;;;;;N;;;;;
|
||||
2BCA;TOP HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
|
||||
2BCB;BOTTOM HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
|
||||
2BCC;LIGHT FOUR POINTED BLACK CUSP;So;0;ON;;;;;N;;;;;
|
||||
@ -10218,6 +10236,7 @@
|
||||
2BFC;DOUBLED SYMBOL;So;0;ON;;;;;N;;;;;
|
||||
2BFD;PASSED SYMBOL;So;0;ON;;;;;N;;;;;
|
||||
2BFE;REVERSED RIGHT ANGLE;So;0;ON;;;;;Y;;;;;
|
||||
2BFF;HELLSCHREIBER PAUSE SYMBOL;So;0;ON;;;;;N;;;;;
|
||||
2C00;GLAGOLITIC CAPITAL LETTER AZU;Lu;0;L;;;;;N;;;;2C30;
|
||||
2C01;GLAGOLITIC CAPITAL LETTER BUKY;Lu;0;L;;;;;N;;;;2C31;
|
||||
2C02;GLAGOLITIC CAPITAL LETTER VEDE;Lu;0;L;;;;;N;;;;2C32;
|
||||
@ -10756,6 +10775,7 @@
|
||||
2E4C;MEDIEVAL COMMA;Po;0;ON;;;;;N;;;;;
|
||||
2E4D;PARAGRAPHUS MARK;Po;0;ON;;;;;N;;;;;
|
||||
2E4E;PUNCTUS ELEVATUS MARK;Po;0;ON;;;;;N;;;;;
|
||||
2E4F;CORNISH VERSE DIVIDER;Po;0;ON;;;;;N;;;;;
|
||||
2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;;
|
||||
2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;;
|
||||
2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;;
|
||||
@ -11836,7 +11856,7 @@
|
||||
32FC;CIRCLED KATAKANA WI;So;0;L;<circle> 30F0;;;;N;;;;;
|
||||
32FD;CIRCLED KATAKANA WE;So;0;L;<circle> 30F1;;;;N;;;;;
|
||||
32FE;CIRCLED KATAKANA WO;So;0;L;<circle> 30F2;;;;N;;;;;
|
||||
32FF;SQUARE ERA NAME REIWA;So;0;L;<square> 4EE4 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME REIWA;;;;
|
||||
32FF;SQUARE ERA NAME REIWA;So;0;L;<square> 4EE4 548C;;;;N;;;;;
|
||||
3300;SQUARE APAATO;So;0;L;<square> 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;;
|
||||
3301;SQUARE ARUHUA;So;0;L;<square> 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;;
|
||||
3302;SQUARE ANPEA;So;0;L;<square> 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;;
|
||||
@ -14061,7 +14081,7 @@ A790;LATIN CAPITAL LETTER N WITH DESCENDER;Lu;0;L;;;;;N;;;;A791;
|
||||
A791;LATIN SMALL LETTER N WITH DESCENDER;Ll;0;L;;;;;N;;;A790;;A790
|
||||
A792;LATIN CAPITAL LETTER C WITH BAR;Lu;0;L;;;;;N;;;;A793;
|
||||
A793;LATIN SMALL LETTER C WITH BAR;Ll;0;L;;;;;N;;;A792;;A792
|
||||
A794;LATIN SMALL LETTER C WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
|
||||
A794;LATIN SMALL LETTER C WITH PALATAL HOOK;Ll;0;L;;;;;N;;;A7C4;;A7C4
|
||||
A795;LATIN SMALL LETTER H WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
|
||||
A796;LATIN CAPITAL LETTER B WITH FLOURISH;Lu;0;L;;;;;N;;;;A797;
|
||||
A797;LATIN SMALL LETTER B WITH FLOURISH;Ll;0;L;;;;;N;;;A796;;A796
|
||||
@ -14099,6 +14119,17 @@ A7B6;LATIN CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;A7B7;
|
||||
A7B7;LATIN SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;A7B6;;A7B6
|
||||
A7B8;LATIN CAPITAL LETTER U WITH STROKE;Lu;0;L;;;;;N;;;;A7B9;
|
||||
A7B9;LATIN SMALL LETTER U WITH STROKE;Ll;0;L;;;;;N;;;A7B8;;A7B8
|
||||
A7BA;LATIN CAPITAL LETTER GLOTTAL A;Lu;0;L;;;;;N;;;;A7BB;
|
||||
A7BB;LATIN SMALL LETTER GLOTTAL A;Ll;0;L;;;;;N;;;A7BA;;A7BA
|
||||
A7BC;LATIN CAPITAL LETTER GLOTTAL I;Lu;0;L;;;;;N;;;;A7BD;
|
||||
A7BD;LATIN SMALL LETTER GLOTTAL I;Ll;0;L;;;;;N;;;A7BC;;A7BC
|
||||
A7BE;LATIN CAPITAL LETTER GLOTTAL U;Lu;0;L;;;;;N;;;;A7BF;
|
||||
A7BF;LATIN SMALL LETTER GLOTTAL U;Ll;0;L;;;;;N;;;A7BE;;A7BE
|
||||
A7C2;LATIN CAPITAL LETTER ANGLICANA W;Lu;0;L;;;;;N;;;;A7C3;
|
||||
A7C3;LATIN SMALL LETTER ANGLICANA W;Ll;0;L;;;;;N;;;A7C2;;A7C2
|
||||
A7C4;LATIN CAPITAL LETTER C WITH PALATAL HOOK;Lu;0;L;;;;;N;;;;A794;
|
||||
A7C5;LATIN CAPITAL LETTER S WITH HOOK;Lu;0;L;;;;;N;;;;0282;
|
||||
A7C6;LATIN CAPITAL LETTER Z WITH PALATAL HOOK;Lu;0;L;;;;;N;;;;1D8E;
|
||||
A7F7;LATIN EPIGRAPHIC LETTER SIDEWAYS I;Lo;0;L;;;;;N;;;;;
|
||||
A7F8;MODIFIER LETTER CAPITAL H WITH STROKE;Lm;0;L;<super> 0126;;;;N;;;;;
|
||||
A7F9;MODIFIER LETTER SMALL LIGATURE OE;Lm;0;L;<super> 0153;;;;N;;;;;
|
||||
@ -14507,7 +14538,7 @@ A9B9;JAVANESE VOWEL SIGN SUKU MENDUT;Mn;0;NSM;;;;;N;;;;;
|
||||
A9BA;JAVANESE VOWEL SIGN TALING;Mc;0;L;;;;;N;;;;;
|
||||
A9BB;JAVANESE VOWEL SIGN DIRGA MURE;Mc;0;L;;;;;N;;;;;
|
||||
A9BC;JAVANESE VOWEL SIGN PEPET;Mn;0;NSM;;;;;N;;;;;
|
||||
A9BD;JAVANESE CONSONANT SIGN KERET;Mc;0;L;;;;;N;;;;;
|
||||
A9BD;JAVANESE CONSONANT SIGN KERET;Mn;0;NSM;;;;;N;;;;;
|
||||
A9BE;JAVANESE CONSONANT SIGN PENGKAL;Mc;0;L;;;;;N;;;;;
|
||||
A9BF;JAVANESE CONSONANT SIGN CAKRA;Mc;0;L;;;;;N;;;;;
|
||||
A9C0;JAVANESE PANGKON;Mc;9;L;;;;;N;;;;;
|
||||
@ -14864,6 +14895,8 @@ AB62;LATIN SMALL LETTER OPEN OE;Ll;0;L;;;;;N;;;;;
|
||||
AB63;LATIN SMALL LETTER UO;Ll;0;L;;;;;N;;;;;
|
||||
AB64;LATIN SMALL LETTER INVERTED ALPHA;Ll;0;L;;;;;N;;;;;
|
||||
AB65;GREEK LETTER SMALL CAPITAL OMEGA;Ll;0;L;;;;;N;;;;;
|
||||
AB66;LATIN SMALL LETTER DZ DIGRAPH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
|
||||
AB67;LATIN SMALL LETTER TS DIGRAPH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
|
||||
AB70;CHEROKEE SMALL LETTER A;Ll;0;L;;;;;N;;;13A0;;13A0
|
||||
AB71;CHEROKEE SMALL LETTER E;Ll;0;L;;;;;N;;;13A1;;13A1
|
||||
AB72;CHEROKEE SMALL LETTER I;Ll;0;L;;;;;N;;;13A2;;13A2
|
||||
@ -19106,6 +19139,29 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
|
||||
10F57;SOGDIAN PUNCTUATION CIRCLE WITH DOT;Po;0;AL;;;;;N;;;;;
|
||||
10F58;SOGDIAN PUNCTUATION TWO CIRCLES WITH DOTS;Po;0;AL;;;;;N;;;;;
|
||||
10F59;SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT;Po;0;AL;;;;;N;;;;;
|
||||
10FE0;ELYMAIC LETTER ALEPH;Lo;0;R;;;;;N;;;;;
|
||||
10FE1;ELYMAIC LETTER BETH;Lo;0;R;;;;;N;;;;;
|
||||
10FE2;ELYMAIC LETTER GIMEL;Lo;0;R;;;;;N;;;;;
|
||||
10FE3;ELYMAIC LETTER DALETH;Lo;0;R;;;;;N;;;;;
|
||||
10FE4;ELYMAIC LETTER HE;Lo;0;R;;;;;N;;;;;
|
||||
10FE5;ELYMAIC LETTER WAW;Lo;0;R;;;;;N;;;;;
|
||||
10FE6;ELYMAIC LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
|
||||
10FE7;ELYMAIC LETTER HETH;Lo;0;R;;;;;N;;;;;
|
||||
10FE8;ELYMAIC LETTER TETH;Lo;0;R;;;;;N;;;;;
|
||||
10FE9;ELYMAIC LETTER YODH;Lo;0;R;;;;;N;;;;;
|
||||
10FEA;ELYMAIC LETTER KAPH;Lo;0;R;;;;;N;;;;;
|
||||
10FEB;ELYMAIC LETTER LAMEDH;Lo;0;R;;;;;N;;;;;
|
||||
10FEC;ELYMAIC LETTER MEM;Lo;0;R;;;;;N;;;;;
|
||||
10FED;ELYMAIC LETTER NUN;Lo;0;R;;;;;N;;;;;
|
||||
10FEE;ELYMAIC LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
|
||||
10FEF;ELYMAIC LETTER AYIN;Lo;0;R;;;;;N;;;;;
|
||||
10FF0;ELYMAIC LETTER PE;Lo;0;R;;;;;N;;;;;
|
||||
10FF1;ELYMAIC LETTER SADHE;Lo;0;R;;;;;N;;;;;
|
||||
10FF2;ELYMAIC LETTER QOPH;Lo;0;R;;;;;N;;;;;
|
||||
10FF3;ELYMAIC LETTER RESH;Lo;0;R;;;;;N;;;;;
|
||||
10FF4;ELYMAIC LETTER SHIN;Lo;0;R;;;;;N;;;;;
|
||||
10FF5;ELYMAIC LETTER TAW;Lo;0;R;;;;;N;;;;;
|
||||
10FF6;ELYMAIC LIGATURE ZAYIN-YODH;Lo;0;R;;;;;N;;;;;
|
||||
11000;BRAHMI SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;;
|
||||
11001;BRAHMI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
|
||||
11002;BRAHMI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
|
||||
@ -19888,6 +19944,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
|
||||
1145B;NEWA PLACEHOLDER MARK;Po;0;L;;;;;N;;;;;
|
||||
1145D;NEWA INSERTION SIGN;Po;0;L;;;;;N;;;;;
|
||||
1145E;NEWA SANDHI MARK;Mn;230;NSM;;;;;N;;;;;
|
||||
1145F;NEWA LETTER VEDIC ANUSVARA;Lo;0;L;;;;;N;;;;;
|
||||
11480;TIRHUTA ANJI;Lo;0;L;;;;;N;;;;;
|
||||
11481;TIRHUTA LETTER A;Lo;0;L;;;;;N;;;;;
|
||||
11482;TIRHUTA LETTER AA;Lo;0;L;;;;;N;;;;;
|
||||
@ -20210,6 +20267,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
|
||||
116B5;TAKRI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
|
||||
116B6;TAKRI SIGN VIRAMA;Mc;9;L;;;;;N;;;;;
|
||||
116B7;TAKRI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
|
||||
116B8;TAKRI LETTER ARCHAIC KHA;Lo;0;L;;;;;N;;;;;
|
||||
116C0;TAKRI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
|
||||
116C1;TAKRI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
|
||||
116C2;TAKRI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
|
||||
@ -20422,6 +20480,71 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
|
||||
118F1;WARANG CITI NUMBER EIGHTY;No;0;L;;;;80;N;;;;;
|
||||
118F2;WARANG CITI NUMBER NINETY;No;0;L;;;;90;N;;;;;
|
||||
118FF;WARANG CITI OM;Lo;0;L;;;;;N;;;;;
|
||||
119A0;NANDINAGARI LETTER A;Lo;0;L;;;;;N;;;;;
|
||||
119A1;NANDINAGARI LETTER AA;Lo;0;L;;;;;N;;;;;
|
||||
119A2;NANDINAGARI LETTER I;Lo;0;L;;;;;N;;;;;
|
||||
119A3;NANDINAGARI LETTER II;Lo;0;L;;;;;N;;;;;
|
||||
119A4;NANDINAGARI LETTER U;Lo;0;L;;;;;N;;;;;
|
||||
119A5;NANDINAGARI LETTER UU;Lo;0;L;;;;;N;;;;;
|
||||
119A6;NANDINAGARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
|
||||
119A7;NANDINAGARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
|
||||
119AA;NANDINAGARI LETTER E;Lo;0;L;;;;;N;;;;;
|
||||
119AB;NANDINAGARI LETTER AI;Lo;0;L;;;;;N;;;;;
|
||||
119AC;NANDINAGARI LETTER O;Lo;0;L;;;;;N;;;;;
|
||||
119AD;NANDINAGARI LETTER AU;Lo;0;L;;;;;N;;;;;
|
||||
119AE;NANDINAGARI LETTER KA;Lo;0;L;;;;;N;;;;;
|
||||
119AF;NANDINAGARI LETTER KHA;Lo;0;L;;;;;N;;;;;
|
||||
119B0;NANDINAGARI LETTER GA;Lo;0;L;;;;;N;;;;;
|
||||
119B1;NANDINAGARI LETTER GHA;Lo;0;L;;;;;N;;;;;
|
||||
119B2;NANDINAGARI LETTER NGA;Lo;0;L;;;;;N;;;;;
|
||||
119B3;NANDINAGARI LETTER CA;Lo;0;L;;;;;N;;;;;
|
||||
119B4;NANDINAGARI LETTER CHA;Lo;0;L;;;;;N;;;;;
|
||||
119B5;NANDINAGARI LETTER JA;Lo;0;L;;;;;N;;;;;
|
||||
119B6;NANDINAGARI LETTER JHA;Lo;0;L;;;;;N;;;;;
|
||||
119B7;NANDINAGARI LETTER NYA;Lo;0;L;;;;;N;;;;;
|
||||
119B8;NANDINAGARI LETTER TTA;Lo;0;L;;;;;N;;;;;
|
||||
119B9;NANDINAGARI LETTER TTHA;Lo;0;L;;;;;N;;;;;
|
||||
119BA;NANDINAGARI LETTER DDA;Lo;0;L;;;;;N;;;;;
|
||||
119BB;NANDINAGARI LETTER DDHA;Lo;0;L;;;;;N;;;;;
|
||||
119BC;NANDINAGARI LETTER NNA;Lo;0;L;;;;;N;;;;;
|
||||
119BD;NANDINAGARI LETTER TA;Lo;0;L;;;;;N;;;;;
|
||||
119BE;NANDINAGARI LETTER THA;Lo;0;L;;;;;N;;;;;
|
||||
119BF;NANDINAGARI LETTER DA;Lo;0;L;;;;;N;;;;;
|
||||
119C0;NANDINAGARI LETTER DHA;Lo;0;L;;;;;N;;;;;
|
||||
119C1;NANDINAGARI LETTER NA;Lo;0;L;;;;;N;;;;;
|
||||
119C2;NANDINAGARI LETTER PA;Lo;0;L;;;;;N;;;;;
|
||||
119C3;NANDINAGARI LETTER PHA;Lo;0;L;;;;;N;;;;;
|
||||
119C4;NANDINAGARI LETTER BA;Lo;0;L;;;;;N;;;;;
|
||||
119C5;NANDINAGARI LETTER BHA;Lo;0;L;;;;;N;;;;;
|
||||
119C6;NANDINAGARI LETTER MA;Lo;0;L;;;;;N;;;;;
|
||||
119C7;NANDINAGARI LETTER YA;Lo;0;L;;;;;N;;;;;
|
||||
119C8;NANDINAGARI LETTER RA;Lo;0;L;;;;;N;;;;;
|
||||
119C9;NANDINAGARI LETTER LA;Lo;0;L;;;;;N;;;;;
|
||||
119CA;NANDINAGARI LETTER VA;Lo;0;L;;;;;N;;;;;
|
||||
119CB;NANDINAGARI LETTER SHA;Lo;0;L;;;;;N;;;;;
|
||||
119CC;NANDINAGARI LETTER SSA;Lo;0;L;;;;;N;;;;;
|
||||
119CD;NANDINAGARI LETTER SA;Lo;0;L;;;;;N;;;;;
|
||||
119CE;NANDINAGARI LETTER HA;Lo;0;L;;;;;N;;;;;
|
||||
119CF;NANDINAGARI LETTER LLA;Lo;0;L;;;;;N;;;;;
|
||||
119D0;NANDINAGARI LETTER RRA;Lo;0;L;;;;;N;;;;;
|
||||
119D1;NANDINAGARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
|
||||
119D2;NANDINAGARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
|
||||
119D3;NANDINAGARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
|
||||
119D4;NANDINAGARI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
|
||||
119D5;NANDINAGARI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
|
||||
119D6;NANDINAGARI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
|
||||
119D7;NANDINAGARI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
|
||||
119DA;NANDINAGARI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
|
||||
119DB;NANDINAGARI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
|
||||
119DC;NANDINAGARI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
|
||||
119DD;NANDINAGARI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
|
||||
119DE;NANDINAGARI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
|
||||
119DF;NANDINAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
|
||||
119E0;NANDINAGARI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
|
||||
119E1;NANDINAGARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
|
||||
119E2;NANDINAGARI SIGN SIDDHAM;Po;0;L;;;;;N;;;;;
|
||||
119E3;NANDINAGARI HEADSTROKE;Lo;0;L;;;;;N;;;;;
|
||||
119E4;NANDINAGARI VOWEL SIGN PRISHTHAMATRA E;Mc;0;L;;;;;N;;;;;
|
||||
11A00;ZANABAZAR SQUARE LETTER A;Lo;0;L;;;;;N;;;;;
|
||||
11A01;ZANABAZAR SQUARE VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
|
||||
11A02;ZANABAZAR SQUARE VOWEL SIGN UE;Mn;0;NSM;;;;;N;;;;;
|
||||
@ -20546,6 +20669,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
|
||||
11A81;SOYOMBO LETTER SA;Lo;0;L;;;;;N;;;;;
|
||||
11A82;SOYOMBO LETTER HA;Lo;0;L;;;;;N;;;;;
|
||||
11A83;SOYOMBO LETTER KSSA;Lo;0;L;;;;;N;;;;;
|
||||
11A84;SOYOMBO SIGN JIHVAMULIYA;Lo;0;L;;;;;N;;;;;
|
||||
11A85;SOYOMBO SIGN UPADHMANIYA;Lo;0;L;;;;;N;;;;;
|
||||
11A86;SOYOMBO CLUSTER-INITIAL LETTER RA;Lo;0;L;;;;;N;;;;;
|
||||
11A87;SOYOMBO CLUSTER-INITIAL LETTER LA;Lo;0;L;;;;;N;;;;;
|
||||
11A88;SOYOMBO CLUSTER-INITIAL LETTER SHA;Lo;0;L;;;;;N;;;;;
|
||||
@ -20960,6 +21085,57 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
|
||||
11EF6;MAKASAR VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
|
||||
11EF7;MAKASAR PASSIMBANG;Po;0;L;;;;;N;;;;;
|
||||
11EF8;MAKASAR END OF SECTION;Po;0;L;;;;;N;;;;;
|
||||
11FC0;TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH;No;0;L;;;;1/320;N;;;;;
|
||||
11FC1;TAMIL FRACTION ONE ONE-HUNDRED-AND-SIXTIETH;No;0;L;;;;1/160;N;;;;;
|
||||
11FC2;TAMIL FRACTION ONE EIGHTIETH;No;0;L;;;;1/80;N;;;;;
|
||||
11FC3;TAMIL FRACTION ONE SIXTY-FOURTH;No;0;L;;;;1/64;N;;;;;
|
||||
11FC4;TAMIL FRACTION ONE FORTIETH;No;0;L;;;;1/40;N;;;;;
|
||||
11FC5;TAMIL FRACTION ONE THIRTY-SECOND;No;0;L;;;;1/32;N;;;;;
|
||||
11FC6;TAMIL FRACTION THREE EIGHTIETHS;No;0;L;;;;3/80;N;;;;;
|
||||
11FC7;TAMIL FRACTION THREE SIXTY-FOURTHS;No;0;L;;;;3/64;N;;;;;
|
||||
11FC8;TAMIL FRACTION ONE TWENTIETH;No;0;L;;;;1/20;N;;;;;
|
||||
11FC9;TAMIL FRACTION ONE SIXTEENTH-1;No;0;L;;;;1/16;N;;;;;
|
||||
11FCA;TAMIL FRACTION ONE SIXTEENTH-2;No;0;L;;;;1/16;N;;;;;
|
||||
11FCB;TAMIL FRACTION ONE TENTH;No;0;L;;;;1/10;N;;;;;
|
||||
11FCC;TAMIL FRACTION ONE EIGHTH;No;0;L;;;;1/8;N;;;;;
|
||||
11FCD;TAMIL FRACTION THREE TWENTIETHS;No;0;L;;;;3/20;N;;;;;
|
||||
11FCE;TAMIL FRACTION THREE SIXTEENTHS;No;0;L;;;;3/16;N;;;;;
|
||||
11FCF;TAMIL FRACTION ONE FIFTH;No;0;L;;;;1/5;N;;;;;
|
||||
11FD0;TAMIL FRACTION ONE QUARTER;No;0;L;;;;1/4;N;;;;;
|
||||
11FD1;TAMIL FRACTION ONE HALF-1;No;0;L;;;;1/2;N;;;;;
|
||||
11FD2;TAMIL FRACTION ONE HALF-2;No;0;L;;;;1/2;N;;;;;
|
||||
11FD3;TAMIL FRACTION THREE QUARTERS;No;0;L;;;;3/4;N;;;;;
|
||||
11FD4;TAMIL FRACTION DOWNSCALING FACTOR KIIZH;No;0;L;;;;1/320;N;;;;;
|
||||
11FD5;TAMIL SIGN NEL;So;0;ON;;;;;N;;;;;
|
||||
11FD6;TAMIL SIGN CEVITU;So;0;ON;;;;;N;;;;;
|
||||
11FD7;TAMIL SIGN AAZHAAKKU;So;0;ON;;;;;N;;;;;
|
||||
11FD8;TAMIL SIGN UZHAKKU;So;0;ON;;;;;N;;;;;
|
||||
11FD9;TAMIL SIGN MUUVUZHAKKU;So;0;ON;;;;;N;;;;;
|
||||
11FDA;TAMIL SIGN KURUNI;So;0;ON;;;;;N;;;;;
|
||||
11FDB;TAMIL SIGN PATHAKKU;So;0;ON;;;;;N;;;;;
|
||||
11FDC;TAMIL SIGN MUKKURUNI;So;0;ON;;;;;N;;;;;
|
||||
11FDD;TAMIL SIGN KAACU;Sc;0;ET;;;;;N;;;;;
|
||||
11FDE;TAMIL SIGN PANAM;Sc;0;ET;;;;;N;;;;;
|
||||
11FDF;TAMIL SIGN PON;Sc;0;ET;;;;;N;;;;;
|
||||
11FE0;TAMIL SIGN VARAAKAN;Sc;0;ET;;;;;N;;;;;
|
||||
11FE1;TAMIL SIGN PAARAM;So;0;ON;;;;;N;;;;;
|
||||
11FE2;TAMIL SIGN KUZHI;So;0;ON;;;;;N;;;;;
|
||||
11FE3;TAMIL SIGN VELI;So;0;ON;;;;;N;;;;;
|
||||
11FE4;TAMIL WET CULTIVATION SIGN;So;0;ON;;;;;N;;;;;
|
||||
11FE5;TAMIL DRY CULTIVATION SIGN;So;0;ON;;;;;N;;;;;
|
||||
11FE6;TAMIL LAND SIGN;So;0;ON;;;;;N;;;;;
|
||||
11FE7;TAMIL SALT PAN SIGN;So;0;ON;;;;;N;;;;;
|
||||
11FE8;TAMIL TRADITIONAL CREDIT SIGN;So;0;ON;;;;;N;;;;;
|
||||
11FE9;TAMIL TRADITIONAL NUMBER SIGN;So;0;ON;;;;;N;;;;;
|
||||
11FEA;TAMIL CURRENT SIGN;So;0;ON;;;;;N;;;;;
|
||||
11FEB;TAMIL AND ODD SIGN;So;0;ON;;;;;N;;;;;
|
||||
11FEC;TAMIL SPENT SIGN;So;0;ON;;;;;N;;;;;
|
||||
11FED;TAMIL TOTAL SIGN;So;0;ON;;;;;N;;;;;
|
||||
11FEE;TAMIL IN POSSESSION SIGN;So;0;ON;;;;;N;;;;;
|
||||
11FEF;TAMIL STARTING FROM SIGN;So;0;ON;;;;;N;;;;;
|
||||
11FF0;TAMIL SIGN MUTHALIYA;So;0;ON;;;;;N;;;;;
|
||||
11FF1;TAMIL SIGN VAKAIYARAA;So;0;ON;;;;;N;;;;;
|
||||
11FFF;TAMIL PUNCTUATION END OF TEXT;Po;0;L;;;;;N;;;;;
|
||||
12000;CUNEIFORM SIGN A;Lo;0;L;;;;;N;;;;;
|
||||
12001;CUNEIFORM SIGN A TIMES A;Lo;0;L;;;;;N;;;;;
|
||||
12002;CUNEIFORM SIGN A TIMES BAD;Lo;0;L;;;;;N;;;;;
|
||||
@ -23265,6 +23441,15 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
|
||||
1342C;EGYPTIAN HIEROGLYPH AA030;Lo;0;L;;;;;N;;;;;
|
||||
1342D;EGYPTIAN HIEROGLYPH AA031;Lo;0;L;;;;;N;;;;;
|
||||
1342E;EGYPTIAN HIEROGLYPH AA032;Lo;0;L;;;;;N;;;;;
|
||||
13430;EGYPTIAN HIEROGLYPH VERTICAL JOINER;Cf;0;L;;;;;N;;;;;
|
||||
13431;EGYPTIAN HIEROGLYPH HORIZONTAL JOINER;Cf;0;L;;;;;N;;;;;
|
||||
13432;EGYPTIAN HIEROGLYPH INSERT AT TOP START;Cf;0;L;;;;;N;;;;;
|
||||
13433;EGYPTIAN HIEROGLYPH INSERT AT BOTTOM START;Cf;0;L;;;;;N;;;;;
|
||||
13434;EGYPTIAN HIEROGLYPH INSERT AT TOP END;Cf;0;L;;;;;N;;;;;
|
||||
13435;EGYPTIAN HIEROGLYPH INSERT AT BOTTOM END;Cf;0;L;;;;;N;;;;;
|
||||
13436;EGYPTIAN HIEROGLYPH OVERLAY MIDDLE;Cf;0;L;;;;;N;;;;;
|
||||
13437;EGYPTIAN HIEROGLYPH BEGIN SEGMENT;Cf;0;L;;;;;N;;;;;
|
||||
13438;EGYPTIAN HIEROGLYPH END SEGMENT;Cf;0;L;;;;;N;;;;;
|
||||
14400;ANATOLIAN HIEROGLYPH A001;Lo;0;L;;;;;N;;;;;
|
||||
14401;ANATOLIAN HIEROGLYPH A002;Lo;0;L;;;;;N;;;;;
|
||||
14402;ANATOLIAN HIEROGLYPH A003;Lo;0;L;;;;;N;;;;;
|
||||
@ -24783,6 +24968,13 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
|
||||
16F42;MIAO LETTER WA;Lo;0;L;;;;;N;;;;;
|
||||
16F43;MIAO LETTER AH;Lo;0;L;;;;;N;;;;;
|
||||
16F44;MIAO LETTER HHA;Lo;0;L;;;;;N;;;;;
|
||||
16F45;MIAO LETTER BRI;Lo;0;L;;;;;N;;;;;
|
||||
16F46;MIAO LETTER SYI;Lo;0;L;;;;;N;;;;;
|
||||
16F47;MIAO LETTER DZYI;Lo;0;L;;;;;N;;;;;
|
||||
16F48;MIAO LETTER TE;Lo;0;L;;;;;N;;;;;
|
||||
16F49;MIAO LETTER TSE;Lo;0;L;;;;;N;;;;;
|
||||
16F4A;MIAO LETTER RTE;Lo;0;L;;;;;N;;;;;
|
||||
16F4F;MIAO SIGN CONSONANT MODIFIER BAR;Mn;0;NSM;;;;;N;;;;;
|
||||
16F50;MIAO LETTER NASALIZATION;Lo;0;L;;;;;N;;;;;
|
||||
16F51;MIAO SIGN ASPIRATION;Mc;0;L;;;;;N;;;;;
|
||||
16F52;MIAO SIGN REFORMED VOICING;Mc;0;L;;;;;N;;;;;
|
||||
@ -24830,6 +25022,15 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
|
||||
16F7C;MIAO VOWEL SIGN OU;Mc;0;L;;;;;N;;;;;
|
||||
16F7D;MIAO VOWEL SIGN N;Mc;0;L;;;;;N;;;;;
|
||||
16F7E;MIAO VOWEL SIGN NG;Mc;0;L;;;;;N;;;;;
|
||||
16F7F;MIAO VOWEL SIGN UOG;Mc;0;L;;;;;N;;;;;
|
||||
16F80;MIAO VOWEL SIGN YUI;Mc;0;L;;;;;N;;;;;
|
||||
16F81;MIAO VOWEL SIGN OG;Mc;0;L;;;;;N;;;;;
|
||||
16F82;MIAO VOWEL SIGN OER;Mc;0;L;;;;;N;;;;;
|
||||
16F83;MIAO VOWEL SIGN VW;Mc;0;L;;;;;N;;;;;
|
||||
16F84;MIAO VOWEL SIGN IG;Mc;0;L;;;;;N;;;;;
|
||||
16F85;MIAO VOWEL SIGN EA;Mc;0;L;;;;;N;;;;;
|
||||
16F86;MIAO VOWEL SIGN IONG;Mc;0;L;;;;;N;;;;;
|
||||
16F87;MIAO VOWEL SIGN UI;Mc;0;L;;;;;N;;;;;
|
||||
16F8F;MIAO TONE RIGHT;Mn;0;NSM;;;;;N;;;;;
|
||||
16F90;MIAO TONE TOP RIGHT;Mn;0;NSM;;;;;N;;;;;
|
||||
16F91;MIAO TONE ABOVE;Mn;0;NSM;;;;;N;;;;;
|
||||
@ -24849,8 +25050,10 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
|
||||
16F9F;MIAO LETTER REFORMED TONE-8;Lm;0;L;;;;;N;;;;;
|
||||
16FE0;TANGUT ITERATION MARK;Lm;0;L;;;;;N;;;;;
|
||||
16FE1;NUSHU ITERATION MARK;Lm;0;L;;;;;N;;;;;
|
||||
16FE2;OLD CHINESE HOOK MARK;Po;0;ON;;;;;N;;;;;
|
||||
16FE3;OLD CHINESE ITERATION MARK;Lm;0;L;;;;;N;;;;;
|
||||
17000;<Tangut Ideograph, First>;Lo;0;L;;;;;N;;;;;
|
||||
187F1;<Tangut Ideograph, Last>;Lo;0;L;;;;;N;;;;;
|
||||
187F7;<Tangut Ideograph, Last>;Lo;0;L;;;;;N;;;;;
|
||||
18800;TANGUT COMPONENT-001;Lo;0;L;;;;;N;;;;;
|
||||
18801;TANGUT COMPONENT-002;Lo;0;L;;;;;N;;;;;
|
||||
18802;TANGUT COMPONENT-003;Lo;0;L;;;;;N;;;;;
|
||||
@ -25893,6 +26096,13 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
|
||||
1B11C;HENTAIGANA LETTER WO-7;Lo;0;L;;;;;N;;;;;
|
||||
1B11D;HENTAIGANA LETTER N-MU-MO-1;Lo;0;L;;;;;N;;;;;
|
||||
1B11E;HENTAIGANA LETTER N-MU-MO-2;Lo;0;L;;;;;N;;;;;
|
||||
1B150;HIRAGANA LETTER SMALL WI;Lo;0;L;;;;;N;;;;;
|
||||
1B151;HIRAGANA LETTER SMALL WE;Lo;0;L;;;;;N;;;;;
|
||||
1B152;HIRAGANA LETTER SMALL WO;Lo;0;L;;;;;N;;;;;
|
||||
1B164;KATAKANA LETTER SMALL WI;Lo;0;L;;;;;N;;;;;
|
||||
1B165;KATAKANA LETTER SMALL WE;Lo;0;L;;;;;N;;;;;
|
||||
1B166;KATAKANA LETTER SMALL WO;Lo;0;L;;;;;N;;;;;
|
||||
1B167;KATAKANA LETTER SMALL N;Lo;0;L;;;;;N;;;;;
|
||||
1B170;NUSHU CHARACTER-1B170;Lo;0;L;;;;;N;;;;;
|
||||
1B171;NUSHU CHARACTER-1B171;Lo;0;L;;;;;N;;;;;
|
||||
1B172;NUSHU CHARACTER-1B172;Lo;0;L;;;;;N;;;;;
|
||||
@ -28821,6 +29031,136 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
|
||||
1E028;COMBINING GLAGOLITIC LETTER BIG YUS;Mn;230;NSM;;;;;N;;;;;
|
||||
1E029;COMBINING GLAGOLITIC LETTER IOTATED BIG YUS;Mn;230;NSM;;;;;N;;;;;
|
||||
1E02A;COMBINING GLAGOLITIC LETTER FITA;Mn;230;NSM;;;;;N;;;;;
|
||||
1E100;NYIAKENG PUACHUE HMONG LETTER MA;Lo;0;L;;;;;N;;;;;
|
||||
1E101;NYIAKENG PUACHUE HMONG LETTER TSA;Lo;0;L;;;;;N;;;;;
|
||||
1E102;NYIAKENG PUACHUE HMONG LETTER NTA;Lo;0;L;;;;;N;;;;;
|
||||
1E103;NYIAKENG PUACHUE HMONG LETTER TA;Lo;0;L;;;;;N;;;;;
|
||||
1E104;NYIAKENG PUACHUE HMONG LETTER HA;Lo;0;L;;;;;N;;;;;
|
||||
1E105;NYIAKENG PUACHUE HMONG LETTER NA;Lo;0;L;;;;;N;;;;;
|
||||
1E106;NYIAKENG PUACHUE HMONG LETTER XA;Lo;0;L;;;;;N;;;;;
|
||||
1E107;NYIAKENG PUACHUE HMONG LETTER NKA;Lo;0;L;;;;;N;;;;;
|
||||
1E108;NYIAKENG PUACHUE HMONG LETTER CA;Lo;0;L;;;;;N;;;;;
|
||||
1E109;NYIAKENG PUACHUE HMONG LETTER LA;Lo;0;L;;;;;N;;;;;
|
||||
1E10A;NYIAKENG PUACHUE HMONG LETTER SA;Lo;0;L;;;;;N;;;;;
|
||||
1E10B;NYIAKENG PUACHUE HMONG LETTER ZA;Lo;0;L;;;;;N;;;;;
|
||||
1E10C;NYIAKENG PUACHUE HMONG LETTER NCA;Lo;0;L;;;;;N;;;;;
|
||||
1E10D;NYIAKENG PUACHUE HMONG LETTER NTSA;Lo;0;L;;;;;N;;;;;
|
||||
1E10E;NYIAKENG PUACHUE HMONG LETTER KA;Lo;0;L;;;;;N;;;;;
|
||||
1E10F;NYIAKENG PUACHUE HMONG LETTER DA;Lo;0;L;;;;;N;;;;;
|
||||
1E110;NYIAKENG PUACHUE HMONG LETTER NYA;Lo;0;L;;;;;N;;;;;
|
||||
1E111;NYIAKENG PUACHUE HMONG LETTER NRA;Lo;0;L;;;;;N;;;;;
|
||||
1E112;NYIAKENG PUACHUE HMONG LETTER VA;Lo;0;L;;;;;N;;;;;
|
||||
1E113;NYIAKENG PUACHUE HMONG LETTER NTXA;Lo;0;L;;;;;N;;;;;
|
||||
1E114;NYIAKENG PUACHUE HMONG LETTER TXA;Lo;0;L;;;;;N;;;;;
|
||||
1E115;NYIAKENG PUACHUE HMONG LETTER FA;Lo;0;L;;;;;N;;;;;
|
||||
1E116;NYIAKENG PUACHUE HMONG LETTER RA;Lo;0;L;;;;;N;;;;;
|
||||
1E117;NYIAKENG PUACHUE HMONG LETTER QA;Lo;0;L;;;;;N;;;;;
|
||||
1E118;NYIAKENG PUACHUE HMONG LETTER YA;Lo;0;L;;;;;N;;;;;
|
||||
1E119;NYIAKENG PUACHUE HMONG LETTER NQA;Lo;0;L;;;;;N;;;;;
|
||||
1E11A;NYIAKENG PUACHUE HMONG LETTER PA;Lo;0;L;;;;;N;;;;;
|
||||
1E11B;NYIAKENG PUACHUE HMONG LETTER XYA;Lo;0;L;;;;;N;;;;;
|
||||
1E11C;NYIAKENG PUACHUE HMONG LETTER NPA;Lo;0;L;;;;;N;;;;;
|
||||
1E11D;NYIAKENG PUACHUE HMONG LETTER DLA;Lo;0;L;;;;;N;;;;;
|
||||
1E11E;NYIAKENG PUACHUE HMONG LETTER NPLA;Lo;0;L;;;;;N;;;;;
|
||||
1E11F;NYIAKENG PUACHUE HMONG LETTER HAH;Lo;0;L;;;;;N;;;;;
|
||||
1E120;NYIAKENG PUACHUE HMONG LETTER MLA;Lo;0;L;;;;;N;;;;;
|
||||
1E121;NYIAKENG PUACHUE HMONG LETTER PLA;Lo;0;L;;;;;N;;;;;
|
||||
1E122;NYIAKENG PUACHUE HMONG LETTER GA;Lo;0;L;;;;;N;;;;;
|
||||
1E123;NYIAKENG PUACHUE HMONG LETTER RRA;Lo;0;L;;;;;N;;;;;
|
||||
1E124;NYIAKENG PUACHUE HMONG LETTER A;Lo;0;L;;;;;N;;;;;
|
||||
1E125;NYIAKENG PUACHUE HMONG LETTER AA;Lo;0;L;;;;;N;;;;;
|
||||
1E126;NYIAKENG PUACHUE HMONG LETTER I;Lo;0;L;;;;;N;;;;;
|
||||
1E127;NYIAKENG PUACHUE HMONG LETTER U;Lo;0;L;;;;;N;;;;;
|
||||
1E128;NYIAKENG PUACHUE HMONG LETTER O;Lo;0;L;;;;;N;;;;;
|
||||
1E129;NYIAKENG PUACHUE HMONG LETTER OO;Lo;0;L;;;;;N;;;;;
|
||||
1E12A;NYIAKENG PUACHUE HMONG LETTER E;Lo;0;L;;;;;N;;;;;
|
||||
1E12B;NYIAKENG PUACHUE HMONG LETTER EE;Lo;0;L;;;;;N;;;;;
|
||||
1E12C;NYIAKENG PUACHUE HMONG LETTER W;Lo;0;L;;;;;N;;;;;
|
||||
1E130;NYIAKENG PUACHUE HMONG TONE-B;Mn;230;NSM;;;;;N;;;;;
|
||||
1E131;NYIAKENG PUACHUE HMONG TONE-M;Mn;230;NSM;;;;;N;;;;;
|
||||
1E132;NYIAKENG PUACHUE HMONG TONE-J;Mn;230;NSM;;;;;N;;;;;
|
||||
1E133;NYIAKENG PUACHUE HMONG TONE-V;Mn;230;NSM;;;;;N;;;;;
|
||||
1E134;NYIAKENG PUACHUE HMONG TONE-S;Mn;230;NSM;;;;;N;;;;;
|
||||
1E135;NYIAKENG PUACHUE HMONG TONE-G;Mn;230;NSM;;;;;N;;;;;
|
||||
1E136;NYIAKENG PUACHUE HMONG TONE-D;Mn;230;NSM;;;;;N;;;;;
|
||||
1E137;NYIAKENG PUACHUE HMONG SIGN FOR PERSON;Lm;0;L;;;;;N;;;;;
|
||||
1E138;NYIAKENG PUACHUE HMONG SIGN FOR THING;Lm;0;L;;;;;N;;;;;
|
||||
1E139;NYIAKENG PUACHUE HMONG SIGN FOR LOCATION;Lm;0;L;;;;;N;;;;;
|
||||
1E13A;NYIAKENG PUACHUE HMONG SIGN FOR ANIMAL;Lm;0;L;;;;;N;;;;;
|
||||
1E13B;NYIAKENG PUACHUE HMONG SIGN FOR INVERTEBRATE;Lm;0;L;;;;;N;;;;;
|
||||
1E13C;NYIAKENG PUACHUE HMONG SIGN XW XW;Lm;0;L;;;;;N;;;;;
|
||||
1E13D;NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER;Lm;0;L;;;;;N;;;;;
|
||||
1E140;NYIAKENG PUACHUE HMONG DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
|
||||
1E141;NYIAKENG PUACHUE HMONG DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
|
||||
1E142;NYIAKENG PUACHUE HMONG DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
|
||||
1E143;NYIAKENG PUACHUE HMONG DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
|
||||
1E144;NYIAKENG PUACHUE HMONG DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
|
||||
1E145;NYIAKENG PUACHUE HMONG DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
|
||||
1E146;NYIAKENG PUACHUE HMONG DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
|
||||
1E147;NYIAKENG PUACHUE HMONG DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
|
||||
1E148;NYIAKENG PUACHUE HMONG DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
|
||||
1E149;NYIAKENG PUACHUE HMONG DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
|
||||
1E14E;NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ;Lo;0;L;;;;;N;;;;;
|
||||
1E14F;NYIAKENG PUACHUE HMONG CIRCLED CA;So;0;L;;;;;N;;;;;
|
||||
1E2C0;WANCHO LETTER AA;Lo;0;L;;;;;N;;;;;
|
||||
1E2C1;WANCHO LETTER A;Lo;0;L;;;;;N;;;;;
|
||||
1E2C2;WANCHO LETTER BA;Lo;0;L;;;;;N;;;;;
|
||||
1E2C3;WANCHO LETTER CA;Lo;0;L;;;;;N;;;;;
|
||||
1E2C4;WANCHO LETTER DA;Lo;0;L;;;;;N;;;;;
|
||||
1E2C5;WANCHO LETTER GA;Lo;0;L;;;;;N;;;;;
|
||||
1E2C6;WANCHO LETTER YA;Lo;0;L;;;;;N;;;;;
|
||||
1E2C7;WANCHO LETTER PHA;Lo;0;L;;;;;N;;;;;
|
||||
1E2C8;WANCHO LETTER LA;Lo;0;L;;;;;N;;;;;
|
||||
1E2C9;WANCHO LETTER NA;Lo;0;L;;;;;N;;;;;
|
||||
1E2CA;WANCHO LETTER PA;Lo;0;L;;;;;N;;;;;
|
||||
1E2CB;WANCHO LETTER TA;Lo;0;L;;;;;N;;;;;
|
||||
1E2CC;WANCHO LETTER THA;Lo;0;L;;;;;N;;;;;
|
||||
1E2CD;WANCHO LETTER FA;Lo;0;L;;;;;N;;;;;
|
||||
1E2CE;WANCHO LETTER SA;Lo;0;L;;;;;N;;;;;
|
||||
1E2CF;WANCHO LETTER SHA;Lo;0;L;;;;;N;;;;;
|
||||
1E2D0;WANCHO LETTER JA;Lo;0;L;;;;;N;;;;;
|
||||
1E2D1;WANCHO LETTER ZA;Lo;0;L;;;;;N;;;;;
|
||||
1E2D2;WANCHO LETTER WA;Lo;0;L;;;;;N;;;;;
|
||||
1E2D3;WANCHO LETTER VA;Lo;0;L;;;;;N;;;;;
|
||||
1E2D4;WANCHO LETTER KA;Lo;0;L;;;;;N;;;;;
|
||||
1E2D5;WANCHO LETTER O;Lo;0;L;;;;;N;;;;;
|
||||
1E2D6;WANCHO LETTER AU;Lo;0;L;;;;;N;;;;;
|
||||
1E2D7;WANCHO LETTER RA;Lo;0;L;;;;;N;;;;;
|
||||
1E2D8;WANCHO LETTER MA;Lo;0;L;;;;;N;;;;;
|
||||
1E2D9;WANCHO LETTER KHA;Lo;0;L;;;;;N;;;;;
|
||||
1E2DA;WANCHO LETTER HA;Lo;0;L;;;;;N;;;;;
|
||||
1E2DB;WANCHO LETTER E;Lo;0;L;;;;;N;;;;;
|
||||
1E2DC;WANCHO LETTER I;Lo;0;L;;;;;N;;;;;
|
||||
1E2DD;WANCHO LETTER NGA;Lo;0;L;;;;;N;;;;;
|
||||
1E2DE;WANCHO LETTER U;Lo;0;L;;;;;N;;;;;
|
||||
1E2DF;WANCHO LETTER LLHA;Lo;0;L;;;;;N;;;;;
|
||||
1E2E0;WANCHO LETTER TSA;Lo;0;L;;;;;N;;;;;
|
||||
1E2E1;WANCHO LETTER TRA;Lo;0;L;;;;;N;;;;;
|
||||
1E2E2;WANCHO LETTER ONG;Lo;0;L;;;;;N;;;;;
|
||||
1E2E3;WANCHO LETTER AANG;Lo;0;L;;;;;N;;;;;
|
||||
1E2E4;WANCHO LETTER ANG;Lo;0;L;;;;;N;;;;;
|
||||
1E2E5;WANCHO LETTER ING;Lo;0;L;;;;;N;;;;;
|
||||
1E2E6;WANCHO LETTER ON;Lo;0;L;;;;;N;;;;;
|
||||
1E2E7;WANCHO LETTER EN;Lo;0;L;;;;;N;;;;;
|
||||
1E2E8;WANCHO LETTER AAN;Lo;0;L;;;;;N;;;;;
|
||||
1E2E9;WANCHO LETTER NYA;Lo;0;L;;;;;N;;;;;
|
||||
1E2EA;WANCHO LETTER UEN;Lo;0;L;;;;;N;;;;;
|
||||
1E2EB;WANCHO LETTER YIH;Lo;0;L;;;;;N;;;;;
|
||||
1E2EC;WANCHO TONE TUP;Mn;230;NSM;;;;;N;;;;;
|
||||
1E2ED;WANCHO TONE TUPNI;Mn;230;NSM;;;;;N;;;;;
|
||||
1E2EE;WANCHO TONE KOI;Mn;230;NSM;;;;;N;;;;;
|
||||
1E2EF;WANCHO TONE KOINI;Mn;230;NSM;;;;;N;;;;;
|
||||
1E2F0;WANCHO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
|
||||
1E2F1;WANCHO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
|
||||
1E2F2;WANCHO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
|
||||
1E2F3;WANCHO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
|
||||
1E2F4;WANCHO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
|
||||
1E2F5;WANCHO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
|
||||
1E2F6;WANCHO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
|
||||
1E2F7;WANCHO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
|
||||
1E2F8;WANCHO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
|
||||
1E2F9;WANCHO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
|
||||
1E2FF;WANCHO NGUN SIGN;Sc;0;ET;;;;;N;;;;;
|
||||
1E800;MENDE KIKAKUI SYLLABLE M001 KI;Lo;0;R;;;;;N;;;;;
|
||||
1E801;MENDE KIKAKUI SYLLABLE M002 KA;Lo;0;R;;;;;N;;;;;
|
||||
1E802;MENDE KIKAKUI SYLLABLE M003 KU;Lo;0;R;;;;;N;;;;;
|
||||
@ -29109,6 +29449,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
|
||||
1E948;ADLAM CONSONANT MODIFIER;Mn;230;NSM;;;;;N;;;;;
|
||||
1E949;ADLAM GEMINATE CONSONANT MODIFIER;Mn;230;NSM;;;;;N;;;;;
|
||||
1E94A;ADLAM NUKTA;Mn;7;NSM;;;;;N;;;;;
|
||||
1E94B;ADLAM NASALIZATION MARK;Lm;0;R;;;;;N;;;;;
|
||||
1E950;ADLAM DIGIT ZERO;Nd;0;R;;0;0;0;N;;;;;
|
||||
1E951;ADLAM DIGIT ONE;Nd;0;R;;1;1;1;N;;;;;
|
||||
1E952;ADLAM DIGIT TWO;Nd;0;R;;2;2;2;N;;;;;
|
||||
@ -29189,6 +29530,67 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
|
||||
1ECB2;INDIC SIYAQ NUMBER ALTERNATE TWO;No;0;AL;;;;2;N;;;;;
|
||||
1ECB3;INDIC SIYAQ NUMBER ALTERNATE TEN THOUSAND;No;0;AL;;;;10000;N;;;;;
|
||||
1ECB4;INDIC SIYAQ ALTERNATE LAKH MARK;No;0;AL;;;;100000;N;;;;;
|
||||
1ED01;OTTOMAN SIYAQ NUMBER ONE;No;0;AL;;;;1;N;;;;;
|
||||
1ED02;OTTOMAN SIYAQ NUMBER TWO;No;0;AL;;;;2;N;;;;;
|
||||
1ED03;OTTOMAN SIYAQ NUMBER THREE;No;0;AL;;;;3;N;;;;;
|
||||
1ED04;OTTOMAN SIYAQ NUMBER FOUR;No;0;AL;;;;4;N;;;;;
|
||||
1ED05;OTTOMAN SIYAQ NUMBER FIVE;No;0;AL;;;;5;N;;;;;
|
||||
1ED06;OTTOMAN SIYAQ NUMBER SIX;No;0;AL;;;;6;N;;;;;
|
||||
1ED07;OTTOMAN SIYAQ NUMBER SEVEN;No;0;AL;;;;7;N;;;;;
|
||||
1ED08;OTTOMAN SIYAQ NUMBER EIGHT;No;0;AL;;;;8;N;;;;;
|
||||
1ED09;OTTOMAN SIYAQ NUMBER NINE;No;0;AL;;;;9;N;;;;;
|
||||
1ED0A;OTTOMAN SIYAQ NUMBER TEN;No;0;AL;;;;10;N;;;;;
|
||||
1ED0B;OTTOMAN SIYAQ NUMBER TWENTY;No;0;AL;;;;20;N;;;;;
|
||||
1ED0C;OTTOMAN SIYAQ NUMBER THIRTY;No;0;AL;;;;30;N;;;;;
|
||||
1ED0D;OTTOMAN SIYAQ NUMBER FORTY;No;0;AL;;;;40;N;;;;;
|
||||
1ED0E;OTTOMAN SIYAQ NUMBER FIFTY;No;0;AL;;;;50;N;;;;;
|
||||
1ED0F;OTTOMAN SIYAQ NUMBER SIXTY;No;0;AL;;;;60;N;;;;;
|
||||
1ED10;OTTOMAN SIYAQ NUMBER SEVENTY;No;0;AL;;;;70;N;;;;;
|
||||
1ED11;OTTOMAN SIYAQ NUMBER EIGHTY;No;0;AL;;;;80;N;;;;;
|
||||
1ED12;OTTOMAN SIYAQ NUMBER NINETY;No;0;AL;;;;90;N;;;;;
|
||||
1ED13;OTTOMAN SIYAQ NUMBER ONE HUNDRED;No;0;AL;;;;100;N;;;;;
|
||||
1ED14;OTTOMAN SIYAQ NUMBER TWO HUNDRED;No;0;AL;;;;200;N;;;;;
|
||||
1ED15;OTTOMAN SIYAQ NUMBER THREE HUNDRED;No;0;AL;;;;300;N;;;;;
|
||||
1ED16;OTTOMAN SIYAQ NUMBER FOUR HUNDRED;No;0;AL;;;;400;N;;;;;
|
||||
1ED17;OTTOMAN SIYAQ NUMBER FIVE HUNDRED;No;0;AL;;;;500;N;;;;;
|
||||
1ED18;OTTOMAN SIYAQ NUMBER SIX HUNDRED;No;0;AL;;;;600;N;;;;;
|
||||
1ED19;OTTOMAN SIYAQ NUMBER SEVEN HUNDRED;No;0;AL;;;;700;N;;;;;
|
||||
1ED1A;OTTOMAN SIYAQ NUMBER EIGHT HUNDRED;No;0;AL;;;;800;N;;;;;
|
||||
1ED1B;OTTOMAN SIYAQ NUMBER NINE HUNDRED;No;0;AL;;;;900;N;;;;;
|
||||
1ED1C;OTTOMAN SIYAQ NUMBER ONE THOUSAND;No;0;AL;;;;1000;N;;;;;
|
||||
1ED1D;OTTOMAN SIYAQ NUMBER TWO THOUSAND;No;0;AL;;;;2000;N;;;;;
|
||||
1ED1E;OTTOMAN SIYAQ NUMBER THREE THOUSAND;No;0;AL;;;;3000;N;;;;;
|
||||
1ED1F;OTTOMAN SIYAQ NUMBER FOUR THOUSAND;No;0;AL;;;;4000;N;;;;;
|
||||
1ED20;OTTOMAN SIYAQ NUMBER FIVE THOUSAND;No;0;AL;;;;5000;N;;;;;
|
||||
1ED21;OTTOMAN SIYAQ NUMBER SIX THOUSAND;No;0;AL;;;;6000;N;;;;;
|
||||
1ED22;OTTOMAN SIYAQ NUMBER SEVEN THOUSAND;No;0;AL;;;;7000;N;;;;;
|
||||
1ED23;OTTOMAN SIYAQ NUMBER EIGHT THOUSAND;No;0;AL;;;;8000;N;;;;;
|
||||
1ED24;OTTOMAN SIYAQ NUMBER NINE THOUSAND;No;0;AL;;;;9000;N;;;;;
|
||||
1ED25;OTTOMAN SIYAQ NUMBER TEN THOUSAND;No;0;AL;;;;10000;N;;;;;
|
||||
1ED26;OTTOMAN SIYAQ NUMBER TWENTY THOUSAND;No;0;AL;;;;20000;N;;;;;
|
||||
1ED27;OTTOMAN SIYAQ NUMBER THIRTY THOUSAND;No;0;AL;;;;30000;N;;;;;
|
||||
1ED28;OTTOMAN SIYAQ NUMBER FORTY THOUSAND;No;0;AL;;;;40000;N;;;;;
|
||||
1ED29;OTTOMAN SIYAQ NUMBER FIFTY THOUSAND;No;0;AL;;;;50000;N;;;;;
|
||||
1ED2A;OTTOMAN SIYAQ NUMBER SIXTY THOUSAND;No;0;AL;;;;60000;N;;;;;
|
||||
1ED2B;OTTOMAN SIYAQ NUMBER SEVENTY THOUSAND;No;0;AL;;;;70000;N;;;;;
|
||||
1ED2C;OTTOMAN SIYAQ NUMBER EIGHTY THOUSAND;No;0;AL;;;;80000;N;;;;;
|
||||
1ED2D;OTTOMAN SIYAQ NUMBER NINETY THOUSAND;No;0;AL;;;;90000;N;;;;;
|
||||
1ED2E;OTTOMAN SIYAQ MARRATAN;So;0;AL;;;;;N;;;;;
|
||||
1ED2F;OTTOMAN SIYAQ ALTERNATE NUMBER TWO;No;0;AL;;;;2;N;;;;;
|
||||
1ED30;OTTOMAN SIYAQ ALTERNATE NUMBER THREE;No;0;AL;;;;3;N;;;;;
|
||||
1ED31;OTTOMAN SIYAQ ALTERNATE NUMBER FOUR;No;0;AL;;;;4;N;;;;;
|
||||
1ED32;OTTOMAN SIYAQ ALTERNATE NUMBER FIVE;No;0;AL;;;;5;N;;;;;
|
||||
1ED33;OTTOMAN SIYAQ ALTERNATE NUMBER SIX;No;0;AL;;;;6;N;;;;;
|
||||
1ED34;OTTOMAN SIYAQ ALTERNATE NUMBER SEVEN;No;0;AL;;;;7;N;;;;;
|
||||
1ED35;OTTOMAN SIYAQ ALTERNATE NUMBER EIGHT;No;0;AL;;;;8;N;;;;;
|
||||
1ED36;OTTOMAN SIYAQ ALTERNATE NUMBER NINE;No;0;AL;;;;9;N;;;;;
|
||||
1ED37;OTTOMAN SIYAQ ALTERNATE NUMBER TEN;No;0;AL;;;;10;N;;;;;
|
||||
1ED38;OTTOMAN SIYAQ ALTERNATE NUMBER FOUR HUNDRED;No;0;AL;;;;400;N;;;;;
|
||||
1ED39;OTTOMAN SIYAQ ALTERNATE NUMBER SIX HUNDRED;No;0;AL;;;;600;N;;;;;
|
||||
1ED3A;OTTOMAN SIYAQ ALTERNATE NUMBER TWO THOUSAND;No;0;AL;;;;2000;N;;;;;
|
||||
1ED3B;OTTOMAN SIYAQ ALTERNATE NUMBER TEN THOUSAND;No;0;AL;;;;10000;N;;;;;
|
||||
1ED3C;OTTOMAN SIYAQ FRACTION ONE HALF;No;0;AL;;;;1/2;N;;;;;
|
||||
1ED3D;OTTOMAN SIYAQ FRACTION ONE SIXTH;No;0;AL;;;;1/6;N;;;;;
|
||||
1EE00;ARABIC MATHEMATICAL ALEF;Lo;0;AL;<font> 0627;;;;N;;;;;
|
||||
1EE01;ARABIC MATHEMATICAL BEH;Lo;0;AL;<font> 0628;;;;N;;;;;
|
||||
1EE02;ARABIC MATHEMATICAL JEEM;Lo;0;AL;<font> 062C;;;;N;;;;;
|
||||
@ -29663,6 +30065,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
|
||||
1F169;NEGATIVE CIRCLED LATIN CAPITAL LETTER Z;So;0;L;;;;;N;;;;;
|
||||
1F16A;RAISED MC SIGN;So;0;ON;<super> 004D 0043;;;;N;;;;;
|
||||
1F16B;RAISED MD SIGN;So;0;ON;<super> 004D 0044;;;;N;;;;;
|
||||
1F16C;RAISED MR SIGN;So;0;ON;<super> 004D 0052;;;;N;;;;;
|
||||
1F170;NEGATIVE SQUARED LATIN CAPITAL LETTER A;So;0;L;;;;;N;;;;;
|
||||
1F171;NEGATIVE SQUARED LATIN CAPITAL LETTER B;So;0;L;;;;;N;;;;;
|
||||
1F172;NEGATIVE SQUARED LATIN CAPITAL LETTER C;So;0;L;;;;;N;;;;;
|
||||
@ -30795,6 +31198,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
|
||||
1F6D2;SHOPPING TROLLEY;So;0;ON;;;;;N;;;;;
|
||||
1F6D3;STUPA;So;0;ON;;;;;N;;;;;
|
||||
1F6D4;PAGODA;So;0;ON;;;;;N;;;;;
|
||||
1F6D5;HINDU TEMPLE;So;0;ON;;;;;N;;;;;
|
||||
1F6E0;HAMMER AND WRENCH;So;0;ON;;;;;N;;;;;
|
||||
1F6E1;SHIELD;So;0;ON;;;;;N;;;;;
|
||||
1F6E2;OIL DRUM;So;0;ON;;;;;N;;;;;
|
||||
@ -30818,6 +31222,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
|
||||
1F6F7;SLED;So;0;ON;;;;;N;;;;;
|
||||
1F6F8;FLYING SAUCER;So;0;ON;;;;;N;;;;;
|
||||
1F6F9;SKATEBOARD;So;0;ON;;;;;N;;;;;
|
||||
1F6FA;AUTO RICKSHAW;So;0;ON;;;;;N;;;;;
|
||||
1F700;ALCHEMICAL SYMBOL FOR QUINTESSENCE;So;0;ON;;;;;N;;;;;
|
||||
1F701;ALCHEMICAL SYMBOL FOR AIR;So;0;ON;;;;;N;;;;;
|
||||
1F702;ALCHEMICAL SYMBOL FOR FIRE;So;0;ON;;;;;N;;;;;
|
||||
@ -31023,6 +31428,18 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
|
||||
1F7D6;NEGATIVE CIRCLED TRIANGLE;So;0;ON;;;;;N;;;;;
|
||||
1F7D7;CIRCLED SQUARE;So;0;ON;;;;;N;;;;;
|
||||
1F7D8;NEGATIVE CIRCLED SQUARE;So;0;ON;;;;;N;;;;;
|
||||
1F7E0;LARGE ORANGE CIRCLE;So;0;ON;;;;;N;;;;;
|
||||
1F7E1;LARGE YELLOW CIRCLE;So;0;ON;;;;;N;;;;;
|
||||
1F7E2;LARGE GREEN CIRCLE;So;0;ON;;;;;N;;;;;
|
||||
1F7E3;LARGE PURPLE CIRCLE;So;0;ON;;;;;N;;;;;
|
||||
1F7E4;LARGE BROWN CIRCLE;So;0;ON;;;;;N;;;;;
|
||||
1F7E5;LARGE RED SQUARE;So;0;ON;;;;;N;;;;;
|
||||
1F7E6;LARGE BLUE SQUARE;So;0;ON;;;;;N;;;;;
|
||||
1F7E7;LARGE ORANGE SQUARE;So;0;ON;;;;;N;;;;;
|
||||
1F7E8;LARGE YELLOW SQUARE;So;0;ON;;;;;N;;;;;
|
||||
1F7E9;LARGE GREEN SQUARE;So;0;ON;;;;;N;;;;;
|
||||
1F7EA;LARGE PURPLE SQUARE;So;0;ON;;;;;N;;;;;
|
||||
1F7EB;LARGE BROWN SQUARE;So;0;ON;;;;;N;;;;;
|
||||
1F800;LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;
|
||||
1F801;UPWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;
|
||||
1F802;RIGHTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;
|
||||
@ -31183,6 +31600,9 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
|
||||
1F909;DOWNWARD FACING NOTCHED HOOK;So;0;ON;;;;;N;;;;;
|
||||
1F90A;DOWNWARD FACING HOOK WITH DOT;So;0;ON;;;;;N;;;;;
|
||||
1F90B;DOWNWARD FACING NOTCHED HOOK WITH DOT;So;0;ON;;;;;N;;;;;
|
||||
1F90D;WHITE HEART;So;0;ON;;;;;N;;;;;
|
||||
1F90E;BROWN HEART;So;0;ON;;;;;N;;;;;
|
||||
1F90F;PINCHING HAND;So;0;ON;;;;;N;;;;;
|
||||
1F910;ZIPPER-MOUTH FACE;So;0;ON;;;;;N;;;;;
|
||||
1F911;MONEY-MOUTH FACE;So;0;ON;;;;;N;;;;;
|
||||
1F912;FACE WITH THERMOMETER;So;0;ON;;;;;N;;;;;
|
||||
@ -31230,6 +31650,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
|
||||
1F93C;WRESTLERS;So;0;ON;;;;;N;;;;;
|
||||
1F93D;WATER POLO;So;0;ON;;;;;N;;;;;
|
||||
1F93E;HANDBALL;So;0;ON;;;;;N;;;;;
|
||||
1F93F;DIVING MASK;So;0;ON;;;;;N;;;;;
|
||||
1F940;WILTED FLOWER;So;0;ON;;;;;N;;;;;
|
||||
1F941;DRUM WITH DRUMSTICKS;So;0;ON;;;;;N;;;;;
|
||||
1F942;CLINKING GLASSES;So;0;ON;;;;;N;;;;;
|
||||
@ -31279,11 +31700,13 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
|
||||
1F96E;MOON CAKE;So;0;ON;;;;;N;;;;;
|
||||
1F96F;BAGEL;So;0;ON;;;;;N;;;;;
|
||||
1F970;SMILING FACE WITH SMILING EYES AND THREE HEARTS;So;0;ON;;;;;N;;;;;
|
||||
1F971;YAWNING FACE;So;0;ON;;;;;N;;;;;
|
||||
1F973;FACE WITH PARTY HORN AND PARTY HAT;So;0;ON;;;;;N;;;;;
|
||||
1F974;FACE WITH UNEVEN EYES AND WAVY MOUTH;So;0;ON;;;;;N;;;;;
|
||||
1F975;OVERHEATED FACE;So;0;ON;;;;;N;;;;;
|
||||
1F976;FREEZING FACE;So;0;ON;;;;;N;;;;;
|
||||
1F97A;FACE WITH PLEADING EYES;So;0;ON;;;;;N;;;;;
|
||||
1F97B;SARI;So;0;ON;;;;;N;;;;;
|
||||
1F97C;LAB COAT;So;0;ON;;;;;N;;;;;
|
||||
1F97D;GOGGLES;So;0;ON;;;;;N;;;;;
|
||||
1F97E;HIKING BOOT;So;0;ON;;;;;N;;;;;
|
||||
@ -31323,6 +31746,14 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
|
||||
1F9A0;MICROBE;So;0;ON;;;;;N;;;;;
|
||||
1F9A1;BADGER;So;0;ON;;;;;N;;;;;
|
||||
1F9A2;SWAN;So;0;ON;;;;;N;;;;;
|
||||
1F9A5;SLOTH;So;0;ON;;;;;N;;;;;
|
||||
1F9A6;OTTER;So;0;ON;;;;;N;;;;;
|
||||
1F9A7;ORANGUTAN;So;0;ON;;;;;N;;;;;
|
||||
1F9A8;SKUNK;So;0;ON;;;;;N;;;;;
|
||||
1F9A9;FLAMINGO;So;0;ON;;;;;N;;;;;
|
||||
1F9AA;OYSTER;So;0;ON;;;;;N;;;;;
|
||||
1F9AE;GUIDE DOG;So;0;ON;;;;;N;;;;;
|
||||
1F9AF;PROBING CANE;So;0;ON;;;;;N;;;;;
|
||||
1F9B0;EMOJI COMPONENT RED HAIR;So;0;ON;;;;;N;;;;;
|
||||
1F9B1;EMOJI COMPONENT CURLY HAIR;So;0;ON;;;;;N;;;;;
|
||||
1F9B2;EMOJI COMPONENT BALD;So;0;ON;;;;;N;;;;;
|
||||
@ -31333,9 +31764,26 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
|
||||
1F9B7;TOOTH;So;0;ON;;;;;N;;;;;
|
||||
1F9B8;SUPERHERO;So;0;ON;;;;;N;;;;;
|
||||
1F9B9;SUPERVILLAIN;So;0;ON;;;;;N;;;;;
|
||||
1F9BA;SAFETY VEST;So;0;ON;;;;;N;;;;;
|
||||
1F9BB;EAR WITH HEARING AID;So;0;ON;;;;;N;;;;;
|
||||
1F9BC;MOTORIZED WHEELCHAIR;So;0;ON;;;;;N;;;;;
|
||||
1F9BD;MANUAL WHEELCHAIR;So;0;ON;;;;;N;;;;;
|
||||
1F9BE;MECHANICAL ARM;So;0;ON;;;;;N;;;;;
|
||||
1F9BF;MECHANICAL LEG;So;0;ON;;;;;N;;;;;
|
||||
1F9C0;CHEESE WEDGE;So;0;ON;;;;;N;;;;;
|
||||
1F9C1;CUPCAKE;So;0;ON;;;;;N;;;;;
|
||||
1F9C2;SALT SHAKER;So;0;ON;;;;;N;;;;;
|
||||
1F9C3;BEVERAGE BOX;So;0;ON;;;;;N;;;;;
|
||||
1F9C4;GARLIC;So;0;ON;;;;;N;;;;;
|
||||
1F9C5;ONION;So;0;ON;;;;;N;;;;;
|
||||
1F9C6;FALAFEL;So;0;ON;;;;;N;;;;;
|
||||
1F9C7;WAFFLE;So;0;ON;;;;;N;;;;;
|
||||
1F9C8;BUTTER;So;0;ON;;;;;N;;;;;
|
||||
1F9C9;MATE DRINK;So;0;ON;;;;;N;;;;;
|
||||
1F9CA;ICE CUBE;So;0;ON;;;;;N;;;;;
|
||||
1F9CD;STANDING PERSON;So;0;ON;;;;;N;;;;;
|
||||
1F9CE;KNEELING PERSON;So;0;ON;;;;;N;;;;;
|
||||
1F9CF;DEAF PERSON;So;0;ON;;;;;N;;;;;
|
||||
1F9D0;FACE WITH MONOCLE;So;0;ON;;;;;N;;;;;
|
||||
1F9D1;ADULT;So;0;ON;;;;;N;;;;;
|
||||
1F9D2;CHILD;So;0;ON;;;;;N;;;;;
|
||||
@ -31384,6 +31832,90 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
|
||||
1F9FD;SPONGE;So;0;ON;;;;;N;;;;;
|
||||
1F9FE;RECEIPT;So;0;ON;;;;;N;;;;;
|
||||
1F9FF;NAZAR AMULET;So;0;ON;;;;;N;;;;;
|
||||
1FA00;NEUTRAL CHESS KING;So;0;ON;;;;;N;;;;;
|
||||
1FA01;NEUTRAL CHESS QUEEN;So;0;ON;;;;;N;;;;;
|
||||
1FA02;NEUTRAL CHESS ROOK;So;0;ON;;;;;N;;;;;
|
||||
1FA03;NEUTRAL CHESS BISHOP;So;0;ON;;;;;N;;;;;
|
||||
1FA04;NEUTRAL CHESS KNIGHT;So;0;ON;;;;;N;;;;;
|
||||
1FA05;NEUTRAL CHESS PAWN;So;0;ON;;;;;N;;;;;
|
||||
1FA06;WHITE CHESS KNIGHT ROTATED FORTY-FIVE DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA07;BLACK CHESS KNIGHT ROTATED FORTY-FIVE DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA08;NEUTRAL CHESS KNIGHT ROTATED FORTY-FIVE DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA09;WHITE CHESS KING ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA0A;WHITE CHESS QUEEN ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA0B;WHITE CHESS ROOK ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA0C;WHITE CHESS BISHOP ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA0D;WHITE CHESS KNIGHT ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA0E;WHITE CHESS PAWN ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA0F;BLACK CHESS KING ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA10;BLACK CHESS QUEEN ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA11;BLACK CHESS ROOK ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA12;BLACK CHESS BISHOP ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA13;BLACK CHESS KNIGHT ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA14;BLACK CHESS PAWN ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA15;NEUTRAL CHESS KING ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA16;NEUTRAL CHESS QUEEN ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA17;NEUTRAL CHESS ROOK ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA18;NEUTRAL CHESS BISHOP ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA19;NEUTRAL CHESS KNIGHT ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA1A;NEUTRAL CHESS PAWN ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA1B;WHITE CHESS KNIGHT ROTATED ONE HUNDRED THIRTY-FIVE DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA1C;BLACK CHESS KNIGHT ROTATED ONE HUNDRED THIRTY-FIVE DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA1D;NEUTRAL CHESS KNIGHT ROTATED ONE HUNDRED THIRTY-FIVE DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA1E;WHITE CHESS TURNED KING;So;0;ON;;;;;N;;;;;
|
||||
1FA1F;WHITE CHESS TURNED QUEEN;So;0;ON;;;;;N;;;;;
|
||||
1FA20;WHITE CHESS TURNED ROOK;So;0;ON;;;;;N;;;;;
|
||||
1FA21;WHITE CHESS TURNED BISHOP;So;0;ON;;;;;N;;;;;
|
||||
1FA22;WHITE CHESS TURNED KNIGHT;So;0;ON;;;;;N;;;;;
|
||||
1FA23;WHITE CHESS TURNED PAWN;So;0;ON;;;;;N;;;;;
|
||||
1FA24;BLACK CHESS TURNED KING;So;0;ON;;;;;N;;;;;
|
||||
1FA25;BLACK CHESS TURNED QUEEN;So;0;ON;;;;;N;;;;;
|
||||
1FA26;BLACK CHESS TURNED ROOK;So;0;ON;;;;;N;;;;;
|
||||
1FA27;BLACK CHESS TURNED BISHOP;So;0;ON;;;;;N;;;;;
|
||||
1FA28;BLACK CHESS TURNED KNIGHT;So;0;ON;;;;;N;;;;;
|
||||
1FA29;BLACK CHESS TURNED PAWN;So;0;ON;;;;;N;;;;;
|
||||
1FA2A;NEUTRAL CHESS TURNED KING;So;0;ON;;;;;N;;;;;
|
||||
1FA2B;NEUTRAL CHESS TURNED QUEEN;So;0;ON;;;;;N;;;;;
|
||||
1FA2C;NEUTRAL CHESS TURNED ROOK;So;0;ON;;;;;N;;;;;
|
||||
1FA2D;NEUTRAL CHESS TURNED BISHOP;So;0;ON;;;;;N;;;;;
|
||||
1FA2E;NEUTRAL CHESS TURNED KNIGHT;So;0;ON;;;;;N;;;;;
|
||||
1FA2F;NEUTRAL CHESS TURNED PAWN;So;0;ON;;;;;N;;;;;
|
||||
1FA30;WHITE CHESS KNIGHT ROTATED TWO HUNDRED TWENTY-FIVE DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA31;BLACK CHESS KNIGHT ROTATED TWO HUNDRED TWENTY-FIVE DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA32;NEUTRAL CHESS KNIGHT ROTATED TWO HUNDRED TWENTY-FIVE DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA33;WHITE CHESS KING ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA34;WHITE CHESS QUEEN ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA35;WHITE CHESS ROOK ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA36;WHITE CHESS BISHOP ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA37;WHITE CHESS KNIGHT ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA38;WHITE CHESS PAWN ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA39;BLACK CHESS KING ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA3A;BLACK CHESS QUEEN ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA3B;BLACK CHESS ROOK ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA3C;BLACK CHESS BISHOP ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA3D;BLACK CHESS KNIGHT ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA3E;BLACK CHESS PAWN ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA3F;NEUTRAL CHESS KING ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA40;NEUTRAL CHESS QUEEN ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA41;NEUTRAL CHESS ROOK ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA42;NEUTRAL CHESS BISHOP ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA43;NEUTRAL CHESS KNIGHT ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA44;NEUTRAL CHESS PAWN ROTATED TWO HUNDRED SEVENTY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA45;WHITE CHESS KNIGHT ROTATED THREE HUNDRED FIFTEEN DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA46;BLACK CHESS KNIGHT ROTATED THREE HUNDRED FIFTEEN DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA47;NEUTRAL CHESS KNIGHT ROTATED THREE HUNDRED FIFTEEN DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA48;WHITE CHESS EQUIHOPPER;So;0;ON;;;;;N;;;;;
|
||||
1FA49;BLACK CHESS EQUIHOPPER;So;0;ON;;;;;N;;;;;
|
||||
1FA4A;NEUTRAL CHESS EQUIHOPPER;So;0;ON;;;;;N;;;;;
|
||||
1FA4B;WHITE CHESS EQUIHOPPER ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA4C;BLACK CHESS EQUIHOPPER ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA4D;NEUTRAL CHESS EQUIHOPPER ROTATED NINETY DEGREES;So;0;ON;;;;;N;;;;;
|
||||
1FA4E;WHITE CHESS KNIGHT-QUEEN;So;0;ON;;;;;N;;;;;
|
||||
1FA4F;WHITE CHESS KNIGHT-ROOK;So;0;ON;;;;;N;;;;;
|
||||
1FA50;WHITE CHESS KNIGHT-BISHOP;So;0;ON;;;;;N;;;;;
|
||||
1FA51;BLACK CHESS KNIGHT-QUEEN;So;0;ON;;;;;N;;;;;
|
||||
1FA52;BLACK CHESS KNIGHT-ROOK;So;0;ON;;;;;N;;;;;
|
||||
1FA53;BLACK CHESS KNIGHT-BISHOP;So;0;ON;;;;;N;;;;;
|
||||
1FA60;XIANGQI RED GENERAL;So;0;ON;;;;;N;;;;;
|
||||
1FA61;XIANGQI RED MANDARIN;So;0;ON;;;;;N;;;;;
|
||||
1FA62;XIANGQI RED ELEPHANT;So;0;ON;;;;;N;;;;;
|
||||
@ -31398,6 +31930,22 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
|
||||
1FA6B;XIANGQI BLACK CHARIOT;So;0;ON;;;;;N;;;;;
|
||||
1FA6C;XIANGQI BLACK CANNON;So;0;ON;;;;;N;;;;;
|
||||
1FA6D;XIANGQI BLACK SOLDIER;So;0;ON;;;;;N;;;;;
|
||||
1FA70;BALLET SHOES;So;0;ON;;;;;N;;;;;
|
||||
1FA71;ONE-PIECE SWIMSUIT;So;0;ON;;;;;N;;;;;
|
||||
1FA72;BRIEFS;So;0;ON;;;;;N;;;;;
|
||||
1FA73;SHORTS;So;0;ON;;;;;N;;;;;
|
||||
1FA78;DROP OF BLOOD;So;0;ON;;;;;N;;;;;
|
||||
1FA79;ADHESIVE BANDAGE;So;0;ON;;;;;N;;;;;
|
||||
1FA7A;STETHOSCOPE;So;0;ON;;;;;N;;;;;
|
||||
1FA80;YO-YO;So;0;ON;;;;;N;;;;;
|
||||
1FA81;KITE;So;0;ON;;;;;N;;;;;
|
||||
1FA82;PARACHUTE;So;0;ON;;;;;N;;;;;
|
||||
1FA90;RINGED PLANET;So;0;ON;;;;;N;;;;;
|
||||
1FA91;CHAIR;So;0;ON;;;;;N;;;;;
|
||||
1FA92;RAZOR;So;0;ON;;;;;N;;;;;
|
||||
1FA93;AXE;So;0;ON;;;;;N;;;;;
|
||||
1FA94;DIYA LAMP;So;0;ON;;;;;N;;;;;
|
||||
1FA95;BANJO;So;0;ON;;;;;N;;;;;
|
||||
20000;<CJK Ideograph Extension B, First>;Lo;0;L;;;;;N;;;;;
|
||||
2A6D6;<CJK Ideograph Extension B, Last>;Lo;0;L;;;;;N;;;;;
|
||||
2A700;<CJK Ideograph Extension C, First>;Lo;0;L;;;;;N;;;;;
|
||||
|
@ -1 +1 @@
|
||||
11.0.0
|
||||
12.1.0
|
||||
|
@ -1,10 +1,11 @@
|
||||
# GraphemeBreakProperty-8.0.0.txt
|
||||
# Date: 2015-02-13, 13:47:14 GMT [MD]
|
||||
# GraphemeBreakProperty-12.1.0.txt
|
||||
# Date: 2019-03-10, 10:53:12 GMT
|
||||
# Copyright (c) 2019 Unicode, Inc.
|
||||
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
|
||||
# For terms of use, see http://www.unicode.org/terms_of_use.html
|
||||
#
|
||||
# Unicode Character Database
|
||||
# Copyright (c) 1991-2015 Unicode, Inc.
|
||||
# For terms of use, see http://www.unicode.org/terms_of_use.html
|
||||
# For documentation, see http://www.unicode.org/reports/tr44/
|
||||
# For documentation, see http://www.unicode.org/reports/tr44/
|
||||
|
||||
# ================================================
|
||||
|
||||
@ -17,6 +18,22 @@
|
||||
|
||||
# ================================================
|
||||
|
||||
0600..0605 ; Prepend # Cf [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE
|
||||
06DD ; Prepend # Cf ARABIC END OF AYAH
|
||||
070F ; Prepend # Cf SYRIAC ABBREVIATION MARK
|
||||
08E2 ; Prepend # Cf ARABIC DISPUTED END OF AYAH
|
||||
0D4E ; Prepend # Lo MALAYALAM LETTER DOT REPH
|
||||
110BD ; Prepend # Cf KAITHI NUMBER SIGN
|
||||
110CD ; Prepend # Cf KAITHI NUMBER SIGN ABOVE
|
||||
111C2..111C3 ; Prepend # Lo [2] SHARADA SIGN JIHVAMULIYA..SHARADA SIGN UPADHMANIYA
|
||||
11A3A ; Prepend # Lo ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA
|
||||
11A84..11A89 ; Prepend # Lo [6] SOYOMBO SIGN JIHVAMULIYA..SOYOMBO CLUSTER-INITIAL LETTER SA
|
||||
11D46 ; Prepend # Lo MASARAM GONDI REPHA
|
||||
|
||||
# Total code points: 22
|
||||
|
||||
# ================================================
|
||||
|
||||
000D ; CR # Cc <control-000D>
|
||||
|
||||
# Total code points: 1
|
||||
@ -34,10 +51,7 @@
|
||||
000E..001F ; Control # Cc [18] <control-000E>..<control-001F>
|
||||
007F..009F ; Control # Cc [33] <control-007F>..<control-009F>
|
||||
00AD ; Control # Cf SOFT HYPHEN
|
||||
0600..0605 ; Control # Cf [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE
|
||||
061C ; Control # Cf ARABIC LETTER MARK
|
||||
06DD ; Control # Cf ARABIC END OF AYAH
|
||||
070F ; Control # Cf SYRIAC ABBREVIATION MARK
|
||||
180E ; Control # Cf MONGOLIAN VOWEL SEPARATOR
|
||||
200B ; Control # Cf ZERO WIDTH SPACE
|
||||
200E..200F ; Control # Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK
|
||||
@ -47,21 +61,19 @@
|
||||
2060..2064 ; Control # Cf [5] WORD JOINER..INVISIBLE PLUS
|
||||
2065 ; Control # Cn <reserved-2065>
|
||||
2066..206F ; Control # Cf [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES
|
||||
D800..DFFF ; Control # Cs [2048] <surrogate-D800>..<surrogate-DFFF>
|
||||
FEFF ; Control # Cf ZERO WIDTH NO-BREAK SPACE
|
||||
FFF0..FFF8 ; Control # Cn [9] <reserved-FFF0>..<reserved-FFF8>
|
||||
FFF9..FFFB ; Control # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR
|
||||
110BD ; Control # Cf KAITHI NUMBER SIGN
|
||||
13430..13438 ; Control # Cf [9] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END SEGMENT
|
||||
1BCA0..1BCA3 ; Control # Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP
|
||||
1D173..1D17A ; Control # Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
|
||||
E0000 ; Control # Cn <reserved-E0000>
|
||||
E0001 ; Control # Cf LANGUAGE TAG
|
||||
E0002..E001F ; Control # Cn [30] <reserved-E0002>..<reserved-E001F>
|
||||
E0020..E007F ; Control # Cf [96] TAG SPACE..CANCEL TAG
|
||||
E0080..E00FF ; Control # Cn [128] <reserved-E0080>..<reserved-E00FF>
|
||||
E01F0..E0FFF ; Control # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
|
||||
|
||||
# Total code points: 6030
|
||||
# Total code points: 3886
|
||||
|
||||
# ================================================
|
||||
|
||||
@ -84,11 +96,13 @@ E01F0..E0FFF ; Control # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
|
||||
0730..074A ; Extend # Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH
|
||||
07A6..07B0 ; Extend # Mn [11] THAANA ABAFILI..THAANA SUKUN
|
||||
07EB..07F3 ; Extend # Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE
|
||||
07FD ; Extend # Mn NKO DANTAYALAN
|
||||
0816..0819 ; Extend # Mn [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH
|
||||
081B..0823 ; Extend # Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A
|
||||
0825..0827 ; Extend # Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U
|
||||
0829..082D ; Extend # Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA
|
||||
0859..085B ; Extend # Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
|
||||
08D3..08E1 ; Extend # Mn [15] ARABIC SMALL LOW WAW..ARABIC SMALL HIGH SIGN SAFHA
|
||||
08E3..0902 ; Extend # Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA
|
||||
093A ; Extend # Mn DEVANAGARI VOWEL SIGN OE
|
||||
093C ; Extend # Mn DEVANAGARI SIGN NUKTA
|
||||
@ -103,6 +117,7 @@ E01F0..E0FFF ; Control # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
|
||||
09CD ; Extend # Mn BENGALI SIGN VIRAMA
|
||||
09D7 ; Extend # Mc BENGALI AU LENGTH MARK
|
||||
09E2..09E3 ; Extend # Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL
|
||||
09FE ; Extend # Mn BENGALI SANDHI MARK
|
||||
0A01..0A02 ; Extend # Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI
|
||||
0A3C ; Extend # Mn GURMUKHI SIGN NUKTA
|
||||
0A41..0A42 ; Extend # Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU
|
||||
@ -117,6 +132,7 @@ E01F0..E0FFF ; Control # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
|
||||
0AC7..0AC8 ; Extend # Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI
|
||||
0ACD ; Extend # Mn GUJARATI SIGN VIRAMA
|
||||
0AE2..0AE3 ; Extend # Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL
|
||||
0AFA..0AFF ; Extend # Mn [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE
|
||||
0B01 ; Extend # Mn ORIYA SIGN CANDRABINDU
|
||||
0B3C ; Extend # Mn ORIYA SIGN NUKTA
|
||||
0B3E ; Extend # Mc ORIYA VOWEL SIGN AA
|
||||
@ -132,6 +148,7 @@ E01F0..E0FFF ; Control # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
|
||||
0BCD ; Extend # Mn TAMIL SIGN VIRAMA
|
||||
0BD7 ; Extend # Mc TAMIL AU LENGTH MARK
|
||||
0C00 ; Extend # Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE
|
||||
0C04 ; Extend # Mn TELUGU SIGN COMBINING ANUSVARA ABOVE
|
||||
0C3E..0C40 ; Extend # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II
|
||||
0C46..0C48 ; Extend # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI
|
||||
0C4A..0C4D ; Extend # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA
|
||||
@ -145,7 +162,8 @@ E01F0..E0FFF ; Control # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
|
||||
0CCC..0CCD ; Extend # Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA
|
||||
0CD5..0CD6 ; Extend # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
|
||||
0CE2..0CE3 ; Extend # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
|
||||
0D01 ; Extend # Mn MALAYALAM SIGN CANDRABINDU
|
||||
0D00..0D01 ; Extend # Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU
|
||||
0D3B..0D3C ; Extend # Mn [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA
|
||||
0D3E ; Extend # Mc MALAYALAM VOWEL SIGN AA
|
||||
0D41..0D44 ; Extend # Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR
|
||||
0D4D ; Extend # Mn MALAYALAM SIGN VIRAMA
|
||||
@ -160,8 +178,7 @@ E01F0..E0FFF ; Control # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
|
||||
0E34..0E3A ; Extend # Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU
|
||||
0E47..0E4E ; Extend # Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN
|
||||
0EB1 ; Extend # Mn LAO VOWEL SIGN MAI KAN
|
||||
0EB4..0EB9 ; Extend # Mn [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU
|
||||
0EBB..0EBC ; Extend # Mn [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO
|
||||
0EB4..0EBC ; Extend # Mn [9] LAO VOWEL SIGN I..LAO SEMIVOWEL SIGN LO
|
||||
0EC8..0ECD ; Extend # Mn [6] LAO TONE MAI EK..LAO NIGGAHITA
|
||||
0F18..0F19 ; Extend # Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
|
||||
0F35 ; Extend # Mn TIBETAN MARK NGAS BZUNG NYI ZLA
|
||||
@ -195,6 +212,7 @@ E01F0..E0FFF ; Control # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
|
||||
17C9..17D3 ; Extend # Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
|
||||
17DD ; Extend # Mn KHMER SIGN ATTHACAN
|
||||
180B..180D ; Extend # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
|
||||
1885..1886 ; Extend # Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
|
||||
18A9 ; Extend # Mn MONGOLIAN LETTER ALI GALI DAGALGA
|
||||
1920..1922 ; Extend # Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
|
||||
1927..1928 ; Extend # Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O
|
||||
@ -213,6 +231,7 @@ E01F0..E0FFF ; Control # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
|
||||
1ABE ; Extend # Me COMBINING PARENTHESES OVERLAY
|
||||
1B00..1B03 ; Extend # Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG
|
||||
1B34 ; Extend # Mn BALINESE SIGN REREKAN
|
||||
1B35 ; Extend # Mc BALINESE VOWEL SIGN TEDUNG
|
||||
1B36..1B3A ; Extend # Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA
|
||||
1B3C ; Extend # Mn BALINESE VOWEL SIGN LA LENGA
|
||||
1B42 ; Extend # Mn BALINESE VOWEL SIGN PEPET
|
||||
@ -233,9 +252,9 @@ E01F0..E0FFF ; Control # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
|
||||
1CED ; Extend # Mn VEDIC SIGN TIRYAK
|
||||
1CF4 ; Extend # Mn VEDIC TONE CANDRA ABOVE
|
||||
1CF8..1CF9 ; Extend # Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
|
||||
1DC0..1DF5 ; Extend # Mn [54] COMBINING DOTTED GRAVE ACCENT..COMBINING UP TACK ABOVE
|
||||
1DFC..1DFF ; Extend # Mn [4] COMBINING DOUBLE INVERTED BREVE BELOW..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
|
||||
200C..200D ; Extend # Cf [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER
|
||||
1DC0..1DF9 ; Extend # Mn [58] COMBINING DOTTED GRAVE ACCENT..COMBINING WIDE INVERTED BRIDGE BELOW
|
||||
1DFB..1DFF ; Extend # Mn [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
|
||||
200C ; Extend # Cf ZERO WIDTH NON-JOINER
|
||||
20D0..20DC ; Extend # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
|
||||
20DD..20E0 ; Extend # Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
|
||||
20E1 ; Extend # Mn COMBINING LEFT RIGHT ARROW ABOVE
|
||||
@ -256,14 +275,15 @@ A802 ; Extend # Mn SYLOTI NAGRI SIGN DVISVARA
|
||||
A806 ; Extend # Mn SYLOTI NAGRI SIGN HASANTA
|
||||
A80B ; Extend # Mn SYLOTI NAGRI SIGN ANUSVARA
|
||||
A825..A826 ; Extend # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
|
||||
A8C4 ; Extend # Mn SAURASHTRA SIGN VIRAMA
|
||||
A8C4..A8C5 ; Extend # Mn [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU
|
||||
A8E0..A8F1 ; Extend # Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
|
||||
A8FF ; Extend # Mn DEVANAGARI VOWEL SIGN AY
|
||||
A926..A92D ; Extend # Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU
|
||||
A947..A951 ; Extend # Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R
|
||||
A980..A982 ; Extend # Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR
|
||||
A9B3 ; Extend # Mn JAVANESE SIGN CECAK TELU
|
||||
A9B6..A9B9 ; Extend # Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT
|
||||
A9BC ; Extend # Mn JAVANESE VOWEL SIGN PEPET
|
||||
A9BC..A9BD ; Extend # Mn [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET
|
||||
A9E5 ; Extend # Mn MYANMAR SIGN SHAN SAW
|
||||
AA29..AA2E ; Extend # Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE
|
||||
AA31..AA32 ; Extend # Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE
|
||||
@ -294,6 +314,8 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT
|
||||
10A38..10A3A ; Extend # Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW
|
||||
10A3F ; Extend # Mn KHAROSHTHI VIRAMA
|
||||
10AE5..10AE6 ; Extend # Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW
|
||||
10D24..10D27 ; Extend # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
|
||||
10F46..10F50 ; Extend # Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW
|
||||
11001 ; Extend # Mn BRAHMI SIGN ANUSVARA
|
||||
11038..11046 ; Extend # Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA
|
||||
1107F..11081 ; Extend # Mn [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA
|
||||
@ -305,19 +327,24 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT
|
||||
11173 ; Extend # Mn MAHAJANI SIGN NUKTA
|
||||
11180..11181 ; Extend # Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA
|
||||
111B6..111BE ; Extend # Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O
|
||||
111CA..111CC ; Extend # Mn [3] SHARADA SIGN NUKTA..SHARADA EXTRA SHORT VOWEL MARK
|
||||
111C9..111CC ; Extend # Mn [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK
|
||||
1122F..11231 ; Extend # Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI
|
||||
11234 ; Extend # Mn KHOJKI SIGN ANUSVARA
|
||||
11236..11237 ; Extend # Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA
|
||||
1123E ; Extend # Mn KHOJKI SIGN SUKUN
|
||||
112DF ; Extend # Mn KHUDAWADI SIGN ANUSVARA
|
||||
112E3..112EA ; Extend # Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA
|
||||
11300..11301 ; Extend # Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU
|
||||
1133C ; Extend # Mn GRANTHA SIGN NUKTA
|
||||
1133B..1133C ; Extend # Mn [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA
|
||||
1133E ; Extend # Mc GRANTHA VOWEL SIGN AA
|
||||
11340 ; Extend # Mn GRANTHA VOWEL SIGN II
|
||||
11357 ; Extend # Mc GRANTHA AU LENGTH MARK
|
||||
11366..1136C ; Extend # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
|
||||
11370..11374 ; Extend # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
|
||||
11438..1143F ; Extend # Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
|
||||
11442..11444 ; Extend # Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA
|
||||
11446 ; Extend # Mn NEWA SIGN NUKTA
|
||||
1145E ; Extend # Mn NEWA SANDHI MARK
|
||||
114B0 ; Extend # Mc TIRHUTA VOWEL SIGN AA
|
||||
114B3..114B8 ; Extend # Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
|
||||
114BA ; Extend # Mn TIRHUTA VOWEL SIGN SHORT E
|
||||
@ -339,8 +366,38 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT
|
||||
1171D..1171F ; Extend # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
|
||||
11722..11725 ; Extend # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
|
||||
11727..1172B ; Extend # Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER
|
||||
1182F..11837 ; Extend # Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA
|
||||
11839..1183A ; Extend # Mn [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA
|
||||
119D4..119D7 ; Extend # Mn [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR
|
||||
119DA..119DB ; Extend # Mn [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI
|
||||
119E0 ; Extend # Mn NANDINAGARI SIGN VIRAMA
|
||||
11A01..11A0A ; Extend # Mn [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK
|
||||
11A33..11A38 ; Extend # Mn [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA
|
||||
11A3B..11A3E ; Extend # Mn [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA
|
||||
11A47 ; Extend # Mn ZANABAZAR SQUARE SUBJOINER
|
||||
11A51..11A56 ; Extend # Mn [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE
|
||||
11A59..11A5B ; Extend # Mn [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK
|
||||
11A8A..11A96 ; Extend # Mn [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA
|
||||
11A98..11A99 ; Extend # Mn [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER
|
||||
11C30..11C36 ; Extend # Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
|
||||
11C38..11C3D ; Extend # Mn [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
|
||||
11C3F ; Extend # Mn BHAIKSUKI SIGN VIRAMA
|
||||
11C92..11CA7 ; Extend # Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
|
||||
11CAA..11CB0 ; Extend # Mn [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
|
||||
11CB2..11CB3 ; Extend # Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
|
||||
11CB5..11CB6 ; Extend # Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
|
||||
11D31..11D36 ; Extend # Mn [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R
|
||||
11D3A ; Extend # Mn MASARAM GONDI VOWEL SIGN E
|
||||
11D3C..11D3D ; Extend # Mn [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O
|
||||
11D3F..11D45 ; Extend # Mn [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA
|
||||
11D47 ; Extend # Mn MASARAM GONDI RA-KARA
|
||||
11D90..11D91 ; Extend # Mn [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI
|
||||
11D95 ; Extend # Mn GUNJALA GONDI SIGN ANUSVARA
|
||||
11D97 ; Extend # Mn GUNJALA GONDI VIRAMA
|
||||
11EF3..11EF4 ; Extend # Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U
|
||||
16AF0..16AF4 ; Extend # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
|
||||
16B30..16B36 ; Extend # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
|
||||
16F4F ; Extend # Mn MIAO SIGN CONSONANT MODIFIER BAR
|
||||
16F8F..16F92 ; Extend # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW
|
||||
1BC9D..1BC9E ; Extend # Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK
|
||||
1D165 ; Extend # Mc MUSICAL SYMBOL COMBINING STEM
|
||||
@ -356,10 +413,20 @@ FF9E..FF9F ; Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT
|
||||
1DA84 ; Extend # Mn SIGNWRITING LOCATION HEAD NECK
|
||||
1DA9B..1DA9F ; Extend # Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6
|
||||
1DAA1..1DAAF ; Extend # Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16
|
||||
1E000..1E006 ; Extend # Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
|
||||
1E008..1E018 ; Extend # Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
|
||||
1E01B..1E021 ; Extend # Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
|
||||
1E023..1E024 ; Extend # Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
|
||||
1E026..1E02A ; Extend # Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
|
||||
1E130..1E136 ; Extend # Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D
|
||||
1E2EC..1E2EF ; Extend # Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI
|
||||
1E8D0..1E8D6 ; Extend # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
|
||||
1E944..1E94A ; Extend # Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
|
||||
1F3FB..1F3FF ; Extend # Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6
|
||||
E0020..E007F ; Extend # Cf [96] TAG SPACE..CANCEL TAG
|
||||
E0100..E01EF ; Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
|
||||
|
||||
# Total code points: 1610
|
||||
# Total code points: 1970
|
||||
|
||||
# ================================================
|
||||
|
||||
@ -428,7 +495,6 @@ E0100..E01EF ; Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
|
||||
1A57 ; SpacingMark # Mc TAI THAM CONSONANT SIGN LA TANG LAI
|
||||
1A6D..1A72 ; SpacingMark # Mc [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI
|
||||
1B04 ; SpacingMark # Mc BALINESE SIGN BISAH
|
||||
1B35 ; SpacingMark # Mc BALINESE VOWEL SIGN TEDUNG
|
||||
1B3B ; SpacingMark # Mc BALINESE VOWEL SIGN RA REPA TEDUNG
|
||||
1B3D..1B41 ; SpacingMark # Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
|
||||
1B43..1B44 ; SpacingMark # Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG
|
||||
@ -443,7 +509,7 @@ E0100..E01EF ; Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
|
||||
1C24..1C2B ; SpacingMark # Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU
|
||||
1C34..1C35 ; SpacingMark # Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG
|
||||
1CE1 ; SpacingMark # Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA
|
||||
1CF2..1CF3 ; SpacingMark # Mc [2] VEDIC SIGN ARDHAVISARGA..VEDIC SIGN ROTATED ARDHAVISARGA
|
||||
1CF7 ; SpacingMark # Mc VEDIC SIGN ATIKRAMA
|
||||
A823..A824 ; SpacingMark # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I
|
||||
A827 ; SpacingMark # Mc SYLOTI NAGRI VOWEL SIGN OO
|
||||
A880..A881 ; SpacingMark # Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA
|
||||
@ -452,7 +518,7 @@ A952..A953 ; SpacingMark # Mc [2] REJANG CONSONANT SIGN H..REJANG VIRAMA
|
||||
A983 ; SpacingMark # Mc JAVANESE SIGN WIGNYAN
|
||||
A9B4..A9B5 ; SpacingMark # Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG
|
||||
A9BA..A9BB ; SpacingMark # Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE
|
||||
A9BD..A9C0 ; SpacingMark # Mc [4] JAVANESE CONSONANT SIGN KERET..JAVANESE PANGKON
|
||||
A9BE..A9C0 ; SpacingMark # Mc [3] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE PANGKON
|
||||
AA2F..AA30 ; SpacingMark # Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI
|
||||
AA33..AA34 ; SpacingMark # Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA
|
||||
AA4D ; SpacingMark # Mc CHAM CONSONANT SIGN FINAL H
|
||||
@ -469,6 +535,7 @@ ABEC ; SpacingMark # Mc MEETEI MAYEK LUM IYEK
|
||||
110B0..110B2 ; SpacingMark # Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II
|
||||
110B7..110B8 ; SpacingMark # Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU
|
||||
1112C ; SpacingMark # Mc CHAKMA VOWEL SIGN E
|
||||
11145..11146 ; SpacingMark # Mc [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI
|
||||
11182 ; SpacingMark # Mc SHARADA SIGN VISARGA
|
||||
111B3..111B5 ; SpacingMark # Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II
|
||||
111BF..111C0 ; SpacingMark # Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA
|
||||
@ -482,6 +549,9 @@ ABEC ; SpacingMark # Mc MEETEI MAYEK LUM IYEK
|
||||
11347..11348 ; SpacingMark # Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI
|
||||
1134B..1134D ; SpacingMark # Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA
|
||||
11362..11363 ; SpacingMark # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
|
||||
11435..11437 ; SpacingMark # Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
|
||||
11440..11441 ; SpacingMark # Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
|
||||
11445 ; SpacingMark # Mc NEWA SIGN VISARGA
|
||||
114B1..114B2 ; SpacingMark # Mc [2] TIRHUTA VOWEL SIGN I..TIRHUTA VOWEL SIGN II
|
||||
114B9 ; SpacingMark # Mc TIRHUTA VOWEL SIGN E
|
||||
114BB..114BC ; SpacingMark # Mc [2] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN O
|
||||
@ -498,11 +568,28 @@ ABEC ; SpacingMark # Mc MEETEI MAYEK LUM IYEK
|
||||
116B6 ; SpacingMark # Mc TAKRI SIGN VIRAMA
|
||||
11720..11721 ; SpacingMark # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA
|
||||
11726 ; SpacingMark # Mc AHOM VOWEL SIGN E
|
||||
16F51..16F7E ; SpacingMark # Mc [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG
|
||||
1182C..1182E ; SpacingMark # Mc [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II
|
||||
11838 ; SpacingMark # Mc DOGRA SIGN VISARGA
|
||||
119D1..119D3 ; SpacingMark # Mc [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II
|
||||
119DC..119DF ; SpacingMark # Mc [4] NANDINAGARI VOWEL SIGN O..NANDINAGARI SIGN VISARGA
|
||||
119E4 ; SpacingMark # Mc NANDINAGARI VOWEL SIGN PRISHTHAMATRA E
|
||||
11A39 ; SpacingMark # Mc ZANABAZAR SQUARE SIGN VISARGA
|
||||
11A57..11A58 ; SpacingMark # Mc [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU
|
||||
11A97 ; SpacingMark # Mc SOYOMBO SIGN VISARGA
|
||||
11C2F ; SpacingMark # Mc BHAIKSUKI VOWEL SIGN AA
|
||||
11C3E ; SpacingMark # Mc BHAIKSUKI SIGN VISARGA
|
||||
11CA9 ; SpacingMark # Mc MARCHEN SUBJOINED LETTER YA
|
||||
11CB1 ; SpacingMark # Mc MARCHEN VOWEL SIGN I
|
||||
11CB4 ; SpacingMark # Mc MARCHEN VOWEL SIGN O
|
||||
11D8A..11D8E ; SpacingMark # Mc [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU
|
||||
11D93..11D94 ; SpacingMark # Mc [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU
|
||||
11D96 ; SpacingMark # Mc GUNJALA GONDI SIGN VISARGA
|
||||
11EF5..11EF6 ; SpacingMark # Mc [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O
|
||||
16F51..16F87 ; SpacingMark # Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI
|
||||
1D166 ; SpacingMark # Mc MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
|
||||
1D16D ; SpacingMark # Mc MUSICAL SYMBOL COMBINING AUGMENTATION DOT
|
||||
|
||||
# Total code points: 330
|
||||
# Total code points: 375
|
||||
|
||||
# ================================================
|
||||
|
||||
@ -1333,4 +1420,10 @@ D789..D7A3 ; LVT # Lo [27] HANGUL SYLLABLE HIG..HANGUL SYLLABLE HIH
|
||||
|
||||
# Total code points: 10773
|
||||
|
||||
# ================================================
|
||||
|
||||
200D ; ZWJ # Cf ZERO WIDTH JOINER
|
||||
|
||||
# Total code points: 1
|
||||
|
||||
# EOF
|
630
make/data/unicodedata/auxiliary/GraphemeBreakTest.txt
Normal file
630
make/data/unicodedata/auxiliary/GraphemeBreakTest.txt
Normal file
@ -0,0 +1,630 @@
|
||||
# GraphemeBreakTest-12.1.0.txt
|
||||
# Date: 2019-03-10, 10:53:12 GMT
|
||||
# Copyright (c) 2019 Unicode, Inc.
|
||||
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
|
||||
# For terms of use, see http://www.unicode.org/terms_of_use.html
|
||||
#
|
||||
# Unicode Character Database
|
||||
# For documentation, see http://www.unicode.org/reports/tr44/
|
||||
#
|
||||
# Default Grapheme_Cluster_Break Test
|
||||
#
|
||||
# Format:
|
||||
# <string> (# <comment>)?
|
||||
# <string> contains hex Unicode code points, with
|
||||
# ÷ wherever there is a break opportunity, and
|
||||
# × wherever there is not.
|
||||
# <comment> the format can change, but currently it shows:
|
||||
# - the sample character name
|
||||
# - (x) the Grapheme_Cluster_Break property value for the sample character
|
||||
# - [x] the rule that determines whether there is a break or not,
|
||||
# as listed in the Rules section of GraphemeBreakTest.html
|
||||
#
|
||||
# These samples may be extended or changed in the future.
|
||||
#
|
||||
÷ 0020 ÷ 0020 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] SPACE (Other) ÷ [0.3]
|
||||
÷ 0020 × 0308 ÷ 0020 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
|
||||
÷ 0020 ÷ 000D ÷ # ÷ [0.2] SPACE (Other) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 0020 × 0308 ÷ 000D ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 0020 ÷ 000A ÷ # ÷ [0.2] SPACE (Other) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 0020 × 0308 ÷ 000A ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 0020 ÷ 0001 ÷ # ÷ [0.2] SPACE (Other) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ 0020 × 0308 ÷ 0001 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ 0020 × 034F ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ 0020 × 0308 × 034F ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ 0020 ÷ 1F1E6 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
|
||||
÷ 0020 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
|
||||
÷ 0020 ÷ 0600 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ 0020 × 0308 ÷ 0600 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ 0020 × 0903 ÷ # ÷ [0.2] SPACE (Other) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ 0020 × 0308 × 0903 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ 0020 ÷ 1100 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ 0020 × 0308 ÷ 1100 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ 0020 ÷ 1160 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ 0020 × 0308 ÷ 1160 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ 0020 ÷ 11A8 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ 0020 × 0308 ÷ 11A8 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ 0020 ÷ AC00 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ 0020 × 0308 ÷ AC00 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ 0020 ÷ AC01 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ 0020 × 0308 ÷ AC01 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ 0020 ÷ 231A ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ 0020 × 0308 ÷ 231A ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ 0020 × 0300 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ 0020 × 0308 × 0300 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ 0020 × 200D ÷ # ÷ [0.2] SPACE (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
|
||||
÷ 0020 × 0308 × 200D ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
|
||||
÷ 0020 ÷ 0378 ÷ # ÷ [0.2] SPACE (Other) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ 0020 × 0308 ÷ 0378 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ 000D ÷ 0020 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] SPACE (Other) ÷ [0.3]
|
||||
÷ 000D ÷ 0308 ÷ 0020 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
|
||||
÷ 000D ÷ 000D ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 000D ÷ 0308 ÷ 000D ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 000D × 000A ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) × [3.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 000D ÷ 0308 ÷ 000A ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 000D ÷ 0001 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ 000D ÷ 0308 ÷ 0001 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ 000D ÷ 034F ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ 000D ÷ 0308 × 034F ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ 000D ÷ 1F1E6 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
|
||||
÷ 000D ÷ 0308 ÷ 1F1E6 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
|
||||
÷ 000D ÷ 0600 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ 000D ÷ 0308 ÷ 0600 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ 000D ÷ 0903 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ 000D ÷ 0308 × 0903 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ 000D ÷ 1100 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ 000D ÷ 0308 ÷ 1100 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ 000D ÷ 1160 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ 000D ÷ 0308 ÷ 1160 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ 000D ÷ 11A8 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ 000D ÷ 0308 ÷ 11A8 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ 000D ÷ AC00 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ 000D ÷ 0308 ÷ AC00 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ 000D ÷ AC01 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ 000D ÷ 0308 ÷ AC01 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ 000D ÷ 231A ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ 000D ÷ 0308 ÷ 231A ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ 000D ÷ 0300 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ 000D ÷ 0308 × 0300 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ 000D ÷ 200D ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
|
||||
÷ 000D ÷ 0308 × 200D ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
|
||||
÷ 000D ÷ 0378 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ 000D ÷ 0308 ÷ 0378 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ 000A ÷ 0020 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] SPACE (Other) ÷ [0.3]
|
||||
÷ 000A ÷ 0308 ÷ 0020 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
|
||||
÷ 000A ÷ 000D ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 000A ÷ 0308 ÷ 000D ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 000A ÷ 000A ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 000A ÷ 0308 ÷ 000A ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 000A ÷ 0001 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ 000A ÷ 0308 ÷ 0001 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ 000A ÷ 034F ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ 000A ÷ 0308 × 034F ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ 000A ÷ 1F1E6 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
|
||||
÷ 000A ÷ 0308 ÷ 1F1E6 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
|
||||
÷ 000A ÷ 0600 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ 000A ÷ 0308 ÷ 0600 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ 000A ÷ 0903 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ 000A ÷ 0308 × 0903 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ 000A ÷ 1100 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ 000A ÷ 0308 ÷ 1100 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ 000A ÷ 1160 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ 000A ÷ 0308 ÷ 1160 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ 000A ÷ 11A8 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ 000A ÷ 0308 ÷ 11A8 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ 000A ÷ AC00 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ 000A ÷ 0308 ÷ AC00 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ 000A ÷ AC01 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ 000A ÷ 0308 ÷ AC01 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ 000A ÷ 231A ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ 000A ÷ 0308 ÷ 231A ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ 000A ÷ 0300 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ 000A ÷ 0308 × 0300 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ 000A ÷ 200D ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
|
||||
÷ 000A ÷ 0308 × 200D ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
|
||||
÷ 000A ÷ 0378 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ 000A ÷ 0308 ÷ 0378 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ 0001 ÷ 0020 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] SPACE (Other) ÷ [0.3]
|
||||
÷ 0001 ÷ 0308 ÷ 0020 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
|
||||
÷ 0001 ÷ 000D ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 0001 ÷ 0308 ÷ 000D ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 0001 ÷ 000A ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 0001 ÷ 0308 ÷ 000A ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 0001 ÷ 0001 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ 0001 ÷ 0308 ÷ 0001 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ 0001 ÷ 034F ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ 0001 ÷ 0308 × 034F ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ 0001 ÷ 1F1E6 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
|
||||
÷ 0001 ÷ 0308 ÷ 1F1E6 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
|
||||
÷ 0001 ÷ 0600 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ 0001 ÷ 0308 ÷ 0600 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ 0001 ÷ 0903 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ 0001 ÷ 0308 × 0903 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ 0001 ÷ 1100 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ 0001 ÷ 0308 ÷ 1100 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ 0001 ÷ 1160 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ 0001 ÷ 0308 ÷ 1160 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ 0001 ÷ 11A8 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ 0001 ÷ 0308 ÷ 11A8 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ 0001 ÷ AC00 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ 0001 ÷ 0308 ÷ AC00 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ 0001 ÷ AC01 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ 0001 ÷ 0308 ÷ AC01 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ 0001 ÷ 231A ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ 0001 ÷ 0308 ÷ 231A ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ 0001 ÷ 0300 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ 0001 ÷ 0308 × 0300 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ 0001 ÷ 200D ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
|
||||
÷ 0001 ÷ 0308 × 200D ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
|
||||
÷ 0001 ÷ 0378 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ 0001 ÷ 0308 ÷ 0378 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ 034F ÷ 0020 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] SPACE (Other) ÷ [0.3]
|
||||
÷ 034F × 0308 ÷ 0020 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
|
||||
÷ 034F ÷ 000D ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 034F × 0308 ÷ 000D ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 034F ÷ 000A ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 034F × 0308 ÷ 000A ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 034F ÷ 0001 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ 034F × 0308 ÷ 0001 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ 034F × 034F ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ 034F × 0308 × 034F ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ 034F ÷ 1F1E6 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
|
||||
÷ 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]
|
||||
÷ 034F ÷ 0600 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ 034F × 0308 ÷ 0600 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ 034F × 0903 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ 034F × 0308 × 0903 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ 034F ÷ 1100 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ 034F × 0308 ÷ 1100 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ 034F ÷ 1160 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ 034F × 0308 ÷ 1160 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ 034F ÷ 11A8 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ 034F × 0308 ÷ 11A8 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ 034F ÷ AC00 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ 034F × 0308 ÷ AC00 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ 034F ÷ AC01 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ 034F × 0308 ÷ AC01 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ 034F ÷ 231A ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ 034F × 0308 ÷ 231A ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ 034F × 0300 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ 034F × 0308 × 0300 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ 034F × 200D ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
|
||||
÷ 034F × 0308 × 200D ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
|
||||
÷ 034F ÷ 0378 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ 034F × 0308 ÷ 0378 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ 1F1E6 ÷ 0020 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] SPACE (Other) ÷ [0.3]
|
||||
÷ 1F1E6 × 0308 ÷ 0020 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
|
||||
÷ 1F1E6 ÷ 000D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 1F1E6 × 0308 ÷ 000D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 1F1E6 ÷ 000A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 1F1E6 × 0308 ÷ 000A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 1F1E6 ÷ 0001 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ 1F1E6 × 0308 ÷ 0001 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ 1F1E6 × 034F ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ 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]
|
||||
÷ 1F1E6 × 1F1E6 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [12.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
|
||||
÷ 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]
|
||||
÷ 1F1E6 ÷ 0600 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ 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]
|
||||
÷ 1F1E6 × 0903 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ 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]
|
||||
÷ 1F1E6 ÷ 1100 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ 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]
|
||||
÷ 1F1E6 ÷ 1160 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ 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]
|
||||
÷ 1F1E6 ÷ 11A8 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ 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]
|
||||
÷ 1F1E6 ÷ AC00 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ 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]
|
||||
÷ 1F1E6 ÷ AC01 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ 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]
|
||||
÷ 1F1E6 ÷ 231A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ 1F1E6 × 0308 ÷ 231A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ 1F1E6 × 0300 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ 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]
|
||||
÷ 1F1E6 × 200D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
|
||||
÷ 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]
|
||||
÷ 1F1E6 ÷ 0378 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ 1F1E6 × 0308 ÷ 0378 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ 0600 × 0020 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] SPACE (Other) ÷ [0.3]
|
||||
÷ 0600 × 0308 ÷ 0020 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
|
||||
÷ 0600 ÷ 000D ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 0600 × 0308 ÷ 000D ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 0600 ÷ 000A ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 0600 × 0308 ÷ 000A ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 0600 ÷ 0001 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ 0600 × 0308 ÷ 0001 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ 0600 × 034F ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ 0600 × 0308 × 034F ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ 0600 × 1F1E6 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
|
||||
÷ 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]
|
||||
÷ 0600 × 0600 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ 0600 × 0308 ÷ 0600 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ 0600 × 0903 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ 0600 × 0308 × 0903 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ 0600 × 1100 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ 0600 × 0308 ÷ 1100 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ 0600 × 1160 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ 0600 × 0308 ÷ 1160 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ 0600 × 11A8 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ 0600 × 0308 ÷ 11A8 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ 0600 × AC00 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ 0600 × 0308 ÷ AC00 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ 0600 × AC01 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ 0600 × 0308 ÷ AC01 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ 0600 × 231A ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ 0600 × 0308 ÷ 231A ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ 0600 × 0300 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ 0600 × 0308 × 0300 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ 0600 × 200D ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
|
||||
÷ 0600 × 0308 × 200D ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
|
||||
÷ 0600 × 0378 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ 0600 × 0308 ÷ 0378 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ 0903 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] SPACE (Other) ÷ [0.3]
|
||||
÷ 0903 × 0308 ÷ 0020 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
|
||||
÷ 0903 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 0903 × 0308 ÷ 000D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 0903 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 0903 × 0308 ÷ 000A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 0903 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ 0903 × 0308 ÷ 0001 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ 0903 × 034F ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ 0903 × 0308 × 034F ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ 0903 ÷ 1F1E6 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
|
||||
÷ 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]
|
||||
÷ 0903 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ 0903 × 0308 ÷ 0600 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ 0903 × 0903 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ 0903 × 0308 × 0903 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ 0903 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ 0903 × 0308 ÷ 1100 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ 0903 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ 0903 × 0308 ÷ 1160 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ 0903 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ 0903 × 0308 ÷ 11A8 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ 0903 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ 0903 × 0308 ÷ AC00 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ 0903 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ 0903 × 0308 ÷ AC01 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ 0903 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ 0903 × 0308 ÷ 231A ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ 0903 × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ 0903 × 0308 × 0300 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ 0903 × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
|
||||
÷ 0903 × 0308 × 200D ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
|
||||
÷ 0903 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ 0903 × 0308 ÷ 0378 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ 1100 ÷ 0020 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] SPACE (Other) ÷ [0.3]
|
||||
÷ 1100 × 0308 ÷ 0020 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
|
||||
÷ 1100 ÷ 000D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 1100 × 0308 ÷ 000D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 1100 ÷ 000A ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 1100 × 0308 ÷ 000A ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 1100 ÷ 0001 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ 1100 × 0308 ÷ 0001 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ 1100 × 034F ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ 1100 × 0308 × 034F ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ 1100 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
|
||||
÷ 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]
|
||||
÷ 1100 ÷ 0600 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ 1100 × 0308 ÷ 0600 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ 1100 × 0903 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ 1100 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ 1100 × 1100 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ 1100 × 0308 ÷ 1100 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ 1100 × 1160 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ 1100 × 0308 ÷ 1160 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ 1100 ÷ 11A8 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ 1100 × 0308 ÷ 11A8 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ 1100 × AC00 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ 1100 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ 1100 × AC01 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ 1100 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ 1100 ÷ 231A ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ 1100 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ 1100 × 0300 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ 1100 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ 1100 × 200D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
|
||||
÷ 1100 × 0308 × 200D ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
|
||||
÷ 1100 ÷ 0378 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ 1100 × 0308 ÷ 0378 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ 1160 ÷ 0020 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] SPACE (Other) ÷ [0.3]
|
||||
÷ 1160 × 0308 ÷ 0020 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
|
||||
÷ 1160 ÷ 000D ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 1160 × 0308 ÷ 000D ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 1160 ÷ 000A ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 1160 × 0308 ÷ 000A ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 1160 ÷ 0001 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ 1160 × 0308 ÷ 0001 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ 1160 × 034F ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ 1160 × 0308 × 034F ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ 1160 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
|
||||
÷ 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]
|
||||
÷ 1160 ÷ 0600 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ 1160 × 0308 ÷ 0600 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ 1160 × 0903 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ 1160 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ 1160 ÷ 1100 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ 1160 × 0308 ÷ 1100 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ 1160 × 1160 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [7.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ 1160 × 0308 ÷ 1160 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ 1160 × 11A8 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [7.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ 1160 × 0308 ÷ 11A8 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ 1160 ÷ AC00 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ 1160 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ 1160 ÷ AC01 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ 1160 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ 1160 ÷ 231A ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ 1160 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ 1160 × 0300 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ 1160 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ 1160 × 200D ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
|
||||
÷ 1160 × 0308 × 200D ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
|
||||
÷ 1160 ÷ 0378 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ 1160 × 0308 ÷ 0378 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ 11A8 ÷ 0020 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] SPACE (Other) ÷ [0.3]
|
||||
÷ 11A8 × 0308 ÷ 0020 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
|
||||
÷ 11A8 ÷ 000D ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 11A8 × 0308 ÷ 000D ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 11A8 ÷ 000A ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 11A8 × 0308 ÷ 000A ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 11A8 ÷ 0001 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ 11A8 × 0308 ÷ 0001 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ 11A8 × 034F ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ 11A8 × 0308 × 034F ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ 11A8 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
|
||||
÷ 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]
|
||||
÷ 11A8 ÷ 0600 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ 11A8 × 0308 ÷ 0600 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ 11A8 × 0903 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ 11A8 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ 11A8 ÷ 1100 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ 11A8 × 0308 ÷ 1100 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ 11A8 ÷ 1160 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ 11A8 × 0308 ÷ 1160 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ 11A8 × 11A8 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [8.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ 11A8 × 0308 ÷ 11A8 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ 11A8 ÷ AC00 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ 11A8 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ 11A8 ÷ AC01 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ 11A8 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ 11A8 ÷ 231A ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ 11A8 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ 11A8 × 0300 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ 11A8 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ 11A8 × 200D ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
|
||||
÷ 11A8 × 0308 × 200D ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
|
||||
÷ 11A8 ÷ 0378 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ 11A8 × 0308 ÷ 0378 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ AC00 ÷ 0020 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] SPACE (Other) ÷ [0.3]
|
||||
÷ AC00 × 0308 ÷ 0020 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
|
||||
÷ AC00 ÷ 000D ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ AC00 × 0308 ÷ 000D ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ AC00 ÷ 000A ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ AC00 × 0308 ÷ 000A ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ AC00 ÷ 0001 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ AC00 × 0308 ÷ 0001 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ AC00 × 034F ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ AC00 × 0308 × 034F ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ AC00 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
|
||||
÷ 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]
|
||||
÷ AC00 ÷ 0600 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ AC00 × 0308 ÷ 0600 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ AC00 × 0903 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ AC00 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ AC00 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ AC00 × 0308 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ AC00 × 1160 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [7.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ AC00 × 0308 ÷ 1160 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ AC00 × 11A8 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [7.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ AC00 × 0308 ÷ 11A8 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ AC00 ÷ AC00 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ AC00 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ AC00 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ AC00 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ AC00 ÷ 231A ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ AC00 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ AC00 × 0300 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ AC00 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ AC00 × 200D ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
|
||||
÷ AC00 × 0308 × 200D ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
|
||||
÷ AC00 ÷ 0378 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ AC00 × 0308 ÷ 0378 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ AC01 ÷ 0020 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] SPACE (Other) ÷ [0.3]
|
||||
÷ AC01 × 0308 ÷ 0020 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
|
||||
÷ AC01 ÷ 000D ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ AC01 × 0308 ÷ 000D ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ AC01 ÷ 000A ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ AC01 × 0308 ÷ 000A ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ AC01 ÷ 0001 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ AC01 × 0308 ÷ 0001 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ AC01 × 034F ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ AC01 × 0308 × 034F ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ AC01 ÷ 1F1E6 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
|
||||
÷ 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]
|
||||
÷ AC01 ÷ 0600 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ AC01 × 0308 ÷ 0600 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ AC01 × 0903 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ AC01 × 0308 × 0903 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ AC01 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ AC01 × 0308 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ AC01 ÷ 1160 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ AC01 × 0308 ÷ 1160 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ AC01 × 11A8 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [8.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ AC01 × 0308 ÷ 11A8 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ AC01 ÷ AC00 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ AC01 × 0308 ÷ AC00 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ AC01 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ AC01 × 0308 ÷ AC01 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ AC01 ÷ 231A ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ AC01 × 0308 ÷ 231A ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ AC01 × 0300 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ AC01 × 0308 × 0300 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ AC01 × 200D ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
|
||||
÷ AC01 × 0308 × 200D ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
|
||||
÷ AC01 ÷ 0378 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ AC01 × 0308 ÷ 0378 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ 231A ÷ 0020 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] SPACE (Other) ÷ [0.3]
|
||||
÷ 231A × 0308 ÷ 0020 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
|
||||
÷ 231A ÷ 000D ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 231A × 0308 ÷ 000D ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 231A ÷ 000A ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 231A × 0308 ÷ 000A ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 231A ÷ 0001 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ 231A × 0308 ÷ 0001 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ 231A × 034F ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ 231A × 0308 × 034F ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ 231A ÷ 1F1E6 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
|
||||
÷ 231A × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
|
||||
÷ 231A ÷ 0600 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ 231A × 0308 ÷ 0600 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ 231A × 0903 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ 231A × 0308 × 0903 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ 231A ÷ 1100 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ 231A × 0308 ÷ 1100 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ 231A ÷ 1160 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ 231A × 0308 ÷ 1160 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ 231A ÷ 11A8 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ 231A × 0308 ÷ 11A8 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ 231A ÷ AC00 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ 231A × 0308 ÷ AC00 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ 231A ÷ AC01 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ 231A × 0308 ÷ AC01 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ 231A ÷ 231A ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ 231A × 0308 ÷ 231A ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ 231A × 0300 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ 231A × 0308 × 0300 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ 231A × 200D ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
|
||||
÷ 231A × 0308 × 200D ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
|
||||
÷ 231A ÷ 0378 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ 231A × 0308 ÷ 0378 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ 0300 ÷ 0020 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
|
||||
÷ 0300 × 0308 ÷ 0020 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
|
||||
÷ 0300 ÷ 000D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 0300 × 0308 ÷ 000D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 0300 ÷ 000A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 0300 × 0308 ÷ 000A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 0300 ÷ 0001 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ 0300 × 0308 ÷ 0001 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ 0300 × 034F ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ 0300 × 0308 × 034F ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ 0300 ÷ 1F1E6 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
|
||||
÷ 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]
|
||||
÷ 0300 ÷ 0600 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ 0300 × 0308 ÷ 0600 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ 0300 × 0903 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ 0300 × 0308 × 0903 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ 0300 ÷ 1100 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ 0300 × 0308 ÷ 1100 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ 0300 ÷ 1160 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ 0300 × 0308 ÷ 1160 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ 0300 ÷ 11A8 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ 0300 × 0308 ÷ 11A8 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ 0300 ÷ AC00 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ 0300 × 0308 ÷ AC00 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ 0300 ÷ AC01 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ 0300 × 0308 ÷ AC01 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ 0300 ÷ 231A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ 0300 × 0308 ÷ 231A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ 0300 × 0300 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ 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]
|
||||
÷ 0300 × 200D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
|
||||
÷ 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]
|
||||
÷ 0300 ÷ 0378 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ 0300 × 0308 ÷ 0378 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ 200D ÷ 0020 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
|
||||
÷ 200D × 0308 ÷ 0020 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
|
||||
÷ 200D ÷ 000D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 200D × 0308 ÷ 000D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 200D ÷ 000A ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 200D × 0308 ÷ 000A ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 200D ÷ 0001 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ 200D × 0308 ÷ 0001 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ 200D × 034F ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ 200D × 0308 × 034F ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ 200D ÷ 1F1E6 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
|
||||
÷ 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]
|
||||
÷ 200D ÷ 0600 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ 200D × 0308 ÷ 0600 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ 200D × 0903 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ 200D × 0308 × 0903 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ 200D ÷ 1100 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ 200D × 0308 ÷ 1100 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ 200D ÷ 1160 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ 200D × 0308 ÷ 1160 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ 200D ÷ 11A8 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ 200D × 0308 ÷ 11A8 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ 200D ÷ AC00 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ 200D × 0308 ÷ AC00 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ 200D ÷ AC01 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ 200D × 0308 ÷ AC01 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ 200D ÷ 231A ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ 200D × 0308 ÷ 231A ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ 200D × 0300 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ 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]
|
||||
÷ 200D × 200D ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
|
||||
÷ 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]
|
||||
÷ 200D ÷ 0378 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ 200D × 0308 ÷ 0378 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ 0378 ÷ 0020 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] SPACE (Other) ÷ [0.3]
|
||||
÷ 0378 × 0308 ÷ 0020 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
|
||||
÷ 0378 ÷ 000D ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 0378 × 0308 ÷ 000D ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 0378 ÷ 000A ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 0378 × 0308 ÷ 000A ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 0378 ÷ 0001 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ 0378 × 0308 ÷ 0001 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
|
||||
÷ 0378 × 034F ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ 0378 × 0308 × 034F ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
|
||||
÷ 0378 ÷ 1F1E6 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
|
||||
÷ 0378 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
|
||||
÷ 0378 ÷ 0600 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ 0378 × 0308 ÷ 0600 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
|
||||
÷ 0378 × 0903 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ 0378 × 0308 × 0903 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
|
||||
÷ 0378 ÷ 1100 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ 0378 × 0308 ÷ 1100 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ 0378 ÷ 1160 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ 0378 × 0308 ÷ 1160 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
|
||||
÷ 0378 ÷ 11A8 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ 0378 × 0308 ÷ 11A8 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
|
||||
÷ 0378 ÷ AC00 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ 0378 × 0308 ÷ AC00 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
|
||||
÷ 0378 ÷ AC01 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ 0378 × 0308 ÷ AC01 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
|
||||
÷ 0378 ÷ 231A ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ 0378 × 0308 ÷ 231A ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
|
||||
÷ 0378 × 0300 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ 0378 × 0308 × 0300 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ 0378 × 200D ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
|
||||
÷ 0378 × 0308 × 200D ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
|
||||
÷ 0378 ÷ 0378 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ 0378 × 0308 ÷ 0378 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
|
||||
÷ 000D × 000A ÷ 0061 ÷ 000A ÷ 0308 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) × [3.0] <LINE FEED (LF)> (LF) ÷ [4.0] LATIN SMALL LETTER A (Other) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ 0061 × 0308 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [0.3]
|
||||
÷ 0020 × 200D ÷ 0646 ÷ # ÷ [0.2] SPACE (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] ARABIC LETTER NOON (Other) ÷ [0.3]
|
||||
÷ 0646 × 200D ÷ 0020 ÷ # ÷ [0.2] ARABIC LETTER NOON (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
|
||||
÷ 1100 × 1100 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ AC00 × 11A8 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [7.0] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ AC01 × 11A8 ÷ 1100 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [8.0] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
|
||||
÷ 1F1E6 × 1F1E7 ÷ 1F1E8 ÷ 0062 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [12.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3]
|
||||
÷ 0061 ÷ 1F1E6 × 1F1E7 ÷ 1F1E8 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [13.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3]
|
||||
÷ 0061 ÷ 1F1E6 × 1F1E7 × 200D ÷ 1F1E8 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [13.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3]
|
||||
÷ 0061 ÷ 1F1E6 × 200D ÷ 1F1E7 × 1F1E8 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) × [13.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3]
|
||||
÷ 0061 ÷ 1F1E6 × 1F1E7 ÷ 1F1E8 × 1F1E9 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [13.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) × [13.0] REGIONAL INDICATOR SYMBOL LETTER D (RI) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3]
|
||||
÷ 0061 × 200D ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
|
||||
÷ 0061 × 0308 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3]
|
||||
÷ 0061 × 0903 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3]
|
||||
÷ 0061 ÷ 0600 × 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) × [9.2] LATIN SMALL LETTER B (Other) ÷ [0.3]
|
||||
÷ 1F476 × 1F3FF ÷ 1F476 ÷ # ÷ [0.2] BABY (ExtPict) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [999.0] BABY (ExtPict) ÷ [0.3]
|
||||
÷ 0061 × 1F3FF ÷ 1F476 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [999.0] BABY (ExtPict) ÷ [0.3]
|
||||
÷ 0061 × 1F3FF ÷ 1F476 × 200D × 1F6D1 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [999.0] BABY (ExtPict) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] OCTAGONAL SIGN (ExtPict) ÷ [0.3]
|
||||
÷ 1F476 × 1F3FF × 0308 × 200D × 1F476 × 1F3FF ÷ # ÷ [0.2] BABY (ExtPict) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] BABY (ExtPict) × [9.0] EMOJI MODIFIER FITZPATRICK TYPE-6 (Extend) ÷ [0.3]
|
||||
÷ 1F6D1 × 200D × 1F6D1 ÷ # ÷ [0.2] OCTAGONAL SIGN (ExtPict) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] OCTAGONAL SIGN (ExtPict) ÷ [0.3]
|
||||
÷ 0061 × 200D ÷ 1F6D1 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] OCTAGONAL SIGN (ExtPict) ÷ [0.3]
|
||||
÷ 2701 × 200D × 2701 ÷ # ÷ [0.2] UPPER BLADE SCISSORS (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [11.0] UPPER BLADE SCISSORS (Other) ÷ [0.3]
|
||||
÷ 0061 × 200D ÷ 2701 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [999.0] UPPER BLADE SCISSORS (Other) ÷ [0.3]
|
||||
#
|
||||
# Lines: 602
|
||||
#
|
||||
# EOF
|
769
make/data/unicodedata/emoji-data.txt
Normal file
769
make/data/unicodedata/emoji-data.txt
Normal file
@ -0,0 +1,769 @@
|
||||
# emoji-data.txt
|
||||
# Date: 2019-01-15, 12:10:05 GMT
|
||||
# Copyright (c) 2019 Unicode, Inc.
|
||||
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
|
||||
# For terms of use, see http://www.unicode.org/terms_of_use.html
|
||||
#
|
||||
# Emoji Data for UTS #51
|
||||
# Version: 12.0
|
||||
#
|
||||
# For documentation and usage, see http://www.unicode.org/reports/tr51
|
||||
#
|
||||
# Format:
|
||||
# <codepoint(s)> ; <property> # <comments>
|
||||
# Note: there is no guarantee as to the structure of whitespace or comments
|
||||
#
|
||||
# Characters and sequences are listed in code point order. Users should be shown a more natural order.
|
||||
# See the CLDR collation order for Emoji.
|
||||
|
||||
|
||||
# ================================================
|
||||
|
||||
# All omitted code points have Emoji=No
|
||||
# @missing: 0000..10FFFF ; Emoji ; No
|
||||
|
||||
0023 ; Emoji # 1.1 [1] (#️) number sign
|
||||
002A ; Emoji # 1.1 [1] (*️) asterisk
|
||||
0030..0039 ; Emoji # 1.1 [10] (0️..9️) digit zero..digit nine
|
||||
00A9 ; Emoji # 1.1 [1] (©️) copyright
|
||||
00AE ; Emoji # 1.1 [1] (®️) registered
|
||||
203C ; Emoji # 1.1 [1] (‼️) double exclamation mark
|
||||
2049 ; Emoji # 3.0 [1] (⁉️) exclamation question mark
|
||||
2122 ; Emoji # 1.1 [1] (™️) trade mark
|
||||
2139 ; Emoji # 3.0 [1] (ℹ️) information
|
||||
2194..2199 ; Emoji # 1.1 [6] (↔️..↙️) left-right arrow..down-left arrow
|
||||
21A9..21AA ; Emoji # 1.1 [2] (↩️..↪️) right arrow curving left..left arrow curving right
|
||||
231A..231B ; Emoji # 1.1 [2] (⌚..⌛) watch..hourglass done
|
||||
2328 ; Emoji # 1.1 [1] (⌨️) keyboard
|
||||
23CF ; Emoji # 4.0 [1] (⏏️) eject button
|
||||
23E9..23F3 ; Emoji # 6.0 [11] (⏩..⏳) fast-forward button..hourglass not done
|
||||
23F8..23FA ; Emoji # 7.0 [3] (⏸️..⏺️) pause button..record button
|
||||
24C2 ; Emoji # 1.1 [1] (Ⓜ️) circled M
|
||||
25AA..25AB ; Emoji # 1.1 [2] (▪️..▫️) black small square..white small square
|
||||
25B6 ; Emoji # 1.1 [1] (▶️) play button
|
||||
25C0 ; Emoji # 1.1 [1] (◀️) reverse button
|
||||
25FB..25FE ; Emoji # 3.2 [4] (◻️..◾) white medium square..black medium-small square
|
||||
2600..2604 ; Emoji # 1.1 [5] (☀️..☄️) sun..comet
|
||||
260E ; Emoji # 1.1 [1] (☎️) telephone
|
||||
2611 ; Emoji # 1.1 [1] (☑️) check box with check
|
||||
2614..2615 ; Emoji # 4.0 [2] (☔..☕) umbrella with rain drops..hot beverage
|
||||
2618 ; Emoji # 4.1 [1] (☘️) shamrock
|
||||
261D ; Emoji # 1.1 [1] (☝️) index pointing up
|
||||
2620 ; Emoji # 1.1 [1] (☠️) skull and crossbones
|
||||
2622..2623 ; Emoji # 1.1 [2] (☢️..☣️) radioactive..biohazard
|
||||
2626 ; Emoji # 1.1 [1] (☦️) orthodox cross
|
||||
262A ; Emoji # 1.1 [1] (☪️) star and crescent
|
||||
262E..262F ; Emoji # 1.1 [2] (☮️..☯️) peace symbol..yin yang
|
||||
2638..263A ; Emoji # 1.1 [3] (☸️..☺️) wheel of dharma..smiling face
|
||||
2640 ; Emoji # 1.1 [1] (♀️) female sign
|
||||
2642 ; Emoji # 1.1 [1] (♂️) male sign
|
||||
2648..2653 ; Emoji # 1.1 [12] (♈..♓) Aries..Pisces
|
||||
265F..2660 ; Emoji # 1.1 [2] (♟️..♠️) chess pawn..spade suit
|
||||
2663 ; Emoji # 1.1 [1] (♣️) club suit
|
||||
2665..2666 ; Emoji # 1.1 [2] (♥️..♦️) heart suit..diamond suit
|
||||
2668 ; Emoji # 1.1 [1] (♨️) hot springs
|
||||
267B ; Emoji # 3.2 [1] (♻️) recycling symbol
|
||||
267E..267F ; Emoji # 4.1 [2] (♾️..♿) infinity..wheelchair symbol
|
||||
2692..2697 ; Emoji # 4.1 [6] (⚒️..⚗️) hammer and pick..alembic
|
||||
2699 ; Emoji # 4.1 [1] (⚙️) gear
|
||||
269B..269C ; Emoji # 4.1 [2] (⚛️..⚜️) atom symbol..fleur-de-lis
|
||||
26A0..26A1 ; Emoji # 4.0 [2] (⚠️..⚡) warning..high voltage
|
||||
26AA..26AB ; Emoji # 4.1 [2] (⚪..⚫) white circle..black circle
|
||||
26B0..26B1 ; Emoji # 4.1 [2] (⚰️..⚱️) coffin..funeral urn
|
||||
26BD..26BE ; Emoji # 5.2 [2] (⚽..⚾) soccer ball..baseball
|
||||
26C4..26C5 ; Emoji # 5.2 [2] (⛄..⛅) snowman without snow..sun behind cloud
|
||||
26C8 ; Emoji # 5.2 [1] (⛈️) cloud with lightning and rain
|
||||
26CE ; Emoji # 6.0 [1] (⛎) Ophiuchus
|
||||
26CF ; Emoji # 5.2 [1] (⛏️) pick
|
||||
26D1 ; Emoji # 5.2 [1] (⛑️) rescue worker’s helmet
|
||||
26D3..26D4 ; Emoji # 5.2 [2] (⛓️..⛔) chains..no entry
|
||||
26E9..26EA ; Emoji # 5.2 [2] (⛩️..⛪) shinto shrine..church
|
||||
26F0..26F5 ; Emoji # 5.2 [6] (⛰️..⛵) mountain..sailboat
|
||||
26F7..26FA ; Emoji # 5.2 [4] (⛷️..⛺) skier..tent
|
||||
26FD ; Emoji # 5.2 [1] (⛽) fuel pump
|
||||
2702 ; Emoji # 1.1 [1] (✂️) scissors
|
||||
2705 ; Emoji # 6.0 [1] (✅) check mark button
|
||||
2708..2709 ; Emoji # 1.1 [2] (✈️..✉️) airplane..envelope
|
||||
270A..270B ; Emoji # 6.0 [2] (✊..✋) raised fist..raised hand
|
||||
270C..270D ; Emoji # 1.1 [2] (✌️..✍️) victory hand..writing hand
|
||||
270F ; Emoji # 1.1 [1] (✏️) pencil
|
||||
2712 ; Emoji # 1.1 [1] (✒️) black nib
|
||||
2714 ; Emoji # 1.1 [1] (✔️) check mark
|
||||
2716 ; Emoji # 1.1 [1] (✖️) multiplication sign
|
||||
271D ; Emoji # 1.1 [1] (✝️) latin cross
|
||||
2721 ; Emoji # 1.1 [1] (✡️) star of David
|
||||
2728 ; Emoji # 6.0 [1] (✨) sparkles
|
||||
2733..2734 ; Emoji # 1.1 [2] (✳️..✴️) eight-spoked asterisk..eight-pointed star
|
||||
2744 ; Emoji # 1.1 [1] (❄️) snowflake
|
||||
2747 ; Emoji # 1.1 [1] (❇️) sparkle
|
||||
274C ; Emoji # 6.0 [1] (❌) cross mark
|
||||
274E ; Emoji # 6.0 [1] (❎) cross mark button
|
||||
2753..2755 ; Emoji # 6.0 [3] (❓..❕) question mark..white exclamation mark
|
||||
2757 ; Emoji # 5.2 [1] (❗) exclamation mark
|
||||
2763..2764 ; Emoji # 1.1 [2] (❣️..❤️) heart exclamation..red heart
|
||||
2795..2797 ; Emoji # 6.0 [3] (➕..➗) plus sign..division sign
|
||||
27A1 ; Emoji # 1.1 [1] (➡️) right arrow
|
||||
27B0 ; Emoji # 6.0 [1] (➰) curly loop
|
||||
27BF ; Emoji # 6.0 [1] (➿) double curly loop
|
||||
2934..2935 ; Emoji # 3.2 [2] (⤴️..⤵️) right arrow curving up..right arrow curving down
|
||||
2B05..2B07 ; Emoji # 4.0 [3] (⬅️..⬇️) left arrow..down arrow
|
||||
2B1B..2B1C ; Emoji # 5.1 [2] (⬛..⬜) black large square..white large square
|
||||
2B50 ; Emoji # 5.1 [1] (⭐) star
|
||||
2B55 ; Emoji # 5.2 [1] (⭕) hollow red circle
|
||||
3030 ; Emoji # 1.1 [1] (〰️) wavy dash
|
||||
303D ; Emoji # 3.2 [1] (〽️) part alternation mark
|
||||
3297 ; Emoji # 1.1 [1] (㊗️) Japanese “congratulations” button
|
||||
3299 ; Emoji # 1.1 [1] (㊙️) Japanese “secret” button
|
||||
1F004 ; Emoji # 5.1 [1] (🀄) mahjong red dragon
|
||||
1F0CF ; Emoji # 6.0 [1] (🃏) joker
|
||||
1F170..1F171 ; Emoji # 6.0 [2] (🅰️..🅱️) A button (blood type)..B button (blood type)
|
||||
1F17E ; Emoji # 6.0 [1] (🅾️) O button (blood type)
|
||||
1F17F ; Emoji # 5.2 [1] (🅿️) P button
|
||||
1F18E ; Emoji # 6.0 [1] (🆎) AB button (blood type)
|
||||
1F191..1F19A ; Emoji # 6.0 [10] (🆑..🆚) CL button..VS button
|
||||
1F1E6..1F1FF ; Emoji # 6.0 [26] (🇦..🇿) regional indicator symbol letter a..regional indicator symbol letter z
|
||||
1F201..1F202 ; Emoji # 6.0 [2] (🈁..🈂️) Japanese “here” button..Japanese “service charge” button
|
||||
1F21A ; Emoji # 5.2 [1] (🈚) Japanese “free of charge” button
|
||||
1F22F ; Emoji # 5.2 [1] (🈯) Japanese “reserved” button
|
||||
1F232..1F23A ; Emoji # 6.0 [9] (🈲..🈺) Japanese “prohibited” button..Japanese “open for business” button
|
||||
1F250..1F251 ; Emoji # 6.0 [2] (🉐..🉑) Japanese “bargain” button..Japanese “acceptable” button
|
||||
1F300..1F320 ; Emoji # 6.0 [33] (🌀..🌠) cyclone..shooting star
|
||||
1F321 ; Emoji # 7.0 [1] (🌡️) thermometer
|
||||
1F324..1F32C ; Emoji # 7.0 [9] (🌤️..🌬️) sun behind small cloud..wind face
|
||||
1F32D..1F32F ; Emoji # 8.0 [3] (🌭..🌯) hot dog..burrito
|
||||
1F330..1F335 ; Emoji # 6.0 [6] (🌰..🌵) chestnut..cactus
|
||||
1F336 ; Emoji # 7.0 [1] (🌶️) hot pepper
|
||||
1F337..1F37C ; Emoji # 6.0 [70] (🌷..🍼) tulip..baby bottle
|
||||
1F37D ; Emoji # 7.0 [1] (🍽️) fork and knife with plate
|
||||
1F37E..1F37F ; Emoji # 8.0 [2] (🍾..🍿) bottle with popping cork..popcorn
|
||||
1F380..1F393 ; Emoji # 6.0 [20] (🎀..🎓) ribbon..graduation cap
|
||||
1F396..1F397 ; Emoji # 7.0 [2] (🎖️..🎗️) military medal..reminder ribbon
|
||||
1F399..1F39B ; Emoji # 7.0 [3] (🎙️..🎛️) studio microphone..control knobs
|
||||
1F39E..1F39F ; Emoji # 7.0 [2] (🎞️..🎟️) film frames..admission tickets
|
||||
1F3A0..1F3C4 ; Emoji # 6.0 [37] (🎠..🏄) carousel horse..person surfing
|
||||
1F3C5 ; Emoji # 7.0 [1] (🏅) sports medal
|
||||
1F3C6..1F3CA ; Emoji # 6.0 [5] (🏆..🏊) trophy..person swimming
|
||||
1F3CB..1F3CE ; Emoji # 7.0 [4] (🏋️..🏎️) person lifting weights..racing car
|
||||
1F3CF..1F3D3 ; Emoji # 8.0 [5] (🏏..🏓) cricket game..ping pong
|
||||
1F3D4..1F3DF ; Emoji # 7.0 [12] (🏔️..🏟️) snow-capped mountain..stadium
|
||||
1F3E0..1F3F0 ; Emoji # 6.0 [17] (🏠..🏰) house..castle
|
||||
1F3F3..1F3F5 ; Emoji # 7.0 [3] (🏳️..🏵️) white flag..rosette
|
||||
1F3F7 ; Emoji # 7.0 [1] (🏷️) label
|
||||
1F3F8..1F3FF ; Emoji # 8.0 [8] (🏸..🏿) badminton..dark skin tone
|
||||
1F400..1F43E ; Emoji # 6.0 [63] (🐀..🐾) rat..paw prints
|
||||
1F43F ; Emoji # 7.0 [1] (🐿️) chipmunk
|
||||
1F440 ; Emoji # 6.0 [1] (👀) eyes
|
||||
1F441 ; Emoji # 7.0 [1] (👁️) eye
|
||||
1F442..1F4F7 ; Emoji # 6.0[182] (👂..📷) ear..camera
|
||||
1F4F8 ; Emoji # 7.0 [1] (📸) camera with flash
|
||||
1F4F9..1F4FC ; Emoji # 6.0 [4] (📹..📼) video camera..videocassette
|
||||
1F4FD ; Emoji # 7.0 [1] (📽️) film projector
|
||||
1F4FF ; Emoji # 8.0 [1] (📿) prayer beads
|
||||
1F500..1F53D ; Emoji # 6.0 [62] (🔀..🔽) shuffle tracks button..downwards button
|
||||
1F549..1F54A ; Emoji # 7.0 [2] (🕉️..🕊️) om..dove
|
||||
1F54B..1F54E ; Emoji # 8.0 [4] (🕋..🕎) kaaba..menorah
|
||||
1F550..1F567 ; Emoji # 6.0 [24] (🕐..🕧) one o’clock..twelve-thirty
|
||||
1F56F..1F570 ; Emoji # 7.0 [2] (🕯️..🕰️) candle..mantelpiece clock
|
||||
1F573..1F579 ; Emoji # 7.0 [7] (🕳️..🕹️) hole..joystick
|
||||
1F57A ; Emoji # 9.0 [1] (🕺) man dancing
|
||||
1F587 ; Emoji # 7.0 [1] (🖇️) linked paperclips
|
||||
1F58A..1F58D ; Emoji # 7.0 [4] (🖊️..🖍️) pen..crayon
|
||||
1F590 ; Emoji # 7.0 [1] (🖐️) hand with fingers splayed
|
||||
1F595..1F596 ; Emoji # 7.0 [2] (🖕..🖖) middle finger..vulcan salute
|
||||
1F5A4 ; Emoji # 9.0 [1] (🖤) black heart
|
||||
1F5A5 ; Emoji # 7.0 [1] (🖥️) desktop computer
|
||||
1F5A8 ; Emoji # 7.0 [1] (🖨️) printer
|
||||
1F5B1..1F5B2 ; Emoji # 7.0 [2] (🖱️..🖲️) computer mouse..trackball
|
||||
1F5BC ; Emoji # 7.0 [1] (🖼️) framed picture
|
||||
1F5C2..1F5C4 ; Emoji # 7.0 [3] (🗂️..🗄️) card index dividers..file cabinet
|
||||
1F5D1..1F5D3 ; Emoji # 7.0 [3] (🗑️..🗓️) wastebasket..spiral calendar
|
||||
1F5DC..1F5DE ; Emoji # 7.0 [3] (🗜️..🗞️) clamp..rolled-up newspaper
|
||||
1F5E1 ; Emoji # 7.0 [1] (🗡️) dagger
|
||||
1F5E3 ; Emoji # 7.0 [1] (🗣️) speaking head
|
||||
1F5E8 ; Emoji # 7.0 [1] (🗨️) left speech bubble
|
||||
1F5EF ; Emoji # 7.0 [1] (🗯️) right anger bubble
|
||||
1F5F3 ; Emoji # 7.0 [1] (🗳️) ballot box with ballot
|
||||
1F5FA ; Emoji # 7.0 [1] (🗺️) world map
|
||||
1F5FB..1F5FF ; Emoji # 6.0 [5] (🗻..🗿) mount fuji..moai
|
||||
1F600 ; Emoji # 6.1 [1] (😀) grinning face
|
||||
1F601..1F610 ; Emoji # 6.0 [16] (😁..😐) beaming face with smiling eyes..neutral face
|
||||
1F611 ; Emoji # 6.1 [1] (😑) expressionless face
|
||||
1F612..1F614 ; Emoji # 6.0 [3] (😒..😔) unamused face..pensive face
|
||||
1F615 ; Emoji # 6.1 [1] (😕) confused face
|
||||
1F616 ; Emoji # 6.0 [1] (😖) confounded face
|
||||
1F617 ; Emoji # 6.1 [1] (😗) kissing face
|
||||
1F618 ; Emoji # 6.0 [1] (😘) face blowing a kiss
|
||||
1F619 ; Emoji # 6.1 [1] (😙) kissing face with smiling eyes
|
||||
1F61A ; Emoji # 6.0 [1] (😚) kissing face with closed eyes
|
||||
1F61B ; Emoji # 6.1 [1] (😛) face with tongue
|
||||
1F61C..1F61E ; Emoji # 6.0 [3] (😜..😞) winking face with tongue..disappointed face
|
||||
1F61F ; Emoji # 6.1 [1] (😟) worried face
|
||||
1F620..1F625 ; Emoji # 6.0 [6] (😠..😥) angry face..sad but relieved face
|
||||
1F626..1F627 ; Emoji # 6.1 [2] (😦..😧) frowning face with open mouth..anguished face
|
||||
1F628..1F62B ; Emoji # 6.0 [4] (😨..😫) fearful face..tired face
|
||||
1F62C ; Emoji # 6.1 [1] (😬) grimacing face
|
||||
1F62D ; Emoji # 6.0 [1] (😭) loudly crying face
|
||||
1F62E..1F62F ; Emoji # 6.1 [2] (😮..😯) face with open mouth..hushed face
|
||||
1F630..1F633 ; Emoji # 6.0 [4] (😰..😳) anxious face with sweat..flushed face
|
||||
1F634 ; Emoji # 6.1 [1] (😴) sleeping face
|
||||
1F635..1F640 ; Emoji # 6.0 [12] (😵..🙀) dizzy face..weary cat
|
||||
1F641..1F642 ; Emoji # 7.0 [2] (🙁..🙂) slightly frowning face..slightly smiling face
|
||||
1F643..1F644 ; Emoji # 8.0 [2] (🙃..🙄) upside-down face..face with rolling eyes
|
||||
1F645..1F64F ; Emoji # 6.0 [11] (🙅..🙏) person gesturing NO..folded hands
|
||||
1F680..1F6C5 ; Emoji # 6.0 [70] (🚀..🛅) rocket..left luggage
|
||||
1F6CB..1F6CF ; Emoji # 7.0 [5] (🛋️..🛏️) couch and lamp..bed
|
||||
1F6D0 ; Emoji # 8.0 [1] (🛐) place of worship
|
||||
1F6D1..1F6D2 ; Emoji # 9.0 [2] (🛑..🛒) stop sign..shopping cart
|
||||
1F6D5 ; Emoji # 12.0 [1] (🛕) hindu temple
|
||||
1F6E0..1F6E5 ; Emoji # 7.0 [6] (🛠️..🛥️) hammer and wrench..motor boat
|
||||
1F6E9 ; Emoji # 7.0 [1] (🛩️) small airplane
|
||||
1F6EB..1F6EC ; Emoji # 7.0 [2] (🛫..🛬) airplane departure..airplane arrival
|
||||
1F6F0 ; Emoji # 7.0 [1] (🛰️) satellite
|
||||
1F6F3 ; Emoji # 7.0 [1] (🛳️) passenger ship
|
||||
1F6F4..1F6F6 ; Emoji # 9.0 [3] (🛴..🛶) kick scooter..canoe
|
||||
1F6F7..1F6F8 ; Emoji # 10.0 [2] (🛷..🛸) sled..flying saucer
|
||||
1F6F9 ; Emoji # 11.0 [1] (🛹) skateboard
|
||||
1F6FA ; Emoji # 12.0 [1] (🛺) auto rickshaw
|
||||
1F7E0..1F7EB ; Emoji # 12.0 [12] (🟠..🟫) orange circle..brown square
|
||||
1F90D..1F90F ; Emoji # 12.0 [3] (🤍..🤏) white heart..pinching hand
|
||||
1F910..1F918 ; Emoji # 8.0 [9] (🤐..🤘) zipper-mouth face..sign of the horns
|
||||
1F919..1F91E ; Emoji # 9.0 [6] (🤙..🤞) call me hand..crossed fingers
|
||||
1F91F ; Emoji # 10.0 [1] (🤟) love-you gesture
|
||||
1F920..1F927 ; Emoji # 9.0 [8] (🤠..🤧) cowboy hat face..sneezing face
|
||||
1F928..1F92F ; Emoji # 10.0 [8] (🤨..🤯) face with raised eyebrow..exploding head
|
||||
1F930 ; Emoji # 9.0 [1] (🤰) pregnant woman
|
||||
1F931..1F932 ; Emoji # 10.0 [2] (🤱..🤲) breast-feeding..palms up together
|
||||
1F933..1F93A ; Emoji # 9.0 [8] (🤳..🤺) selfie..person fencing
|
||||
1F93C..1F93E ; Emoji # 9.0 [3] (🤼..🤾) people wrestling..person playing handball
|
||||
1F93F ; Emoji # 12.0 [1] (🤿) diving mask
|
||||
1F940..1F945 ; Emoji # 9.0 [6] (🥀..🥅) wilted flower..goal net
|
||||
1F947..1F94B ; Emoji # 9.0 [5] (🥇..🥋) 1st place medal..martial arts uniform
|
||||
1F94C ; Emoji # 10.0 [1] (🥌) curling stone
|
||||
1F94D..1F94F ; Emoji # 11.0 [3] (🥍..🥏) lacrosse..flying disc
|
||||
1F950..1F95E ; Emoji # 9.0 [15] (🥐..🥞) croissant..pancakes
|
||||
1F95F..1F96B ; Emoji # 10.0 [13] (🥟..🥫) dumpling..canned food
|
||||
1F96C..1F970 ; Emoji # 11.0 [5] (🥬..🥰) leafy green..smiling face with hearts
|
||||
1F971 ; Emoji # 12.0 [1] (🥱) yawning face
|
||||
1F973..1F976 ; Emoji # 11.0 [4] (🥳..🥶) partying face..cold face
|
||||
1F97A ; Emoji # 11.0 [1] (🥺) pleading face
|
||||
1F97B ; Emoji # 12.0 [1] (🥻) sari
|
||||
1F97C..1F97F ; Emoji # 11.0 [4] (🥼..🥿) lab coat..flat shoe
|
||||
1F980..1F984 ; Emoji # 8.0 [5] (🦀..🦄) crab..unicorn
|
||||
1F985..1F991 ; Emoji # 9.0 [13] (🦅..🦑) eagle..squid
|
||||
1F992..1F997 ; Emoji # 10.0 [6] (🦒..🦗) giraffe..cricket
|
||||
1F998..1F9A2 ; Emoji # 11.0 [11] (🦘..🦢) kangaroo..swan
|
||||
1F9A5..1F9AA ; Emoji # 12.0 [6] (🦥..🦪) sloth..oyster
|
||||
1F9AE..1F9AF ; Emoji # 12.0 [2] (🦮..🦯) guide dog..probing cane
|
||||
1F9B0..1F9B9 ; Emoji # 11.0 [10] (🦰..🦹) red hair..supervillain
|
||||
1F9BA..1F9BF ; Emoji # 12.0 [6] (🦺..🦿) safety vest..mechanical leg
|
||||
1F9C0 ; Emoji # 8.0 [1] (🧀) cheese wedge
|
||||
1F9C1..1F9C2 ; Emoji # 11.0 [2] (🧁..🧂) cupcake..salt
|
||||
1F9C3..1F9CA ; Emoji # 12.0 [8] (🧃..🧊) beverage box..ice cube
|
||||
1F9CD..1F9CF ; Emoji # 12.0 [3] (🧍..🧏) person standing..deaf person
|
||||
1F9D0..1F9E6 ; Emoji # 10.0 [23] (🧐..🧦) face with monocle..socks
|
||||
1F9E7..1F9FF ; Emoji # 11.0 [25] (🧧..🧿) red envelope..nazar amulet
|
||||
1FA70..1FA73 ; Emoji # 12.0 [4] (🩰..🩳) ballet shoes..shorts
|
||||
1FA78..1FA7A ; Emoji # 12.0 [3] (🩸..🩺) drop of blood..stethoscope
|
||||
1FA80..1FA82 ; Emoji # 12.0 [3] (🪀..🪂) yo-yo..parachute
|
||||
1FA90..1FA95 ; Emoji # 12.0 [6] (🪐..🪕) ringed planet..banjo
|
||||
|
||||
# Total elements: 1311
|
||||
|
||||
# ================================================
|
||||
|
||||
# All omitted code points have Emoji_Presentation=No
|
||||
# @missing: 0000..10FFFF ; Emoji_Presentation ; No
|
||||
|
||||
231A..231B ; Emoji_Presentation # 1.1 [2] (⌚..⌛) watch..hourglass done
|
||||
23E9..23EC ; Emoji_Presentation # 6.0 [4] (⏩..⏬) fast-forward button..fast down button
|
||||
23F0 ; Emoji_Presentation # 6.0 [1] (⏰) alarm clock
|
||||
23F3 ; Emoji_Presentation # 6.0 [1] (⏳) hourglass not done
|
||||
25FD..25FE ; Emoji_Presentation # 3.2 [2] (◽..◾) white medium-small square..black medium-small square
|
||||
2614..2615 ; Emoji_Presentation # 4.0 [2] (☔..☕) umbrella with rain drops..hot beverage
|
||||
2648..2653 ; Emoji_Presentation # 1.1 [12] (♈..♓) Aries..Pisces
|
||||
267F ; Emoji_Presentation # 4.1 [1] (♿) wheelchair symbol
|
||||
2693 ; Emoji_Presentation # 4.1 [1] (⚓) anchor
|
||||
26A1 ; Emoji_Presentation # 4.0 [1] (⚡) high voltage
|
||||
26AA..26AB ; Emoji_Presentation # 4.1 [2] (⚪..⚫) white circle..black circle
|
||||
26BD..26BE ; Emoji_Presentation # 5.2 [2] (⚽..⚾) soccer ball..baseball
|
||||
26C4..26C5 ; Emoji_Presentation # 5.2 [2] (⛄..⛅) snowman without snow..sun behind cloud
|
||||
26CE ; Emoji_Presentation # 6.0 [1] (⛎) Ophiuchus
|
||||
26D4 ; Emoji_Presentation # 5.2 [1] (⛔) no entry
|
||||
26EA ; Emoji_Presentation # 5.2 [1] (⛪) church
|
||||
26F2..26F3 ; Emoji_Presentation # 5.2 [2] (⛲..⛳) fountain..flag in hole
|
||||
26F5 ; Emoji_Presentation # 5.2 [1] (⛵) sailboat
|
||||
26FA ; Emoji_Presentation # 5.2 [1] (⛺) tent
|
||||
26FD ; Emoji_Presentation # 5.2 [1] (⛽) fuel pump
|
||||
2705 ; Emoji_Presentation # 6.0 [1] (✅) check mark button
|
||||
270A..270B ; Emoji_Presentation # 6.0 [2] (✊..✋) raised fist..raised hand
|
||||
2728 ; Emoji_Presentation # 6.0 [1] (✨) sparkles
|
||||
274C ; Emoji_Presentation # 6.0 [1] (❌) cross mark
|
||||
274E ; Emoji_Presentation # 6.0 [1] (❎) cross mark button
|
||||
2753..2755 ; Emoji_Presentation # 6.0 [3] (❓..❕) question mark..white exclamation mark
|
||||
2757 ; Emoji_Presentation # 5.2 [1] (❗) exclamation mark
|
||||
2795..2797 ; Emoji_Presentation # 6.0 [3] (➕..➗) plus sign..division sign
|
||||
27B0 ; Emoji_Presentation # 6.0 [1] (➰) curly loop
|
||||
27BF ; Emoji_Presentation # 6.0 [1] (➿) double curly loop
|
||||
2B1B..2B1C ; Emoji_Presentation # 5.1 [2] (⬛..⬜) black large square..white large square
|
||||
2B50 ; Emoji_Presentation # 5.1 [1] (⭐) star
|
||||
2B55 ; Emoji_Presentation # 5.2 [1] (⭕) hollow red circle
|
||||
1F004 ; Emoji_Presentation # 5.1 [1] (🀄) mahjong red dragon
|
||||
1F0CF ; Emoji_Presentation # 6.0 [1] (🃏) joker
|
||||
1F18E ; Emoji_Presentation # 6.0 [1] (🆎) AB button (blood type)
|
||||
1F191..1F19A ; Emoji_Presentation # 6.0 [10] (🆑..🆚) CL button..VS button
|
||||
1F1E6..1F1FF ; Emoji_Presentation # 6.0 [26] (🇦..🇿) regional indicator symbol letter a..regional indicator symbol letter z
|
||||
1F201 ; Emoji_Presentation # 6.0 [1] (🈁) Japanese “here” button
|
||||
1F21A ; Emoji_Presentation # 5.2 [1] (🈚) Japanese “free of charge” button
|
||||
1F22F ; Emoji_Presentation # 5.2 [1] (🈯) Japanese “reserved” button
|
||||
1F232..1F236 ; Emoji_Presentation # 6.0 [5] (🈲..🈶) Japanese “prohibited” button..Japanese “not free of charge” button
|
||||
1F238..1F23A ; Emoji_Presentation # 6.0 [3] (🈸..🈺) Japanese “application” button..Japanese “open for business” button
|
||||
1F250..1F251 ; Emoji_Presentation # 6.0 [2] (🉐..🉑) Japanese “bargain” button..Japanese “acceptable” button
|
||||
1F300..1F320 ; Emoji_Presentation # 6.0 [33] (🌀..🌠) cyclone..shooting star
|
||||
1F32D..1F32F ; Emoji_Presentation # 8.0 [3] (🌭..🌯) hot dog..burrito
|
||||
1F330..1F335 ; Emoji_Presentation # 6.0 [6] (🌰..🌵) chestnut..cactus
|
||||
1F337..1F37C ; Emoji_Presentation # 6.0 [70] (🌷..🍼) tulip..baby bottle
|
||||
1F37E..1F37F ; Emoji_Presentation # 8.0 [2] (🍾..🍿) bottle with popping cork..popcorn
|
||||
1F380..1F393 ; Emoji_Presentation # 6.0 [20] (🎀..🎓) ribbon..graduation cap
|
||||
1F3A0..1F3C4 ; Emoji_Presentation # 6.0 [37] (🎠..🏄) carousel horse..person surfing
|
||||
1F3C5 ; Emoji_Presentation # 7.0 [1] (🏅) sports medal
|
||||
1F3C6..1F3CA ; Emoji_Presentation # 6.0 [5] (🏆..🏊) trophy..person swimming
|
||||
1F3CF..1F3D3 ; Emoji_Presentation # 8.0 [5] (🏏..🏓) cricket game..ping pong
|
||||
1F3E0..1F3F0 ; Emoji_Presentation # 6.0 [17] (🏠..🏰) house..castle
|
||||
1F3F4 ; Emoji_Presentation # 7.0 [1] (🏴) black flag
|
||||
1F3F8..1F3FF ; Emoji_Presentation # 8.0 [8] (🏸..🏿) badminton..dark skin tone
|
||||
1F400..1F43E ; Emoji_Presentation # 6.0 [63] (🐀..🐾) rat..paw prints
|
||||
1F440 ; Emoji_Presentation # 6.0 [1] (👀) eyes
|
||||
1F442..1F4F7 ; Emoji_Presentation # 6.0[182] (👂..📷) ear..camera
|
||||
1F4F8 ; Emoji_Presentation # 7.0 [1] (📸) camera with flash
|
||||
1F4F9..1F4FC ; Emoji_Presentation # 6.0 [4] (📹..📼) video camera..videocassette
|
||||
1F4FF ; Emoji_Presentation # 8.0 [1] (📿) prayer beads
|
||||
1F500..1F53D ; Emoji_Presentation # 6.0 [62] (🔀..🔽) shuffle tracks button..downwards button
|
||||
1F54B..1F54E ; Emoji_Presentation # 8.0 [4] (🕋..🕎) kaaba..menorah
|
||||
1F550..1F567 ; Emoji_Presentation # 6.0 [24] (🕐..🕧) one o’clock..twelve-thirty
|
||||
1F57A ; Emoji_Presentation # 9.0 [1] (🕺) man dancing
|
||||
1F595..1F596 ; Emoji_Presentation # 7.0 [2] (🖕..🖖) middle finger..vulcan salute
|
||||
1F5A4 ; Emoji_Presentation # 9.0 [1] (🖤) black heart
|
||||
1F5FB..1F5FF ; Emoji_Presentation # 6.0 [5] (🗻..🗿) mount fuji..moai
|
||||
1F600 ; Emoji_Presentation # 6.1 [1] (😀) grinning face
|
||||
1F601..1F610 ; Emoji_Presentation # 6.0 [16] (😁..😐) beaming face with smiling eyes..neutral face
|
||||
1F611 ; Emoji_Presentation # 6.1 [1] (😑) expressionless face
|
||||
1F612..1F614 ; Emoji_Presentation # 6.0 [3] (😒..😔) unamused face..pensive face
|
||||
1F615 ; Emoji_Presentation # 6.1 [1] (😕) confused face
|
||||
1F616 ; Emoji_Presentation # 6.0 [1] (😖) confounded face
|
||||
1F617 ; Emoji_Presentation # 6.1 [1] (😗) kissing face
|
||||
1F618 ; Emoji_Presentation # 6.0 [1] (😘) face blowing a kiss
|
||||
1F619 ; Emoji_Presentation # 6.1 [1] (😙) kissing face with smiling eyes
|
||||
1F61A ; Emoji_Presentation # 6.0 [1] (😚) kissing face with closed eyes
|
||||
1F61B ; Emoji_Presentation # 6.1 [1] (😛) face with tongue
|
||||
1F61C..1F61E ; Emoji_Presentation # 6.0 [3] (😜..😞) winking face with tongue..disappointed face
|
||||
1F61F ; Emoji_Presentation # 6.1 [1] (😟) worried face
|
||||
1F620..1F625 ; Emoji_Presentation # 6.0 [6] (😠..😥) angry face..sad but relieved face
|
||||
1F626..1F627 ; Emoji_Presentation # 6.1 [2] (😦..😧) frowning face with open mouth..anguished face
|
||||
1F628..1F62B ; Emoji_Presentation # 6.0 [4] (😨..😫) fearful face..tired face
|
||||
1F62C ; Emoji_Presentation # 6.1 [1] (😬) grimacing face
|
||||
1F62D ; Emoji_Presentation # 6.0 [1] (😭) loudly crying face
|
||||
1F62E..1F62F ; Emoji_Presentation # 6.1 [2] (😮..😯) face with open mouth..hushed face
|
||||
1F630..1F633 ; Emoji_Presentation # 6.0 [4] (😰..😳) anxious face with sweat..flushed face
|
||||
1F634 ; Emoji_Presentation # 6.1 [1] (😴) sleeping face
|
||||
1F635..1F640 ; Emoji_Presentation # 6.0 [12] (😵..🙀) dizzy face..weary cat
|
||||
1F641..1F642 ; Emoji_Presentation # 7.0 [2] (🙁..🙂) slightly frowning face..slightly smiling face
|
||||
1F643..1F644 ; Emoji_Presentation # 8.0 [2] (🙃..🙄) upside-down face..face with rolling eyes
|
||||
1F645..1F64F ; Emoji_Presentation # 6.0 [11] (🙅..🙏) person gesturing NO..folded hands
|
||||
1F680..1F6C5 ; Emoji_Presentation # 6.0 [70] (🚀..🛅) rocket..left luggage
|
||||
1F6CC ; Emoji_Presentation # 7.0 [1] (🛌) person in bed
|
||||
1F6D0 ; Emoji_Presentation # 8.0 [1] (🛐) place of worship
|
||||
1F6D1..1F6D2 ; Emoji_Presentation # 9.0 [2] (🛑..🛒) stop sign..shopping cart
|
||||
1F6D5 ; Emoji_Presentation # 12.0 [1] (🛕) hindu temple
|
||||
1F6EB..1F6EC ; Emoji_Presentation # 7.0 [2] (🛫..🛬) airplane departure..airplane arrival
|
||||
1F6F4..1F6F6 ; Emoji_Presentation # 9.0 [3] (🛴..🛶) kick scooter..canoe
|
||||
1F6F7..1F6F8 ; Emoji_Presentation # 10.0 [2] (🛷..🛸) sled..flying saucer
|
||||
1F6F9 ; Emoji_Presentation # 11.0 [1] (🛹) skateboard
|
||||
1F6FA ; Emoji_Presentation # 12.0 [1] (🛺) auto rickshaw
|
||||
1F7E0..1F7EB ; Emoji_Presentation # 12.0 [12] (🟠..🟫) orange circle..brown square
|
||||
1F90D..1F90F ; Emoji_Presentation # 12.0 [3] (🤍..🤏) white heart..pinching hand
|
||||
1F910..1F918 ; Emoji_Presentation # 8.0 [9] (🤐..🤘) zipper-mouth face..sign of the horns
|
||||
1F919..1F91E ; Emoji_Presentation # 9.0 [6] (🤙..🤞) call me hand..crossed fingers
|
||||
1F91F ; Emoji_Presentation # 10.0 [1] (🤟) love-you gesture
|
||||
1F920..1F927 ; Emoji_Presentation # 9.0 [8] (🤠..🤧) cowboy hat face..sneezing face
|
||||
1F928..1F92F ; Emoji_Presentation # 10.0 [8] (🤨..🤯) face with raised eyebrow..exploding head
|
||||
1F930 ; Emoji_Presentation # 9.0 [1] (🤰) pregnant woman
|
||||
1F931..1F932 ; Emoji_Presentation # 10.0 [2] (🤱..🤲) breast-feeding..palms up together
|
||||
1F933..1F93A ; Emoji_Presentation # 9.0 [8] (🤳..🤺) selfie..person fencing
|
||||
1F93C..1F93E ; Emoji_Presentation # 9.0 [3] (🤼..🤾) people wrestling..person playing handball
|
||||
1F93F ; Emoji_Presentation # 12.0 [1] (🤿) diving mask
|
||||
1F940..1F945 ; Emoji_Presentation # 9.0 [6] (🥀..🥅) wilted flower..goal net
|
||||
1F947..1F94B ; Emoji_Presentation # 9.0 [5] (🥇..🥋) 1st place medal..martial arts uniform
|
||||
1F94C ; Emoji_Presentation # 10.0 [1] (🥌) curling stone
|
||||
1F94D..1F94F ; Emoji_Presentation # 11.0 [3] (🥍..🥏) lacrosse..flying disc
|
||||
1F950..1F95E ; Emoji_Presentation # 9.0 [15] (🥐..🥞) croissant..pancakes
|
||||
1F95F..1F96B ; Emoji_Presentation # 10.0 [13] (🥟..🥫) dumpling..canned food
|
||||
1F96C..1F970 ; Emoji_Presentation # 11.0 [5] (🥬..🥰) leafy green..smiling face with hearts
|
||||
1F971 ; Emoji_Presentation # 12.0 [1] (🥱) yawning face
|
||||
1F973..1F976 ; Emoji_Presentation # 11.0 [4] (🥳..🥶) partying face..cold face
|
||||
1F97A ; Emoji_Presentation # 11.0 [1] (🥺) pleading face
|
||||
1F97B ; Emoji_Presentation # 12.0 [1] (🥻) sari
|
||||
1F97C..1F97F ; Emoji_Presentation # 11.0 [4] (🥼..🥿) lab coat..flat shoe
|
||||
1F980..1F984 ; Emoji_Presentation # 8.0 [5] (🦀..🦄) crab..unicorn
|
||||
1F985..1F991 ; Emoji_Presentation # 9.0 [13] (🦅..🦑) eagle..squid
|
||||
1F992..1F997 ; Emoji_Presentation # 10.0 [6] (🦒..🦗) giraffe..cricket
|
||||
1F998..1F9A2 ; Emoji_Presentation # 11.0 [11] (🦘..🦢) kangaroo..swan
|
||||
1F9A5..1F9AA ; Emoji_Presentation # 12.0 [6] (🦥..🦪) sloth..oyster
|
||||
1F9AE..1F9AF ; Emoji_Presentation # 12.0 [2] (🦮..🦯) guide dog..probing cane
|
||||
1F9B0..1F9B9 ; Emoji_Presentation # 11.0 [10] (🦰..🦹) red hair..supervillain
|
||||
1F9BA..1F9BF ; Emoji_Presentation # 12.0 [6] (🦺..🦿) safety vest..mechanical leg
|
||||
1F9C0 ; Emoji_Presentation # 8.0 [1] (🧀) cheese wedge
|
||||
1F9C1..1F9C2 ; Emoji_Presentation # 11.0 [2] (🧁..🧂) cupcake..salt
|
||||
1F9C3..1F9CA ; Emoji_Presentation # 12.0 [8] (🧃..🧊) beverage box..ice cube
|
||||
1F9CD..1F9CF ; Emoji_Presentation # 12.0 [3] (🧍..🧏) person standing..deaf person
|
||||
1F9D0..1F9E6 ; Emoji_Presentation # 10.0 [23] (🧐..🧦) face with monocle..socks
|
||||
1F9E7..1F9FF ; Emoji_Presentation # 11.0 [25] (🧧..🧿) red envelope..nazar amulet
|
||||
1FA70..1FA73 ; Emoji_Presentation # 12.0 [4] (🩰..🩳) ballet shoes..shorts
|
||||
1FA78..1FA7A ; Emoji_Presentation # 12.0 [3] (🩸..🩺) drop of blood..stethoscope
|
||||
1FA80..1FA82 ; Emoji_Presentation # 12.0 [3] (🪀..🪂) yo-yo..parachute
|
||||
1FA90..1FA95 ; Emoji_Presentation # 12.0 [6] (🪐..🪕) ringed planet..banjo
|
||||
|
||||
# Total elements: 1093
|
||||
|
||||
# ================================================
|
||||
|
||||
# All omitted code points have Emoji_Modifier=No
|
||||
# @missing: 0000..10FFFF ; Emoji_Modifier ; No
|
||||
|
||||
1F3FB..1F3FF ; Emoji_Modifier # 8.0 [5] (🏻..🏿) light skin tone..dark skin tone
|
||||
|
||||
# Total elements: 5
|
||||
|
||||
# ================================================
|
||||
|
||||
# All omitted code points have Emoji_Modifier_Base=No
|
||||
# @missing: 0000..10FFFF ; Emoji_Modifier_Base ; No
|
||||
|
||||
261D ; Emoji_Modifier_Base # 1.1 [1] (☝️) index pointing up
|
||||
26F9 ; Emoji_Modifier_Base # 5.2 [1] (⛹️) person bouncing ball
|
||||
270A..270B ; Emoji_Modifier_Base # 6.0 [2] (✊..✋) raised fist..raised hand
|
||||
270C..270D ; Emoji_Modifier_Base # 1.1 [2] (✌️..✍️) victory hand..writing hand
|
||||
1F385 ; Emoji_Modifier_Base # 6.0 [1] (🎅) Santa Claus
|
||||
1F3C2..1F3C4 ; Emoji_Modifier_Base # 6.0 [3] (🏂..🏄) snowboarder..person surfing
|
||||
1F3C7 ; Emoji_Modifier_Base # 6.0 [1] (🏇) horse racing
|
||||
1F3CA ; Emoji_Modifier_Base # 6.0 [1] (🏊) person swimming
|
||||
1F3CB..1F3CC ; Emoji_Modifier_Base # 7.0 [2] (🏋️..🏌️) person lifting weights..person golfing
|
||||
1F442..1F443 ; Emoji_Modifier_Base # 6.0 [2] (👂..👃) ear..nose
|
||||
1F446..1F450 ; Emoji_Modifier_Base # 6.0 [11] (👆..👐) backhand index pointing up..open hands
|
||||
1F466..1F478 ; Emoji_Modifier_Base # 6.0 [19] (👦..👸) boy..princess
|
||||
1F47C ; Emoji_Modifier_Base # 6.0 [1] (👼) baby angel
|
||||
1F481..1F483 ; Emoji_Modifier_Base # 6.0 [3] (💁..💃) person tipping hand..woman dancing
|
||||
1F485..1F487 ; Emoji_Modifier_Base # 6.0 [3] (💅..💇) nail polish..person getting haircut
|
||||
1F48F ; Emoji_Modifier_Base # 6.0 [1] (💏) kiss
|
||||
1F491 ; Emoji_Modifier_Base # 6.0 [1] (💑) couple with heart
|
||||
1F4AA ; Emoji_Modifier_Base # 6.0 [1] (💪) flexed biceps
|
||||
1F574..1F575 ; Emoji_Modifier_Base # 7.0 [2] (🕴️..🕵️) man in suit levitating..detective
|
||||
1F57A ; Emoji_Modifier_Base # 9.0 [1] (🕺) man dancing
|
||||
1F590 ; Emoji_Modifier_Base # 7.0 [1] (🖐️) hand with fingers splayed
|
||||
1F595..1F596 ; Emoji_Modifier_Base # 7.0 [2] (🖕..🖖) middle finger..vulcan salute
|
||||
1F645..1F647 ; Emoji_Modifier_Base # 6.0 [3] (🙅..🙇) person gesturing NO..person bowing
|
||||
1F64B..1F64F ; Emoji_Modifier_Base # 6.0 [5] (🙋..🙏) person raising hand..folded hands
|
||||
1F6A3 ; Emoji_Modifier_Base # 6.0 [1] (🚣) person rowing boat
|
||||
1F6B4..1F6B6 ; Emoji_Modifier_Base # 6.0 [3] (🚴..🚶) person biking..person walking
|
||||
1F6C0 ; Emoji_Modifier_Base # 6.0 [1] (🛀) person taking bath
|
||||
1F6CC ; Emoji_Modifier_Base # 7.0 [1] (🛌) person in bed
|
||||
1F90F ; Emoji_Modifier_Base # 12.0 [1] (🤏) pinching hand
|
||||
1F918 ; Emoji_Modifier_Base # 8.0 [1] (🤘) sign of the horns
|
||||
1F919..1F91E ; Emoji_Modifier_Base # 9.0 [6] (🤙..🤞) call me hand..crossed fingers
|
||||
1F91F ; Emoji_Modifier_Base # 10.0 [1] (🤟) love-you gesture
|
||||
1F926 ; Emoji_Modifier_Base # 9.0 [1] (🤦) person facepalming
|
||||
1F930 ; Emoji_Modifier_Base # 9.0 [1] (🤰) pregnant woman
|
||||
1F931..1F932 ; Emoji_Modifier_Base # 10.0 [2] (🤱..🤲) breast-feeding..palms up together
|
||||
1F933..1F939 ; Emoji_Modifier_Base # 9.0 [7] (🤳..🤹) selfie..person juggling
|
||||
1F93C..1F93E ; Emoji_Modifier_Base # 9.0 [3] (🤼..🤾) people wrestling..person playing handball
|
||||
1F9B5..1F9B6 ; Emoji_Modifier_Base # 11.0 [2] (🦵..🦶) leg..foot
|
||||
1F9B8..1F9B9 ; Emoji_Modifier_Base # 11.0 [2] (🦸..🦹) superhero..supervillain
|
||||
1F9BB ; Emoji_Modifier_Base # 12.0 [1] (🦻) ear with hearing aid
|
||||
1F9CD..1F9CF ; Emoji_Modifier_Base # 12.0 [3] (🧍..🧏) person standing..deaf person
|
||||
1F9D1..1F9DD ; Emoji_Modifier_Base # 10.0 [13] (🧑..🧝) person..elf
|
||||
|
||||
# Total elements: 120
|
||||
|
||||
# ================================================
|
||||
|
||||
# All omitted code points have Emoji_Component=No
|
||||
# @missing: 0000..10FFFF ; Emoji_Component ; No
|
||||
|
||||
0023 ; Emoji_Component # 1.1 [1] (#️) number sign
|
||||
002A ; Emoji_Component # 1.1 [1] (*️) asterisk
|
||||
0030..0039 ; Emoji_Component # 1.1 [10] (0️..9️) digit zero..digit nine
|
||||
200D ; Emoji_Component # 1.1 [1] () zero width joiner
|
||||
20E3 ; Emoji_Component # 3.0 [1] (⃣) combining enclosing keycap
|
||||
FE0F ; Emoji_Component # 3.2 [1] () VARIATION SELECTOR-16
|
||||
1F1E6..1F1FF ; Emoji_Component # 6.0 [26] (🇦..🇿) regional indicator symbol letter a..regional indicator symbol letter z
|
||||
1F3FB..1F3FF ; Emoji_Component # 8.0 [5] (🏻..🏿) light skin tone..dark skin tone
|
||||
1F9B0..1F9B3 ; Emoji_Component # 11.0 [4] (🦰..🦳) red hair..white hair
|
||||
E0020..E007F ; Emoji_Component # 3.1 [96] (..) tag space..cancel tag
|
||||
|
||||
# Total elements: 146
|
||||
|
||||
# ================================================
|
||||
|
||||
# All omitted code points have Extended_Pictographic=No
|
||||
# @missing: 0000..10FFFF ; Extended_Pictographic ; No
|
||||
|
||||
00A9 ; Extended_Pictographic# 1.1 [1] (©️) copyright
|
||||
00AE ; Extended_Pictographic# 1.1 [1] (®️) registered
|
||||
203C ; Extended_Pictographic# 1.1 [1] (‼️) double exclamation mark
|
||||
2049 ; Extended_Pictographic# 3.0 [1] (⁉️) exclamation question mark
|
||||
2122 ; Extended_Pictographic# 1.1 [1] (™️) trade mark
|
||||
2139 ; Extended_Pictographic# 3.0 [1] (ℹ️) information
|
||||
2194..2199 ; Extended_Pictographic# 1.1 [6] (↔️..↙️) left-right arrow..down-left arrow
|
||||
21A9..21AA ; Extended_Pictographic# 1.1 [2] (↩️..↪️) right arrow curving left..left arrow curving right
|
||||
231A..231B ; Extended_Pictographic# 1.1 [2] (⌚..⌛) watch..hourglass done
|
||||
2328 ; Extended_Pictographic# 1.1 [1] (⌨️) keyboard
|
||||
2388 ; Extended_Pictographic# 3.0 [1] (⎈) HELM SYMBOL
|
||||
23CF ; Extended_Pictographic# 4.0 [1] (⏏️) eject button
|
||||
23E9..23F3 ; Extended_Pictographic# 6.0 [11] (⏩..⏳) fast-forward button..hourglass not done
|
||||
23F8..23FA ; Extended_Pictographic# 7.0 [3] (⏸️..⏺️) pause button..record button
|
||||
24C2 ; Extended_Pictographic# 1.1 [1] (Ⓜ️) circled M
|
||||
25AA..25AB ; Extended_Pictographic# 1.1 [2] (▪️..▫️) black small square..white small square
|
||||
25B6 ; Extended_Pictographic# 1.1 [1] (▶️) play button
|
||||
25C0 ; Extended_Pictographic# 1.1 [1] (◀️) reverse button
|
||||
25FB..25FE ; Extended_Pictographic# 3.2 [4] (◻️..◾) white medium square..black medium-small square
|
||||
2600..2605 ; Extended_Pictographic# 1.1 [6] (☀️..★) sun..BLACK STAR
|
||||
2607..2612 ; Extended_Pictographic# 1.1 [12] (☇..☒) LIGHTNING..BALLOT BOX WITH X
|
||||
2614..2615 ; Extended_Pictographic# 4.0 [2] (☔..☕) umbrella with rain drops..hot beverage
|
||||
2616..2617 ; Extended_Pictographic# 3.2 [2] (☖..☗) WHITE SHOGI PIECE..BLACK SHOGI PIECE
|
||||
2618 ; Extended_Pictographic# 4.1 [1] (☘️) shamrock
|
||||
2619 ; Extended_Pictographic# 3.0 [1] (☙) REVERSED ROTATED FLORAL HEART BULLET
|
||||
261A..266F ; Extended_Pictographic# 1.1 [86] (☚..♯) BLACK LEFT POINTING INDEX..MUSIC SHARP SIGN
|
||||
2670..2671 ; Extended_Pictographic# 3.0 [2] (♰..♱) WEST SYRIAC CROSS..EAST SYRIAC CROSS
|
||||
2672..267D ; Extended_Pictographic# 3.2 [12] (♲..♽) UNIVERSAL RECYCLING SYMBOL..PARTIALLY-RECYCLED PAPER SYMBOL
|
||||
267E..267F ; Extended_Pictographic# 4.1 [2] (♾️..♿) infinity..wheelchair symbol
|
||||
2680..2685 ; Extended_Pictographic# 3.2 [6] (⚀..⚅) DIE FACE-1..DIE FACE-6
|
||||
2690..2691 ; Extended_Pictographic# 4.0 [2] (⚐..⚑) WHITE FLAG..BLACK FLAG
|
||||
2692..269C ; Extended_Pictographic# 4.1 [11] (⚒️..⚜️) hammer and pick..fleur-de-lis
|
||||
269D ; Extended_Pictographic# 5.1 [1] (⚝) OUTLINED WHITE STAR
|
||||
269E..269F ; Extended_Pictographic# 5.2 [2] (⚞..⚟) THREE LINES CONVERGING RIGHT..THREE LINES CONVERGING LEFT
|
||||
26A0..26A1 ; Extended_Pictographic# 4.0 [2] (⚠️..⚡) warning..high voltage
|
||||
26A2..26B1 ; Extended_Pictographic# 4.1 [16] (⚢..⚱️) DOUBLED FEMALE SIGN..funeral urn
|
||||
26B2 ; Extended_Pictographic# 5.0 [1] (⚲) NEUTER
|
||||
26B3..26BC ; Extended_Pictographic# 5.1 [10] (⚳..⚼) CERES..SESQUIQUADRATE
|
||||
26BD..26BF ; Extended_Pictographic# 5.2 [3] (⚽..⚿) soccer ball..SQUARED KEY
|
||||
26C0..26C3 ; Extended_Pictographic# 5.1 [4] (⛀..⛃) WHITE DRAUGHTS MAN..BLACK DRAUGHTS KING
|
||||
26C4..26CD ; Extended_Pictographic# 5.2 [10] (⛄..⛍) snowman without snow..DISABLED CAR
|
||||
26CE ; Extended_Pictographic# 6.0 [1] (⛎) Ophiuchus
|
||||
26CF..26E1 ; Extended_Pictographic# 5.2 [19] (⛏️..⛡) pick..RESTRICTED LEFT ENTRY-2
|
||||
26E2 ; Extended_Pictographic# 6.0 [1] (⛢) ASTRONOMICAL SYMBOL FOR URANUS
|
||||
26E3 ; Extended_Pictographic# 5.2 [1] (⛣) HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE
|
||||
26E4..26E7 ; Extended_Pictographic# 6.0 [4] (⛤..⛧) PENTAGRAM..INVERTED PENTAGRAM
|
||||
26E8..26FF ; Extended_Pictographic# 5.2 [24] (⛨..⛿) BLACK CROSS ON SHIELD..WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE
|
||||
2700 ; Extended_Pictographic# 7.0 [1] (✀) BLACK SAFETY SCISSORS
|
||||
2701..2704 ; Extended_Pictographic# 1.1 [4] (✁..✄) UPPER BLADE SCISSORS..WHITE SCISSORS
|
||||
2705 ; Extended_Pictographic# 6.0 [1] (✅) check mark button
|
||||
2708..2709 ; Extended_Pictographic# 1.1 [2] (✈️..✉️) airplane..envelope
|
||||
270A..270B ; Extended_Pictographic# 6.0 [2] (✊..✋) raised fist..raised hand
|
||||
270C..2712 ; Extended_Pictographic# 1.1 [7] (✌️..✒️) victory hand..black nib
|
||||
2714 ; Extended_Pictographic# 1.1 [1] (✔️) check mark
|
||||
2716 ; Extended_Pictographic# 1.1 [1] (✖️) multiplication sign
|
||||
271D ; Extended_Pictographic# 1.1 [1] (✝️) latin cross
|
||||
2721 ; Extended_Pictographic# 1.1 [1] (✡️) star of David
|
||||
2728 ; Extended_Pictographic# 6.0 [1] (✨) sparkles
|
||||
2733..2734 ; Extended_Pictographic# 1.1 [2] (✳️..✴️) eight-spoked asterisk..eight-pointed star
|
||||
2744 ; Extended_Pictographic# 1.1 [1] (❄️) snowflake
|
||||
2747 ; Extended_Pictographic# 1.1 [1] (❇️) sparkle
|
||||
274C ; Extended_Pictographic# 6.0 [1] (❌) cross mark
|
||||
274E ; Extended_Pictographic# 6.0 [1] (❎) cross mark button
|
||||
2753..2755 ; Extended_Pictographic# 6.0 [3] (❓..❕) question mark..white exclamation mark
|
||||
2757 ; Extended_Pictographic# 5.2 [1] (❗) exclamation mark
|
||||
2763..2767 ; Extended_Pictographic# 1.1 [5] (❣️..❧) heart exclamation..ROTATED FLORAL HEART BULLET
|
||||
2795..2797 ; Extended_Pictographic# 6.0 [3] (➕..➗) plus sign..division sign
|
||||
27A1 ; Extended_Pictographic# 1.1 [1] (➡️) right arrow
|
||||
27B0 ; Extended_Pictographic# 6.0 [1] (➰) curly loop
|
||||
27BF ; Extended_Pictographic# 6.0 [1] (➿) double curly loop
|
||||
2934..2935 ; Extended_Pictographic# 3.2 [2] (⤴️..⤵️) right arrow curving up..right arrow curving down
|
||||
2B05..2B07 ; Extended_Pictographic# 4.0 [3] (⬅️..⬇️) left arrow..down arrow
|
||||
2B1B..2B1C ; Extended_Pictographic# 5.1 [2] (⬛..⬜) black large square..white large square
|
||||
2B50 ; Extended_Pictographic# 5.1 [1] (⭐) star
|
||||
2B55 ; Extended_Pictographic# 5.2 [1] (⭕) hollow red circle
|
||||
3030 ; Extended_Pictographic# 1.1 [1] (〰️) wavy dash
|
||||
303D ; Extended_Pictographic# 3.2 [1] (〽️) part alternation mark
|
||||
3297 ; Extended_Pictographic# 1.1 [1] (㊗️) Japanese “congratulations” button
|
||||
3299 ; Extended_Pictographic# 1.1 [1] (㊙️) Japanese “secret” button
|
||||
1F000..1F02B ; Extended_Pictographic# 5.1 [44] (🀀..🀫) MAHJONG TILE EAST WIND..MAHJONG TILE BACK
|
||||
1F02C..1F02F ; Extended_Pictographic# NA [4] (..) <reserved-1F02C>..<reserved-1F02F>
|
||||
1F030..1F093 ; Extended_Pictographic# 5.1[100] (🀰..🂓) DOMINO TILE HORIZONTAL BACK..DOMINO TILE VERTICAL-06-06
|
||||
1F094..1F09F ; Extended_Pictographic# NA [12] (..) <reserved-1F094>..<reserved-1F09F>
|
||||
1F0A0..1F0AE ; Extended_Pictographic# 6.0 [15] (🂠..🂮) PLAYING CARD BACK..PLAYING CARD KING OF SPADES
|
||||
1F0AF..1F0B0 ; Extended_Pictographic# NA [2] (..) <reserved-1F0AF>..<reserved-1F0B0>
|
||||
1F0B1..1F0BE ; Extended_Pictographic# 6.0 [14] (🂱..🂾) PLAYING CARD ACE OF HEARTS..PLAYING CARD KING OF HEARTS
|
||||
1F0BF ; Extended_Pictographic# 7.0 [1] (🂿) PLAYING CARD RED JOKER
|
||||
1F0C0 ; Extended_Pictographic# NA [1] () <reserved-1F0C0>
|
||||
1F0C1..1F0CF ; Extended_Pictographic# 6.0 [15] (🃁..🃏) PLAYING CARD ACE OF DIAMONDS..joker
|
||||
1F0D0 ; Extended_Pictographic# NA [1] () <reserved-1F0D0>
|
||||
1F0D1..1F0DF ; Extended_Pictographic# 6.0 [15] (🃑..🃟) PLAYING CARD ACE OF CLUBS..PLAYING CARD WHITE JOKER
|
||||
1F0E0..1F0F5 ; Extended_Pictographic# 7.0 [22] (🃠..🃵) PLAYING CARD FOOL..PLAYING CARD TRUMP-21
|
||||
1F0F6..1F0FF ; Extended_Pictographic# NA [10] (..) <reserved-1F0F6>..<reserved-1F0FF>
|
||||
1F10D..1F10F ; Extended_Pictographic# NA [3] (🄍..🄏) <reserved-1F10D>..<reserved-1F10F>
|
||||
1F12F ; Extended_Pictographic# 11.0 [1] (🄯) COPYLEFT SYMBOL
|
||||
1F16C ; Extended_Pictographic# 12.0 [1] (🅬) RAISED MR SIGN
|
||||
1F16D..1F16F ; Extended_Pictographic# NA [3] (🅭..🅯) <reserved-1F16D>..<reserved-1F16F>
|
||||
1F170..1F171 ; Extended_Pictographic# 6.0 [2] (🅰️..🅱️) A button (blood type)..B button (blood type)
|
||||
1F17E ; Extended_Pictographic# 6.0 [1] (🅾️) O button (blood type)
|
||||
1F17F ; Extended_Pictographic# 5.2 [1] (🅿️) P button
|
||||
1F18E ; Extended_Pictographic# 6.0 [1] (🆎) AB button (blood type)
|
||||
1F191..1F19A ; Extended_Pictographic# 6.0 [10] (🆑..🆚) CL button..VS button
|
||||
1F1AD..1F1E5 ; Extended_Pictographic# NA [57] (🆭..) <reserved-1F1AD>..<reserved-1F1E5>
|
||||
1F201..1F202 ; Extended_Pictographic# 6.0 [2] (🈁..🈂️) Japanese “here” button..Japanese “service charge” button
|
||||
1F203..1F20F ; Extended_Pictographic# NA [13] (..) <reserved-1F203>..<reserved-1F20F>
|
||||
1F21A ; Extended_Pictographic# 5.2 [1] (🈚) Japanese “free of charge” button
|
||||
1F22F ; Extended_Pictographic# 5.2 [1] (🈯) Japanese “reserved” button
|
||||
1F232..1F23A ; Extended_Pictographic# 6.0 [9] (🈲..🈺) Japanese “prohibited” button..Japanese “open for business” button
|
||||
1F23C..1F23F ; Extended_Pictographic# NA [4] (..) <reserved-1F23C>..<reserved-1F23F>
|
||||
1F249..1F24F ; Extended_Pictographic# NA [7] (..) <reserved-1F249>..<reserved-1F24F>
|
||||
1F250..1F251 ; Extended_Pictographic# 6.0 [2] (🉐..🉑) Japanese “bargain” button..Japanese “acceptable” button
|
||||
1F252..1F25F ; Extended_Pictographic# NA [14] (..) <reserved-1F252>..<reserved-1F25F>
|
||||
1F260..1F265 ; Extended_Pictographic# 10.0 [6] (🉠..🉥) ROUNDED SYMBOL FOR FU..ROUNDED SYMBOL FOR CAI
|
||||
1F266..1F2FF ; Extended_Pictographic# NA[154] (..) <reserved-1F266>..<reserved-1F2FF>
|
||||
1F300..1F320 ; Extended_Pictographic# 6.0 [33] (🌀..🌠) cyclone..shooting star
|
||||
1F321..1F32C ; Extended_Pictographic# 7.0 [12] (🌡️..🌬️) thermometer..wind face
|
||||
1F32D..1F32F ; Extended_Pictographic# 8.0 [3] (🌭..🌯) hot dog..burrito
|
||||
1F330..1F335 ; Extended_Pictographic# 6.0 [6] (🌰..🌵) chestnut..cactus
|
||||
1F336 ; Extended_Pictographic# 7.0 [1] (🌶️) hot pepper
|
||||
1F337..1F37C ; Extended_Pictographic# 6.0 [70] (🌷..🍼) tulip..baby bottle
|
||||
1F37D ; Extended_Pictographic# 7.0 [1] (🍽️) fork and knife with plate
|
||||
1F37E..1F37F ; Extended_Pictographic# 8.0 [2] (🍾..🍿) bottle with popping cork..popcorn
|
||||
1F380..1F393 ; Extended_Pictographic# 6.0 [20] (🎀..🎓) ribbon..graduation cap
|
||||
1F394..1F39F ; Extended_Pictographic# 7.0 [12] (🎔..🎟️) HEART WITH TIP ON THE LEFT..admission tickets
|
||||
1F3A0..1F3C4 ; Extended_Pictographic# 6.0 [37] (🎠..🏄) carousel horse..person surfing
|
||||
1F3C5 ; Extended_Pictographic# 7.0 [1] (🏅) sports medal
|
||||
1F3C6..1F3CA ; Extended_Pictographic# 6.0 [5] (🏆..🏊) trophy..person swimming
|
||||
1F3CB..1F3CE ; Extended_Pictographic# 7.0 [4] (🏋️..🏎️) person lifting weights..racing car
|
||||
1F3CF..1F3D3 ; Extended_Pictographic# 8.0 [5] (🏏..🏓) cricket game..ping pong
|
||||
1F3D4..1F3DF ; Extended_Pictographic# 7.0 [12] (🏔️..🏟️) snow-capped mountain..stadium
|
||||
1F3E0..1F3F0 ; Extended_Pictographic# 6.0 [17] (🏠..🏰) house..castle
|
||||
1F3F1..1F3F7 ; Extended_Pictographic# 7.0 [7] (🏱..🏷️) WHITE PENNANT..label
|
||||
1F3F8..1F3FA ; Extended_Pictographic# 8.0 [3] (🏸..🏺) badminton..amphora
|
||||
1F400..1F43E ; Extended_Pictographic# 6.0 [63] (🐀..🐾) rat..paw prints
|
||||
1F43F ; Extended_Pictographic# 7.0 [1] (🐿️) chipmunk
|
||||
1F440 ; Extended_Pictographic# 6.0 [1] (👀) eyes
|
||||
1F441 ; Extended_Pictographic# 7.0 [1] (👁️) eye
|
||||
1F442..1F4F7 ; Extended_Pictographic# 6.0[182] (👂..📷) ear..camera
|
||||
1F4F8 ; Extended_Pictographic# 7.0 [1] (📸) camera with flash
|
||||
1F4F9..1F4FC ; Extended_Pictographic# 6.0 [4] (📹..📼) video camera..videocassette
|
||||
1F4FD..1F4FE ; Extended_Pictographic# 7.0 [2] (📽️..📾) film projector..PORTABLE STEREO
|
||||
1F4FF ; Extended_Pictographic# 8.0 [1] (📿) prayer beads
|
||||
1F500..1F53D ; Extended_Pictographic# 6.0 [62] (🔀..🔽) shuffle tracks button..downwards button
|
||||
1F546..1F54A ; Extended_Pictographic# 7.0 [5] (🕆..🕊️) WHITE LATIN CROSS..dove
|
||||
1F54B..1F54F ; Extended_Pictographic# 8.0 [5] (🕋..🕏) kaaba..BOWL OF HYGIEIA
|
||||
1F550..1F567 ; Extended_Pictographic# 6.0 [24] (🕐..🕧) one o’clock..twelve-thirty
|
||||
1F568..1F579 ; Extended_Pictographic# 7.0 [18] (🕨..🕹️) RIGHT SPEAKER..joystick
|
||||
1F57A ; Extended_Pictographic# 9.0 [1] (🕺) man dancing
|
||||
1F57B..1F5A3 ; Extended_Pictographic# 7.0 [41] (🕻..🖣) LEFT HAND TELEPHONE RECEIVER..BLACK DOWN POINTING BACKHAND INDEX
|
||||
1F5A4 ; Extended_Pictographic# 9.0 [1] (🖤) black heart
|
||||
1F5A5..1F5FA ; Extended_Pictographic# 7.0 [86] (🖥️..🗺️) desktop computer..world map
|
||||
1F5FB..1F5FF ; Extended_Pictographic# 6.0 [5] (🗻..🗿) mount fuji..moai
|
||||
1F600 ; Extended_Pictographic# 6.1 [1] (😀) grinning face
|
||||
1F601..1F610 ; Extended_Pictographic# 6.0 [16] (😁..😐) beaming face with smiling eyes..neutral face
|
||||
1F611 ; Extended_Pictographic# 6.1 [1] (😑) expressionless face
|
||||
1F612..1F614 ; Extended_Pictographic# 6.0 [3] (😒..😔) unamused face..pensive face
|
||||
1F615 ; Extended_Pictographic# 6.1 [1] (😕) confused face
|
||||
1F616 ; Extended_Pictographic# 6.0 [1] (😖) confounded face
|
||||
1F617 ; Extended_Pictographic# 6.1 [1] (😗) kissing face
|
||||
1F618 ; Extended_Pictographic# 6.0 [1] (😘) face blowing a kiss
|
||||
1F619 ; Extended_Pictographic# 6.1 [1] (😙) kissing face with smiling eyes
|
||||
1F61A ; Extended_Pictographic# 6.0 [1] (😚) kissing face with closed eyes
|
||||
1F61B ; Extended_Pictographic# 6.1 [1] (😛) face with tongue
|
||||
1F61C..1F61E ; Extended_Pictographic# 6.0 [3] (😜..😞) winking face with tongue..disappointed face
|
||||
1F61F ; Extended_Pictographic# 6.1 [1] (😟) worried face
|
||||
1F620..1F625 ; Extended_Pictographic# 6.0 [6] (😠..😥) angry face..sad but relieved face
|
||||
1F626..1F627 ; Extended_Pictographic# 6.1 [2] (😦..😧) frowning face with open mouth..anguished face
|
||||
1F628..1F62B ; Extended_Pictographic# 6.0 [4] (😨..😫) fearful face..tired face
|
||||
1F62C ; Extended_Pictographic# 6.1 [1] (😬) grimacing face
|
||||
1F62D ; Extended_Pictographic# 6.0 [1] (😭) loudly crying face
|
||||
1F62E..1F62F ; Extended_Pictographic# 6.1 [2] (😮..😯) face with open mouth..hushed face
|
||||
1F630..1F633 ; Extended_Pictographic# 6.0 [4] (😰..😳) anxious face with sweat..flushed face
|
||||
1F634 ; Extended_Pictographic# 6.1 [1] (😴) sleeping face
|
||||
1F635..1F640 ; Extended_Pictographic# 6.0 [12] (😵..🙀) dizzy face..weary cat
|
||||
1F641..1F642 ; Extended_Pictographic# 7.0 [2] (🙁..🙂) slightly frowning face..slightly smiling face
|
||||
1F643..1F644 ; Extended_Pictographic# 8.0 [2] (🙃..🙄) upside-down face..face with rolling eyes
|
||||
1F645..1F64F ; Extended_Pictographic# 6.0 [11] (🙅..🙏) person gesturing NO..folded hands
|
||||
1F680..1F6C5 ; Extended_Pictographic# 6.0 [70] (🚀..🛅) rocket..left luggage
|
||||
1F6C6..1F6CF ; Extended_Pictographic# 7.0 [10] (🛆..🛏️) TRIANGLE WITH ROUNDED CORNERS..bed
|
||||
1F6D0 ; Extended_Pictographic# 8.0 [1] (🛐) place of worship
|
||||
1F6D1..1F6D2 ; Extended_Pictographic# 9.0 [2] (🛑..🛒) stop sign..shopping cart
|
||||
1F6D3..1F6D4 ; Extended_Pictographic# 10.0 [2] (🛓..🛔) STUPA..PAGODA
|
||||
1F6D5 ; Extended_Pictographic# 12.0 [1] (🛕) hindu temple
|
||||
1F6D6..1F6DF ; Extended_Pictographic# NA [10] (🛖..🛟) <reserved-1F6D6>..<reserved-1F6DF>
|
||||
1F6E0..1F6EC ; Extended_Pictographic# 7.0 [13] (🛠️..🛬) hammer and wrench..airplane arrival
|
||||
1F6ED..1F6EF ; Extended_Pictographic# NA [3] (..) <reserved-1F6ED>..<reserved-1F6EF>
|
||||
1F6F0..1F6F3 ; Extended_Pictographic# 7.0 [4] (🛰️..🛳️) satellite..passenger ship
|
||||
1F6F4..1F6F6 ; Extended_Pictographic# 9.0 [3] (🛴..🛶) kick scooter..canoe
|
||||
1F6F7..1F6F8 ; Extended_Pictographic# 10.0 [2] (🛷..🛸) sled..flying saucer
|
||||
1F6F9 ; Extended_Pictographic# 11.0 [1] (🛹) skateboard
|
||||
1F6FA ; Extended_Pictographic# 12.0 [1] (🛺) auto rickshaw
|
||||
1F6FB..1F6FF ; Extended_Pictographic# NA [5] (🛻..) <reserved-1F6FB>..<reserved-1F6FF>
|
||||
1F774..1F77F ; Extended_Pictographic# NA [12] (🝴..🝿) <reserved-1F774>..<reserved-1F77F>
|
||||
1F7D5..1F7D8 ; Extended_Pictographic# 11.0 [4] (🟕..🟘) CIRCLED TRIANGLE..NEGATIVE CIRCLED SQUARE
|
||||
1F7D9..1F7DF ; Extended_Pictographic# NA [7] (🟙..) <reserved-1F7D9>..<reserved-1F7DF>
|
||||
1F7E0..1F7EB ; Extended_Pictographic# 12.0 [12] (🟠..🟫) orange circle..brown square
|
||||
1F7EC..1F7FF ; Extended_Pictographic# NA [20] (..) <reserved-1F7EC>..<reserved-1F7FF>
|
||||
1F80C..1F80F ; Extended_Pictographic# NA [4] (..) <reserved-1F80C>..<reserved-1F80F>
|
||||
1F848..1F84F ; Extended_Pictographic# NA [8] (..) <reserved-1F848>..<reserved-1F84F>
|
||||
1F85A..1F85F ; Extended_Pictographic# NA [6] (..) <reserved-1F85A>..<reserved-1F85F>
|
||||
1F888..1F88F ; Extended_Pictographic# NA [8] (..) <reserved-1F888>..<reserved-1F88F>
|
||||
1F8AE..1F8FF ; Extended_Pictographic# NA [82] (..) <reserved-1F8AE>..<reserved-1F8FF>
|
||||
1F90C ; Extended_Pictographic# NA [1] (🤌) <reserved-1F90C>
|
||||
1F90D..1F90F ; Extended_Pictographic# 12.0 [3] (🤍..🤏) white heart..pinching hand
|
||||
1F910..1F918 ; Extended_Pictographic# 8.0 [9] (🤐..🤘) zipper-mouth face..sign of the horns
|
||||
1F919..1F91E ; Extended_Pictographic# 9.0 [6] (🤙..🤞) call me hand..crossed fingers
|
||||
1F91F ; Extended_Pictographic# 10.0 [1] (🤟) love-you gesture
|
||||
1F920..1F927 ; Extended_Pictographic# 9.0 [8] (🤠..🤧) cowboy hat face..sneezing face
|
||||
1F928..1F92F ; Extended_Pictographic# 10.0 [8] (🤨..🤯) face with raised eyebrow..exploding head
|
||||
1F930 ; Extended_Pictographic# 9.0 [1] (🤰) pregnant woman
|
||||
1F931..1F932 ; Extended_Pictographic# 10.0 [2] (🤱..🤲) breast-feeding..palms up together
|
||||
1F933..1F93A ; Extended_Pictographic# 9.0 [8] (🤳..🤺) selfie..person fencing
|
||||
1F93C..1F93E ; Extended_Pictographic# 9.0 [3] (🤼..🤾) people wrestling..person playing handball
|
||||
1F93F ; Extended_Pictographic# 12.0 [1] (🤿) diving mask
|
||||
1F940..1F945 ; Extended_Pictographic# 9.0 [6] (🥀..🥅) wilted flower..goal net
|
||||
1F947..1F94B ; Extended_Pictographic# 9.0 [5] (🥇..🥋) 1st place medal..martial arts uniform
|
||||
1F94C ; Extended_Pictographic# 10.0 [1] (🥌) curling stone
|
||||
1F94D..1F94F ; Extended_Pictographic# 11.0 [3] (🥍..🥏) lacrosse..flying disc
|
||||
1F950..1F95E ; Extended_Pictographic# 9.0 [15] (🥐..🥞) croissant..pancakes
|
||||
1F95F..1F96B ; Extended_Pictographic# 10.0 [13] (🥟..🥫) dumpling..canned food
|
||||
1F96C..1F970 ; Extended_Pictographic# 11.0 [5] (🥬..🥰) leafy green..smiling face with hearts
|
||||
1F971 ; Extended_Pictographic# 12.0 [1] (🥱) yawning face
|
||||
1F972 ; Extended_Pictographic# NA [1] (🥲) <reserved-1F972>
|
||||
1F973..1F976 ; Extended_Pictographic# 11.0 [4] (🥳..🥶) partying face..cold face
|
||||
1F977..1F979 ; Extended_Pictographic# NA [3] (🥷..🥹) <reserved-1F977>..<reserved-1F979>
|
||||
1F97A ; Extended_Pictographic# 11.0 [1] (🥺) pleading face
|
||||
1F97B ; Extended_Pictographic# 12.0 [1] (🥻) sari
|
||||
1F97C..1F97F ; Extended_Pictographic# 11.0 [4] (🥼..🥿) lab coat..flat shoe
|
||||
1F980..1F984 ; Extended_Pictographic# 8.0 [5] (🦀..🦄) crab..unicorn
|
||||
1F985..1F991 ; Extended_Pictographic# 9.0 [13] (🦅..🦑) eagle..squid
|
||||
1F992..1F997 ; Extended_Pictographic# 10.0 [6] (🦒..🦗) giraffe..cricket
|
||||
1F998..1F9A2 ; Extended_Pictographic# 11.0 [11] (🦘..🦢) kangaroo..swan
|
||||
1F9A3..1F9A4 ; Extended_Pictographic# NA [2] (🦣..🦤) <reserved-1F9A3>..<reserved-1F9A4>
|
||||
1F9A5..1F9AA ; Extended_Pictographic# 12.0 [6] (🦥..🦪) sloth..oyster
|
||||
1F9AB..1F9AD ; Extended_Pictographic# NA [3] (🦫..🦭) <reserved-1F9AB>..<reserved-1F9AD>
|
||||
1F9AE..1F9AF ; Extended_Pictographic# 12.0 [2] (🦮..🦯) guide dog..probing cane
|
||||
1F9B0..1F9B9 ; Extended_Pictographic# 11.0 [10] (🦰..🦹) red hair..supervillain
|
||||
1F9BA..1F9BF ; Extended_Pictographic# 12.0 [6] (🦺..🦿) safety vest..mechanical leg
|
||||
1F9C0 ; Extended_Pictographic# 8.0 [1] (🧀) cheese wedge
|
||||
1F9C1..1F9C2 ; Extended_Pictographic# 11.0 [2] (🧁..🧂) cupcake..salt
|
||||
1F9C3..1F9CA ; Extended_Pictographic# 12.0 [8] (🧃..🧊) beverage box..ice cube
|
||||
1F9CB..1F9CC ; Extended_Pictographic# NA [2] (🧋..🧌) <reserved-1F9CB>..<reserved-1F9CC>
|
||||
1F9CD..1F9CF ; Extended_Pictographic# 12.0 [3] (🧍..🧏) person standing..deaf person
|
||||
1F9D0..1F9E6 ; Extended_Pictographic# 10.0 [23] (🧐..🧦) face with monocle..socks
|
||||
1F9E7..1F9FF ; Extended_Pictographic# 11.0 [25] (🧧..🧿) red envelope..nazar amulet
|
||||
1FA00..1FA53 ; Extended_Pictographic# 12.0 [84] (🨀..🩓) NEUTRAL CHESS KING..BLACK CHESS KNIGHT-BISHOP
|
||||
1FA54..1FA5F ; Extended_Pictographic# NA [12] (..) <reserved-1FA54>..<reserved-1FA5F>
|
||||
1FA60..1FA6D ; Extended_Pictographic# 11.0 [14] (🩠..🩭) XIANGQI RED GENERAL..XIANGQI BLACK SOLDIER
|
||||
1FA6E..1FA6F ; Extended_Pictographic# NA [2] (..) <reserved-1FA6E>..<reserved-1FA6F>
|
||||
1FA70..1FA73 ; Extended_Pictographic# 12.0 [4] (🩰..🩳) ballet shoes..shorts
|
||||
1FA74..1FA77 ; Extended_Pictographic# NA [4] (🩴..🩷) <reserved-1FA74>..<reserved-1FA77>
|
||||
1FA78..1FA7A ; Extended_Pictographic# 12.0 [3] (🩸..🩺) drop of blood..stethoscope
|
||||
1FA7B..1FA7F ; Extended_Pictographic# NA [5] (🩻..) <reserved-1FA7B>..<reserved-1FA7F>
|
||||
1FA80..1FA82 ; Extended_Pictographic# 12.0 [3] (🪀..🪂) yo-yo..parachute
|
||||
1FA83..1FA8F ; Extended_Pictographic# NA [13] (🪃..) <reserved-1FA83>..<reserved-1FA8F>
|
||||
1FA90..1FA95 ; Extended_Pictographic# 12.0 [6] (🪐..🪕) ringed planet..banjo
|
||||
1FA96..1FFFD ; Extended_Pictographic# NA[1384] (🪖..) <reserved-1FA96>..<reserved-1FFFD>
|
||||
|
||||
# Total elements: 3793
|
||||
|
||||
#EOF
|
@ -34,6 +34,7 @@ include GensrcBuffer.gmk
|
||||
include GensrcExceptions.gmk
|
||||
include GensrcVarHandles.gmk
|
||||
include GensrcModuleLoaderMap.gmk
|
||||
include GensrcEmojiData.gmk
|
||||
|
||||
################################################################################
|
||||
|
||||
|
44
make/gensrc/GensrcEmojiData.gmk
Normal file
44
make/gensrc/GensrcEmojiData.gmk
Normal file
@ -0,0 +1,44 @@
|
||||
#
|
||||
# Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License version 2 only, as
|
||||
# published by the Free Software Foundation. Oracle designates this
|
||||
# particular file as subject to the "Classpath" exception as provided
|
||||
# by Oracle in the LICENSE file that accompanied this code.
|
||||
#
|
||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# version 2 for more details (a copy is included in the LICENSE file that
|
||||
# accompanied this code).
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License version
|
||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# questions.
|
||||
#
|
||||
|
||||
#
|
||||
# Rules to create $(SUPPORT_OUTPUTDIR)/gensrc/java.base/java/util/regex/EmojiData.java
|
||||
#
|
||||
|
||||
GENSRC_EMOJIDATA := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/java/util/regex/EmojiData.java
|
||||
|
||||
EMOJIDATATEMP = $(TOPDIR)/src/java.base/share/classes/java/util/regex/EmojiData.java.template
|
||||
UNICODEDATA = $(TOPDIR)/make/data/unicodedata
|
||||
|
||||
$(GENSRC_EMOJIDATA): $(BUILD_TOOLS_JDK) $(EMOJIDATATEMP) $(UNICODEDATA)/emoji-data.txt
|
||||
$(call LogInfo, Generating $@)
|
||||
$(call MakeTargetDir)
|
||||
$(TOOL_GENERATEEMOJIDATA) \
|
||||
$(EMOJIDATATEMP) \
|
||||
$(UNICODEDATA) \
|
||||
$(GENSRC_EMOJIDATA)
|
||||
|
||||
GENSRC_JAVA_BASE += $(GENSRC_EMOJIDATA)
|
||||
|
@ -46,15 +46,6 @@ $(eval $(call IncludeCustomExtension, hotspot/gensrc/GenerateSources.gmk))
|
||||
# While technically the rules below are "gendata" which can be done in parallel
|
||||
# with native compilation, let's keep it here for simplicity.
|
||||
|
||||
# The Xusage.txt file needs to have platform specific path separator
|
||||
$(eval $(call SetupTextFileProcessing, CREATE_XUSAGE, \
|
||||
SOURCE_FILES := $(TOPDIR)/src/hotspot/share/Xusage.txt, \
|
||||
OUTPUT_FILE := $(JVM_LIB_OUTPUTDIR)/Xusage.txt, \
|
||||
REPLACEMENTS := separated by ;> => separated by $(PATH_SEP)> ; , \
|
||||
))
|
||||
|
||||
TARGETS += $(CREATE_XUSAGE)
|
||||
|
||||
# Setup the hotspot launcher script for developer use
|
||||
$(eval $(call SetupTextFileProcessing, CREATE_HOTSPOT_LAUNCHER, \
|
||||
SOURCE_FILES := $(TOPDIR)/make/hotspot/hotspot.script, \
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
#
|
||||
# This code is free software; you can redistribute it and/or modify it
|
||||
@ -64,11 +64,16 @@ $(eval $(call SetupNativeCompilation, BUILD_GTEST_LIBJVM, \
|
||||
EXCLUDES := $(JVM_EXCLUDES), \
|
||||
EXCLUDE_FILES := gtestLauncher.cpp, \
|
||||
EXCLUDE_PATTERNS := $(JVM_EXCLUDE_PATTERNS), \
|
||||
EXTRA_FILES := $(GTEST_FRAMEWORK_SRC)/src/gtest-all.cc, \
|
||||
EXTRA_FILES := \
|
||||
$(GTEST_FRAMEWORK_SRC)/googletest/src/gtest-all.cc \
|
||||
$(GTEST_FRAMEWORK_SRC)/googlemock/src/gmock-all.cc, \
|
||||
EXTRA_OBJECT_FILES := $(filter-out %/operator_new$(OBJ_SUFFIX), \
|
||||
$(BUILD_LIBJVM_ALL_OBJS)), \
|
||||
CFLAGS := $(JVM_CFLAGS) -I$(GTEST_FRAMEWORK_SRC) \
|
||||
-I$(GTEST_FRAMEWORK_SRC)/include \
|
||||
CFLAGS := $(JVM_CFLAGS) \
|
||||
-I$(GTEST_FRAMEWORK_SRC)/googletest \
|
||||
-I$(GTEST_FRAMEWORK_SRC)/googletest/include \
|
||||
-I$(GTEST_FRAMEWORK_SRC)/googlemock \
|
||||
-I$(GTEST_FRAMEWORK_SRC)/googlemock/include \
|
||||
$(addprefix -I,$(GTEST_TEST_SRC)), \
|
||||
CFLAGS_windows := -EHsc, \
|
||||
CFLAGS_solaris := -DGTEST_HAS_EXCEPTIONS=0 -library=stlport4, \
|
||||
@ -80,8 +85,6 @@ $(eval $(call SetupNativeCompilation, BUILD_GTEST_LIBJVM, \
|
||||
self-assign-overloaded, \
|
||||
DISABLED_WARNINGS_solstudio := $(DISABLED_WARNINGS_solstudio) \
|
||||
identexpected, \
|
||||
DISABLED_WARNINGS_microsoft := $(DISABLED_WARNINGS_microsoft) \
|
||||
4996, \
|
||||
LDFLAGS := $(JVM_LDFLAGS), \
|
||||
LDFLAGS_solaris := -library=stlport4 $(call SET_SHARED_LIBRARY_ORIGIN), \
|
||||
LIBS := $(JVM_LIBS), \
|
||||
@ -92,7 +95,7 @@ $(eval $(call SetupNativeCompilation, BUILD_GTEST_LIBJVM, \
|
||||
ZIP_EXTERNAL_DEBUG_SYMBOLS := false, \
|
||||
STRIP_SYMBOLS := false, \
|
||||
PRECOMPILED_HEADER := $(JVM_PRECOMPILED_HEADER), \
|
||||
PRECOMPILED_HEADER_EXCLUDE := gtest-all.cc gtestMain.cpp, \
|
||||
PRECOMPILED_HEADER_EXCLUDE := gtest-all.cc gmock-all.cc gtestMain.cpp, \
|
||||
DEFINE_THIS_FILE := false, \
|
||||
))
|
||||
|
||||
@ -107,8 +110,11 @@ $(eval $(call SetupNativeCompilation, BUILD_GTEST_LAUNCHER, \
|
||||
OUTPUT_DIR := $(JVM_OUTPUTDIR)/gtest, \
|
||||
EXTRA_FILES := $(GTEST_LAUNCHER_SRC), \
|
||||
OBJECT_DIR := $(JVM_OUTPUTDIR)/gtest/launcher-objs, \
|
||||
CFLAGS := $(JVM_CFLAGS) -I$(GTEST_FRAMEWORK_SRC) \
|
||||
-I$(GTEST_FRAMEWORK_SRC)/include, \
|
||||
CFLAGS := $(JVM_CFLAGS) \
|
||||
-I$(GTEST_FRAMEWORK_SRC)/googletest \
|
||||
-I$(GTEST_FRAMEWORK_SRC)/googletest/include \
|
||||
-I$(GTEST_FRAMEWORK_SRC)/googlemock \
|
||||
-I$(GTEST_FRAMEWORK_SRC)/googlemock/include, \
|
||||
LDFLAGS := $(LDFLAGS_JDKEXE), \
|
||||
LDFLAGS_unix := -L$(JVM_OUTPUTDIR)/gtest $(call SET_SHARED_LIBRARY_ORIGIN), \
|
||||
LDFLAGS_solaris := -library=stlport4, \
|
||||
|
@ -51,7 +51,9 @@ ifeq ($(call check-jvm-feature, dtrace), true)
|
||||
hs_private.d \
|
||||
)
|
||||
|
||||
$(JVM_OUTPUTDIR)/objs/dtrace.d: $(DTRACE_SOURCE_FILES)
|
||||
# *.d in the objs dir is used for generated make dependency files, so use
|
||||
# *.dt for dtrace files to avoid clashes.
|
||||
$(JVM_OUTPUTDIR)/objs/dtrace.dt: $(DTRACE_SOURCE_FILES)
|
||||
$(call LogInfo, Generating $(@F))
|
||||
$(call MakeDir, $(@D))
|
||||
$(CAT) $^ > $@
|
||||
@ -94,13 +96,13 @@ ifeq ($(call check-jvm-feature, dtrace), true)
|
||||
|
||||
# Make sure we run our selected compiler for preprocessing instead of letting
|
||||
# the dtrace tool pick it on it's own.
|
||||
$(DTRACE_OBJ): $(JVM_OUTPUTDIR)/objs/dtrace.d $(DTRACE_INSTRUMENTED_OBJS)
|
||||
$(DTRACE_OBJ): $(JVM_OUTPUTDIR)/objs/dtrace.dt $(DTRACE_INSTRUMENTED_OBJS)
|
||||
$(call LogInfo, Generating $(@F) from $(<F) and object files)
|
||||
$(call MakeDir, $(DTRACE_SUPPORT_DIR))
|
||||
$(call ExecuteWithLog, $(DTRACE_SUPPORT_DIR)/$(@F).d, \
|
||||
($(CPP) $(DTRACE_CPP_FLAGS) $< > $(DTRACE_SUPPORT_DIR)/$(@F).d))
|
||||
$(call ExecuteWithLog, $(DTRACE_SUPPORT_DIR)/$(@F).dt, \
|
||||
($(CPP) $(DTRACE_CPP_FLAGS) $< > $(DTRACE_SUPPORT_DIR)/$(@F).dt))
|
||||
$(call ExecuteWithLog, $@, $(DTRACE) $(DTRACE_FLAGS) -xlazyload -o $@ \
|
||||
-s $(DTRACE_SUPPORT_DIR)/$(@F).d $(sort $(DTRACE_INSTRUMENTED_OBJS)))
|
||||
-s $(DTRACE_SUPPORT_DIR)/$(@F).dt $(sort $(DTRACE_INSTRUMENTED_OBJS)))
|
||||
|
||||
############################################################################
|
||||
# Generate DTRACE_JHELPER_OBJ which is linked with libjvm.so.
|
||||
@ -126,11 +128,11 @@ ifeq ($(call check-jvm-feature, dtrace), true)
|
||||
$(DTRACE_JHELPER_OBJ): $(JHELPER_DTRACE_SRC) $(JVM_OFFSETS_INDEX_H)
|
||||
$(call LogInfo, Running dtrace for $(<F))
|
||||
$(call MakeDir, $(DTRACE_SUPPORT_DIR))
|
||||
$(call ExecuteWithLog, $(DTRACE_SUPPORT_DIR)/$(@F).d, \
|
||||
$(call ExecuteWithLog, $(DTRACE_SUPPORT_DIR)/$(@F).dt, \
|
||||
($(CPP) $(DTRACE_CPP_FLAGS) -I$(DTRACE_GENSRC_DIR) $^ \
|
||||
> $(DTRACE_SUPPORT_DIR)/$(@F).d))
|
||||
> $(DTRACE_SUPPORT_DIR)/$(@F).dt))
|
||||
$(call ExecuteWithLog, $@, $(DTRACE) $(DTRACE_FLAGS) -o $@ \
|
||||
-s $(DTRACE_SUPPORT_DIR)/$(@F).d)
|
||||
-s $(DTRACE_SUPPORT_DIR)/$(@F).dt)
|
||||
ifeq ($(call isTargetCpuArch, sparc), true)
|
||||
$(call ExecuteWithLog, $@.elfedit, $(ELFEDIT) $(call GetElfeditCommands) $@)
|
||||
endif
|
||||
|
@ -111,6 +111,7 @@ ifneq ($(call check-jvm-feature, cds), true)
|
||||
JVM_EXCLUDE_FILES += \
|
||||
classListParser.cpp \
|
||||
classLoaderExt.cpp \
|
||||
dynamicArchive.cpp \
|
||||
filemap.cpp \
|
||||
heapShared.cpp \
|
||||
metaspaceShared.cpp \
|
||||
|
940
make/jdk/src/classes/build/tools/fixuppandoc/Main.java
Normal file
940
make/jdk/src/classes/build/tools/fixuppandoc/Main.java
Normal file
@ -0,0 +1,940 @@
|
||||
/*
|
||||
* Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package build.tools.fixuppandoc;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.PrintStream;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.Reader;
|
||||
import java.io.Writer;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* Fixup HTML generated by pandoc.
|
||||
*
|
||||
* <h2>{@code <html>}</h2>
|
||||
*
|
||||
* Replace the existing element with {@code <html lang="en">}, removing references to XML.
|
||||
*
|
||||
* <h2>{@code <main>}</h2>
|
||||
*
|
||||
* {@code <main>} is inserted if palpable content is found that is not with a
|
||||
* section such as {@code header}, {@code footer}, {@code aside}.
|
||||
*
|
||||
* {@code </main>} is inserted if {@code <main>} was inserted and a section
|
||||
* is started that should not be included in the main section.
|
||||
*
|
||||
* <h2>Tables: row headings</h2>
|
||||
*
|
||||
* {@code scope="row"} is added to the {@code <td>} elements in the first
|
||||
* column whose cell contents are all different and therefore which can be
|
||||
* used to identify the row. In case of ambiguity, a column containing
|
||||
* a {@code <th>} whose contents begin <em>name</em> is preferred.
|
||||
*
|
||||
*
|
||||
* <h2>{@code <meta name="generator">}</h2>
|
||||
*
|
||||
* Update the content string, to indicate it has been processed by this program.
|
||||
*
|
||||
*/
|
||||
public class Main {
|
||||
/**
|
||||
* Runs the program.
|
||||
*
|
||||
* <pre>
|
||||
* java build.tools.fixuppandoc.Main [-o output-file] [input-file]
|
||||
* </pre>
|
||||
*
|
||||
* If no input file is specified, the program will read from standard input.
|
||||
* If no output file is specified, the program will write to standard output.
|
||||
* Any error messages will be written to the standard error stream.
|
||||
*
|
||||
* @param args the command-line arguments
|
||||
*/
|
||||
public static void main(String... args) {
|
||||
try {
|
||||
new Main().run(args);
|
||||
} catch (IOException | IllegalArgumentException e) {
|
||||
System.err.println(e);
|
||||
System.exit(1);
|
||||
} catch (Throwable t) {
|
||||
t.printStackTrace(System.err);
|
||||
System.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
private void run(String... args) throws IOException {
|
||||
Path inFile = null;
|
||||
Path outFile = null;
|
||||
|
||||
for (int i = 0; i < args.length; i++) {
|
||||
String arg = args[i];
|
||||
if (arg.equals("-o") && i + 1 < args.length) {
|
||||
outFile = Path.of(args[++i]);
|
||||
} else if (arg.startsWith("-")) {
|
||||
throw new IllegalArgumentException(arg);
|
||||
} else if (inFile == null) {
|
||||
inFile = Path.of(arg);
|
||||
} else {
|
||||
throw new IllegalArgumentException(arg);
|
||||
}
|
||||
}
|
||||
|
||||
new Fixup().run(inFile, outFile);
|
||||
}
|
||||
|
||||
/**
|
||||
* A class to read HTML, copying input to output, modifying
|
||||
* fragments as needed.
|
||||
*/
|
||||
class Fixup extends HtmlParser {
|
||||
/** The output stream. */
|
||||
PrintWriter out;
|
||||
|
||||
/** A stream for reporting errors. */
|
||||
PrintStream err = System.err;
|
||||
|
||||
/**
|
||||
* Flag to indicate when {@code <main>} is permitted around palpable content.
|
||||
* Set within {@code <body>}; disabled within elements in which {@code <main>}
|
||||
* is not permitted.
|
||||
*/
|
||||
boolean allowMain = false;
|
||||
|
||||
/**
|
||||
* Flag to indicate that {@code <main>} is required.
|
||||
* Set on {@code <body>}; reset when {@code <main>} is either found or generated.
|
||||
*/
|
||||
boolean needMain = false;
|
||||
|
||||
/**
|
||||
* Flag to indicate that {@code </main>} is required.
|
||||
* Set if {@code <main>} is generated.
|
||||
* Reset when a start or end element is found that requires that {@code </main>}
|
||||
* needs to be generated if necessary.
|
||||
*/
|
||||
boolean needEndMain = false;
|
||||
|
||||
/**
|
||||
* Handler for {@code <table>} elements.
|
||||
*/
|
||||
Table table;
|
||||
|
||||
/**
|
||||
* Run the program, copying an input file to an output file.
|
||||
* If the input file is {@code null}, input is read from the standard input.
|
||||
* If the output file is {@code null}, output is written to the standard output.
|
||||
*
|
||||
* @param inFile the input file
|
||||
* @param outFile the output file
|
||||
* @throws IOException if an IO error occurs
|
||||
*/
|
||||
void run(Path inFile, Path outFile) throws IOException {
|
||||
try (Writer out = openWriter(outFile)) {
|
||||
this.out = new PrintWriter(out);
|
||||
if (inFile != null) {
|
||||
read(inFile);
|
||||
} else {
|
||||
read(new BufferedReader(new InputStreamReader(System.in)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a writer for a file, or for the standard output if the file is {@code null}.
|
||||
*
|
||||
* @param file the file
|
||||
* @return the writer
|
||||
* @throws IOException if an IO error occurs
|
||||
*/
|
||||
private Writer openWriter(Path file) throws IOException {
|
||||
if (file != null) {
|
||||
return Files.newBufferedWriter(file);
|
||||
} else {
|
||||
return new BufferedWriter(new OutputStreamWriter(System.out) {
|
||||
@Override
|
||||
public void close() throws IOException {
|
||||
flush();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void error(Path file, int lineNumber, String message) {
|
||||
err.print(file == null ? "<stdin>" : file);
|
||||
if (lineNumber > 0) {
|
||||
err.print(":");
|
||||
err.print(lineNumber);
|
||||
}
|
||||
err.print(": ");
|
||||
err.println(message);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void error(Path file, int lineNumber, Throwable t) {
|
||||
error(file, lineNumber, t.toString());
|
||||
t.printStackTrace(err);
|
||||
}
|
||||
|
||||
/**
|
||||
* The buffer in which input is stored until an appropriate action can be determined.
|
||||
* Using the buffer ensures that the output exactly matches the input, except where
|
||||
* it is intentionally modified.
|
||||
*/
|
||||
private StringBuilder buffer = new StringBuilder();
|
||||
|
||||
@Override
|
||||
public int nextChar() throws IOException {
|
||||
if (ch > 0) {
|
||||
buffer.append((char) ch);
|
||||
}
|
||||
return super.nextChar();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doctype(String s) {
|
||||
flushBuffer();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void startElement(String name, Map<String,String> attrs, boolean selfClosing) {
|
||||
switch (name) {
|
||||
case "html":
|
||||
// replace the existing <html> fragment
|
||||
out.write("<html lang=\"en\">");
|
||||
buffer.setLength(0);
|
||||
break;
|
||||
|
||||
case "meta":
|
||||
// update the meta-data for the generator
|
||||
if (Objects.equals(attrs.get("name"), "generator")) {
|
||||
out.write(buffer.toString()
|
||||
.replaceAll("(content=\"[^\"]*)(\")", "$1,fixuphtml$2"));
|
||||
buffer.setLength(0);
|
||||
}
|
||||
break;
|
||||
|
||||
case "article":
|
||||
case "aside":
|
||||
case "footer":
|
||||
case "header":
|
||||
case "nav":
|
||||
// starting one of these elements will terminate <main> if one is being
|
||||
// inserted
|
||||
if (needEndMain) {
|
||||
out.write("</main>");
|
||||
needEndMain = false;
|
||||
}
|
||||
// <main> is not permitted within these elements
|
||||
allowMain = false;
|
||||
break;
|
||||
|
||||
case "body":
|
||||
// within <body>, <main> is both permitted and required
|
||||
allowMain = true;
|
||||
needMain = true;
|
||||
break;
|
||||
|
||||
case "main":
|
||||
// an explicit <main> found in the input; no need to add one
|
||||
needMain = false;
|
||||
break;
|
||||
|
||||
case "table":
|
||||
// The entire content of a <table> is buffered, until it can be
|
||||
// determined in which column of the table contains the cells
|
||||
// that can be used to identify the row.
|
||||
if (table == null) {
|
||||
table = new Table();
|
||||
} else {
|
||||
// tables containing nested tables are not updated
|
||||
table.simple = false;
|
||||
}
|
||||
table.nestDepth++;
|
||||
break;
|
||||
|
||||
case "thead":
|
||||
case "tbody":
|
||||
if (table != null) {
|
||||
table.endCell();
|
||||
}
|
||||
break;
|
||||
|
||||
case "tr":
|
||||
if (table != null) {
|
||||
table.endCell();
|
||||
table.nextCellColumnIndex = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case "td":
|
||||
case "th":
|
||||
if (table != null) {
|
||||
if (attrs.containsKey("rowspan")
|
||||
|| attrs.containsKey("colspan")
|
||||
|| attrs.containsKey("scope")) {
|
||||
// tables containing spanning cells and tables that already
|
||||
// contain scope attributes are not updated
|
||||
table.simple = false;
|
||||
}
|
||||
table.startCell(name);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
// by default, the content is deemed to be palpable content, and so
|
||||
// insert <main> if it is permitted and one is still required,
|
||||
// while also ensuring that it does not appear before <body>
|
||||
if (allowMain && needMain && !name.equals("body")) {
|
||||
out.write("<main>");
|
||||
needMain = false;
|
||||
needEndMain = true;
|
||||
}
|
||||
|
||||
flushBuffer();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void endElement(String name) {
|
||||
switch (name) {
|
||||
case "article":
|
||||
case "aside":
|
||||
case "footer":
|
||||
case "header":
|
||||
case "nav":
|
||||
// The code does not handle nested elements of these kinds, but could.
|
||||
// So, assuming they are not nested, ending these elements implies
|
||||
// that <main> is once again permitted.
|
||||
allowMain = true;
|
||||
break;
|
||||
|
||||
case "body":
|
||||
// The document is nearly done; insert <main> if needed
|
||||
if (needEndMain) {
|
||||
out.write("</main>");
|
||||
needEndMain = false;
|
||||
}
|
||||
break;
|
||||
|
||||
case "table":
|
||||
// if the table is finished, analyze it and write it out
|
||||
if (table != null) {
|
||||
if (--table.nestDepth == 0) {
|
||||
table.add(buffer.toString());
|
||||
table.write(out);
|
||||
table = null;
|
||||
buffer.setLength(0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case "thead":
|
||||
case "tbody":
|
||||
case "tr":
|
||||
case "td":
|
||||
case "th":
|
||||
// ending any of these elements implicity or explicitly ends the
|
||||
// current cell
|
||||
table.endCell();
|
||||
break;
|
||||
|
||||
}
|
||||
flushBuffer();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void content(String content) {
|
||||
if (table != null) {
|
||||
table.content(content);
|
||||
} else if (allowMain && needMain && !content.isBlank()) {
|
||||
// insert <main> if required and if we have palpable content
|
||||
out.write("<main>");
|
||||
needMain = false;
|
||||
needEndMain = true;
|
||||
}
|
||||
flushBuffer();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void comment(String comment) {
|
||||
flushBuffer();
|
||||
}
|
||||
|
||||
/**
|
||||
* Flushes the buffer, either by adding it into a table, if one is
|
||||
* in progress, or by writing it out.
|
||||
*/
|
||||
private void flushBuffer() {
|
||||
String s = buffer.toString();
|
||||
if (table != null) {
|
||||
table.add(s);
|
||||
} else {
|
||||
out.write(s);
|
||||
}
|
||||
buffer.setLength(0);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Storage for the content of a {@code <table>} element} until we can determine
|
||||
* whether we should add {@code scope="row"} to the cells in a given column,
|
||||
* and if so, which column.
|
||||
*
|
||||
* The column with the highest number of unique entries is selected;
|
||||
* in case of ambiguity, a column whose heading begins "name" is chosen.
|
||||
*
|
||||
* Only "simple" tables are supported. Tables with any of the following
|
||||
* features are not considered "simple" and will not be modified:
|
||||
* <ul>
|
||||
* <li>Tables containing nested tables</li>
|
||||
* <li>Tables containing cells that use "rowspan" and "colspan" attributes</li>
|
||||
* <li>Tables containing cells that already use "scope" attributes</li>
|
||||
* </ul>
|
||||
*/
|
||||
class Table {
|
||||
/**
|
||||
* A fragment of HTML in this table.
|
||||
*/
|
||||
class Entry {
|
||||
/** The fragment. */
|
||||
final String html;
|
||||
/** The column for a {@code <td>} fragment, or -1. */
|
||||
final int column;
|
||||
|
||||
Entry(String html, int column) {
|
||||
this.html = html;
|
||||
this.column = column;
|
||||
}
|
||||
}
|
||||
|
||||
/** Whether or not this is a "simple" table. */
|
||||
boolean simple = true;
|
||||
|
||||
/** The nesting depth of the current table, within enclosing tables. */
|
||||
int nestDepth;
|
||||
|
||||
/** A list of the HTML fragments that make up this table. */
|
||||
List<Entry> entries;
|
||||
|
||||
/** The plain text contents of each column, used to determine the primary column. */
|
||||
List<Set<String>> columnContents;
|
||||
|
||||
/** The column index of the next cell to be found. */
|
||||
int nextCellColumnIndex;
|
||||
|
||||
/** A flag to mark the start of a {@code <td>} cell. */
|
||||
boolean startTDCell;
|
||||
|
||||
/** The column index of the current cell, or -1 if not in a cell. */
|
||||
int currCellColumnIndex;
|
||||
|
||||
/** The plain text contents of the current column. */
|
||||
Set<String> currColumnContents;
|
||||
|
||||
/** The plain text content of the current cell. */
|
||||
StringBuilder currCellContent;
|
||||
|
||||
/** The kind ({@code th} or {@code td}) of the current cell. */
|
||||
String currCellKind;
|
||||
|
||||
/**
|
||||
* The index of the column, if any, containing a heading beginning "name".
|
||||
* This column is given preferential treatment when deciding the primary column.
|
||||
*/
|
||||
int nameColumn;
|
||||
|
||||
Table() {
|
||||
entries = new ArrayList<>();
|
||||
columnContents = new ArrayList<>();
|
||||
}
|
||||
|
||||
void startCell(String name) {
|
||||
endCell();
|
||||
startTDCell = name.equals("td");
|
||||
currCellColumnIndex = nextCellColumnIndex++;
|
||||
currColumnContents = getColumn(currCellColumnIndex);
|
||||
currCellContent = new StringBuilder();
|
||||
currCellKind = name;
|
||||
}
|
||||
|
||||
void endCell() {
|
||||
if (currCellContent != null) {
|
||||
String c = currCellContent.toString().trim();
|
||||
if (Objects.equals(currCellKind, "th")
|
||||
&& c.toLowerCase(Locale.US).startsWith("name")) {
|
||||
nameColumn = currCellColumnIndex;
|
||||
}
|
||||
currColumnContents.add(c);
|
||||
currCellContent = null;
|
||||
currCellColumnIndex = -1;
|
||||
currColumnContents = null;
|
||||
}
|
||||
}
|
||||
|
||||
void content(String content) {
|
||||
if (currCellContent != null) {
|
||||
currCellContent.append(content);
|
||||
}
|
||||
}
|
||||
|
||||
void add(String html) {
|
||||
int index = startTDCell ? currCellColumnIndex : -1;
|
||||
entries.add(new Entry(html, index));
|
||||
startTDCell = false;
|
||||
}
|
||||
|
||||
void write(PrintWriter out) {
|
||||
int max = -1;
|
||||
int maxIndex = -1;
|
||||
int index = 0;
|
||||
for (Set<String> c : columnContents) {
|
||||
if (c.size() > max || c.size() == max && index == nameColumn) {
|
||||
max = c.size();
|
||||
maxIndex = index;
|
||||
}
|
||||
index++;
|
||||
}
|
||||
for (Entry e : entries) {
|
||||
if (simple && e.column == maxIndex) {
|
||||
out.write(e.html.substring(0, e.html.length() - 1));
|
||||
out.write(" scope=\"row\">");
|
||||
} else {
|
||||
out.write(e.html);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Set<String> getColumn(int index) {
|
||||
while (columnContents.size() <= index) {
|
||||
columnContents.add(new LinkedHashSet<>());
|
||||
}
|
||||
|
||||
return columnContents.get(index);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A basic HTML parser.
|
||||
* Override the protected methods as needed to get notified of significant items
|
||||
* in any file that is read.
|
||||
*/
|
||||
abstract class HtmlParser {
|
||||
|
||||
private Path file;
|
||||
private Reader in;
|
||||
protected int ch;
|
||||
private int lineNumber;
|
||||
private boolean inScript;
|
||||
private boolean xml;
|
||||
|
||||
/**
|
||||
* Read a file.
|
||||
* @param file the file
|
||||
*/
|
||||
void read(Path file) {
|
||||
try (Reader r = Files.newBufferedReader(file)) {
|
||||
this.file = file;
|
||||
read(r);
|
||||
} catch (IOException e) {
|
||||
error(file, -1, e);
|
||||
}
|
||||
}
|
||||
|
||||
HtmlParser() { }
|
||||
|
||||
/**
|
||||
* Read a stream.
|
||||
* @param r the stream
|
||||
*/
|
||||
void read(Reader r) {
|
||||
try {
|
||||
this.in = r;
|
||||
StringBuilder content = new StringBuilder();
|
||||
|
||||
startFile(file);
|
||||
try {
|
||||
lineNumber = 1;
|
||||
xml = false;
|
||||
nextChar();
|
||||
|
||||
while (ch != -1) {
|
||||
if (ch == '<') {
|
||||
content(content.toString());
|
||||
content.setLength(0);
|
||||
html();
|
||||
} else {
|
||||
content.append((char) ch);
|
||||
if (ch == '\n') {
|
||||
content(content.toString());
|
||||
content.setLength(0);
|
||||
}
|
||||
nextChar();
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
endFile();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
error(file, lineNumber, e);
|
||||
} catch (Throwable t) {
|
||||
error(file, lineNumber, t);
|
||||
t.printStackTrace(System.err);
|
||||
}
|
||||
}
|
||||
|
||||
protected int getLineNumber() {
|
||||
return lineNumber;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when a file has been opened, before parsing begins.
|
||||
* This is always the first notification when reading a file.
|
||||
* This implementation does nothing.
|
||||
*
|
||||
* @param file the file
|
||||
*/
|
||||
protected void startFile(Path file) { }
|
||||
|
||||
/**
|
||||
* Called when the parser has finished reading a file.
|
||||
* This is always the last notification when reading a file,
|
||||
* unless any errors occur while closing the file.
|
||||
* This implementation does nothing.
|
||||
*/
|
||||
protected void endFile() { }
|
||||
|
||||
/**
|
||||
* Called when a doctype declaration is found, at the beginning of the file.
|
||||
* This implementation does nothing.
|
||||
* @param s the doctype declaration
|
||||
*/
|
||||
protected void doctype(String s) { }
|
||||
|
||||
/**
|
||||
* Called when the opening tag of an HTML element is encountered.
|
||||
* This implementation does nothing.
|
||||
* @param name the name of the tag
|
||||
* @param attrs the attribute
|
||||
* @param selfClosing whether or not this is a self-closing tag
|
||||
*/
|
||||
protected void startElement(String name, Map<String,String> attrs, boolean selfClosing) { }
|
||||
|
||||
/**
|
||||
* Called when the closing tag of an HTML tag is encountered.
|
||||
* This implementation does nothing.
|
||||
* @param name the name of the tag
|
||||
*/
|
||||
protected void endElement(String name) { }
|
||||
|
||||
/**
|
||||
* Called for sequences of character content.
|
||||
* @param content the character content
|
||||
*/
|
||||
protected void content(String content) { }
|
||||
|
||||
/**
|
||||
* Called for sequences of comment.
|
||||
* @param comment the comment
|
||||
*/
|
||||
protected void comment(String comment) { }
|
||||
|
||||
/**
|
||||
* Called when an error has been encountered.
|
||||
* @param file the file being read
|
||||
* @param lineNumber the line number of line containing the error
|
||||
* @param message a description of the error
|
||||
*/
|
||||
protected abstract void error(Path file, int lineNumber, String message);
|
||||
|
||||
/**
|
||||
* Called when an exception has been encountered.
|
||||
* @param file the file being read
|
||||
* @param lineNumber the line number of the line being read when the exception was found
|
||||
* @param t the exception
|
||||
*/
|
||||
protected abstract void error(Path file, int lineNumber, Throwable t);
|
||||
|
||||
protected int nextChar() throws IOException {
|
||||
ch = in.read();
|
||||
if (ch == '\n')
|
||||
lineNumber++;
|
||||
return ch;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read the start or end of an HTML tag, or an HTML comment
|
||||
* {@literal <identifier attrs> } or {@literal </identifier> }
|
||||
* @throws java.io.IOException if there is a problem reading the file
|
||||
*/
|
||||
protected void html() throws IOException {
|
||||
nextChar();
|
||||
if (isIdentifierStart((char) ch)) {
|
||||
String name = readIdentifier().toLowerCase(Locale.US);
|
||||
Map<String,String> attrs = htmlAttrs();
|
||||
if (attrs != null) {
|
||||
boolean selfClosing = false;
|
||||
if (ch == '/') {
|
||||
nextChar();
|
||||
selfClosing = true;
|
||||
}
|
||||
if (ch == '>') {
|
||||
nextChar();
|
||||
startElement(name, attrs, selfClosing);
|
||||
if (name.equals("script")) {
|
||||
inScript = true;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
} else if (ch == '/') {
|
||||
nextChar();
|
||||
if (isIdentifierStart((char) ch)) {
|
||||
String name = readIdentifier().toLowerCase(Locale.US);
|
||||
skipWhitespace();
|
||||
if (ch == '>') {
|
||||
nextChar();
|
||||
endElement(name);
|
||||
if (name.equals("script")) {
|
||||
inScript = false;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
} else if (ch == '!') {
|
||||
nextChar();
|
||||
if (ch == '-') {
|
||||
nextChar();
|
||||
if (ch == '-') {
|
||||
nextChar();
|
||||
StringBuilder comment = new StringBuilder();
|
||||
while (ch != -1) {
|
||||
int dash = 0;
|
||||
while (ch == '-') {
|
||||
dash++;
|
||||
comment.append(ch);
|
||||
nextChar();
|
||||
}
|
||||
// Strictly speaking, a comment should not contain "--"
|
||||
// so dash > 2 is an error, dash == 2 implies ch == '>'
|
||||
// See http://www.w3.org/TR/html-markup/syntax.html#syntax-comments
|
||||
// for more details.
|
||||
if (dash >= 2 && ch == '>') {
|
||||
comment.setLength(comment.length() - 2);
|
||||
comment(comment.toString());
|
||||
nextChar();
|
||||
return;
|
||||
}
|
||||
|
||||
comment.append(ch);
|
||||
nextChar();
|
||||
}
|
||||
}
|
||||
} else if (ch == '[') {
|
||||
nextChar();
|
||||
if (ch == 'C') {
|
||||
nextChar();
|
||||
if (ch == 'D') {
|
||||
nextChar();
|
||||
if (ch == 'A') {
|
||||
nextChar();
|
||||
if (ch == 'T') {
|
||||
nextChar();
|
||||
if (ch == 'A') {
|
||||
nextChar();
|
||||
if (ch == '[') {
|
||||
while (true) {
|
||||
nextChar();
|
||||
if (ch == ']') {
|
||||
nextChar();
|
||||
if (ch == ']') {
|
||||
nextChar();
|
||||
if (ch == '>') {
|
||||
nextChar();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
while (ch != -1 && ch != '>') {
|
||||
sb.append((char) ch);
|
||||
nextChar();
|
||||
}
|
||||
Pattern p = Pattern.compile("(?is)doctype\\s+html\\s?.*");
|
||||
String s = sb.toString();
|
||||
if (p.matcher(s).matches()) {
|
||||
doctype(s);
|
||||
return;
|
||||
}
|
||||
}
|
||||
} else if (ch == '?') {
|
||||
nextChar();
|
||||
if (ch == 'x') {
|
||||
nextChar();
|
||||
if (ch == 'm') {
|
||||
nextChar();
|
||||
if (ch == 'l') {
|
||||
Map<String,String> attrs = htmlAttrs();
|
||||
if (ch == '?') {
|
||||
nextChar();
|
||||
if (ch == '>') {
|
||||
nextChar();
|
||||
xml = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if (!inScript) {
|
||||
error(file, lineNumber, "bad html");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Read a series of HTML attributes, terminated by {@literal > }.
|
||||
* Each attribute is of the form {@literal identifier[=value] }.
|
||||
* "value" may be unquoted, single-quoted, or double-quoted.
|
||||
*/
|
||||
private Map<String,String> htmlAttrs() throws IOException {
|
||||
Map<String, String> map = new LinkedHashMap<>();
|
||||
skipWhitespace();
|
||||
|
||||
while (isIdentifierStart((char) ch)) {
|
||||
String name = readAttributeName().toLowerCase(Locale.US);
|
||||
skipWhitespace();
|
||||
String value = null;
|
||||
if (ch == '=') {
|
||||
nextChar();
|
||||
skipWhitespace();
|
||||
if (ch == '\'' || ch == '"') {
|
||||
char quote = (char) ch;
|
||||
nextChar();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
while (ch != -1 && ch != quote) {
|
||||
sb.append((char) ch);
|
||||
nextChar();
|
||||
}
|
||||
value = sb.toString() // hack to replace common entities
|
||||
.replace("<", "<")
|
||||
.replace(">", ">")
|
||||
.replace("&", "&");
|
||||
nextChar();
|
||||
} else {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
while (ch != -1 && !isUnquotedAttrValueTerminator((char) ch)) {
|
||||
sb.append((char) ch);
|
||||
nextChar();
|
||||
}
|
||||
value = sb.toString();
|
||||
}
|
||||
skipWhitespace();
|
||||
}
|
||||
map.put(name, value);
|
||||
}
|
||||
|
||||
return map;
|
||||
}
|
||||
|
||||
private boolean isIdentifierStart(char ch) {
|
||||
return Character.isUnicodeIdentifierStart(ch);
|
||||
}
|
||||
|
||||
private String readIdentifier() throws IOException {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append((char) ch);
|
||||
nextChar();
|
||||
while (ch != -1 && Character.isUnicodeIdentifierPart(ch)) {
|
||||
sb.append((char) ch);
|
||||
nextChar();
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
private String readAttributeName() throws IOException {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append((char) ch);
|
||||
nextChar();
|
||||
while (ch != -1 && Character.isUnicodeIdentifierPart(ch)
|
||||
|| ch == '-'
|
||||
|| (xml || sb.toString().startsWith("xml")) && ch == ':') {
|
||||
sb.append((char) ch);
|
||||
nextChar();
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
private boolean isWhitespace(char ch) {
|
||||
return Character.isWhitespace(ch);
|
||||
}
|
||||
|
||||
private void skipWhitespace() throws IOException {
|
||||
while (isWhitespace((char) ch)) {
|
||||
nextChar();
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isUnquotedAttrValueTerminator(char ch) {
|
||||
switch (ch) {
|
||||
case '\f': case '\n': case '\r': case '\t':
|
||||
case ' ':
|
||||
case '"': case '\'': case '`':
|
||||
case '=': case '<': case '>':
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,155 @@
|
||||
/*
|
||||
* Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package build.tools.generateemojidata;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.nio.file.StandardOpenOption;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
* Generate EmojiData.java
|
||||
* args[0]: Full path string to the template file
|
||||
* args[1]: Full path string to the directory that contains "emoji-data.txt"
|
||||
* args[2]: Full path string to the generated .java file
|
||||
*/
|
||||
public class GenerateEmojiData {
|
||||
public static void main(String[] args) {
|
||||
try {
|
||||
final Range[] last = new Range[1]; // last extended pictographic range
|
||||
last[0] = new Range(0, 0);
|
||||
|
||||
List<Range> extPictRanges = Files.lines(Paths.get(args[1], "emoji-data.txt"))
|
||||
.filter(Predicate.not(l -> l.startsWith("#") || l.isBlank()))
|
||||
.filter(l -> l.contains("; Extended_Pictograph"))
|
||||
.map(l -> new Range(l.replaceFirst(" .*", "")))
|
||||
.sorted()
|
||||
.collect(ArrayList<Range>::new,
|
||||
(list, r) -> {
|
||||
// collapsing consecutive pictographic ranges
|
||||
int lastIndex = list.size() - 1;
|
||||
if (lastIndex >= 0) {
|
||||
Range lastRange = list.get(lastIndex);
|
||||
if (lastRange.last + 1 == r.start) {
|
||||
list.set(lastIndex, new Range(lastRange.start, r.last));
|
||||
return;
|
||||
}
|
||||
}
|
||||
list.add(r);
|
||||
},
|
||||
ArrayList<Range>::addAll);
|
||||
|
||||
|
||||
// make the code point conditions
|
||||
// only very few codepoints below 0x2000 are "emojis", so separate them
|
||||
// out to generate a fast-path check that can be efficiently inlined
|
||||
String lowExtPictCodePoints = extPictRanges.stream()
|
||||
.takeWhile(r -> r.last < 0x2000)
|
||||
.map(r -> rangeToString(r))
|
||||
.collect(Collectors.joining(" ||\n", "", ";\n"));
|
||||
|
||||
String highExtPictCodePoints = extPictRanges.stream()
|
||||
.dropWhile(r -> r.last < 0x2000)
|
||||
.map(r -> rangeToString(r))
|
||||
.collect(Collectors.joining(" ||\n", "", ";\n"));
|
||||
|
||||
// Generate EmojiData.java file
|
||||
Files.write(Paths.get(args[2]),
|
||||
Files.lines(Paths.get(args[0]))
|
||||
.flatMap(l -> {
|
||||
if (l.equals("%%%EXTPICT_LOW%%%")) {
|
||||
return Stream.of(lowExtPictCodePoints);
|
||||
} else if (l.equals("%%%EXTPICT_HIGH%%%")) {
|
||||
return Stream.of(highExtPictCodePoints);
|
||||
} else {
|
||||
return Stream.of(l);
|
||||
}
|
||||
})
|
||||
.collect(Collectors.toList()),
|
||||
StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
static String rangeToString(Range r) {
|
||||
if (r.start == r.last) {
|
||||
return (" ".repeat(16) + "cp == 0x" + toHexString(r.start));
|
||||
} else if (r.start == r.last - 1) {
|
||||
return " ".repeat(16) + "cp == 0x" + toHexString(r.start) + " ||\n" +
|
||||
" ".repeat(16) + "cp == 0x" + toHexString(r.last);
|
||||
} else {
|
||||
return " ".repeat(15) + "(cp >= 0x" + toHexString(r.start) +
|
||||
" && cp <= 0x" + toHexString(r.last) + ")";
|
||||
}
|
||||
}
|
||||
|
||||
static int toInt(String hexStr) {
|
||||
return Integer.parseUnsignedInt(hexStr, 16);
|
||||
}
|
||||
|
||||
static String toHexString(int cp) {
|
||||
String ret = Integer.toUnsignedString(cp, 16).toUpperCase();
|
||||
if (ret.length() < 4) {
|
||||
ret = "0".repeat(4 - ret.length()) + ret;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
static class Range implements Comparable<Range> {
|
||||
int start;
|
||||
int last;
|
||||
|
||||
Range (int start, int last) {
|
||||
this.start = start;
|
||||
this.last = last;
|
||||
}
|
||||
|
||||
Range (String input) {
|
||||
input = input.replaceFirst("\\s#.*", "");
|
||||
start = toInt(input.replaceFirst("[\\s\\.].*", ""));
|
||||
last = input.contains("..") ?
|
||||
toInt(input.replaceFirst(".*\\.\\.", "")
|
||||
.replaceFirst(";.*", "").trim())
|
||||
: start;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Start: " + toHexString(start) + ", Last: " + toHexString(last);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(Range other) {
|
||||
return Integer.compare(start, other.start);
|
||||
}
|
||||
}
|
||||
}
|
192
make/jdk/src/classes/build/tools/taglet/JSpec.java
Normal file
192
make/jdk/src/classes/build/tools/taglet/JSpec.java
Normal file
@ -0,0 +1,192 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package build.tools.taglet;
|
||||
|
||||
import java.util.EnumSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import javax.lang.model.element.Element;
|
||||
|
||||
import com.sun.source.doctree.DocTree;
|
||||
import com.sun.source.doctree.LiteralTree;
|
||||
import com.sun.source.doctree.UnknownBlockTagTree;
|
||||
import com.sun.source.util.SimpleDocTreeVisitor;
|
||||
import jdk.javadoc.doclet.Taglet;
|
||||
|
||||
import static com.sun.source.doctree.DocTree.Kind.*;
|
||||
|
||||
/**
|
||||
* A base class for block tags to insert a link to an external copy of JLS or JVMS.
|
||||
* The tags can be used as follows:
|
||||
*
|
||||
* <pre>
|
||||
* @jls section-number description
|
||||
* </pre>
|
||||
*
|
||||
* For example:
|
||||
*
|
||||
* <pre>
|
||||
* @jls 3.4 Line Terminators
|
||||
* </pre>
|
||||
*
|
||||
* will produce the following HTML for a docs build configured for Java SE 12.
|
||||
*
|
||||
* <pre>{@code
|
||||
* <dt>See <i>Java Language Specification</i>:
|
||||
* <dd><a href="https://docs.oracle.com/javase/specs/jls/se12/html/jls-3.html#jls-3.4">3.4 Line terminators</a>
|
||||
* }</pre>
|
||||
*
|
||||
* The version of the spec must be set in the jspec.version system property.
|
||||
*/
|
||||
public class JSpec implements Taglet {
|
||||
static final String SPEC_VERSION;
|
||||
|
||||
static {
|
||||
SPEC_VERSION = System.getProperty("jspec.version");
|
||||
if (SPEC_VERSION == null) {
|
||||
throw new RuntimeException("jspec.version property not set");
|
||||
}
|
||||
}
|
||||
|
||||
public static class JLS extends JSpec {
|
||||
public JLS() {
|
||||
super("jls",
|
||||
"Java Language Specification",
|
||||
"https://docs.oracle.com/javase/specs/jls/se" + SPEC_VERSION + "/html",
|
||||
"jls");
|
||||
}
|
||||
}
|
||||
|
||||
public static class JVMS extends JSpec {
|
||||
public JVMS() {
|
||||
super("jvms",
|
||||
"Java Virtual Machine Specification",
|
||||
"https://docs.oracle.com/javase/specs/jvms/se" + SPEC_VERSION + "/html",
|
||||
"jvms");
|
||||
}
|
||||
}
|
||||
|
||||
private String tagName;
|
||||
private String specTitle;
|
||||
private String baseURL;
|
||||
private String idPrefix;
|
||||
|
||||
protected JSpec(String tagName, String specTitle, String baseURL, String idPrefix) {
|
||||
this.tagName = tagName;
|
||||
this.specTitle = specTitle;
|
||||
this.baseURL = baseURL;
|
||||
this.idPrefix = idPrefix;
|
||||
}
|
||||
|
||||
|
||||
static final Pattern TAG_PATTERN = Pattern.compile("(?s)(.+ )?(?<chapter>[1-9][0-9]*)(?<section>[0-9.]*)( .*)?$");
|
||||
|
||||
|
||||
/**
|
||||
* Returns the set of locations in which the tag may be used.
|
||||
*/
|
||||
@Override
|
||||
public Set<Location> getAllowedLocations() {
|
||||
return EnumSet.allOf(jdk.javadoc.doclet.Taglet.Location.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInlineTag() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return tagName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(List<? extends DocTree> tags, Element elem) {
|
||||
|
||||
if (tags.isEmpty())
|
||||
return "";
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("<dt>See <i>" + specTitle + "</i>:</dt>\n")
|
||||
.append("<dd>\n");
|
||||
|
||||
for (DocTree tag : tags) {
|
||||
|
||||
if (tag.getKind() != UNKNOWN_BLOCK_TAG) {
|
||||
continue;
|
||||
}
|
||||
|
||||
UnknownBlockTagTree blockTag = (UnknownBlockTagTree)tag;
|
||||
String tagText = blockTag.getContent().toString().trim();
|
||||
Matcher m = TAG_PATTERN.matcher(tagText);
|
||||
if (m.find()) {
|
||||
String chapter = m.group("chapter");
|
||||
String section = m.group("section");
|
||||
|
||||
String url = String.format("%1$s/%2$s-%3$s.html#jls-%3$s%4$s",
|
||||
baseURL, idPrefix, chapter, section);
|
||||
|
||||
|
||||
sb.append("<a href=\"")
|
||||
.append(url)
|
||||
.append("\">")
|
||||
.append(expand(blockTag))
|
||||
.append("</a><br>");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
sb.append("</dd>");
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
private String expand(UnknownBlockTagTree tree) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
return (new SimpleDocTreeVisitor<StringBuilder, StringBuilder>() {
|
||||
public StringBuilder defaultAction(DocTree tree, StringBuilder sb) {
|
||||
return sb.append(tree.toString());
|
||||
}
|
||||
|
||||
public StringBuilder visitLiteral(LiteralTree tree, StringBuilder sb) {
|
||||
if (tree.getKind() == CODE) {
|
||||
sb.append("<code>");
|
||||
}
|
||||
sb.append(escape(tree.getBody().toString()));
|
||||
if (tree.getKind() == CODE) {
|
||||
sb.append("</code>");
|
||||
}
|
||||
return sb;
|
||||
}
|
||||
|
||||
private String escape(String s) {
|
||||
return s.replace("&", "&").replace("<", "<").replace(">", ">");
|
||||
}
|
||||
}).visit(tree.getContent(), new StringBuilder()).toString();
|
||||
}
|
||||
}
|
159
make/jdk/src/classes/build/tools/taglet/ToolGuide.java
Normal file
159
make/jdk/src/classes/build/tools/taglet/ToolGuide.java
Normal file
@ -0,0 +1,159 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package build.tools.taglet;
|
||||
|
||||
import java.util.EnumSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import javax.lang.model.element.Element;
|
||||
import javax.lang.model.element.ModuleElement;
|
||||
import javax.lang.model.element.PackageElement;
|
||||
|
||||
import com.sun.source.doctree.DocTree;
|
||||
import com.sun.source.doctree.UnknownBlockTagTree;
|
||||
import jdk.javadoc.doclet.Taglet;
|
||||
|
||||
import static com.sun.source.doctree.DocTree.Kind.*;
|
||||
import static jdk.javadoc.doclet.Taglet.Location.*;
|
||||
|
||||
/**
|
||||
* A block tag to insert a link to tool guide in a nearby directory.
|
||||
* The tag can be used as follows:
|
||||
* <ul>
|
||||
* <li>@toolGuide tool-name label
|
||||
* </ul>
|
||||
*
|
||||
* If the label is omitted, it defaults to the tool name.
|
||||
*
|
||||
* For example
|
||||
* <p>
|
||||
* @toolGuide javac
|
||||
* <p>
|
||||
* will produce the following html, depending on the file containing
|
||||
* the tag.
|
||||
* <p>
|
||||
* {@code
|
||||
* <dt>Tool Guides:
|
||||
* <dd><a href="../../specs/man/javac.html">javac</a>
|
||||
* }
|
||||
*/
|
||||
public class ToolGuide implements Taglet {
|
||||
|
||||
static final String TAG_NAME = "toolGuide";
|
||||
|
||||
static final String BASE_URL = "../specs/man";
|
||||
|
||||
static final Pattern TAG_PATTERN = Pattern.compile("(?s)(?<name>[A-Za-z0-9]+)\\s*(?<label>.*)$");
|
||||
|
||||
/**
|
||||
* Returns the set of locations in which the tag may be used.
|
||||
*/
|
||||
@Override
|
||||
public Set<Location> getAllowedLocations() {
|
||||
return EnumSet.of(MODULE, PACKAGE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInlineTag() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return TAG_NAME;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(List<? extends DocTree> tags, Element elem) {
|
||||
|
||||
if (tags.isEmpty())
|
||||
return "";
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("<dt class=\"simpleTagLabel\">Tool Guides:</dt>\n")
|
||||
.append("<dd>");
|
||||
|
||||
boolean needComma = false;
|
||||
for (DocTree tag : tags) {
|
||||
|
||||
if (tag.getKind() != UNKNOWN_BLOCK_TAG) {
|
||||
continue;
|
||||
}
|
||||
|
||||
UnknownBlockTagTree blockTag = (UnknownBlockTagTree)tag;
|
||||
String tagText = blockTag.getContent().toString().trim();
|
||||
Matcher m = TAG_PATTERN.matcher(tagText);
|
||||
if (m.matches()) {
|
||||
String name = m.group("name");
|
||||
String label = m.group("label");
|
||||
if (label.isEmpty()) {
|
||||
label = name;
|
||||
}
|
||||
|
||||
String url = String.format("%s/%s/%s.html",
|
||||
docRoot(elem), BASE_URL, name);
|
||||
|
||||
if (needComma) {
|
||||
sb.append(",\n");
|
||||
} else {
|
||||
needComma = true;
|
||||
}
|
||||
|
||||
sb.append("<a href=\"")
|
||||
.append(url)
|
||||
.append("\">")
|
||||
.append(label)
|
||||
.append("</a>");
|
||||
}
|
||||
}
|
||||
|
||||
sb.append("</dd>\n");
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
private String docRoot(Element elem) {
|
||||
switch (elem.getKind()) {
|
||||
case MODULE:
|
||||
return "..";
|
||||
|
||||
case PACKAGE:
|
||||
PackageElement pe = (PackageElement)elem;
|
||||
String pkgPart = pe.getQualifiedName()
|
||||
.toString()
|
||||
.replace('.', '/')
|
||||
.replaceAll("[^/]+", "..");
|
||||
return pe.getEnclosingElement() != null
|
||||
? "../" + pkgPart
|
||||
: pkgPart;
|
||||
|
||||
default:
|
||||
throw new IllegalArgumentException(elem.getKind().toString());
|
||||
}
|
||||
}
|
||||
}
|
@ -378,7 +378,6 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBLCMS, \
|
||||
OPTIMIZATION := HIGHEST, \
|
||||
CFLAGS := $(CFLAGS_JDKLIB) \
|
||||
$(LCMS_CFLAGS), \
|
||||
CFLAGS_solaris := -xc99=no_lib, \
|
||||
CFLAGS_windows := -DCMS_IS_WINDOWS_, \
|
||||
EXTRA_HEADER_DIRS := \
|
||||
common/awt/debug \
|
||||
|
@ -820,6 +820,9 @@ compare_bin_file() {
|
||||
BIN_MSG="($BIN_MSG)"
|
||||
DIFF_BIN=
|
||||
fi
|
||||
else
|
||||
BIN_MSG=
|
||||
DIFF_BIN=
|
||||
fi
|
||||
|
||||
if [ -n "$STAT" ]; then
|
||||
@ -1571,15 +1574,12 @@ if [ "$CMP_LIBS" = "true" ]; then
|
||||
fi
|
||||
if [ -n "$THIS_TEST" ] && [ -n "$OTHER_TEST" ]; then
|
||||
echo -n "Test "
|
||||
# Test native libs are never stripped so will not compare well.
|
||||
SKIP_BIN_DIFF="true"
|
||||
ACCEPTED_SMALL_SIZE_DIFF_bak="$ACCEPTED_SMALL_SIZE_DIFF"
|
||||
if [ "$OPENJDK_TARGET_OS" = "solaris" ]; then
|
||||
ACCEPTED_SMALL_SIZE_DIFF="true"
|
||||
STRIP_ALL_bak="$STRIP_ALL"
|
||||
if [ "$STRIP_TESTS_BEFORE_COMPARE" = "true" ]; then
|
||||
STRIP_ALL="true"
|
||||
fi
|
||||
compare_all_libs $THIS_TEST $OTHER_TEST $COMPARE_ROOT/test
|
||||
SKIP_BIN_DIFF="false"
|
||||
ACCEPTED_SMALL_SIZE_DIFF="$ACCEPTED_SMALL_SIZE_DIFF_bak"
|
||||
STRIP_ALL="$STRIP_ALL_bak"
|
||||
fi
|
||||
if [ -n "$THIS_BASE_DIR" ] && [ -n "$OTHER_BASE_DIR" ]; then
|
||||
compare_all_libs $THIS_BASE_DIR $OTHER_BASE_DIR $COMPARE_ROOT/base_dir
|
||||
@ -1593,10 +1593,12 @@ if [ "$CMP_EXECS" = "true" ]; then
|
||||
fi
|
||||
if [ -n "$THIS_TEST" ] && [ -n "$OTHER_TEST" ]; then
|
||||
echo -n "Test "
|
||||
# Test native executables are never stripped so will not compare well.
|
||||
SKIP_BIN_DIFF="true"
|
||||
STRIP_ALL_bak="$STRIP_ALL"
|
||||
if [ "$STRIP_TESTS_BEFORE_COMPARE" = "true" ]; then
|
||||
STRIP_ALL="true"
|
||||
fi
|
||||
compare_all_execs $THIS_TEST $OTHER_TEST $COMPARE_ROOT/test
|
||||
SKIP_BIN_DIFF="false"
|
||||
STRIP_ALL="$STRIP_ALL_bak"
|
||||
fi
|
||||
if [ -n "$THIS_BASE_DIR" ] && [ -n "$OTHER_BASE_DIR" ]; then
|
||||
compare_all_execs $THIS_BASE_DIR $OTHER_BASE_DIR $COMPARE_ROOT/base_dir
|
||||
|
@ -40,6 +40,9 @@ if [ "$OPENJDK_TARGET_OS" = "linux" ]; then
|
||||
./lib/server/libjvm.so
|
||||
./hotspot/gtest/server/libjvm.so
|
||||
"
|
||||
STRIP_BEFORE_COMPARE="
|
||||
./hotspot/gtest/server/libjvm.so
|
||||
"
|
||||
elif [ "$OPENJDK_TARGET_OS" = "solaris" ]; then
|
||||
SKIP_BIN_DIFF="true"
|
||||
SKIP_FULLDUMP_DIFF="true"
|
||||
@ -56,6 +59,7 @@ elif [ "$OPENJDK_TARGET_OS" = "solaris" ]; then
|
||||
./lib/libfontmanager.so
|
||||
./lib/libsaproc.so
|
||||
"
|
||||
STRIP_TESTS_BEFORE_COMPARE="true"
|
||||
elif [ "$OPENJDK_TARGET_OS" = "windows" ]; then
|
||||
SKIP_BIN_DIFF="true"
|
||||
SKIP_FULLDUMP_DIFF="true"
|
||||
@ -72,4 +76,5 @@ elif [ "$OPENJDK_TARGET_OS" = "macosx" ]; then
|
||||
./lib/server/libjvm.dylib
|
||||
./hotspot/gtest/server/libjvm.dylib
|
||||
"
|
||||
STRIP_TESTS_BEFORE_COMPARE="true"
|
||||
fi
|
||||
|
@ -47,6 +47,9 @@ MICROBENCHMARK_OUTPUT := $(SUPPORT_OUTPUTDIR)/test/micro
|
||||
MICROBENCHMARK_CLASSES := $(MICROBENCHMARK_OUTPUT)/classes
|
||||
MICROBENCHMARK_JAR_BIN := $(MICROBENCHMARK_OUTPUT)/jar
|
||||
|
||||
MICROBENCHMARK_TOOLS_CLASSES := $(MICROBENCHMARK_OUTPUT)/tools-classes
|
||||
MICROBENCHMARK_INDIFY_DONE := $(MICROBENCHMARK_CLASSES)/_indify.marker
|
||||
|
||||
JMH_UNPACKED_DIR := $(MICROBENCHMARK_OUTPUT)/jmh_jars
|
||||
JMH_UNPACKED_JARS_DONE := $(JMH_UNPACKED_DIR)/_unpacked.marker
|
||||
|
||||
@ -68,6 +71,14 @@ MICROBENCHMARK_MANIFEST := Build: $(FULL_VERSION)\n\
|
||||
\nJMH-Version: $(JMH_VERSION)\n\
|
||||
\nName: OpenJDK Microbenchmark Suite
|
||||
|
||||
#### Compile Indify tool
|
||||
|
||||
$(eval $(call SetupJavaCompilation, BUILD_INDIFY, \
|
||||
SETUP := GENERATE_OLDBYTECODE, \
|
||||
SRC := $(TOPDIR)/test/jdk/java/lang/invoke, \
|
||||
INCLUDE_FILES := indify/Indify.java, \
|
||||
BIN := $(MICROBENCHMARK_TOOLS_CLASSES), \
|
||||
))
|
||||
|
||||
#### Compile Targets
|
||||
|
||||
@ -92,6 +103,14 @@ $(eval $(call SetupJavaCompilation, BUILD_JDK_MICROBENCHMARK, \
|
||||
|
||||
$(BUILD_JDK_MICROBENCHMARK): $(JMH_COMPILE_JARS)
|
||||
|
||||
# Run Indify
|
||||
$(MICROBENCHMARK_INDIFY_DONE): $(BUILD_INDIFY) $(BUILD_JDK_MICROBENCHMARK)
|
||||
$(call LogWarn, Running Indify on microbenchmark classes)
|
||||
$(JAVA_SMALL) -cp $(MICROBENCHMARK_TOOLS_CLASSES) \
|
||||
indify.Indify --overwrite $(MICROBENCHMARK_CLASSES) \
|
||||
$(LOG_DEBUG) 2>&1
|
||||
$(TOUCH) $@
|
||||
|
||||
# Unpacking dependencies for inclusion in the benchmark JARs
|
||||
$(JMH_UNPACKED_JARS_DONE): $(JMH_RUNTIME_JARS)
|
||||
$(RM) -r $(JMH_UNPACKED_DIR)
|
||||
@ -104,7 +123,8 @@ $(JMH_UNPACKED_JARS_DONE): $(JMH_RUNTIME_JARS)
|
||||
|
||||
# Create benchmarks JAR file with benchmarks for both the old and new JDK
|
||||
$(eval $(call SetupJarArchive, BUILD_JDK_JAR, \
|
||||
DEPENDENCIES := $(BUILD_JDK_MICROBENCHMARK) $(JMH_UNPACKED_JARS_DONE), \
|
||||
DEPENDENCIES := $(BUILD_JDK_MICROBENCHMARK) $(JMH_UNPACKED_JARS_DONE) \
|
||||
$(MICROBENCHMARK_INDIFY_DONE), \
|
||||
SRCS := $(MICROBENCHMARK_CLASSES) $(JMH_UNPACKED_DIR), \
|
||||
BIN := $(MICROBENCHMARK_JAR_BIN), \
|
||||
SUFFIXES := .*, \
|
||||
|
@ -62,9 +62,11 @@ ifeq ($(call isTargetOs, windows), true)
|
||||
WIN_LIB_JLI := $(SUPPORT_OUTPUTDIR)/native/java.base/libjli/jli.lib
|
||||
BUILD_JDK_JTREG_EXECUTABLES_LIBS_exeJliLaunchTest := $(WIN_LIB_JLI)
|
||||
BUILD_JDK_JTREG_EXECUTABLES_LIBS_exeCallerAccessTest := jvm.lib
|
||||
BUILD_JDK_JTREG_EXECUTABLES_LIBS_exerevokeall := advapi32.lib
|
||||
else
|
||||
BUILD_JDK_JTREG_LIBRARIES_LIBS_libstringPlatformChars := -ljava
|
||||
BUILD_JDK_JTREG_LIBRARIES_LIBS_libDirectIO := -ljava
|
||||
BUILD_JDK_JTREG_EXCLUDE += exerevokeall.c
|
||||
ifeq ($(call isTargetOs, linux), true)
|
||||
BUILD_JDK_JTREG_LIBRARIES_LIBS_libInheritedChannel := -ljava
|
||||
else ifeq ($(call isTargetOs, solaris), true)
|
||||
|
@ -14551,9 +14551,10 @@ instruct cmpFastUnlock(rFlagsReg cr, iRegP object, iRegP box, iRegPNoSp tmp, iRe
|
||||
// TODO
|
||||
// provide a near and far version of this code
|
||||
|
||||
instruct safePoint(iRegP poll)
|
||||
instruct safePoint(rFlagsReg cr, iRegP poll)
|
||||
%{
|
||||
match(SafePoint poll);
|
||||
effect(KILL cr);
|
||||
|
||||
format %{
|
||||
"ldrw zr, [$poll]\t# Safepoint: poll for GC"
|
||||
|
@ -629,6 +629,14 @@ public:
|
||||
|
||||
enum { instruction_size = 4 };
|
||||
|
||||
//---< calculate length of instruction >---
|
||||
// We just use the values set above.
|
||||
// instruction must start at passed address
|
||||
static unsigned int instr_len(unsigned char *instr) { return instruction_size; }
|
||||
|
||||
//---< longest instructions >---
|
||||
static unsigned int instr_maxlen() { return instruction_size; }
|
||||
|
||||
Address adjust(Register base, int offset, bool preIncrement) {
|
||||
if (preIncrement)
|
||||
return Address(Pre(base, offset));
|
||||
@ -1483,6 +1491,25 @@ public:
|
||||
INSN(eorw, 0, 0b10, 0);
|
||||
INSN(andsw, 0, 0b11, 0);
|
||||
|
||||
#undef INSN
|
||||
|
||||
#define INSN(NAME, size, op, N) \
|
||||
void NAME(Register Rd, Register Rn, Register Rm, \
|
||||
enum shift_kind kind = LSL, unsigned shift = 0) { \
|
||||
starti; \
|
||||
f(N, 21); \
|
||||
zrf(Rm, 16), zrf(Rn, 5), zrf(Rd, 0); \
|
||||
op_shifted_reg(0b01010, kind, shift, size, op); \
|
||||
} \
|
||||
\
|
||||
/* These instructions have no immediate form. Provide an overload so \
|
||||
that if anyone does try to use an immediate operand -- this has \
|
||||
happened! -- we'll get a compile-time error. */ \
|
||||
void NAME(Register Rd, Register Rn, unsigned imm, \
|
||||
enum shift_kind kind = LSL, unsigned shift = 0) { \
|
||||
assert(false, " can't be used with immediate operand"); \
|
||||
}
|
||||
|
||||
INSN(bic, 1, 0b00, 1);
|
||||
INSN(orn, 1, 0b01, 1);
|
||||
INSN(eon, 1, 0b10, 1);
|
||||
|
@ -316,6 +316,9 @@ int LIR_Assembler::check_icache() {
|
||||
return start_offset;
|
||||
}
|
||||
|
||||
void LIR_Assembler::clinit_barrier(ciMethod* method) {
|
||||
ShouldNotReachHere(); // not implemented
|
||||
}
|
||||
|
||||
void LIR_Assembler::jobject2reg(jobject o, Register reg) {
|
||||
if (o == NULL) {
|
||||
@ -2268,7 +2271,7 @@ void LIR_Assembler::emit_arraycopy(LIR_OpArrayCopy* op) {
|
||||
__ ldr(src, Address(sp, 4*BytesPerWord));
|
||||
|
||||
// r0 is -1^K where K == partial copied count
|
||||
__ eonw(rscratch1, r0, 0);
|
||||
__ eonw(rscratch1, r0, zr);
|
||||
// adjust length down and src/end pos up by partial copied count
|
||||
__ subw(length, length, rscratch1);
|
||||
__ addw(src_pos, src_pos, rscratch1);
|
||||
|
@ -76,7 +76,7 @@ define_pd_global(intx, ReservedCodeCacheSize, 48*M);
|
||||
define_pd_global(intx, NonProfiledCodeHeapSize, 21*M);
|
||||
define_pd_global(intx, ProfiledCodeHeapSize, 22*M);
|
||||
define_pd_global(intx, NonNMethodCodeHeapSize, 5*M );
|
||||
define_pd_global(uintx, CodeCacheMinBlockLength, 4);
|
||||
define_pd_global(uintx, CodeCacheMinBlockLength, 6);
|
||||
define_pd_global(uintx, CodeCacheMinimumUseSpace, 400*K);
|
||||
|
||||
// Heap related flags
|
||||
|
@ -34,4 +34,24 @@
|
||||
return "";
|
||||
}
|
||||
|
||||
// Returns address of n-th instruction preceding addr,
|
||||
// NULL if no preceding instruction can be found.
|
||||
// On ARM(aarch64), we assume a constant instruction length.
|
||||
// It might be beneficial to check "is_readable" as we do on ppc and s390.
|
||||
static address find_prev_instr(address addr, int n_instr) {
|
||||
return addr - Assembler::instruction_size*n_instr;
|
||||
}
|
||||
|
||||
// special-case instruction decoding.
|
||||
// There may be cases where the binutils disassembler doesn't do
|
||||
// the perfect job. In those cases, decode_instruction0 may kick in
|
||||
// and do it right.
|
||||
// If nothing had to be done, just return "here", otherwise return "here + instr_len(here)"
|
||||
static address decode_instruction0(address here, outputStream* st, address virtual_begin = NULL) {
|
||||
return here;
|
||||
}
|
||||
|
||||
// platform-specific instruction annotations (like value of loaded constants)
|
||||
static void annotate(address pc, outputStream* st) { };
|
||||
|
||||
#endif // CPU_AARCH64_DISASSEMBLER_AARCH64_HPP
|
||||
|
@ -37,7 +37,7 @@ private:
|
||||
|
||||
public:
|
||||
virtual void arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop,
|
||||
Register addr, Register count, RegSet saved_regs) {}
|
||||
Register src, Register dst, Register count, RegSet saved_regs) {}
|
||||
virtual void arraycopy_epilogue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop,
|
||||
Register start, Register end, Register tmp, RegSet saved_regs) {}
|
||||
virtual void load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
|
||||
|
@ -29,10 +29,10 @@
|
||||
#define __ masm->
|
||||
|
||||
void ModRefBarrierSetAssembler::arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop,
|
||||
Register addr, Register count, RegSet saved_regs) {
|
||||
Register src, Register dst, Register count, RegSet saved_regs) {
|
||||
|
||||
if (is_oop) {
|
||||
gen_write_ref_array_pre_barrier(masm, decorators, addr, count, saved_regs);
|
||||
gen_write_ref_array_pre_barrier(masm, decorators, dst, count, saved_regs);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -44,7 +44,7 @@ protected:
|
||||
|
||||
public:
|
||||
virtual void arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop,
|
||||
Register addr, Register count, RegSet saved_regs);
|
||||
Register src, Register dst, Register count, RegSet saved_regs);
|
||||
virtual void arraycopy_epilogue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop,
|
||||
Register start, Register count, Register tmp, RegSet saved_regs);
|
||||
virtual void store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
|
||||
|
@ -44,7 +44,7 @@
|
||||
address ShenandoahBarrierSetAssembler::_shenandoah_lrb = NULL;
|
||||
|
||||
void ShenandoahBarrierSetAssembler::arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop,
|
||||
Register addr, Register count, RegSet saved_regs) {
|
||||
Register src, Register dst, Register count, RegSet saved_regs) {
|
||||
if (is_oop) {
|
||||
bool dest_uninitialized = (decorators & IS_DEST_UNINITIALIZED) != 0;
|
||||
if (ShenandoahSATBBarrier && !dest_uninitialized && !ShenandoahHeap::heap()->heuristics()->can_do_traversal_gc()) {
|
||||
@ -61,17 +61,17 @@ void ShenandoahBarrierSetAssembler::arraycopy_prologue(MacroAssembler* masm, Dec
|
||||
|
||||
__ push(saved_regs, sp);
|
||||
if (count == c_rarg0) {
|
||||
if (addr == c_rarg1) {
|
||||
if (dst == c_rarg1) {
|
||||
// exactly backwards!!
|
||||
__ mov(rscratch1, c_rarg0);
|
||||
__ mov(c_rarg0, c_rarg1);
|
||||
__ mov(c_rarg1, rscratch1);
|
||||
} else {
|
||||
__ mov(c_rarg1, count);
|
||||
__ mov(c_rarg0, addr);
|
||||
__ mov(c_rarg0, dst);
|
||||
}
|
||||
} else {
|
||||
__ mov(c_rarg0, addr);
|
||||
__ mov(c_rarg0, dst);
|
||||
__ mov(c_rarg1, count);
|
||||
}
|
||||
if (UseCompressedOops) {
|
||||
@ -211,18 +211,46 @@ void ShenandoahBarrierSetAssembler::satb_write_barrier_pre(MacroAssembler* masm,
|
||||
__ bind(done);
|
||||
}
|
||||
|
||||
void ShenandoahBarrierSetAssembler::resolve_forward_pointer(MacroAssembler* masm, Register dst) {
|
||||
void ShenandoahBarrierSetAssembler::resolve_forward_pointer(MacroAssembler* masm, Register dst, Register tmp) {
|
||||
assert(ShenandoahLoadRefBarrier || ShenandoahCASBarrier, "Should be enabled");
|
||||
Label is_null;
|
||||
__ cbz(dst, is_null);
|
||||
resolve_forward_pointer_not_null(masm, dst);
|
||||
resolve_forward_pointer_not_null(masm, dst, tmp);
|
||||
__ bind(is_null);
|
||||
}
|
||||
|
||||
// IMPORTANT: This must preserve all registers, even rscratch1 and rscratch2.
|
||||
void ShenandoahBarrierSetAssembler::resolve_forward_pointer_not_null(MacroAssembler* masm, Register dst) {
|
||||
// IMPORTANT: This must preserve all registers, even rscratch1 and rscratch2, except those explicitely
|
||||
// passed in.
|
||||
void ShenandoahBarrierSetAssembler::resolve_forward_pointer_not_null(MacroAssembler* masm, Register dst, Register tmp) {
|
||||
assert(ShenandoahLoadRefBarrier || ShenandoahCASBarrier, "Should be enabled");
|
||||
__ ldr(dst, Address(dst, ShenandoahForwarding::byte_offset()));
|
||||
// The below loads the mark word, checks if the lowest two bits are
|
||||
// set, and if so, clear the lowest two bits and copy the result
|
||||
// to dst. Otherwise it leaves dst alone.
|
||||
// Implementing this is surprisingly awkward. I do it here by:
|
||||
// - Inverting the mark word
|
||||
// - Test lowest two bits == 0
|
||||
// - If so, set the lowest two bits
|
||||
// - Invert the result back, and copy to dst
|
||||
|
||||
bool borrow_reg = (tmp == noreg);
|
||||
if (borrow_reg) {
|
||||
// No free registers available. Make one useful.
|
||||
tmp = rscratch1;
|
||||
__ push(RegSet::of(tmp), sp);
|
||||
}
|
||||
|
||||
Label done;
|
||||
__ ldr(tmp, Address(dst, oopDesc::mark_offset_in_bytes()));
|
||||
__ eon(tmp, tmp, zr);
|
||||
__ ands(zr, tmp, markOopDesc::lock_mask_in_place);
|
||||
__ br(Assembler::NE, done);
|
||||
__ orr(tmp, tmp, markOopDesc::marked_value);
|
||||
__ eon(dst, tmp, zr);
|
||||
__ bind(done);
|
||||
|
||||
if (borrow_reg) {
|
||||
__ pop(RegSet::of(tmp), sp);
|
||||
}
|
||||
}
|
||||
|
||||
void ShenandoahBarrierSetAssembler::load_reference_barrier_not_null(MacroAssembler* masm, Register dst, Register tmp) {
|
||||
@ -343,40 +371,6 @@ void ShenandoahBarrierSetAssembler::store_at(MacroAssembler* masm, DecoratorSet
|
||||
|
||||
}
|
||||
|
||||
void ShenandoahBarrierSetAssembler::tlab_allocate(MacroAssembler* masm, Register obj,
|
||||
Register var_size_in_bytes,
|
||||
int con_size_in_bytes,
|
||||
Register t1,
|
||||
Register t2,
|
||||
Label& slow_case) {
|
||||
|
||||
assert_different_registers(obj, t2);
|
||||
assert_different_registers(obj, var_size_in_bytes);
|
||||
Register end = t2;
|
||||
|
||||
__ ldr(obj, Address(rthread, JavaThread::tlab_top_offset()));
|
||||
if (var_size_in_bytes == noreg) {
|
||||
__ lea(end, Address(obj, (int) (con_size_in_bytes + ShenandoahForwarding::byte_size())));
|
||||
} else {
|
||||
__ add(var_size_in_bytes, var_size_in_bytes, ShenandoahForwarding::byte_size());
|
||||
__ lea(end, Address(obj, var_size_in_bytes));
|
||||
}
|
||||
__ ldr(rscratch1, Address(rthread, JavaThread::tlab_end_offset()));
|
||||
__ cmp(end, rscratch1);
|
||||
__ br(Assembler::HI, slow_case);
|
||||
|
||||
// update the tlab top pointer
|
||||
__ str(end, Address(rthread, JavaThread::tlab_top_offset()));
|
||||
|
||||
__ add(obj, obj, ShenandoahForwarding::byte_size());
|
||||
__ str(obj, Address(obj, ShenandoahForwarding::byte_offset()));
|
||||
|
||||
// recover var_size_in_bytes if necessary
|
||||
if (var_size_in_bytes == end) {
|
||||
__ sub(var_size_in_bytes, var_size_in_bytes, obj);
|
||||
}
|
||||
}
|
||||
|
||||
void ShenandoahBarrierSetAssembler::cmpxchg_oop(MacroAssembler* masm, Register addr, Register expected, Register new_val,
|
||||
bool acquire, bool release, bool weak, bool is_cae,
|
||||
Register result) {
|
||||
@ -570,7 +564,7 @@ address ShenandoahBarrierSetAssembler::generate_shenandoah_lrb(StubCodeGenerator
|
||||
__ bind(work);
|
||||
|
||||
__ mov(rscratch2, r0);
|
||||
resolve_forward_pointer_not_null(cgen->assembler(), r0);
|
||||
resolve_forward_pointer_not_null(cgen->assembler(), r0, rscratch1);
|
||||
__ cmp(rscratch2, r0);
|
||||
__ br(Assembler::NE, done);
|
||||
|
||||
|
@ -54,8 +54,8 @@ private:
|
||||
bool tosca_live,
|
||||
bool expand_call);
|
||||
|
||||
void resolve_forward_pointer(MacroAssembler* masm, Register dst);
|
||||
void resolve_forward_pointer_not_null(MacroAssembler* masm, Register dst);
|
||||
void resolve_forward_pointer(MacroAssembler* masm, Register dst, Register tmp = noreg);
|
||||
void resolve_forward_pointer_not_null(MacroAssembler* masm, Register dst, Register tmp = noreg);
|
||||
void load_reference_barrier(MacroAssembler* masm, Register dst, Register tmp);
|
||||
void load_reference_barrier_not_null(MacroAssembler* masm, Register dst, Register tmp);
|
||||
|
||||
@ -73,20 +73,13 @@ public:
|
||||
#endif
|
||||
|
||||
virtual void arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop,
|
||||
Register addr, Register count, RegSet saved_regs);
|
||||
Register src, Register dst, Register count, RegSet saved_regs);
|
||||
virtual void arraycopy_epilogue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop,
|
||||
Register start, Register count, Register tmp, RegSet saved_regs);
|
||||
virtual void load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
|
||||
Register dst, Address src, Register tmp1, Register tmp_thread);
|
||||
virtual void store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
|
||||
Address dst, Register val, Register tmp1, Register tmp2);
|
||||
virtual void tlab_allocate(MacroAssembler* masm, Register obj,
|
||||
Register var_size_in_bytes,
|
||||
int con_size_in_bytes,
|
||||
Register t1,
|
||||
Register t2,
|
||||
Label& slow_case);
|
||||
|
||||
void cmpxchg_oop(MacroAssembler* masm, Register addr, Register expected, Register new_val,
|
||||
bool acquire, bool release, bool weak, bool is_cae, Register result);
|
||||
|
||||
|
@ -135,8 +135,7 @@ OopMap* RegisterSaver::save_live_registers(MacroAssembler* masm, int additional_
|
||||
int frame_size_in_words = frame_size_in_bytes / wordSize;
|
||||
*total_frame_words = frame_size_in_words;
|
||||
|
||||
// Save registers, fpu state, and flags.
|
||||
|
||||
// Save Integer and Float registers.
|
||||
__ enter();
|
||||
__ push_CPU_state(save_vectors);
|
||||
|
||||
@ -2880,7 +2879,7 @@ SafepointBlob* SharedRuntime::generate_handler_blob(address call_ptr, int poll_t
|
||||
bool cause_return = (poll_type == POLL_AT_RETURN);
|
||||
bool save_vectors = (poll_type == POLL_AT_VECTOR_LOOP);
|
||||
|
||||
// Save registers, fpu state, and flags
|
||||
// Save Integer and Float registers.
|
||||
map = RegisterSaver::save_live_registers(masm, 0, &frame_size_in_words, save_vectors);
|
||||
|
||||
// The following is basically a call_VM. However, we need the precise
|
||||
|
@ -1364,7 +1364,7 @@ class StubGenerator: public StubCodeGenerator {
|
||||
}
|
||||
|
||||
BarrierSetAssembler *bs = BarrierSet::barrier_set()->barrier_set_assembler();
|
||||
bs->arraycopy_prologue(_masm, decorators, is_oop, d, count, saved_reg);
|
||||
bs->arraycopy_prologue(_masm, decorators, is_oop, s, d, count, saved_reg);
|
||||
|
||||
if (is_oop) {
|
||||
// save regs before copy_memory
|
||||
@ -1436,7 +1436,7 @@ class StubGenerator: public StubCodeGenerator {
|
||||
}
|
||||
|
||||
BarrierSetAssembler *bs = BarrierSet::barrier_set()->barrier_set_assembler();
|
||||
bs->arraycopy_prologue(_masm, decorators, is_oop, d, count, saved_regs);
|
||||
bs->arraycopy_prologue(_masm, decorators, is_oop, s, d, count, saved_regs);
|
||||
|
||||
if (is_oop) {
|
||||
// save regs before copy_memory
|
||||
@ -1796,7 +1796,7 @@ class StubGenerator: public StubCodeGenerator {
|
||||
}
|
||||
|
||||
BarrierSetAssembler *bs = BarrierSet::barrier_set()->barrier_set_assembler();
|
||||
bs->arraycopy_prologue(_masm, decorators, is_oop, to, count, wb_pre_saved_regs);
|
||||
bs->arraycopy_prologue(_masm, decorators, is_oop, from, to, count, wb_pre_saved_regs);
|
||||
|
||||
// save the original count
|
||||
__ mov(count_save, count);
|
||||
@ -4035,14 +4035,14 @@ class StubGenerator: public StubCodeGenerator {
|
||||
: "compare_long_string_different_encoding UL");
|
||||
address entry = __ pc();
|
||||
Label SMALL_LOOP, TAIL, TAIL_LOAD_16, LOAD_LAST, DIFF1, DIFF2,
|
||||
DONE, CALCULATE_DIFFERENCE, LARGE_LOOP_PREFETCH, SMALL_LOOP_ENTER,
|
||||
DONE, CALCULATE_DIFFERENCE, LARGE_LOOP_PREFETCH, NO_PREFETCH,
|
||||
LARGE_LOOP_PREFETCH_REPEAT1, LARGE_LOOP_PREFETCH_REPEAT2;
|
||||
Register result = r0, str1 = r1, cnt1 = r2, str2 = r3, cnt2 = r4,
|
||||
tmp1 = r10, tmp2 = r11, tmp3 = r12, tmp4 = r14;
|
||||
FloatRegister vtmpZ = v0, vtmp = v1, vtmp3 = v2;
|
||||
RegSet spilled_regs = RegSet::of(tmp3, tmp4);
|
||||
|
||||
int prefetchLoopExitCondition = MAX(32, SoftwarePrefetchHintDistance/2);
|
||||
int prefetchLoopExitCondition = MAX(64, SoftwarePrefetchHintDistance/2);
|
||||
|
||||
__ eor(vtmpZ, __ T16B, vtmpZ, vtmpZ);
|
||||
// cnt2 == amount of characters left to compare
|
||||
@ -4069,7 +4069,7 @@ class StubGenerator: public StubCodeGenerator {
|
||||
|
||||
if (SoftwarePrefetchHintDistance >= 0) {
|
||||
__ subs(rscratch2, cnt2, prefetchLoopExitCondition);
|
||||
__ br(__ LT, SMALL_LOOP);
|
||||
__ br(__ LT, NO_PREFETCH);
|
||||
__ bind(LARGE_LOOP_PREFETCH);
|
||||
__ prfm(Address(tmp2, SoftwarePrefetchHintDistance));
|
||||
__ mov(tmp4, 2);
|
||||
@ -4089,51 +4089,20 @@ class StubGenerator: public StubCodeGenerator {
|
||||
__ br(__ GE, LARGE_LOOP_PREFETCH);
|
||||
}
|
||||
__ cbz(cnt2, LOAD_LAST); // no characters left except last load
|
||||
__ bind(NO_PREFETCH);
|
||||
__ subs(cnt2, cnt2, 16);
|
||||
__ br(__ LT, TAIL);
|
||||
__ b(SMALL_LOOP_ENTER);
|
||||
__ bind(SMALL_LOOP); // smaller loop
|
||||
__ subs(cnt2, cnt2, 16);
|
||||
__ bind(SMALL_LOOP_ENTER);
|
||||
compare_string_16_x_LU(tmpL, tmpU, DIFF1, DIFF2);
|
||||
__ br(__ GE, SMALL_LOOP);
|
||||
__ cbz(cnt2, LOAD_LAST);
|
||||
__ bind(TAIL); // 1..15 characters left
|
||||
__ subs(zr, cnt2, -8);
|
||||
__ br(__ GT, TAIL_LOAD_16);
|
||||
__ ldrd(vtmp, Address(tmp2));
|
||||
__ zip1(vtmp3, __ T8B, vtmp, vtmpZ);
|
||||
|
||||
__ ldr(tmpU, Address(__ post(cnt1, 8)));
|
||||
__ fmovd(tmpL, vtmp3);
|
||||
__ eor(rscratch2, tmp3, tmpL);
|
||||
__ cbnz(rscratch2, DIFF2);
|
||||
__ umov(tmpL, vtmp3, __ D, 1);
|
||||
__ eor(rscratch2, tmpU, tmpL);
|
||||
__ cbnz(rscratch2, DIFF1);
|
||||
__ b(LOAD_LAST);
|
||||
__ bind(TAIL_LOAD_16);
|
||||
__ ldrq(vtmp, Address(tmp2));
|
||||
__ ldr(tmpU, Address(__ post(cnt1, 8)));
|
||||
__ zip1(vtmp3, __ T16B, vtmp, vtmpZ);
|
||||
__ zip2(vtmp, __ T16B, vtmp, vtmpZ);
|
||||
__ fmovd(tmpL, vtmp3);
|
||||
__ eor(rscratch2, tmp3, tmpL);
|
||||
__ cbnz(rscratch2, DIFF2);
|
||||
|
||||
__ ldr(tmp3, Address(__ post(cnt1, 8)));
|
||||
__ umov(tmpL, vtmp3, __ D, 1);
|
||||
__ eor(rscratch2, tmpU, tmpL);
|
||||
__ cbnz(rscratch2, DIFF1);
|
||||
|
||||
__ ldr(tmpU, Address(__ post(cnt1, 8)));
|
||||
__ fmovd(tmpL, vtmp);
|
||||
__ eor(rscratch2, tmp3, tmpL);
|
||||
__ cbnz(rscratch2, DIFF2);
|
||||
|
||||
__ umov(tmpL, vtmp, __ D, 1);
|
||||
__ eor(rscratch2, tmpU, tmpL);
|
||||
__ cbnz(rscratch2, DIFF1);
|
||||
__ cmn(cnt2, (u1)16);
|
||||
__ br(__ EQ, LOAD_LAST);
|
||||
__ bind(TAIL); // 1..15 characters left until last load (last 4 characters)
|
||||
__ add(cnt1, cnt1, cnt2, __ LSL, 1); // Address of 8 bytes before last 4 characters in UTF-16 string
|
||||
__ add(tmp2, tmp2, cnt2); // Address of 16 bytes before last 4 characters in Latin1 string
|
||||
__ ldr(tmp3, Address(cnt1, -8));
|
||||
compare_string_16_x_LU(tmpL, tmpU, DIFF1, DIFF2); // last 16 characters before last load
|
||||
__ b(LOAD_LAST);
|
||||
__ bind(DIFF2);
|
||||
__ mov(tmpU, tmp3);
|
||||
@ -4141,10 +4110,12 @@ class StubGenerator: public StubCodeGenerator {
|
||||
__ pop(spilled_regs, sp);
|
||||
__ b(CALCULATE_DIFFERENCE);
|
||||
__ bind(LOAD_LAST);
|
||||
// Last 4 UTF-16 characters are already pre-loaded into tmp3 by compare_string_16_x_LU.
|
||||
// No need to load it again
|
||||
__ mov(tmpU, tmp3);
|
||||
__ pop(spilled_regs, sp);
|
||||
|
||||
__ ldrs(vtmp, Address(strL));
|
||||
__ ldr(tmpU, Address(strU));
|
||||
__ zip1(vtmp, __ T8B, vtmp, vtmpZ);
|
||||
__ fmovd(tmpL, vtmp);
|
||||
|
||||
@ -4206,10 +4177,10 @@ class StubGenerator: public StubCodeGenerator {
|
||||
compare_string_16_bytes_same(DIFF, DIFF2);
|
||||
__ br(__ GT, LARGE_LOOP_PREFETCH);
|
||||
__ cbz(cnt2, LAST_CHECK_AND_LENGTH_DIFF); // no more chars left?
|
||||
// less than 16 bytes left?
|
||||
__ subs(cnt2, cnt2, isLL ? 16 : 8);
|
||||
__ br(__ LT, TAIL);
|
||||
}
|
||||
// less than 16 bytes left?
|
||||
__ subs(cnt2, cnt2, isLL ? 16 : 8);
|
||||
__ br(__ LT, TAIL);
|
||||
__ bind(SMALL_LOOP);
|
||||
compare_string_16_bytes_same(DIFF, DIFF2);
|
||||
__ subs(cnt2, cnt2, isLL ? 16 : 8);
|
||||
@ -4338,6 +4309,7 @@ class StubGenerator: public StubCodeGenerator {
|
||||
__ ldr(ch1, Address(str1));
|
||||
// Read whole register from str2. It is safe, because length >=8 here
|
||||
__ ldr(ch2, Address(str2));
|
||||
__ sub(cnt2, cnt2, cnt1);
|
||||
__ andr(first, ch1, str1_isL ? 0xFF : 0xFFFF);
|
||||
if (str1_isL != str2_isL) {
|
||||
__ eor(v0, __ T16B, v0, v0);
|
||||
|
@ -129,8 +129,11 @@ void VM_Version::get_processor_features() {
|
||||
|
||||
int dcache_line = VM_Version::dcache_line_size();
|
||||
|
||||
// Limit AllocatePrefetchDistance so that it does not exceed the
|
||||
// constraint in AllocatePrefetchDistanceConstraintFunc.
|
||||
if (FLAG_IS_DEFAULT(AllocatePrefetchDistance))
|
||||
FLAG_SET_DEFAULT(AllocatePrefetchDistance, 3*dcache_line);
|
||||
FLAG_SET_DEFAULT(AllocatePrefetchDistance, MIN2(512, 3*dcache_line));
|
||||
|
||||
if (FLAG_IS_DEFAULT(AllocatePrefetchStepSize))
|
||||
FLAG_SET_DEFAULT(AllocatePrefetchStepSize, dcache_line);
|
||||
if (FLAG_IS_DEFAULT(PrefetchScanIntervalInBytes))
|
||||
|
@ -4348,7 +4348,8 @@ instruct loadConD(regD dst, immD src, iRegP tmp) %{
|
||||
// Prefetch instructions.
|
||||
// Must be safe to execute with invalid address (cannot fault).
|
||||
|
||||
instruct prefetchAlloc( memoryP mem ) %{
|
||||
instruct prefetchAlloc_mp( memoryP mem ) %{
|
||||
predicate(VM_Version::has_multiprocessing_extensions());
|
||||
match( PrefetchAllocation mem );
|
||||
ins_cost(MEMORY_REF_COST);
|
||||
size(4);
|
||||
@ -4360,6 +4361,20 @@ instruct prefetchAlloc( memoryP mem ) %{
|
||||
ins_pipe(iload_mem);
|
||||
%}
|
||||
|
||||
instruct prefetchAlloc_sp( memoryP mem ) %{
|
||||
predicate(!VM_Version::has_multiprocessing_extensions());
|
||||
match( PrefetchAllocation mem );
|
||||
ins_cost(MEMORY_REF_COST);
|
||||
size(4);
|
||||
|
||||
format %{ "PLD $mem\t! Prefetch allocation" %}
|
||||
ins_encode %{
|
||||
__ pld($mem$$Address);
|
||||
%}
|
||||
ins_pipe(iload_mem);
|
||||
%}
|
||||
|
||||
|
||||
//----------Store Instructions-------------------------------------------------
|
||||
// Store Byte
|
||||
instruct storeB(memoryB mem, store_RegI src) %{
|
||||
|
@ -199,6 +199,14 @@ class Assembler : public AbstractAssembler {
|
||||
static const int LogInstructionSize = 2;
|
||||
static const int InstructionSize = 1 << LogInstructionSize;
|
||||
|
||||
//---< calculate length of instruction >---
|
||||
// We just use the values set above.
|
||||
// instruction must start at passed address
|
||||
static unsigned int instr_len(unsigned char *instr) { return InstructionSize; }
|
||||
|
||||
//---< longest instructions >---
|
||||
static unsigned int instr_maxlen() { return InstructionSize; }
|
||||
|
||||
static inline AsmCondition inverse(AsmCondition cond) {
|
||||
assert ((cond != al) && (cond != nv), "AL and NV conditions cannot be inversed");
|
||||
return (AsmCondition)((int)cond ^ 1);
|
||||
@ -434,7 +442,9 @@ class Assembler : public AbstractAssembler {
|
||||
}
|
||||
|
||||
void pldw(Address addr) {
|
||||
assert(VM_Version::arm_arch() >= 7 && os::is_MP(), "no pldw on this processor");
|
||||
assert(!VM_Version::is_initialized() ||
|
||||
(VM_Version::arm_arch() >= 7 && VM_Version::has_multiprocessing_extensions()),
|
||||
"PLDW is available on ARMv7 with Multiprocessing Extensions only");
|
||||
emit_int32(0xf510f000 | addr.encoding2());
|
||||
}
|
||||
|
||||
|
@ -191,6 +191,9 @@ int LIR_Assembler::check_icache() {
|
||||
return offset;
|
||||
}
|
||||
|
||||
void LIR_Assembler::clinit_barrier(ciMethod* method) {
|
||||
ShouldNotReachHere(); // not implemented
|
||||
}
|
||||
|
||||
void LIR_Assembler::jobject2reg_with_patching(Register reg, CodeEmitInfo* info) {
|
||||
jobject o = (jobject)Universe::non_oop_word();
|
||||
|
@ -97,7 +97,7 @@ define_pd_global(size_t, CodeCacheExpansionSize, 32*K);
|
||||
// Ergonomics related flags
|
||||
define_pd_global(uint64_t, MaxRAM, 4ULL*G);
|
||||
#endif
|
||||
define_pd_global(uintx, CodeCacheMinBlockLength, 4);
|
||||
define_pd_global(uintx, CodeCacheMinBlockLength, 6);
|
||||
define_pd_global(size_t, CodeCacheMinimumUseSpace, 400*K);
|
||||
|
||||
define_pd_global(bool, TrapBasedRangeChecks, false); // Not needed
|
||||
|
@ -33,4 +33,24 @@
|
||||
return "";
|
||||
}
|
||||
|
||||
// Returns address of n-th instruction preceding addr,
|
||||
// NULL if no preceding instruction can be found.
|
||||
// On ARM, we assume a constant instruction length.
|
||||
// It might be beneficial to check "is_readable" as we do on ppc and s390.
|
||||
static address find_prev_instr(address addr, int n_instr) {
|
||||
return addr - Assembler::InstructionSize*n_instr;
|
||||
}
|
||||
|
||||
// special-case instruction decoding.
|
||||
// There may be cases where the binutils disassembler doesn't do
|
||||
// the perfect job. In those cases, decode_instruction0 may kick in
|
||||
// and do it right.
|
||||
// If nothing had to be done, just return "here", otherwise return "here + instr_len(here)"
|
||||
static address decode_instruction0(address here, outputStream* st, address virtual_begin = NULL) {
|
||||
return here;
|
||||
}
|
||||
|
||||
// platform-specific instruction annotations (like value of loaded constants)
|
||||
static void annotate(address pc, outputStream* st) { };
|
||||
|
||||
#endif // CPU_ARM_DISASSEMBLER_ARM_HPP
|
||||
|
@ -32,6 +32,7 @@ class VM_Version: public Abstract_VM_Version {
|
||||
friend class JVMCIVMStructs;
|
||||
|
||||
static bool _has_simd;
|
||||
static bool _has_mp_ext;
|
||||
|
||||
protected:
|
||||
// Are we done with vm version initialization
|
||||
@ -47,6 +48,7 @@ class VM_Version: public Abstract_VM_Version {
|
||||
vfp = 0,
|
||||
vfp3_32 = 1,
|
||||
simd = 2,
|
||||
mp_ext = 3
|
||||
};
|
||||
|
||||
enum Feature_Flag_Set {
|
||||
@ -56,6 +58,7 @@ class VM_Version: public Abstract_VM_Version {
|
||||
vfp_m = 1 << vfp,
|
||||
vfp3_32_m = 1 << vfp3_32,
|
||||
simd_m = 1 << simd,
|
||||
mp_ext_m = 1 << mp_ext
|
||||
};
|
||||
|
||||
// The value stored by "STR PC, [addr]" instruction can be either
|
||||
@ -97,6 +100,7 @@ class VM_Version: public Abstract_VM_Version {
|
||||
static bool has_vfp() { return (_features & vfp_m) != 0; }
|
||||
static bool has_vfp3_32() { return (_features & vfp3_32_m) != 0; }
|
||||
static bool has_simd() { return (_features & simd_m) != 0; }
|
||||
static bool has_multiprocessing_extensions() { return (_features & mp_ext_m) != 0; }
|
||||
|
||||
static bool simd_math_is_compliant() { return false; }
|
||||
|
||||
|
@ -40,6 +40,7 @@ extern "C" {
|
||||
typedef int (*get_cpu_info_t)();
|
||||
typedef bool (*check_vfp_t)(double *d);
|
||||
typedef bool (*check_simd_t)();
|
||||
typedef bool (*check_mp_ext_t)(int *addr);
|
||||
}
|
||||
|
||||
#define __ _masm->
|
||||
@ -95,6 +96,20 @@ class VM_Version_StubGenerator: public StubCodeGenerator {
|
||||
|
||||
return start;
|
||||
};
|
||||
|
||||
address generate_check_mp_ext() {
|
||||
StubCodeMark mark(this, "VM_Version", "check_mp_ext");
|
||||
address start = __ pc();
|
||||
|
||||
// PLDW is available with Multiprocessing Extensions only
|
||||
__ pldw(Address(R0));
|
||||
// Return true if instruction caused no signals
|
||||
__ mov(R0, 1);
|
||||
// JVM_handle_linux_signal moves PC here if SIGILL happens
|
||||
__ bx(LR);
|
||||
|
||||
return start;
|
||||
};
|
||||
};
|
||||
|
||||
#undef __
|
||||
@ -103,6 +118,7 @@ class VM_Version_StubGenerator: public StubCodeGenerator {
|
||||
extern "C" address check_vfp3_32_fault_instr;
|
||||
extern "C" address check_vfp_fault_instr;
|
||||
extern "C" address check_simd_fault_instr;
|
||||
extern "C" address check_mp_ext_fault_instr;
|
||||
|
||||
void VM_Version::early_initialize() {
|
||||
|
||||
@ -165,6 +181,13 @@ void VM_Version::initialize() {
|
||||
#endif
|
||||
#endif
|
||||
|
||||
address check_mp_ext_pc = g.generate_check_mp_ext();
|
||||
check_mp_ext_t check_mp_ext = CAST_TO_FN_PTR(check_mp_ext_t, check_mp_ext_pc);
|
||||
check_mp_ext_fault_instr = (address)check_mp_ext;
|
||||
int dummy_local_variable;
|
||||
if (check_mp_ext(&dummy_local_variable)) {
|
||||
_features |= mp_ext_m;
|
||||
}
|
||||
|
||||
if (UseAESIntrinsics && !FLAG_IS_DEFAULT(UseAESIntrinsics)) {
|
||||
warning("AES intrinsics are not available on this CPU");
|
||||
@ -247,11 +270,12 @@ void VM_Version::initialize() {
|
||||
&& _supports_atomic_getset8 && _supports_atomic_getadd8, "C2: atomic operations must be supported");
|
||||
#endif
|
||||
char buf[512];
|
||||
jio_snprintf(buf, sizeof(buf), "(ARMv%d)%s%s%s",
|
||||
jio_snprintf(buf, sizeof(buf), "(ARMv%d)%s%s%s%s",
|
||||
_arm_arch,
|
||||
(has_vfp() ? ", vfp" : ""),
|
||||
(has_vfp3_32() ? ", vfp3-32" : ""),
|
||||
(has_simd() ? ", simd" : ""));
|
||||
(has_simd() ? ", simd" : ""),
|
||||
(has_multiprocessing_extensions() ? ", mp_ext" : ""));
|
||||
|
||||
// buf is started with ", " or is empty
|
||||
_features_string = os::strdup(buf);
|
||||
@ -276,10 +300,12 @@ void VM_Version::initialize() {
|
||||
// SIMD/NEON can use 16, but default is 8 because currently
|
||||
// larger than 8 will disable instruction scheduling
|
||||
FLAG_SET_DEFAULT(MaxVectorSize, 8);
|
||||
}
|
||||
|
||||
if (MaxVectorSize > 16) {
|
||||
FLAG_SET_DEFAULT(MaxVectorSize, 8);
|
||||
} else {
|
||||
int max_vector_size = has_simd() ? 16 : 8;
|
||||
if (MaxVectorSize > max_vector_size) {
|
||||
warning("MaxVectorSize must be at most %i on this platform", max_vector_size);
|
||||
FLAG_SET_DEFAULT(MaxVectorSize, max_vector_size);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -929,11 +929,13 @@ class Assembler : public AbstractAssembler {
|
||||
|
||||
enum Predict { pt = 1, pn = 0 }; // pt = predict taken
|
||||
|
||||
// Instruction must start at passed address.
|
||||
static int instr_len(unsigned char *instr) { return BytesPerInstWord; }
|
||||
//---< calculate length of instruction >---
|
||||
// With PPC64 being a RISC architecture, this always is BytesPerInstWord
|
||||
// instruction must start at passed address
|
||||
static unsigned int instr_len(unsigned char *instr) { return BytesPerInstWord; }
|
||||
|
||||
// longest instructions
|
||||
static int instr_maxlen() { return BytesPerInstWord; }
|
||||
//---< longest instructions >---
|
||||
static unsigned int instr_maxlen() { return BytesPerInstWord; }
|
||||
|
||||
// Test if x is within signed immediate range for nbits.
|
||||
static bool is_simm(int x, unsigned int nbits) {
|
||||
|
@ -79,6 +79,9 @@ int LIR_Assembler::check_icache() {
|
||||
return offset;
|
||||
}
|
||||
|
||||
void LIR_Assembler::clinit_barrier(ciMethod* method) {
|
||||
ShouldNotReachHere(); // not implemented
|
||||
}
|
||||
|
||||
void LIR_Assembler::osr_entry() {
|
||||
// On-stack-replacement entry sequence:
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2012, 2018 SAP SE. All rights reserved.
|
||||
* Copyright (c) 2012, 2019 SAP SE. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -90,7 +90,7 @@ define_pd_global(uintx, CodeCacheExpansionSize, 64*K);
|
||||
|
||||
// Ergonomics related flags
|
||||
define_pd_global(uint64_t, MaxRAM, 128ULL*G);
|
||||
define_pd_global(uintx, CodeCacheMinBlockLength, 4);
|
||||
define_pd_global(uintx, CodeCacheMinBlockLength, 6);
|
||||
define_pd_global(uintx, CodeCacheMinimumUseSpace, 400*K);
|
||||
|
||||
define_pd_global(bool, TrapBasedRangeChecks, true);
|
||||
|
@ -36,18 +36,18 @@ void Compile::pd_compiler2_init() {
|
||||
// Power7 and later.
|
||||
if (PowerArchitecturePPC64 > 6) {
|
||||
if (FLAG_IS_DEFAULT(UsePopCountInstruction)) {
|
||||
FLAG_SET_ERGO(bool, UsePopCountInstruction, true);
|
||||
FLAG_SET_ERGO(UsePopCountInstruction, true);
|
||||
}
|
||||
}
|
||||
|
||||
if (PowerArchitecturePPC64 == 6) {
|
||||
if (FLAG_IS_DEFAULT(InsertEndGroupPPC64)) {
|
||||
FLAG_SET_ERGO(bool, InsertEndGroupPPC64, true);
|
||||
FLAG_SET_ERGO(InsertEndGroupPPC64, true);
|
||||
}
|
||||
}
|
||||
|
||||
if (!VM_Version::has_isel() && FLAG_IS_DEFAULT(ConditionalMoveLimit)) {
|
||||
FLAG_SET_ERGO(intx, ConditionalMoveLimit, 0);
|
||||
FLAG_SET_ERGO(ConditionalMoveLimit, 0);
|
||||
}
|
||||
|
||||
if (OptimizeFill) {
|
||||
|
201
src/hotspot/cpu/ppc/disassembler_ppc.cpp
Normal file
201
src/hotspot/cpu/ppc/disassembler_ppc.cpp
Normal file
@ -0,0 +1,201 @@
|
||||
/*
|
||||
* Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2019 SAP SE. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "asm/macroAssembler.inline.hpp"
|
||||
#include "code/codeCache.hpp"
|
||||
#include "compiler/disassembler.hpp"
|
||||
#include "depChecker_ppc.hpp"
|
||||
#include "gc/cms/concurrentMarkSweepGeneration.inline.hpp"
|
||||
#include "gc/cms/parOopClosures.inline.hpp"
|
||||
#include "gc/shared/collectedHeap.hpp"
|
||||
#include "gc/shared/cardTableBarrierSet.hpp"
|
||||
#include "gc/shared/genOopClosures.inline.hpp"
|
||||
#include "oops/oop.inline.hpp"
|
||||
#include "runtime/handles.inline.hpp"
|
||||
#include "runtime/stubCodeGenerator.hpp"
|
||||
#include "runtime/stubRoutines.hpp"
|
||||
|
||||
// Macro to print instruction bits.
|
||||
// numbering of instruction bits on ppc64 is (highest) 0 1 ... 30 31 (lowest).
|
||||
#define print_instruction_bits(st, instruction, start_bit, end_bit) \
|
||||
{ assert((start_bit) <= (end_bit), "sanity check"); \
|
||||
for (int i=(31-(start_bit));i>=(31-(end_bit));i--) { \
|
||||
(st)->print("%d", ((instruction) >> i) & 0x1); \
|
||||
} \
|
||||
}
|
||||
|
||||
// Macro to decode "bo" instruction bits.
|
||||
#define print_decoded_bo_bits(env, instruction, end_bit) \
|
||||
{ int bo_bits = (instruction >> (31 - (end_bit))) & 0x1f; \
|
||||
if ( ((bo_bits & 0x1c) == 0x4) || ((bo_bits & 0x1c) == 0xc) ) { \
|
||||
switch (bo_bits & 0x3) { \
|
||||
case (0 << 1) | (0 << 0): env->print("[no_hint]"); break; \
|
||||
case (0 << 1) | (1 << 0): env->print("[reserved]"); break; \
|
||||
case (1 << 1) | (0 << 0): env->print("[not_taken]"); break; \
|
||||
case (1 << 1) | (1 << 0): env->print("[taken]"); break; \
|
||||
default: break; \
|
||||
} \
|
||||
} else if ( ((bo_bits & 0x14) == 0x10) ) { \
|
||||
switch (bo_bits & 0x9) { \
|
||||
case (0 << 3) | (0 << 0): env->print("[no_hint]"); break; \
|
||||
case (0 << 3) | (1 << 0): env->print("[reserved]"); break; \
|
||||
case (1 << 3) | (0 << 0): env->print("[not_taken]"); break; \
|
||||
case (1 << 3) | (1 << 0): env->print("[taken]"); break; \
|
||||
default: break; \
|
||||
} \
|
||||
} \
|
||||
}
|
||||
|
||||
// Macro to decode "bh" instruction bits.
|
||||
#define print_decoded_bh_bits(env, instruction, end_bit, is_bclr) \
|
||||
{ int bh_bits = (instruction >> (31 - (end_bit))) & 0x3; \
|
||||
if (is_bclr) { \
|
||||
switch (bh_bits) { \
|
||||
case (0 << 1) | (0 << 0): env->print("[subroutine_return]"); break; \
|
||||
case (0 << 1) | (1 << 0): env->print("[not_return_but_same]"); break; \
|
||||
case (1 << 1) | (0 << 0): env->print("[reserved]"); break; \
|
||||
case (1 << 1) | (1 << 0): env->print("[not_predictable]"); break; \
|
||||
default: break; \
|
||||
} \
|
||||
} else { \
|
||||
switch (bh_bits) { \
|
||||
case (0 << 1) | (0 << 0): env->print("[not_return_but_same]"); break; \
|
||||
case (0 << 1) | (1 << 0): env->print("[reserved]"); break; \
|
||||
case (1 << 1) | (0 << 0): env->print("[reserved]"); break; \
|
||||
case (1 << 1) | (1 << 0): env->print("[not_predictable]"); break; \
|
||||
default: break; \
|
||||
} \
|
||||
} \
|
||||
}
|
||||
|
||||
address Disassembler::find_prev_instr(address here, int n_instr) {
|
||||
if (!os::is_readable_pointer(here)) return NULL; // obviously a bad location to decode
|
||||
|
||||
// Find most distant possible starting point.
|
||||
// Narrow down because we don't want to SEGV while printing.
|
||||
address start = here - n_instr*Assembler::instr_maxlen(); // starting point can't be further away.
|
||||
while ((start < here) && !os::is_readable_range(start, here)) {
|
||||
start = align_down(start, os::min_page_size()) + os::min_page_size();
|
||||
}
|
||||
if (start >= here) {
|
||||
// Strange. Can only happen with here on page boundary.
|
||||
return NULL;
|
||||
}
|
||||
return start;
|
||||
}
|
||||
|
||||
address Disassembler::decode_instruction0(address here, outputStream * st, address virtual_begin ) {
|
||||
if (is_abstract()) {
|
||||
// The disassembler library was not loaded (yet),
|
||||
// use AbstractDisassembler's decode method.
|
||||
return decode_instruction_abstract(here, st, Assembler::instr_len(here), Assembler::instr_maxlen());
|
||||
}
|
||||
|
||||
// Currently, "special decoding" doesn't work when decoding error files.
|
||||
// When decoding an instruction from a hs_err file, the given
|
||||
// instruction address 'start' points to the instruction's virtual address
|
||||
// which is not equal to the address where the instruction is located.
|
||||
// Therefore, we will either crash or decode garbage.
|
||||
if (is_decode_error_file()) {
|
||||
return here;
|
||||
}
|
||||
|
||||
//---< Decode some well-known "instructions" >---
|
||||
|
||||
address next;
|
||||
uint32_t instruction = *(uint32_t*)here;
|
||||
|
||||
// Align at next tab position.
|
||||
const uint tabspacing = 8;
|
||||
const uint pos = st->position();
|
||||
const uint aligned_pos = ((pos+tabspacing-1)/tabspacing)*tabspacing;
|
||||
st->fill_to(aligned_pos);
|
||||
|
||||
if (instruction == 0x0) {
|
||||
st->print("illtrap .data 0x0");
|
||||
next = here + Assembler::instr_len(here);
|
||||
} else if (instruction == 0xbadbabe) {
|
||||
st->print(".data 0xbadbabe");
|
||||
next = here + Assembler::instr_len(here);
|
||||
} else if (Assembler::is_endgroup(instruction)) {
|
||||
st->print("endgroup");
|
||||
next = here + Assembler::instr_len(here);
|
||||
} else {
|
||||
next = here;
|
||||
}
|
||||
return next;
|
||||
}
|
||||
|
||||
// print annotations (instruction control bits)
|
||||
void Disassembler::annotate(address here, outputStream* st) {
|
||||
// Currently, annotation doesn't work when decoding error files.
|
||||
// When decoding an instruction from a hs_err file, the given
|
||||
// instruction address 'start' points to the instruction's virtual address
|
||||
// which is not equal to the address where the instruction is located.
|
||||
// Therefore, we will either crash or decode garbage.
|
||||
if (is_decode_error_file()) {
|
||||
return;
|
||||
}
|
||||
|
||||
uint32_t instruction = *(uint32_t*)here;
|
||||
|
||||
// Align at next tab position.
|
||||
const uint tabspacing = 8;
|
||||
const uint pos = st->position();
|
||||
const uint aligned_pos = ((pos+tabspacing-1)/tabspacing)*tabspacing;
|
||||
|
||||
if (MacroAssembler::is_bcxx(instruction)) {
|
||||
st->print(",bo=0b");
|
||||
print_instruction_bits(st, instruction, 6, 10);
|
||||
print_decoded_bo_bits(st, instruction, 10);
|
||||
} else if (MacroAssembler::is_bctr(instruction) ||
|
||||
MacroAssembler::is_bctrl(instruction) ||
|
||||
MacroAssembler::is_bclr(instruction)) {
|
||||
st->fill_to(aligned_pos);
|
||||
st->print("bo=0b");
|
||||
print_instruction_bits(st, instruction, 6, 10);
|
||||
print_decoded_bo_bits(st, instruction, 10);
|
||||
st->print(",bh=0b");
|
||||
print_instruction_bits(st, instruction, 19, 20);
|
||||
print_decoded_bh_bits(st, instruction, 20,
|
||||
!(MacroAssembler::is_bctr(instruction) ||
|
||||
MacroAssembler::is_bctrl(instruction)));
|
||||
} else if (MacroAssembler::is_trap_should_not_reach_here(instruction)) {
|
||||
st->fill_to(aligned_pos + tabspacing);
|
||||
st->print(";trap: should not reach here");
|
||||
} else if (MacroAssembler::is_trap_null_check(instruction)) {
|
||||
st->fill_to(aligned_pos + tabspacing);
|
||||
st->print(";trap: null check");
|
||||
} else if (MacroAssembler::is_trap_range_check(instruction)) {
|
||||
st->fill_to(aligned_pos + tabspacing);
|
||||
st->print(";trap: range check");
|
||||
} else if (MacroAssembler::is_trap_ic_miss_check(instruction)) {
|
||||
st->fill_to(aligned_pos + tabspacing);
|
||||
st->print(";trap: ic miss check");
|
||||
} else if (MacroAssembler::is_trap_zombie_not_entrant(instruction)) {
|
||||
st->fill_to(aligned_pos + tabspacing);
|
||||
st->print(";trap: zombie");
|
||||
}
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2002, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2012, 2013 SAP SE. All rights reserved.
|
||||
* Copyright (c) 2012, 2019 SAP SE. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -34,4 +34,23 @@
|
||||
return "ppc64";
|
||||
}
|
||||
|
||||
// Find preceding instruction.
|
||||
//
|
||||
// Starting at the passed location, the n-th preceding (towards lower addresses)
|
||||
// location is searched, the contents of which - if interpreted as
|
||||
// instructions - has the passed location as n-th successor.
|
||||
// - If no such location exists, NULL is returned. The caller should then
|
||||
// terminate its search and react properly.
|
||||
static address find_prev_instr(address here, int n_instr);
|
||||
|
||||
// special-case instruction decoding.
|
||||
// There may be cases where the binutils disassembler doesn't do
|
||||
// the perfect job. In those cases, decode_instruction0 may kick in
|
||||
// and do it right.
|
||||
// If nothing had to be done, just return "here", otherwise return "here + instr_len(here)"
|
||||
static address decode_instruction0(address here, outputStream* st, address virtual_begin = NULL);
|
||||
|
||||
// platform-specific instruction annotations (like value of loaded constants)
|
||||
static void annotate(address pc, outputStream* st);
|
||||
|
||||
#endif // CPU_PPC_DISASSEMBLER_PPC_HPP
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2012, 2018, SAP SE. All rights reserved.
|
||||
* Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2012, 2019 SAP SE. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -67,17 +67,17 @@ void VM_Version::initialize() {
|
||||
// If PowerArchitecturePPC64 hasn't been specified explicitly determine from features.
|
||||
if (FLAG_IS_DEFAULT(PowerArchitecturePPC64)) {
|
||||
if (VM_Version::has_darn()) {
|
||||
FLAG_SET_ERGO(uintx, PowerArchitecturePPC64, 9);
|
||||
FLAG_SET_ERGO(PowerArchitecturePPC64, 9);
|
||||
} else if (VM_Version::has_lqarx()) {
|
||||
FLAG_SET_ERGO(uintx, PowerArchitecturePPC64, 8);
|
||||
FLAG_SET_ERGO(PowerArchitecturePPC64, 8);
|
||||
} else if (VM_Version::has_popcntw()) {
|
||||
FLAG_SET_ERGO(uintx, PowerArchitecturePPC64, 7);
|
||||
FLAG_SET_ERGO(PowerArchitecturePPC64, 7);
|
||||
} else if (VM_Version::has_cmpb()) {
|
||||
FLAG_SET_ERGO(uintx, PowerArchitecturePPC64, 6);
|
||||
FLAG_SET_ERGO(PowerArchitecturePPC64, 6);
|
||||
} else if (VM_Version::has_popcntb()) {
|
||||
FLAG_SET_ERGO(uintx, PowerArchitecturePPC64, 5);
|
||||
FLAG_SET_ERGO(PowerArchitecturePPC64, 5);
|
||||
} else {
|
||||
FLAG_SET_ERGO(uintx, PowerArchitecturePPC64, 0);
|
||||
FLAG_SET_ERGO(PowerArchitecturePPC64, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@ -103,15 +103,15 @@ void VM_Version::initialize() {
|
||||
MSG(TrapBasedICMissChecks);
|
||||
MSG(TrapBasedNotEntrantChecks);
|
||||
MSG(TrapBasedNullChecks);
|
||||
FLAG_SET_ERGO(bool, TrapBasedNotEntrantChecks, false);
|
||||
FLAG_SET_ERGO(bool, TrapBasedNullChecks, false);
|
||||
FLAG_SET_ERGO(bool, TrapBasedICMissChecks, false);
|
||||
FLAG_SET_ERGO(TrapBasedNotEntrantChecks, false);
|
||||
FLAG_SET_ERGO(TrapBasedNullChecks, false);
|
||||
FLAG_SET_ERGO(TrapBasedICMissChecks, false);
|
||||
}
|
||||
|
||||
#ifdef COMPILER2
|
||||
if (!UseSIGTRAP) {
|
||||
MSG(TrapBasedRangeChecks);
|
||||
FLAG_SET_ERGO(bool, TrapBasedRangeChecks, false);
|
||||
FLAG_SET_ERGO(TrapBasedRangeChecks, false);
|
||||
}
|
||||
|
||||
// On Power6 test for section size.
|
||||
@ -123,7 +123,7 @@ void VM_Version::initialize() {
|
||||
|
||||
if (PowerArchitecturePPC64 >= 8) {
|
||||
if (FLAG_IS_DEFAULT(SuperwordUseVSX)) {
|
||||
FLAG_SET_ERGO(bool, SuperwordUseVSX, true);
|
||||
FLAG_SET_ERGO(SuperwordUseVSX, true);
|
||||
}
|
||||
} else {
|
||||
if (SuperwordUseVSX) {
|
||||
@ -135,10 +135,10 @@ void VM_Version::initialize() {
|
||||
|
||||
if (PowerArchitecturePPC64 >= 9) {
|
||||
if (FLAG_IS_DEFAULT(UseCountTrailingZerosInstructionsPPC64)) {
|
||||
FLAG_SET_ERGO(bool, UseCountTrailingZerosInstructionsPPC64, true);
|
||||
FLAG_SET_ERGO(UseCountTrailingZerosInstructionsPPC64, true);
|
||||
}
|
||||
if (FLAG_IS_DEFAULT(UseCharacterCompareIntrinsics)) {
|
||||
FLAG_SET_ERGO(bool, UseCharacterCompareIntrinsics, true);
|
||||
FLAG_SET_ERGO(UseCharacterCompareIntrinsics, true);
|
||||
}
|
||||
} else {
|
||||
if (UseCountTrailingZerosInstructionsPPC64) {
|
||||
@ -382,6 +382,50 @@ void VM_Version::initialize() {
|
||||
if (FLAG_IS_DEFAULT(UseUnalignedAccesses)) {
|
||||
FLAG_SET_DEFAULT(UseUnalignedAccesses, true);
|
||||
}
|
||||
|
||||
check_virtualizations();
|
||||
}
|
||||
|
||||
void VM_Version::check_virtualizations() {
|
||||
#if defined(_AIX)
|
||||
int rc = 0;
|
||||
perfstat_partition_total_t pinfo;
|
||||
rc = perfstat_partition_total(NULL, &pinfo, sizeof(perfstat_partition_total_t), 1);
|
||||
if (rc == 1) {
|
||||
Abstract_VM_Version::_detected_virtualization = PowerVM;
|
||||
}
|
||||
#else
|
||||
const char* info_file = "/proc/ppc64/lparcfg";
|
||||
// system_type=...qemu indicates PowerKVM
|
||||
// e.g. system_type=IBM pSeries (emulated by qemu)
|
||||
char line[500];
|
||||
FILE* fp = fopen(info_file, "r");
|
||||
if (fp == NULL) {
|
||||
return;
|
||||
}
|
||||
const char* system_type="system_type="; // in case this line contains qemu, it is KVM
|
||||
const char* num_lpars="NumLpars="; // in case of non-KVM : if this line is found it is PowerVM
|
||||
bool num_lpars_found = false;
|
||||
|
||||
while (fgets(line, sizeof(line), fp) != NULL) {
|
||||
if (strncmp(line, system_type, strlen(system_type)) == 0) {
|
||||
if (strstr(line, "qemu") != 0) {
|
||||
Abstract_VM_Version::_detected_virtualization = PowerKVM;
|
||||
fclose(fp);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (strncmp(line, num_lpars, strlen(num_lpars)) == 0) {
|
||||
num_lpars_found = true;
|
||||
}
|
||||
}
|
||||
if (num_lpars_found) {
|
||||
Abstract_VM_Version::_detected_virtualization = PowerVM;
|
||||
} else {
|
||||
Abstract_VM_Version::_detected_virtualization = PowerFullPartitionMode;
|
||||
}
|
||||
fclose(fp);
|
||||
#endif
|
||||
}
|
||||
|
||||
void VM_Version::print_platform_virtualization_info(outputStream* st) {
|
||||
@ -664,6 +708,8 @@ void VM_Version::determine_section_size() {
|
||||
uint32_t *code_end = (uint32_t *)a->pc();
|
||||
a->flush();
|
||||
|
||||
cb.insts()->set_end((u_char*)code_end);
|
||||
|
||||
double loop1_seconds,loop2_seconds, rel_diff;
|
||||
uint64_t start1, stop1;
|
||||
|
||||
@ -681,10 +727,11 @@ void VM_Version::determine_section_size() {
|
||||
|
||||
rel_diff = (loop2_seconds - loop1_seconds) / loop1_seconds *100;
|
||||
|
||||
if (PrintAssembly) {
|
||||
if (PrintAssembly || PrintStubCode) {
|
||||
ttyLocker ttyl;
|
||||
tty->print_cr("Decoding section size detection stub at " INTPTR_FORMAT " before execution:", p2i(code));
|
||||
Disassembler::decode((u_char*)code, (u_char*)code_end, tty);
|
||||
// Use existing decode function. This enables the [MachCode] format which is needed to DecodeErrorFile.
|
||||
Disassembler::decode(&cb, (u_char*)code, (u_char*)code_end, tty);
|
||||
tty->print_cr("Time loop1 :%f", loop1_seconds);
|
||||
tty->print_cr("Time loop2 :%f", loop2_seconds);
|
||||
tty->print_cr("(time2 - time1) / time1 = %f %%", rel_diff);
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2012, 2018 SAP SE. All rights reserved.
|
||||
* Copyright (c) 2012, 2019 SAP SE. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -87,6 +87,7 @@ protected:
|
||||
public:
|
||||
// Initialization
|
||||
static void initialize();
|
||||
static void check_virtualizations();
|
||||
|
||||
// Override Abstract_VM_Version implementation
|
||||
static void print_platform_virtualization_info(outputStream*);
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2016, 2017 SAP SE. All rights reserved.
|
||||
* Copyright (c) 2016, 2019 SAP SE. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -1531,16 +1531,16 @@ class Assembler : public AbstractAssembler {
|
||||
//-----------------------------------------------
|
||||
|
||||
// Calculate length of instruction.
|
||||
static int instr_len(unsigned char *instr);
|
||||
static unsigned int instr_len(unsigned char *instr);
|
||||
|
||||
// Longest instructions are 6 bytes on z/Architecture.
|
||||
static int instr_maxlen() { return 6; }
|
||||
static unsigned int instr_maxlen() { return 6; }
|
||||
|
||||
// Average instruction is 4 bytes on z/Architecture (just a guess).
|
||||
static int instr_avglen() { return 4; }
|
||||
static unsigned int instr_avglen() { return 4; }
|
||||
|
||||
// Shortest instructions are 2 bytes on z/Architecture.
|
||||
static int instr_minlen() { return 2; }
|
||||
static unsigned int instr_minlen() { return 2; }
|
||||
|
||||
// Move instruction at pc right-justified into passed long int.
|
||||
// Return instr len in bytes as function result.
|
||||
|
@ -1344,7 +1344,7 @@ inline void Assembler::z_brcl(branch_condition m, Label& L) { z_brcl(m, target(L
|
||||
|
||||
// Instruction must start at passed address.
|
||||
// Extra check for illtraps with ID.
|
||||
inline int Assembler::instr_len(unsigned char *instr) {
|
||||
inline unsigned int Assembler::instr_len(unsigned char *instr) {
|
||||
switch ((*instr) >> 6) {
|
||||
case 0: return 2;
|
||||
case 1: // fallthru
|
||||
|
@ -81,6 +81,10 @@ int LIR_Assembler::check_icache() {
|
||||
return offset;
|
||||
}
|
||||
|
||||
void LIR_Assembler::clinit_barrier(ciMethod* method) {
|
||||
ShouldNotReachHere(); // not implemented
|
||||
}
|
||||
|
||||
void LIR_Assembler::osr_entry() {
|
||||
// On-stack-replacement entry sequence (interpreter frame layout described in interpreter_sparc.cpp):
|
||||
//
|
||||
|
261
src/hotspot/cpu/s390/disassembler_s390.cpp
Normal file
261
src/hotspot/cpu/s390/disassembler_s390.cpp
Normal file
@ -0,0 +1,261 @@
|
||||
/*
|
||||
* Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2019 SAP SE. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "asm/assembler.inline.hpp"
|
||||
#include "asm/macroAssembler.hpp"
|
||||
#include "code/codeCache.hpp"
|
||||
#include "compiler/disassembler.hpp"
|
||||
#include "depChecker_s390.hpp"
|
||||
#include "gc/cms/concurrentMarkSweepGeneration.inline.hpp"
|
||||
#include "gc/cms/parOopClosures.inline.hpp"
|
||||
#include "gc/shared/collectedHeap.hpp"
|
||||
#include "gc/shared/cardTableBarrierSet.hpp"
|
||||
#include "gc/shared/genOopClosures.inline.hpp"
|
||||
#include "oops/oop.inline.hpp"
|
||||
#include "runtime/handles.inline.hpp"
|
||||
#include "runtime/stubCodeGenerator.hpp"
|
||||
#include "runtime/stubRoutines.hpp"
|
||||
#include "utilities/align.hpp"
|
||||
|
||||
// List of all major opcodes, as of
|
||||
// Principles of Operation, Eleventh Edition, March 2015
|
||||
bool Disassembler::valid_opcodes[] =
|
||||
{ true, true, false, false, true, true, true, true, // 0x00..07
|
||||
false, false, true, true, true, true, true, true, // 0x08..0f
|
||||
true, true, true, true, true, true, true, true, // 0x10..17
|
||||
true, true, true, true, true, true, true, true, // 0x18..1f
|
||||
true, true, true, true, true, true, true, true, // 0x20..27
|
||||
true, true, true, true, true, true, true, true, // 0x28..2f
|
||||
true, true, true, true, true, true, true, true, // 0x30..37
|
||||
true, true, true, true, true, true, true, true, // 0x38..3f
|
||||
true, true, true, true, true, true, true, true, // 0x40..47
|
||||
true, true, true, true, true, true, true, true, // 0x48..4f
|
||||
true, true, false, false, true, true, true, true, // 0x50..57
|
||||
true, true, true, true, true, true, true, true, // 0x58..5f
|
||||
true, false, false, false, false, false, false, true, // 0x60..67
|
||||
true, true, true, true, true, true, true, true, // 0x68..6f
|
||||
true, true, false, false, false, false, false, false, // 0x70..77
|
||||
true, true, true, true, true, true, true, true, // 0x78..7f
|
||||
true, false, true, true, true, true, true, true, // 0x80..87
|
||||
true, true, true, true, true, true, true, true, // 0x88..8f
|
||||
true, true, true, true, true, true, true, true, // 0x90..97
|
||||
true, true, true, true, false, false, false, false, // 0x98..9f
|
||||
false, false, false, false, false, true, false, true, // 0xa0..a7
|
||||
true, true, false, false, true, true, true, true, // 0xa8..af
|
||||
false, true, true, true, false, false, true, true, // 0xb0..b7
|
||||
false, true, true, true, false, true, true, true, // 0xb8..bf
|
||||
true, false, true, false, true, false, true, false, // 0xc0..c7
|
||||
true, false, false, false, true, false, false, false, // 0xc8..cf
|
||||
true, true, true, true, true, true, true, true, // 0xd0..d7
|
||||
false, true, true, true, true, true, true, true, // 0xd8..df
|
||||
false, true, true, true, false, true, false, true, // 0xe0..e7
|
||||
true, true, true, true, true, true, true, true, // 0xe8..ef
|
||||
true, true, true, true, false, false, false, false, // 0xf0..f7
|
||||
true, true, true, true, true, true, false, false, // 0xf8..ff
|
||||
};
|
||||
// Check for valid opcodes.
|
||||
//
|
||||
// The major opcode (one byte) at the passed location is inspected.
|
||||
// If the opcode found is assigned, the function returns true, false otherwise.
|
||||
// The true indication is not reliable. It may well be that the major opcode is
|
||||
// assigned, but there exists a minor opcode field in the instruction which
|
||||
// which has unassigned values.
|
||||
bool Disassembler::is_valid_opcode_at(address here) {
|
||||
return valid_opcodes[*here];
|
||||
}
|
||||
|
||||
// This method does plain instruction decoding, no frills.
|
||||
// It may be called before the binutils disassembler kicks in
|
||||
// to handle special cases the binutils disassembler does not.
|
||||
// Instruction address, comments, and the like have to be output by caller.
|
||||
address Disassembler::decode_instruction0(address here, outputStream * st, address virtual_begin) {
|
||||
if (is_abstract()) {
|
||||
// The disassembler library was not loaded (yet),
|
||||
// use AbstractDisassembler's decode-method.
|
||||
return decode_instruction_abstract(here, st, Assembler::instr_len(here), Assembler::instr_maxlen());
|
||||
}
|
||||
|
||||
// Currently, "special decoding" doesn't work when decoding error files.
|
||||
// When decoding an instruction from a hs_err file, the given
|
||||
// instruction address 'start' points to the instruction's virtual address
|
||||
// which is not equal to the address where the instruction is located.
|
||||
// Therefore, we will either crash or decode garbage.
|
||||
if (is_decode_error_file()) {
|
||||
return here;
|
||||
}
|
||||
|
||||
//---< Decode some well-known "instructions" >---
|
||||
|
||||
address next;
|
||||
uint16_t instruction_2bytes = *(uint16_t*)here;
|
||||
|
||||
if (Assembler::is_z_nop((long)instruction_2bytes)) {
|
||||
#if 1
|
||||
st->print("nop "); // fill up to operand column, leads to better code comment alignment
|
||||
next = here + 2;
|
||||
#else
|
||||
// Compact disassembler output. Does not work the easy way.
|
||||
// Currently unusable, search does not terminate, risk of crash.
|
||||
// TODO: rework required.
|
||||
// Terminate search loop when reaching CodeEntryAlignment-aligned offset
|
||||
// or, at the latest, when reaching the next page boundary.
|
||||
int n_nops = 0;
|
||||
while(is_same_page(here, here+2*n_nops) && Assembler::is_z_nop((long)instruction_2bytes)) {
|
||||
n_nops++;
|
||||
instruction_2bytes = *(uint16_t*)(here+2*n_nops);
|
||||
}
|
||||
if (n_nops <= 4) { // do not group few subsequent nops
|
||||
st->print("nop "); // fill up to operand column, leads to better code comment alignment
|
||||
next = here + 2;
|
||||
} else {
|
||||
st->print("nop count=%d", n_nops);
|
||||
next = here + 2*n_nops;
|
||||
}
|
||||
#endif
|
||||
} else if (Assembler::is_z_sync((long)instruction_2bytes)) {
|
||||
// Specific names. Make use of lightweight sync.
|
||||
st->print("sync ");
|
||||
if (Assembler::is_z_sync_full((long)instruction_2bytes) ) st->print("heavyweight");
|
||||
if (Assembler::is_z_sync_light((long)instruction_2bytes)) st->print("lightweight");
|
||||
next = here + 2;
|
||||
} else if (instruction_2bytes == 0x0000) {
|
||||
#if 1
|
||||
st->print("illtrap .nodata");
|
||||
next = here + 2;
|
||||
#else
|
||||
// Compact disassembler output. Does not work the easy way.
|
||||
// Currently unusable, search does not terminate, risk of crash.
|
||||
// TODO: rework required.
|
||||
// Terminate search loop when reaching CodeEntryAlignment-aligned offset
|
||||
// or, at the latest, when reaching the next page boundary.
|
||||
int n_traps = 0;
|
||||
while(is_same_page(here, here+2*n_nops) && (instruction_2bytes == 0x0000)) {
|
||||
n_traps++;
|
||||
instruction_2bytes = *(uint16_t*)(here+2*n_traps);
|
||||
}
|
||||
if (n_traps <= 4) { // do not group few subsequent illtraps
|
||||
st->print("illtrap .nodata");
|
||||
next = here + 2;
|
||||
} else {
|
||||
st->print("illtrap .nodata count=%d", n_traps);
|
||||
next = here + 2*n_traps;
|
||||
}
|
||||
#endif
|
||||
} else if ((instruction_2bytes & 0xff00) == 0x0000) {
|
||||
st->print("illtrap .data 0x%2.2x", instruction_2bytes & 0x00ff);
|
||||
next = here + 2;
|
||||
} else {
|
||||
next = here;
|
||||
}
|
||||
return next;
|
||||
}
|
||||
|
||||
// Count the instructions contained in the range [begin..end).
|
||||
// The range must exactly contain the instructions, i.e.
|
||||
// - the first instruction starts @begin
|
||||
// - the last instruction ends @(end-1)
|
||||
// The caller has to make sure that the given range is readable.
|
||||
// This function performs no safety checks!
|
||||
// Return value:
|
||||
// - The number of instructions, if there was exact containment.
|
||||
// - If there is no exact containment, a negative value is returned.
|
||||
// Its absolute value is the number of instructions from begin to end,
|
||||
// where the last instruction counted runs over the range end.
|
||||
// - 0 (zero) is returned if there was a parameter error
|
||||
// (inverted range, bad starting point).
|
||||
int Disassembler::count_instr(address begin, address end) {
|
||||
if (end < begin+2) return 0; // no instructions in range
|
||||
if (!Disassembler::is_valid_opcode_at(begin)) return 0; // bad starting point
|
||||
|
||||
address p = begin;
|
||||
int n = 0;
|
||||
while(p < end) {
|
||||
p += Assembler::instr_len(p);
|
||||
n++;
|
||||
}
|
||||
return (p == end) ? n : -n;
|
||||
}
|
||||
|
||||
// Find preceding instruction.
|
||||
//
|
||||
// Starting at the passed location, the n-th preceding (towards lower addresses)
|
||||
// instruction is searched. With variable length instructions, there may be
|
||||
// more than one solution, or no solution at all (if the passed location
|
||||
// does not point to the start of an instruction or if the storage area
|
||||
// does not contain instructions at all).
|
||||
// instructions - has the passed location as n-th successor.
|
||||
// - If multiple such locations exist between (here-n*instr_maxlen()) and here,
|
||||
// the most distant location is selected.
|
||||
// - If no such location exists, NULL is returned. The caller should then
|
||||
// terminate its search and react properly.
|
||||
// Must be placed here in disassembler_s390.cpp. It does not compile
|
||||
// in the header. There the class 'Assembler' is not available.
|
||||
address Disassembler::find_prev_instr(address here, int n_instr) {
|
||||
if (!os::is_readable_pointer(here)) return NULL; // obviously a bad location to decode
|
||||
|
||||
// Find most distant possible starting point.
|
||||
// Narrow down because we don't want to SEGV while printing.
|
||||
address start = here - n_instr*Assembler::instr_maxlen(); // starting point can't be further away.
|
||||
while ((start < here) && !os::is_readable_range(start, here)) {
|
||||
start = align_down(start, os::min_page_size()) + os::min_page_size();
|
||||
}
|
||||
if (start >= here) {
|
||||
// Strange. Can only happen with here on page boundary.
|
||||
return NULL;
|
||||
}
|
||||
|
||||
//---< Find a starting point >---
|
||||
int i_count = 0;
|
||||
while ((start < here) && ((i_count = count_instr(start, here)) <= 0)) start += 2;
|
||||
if (i_count == 0) return NULL; // There is something seriously wrong
|
||||
|
||||
//---< Narrow down distance (estimate was too large) >---
|
||||
while(i_count-- > n_instr) {
|
||||
start += Assembler::instr_len(start);
|
||||
}
|
||||
assert(n_instr >= count_instr(start, here), "just checking");
|
||||
return start;
|
||||
}
|
||||
|
||||
|
||||
// Print annotations (value of loaded constant)
|
||||
void Disassembler::annotate(address here, outputStream* st) {
|
||||
// Currently, annotation doesn't work when decoding error files.
|
||||
// When decoding an instruction from a hs_err file, the given
|
||||
// instruction address 'start' points to the instruction's virtual address
|
||||
// which is not equal to the address where the instruction is located.
|
||||
// Therefore, we will either crash or decode garbage.
|
||||
if (is_decode_error_file()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (MacroAssembler::is_load_const(here)) {
|
||||
long value = MacroAssembler::get_const(here);
|
||||
const int tsize = 8;
|
||||
|
||||
st->fill_to(60);
|
||||
st->print(";const %p | %ld | %23.15e", (void *)value, value, (double)value);
|
||||
}
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2016 SAP SE. All rights reserved.
|
||||
* Copyright (c) 2016, 2019 SAP SE. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -27,11 +27,36 @@
|
||||
#define CPU_S390_DISASSEMBLER_S390_HPP
|
||||
|
||||
static int pd_instruction_alignment() {
|
||||
return 1;
|
||||
return 2;
|
||||
}
|
||||
|
||||
static const char* pd_cpu_opts() {
|
||||
return "zarch";
|
||||
return "s390";
|
||||
}
|
||||
|
||||
static bool valid_opcodes[256];
|
||||
static bool is_valid_opcode_at(address here);
|
||||
|
||||
// Find preceding instruction.
|
||||
//
|
||||
// Starting at the passed location, the n-th preceding (towards lower addresses)
|
||||
// location is searched, the contents of which - if interpreted as
|
||||
// instructions - has the passed location as n-th successor.
|
||||
// - If multiple such locations exist between (here-n*instr_maxlen()) and here,
|
||||
// the most distant location is selected.
|
||||
// - If no such location exists, NULL is returned. The caller should then
|
||||
// terminate its search and react properly.
|
||||
static address find_prev_instr(address here, int n_instr);
|
||||
static int count_instr(address begin, address end);
|
||||
|
||||
// special-case instruction decoding.
|
||||
// There may be cases where the binutils disassembler doesn't do
|
||||
// the perfect job. In those cases, decode_instruction0 may kick in
|
||||
// and do it right.
|
||||
// If nothing had to be done, just return "here", otherwise return "here + instr_len(here)"
|
||||
static address decode_instruction0(address here, outputStream* st, address virtual_begin = NULL);
|
||||
|
||||
// platform-specific instruction annotations (like value of loaded constants)
|
||||
static void annotate(address pc, outputStream* st);
|
||||
|
||||
#endif // CPU_S390_DISASSEMBLER_S390_HPP
|
||||
|
@ -1,6 +1,6 @@
|
||||
//
|
||||
// Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
// Copyright (c) 2017, SAP SE. All rights reserved.
|
||||
// Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
// Copyright (c) 2017, 2019 SAP SE. All rights reserved.
|
||||
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
//
|
||||
// This code is free software; you can redistribute it and/or modify it
|
||||
@ -1388,7 +1388,6 @@ void MachUEPNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
|
||||
__ z_br(R1_ic_miss_stub_addr);
|
||||
__ bind(valid);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
uint MachUEPNode::size(PhaseRegAlloc *ra_) const {
|
||||
@ -4318,7 +4317,7 @@ instruct loadConI(iRegI dst, immI src) %{
|
||||
match(Set dst src);
|
||||
ins_cost(DEFAULT_COST);
|
||||
size(6);
|
||||
format %{ "LGFI $dst,$src\t # (int)" %}
|
||||
format %{ "LGFI $dst,$src\t # (int)" %}
|
||||
ins_encode %{ __ z_lgfi($dst$$Register, $src$$constant); %} // Sign-extend to 64 bit, it's at no cost.
|
||||
ins_pipe(pipe_class_dummy);
|
||||
%}
|
||||
@ -4327,7 +4326,7 @@ instruct loadConI16(iRegI dst, immI16 src) %{
|
||||
match(Set dst src);
|
||||
ins_cost(DEFAULT_COST_LOW);
|
||||
size(4);
|
||||
format %{ "LGHI $dst,$src\t # (int)" %}
|
||||
format %{ "LGHI $dst,$src\t # (int)" %}
|
||||
ins_encode %{ __ z_lghi($dst$$Register, $src$$constant); %} // Sign-extend to 64 bit, it's at no cost.
|
||||
ins_pipe(pipe_class_dummy);
|
||||
%}
|
||||
@ -4723,7 +4722,7 @@ instruct loadN(iRegN dst, memory mem) %{
|
||||
match(Set dst (LoadN mem));
|
||||
ins_cost(MEMORY_REF_COST);
|
||||
size(Z_DISP3_SIZE);
|
||||
format %{ "LoadN $dst,$mem\t# (cOop)" %}
|
||||
format %{ "LoadN $dst,$mem\t # (cOop)" %}
|
||||
opcode(LLGF_ZOPC, LLGF_ZOPC);
|
||||
ins_encode(z_form_rt_mem_opt(dst, mem));
|
||||
ins_pipe(pipe_class_dummy);
|
||||
@ -4734,7 +4733,7 @@ instruct loadNKlass(iRegN dst, memory mem) %{
|
||||
match(Set dst (LoadNKlass mem));
|
||||
ins_cost(MEMORY_REF_COST);
|
||||
size(Z_DISP3_SIZE);
|
||||
format %{ "LoadNKlass $dst,$mem\t# (klass cOop)" %}
|
||||
format %{ "LoadNKlass $dst,$mem\t # (klass cOop)" %}
|
||||
opcode(LLGF_ZOPC, LLGF_ZOPC);
|
||||
ins_encode(z_form_rt_mem_opt(dst, mem));
|
||||
ins_pipe(pipe_class_dummy);
|
||||
@ -4787,7 +4786,7 @@ instruct decodeLoadN(iRegP dst, memory mem) %{
|
||||
predicate(false && (CompressedOops::base()==NULL)&&(CompressedOops::shift()==0));
|
||||
ins_cost(MEMORY_REF_COST);
|
||||
size(Z_DISP3_SIZE);
|
||||
format %{ "DecodeLoadN $dst,$mem\t# (cOop Load+Decode)" %}
|
||||
format %{ "DecodeLoadN $dst,$mem\t # (cOop Load+Decode)" %}
|
||||
opcode(LLGF_ZOPC, LLGF_ZOPC);
|
||||
ins_encode(z_form_rt_mem_opt(dst, mem));
|
||||
ins_pipe(pipe_class_dummy);
|
||||
@ -4798,7 +4797,7 @@ instruct decodeLoadNKlass(iRegP dst, memory mem) %{
|
||||
predicate(false && (CompressedKlassPointers::base()==NULL)&&(CompressedKlassPointers::shift()==0));
|
||||
ins_cost(MEMORY_REF_COST);
|
||||
size(Z_DISP3_SIZE);
|
||||
format %{ "DecodeLoadNKlass $dst,$mem\t# (load/decode NKlass)" %}
|
||||
format %{ "DecodeLoadNKlass $dst,$mem\t # (load/decode NKlass)" %}
|
||||
opcode(LLGF_ZOPC, LLGF_ZOPC);
|
||||
ins_encode(z_form_rt_mem_opt(dst, mem));
|
||||
ins_pipe(pipe_class_dummy);
|
||||
@ -4826,7 +4825,7 @@ instruct decodeN(iRegP dst, iRegN src, flagsReg cr) %{
|
||||
predicate(CompressedOops::base() == NULL || !ExpandLoadingBaseDecode);
|
||||
ins_cost(MEMORY_REF_COST+3 * DEFAULT_COST + BRANCH_COST);
|
||||
// TODO: s390 port size(VARIABLE_SIZE);
|
||||
format %{ "decodeN $dst,$src\t# (decode cOop)" %}
|
||||
format %{ "decodeN $dst,$src\t # (decode cOop)" %}
|
||||
ins_encode %{ __ oop_decoder($dst$$Register, $src$$Register, true); %}
|
||||
ins_pipe(pipe_class_dummy);
|
||||
%}
|
||||
@ -4850,7 +4849,7 @@ instruct decodeN_NN(iRegP dst, iRegN src, flagsReg cr) %{
|
||||
(CompressedOops::base()== NULL || !ExpandLoadingBaseDecode_NN));
|
||||
ins_cost(MEMORY_REF_COST+2 * DEFAULT_COST);
|
||||
// TODO: s390 port size(VARIABLE_SIZE);
|
||||
format %{ "decodeN $dst,$src\t# (decode cOop NN)" %}
|
||||
format %{ "decodeN $dst,$src\t # (decode cOop NN)" %}
|
||||
ins_encode %{ __ oop_decoder($dst$$Register, $src$$Register, false); %}
|
||||
ins_pipe(pipe_class_dummy);
|
||||
%}
|
||||
@ -4873,7 +4872,7 @@ instruct decodeN_NN(iRegP dst, iRegN src, flagsReg cr) %{
|
||||
effect(KILL cr);
|
||||
predicate(false);
|
||||
// TODO: s390 port size(VARIABLE_SIZE);
|
||||
format %{ "decodeN $dst = ($src == 0) ? NULL : ($src << 3) + $base + pow2_offset\t# (decode cOop)" %}
|
||||
format %{ "decodeN $dst = ($src == 0) ? NULL : ($src << 3) + $base + pow2_offset\t # (decode cOop)" %}
|
||||
ins_encode %{
|
||||
__ oop_decoder($dst$$Register, $src$$Register, true, $base$$Register,
|
||||
(jlong)MacroAssembler::get_oop_base_pow2_offset((uint64_t)(intptr_t)CompressedOops::base()));
|
||||
@ -4887,7 +4886,7 @@ instruct decodeN_NN(iRegP dst, iRegN src, flagsReg cr) %{
|
||||
effect(KILL cr);
|
||||
predicate(false);
|
||||
// TODO: s390 port size(VARIABLE_SIZE);
|
||||
format %{ "decodeN $dst = ($src << 3) + $base + pow2_offset\t# (decode cOop)" %}
|
||||
format %{ "decodeN $dst = ($src << 3) + $base + pow2_offset\t # (decode cOop)" %}
|
||||
ins_encode %{
|
||||
__ oop_decoder($dst$$Register, $src$$Register, false, $base$$Register,
|
||||
(jlong)MacroAssembler::get_oop_base_pow2_offset((uint64_t)(intptr_t)CompressedOops::base()));
|
||||
@ -4937,7 +4936,7 @@ instruct encodeP(iRegN dst, iRegP src, flagsReg cr) %{
|
||||
!ExpandLoadingBaseEncode));
|
||||
ins_cost(MEMORY_REF_COST+3 * DEFAULT_COST);
|
||||
// TODO: s390 port size(VARIABLE_SIZE);
|
||||
format %{ "encodeP $dst,$src\t# (encode cOop)" %}
|
||||
format %{ "encodeP $dst,$src\t # (encode cOop)" %}
|
||||
ins_encode %{ __ oop_encoder($dst$$Register, $src$$Register, true, Z_R1_scratch, -1, all_outs_are_Stores(this)); %}
|
||||
ins_pipe(pipe_class_dummy);
|
||||
%}
|
||||
@ -4960,7 +4959,7 @@ instruct encodeP_NN(iRegN dst, iRegP src, flagsReg cr) %{
|
||||
!ExpandLoadingBaseEncode_NN));
|
||||
ins_cost(MEMORY_REF_COST+3 * DEFAULT_COST);
|
||||
// TODO: s390 port size(VARIABLE_SIZE);
|
||||
format %{ "encodeP $dst,$src\t# (encode cOop)" %}
|
||||
format %{ "encodeP $dst,$src\t # (encode cOop)" %}
|
||||
ins_encode %{ __ oop_encoder($dst$$Register, $src$$Register, false, Z_R1_scratch, -1, all_outs_are_Stores(this)); %}
|
||||
ins_pipe(pipe_class_dummy);
|
||||
%}
|
||||
@ -4972,7 +4971,7 @@ instruct encodeP_NN(iRegN dst, iRegP src, flagsReg cr) %{
|
||||
predicate(false);
|
||||
ins_cost(MEMORY_REF_COST+2 * DEFAULT_COST);
|
||||
// TODO: s390 port size(VARIABLE_SIZE);
|
||||
format %{ "encodeP $dst = ($src>>3) +$base + pow2_offset\t# (encode cOop)" %}
|
||||
format %{ "encodeP $dst = ($src>>3) +$base + pow2_offset\t # (encode cOop)" %}
|
||||
ins_encode %{
|
||||
jlong offset = -(jlong)MacroAssembler::get_oop_base_pow2_offset
|
||||
(((uint64_t)(intptr_t)CompressedOops::base()) >> CompressedOops::shift());
|
||||
@ -4988,7 +4987,7 @@ instruct encodeP_NN(iRegN dst, iRegP src, flagsReg cr) %{
|
||||
predicate(false);
|
||||
ins_cost(MEMORY_REF_COST+2 * DEFAULT_COST);
|
||||
// TODO: s390 port size(VARIABLE_SIZE);
|
||||
format %{ "encodeP $dst = ($src>>3) +$base + $pow2_offset\t# (encode cOop)" %}
|
||||
format %{ "encodeP $dst = ($src>>3) +$base + $pow2_offset\t # (encode cOop)" %}
|
||||
ins_encode %{ __ oop_encoder($dst$$Register, $src$$Register, false, $base$$Register, $pow2_offset$$constant); %}
|
||||
ins_pipe(pipe_class_dummy);
|
||||
%}
|
||||
@ -5041,7 +5040,7 @@ instruct storeN(memory mem, iRegN_P2N src) %{
|
||||
match(Set mem (StoreN mem src));
|
||||
ins_cost(MEMORY_REF_COST);
|
||||
size(Z_DISP_SIZE);
|
||||
format %{ "ST $src,$mem\t# (cOop)" %}
|
||||
format %{ "ST $src,$mem\t # (cOop)" %}
|
||||
opcode(STY_ZOPC, ST_ZOPC);
|
||||
ins_encode(z_form_rt_mem_opt(src, mem));
|
||||
ins_pipe(pipe_class_dummy);
|
||||
@ -5052,7 +5051,7 @@ instruct storeNKlass(memory mem, iRegN src) %{
|
||||
match(Set mem (StoreNKlass mem src));
|
||||
ins_cost(MEMORY_REF_COST);
|
||||
size(Z_DISP_SIZE);
|
||||
format %{ "ST $src,$mem\t# (cKlass)" %}
|
||||
format %{ "ST $src,$mem\t # (cKlass)" %}
|
||||
opcode(STY_ZOPC, ST_ZOPC);
|
||||
ins_encode(z_form_rt_mem_opt(src, mem));
|
||||
ins_pipe(pipe_class_dummy);
|
||||
@ -5064,7 +5063,7 @@ instruct compN_iRegN(iRegN_P2N src1, iRegN_P2N src2, flagsReg cr) %{
|
||||
match(Set cr (CmpN src1 src2));
|
||||
ins_cost(DEFAULT_COST);
|
||||
size(2);
|
||||
format %{ "CLR $src1,$src2\t# (cOop)" %}
|
||||
format %{ "CLR $src1,$src2\t # (cOop)" %}
|
||||
opcode(CLR_ZOPC);
|
||||
ins_encode(z_rrform(src1, src2));
|
||||
ins_pipe(pipe_class_dummy);
|
||||
@ -5074,7 +5073,7 @@ instruct compN_iRegN_immN(iRegN_P2N src1, immN src2, flagsReg cr) %{
|
||||
match(Set cr (CmpN src1 src2));
|
||||
ins_cost(DEFAULT_COST);
|
||||
size(6);
|
||||
format %{ "CLFI $src1,$src2\t# (cOop) compare immediate narrow" %}
|
||||
format %{ "CLFI $src1,$src2\t # (cOop) compare immediate narrow" %}
|
||||
ins_encode %{
|
||||
AddressLiteral cOop = __ constant_oop_address((jobject)$src2$$constant);
|
||||
__ relocate(cOop.rspec(), 1);
|
||||
@ -5087,7 +5086,7 @@ instruct compNKlass_iRegN_immN(iRegN src1, immNKlass src2, flagsReg cr) %{
|
||||
match(Set cr (CmpN src1 src2));
|
||||
ins_cost(DEFAULT_COST);
|
||||
size(6);
|
||||
format %{ "CLFI $src1,$src2\t# (NKlass) compare immediate narrow" %}
|
||||
format %{ "CLFI $src1,$src2\t # (NKlass) compare immediate narrow" %}
|
||||
ins_encode %{
|
||||
AddressLiteral NKlass = __ constant_metadata_address((Metadata*)$src2$$constant);
|
||||
__ relocate(NKlass.rspec(), 1);
|
||||
@ -5100,7 +5099,7 @@ instruct compN_iRegN_immN0(iRegN_P2N src1, immN0 src2, flagsReg cr) %{
|
||||
match(Set cr (CmpN src1 src2));
|
||||
ins_cost(DEFAULT_COST);
|
||||
size(2);
|
||||
format %{ "LTR $src1,$src2\t# (cOop) LTR because comparing against zero" %}
|
||||
format %{ "LTR $src1,$src2\t # (cOop) LTR because comparing against zero" %}
|
||||
opcode(LTR_ZOPC);
|
||||
ins_encode(z_rrform(src1, src1));
|
||||
ins_pipe(pipe_class_dummy);
|
||||
@ -6795,7 +6794,7 @@ instruct sllI_reg_reg(iRegI dst, iRegI src, iRegI nbits, flagsReg cr) %{
|
||||
effect(KILL cr); // R1 is killed, too.
|
||||
ins_cost(3 * DEFAULT_COST);
|
||||
size(14);
|
||||
format %{ "SLL $dst,$src,[$nbits] & 31\t# use RISC-like SLLG also for int" %}
|
||||
format %{ "SLL $dst,$src,[$nbits] & 31\t # use RISC-like SLLG also for int" %}
|
||||
ins_encode %{
|
||||
__ z_lgr(Z_R1_scratch, $nbits$$Register);
|
||||
__ z_nill(Z_R1_scratch, BitsPerJavaInteger-1);
|
||||
@ -6809,7 +6808,7 @@ instruct sllI_reg_reg(iRegI dst, iRegI src, iRegI nbits, flagsReg cr) %{
|
||||
instruct sllI_reg_imm(iRegI dst, iRegI src, immI nbits) %{
|
||||
match(Set dst (LShiftI src nbits));
|
||||
size(6);
|
||||
format %{ "SLL $dst,$src,$nbits\t# use RISC-like SLLG also for int" %}
|
||||
format %{ "SLL $dst,$src,$nbits\t # use RISC-like SLLG also for int" %}
|
||||
ins_encode %{
|
||||
int Nbit = $nbits$$constant;
|
||||
assert((Nbit & (BitsPerJavaInteger - 1)) == Nbit, "Check shift mask in ideal graph");
|
||||
@ -7125,7 +7124,7 @@ instruct overflowSubL_reg_imm(flagsReg cr, iRegL op1, immL op2) %{
|
||||
instruct overflowNegI_rReg(flagsReg cr, immI_0 zero, iRegI op2) %{
|
||||
match(Set cr (OverflowSubI zero op2));
|
||||
effect(DEF cr, USE op2);
|
||||
format %{ "NEG $op2\t# overflow check int" %}
|
||||
format %{ "NEG $op2\t # overflow check int" %}
|
||||
ins_encode %{
|
||||
__ clear_reg(Z_R0_scratch, false, false);
|
||||
__ z_sr(Z_R0_scratch, $op2$$Register);
|
||||
@ -7136,7 +7135,7 @@ instruct overflowNegI_rReg(flagsReg cr, immI_0 zero, iRegI op2) %{
|
||||
instruct overflowNegL_rReg(flagsReg cr, immL_0 zero, iRegL op2) %{
|
||||
match(Set cr (OverflowSubL zero op2));
|
||||
effect(DEF cr, USE op2);
|
||||
format %{ "NEGG $op2\t# overflow check long" %}
|
||||
format %{ "NEGG $op2\t # overflow check long" %}
|
||||
ins_encode %{
|
||||
__ clear_reg(Z_R0_scratch, true, false);
|
||||
__ z_sgr(Z_R0_scratch, $op2$$Register);
|
||||
@ -9191,7 +9190,7 @@ instruct branchCon(cmpOp cmp, flagsReg cr, label lbl) %{
|
||||
effect(USE lbl);
|
||||
ins_cost(BRANCH_COST);
|
||||
size(4);
|
||||
format %{ "branch_con_short,$cmp $cr, $lbl" %}
|
||||
format %{ "branch_con_short,$cmp $lbl" %}
|
||||
ins_encode(z_enc_branch_con_short(cmp, lbl));
|
||||
ins_pipe(pipe_class_dummy);
|
||||
// If set to 1 this indicates that the current instruction is a
|
||||
@ -9213,7 +9212,7 @@ instruct branchConFar(cmpOp cmp, flagsReg cr, label lbl) %{
|
||||
// Make more expensive to prefer compare_and_branch over separate instructions.
|
||||
ins_cost(2 * BRANCH_COST);
|
||||
size(6);
|
||||
format %{ "branch_con_far,$cmp $cr, $lbl" %}
|
||||
format %{ "branch_con_far,$cmp $lbl" %}
|
||||
ins_encode(z_enc_branch_con_far(cmp, lbl));
|
||||
ins_pipe(pipe_class_dummy);
|
||||
// This is not a short variant of a branch, but the long variant..
|
||||
@ -9782,7 +9781,7 @@ instruct TailCalljmpInd(iRegP jump_target, inline_cache_regP method_oop) %{
|
||||
match(TailCall jump_target method_oop);
|
||||
ins_cost(CALL_COST);
|
||||
size(2);
|
||||
format %{ "Jmp $jump_target\t# $method_oop holds method oop" %}
|
||||
format %{ "Jmp $jump_target\t # $method_oop holds method oop" %}
|
||||
ins_encode %{ __ z_br($jump_target$$Register); %}
|
||||
ins_pipe(pipe_class_dummy);
|
||||
%}
|
||||
@ -10790,7 +10789,7 @@ instruct bytes_reverse_int(iRegI dst, iRegI src) %{
|
||||
predicate(UseByteReverseInstruction); // See Matcher::match_rule_supported
|
||||
ins_cost(DEFAULT_COST);
|
||||
size(4);
|
||||
format %{ "LRVR $dst,$src\t# byte reverse int" %}
|
||||
format %{ "LRVR $dst,$src\t # byte reverse int" %}
|
||||
opcode(LRVR_ZOPC);
|
||||
ins_encode(z_rreform(dst, src));
|
||||
ins_pipe(pipe_class_dummy);
|
||||
@ -10801,7 +10800,7 @@ instruct bytes_reverse_long(iRegL dst, iRegL src) %{
|
||||
predicate(UseByteReverseInstruction); // See Matcher::match_rule_supported
|
||||
ins_cost(DEFAULT_COST);
|
||||
// TODO: s390 port size(FIXED_SIZE);
|
||||
format %{ "LRVGR $dst,$src\t# byte reverse long" %}
|
||||
format %{ "LRVGR $dst,$src\t # byte reverse long" %}
|
||||
opcode(LRVGR_ZOPC);
|
||||
ins_encode(z_rreform(dst, src));
|
||||
ins_pipe(pipe_class_dummy);
|
||||
@ -10821,8 +10820,8 @@ instruct countLeadingZerosI(revenRegI dst, iRegI src, roddRegI tmp, flagsReg cr)
|
||||
effect(KILL tmp, KILL cr);
|
||||
ins_cost(3 * DEFAULT_COST);
|
||||
size(14);
|
||||
format %{ "SLLG $dst,$src,32\t# no need to always count 32 zeroes first\n\t"
|
||||
"IILH $dst,0x8000 \t# insert \"stop bit\" to force result 32 for zero src.\n\t"
|
||||
format %{ "SLLG $dst,$src,32\t # no need to always count 32 zeroes first\n\t"
|
||||
"IILH $dst,0x8000 \t # insert \"stop bit\" to force result 32 for zero src.\n\t"
|
||||
"FLOGR $dst,$dst"
|
||||
%}
|
||||
ins_encode %{
|
||||
@ -10859,7 +10858,7 @@ instruct countLeadingZerosL(revenRegI dst, iRegL src, roddRegI tmp, flagsReg cr)
|
||||
effect(KILL tmp, KILL cr);
|
||||
ins_cost(DEFAULT_COST);
|
||||
size(4);
|
||||
format %{ "FLOGR $dst,$src \t# count leading zeros (long)\n\t" %}
|
||||
format %{ "FLOGR $dst,$src \t # count leading zeros (long)\n\t" %}
|
||||
ins_encode %{ __ z_flogr($dst$$Register, $src$$Register); %}
|
||||
ins_pipe(pipe_class_dummy);
|
||||
%}
|
||||
@ -10884,14 +10883,14 @@ instruct countTrailingZerosI(revenRegI dst, iRegI src, roddRegI tmp, flagsReg cr
|
||||
effect(TEMP_DEF dst, TEMP tmp, KILL cr);
|
||||
ins_cost(8 * DEFAULT_COST);
|
||||
// TODO: s390 port size(FIXED_SIZE); // Emitted code depends on PreferLAoverADD being on/off.
|
||||
format %{ "LLGFR $dst,$src \t# clear upper 32 bits (we are dealing with int)\n\t"
|
||||
"LCGFR $tmp,$src \t# load 2's complement (32->64 bit)\n\t"
|
||||
"AGHI $dst,-1 \t# tmp1 = src-1\n\t"
|
||||
"AGHI $tmp,-1 \t# tmp2 = -src-1 = ~src\n\t"
|
||||
"NGR $dst,$tmp \t# tmp3 = tmp1&tmp2\n\t"
|
||||
"FLOGR $dst,$dst \t# count trailing zeros (int)\n\t"
|
||||
"AHI $dst,-64 \t# tmp4 = 64-(trailing zeroes)-64\n\t"
|
||||
"LCR $dst,$dst \t# res = -tmp4"
|
||||
format %{ "LLGFR $dst,$src \t # clear upper 32 bits (we are dealing with int)\n\t"
|
||||
"LCGFR $tmp,$src \t # load 2's complement (32->64 bit)\n\t"
|
||||
"AGHI $dst,-1 \t # tmp1 = src-1\n\t"
|
||||
"AGHI $tmp,-1 \t # tmp2 = -src-1 = ~src\n\t"
|
||||
"NGR $dst,$tmp \t # tmp3 = tmp1&tmp2\n\t"
|
||||
"FLOGR $dst,$dst \t # count trailing zeros (int)\n\t"
|
||||
"AHI $dst,-64 \t # tmp4 = 64-(trailing zeroes)-64\n\t"
|
||||
"LCR $dst,$dst \t # res = -tmp4"
|
||||
%}
|
||||
ins_encode %{
|
||||
Register Rdst = $dst$$Register;
|
||||
@ -10937,12 +10936,12 @@ instruct countTrailingZerosL(revenRegI dst, iRegL src, roddRegL tmp, flagsReg cr
|
||||
effect(TEMP_DEF dst, KILL tmp, KILL cr);
|
||||
ins_cost(8 * DEFAULT_COST);
|
||||
// TODO: s390 port size(FIXED_SIZE); // Emitted code depends on PreferLAoverADD being on/off.
|
||||
format %{ "LCGR $dst,$src \t# preserve src\n\t"
|
||||
"NGR $dst,$src \t#"
|
||||
"AGHI $dst,-1 \t# tmp1 = src-1\n\t"
|
||||
"FLOGR $dst,$dst \t# count trailing zeros (long), kill $tmp\n\t"
|
||||
"AHI $dst,-64 \t# tmp4 = 64-(trailing zeroes)-64\n\t"
|
||||
"LCR $dst,$dst \t#"
|
||||
format %{ "LCGR $dst,$src \t # preserve src\n\t"
|
||||
"NGR $dst,$src \t #\n\t"
|
||||
"AGHI $dst,-1 \t # tmp1 = src-1\n\t"
|
||||
"FLOGR $dst,$dst \t # count trailing zeros (long), kill $tmp\n\t"
|
||||
"AHI $dst,-64 \t # tmp4 = 64-(trailing zeroes)-64\n\t"
|
||||
"LCR $dst,$dst \t #"
|
||||
%}
|
||||
ins_encode %{
|
||||
Register Rdst = $dst$$Register;
|
||||
@ -10969,7 +10968,7 @@ instruct popCountI(iRegI dst, iRegI src, iRegI tmp, flagsReg cr) %{
|
||||
predicate(UsePopCountInstruction && VM_Version::has_PopCount());
|
||||
ins_cost(DEFAULT_COST);
|
||||
size(24);
|
||||
format %{ "POPCNT $dst,$src\t# pop count int" %}
|
||||
format %{ "POPCNT $dst,$src\t # pop count int" %}
|
||||
ins_encode %{
|
||||
Register Rdst = $dst$$Register;
|
||||
Register Rsrc = $src$$Register;
|
||||
@ -10996,7 +10995,7 @@ instruct popCountL(iRegI dst, iRegL src, iRegL tmp, flagsReg cr) %{
|
||||
predicate(UsePopCountInstruction && VM_Version::has_PopCount());
|
||||
ins_cost(DEFAULT_COST);
|
||||
// TODO: s390 port size(FIXED_SIZE);
|
||||
format %{ "POPCNT $dst,$src\t# pop count long" %}
|
||||
format %{ "POPCNT $dst,$src\t # pop count long" %}
|
||||
ins_encode %{
|
||||
Register Rdst = $dst$$Register;
|
||||
Register Rsrc = $src$$Register;
|
||||
|
@ -804,6 +804,8 @@ void VM_Version::determine_features() {
|
||||
address code_end = a->pc();
|
||||
a->flush();
|
||||
|
||||
cbuf.insts()->set_end(code_end);
|
||||
|
||||
// Print the detection code.
|
||||
bool printVerbose = Verbose || PrintAssembly || PrintStubCode;
|
||||
if (printVerbose) {
|
||||
@ -812,8 +814,8 @@ void VM_Version::determine_features() {
|
||||
tty->print_cr("Stub length is %ld bytes, codebuffer reserves %d bytes, %ld bytes spare.",
|
||||
code_end-code, cbuf_size, cbuf_size-(code_end-code));
|
||||
|
||||
// Use existing decode function. This enables the [Code] format which is needed to DecodeErrorFile.
|
||||
Disassembler::decode((u_char*)code, (u_char*)code_end, tty);
|
||||
// Use existing decode function. This enables the [MachCode] format which is needed to DecodeErrorFile.
|
||||
Disassembler::decode(&cbuf, code, code_end, tty);
|
||||
}
|
||||
|
||||
// Prepare for detection code execution and clear work buffer.
|
||||
|
@ -335,6 +335,14 @@ class Assembler : public AbstractAssembler {
|
||||
Lookaside = 1 << 4
|
||||
};
|
||||
|
||||
//---< calculate length of instruction >---
|
||||
// With SPARC being a RISC architecture, this always is BytesPerInstWord
|
||||
// instruction must start at passed address
|
||||
static unsigned int instr_len(unsigned char *instr) { return BytesPerInstWord; }
|
||||
|
||||
//---< longest instructions >---
|
||||
static unsigned int instr_maxlen() { return BytesPerInstWord; }
|
||||
|
||||
static bool is_in_wdisp_range(address a, address b, int nbits) {
|
||||
intptr_t d = intptr_t(b) - intptr_t(a);
|
||||
return is_simm(d, nbits + 2);
|
||||
|
@ -172,6 +172,9 @@ int LIR_Assembler::check_icache() {
|
||||
return offset;
|
||||
}
|
||||
|
||||
void LIR_Assembler::clinit_barrier(ciMethod* method) {
|
||||
ShouldNotReachHere(); // not implemented
|
||||
}
|
||||
|
||||
void LIR_Assembler::osr_entry() {
|
||||
// On-stack-replacement entry sequence (interpreter frame layout described in interpreter_sparc.cpp):
|
||||
|
@ -80,7 +80,7 @@ define_pd_global(uintx, CodeCacheExpansionSize, 64*K);
|
||||
|
||||
// Ergonomics related flags
|
||||
define_pd_global(uint64_t,MaxRAM, 128ULL*G);
|
||||
define_pd_global(uintx, CodeCacheMinBlockLength, 4);
|
||||
define_pd_global(uintx, CodeCacheMinBlockLength, 6);
|
||||
define_pd_global(uintx, CodeCacheMinimumUseSpace, 400*K);
|
||||
|
||||
define_pd_global(bool, TrapBasedRangeChecks, false); // Not needed on sparc.
|
||||
|
@ -33,4 +33,24 @@
|
||||
return "v9only";
|
||||
}
|
||||
|
||||
// Returns address of n-th instruction preceding addr,
|
||||
// NULL if no preceding instruction can be found.
|
||||
// With SPARC being a RISC architecture, this always is BytesPerInstWord
|
||||
// It might be beneficial to check "is_readable" as we do on ppc and s390.
|
||||
static address find_prev_instr(address addr, int n_instr) {
|
||||
return addr - BytesPerInstWord*n_instr;
|
||||
}
|
||||
|
||||
// special-case instruction decoding.
|
||||
// There may be cases where the binutils disassembler doesn't do
|
||||
// the perfect job. In those cases, decode_instruction0 may kick in
|
||||
// and do it right.
|
||||
// If nothing had to be done, just return "here", otherwise return "here + instr_len(here)"
|
||||
static address decode_instruction0(address here, outputStream* st, address virtual_begin = NULL) {
|
||||
return here;
|
||||
}
|
||||
|
||||
// platform-specific instruction annotations (like value of loaded constants)
|
||||
static void annotate(address pc, outputStream* st) { };
|
||||
|
||||
#endif // CPU_SPARC_DISASSEMBLER_SPARC_HPP
|
||||
|
@ -1,5 +1,5 @@
|
||||
//
|
||||
// Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
// Copyright (c) 1998, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
//
|
||||
// This code is free software; you can redistribute it and/or modify it
|
||||
@ -1295,7 +1295,8 @@ static enum RC rc_class( OptoReg::Name reg ) {
|
||||
#ifndef PRODUCT
|
||||
ATTRIBUTE_PRINTF(2, 3)
|
||||
static void print_helper(outputStream* st, const char* format, ...) {
|
||||
if (st->position() > 0) {
|
||||
const int tab_size = 8;
|
||||
if (st->position() > tab_size) {
|
||||
st->cr();
|
||||
st->sp();
|
||||
}
|
||||
|
@ -139,12 +139,12 @@ void VM_Version::initialize() {
|
||||
if (FLAG_IS_DEFAULT(AllocatePrefetchLines)) {
|
||||
const int ap_lns = AllocatePrefetchLines;
|
||||
const int ap_inc = cache_line_size < 64 ? ap_lns : (ap_lns + 1) / 2;
|
||||
FLAG_SET_ERGO(intx, AllocatePrefetchLines, ap_lns + ap_inc);
|
||||
FLAG_SET_ERGO(AllocatePrefetchLines, ap_lns + ap_inc);
|
||||
}
|
||||
if (FLAG_IS_DEFAULT(AllocateInstancePrefetchLines)) {
|
||||
const int ip_lns = AllocateInstancePrefetchLines;
|
||||
const int ip_inc = cache_line_size < 64 ? ip_lns : (ip_lns + 1) / 2;
|
||||
FLAG_SET_ERGO(intx, AllocateInstancePrefetchLines, ip_lns + ip_inc);
|
||||
FLAG_SET_ERGO(AllocateInstancePrefetchLines, ip_lns + ip_inc);
|
||||
}
|
||||
}
|
||||
#endif /* COMPILER2 */
|
||||
|
@ -630,6 +630,17 @@ class Assembler : public AbstractAssembler {
|
||||
_true = 7
|
||||
};
|
||||
|
||||
//---< calculate length of instruction >---
|
||||
// As instruction size can't be found out easily on x86/x64,
|
||||
// we just use '4' for len and maxlen.
|
||||
// instruction must start at passed address
|
||||
static unsigned int instr_len(unsigned char *instr) { return 4; }
|
||||
|
||||
//---< longest instructions >---
|
||||
// Max instruction length is not specified in architecture documentation.
|
||||
// We could use a "safe enough" estimate (15), but just default to
|
||||
// instruction length guess from above.
|
||||
static unsigned int instr_maxlen() { return 4; }
|
||||
|
||||
// NOTE: The general philopsophy of the declarations here is that 64bit versions
|
||||
// of instructions are freely declared without the need for wrapping them an ifdef.
|
||||
|
@ -359,6 +359,23 @@ int LIR_Assembler::check_icache() {
|
||||
return offset;
|
||||
}
|
||||
|
||||
void LIR_Assembler::clinit_barrier(ciMethod* method) {
|
||||
assert(VM_Version::supports_fast_class_init_checks(), "sanity");
|
||||
assert(method->holder()->is_being_initialized() || method->holder()->is_initialized(),
|
||||
"initialization should have been started");
|
||||
|
||||
Label L_skip_barrier;
|
||||
Register klass = rscratch1;
|
||||
Register thread = LP64_ONLY( r15_thread ) NOT_LP64( noreg );
|
||||
assert(thread != noreg, "x86_32 not implemented");
|
||||
|
||||
__ mov_metadata(klass, method->holder()->constant_encoding());
|
||||
__ clinit_barrier(klass, thread, &L_skip_barrier /*L_fast_path*/);
|
||||
|
||||
__ jump(RuntimeAddress(SharedRuntime::get_handle_wrong_method_stub()));
|
||||
|
||||
__ bind(L_skip_barrier);
|
||||
}
|
||||
|
||||
void LIR_Assembler::jobject2reg_with_patching(Register reg, CodeEmitInfo* info) {
|
||||
jobject o = NULL;
|
||||
|
@ -88,7 +88,7 @@ define_pd_global(uintx, ReservedCodeCacheSize, 48*M);
|
||||
define_pd_global(uintx, NonProfiledCodeHeapSize, 21*M);
|
||||
define_pd_global(uintx, ProfiledCodeHeapSize, 22*M);
|
||||
define_pd_global(uintx, NonNMethodCodeHeapSize, 5*M );
|
||||
define_pd_global(uintx, CodeCacheMinBlockLength, 4);
|
||||
define_pd_global(uintx, CodeCacheMinBlockLength, 6);
|
||||
define_pd_global(uintx, CodeCacheMinimumUseSpace, 400*K);
|
||||
|
||||
define_pd_global(bool, TrapBasedRangeChecks, false); // Not needed on x86.
|
||||
|
@ -33,4 +33,25 @@
|
||||
return "";
|
||||
}
|
||||
|
||||
// Returns address of n-th instruction preceding addr,
|
||||
// NULL if no preceding instruction can be found.
|
||||
// On CISC architectures, it is difficult to impossible to step
|
||||
// backwards in the instruction stream. Therefore just return NULL.
|
||||
// It might be beneficial to check "is_readable" as we do on ppc and s390.
|
||||
static address find_prev_instr(address addr, int n_instr) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// special-case instruction decoding.
|
||||
// There may be cases where the binutils disassembler doesn't do
|
||||
// the perfect job. In those cases, decode_instruction0 may kick in
|
||||
// and do it right.
|
||||
// If nothing had to be done, just return "here", otherwise return "here + instr_len(here)"
|
||||
static address decode_instruction0(address here, outputStream* st, address virtual_begin = NULL) {
|
||||
return here;
|
||||
}
|
||||
|
||||
// platform-specific instruction annotations (like value of loaded constants)
|
||||
static void annotate(address pc, outputStream* st) { };
|
||||
|
||||
#endif // CPU_X86_DISASSEMBLER_X86_HPP
|
||||
|
@ -31,7 +31,8 @@
|
||||
#define __ masm->masm()->
|
||||
|
||||
void LIR_OpShenandoahCompareAndSwap::emit_code(LIR_Assembler* masm) {
|
||||
Register addr = _addr->as_register_lo();
|
||||
NOT_LP64(assert(_addr->is_single_cpu(), "must be single");)
|
||||
Register addr = _addr->is_single_cpu() ? _addr->as_register() : _addr->as_register_lo();
|
||||
Register newval = _new_value->as_register();
|
||||
Register cmpval = _cmp_value->as_register();
|
||||
Register tmp1 = _tmp1->as_register();
|
||||
|
@ -71,6 +71,7 @@ void ShenandoahBarrierSetAssembler::arraycopy_prologue(MacroAssembler* masm, Dec
|
||||
|
||||
if (ShenandoahSATBBarrier && !dest_uninitialized && !ShenandoahHeap::heap()->heuristics()->can_do_traversal_gc()) {
|
||||
Register thread = NOT_LP64(rax) LP64_ONLY(r15_thread);
|
||||
assert_different_registers(dst, count, thread); // we don't care about src here?
|
||||
#ifndef _LP64
|
||||
__ push(thread);
|
||||
__ get_thread(thread);
|
||||
@ -144,6 +145,8 @@ void ShenandoahBarrierSetAssembler::arraycopy_epilogue(MacroAssembler* masm, Dec
|
||||
#endif
|
||||
|
||||
Register thread = NOT_LP64(rax) LP64_ONLY(r15_thread);
|
||||
assert_different_registers(dst, thread); // do we care about src at all here?
|
||||
|
||||
#ifndef _LP64
|
||||
__ push(thread);
|
||||
__ get_thread(thread);
|
||||
@ -317,34 +320,68 @@ void ShenandoahBarrierSetAssembler::satb_write_barrier_pre(MacroAssembler* masm,
|
||||
__ bind(done);
|
||||
}
|
||||
|
||||
void ShenandoahBarrierSetAssembler::resolve_forward_pointer(MacroAssembler* masm, Register dst) {
|
||||
void ShenandoahBarrierSetAssembler::resolve_forward_pointer(MacroAssembler* masm, Register dst, Register tmp) {
|
||||
assert(ShenandoahCASBarrier, "should be enabled");
|
||||
Label is_null;
|
||||
__ testptr(dst, dst);
|
||||
__ jcc(Assembler::zero, is_null);
|
||||
resolve_forward_pointer_not_null(masm, dst);
|
||||
resolve_forward_pointer_not_null(masm, dst, tmp);
|
||||
__ bind(is_null);
|
||||
}
|
||||
|
||||
void ShenandoahBarrierSetAssembler::resolve_forward_pointer_not_null(MacroAssembler* masm, Register dst) {
|
||||
void ShenandoahBarrierSetAssembler::resolve_forward_pointer_not_null(MacroAssembler* masm, Register dst, Register tmp) {
|
||||
assert(ShenandoahCASBarrier || ShenandoahLoadRefBarrier, "should be enabled");
|
||||
__ movptr(dst, Address(dst, ShenandoahForwarding::byte_offset()));
|
||||
// The below loads the mark word, checks if the lowest two bits are
|
||||
// set, and if so, clear the lowest two bits and copy the result
|
||||
// to dst. Otherwise it leaves dst alone.
|
||||
// Implementing this is surprisingly awkward. I do it here by:
|
||||
// - Inverting the mark word
|
||||
// - Test lowest two bits == 0
|
||||
// - If so, set the lowest two bits
|
||||
// - Invert the result back, and copy to dst
|
||||
|
||||
bool borrow_reg = (tmp == noreg);
|
||||
if (borrow_reg) {
|
||||
// No free registers available. Make one useful.
|
||||
tmp = LP64_ONLY(rscratch1) NOT_LP64(rdx);
|
||||
__ push(tmp);
|
||||
}
|
||||
|
||||
Label done;
|
||||
__ movptr(tmp, Address(dst, oopDesc::mark_offset_in_bytes()));
|
||||
__ notptr(tmp);
|
||||
__ testb(tmp, markOopDesc::marked_value);
|
||||
__ jccb(Assembler::notZero, done);
|
||||
__ orptr(tmp, markOopDesc::marked_value);
|
||||
__ notptr(tmp);
|
||||
__ mov(dst, tmp);
|
||||
__ bind(done);
|
||||
|
||||
if (borrow_reg) {
|
||||
__ pop(tmp);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void ShenandoahBarrierSetAssembler::load_reference_barrier_not_null(MacroAssembler* masm, Register dst) {
|
||||
assert(ShenandoahLoadRefBarrier, "Should be enabled");
|
||||
#ifdef _LP64
|
||||
|
||||
Label done;
|
||||
|
||||
Address gc_state(r15_thread, in_bytes(ShenandoahThreadLocalData::gc_state_offset()));
|
||||
__ testb(gc_state, ShenandoahHeap::HAS_FORWARDED | ShenandoahHeap::EVACUATION | ShenandoahHeap::TRAVERSAL);
|
||||
__ jccb(Assembler::zero, done);
|
||||
#ifdef _LP64
|
||||
Register thread = r15_thread;
|
||||
#else
|
||||
Register thread = rcx;
|
||||
if (thread == dst) {
|
||||
thread = rbx;
|
||||
}
|
||||
__ push(thread);
|
||||
__ get_thread(thread);
|
||||
#endif
|
||||
assert_different_registers(dst, thread);
|
||||
|
||||
// Heap is unstable, need to perform the resolve even if LRB is inactive
|
||||
resolve_forward_pointer_not_null(masm, dst);
|
||||
|
||||
__ testb(gc_state, ShenandoahHeap::EVACUATION | ShenandoahHeap::TRAVERSAL);
|
||||
Address gc_state(thread, in_bytes(ShenandoahThreadLocalData::gc_state_offset()));
|
||||
__ testb(gc_state, ShenandoahHeap::HAS_FORWARDED);
|
||||
__ jccb(Assembler::zero, done);
|
||||
|
||||
if (dst != rax) {
|
||||
@ -358,8 +395,9 @@ void ShenandoahBarrierSetAssembler::load_reference_barrier_not_null(MacroAssembl
|
||||
}
|
||||
|
||||
__ bind(done);
|
||||
#else
|
||||
Unimplemented();
|
||||
|
||||
#ifndef _LP64
|
||||
__ pop(thread);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -374,7 +412,6 @@ void ShenandoahBarrierSetAssembler::storeval_barrier_impl(MacroAssembler* masm,
|
||||
|
||||
if (dst == noreg) return;
|
||||
|
||||
#ifdef _LP64
|
||||
if (ShenandoahStoreValEnqueueBarrier) {
|
||||
// The set of registers to be saved+restored is the same as in the write-barrier above.
|
||||
// Those are the commonly used registers in the interpreter.
|
||||
@ -383,15 +420,26 @@ void ShenandoahBarrierSetAssembler::storeval_barrier_impl(MacroAssembler* masm,
|
||||
__ subptr(rsp, 2 * Interpreter::stackElementSize);
|
||||
__ movdbl(Address(rsp, 0), xmm0);
|
||||
|
||||
satb_write_barrier_pre(masm, noreg, dst, r15_thread, tmp, true, false);
|
||||
#ifdef _LP64
|
||||
Register thread = r15_thread;
|
||||
#else
|
||||
Register thread = rcx;
|
||||
if (thread == dst || thread == tmp) {
|
||||
thread = rdi;
|
||||
}
|
||||
if (thread == dst || thread == tmp) {
|
||||
thread = rbx;
|
||||
}
|
||||
__ get_thread(thread);
|
||||
#endif
|
||||
assert_different_registers(dst, tmp, thread);
|
||||
|
||||
satb_write_barrier_pre(masm, noreg, dst, thread, tmp, true, false);
|
||||
__ movdbl(xmm0, Address(rsp, 0));
|
||||
__ addptr(rsp, 2 * Interpreter::stackElementSize);
|
||||
//__ pop_callee_saved_registers();
|
||||
__ popa();
|
||||
}
|
||||
#else
|
||||
Unimplemented();
|
||||
#endif
|
||||
}
|
||||
|
||||
void ShenandoahBarrierSetAssembler::load_reference_barrier(MacroAssembler* masm, Register dst) {
|
||||
@ -416,6 +464,7 @@ void ShenandoahBarrierSetAssembler::load_at(MacroAssembler* masm, DecoratorSet d
|
||||
|
||||
if (ShenandoahKeepAliveBarrier && on_reference) {
|
||||
const Register thread = NOT_LP64(tmp_thread) LP64_ONLY(r15_thread);
|
||||
assert_different_registers(dst, tmp1, tmp_thread);
|
||||
NOT_LP64(__ get_thread(thread));
|
||||
// Generate the SATB pre-barrier code to log the value of
|
||||
// the referent field in an SATB buffer.
|
||||
@ -451,12 +500,13 @@ void ShenandoahBarrierSetAssembler::store_at(MacroAssembler* masm, DecoratorSet
|
||||
__ lea(tmp1, dst);
|
||||
}
|
||||
|
||||
#ifndef _LP64
|
||||
InterpreterMacroAssembler *imasm = static_cast<InterpreterMacroAssembler*>(masm);
|
||||
#endif
|
||||
assert_different_registers(val, tmp1, tmp2, tmp3, rthread);
|
||||
|
||||
NOT_LP64(__ get_thread(rcx));
|
||||
NOT_LP64(imasm->save_bcp());
|
||||
#ifndef _LP64
|
||||
__ get_thread(rthread);
|
||||
InterpreterMacroAssembler *imasm = static_cast<InterpreterMacroAssembler*>(masm);
|
||||
imasm->save_bcp();
|
||||
#endif
|
||||
|
||||
if (needs_pre_barrier) {
|
||||
shenandoah_write_barrier_pre(masm /*masm*/,
|
||||
@ -479,65 +529,8 @@ void ShenandoahBarrierSetAssembler::store_at(MacroAssembler* masm, DecoratorSet
|
||||
}
|
||||
}
|
||||
|
||||
void ShenandoahBarrierSetAssembler::tlab_allocate(MacroAssembler* masm,
|
||||
Register thread, Register obj,
|
||||
Register var_size_in_bytes,
|
||||
int con_size_in_bytes,
|
||||
Register t1, Register t2,
|
||||
Label& slow_case) {
|
||||
assert_different_registers(obj, t1, t2);
|
||||
assert_different_registers(obj, var_size_in_bytes, t1);
|
||||
Register end = t2;
|
||||
if (!thread->is_valid()) {
|
||||
#ifdef _LP64
|
||||
thread = r15_thread;
|
||||
#else
|
||||
assert(t1->is_valid(), "need temp reg");
|
||||
thread = t1;
|
||||
__ get_thread(thread);
|
||||
#endif
|
||||
}
|
||||
|
||||
__ verify_tlab();
|
||||
|
||||
__ movptr(obj, Address(thread, JavaThread::tlab_top_offset()));
|
||||
if (var_size_in_bytes == noreg) {
|
||||
__ lea(end, Address(obj, con_size_in_bytes + ShenandoahForwarding::byte_size()));
|
||||
} else {
|
||||
__ addptr(var_size_in_bytes, ShenandoahForwarding::byte_size());
|
||||
__ lea(end, Address(obj, var_size_in_bytes, Address::times_1));
|
||||
}
|
||||
__ cmpptr(end, Address(thread, JavaThread::tlab_end_offset()));
|
||||
__ jcc(Assembler::above, slow_case);
|
||||
|
||||
// update the tlab top pointer
|
||||
__ movptr(Address(thread, JavaThread::tlab_top_offset()), end);
|
||||
|
||||
// Initialize brooks pointer
|
||||
#ifdef _LP64
|
||||
__ incrementq(obj, ShenandoahForwarding::byte_size());
|
||||
#else
|
||||
__ incrementl(obj, ShenandoahForwarding::byte_size());
|
||||
#endif
|
||||
__ movptr(Address(obj, ShenandoahForwarding::byte_offset()), obj);
|
||||
|
||||
// recover var_size_in_bytes if necessary
|
||||
if (var_size_in_bytes == end) {
|
||||
__ subptr(var_size_in_bytes, obj);
|
||||
}
|
||||
__ verify_tlab();
|
||||
}
|
||||
|
||||
// Special Shenandoah CAS implementation that handles false negatives
|
||||
// due to concurrent evacuation.
|
||||
#ifndef _LP64
|
||||
void ShenandoahBarrierSetAssembler::cmpxchg_oop(MacroAssembler* masm,
|
||||
Register res, Address addr, Register oldval, Register newval,
|
||||
bool exchange, Register tmp1, Register tmp2) {
|
||||
// Shenandoah has no 32-bit version for this.
|
||||
Unimplemented();
|
||||
}
|
||||
#else
|
||||
void ShenandoahBarrierSetAssembler::cmpxchg_oop(MacroAssembler* masm,
|
||||
Register res, Address addr, Register oldval, Register newval,
|
||||
bool exchange, Register tmp1, Register tmp2) {
|
||||
@ -547,18 +540,24 @@ void ShenandoahBarrierSetAssembler::cmpxchg_oop(MacroAssembler* masm,
|
||||
Label retry, done;
|
||||
|
||||
// Remember oldval for retry logic below
|
||||
#ifdef _LP64
|
||||
if (UseCompressedOops) {
|
||||
__ movl(tmp1, oldval);
|
||||
} else {
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
__ movptr(tmp1, oldval);
|
||||
}
|
||||
|
||||
// Step 1. Try to CAS with given arguments. If successful, then we are done,
|
||||
// and can safely return.
|
||||
if (os::is_MP()) __ lock();
|
||||
#ifdef _LP64
|
||||
if (UseCompressedOops) {
|
||||
__ cmpxchgl(newval, addr);
|
||||
} else {
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
__ cmpxchgptr(newval, addr);
|
||||
}
|
||||
__ jcc(Assembler::equal, done, true);
|
||||
@ -570,15 +569,20 @@ void ShenandoahBarrierSetAssembler::cmpxchg_oop(MacroAssembler* masm,
|
||||
// oldval and the value from memory -- this will give both to-space pointers.
|
||||
// If they mismatch, then it was a legitimate failure.
|
||||
//
|
||||
#ifdef _LP64
|
||||
if (UseCompressedOops) {
|
||||
__ decode_heap_oop(tmp1);
|
||||
}
|
||||
#endif
|
||||
resolve_forward_pointer(masm, tmp1);
|
||||
|
||||
#ifdef _LP64
|
||||
if (UseCompressedOops) {
|
||||
__ movl(tmp2, oldval);
|
||||
__ decode_heap_oop(tmp2);
|
||||
} else {
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
__ movptr(tmp2, oldval);
|
||||
}
|
||||
resolve_forward_pointer(masm, tmp2);
|
||||
@ -594,17 +598,23 @@ void ShenandoahBarrierSetAssembler::cmpxchg_oop(MacroAssembler* masm,
|
||||
// witness.
|
||||
__ bind(retry);
|
||||
if (os::is_MP()) __ lock();
|
||||
#ifdef _LP64
|
||||
if (UseCompressedOops) {
|
||||
__ cmpxchgl(newval, addr);
|
||||
} else {
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
__ cmpxchgptr(newval, addr);
|
||||
}
|
||||
__ jcc(Assembler::equal, done, true);
|
||||
|
||||
#ifdef _LP64
|
||||
if (UseCompressedOops) {
|
||||
__ movl(tmp2, oldval);
|
||||
__ decode_heap_oop(tmp2);
|
||||
} else {
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
__ movptr(tmp2, oldval);
|
||||
}
|
||||
resolve_forward_pointer(masm, tmp2);
|
||||
@ -618,11 +628,21 @@ void ShenandoahBarrierSetAssembler::cmpxchg_oop(MacroAssembler* masm,
|
||||
__ bind(done);
|
||||
if (!exchange) {
|
||||
assert(res != NULL, "need result register");
|
||||
#ifdef _LP64
|
||||
__ setb(Assembler::equal, res);
|
||||
__ movzbl(res, res);
|
||||
#else
|
||||
// Need something else to clean the result, because some registers
|
||||
// do not have byte encoding that movzbl wants. Cannot do the xor first,
|
||||
// because it modifies the flags.
|
||||
Label res_non_zero;
|
||||
__ movptr(res, 1);
|
||||
__ jcc(Assembler::equal, res_non_zero, true);
|
||||
__ xorptr(res, res);
|
||||
__ bind(res_non_zero);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif // LP64
|
||||
|
||||
void ShenandoahBarrierSetAssembler::save_vector_registers(MacroAssembler* masm) {
|
||||
int num_xmm_regs = LP64_ONLY(16) NOT_LP64(8);
|
||||
@ -855,41 +875,62 @@ address ShenandoahBarrierSetAssembler::generate_shenandoah_lrb(StubCodeGenerator
|
||||
StubCodeMark mark(cgen, "StubRoutines", "shenandoah_lrb");
|
||||
address start = __ pc();
|
||||
|
||||
#ifdef _LP64
|
||||
Label not_done;
|
||||
Label resolve_oop, slow_path;
|
||||
|
||||
// We use RDI, which also serves as argument register for slow call.
|
||||
// RAX always holds the src object ptr, except after the slow call and
|
||||
// the cmpxchg, then it holds the result.
|
||||
// R8 and RCX are used as temporary registers.
|
||||
__ push(rdi);
|
||||
__ push(r8);
|
||||
// the cmpxchg, then it holds the result. R8/RBX is used as temporary register.
|
||||
|
||||
// Check for object beeing in the collection set.
|
||||
Register tmp1 = rdi;
|
||||
Register tmp2 = LP64_ONLY(r8) NOT_LP64(rbx);
|
||||
|
||||
__ push(tmp1);
|
||||
__ push(tmp2);
|
||||
|
||||
// Check for object being in the collection set.
|
||||
// TODO: Can we use only 1 register here?
|
||||
// The source object arrives here in rax.
|
||||
// live: rax
|
||||
// live: rdi
|
||||
__ mov(rdi, rax);
|
||||
__ shrptr(rdi, ShenandoahHeapRegion::region_size_bytes_shift_jint());
|
||||
// live: r8
|
||||
__ movptr(r8, (intptr_t) ShenandoahHeap::in_cset_fast_test_addr());
|
||||
__ movbool(r8, Address(r8, rdi, Address::times_1));
|
||||
// unlive: rdi
|
||||
__ testbool(r8);
|
||||
// unlive: r8
|
||||
__ jccb(Assembler::notZero, not_done);
|
||||
// live: tmp1
|
||||
__ mov(tmp1, rax);
|
||||
__ shrptr(tmp1, ShenandoahHeapRegion::region_size_bytes_shift_jint());
|
||||
// live: tmp2
|
||||
__ movptr(tmp2, (intptr_t) ShenandoahHeap::in_cset_fast_test_addr());
|
||||
__ movbool(tmp2, Address(tmp2, tmp1, Address::times_1));
|
||||
// unlive: tmp1
|
||||
__ testbool(tmp2);
|
||||
// unlive: tmp2
|
||||
__ jccb(Assembler::notZero, resolve_oop);
|
||||
|
||||
__ pop(r8);
|
||||
__ pop(rdi);
|
||||
__ pop(tmp2);
|
||||
__ pop(tmp1);
|
||||
__ ret(0);
|
||||
|
||||
__ bind(not_done);
|
||||
__ bind(resolve_oop);
|
||||
|
||||
__ movptr(tmp2, Address(rax, oopDesc::mark_offset_in_bytes()));
|
||||
// Test if both lowest bits are set. We trick it by negating the bits
|
||||
// then test for both bits clear.
|
||||
__ notptr(tmp2);
|
||||
__ testb(tmp2, markOopDesc::marked_value);
|
||||
__ jccb(Assembler::notZero, slow_path);
|
||||
// Clear both lower bits. It's still inverted, so set them, and then invert back.
|
||||
__ orptr(tmp2, markOopDesc::marked_value);
|
||||
__ notptr(tmp2);
|
||||
// At this point, tmp2 contains the decoded forwarding pointer.
|
||||
__ mov(rax, tmp2);
|
||||
|
||||
__ pop(tmp2);
|
||||
__ pop(tmp1);
|
||||
__ ret(0);
|
||||
|
||||
__ bind(slow_path);
|
||||
|
||||
__ push(rcx);
|
||||
__ push(rdx);
|
||||
__ push(rdi);
|
||||
__ push(rsi);
|
||||
#ifdef _LP64
|
||||
__ push(r8);
|
||||
__ push(r9);
|
||||
__ push(r10);
|
||||
@ -898,10 +939,14 @@ address ShenandoahBarrierSetAssembler::generate_shenandoah_lrb(StubCodeGenerator
|
||||
__ push(r13);
|
||||
__ push(r14);
|
||||
__ push(r15);
|
||||
#endif
|
||||
|
||||
save_vector_registers(cgen->assembler());
|
||||
__ movptr(rdi, rax);
|
||||
__ call_VM_leaf(CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier_JRT), rdi);
|
||||
restore_vector_registers(cgen->assembler());
|
||||
|
||||
#ifdef _LP64
|
||||
__ pop(r15);
|
||||
__ pop(r14);
|
||||
__ pop(r13);
|
||||
@ -910,17 +955,16 @@ address ShenandoahBarrierSetAssembler::generate_shenandoah_lrb(StubCodeGenerator
|
||||
__ pop(r10);
|
||||
__ pop(r9);
|
||||
__ pop(r8);
|
||||
#endif
|
||||
__ pop(rsi);
|
||||
__ pop(rdi);
|
||||
__ pop(rdx);
|
||||
__ pop(rcx);
|
||||
|
||||
__ pop(r8);
|
||||
__ pop(rdi);
|
||||
__ pop(tmp2);
|
||||
__ pop(tmp1);
|
||||
__ ret(0);
|
||||
#else
|
||||
ShouldNotReachHere();
|
||||
#endif
|
||||
|
||||
return start;
|
||||
}
|
||||
|
||||
|
@ -55,8 +55,8 @@ private:
|
||||
bool tosca_live,
|
||||
bool expand_call);
|
||||
|
||||
void resolve_forward_pointer(MacroAssembler* masm, Register dst);
|
||||
void resolve_forward_pointer_not_null(MacroAssembler* masm, Register dst);
|
||||
void resolve_forward_pointer(MacroAssembler* masm, Register dst, Register tmp = noreg);
|
||||
void resolve_forward_pointer_not_null(MacroAssembler* masm, Register dst, Register tmp = noreg);
|
||||
|
||||
void load_reference_barrier_not_null(MacroAssembler* masm, Register dst);
|
||||
|
||||
@ -91,13 +91,6 @@ public:
|
||||
virtual void store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
|
||||
Address dst, Register val, Register tmp1, Register tmp2);
|
||||
|
||||
virtual void tlab_allocate(MacroAssembler* masm,
|
||||
Register thread, Register obj,
|
||||
Register var_size_in_bytes,
|
||||
int con_size_in_bytes,
|
||||
Register t1, Register t2,
|
||||
Label& slow_case);
|
||||
|
||||
virtual void barrier_stubs_init();
|
||||
|
||||
};
|
||||
|
70
src/hotspot/cpu/x86/gc/shenandoah/shenandoah_x86_32.ad
Normal file
70
src/hotspot/cpu/x86/gc/shenandoah/shenandoah_x86_32.ad
Normal file
@ -0,0 +1,70 @@
|
||||
//
|
||||
// Copyright (c) 2018, Red Hat, Inc. All rights reserved.
|
||||
//
|
||||
// This code is free software; you can redistribute it and/or modify it
|
||||
// under the terms of the GNU General Public License version 2 only, as
|
||||
// published by the Free Software Foundation.
|
||||
//
|
||||
// This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
// version 2 for more details (a copy is included in the LICENSE file that
|
||||
// accompanied this code).
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License version
|
||||
// 2 along with this work; if not, write to the Free Software Foundation,
|
||||
// Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
//
|
||||
// Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
// or visit www.oracle.com if you need additional information or have any
|
||||
// questions.
|
||||
//
|
||||
//
|
||||
|
||||
source_hpp %{
|
||||
#include "gc/shenandoah/shenandoahBarrierSetAssembler.hpp"
|
||||
#include "gc/shenandoah/c2/shenandoahSupport.hpp"
|
||||
%}
|
||||
|
||||
instruct compareAndSwapP_shenandoah(rRegI res,
|
||||
memory mem_ptr,
|
||||
eRegP tmp1, eRegP tmp2,
|
||||
eAXRegP oldval, eRegP newval,
|
||||
eFlagsReg cr)
|
||||
%{
|
||||
match(Set res (ShenandoahCompareAndSwapP mem_ptr (Binary oldval newval)));
|
||||
match(Set res (ShenandoahWeakCompareAndSwapP mem_ptr (Binary oldval newval)));
|
||||
effect(TEMP tmp1, TEMP tmp2, KILL cr, KILL oldval);
|
||||
|
||||
format %{ "shenandoah_cas_oop $mem_ptr,$newval" %}
|
||||
|
||||
ins_encode %{
|
||||
ShenandoahBarrierSet::assembler()->cmpxchg_oop(&_masm,
|
||||
$res$$Register, $mem_ptr$$Address, $oldval$$Register, $newval$$Register,
|
||||
false, // swap
|
||||
$tmp1$$Register, $tmp2$$Register
|
||||
);
|
||||
%}
|
||||
ins_pipe( pipe_cmpxchg );
|
||||
%}
|
||||
|
||||
instruct compareAndExchangeP_shenandoah(memory mem_ptr,
|
||||
eAXRegP oldval, eRegP newval,
|
||||
eRegP tmp1, eRegP tmp2,
|
||||
eFlagsReg cr)
|
||||
%{
|
||||
match(Set oldval (ShenandoahCompareAndExchangeP mem_ptr (Binary oldval newval)));
|
||||
effect(KILL cr, TEMP tmp1, TEMP tmp2);
|
||||
ins_cost(1000);
|
||||
|
||||
format %{ "shenandoah_cas_oop $mem_ptr,$newval" %}
|
||||
|
||||
ins_encode %{
|
||||
ShenandoahBarrierSet::assembler()->cmpxchg_oop(&_masm,
|
||||
NULL, $mem_ptr$$Address, $oldval$$Register, $newval$$Register,
|
||||
true, // exchange
|
||||
$tmp1$$Register, $tmp2$$Register
|
||||
);
|
||||
%}
|
||||
ins_pipe( pipe_cmpxchg );
|
||||
%}
|
@ -487,7 +487,8 @@ void InterpreterMacroAssembler::get_cache_entry_pointer_at_bcp(Register cache,
|
||||
Register tmp,
|
||||
int bcp_offset,
|
||||
size_t index_size) {
|
||||
assert(cache != tmp, "must use different register");
|
||||
assert_different_registers(cache, tmp);
|
||||
|
||||
get_cache_index_at_bcp(tmp, bcp_offset, index_size);
|
||||
assert(sizeof(ConstantPoolCacheEntry) == 4 * wordSize, "adjust code below");
|
||||
// convert from field index to ConstantPoolCacheEntry index
|
||||
@ -501,8 +502,9 @@ void InterpreterMacroAssembler::get_cache_entry_pointer_at_bcp(Register cache,
|
||||
}
|
||||
|
||||
// Load object from cpool->resolved_references(index)
|
||||
void InterpreterMacroAssembler::load_resolved_reference_at_index(
|
||||
Register result, Register index, Register tmp) {
|
||||
void InterpreterMacroAssembler::load_resolved_reference_at_index(Register result,
|
||||
Register index,
|
||||
Register tmp) {
|
||||
assert_different_registers(result, index);
|
||||
|
||||
get_constant_pool(result);
|
||||
@ -516,14 +518,32 @@ void InterpreterMacroAssembler::load_resolved_reference_at_index(
|
||||
}
|
||||
|
||||
// load cpool->resolved_klass_at(index)
|
||||
void InterpreterMacroAssembler::load_resolved_klass_at_index(Register cpool,
|
||||
Register index, Register klass) {
|
||||
void InterpreterMacroAssembler::load_resolved_klass_at_index(Register klass,
|
||||
Register cpool,
|
||||
Register index) {
|
||||
assert_different_registers(cpool, index);
|
||||
|
||||
movw(index, Address(cpool, index, Address::times_ptr, sizeof(ConstantPool)));
|
||||
Register resolved_klasses = cpool;
|
||||
movptr(resolved_klasses, Address(cpool, ConstantPool::resolved_klasses_offset_in_bytes()));
|
||||
movptr(klass, Address(resolved_klasses, index, Address::times_ptr, Array<Klass*>::base_offset_in_bytes()));
|
||||
}
|
||||
|
||||
void InterpreterMacroAssembler::load_resolved_method_at_index(int byte_no,
|
||||
Register method,
|
||||
Register cache,
|
||||
Register index) {
|
||||
assert_different_registers(cache, index);
|
||||
|
||||
const int method_offset = in_bytes(
|
||||
ConstantPoolCache::base_offset() +
|
||||
((byte_no == TemplateTable::f2_byte)
|
||||
? ConstantPoolCacheEntry::f2_offset()
|
||||
: ConstantPoolCacheEntry::f1_offset()));
|
||||
|
||||
movptr(method, Address(cache, index, Address::times_ptr, method_offset)); // get f1 Method*
|
||||
}
|
||||
|
||||
// Generate a subtype check: branch to ok_is_subtype if sub_klass is a
|
||||
// subtype of super_klass.
|
||||
//
|
||||
|
@ -124,9 +124,14 @@ class InterpreterMacroAssembler: public MacroAssembler {
|
||||
void load_resolved_reference_at_index(Register result, Register index, Register tmp = rscratch2);
|
||||
|
||||
// load cpool->resolved_klass_at(index)
|
||||
void load_resolved_klass_at_index(Register cpool, // the constant pool (corrupted on return)
|
||||
Register index, // the constant pool index (corrupted on return)
|
||||
Register klass); // contains the Klass on return
|
||||
void load_resolved_klass_at_index(Register klass, // contains the Klass on return
|
||||
Register cpool, // the constant pool (corrupted on return)
|
||||
Register index); // the constant pool index (corrupted on return)
|
||||
|
||||
void load_resolved_method_at_index(int byte_no,
|
||||
Register method,
|
||||
Register cache,
|
||||
Register index);
|
||||
|
||||
NOT_LP64(void f2ieee();) // truncate ftos to 32bits
|
||||
NOT_LP64(void d2ieee();) // truncate dtos to 64bits
|
||||
|
@ -4603,6 +4603,29 @@ void MacroAssembler::check_klass_subtype_slow_path(Register sub_klass,
|
||||
}
|
||||
|
||||
|
||||
void MacroAssembler::clinit_barrier(Register klass, Register thread, Label* L_fast_path, Label* L_slow_path) {
|
||||
assert(L_fast_path != NULL || L_slow_path != NULL, "at least one is required");
|
||||
|
||||
Label L_fallthrough;
|
||||
if (L_fast_path == NULL) {
|
||||
L_fast_path = &L_fallthrough;
|
||||
}
|
||||
|
||||
// Fast path check: class is fully initialized
|
||||
cmpb(Address(klass, InstanceKlass::init_state_offset()), InstanceKlass::fully_initialized);
|
||||
jcc(Assembler::equal, *L_fast_path);
|
||||
|
||||
// Fast path check: current thread is initializer thread
|
||||
cmpptr(thread, Address(klass, InstanceKlass::init_thread_offset()));
|
||||
if (L_slow_path != NULL) {
|
||||
jcc(Assembler::notEqual, *L_slow_path);
|
||||
} else {
|
||||
jcc(Assembler::equal, *L_fast_path);
|
||||
}
|
||||
|
||||
bind(L_fallthrough);
|
||||
}
|
||||
|
||||
void MacroAssembler::cmov32(Condition cc, Register dst, Address src) {
|
||||
if (VM_Version::supports_cmov()) {
|
||||
cmovl(cc, dst, src);
|
||||
@ -5195,20 +5218,22 @@ void MacroAssembler::resolve_weak_handle(Register rresult, Register rtmp) {
|
||||
void MacroAssembler::load_mirror(Register mirror, Register method, Register tmp) {
|
||||
// get mirror
|
||||
const int mirror_offset = in_bytes(Klass::java_mirror_offset());
|
||||
movptr(mirror, Address(method, Method::const_offset()));
|
||||
movptr(mirror, Address(mirror, ConstMethod::constants_offset()));
|
||||
movptr(mirror, Address(mirror, ConstantPool::pool_holder_offset_in_bytes()));
|
||||
load_method_holder(mirror, method);
|
||||
movptr(mirror, Address(mirror, mirror_offset));
|
||||
resolve_oop_handle(mirror, tmp);
|
||||
}
|
||||
|
||||
void MacroAssembler::load_method_holder_cld(Register rresult, Register rmethod) {
|
||||
movptr(rresult, Address(rmethod, Method::const_offset()));
|
||||
movptr(rresult, Address(rresult, ConstMethod::constants_offset()));
|
||||
movptr(rresult, Address(rresult, ConstantPool::pool_holder_offset_in_bytes()));
|
||||
load_method_holder(rresult, rmethod);
|
||||
movptr(rresult, Address(rresult, InstanceKlass::class_loader_data_offset()));
|
||||
}
|
||||
|
||||
void MacroAssembler::load_method_holder(Register holder, Register method) {
|
||||
movptr(holder, Address(method, Method::const_offset())); // ConstMethod*
|
||||
movptr(holder, Address(holder, ConstMethod::constants_offset())); // ConstantPool*
|
||||
movptr(holder, Address(holder, ConstantPool::pool_holder_offset_in_bytes())); // InstanceKlass*
|
||||
}
|
||||
|
||||
void MacroAssembler::load_klass(Register dst, Register src) {
|
||||
#ifdef _LP64
|
||||
if (UseCompressedClassPointers) {
|
||||
|
@ -317,6 +317,8 @@ class MacroAssembler: public Assembler {
|
||||
void load_mirror(Register mirror, Register method, Register tmp = rscratch2);
|
||||
void load_method_holder_cld(Register rresult, Register rmethod);
|
||||
|
||||
void load_method_holder(Register holder, Register method);
|
||||
|
||||
// oop manipulations
|
||||
void load_klass(Register dst, Register src);
|
||||
void store_klass(Register dst, Register src);
|
||||
@ -581,6 +583,11 @@ class MacroAssembler: public Assembler {
|
||||
Register temp_reg,
|
||||
Label& L_success);
|
||||
|
||||
void clinit_barrier(Register klass,
|
||||
Register thread,
|
||||
Label* L_fast_path = NULL,
|
||||
Label* L_slow_path = NULL);
|
||||
|
||||
// method handles (JSR 292)
|
||||
Address argument_address(RegisterOrConstant arg_slot, int extra_slot_offset = 0);
|
||||
|
||||
|
@ -145,7 +145,7 @@ static bool initialize_elapsed_counter() {
|
||||
static bool ergonomics() {
|
||||
const bool invtsc_support = Rdtsc::is_supported();
|
||||
if (FLAG_IS_DEFAULT(UseFastUnorderedTimeStamps) && invtsc_support) {
|
||||
FLAG_SET_ERGO(bool, UseFastUnorderedTimeStamps, true);
|
||||
FLAG_SET_ERGO(UseFastUnorderedTimeStamps, true);
|
||||
}
|
||||
|
||||
bool ft_enabled = UseFastUnorderedTimeStamps && invtsc_support;
|
||||
|
@ -974,6 +974,27 @@ AdapterHandlerEntry* SharedRuntime::generate_i2c2i_adapters(MacroAssembler *masm
|
||||
BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler();
|
||||
bs->c2i_entry_barrier(masm);
|
||||
|
||||
// Class initialization barrier for static methods
|
||||
if (VM_Version::supports_fast_class_init_checks()) {
|
||||
Label L_skip_barrier;
|
||||
Register method = rbx;
|
||||
|
||||
{ // Bypass the barrier for non-static methods
|
||||
Register flags = rscratch1;
|
||||
__ movl(flags, Address(method, Method::access_flags_offset()));
|
||||
__ testl(flags, JVM_ACC_STATIC);
|
||||
__ jcc(Assembler::zero, L_skip_barrier); // non-static
|
||||
}
|
||||
|
||||
Register klass = rscratch1;
|
||||
__ load_method_holder(klass, method);
|
||||
__ clinit_barrier(klass, r15_thread, &L_skip_barrier /*L_fast_path*/);
|
||||
|
||||
__ jump(RuntimeAddress(SharedRuntime::get_handle_wrong_method_stub())); // slow path
|
||||
|
||||
__ bind(L_skip_barrier);
|
||||
}
|
||||
|
||||
gen_c2i_adapter(masm, total_args_passed, comp_args_on_stack, sig_bt, regs, skip_fixup);
|
||||
|
||||
__ flush();
|
||||
@ -2140,6 +2161,17 @@ nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm,
|
||||
|
||||
int vep_offset = ((intptr_t)__ pc()) - start;
|
||||
|
||||
if (VM_Version::supports_fast_class_init_checks() && method->needs_clinit_barrier()) {
|
||||
Label L_skip_barrier;
|
||||
Register klass = r10;
|
||||
__ mov_metadata(klass, method->method_holder()); // InstanceKlass*
|
||||
__ clinit_barrier(klass, r15_thread, &L_skip_barrier /*L_fast_path*/);
|
||||
|
||||
__ jump(RuntimeAddress(SharedRuntime::get_handle_wrong_method_stub())); // slow path
|
||||
|
||||
__ bind(L_skip_barrier);
|
||||
}
|
||||
|
||||
#ifdef COMPILER1
|
||||
// For Object.hashCode, System.identityHashCode try to pull hashCode from object header if available.
|
||||
if ((InlineObjectHash && method->intrinsic_id() == vmIntrinsics::_hashCode) || (method->intrinsic_id() == vmIntrinsics::_identityHashCode)) {
|
||||
|
@ -33,7 +33,7 @@ static bool returns_to_call_stub(address return_pc) { return return_pc == _call_
|
||||
|
||||
enum platform_dependent_constants {
|
||||
code_size1 = 20000 LP64_ONLY(+10000), // simply increase if too small (assembler will crash if too small)
|
||||
code_size2 = 35300 LP64_ONLY(+11200) // simply increase if too small (assembler will crash if too small)
|
||||
code_size2 = 35300 LP64_ONLY(+11400) // simply increase if too small (assembler will crash if too small)
|
||||
};
|
||||
|
||||
class x86 {
|
||||
|
@ -2719,12 +2719,13 @@ void TemplateTable::volatile_barrier(Assembler::Membar_mask_bits order_constrain
|
||||
}
|
||||
|
||||
void TemplateTable::resolve_cache_and_index(int byte_no,
|
||||
Register Rcache,
|
||||
Register cache,
|
||||
Register index,
|
||||
size_t index_size) {
|
||||
const Register temp = rbx;
|
||||
assert_different_registers(Rcache, index, temp);
|
||||
assert_different_registers(cache, index, temp);
|
||||
|
||||
Label L_clinit_barrier_slow;
|
||||
Label resolved;
|
||||
|
||||
Bytecodes::Code code = bytecode();
|
||||
@ -2735,17 +2736,32 @@ void TemplateTable::resolve_cache_and_index(int byte_no,
|
||||
}
|
||||
|
||||
assert(byte_no == f1_byte || byte_no == f2_byte, "byte_no out of range");
|
||||
__ get_cache_and_index_and_bytecode_at_bcp(Rcache, index, temp, byte_no, 1, index_size);
|
||||
__ get_cache_and_index_and_bytecode_at_bcp(cache, index, temp, byte_no, 1, index_size);
|
||||
__ cmpl(temp, code); // have we resolved this bytecode?
|
||||
__ jcc(Assembler::equal, resolved);
|
||||
|
||||
// resolve first time through
|
||||
// Class initialization barrier slow path lands here as well.
|
||||
__ bind(L_clinit_barrier_slow);
|
||||
address entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_from_cache);
|
||||
__ movl(temp, code);
|
||||
__ call_VM(noreg, entry, temp);
|
||||
// Update registers with resolved info
|
||||
__ get_cache_and_index_at_bcp(Rcache, index, 1, index_size);
|
||||
__ get_cache_and_index_at_bcp(cache, index, 1, index_size);
|
||||
|
||||
__ bind(resolved);
|
||||
|
||||
// Class initialization barrier for static methods
|
||||
if (VM_Version::supports_fast_class_init_checks() && bytecode() == Bytecodes::_invokestatic) {
|
||||
const Register method = temp;
|
||||
const Register klass = temp;
|
||||
const Register thread = LP64_ONLY(r15_thread) NOT_LP64(noreg);
|
||||
assert(thread != noreg, "x86_32 not supported");
|
||||
|
||||
__ load_resolved_method_at_index(byte_no, method, cache, index);
|
||||
__ load_method_holder(klass, method);
|
||||
__ clinit_barrier(klass, thread, NULL /*L_fast_path*/, &L_clinit_barrier_slow);
|
||||
}
|
||||
}
|
||||
|
||||
// The cache and index registers must be set before call
|
||||
@ -2794,11 +2810,6 @@ void TemplateTable::load_invoke_cp_cache_entry(int byte_no,
|
||||
assert_different_registers(itable_index, cache, index);
|
||||
// determine constant pool cache field offsets
|
||||
assert(is_invokevirtual == (byte_no == f2_byte), "is_invokevirtual flag redundant");
|
||||
const int method_offset = in_bytes(
|
||||
ConstantPoolCache::base_offset() +
|
||||
((byte_no == f2_byte)
|
||||
? ConstantPoolCacheEntry::f2_offset()
|
||||
: ConstantPoolCacheEntry::f1_offset()));
|
||||
const int flags_offset = in_bytes(ConstantPoolCache::base_offset() +
|
||||
ConstantPoolCacheEntry::flags_offset());
|
||||
// access constant pool cache fields
|
||||
@ -2807,7 +2818,7 @@ void TemplateTable::load_invoke_cp_cache_entry(int byte_no,
|
||||
|
||||
size_t index_size = (is_invokedynamic ? sizeof(u4) : sizeof(u2));
|
||||
resolve_cache_and_index(byte_no, cache, index, index_size);
|
||||
__ movptr(method, Address(cache, index, Address::times_ptr, method_offset));
|
||||
__ load_resolved_method_at_index(byte_no, method, cache, index);
|
||||
|
||||
if (itable_index != noreg) {
|
||||
// pick up itable or appendix index from f2 also:
|
||||
@ -2986,7 +2997,8 @@ void TemplateTable::getfield_or_static(int byte_no, bool is_static, RewriteContr
|
||||
__ jcc(Assembler::notEqual, notDouble);
|
||||
#endif
|
||||
// dtos
|
||||
__ access_load_at(T_DOUBLE, IN_HEAP, noreg /* dtos */, field, noreg, noreg);
|
||||
// MO_RELAXED: for the case of volatile field, in fact it adds no extra work for the underlying implementation
|
||||
__ access_load_at(T_DOUBLE, IN_HEAP | MO_RELAXED, noreg /* dtos */, field, noreg, noreg);
|
||||
__ push(dtos);
|
||||
// Rewrite bytecode to be faster
|
||||
if (!is_static && rc == may_rewrite) {
|
||||
@ -3255,7 +3267,8 @@ void TemplateTable::putfield_or_static_helper(int byte_no, bool is_static, Rewri
|
||||
{
|
||||
__ pop(ltos);
|
||||
if (!is_static) pop_and_check_object(obj);
|
||||
__ access_store_at(T_LONG, IN_HEAP, field, noreg /* ltos*/, noreg, noreg);
|
||||
// MO_RELAXED: generate atomic store for the case of volatile field (important for x86_32)
|
||||
__ access_store_at(T_LONG, IN_HEAP | MO_RELAXED, field, noreg /* ltos*/, noreg, noreg);
|
||||
#ifdef _LP64
|
||||
if (!is_static && rc == may_rewrite) {
|
||||
patch_bytecode(Bytecodes::_fast_lputfield, bc, rbx, true, byte_no);
|
||||
@ -3290,7 +3303,8 @@ void TemplateTable::putfield_or_static_helper(int byte_no, bool is_static, Rewri
|
||||
{
|
||||
__ pop(dtos);
|
||||
if (!is_static) pop_and_check_object(obj);
|
||||
__ access_store_at(T_DOUBLE, IN_HEAP, field, noreg /* dtos */, noreg, noreg);
|
||||
// MO_RELAXED: for the case of volatile field, in fact it adds no extra work for the underlying implementation
|
||||
__ access_store_at(T_DOUBLE, IN_HEAP | MO_RELAXED, field, noreg /* dtos */, noreg, noreg);
|
||||
if (!is_static && rc == may_rewrite) {
|
||||
patch_bytecode(Bytecodes::_fast_dputfield, bc, rbx, true, byte_no);
|
||||
}
|
||||
@ -3859,9 +3873,7 @@ void TemplateTable::invokeinterface(int byte_no) {
|
||||
__ profile_virtual_call(rdx, rbcp, rlocals);
|
||||
|
||||
// Get declaring interface class from method, and itable index
|
||||
__ movptr(rax, Address(rbx, Method::const_offset()));
|
||||
__ movptr(rax, Address(rax, ConstMethod::constants_offset()));
|
||||
__ movptr(rax, Address(rax, ConstantPool::pool_holder_offset_in_bytes()));
|
||||
__ load_method_holder(rax, rbx);
|
||||
__ movl(rbx, Address(rbx, Method::itable_index_offset()));
|
||||
__ subl(rbx, Method::itable_index_max);
|
||||
__ negl(rbx);
|
||||
@ -4000,7 +4012,7 @@ void TemplateTable::_new() {
|
||||
__ jcc(Assembler::notEqual, slow_case_no_pop);
|
||||
|
||||
// get InstanceKlass
|
||||
__ load_resolved_klass_at_index(rcx, rdx, rcx);
|
||||
__ load_resolved_klass_at_index(rcx, rcx, rdx);
|
||||
__ push(rcx); // save the contexts of klass for initializing the header
|
||||
|
||||
// make sure klass is initialized & doesn't have finalizer
|
||||
@ -4194,7 +4206,7 @@ void TemplateTable::checkcast() {
|
||||
// Get superklass in rax and subklass in rbx
|
||||
__ bind(quicked);
|
||||
__ mov(rdx, rax); // Save object in rdx; rax needed for subtype check
|
||||
__ load_resolved_klass_at_index(rcx, rbx, rax);
|
||||
__ load_resolved_klass_at_index(rax, rcx, rbx);
|
||||
|
||||
__ bind(resolved);
|
||||
__ load_klass(rbx, rdx);
|
||||
@ -4260,7 +4272,7 @@ void TemplateTable::instanceof() {
|
||||
// Get superklass in rax and subklass in rdx
|
||||
__ bind(quicked);
|
||||
__ load_klass(rdx, rax);
|
||||
__ load_resolved_klass_at_index(rcx, rbx, rax);
|
||||
__ load_resolved_klass_at_index(rax, rcx, rbx);
|
||||
|
||||
__ bind(resolved);
|
||||
|
||||
|
@ -936,6 +936,11 @@ public:
|
||||
// the intrinsic for java.lang.Thread.onSpinWait()
|
||||
static bool supports_on_spin_wait() { return supports_sse2(); }
|
||||
|
||||
// x86_64 supports fast class initialization checks for static methods.
|
||||
static bool supports_fast_class_init_checks() {
|
||||
return LP64_ONLY(true) NOT_LP64(false); // not implemented on x86_32
|
||||
}
|
||||
|
||||
// support functions for virtualization detection
|
||||
private:
|
||||
static void check_virt_cpuid(uint32_t idx, uint32_t *regs);
|
||||
|
@ -3153,30 +3153,6 @@ instruct storeV64_qword(memory mem, vecZ src) %{
|
||||
|
||||
// ====================LEGACY REPLICATE=======================================
|
||||
|
||||
instruct Repl4B_mem(vecS dst, memory mem) %{
|
||||
predicate(n->as_Vector()->length() == 4 && UseAVX > 0 && !VM_Version::supports_avx512vlbw());
|
||||
match(Set dst (ReplicateB (LoadB mem)));
|
||||
format %{ "punpcklbw $dst,$mem\n\t"
|
||||
"pshuflw $dst,$dst,0x00\t! replicate4B" %}
|
||||
ins_encode %{
|
||||
__ punpcklbw($dst$$XMMRegister, $mem$$Address);
|
||||
__ pshuflw($dst$$XMMRegister, $dst$$XMMRegister, 0x00);
|
||||
%}
|
||||
ins_pipe( pipe_slow );
|
||||
%}
|
||||
|
||||
instruct Repl8B_mem(vecD dst, memory mem) %{
|
||||
predicate(n->as_Vector()->length() == 8 && UseAVX > 0 && !VM_Version::supports_avx512vlbw());
|
||||
match(Set dst (ReplicateB (LoadB mem)));
|
||||
format %{ "punpcklbw $dst,$mem\n\t"
|
||||
"pshuflw $dst,$dst,0x00\t! replicate8B" %}
|
||||
ins_encode %{
|
||||
__ punpcklbw($dst$$XMMRegister, $mem$$Address);
|
||||
__ pshuflw($dst$$XMMRegister, $dst$$XMMRegister, 0x00);
|
||||
%}
|
||||
ins_pipe( pipe_slow );
|
||||
%}
|
||||
|
||||
instruct Repl16B(vecX dst, rRegI src) %{
|
||||
predicate(n->as_Vector()->length() == 16 && !VM_Version::supports_avx512vlbw());
|
||||
match(Set dst (ReplicateB src));
|
||||
@ -3193,20 +3169,6 @@ instruct Repl16B(vecX dst, rRegI src) %{
|
||||
ins_pipe( pipe_slow );
|
||||
%}
|
||||
|
||||
instruct Repl16B_mem(vecX dst, memory mem) %{
|
||||
predicate(n->as_Vector()->length() == 16 && UseAVX > 0 && !VM_Version::supports_avx512vlbw());
|
||||
match(Set dst (ReplicateB (LoadB mem)));
|
||||
format %{ "punpcklbw $dst,$mem\n\t"
|
||||
"pshuflw $dst,$dst,0x00\n\t"
|
||||
"punpcklqdq $dst,$dst\t! replicate16B" %}
|
||||
ins_encode %{
|
||||
__ punpcklbw($dst$$XMMRegister, $mem$$Address);
|
||||
__ pshuflw($dst$$XMMRegister, $dst$$XMMRegister, 0x00);
|
||||
__ punpcklqdq($dst$$XMMRegister, $dst$$XMMRegister);
|
||||
%}
|
||||
ins_pipe( pipe_slow );
|
||||
%}
|
||||
|
||||
instruct Repl32B(vecY dst, rRegI src) %{
|
||||
predicate(n->as_Vector()->length() == 32 && !VM_Version::supports_avx512vlbw());
|
||||
match(Set dst (ReplicateB src));
|
||||
@ -3225,22 +3187,6 @@ instruct Repl32B(vecY dst, rRegI src) %{
|
||||
ins_pipe( pipe_slow );
|
||||
%}
|
||||
|
||||
instruct Repl32B_mem(vecY dst, memory mem) %{
|
||||
predicate(n->as_Vector()->length() == 32 && !VM_Version::supports_avx512vlbw());
|
||||
match(Set dst (ReplicateB (LoadB mem)));
|
||||
format %{ "punpcklbw $dst,$mem\n\t"
|
||||
"pshuflw $dst,$dst,0x00\n\t"
|
||||
"punpcklqdq $dst,$dst\n\t"
|
||||
"vinserti128_high $dst,$dst\t! replicate32B" %}
|
||||
ins_encode %{
|
||||
__ punpcklbw($dst$$XMMRegister, $mem$$Address);
|
||||
__ pshuflw($dst$$XMMRegister, $dst$$XMMRegister, 0x00);
|
||||
__ punpcklqdq($dst$$XMMRegister, $dst$$XMMRegister);
|
||||
__ vinserti128_high($dst$$XMMRegister, $dst$$XMMRegister);
|
||||
%}
|
||||
ins_pipe( pipe_slow );
|
||||
%}
|
||||
|
||||
instruct Repl64B(legVecZ dst, rRegI src) %{
|
||||
predicate(n->as_Vector()->length() == 64 && !VM_Version::supports_avx512vlbw());
|
||||
match(Set dst (ReplicateB src));
|
||||
@ -3261,24 +3207,6 @@ instruct Repl64B(legVecZ dst, rRegI src) %{
|
||||
ins_pipe( pipe_slow );
|
||||
%}
|
||||
|
||||
instruct Repl64B_mem(legVecZ dst, memory mem) %{
|
||||
predicate(n->as_Vector()->length() == 64 && !VM_Version::supports_avx512vlbw());
|
||||
match(Set dst (ReplicateB (LoadB mem)));
|
||||
format %{ "punpcklbw $dst,$mem\n\t"
|
||||
"pshuflw $dst,$dst,0x00\n\t"
|
||||
"punpcklqdq $dst,$dst\n\t"
|
||||
"vinserti128_high $dst,$dst\t"
|
||||
"vinserti64x4 $dst,$dst,$dst,0x1\t! replicate64B" %}
|
||||
ins_encode %{
|
||||
__ punpcklbw($dst$$XMMRegister, $mem$$Address);
|
||||
__ pshuflw($dst$$XMMRegister, $dst$$XMMRegister, 0x00);
|
||||
__ punpcklqdq($dst$$XMMRegister, $dst$$XMMRegister);
|
||||
__ vinserti128_high($dst$$XMMRegister, $dst$$XMMRegister);
|
||||
__ vinserti64x4($dst$$XMMRegister, $dst$$XMMRegister, $dst$$XMMRegister, 0x1);
|
||||
%}
|
||||
ins_pipe( pipe_slow );
|
||||
%}
|
||||
|
||||
instruct Repl16B_imm(vecX dst, immI con) %{
|
||||
predicate(n->as_Vector()->length() == 16 && !VM_Version::supports_avx512vlbw());
|
||||
match(Set dst (ReplicateB con));
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user