Initial Commit
This commit is contained in:
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
builds/*
|
||||
*.vim
|
9
.gitmodules
vendored
Normal file
9
.gitmodules
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
[submodule "libs/tree-sitter-c"]
|
||||
path = libs/tree-sitter-c
|
||||
url = https://github.com/tree-sitter/tree-sitter-c
|
||||
[submodule "libs/tree-sitter"]
|
||||
path = libs/tree-sitter
|
||||
url = https://github.com/tree-sitter/tree-sitter.git
|
||||
[submodule "libs/tree-sitter-ruby"]
|
||||
path = libs/tree-sitter-ruby
|
||||
url = https://github.com/tree-sitter/tree-sitter-ruby.git
|
47
Makefile
Normal file
47
Makefile
Normal file
@@ -0,0 +1,47 @@
|
||||
# Project settings
|
||||
TARGET := cubit
|
||||
SRCDIR := src
|
||||
BUILDDIR := builds
|
||||
UNIW := libs/unicode_width/unicode_width.c
|
||||
GRAPHEME := libs/libgrapheme-2.0.2/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
|
||||
TREE_SITTER := libs/tree-sitter/libtree-sitter.a
|
||||
|
||||
# Sources
|
||||
SRC := $(wildcard $(SRCDIR)/*.c) $(UNIW) $(GRAPHEME) $(CJSON)
|
||||
|
||||
# Linker flags (libraries you want to link against)
|
||||
LIBS := $(TREE_SITTER) $(TREE_SITTER_RUBY) $(TREE_SITTER_C)
|
||||
|
||||
# Compiler settings
|
||||
CC := gcc
|
||||
CFLAGS := -Wall -Wextra
|
||||
DBGFLAGS := -O0 -g -fsanitize=address -fno-omit-frame-pointer
|
||||
OPTFLAGS := -O3 -march=native -flto -fomit-frame-pointer
|
||||
|
||||
# Default target
|
||||
all: release
|
||||
|
||||
# Debug/test build (with sanitizers, does NOT run automatically)
|
||||
test: $(BUILDDIR)/$(TARGET)-tst
|
||||
@echo "Built test binary at $(BUILDDIR)/$(TARGET)-tst"
|
||||
|
||||
$(BUILDDIR)/$(TARGET)-tst: $(SRC)
|
||||
@mkdir -p $(BUILDDIR)
|
||||
env ASAN_OPTIONS=verbosity=1:halt_on_error=1 $(CC) $(CFLAGS) $(DBGFLAGS) -o $@ $^ $(LIBS)
|
||||
|
||||
# Release build (optimized, no sanitizers)
|
||||
release: $(BUILDDIR)/$(TARGET)
|
||||
|
||||
$(BUILDDIR)/$(TARGET): $(SRC)
|
||||
@mkdir -p $(BUILDDIR)
|
||||
$(CC) $(CFLAGS) $(OPTFLAGS) -o $@ $^ $(LIBS)
|
||||
strip $@
|
||||
|
||||
# Clean
|
||||
clean:
|
||||
rm -rf $(BUILDDIR)
|
||||
|
||||
.PHONY: all test release clean
|
2865
libs/cjson/cJSON.c
Normal file
2865
libs/cjson/cJSON.c
Normal file
File diff suppressed because it is too large
Load Diff
395
libs/cjson/cJSON.h
Normal file
395
libs/cjson/cJSON.h
Normal file
@@ -0,0 +1,395 @@
|
||||
/*
|
||||
Copyright (c) 2009-2017 Dave Gamble and cJSON contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS 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. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef cJSON__h
|
||||
#define cJSON__h
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#if !defined(__WINDOWS__) && \
|
||||
(defined(WIN32) || defined(WIN64) || defined(_MSC_VER) || defined(_WIN32))
|
||||
#define __WINDOWS__
|
||||
#endif
|
||||
|
||||
#ifdef __WINDOWS__
|
||||
|
||||
/* When compiling for windows, we specify a specific calling convention to avoid
|
||||
issues where we are being called from a project with a different default calling
|
||||
convention. For windows you have 3 define options:
|
||||
|
||||
CJSON_HIDE_SYMBOLS - Define this in the case where you don't want to ever
|
||||
dllexport symbols CJSON_EXPORT_SYMBOLS - Define this on library build when you
|
||||
want to dllexport symbols (default) CJSON_IMPORT_SYMBOLS - Define this if you
|
||||
want to dllimport symbol
|
||||
|
||||
For *nix builds that support visibility attribute, you can define similar
|
||||
behavior by
|
||||
|
||||
setting default visibility to hidden by adding
|
||||
-fvisibility=hidden (for gcc)
|
||||
or
|
||||
-xldscope=hidden (for sun cc)
|
||||
to CFLAGS
|
||||
|
||||
then using the CJSON_API_VISIBILITY flag to "export" the same symbols the way
|
||||
CJSON_EXPORT_SYMBOLS does
|
||||
|
||||
*/
|
||||
|
||||
#define CJSON_CDECL __cdecl
|
||||
#define CJSON_STDCALL __stdcall
|
||||
|
||||
/* export symbols by default, this is necessary for copy pasting the C and
|
||||
* header file */
|
||||
#if !defined(CJSON_HIDE_SYMBOLS) && !defined(CJSON_IMPORT_SYMBOLS) && \
|
||||
!defined(CJSON_EXPORT_SYMBOLS)
|
||||
#define CJSON_EXPORT_SYMBOLS
|
||||
#endif
|
||||
|
||||
#if defined(CJSON_HIDE_SYMBOLS)
|
||||
#define CJSON_PUBLIC(type) type CJSON_STDCALL
|
||||
#elif defined(CJSON_EXPORT_SYMBOLS)
|
||||
#define CJSON_PUBLIC(type) __declspec(dllexport) type CJSON_STDCALL
|
||||
#elif defined(CJSON_IMPORT_SYMBOLS)
|
||||
#define CJSON_PUBLIC(type) __declspec(dllimport) type CJSON_STDCALL
|
||||
#endif
|
||||
#else /* !__WINDOWS__ */
|
||||
#define CJSON_CDECL
|
||||
#define CJSON_STDCALL
|
||||
|
||||
#if (defined(__GNUC__) || defined(__SUNPRO_CC) || defined(__SUNPRO_C)) && \
|
||||
defined(CJSON_API_VISIBILITY)
|
||||
#define CJSON_PUBLIC(type) __attribute__((visibility("default"))) type
|
||||
#else
|
||||
#define CJSON_PUBLIC(type) type
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* project version */
|
||||
#define CJSON_VERSION_MAJOR 1
|
||||
#define CJSON_VERSION_MINOR 7
|
||||
#define CJSON_VERSION_PATCH 18
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
/* cJSON Types: */
|
||||
#define cJSON_Invalid (0)
|
||||
#define cJSON_False (1 << 0)
|
||||
#define cJSON_True (1 << 1)
|
||||
#define cJSON_NULL (1 << 2)
|
||||
#define cJSON_Number (1 << 3)
|
||||
#define cJSON_String (1 << 4)
|
||||
#define cJSON_Array (1 << 5)
|
||||
#define cJSON_Object (1 << 6)
|
||||
#define cJSON_Raw (1 << 7) /* raw json */
|
||||
|
||||
#define cJSON_IsReference 256
|
||||
#define cJSON_StringIsConst 512
|
||||
|
||||
/* The cJSON structure: */
|
||||
typedef struct cJSON {
|
||||
/* next/prev allow you to walk array/object chains. Alternatively, use
|
||||
* GetArraySize/GetArrayItem/GetObjectItem */
|
||||
struct cJSON *next;
|
||||
struct cJSON *prev;
|
||||
/* An array or object item will have a child pointer pointing to a chain of
|
||||
* the items in the array/object. */
|
||||
struct cJSON *child;
|
||||
|
||||
/* The type of the item, as above. */
|
||||
int type;
|
||||
|
||||
/* The item's string, if type==cJSON_String and type == cJSON_Raw */
|
||||
char *valuestring;
|
||||
/* writing to valueint is DEPRECATED, use cJSON_SetNumberValue instead */
|
||||
int valueint;
|
||||
/* The item's number, if type==cJSON_Number */
|
||||
double valuedouble;
|
||||
|
||||
/* The item's name string, if this item is the child of, or is in the list of
|
||||
* subitems of an object. */
|
||||
char *string;
|
||||
} cJSON;
|
||||
|
||||
typedef struct cJSON_Hooks {
|
||||
/* malloc/free are CDECL on Windows regardless of the default calling
|
||||
* convention of the compiler, so ensure the hooks allow passing those
|
||||
* functions directly. */
|
||||
void *(CJSON_CDECL *malloc_fn)(size_t sz);
|
||||
void(CJSON_CDECL *free_fn)(void *ptr);
|
||||
} cJSON_Hooks;
|
||||
|
||||
typedef int cJSON_bool;
|
||||
|
||||
/* Limits how deeply nested arrays/objects can be before cJSON rejects to parse
|
||||
* them. This is to prevent stack overflows. */
|
||||
#ifndef CJSON_NESTING_LIMIT
|
||||
#define CJSON_NESTING_LIMIT 1000
|
||||
#endif
|
||||
|
||||
/* Limits the length of circular references can be before cJSON rejects to parse
|
||||
* them. This is to prevent stack overflows. */
|
||||
#ifndef CJSON_CIRCULAR_LIMIT
|
||||
#define CJSON_CIRCULAR_LIMIT 10000
|
||||
#endif
|
||||
|
||||
/* returns the version of cJSON as a string */
|
||||
CJSON_PUBLIC(const char *) cJSON_Version(void);
|
||||
|
||||
/* Supply malloc, realloc and free functions to cJSON */
|
||||
CJSON_PUBLIC(void) cJSON_InitHooks(cJSON_Hooks *hooks);
|
||||
|
||||
/* Memory Management: the caller is always responsible to free the results from
|
||||
* all variants of cJSON_Parse (with cJSON_Delete) and cJSON_Print (with stdlib
|
||||
* free, cJSON_Hooks.free_fn, or cJSON_free as appropriate). The exception is
|
||||
* cJSON_PrintPreallocated, where the caller has full responsibility of the
|
||||
* buffer. */
|
||||
/* Supply a block of JSON, and this returns a cJSON object you can interrogate.
|
||||
*/
|
||||
CJSON_PUBLIC(cJSON *) cJSON_Parse(const char *value);
|
||||
CJSON_PUBLIC(cJSON *)
|
||||
cJSON_ParseWithLength(const char *value, size_t buffer_length);
|
||||
/* ParseWithOpts allows you to require (and check) that the JSON is null
|
||||
* terminated, and to retrieve the pointer to the final byte parsed. */
|
||||
/* If you supply a ptr in return_parse_end and parsing fails, then
|
||||
* return_parse_end will contain a pointer to the error so will match
|
||||
* cJSON_GetErrorPtr(). */
|
||||
CJSON_PUBLIC(cJSON *)
|
||||
cJSON_ParseWithOpts(const char *value, const char **return_parse_end,
|
||||
cJSON_bool require_null_terminated);
|
||||
CJSON_PUBLIC(cJSON *)
|
||||
cJSON_ParseWithLengthOpts(const char *value, size_t buffer_length,
|
||||
const char **return_parse_end,
|
||||
cJSON_bool require_null_terminated);
|
||||
|
||||
/* Render a cJSON entity to text for transfer/storage. */
|
||||
CJSON_PUBLIC(char *) cJSON_Print(const cJSON *item);
|
||||
/* Render a cJSON entity to text for transfer/storage without any formatting. */
|
||||
CJSON_PUBLIC(char *) cJSON_PrintUnformatted(const cJSON *item);
|
||||
/* Render a cJSON entity to text using a buffered strategy. prebuffer is a guess
|
||||
* at the final size. guessing well reduces reallocation. fmt=0 gives
|
||||
* unformatted, =1 gives formatted */
|
||||
CJSON_PUBLIC(char *)
|
||||
cJSON_PrintBuffered(const cJSON *item, int prebuffer, cJSON_bool fmt);
|
||||
/* Render a cJSON entity to text using a buffer already allocated in memory with
|
||||
* given length. Returns 1 on success and 0 on failure. */
|
||||
/* NOTE: cJSON is not always 100% accurate in estimating how much memory it will
|
||||
* use, so to be safe allocate 5 bytes more than you actually need */
|
||||
CJSON_PUBLIC(cJSON_bool)
|
||||
cJSON_PrintPreallocated(cJSON *item, char *buffer, const int length,
|
||||
const cJSON_bool format);
|
||||
/* Delete a cJSON entity and all subentities. */
|
||||
CJSON_PUBLIC(void) cJSON_Delete(cJSON *item);
|
||||
|
||||
/* Returns the number of items in an array (or object). */
|
||||
CJSON_PUBLIC(int) cJSON_GetArraySize(const cJSON *array);
|
||||
/* Retrieve item number "index" from array "array". Returns NULL if
|
||||
* unsuccessful. */
|
||||
CJSON_PUBLIC(cJSON *) cJSON_GetArrayItem(const cJSON *array, int index);
|
||||
/* Get item "string" from object. Case insensitive. */
|
||||
CJSON_PUBLIC(cJSON *)
|
||||
cJSON_GetObjectItem(const cJSON *const object, const char *const string);
|
||||
CJSON_PUBLIC(cJSON *)
|
||||
cJSON_GetObjectItemCaseSensitive(const cJSON *const object,
|
||||
const char *const string);
|
||||
CJSON_PUBLIC(cJSON_bool)
|
||||
cJSON_HasObjectItem(const cJSON *object, const char *string);
|
||||
/* For analysing failed parses. This returns a pointer to the parse error.
|
||||
* You'll probably need to look a few chars back to make sense of it. Defined
|
||||
* when cJSON_Parse() returns 0. 0 when cJSON_Parse() succeeds. */
|
||||
CJSON_PUBLIC(const char *) cJSON_GetErrorPtr(void);
|
||||
|
||||
/* Check item type and return its value */
|
||||
CJSON_PUBLIC(char *) cJSON_GetStringValue(const cJSON *const item);
|
||||
CJSON_PUBLIC(double) cJSON_GetNumberValue(const cJSON *const item);
|
||||
|
||||
/* These functions check the type of an item */
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_IsInvalid(const cJSON *const item);
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_IsFalse(const cJSON *const item);
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_IsTrue(const cJSON *const item);
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_IsBool(const cJSON *const item);
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_IsNull(const cJSON *const item);
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_IsNumber(const cJSON *const item);
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_IsString(const cJSON *const item);
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_IsArray(const cJSON *const item);
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_IsObject(const cJSON *const item);
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_IsRaw(const cJSON *const item);
|
||||
|
||||
/* These calls create a cJSON item of the appropriate type. */
|
||||
CJSON_PUBLIC(cJSON *) cJSON_CreateNull(void);
|
||||
CJSON_PUBLIC(cJSON *) cJSON_CreateTrue(void);
|
||||
CJSON_PUBLIC(cJSON *) cJSON_CreateFalse(void);
|
||||
CJSON_PUBLIC(cJSON *) cJSON_CreateBool(cJSON_bool boolean);
|
||||
CJSON_PUBLIC(cJSON *) cJSON_CreateNumber(double num);
|
||||
CJSON_PUBLIC(cJSON *) cJSON_CreateString(const char *string);
|
||||
/* raw json */
|
||||
CJSON_PUBLIC(cJSON *) cJSON_CreateRaw(const char *raw);
|
||||
CJSON_PUBLIC(cJSON *) cJSON_CreateArray(void);
|
||||
CJSON_PUBLIC(cJSON *) cJSON_CreateObject(void);
|
||||
|
||||
/* Create a string where valuestring references a string so
|
||||
* it will not be freed by cJSON_Delete */
|
||||
CJSON_PUBLIC(cJSON *) cJSON_CreateStringReference(const char *string);
|
||||
/* Create an object/array that only references it's elements so
|
||||
* they will not be freed by cJSON_Delete */
|
||||
CJSON_PUBLIC(cJSON *) cJSON_CreateObjectReference(const cJSON *child);
|
||||
CJSON_PUBLIC(cJSON *) cJSON_CreateArrayReference(const cJSON *child);
|
||||
|
||||
/* These utilities create an Array of count items.
|
||||
* The parameter count cannot be greater than the number of elements in the
|
||||
* number array, otherwise array access will be out of bounds.*/
|
||||
CJSON_PUBLIC(cJSON *) cJSON_CreateIntArray(const int *numbers, int count);
|
||||
CJSON_PUBLIC(cJSON *) cJSON_CreateFloatArray(const float *numbers, int count);
|
||||
CJSON_PUBLIC(cJSON *) cJSON_CreateDoubleArray(const double *numbers, int count);
|
||||
CJSON_PUBLIC(cJSON *)
|
||||
cJSON_CreateStringArray(const char *const *strings, int count);
|
||||
|
||||
/* Append item to the specified array/object. */
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToArray(cJSON *array, cJSON *item);
|
||||
CJSON_PUBLIC(cJSON_bool)
|
||||
cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item);
|
||||
/* Use this when string is definitely const (i.e. a literal, or as good as), and
|
||||
* will definitely survive the cJSON object. WARNING: When this function was
|
||||
* used, make sure to always check that (item->type & cJSON_StringIsConst) is
|
||||
* zero before writing to `item->string` */
|
||||
CJSON_PUBLIC(cJSON_bool)
|
||||
cJSON_AddItemToObjectCS(cJSON *object, const char *string, cJSON *item);
|
||||
/* Append reference to item to the specified array/object. Use this when you
|
||||
* want to add an existing cJSON to a new cJSON, but don't want to corrupt your
|
||||
* existing cJSON. */
|
||||
CJSON_PUBLIC(cJSON_bool)
|
||||
cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item);
|
||||
CJSON_PUBLIC(cJSON_bool)
|
||||
cJSON_AddItemReferenceToObject(cJSON *object, const char *string, cJSON *item);
|
||||
|
||||
/* Remove/Detach items from Arrays/Objects. */
|
||||
CJSON_PUBLIC(cJSON *)
|
||||
cJSON_DetachItemViaPointer(cJSON *parent, cJSON *const item);
|
||||
CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromArray(cJSON *array, int which);
|
||||
CJSON_PUBLIC(void) cJSON_DeleteItemFromArray(cJSON *array, int which);
|
||||
CJSON_PUBLIC(cJSON *)
|
||||
cJSON_DetachItemFromObject(cJSON *object, const char *string);
|
||||
CJSON_PUBLIC(cJSON *)
|
||||
cJSON_DetachItemFromObjectCaseSensitive(cJSON *object, const char *string);
|
||||
CJSON_PUBLIC(void)
|
||||
cJSON_DeleteItemFromObject(cJSON *object, const char *string);
|
||||
CJSON_PUBLIC(void)
|
||||
cJSON_DeleteItemFromObjectCaseSensitive(cJSON *object, const char *string);
|
||||
|
||||
/* Update array items. */
|
||||
CJSON_PUBLIC(cJSON_bool)
|
||||
cJSON_InsertItemInArray(
|
||||
cJSON *array, int which,
|
||||
cJSON *newitem); /* Shifts pre-existing items to the right. */
|
||||
CJSON_PUBLIC(cJSON_bool)
|
||||
cJSON_ReplaceItemViaPointer(cJSON *const parent, cJSON *const item,
|
||||
cJSON *replacement);
|
||||
CJSON_PUBLIC(cJSON_bool)
|
||||
cJSON_ReplaceItemInArray(cJSON *array, int which, cJSON *newitem);
|
||||
CJSON_PUBLIC(cJSON_bool)
|
||||
cJSON_ReplaceItemInObject(cJSON *object, const char *string, cJSON *newitem);
|
||||
CJSON_PUBLIC(cJSON_bool)
|
||||
cJSON_ReplaceItemInObjectCaseSensitive(cJSON *object, const char *string,
|
||||
cJSON *newitem);
|
||||
|
||||
/* Duplicate a cJSON item */
|
||||
CJSON_PUBLIC(cJSON *) cJSON_Duplicate(const cJSON *item, cJSON_bool recurse);
|
||||
/* Duplicate will create a new, identical cJSON item to the one you pass, in new
|
||||
* memory that will need to be released. With recurse!=0, it will duplicate any
|
||||
* children connected to the item. The item->next and ->prev pointers are always
|
||||
* zero on return from Duplicate. */
|
||||
/* Recursively compare two cJSON items for equality. If either a or b is NULL or
|
||||
* invalid, they will be considered unequal. case_sensitive determines if object
|
||||
* keys are treated case sensitive (1) or case insensitive (0) */
|
||||
CJSON_PUBLIC(cJSON_bool)
|
||||
cJSON_Compare(const cJSON *const a, const cJSON *const b,
|
||||
const cJSON_bool case_sensitive);
|
||||
|
||||
/* Minify a strings, remove blank characters(such as ' ', '\t', '\r', '\n') from
|
||||
* strings. The input pointer json cannot point to a read-only address area,
|
||||
* such as a string constant, but should point to a readable and writable
|
||||
* address area. */
|
||||
CJSON_PUBLIC(void) cJSON_Minify(char *json);
|
||||
|
||||
/* Helper functions for creating and adding items to an object at the same time.
|
||||
* They return the added item or NULL on failure. */
|
||||
CJSON_PUBLIC(cJSON *)
|
||||
cJSON_AddNullToObject(cJSON *const object, const char *const name);
|
||||
CJSON_PUBLIC(cJSON *)
|
||||
cJSON_AddTrueToObject(cJSON *const object, const char *const name);
|
||||
CJSON_PUBLIC(cJSON *)
|
||||
cJSON_AddFalseToObject(cJSON *const object, const char *const name);
|
||||
CJSON_PUBLIC(cJSON *)
|
||||
cJSON_AddBoolToObject(cJSON *const object, const char *const name,
|
||||
const cJSON_bool boolean);
|
||||
CJSON_PUBLIC(cJSON *)
|
||||
cJSON_AddNumberToObject(cJSON *const object, const char *const name,
|
||||
const double number);
|
||||
CJSON_PUBLIC(cJSON *)
|
||||
cJSON_AddStringToObject(cJSON *const object, const char *const name,
|
||||
const char *const string);
|
||||
CJSON_PUBLIC(cJSON *)
|
||||
cJSON_AddRawToObject(cJSON *const object, const char *const name,
|
||||
const char *const raw);
|
||||
CJSON_PUBLIC(cJSON *)
|
||||
cJSON_AddObjectToObject(cJSON *const object, const char *const name);
|
||||
CJSON_PUBLIC(cJSON *)
|
||||
cJSON_AddArrayToObject(cJSON *const object, const char *const name);
|
||||
|
||||
/* When assigning an integer value, it needs to be propagated to valuedouble
|
||||
* too. */
|
||||
#define cJSON_SetIntValue(object, number) \
|
||||
((object) ? (object)->valueint = (object)->valuedouble = (number) : (number))
|
||||
/* helper for the cJSON_SetNumberValue macro */
|
||||
CJSON_PUBLIC(double) cJSON_SetNumberHelper(cJSON *object, double number);
|
||||
#define cJSON_SetNumberValue(object, number) \
|
||||
((object != NULL) ? cJSON_SetNumberHelper(object, (double)number) : (number))
|
||||
/* Change the valuestring of a cJSON_String object, only takes effect when type
|
||||
* of object is cJSON_String */
|
||||
CJSON_PUBLIC(char *)
|
||||
cJSON_SetValuestring(cJSON *object, const char *valuestring);
|
||||
|
||||
/* If the object is not a boolean type this does nothing and returns
|
||||
* cJSON_Invalid else it returns the new type*/
|
||||
#define cJSON_SetBoolValue(object, boolValue) \
|
||||
((object != NULL && ((object)->type & (cJSON_False | cJSON_True))) \
|
||||
? (object)->type = ((object)->type & (~(cJSON_False | cJSON_True))) | \
|
||||
((boolValue) ? cJSON_True : cJSON_False) \
|
||||
: cJSON_Invalid)
|
||||
|
||||
/* Macro for iterating over an array or object */
|
||||
#define cJSON_ArrayForEach(element, array) \
|
||||
for (element = (array != NULL) ? (array)->child : NULL; element != NULL; \
|
||||
element = element->next)
|
||||
|
||||
/* malloc/free objects using the malloc/free functions that have been set with
|
||||
* cJSON_InitHooks */
|
||||
CJSON_PUBLIC(void *) cJSON_malloc(size_t size);
|
||||
CJSON_PUBLIC(void) cJSON_free(void *object);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
3181
libs/grammars/ruby.json
Normal file
3181
libs/grammars/ruby.json
Normal file
File diff suppressed because it is too large
Load Diff
15
libs/libgrapheme-2.0.2/LICENSE
Normal file
15
libs/libgrapheme-2.0.2/LICENSE
Normal file
@@ -0,0 +1,15 @@
|
||||
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.
|
327
libs/libgrapheme-2.0.2/Makefile
Normal file
327
libs/libgrapheme-2.0.2/Makefile
Normal file
@@ -0,0 +1,327 @@
|
||||
# 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
|
64
libs/libgrapheme-2.0.2/README
Normal file
64
libs/libgrapheme-2.0.2/README
Normal file
@@ -0,0 +1,64 @@
|
||||
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>
|
55
libs/libgrapheme-2.0.2/benchmark/case.c
Normal file
55
libs/libgrapheme-2.0.2/benchmark/case.c
Normal file
@@ -0,0 +1,55 @@
|
||||
/* 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;
|
||||
}
|
86
libs/libgrapheme-2.0.2/benchmark/character.c
Normal file
86
libs/libgrapheme-2.0.2/benchmark/character.c
Normal file
@@ -0,0 +1,86 @@
|
||||
/* 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;
|
||||
}
|
52
libs/libgrapheme-2.0.2/benchmark/line.c
Normal file
52
libs/libgrapheme-2.0.2/benchmark/line.c
Normal file
@@ -0,0 +1,52 @@
|
||||
/* 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;
|
||||
}
|
52
libs/libgrapheme-2.0.2/benchmark/sentence.c
Normal file
52
libs/libgrapheme-2.0.2/benchmark/sentence.c
Normal file
@@ -0,0 +1,52 @@
|
||||
/* 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;
|
||||
}
|
95
libs/libgrapheme-2.0.2/benchmark/utf8-decode.c
Normal file
95
libs/libgrapheme-2.0.2/benchmark/utf8-decode.c
Normal file
@@ -0,0 +1,95 @@
|
||||
/* 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;
|
||||
}
|
115
libs/libgrapheme-2.0.2/benchmark/util.c
Normal file
115
libs/libgrapheme-2.0.2/benchmark/util.c
Normal file
@@ -0,0 +1,115 @@
|
||||
/* 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 : "");
|
||||
}
|
||||
}
|
23
libs/libgrapheme-2.0.2/benchmark/util.h
Normal file
23
libs/libgrapheme-2.0.2/benchmark/util.h
Normal file
@@ -0,0 +1,23 @@
|
||||
/* 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 */
|
52
libs/libgrapheme-2.0.2/benchmark/word.c
Normal file
52
libs/libgrapheme-2.0.2/benchmark/word.c
Normal file
@@ -0,0 +1,52 @@
|
||||
/* 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;
|
||||
}
|
32
libs/libgrapheme-2.0.2/config.mk
Normal file
32
libs/libgrapheme-2.0.2/config.mk
Normal file
@@ -0,0 +1,32 @@
|
||||
# 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
Executable file
39
libs/libgrapheme-2.0.2/configure
vendored
Executable file
@@ -0,0 +1,39 @@
|
||||
#!/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
|
12575
libs/libgrapheme-2.0.2/data/DerivedCoreProperties.txt
Normal file
12575
libs/libgrapheme-2.0.2/data/DerivedCoreProperties.txt
Normal file
File diff suppressed because it is too large
Load Diff
2619
libs/libgrapheme-2.0.2/data/EastAsianWidth.txt
Normal file
2619
libs/libgrapheme-2.0.2/data/EastAsianWidth.txt
Normal file
File diff suppressed because it is too large
Load Diff
1475
libs/libgrapheme-2.0.2/data/GraphemeBreakProperty.txt
Normal file
1475
libs/libgrapheme-2.0.2/data/GraphemeBreakProperty.txt
Normal file
File diff suppressed because it is too large
Load Diff
630
libs/libgrapheme-2.0.2/data/GraphemeBreakTest.txt
Normal file
630
libs/libgrapheme-2.0.2/data/GraphemeBreakTest.txt
Normal file
@@ -0,0 +1,630 @@
|
||||
# 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
|
46
libs/libgrapheme-2.0.2/data/LICENSE
Normal file
46
libs/libgrapheme-2.0.2/data/LICENSE
Normal file
@@ -0,0 +1,46 @@
|
||||
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.
|
3597
libs/libgrapheme-2.0.2/data/LineBreak.txt
Normal file
3597
libs/libgrapheme-2.0.2/data/LineBreak.txt
Normal file
File diff suppressed because it is too large
Load Diff
7686
libs/libgrapheme-2.0.2/data/LineBreakTest.txt
Normal file
7686
libs/libgrapheme-2.0.2/data/LineBreakTest.txt
Normal file
File diff suppressed because it is too large
Load Diff
2921
libs/libgrapheme-2.0.2/data/SentenceBreakProperty.txt
Normal file
2921
libs/libgrapheme-2.0.2/data/SentenceBreakProperty.txt
Normal file
File diff suppressed because it is too large
Load Diff
530
libs/libgrapheme-2.0.2/data/SentenceBreakTest.txt
Normal file
530
libs/libgrapheme-2.0.2/data/SentenceBreakTest.txt
Normal file
@@ -0,0 +1,530 @@
|
||||
# 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
|
281
libs/libgrapheme-2.0.2/data/SpecialCasing.txt
Normal file
281
libs/libgrapheme-2.0.2/data/SpecialCasing.txt
Normal file
@@ -0,0 +1,281 @@
|
||||
# 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
|
||||
|
34924
libs/libgrapheme-2.0.2/data/UnicodeData.txt
Normal file
34924
libs/libgrapheme-2.0.2/data/UnicodeData.txt
Normal file
File diff suppressed because it is too large
Load Diff
1468
libs/libgrapheme-2.0.2/data/WordBreakProperty.txt
Normal file
1468
libs/libgrapheme-2.0.2/data/WordBreakProperty.txt
Normal file
File diff suppressed because it is too large
Load Diff
1851
libs/libgrapheme-2.0.2/data/WordBreakTest.txt
Normal file
1851
libs/libgrapheme-2.0.2/data/WordBreakTest.txt
Normal file
File diff suppressed because it is too large
Load Diff
1320
libs/libgrapheme-2.0.2/data/emoji-data.txt
Normal file
1320
libs/libgrapheme-2.0.2/data/emoji-data.txt
Normal file
File diff suppressed because it is too large
Load Diff
BIN
libs/libgrapheme-2.0.2/gen/case
Executable file
BIN
libs/libgrapheme-2.0.2/gen/case
Executable file
Binary file not shown.
318
libs/libgrapheme-2.0.2/gen/case.c
Normal file
318
libs/libgrapheme-2.0.2/gen/case.c
Normal file
@@ -0,0 +1,318 @@
|
||||
/* 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;
|
||||
}
|
9033
libs/libgrapheme-2.0.2/gen/case.h
Normal file
9033
libs/libgrapheme-2.0.2/gen/case.h
Normal file
File diff suppressed because it is too large
Load Diff
BIN
libs/libgrapheme-2.0.2/gen/case.o
Normal file
BIN
libs/libgrapheme-2.0.2/gen/case.o
Normal file
Binary file not shown.
BIN
libs/libgrapheme-2.0.2/gen/character
Executable file
BIN
libs/libgrapheme-2.0.2/gen/character
Executable file
Binary file not shown.
19
libs/libgrapheme-2.0.2/gen/character-test.c
Normal file
19
libs/libgrapheme-2.0.2/gen/character-test.c
Normal file
@@ -0,0 +1,19 @@
|
||||
/* 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;
|
||||
}
|
97
libs/libgrapheme-2.0.2/gen/character.c
Normal file
97
libs/libgrapheme-2.0.2/gen/character.c
Normal file
@@ -0,0 +1,97 @@
|
||||
/* 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;
|
||||
}
|
3547
libs/libgrapheme-2.0.2/gen/character.h
Normal file
3547
libs/libgrapheme-2.0.2/gen/character.h
Normal file
File diff suppressed because it is too large
Load Diff
BIN
libs/libgrapheme-2.0.2/gen/character.o
Normal file
BIN
libs/libgrapheme-2.0.2/gen/character.o
Normal file
Binary file not shown.
BIN
libs/libgrapheme-2.0.2/gen/line
Executable file
BIN
libs/libgrapheme-2.0.2/gen/line
Executable file
Binary file not shown.
19
libs/libgrapheme-2.0.2/gen/line-test.c
Normal file
19
libs/libgrapheme-2.0.2/gen/line-test.c
Normal file
@@ -0,0 +1,19 @@
|
||||
/* 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;
|
||||
}
|
456
libs/libgrapheme-2.0.2/gen/line.c
Normal file
456
libs/libgrapheme-2.0.2/gen/line.c
Normal file
@@ -0,0 +1,456 @@
|
||||
/* 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;
|
||||
}
|
4738
libs/libgrapheme-2.0.2/gen/line.h
Normal file
4738
libs/libgrapheme-2.0.2/gen/line.h
Normal file
File diff suppressed because it is too large
Load Diff
BIN
libs/libgrapheme-2.0.2/gen/line.o
Normal file
BIN
libs/libgrapheme-2.0.2/gen/line.o
Normal file
Binary file not shown.
BIN
libs/libgrapheme-2.0.2/gen/sentence
Executable file
BIN
libs/libgrapheme-2.0.2/gen/sentence
Executable file
Binary file not shown.
19
libs/libgrapheme-2.0.2/gen/sentence-test.c
Normal file
19
libs/libgrapheme-2.0.2/gen/sentence-test.c
Normal file
@@ -0,0 +1,19 @@
|
||||
/* 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;
|
||||
}
|
94
libs/libgrapheme-2.0.2/gen/sentence.c
Normal file
94
libs/libgrapheme-2.0.2/gen/sentence.c
Normal file
@@ -0,0 +1,94 @@
|
||||
/* 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;
|
||||
}
|
4731
libs/libgrapheme-2.0.2/gen/sentence.h
Normal file
4731
libs/libgrapheme-2.0.2/gen/sentence.h
Normal file
File diff suppressed because it is too large
Load Diff
BIN
libs/libgrapheme-2.0.2/gen/sentence.o
Normal file
BIN
libs/libgrapheme-2.0.2/gen/sentence.o
Normal file
Binary file not shown.
16
libs/libgrapheme-2.0.2/gen/types.h
Normal file
16
libs/libgrapheme-2.0.2/gen/types.h
Normal file
@@ -0,0 +1,16 @@
|
||||
/* 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 */
|
704
libs/libgrapheme-2.0.2/gen/util.c
Normal file
704
libs/libgrapheme-2.0.2/gen/util.c
Normal file
@@ -0,0 +1,704 @@
|
||||
/* 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);
|
||||
}
|
60
libs/libgrapheme-2.0.2/gen/util.h
Normal file
60
libs/libgrapheme-2.0.2/gen/util.h
Normal file
@@ -0,0 +1,60 @@
|
||||
/* 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 */
|
BIN
libs/libgrapheme-2.0.2/gen/util.o
Normal file
BIN
libs/libgrapheme-2.0.2/gen/util.o
Normal file
Binary file not shown.
BIN
libs/libgrapheme-2.0.2/gen/word
Executable file
BIN
libs/libgrapheme-2.0.2/gen/word
Executable file
Binary file not shown.
19
libs/libgrapheme-2.0.2/gen/word-test.c
Normal file
19
libs/libgrapheme-2.0.2/gen/word-test.c
Normal file
@@ -0,0 +1,19 @@
|
||||
/* 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;
|
||||
}
|
159
libs/libgrapheme-2.0.2/gen/word.c
Normal file
159
libs/libgrapheme-2.0.2/gen/word.c
Normal file
@@ -0,0 +1,159 @@
|
||||
/* 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;
|
||||
}
|
4705
libs/libgrapheme-2.0.2/gen/word.h
Normal file
4705
libs/libgrapheme-2.0.2/gen/word.h
Normal file
File diff suppressed because it is too large
Load Diff
BIN
libs/libgrapheme-2.0.2/gen/word.o
Normal file
BIN
libs/libgrapheme-2.0.2/gen/word.o
Normal file
Binary file not shown.
42
libs/libgrapheme-2.0.2/grapheme.h
Normal file
42
libs/libgrapheme-2.0.2/grapheme.h
Normal file
@@ -0,0 +1,42 @@
|
||||
/* 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 */
|
BIN
libs/libgrapheme-2.0.2/libgrapheme.a
Normal file
BIN
libs/libgrapheme-2.0.2/libgrapheme.a
Normal file
Binary file not shown.
BIN
libs/libgrapheme-2.0.2/libgrapheme.so.2.0.2
Executable file
BIN
libs/libgrapheme-2.0.2/libgrapheme.so.2.0.2
Executable file
Binary file not shown.
100
libs/libgrapheme-2.0.2/man/grapheme_decode_utf8.3
Normal file
100
libs/libgrapheme-2.0.2/man/grapheme_decode_utf8.3
Normal file
@@ -0,0 +1,100 @@
|
||||
.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
|
102
libs/libgrapheme-2.0.2/man/grapheme_decode_utf8.sh
Normal file
102
libs/libgrapheme-2.0.2/man/grapheme_decode_utf8.sh
Normal file
@@ -0,0 +1,102 @@
|
||||
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
|
101
libs/libgrapheme-2.0.2/man/grapheme_encode_utf8.3
Normal file
101
libs/libgrapheme-2.0.2/man/grapheme_encode_utf8.3
Normal file
@@ -0,0 +1,101 @@
|
||||
.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
|
103
libs/libgrapheme-2.0.2/man/grapheme_encode_utf8.sh
Normal file
103
libs/libgrapheme-2.0.2/man/grapheme_encode_utf8.sh
Normal file
@@ -0,0 +1,103 @@
|
||||
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
|
81
libs/libgrapheme-2.0.2/man/grapheme_is_character_break.3
Normal file
81
libs/libgrapheme-2.0.2/man/grapheme_is_character_break.3
Normal file
@@ -0,0 +1,81 @@
|
||||
.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
|
83
libs/libgrapheme-2.0.2/man/grapheme_is_character_break.sh
Normal file
83
libs/libgrapheme-2.0.2/man/grapheme_is_character_break.sh
Normal file
@@ -0,0 +1,83 @@
|
||||
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
|
51
libs/libgrapheme-2.0.2/man/grapheme_is_lowercase.3
Normal file
51
libs/libgrapheme-2.0.2/man/grapheme_is_lowercase.3
Normal file
@@ -0,0 +1,51 @@
|
||||
.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
|
3
libs/libgrapheme-2.0.2/man/grapheme_is_lowercase.sh
Normal file
3
libs/libgrapheme-2.0.2/man/grapheme_is_lowercase.sh
Normal file
@@ -0,0 +1,3 @@
|
||||
ENCODING="codepoint" \
|
||||
CASE="lowercase" \
|
||||
$SH man/template/is_case.sh
|
51
libs/libgrapheme-2.0.2/man/grapheme_is_lowercase_utf8.3
Normal file
51
libs/libgrapheme-2.0.2/man/grapheme_is_lowercase_utf8.3
Normal file
@@ -0,0 +1,51 @@
|
||||
.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
|
3
libs/libgrapheme-2.0.2/man/grapheme_is_lowercase_utf8.sh
Normal file
3
libs/libgrapheme-2.0.2/man/grapheme_is_lowercase_utf8.sh
Normal file
@@ -0,0 +1,3 @@
|
||||
ENCODING="utf8" \
|
||||
CASE="lowercase" \
|
||||
$SH man/template/is_case.sh
|
51
libs/libgrapheme-2.0.2/man/grapheme_is_titlecase.3
Normal file
51
libs/libgrapheme-2.0.2/man/grapheme_is_titlecase.3
Normal file
@@ -0,0 +1,51 @@
|
||||
.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
|
3
libs/libgrapheme-2.0.2/man/grapheme_is_titlecase.sh
Normal file
3
libs/libgrapheme-2.0.2/man/grapheme_is_titlecase.sh
Normal file
@@ -0,0 +1,3 @@
|
||||
ENCODING="codepoint" \
|
||||
CASE="titlecase" \
|
||||
$SH man/template/is_case.sh
|
51
libs/libgrapheme-2.0.2/man/grapheme_is_titlecase_utf8.3
Normal file
51
libs/libgrapheme-2.0.2/man/grapheme_is_titlecase_utf8.3
Normal file
@@ -0,0 +1,51 @@
|
||||
.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
|
3
libs/libgrapheme-2.0.2/man/grapheme_is_titlecase_utf8.sh
Normal file
3
libs/libgrapheme-2.0.2/man/grapheme_is_titlecase_utf8.sh
Normal file
@@ -0,0 +1,3 @@
|
||||
ENCODING="utf8" \
|
||||
CASE="titlecase" \
|
||||
$SH man/template/is_case.sh
|
51
libs/libgrapheme-2.0.2/man/grapheme_is_uppercase.3
Normal file
51
libs/libgrapheme-2.0.2/man/grapheme_is_uppercase.3
Normal file
@@ -0,0 +1,51 @@
|
||||
.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
|
3
libs/libgrapheme-2.0.2/man/grapheme_is_uppercase.sh
Normal file
3
libs/libgrapheme-2.0.2/man/grapheme_is_uppercase.sh
Normal file
@@ -0,0 +1,3 @@
|
||||
ENCODING="codepoint" \
|
||||
CASE="uppercase" \
|
||||
$SH man/template/is_case.sh
|
51
libs/libgrapheme-2.0.2/man/grapheme_is_uppercase_utf8.3
Normal file
51
libs/libgrapheme-2.0.2/man/grapheme_is_uppercase_utf8.3
Normal file
@@ -0,0 +1,51 @@
|
||||
.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
|
3
libs/libgrapheme-2.0.2/man/grapheme_is_uppercase_utf8.sh
Normal file
3
libs/libgrapheme-2.0.2/man/grapheme_is_uppercase_utf8.sh
Normal file
@@ -0,0 +1,3 @@
|
||||
ENCODING="utf8" \
|
||||
CASE="lowercase" \
|
||||
$SH man/template/is_case.sh
|
56
libs/libgrapheme-2.0.2/man/grapheme_next_character_break.3
Normal file
56
libs/libgrapheme-2.0.2/man/grapheme_next_character_break.3
Normal file
@@ -0,0 +1,56 @@
|
||||
.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
|
@@ -0,0 +1,4 @@
|
||||
ENCODING="codepoint" \
|
||||
TYPE="character" \
|
||||
REALTYPE="grapheme cluster" \
|
||||
$SH man/template/next_break.sh
|
@@ -0,0 +1,94 @@
|
||||
.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
|
@@ -0,0 +1,4 @@
|
||||
ENCODING="utf8" \
|
||||
TYPE="character" \
|
||||
REALTYPE="grapheme cluster" \
|
||||
$SH man/template/next_break.sh
|
52
libs/libgrapheme-2.0.2/man/grapheme_next_line_break.3
Normal file
52
libs/libgrapheme-2.0.2/man/grapheme_next_line_break.3
Normal file
@@ -0,0 +1,52 @@
|
||||
.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
|
4
libs/libgrapheme-2.0.2/man/grapheme_next_line_break.sh
Normal file
4
libs/libgrapheme-2.0.2/man/grapheme_next_line_break.sh
Normal file
@@ -0,0 +1,4 @@
|
||||
ENCODING="codepoint" \
|
||||
TYPE="line" \
|
||||
REALTYPE="possible line" \
|
||||
$SH man/template/next_break.sh
|
90
libs/libgrapheme-2.0.2/man/grapheme_next_line_break_utf8.3
Normal file
90
libs/libgrapheme-2.0.2/man/grapheme_next_line_break_utf8.3
Normal file
@@ -0,0 +1,90 @@
|
||||
.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
|
@@ -0,0 +1,4 @@
|
||||
ENCODING="utf8" \
|
||||
TYPE="line" \
|
||||
REALTYPE="possible line" \
|
||||
$SH man/template/next_break.sh
|
55
libs/libgrapheme-2.0.2/man/grapheme_next_sentence_break.3
Normal file
55
libs/libgrapheme-2.0.2/man/grapheme_next_sentence_break.3
Normal file
@@ -0,0 +1,55 @@
|
||||
.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
|
@@ -0,0 +1,4 @@
|
||||
ENCODING="codepoint" \
|
||||
TYPE="sentence" \
|
||||
REALTYPE="sentence" \
|
||||
$SH man/template/next_break.sh
|
@@ -0,0 +1,93 @@
|
||||
.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
|
@@ -0,0 +1,4 @@
|
||||
ENCODING="utf8" \
|
||||
TYPE="sentence" \
|
||||
REALTYPE="sentence" \
|
||||
$SH man/template/next_break.sh
|
55
libs/libgrapheme-2.0.2/man/grapheme_next_word_break.3
Normal file
55
libs/libgrapheme-2.0.2/man/grapheme_next_word_break.3
Normal file
@@ -0,0 +1,55 @@
|
||||
.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
|
4
libs/libgrapheme-2.0.2/man/grapheme_next_word_break.sh
Normal file
4
libs/libgrapheme-2.0.2/man/grapheme_next_word_break.sh
Normal file
@@ -0,0 +1,4 @@
|
||||
ENCODING="codepoint" \
|
||||
TYPE="word" \
|
||||
REALTYPE="word" \
|
||||
$SH man/template/next_break.sh
|
93
libs/libgrapheme-2.0.2/man/grapheme_next_word_break_utf8.3
Normal file
93
libs/libgrapheme-2.0.2/man/grapheme_next_word_break_utf8.3
Normal file
@@ -0,0 +1,93 @@
|
||||
.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
|
@@ -0,0 +1,4 @@
|
||||
ENCODING="utf8" \
|
||||
TYPE="word" \
|
||||
REALTYPE="word" \
|
||||
$SH man/template/next_break.sh
|
56
libs/libgrapheme-2.0.2/man/grapheme_to_lowercase.3
Normal file
56
libs/libgrapheme-2.0.2/man/grapheme_to_lowercase.3
Normal file
@@ -0,0 +1,56 @@
|
||||
.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
|
3
libs/libgrapheme-2.0.2/man/grapheme_to_lowercase.sh
Normal file
3
libs/libgrapheme-2.0.2/man/grapheme_to_lowercase.sh
Normal file
@@ -0,0 +1,3 @@
|
||||
ENCODING="codepoint" \
|
||||
CASE="lowercase" \
|
||||
$SH man/template/to_case.sh
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user