Delete old libgrapheme and use submodule
This commit is contained in:
2
Makefile
2
Makefile
@@ -3,7 +3,7 @@ TARGET := cubit
|
||||
SRCDIR := src
|
||||
BUILDDIR := builds
|
||||
UNIW := libs/unicode_width/unicode_width.c
|
||||
GRAPHEME := libs/libgrapheme-2.0.2/src/*.c
|
||||
GRAPHEME := libs/libgrapheme/src/*.c
|
||||
CJSON := libs/cjson/cJSON.c
|
||||
TREE_SITTER_RUBY := libs/tree-sitter-ruby/libtree-sitter-ruby.a
|
||||
TREE_SITTER_C := libs/tree-sitter-c/libtree-sitter-c.a
|
||||
|
@@ -1,15 +0,0 @@
|
||||
ISC-License
|
||||
|
||||
Copyright 2019-2022 Laslo Hunhold <dev@frign.de>
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
@@ -1,327 +0,0 @@
|
||||
# See LICENSE file for copyright and license details
|
||||
# libgrapheme - unicode string library
|
||||
.POSIX:
|
||||
.SUFFIXES:
|
||||
|
||||
VERSION_MAJOR = 2
|
||||
VERSION_MINOR = 0
|
||||
VERSION_PATCH = 2
|
||||
UNICODE_VERSION = 15.0.0
|
||||
MAN_DATE = 2022-10-06
|
||||
|
||||
include config.mk
|
||||
|
||||
VERSION = $(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH)
|
||||
|
||||
BENCHMARK =\
|
||||
benchmark/case\
|
||||
benchmark/character\
|
||||
benchmark/sentence\
|
||||
benchmark/line\
|
||||
benchmark/utf8-decode\
|
||||
benchmark/word\
|
||||
|
||||
DATA =\
|
||||
data/DerivedCoreProperties.txt\
|
||||
data/EastAsianWidth.txt\
|
||||
data/emoji-data.txt\
|
||||
data/GraphemeBreakProperty.txt\
|
||||
data/GraphemeBreakTest.txt\
|
||||
data/LICENSE\
|
||||
data/LineBreak.txt\
|
||||
data/LineBreakTest.txt\
|
||||
data/SentenceBreakProperty.txt\
|
||||
data/SentenceBreakTest.txt\
|
||||
data/SpecialCasing.txt\
|
||||
data/UnicodeData.txt\
|
||||
data/WordBreakProperty.txt\
|
||||
data/WordBreakTest.txt\
|
||||
|
||||
GEN =\
|
||||
gen/case\
|
||||
gen/character\
|
||||
gen/character-test\
|
||||
gen/line\
|
||||
gen/line-test\
|
||||
gen/sentence\
|
||||
gen/sentence-test\
|
||||
gen/word\
|
||||
gen/word-test\
|
||||
|
||||
SRC =\
|
||||
src/case\
|
||||
src/character\
|
||||
src/line\
|
||||
src/sentence\
|
||||
src/utf8\
|
||||
src/util\
|
||||
src/word\
|
||||
|
||||
TEST =\
|
||||
test/case\
|
||||
test/character\
|
||||
test/line\
|
||||
test/sentence\
|
||||
test/utf8-decode\
|
||||
test/utf8-encode\
|
||||
test/word\
|
||||
|
||||
MAN_TEMPLATE =\
|
||||
man/template/is_case.sh\
|
||||
man/template/next_break.sh\
|
||||
man/template/to_case.sh\
|
||||
|
||||
MAN3 =\
|
||||
man/grapheme_decode_utf8\
|
||||
man/grapheme_encode_utf8\
|
||||
man/grapheme_is_character_break\
|
||||
man/grapheme_is_uppercase\
|
||||
man/grapheme_is_uppercase_utf8\
|
||||
man/grapheme_is_lowercase\
|
||||
man/grapheme_is_lowercase_utf8\
|
||||
man/grapheme_is_titlecase\
|
||||
man/grapheme_is_titlecase_utf8\
|
||||
man/grapheme_next_character_break\
|
||||
man/grapheme_next_line_break\
|
||||
man/grapheme_next_sentence_break\
|
||||
man/grapheme_next_word_break\
|
||||
man/grapheme_next_character_break_utf8\
|
||||
man/grapheme_next_line_break_utf8\
|
||||
man/grapheme_next_sentence_break_utf8\
|
||||
man/grapheme_next_word_break_utf8\
|
||||
man/grapheme_to_uppercase\
|
||||
man/grapheme_to_uppercase_utf8\
|
||||
man/grapheme_to_lowercase\
|
||||
man/grapheme_to_lowercase_utf8\
|
||||
man/grapheme_to_titlecase\
|
||||
man/grapheme_to_titlecase_utf8\
|
||||
|
||||
MAN7 =\
|
||||
man/libgrapheme\
|
||||
|
||||
all: data/LICENSE $(MAN3:=.3) $(MAN7:=.7) libgrapheme.a $(SONAME)
|
||||
|
||||
data/DerivedCoreProperties.txt:
|
||||
wget -O $@ https://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/DerivedCoreProperties.txt
|
||||
|
||||
data/EastAsianWidth.txt:
|
||||
wget -O $@ https://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/EastAsianWidth.txt
|
||||
|
||||
data/emoji-data.txt:
|
||||
wget -O $@ https://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/emoji/emoji-data.txt
|
||||
|
||||
data/GraphemeBreakProperty.txt:
|
||||
wget -O $@ https://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/auxiliary/GraphemeBreakProperty.txt
|
||||
|
||||
data/GraphemeBreakTest.txt:
|
||||
wget -O $@ https://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/auxiliary/GraphemeBreakTest.txt
|
||||
|
||||
data/LICENSE:
|
||||
wget -O $@ https://www.unicode.org/license.txt
|
||||
|
||||
data/LineBreak.txt:
|
||||
wget -O $@ https://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/LineBreak.txt
|
||||
|
||||
data/LineBreakTest.txt:
|
||||
wget -O $@ https://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/auxiliary/LineBreakTest.txt
|
||||
|
||||
data/SentenceBreakProperty.txt:
|
||||
wget -O $@ https://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/auxiliary/SentenceBreakProperty.txt
|
||||
|
||||
data/SentenceBreakTest.txt:
|
||||
wget -O $@ https://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/auxiliary/SentenceBreakTest.txt
|
||||
|
||||
data/SpecialCasing.txt:
|
||||
wget -O $@ https://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/SpecialCasing.txt
|
||||
|
||||
data/UnicodeData.txt:
|
||||
wget -O $@ https://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/UnicodeData.txt
|
||||
|
||||
data/WordBreakProperty.txt:
|
||||
wget -O $@ https://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/auxiliary/WordBreakProperty.txt
|
||||
|
||||
data/WordBreakTest.txt:
|
||||
wget -O $@ https://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/auxiliary/WordBreakTest.txt
|
||||
|
||||
benchmark/case.o: benchmark/case.c Makefile config.mk gen/word-test.h grapheme.h benchmark/util.h
|
||||
benchmark/character.o: benchmark/character.c Makefile config.mk gen/character-test.h grapheme.h benchmark/util.h
|
||||
benchmark/line.o: benchmark/line.c Makefile config.mk gen/line-test.h grapheme.h benchmark/util.h
|
||||
benchmark/utf8-decode.o: benchmark/utf8-decode.c Makefile config.mk gen/character-test.h grapheme.h benchmark/util.h
|
||||
benchmark/sentence.o: benchmark/sentence.c Makefile config.mk gen/sentence-test.h grapheme.h benchmark/util.h
|
||||
benchmark/util.o: benchmark/util.c Makefile config.mk benchmark/util.h
|
||||
benchmark/word.o: benchmark/word.c Makefile config.mk gen/word-test.h grapheme.h benchmark/util.h
|
||||
gen/case.o: gen/case.c Makefile config.mk gen/util.h
|
||||
gen/character.o: gen/character.c Makefile config.mk gen/util.h
|
||||
gen/character-test.o: gen/character-test.c Makefile config.mk gen/util.h
|
||||
gen/line.o: gen/line.c Makefile config.mk gen/util.h
|
||||
gen/line-test.o: gen/line-test.c Makefile config.mk gen/util.h
|
||||
gen/sentence.o: gen/sentence.c Makefile config.mk gen/util.h
|
||||
gen/sentence-test.o: gen/sentence-test.c Makefile config.mk gen/util.h
|
||||
gen/word.o: gen/word.c Makefile config.mk gen/util.h
|
||||
gen/word-test.o: gen/word-test.c Makefile config.mk gen/util.h
|
||||
gen/util.o: gen/util.c Makefile config.mk gen/util.h
|
||||
src/case.o: src/case.c Makefile config.mk gen/case.h grapheme.h src/util.h
|
||||
src/character.o: src/character.c Makefile config.mk gen/character.h grapheme.h src/util.h
|
||||
src/line.o: src/line.c Makefile config.mk gen/line.h grapheme.h src/util.h
|
||||
src/sentence.o: src/sentence.c Makefile config.mk gen/sentence.h grapheme.h src/util.h
|
||||
src/utf8.o: src/utf8.c Makefile config.mk grapheme.h
|
||||
src/util.o: src/util.c Makefile config.mk gen/types.h grapheme.h src/util.h
|
||||
src/word.o: src/word.c Makefile config.mk gen/word.h grapheme.h src/util.h
|
||||
test/case.o: test/case.c Makefile config.mk grapheme.h test/util.h
|
||||
test/character.o: test/character.c Makefile config.mk gen/character-test.h grapheme.h test/util.h
|
||||
test/line.o: test/line.c Makefile config.mk gen/line-test.h grapheme.h test/util.h
|
||||
test/sentence.o: test/sentence.c Makefile config.mk gen/sentence-test.h grapheme.h test/util.h
|
||||
test/utf8-encode.o: test/utf8-encode.c Makefile config.mk grapheme.h test/util.h
|
||||
test/utf8-decode.o: test/utf8-decode.c Makefile config.mk grapheme.h test/util.h
|
||||
test/util.o: test/util.c Makefile config.mk test/util.h
|
||||
test/word.o: test/word.c Makefile config.mk gen/word-test.h grapheme.h test/util.h
|
||||
|
||||
benchmark/case: benchmark/case.o benchmark/util.o libgrapheme.a
|
||||
benchmark/character: benchmark/character.o benchmark/util.o libgrapheme.a
|
||||
benchmark/line: benchmark/line.o benchmark/util.o libgrapheme.a
|
||||
benchmark/sentence: benchmark/sentence.o benchmark/util.o libgrapheme.a
|
||||
benchmark/utf8-decode: benchmark/utf8-decode.o benchmark/util.o libgrapheme.a
|
||||
benchmark/word: benchmark/word.o benchmark/util.o libgrapheme.a
|
||||
gen/case: gen/case.o gen/util.o
|
||||
gen/character: gen/character.o gen/util.o
|
||||
gen/character-test: gen/character-test.o gen/util.o
|
||||
gen/line: gen/line.o gen/util.o
|
||||
gen/line-test: gen/line-test.o gen/util.o
|
||||
gen/sentence: gen/sentence.o gen/util.o
|
||||
gen/sentence-test: gen/sentence-test.o gen/util.o
|
||||
gen/word: gen/word.o gen/util.o
|
||||
gen/word-test: gen/word-test.o gen/util.o
|
||||
test/case: test/case.o test/util.o libgrapheme.a
|
||||
test/character: test/character.o test/util.o libgrapheme.a
|
||||
test/line: test/line.o test/util.o libgrapheme.a
|
||||
test/sentence: test/sentence.o test/util.o libgrapheme.a
|
||||
test/utf8-encode: test/utf8-encode.o test/util.o libgrapheme.a
|
||||
test/utf8-decode: test/utf8-decode.o test/util.o libgrapheme.a
|
||||
test/word: test/word.o test/util.o libgrapheme.a
|
||||
|
||||
gen/case.h: data/DerivedCoreProperties.txt data/UnicodeData.txt data/SpecialCasing.txt gen/case
|
||||
gen/character.h: data/emoji-data.txt data/GraphemeBreakProperty.txt gen/character
|
||||
gen/character-test.h: data/GraphemeBreakTest.txt gen/character-test
|
||||
gen/line.h: data/emoji-data.txt data/EastAsianWidth.txt data/LineBreak.txt gen/line
|
||||
gen/line-test.h: data/LineBreakTest.txt gen/line-test
|
||||
gen/sentence.h: data/SentenceBreakProperty.txt gen/sentence
|
||||
gen/sentence-test.h: data/SentenceBreakTest.txt gen/sentence-test
|
||||
gen/word.h: data/WordBreakProperty.txt gen/word
|
||||
gen/word-test.h: data/WordBreakTest.txt gen/word-test
|
||||
|
||||
man/grapheme_is_character_break.3: man/grapheme_is_character_break.sh Makefile config.mk
|
||||
man/grapheme_is_uppercase.3: man/grapheme_is_uppercase.sh man/template/is_case.sh Makefile config.mk
|
||||
man/grapheme_is_uppercase_utf8.3: man/grapheme_is_uppercase_utf8.sh man/template/is_case.sh Makefile config.mk
|
||||
man/grapheme_is_lowercase.3: man/grapheme_is_lowercase.sh man/template/is_case.sh Makefile config.mk
|
||||
man/grapheme_is_lowercase_utf8.3: man/grapheme_is_lowercase_utf8.sh man/template/is_case.sh Makefile config.mk
|
||||
man/grapheme_is_titlecase.3: man/grapheme_is_titlecase.sh man/template/is_case.sh Makefile config.mk
|
||||
man/grapheme_is_titlecase_utf8.3: man/grapheme_is_titlecase_utf8.sh man/template/is_case.sh Makefile config.mk
|
||||
man/grapheme_next_character_break.3: man/grapheme_next_character_break.sh man/template/next_break.sh Makefile config.mk
|
||||
man/grapheme_next_line_break.3: man/grapheme_next_line_break.sh man/template/next_break.sh Makefile config.mk
|
||||
man/grapheme_next_sentence_break.3: man/grapheme_next_sentence_break.sh man/template/next_break.sh Makefile config.mk
|
||||
man/grapheme_next_word_break.3: man/grapheme_next_word_break.sh man/template/next_break.sh Makefile config.mk
|
||||
man/grapheme_next_character_break_utf8.3: man/grapheme_next_character_break_utf8.sh man/template/next_break.sh Makefile config.mk
|
||||
man/grapheme_next_line_break_utf8.3: man/grapheme_next_line_break_utf8.sh man/template/next_break.sh Makefile config.mk
|
||||
man/grapheme_next_sentence_break_utf8.3: man/grapheme_next_sentence_break_utf8.sh man/template/next_break.sh Makefile config.mk
|
||||
man/grapheme_next_word_break_utf8.3: man/grapheme_next_word_break_utf8.sh man/template/next_break.sh Makefile config.mk
|
||||
man/grapheme_to_uppercase.3: man/grapheme_to_uppercase.sh man/template/to_case.sh Makefile config.mk
|
||||
man/grapheme_to_lowercase.3: man/grapheme_to_lowercase.sh man/template/to_case.sh Makefile config.mk
|
||||
man/grapheme_to_titlecase.3: man/grapheme_to_titlecase.sh man/template/to_case.sh Makefile config.mk
|
||||
man/grapheme_to_uppercase_utf8.3: man/grapheme_to_uppercase_utf8.sh man/template/to_case.sh Makefile config.mk
|
||||
man/grapheme_to_lowercase_utf8.3: man/grapheme_to_lowercase_utf8.sh man/template/to_case.sh Makefile config.mk
|
||||
man/grapheme_to_titlecase_utf8.3: man/grapheme_to_titlecase_utf8.sh man/template/to_case.sh Makefile config.mk
|
||||
man/grapheme_decode_utf8.3: man/grapheme_decode_utf8.sh Makefile config.mk
|
||||
man/grapheme_encode_utf8.3: man/grapheme_encode_utf8.sh Makefile config.mk
|
||||
|
||||
man/libgrapheme.7: man/libgrapheme.sh Makefile config.mk
|
||||
|
||||
$(GEN:=.o) gen/util.o:
|
||||
$(BUILD_CC) -c -o $@ $(BUILD_CPPFLAGS) $(BUILD_CFLAGS) $(@:.o=.c)
|
||||
|
||||
$(BENCHMARK:=.o) benchmark/util.o $(TEST:=.o) test/util.o:
|
||||
$(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(@:.o=.c)
|
||||
|
||||
$(SRC:=.o):
|
||||
$(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(SHFLAGS) $(@:.o=.c)
|
||||
|
||||
$(BENCHMARK):
|
||||
$(CC) -o $@ $(LDFLAGS) $@.o benchmark/util.o libgrapheme.a -lutf8proc
|
||||
|
||||
$(GEN):
|
||||
$(BUILD_CC) -o $@ $(BUILD_LDFLAGS) $@.o gen/util.o
|
||||
|
||||
$(TEST):
|
||||
$(CC) -o $@ $(LDFLAGS) $@.o test/util.o libgrapheme.a
|
||||
|
||||
$(GEN:=.h):
|
||||
$(@:.h=) > $@
|
||||
|
||||
libgrapheme.a: $(SRC:=.o)
|
||||
$(AR) -rc $@ $?
|
||||
$(RANLIB) $@
|
||||
|
||||
$(SONAME): $(SRC:=.o)
|
||||
$(CC) -o $@ $(SOFLAGS) $(LDFLAGS) $(SRC:=.o)
|
||||
|
||||
$(MAN3:=.3):
|
||||
SH="$(SH)" MAN_DATE="$(MAN_DATE)" UNICODE_VERSION="$(UNICODE_VERSION)" $(SH) $(@:.3=.sh) > $@
|
||||
|
||||
$(MAN7:=.7):
|
||||
SH="$(SH)" MAN_DATE="$(MAN_DATE)" UNICODE_VERSION="$(UNICODE_VERSION)" $(SH) $(@:.7=.sh) > $@
|
||||
|
||||
benchmark: $(BENCHMARK)
|
||||
for m in $(BENCHMARK); do ./$$m; done
|
||||
|
||||
test: $(TEST)
|
||||
for m in $(TEST); do ./$$m; done
|
||||
|
||||
install: all
|
||||
mkdir -p "$(DESTDIR)$(LIBPREFIX)"
|
||||
mkdir -p "$(DESTDIR)$(INCPREFIX)"
|
||||
mkdir -p "$(DESTDIR)$(MANPREFIX)/man3"
|
||||
mkdir -p "$(DESTDIR)$(MANPREFIX)/man7"
|
||||
cp -f $(MAN3:=.3) "$(DESTDIR)$(MANPREFIX)/man3"
|
||||
cp -f $(MAN7:=.7) "$(DESTDIR)$(MANPREFIX)/man7"
|
||||
cp -f libgrapheme.a "$(DESTDIR)$(LIBPREFIX)"
|
||||
cp -f $(SONAME) "$(DESTDIR)$(LIBPREFIX)/$(SONAME)"
|
||||
if [ "$(SOSYMLINK)" = "true" ]; then i=0; while [ "$$i" -le $(VERSION_MINOR) ]; do ln -sf "$(SONAME)" "$(DESTDIR)$(LIBPREFIX)/libgrapheme.so.$(VERSION_MAJOR).$$i"; i=$$((i+1)); done; fi
|
||||
if [ "$(SOSYMLINK)" = "true" ]; then ln -sf "$(SONAME)" "$(DESTDIR)$(LIBPREFIX)/libgrapheme.so.$(VERSION_MAJOR)"; fi
|
||||
if [ "$(SOSYMLINK)" = "true" ]; then ln -sf "$(SONAME)" "$(DESTDIR)$(LIBPREFIX)/libgrapheme.so"; fi
|
||||
cp -f grapheme.h "$(DESTDIR)$(INCPREFIX)"
|
||||
if ! [ -z "$(LDCONFIG)" ]; then $(SHELL) -c "$(LDCONFIG)"; fi
|
||||
if ! [ -z "$(PCPREFIX)" ]; then mkdir -p "$(DESTDIR)$(PCPREFIX)"; printf "Name: libgrapheme\nDescription: Unicode string library\nURL: https://libs.suckless.org/libgrapheme/\nVersion: $(VERSION)\nCflags: -I$(INCPREFIX)\nLibs: -L$(LIBPREFIX) -lgrapheme\n" > "$(DESTDIR)$(PCPREFIX)/libgrapheme.pc"; fi
|
||||
|
||||
uninstall:
|
||||
for m in $(MAN3:=.3); do rm -f "$(DESTDIR)$(MANPREFIX)/man3/`basename $$m`"; done
|
||||
for m in $(MAN7:=.7); do rm -f "$(DESTDIR)$(MANPREFIX)/man7/`basename $$m`"; done
|
||||
rm -f "$(DESTDIR)$(LIBPREFIX)/libgrapheme.a"
|
||||
rm -f "$(DESTDIR)$(LIBPREFIX)/$(SONAME)"
|
||||
if [ "$(SOSYMLINK)" = "true" ]; then i=0; while [ "$$i" -le $(VERSION_MINOR) ]; do rm -f "$(DESTDIR)$(LIBPREFIX)/libgrapheme.so.$(VERSION_MAJOR).$$i"; i=$$((i+1)); done; fi
|
||||
if [ "$(SOSYMLINK)" = "true" ]; then rm -f "$(DESTDIR)$(LIBPREFIX)/libgrapheme.so.$(VERSION_MAJOR)"; fi
|
||||
if [ "$(SOSYMLINK)" = "true" ]; then rm -f "$(DESTDIR)$(LIBPREFIX)/libgrapheme.so"; fi
|
||||
rm -f "$(DESTDIR)$(INCPREFIX)/grapheme.h"
|
||||
if ! [ -z "$(LDCONFIG)" ]; then $(SHELL) -c "$(LDCONFIG)"; fi
|
||||
if ! [ -z "$(PCPREFIX)" ]; then rm -f "$(DESTDIR)$(PCPREFIX)/libgrapheme.pc"; fi
|
||||
|
||||
clean:
|
||||
rm -f $(BENCHMARK:=.o) benchmark/util.o $(BENCHMARK) $(GEN:=.h) $(GEN:=.o) gen/util.o $(GEN) $(SRC:=.o) src/util.o $(TEST:=.o) test/util.o $(TEST) libgrapheme.a $(SONAME) $(MAN3:=.3) $(MAN7:=.7)
|
||||
|
||||
clean-data:
|
||||
rm -f $(DATA)
|
||||
|
||||
dist:
|
||||
rm -rf "libgrapheme-$(VERSION)"
|
||||
mkdir "libgrapheme-$(VERSION)"
|
||||
for m in benchmark data gen man man/template src test; do mkdir "libgrapheme-$(VERSION)/$$m"; done
|
||||
cp config.mk configure grapheme.h LICENSE Makefile README "libgrapheme-$(VERSION)"
|
||||
cp $(BENCHMARK:=.c) benchmark/util.c benchmark/util.h "libgrapheme-$(VERSION)/benchmark"
|
||||
cp $(DATA) "libgrapheme-$(VERSION)/data"
|
||||
cp $(GEN:=.c) gen/util.c gen/types.h gen/util.h "libgrapheme-$(VERSION)/gen"
|
||||
cp $(MAN3:=.sh) $(MAN7:=.sh) "libgrapheme-$(VERSION)/man"
|
||||
cp $(MAN_TEMPLATE) "libgrapheme-$(VERSION)/man/template"
|
||||
cp $(SRC:=.c) src/util.h "libgrapheme-$(VERSION)/src"
|
||||
cp $(TEST:=.c) test/util.c test/util.h "libgrapheme-$(VERSION)/test"
|
||||
tar -cf - "libgrapheme-$(VERSION)" | gzip -c > "libgrapheme-$(VERSION).tar.gz"
|
||||
rm -rf "libgrapheme-$(VERSION)"
|
||||
|
||||
.PHONY: all benchmark test install uninstall clean clean-data dist
|
@@ -1,64 +0,0 @@
|
||||
libgrapheme
|
||||
===========
|
||||
|
||||
libgrapheme is an extremely simple freestanding C99 library providing
|
||||
utilities for properly handling strings according to the latest Unicode
|
||||
standard 15.0.0. It offers fully Unicode compliant
|
||||
|
||||
- grapheme cluster (i.e. user-perceived character) segmentation
|
||||
- word segmentation
|
||||
- sentence segmentation
|
||||
- detection of permissible line break opportunities
|
||||
- case detection (lower-, upper- and title-case)
|
||||
- case conversion (to lower-, upper- and title-case)
|
||||
|
||||
on UTF-8 strings and codepoint arrays, which both can also be
|
||||
null-terminated.
|
||||
|
||||
The necessary lookup-tables are automatically generated from the Unicode
|
||||
standard data (contained in the tarball) and heavily compressed. Over
|
||||
10,000 automatically generated conformance tests and over 150 unit tests
|
||||
ensure conformance and correctness.
|
||||
|
||||
There is no complicated build-system involved and it's all done using one
|
||||
POSIX-compliant Makefile. All you need is a C99 compiler, given the
|
||||
lookup-table-generators and compressors are also written in C99. The
|
||||
resulting library is freestanding and thus not even dependent on a
|
||||
standard library to be present at runtime, making it a suitable choice
|
||||
for bare metal applications.
|
||||
|
||||
It is also way smaller and much faster than the other established
|
||||
Unicode string libraries (ICU, GNU's libunistring, libutf8proc).
|
||||
|
||||
Requirements
|
||||
------------
|
||||
A C99-compiler and POSIX make.
|
||||
|
||||
Installation
|
||||
------------
|
||||
Run ./configure, which automatically edits config.mk to match your local
|
||||
setup. Edit config.mk by hand if necessary or desired for further
|
||||
customization.
|
||||
|
||||
Afterwards enter the following command to build and install libgrapheme
|
||||
(if necessary as root):
|
||||
|
||||
make install
|
||||
|
||||
Conformance
|
||||
-----------
|
||||
The libgrapheme library is compliant with the Unicode 15.0.0
|
||||
specification (September 2022). The tests can be run with
|
||||
|
||||
make test
|
||||
|
||||
to check standard conformance and correctness.
|
||||
|
||||
Usage
|
||||
-----
|
||||
Include the header grapheme.h in your code and link against libgrapheme
|
||||
with "-lgrapheme" either statically ("-static") or dynamically.
|
||||
|
||||
Author
|
||||
------
|
||||
Laslo Hunhold <dev@frign.de>
|
@@ -1,55 +0,0 @@
|
||||
/* See LICENSE file for copyright and license details. */
|
||||
#include <errno.h>
|
||||
#include <math.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "../grapheme.h"
|
||||
#include "../gen/word-test.h"
|
||||
#include "util.h"
|
||||
|
||||
#define NUM_ITERATIONS 10000
|
||||
|
||||
struct break_benchmark_payload {
|
||||
uint_least32_t *src;
|
||||
size_t srclen;
|
||||
uint_least32_t *dest;
|
||||
size_t destlen;
|
||||
};
|
||||
|
||||
void
|
||||
libgrapheme(const void *payload)
|
||||
{
|
||||
const struct break_benchmark_payload *p = payload;
|
||||
|
||||
grapheme_to_uppercase(p->src, p->srclen, p->dest, p->destlen);
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
struct break_benchmark_payload p;
|
||||
double baseline = (double)NAN;
|
||||
|
||||
(void)argc;
|
||||
|
||||
if ((p.src = generate_cp_test_buffer(word_break_test,
|
||||
LEN(word_break_test),
|
||||
&(p.srclen))) == NULL) {
|
||||
return 1;
|
||||
}
|
||||
if ((p.dest = calloc((p.destlen = 2 * p.srclen), sizeof(*(p.dest)))) == NULL) {
|
||||
fprintf(stderr, "calloc: Out of memory\n");
|
||||
}
|
||||
|
||||
printf("%s\n", argv[0]);
|
||||
run_benchmark(libgrapheme, &p, "libgrapheme ", NULL, "codepoint",
|
||||
&baseline, NUM_ITERATIONS, p.srclen - 1);
|
||||
|
||||
free(p.src);
|
||||
free(p.dest);
|
||||
|
||||
return 0;
|
||||
}
|
@@ -1,86 +0,0 @@
|
||||
/* See LICENSE file for copyright and license details. */
|
||||
#include <errno.h>
|
||||
#include <math.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "../grapheme.h"
|
||||
#include "../gen/character-test.h"
|
||||
#include "util.h"
|
||||
|
||||
#include <utf8proc.h>
|
||||
|
||||
#define NUM_ITERATIONS 100000
|
||||
|
||||
struct break_benchmark_payload {
|
||||
uint_least32_t *buf;
|
||||
utf8proc_int32_t *buf_utf8proc;
|
||||
size_t buflen;
|
||||
};
|
||||
|
||||
void
|
||||
libgrapheme(const void *payload)
|
||||
{
|
||||
uint_least16_t state = 0;
|
||||
const struct break_benchmark_payload *p = payload;
|
||||
size_t i;
|
||||
|
||||
for (i = 0; i + 1 < p->buflen; i++) {
|
||||
(void)grapheme_is_character_break(p->buf[i], p->buf[i+1],
|
||||
&state);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
libutf8proc(const void *payload)
|
||||
{
|
||||
utf8proc_int32_t state = 0;
|
||||
const struct break_benchmark_payload *p = payload;
|
||||
size_t i;
|
||||
|
||||
for (i = 0; i + 1 < p->buflen; i++) {
|
||||
(void)utf8proc_grapheme_break_stateful(p->buf_utf8proc[i],
|
||||
p->buf_utf8proc[i+1],
|
||||
&state);
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
struct break_benchmark_payload p;
|
||||
double baseline = (double)NAN;
|
||||
size_t i;
|
||||
|
||||
(void)argc;
|
||||
|
||||
if ((p.buf = generate_cp_test_buffer(character_break_test,
|
||||
LEN(character_break_test),
|
||||
&(p.buflen))) == NULL) {
|
||||
return 1;
|
||||
}
|
||||
if ((p.buf_utf8proc = malloc(p.buflen * sizeof(*(p.buf_utf8proc)))) == NULL) {
|
||||
fprintf(stderr, "malloc: %s\n", strerror(errno));
|
||||
exit(1);
|
||||
}
|
||||
for (i = 0; i < p.buflen; i++) {
|
||||
/*
|
||||
* there is no overflow, as we know that the maximum
|
||||
* codepoint is 0x10FFFF, which is way below 2^31
|
||||
*/
|
||||
p.buf_utf8proc[i] = (utf8proc_int32_t)p.buf[i];
|
||||
}
|
||||
|
||||
printf("%s\n", argv[0]);
|
||||
run_benchmark(libgrapheme, &p, "libgrapheme ", NULL, "comparison",
|
||||
&baseline, NUM_ITERATIONS, p.buflen - 1);
|
||||
run_benchmark(libutf8proc, &p, "libutf8proc ", NULL, "comparison",
|
||||
&baseline, NUM_ITERATIONS, p.buflen - 1);
|
||||
|
||||
free(p.buf);
|
||||
free(p.buf_utf8proc);
|
||||
|
||||
return 0;
|
||||
}
|
@@ -1,52 +0,0 @@
|
||||
/* See LICENSE file for copyright and license details. */
|
||||
#include <errno.h>
|
||||
#include <math.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "../grapheme.h"
|
||||
#include "../gen/line-test.h"
|
||||
#include "util.h"
|
||||
|
||||
#define NUM_ITERATIONS 10000
|
||||
|
||||
struct break_benchmark_payload {
|
||||
uint_least32_t *buf;
|
||||
size_t buflen;
|
||||
};
|
||||
|
||||
void
|
||||
libgrapheme(const void *payload)
|
||||
{
|
||||
const struct break_benchmark_payload *p = payload;
|
||||
size_t off;
|
||||
|
||||
for (off = 0; off < p->buflen; ) {
|
||||
off += grapheme_next_line_break(p->buf + off, p->buflen - off);
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
struct break_benchmark_payload p;
|
||||
double baseline = (double)NAN;
|
||||
|
||||
(void)argc;
|
||||
|
||||
if ((p.buf = generate_cp_test_buffer(line_break_test,
|
||||
LEN(line_break_test),
|
||||
&(p.buflen))) == NULL) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
printf("%s\n", argv[0]);
|
||||
run_benchmark(libgrapheme, &p, "libgrapheme ", NULL, "codepoint",
|
||||
&baseline, NUM_ITERATIONS, p.buflen - 1);
|
||||
|
||||
free(p.buf);
|
||||
|
||||
return 0;
|
||||
}
|
@@ -1,52 +0,0 @@
|
||||
/* See LICENSE file for copyright and license details. */
|
||||
#include <errno.h>
|
||||
#include <math.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "../grapheme.h"
|
||||
#include "../gen/sentence-test.h"
|
||||
#include "util.h"
|
||||
|
||||
#define NUM_ITERATIONS 100000
|
||||
|
||||
struct break_benchmark_payload {
|
||||
uint_least32_t *buf;
|
||||
size_t buflen;
|
||||
};
|
||||
|
||||
void
|
||||
libgrapheme(const void *payload)
|
||||
{
|
||||
const struct break_benchmark_payload *p = payload;
|
||||
size_t off;
|
||||
|
||||
for (off = 0; off < p->buflen; ) {
|
||||
off += grapheme_next_sentence_break(p->buf + off, p->buflen - off);
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
struct break_benchmark_payload p;
|
||||
double baseline = (double)NAN;
|
||||
|
||||
(void)argc;
|
||||
|
||||
if ((p.buf = generate_cp_test_buffer(sentence_break_test,
|
||||
LEN(sentence_break_test),
|
||||
&(p.buflen))) == NULL) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
printf("%s\n", argv[0]);
|
||||
run_benchmark(libgrapheme, &p, "libgrapheme ", NULL, "codepoint",
|
||||
&baseline, NUM_ITERATIONS, p.buflen - 1);
|
||||
|
||||
free(p.buf);
|
||||
|
||||
return 0;
|
||||
}
|
@@ -1,95 +0,0 @@
|
||||
/* See LICENSE file for copyright and license details. */
|
||||
#include <errno.h>
|
||||
#include <math.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "../grapheme.h"
|
||||
#include "../gen/character-test.h"
|
||||
#include "util.h"
|
||||
|
||||
#include <utf8proc.h>
|
||||
|
||||
#define NUM_ITERATIONS 100000
|
||||
|
||||
struct utf8_benchmark_payload {
|
||||
char *buf;
|
||||
utf8proc_uint8_t *buf_utf8proc;
|
||||
size_t buflen;
|
||||
};
|
||||
|
||||
void
|
||||
libgrapheme(const void *payload)
|
||||
{
|
||||
const struct utf8_benchmark_payload *p = payload;
|
||||
uint_least32_t cp;
|
||||
size_t ret, off;
|
||||
|
||||
for (off = 0; off < p->buflen; off += ret) {
|
||||
if ((ret = grapheme_decode_utf8(p->buf + off,
|
||||
p->buflen - off, &cp)) >
|
||||
(p->buflen - off)) {
|
||||
break;
|
||||
}
|
||||
(void)cp;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
libutf8proc(const void *payload)
|
||||
{
|
||||
const struct utf8_benchmark_payload *p = payload;
|
||||
utf8proc_int32_t cp;
|
||||
utf8proc_ssize_t ret;
|
||||
size_t off;
|
||||
|
||||
for (off = 0; off < p->buflen; off += (size_t)ret) {
|
||||
if ((ret = utf8proc_iterate(p->buf_utf8proc + off,
|
||||
(utf8proc_ssize_t)(p->buflen - off),
|
||||
&cp)) < 0) {
|
||||
break;
|
||||
}
|
||||
(void)cp;
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
struct utf8_benchmark_payload p;
|
||||
size_t i;
|
||||
double baseline = (double)NAN;
|
||||
|
||||
(void)argc;
|
||||
|
||||
p.buf = generate_utf8_test_buffer(character_break_test,
|
||||
LEN(character_break_test),
|
||||
&(p.buflen));
|
||||
|
||||
/* convert cp-buffer to stupid custom libutf8proc-uint8-type */
|
||||
if ((p.buf_utf8proc = malloc(p.buflen)) == NULL) {
|
||||
fprintf(stderr, "malloc: %s\n", strerror(errno));
|
||||
exit(1);
|
||||
}
|
||||
for (i = 0; i < p.buflen; i++) {
|
||||
/*
|
||||
* even if char is larger than 8 bit, it will only have
|
||||
* any of the first 8 bits set (by construction).
|
||||
*/
|
||||
p.buf_utf8proc[i] = (utf8proc_uint8_t)p.buf[i];
|
||||
}
|
||||
|
||||
printf("%s\n", argv[0]);
|
||||
run_benchmark(libgrapheme, &p, "libgrapheme ", NULL,
|
||||
"byte", &baseline, NUM_ITERATIONS, p.buflen);
|
||||
run_benchmark(libutf8proc, &p, "libutf8proc ",
|
||||
"but unsafe (does not detect overlong encodings)",
|
||||
"byte", &baseline, NUM_ITERATIONS, p.buflen);
|
||||
|
||||
free(p.buf);
|
||||
free(p.buf_utf8proc);
|
||||
|
||||
return 0;
|
||||
}
|
@@ -1,115 +0,0 @@
|
||||
/* See LICENSE file for copyright and license details. */
|
||||
#include <math.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
|
||||
#include "../gen/types.h"
|
||||
#include "../grapheme.h"
|
||||
#include "util.h"
|
||||
|
||||
uint_least32_t *
|
||||
generate_cp_test_buffer(const struct break_test *test, size_t testlen,
|
||||
size_t *buflen)
|
||||
{
|
||||
size_t i, j, off;
|
||||
uint_least32_t *buf;
|
||||
|
||||
/* allocate and generate buffer */
|
||||
for (i = 0, *buflen = 0; i < testlen; i++) {
|
||||
*buflen += test[i].cplen;
|
||||
}
|
||||
if (!(buf = calloc(*buflen, sizeof(*buf)))) {
|
||||
fprintf(stderr, "generate_test_buffer: calloc: Out of memory.\n");
|
||||
exit(1);
|
||||
}
|
||||
for (i = 0, off = 0; i < testlen; i++) {
|
||||
for (j = 0; j < test[i].cplen; j++) {
|
||||
buf[off + j] = test[i].cp[j];
|
||||
}
|
||||
off += test[i].cplen;
|
||||
}
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
char *
|
||||
generate_utf8_test_buffer(const struct break_test *test, size_t testlen,
|
||||
size_t *buflen)
|
||||
{
|
||||
size_t i, j, off, ret;
|
||||
char *buf;
|
||||
|
||||
/* allocate and generate buffer */
|
||||
for (i = 0, *buflen = 0; i < testlen; i++) {
|
||||
for (j = 0; j < test[i].cplen; j++) {
|
||||
*buflen += grapheme_encode_utf8(test[i].cp[j], NULL, 0);
|
||||
}
|
||||
}
|
||||
(*buflen)++; /* terminating NUL-byte */
|
||||
if (!(buf = malloc(*buflen))) {
|
||||
fprintf(stderr, "generate_test_buffer: malloc: Out of memory.\n");
|
||||
exit(1);
|
||||
}
|
||||
for (i = 0, off = 0; i < testlen; i++) {
|
||||
for (j = 0; j < test[i].cplen; j++, off += ret) {
|
||||
if ((ret = grapheme_encode_utf8(test[i].cp[j],
|
||||
buf + off,
|
||||
*buflen - off)) >
|
||||
(*buflen - off)) {
|
||||
/* shouldn't happen */
|
||||
fprintf(stderr, "generate_utf8_test_buffer: "
|
||||
"Buffer too small.\n");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
buf[*buflen - 1] = '\0';
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
static double
|
||||
time_diff(struct timespec *a, struct timespec *b)
|
||||
{
|
||||
return (double)(b->tv_sec - a->tv_sec) +
|
||||
(double)(b->tv_nsec - a->tv_nsec) * 1E-9;
|
||||
}
|
||||
|
||||
void
|
||||
run_benchmark(void (*func)(const void *), const void *payload,
|
||||
const char *name, const char *comment, const char *unit,
|
||||
double *baseline, size_t num_iterations,
|
||||
size_t units_per_iteration)
|
||||
{
|
||||
struct timespec start, end;
|
||||
size_t i;
|
||||
double diff;
|
||||
|
||||
printf("\t%s ", name);
|
||||
fflush(stdout);
|
||||
|
||||
clock_gettime(CLOCK_MONOTONIC, &start);
|
||||
for (i = 0; i < num_iterations; i++) {
|
||||
func(payload);
|
||||
|
||||
if (i % (num_iterations / 10) == 0) {
|
||||
printf(".");
|
||||
fflush(stdout);
|
||||
}
|
||||
}
|
||||
clock_gettime(CLOCK_MONOTONIC, &end);
|
||||
diff = time_diff(&start, &end) / (double)num_iterations /
|
||||
(double)units_per_iteration;
|
||||
|
||||
if (isnan(*baseline)) {
|
||||
*baseline = diff;
|
||||
printf(" avg. %.3es/%s (baseline)\n", diff, unit);
|
||||
} else {
|
||||
printf(" avg. %.3es/%s (%.2f%% %s%s%s)\n", diff, unit,
|
||||
fabs(1.0 - diff / *baseline) * 100,
|
||||
(diff < *baseline) ? "faster" : "slower",
|
||||
comment ? ", " : "",
|
||||
comment ? comment : "");
|
||||
}
|
||||
}
|
@@ -1,23 +0,0 @@
|
||||
/* See LICENSE file for copyright and license details. */
|
||||
#ifndef UTIL_H
|
||||
#define UTIL_H
|
||||
|
||||
#include "../gen/types.h"
|
||||
|
||||
#define LEN(x) (sizeof(x) / sizeof(*(x)))
|
||||
|
||||
#ifdef __has_attribute
|
||||
#if __has_attribute(optnone)
|
||||
void libgrapheme(const void *) __attribute__((optnone));
|
||||
void libutf8proc(const void *) __attribute__((optnone));
|
||||
#endif
|
||||
#endif
|
||||
|
||||
uint_least32_t *generate_cp_test_buffer(const struct break_test *, size_t,
|
||||
size_t *);
|
||||
char *generate_utf8_test_buffer(const struct break_test *, size_t, size_t *);
|
||||
|
||||
void run_benchmark(void (*func)(const void *), const void *, const char *,
|
||||
const char *, const char *, double *, size_t, size_t);
|
||||
|
||||
#endif /* UTIL_H */
|
@@ -1,52 +0,0 @@
|
||||
/* See LICENSE file for copyright and license details. */
|
||||
#include <errno.h>
|
||||
#include <math.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "../grapheme.h"
|
||||
#include "../gen/word-test.h"
|
||||
#include "util.h"
|
||||
|
||||
#define NUM_ITERATIONS 10000
|
||||
|
||||
struct break_benchmark_payload {
|
||||
uint_least32_t *buf;
|
||||
size_t buflen;
|
||||
};
|
||||
|
||||
void
|
||||
libgrapheme(const void *payload)
|
||||
{
|
||||
const struct break_benchmark_payload *p = payload;
|
||||
size_t off;
|
||||
|
||||
for (off = 0; off < p->buflen; ) {
|
||||
off += grapheme_next_word_break(p->buf + off, p->buflen - off);
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
struct break_benchmark_payload p;
|
||||
double baseline = (double)NAN;
|
||||
|
||||
(void)argc;
|
||||
|
||||
if ((p.buf = generate_cp_test_buffer(word_break_test,
|
||||
LEN(word_break_test),
|
||||
&(p.buflen))) == NULL) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
printf("%s\n", argv[0]);
|
||||
run_benchmark(libgrapheme, &p, "libgrapheme ", NULL, "codepoint",
|
||||
&baseline, NUM_ITERATIONS, p.buflen - 1);
|
||||
|
||||
free(p.buf);
|
||||
|
||||
return 0;
|
||||
}
|
@@ -1,32 +0,0 @@
|
||||
# Customize below to fit your system (run ./configure for automatic presets)
|
||||
|
||||
# paths (unset $PCPREFIX to not install a pkg-config-file)
|
||||
DESTDIR =
|
||||
PREFIX = /usr/local
|
||||
INCPREFIX = $(PREFIX)/include
|
||||
LIBPREFIX = $(PREFIX)/lib
|
||||
MANPREFIX = $(PREFIX)/share/man
|
||||
PCPREFIX = $(LIBPREFIX)/pkgconfig
|
||||
|
||||
# flags
|
||||
CPPFLAGS = -D_DEFAULT_SOURCE
|
||||
CFLAGS = -std=c99 -Os -Wall -Wextra -Wpedantic
|
||||
LDFLAGS = -s
|
||||
|
||||
BUILD_CPPFLAGS = $(CPPFLAGS)
|
||||
BUILD_CFLAGS = $(CFLAGS)
|
||||
BUILD_LDFLAGS = $(LDFLAGS)
|
||||
|
||||
SHFLAGS = -fPIC -ffreestanding
|
||||
|
||||
SOFLAGS = -shared -nostdlib -Wl,--soname=libgrapheme.so.$(VERSION_MAJOR).$(VERSION_MINOR)
|
||||
SONAME = libgrapheme.so.$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH)
|
||||
SOSYMLINK = true
|
||||
|
||||
# tools (unset $LDCONFIG to not call ldconfig(1) after install/uninstall)
|
||||
CC = cc
|
||||
BUILD_CC = $(CC)
|
||||
AR = ar
|
||||
RANLIB = ranlib
|
||||
LDCONFIG = ldconfig
|
||||
SH = sh
|
39
libs/libgrapheme-2.0.2/configure
vendored
39
libs/libgrapheme-2.0.2/configure
vendored
@@ -1,39 +0,0 @@
|
||||
#!/bin/sh
|
||||
# See LICENSE file for copyright and license details.
|
||||
|
||||
replace_line()
|
||||
{
|
||||
VAR=$1
|
||||
ALIGNMENT=$2
|
||||
VALUE=$3
|
||||
awk "/^${VAR}[ ]*=/ { print \"${VAR}${ALIGNMENT} = ${VALUE}\"; next }; { print; }" config.mk > config.mk.tmp
|
||||
mv config.mk.tmp config.mk
|
||||
}
|
||||
|
||||
case $(uname) in
|
||||
DragonFly|FreeBSD|Linux|MidnightBSD|NetBSD)
|
||||
# the default
|
||||
replace_line 'SOFLAGS' ' ' '-shared -nostdlib -Wl,--soname=libgrapheme.so.$(VERSION_MAJOR).$(VERSION_MINOR)'
|
||||
replace_line 'SONAME' ' ' 'libgrapheme.so.$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH)'
|
||||
replace_line 'SOSYMLINK' '' 'true'
|
||||
replace_line 'LDCONFIG' '' 'ldconfig'
|
||||
;;
|
||||
OpenBSD)
|
||||
replace_line 'SOFLAGS' ' ' '-shared -nostdlib'
|
||||
replace_line 'SONAME' ' ' 'libgrapheme.so.$(VERSION_MAJOR).$(VERSION_MINOR)'
|
||||
replace_line 'SOSYMLINK' '' 'false'
|
||||
replace_line 'LDCONFIG' '' ''
|
||||
;;
|
||||
Darwin)
|
||||
replace_line 'SOFLAGS' ' ' '-dynamiclib -install_name libgrapheme.$(VERSION_MAJOR).dylib -current_version $(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH) -compatibility_version $(VERSION_MAJOR).$(VERSION_MINOR).0'
|
||||
replace_line 'SONAME' ' ' 'libgrapheme.$(VERSION_MAJOR).dylib'
|
||||
replace_line 'SOSYMLINK' '' 'false'
|
||||
replace_line 'LDCONFIG' '' ''
|
||||
;;
|
||||
*)
|
||||
echo "Your system does not have a preset. Edit config.mk and send a patch please! :)"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,630 +0,0 @@
|
||||
# GraphemeBreakTest-15.0.0.txt
|
||||
# Date: 2022-02-26, 00:38:37 GMT
|
||||
# © 2022 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 https://www.unicode.org/terms_of_use.html
|
||||
#
|
||||
# Unicode Character Database
|
||||
# For documentation, see https://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
|
@@ -1,46 +0,0 @@
|
||||
UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
|
||||
|
||||
See Terms of Use <https://www.unicode.org/copyright.html>
|
||||
for definitions of Unicode Inc.’s Data Files and Software.
|
||||
|
||||
NOTICE TO USER: Carefully read the following legal agreement.
|
||||
BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S
|
||||
DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"),
|
||||
YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
|
||||
TERMS AND CONDITIONS OF THIS AGREEMENT.
|
||||
IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE
|
||||
THE DATA FILES OR SOFTWARE.
|
||||
|
||||
COPYRIGHT AND PERMISSION NOTICE
|
||||
|
||||
Copyright © 1991-2022 Unicode, Inc. All rights reserved.
|
||||
Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Unicode data files and any associated documentation
|
||||
(the "Data Files") or Unicode software and any associated documentation
|
||||
(the "Software") to deal in the Data Files or Software
|
||||
without restriction, including without limitation the rights to use,
|
||||
copy, modify, merge, publish, distribute, and/or sell copies of
|
||||
the Data Files or Software, and to permit persons to whom the Data Files
|
||||
or Software are furnished to do so, provided that either
|
||||
(a) this copyright and permission notice appear with all copies
|
||||
of the Data Files or Software, or
|
||||
(b) this copyright and permission notice appear in associated
|
||||
Documentation.
|
||||
|
||||
THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
|
||||
ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
|
||||
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT OF THIRD PARTY RIGHTS.
|
||||
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
|
||||
NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
|
||||
DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
|
||||
DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
PERFORMANCE OF THE DATA FILES OR SOFTWARE.
|
||||
|
||||
Except as contained in this notice, the name of a copyright holder
|
||||
shall not be used in advertising or otherwise to promote the sale,
|
||||
use or other dealings in these Data Files or Software without prior
|
||||
written authorization of the copyright holder.
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,530 +0,0 @@
|
||||
# SentenceBreakTest-15.0.0.txt
|
||||
# Date: 2022-02-26, 00:39:00 GMT
|
||||
# © 2022 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 https://www.unicode.org/terms_of_use.html
|
||||
#
|
||||
# Unicode Character Database
|
||||
# For documentation, see https://www.unicode.org/reports/tr44/
|
||||
#
|
||||
# Default Sentence_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 Sentence_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 SentenceBreakTest.html
|
||||
#
|
||||
# These samples may be extended or changed in the future.
|
||||
#
|
||||
÷ 0001 × 0001 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
|
||||
÷ 0001 × 0308 × 0001 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
|
||||
÷ 0001 × 000D ÷ # ÷ [0.2] <START OF HEADING> (Other) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 0001 × 0308 × 000D ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 0001 × 000A ÷ # ÷ [0.2] <START OF HEADING> (Other) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 0001 × 0308 × 000A ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 0001 × 0085 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
|
||||
÷ 0001 × 0308 × 0085 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
|
||||
÷ 0001 × 0009 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
|
||||
÷ 0001 × 0308 × 0009 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
|
||||
÷ 0001 × 0061 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
|
||||
÷ 0001 × 0308 × 0061 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
|
||||
÷ 0001 × 0041 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
|
||||
÷ 0001 × 0308 × 0041 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
|
||||
÷ 0001 × 01BB ÷ # ÷ [0.2] <START OF HEADING> (Other) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
|
||||
÷ 0001 × 0308 × 01BB ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
|
||||
÷ 0001 × 0030 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
|
||||
÷ 0001 × 0308 × 0030 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
|
||||
÷ 0001 × 002E ÷ # ÷ [0.2] <START OF HEADING> (Other) × [998.0] FULL STOP (ATerm) ÷ [0.3]
|
||||
÷ 0001 × 0308 × 002E ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
|
||||
÷ 0001 × 0021 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
|
||||
÷ 0001 × 0308 × 0021 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
|
||||
÷ 0001 × 0022 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
|
||||
÷ 0001 × 0308 × 0022 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
|
||||
÷ 0001 × 002C ÷ # ÷ [0.2] <START OF HEADING> (Other) × [998.0] COMMA (SContinue) ÷ [0.3]
|
||||
÷ 0001 × 0308 × 002C ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
|
||||
÷ 0001 × 00AD ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
|
||||
÷ 0001 × 0308 × 00AD ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
|
||||
÷ 0001 × 0300 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
|
||||
÷ 0001 × 0308 × 0300 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
|
||||
÷ 000D ÷ 0001 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] <START OF HEADING> (Other) ÷ [0.3]
|
||||
÷ 000D ÷ 0308 × 0001 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (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_FE) × [998.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_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 000D ÷ 0085 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
|
||||
÷ 000D ÷ 0308 × 0085 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
|
||||
÷ 000D ÷ 0009 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
|
||||
÷ 000D ÷ 0308 × 0009 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
|
||||
÷ 000D ÷ 0061 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
|
||||
÷ 000D ÷ 0308 × 0061 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
|
||||
÷ 000D ÷ 0041 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
|
||||
÷ 000D ÷ 0308 × 0041 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
|
||||
÷ 000D ÷ 01BB ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
|
||||
÷ 000D ÷ 0308 × 01BB ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
|
||||
÷ 000D ÷ 0030 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] DIGIT ZERO (Numeric) ÷ [0.3]
|
||||
÷ 000D ÷ 0308 × 0030 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
|
||||
÷ 000D ÷ 002E ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] FULL STOP (ATerm) ÷ [0.3]
|
||||
÷ 000D ÷ 0308 × 002E ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
|
||||
÷ 000D ÷ 0021 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] EXCLAMATION MARK (STerm) ÷ [0.3]
|
||||
÷ 000D ÷ 0308 × 0021 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
|
||||
÷ 000D ÷ 0022 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] QUOTATION MARK (Close) ÷ [0.3]
|
||||
÷ 000D ÷ 0308 × 0022 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
|
||||
÷ 000D ÷ 002C ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMMA (SContinue) ÷ [0.3]
|
||||
÷ 000D ÷ 0308 × 002C ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
|
||||
÷ 000D ÷ 00AD ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
|
||||
÷ 000D ÷ 0308 × 00AD ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
|
||||
÷ 000D ÷ 0300 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
|
||||
÷ 000D ÷ 0308 × 0300 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
|
||||
÷ 000A ÷ 0001 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] <START OF HEADING> (Other) ÷ [0.3]
|
||||
÷ 000A ÷ 0308 × 0001 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (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_FE) × [998.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_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 000A ÷ 0085 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
|
||||
÷ 000A ÷ 0308 × 0085 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
|
||||
÷ 000A ÷ 0009 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
|
||||
÷ 000A ÷ 0308 × 0009 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
|
||||
÷ 000A ÷ 0061 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
|
||||
÷ 000A ÷ 0308 × 0061 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
|
||||
÷ 000A ÷ 0041 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
|
||||
÷ 000A ÷ 0308 × 0041 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
|
||||
÷ 000A ÷ 01BB ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
|
||||
÷ 000A ÷ 0308 × 01BB ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
|
||||
÷ 000A ÷ 0030 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] DIGIT ZERO (Numeric) ÷ [0.3]
|
||||
÷ 000A ÷ 0308 × 0030 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
|
||||
÷ 000A ÷ 002E ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] FULL STOP (ATerm) ÷ [0.3]
|
||||
÷ 000A ÷ 0308 × 002E ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
|
||||
÷ 000A ÷ 0021 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] EXCLAMATION MARK (STerm) ÷ [0.3]
|
||||
÷ 000A ÷ 0308 × 0021 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
|
||||
÷ 000A ÷ 0022 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] QUOTATION MARK (Close) ÷ [0.3]
|
||||
÷ 000A ÷ 0308 × 0022 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
|
||||
÷ 000A ÷ 002C ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMMA (SContinue) ÷ [0.3]
|
||||
÷ 000A ÷ 0308 × 002C ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
|
||||
÷ 000A ÷ 00AD ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
|
||||
÷ 000A ÷ 0308 × 00AD ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
|
||||
÷ 000A ÷ 0300 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
|
||||
÷ 000A ÷ 0308 × 0300 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
|
||||
÷ 0085 ÷ 0001 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] <START OF HEADING> (Other) ÷ [0.3]
|
||||
÷ 0085 ÷ 0308 × 0001 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
|
||||
÷ 0085 ÷ 000D ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 0085 ÷ 0308 × 000D ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 0085 ÷ 000A ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 0085 ÷ 0308 × 000A ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 0085 ÷ 0085 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
|
||||
÷ 0085 ÷ 0308 × 0085 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
|
||||
÷ 0085 ÷ 0009 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
|
||||
÷ 0085 ÷ 0308 × 0009 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
|
||||
÷ 0085 ÷ 0061 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
|
||||
÷ 0085 ÷ 0308 × 0061 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
|
||||
÷ 0085 ÷ 0041 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
|
||||
÷ 0085 ÷ 0308 × 0041 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
|
||||
÷ 0085 ÷ 01BB ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
|
||||
÷ 0085 ÷ 0308 × 01BB ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
|
||||
÷ 0085 ÷ 0030 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] DIGIT ZERO (Numeric) ÷ [0.3]
|
||||
÷ 0085 ÷ 0308 × 0030 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
|
||||
÷ 0085 ÷ 002E ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] FULL STOP (ATerm) ÷ [0.3]
|
||||
÷ 0085 ÷ 0308 × 002E ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
|
||||
÷ 0085 ÷ 0021 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] EXCLAMATION MARK (STerm) ÷ [0.3]
|
||||
÷ 0085 ÷ 0308 × 0021 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
|
||||
÷ 0085 ÷ 0022 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] QUOTATION MARK (Close) ÷ [0.3]
|
||||
÷ 0085 ÷ 0308 × 0022 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
|
||||
÷ 0085 ÷ 002C ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMMA (SContinue) ÷ [0.3]
|
||||
÷ 0085 ÷ 0308 × 002C ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
|
||||
÷ 0085 ÷ 00AD ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
|
||||
÷ 0085 ÷ 0308 × 00AD ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
|
||||
÷ 0085 ÷ 0300 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
|
||||
÷ 0085 ÷ 0308 × 0300 ÷ # ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
|
||||
÷ 0009 × 0001 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
|
||||
÷ 0009 × 0308 × 0001 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
|
||||
÷ 0009 × 000D ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 0009 × 0308 × 000D ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 0009 × 000A ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 0009 × 0308 × 000A ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 0009 × 0085 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
|
||||
÷ 0009 × 0308 × 0085 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
|
||||
÷ 0009 × 0009 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
|
||||
÷ 0009 × 0308 × 0009 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
|
||||
÷ 0009 × 0061 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
|
||||
÷ 0009 × 0308 × 0061 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
|
||||
÷ 0009 × 0041 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
|
||||
÷ 0009 × 0308 × 0041 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
|
||||
÷ 0009 × 01BB ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
|
||||
÷ 0009 × 0308 × 01BB ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
|
||||
÷ 0009 × 0030 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
|
||||
÷ 0009 × 0308 × 0030 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
|
||||
÷ 0009 × 002E ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] FULL STOP (ATerm) ÷ [0.3]
|
||||
÷ 0009 × 0308 × 002E ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
|
||||
÷ 0009 × 0021 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
|
||||
÷ 0009 × 0308 × 0021 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
|
||||
÷ 0009 × 0022 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
|
||||
÷ 0009 × 0308 × 0022 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
|
||||
÷ 0009 × 002C ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] COMMA (SContinue) ÷ [0.3]
|
||||
÷ 0009 × 0308 × 002C ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
|
||||
÷ 0009 × 00AD ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
|
||||
÷ 0009 × 0308 × 00AD ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
|
||||
÷ 0009 × 0300 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
|
||||
÷ 0009 × 0308 × 0300 ÷ # ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
|
||||
÷ 0061 × 0001 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
|
||||
÷ 0061 × 0308 × 0001 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
|
||||
÷ 0061 × 000D ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 0061 × 0308 × 000D ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 0061 × 000A ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 0061 × 0308 × 000A ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 0061 × 0085 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
|
||||
÷ 0061 × 0308 × 0085 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
|
||||
÷ 0061 × 0009 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
|
||||
÷ 0061 × 0308 × 0009 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
|
||||
÷ 0061 × 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
|
||||
÷ 0061 × 0308 × 0061 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
|
||||
÷ 0061 × 0041 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
|
||||
÷ 0061 × 0308 × 0041 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
|
||||
÷ 0061 × 01BB ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
|
||||
÷ 0061 × 0308 × 01BB ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
|
||||
÷ 0061 × 0030 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
|
||||
÷ 0061 × 0308 × 0030 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
|
||||
÷ 0061 × 002E ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] FULL STOP (ATerm) ÷ [0.3]
|
||||
÷ 0061 × 0308 × 002E ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
|
||||
÷ 0061 × 0021 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
|
||||
÷ 0061 × 0308 × 0021 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
|
||||
÷ 0061 × 0022 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
|
||||
÷ 0061 × 0308 × 0022 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
|
||||
÷ 0061 × 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] COMMA (SContinue) ÷ [0.3]
|
||||
÷ 0061 × 0308 × 002C ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
|
||||
÷ 0061 × 00AD ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
|
||||
÷ 0061 × 0308 × 00AD ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
|
||||
÷ 0061 × 0300 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
|
||||
÷ 0061 × 0308 × 0300 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
|
||||
÷ 0041 × 0001 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
|
||||
÷ 0041 × 0308 × 0001 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
|
||||
÷ 0041 × 000D ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 0041 × 0308 × 000D ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 0041 × 000A ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 0041 × 0308 × 000A ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 0041 × 0085 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
|
||||
÷ 0041 × 0308 × 0085 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
|
||||
÷ 0041 × 0009 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
|
||||
÷ 0041 × 0308 × 0009 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
|
||||
÷ 0041 × 0061 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
|
||||
÷ 0041 × 0308 × 0061 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
|
||||
÷ 0041 × 0041 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
|
||||
÷ 0041 × 0308 × 0041 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
|
||||
÷ 0041 × 01BB ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
|
||||
÷ 0041 × 0308 × 01BB ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
|
||||
÷ 0041 × 0030 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
|
||||
÷ 0041 × 0308 × 0030 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
|
||||
÷ 0041 × 002E ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] FULL STOP (ATerm) ÷ [0.3]
|
||||
÷ 0041 × 0308 × 002E ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
|
||||
÷ 0041 × 0021 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
|
||||
÷ 0041 × 0308 × 0021 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
|
||||
÷ 0041 × 0022 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
|
||||
÷ 0041 × 0308 × 0022 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
|
||||
÷ 0041 × 002C ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] COMMA (SContinue) ÷ [0.3]
|
||||
÷ 0041 × 0308 × 002C ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
|
||||
÷ 0041 × 00AD ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
|
||||
÷ 0041 × 0308 × 00AD ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
|
||||
÷ 0041 × 0300 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
|
||||
÷ 0041 × 0308 × 0300 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
|
||||
÷ 01BB × 0001 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
|
||||
÷ 01BB × 0308 × 0001 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
|
||||
÷ 01BB × 000D ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 01BB × 0308 × 000D ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 01BB × 000A ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 01BB × 0308 × 000A ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 01BB × 0085 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
|
||||
÷ 01BB × 0308 × 0085 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
|
||||
÷ 01BB × 0009 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
|
||||
÷ 01BB × 0308 × 0009 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
|
||||
÷ 01BB × 0061 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
|
||||
÷ 01BB × 0308 × 0061 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
|
||||
÷ 01BB × 0041 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
|
||||
÷ 01BB × 0308 × 0041 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
|
||||
÷ 01BB × 01BB ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
|
||||
÷ 01BB × 0308 × 01BB ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
|
||||
÷ 01BB × 0030 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
|
||||
÷ 01BB × 0308 × 0030 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
|
||||
÷ 01BB × 002E ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] FULL STOP (ATerm) ÷ [0.3]
|
||||
÷ 01BB × 0308 × 002E ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
|
||||
÷ 01BB × 0021 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
|
||||
÷ 01BB × 0308 × 0021 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
|
||||
÷ 01BB × 0022 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
|
||||
÷ 01BB × 0308 × 0022 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
|
||||
÷ 01BB × 002C ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] COMMA (SContinue) ÷ [0.3]
|
||||
÷ 01BB × 0308 × 002C ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
|
||||
÷ 01BB × 00AD ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
|
||||
÷ 01BB × 0308 × 00AD ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
|
||||
÷ 01BB × 0300 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
|
||||
÷ 01BB × 0308 × 0300 ÷ # ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
|
||||
÷ 0030 × 0001 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
|
||||
÷ 0030 × 0308 × 0001 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
|
||||
÷ 0030 × 000D ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 0030 × 0308 × 000D ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 0030 × 000A ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 0030 × 0308 × 000A ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 0030 × 0085 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
|
||||
÷ 0030 × 0308 × 0085 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
|
||||
÷ 0030 × 0009 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
|
||||
÷ 0030 × 0308 × 0009 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
|
||||
÷ 0030 × 0061 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
|
||||
÷ 0030 × 0308 × 0061 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
|
||||
÷ 0030 × 0041 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
|
||||
÷ 0030 × 0308 × 0041 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
|
||||
÷ 0030 × 01BB ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
|
||||
÷ 0030 × 0308 × 01BB ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
|
||||
÷ 0030 × 0030 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
|
||||
÷ 0030 × 0308 × 0030 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
|
||||
÷ 0030 × 002E ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] FULL STOP (ATerm) ÷ [0.3]
|
||||
÷ 0030 × 0308 × 002E ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
|
||||
÷ 0030 × 0021 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
|
||||
÷ 0030 × 0308 × 0021 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
|
||||
÷ 0030 × 0022 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
|
||||
÷ 0030 × 0308 × 0022 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
|
||||
÷ 0030 × 002C ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] COMMA (SContinue) ÷ [0.3]
|
||||
÷ 0030 × 0308 × 002C ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
|
||||
÷ 0030 × 00AD ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
|
||||
÷ 0030 × 0308 × 00AD ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
|
||||
÷ 0030 × 0300 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
|
||||
÷ 0030 × 0308 × 0300 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
|
||||
÷ 002E ÷ 0001 ÷ # ÷ [0.2] FULL STOP (ATerm) ÷ [11.0] <START OF HEADING> (Other) ÷ [0.3]
|
||||
÷ 002E × 0308 ÷ 0001 ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] <START OF HEADING> (Other) ÷ [0.3]
|
||||
÷ 002E × 000D ÷ # ÷ [0.2] FULL STOP (ATerm) × [9.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 002E × 0308 × 000D ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [9.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 002E × 000A ÷ # ÷ [0.2] FULL STOP (ATerm) × [9.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 002E × 0308 × 000A ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [9.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 002E × 0085 ÷ # ÷ [0.2] FULL STOP (ATerm) × [9.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
|
||||
÷ 002E × 0308 × 0085 ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [9.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
|
||||
÷ 002E × 0009 ÷ # ÷ [0.2] FULL STOP (ATerm) × [9.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
|
||||
÷ 002E × 0308 × 0009 ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [9.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
|
||||
÷ 002E × 0061 ÷ # ÷ [0.2] FULL STOP (ATerm) × [8.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
|
||||
÷ 002E × 0308 × 0061 ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [8.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
|
||||
÷ 002E ÷ 0041 ÷ # ÷ [0.2] FULL STOP (ATerm) ÷ [11.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
|
||||
÷ 002E × 0308 ÷ 0041 ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
|
||||
÷ 002E ÷ 01BB ÷ # ÷ [0.2] FULL STOP (ATerm) ÷ [11.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
|
||||
÷ 002E × 0308 ÷ 01BB ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
|
||||
÷ 002E × 0030 ÷ # ÷ [0.2] FULL STOP (ATerm) × [6.0] DIGIT ZERO (Numeric) ÷ [0.3]
|
||||
÷ 002E × 0308 × 0030 ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [6.0] DIGIT ZERO (Numeric) ÷ [0.3]
|
||||
÷ 002E × 002E ÷ # ÷ [0.2] FULL STOP (ATerm) × [8.1] FULL STOP (ATerm) ÷ [0.3]
|
||||
÷ 002E × 0308 × 002E ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [8.1] FULL STOP (ATerm) ÷ [0.3]
|
||||
÷ 002E × 0021 ÷ # ÷ [0.2] FULL STOP (ATerm) × [8.1] EXCLAMATION MARK (STerm) ÷ [0.3]
|
||||
÷ 002E × 0308 × 0021 ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [8.1] EXCLAMATION MARK (STerm) ÷ [0.3]
|
||||
÷ 002E × 0022 ÷ # ÷ [0.2] FULL STOP (ATerm) × [9.0] QUOTATION MARK (Close) ÷ [0.3]
|
||||
÷ 002E × 0308 × 0022 ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [9.0] QUOTATION MARK (Close) ÷ [0.3]
|
||||
÷ 002E × 002C ÷ # ÷ [0.2] FULL STOP (ATerm) × [8.1] COMMA (SContinue) ÷ [0.3]
|
||||
÷ 002E × 0308 × 002C ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [8.1] COMMA (SContinue) ÷ [0.3]
|
||||
÷ 002E × 00AD ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
|
||||
÷ 002E × 0308 × 00AD ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
|
||||
÷ 002E × 0300 ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
|
||||
÷ 002E × 0308 × 0300 ÷ # ÷ [0.2] FULL STOP (ATerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
|
||||
÷ 0021 ÷ 0001 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) ÷ [11.0] <START OF HEADING> (Other) ÷ [0.3]
|
||||
÷ 0021 × 0308 ÷ 0001 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] <START OF HEADING> (Other) ÷ [0.3]
|
||||
÷ 0021 × 000D ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [9.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 0021 × 0308 × 000D ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [9.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 0021 × 000A ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [9.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 0021 × 0308 × 000A ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [9.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 0021 × 0085 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [9.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
|
||||
÷ 0021 × 0308 × 0085 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [9.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
|
||||
÷ 0021 × 0009 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [9.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
|
||||
÷ 0021 × 0308 × 0009 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [9.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
|
||||
÷ 0021 ÷ 0061 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) ÷ [11.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
|
||||
÷ 0021 × 0308 ÷ 0061 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
|
||||
÷ 0021 ÷ 0041 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) ÷ [11.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
|
||||
÷ 0021 × 0308 ÷ 0041 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
|
||||
÷ 0021 ÷ 01BB ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) ÷ [11.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
|
||||
÷ 0021 × 0308 ÷ 01BB ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
|
||||
÷ 0021 ÷ 0030 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) ÷ [11.0] DIGIT ZERO (Numeric) ÷ [0.3]
|
||||
÷ 0021 × 0308 ÷ 0030 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] DIGIT ZERO (Numeric) ÷ [0.3]
|
||||
÷ 0021 × 002E ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [8.1] FULL STOP (ATerm) ÷ [0.3]
|
||||
÷ 0021 × 0308 × 002E ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [8.1] FULL STOP (ATerm) ÷ [0.3]
|
||||
÷ 0021 × 0021 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [8.1] EXCLAMATION MARK (STerm) ÷ [0.3]
|
||||
÷ 0021 × 0308 × 0021 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [8.1] EXCLAMATION MARK (STerm) ÷ [0.3]
|
||||
÷ 0021 × 0022 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [9.0] QUOTATION MARK (Close) ÷ [0.3]
|
||||
÷ 0021 × 0308 × 0022 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [9.0] QUOTATION MARK (Close) ÷ [0.3]
|
||||
÷ 0021 × 002C ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [8.1] COMMA (SContinue) ÷ [0.3]
|
||||
÷ 0021 × 0308 × 002C ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [8.1] COMMA (SContinue) ÷ [0.3]
|
||||
÷ 0021 × 00AD ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
|
||||
÷ 0021 × 0308 × 00AD ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
|
||||
÷ 0021 × 0300 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
|
||||
÷ 0021 × 0308 × 0300 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
|
||||
÷ 0022 × 0001 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
|
||||
÷ 0022 × 0308 × 0001 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
|
||||
÷ 0022 × 000D ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 0022 × 0308 × 000D ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 0022 × 000A ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 0022 × 0308 × 000A ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 0022 × 0085 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
|
||||
÷ 0022 × 0308 × 0085 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
|
||||
÷ 0022 × 0009 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
|
||||
÷ 0022 × 0308 × 0009 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
|
||||
÷ 0022 × 0061 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
|
||||
÷ 0022 × 0308 × 0061 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
|
||||
÷ 0022 × 0041 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
|
||||
÷ 0022 × 0308 × 0041 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
|
||||
÷ 0022 × 01BB ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
|
||||
÷ 0022 × 0308 × 01BB ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
|
||||
÷ 0022 × 0030 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
|
||||
÷ 0022 × 0308 × 0030 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
|
||||
÷ 0022 × 002E ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] FULL STOP (ATerm) ÷ [0.3]
|
||||
÷ 0022 × 0308 × 002E ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
|
||||
÷ 0022 × 0021 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
|
||||
÷ 0022 × 0308 × 0021 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
|
||||
÷ 0022 × 0022 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
|
||||
÷ 0022 × 0308 × 0022 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
|
||||
÷ 0022 × 002C ÷ # ÷ [0.2] QUOTATION MARK (Close) × [998.0] COMMA (SContinue) ÷ [0.3]
|
||||
÷ 0022 × 0308 × 002C ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
|
||||
÷ 0022 × 00AD ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
|
||||
÷ 0022 × 0308 × 00AD ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
|
||||
÷ 0022 × 0300 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
|
||||
÷ 0022 × 0308 × 0300 ÷ # ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
|
||||
÷ 002C × 0001 ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
|
||||
÷ 002C × 0308 × 0001 ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
|
||||
÷ 002C × 000D ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 002C × 0308 × 000D ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 002C × 000A ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 002C × 0308 × 000A ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 002C × 0085 ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
|
||||
÷ 002C × 0308 × 0085 ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
|
||||
÷ 002C × 0009 ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
|
||||
÷ 002C × 0308 × 0009 ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
|
||||
÷ 002C × 0061 ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
|
||||
÷ 002C × 0308 × 0061 ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
|
||||
÷ 002C × 0041 ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
|
||||
÷ 002C × 0308 × 0041 ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
|
||||
÷ 002C × 01BB ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
|
||||
÷ 002C × 0308 × 01BB ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
|
||||
÷ 002C × 0030 ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
|
||||
÷ 002C × 0308 × 0030 ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
|
||||
÷ 002C × 002E ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] FULL STOP (ATerm) ÷ [0.3]
|
||||
÷ 002C × 0308 × 002E ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
|
||||
÷ 002C × 0021 ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
|
||||
÷ 002C × 0308 × 0021 ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
|
||||
÷ 002C × 0022 ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
|
||||
÷ 002C × 0308 × 0022 ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
|
||||
÷ 002C × 002C ÷ # ÷ [0.2] COMMA (SContinue) × [998.0] COMMA (SContinue) ÷ [0.3]
|
||||
÷ 002C × 0308 × 002C ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
|
||||
÷ 002C × 00AD ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
|
||||
÷ 002C × 0308 × 00AD ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
|
||||
÷ 002C × 0300 ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
|
||||
÷ 002C × 0308 × 0300 ÷ # ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
|
||||
÷ 00AD × 0001 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
|
||||
÷ 00AD × 0308 × 0001 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
|
||||
÷ 00AD × 000D ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 00AD × 0308 × 000D ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 00AD × 000A ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 00AD × 0308 × 000A ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 00AD × 0085 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
|
||||
÷ 00AD × 0308 × 0085 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
|
||||
÷ 00AD × 0009 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
|
||||
÷ 00AD × 0308 × 0009 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
|
||||
÷ 00AD × 0061 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
|
||||
÷ 00AD × 0308 × 0061 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
|
||||
÷ 00AD × 0041 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
|
||||
÷ 00AD × 0308 × 0041 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
|
||||
÷ 00AD × 01BB ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
|
||||
÷ 00AD × 0308 × 01BB ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
|
||||
÷ 00AD × 0030 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
|
||||
÷ 00AD × 0308 × 0030 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
|
||||
÷ 00AD × 002E ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
|
||||
÷ 00AD × 0308 × 002E ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
|
||||
÷ 00AD × 0021 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
|
||||
÷ 00AD × 0308 × 0021 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
|
||||
÷ 00AD × 0022 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
|
||||
÷ 00AD × 0308 × 0022 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
|
||||
÷ 00AD × 002C ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
|
||||
÷ 00AD × 0308 × 002C ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
|
||||
÷ 00AD × 00AD ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
|
||||
÷ 00AD × 0308 × 00AD ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
|
||||
÷ 00AD × 0300 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
|
||||
÷ 00AD × 0308 × 0300 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
|
||||
÷ 0300 × 0001 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
|
||||
÷ 0300 × 0308 × 0001 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
|
||||
÷ 0300 × 000D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 0300 × 0308 × 000D ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
|
||||
÷ 0300 × 000A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 0300 × 0308 × 000A ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
|
||||
÷ 0300 × 0085 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
|
||||
÷ 0300 × 0308 × 0085 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
|
||||
÷ 0300 × 0009 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
|
||||
÷ 0300 × 0308 × 0009 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
|
||||
÷ 0300 × 0061 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
|
||||
÷ 0300 × 0308 × 0061 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
|
||||
÷ 0300 × 0041 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
|
||||
÷ 0300 × 0308 × 0041 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
|
||||
÷ 0300 × 01BB ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
|
||||
÷ 0300 × 0308 × 01BB ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
|
||||
÷ 0300 × 0030 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
|
||||
÷ 0300 × 0308 × 0030 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
|
||||
÷ 0300 × 002E ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
|
||||
÷ 0300 × 0308 × 002E ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
|
||||
÷ 0300 × 0021 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
|
||||
÷ 0300 × 0308 × 0021 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
|
||||
÷ 0300 × 0022 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
|
||||
÷ 0300 × 0308 × 0022 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
|
||||
÷ 0300 × 002C ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
|
||||
÷ 0300 × 0308 × 002C ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
|
||||
÷ 0300 × 00AD ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
|
||||
÷ 0300 × 0308 × 00AD ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
|
||||
÷ 0300 × 0300 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
|
||||
÷ 0300 × 0308 × 0300 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [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 (Lower) × [998.0] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [0.3]
|
||||
÷ 0061 × 0308 ÷ # ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [0.3]
|
||||
÷ 0020 × 200D × 0646 ÷ # ÷ [0.2] SPACE (Sp) × [5.0] ZERO WIDTH JOINER (Extend_FE) × [998.0] ARABIC LETTER NOON (OLetter) ÷ [0.3]
|
||||
÷ 0646 × 200D × 0020 ÷ # ÷ [0.2] ARABIC LETTER NOON (OLetter) × [5.0] ZERO WIDTH JOINER (Extend_FE) × [998.0] SPACE (Sp) ÷ [0.3]
|
||||
÷ 0028 × 0022 × 0047 × 006F × 002E × 0022 × 0029 × 0020 ÷ 0028 × 0048 × 0065 × 0020 × 0064 × 0069 × 0064 × 002E × 0029 ÷ # ÷ [0.2] LEFT PARENTHESIS (Close) × [998.0] QUOTATION MARK (Close) × [998.0] LATIN CAPITAL LETTER G (Upper) × [998.0] LATIN SMALL LETTER O (Lower) × [998.0] FULL STOP (ATerm) × [9.0] QUOTATION MARK (Close) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] SPACE (Sp) ÷ [11.0] LEFT PARENTHESIS (Close) × [998.0] LATIN CAPITAL LETTER H (Upper) × [998.0] LATIN SMALL LETTER E (Lower) × [998.0] SPACE (Sp) × [998.0] LATIN SMALL LETTER D (Lower) × [998.0] LATIN SMALL LETTER I (Lower) × [998.0] LATIN SMALL LETTER D (Lower) × [998.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) ÷ [0.3]
|
||||
÷ 0028 × 201C × 0047 × 006F × 003F × 201D × 0029 × 0020 ÷ 0028 × 0048 × 0065 × 0020 × 0064 × 0069 × 0064 × 002E × 0029 ÷ # ÷ [0.2] LEFT PARENTHESIS (Close) × [998.0] LEFT DOUBLE QUOTATION MARK (Close) × [998.0] LATIN CAPITAL LETTER G (Upper) × [998.0] LATIN SMALL LETTER O (Lower) × [998.0] QUESTION MARK (STerm) × [9.0] RIGHT DOUBLE QUOTATION MARK (Close) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] SPACE (Sp) ÷ [11.0] LEFT PARENTHESIS (Close) × [998.0] LATIN CAPITAL LETTER H (Upper) × [998.0] LATIN SMALL LETTER E (Lower) × [998.0] SPACE (Sp) × [998.0] LATIN SMALL LETTER D (Lower) × [998.0] LATIN SMALL LETTER I (Lower) × [998.0] LATIN SMALL LETTER D (Lower) × [998.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) ÷ [0.3]
|
||||
÷ 0055 × 002E × 0053 × 002E × 0041 × 0300 × 002E × 0020 × 0069 × 0073 ÷ # ÷ [0.2] LATIN CAPITAL LETTER U (Upper) × [998.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER S (Upper) × [998.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] FULL STOP (ATerm) × [8.0] SPACE (Sp) × [8.0] LATIN SMALL LETTER I (Lower) × [998.0] LATIN SMALL LETTER S (Lower) ÷ [0.3]
|
||||
÷ 0055 × 002E × 0053 × 002E × 0041 × 0300 × 003F × 0020 ÷ 0048 × 0065 ÷ # ÷ [0.2] LATIN CAPITAL LETTER U (Upper) × [998.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER S (Upper) × [998.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] QUESTION MARK (STerm) × [9.0] SPACE (Sp) ÷ [11.0] LATIN CAPITAL LETTER H (Upper) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
|
||||
÷ 0055 × 002E × 0053 × 002E × 0041 × 0300 × 002E ÷ # ÷ [0.2] LATIN CAPITAL LETTER U (Upper) × [998.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER S (Upper) × [998.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
|
||||
÷ 0033 × 002E × 0034 ÷ # ÷ [0.2] DIGIT THREE (Numeric) × [998.0] FULL STOP (ATerm) × [6.0] DIGIT FOUR (Numeric) ÷ [0.3]
|
||||
÷ 0063 × 002E × 0064 ÷ # ÷ [0.2] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [8.0] LATIN SMALL LETTER D (Lower) ÷ [0.3]
|
||||
÷ 0043 × 002E × 0064 ÷ # ÷ [0.2] LATIN CAPITAL LETTER C (Upper) × [998.0] FULL STOP (ATerm) × [8.0] LATIN SMALL LETTER D (Lower) ÷ [0.3]
|
||||
÷ 0063 × 002E × 0044 ÷ # ÷ [0.2] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER D (Upper) ÷ [0.3]
|
||||
÷ 0043 × 002E × 0044 ÷ # ÷ [0.2] LATIN CAPITAL LETTER C (Upper) × [998.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER D (Upper) ÷ [0.3]
|
||||
÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 × 0074 × 0068 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [8.0] RIGHT PARENTHESIS (Close) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [8.0] NO-BREAK SPACE (Sp) × [8.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
|
||||
÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 ÷ 0054 × 0068 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [9.0] NO-BREAK SPACE (Sp) ÷ [11.0] LATIN CAPITAL LETTER T (Upper) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
|
||||
÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 × 2018 × 0028 × 0074 × 0068 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [8.0] RIGHT PARENTHESIS (Close) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [8.0] NO-BREAK SPACE (Sp) × [8.0] LEFT SINGLE QUOTATION MARK (Close) × [998.0] LEFT PARENTHESIS (Close) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
|
||||
÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 ÷ 2018 × 0028 × 0054 × 0068 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [9.0] NO-BREAK SPACE (Sp) ÷ [11.0] LEFT SINGLE QUOTATION MARK (Close) × [998.0] LEFT PARENTHESIS (Close) × [998.0] LATIN CAPITAL LETTER T (Upper) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
|
||||
÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 × 0308 × 0074 × 0068 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [8.0] RIGHT PARENTHESIS (Close) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [8.0] NO-BREAK SPACE (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [8.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
|
||||
÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 × 0308 ÷ 0054 × 0068 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [9.0] NO-BREAK SPACE (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN CAPITAL LETTER T (Upper) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
|
||||
÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 0308 ÷ 0054 × 0068 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN CAPITAL LETTER T (Upper) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
|
||||
÷ 0065 × 0074 × 0063 × 002E × 0029 × 000A ÷ 0308 × 0054 × 0068 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER T (Upper) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
|
||||
÷ 0074 × 0068 × 0065 × 0020 × 0072 × 0065 × 0073 × 0070 × 002E × 0020 × 006C × 0065 × 0061 × 0064 × 0065 × 0072 × 0073 × 0020 × 0061 × 0072 × 0065 ÷ # ÷ [0.2] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) × [998.0] SPACE (Sp) × [998.0] LATIN SMALL LETTER R (Lower) × [998.0] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER S (Lower) × [998.0] LATIN SMALL LETTER P (Lower) × [998.0] FULL STOP (ATerm) × [8.0] SPACE (Sp) × [8.0] LATIN SMALL LETTER L (Lower) × [998.0] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER A (Lower) × [998.0] LATIN SMALL LETTER D (Lower) × [998.0] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER R (Lower) × [998.0] LATIN SMALL LETTER S (Lower) × [998.0] SPACE (Sp) × [998.0] LATIN SMALL LETTER A (Lower) × [998.0] LATIN SMALL LETTER R (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
|
||||
÷ 5B57 × 002E ÷ 5B57 ÷ # ÷ [0.2] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [998.0] FULL STOP (ATerm) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) ÷ [0.3]
|
||||
÷ 0065 × 0074 × 0063 × 002E ÷ 5B83 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B83 (OLetter) ÷ [0.3]
|
||||
÷ 0065 × 0074 × 0063 × 002E × 3002 ÷ # ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [8.1] IDEOGRAPHIC FULL STOP (STerm) ÷ [0.3]
|
||||
÷ 5B57 × 3002 ÷ 5B83 ÷ # ÷ [0.2] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [998.0] IDEOGRAPHIC FULL STOP (STerm) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B83 (OLetter) ÷ [0.3]
|
||||
÷ 0021 × 0020 × 0020 ÷ # ÷ [0.2] EXCLAMATION MARK (STerm) × [9.0] SPACE (Sp) × [10.0] SPACE (Sp) ÷ [0.3]
|
||||
÷ 2060 × 0028 × 2060 × 0022 × 2060 × 0047 × 2060 × 006F × 2060 × 002E × 2060 × 0022 × 2060 × 0029 × 2060 × 0020 × 2060 ÷ 0028 × 2060 × 0048 × 2060 × 0065 × 2060 × 0020 × 2060 × 0064 × 2060 × 0069 × 2060 × 0064 × 2060 × 002E × 2060 × 0029 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER G (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER O (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER H (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER I (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
|
||||
÷ 2060 × 0028 × 2060 × 201C × 2060 × 0047 × 2060 × 006F × 2060 × 003F × 2060 × 201D × 2060 × 0029 × 2060 × 0020 × 2060 ÷ 0028 × 2060 × 0048 × 2060 × 0065 × 2060 × 0020 × 2060 × 0064 × 2060 × 0069 × 2060 × 0064 × 2060 × 002E × 2060 × 0029 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LEFT DOUBLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER G (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER O (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] QUESTION MARK (STerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT DOUBLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER H (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER I (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
|
||||
÷ 2060 × 0055 × 2060 × 002E × 2060 × 0053 × 2060 × 002E × 2060 × 0041 × 2060 × 0300 × 002E × 2060 × 0020 × 2060 × 0069 × 2060 × 0073 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER U (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER S (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [8.0] LATIN SMALL LETTER I (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER S (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
|
||||
÷ 2060 × 0055 × 2060 × 002E × 2060 × 0053 × 2060 × 002E × 2060 × 0041 × 2060 × 0300 × 003F × 2060 × 0020 × 2060 ÷ 0048 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER U (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER S (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] QUESTION MARK (STerm) × [5.0] WORD JOINER (Format_FE) × [9.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] LATIN CAPITAL LETTER H (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
|
||||
÷ 2060 × 0055 × 2060 × 002E × 2060 × 0053 × 2060 × 002E × 2060 × 0041 × 2060 × 0300 × 002E × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER U (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER S (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
|
||||
÷ 2060 × 0033 × 2060 × 002E × 2060 × 0034 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] DIGIT THREE (Numeric) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [6.0] DIGIT FOUR (Numeric) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
|
||||
÷ 2060 × 0063 × 2060 × 002E × 2060 × 0064 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
|
||||
÷ 2060 × 0043 × 2060 × 002E × 2060 × 0064 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER C (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
|
||||
÷ 2060 × 0063 × 2060 × 002E × 2060 × 0044 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER D (Upper) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
|
||||
÷ 2060 × 0043 × 2060 × 002E × 2060 × 0044 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER C (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER D (Upper) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
|
||||
÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 × 0074 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [8.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
|
||||
÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 ÷ 0054 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] LATIN CAPITAL LETTER T (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
|
||||
÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 × 2018 × 2060 × 0028 × 2060 × 0074 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [8.0] LEFT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
|
||||
÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 ÷ 2018 × 2060 × 0028 × 2060 × 0054 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] LEFT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER T (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
|
||||
÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 × 0308 × 0074 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [8.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
|
||||
÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 × 0308 ÷ 0054 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN CAPITAL LETTER T (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
|
||||
÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 0308 ÷ 0054 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN CAPITAL LETTER T (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
|
||||
÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 000A ÷ 2060 × 0308 × 2060 × 0054 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] <LINE FEED (LF)> (LF) ÷ [4.0] WORD JOINER (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER T (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
|
||||
÷ 2060 × 0074 × 2060 × 0068 × 2060 × 0065 × 2060 × 0020 × 2060 × 0072 × 2060 × 0065 × 2060 × 0073 × 2060 × 0070 × 2060 × 002E × 2060 × 0020 × 2060 × 006C × 2060 × 0065 × 2060 × 0061 × 2060 × 0064 × 2060 × 0065 × 2060 × 0072 × 2060 × 0073 × 2060 × 0020 × 2060 × 0061 × 2060 × 0072 × 2060 × 0065 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER R (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER S (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER P (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [8.0] LATIN SMALL LETTER L (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER A (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER R (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER S (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER A (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER R (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
|
||||
÷ 2060 × 5B57 × 2060 × 002E × 2060 ÷ 5B57 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
|
||||
÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 ÷ 5B83 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B83 (OLetter) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
|
||||
÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 3002 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.1] IDEOGRAPHIC FULL STOP (STerm) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
|
||||
÷ 2060 × 5B57 × 2060 × 3002 × 2060 ÷ 5B83 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [5.0] WORD JOINER (Format_FE) × [998.0] IDEOGRAPHIC FULL STOP (STerm) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B83 (OLetter) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
|
||||
÷ 2060 × 0021 × 2060 × 0020 × 2060 × 0020 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) × [998.0] EXCLAMATION MARK (STerm) × [5.0] WORD JOINER (Format_FE) × [9.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [10.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
|
||||
#
|
||||
# Lines: 502
|
||||
#
|
||||
# EOF
|
@@ -1,281 +0,0 @@
|
||||
# SpecialCasing-15.0.0.txt
|
||||
# Date: 2022-02-02, 23:35:52 GMT
|
||||
# © 2022 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 https://www.unicode.org/terms_of_use.html
|
||||
#
|
||||
# Unicode Character Database
|
||||
# For documentation, see https://www.unicode.org/reports/tr44/
|
||||
#
|
||||
# Special Casing
|
||||
#
|
||||
# This file is a supplement to the UnicodeData.txt file. It does not define any
|
||||
# properties, but rather provides additional information about the casing of
|
||||
# Unicode characters, for situations when casing incurs a change in string length
|
||||
# or is dependent on context or locale. For compatibility, the UnicodeData.txt
|
||||
# file only contains simple case mappings for characters where they are one-to-one
|
||||
# and independent of context and language. The data in this file, combined with
|
||||
# the simple case mappings in UnicodeData.txt, defines the full case mappings
|
||||
# Lowercase_Mapping (lc), Titlecase_Mapping (tc), and Uppercase_Mapping (uc).
|
||||
#
|
||||
# Note that the preferred mechanism for defining tailored casing operations is
|
||||
# the Unicode Common Locale Data Repository (CLDR). For more information, see the
|
||||
# discussion of case mappings and case algorithms in the Unicode Standard.
|
||||
#
|
||||
# All code points not listed in this file that do not have a simple case mappings
|
||||
# in UnicodeData.txt map to themselves.
|
||||
# ================================================================================
|
||||
# Format
|
||||
# ================================================================================
|
||||
# The entries in this file are in the following machine-readable format:
|
||||
#
|
||||
# <code>; <lower>; <title>; <upper>; (<condition_list>;)? # <comment>
|
||||
#
|
||||
# <code>, <lower>, <title>, and <upper> provide the respective full case mappings
|
||||
# of <code>, expressed as character values in hex. If there is more than one character,
|
||||
# they are separated by spaces. Other than as used to separate elements, spaces are
|
||||
# to be ignored.
|
||||
#
|
||||
# The <condition_list> is optional. Where present, it consists of one or more language IDs
|
||||
# or casing contexts, separated by spaces. In these conditions:
|
||||
# - A condition list overrides the normal behavior if all of the listed conditions are true.
|
||||
# - The casing context is always the context of the characters in the original string,
|
||||
# NOT in the resulting string.
|
||||
# - Case distinctions in the condition list are not significant.
|
||||
# - Conditions preceded by "Not_" represent the negation of the condition.
|
||||
# The condition list is not represented in the UCD as a formal property.
|
||||
#
|
||||
# A language ID is defined by BCP 47, with '-' and '_' treated equivalently.
|
||||
#
|
||||
# A casing context for a character is defined by Section 3.13 Default Case Algorithms
|
||||
# of The Unicode Standard.
|
||||
#
|
||||
# Parsers of this file must be prepared to deal with future additions to this format:
|
||||
# * Additional contexts
|
||||
# * Additional fields
|
||||
# ================================================================================
|
||||
|
||||
# ================================================================================
|
||||
# Unconditional mappings
|
||||
# ================================================================================
|
||||
|
||||
# The German es-zed is special--the normal mapping is to SS.
|
||||
# Note: the titlecase should never occur in practice. It is equal to titlecase(uppercase(<es-zed>))
|
||||
|
||||
00DF; 00DF; 0053 0073; 0053 0053; # LATIN SMALL LETTER SHARP S
|
||||
|
||||
# Preserve canonical equivalence for I with dot. Turkic is handled below.
|
||||
|
||||
0130; 0069 0307; 0130; 0130; # LATIN CAPITAL LETTER I WITH DOT ABOVE
|
||||
|
||||
# Ligatures
|
||||
|
||||
FB00; FB00; 0046 0066; 0046 0046; # LATIN SMALL LIGATURE FF
|
||||
FB01; FB01; 0046 0069; 0046 0049; # LATIN SMALL LIGATURE FI
|
||||
FB02; FB02; 0046 006C; 0046 004C; # LATIN SMALL LIGATURE FL
|
||||
FB03; FB03; 0046 0066 0069; 0046 0046 0049; # LATIN SMALL LIGATURE FFI
|
||||
FB04; FB04; 0046 0066 006C; 0046 0046 004C; # LATIN SMALL LIGATURE FFL
|
||||
FB05; FB05; 0053 0074; 0053 0054; # LATIN SMALL LIGATURE LONG S T
|
||||
FB06; FB06; 0053 0074; 0053 0054; # LATIN SMALL LIGATURE ST
|
||||
|
||||
0587; 0587; 0535 0582; 0535 0552; # ARMENIAN SMALL LIGATURE ECH YIWN
|
||||
FB13; FB13; 0544 0576; 0544 0546; # ARMENIAN SMALL LIGATURE MEN NOW
|
||||
FB14; FB14; 0544 0565; 0544 0535; # ARMENIAN SMALL LIGATURE MEN ECH
|
||||
FB15; FB15; 0544 056B; 0544 053B; # ARMENIAN SMALL LIGATURE MEN INI
|
||||
FB16; FB16; 054E 0576; 054E 0546; # ARMENIAN SMALL LIGATURE VEW NOW
|
||||
FB17; FB17; 0544 056D; 0544 053D; # ARMENIAN SMALL LIGATURE MEN XEH
|
||||
|
||||
# No corresponding uppercase precomposed character
|
||||
|
||||
0149; 0149; 02BC 004E; 02BC 004E; # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
|
||||
0390; 0390; 0399 0308 0301; 0399 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
|
||||
03B0; 03B0; 03A5 0308 0301; 03A5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
|
||||
01F0; 01F0; 004A 030C; 004A 030C; # LATIN SMALL LETTER J WITH CARON
|
||||
1E96; 1E96; 0048 0331; 0048 0331; # LATIN SMALL LETTER H WITH LINE BELOW
|
||||
1E97; 1E97; 0054 0308; 0054 0308; # LATIN SMALL LETTER T WITH DIAERESIS
|
||||
1E98; 1E98; 0057 030A; 0057 030A; # LATIN SMALL LETTER W WITH RING ABOVE
|
||||
1E99; 1E99; 0059 030A; 0059 030A; # LATIN SMALL LETTER Y WITH RING ABOVE
|
||||
1E9A; 1E9A; 0041 02BE; 0041 02BE; # LATIN SMALL LETTER A WITH RIGHT HALF RING
|
||||
1F50; 1F50; 03A5 0313; 03A5 0313; # GREEK SMALL LETTER UPSILON WITH PSILI
|
||||
1F52; 1F52; 03A5 0313 0300; 03A5 0313 0300; # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
|
||||
1F54; 1F54; 03A5 0313 0301; 03A5 0313 0301; # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
|
||||
1F56; 1F56; 03A5 0313 0342; 03A5 0313 0342; # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
|
||||
1FB6; 1FB6; 0391 0342; 0391 0342; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI
|
||||
1FC6; 1FC6; 0397 0342; 0397 0342; # GREEK SMALL LETTER ETA WITH PERISPOMENI
|
||||
1FD2; 1FD2; 0399 0308 0300; 0399 0308 0300; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
|
||||
1FD3; 1FD3; 0399 0308 0301; 0399 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
|
||||
1FD6; 1FD6; 0399 0342; 0399 0342; # GREEK SMALL LETTER IOTA WITH PERISPOMENI
|
||||
1FD7; 1FD7; 0399 0308 0342; 0399 0308 0342; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
|
||||
1FE2; 1FE2; 03A5 0308 0300; 03A5 0308 0300; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
|
||||
1FE3; 1FE3; 03A5 0308 0301; 03A5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
|
||||
1FE4; 1FE4; 03A1 0313; 03A1 0313; # GREEK SMALL LETTER RHO WITH PSILI
|
||||
1FE6; 1FE6; 03A5 0342; 03A5 0342; # GREEK SMALL LETTER UPSILON WITH PERISPOMENI
|
||||
1FE7; 1FE7; 03A5 0308 0342; 03A5 0308 0342; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
|
||||
1FF6; 1FF6; 03A9 0342; 03A9 0342; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
|
||||
|
||||
# IMPORTANT-when iota-subscript (0345) is uppercased or titlecased,
|
||||
# the result will be incorrect unless the iota-subscript is moved to the end
|
||||
# of any sequence of combining marks. Otherwise, the accents will go on the capital iota.
|
||||
# This process can be achieved by first transforming the text to NFC before casing.
|
||||
# E.g. <alpha><iota_subscript><acute> is uppercased to <ALPHA><acute><IOTA>
|
||||
|
||||
# The following cases are already in the UnicodeData.txt file, so are only commented here.
|
||||
|
||||
# 0345; 0345; 0399; 0399; # COMBINING GREEK YPOGEGRAMMENI
|
||||
|
||||
# All letters with YPOGEGRAMMENI (iota-subscript) or PROSGEGRAMMENI (iota adscript)
|
||||
# have special uppercases.
|
||||
# Note: characters with PROSGEGRAMMENI are actually titlecase, not uppercase!
|
||||
|
||||
1F80; 1F80; 1F88; 1F08 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
|
||||
1F81; 1F81; 1F89; 1F09 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
|
||||
1F82; 1F82; 1F8A; 1F0A 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
|
||||
1F83; 1F83; 1F8B; 1F0B 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
|
||||
1F84; 1F84; 1F8C; 1F0C 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
|
||||
1F85; 1F85; 1F8D; 1F0D 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
|
||||
1F86; 1F86; 1F8E; 1F0E 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
|
||||
1F87; 1F87; 1F8F; 1F0F 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
|
||||
1F88; 1F80; 1F88; 1F08 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
|
||||
1F89; 1F81; 1F89; 1F09 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
|
||||
1F8A; 1F82; 1F8A; 1F0A 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
|
||||
1F8B; 1F83; 1F8B; 1F0B 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
|
||||
1F8C; 1F84; 1F8C; 1F0C 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
|
||||
1F8D; 1F85; 1F8D; 1F0D 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
|
||||
1F8E; 1F86; 1F8E; 1F0E 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
|
||||
1F8F; 1F87; 1F8F; 1F0F 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
|
||||
1F90; 1F90; 1F98; 1F28 0399; # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
|
||||
1F91; 1F91; 1F99; 1F29 0399; # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
|
||||
1F92; 1F92; 1F9A; 1F2A 0399; # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
|
||||
1F93; 1F93; 1F9B; 1F2B 0399; # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
|
||||
1F94; 1F94; 1F9C; 1F2C 0399; # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
|
||||
1F95; 1F95; 1F9D; 1F2D 0399; # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
|
||||
1F96; 1F96; 1F9E; 1F2E 0399; # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
|
||||
1F97; 1F97; 1F9F; 1F2F 0399; # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
|
||||
1F98; 1F90; 1F98; 1F28 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
|
||||
1F99; 1F91; 1F99; 1F29 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
|
||||
1F9A; 1F92; 1F9A; 1F2A 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
|
||||
1F9B; 1F93; 1F9B; 1F2B 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
|
||||
1F9C; 1F94; 1F9C; 1F2C 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
|
||||
1F9D; 1F95; 1F9D; 1F2D 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
|
||||
1F9E; 1F96; 1F9E; 1F2E 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
|
||||
1F9F; 1F97; 1F9F; 1F2F 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
|
||||
1FA0; 1FA0; 1FA8; 1F68 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
|
||||
1FA1; 1FA1; 1FA9; 1F69 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
|
||||
1FA2; 1FA2; 1FAA; 1F6A 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
|
||||
1FA3; 1FA3; 1FAB; 1F6B 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
|
||||
1FA4; 1FA4; 1FAC; 1F6C 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
|
||||
1FA5; 1FA5; 1FAD; 1F6D 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
|
||||
1FA6; 1FA6; 1FAE; 1F6E 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
|
||||
1FA7; 1FA7; 1FAF; 1F6F 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
|
||||
1FA8; 1FA0; 1FA8; 1F68 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
|
||||
1FA9; 1FA1; 1FA9; 1F69 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
|
||||
1FAA; 1FA2; 1FAA; 1F6A 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
|
||||
1FAB; 1FA3; 1FAB; 1F6B 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
|
||||
1FAC; 1FA4; 1FAC; 1F6C 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
|
||||
1FAD; 1FA5; 1FAD; 1F6D 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
|
||||
1FAE; 1FA6; 1FAE; 1F6E 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
|
||||
1FAF; 1FA7; 1FAF; 1F6F 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
|
||||
1FB3; 1FB3; 1FBC; 0391 0399; # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
|
||||
1FBC; 1FB3; 1FBC; 0391 0399; # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
|
||||
1FC3; 1FC3; 1FCC; 0397 0399; # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
|
||||
1FCC; 1FC3; 1FCC; 0397 0399; # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
|
||||
1FF3; 1FF3; 1FFC; 03A9 0399; # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
|
||||
1FFC; 1FF3; 1FFC; 03A9 0399; # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
|
||||
|
||||
# Some characters with YPOGEGRAMMENI also have no corresponding titlecases
|
||||
|
||||
1FB2; 1FB2; 1FBA 0345; 1FBA 0399; # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
|
||||
1FB4; 1FB4; 0386 0345; 0386 0399; # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
|
||||
1FC2; 1FC2; 1FCA 0345; 1FCA 0399; # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
|
||||
1FC4; 1FC4; 0389 0345; 0389 0399; # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
|
||||
1FF2; 1FF2; 1FFA 0345; 1FFA 0399; # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
|
||||
1FF4; 1FF4; 038F 0345; 038F 0399; # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
|
||||
|
||||
1FB7; 1FB7; 0391 0342 0345; 0391 0342 0399; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
|
||||
1FC7; 1FC7; 0397 0342 0345; 0397 0342 0399; # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
|
||||
1FF7; 1FF7; 03A9 0342 0345; 03A9 0342 0399; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
|
||||
|
||||
# ================================================================================
|
||||
# Conditional Mappings
|
||||
# The remainder of this file provides conditional casing data used to produce
|
||||
# full case mappings.
|
||||
# ================================================================================
|
||||
# Language-Insensitive Mappings
|
||||
# These are characters whose full case mappings do not depend on language, but do
|
||||
# depend on context (which characters come before or after). For more information
|
||||
# see the header of this file and the Unicode Standard.
|
||||
# ================================================================================
|
||||
|
||||
# Special case for final form of sigma
|
||||
|
||||
03A3; 03C2; 03A3; 03A3; Final_Sigma; # GREEK CAPITAL LETTER SIGMA
|
||||
|
||||
# Note: the following cases for non-final are already in the UnicodeData.txt file.
|
||||
|
||||
# 03A3; 03C3; 03A3; 03A3; # GREEK CAPITAL LETTER SIGMA
|
||||
# 03C3; 03C3; 03A3; 03A3; # GREEK SMALL LETTER SIGMA
|
||||
# 03C2; 03C2; 03A3; 03A3; # GREEK SMALL LETTER FINAL SIGMA
|
||||
|
||||
# Note: the following cases are not included, since they would case-fold in lowercasing
|
||||
|
||||
# 03C3; 03C2; 03A3; 03A3; Final_Sigma; # GREEK SMALL LETTER SIGMA
|
||||
# 03C2; 03C3; 03A3; 03A3; Not_Final_Sigma; # GREEK SMALL LETTER FINAL SIGMA
|
||||
|
||||
# ================================================================================
|
||||
# Language-Sensitive Mappings
|
||||
# These are characters whose full case mappings depend on language and perhaps also
|
||||
# context (which characters come before or after). For more information
|
||||
# see the header of this file and the Unicode Standard.
|
||||
# ================================================================================
|
||||
|
||||
# Lithuanian
|
||||
|
||||
# Lithuanian retains the dot in a lowercase i when followed by accents.
|
||||
|
||||
# Remove DOT ABOVE after "i" with upper or titlecase
|
||||
|
||||
0307; 0307; ; ; lt After_Soft_Dotted; # COMBINING DOT ABOVE
|
||||
|
||||
# Introduce an explicit dot above when lowercasing capital I's and J's
|
||||
# whenever there are more accents above.
|
||||
# (of the accents used in Lithuanian: grave, acute, tilde above, and ogonek)
|
||||
|
||||
0049; 0069 0307; 0049; 0049; lt More_Above; # LATIN CAPITAL LETTER I
|
||||
004A; 006A 0307; 004A; 004A; lt More_Above; # LATIN CAPITAL LETTER J
|
||||
012E; 012F 0307; 012E; 012E; lt More_Above; # LATIN CAPITAL LETTER I WITH OGONEK
|
||||
00CC; 0069 0307 0300; 00CC; 00CC; lt; # LATIN CAPITAL LETTER I WITH GRAVE
|
||||
00CD; 0069 0307 0301; 00CD; 00CD; lt; # LATIN CAPITAL LETTER I WITH ACUTE
|
||||
0128; 0069 0307 0303; 0128; 0128; lt; # LATIN CAPITAL LETTER I WITH TILDE
|
||||
|
||||
# ================================================================================
|
||||
|
||||
# Turkish and Azeri
|
||||
|
||||
# I and i-dotless; I-dot and i are case pairs in Turkish and Azeri
|
||||
# The following rules handle those cases.
|
||||
|
||||
0130; 0069; 0130; 0130; tr; # LATIN CAPITAL LETTER I WITH DOT ABOVE
|
||||
0130; 0069; 0130; 0130; az; # LATIN CAPITAL LETTER I WITH DOT ABOVE
|
||||
|
||||
# When lowercasing, remove dot_above in the sequence I + dot_above, which will turn into i.
|
||||
# This matches the behavior of the canonically equivalent I-dot_above
|
||||
|
||||
0307; ; 0307; 0307; tr After_I; # COMBINING DOT ABOVE
|
||||
0307; ; 0307; 0307; az After_I; # COMBINING DOT ABOVE
|
||||
|
||||
# When lowercasing, unless an I is before a dot_above, it turns into a dotless i.
|
||||
|
||||
0049; 0131; 0049; 0049; tr Not_Before_Dot; # LATIN CAPITAL LETTER I
|
||||
0049; 0131; 0049; 0049; az Not_Before_Dot; # LATIN CAPITAL LETTER I
|
||||
|
||||
# When uppercasing, i turns into a dotted capital I
|
||||
|
||||
0069; 0069; 0130; 0130; tr; # LATIN SMALL LETTER I
|
||||
0069; 0069; 0130; 0130; az; # LATIN SMALL LETTER I
|
||||
|
||||
# Note: the following case is already in the UnicodeData.txt file.
|
||||
|
||||
# 0131; 0131; 0049; 0049; tr; # LATIN SMALL LETTER DOTLESS I
|
||||
|
||||
# EOF
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -1,318 +0,0 @@
|
||||
/* See LICENSE file for copyright and license details. */
|
||||
#include <errno.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "util.h"
|
||||
|
||||
#define FILE_DCP "data/DerivedCoreProperties.txt"
|
||||
|
||||
static const struct property_spec case_property[] = {
|
||||
{
|
||||
.enumname = "OTHER",
|
||||
.file = NULL,
|
||||
.ucdname = NULL,
|
||||
},
|
||||
{
|
||||
.enumname = "BOTH_CASED_CASE_IGNORABLE",
|
||||
.file = NULL,
|
||||
.ucdname = NULL,
|
||||
},
|
||||
{
|
||||
.enumname = "CASED",
|
||||
.file = FILE_DCP,
|
||||
.ucdname = "Cased",
|
||||
},
|
||||
{
|
||||
.enumname = "CASE_IGNORABLE",
|
||||
.file = FILE_DCP,
|
||||
.ucdname = "Case_Ignorable",
|
||||
},
|
||||
{
|
||||
.enumname = "UNCASED",
|
||||
.file = FILE_DCP,
|
||||
.ucdname = "Uncased",
|
||||
},
|
||||
};
|
||||
|
||||
static uint_least8_t
|
||||
handle_conflict(uint_least32_t cp, uint_least8_t prop1, uint_least8_t prop2)
|
||||
{
|
||||
uint_least8_t result;
|
||||
|
||||
(void)cp;
|
||||
|
||||
if ((!strcmp(case_property[prop1].enumname, "CASED") &&
|
||||
!strcmp(case_property[prop2].enumname, "CASE_IGNORABLE")) ||
|
||||
(!strcmp(case_property[prop1].enumname, "CASE_IGNORABLE") &&
|
||||
!strcmp(case_property[prop2].enumname, "CASED"))) {
|
||||
for (result = 0; result < LEN(case_property); result++) {
|
||||
if (!strcmp(case_property[result].enumname,
|
||||
"BOTH_CASED_CASE_IGNORABLE")) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (result == LEN(case_property)) {
|
||||
fprintf(stderr, "handle_conflict: Internal error.\n");
|
||||
exit(1);
|
||||
}
|
||||
} else {
|
||||
fprintf(stderr, "handle_conflict: Cannot handle conflict.\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static struct properties *prop_upper = NULL, *prop_lower, *prop_title;
|
||||
static struct special_case {
|
||||
struct {
|
||||
uint_least32_t *cp;
|
||||
size_t cplen;
|
||||
} upper, lower, title;
|
||||
} *sc = NULL;
|
||||
static size_t sclen = 0;
|
||||
|
||||
static int
|
||||
unicodedata_callback(const char *file, char **field, size_t nfields,
|
||||
char *comment, void *payload)
|
||||
{
|
||||
uint_least32_t cp, upper, lower, title;
|
||||
|
||||
(void)file;
|
||||
(void)comment;
|
||||
(void)payload;
|
||||
|
||||
hextocp(field[0], strlen(field[0]), &cp);
|
||||
|
||||
upper = lower = title = cp;
|
||||
|
||||
if ((strlen(field[12]) > 0 && hextocp(field[12], strlen(field[12]), &upper)) ||
|
||||
(strlen(field[13]) > 0 && hextocp(field[13], strlen(field[13]), &lower)) ||
|
||||
(nfields >= 15 && strlen(field[14]) > 0 && hextocp(field[14], strlen(field[14]), &title))) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
prop_upper[cp].property = (int_least32_t)upper - (int_least32_t)cp;
|
||||
prop_lower[cp].property = (int_least32_t)lower - (int_least32_t)cp;
|
||||
prop_title[cp].property = (int_least32_t)title - (int_least32_t)cp;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
parse_cp_list(const char *str, uint_least32_t **cp, size_t *cplen)
|
||||
{
|
||||
size_t count, i;
|
||||
const char *tmp1 = NULL, *tmp2 = NULL;
|
||||
|
||||
/* count the number of spaces in the string and infer list length */
|
||||
for (count = 1, tmp1 = str; (tmp2 = strchr(tmp1, ' ')) != NULL; count++, tmp1 = tmp2 + 1)
|
||||
;
|
||||
|
||||
/* allocate resources */
|
||||
if (!(*cp = calloc((*cplen = count), sizeof(**cp)))) {
|
||||
fprintf(stderr, "calloc: %s\n", strerror(errno));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* go through the string again, parsing the numbers */
|
||||
for (i = 0, tmp1 = tmp2 = str; tmp2 != NULL; i++) {
|
||||
tmp2 = strchr(tmp1, ' ');
|
||||
if (hextocp(tmp1, tmp2 ? (size_t)(tmp2 - tmp1) : strlen(tmp1), &((*cp)[i]))) {
|
||||
return 1;
|
||||
}
|
||||
if (tmp2 != NULL) {
|
||||
tmp1 = tmp2 + 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
specialcasing_callback(const char *file, char **field, size_t nfields,
|
||||
char *comment, void *payload)
|
||||
{
|
||||
uint_least32_t cp;
|
||||
|
||||
(void)file;
|
||||
(void)comment;
|
||||
(void)payload;
|
||||
|
||||
if (nfields > 4 && strlen(field[4]) > 0) {
|
||||
/*
|
||||
* we have more than 4 fields, i.e. the rule has a
|
||||
* condition (language-sensitive, etc.) and is discarded
|
||||
*/
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* parse affected codepoint */
|
||||
hextocp(field[0], strlen(field[0]), &cp);
|
||||
|
||||
/* extend special case array */
|
||||
if (!(sc = realloc(sc, (++sclen) * sizeof(*sc)))) {
|
||||
fprintf(stderr, "realloc: %s\n", strerror(errno));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* parse field data */
|
||||
parse_cp_list(field[3], &(sc[sclen - 1].upper.cp),
|
||||
&(sc[sclen - 1].upper.cplen));
|
||||
parse_cp_list(field[1], &(sc[sclen - 1].lower.cp),
|
||||
&(sc[sclen - 1].lower.cplen));
|
||||
parse_cp_list(field[2], &(sc[sclen - 1].title.cp),
|
||||
&(sc[sclen - 1].title.cplen));
|
||||
|
||||
/*
|
||||
* overwrite value in "single mapping" property table by the
|
||||
* special value 0x110000 + (offset in special case array),
|
||||
* even if the special case has length 1
|
||||
*/
|
||||
prop_upper[cp].property = (int_least64_t)(UINT32_C(0x110000) + (sclen - 1));
|
||||
prop_lower[cp].property = (int_least64_t)(UINT32_C(0x110000) + (sclen - 1));
|
||||
prop_title[cp].property = (int_least64_t)(UINT32_C(0x110000) + (sclen - 1));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int_least64_t
|
||||
get_value(const struct properties *prop, size_t offset)
|
||||
{
|
||||
return prop[offset].property;
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
struct properties_compressed comp_upper, comp_lower, comp_title;
|
||||
struct properties_major_minor mm_upper, mm_lower, mm_title;
|
||||
size_t i, j;
|
||||
|
||||
(void)argc;
|
||||
|
||||
/* generate case property table from the specification */
|
||||
properties_generate_break_property(case_property,
|
||||
LEN(case_property),
|
||||
handle_conflict, NULL, "case",
|
||||
argv[0]);
|
||||
|
||||
/*
|
||||
* allocate property buffers for all 0x110000 codepoints
|
||||
*
|
||||
* the buffers contain the offset from the "base" character
|
||||
* to the respective case mapping. By callocing we set all fields
|
||||
* to zero, which is also the Unicode "default" in the sense that
|
||||
* there is no case mapping by default (unless we fill it in)
|
||||
*/
|
||||
if (!(prop_upper = calloc(UINT32_C(0x110000), sizeof(*prop_upper))) ||
|
||||
!(prop_lower = calloc(UINT32_C(0x110000), sizeof(*prop_lower))) ||
|
||||
!(prop_title = calloc(UINT32_C(0x110000), sizeof(*prop_title)))) {
|
||||
fprintf(stderr, "calloc: %s\n", strerror(errno));
|
||||
exit(1);
|
||||
}
|
||||
parse_file_with_callback("data/UnicodeData.txt", unicodedata_callback,
|
||||
NULL);
|
||||
parse_file_with_callback("data/SpecialCasing.txt", specialcasing_callback,
|
||||
NULL);
|
||||
|
||||
/* compress properties */
|
||||
properties_compress(prop_upper, &comp_upper);
|
||||
properties_compress(prop_lower, &comp_lower);
|
||||
properties_compress(prop_title, &comp_title);
|
||||
|
||||
fprintf(stderr, "%s: LUT compression-ratios: upper=%.2f%%, lower=%.2f%%, title=%.2f%%\n",
|
||||
argv[0], properties_get_major_minor(&comp_upper, &mm_upper),
|
||||
properties_get_major_minor(&comp_lower, &mm_lower),
|
||||
properties_get_major_minor(&comp_title, &mm_title));
|
||||
|
||||
/* print tables */
|
||||
printf("/* Automatically generated by %s */\n#include <stdint.h>\n#include <stddef.h>\n\n", argv[0]);
|
||||
|
||||
printf("struct special_case {\n\tuint_least32_t *cp;\n\tsize_t cplen;\n};\n\n");
|
||||
|
||||
properties_print_lookup_table("upper_major", mm_upper.major, 0x1100);
|
||||
printf("\n");
|
||||
properties_print_derived_lookup_table("upper_minor", "int_least32_t", mm_upper.minor,
|
||||
mm_upper.minorlen, get_value, comp_upper.data);
|
||||
printf("\n");
|
||||
properties_print_lookup_table("lower_major", mm_lower.major, 0x1100);
|
||||
printf("\n");
|
||||
properties_print_derived_lookup_table("lower_minor", "int_least32_t", mm_lower.minor,
|
||||
mm_lower.minorlen, get_value, comp_lower.data);
|
||||
printf("\n");
|
||||
properties_print_lookup_table("title_major", mm_title.major, 0x1100);
|
||||
printf("\n");
|
||||
properties_print_derived_lookup_table("title_minor", "int_least32_t", mm_title.minor,
|
||||
mm_title.minorlen, get_value, comp_title.data);
|
||||
printf("\n");
|
||||
|
||||
printf("static const struct special_case upper_special[] = {\n");
|
||||
for (i = 0; i < sclen; i++) {
|
||||
printf("\t{\n");
|
||||
|
||||
printf("\t\t.cp = (uint_least32_t[]){");
|
||||
for (j = 0; j < sc[i].upper.cplen; j++) {
|
||||
printf(" UINT32_C(0x%06X)", sc[i].upper.cp[j]);
|
||||
if (j + 1 < sc[i].upper.cplen) {
|
||||
putchar(',');
|
||||
}
|
||||
}
|
||||
printf(" },\n");
|
||||
printf("\t\t.cplen = %zu,\n", sc[i].upper.cplen);
|
||||
printf("\t},\n");
|
||||
}
|
||||
printf("};\n\n");
|
||||
|
||||
printf("static const struct special_case lower_special[] = {\n");
|
||||
for (i = 0; i < sclen; i++) {
|
||||
printf("\t{\n");
|
||||
|
||||
printf("\t\t.cp = (uint_least32_t[]){");
|
||||
for (j = 0; j < sc[i].lower.cplen; j++) {
|
||||
printf(" UINT32_C(0x%06X)", sc[i].lower.cp[j]);
|
||||
if (j + 1 < sc[i].lower.cplen) {
|
||||
putchar(',');
|
||||
}
|
||||
}
|
||||
printf(" },\n");
|
||||
printf("\t\t.cplen = %zu,\n", sc[i].lower.cplen);
|
||||
printf("\t},\n");
|
||||
}
|
||||
printf("};\n\n");
|
||||
|
||||
printf("static const struct special_case title_special[] = {\n");
|
||||
for (i = 0; i < sclen; i++) {
|
||||
printf("\t{\n");
|
||||
|
||||
printf("\t\t.cp = (uint_least32_t[]){");
|
||||
for (j = 0; j < sc[i].title.cplen; j++) {
|
||||
printf(" UINT32_C(0x%06X)", sc[i].title.cp[j]);
|
||||
if (j + 1 < sc[i].title.cplen) {
|
||||
putchar(',');
|
||||
}
|
||||
}
|
||||
printf(" },\n");
|
||||
printf("\t\t.cplen = %zu,\n", sc[i].title.cplen);
|
||||
printf("\t},\n");
|
||||
}
|
||||
printf("};\n\n");
|
||||
|
||||
free(comp_lower.data);
|
||||
free(comp_lower.offset);
|
||||
free(comp_title.data);
|
||||
free(comp_title.offset);
|
||||
free(comp_upper.data);
|
||||
free(comp_upper.offset);
|
||||
free(mm_lower.major);
|
||||
free(mm_lower.minor);
|
||||
free(mm_title.major);
|
||||
free(mm_title.minor);
|
||||
free(mm_upper.major);
|
||||
free(mm_upper.minor);
|
||||
|
||||
return 0;
|
||||
}
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
@@ -1,19 +0,0 @@
|
||||
/* See LICENSE file for copyright and license details. */
|
||||
#include <stddef.h>
|
||||
|
||||
#include "util.h"
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
struct break_test *test = NULL;
|
||||
size_t testlen = 0;
|
||||
|
||||
(void)argc;
|
||||
|
||||
break_test_list_parse("data/GraphemeBreakTest.txt", &test, &testlen);
|
||||
break_test_list_print(test, testlen, "character_break_test", argv[0]);
|
||||
break_test_list_free(test, testlen);
|
||||
|
||||
return 0;
|
||||
}
|
@@ -1,97 +0,0 @@
|
||||
/* See LICENSE file for copyright and license details. */
|
||||
#include <stddef.h>
|
||||
|
||||
#include "util.h"
|
||||
|
||||
#define FILE_EMOJI "data/emoji-data.txt"
|
||||
#define FILE_GRAPHEME "data/GraphemeBreakProperty.txt"
|
||||
|
||||
static const struct property_spec char_break_property[] = {
|
||||
{
|
||||
.enumname = "OTHER",
|
||||
.file = NULL,
|
||||
.ucdname = NULL,
|
||||
},
|
||||
{
|
||||
.enumname = "CONTROL",
|
||||
.file = FILE_GRAPHEME,
|
||||
.ucdname = "Control",
|
||||
},
|
||||
{
|
||||
.enumname = "CR",
|
||||
.file = FILE_GRAPHEME,
|
||||
.ucdname = "CR",
|
||||
},
|
||||
{
|
||||
.enumname = "EXTEND",
|
||||
.file = FILE_GRAPHEME,
|
||||
.ucdname = "Extend",
|
||||
},
|
||||
{
|
||||
.enumname = "EXTENDED_PICTOGRAPHIC",
|
||||
.file = FILE_EMOJI,
|
||||
.ucdname = "Extended_Pictographic",
|
||||
},
|
||||
{
|
||||
.enumname = "HANGUL_L",
|
||||
.file = FILE_GRAPHEME,
|
||||
.ucdname = "L",
|
||||
},
|
||||
{
|
||||
.enumname = "HANGUL_V",
|
||||
.file = FILE_GRAPHEME,
|
||||
.ucdname = "V",
|
||||
},
|
||||
{
|
||||
.enumname = "HANGUL_T",
|
||||
.file = FILE_GRAPHEME,
|
||||
.ucdname = "T",
|
||||
},
|
||||
{
|
||||
.enumname = "HANGUL_LV",
|
||||
.file = FILE_GRAPHEME,
|
||||
.ucdname = "LV",
|
||||
},
|
||||
{
|
||||
.enumname = "HANGUL_LVT",
|
||||
.file = FILE_GRAPHEME,
|
||||
.ucdname = "LVT",
|
||||
},
|
||||
{
|
||||
.enumname = "LF",
|
||||
.file = FILE_GRAPHEME,
|
||||
.ucdname = "LF",
|
||||
},
|
||||
{
|
||||
.enumname = "PREPEND",
|
||||
.file = FILE_GRAPHEME,
|
||||
.ucdname = "Prepend",
|
||||
},
|
||||
{
|
||||
.enumname = "REGIONAL_INDICATOR",
|
||||
.file = FILE_GRAPHEME,
|
||||
.ucdname = "Regional_Indicator",
|
||||
},
|
||||
{
|
||||
.enumname = "SPACINGMARK",
|
||||
.file = FILE_GRAPHEME,
|
||||
.ucdname = "SpacingMark",
|
||||
},
|
||||
{
|
||||
.enumname = "ZWJ",
|
||||
.file = FILE_GRAPHEME,
|
||||
.ucdname = "ZWJ",
|
||||
},
|
||||
};
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
(void)argc;
|
||||
|
||||
properties_generate_break_property(char_break_property,
|
||||
LEN(char_break_property),
|
||||
NULL, NULL, "char_break", argv[0]);
|
||||
|
||||
return 0;
|
||||
}
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
@@ -1,19 +0,0 @@
|
||||
/* See LICENSE file for copyright and license details. */
|
||||
#include <stddef.h>
|
||||
|
||||
#include "util.h"
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
struct break_test *test = NULL;
|
||||
size_t testlen = 0;
|
||||
|
||||
(void)argc;
|
||||
|
||||
break_test_list_parse("data/LineBreakTest.txt", &test, &testlen);
|
||||
break_test_list_print(test, testlen, "line_break_test", argv[0]);
|
||||
break_test_list_free(test, testlen);
|
||||
|
||||
return 0;
|
||||
}
|
@@ -1,456 +0,0 @@
|
||||
/* See LICENSE file for copyright and license details. */
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "util.h"
|
||||
|
||||
#define FILE_EAW "data/EastAsianWidth.txt"
|
||||
#define FILE_EMOJI "data/emoji-data.txt"
|
||||
#define FILE_LINE "data/LineBreak.txt"
|
||||
|
||||
static const struct property_spec line_break_property[] = {
|
||||
{
|
||||
.enumname = "AL",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "AL",
|
||||
},
|
||||
/*
|
||||
* Both extended pictographic and cn are large classes,
|
||||
* but we are only interested in their intersection for LB30b,
|
||||
* so we have the following two temporary classes. At first
|
||||
* the extpict-class is filled, then the cn-class, which leads
|
||||
* to conflicts (that we handle by putting them in the "proper"
|
||||
* class BOTH_CN_EXTPICT). We make use of the fact that there
|
||||
* is no intersection between AL and Cn.
|
||||
*
|
||||
* Any consecutive conflicts are permitted to overwrite
|
||||
* TMP_EXTENDED_PICTOGRAPHIC and TMP_CN, because we don't need
|
||||
* them, and in the final postprocessing we "reset" all
|
||||
* remaining matches (that then didn't fit any of the other
|
||||
* classes) to the generic class AL.
|
||||
*/
|
||||
{
|
||||
.enumname = "TMP_CN",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "Cn",
|
||||
},
|
||||
{
|
||||
.enumname = "TMP_EXTENDED_PICTOGRAPHIC",
|
||||
.file = FILE_EMOJI,
|
||||
.ucdname = "Extended_Pictographic",
|
||||
},
|
||||
/* end of special block */
|
||||
{
|
||||
.enumname = "B2",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "B2",
|
||||
},
|
||||
{
|
||||
.enumname = "BA",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "BA",
|
||||
},
|
||||
{
|
||||
.enumname = "BB",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "BB",
|
||||
},
|
||||
{
|
||||
.enumname = "BK",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "BK",
|
||||
},
|
||||
{
|
||||
.enumname = "BOTH_CN_EXTPICT",
|
||||
.file = NULL,
|
||||
.ucdname = NULL,
|
||||
},
|
||||
{
|
||||
.enumname = "CB",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "CB",
|
||||
},
|
||||
{
|
||||
.enumname = "CL",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "CL",
|
||||
},
|
||||
{
|
||||
.enumname = "CM",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "CM",
|
||||
},
|
||||
{
|
||||
.enumname = "CP_WITHOUT_EAW_HWF",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "CP",
|
||||
},
|
||||
{
|
||||
.enumname = "CP_WITH_EAW_HWF",
|
||||
.file = NULL,
|
||||
.ucdname = NULL,
|
||||
},
|
||||
{
|
||||
.enumname = "CR",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "CR",
|
||||
},
|
||||
{
|
||||
.enumname = "EB",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "EB",
|
||||
},
|
||||
{
|
||||
.enumname = "EM",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "EM",
|
||||
},
|
||||
{
|
||||
.enumname = "EX",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "EX",
|
||||
},
|
||||
{
|
||||
.enumname = "GL",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "GL",
|
||||
},
|
||||
{
|
||||
.enumname = "H2",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "H2",
|
||||
},
|
||||
{
|
||||
.enumname = "H3",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "H3",
|
||||
},
|
||||
{
|
||||
.enumname = "HL",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "HL",
|
||||
},
|
||||
{
|
||||
.enumname = "HY",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "HY",
|
||||
},
|
||||
{
|
||||
.enumname = "ID",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "ID",
|
||||
},
|
||||
{
|
||||
.enumname = "IN",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "IN",
|
||||
},
|
||||
{
|
||||
.enumname = "IS",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "IS",
|
||||
},
|
||||
{
|
||||
.enumname = "JL",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "JL",
|
||||
},
|
||||
{
|
||||
.enumname = "JT",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "JT",
|
||||
},
|
||||
{
|
||||
.enumname = "JV",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "JV",
|
||||
},
|
||||
{
|
||||
.enumname = "LF",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "LF",
|
||||
},
|
||||
{
|
||||
.enumname = "NL",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "NL",
|
||||
},
|
||||
{
|
||||
.enumname = "NS",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "NS",
|
||||
},
|
||||
{
|
||||
.enumname = "NU",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "NU",
|
||||
},
|
||||
{
|
||||
.enumname = "OP_WITHOUT_EAW_HWF",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "OP",
|
||||
},
|
||||
{
|
||||
.enumname = "OP_WITH_EAW_HWF",
|
||||
.file = NULL,
|
||||
.ucdname = NULL,
|
||||
},
|
||||
{
|
||||
.enumname = "PO",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "PO",
|
||||
},
|
||||
{
|
||||
.enumname = "PR",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "PR",
|
||||
},
|
||||
{
|
||||
.enumname = "QU",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "QU",
|
||||
},
|
||||
{
|
||||
.enumname = "RI",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "RI",
|
||||
},
|
||||
{
|
||||
.enumname = "SP",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "SP",
|
||||
},
|
||||
{
|
||||
.enumname = "SY",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "SY",
|
||||
},
|
||||
{
|
||||
.enumname = "WJ",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "WJ",
|
||||
},
|
||||
{
|
||||
.enumname = "ZW",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "ZW",
|
||||
},
|
||||
{
|
||||
.enumname = "ZWJ",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "ZWJ",
|
||||
},
|
||||
{
|
||||
.enumname = "TMP_AI",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "AI",
|
||||
},
|
||||
{
|
||||
.enumname = "TMP_CJ",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "CJ",
|
||||
},
|
||||
{
|
||||
.enumname = "TMP_XX",
|
||||
.file = NULL,
|
||||
.ucdname = NULL,
|
||||
},
|
||||
{
|
||||
.enumname = "TMP_MN",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "Mn",
|
||||
},
|
||||
{
|
||||
.enumname = "TMP_MC",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "Mc",
|
||||
},
|
||||
{
|
||||
.enumname = "TMP_SA_WITHOUT_MN_OR_MC",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "SA",
|
||||
},
|
||||
{
|
||||
.enumname = "TMP_SA_WITH_MN_OR_MC",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "SA",
|
||||
},
|
||||
{
|
||||
.enumname = "TMP_SG",
|
||||
.file = FILE_LINE,
|
||||
.ucdname = "SG",
|
||||
},
|
||||
{
|
||||
.enumname = "TMP_EAW_H",
|
||||
.file = FILE_EAW,
|
||||
.ucdname = "H",
|
||||
},
|
||||
{
|
||||
.enumname = "TMP_EAW_W",
|
||||
.file = FILE_EAW,
|
||||
.ucdname = "W",
|
||||
},
|
||||
{
|
||||
.enumname = "TMP_EAW_F",
|
||||
.file = FILE_EAW,
|
||||
.ucdname = "F",
|
||||
},
|
||||
};
|
||||
|
||||
static uint_least8_t
|
||||
handle_conflict(uint_least32_t cp, uint_least8_t prop1, uint_least8_t prop2)
|
||||
{
|
||||
uint_least8_t result = prop2;
|
||||
char *target = NULL;
|
||||
|
||||
(void)cp;
|
||||
|
||||
if ((!strcmp(line_break_property[prop1].enumname, "TMP_EAW_H") ||
|
||||
!strcmp(line_break_property[prop1].enumname, "TMP_EAW_W") ||
|
||||
!strcmp(line_break_property[prop1].enumname, "TMP_EAW_F")) ||
|
||||
(!strcmp(line_break_property[prop2].enumname, "TMP_EAW_H") ||
|
||||
!strcmp(line_break_property[prop2].enumname, "TMP_EAW_W") ||
|
||||
!strcmp(line_break_property[prop2].enumname, "TMP_EAW_F"))) {
|
||||
if (!strcmp(line_break_property[prop1].enumname, "CP_WITHOUT_EAW_HWF") ||
|
||||
!strcmp(line_break_property[prop2].enumname, "CP_WITHOUT_EAW_HWF")) {
|
||||
target = "CP_WITH_EAW_HWF";
|
||||
} else if (!strcmp(line_break_property[prop1].enumname, "OP_WITHOUT_EAW_HWF") ||
|
||||
!strcmp(line_break_property[prop2].enumname, "OP_WITHOUT_EAW_HWF")) {
|
||||
target = "OP_WITH_EAW_HWF";
|
||||
} else {
|
||||
/* ignore EAW for the rest */
|
||||
if ((!strcmp(line_break_property[prop1].enumname, "TMP_EAW_H") ||
|
||||
!strcmp(line_break_property[prop1].enumname, "TMP_EAW_W") ||
|
||||
!strcmp(line_break_property[prop1].enumname, "TMP_EAW_F"))) {
|
||||
result = prop2;
|
||||
} else {
|
||||
result = prop1;
|
||||
}
|
||||
}
|
||||
} else if ((!strcmp(line_break_property[prop1].enumname, "TMP_MN") ||
|
||||
!strcmp(line_break_property[prop1].enumname, "TMP_MC")) ||
|
||||
(!strcmp(line_break_property[prop2].enumname, "TMP_MN") ||
|
||||
!strcmp(line_break_property[prop2].enumname, "TMP_MC"))) {
|
||||
if (!strcmp(line_break_property[prop1].enumname, "SA_WITHOUT_MN_OR_MC") ||
|
||||
!strcmp(line_break_property[prop2].enumname, "SA_WITHOUT_MN_OR_MC")) {
|
||||
target = "SA_WITH_MN_OR_MC";
|
||||
} else {
|
||||
/* ignore Mn and Mc for the rest */
|
||||
if ((!strcmp(line_break_property[prop1].enumname, "TMP_MN") ||
|
||||
!strcmp(line_break_property[prop1].enumname, "TMP_MC"))) {
|
||||
result = prop2;
|
||||
} else {
|
||||
result = prop1;
|
||||
}
|
||||
}
|
||||
} else if (!strcmp(line_break_property[prop1].enumname, "TMP_CN") ||
|
||||
!strcmp(line_break_property[prop2].enumname, "TMP_CN")) {
|
||||
if (!strcmp(line_break_property[prop1].enumname, "TMP_EXTENDED_PICTOGRAPHIC") ||
|
||||
!strcmp(line_break_property[prop2].enumname, "TMP_EXTENDED_PICTOGRAPHIC")) {
|
||||
target = "BOTH_CN_EXTPICT";
|
||||
} else {
|
||||
/* ignore Cn for all the other properties */
|
||||
if (!strcmp(line_break_property[prop1].enumname, "TMP_CN")) {
|
||||
result = prop2;
|
||||
} else {
|
||||
result = prop1;
|
||||
}
|
||||
}
|
||||
} else if (!strcmp(line_break_property[prop1].enumname, "TMP_EXTENDED_PICTOGRAPHIC") ||
|
||||
!strcmp(line_break_property[prop2].enumname, "TMP_EXTENDED_PICTOGRAPHIC")) {
|
||||
if (!strcmp(line_break_property[prop1].enumname, "TMP_CN") ||
|
||||
!strcmp(line_break_property[prop2].enumname, "TMP_CN")) {
|
||||
target = "BOTH_CN_EXTPICT";
|
||||
} else {
|
||||
/* ignore Extended_Pictographic for all the other properties */
|
||||
if (!strcmp(line_break_property[prop1].enumname, "TMP_EXTENDED_PICTOGRAPHIC")) {
|
||||
result = prop2;
|
||||
} else {
|
||||
result = prop1;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
fprintf(stderr, "handle_conflict: Cannot handle conflict %s <- %s.\n",
|
||||
line_break_property[prop1].enumname, line_break_property[prop2].enumname);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (target) {
|
||||
for (result = 0; result < LEN(line_break_property); result++) {
|
||||
if (!strcmp(line_break_property[result].enumname,
|
||||
target)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (result == LEN(line_break_property)) {
|
||||
fprintf(stderr, "handle_conflict: Internal error.\n");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static uint_least8_t
|
||||
post_process(uint_least8_t prop)
|
||||
{
|
||||
const char *target = NULL;
|
||||
uint_least8_t result;
|
||||
|
||||
/* LB1 */
|
||||
if (!strcmp(line_break_property[prop].enumname, "TMP_AI") ||
|
||||
!strcmp(line_break_property[prop].enumname, "TMP_SG") ||
|
||||
!strcmp(line_break_property[prop].enumname, "TMP_XX")) {
|
||||
/* map AI, SG and XX to AL */
|
||||
target = "AL";
|
||||
} else if (!strcmp(line_break_property[prop].enumname, "TMP_SA_WITH_MN_OR_MC")) {
|
||||
/* map SA (with General_Category Mn or Mc) to CM */
|
||||
target = "CM";
|
||||
} else if (!strcmp(line_break_property[prop].enumname, "TMP_SA_WITHOUT_MN_OR_MC")) {
|
||||
/* map SA (without General_Category Mn or Mc) to AL */
|
||||
target = "AL";
|
||||
} else if (!strcmp(line_break_property[prop].enumname, "TMP_CJ")) {
|
||||
/* map CJ to NS */
|
||||
target = "NS";
|
||||
} else if (!strcmp(line_break_property[prop].enumname, "TMP_CN") ||
|
||||
!strcmp(line_break_property[prop].enumname, "TMP_EXTENDED_PICTOGRAPHIC") ||
|
||||
!strcmp(line_break_property[prop].enumname, "TMP_MN") ||
|
||||
!strcmp(line_break_property[prop].enumname, "TMP_MC") ||
|
||||
!strcmp(line_break_property[prop].enumname, "TMP_EAW_H") ||
|
||||
!strcmp(line_break_property[prop].enumname, "TMP_EAW_W") ||
|
||||
!strcmp(line_break_property[prop].enumname, "TMP_EAW_F")) {
|
||||
/* map all the temporary classes "residue" to AL */
|
||||
target = "AL";
|
||||
}
|
||||
|
||||
if (target) {
|
||||
for (result = 0; result < LEN(line_break_property); result++) {
|
||||
if (!strcmp(line_break_property[result].enumname,
|
||||
target)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (result == LEN(line_break_property)) {
|
||||
fprintf(stderr, "handle_conflict: Internal error.\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
return result;
|
||||
} else {
|
||||
return prop;
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
(void)argc;
|
||||
|
||||
properties_generate_break_property(line_break_property,
|
||||
LEN(line_break_property),
|
||||
handle_conflict, post_process,
|
||||
"line_break", argv[0]);
|
||||
|
||||
return 0;
|
||||
}
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
@@ -1,19 +0,0 @@
|
||||
/* See LICENSE file for copyright and license details. */
|
||||
#include <stddef.h>
|
||||
|
||||
#include "util.h"
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
struct break_test *test = NULL;
|
||||
size_t testlen = 0;
|
||||
|
||||
(void)argc;
|
||||
|
||||
break_test_list_parse("data/SentenceBreakTest.txt", &test, &testlen);
|
||||
break_test_list_print(test, testlen, "sentence_break_test", argv[0]);
|
||||
break_test_list_free(test, testlen);
|
||||
|
||||
return 0;
|
||||
}
|
@@ -1,94 +0,0 @@
|
||||
/* See LICENSE file for copyright and license details. */
|
||||
#include "util.h"
|
||||
|
||||
#define FILE_SENTENCE "data/SentenceBreakProperty.txt"
|
||||
|
||||
static const struct property_spec sentence_break_property[] = {
|
||||
{
|
||||
.enumname = "OTHER",
|
||||
.file = NULL,
|
||||
.ucdname = NULL,
|
||||
},
|
||||
{
|
||||
.enumname = "CR",
|
||||
.file = FILE_SENTENCE,
|
||||
.ucdname = "CR",
|
||||
},
|
||||
{
|
||||
.enumname = "LF",
|
||||
.file = FILE_SENTENCE,
|
||||
.ucdname = "LF",
|
||||
},
|
||||
{
|
||||
.enumname = "EXTEND",
|
||||
.file = FILE_SENTENCE,
|
||||
.ucdname = "Extend",
|
||||
},
|
||||
{
|
||||
.enumname = "SEP",
|
||||
.file = FILE_SENTENCE,
|
||||
.ucdname = "Sep",
|
||||
},
|
||||
{
|
||||
.enumname = "FORMAT",
|
||||
.file = FILE_SENTENCE,
|
||||
.ucdname = "Format",
|
||||
},
|
||||
{
|
||||
.enumname = "SP",
|
||||
.file = FILE_SENTENCE,
|
||||
.ucdname = "Sp",
|
||||
},
|
||||
{
|
||||
.enumname = "LOWER",
|
||||
.file = FILE_SENTENCE,
|
||||
.ucdname = "Lower",
|
||||
},
|
||||
{
|
||||
.enumname = "UPPER",
|
||||
.file = FILE_SENTENCE,
|
||||
.ucdname = "Upper",
|
||||
},
|
||||
{
|
||||
.enumname = "OLETTER",
|
||||
.file = FILE_SENTENCE,
|
||||
.ucdname = "OLetter",
|
||||
},
|
||||
{
|
||||
.enumname = "NUMERIC",
|
||||
.file = FILE_SENTENCE,
|
||||
.ucdname = "Numeric",
|
||||
},
|
||||
{
|
||||
.enumname = "ATERM",
|
||||
.file = FILE_SENTENCE,
|
||||
.ucdname = "ATerm",
|
||||
},
|
||||
{
|
||||
.enumname = "SCONTINUE",
|
||||
.file = FILE_SENTENCE,
|
||||
.ucdname = "SContinue",
|
||||
},
|
||||
{
|
||||
.enumname = "STERM",
|
||||
.file = FILE_SENTENCE,
|
||||
.ucdname = "STerm",
|
||||
},
|
||||
{
|
||||
.enumname = "CLOSE",
|
||||
.file = FILE_SENTENCE,
|
||||
.ucdname = "Close",
|
||||
},
|
||||
};
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
(void)argc;
|
||||
|
||||
properties_generate_break_property(sentence_break_property,
|
||||
LEN(sentence_break_property),
|
||||
NULL, NULL, "sentence_break", argv[0]);
|
||||
|
||||
return 0;
|
||||
}
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -1,16 +0,0 @@
|
||||
/* See LICENSE file for copyright and license details. */
|
||||
#ifndef TYPES_H
|
||||
#define TYPES_H
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
struct break_test {
|
||||
uint_least32_t *cp;
|
||||
size_t cplen;
|
||||
size_t *len;
|
||||
size_t lenlen;
|
||||
char *descr;
|
||||
};
|
||||
|
||||
#endif /* TYPES_H */
|
@@ -1,704 +0,0 @@
|
||||
/* See LICENSE file for copyright and license details. */
|
||||
#include <stdbool.h>
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <inttypes.h>
|
||||
#include <stdbool.h>
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "util.h"
|
||||
|
||||
struct range {
|
||||
uint_least32_t lower;
|
||||
uint_least32_t upper;
|
||||
};
|
||||
|
||||
struct properties_payload {
|
||||
struct properties *prop;
|
||||
const struct property_spec *spec;
|
||||
uint_least8_t speclen;
|
||||
int (*set_value)(struct properties_payload *, uint_least32_t, int_least64_t);
|
||||
uint_least8_t (*handle_conflict)(uint_least32_t, uint_least8_t, uint_least8_t);
|
||||
};
|
||||
|
||||
struct break_test_payload
|
||||
{
|
||||
struct break_test **test;
|
||||
size_t *testlen;
|
||||
};
|
||||
|
||||
static void *
|
||||
reallocate_array(void *p, size_t len, size_t size)
|
||||
{
|
||||
if (len > 0 && size > SIZE_MAX / len) {
|
||||
errno = ENOMEM;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return realloc(p, len * size);
|
||||
}
|
||||
|
||||
int
|
||||
hextocp(const char *str, size_t len, uint_least32_t *cp)
|
||||
{
|
||||
size_t i;
|
||||
int off;
|
||||
char relative;
|
||||
|
||||
/* the maximum valid codepoint is 0x10FFFF */
|
||||
if (len > 6) {
|
||||
fprintf(stderr, "hextocp: '%.*s' is too long.\n",
|
||||
(int)len, str);
|
||||
return 1;
|
||||
}
|
||||
|
||||
for (i = 0, *cp = 0; i < len; i++) {
|
||||
if (str[i] >= '0' && str[i] <= '9') {
|
||||
relative = '0';
|
||||
off = 0;
|
||||
} else if (str[i] >= 'a' && str[i] <= 'f') {
|
||||
relative = 'a';
|
||||
off = 10;
|
||||
} else if (str[i] >= 'A' && str[i] <= 'F') {
|
||||
relative = 'A';
|
||||
off = 10;
|
||||
} else {
|
||||
fprintf(stderr, "hextocp: '%.*s' is not hexadecimal.\n",
|
||||
(int)len, str);
|
||||
return 1;
|
||||
}
|
||||
|
||||
*cp += ((uint_least32_t)1 << (4 * (len - i - 1))) *
|
||||
(uint_least32_t)(str[i] - relative + off);
|
||||
}
|
||||
|
||||
if (*cp > UINT32_C(0x10FFFF)) {
|
||||
fprintf(stderr, "hextocp: '%.*s' is too large.\n",
|
||||
(int)len, str);
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
range_parse(const char *str, struct range *range)
|
||||
{
|
||||
char *p;
|
||||
|
||||
if ((p = strstr(str, "..")) == NULL) {
|
||||
/* input has the form "XXXXXX" */
|
||||
if (hextocp(str, strlen(str), &range->lower)) {
|
||||
return 1;
|
||||
}
|
||||
range->upper = range->lower;
|
||||
} else {
|
||||
/* input has the form "XXXXXX..XXXXXX" */
|
||||
if (hextocp(str, (size_t)(p - str), &range->lower) ||
|
||||
hextocp(p + 2, strlen(p + 2), &range->upper)) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
parse_file_with_callback(const char *fname, int (*callback)(const char *,
|
||||
char **, size_t, char *, void *), void *payload)
|
||||
{
|
||||
FILE *fp;
|
||||
char *line = NULL, **field = NULL, *comment;
|
||||
size_t linebufsize = 0, i, fieldbufsize = 0, j, nfields;
|
||||
ssize_t len;
|
||||
|
||||
/* open file */
|
||||
if (!(fp = fopen(fname, "r"))) {
|
||||
fprintf(stderr, "parse_file_with_callback: fopen '%s': %s.\n",
|
||||
fname, strerror(errno));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
while ((len = getline(&line, &linebufsize, fp)) >= 0) {
|
||||
/* remove trailing newline */
|
||||
if (len > 0 && line[len - 1] == '\n') {
|
||||
line[len - 1] = '\0';
|
||||
len--;
|
||||
}
|
||||
|
||||
/* skip empty lines and comment lines */
|
||||
if (len == 0 || line[0] == '#') {
|
||||
continue;
|
||||
}
|
||||
|
||||
/* tokenize line into fields */
|
||||
for (i = 0, nfields = 0, comment = NULL; i < (size_t)len; i++) {
|
||||
/* skip leading whitespace */
|
||||
while (line[i] == ' ') {
|
||||
i++;
|
||||
}
|
||||
|
||||
/* check if we crashed into the comment */
|
||||
if (line[i] != '#') {
|
||||
/* extend field buffer, if necessary */
|
||||
if (++nfields > fieldbufsize) {
|
||||
if ((field = realloc(field, nfields *
|
||||
sizeof(*field))) == NULL) {
|
||||
fprintf(stderr, "parse_file_with_"
|
||||
"callback: realloc: %s.\n",
|
||||
strerror(errno));
|
||||
exit(1);
|
||||
}
|
||||
fieldbufsize = nfields;
|
||||
}
|
||||
|
||||
/* set current position as field start */
|
||||
field[nfields - 1] = &line[i];
|
||||
|
||||
/* continue until we reach ';' or '#' or end */
|
||||
while (line[i] != ';' && line[i] != '#' &&
|
||||
line[i] != '\0') {
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
if (line[i] == '#') {
|
||||
/* set comment-variable for later */
|
||||
comment = &line[i + 1];
|
||||
}
|
||||
|
||||
/* go back whitespace and terminate field there */
|
||||
if (i > 0) {
|
||||
for (j = i - 1; line[j] == ' '; j--)
|
||||
;
|
||||
line[j + 1] = '\0';
|
||||
} else {
|
||||
line[i] = '\0';
|
||||
}
|
||||
|
||||
/* if comment is set, we are done */
|
||||
if (comment != NULL) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* skip leading whitespace in comment */
|
||||
while (comment != NULL && comment[0] == ' ') {
|
||||
comment++;
|
||||
}
|
||||
|
||||
/* call callback function */
|
||||
if (callback(fname, field, nfields, comment, payload)) {
|
||||
fprintf(stderr, "parse_file_with_callback: "
|
||||
"Malformed input.\n");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
free(line);
|
||||
free(field);
|
||||
}
|
||||
|
||||
static int
|
||||
properties_callback(const char *file, char **field, size_t nfields,
|
||||
char *comment, void *payload)
|
||||
{
|
||||
/* prop always has the length 0x110000 */
|
||||
struct properties_payload *p = (struct properties_payload *)payload;
|
||||
struct range r;
|
||||
uint_least8_t i;
|
||||
uint_least32_t cp;
|
||||
|
||||
(void)comment;
|
||||
|
||||
if (nfields < 2) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
for (i = 0; i < p->speclen; i++) {
|
||||
/* identify fitting file and identifier */
|
||||
if (p->spec[i].file &&
|
||||
!strcmp(p->spec[i].file, file) &&
|
||||
(!strcmp(p->spec[i].ucdname, field[1]) ||
|
||||
(comment != NULL && !strncmp(p->spec[i].ucdname, comment, strlen(p->spec[i].ucdname)) &&
|
||||
comment[strlen(p->spec[i].ucdname)] == ' '))) {
|
||||
/* parse range in first field */
|
||||
if (range_parse(field[0], &r)) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* apply to all codepoints in the range */
|
||||
for (cp = r.lower; cp <= r.upper; cp++) {
|
||||
if (p->set_value(payload, cp, i)) {
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
properties_compress(const struct properties *prop,
|
||||
struct properties_compressed *comp)
|
||||
{
|
||||
uint_least32_t cp, i;
|
||||
|
||||
/* initialization */
|
||||
if (!(comp->offset = malloc((size_t)UINT32_C(0x110000) * sizeof(*(comp->offset))))) {
|
||||
fprintf(stderr, "malloc: %s\n", strerror(errno));
|
||||
exit(1);
|
||||
}
|
||||
comp->data = NULL;
|
||||
comp->datalen = 0;
|
||||
|
||||
for (cp = 0; cp < UINT32_C(0x110000); cp++) {
|
||||
for (i = 0; i < comp->datalen; i++) {
|
||||
if (!memcmp(&(prop[cp]), &(comp->data[i]), sizeof(*prop))) {
|
||||
/* found a match! */
|
||||
comp->offset[cp] = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i == comp->datalen) {
|
||||
/*
|
||||
* found no matching properties-struct, so
|
||||
* add current properties to data and add the
|
||||
* offset in the offset-table
|
||||
*/
|
||||
if (!(comp->data = reallocate_array(comp->data,
|
||||
++(comp->datalen),
|
||||
sizeof(*(comp->data))))) {
|
||||
fprintf(stderr, "reallocate_array: %s\n",
|
||||
strerror(errno));
|
||||
exit(1);
|
||||
}
|
||||
memcpy(&(comp->data[comp->datalen - 1]), &(prop[cp]),
|
||||
sizeof(*prop));
|
||||
comp->offset[cp] = comp->datalen - 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
double
|
||||
properties_get_major_minor(const struct properties_compressed *comp,
|
||||
struct properties_major_minor *mm)
|
||||
{
|
||||
size_t i, j, compression_count = 0;
|
||||
|
||||
/*
|
||||
* we currently have an array comp->offset which maps the
|
||||
* codepoints 0..0x110000 to offsets into comp->data.
|
||||
* To improve cache-locality instead and allow a bit of
|
||||
* compressing, instead of directly mapping a codepoint
|
||||
* 0xAAAABB with comp->offset, we generate two arrays major
|
||||
* and minor such that
|
||||
* comp->offset(0xAAAABB) == minor[major[0xAAAA] + 0xBB]
|
||||
* This yields a major-array of length 2^16 and a minor array
|
||||
* of variable length depending on how many common subsequences
|
||||
* can be filtered out.
|
||||
*/
|
||||
|
||||
/* initialize */
|
||||
if (!(mm->major = malloc((size_t)0x1100 * sizeof(*(mm->major))))) {
|
||||
fprintf(stderr, "malloc: %s\n", strerror(errno));
|
||||
exit(1);
|
||||
}
|
||||
mm->minor = NULL;
|
||||
mm->minorlen = 0;
|
||||
|
||||
for (i = 0; i < (size_t)0x1100; i++) {
|
||||
/*
|
||||
* we now look at the cp-range (i << 8)..(i << 8 + 0xFF)
|
||||
* and check if its corresponding offset-data already
|
||||
* exists in minor (because then we just point there
|
||||
* and need less storage)
|
||||
*/
|
||||
for (j = 0; j + 0xFF < mm->minorlen; j++) {
|
||||
if (!memcmp(&(comp->offset[i << 8]),
|
||||
&(mm->minor[j]),
|
||||
sizeof(*(comp->offset)) * 0x100)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (j + 0xFF < mm->minorlen) {
|
||||
/* found an index */
|
||||
compression_count++;
|
||||
mm->major[i] = j;
|
||||
} else {
|
||||
/*
|
||||
* add "new" sequence to minor and point to it
|
||||
* in major
|
||||
*/
|
||||
mm->minorlen += 0x100;
|
||||
if (!(mm->minor = reallocate_array(mm->minor,
|
||||
mm->minorlen,
|
||||
sizeof(*(mm->minor))))) {
|
||||
fprintf(stderr, "reallocate_array: %s\n",
|
||||
strerror(errno));
|
||||
exit(1);
|
||||
}
|
||||
memcpy(&(mm->minor[mm->minorlen - 0x100]),
|
||||
&(comp->offset[i << 8]),
|
||||
sizeof(*(mm->minor)) * 0x100);
|
||||
mm->major[i] = mm->minorlen - 0x100;
|
||||
}
|
||||
}
|
||||
|
||||
/* return compression ratio */
|
||||
return (double)compression_count / 0x1100 * 100;
|
||||
}
|
||||
|
||||
void
|
||||
properties_print_lookup_table(char *name, size_t *data, size_t datalen)
|
||||
{
|
||||
char *type;
|
||||
size_t i, maxval;
|
||||
|
||||
for (i = 0, maxval = 0; i < datalen; i++) {
|
||||
if (data[i] > maxval) {
|
||||
maxval = data[i];
|
||||
}
|
||||
}
|
||||
|
||||
type = (maxval <= UINT_LEAST8_MAX) ? "uint_least8_t" :
|
||||
(maxval <= UINT_LEAST16_MAX) ? "uint_least16_t" :
|
||||
(maxval <= UINT_LEAST32_MAX) ? "uint_least32_t" :
|
||||
"uint_least64_t";
|
||||
|
||||
printf("static const %s %s[] = {\n\t", type, name);
|
||||
for (i = 0; i < datalen; i++) {
|
||||
printf("%zu", data[i]);
|
||||
if (i + 1 == datalen) {
|
||||
printf("\n");
|
||||
} else if ((i + 1) % 8 != 0) {
|
||||
printf(", ");
|
||||
} else {
|
||||
printf(",\n\t");
|
||||
}
|
||||
|
||||
}
|
||||
printf("};\n");
|
||||
}
|
||||
|
||||
void
|
||||
properties_print_derived_lookup_table(char *name, char *type, size_t *offset, size_t offsetlen,
|
||||
int_least64_t (*get_value)(const struct properties *,
|
||||
size_t), const void *payload)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
printf("static const %s %s[] = {\n\t", type, name);
|
||||
for (i = 0; i < offsetlen; i++) {
|
||||
printf("%"PRIiLEAST64, get_value(payload, offset[i]));
|
||||
if (i + 1 == offsetlen) {
|
||||
printf("\n");
|
||||
} else if ((i + 1) % 8 != 0) {
|
||||
printf(", ");
|
||||
} else {
|
||||
printf(",\n\t");
|
||||
}
|
||||
|
||||
}
|
||||
printf("};\n");
|
||||
}
|
||||
|
||||
static void
|
||||
properties_print_enum(const struct property_spec *spec, size_t speclen,
|
||||
const char *enumname, const char *enumprefix)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
printf("enum %s {\n", enumname);
|
||||
for (i = 0; i < speclen; i++) {
|
||||
printf("\t%s_%s,\n", enumprefix, spec[i].enumname);
|
||||
}
|
||||
printf("\tNUM_%sS,\n};\n\n", enumprefix);
|
||||
}
|
||||
|
||||
static int
|
||||
set_value_bp(struct properties_payload *payload, uint_least32_t cp,
|
||||
int_least64_t value)
|
||||
{
|
||||
if (payload->prop[cp].property != 0) {
|
||||
if (payload->handle_conflict == NULL) {
|
||||
fprintf(stderr, "set_value_bp: "
|
||||
"Unhandled character break property "
|
||||
"overwrite for 0x%06X (%s <- %s).\n",
|
||||
cp, payload->spec[payload->prop[cp].
|
||||
property].enumname,
|
||||
payload->spec[value].enumname);
|
||||
return 1;
|
||||
} else {
|
||||
value = payload->handle_conflict(cp,
|
||||
(uint_least8_t)payload->prop[cp].property,
|
||||
(uint_least8_t)value);
|
||||
}
|
||||
}
|
||||
payload->prop[cp].property = value;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int_least64_t
|
||||
get_value_bp(const struct properties *prop, size_t offset)
|
||||
{
|
||||
return (uint_least8_t)prop[offset].property;
|
||||
}
|
||||
|
||||
void
|
||||
properties_generate_break_property(const struct property_spec *spec,
|
||||
uint_least8_t speclen,
|
||||
uint_least8_t (*handle_conflict)(
|
||||
uint_least32_t, uint_least8_t,
|
||||
uint_least8_t), uint_least8_t
|
||||
(*post_process)(uint_least8_t),
|
||||
const char *prefix, const char *argv0)
|
||||
{
|
||||
struct properties_compressed comp;
|
||||
struct properties_major_minor mm;
|
||||
struct properties_payload payload;
|
||||
struct properties *prop;
|
||||
size_t i, j, prefixlen = strlen(prefix);
|
||||
char buf1[64], prefix_uc[64], buf2[64], buf3[64], buf4[64];
|
||||
|
||||
/* allocate property buffer for all 0x110000 codepoints */
|
||||
if (!(prop = calloc(UINT32_C(0x110000), sizeof(*prop)))) {
|
||||
fprintf(stderr, "calloc: %s\n", strerror(errno));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* generate data */
|
||||
payload.prop = prop;
|
||||
payload.spec = spec;
|
||||
payload.speclen = speclen;
|
||||
payload.set_value = set_value_bp;
|
||||
payload.handle_conflict = handle_conflict;
|
||||
|
||||
/* parse each file exactly once and ignore NULL-fields */
|
||||
for (i = 0; i < speclen; i++) {
|
||||
for (j = 0; j < i; j++) {
|
||||
if (spec[i].file && spec[j].file &&
|
||||
!strcmp(spec[i].file, spec[j].file)) {
|
||||
/* file has already been parsed */
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i == j && spec[i].file) {
|
||||
/* file has not been processed yet */
|
||||
parse_file_with_callback(spec[i].file,
|
||||
properties_callback,
|
||||
&payload);
|
||||
}
|
||||
}
|
||||
|
||||
/* post-processing */
|
||||
if (post_process != NULL) {
|
||||
for (i = 0; i < UINT32_C(0x110000); i++) {
|
||||
payload.prop[i].property =
|
||||
post_process((uint_least8_t)payload.prop[i].property);
|
||||
}
|
||||
}
|
||||
|
||||
/* compress data */
|
||||
printf("/* Automatically generated by %s */\n#include <stdint.h>\n\n", argv0);
|
||||
properties_compress(prop, &comp);
|
||||
|
||||
fprintf(stderr, "%s: %s-LUT compression-ratio: %.2f%%\n", argv0,
|
||||
prefix, properties_get_major_minor(&comp, &mm));
|
||||
|
||||
/* prepare names */
|
||||
if ((size_t)snprintf(buf1, LEN(buf1), "%s_property", prefix) >= LEN(buf1)) {
|
||||
fprintf(stderr, "snprintf: String truncated.\n");
|
||||
exit(1);
|
||||
}
|
||||
if (LEN(prefix_uc) + 1 < prefixlen) {
|
||||
fprintf(stderr, "snprintf: Buffer too small.\n");
|
||||
exit(1);
|
||||
}
|
||||
for (i = 0; i < prefixlen; i++) {
|
||||
prefix_uc[i] = (char)toupper(prefix[i]);
|
||||
}
|
||||
prefix_uc[prefixlen] = '\0';
|
||||
if ((size_t)snprintf(buf2, LEN(buf2), "%s_PROP", prefix_uc) >= LEN(buf2) ||
|
||||
(size_t)snprintf(buf3, LEN(buf3), "%s_major", prefix) >= LEN(buf3) ||
|
||||
(size_t)snprintf(buf4, LEN(buf4), "%s_minor", prefix) >= LEN(buf4)) {
|
||||
fprintf(stderr, "snprintf: String truncated.\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* print data */
|
||||
properties_print_enum(spec, speclen, buf1, buf2);
|
||||
properties_print_lookup_table(buf3, mm.major, 0x1100);
|
||||
printf("\n");
|
||||
properties_print_derived_lookup_table(buf4, "uint_least8_t", mm.minor, mm.minorlen,
|
||||
get_value_bp, comp.data);
|
||||
|
||||
/* free data */
|
||||
free(prop);
|
||||
free(comp.data);
|
||||
free(comp.offset);
|
||||
free(mm.major);
|
||||
free(mm.minor);
|
||||
}
|
||||
|
||||
static int
|
||||
break_test_callback(const char *fname, char **field, size_t nfields,
|
||||
char *comment, void *payload)
|
||||
{
|
||||
struct break_test *t,
|
||||
**test = ((struct break_test_payload *)payload)->test;
|
||||
size_t i, *testlen = ((struct break_test_payload *)payload)->testlen;
|
||||
char *token;
|
||||
|
||||
(void)fname;
|
||||
|
||||
if (nfields < 1) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* append new testcase and initialize with zeroes */
|
||||
if ((*test = realloc(*test, ++(*testlen) * sizeof(**test))) == NULL) {
|
||||
fprintf(stderr, "break_test_callback: realloc: %s.\n",
|
||||
strerror(errno));
|
||||
return 1;
|
||||
}
|
||||
t = &(*test)[*testlen - 1];
|
||||
memset(t, 0, sizeof(*t));
|
||||
|
||||
/* parse testcase "<÷|×> <cp> <÷|×> ... <cp> <÷|×>" */
|
||||
for (token = strtok(field[0], " "), i = 0; token != NULL; i++,
|
||||
token = strtok(NULL, " ")) {
|
||||
if (i % 2 == 0) {
|
||||
/* delimiter or start of sequence */
|
||||
if (i == 0 || !strncmp(token, "\xC3\xB7", 2)) { /* UTF-8 */
|
||||
/*
|
||||
* '÷' indicates a breakpoint,
|
||||
* the current length is done; allocate
|
||||
* a new length field and set it to 0
|
||||
*/
|
||||
if ((t->len = realloc(t->len,
|
||||
++t->lenlen * sizeof(*t->len))) == NULL) {
|
||||
fprintf(stderr, "break_test_"
|
||||
"callback: realloc: %s.\n",
|
||||
strerror(errno));
|
||||
return 1;
|
||||
}
|
||||
t->len[t->lenlen - 1] = 0;
|
||||
} else if (!strncmp(token, "\xC3\x97", 2)) { /* UTF-8 */
|
||||
/*
|
||||
* '×' indicates a non-breakpoint, do nothing
|
||||
*/
|
||||
} else {
|
||||
fprintf(stderr, "break_test_callback: "
|
||||
"Malformed delimiter '%s'.\n", token);
|
||||
return 1;
|
||||
}
|
||||
} else {
|
||||
/* add codepoint to cp-array */
|
||||
if ((t->cp = realloc(t->cp, ++t->cplen *
|
||||
sizeof(*t->cp))) == NULL) {
|
||||
fprintf(stderr, "break_test_callback: "
|
||||
"realloc: %s.\n", strerror(errno));
|
||||
return 1;
|
||||
}
|
||||
if (hextocp(token, strlen(token), &t->cp[t->cplen - 1])) {
|
||||
return 1;
|
||||
}
|
||||
if (t->lenlen > 0) {
|
||||
t->len[t->lenlen - 1]++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (t->len[t->lenlen - 1] == 0) {
|
||||
/*
|
||||
* we allocated one more length than we needed because
|
||||
* the breakpoint was at the end
|
||||
*/
|
||||
t->lenlen--;
|
||||
}
|
||||
|
||||
/* store comment */
|
||||
if (((*test)[*testlen - 1].descr = strdup(comment)) == NULL) {
|
||||
fprintf(stderr, "break_test_callback: strdup: %s.\n",
|
||||
strerror(errno));
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
break_test_list_parse(char *fname, struct break_test **test,
|
||||
size_t *testlen)
|
||||
{
|
||||
struct break_test_payload pl = {
|
||||
.test = test,
|
||||
.testlen = testlen,
|
||||
};
|
||||
*test = NULL;
|
||||
*testlen = 0;
|
||||
|
||||
parse_file_with_callback(fname, break_test_callback, &pl);
|
||||
}
|
||||
|
||||
void
|
||||
break_test_list_print(const struct break_test *test, size_t testlen,
|
||||
const char *identifier, const char *progname)
|
||||
{
|
||||
size_t i, j;
|
||||
|
||||
printf("/* Automatically generated by %s */\n"
|
||||
"#include <stdint.h>\n#include <stddef.h>\n\n"
|
||||
"#include \"../gen/types.h\"\n\n", progname);
|
||||
|
||||
printf("static const struct break_test %s[] = {\n", identifier);
|
||||
for (i = 0; i < testlen; i++) {
|
||||
printf("\t{\n");
|
||||
|
||||
printf("\t\t.cp = (uint_least32_t[]){");
|
||||
for (j = 0; j < test[i].cplen; j++) {
|
||||
printf(" UINT32_C(0x%06X)", test[i].cp[j]);
|
||||
if (j + 1 < test[i].cplen) {
|
||||
putchar(',');
|
||||
}
|
||||
}
|
||||
printf(" },\n");
|
||||
printf("\t\t.cplen = %zu,\n", test[i].cplen);
|
||||
|
||||
printf("\t\t.len = (size_t[]){");
|
||||
for (j = 0; j < test[i].lenlen; j++) {
|
||||
printf(" %zu", test[i].len[j]);
|
||||
if (j + 1 < test[i].lenlen) {
|
||||
putchar(',');
|
||||
}
|
||||
}
|
||||
printf(" },\n");
|
||||
printf("\t\t.lenlen = %zu,\n", test[i].lenlen);
|
||||
|
||||
printf("\t\t.descr = \"%s\",\n", test[i].descr);
|
||||
|
||||
printf("\t},\n");
|
||||
}
|
||||
printf("};\n");
|
||||
}
|
||||
|
||||
void
|
||||
break_test_list_free(struct break_test *test, size_t testlen)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
for (i = 0; i < testlen; i++) {
|
||||
free(test[i].cp);
|
||||
free(test[i].len);
|
||||
free(test[i].descr);
|
||||
}
|
||||
|
||||
free(test);
|
||||
}
|
@@ -1,60 +0,0 @@
|
||||
/* See LICENSE file for copyright and license details. */
|
||||
#ifndef UTIL_H
|
||||
#define UTIL_H
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#define LEN(x) (sizeof (x) / sizeof *(x))
|
||||
|
||||
struct property_spec {
|
||||
const char *enumname;
|
||||
const char *file;
|
||||
const char *ucdname;
|
||||
};
|
||||
|
||||
struct properties {
|
||||
int_least64_t property;
|
||||
};
|
||||
|
||||
struct properties_compressed {
|
||||
size_t *offset;
|
||||
struct properties *data;
|
||||
size_t datalen;
|
||||
};
|
||||
|
||||
struct properties_major_minor {
|
||||
size_t *major;
|
||||
size_t *minor;
|
||||
size_t minorlen;
|
||||
};
|
||||
|
||||
int hextocp(const char *, size_t, uint_least32_t *cp);
|
||||
|
||||
void parse_file_with_callback(const char *, int (*callback)(const char *,
|
||||
char **, size_t, char *, void *), void *payload);
|
||||
|
||||
void properties_compress(const struct properties *, struct properties_compressed *comp);
|
||||
double properties_get_major_minor(const struct properties_compressed *,
|
||||
struct properties_major_minor *);
|
||||
void properties_print_lookup_table(char *, size_t *, size_t);
|
||||
void properties_print_derived_lookup_table(char *, char *, size_t *, size_t,
|
||||
int_least64_t (*get_value)(const struct properties *,
|
||||
size_t), const void *);
|
||||
|
||||
void properties_generate_break_property(const struct property_spec *,
|
||||
uint_least8_t, uint_least8_t
|
||||
(*handle_conflict)(uint_least32_t,
|
||||
uint_least8_t, uint_least8_t),
|
||||
uint_least8_t (*post_process)
|
||||
(uint_least8_t), const char *,
|
||||
const char *);
|
||||
|
||||
void break_test_list_parse(char *, struct break_test **, size_t *);
|
||||
void break_test_list_print(const struct break_test *, size_t,
|
||||
const char *, const char *);
|
||||
void break_test_list_free(struct break_test *, size_t);
|
||||
|
||||
#endif /* UTIL_H */
|
Binary file not shown.
Binary file not shown.
@@ -1,19 +0,0 @@
|
||||
/* See LICENSE file for copyright and license details. */
|
||||
#include <stddef.h>
|
||||
|
||||
#include "util.h"
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
struct break_test *test = NULL;
|
||||
size_t testlen = 0;
|
||||
|
||||
(void)argc;
|
||||
|
||||
break_test_list_parse("data/WordBreakTest.txt", &test, &testlen);
|
||||
break_test_list_print(test, testlen, "word_break_test", argv[0]);
|
||||
break_test_list_free(test, testlen);
|
||||
|
||||
return 0;
|
||||
}
|
@@ -1,159 +0,0 @@
|
||||
/* See LICENSE file for copyright and license details. */
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "util.h"
|
||||
|
||||
#define FILE_EMOJI "data/emoji-data.txt"
|
||||
#define FILE_WORD "data/WordBreakProperty.txt"
|
||||
|
||||
static const struct property_spec word_break_property[] = {
|
||||
{
|
||||
.enumname = "OTHER",
|
||||
.file = NULL,
|
||||
.ucdname = NULL,
|
||||
},
|
||||
{
|
||||
.enumname = "ALETTER",
|
||||
.file = FILE_WORD,
|
||||
.ucdname = "ALetter",
|
||||
},
|
||||
{
|
||||
.enumname = "BOTH_ALETTER_EXTPICT",
|
||||
.file = NULL,
|
||||
.ucdname = NULL,
|
||||
},
|
||||
{
|
||||
.enumname = "CR",
|
||||
.file = FILE_WORD,
|
||||
.ucdname = "CR",
|
||||
},
|
||||
{
|
||||
.enumname = "DOUBLE_QUOTE",
|
||||
.file = FILE_WORD,
|
||||
.ucdname = "Double_Quote",
|
||||
},
|
||||
{
|
||||
.enumname = "EXTEND",
|
||||
.file = FILE_WORD,
|
||||
.ucdname = "Extend",
|
||||
},
|
||||
{
|
||||
.enumname = "EXTENDED_PICTOGRAPHIC",
|
||||
.file = FILE_EMOJI,
|
||||
.ucdname = "Extended_Pictographic",
|
||||
},
|
||||
{
|
||||
.enumname = "EXTENDNUMLET",
|
||||
.file = FILE_WORD,
|
||||
.ucdname = "ExtendNumLet",
|
||||
},
|
||||
{
|
||||
.enumname = "FORMAT",
|
||||
.file = FILE_WORD,
|
||||
.ucdname = "Format",
|
||||
},
|
||||
{
|
||||
.enumname = "HEBREW_LETTER",
|
||||
.file = FILE_WORD,
|
||||
.ucdname = "Hebrew_Letter",
|
||||
},
|
||||
{
|
||||
.enumname = "KATAKANA",
|
||||
.file = FILE_WORD,
|
||||
.ucdname = "Katakana",
|
||||
},
|
||||
{
|
||||
.enumname = "LF",
|
||||
.file = FILE_WORD,
|
||||
.ucdname = "LF",
|
||||
},
|
||||
{
|
||||
.enumname = "MIDLETTER",
|
||||
.file = FILE_WORD,
|
||||
.ucdname = "MidLetter",
|
||||
},
|
||||
{
|
||||
.enumname = "MIDNUM",
|
||||
.file = FILE_WORD,
|
||||
.ucdname = "MidNum",
|
||||
},
|
||||
{
|
||||
.enumname = "MIDNUMLET",
|
||||
.file = FILE_WORD,
|
||||
.ucdname = "MidNumLet",
|
||||
},
|
||||
{
|
||||
.enumname = "NEWLINE",
|
||||
.file = FILE_WORD,
|
||||
.ucdname = "Newline",
|
||||
},
|
||||
{
|
||||
.enumname = "NUMERIC",
|
||||
.file = FILE_WORD,
|
||||
.ucdname = "Numeric",
|
||||
},
|
||||
{
|
||||
.enumname = "REGIONAL_INDICATOR",
|
||||
.file = FILE_WORD,
|
||||
.ucdname = "Regional_Indicator",
|
||||
},
|
||||
{
|
||||
.enumname = "SINGLE_QUOTE",
|
||||
.file = FILE_WORD,
|
||||
.ucdname = "Single_Quote",
|
||||
},
|
||||
{
|
||||
.enumname = "WSEGSPACE",
|
||||
.file = FILE_WORD,
|
||||
.ucdname = "WSegSpace",
|
||||
},
|
||||
{
|
||||
.enumname = "ZWJ",
|
||||
.file = FILE_WORD,
|
||||
.ucdname = "ZWJ",
|
||||
},
|
||||
};
|
||||
|
||||
static uint_least8_t
|
||||
handle_conflict(uint_least32_t cp, uint_least8_t prop1, uint_least8_t prop2)
|
||||
{
|
||||
uint_least8_t result;
|
||||
|
||||
(void)cp;
|
||||
|
||||
if ((!strcmp(word_break_property[prop1].enumname, "ALETTER") &&
|
||||
!strcmp(word_break_property[prop2].enumname, "EXTENDED_PICTOGRAPHIC")) ||
|
||||
(!strcmp(word_break_property[prop1].enumname, "EXTENDED_PICTOGRAPHIC") &&
|
||||
!strcmp(word_break_property[prop2].enumname, "ALETTER"))) {
|
||||
for (result = 0; result < LEN(word_break_property); result++) {
|
||||
if (!strcmp(word_break_property[result].enumname,
|
||||
"BOTH_ALETTER_EXTPICT")) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (result == LEN(word_break_property)) {
|
||||
fprintf(stderr, "handle_conflict: Internal error.\n");
|
||||
exit(1);
|
||||
}
|
||||
} else {
|
||||
fprintf(stderr, "handle_conflict: Cannot handle conflict.\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
(void)argc;
|
||||
|
||||
properties_generate_break_property(word_break_property,
|
||||
LEN(word_break_property),
|
||||
handle_conflict, NULL, "word_break",
|
||||
argv[0]);
|
||||
|
||||
return 0;
|
||||
}
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -1,42 +0,0 @@
|
||||
/* See LICENSE file for copyright and license details. */
|
||||
#ifndef GRAPHEME_H
|
||||
#define GRAPHEME_H
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#define GRAPHEME_INVALID_CODEPOINT UINT32_C(0xFFFD)
|
||||
|
||||
size_t grapheme_decode_utf8(const char *, size_t, uint_least32_t *);
|
||||
size_t grapheme_encode_utf8(uint_least32_t, char *, size_t);
|
||||
|
||||
bool grapheme_is_character_break(uint_least32_t, uint_least32_t, uint_least16_t *);
|
||||
|
||||
bool grapheme_is_lowercase(const uint_least32_t *, size_t, size_t *);
|
||||
bool grapheme_is_titlecase(const uint_least32_t *, size_t, size_t *);
|
||||
bool grapheme_is_uppercase(const uint_least32_t *, size_t, size_t *);
|
||||
|
||||
bool grapheme_is_lowercase_utf8(const char *, size_t, size_t *);
|
||||
bool grapheme_is_titlecase_utf8(const char *, size_t, size_t *);
|
||||
bool grapheme_is_uppercase_utf8(const char *, size_t, size_t *);
|
||||
|
||||
size_t grapheme_next_character_break(const uint_least32_t *, size_t);
|
||||
size_t grapheme_next_line_break(const uint_least32_t *, size_t);
|
||||
size_t grapheme_next_sentence_break(const uint_least32_t *, size_t);
|
||||
size_t grapheme_next_word_break(const uint_least32_t *, size_t);
|
||||
|
||||
size_t grapheme_next_character_break_utf8(const char *, size_t);
|
||||
size_t grapheme_next_line_break_utf8(const char *, size_t);
|
||||
size_t grapheme_next_sentence_break_utf8(const char *, size_t);
|
||||
size_t grapheme_next_word_break_utf8(const char *, size_t);
|
||||
|
||||
size_t grapheme_to_lowercase(const uint_least32_t *, size_t, uint_least32_t *, size_t);
|
||||
size_t grapheme_to_titlecase(const uint_least32_t *, size_t, uint_least32_t *, size_t);
|
||||
size_t grapheme_to_uppercase(const uint_least32_t *, size_t, uint_least32_t *, size_t);
|
||||
|
||||
size_t grapheme_to_lowercase_utf8(const char *, size_t, char *, size_t);
|
||||
size_t grapheme_to_titlecase_utf8(const char *, size_t, char *, size_t);
|
||||
size_t grapheme_to_uppercase_utf8(const char *, size_t, char *, size_t);
|
||||
|
||||
#endif /* GRAPHEME_H */
|
Binary file not shown.
Binary file not shown.
@@ -1,100 +0,0 @@
|
||||
.Dd 2022-10-06
|
||||
.Dt GRAPHEME_DECODE_UTF8 3
|
||||
.Os suckless.org
|
||||
.Sh NAME
|
||||
.Nm grapheme_decode_utf8
|
||||
.Nd decode first codepoint in UTF-8-encoded string
|
||||
.Sh SYNOPSIS
|
||||
.In grapheme.h
|
||||
.Ft size_t
|
||||
.Fn grapheme_decode_utf8 "const char *str" "size_t len" "uint_least32_t *cp"
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Fn grapheme_decode_utf8
|
||||
function decodes the first codepoint in the UTF-8-encoded string
|
||||
.Va str
|
||||
of length
|
||||
.Va len .
|
||||
If the UTF-8-sequence is invalid (overlong encoding, unexpected byte,
|
||||
string ends unexpectedly, empty string, etc.) the decoding is stopped
|
||||
at the last processed byte and the decoded codepoint set to
|
||||
.Dv GRAPHEME_INVALID_CODEPOINT .
|
||||
.Pp
|
||||
If
|
||||
.Va cp
|
||||
is not
|
||||
.Dv NULL
|
||||
the decoded codepoint is stored in the memory pointed to by
|
||||
.Va cp .
|
||||
.Pp
|
||||
Given NUL has a unique 1 byte representation, it is safe to operate on
|
||||
NUL-terminated strings by setting
|
||||
.Va len
|
||||
to
|
||||
.Dv SIZE_MAX
|
||||
(stdint.h is already included by grapheme.h) and terminating when
|
||||
.Va cp
|
||||
is 0 (see
|
||||
.Sx EXAMPLES
|
||||
for an example).
|
||||
.Sh RETURN VALUES
|
||||
The
|
||||
.Fn grapheme_decode_utf8
|
||||
function returns the number of processed bytes and 0 if
|
||||
.Va str
|
||||
is
|
||||
.Dv NULL
|
||||
or
|
||||
.Va len
|
||||
is 0.
|
||||
If the string ends unexpectedly in a multibyte sequence, the desired
|
||||
length (that is larger than
|
||||
.Va len )
|
||||
is returned.
|
||||
.Sh EXAMPLES
|
||||
.Bd -literal
|
||||
/* cc (-static) -o example example.c -lgrapheme */
|
||||
#include <grapheme.h>
|
||||
#include <inttypes.h>
|
||||
#include <stdio.h>
|
||||
|
||||
void
|
||||
print_cps(const char *str, size_t len)
|
||||
{
|
||||
size_t ret, off;
|
||||
uint_least32_t cp;
|
||||
|
||||
for (off = 0; off < len; off += ret) {
|
||||
if ((ret = grapheme_decode_utf8(str + off,
|
||||
len - off, &cp)) > (len - off)) {
|
||||
/*
|
||||
* string ended unexpectedly in the middle of a
|
||||
* multibyte sequence and we have the choice
|
||||
* here to possibly expand str by ret - len + off
|
||||
* bytes to get a full sequence, but we just
|
||||
* bail out in this case.
|
||||
*/
|
||||
break;
|
||||
}
|
||||
printf("%"PRIxLEAST32"\\n", cp);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
print_cps_nul_terminated(const char *str)
|
||||
{
|
||||
size_t ret, off;
|
||||
uint_least32_t cp;
|
||||
|
||||
for (off = 0; (ret = grapheme_decode_utf8(str + off,
|
||||
SIZE_MAX, &cp)) > 0 &&
|
||||
cp != 0; off += ret) {
|
||||
printf("%"PRIxLEAST32"\\n", cp);
|
||||
}
|
||||
}
|
||||
.Ed
|
||||
.Sh SEE ALSO
|
||||
.Xr grapheme_encode_utf8 3 ,
|
||||
.Xr libgrapheme 7
|
||||
.Sh AUTHORS
|
||||
.An Laslo Hunhold Aq Mt dev@frign.de
|
@@ -1,102 +0,0 @@
|
||||
cat << EOF
|
||||
.Dd ${MAN_DATE}
|
||||
.Dt GRAPHEME_DECODE_UTF8 3
|
||||
.Os suckless.org
|
||||
.Sh NAME
|
||||
.Nm grapheme_decode_utf8
|
||||
.Nd decode first codepoint in UTF-8-encoded string
|
||||
.Sh SYNOPSIS
|
||||
.In grapheme.h
|
||||
.Ft size_t
|
||||
.Fn grapheme_decode_utf8 "const char *str" "size_t len" "uint_least32_t *cp"
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Fn grapheme_decode_utf8
|
||||
function decodes the first codepoint in the UTF-8-encoded string
|
||||
.Va str
|
||||
of length
|
||||
.Va len .
|
||||
If the UTF-8-sequence is invalid (overlong encoding, unexpected byte,
|
||||
string ends unexpectedly, empty string, etc.) the decoding is stopped
|
||||
at the last processed byte and the decoded codepoint set to
|
||||
.Dv GRAPHEME_INVALID_CODEPOINT .
|
||||
.Pp
|
||||
If
|
||||
.Va cp
|
||||
is not
|
||||
.Dv NULL
|
||||
the decoded codepoint is stored in the memory pointed to by
|
||||
.Va cp .
|
||||
.Pp
|
||||
Given NUL has a unique 1 byte representation, it is safe to operate on
|
||||
NUL-terminated strings by setting
|
||||
.Va len
|
||||
to
|
||||
.Dv SIZE_MAX
|
||||
(stdint.h is already included by grapheme.h) and terminating when
|
||||
.Va cp
|
||||
is 0 (see
|
||||
.Sx EXAMPLES
|
||||
for an example).
|
||||
.Sh RETURN VALUES
|
||||
The
|
||||
.Fn grapheme_decode_utf8
|
||||
function returns the number of processed bytes and 0 if
|
||||
.Va str
|
||||
is
|
||||
.Dv NULL
|
||||
or
|
||||
.Va len
|
||||
is 0.
|
||||
If the string ends unexpectedly in a multibyte sequence, the desired
|
||||
length (that is larger than
|
||||
.Va len )
|
||||
is returned.
|
||||
.Sh EXAMPLES
|
||||
.Bd -literal
|
||||
/* cc (-static) -o example example.c -lgrapheme */
|
||||
#include <grapheme.h>
|
||||
#include <inttypes.h>
|
||||
#include <stdio.h>
|
||||
|
||||
void
|
||||
print_cps(const char *str, size_t len)
|
||||
{
|
||||
size_t ret, off;
|
||||
uint_least32_t cp;
|
||||
|
||||
for (off = 0; off < len; off += ret) {
|
||||
if ((ret = grapheme_decode_utf8(str + off,
|
||||
len - off, &cp)) > (len - off)) {
|
||||
/*
|
||||
* string ended unexpectedly in the middle of a
|
||||
* multibyte sequence and we have the choice
|
||||
* here to possibly expand str by ret - len + off
|
||||
* bytes to get a full sequence, but we just
|
||||
* bail out in this case.
|
||||
*/
|
||||
break;
|
||||
}
|
||||
printf("%"PRIxLEAST32"\\\\n", cp);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
print_cps_nul_terminated(const char *str)
|
||||
{
|
||||
size_t ret, off;
|
||||
uint_least32_t cp;
|
||||
|
||||
for (off = 0; (ret = grapheme_decode_utf8(str + off,
|
||||
SIZE_MAX, &cp)) > 0 &&
|
||||
cp != 0; off += ret) {
|
||||
printf("%"PRIxLEAST32"\\\\n", cp);
|
||||
}
|
||||
}
|
||||
.Ed
|
||||
.Sh SEE ALSO
|
||||
.Xr grapheme_encode_utf8 3 ,
|
||||
.Xr libgrapheme 7
|
||||
.Sh AUTHORS
|
||||
.An Laslo Hunhold Aq Mt dev@frign.de
|
||||
EOF
|
@@ -1,101 +0,0 @@
|
||||
.Dd 2022-10-06
|
||||
.Dt GRAPHEME_ENCODE_UTF8 3
|
||||
.Os suckless.org
|
||||
.Sh NAME
|
||||
.Nm grapheme_encode_utf8
|
||||
.Nd encode codepoint into UTF-8 string
|
||||
.Sh SYNOPSIS
|
||||
.In grapheme.h
|
||||
.Ft size_t
|
||||
.Fn grapheme_encode_utf8 "uint_least32_t cp" "char *str" "size_t len"
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Fn grapheme_encode_utf8
|
||||
function encodes the codepoint
|
||||
.Va cp
|
||||
into a UTF-8-string.
|
||||
If
|
||||
.Va str
|
||||
is not
|
||||
.Dv NULL
|
||||
and
|
||||
.Va len
|
||||
is large enough it writes the UTF-8-string to the memory pointed to by
|
||||
.Va str .
|
||||
Otherwise no data is written.
|
||||
.Sh RETURN VALUES
|
||||
The
|
||||
.Fn grapheme_encode_utf8
|
||||
function returns the length (in bytes) of the UTF-8-string resulting
|
||||
from encoding
|
||||
.Va cp ,
|
||||
even if
|
||||
.Va len
|
||||
is not large enough or
|
||||
.Va str
|
||||
is
|
||||
.Dv NULL .
|
||||
.Sh EXAMPLES
|
||||
.Bd -literal
|
||||
/* cc (-static) -o example example.c -lgrapheme */
|
||||
#include <grapheme.h>
|
||||
#include <stddef.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
size_t
|
||||
cps_to_utf8(const uint_least32_t *cp, size_t cplen, char *str, size_t len)
|
||||
{
|
||||
size_t i, off, ret;
|
||||
|
||||
for (i = 0, off = 0; i < cplen; i++, off += ret) {
|
||||
if ((ret = grapheme_encode_utf8(cp[i], str + off,
|
||||
len - off)) > (len - off)) {
|
||||
/* buffer too small */
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return off;
|
||||
}
|
||||
|
||||
size_t
|
||||
cps_bytelen(const uint_least32_t *cp, size_t cplen)
|
||||
{
|
||||
size_t i, len;
|
||||
|
||||
for (i = 0, len = 0; i < cplen; i++) {
|
||||
len += grapheme_encode_utf8(cp[i], NULL, 0);
|
||||
}
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
char *
|
||||
cps_to_utf8_alloc(const uint_least32_t *cp, size_t cplen)
|
||||
{
|
||||
char *str;
|
||||
size_t len, i, ret, off;
|
||||
|
||||
len = cps_bytelen(cp, cplen);
|
||||
|
||||
if (!(str = malloc(len))) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
for (i = 0, off = 0; i < cplen; i++, off += ret) {
|
||||
if ((ret = grapheme_encode_utf8(cp[i], str + off,
|
||||
len - off)) > (len - off)) {
|
||||
/* buffer too small */
|
||||
break;
|
||||
}
|
||||
}
|
||||
str[off] = '\\0';
|
||||
|
||||
return str;
|
||||
}
|
||||
.Ed
|
||||
.Sh SEE ALSO
|
||||
.Xr grapheme_decode_utf8 3 ,
|
||||
.Xr libgrapheme 7
|
||||
.Sh AUTHORS
|
||||
.An Laslo Hunhold Aq Mt dev@frign.de
|
@@ -1,103 +0,0 @@
|
||||
cat << EOF
|
||||
.Dd ${MAN_DATE}
|
||||
.Dt GRAPHEME_ENCODE_UTF8 3
|
||||
.Os suckless.org
|
||||
.Sh NAME
|
||||
.Nm grapheme_encode_utf8
|
||||
.Nd encode codepoint into UTF-8 string
|
||||
.Sh SYNOPSIS
|
||||
.In grapheme.h
|
||||
.Ft size_t
|
||||
.Fn grapheme_encode_utf8 "uint_least32_t cp" "char *str" "size_t len"
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Fn grapheme_encode_utf8
|
||||
function encodes the codepoint
|
||||
.Va cp
|
||||
into a UTF-8-string.
|
||||
If
|
||||
.Va str
|
||||
is not
|
||||
.Dv NULL
|
||||
and
|
||||
.Va len
|
||||
is large enough it writes the UTF-8-string to the memory pointed to by
|
||||
.Va str .
|
||||
Otherwise no data is written.
|
||||
.Sh RETURN VALUES
|
||||
The
|
||||
.Fn grapheme_encode_utf8
|
||||
function returns the length (in bytes) of the UTF-8-string resulting
|
||||
from encoding
|
||||
.Va cp ,
|
||||
even if
|
||||
.Va len
|
||||
is not large enough or
|
||||
.Va str
|
||||
is
|
||||
.Dv NULL .
|
||||
.Sh EXAMPLES
|
||||
.Bd -literal
|
||||
/* cc (-static) -o example example.c -lgrapheme */
|
||||
#include <grapheme.h>
|
||||
#include <stddef.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
size_t
|
||||
cps_to_utf8(const uint_least32_t *cp, size_t cplen, char *str, size_t len)
|
||||
{
|
||||
size_t i, off, ret;
|
||||
|
||||
for (i = 0, off = 0; i < cplen; i++, off += ret) {
|
||||
if ((ret = grapheme_encode_utf8(cp[i], str + off,
|
||||
len - off)) > (len - off)) {
|
||||
/* buffer too small */
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return off;
|
||||
}
|
||||
|
||||
size_t
|
||||
cps_bytelen(const uint_least32_t *cp, size_t cplen)
|
||||
{
|
||||
size_t i, len;
|
||||
|
||||
for (i = 0, len = 0; i < cplen; i++) {
|
||||
len += grapheme_encode_utf8(cp[i], NULL, 0);
|
||||
}
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
char *
|
||||
cps_to_utf8_alloc(const uint_least32_t *cp, size_t cplen)
|
||||
{
|
||||
char *str;
|
||||
size_t len, i, ret, off;
|
||||
|
||||
len = cps_bytelen(cp, cplen);
|
||||
|
||||
if (!(str = malloc(len))) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
for (i = 0, off = 0; i < cplen; i++, off += ret) {
|
||||
if ((ret = grapheme_encode_utf8(cp[i], str + off,
|
||||
len - off)) > (len - off)) {
|
||||
/* buffer too small */
|
||||
break;
|
||||
}
|
||||
}
|
||||
str[off] = '\\\\0';
|
||||
|
||||
return str;
|
||||
}
|
||||
.Ed
|
||||
.Sh SEE ALSO
|
||||
.Xr grapheme_decode_utf8 3 ,
|
||||
.Xr libgrapheme 7
|
||||
.Sh AUTHORS
|
||||
.An Laslo Hunhold Aq Mt dev@frign.de
|
||||
EOF
|
@@ -1,81 +0,0 @@
|
||||
.Dd 2022-10-06
|
||||
.Dt GRAPHEME_IS_CHARACTER_BREAK 3
|
||||
.Os suckless.org
|
||||
.Sh NAME
|
||||
.Nm grapheme_is_character_break
|
||||
.Nd test for a grapheme cluster break between two codepoints
|
||||
.Sh SYNOPSIS
|
||||
.In grapheme.h
|
||||
.Ft size_t
|
||||
.Fn grapheme_is_character_break "uint_least32_t cp1" "uint_least32_t cp2" "uint_least16_t *state"
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Fn grapheme_is_character_break
|
||||
function determines if there is a grapheme cluster break (see
|
||||
.Xr libgrapheme 7 )
|
||||
between the two codepoints
|
||||
.Va cp1
|
||||
and
|
||||
.Va cp2 .
|
||||
By specification this decision depends on a
|
||||
.Va state
|
||||
that can at most be completely reset after detecting a break and must
|
||||
be reset every time one deviates from sequential processing.
|
||||
.Pp
|
||||
If
|
||||
.Va state
|
||||
is
|
||||
.Dv NULL
|
||||
.Fn grapheme_is_character_break
|
||||
behaves as if it was called with a fully reset state.
|
||||
.Sh RETURN VALUES
|
||||
The
|
||||
.Fn grapheme_is_character_break
|
||||
function returns
|
||||
.Va true
|
||||
if there is a grapheme cluster break between the codepoints
|
||||
.Va cp1
|
||||
and
|
||||
.Va cp2
|
||||
and
|
||||
.Va false
|
||||
if there is not.
|
||||
.Sh EXAMPLES
|
||||
.Bd -literal
|
||||
/* cc (-static) -o example example.c -lgrapheme */
|
||||
#include <grapheme.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
uint_least16_t state = 0;
|
||||
uint_least32_t s1[] = ..., s2[] = ...; /* two input arrays */
|
||||
size_t i;
|
||||
|
||||
for (i = 0; i + 1 < sizeof(s1) / sizeof(*s1); i++) {
|
||||
if (grapheme_is_character_break(s[i], s[i + 1], &state)) {
|
||||
printf("break in s1 at offset %zu\n", i);
|
||||
}
|
||||
}
|
||||
memset(&state, 0, sizeof(state)); /* reset state */
|
||||
for (i = 0; i + 1 < sizeof(s2) / sizeof(*s2); i++) {
|
||||
if (grapheme_is_character_break(s[i], s[i + 1], &state)) {
|
||||
printf("break in s2 at offset %zu\n", i);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
.Ed
|
||||
.Sh SEE ALSO
|
||||
.Xr grapheme_next_character_break 3 ,
|
||||
.Xr grapheme_next_character_break_utf8 3 ,
|
||||
.Xr libgrapheme 7
|
||||
.Sh STANDARDS
|
||||
.Fn grapheme_is_character_break
|
||||
is compliant with the Unicode 15.0.0 specification.
|
||||
.Sh AUTHORS
|
||||
.An Laslo Hunhold Aq Mt dev@frign.de
|
@@ -1,83 +0,0 @@
|
||||
cat << EOF
|
||||
.Dd ${MAN_DATE}
|
||||
.Dt GRAPHEME_IS_CHARACTER_BREAK 3
|
||||
.Os suckless.org
|
||||
.Sh NAME
|
||||
.Nm grapheme_is_character_break
|
||||
.Nd test for a grapheme cluster break between two codepoints
|
||||
.Sh SYNOPSIS
|
||||
.In grapheme.h
|
||||
.Ft size_t
|
||||
.Fn grapheme_is_character_break "uint_least32_t cp1" "uint_least32_t cp2" "uint_least16_t *state"
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Fn grapheme_is_character_break
|
||||
function determines if there is a grapheme cluster break (see
|
||||
.Xr libgrapheme 7 )
|
||||
between the two codepoints
|
||||
.Va cp1
|
||||
and
|
||||
.Va cp2 .
|
||||
By specification this decision depends on a
|
||||
.Va state
|
||||
that can at most be completely reset after detecting a break and must
|
||||
be reset every time one deviates from sequential processing.
|
||||
.Pp
|
||||
If
|
||||
.Va state
|
||||
is
|
||||
.Dv NULL
|
||||
.Fn grapheme_is_character_break
|
||||
behaves as if it was called with a fully reset state.
|
||||
.Sh RETURN VALUES
|
||||
The
|
||||
.Fn grapheme_is_character_break
|
||||
function returns
|
||||
.Va true
|
||||
if there is a grapheme cluster break between the codepoints
|
||||
.Va cp1
|
||||
and
|
||||
.Va cp2
|
||||
and
|
||||
.Va false
|
||||
if there is not.
|
||||
.Sh EXAMPLES
|
||||
.Bd -literal
|
||||
/* cc (-static) -o example example.c -lgrapheme */
|
||||
#include <grapheme.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
uint_least16_t state = 0;
|
||||
uint_least32_t s1[] = ..., s2[] = ...; /* two input arrays */
|
||||
size_t i;
|
||||
|
||||
for (i = 0; i + 1 < sizeof(s1) / sizeof(*s1); i++) {
|
||||
if (grapheme_is_character_break(s[i], s[i + 1], &state)) {
|
||||
printf("break in s1 at offset %zu\n", i);
|
||||
}
|
||||
}
|
||||
memset(&state, 0, sizeof(state)); /* reset state */
|
||||
for (i = 0; i + 1 < sizeof(s2) / sizeof(*s2); i++) {
|
||||
if (grapheme_is_character_break(s[i], s[i + 1], &state)) {
|
||||
printf("break in s2 at offset %zu\n", i);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
.Ed
|
||||
.Sh SEE ALSO
|
||||
.Xr grapheme_next_character_break 3 ,
|
||||
.Xr grapheme_next_character_break_utf8 3 ,
|
||||
.Xr libgrapheme 7
|
||||
.Sh STANDARDS
|
||||
.Fn grapheme_is_character_break
|
||||
is compliant with the Unicode ${UNICODE_VERSION} specification.
|
||||
.Sh AUTHORS
|
||||
.An Laslo Hunhold Aq Mt dev@frign.de
|
||||
EOF
|
@@ -1,51 +0,0 @@
|
||||
.Dd 2022-10-06
|
||||
.Dt GRAPHEME_IS_LOWERCASE 3
|
||||
.Os suckless.org
|
||||
.Sh NAME
|
||||
.Nm grapheme_is_lowercase
|
||||
.Nd check if codepoint array is lowercase
|
||||
.Sh SYNOPSIS
|
||||
.In grapheme.h
|
||||
.Ft size_t
|
||||
.Fn grapheme_is_lowercase "const uint_least32_t *str" "size_t len" "size_t *caselen"
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Fn grapheme_is_lowercase
|
||||
function checks if the codepoint array
|
||||
.Va str
|
||||
is lowercase and writes the length of the matching lowercase-sequence to the integer pointed to by
|
||||
.Va caselen ,
|
||||
unless
|
||||
.Va caselen
|
||||
is set to
|
||||
.Dv NULL .
|
||||
.Pp
|
||||
If
|
||||
.Va len
|
||||
is set to
|
||||
.Dv SIZE_MAX
|
||||
(stdint.h is already included by grapheme.h) the codepoint array
|
||||
.Va src
|
||||
is interpreted to be NUL-terminated and processing stops when a
|
||||
NUL-byte is encountered.
|
||||
.Pp
|
||||
For UTF-8-encoded input data
|
||||
.Xr grapheme_is_lowercase_utf8 3
|
||||
can be used instead.
|
||||
.Sh RETURN VALUES
|
||||
The
|
||||
.Fn grapheme_is_lowercase
|
||||
function returns
|
||||
.Dv true
|
||||
if the codepoint array
|
||||
.Va str
|
||||
is lowercase, otherwise
|
||||
.Dv false .
|
||||
.Sh SEE ALSO
|
||||
.Xr grapheme_is_lowercase_utf8 3 ,
|
||||
.Xr libgrapheme 7
|
||||
.Sh STANDARDS
|
||||
.Fn grapheme_is_lowercase
|
||||
is compliant with the Unicode 15.0.0 specification.
|
||||
.Sh AUTHORS
|
||||
.An Laslo Hunhold Aq Mt dev@frign.de
|
@@ -1,3 +0,0 @@
|
||||
ENCODING="codepoint" \
|
||||
CASE="lowercase" \
|
||||
$SH man/template/is_case.sh
|
@@ -1,51 +0,0 @@
|
||||
.Dd 2022-10-06
|
||||
.Dt GRAPHEME_IS_LOWERCASE_UTF8 3
|
||||
.Os suckless.org
|
||||
.Sh NAME
|
||||
.Nm grapheme_is_lowercase_utf8
|
||||
.Nd check if UTF-8-encoded string is lowercase
|
||||
.Sh SYNOPSIS
|
||||
.In grapheme.h
|
||||
.Ft size_t
|
||||
.Fn grapheme_is_lowercase_utf8 "const char *str" "size_t len" "size_t *caselen"
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Fn grapheme_is_lowercase_utf8
|
||||
function checks if the UTF-8-encoded string
|
||||
.Va str
|
||||
is lowercase and writes the length of the matching lowercase-sequence to the integer pointed to by
|
||||
.Va caselen ,
|
||||
unless
|
||||
.Va caselen
|
||||
is set to
|
||||
.Dv NULL .
|
||||
.Pp
|
||||
If
|
||||
.Va len
|
||||
is set to
|
||||
.Dv SIZE_MAX
|
||||
(stdint.h is already included by grapheme.h) the UTF-8-encoded string
|
||||
.Va src
|
||||
is interpreted to be NUL-terminated and processing stops when a
|
||||
NUL-byte is encountered.
|
||||
.Pp
|
||||
For non-UTF-8 input data
|
||||
.Xr grapheme_is_lowercase 3
|
||||
can be used instead.
|
||||
.Sh RETURN VALUES
|
||||
The
|
||||
.Fn grapheme_is_lowercase_utf8
|
||||
function returns
|
||||
.Dv true
|
||||
if the UTF-8-encoded string
|
||||
.Va str
|
||||
is lowercase, otherwise
|
||||
.Dv false .
|
||||
.Sh SEE ALSO
|
||||
.Xr grapheme_is_lowercase 3 ,
|
||||
.Xr libgrapheme 7
|
||||
.Sh STANDARDS
|
||||
.Fn grapheme_is_lowercase_utf8
|
||||
is compliant with the Unicode 15.0.0 specification.
|
||||
.Sh AUTHORS
|
||||
.An Laslo Hunhold Aq Mt dev@frign.de
|
@@ -1,3 +0,0 @@
|
||||
ENCODING="utf8" \
|
||||
CASE="lowercase" \
|
||||
$SH man/template/is_case.sh
|
@@ -1,51 +0,0 @@
|
||||
.Dd 2022-10-06
|
||||
.Dt GRAPHEME_IS_TITLECASE 3
|
||||
.Os suckless.org
|
||||
.Sh NAME
|
||||
.Nm grapheme_is_titlecase
|
||||
.Nd check if codepoint array is titlecase
|
||||
.Sh SYNOPSIS
|
||||
.In grapheme.h
|
||||
.Ft size_t
|
||||
.Fn grapheme_is_titlecase "const uint_least32_t *str" "size_t len" "size_t *caselen"
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Fn grapheme_is_titlecase
|
||||
function checks if the codepoint array
|
||||
.Va str
|
||||
is titlecase and writes the length of the matching titlecase-sequence to the integer pointed to by
|
||||
.Va caselen ,
|
||||
unless
|
||||
.Va caselen
|
||||
is set to
|
||||
.Dv NULL .
|
||||
.Pp
|
||||
If
|
||||
.Va len
|
||||
is set to
|
||||
.Dv SIZE_MAX
|
||||
(stdint.h is already included by grapheme.h) the codepoint array
|
||||
.Va src
|
||||
is interpreted to be NUL-terminated and processing stops when a
|
||||
NUL-byte is encountered.
|
||||
.Pp
|
||||
For UTF-8-encoded input data
|
||||
.Xr grapheme_is_titlecase_utf8 3
|
||||
can be used instead.
|
||||
.Sh RETURN VALUES
|
||||
The
|
||||
.Fn grapheme_is_titlecase
|
||||
function returns
|
||||
.Dv true
|
||||
if the codepoint array
|
||||
.Va str
|
||||
is titlecase, otherwise
|
||||
.Dv false .
|
||||
.Sh SEE ALSO
|
||||
.Xr grapheme_is_titlecase_utf8 3 ,
|
||||
.Xr libgrapheme 7
|
||||
.Sh STANDARDS
|
||||
.Fn grapheme_is_titlecase
|
||||
is compliant with the Unicode 15.0.0 specification.
|
||||
.Sh AUTHORS
|
||||
.An Laslo Hunhold Aq Mt dev@frign.de
|
@@ -1,3 +0,0 @@
|
||||
ENCODING="codepoint" \
|
||||
CASE="titlecase" \
|
||||
$SH man/template/is_case.sh
|
@@ -1,51 +0,0 @@
|
||||
.Dd 2022-10-06
|
||||
.Dt GRAPHEME_IS_TITLECASE_UTF8 3
|
||||
.Os suckless.org
|
||||
.Sh NAME
|
||||
.Nm grapheme_is_titlecase_utf8
|
||||
.Nd check if UTF-8-encoded string is titlecase
|
||||
.Sh SYNOPSIS
|
||||
.In grapheme.h
|
||||
.Ft size_t
|
||||
.Fn grapheme_is_titlecase_utf8 "const char *str" "size_t len" "size_t *caselen"
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Fn grapheme_is_titlecase_utf8
|
||||
function checks if the UTF-8-encoded string
|
||||
.Va str
|
||||
is titlecase and writes the length of the matching titlecase-sequence to the integer pointed to by
|
||||
.Va caselen ,
|
||||
unless
|
||||
.Va caselen
|
||||
is set to
|
||||
.Dv NULL .
|
||||
.Pp
|
||||
If
|
||||
.Va len
|
||||
is set to
|
||||
.Dv SIZE_MAX
|
||||
(stdint.h is already included by grapheme.h) the UTF-8-encoded string
|
||||
.Va src
|
||||
is interpreted to be NUL-terminated and processing stops when a
|
||||
NUL-byte is encountered.
|
||||
.Pp
|
||||
For non-UTF-8 input data
|
||||
.Xr grapheme_is_titlecase 3
|
||||
can be used instead.
|
||||
.Sh RETURN VALUES
|
||||
The
|
||||
.Fn grapheme_is_titlecase_utf8
|
||||
function returns
|
||||
.Dv true
|
||||
if the UTF-8-encoded string
|
||||
.Va str
|
||||
is titlecase, otherwise
|
||||
.Dv false .
|
||||
.Sh SEE ALSO
|
||||
.Xr grapheme_is_titlecase 3 ,
|
||||
.Xr libgrapheme 7
|
||||
.Sh STANDARDS
|
||||
.Fn grapheme_is_titlecase_utf8
|
||||
is compliant with the Unicode 15.0.0 specification.
|
||||
.Sh AUTHORS
|
||||
.An Laslo Hunhold Aq Mt dev@frign.de
|
@@ -1,3 +0,0 @@
|
||||
ENCODING="utf8" \
|
||||
CASE="titlecase" \
|
||||
$SH man/template/is_case.sh
|
@@ -1,51 +0,0 @@
|
||||
.Dd 2022-10-06
|
||||
.Dt GRAPHEME_IS_UPPERCASE 3
|
||||
.Os suckless.org
|
||||
.Sh NAME
|
||||
.Nm grapheme_is_uppercase
|
||||
.Nd check if codepoint array is uppercase
|
||||
.Sh SYNOPSIS
|
||||
.In grapheme.h
|
||||
.Ft size_t
|
||||
.Fn grapheme_is_uppercase "const uint_least32_t *str" "size_t len" "size_t *caselen"
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Fn grapheme_is_uppercase
|
||||
function checks if the codepoint array
|
||||
.Va str
|
||||
is uppercase and writes the length of the matching uppercase-sequence to the integer pointed to by
|
||||
.Va caselen ,
|
||||
unless
|
||||
.Va caselen
|
||||
is set to
|
||||
.Dv NULL .
|
||||
.Pp
|
||||
If
|
||||
.Va len
|
||||
is set to
|
||||
.Dv SIZE_MAX
|
||||
(stdint.h is already included by grapheme.h) the codepoint array
|
||||
.Va src
|
||||
is interpreted to be NUL-terminated and processing stops when a
|
||||
NUL-byte is encountered.
|
||||
.Pp
|
||||
For UTF-8-encoded input data
|
||||
.Xr grapheme_is_uppercase_utf8 3
|
||||
can be used instead.
|
||||
.Sh RETURN VALUES
|
||||
The
|
||||
.Fn grapheme_is_uppercase
|
||||
function returns
|
||||
.Dv true
|
||||
if the codepoint array
|
||||
.Va str
|
||||
is uppercase, otherwise
|
||||
.Dv false .
|
||||
.Sh SEE ALSO
|
||||
.Xr grapheme_is_uppercase_utf8 3 ,
|
||||
.Xr libgrapheme 7
|
||||
.Sh STANDARDS
|
||||
.Fn grapheme_is_uppercase
|
||||
is compliant with the Unicode 15.0.0 specification.
|
||||
.Sh AUTHORS
|
||||
.An Laslo Hunhold Aq Mt dev@frign.de
|
@@ -1,3 +0,0 @@
|
||||
ENCODING="codepoint" \
|
||||
CASE="uppercase" \
|
||||
$SH man/template/is_case.sh
|
@@ -1,51 +0,0 @@
|
||||
.Dd 2022-10-06
|
||||
.Dt GRAPHEME_IS_LOWERCASE_UTF8 3
|
||||
.Os suckless.org
|
||||
.Sh NAME
|
||||
.Nm grapheme_is_lowercase_utf8
|
||||
.Nd check if UTF-8-encoded string is lowercase
|
||||
.Sh SYNOPSIS
|
||||
.In grapheme.h
|
||||
.Ft size_t
|
||||
.Fn grapheme_is_lowercase_utf8 "const char *str" "size_t len" "size_t *caselen"
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Fn grapheme_is_lowercase_utf8
|
||||
function checks if the UTF-8-encoded string
|
||||
.Va str
|
||||
is lowercase and writes the length of the matching lowercase-sequence to the integer pointed to by
|
||||
.Va caselen ,
|
||||
unless
|
||||
.Va caselen
|
||||
is set to
|
||||
.Dv NULL .
|
||||
.Pp
|
||||
If
|
||||
.Va len
|
||||
is set to
|
||||
.Dv SIZE_MAX
|
||||
(stdint.h is already included by grapheme.h) the UTF-8-encoded string
|
||||
.Va src
|
||||
is interpreted to be NUL-terminated and processing stops when a
|
||||
NUL-byte is encountered.
|
||||
.Pp
|
||||
For non-UTF-8 input data
|
||||
.Xr grapheme_is_lowercase 3
|
||||
can be used instead.
|
||||
.Sh RETURN VALUES
|
||||
The
|
||||
.Fn grapheme_is_lowercase_utf8
|
||||
function returns
|
||||
.Dv true
|
||||
if the UTF-8-encoded string
|
||||
.Va str
|
||||
is lowercase, otherwise
|
||||
.Dv false .
|
||||
.Sh SEE ALSO
|
||||
.Xr grapheme_is_lowercase 3 ,
|
||||
.Xr libgrapheme 7
|
||||
.Sh STANDARDS
|
||||
.Fn grapheme_is_lowercase_utf8
|
||||
is compliant with the Unicode 15.0.0 specification.
|
||||
.Sh AUTHORS
|
||||
.An Laslo Hunhold Aq Mt dev@frign.de
|
@@ -1,3 +0,0 @@
|
||||
ENCODING="utf8" \
|
||||
CASE="lowercase" \
|
||||
$SH man/template/is_case.sh
|
@@ -1,56 +0,0 @@
|
||||
.Dd 2022-10-06
|
||||
.Dt GRAPHEME_NEXT_CHARACTER_BREAK 3
|
||||
.Os suckless.org
|
||||
.Sh NAME
|
||||
.Nm grapheme_next_character_break
|
||||
.Nd determine codepoint-offset to next grapheme cluster break
|
||||
.Sh SYNOPSIS
|
||||
.In grapheme.h
|
||||
.Ft size_t
|
||||
.Fn grapheme_next_character_break "const uint_least32_t *str" "size_t len"
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Fn grapheme_next_character_break
|
||||
function computes the offset (in codepoints) to the next grapheme cluster
|
||||
break (see
|
||||
.Xr libgrapheme 7 )
|
||||
in the codepoint array
|
||||
.Va str
|
||||
of length
|
||||
.Va len .
|
||||
If a grapheme cluster begins at
|
||||
.Va str
|
||||
this offset is equal to the length of said grapheme cluster.
|
||||
.Pp
|
||||
If
|
||||
.Va len
|
||||
is set to
|
||||
.Dv SIZE_MAX
|
||||
(stdint.h is already included by grapheme.h) the string
|
||||
.Va str
|
||||
is interpreted to be NUL-terminated and processing stops when
|
||||
a codepoint with the value 0 is encountered.
|
||||
.Pp
|
||||
For UTF-8-encoded input
|
||||
data
|
||||
.Xr grapheme_next_character_break_utf8 3
|
||||
can be used instead.
|
||||
.Sh RETURN VALUES
|
||||
The
|
||||
.Fn grapheme_next_character_break
|
||||
function returns the offset (in codepoints) to the next grapheme cluster
|
||||
break in
|
||||
.Va str
|
||||
or 0 if
|
||||
.Va str
|
||||
is
|
||||
.Dv NULL .
|
||||
.Sh SEE ALSO
|
||||
.Xr grapheme_is_character_break 3 ,
|
||||
.Xr grapheme_next_character_break_utf8 3 ,
|
||||
.Xr libgrapheme 7
|
||||
.Sh STANDARDS
|
||||
.Fn grapheme_next_character_break
|
||||
is compliant with the Unicode 15.0.0 specification.
|
||||
.Sh AUTHORS
|
||||
.An Laslo Hunhold Aq Mt dev@frign.de
|
@@ -1,4 +0,0 @@
|
||||
ENCODING="codepoint" \
|
||||
TYPE="character" \
|
||||
REALTYPE="grapheme cluster" \
|
||||
$SH man/template/next_break.sh
|
@@ -1,94 +0,0 @@
|
||||
.Dd 2022-10-06
|
||||
.Dt GRAPHEME_NEXT_CHARACTER_BREAK_UTF8 3
|
||||
.Os suckless.org
|
||||
.Sh NAME
|
||||
.Nm grapheme_next_character_break_utf8
|
||||
.Nd determine byte-offset to next grapheme cluster break
|
||||
.Sh SYNOPSIS
|
||||
.In grapheme.h
|
||||
.Ft size_t
|
||||
.Fn grapheme_next_character_break_utf8 "const char *str" "size_t len"
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Fn grapheme_next_character_break_utf8
|
||||
function computes the offset (in bytes) to the next grapheme cluster
|
||||
break (see
|
||||
.Xr libgrapheme 7 )
|
||||
in the UTF-8-encoded string
|
||||
.Va str
|
||||
of length
|
||||
.Va len .
|
||||
If a grapheme cluster begins at
|
||||
.Va str
|
||||
this offset is equal to the length of said grapheme cluster.
|
||||
.Pp
|
||||
If
|
||||
.Va len
|
||||
is set to
|
||||
.Dv SIZE_MAX
|
||||
(stdint.h is already included by grapheme.h) the string
|
||||
.Va str
|
||||
is interpreted to be NUL-terminated and processing stops when
|
||||
a NUL-byte is encountered.
|
||||
.Pp
|
||||
For non-UTF-8 input
|
||||
data
|
||||
.Xr grapheme_is_character_break 3 and
|
||||
.Xr grapheme_next_character_break 3
|
||||
can be used instead.
|
||||
.Sh RETURN VALUES
|
||||
The
|
||||
.Fn grapheme_next_character_break_utf8
|
||||
function returns the offset (in bytes) to the next grapheme cluster
|
||||
break in
|
||||
.Va str
|
||||
or 0 if
|
||||
.Va str
|
||||
is
|
||||
.Dv NULL .
|
||||
.Sh EXAMPLES
|
||||
.Bd -literal
|
||||
/* cc (-static) -o example example.c -lgrapheme */
|
||||
#include <grapheme.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
/* UTF-8 encoded input */
|
||||
char *s = "T\\xC3\\xABst \\xF0\\x9F\\x91\\xA8\\xE2\\x80\\x8D\\xF0"
|
||||
"\\x9F\\x91\\xA9\\xE2\\x80\\x8D\\xF0\\x9F\\x91\\xA6 \\xF0"
|
||||
"\\x9F\\x87\\xBA\\xF0\\x9F\\x87\\xB8 \\xE0\\xA4\\xA8\\xE0"
|
||||
"\\xA5\\x80 \\xE0\\xAE\\xA8\\xE0\\xAE\\xBF!";
|
||||
size_t ret, len, off;
|
||||
|
||||
printf("Input: \\"%s\\"\\n", s);
|
||||
|
||||
/* print each grapheme cluster with byte-length */
|
||||
printf("grapheme clusters in NUL-delimited input:\\n");
|
||||
for (off = 0; s[off] != '\\0'; off += ret) {
|
||||
ret = grapheme_next_character_break_utf8(s + off, SIZE_MAX);
|
||||
printf("%2zu bytes | %.*s\\n", ret, (int)ret, s + off);
|
||||
}
|
||||
printf("\\n");
|
||||
|
||||
/* do the same, but this time string is length-delimited */
|
||||
len = 17;
|
||||
printf("grapheme clusters in input delimited to %zu bytes:\\n", len);
|
||||
for (off = 0; off < len; off += ret) {
|
||||
ret = grapheme_next_character_break_utf8(s + off, len - off);
|
||||
printf("%2zu bytes | %.*s\\n", ret, (int)ret, s + off);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
.Ed
|
||||
.Sh SEE ALSO
|
||||
.Xr grapheme_next_character_break 3 ,
|
||||
.Xr libgrapheme 7
|
||||
.Sh STANDARDS
|
||||
.Fn grapheme_next_character_break_utf8
|
||||
is compliant with the Unicode 15.0.0 specification.
|
||||
.Sh AUTHORS
|
||||
.An Laslo Hunhold Aq Mt dev@frign.de
|
@@ -1,4 +0,0 @@
|
||||
ENCODING="utf8" \
|
||||
TYPE="character" \
|
||||
REALTYPE="grapheme cluster" \
|
||||
$SH man/template/next_break.sh
|
@@ -1,52 +0,0 @@
|
||||
.Dd 2022-10-06
|
||||
.Dt GRAPHEME_NEXT_LINE_BREAK 3
|
||||
.Os suckless.org
|
||||
.Sh NAME
|
||||
.Nm grapheme_next_line_break
|
||||
.Nd determine codepoint-offset to next possible line break
|
||||
.Sh SYNOPSIS
|
||||
.In grapheme.h
|
||||
.Ft size_t
|
||||
.Fn grapheme_next_line_break "const uint_least32_t *str" "size_t len"
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Fn grapheme_next_line_break
|
||||
function computes the offset (in codepoints) to the next possible line
|
||||
break (see
|
||||
.Xr libgrapheme 7 )
|
||||
in the codepoint array
|
||||
.Va str
|
||||
of length
|
||||
.Va len .
|
||||
.Pp
|
||||
If
|
||||
.Va len
|
||||
is set to
|
||||
.Dv SIZE_MAX
|
||||
(stdint.h is already included by grapheme.h) the string
|
||||
.Va str
|
||||
is interpreted to be NUL-terminated and processing stops when
|
||||
a codepoint with the value 0 is encountered.
|
||||
.Pp
|
||||
For UTF-8-encoded input
|
||||
data
|
||||
.Xr grapheme_next_line_break_utf8 3
|
||||
can be used instead.
|
||||
.Sh RETURN VALUES
|
||||
The
|
||||
.Fn grapheme_next_line_break
|
||||
function returns the offset (in codepoints) to the next possible line
|
||||
break in
|
||||
.Va str
|
||||
or 0 if
|
||||
.Va str
|
||||
is
|
||||
.Dv NULL .
|
||||
.Sh SEE ALSO
|
||||
.Xr grapheme_next_line_break_utf8 3 ,
|
||||
.Xr libgrapheme 7
|
||||
.Sh STANDARDS
|
||||
.Fn grapheme_next_line_break
|
||||
is compliant with the Unicode 15.0.0 specification.
|
||||
.Sh AUTHORS
|
||||
.An Laslo Hunhold Aq Mt dev@frign.de
|
@@ -1,4 +0,0 @@
|
||||
ENCODING="codepoint" \
|
||||
TYPE="line" \
|
||||
REALTYPE="possible line" \
|
||||
$SH man/template/next_break.sh
|
@@ -1,90 +0,0 @@
|
||||
.Dd 2022-10-06
|
||||
.Dt GRAPHEME_NEXT_LINE_BREAK_UTF8 3
|
||||
.Os suckless.org
|
||||
.Sh NAME
|
||||
.Nm grapheme_next_line_break_utf8
|
||||
.Nd determine byte-offset to next possible line break
|
||||
.Sh SYNOPSIS
|
||||
.In grapheme.h
|
||||
.Ft size_t
|
||||
.Fn grapheme_next_line_break_utf8 "const char *str" "size_t len"
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Fn grapheme_next_line_break_utf8
|
||||
function computes the offset (in bytes) to the next possible line
|
||||
break (see
|
||||
.Xr libgrapheme 7 )
|
||||
in the UTF-8-encoded string
|
||||
.Va str
|
||||
of length
|
||||
.Va len .
|
||||
.Pp
|
||||
If
|
||||
.Va len
|
||||
is set to
|
||||
.Dv SIZE_MAX
|
||||
(stdint.h is already included by grapheme.h) the string
|
||||
.Va str
|
||||
is interpreted to be NUL-terminated and processing stops when
|
||||
a NUL-byte is encountered.
|
||||
.Pp
|
||||
For non-UTF-8 input
|
||||
data
|
||||
.Xr grapheme_next_line_break 3
|
||||
can be used instead.
|
||||
.Sh RETURN VALUES
|
||||
The
|
||||
.Fn grapheme_next_line_break_utf8
|
||||
function returns the offset (in bytes) to the next possible line
|
||||
break in
|
||||
.Va str
|
||||
or 0 if
|
||||
.Va str
|
||||
is
|
||||
.Dv NULL .
|
||||
.Sh EXAMPLES
|
||||
.Bd -literal
|
||||
/* cc (-static) -o example example.c -lgrapheme */
|
||||
#include <grapheme.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
/* UTF-8 encoded input */
|
||||
char *s = "T\\xC3\\xABst \\xF0\\x9F\\x91\\xA8\\xE2\\x80\\x8D\\xF0"
|
||||
"\\x9F\\x91\\xA9\\xE2\\x80\\x8D\\xF0\\x9F\\x91\\xA6 \\xF0"
|
||||
"\\x9F\\x87\\xBA\\xF0\\x9F\\x87\\xB8 \\xE0\\xA4\\xA8\\xE0"
|
||||
"\\xA5\\x80 \\xE0\\xAE\\xA8\\xE0\\xAE\\xBF!";
|
||||
size_t ret, len, off;
|
||||
|
||||
printf("Input: \\"%s\\"\\n", s);
|
||||
|
||||
/* print each possible line with byte-length */
|
||||
printf("possible lines in NUL-delimited input:\\n");
|
||||
for (off = 0; s[off] != '\\0'; off += ret) {
|
||||
ret = grapheme_next_line_break_utf8(s + off, SIZE_MAX);
|
||||
printf("%2zu bytes | %.*s\\n", ret, (int)ret, s + off);
|
||||
}
|
||||
printf("\\n");
|
||||
|
||||
/* do the same, but this time string is length-delimited */
|
||||
len = 17;
|
||||
printf("possible lines in input delimited to %zu bytes:\\n", len);
|
||||
for (off = 0; off < len; off += ret) {
|
||||
ret = grapheme_next_line_break_utf8(s + off, len - off);
|
||||
printf("%2zu bytes | %.*s\\n", ret, (int)ret, s + off);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
.Ed
|
||||
.Sh SEE ALSO
|
||||
.Xr grapheme_next_line_break 3 ,
|
||||
.Xr libgrapheme 7
|
||||
.Sh STANDARDS
|
||||
.Fn grapheme_next_line_break_utf8
|
||||
is compliant with the Unicode 15.0.0 specification.
|
||||
.Sh AUTHORS
|
||||
.An Laslo Hunhold Aq Mt dev@frign.de
|
@@ -1,4 +0,0 @@
|
||||
ENCODING="utf8" \
|
||||
TYPE="line" \
|
||||
REALTYPE="possible line" \
|
||||
$SH man/template/next_break.sh
|
@@ -1,55 +0,0 @@
|
||||
.Dd 2022-10-06
|
||||
.Dt GRAPHEME_NEXT_SENTENCE_BREAK 3
|
||||
.Os suckless.org
|
||||
.Sh NAME
|
||||
.Nm grapheme_next_sentence_break
|
||||
.Nd determine codepoint-offset to next sentence break
|
||||
.Sh SYNOPSIS
|
||||
.In grapheme.h
|
||||
.Ft size_t
|
||||
.Fn grapheme_next_sentence_break "const uint_least32_t *str" "size_t len"
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Fn grapheme_next_sentence_break
|
||||
function computes the offset (in codepoints) to the next sentence
|
||||
break (see
|
||||
.Xr libgrapheme 7 )
|
||||
in the codepoint array
|
||||
.Va str
|
||||
of length
|
||||
.Va len .
|
||||
If a sentence begins at
|
||||
.Va str
|
||||
this offset is equal to the length of said sentence.
|
||||
.Pp
|
||||
If
|
||||
.Va len
|
||||
is set to
|
||||
.Dv SIZE_MAX
|
||||
(stdint.h is already included by grapheme.h) the string
|
||||
.Va str
|
||||
is interpreted to be NUL-terminated and processing stops when
|
||||
a codepoint with the value 0 is encountered.
|
||||
.Pp
|
||||
For UTF-8-encoded input
|
||||
data
|
||||
.Xr grapheme_next_sentence_break_utf8 3
|
||||
can be used instead.
|
||||
.Sh RETURN VALUES
|
||||
The
|
||||
.Fn grapheme_next_sentence_break
|
||||
function returns the offset (in codepoints) to the next sentence
|
||||
break in
|
||||
.Va str
|
||||
or 0 if
|
||||
.Va str
|
||||
is
|
||||
.Dv NULL .
|
||||
.Sh SEE ALSO
|
||||
.Xr grapheme_next_sentence_break_utf8 3 ,
|
||||
.Xr libgrapheme 7
|
||||
.Sh STANDARDS
|
||||
.Fn grapheme_next_sentence_break
|
||||
is compliant with the Unicode 15.0.0 specification.
|
||||
.Sh AUTHORS
|
||||
.An Laslo Hunhold Aq Mt dev@frign.de
|
@@ -1,4 +0,0 @@
|
||||
ENCODING="codepoint" \
|
||||
TYPE="sentence" \
|
||||
REALTYPE="sentence" \
|
||||
$SH man/template/next_break.sh
|
@@ -1,93 +0,0 @@
|
||||
.Dd 2022-10-06
|
||||
.Dt GRAPHEME_NEXT_SENTENCE_BREAK_UTF8 3
|
||||
.Os suckless.org
|
||||
.Sh NAME
|
||||
.Nm grapheme_next_sentence_break_utf8
|
||||
.Nd determine byte-offset to next sentence break
|
||||
.Sh SYNOPSIS
|
||||
.In grapheme.h
|
||||
.Ft size_t
|
||||
.Fn grapheme_next_sentence_break_utf8 "const char *str" "size_t len"
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Fn grapheme_next_sentence_break_utf8
|
||||
function computes the offset (in bytes) to the next sentence
|
||||
break (see
|
||||
.Xr libgrapheme 7 )
|
||||
in the UTF-8-encoded string
|
||||
.Va str
|
||||
of length
|
||||
.Va len .
|
||||
If a sentence begins at
|
||||
.Va str
|
||||
this offset is equal to the length of said sentence.
|
||||
.Pp
|
||||
If
|
||||
.Va len
|
||||
is set to
|
||||
.Dv SIZE_MAX
|
||||
(stdint.h is already included by grapheme.h) the string
|
||||
.Va str
|
||||
is interpreted to be NUL-terminated and processing stops when
|
||||
a NUL-byte is encountered.
|
||||
.Pp
|
||||
For non-UTF-8 input
|
||||
data
|
||||
.Xr grapheme_next_sentence_break 3
|
||||
can be used instead.
|
||||
.Sh RETURN VALUES
|
||||
The
|
||||
.Fn grapheme_next_sentence_break_utf8
|
||||
function returns the offset (in bytes) to the next sentence
|
||||
break in
|
||||
.Va str
|
||||
or 0 if
|
||||
.Va str
|
||||
is
|
||||
.Dv NULL .
|
||||
.Sh EXAMPLES
|
||||
.Bd -literal
|
||||
/* cc (-static) -o example example.c -lgrapheme */
|
||||
#include <grapheme.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
/* UTF-8 encoded input */
|
||||
char *s = "T\\xC3\\xABst \\xF0\\x9F\\x91\\xA8\\xE2\\x80\\x8D\\xF0"
|
||||
"\\x9F\\x91\\xA9\\xE2\\x80\\x8D\\xF0\\x9F\\x91\\xA6 \\xF0"
|
||||
"\\x9F\\x87\\xBA\\xF0\\x9F\\x87\\xB8 \\xE0\\xA4\\xA8\\xE0"
|
||||
"\\xA5\\x80 \\xE0\\xAE\\xA8\\xE0\\xAE\\xBF!";
|
||||
size_t ret, len, off;
|
||||
|
||||
printf("Input: \\"%s\\"\\n", s);
|
||||
|
||||
/* print each sentence with byte-length */
|
||||
printf("sentences in NUL-delimited input:\\n");
|
||||
for (off = 0; s[off] != '\\0'; off += ret) {
|
||||
ret = grapheme_next_sentence_break_utf8(s + off, SIZE_MAX);
|
||||
printf("%2zu bytes | %.*s\\n", ret, (int)ret, s + off);
|
||||
}
|
||||
printf("\\n");
|
||||
|
||||
/* do the same, but this time string is length-delimited */
|
||||
len = 17;
|
||||
printf("sentences in input delimited to %zu bytes:\\n", len);
|
||||
for (off = 0; off < len; off += ret) {
|
||||
ret = grapheme_next_sentence_break_utf8(s + off, len - off);
|
||||
printf("%2zu bytes | %.*s\\n", ret, (int)ret, s + off);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
.Ed
|
||||
.Sh SEE ALSO
|
||||
.Xr grapheme_next_sentence_break 3 ,
|
||||
.Xr libgrapheme 7
|
||||
.Sh STANDARDS
|
||||
.Fn grapheme_next_sentence_break_utf8
|
||||
is compliant with the Unicode 15.0.0 specification.
|
||||
.Sh AUTHORS
|
||||
.An Laslo Hunhold Aq Mt dev@frign.de
|
@@ -1,4 +0,0 @@
|
||||
ENCODING="utf8" \
|
||||
TYPE="sentence" \
|
||||
REALTYPE="sentence" \
|
||||
$SH man/template/next_break.sh
|
@@ -1,55 +0,0 @@
|
||||
.Dd 2022-10-06
|
||||
.Dt GRAPHEME_NEXT_WORD_BREAK 3
|
||||
.Os suckless.org
|
||||
.Sh NAME
|
||||
.Nm grapheme_next_word_break
|
||||
.Nd determine codepoint-offset to next word break
|
||||
.Sh SYNOPSIS
|
||||
.In grapheme.h
|
||||
.Ft size_t
|
||||
.Fn grapheme_next_word_break "const uint_least32_t *str" "size_t len"
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Fn grapheme_next_word_break
|
||||
function computes the offset (in codepoints) to the next word
|
||||
break (see
|
||||
.Xr libgrapheme 7 )
|
||||
in the codepoint array
|
||||
.Va str
|
||||
of length
|
||||
.Va len .
|
||||
If a word begins at
|
||||
.Va str
|
||||
this offset is equal to the length of said word.
|
||||
.Pp
|
||||
If
|
||||
.Va len
|
||||
is set to
|
||||
.Dv SIZE_MAX
|
||||
(stdint.h is already included by grapheme.h) the string
|
||||
.Va str
|
||||
is interpreted to be NUL-terminated and processing stops when
|
||||
a codepoint with the value 0 is encountered.
|
||||
.Pp
|
||||
For UTF-8-encoded input
|
||||
data
|
||||
.Xr grapheme_next_word_break_utf8 3
|
||||
can be used instead.
|
||||
.Sh RETURN VALUES
|
||||
The
|
||||
.Fn grapheme_next_word_break
|
||||
function returns the offset (in codepoints) to the next word
|
||||
break in
|
||||
.Va str
|
||||
or 0 if
|
||||
.Va str
|
||||
is
|
||||
.Dv NULL .
|
||||
.Sh SEE ALSO
|
||||
.Xr grapheme_next_word_break_utf8 3 ,
|
||||
.Xr libgrapheme 7
|
||||
.Sh STANDARDS
|
||||
.Fn grapheme_next_word_break
|
||||
is compliant with the Unicode 15.0.0 specification.
|
||||
.Sh AUTHORS
|
||||
.An Laslo Hunhold Aq Mt dev@frign.de
|
@@ -1,4 +0,0 @@
|
||||
ENCODING="codepoint" \
|
||||
TYPE="word" \
|
||||
REALTYPE="word" \
|
||||
$SH man/template/next_break.sh
|
@@ -1,93 +0,0 @@
|
||||
.Dd 2022-10-06
|
||||
.Dt GRAPHEME_NEXT_WORD_BREAK_UTF8 3
|
||||
.Os suckless.org
|
||||
.Sh NAME
|
||||
.Nm grapheme_next_word_break_utf8
|
||||
.Nd determine byte-offset to next word break
|
||||
.Sh SYNOPSIS
|
||||
.In grapheme.h
|
||||
.Ft size_t
|
||||
.Fn grapheme_next_word_break_utf8 "const char *str" "size_t len"
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Fn grapheme_next_word_break_utf8
|
||||
function computes the offset (in bytes) to the next word
|
||||
break (see
|
||||
.Xr libgrapheme 7 )
|
||||
in the UTF-8-encoded string
|
||||
.Va str
|
||||
of length
|
||||
.Va len .
|
||||
If a word begins at
|
||||
.Va str
|
||||
this offset is equal to the length of said word.
|
||||
.Pp
|
||||
If
|
||||
.Va len
|
||||
is set to
|
||||
.Dv SIZE_MAX
|
||||
(stdint.h is already included by grapheme.h) the string
|
||||
.Va str
|
||||
is interpreted to be NUL-terminated and processing stops when
|
||||
a NUL-byte is encountered.
|
||||
.Pp
|
||||
For non-UTF-8 input
|
||||
data
|
||||
.Xr grapheme_next_word_break 3
|
||||
can be used instead.
|
||||
.Sh RETURN VALUES
|
||||
The
|
||||
.Fn grapheme_next_word_break_utf8
|
||||
function returns the offset (in bytes) to the next word
|
||||
break in
|
||||
.Va str
|
||||
or 0 if
|
||||
.Va str
|
||||
is
|
||||
.Dv NULL .
|
||||
.Sh EXAMPLES
|
||||
.Bd -literal
|
||||
/* cc (-static) -o example example.c -lgrapheme */
|
||||
#include <grapheme.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
/* UTF-8 encoded input */
|
||||
char *s = "T\\xC3\\xABst \\xF0\\x9F\\x91\\xA8\\xE2\\x80\\x8D\\xF0"
|
||||
"\\x9F\\x91\\xA9\\xE2\\x80\\x8D\\xF0\\x9F\\x91\\xA6 \\xF0"
|
||||
"\\x9F\\x87\\xBA\\xF0\\x9F\\x87\\xB8 \\xE0\\xA4\\xA8\\xE0"
|
||||
"\\xA5\\x80 \\xE0\\xAE\\xA8\\xE0\\xAE\\xBF!";
|
||||
size_t ret, len, off;
|
||||
|
||||
printf("Input: \\"%s\\"\\n", s);
|
||||
|
||||
/* print each word with byte-length */
|
||||
printf("words in NUL-delimited input:\\n");
|
||||
for (off = 0; s[off] != '\\0'; off += ret) {
|
||||
ret = grapheme_next_word_break_utf8(s + off, SIZE_MAX);
|
||||
printf("%2zu bytes | %.*s\\n", ret, (int)ret, s + off);
|
||||
}
|
||||
printf("\\n");
|
||||
|
||||
/* do the same, but this time string is length-delimited */
|
||||
len = 17;
|
||||
printf("words in input delimited to %zu bytes:\\n", len);
|
||||
for (off = 0; off < len; off += ret) {
|
||||
ret = grapheme_next_word_break_utf8(s + off, len - off);
|
||||
printf("%2zu bytes | %.*s\\n", ret, (int)ret, s + off);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
.Ed
|
||||
.Sh SEE ALSO
|
||||
.Xr grapheme_next_word_break 3 ,
|
||||
.Xr libgrapheme 7
|
||||
.Sh STANDARDS
|
||||
.Fn grapheme_next_word_break_utf8
|
||||
is compliant with the Unicode 15.0.0 specification.
|
||||
.Sh AUTHORS
|
||||
.An Laslo Hunhold Aq Mt dev@frign.de
|
@@ -1,4 +0,0 @@
|
||||
ENCODING="utf8" \
|
||||
TYPE="word" \
|
||||
REALTYPE="word" \
|
||||
$SH man/template/next_break.sh
|
@@ -1,56 +0,0 @@
|
||||
.Dd 2022-10-06
|
||||
.Dt GRAPHEME_TO_LOWERCASE 3
|
||||
.Os suckless.org
|
||||
.Sh NAME
|
||||
.Nm grapheme_to_lowercase
|
||||
.Nd convert codepoint array to lowercase
|
||||
.Sh SYNOPSIS
|
||||
.In grapheme.h
|
||||
.Ft size_t
|
||||
.Fn grapheme_to_lowercase "const uint_least32_t *src" "size_t srclen" "uint_least32_t *dest" "size_t destlen"
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Fn grapheme_to_lowercase
|
||||
function converts the codepoint array
|
||||
.Va str
|
||||
to lowercase and writes the result to
|
||||
.Va dest
|
||||
up to
|
||||
.Va destlen ,
|
||||
unless
|
||||
.Va dest
|
||||
is set to
|
||||
.Dv NULL .
|
||||
.Pp
|
||||
If
|
||||
.Va srclen
|
||||
is set to
|
||||
.Dv SIZE_MAX
|
||||
(stdint.h is already included by grapheme.h) the codepoint array
|
||||
.Va src
|
||||
is interpreted to be NUL-terminated and processing stops when a
|
||||
NUL-byte is encountered.
|
||||
.Pp
|
||||
For UTF-8-encoded input data
|
||||
.Xr grapheme_to_lowercase_utf8 3
|
||||
can be used instead.
|
||||
.Sh RETURN VALUES
|
||||
The
|
||||
.Fn grapheme_to_lowercase
|
||||
function returns the number of codepoints in the array resulting
|
||||
from converting
|
||||
.Va src
|
||||
to lowercase, even if
|
||||
.Va destlen
|
||||
is not large enough or
|
||||
.Va dest
|
||||
is
|
||||
.Dv NULL .
|
||||
.Sh SEE ALSO
|
||||
.Xr grapheme_to_lowercase_utf8 3 ,
|
||||
.Xr libgrapheme 7
|
||||
.Sh STANDARDS
|
||||
.Fn grapheme_to_lowercase
|
||||
is compliant with the Unicode 15.0.0 specification.
|
||||
.Sh AUTHORS
|
||||
.An Laslo Hunhold Aq Mt dev@frign.de
|
@@ -1,3 +0,0 @@
|
||||
ENCODING="codepoint" \
|
||||
CASE="lowercase" \
|
||||
$SH man/template/to_case.sh
|
@@ -1,56 +0,0 @@
|
||||
.Dd 2022-10-06
|
||||
.Dt GRAPHEME_TO_LOWERCASE_UTF8 3
|
||||
.Os suckless.org
|
||||
.Sh NAME
|
||||
.Nm grapheme_to_lowercase_utf8
|
||||
.Nd convert UTF-8-encoded string to lowercase
|
||||
.Sh SYNOPSIS
|
||||
.In grapheme.h
|
||||
.Ft size_t
|
||||
.Fn grapheme_to_lowercase_utf8 "const char *src" "size_t srclen" "char *dest" "size_t destlen"
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Fn grapheme_to_lowercase_utf8
|
||||
function converts the UTF-8-encoded string
|
||||
.Va str
|
||||
to lowercase and writes the result to
|
||||
.Va dest
|
||||
up to
|
||||
.Va destlen ,
|
||||
unless
|
||||
.Va dest
|
||||
is set to
|
||||
.Dv NULL .
|
||||
.Pp
|
||||
If
|
||||
.Va srclen
|
||||
is set to
|
||||
.Dv SIZE_MAX
|
||||
(stdint.h is already included by grapheme.h) the UTF-8-encoded string
|
||||
.Va src
|
||||
is interpreted to be NUL-terminated and processing stops when a
|
||||
NUL-byte is encountered.
|
||||
.Pp
|
||||
For non-UTF-8 input data
|
||||
.Xr grapheme_to_lowercase 3
|
||||
can be used instead.
|
||||
.Sh RETURN VALUES
|
||||
The
|
||||
.Fn grapheme_to_lowercase_utf8
|
||||
function returns the number of bytes in the array resulting
|
||||
from converting
|
||||
.Va src
|
||||
to lowercase, even if
|
||||
.Va destlen
|
||||
is not large enough or
|
||||
.Va dest
|
||||
is
|
||||
.Dv NULL .
|
||||
.Sh SEE ALSO
|
||||
.Xr grapheme_to_lowercase 3 ,
|
||||
.Xr libgrapheme 7
|
||||
.Sh STANDARDS
|
||||
.Fn grapheme_to_lowercase_utf8
|
||||
is compliant with the Unicode 15.0.0 specification.
|
||||
.Sh AUTHORS
|
||||
.An Laslo Hunhold Aq Mt dev@frign.de
|
@@ -1,3 +0,0 @@
|
||||
ENCODING="utf8" \
|
||||
CASE="lowercase" \
|
||||
$SH man/template/to_case.sh
|
@@ -1,56 +0,0 @@
|
||||
.Dd 2022-10-06
|
||||
.Dt GRAPHEME_TO_TITLECASE 3
|
||||
.Os suckless.org
|
||||
.Sh NAME
|
||||
.Nm grapheme_to_titlecase
|
||||
.Nd convert codepoint array to titlecase
|
||||
.Sh SYNOPSIS
|
||||
.In grapheme.h
|
||||
.Ft size_t
|
||||
.Fn grapheme_to_titlecase "const uint_least32_t *src" "size_t srclen" "uint_least32_t *dest" "size_t destlen"
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Fn grapheme_to_titlecase
|
||||
function converts the codepoint array
|
||||
.Va str
|
||||
to titlecase and writes the result to
|
||||
.Va dest
|
||||
up to
|
||||
.Va destlen ,
|
||||
unless
|
||||
.Va dest
|
||||
is set to
|
||||
.Dv NULL .
|
||||
.Pp
|
||||
If
|
||||
.Va srclen
|
||||
is set to
|
||||
.Dv SIZE_MAX
|
||||
(stdint.h is already included by grapheme.h) the codepoint array
|
||||
.Va src
|
||||
is interpreted to be NUL-terminated and processing stops when a
|
||||
NUL-byte is encountered.
|
||||
.Pp
|
||||
For UTF-8-encoded input data
|
||||
.Xr grapheme_to_titlecase_utf8 3
|
||||
can be used instead.
|
||||
.Sh RETURN VALUES
|
||||
The
|
||||
.Fn grapheme_to_titlecase
|
||||
function returns the number of codepoints in the array resulting
|
||||
from converting
|
||||
.Va src
|
||||
to titlecase, even if
|
||||
.Va destlen
|
||||
is not large enough or
|
||||
.Va dest
|
||||
is
|
||||
.Dv NULL .
|
||||
.Sh SEE ALSO
|
||||
.Xr grapheme_to_titlecase_utf8 3 ,
|
||||
.Xr libgrapheme 7
|
||||
.Sh STANDARDS
|
||||
.Fn grapheme_to_titlecase
|
||||
is compliant with the Unicode 15.0.0 specification.
|
||||
.Sh AUTHORS
|
||||
.An Laslo Hunhold Aq Mt dev@frign.de
|
@@ -1,3 +0,0 @@
|
||||
ENCODING="codepoint" \
|
||||
CASE="titlecase" \
|
||||
$SH man/template/to_case.sh
|
@@ -1,56 +0,0 @@
|
||||
.Dd 2022-10-06
|
||||
.Dt GRAPHEME_TO_TITLECASE_UTF8 3
|
||||
.Os suckless.org
|
||||
.Sh NAME
|
||||
.Nm grapheme_to_titlecase_utf8
|
||||
.Nd convert UTF-8-encoded string to titlecase
|
||||
.Sh SYNOPSIS
|
||||
.In grapheme.h
|
||||
.Ft size_t
|
||||
.Fn grapheme_to_titlecase_utf8 "const char *src" "size_t srclen" "char *dest" "size_t destlen"
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Fn grapheme_to_titlecase_utf8
|
||||
function converts the UTF-8-encoded string
|
||||
.Va str
|
||||
to titlecase and writes the result to
|
||||
.Va dest
|
||||
up to
|
||||
.Va destlen ,
|
||||
unless
|
||||
.Va dest
|
||||
is set to
|
||||
.Dv NULL .
|
||||
.Pp
|
||||
If
|
||||
.Va srclen
|
||||
is set to
|
||||
.Dv SIZE_MAX
|
||||
(stdint.h is already included by grapheme.h) the UTF-8-encoded string
|
||||
.Va src
|
||||
is interpreted to be NUL-terminated and processing stops when a
|
||||
NUL-byte is encountered.
|
||||
.Pp
|
||||
For non-UTF-8 input data
|
||||
.Xr grapheme_to_titlecase 3
|
||||
can be used instead.
|
||||
.Sh RETURN VALUES
|
||||
The
|
||||
.Fn grapheme_to_titlecase_utf8
|
||||
function returns the number of bytes in the array resulting
|
||||
from converting
|
||||
.Va src
|
||||
to titlecase, even if
|
||||
.Va destlen
|
||||
is not large enough or
|
||||
.Va dest
|
||||
is
|
||||
.Dv NULL .
|
||||
.Sh SEE ALSO
|
||||
.Xr grapheme_to_titlecase 3 ,
|
||||
.Xr libgrapheme 7
|
||||
.Sh STANDARDS
|
||||
.Fn grapheme_to_titlecase_utf8
|
||||
is compliant with the Unicode 15.0.0 specification.
|
||||
.Sh AUTHORS
|
||||
.An Laslo Hunhold Aq Mt dev@frign.de
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user