summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--examples/cairotwisted.c4
-rw-r--r--meson.build2
-rw-r--r--pango/break.c49
-rw-r--r--pango/pango-break-table.h718
-rw-r--r--pango/pango-language.c30
-rw-r--r--pango/pango-renderer.c2
-rw-r--r--pango/pangowin32-fontmap.c35
-rw-r--r--pango/pangowin32-private.h2
-rw-r--r--tests/GraphemeBreakTest.txt78
-rw-r--r--tests/SentenceBreakTest.txt6
-rw-r--r--tests/WordBreakTest.txt6
-rw-r--r--tests/testboundaries_ucd.c2
-rwxr-xr-xtools/gen-break-table.py27
13 files changed, 605 insertions, 356 deletions
diff --git a/examples/cairotwisted.c b/examples/cairotwisted.c
index d2d1cd30..1572c89a 100644
--- a/examples/cairotwisted.c
+++ b/examples/cairotwisted.c
@@ -234,7 +234,7 @@ parametrize_path (cairo_path_t *path)
case CAIRO_PATH_CLOSE_PATH:
/* Make it look like it's a line_to to last_move_to */
data = (&last_move_to) - 1;
- /* fall through */
+ G_GNUC_FALLTHROUGH;
case CAIRO_PATH_LINE_TO:
parametrization[i] = two_points_distance (&current_point, &data[1]);
current_point = data[1];
@@ -361,7 +361,7 @@ point_on_path (parametrized_path_t *param,
case CAIRO_PATH_CLOSE_PATH:
/* Make it look like it's a line_to to last_move_to */
data = (&last_move_to) - 1;
- /* fall through */
+ G_GNUC_FALLTHROUGH;
case CAIRO_PATH_LINE_TO:
{
ratio = the_x / parametrization[i];
diff --git a/meson.build b/meson.build
index 904027ba..c427842a 100644
--- a/meson.build
+++ b/meson.build
@@ -190,7 +190,7 @@ endif
# Dependencies
pango_deps = []
-glib_req_version = '>= 2.59.2'
+glib_req_version = '>= 2.60'
fribidi_req_version = '>= 0.19.7'
libthai_req_version = '>= 0.1.9'
harfbuzz_req_version = '>= 2.0.0'
diff --git a/pango/break.c b/pango/break.c
index ca62a28f..875d776c 100644
--- a/pango/break.c
+++ b/pango/break.c
@@ -398,14 +398,13 @@ pango_default_break (const gchar *text,
wc == 0x6DD ||
wc == 0x70F ||
wc == 0x8E2 ||
- wc == 0xD4E ||
wc == 0x110BD ||
- (wc >= 0x111C2 && wc <= 0x111C3)))
+ wc == 0x110CD))
{
GB_type = GB_Prepend;
break;
}
- /* fall through */
+ G_GNUC_FALLTHROUGH;
case G_UNICODE_CONTROL:
case G_UNICODE_LINE_SEPARATOR:
case G_UNICODE_PARAGRAPH_SEPARATOR:
@@ -421,11 +420,15 @@ pango_default_break (const gchar *text,
GB_type = GB_ControlCRLF;
break;
}
- /* fall through */
+ G_GNUC_FALLTHROUGH;
case G_UNICODE_OTHER_LETTER:
if (makes_hangul_syllable)
GB_type = GB_InHangulSyllable;
+
+ if (_pango_is_Consonant_Preceding_Repha (wc) ||
+ _pango_is_Consonant_Prefixed (wc))
+ GB_type = GB_Prepend;
break;
case G_UNICODE_MODIFIER_LETTER:
@@ -570,7 +573,7 @@ pango_default_break (const gchar *text,
WB_type = WB_ExtendFormat; /* Other_Grapheme_Extend */
break;
case 0x05:
- if (wc == 0x05F3)
+ if (wc == 0x058A)
WB_type = WB_ALetter; /* ALetter exceptions */
break;
}
@@ -594,7 +597,7 @@ pango_default_break (const gchar *text,
case G_UNICODE_CONTROL:
if (wc != 0x000D && wc != 0x000A && wc != 0x000B && wc != 0x000C && wc != 0x0085)
break;
- /* fall through */
+ G_GNUC_FALLTHROUGH;
case G_UNICODE_LINE_SEPARATOR:
case G_UNICODE_PARAGRAPH_SEPARATOR:
WB_type = WB_NewlineCRLF; /* CR, LF, Newline */
@@ -617,12 +620,16 @@ pango_default_break (const gchar *text,
WB_type = WB_MidNumLet; /* MidNumLet */
break;
case G_UNICODE_OTHER_PUNCTUATION:
- if (wc == 0x0027 || wc == 0x002e || wc == 0x2024 ||
+ if ((wc >= 0x055a && wc <= 0x055c) ||
+ wc == 0x055e || wc == 0x05f3)
+ WB_type = WB_ALetter; /* ALetter */
+ else if (wc == 0x0027 || wc == 0x002e || wc == 0x2024 ||
wc == 0xfe52 || wc == 0xff07 || wc == 0xff0e)
WB_type = WB_MidNumLet; /* MidNumLet */
- else if (wc == 0x00b7 || wc == 0x05f4 || wc == 0x2027 || wc == 0x003a || wc == 0x0387 ||
+ else if (wc == 0x00b7 || wc == 0x05f4 || wc == 0x2027 ||
+ wc == 0x003a || wc == 0x0387 || wc == 0x055f ||
wc == 0xfe13 || wc == 0xfe55 || wc == 0xff1a)
- WB_type = WB_MidLetter; /* WB_MidLetter */
+ WB_type = WB_MidLetter; /* MidLetter */
else if (wc == 0x066c ||
wc == 0xfe50 || wc == 0xfe54 || wc == 0xff0c || wc == 0xff1b)
WB_type = WB_MidNum; /* MidNum */
@@ -1074,10 +1081,12 @@ pango_default_break (const gchar *text,
if ((prev_break_type == G_UNICODE_BREAK_ALPHABETIC ||
prev_break_type == G_UNICODE_BREAK_HEBREW_LETTER ||
prev_break_type == G_UNICODE_BREAK_NUMERIC) &&
- break_type == G_UNICODE_BREAK_OPEN_PUNCTUATION)
+ break_type == G_UNICODE_BREAK_OPEN_PUNCTUATION &&
+ !_pango_is_EastAsianWide (wc))
break_op = BREAK_PROHIBITED;
if (prev_break_type == G_UNICODE_BREAK_CLOSE_PARANTHESIS &&
+ !_pango_is_EastAsianWide (prev_wc)&&
(break_type == G_UNICODE_BREAK_ALPHABETIC ||
break_type == G_UNICODE_BREAK_HEBREW_LETTER ||
break_type == G_UNICODE_BREAK_NUMERIC))
@@ -1219,25 +1228,7 @@ pango_default_break (const gchar *text,
/* Rule LB22 */
if (break_type == G_UNICODE_BREAK_INSEPARABLE)
- {
- if (prev_break_type == G_UNICODE_BREAK_ALPHABETIC ||
- prev_break_type == G_UNICODE_BREAK_HEBREW_LETTER)
- break_op = BREAK_PROHIBITED;
-
- if (prev_break_type == G_UNICODE_BREAK_EXCLAMATION)
- break_op = BREAK_PROHIBITED;
-
- if (prev_break_type == G_UNICODE_BREAK_IDEOGRAPHIC ||
- prev_break_type == G_UNICODE_BREAK_EMOJI_BASE ||
- prev_break_type == G_UNICODE_BREAK_EMOJI_MODIFIER)
- break_op = BREAK_PROHIBITED;
-
- if (prev_break_type == G_UNICODE_BREAK_INSEPARABLE)
- break_op = BREAK_PROHIBITED;
-
- if (prev_break_type == G_UNICODE_BREAK_NUMERIC)
- break_op = BREAK_PROHIBITED;
- }
+ break_op = BREAK_PROHIBITED;
if (break_type == G_UNICODE_BREAK_AFTER ||
break_type == G_UNICODE_BREAK_HYPHEN ||
diff --git a/pango/pango-break-table.h b/pango/pango-break-table.h
index 2361ede5..c587fd5a 100644
--- a/pango/pango-break-table.h
+++ b/pango/pango-break-table.h
@@ -2,22 +2,21 @@
/*
* The following tables are generated by running:
*
- * ./gen-break-table.py SentenceBreakProperty.txt IndicSyllabicCategory.txt | indent
+ * ./gen-break-table.py SentenceBreakProperty.txt IndicSyllabicCategory.txt EastAsianWidth.txt | indent
*
* on files with these headers:
*
- * # SentenceBreakProperty-11.0.0.txt
- * # Date: 2018-03-15, 04:28:45 GMT
- * # © 2018 Unicode®, Inc.
+ * # SentenceBreakProperty-13.0.0.txt
+ * # Date: 2019-11-27, 03:13:39 GMT
+ * # © 2019 Unicode®, Inc.
* # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
* # For terms of use, see http://www.unicode.org/terms_of_use.html
* #
* # Unicode Character Database
* # For documentation, see http://www.unicode.org/reports/tr44/
- *
- * # IndicSyllabicCategory-11.0.0.txt
- * # Date: 2018-05-21, 18:33:00 GMT [KW, RP]
- * # © 2018 Unicode®, Inc.
+ * # IndicSyllabicCategory-13.0.0.txt
+ * # Date: 2019-07-22, 19:55:00 GMT [KW, RP]
+ * # © 2019 Unicode®, Inc.
* # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
* # For terms of use, see http://www.unicode.org/terms_of_use.html
* #
@@ -53,20 +52,62 @@
* # Indic_Syllabic_Category are the following:
* #
* # Ahom, Balinese, Batak, Bengali, Bhaiksuki, Brahmi, Buginese, Buhid,
- * # Chakma, Cham, Devanagari, Dogra, Grantha, Gujarati, Gunjala Gondi,
- * # Gurmukhi, Hanunoo, Javanese, Kaithi, Kannada, Kayah Li, Kharoshthi,
- * # Khmer, Khojki, Khudawadi, Lao, Lepcha, Limbu, Mahajani, Makasar,
- * # Malayalam, Marchen, Masaram Gondi, Meetei Mayek, Modi, Multani,
- * # Myanmar, Newa, New Tai Lue, Oriya, Phags-pa, Rejang, Saurashtra,
- * # Sharada, Siddham, Sinhala, Soyombo, Sundanese, Syloti Nagri,
- * # Tagalog, Tagbanwa, Tai Le, Tai Tham, Tai Viet, Takri, Tamil,
- * # Telugu, Thai, Tibetan, Tirhuta, and Zanabazar Square.
+ * # Chakma, Cham, Devanagari, Dives Akuru, Dogra, Grantha, Gujarati,
+ * # Gunjala Gondi, Gurmukhi, Hanunoo, Javanese, Kaithi, Kannada,
+ * # Kayah Li, Kharoshthi, Khmer, Khojki, Khudawadi, Lao, Lepcha, Limbu,
+ * # Mahajani, Makasar, Malayalam, Marchen, Masaram Gondi, Meetei Mayek,
+ * # Modi, Multani, Myanmar, Nandinagari, Newa, New Tai Lue, Oriya,
+ * # Phags-pa, Rejang, Saurashtra, Sharada, Siddham, Sinhala, Soyombo,
+ * # Sundanese, Syloti Nagri, Tagalog, Tagbanwa, Tai Le, Tai Tham,
+ * # Tai Viet, Takri, Tamil, Telugu, Thai, Tibetan, Tirhuta, and
+ * # Zanabazar Square.
* #
* # All characters for all other scripts not in that list
* # take the default value for this property, unless they
* # are individually listed in this data file.
* #
- *
+ * # EastAsianWidth-13.0.0.txt
+ * # Date: 2029-01-21, 18:14:00 GMT [KW, LI]
+ * # © 2020 Unicode®, Inc.
+ * # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+ * # For terms of use, see http://www.unicode.org/terms_of_use.html
+ * #
+ * # Unicode Character Database
+ * # For documentation, see http://www.unicode.org/reports/tr44/
+ * #
+ * # East_Asian_Width Property
+ * #
+ * # This file is a normative contributory data file in the
+ * # Unicode Character Database.
+ * #
+ * # The format is two fields separated by a semicolon.
+ * # Field 0: Unicode code point value or range of code point values
+ * # Field 1: East_Asian_Width property, consisting of one of the following values:
+ * # "A", "F", "H", "N", "Na", "W"
+ * # - All code points, assigned or unassigned, that are not listed
+ * # explicitly are given the value "N".
+ * # - The unassigned code points in the following blocks default to "W":
+ * # CJK Unified Ideographs Extension A: U+3400..U+4DBF
+ * # CJK Unified Ideographs: U+4E00..U+9FFF
+ * # CJK Compatibility Ideographs: U+F900..U+FAFF
+ * # - All undesignated code points in Planes 2 and 3, whether inside or
+ * # outside of allocated blocks, default to "W":
+ * # Plane 2: U+20000..U+2FFFD
+ * # Plane 3: U+30000..U+3FFFD
+ * #
+ * # Character ranges are specified as for other property files in the
+ * # Unicode Character Database.
+ * #
+ * # For legacy reasons, there are no spaces before or after the semicolon
+ * # which separates the two fields. The comments following the number sign
+ * # "#" list the General_Category property value or the L& alias of the
+ * # derived value LC, the Unicode character name or names, and, in lines
+ * # with ranges of code points, the code point count in square brackets.
+ * #
+ * # For more information, see UAX #11: East Asian Width,
+ * # at http://www.unicode.org/reports/tr11/
+ * #
+ * # @missing: 0000..10FFFF; N
*/
#ifndef PANGO_BREAK_TABLE_H
@@ -78,112 +119,130 @@
static inline gboolean
_pango_is_STerm (gunichar wc)
{
- if ((wc >= 0x0021 && wc <= 0x1803))
+ if ((wc >= 0x0021 && wc <= 0x1809))
{
if (wc == 0x0021 ||
wc == 0x003F || wc == 0x0589 || (wc >= 0x061E && wc <= 0x061F))
return TRUE;
- if (wc == 0x06D4 ||
- (wc >= 0x0700 && wc <= 0x0702) || wc == 0x07F9 || wc == 0x0837)
- return TRUE;
- if (wc == 0x0839 ||
- (wc >= 0x083D && wc <= 0x083E) ||
- (wc >= 0x0964 && wc <= 0x0965) || (wc >= 0x104A && wc <= 0x104B))
- return TRUE;
- if ((wc >= 0x1362 && wc <= 0x1803))
+ if ((wc >= 0x06D4 && wc <= 0x0839))
{
- if (wc == 0x1362)
+ if (wc == 0x06D4)
+ return TRUE;
+ if ((wc >= 0x0700 && wc <= 0x0702))
+ return TRUE;
+ if (wc == 0x07F9)
return TRUE;
+ if (wc == 0x0837 || wc == 0x0839)
+ return TRUE;
+ return FALSE;
+ }
+ if ((wc >= 0x083D && wc <= 0x083E) ||
+ (wc >= 0x0964 && wc <= 0x0965) ||
+ (wc >= 0x104A && wc <= 0x104B) || wc == 0x1362)
+ return TRUE;
+ if ((wc >= 0x1367 && wc <= 0x1809))
+ {
if ((wc >= 0x1367 && wc <= 0x1368))
return TRUE;
if (wc == 0x166E)
return TRUE;
- if ((wc >= 0x1735 && wc <= 0x1736) || wc == 0x1803)
+ if ((wc >= 0x1735 && wc <= 0x1736))
+ return TRUE;
+ if (wc == 0x1803 || wc == 0x1809)
return TRUE;
return FALSE;
}
return FALSE;
}
- if ((wc >= 0x1809 && wc <= 0xA8CF))
+ if ((wc >= 0x1944 && wc <= 0xA92F))
{
- if (wc == 0x1809 ||
- (wc >= 0x1944 && wc <= 0x1945) ||
- (wc >= 0x1AA8 && wc <= 0x1AAB) || (wc >= 0x1B5A && wc <= 0x1B5B))
+ if ((wc >= 0x1944 && wc <= 0x1945) ||
+ (wc >= 0x1AA8 && wc <= 0x1AAB) ||
+ (wc >= 0x1B5A && wc <= 0x1B5B) || (wc >= 0x1B5E && wc <= 0x1B5F))
return TRUE;
- if ((wc >= 0x1B5E && wc <= 0x2049))
+ if ((wc >= 0x1C3B && wc <= 0x2E2E))
{
- if ((wc >= 0x1B5E && wc <= 0x1B5F))
- return TRUE;
if ((wc >= 0x1C3B && wc <= 0x1C3C))
return TRUE;
if ((wc >= 0x1C7E && wc <= 0x1C7F))
return TRUE;
- if ((wc >= 0x203C && wc <= 0x203D) ||
- (wc >= 0x2047 && wc <= 0x2049))
+ if ((wc >= 0x203C && wc <= 0x203D))
+ return TRUE;
+ if ((wc >= 0x2047 && wc <= 0x2049) || wc == 0x2E2E)
return TRUE;
return FALSE;
}
- if (wc == 0x2E2E || wc == 0x2E3C || wc == 0x3002 || wc == 0xA4FF)
+ if (wc == 0x2E3C ||
+ wc == 0x3002 || wc == 0xA4FF || (wc >= 0xA60E && wc <= 0xA60F))
return TRUE;
- if ((wc >= 0xA60E && wc <= 0xA8CF))
+ if ((wc >= 0xA6F3 && wc <= 0xA92F))
{
- if ((wc >= 0xA60E && wc <= 0xA60F))
- return TRUE;
if (wc == 0xA6F3)
return TRUE;
if (wc == 0xA6F7)
return TRUE;
- if ((wc >= 0xA876 && wc <= 0xA877) ||
- (wc >= 0xA8CE && wc <= 0xA8CF))
+ if ((wc >= 0xA876 && wc <= 0xA877))
+ return TRUE;
+ if ((wc >= 0xA8CE && wc <= 0xA8CF) || wc == 0xA92F)
return TRUE;
return FALSE;
}
return FALSE;
}
- if ((wc >= 0xA92F && wc <= 0x111DF))
+ if ((wc >= 0xA9C8 && wc <= 0x1123C))
{
- if (wc == 0xA92F ||
- (wc >= 0xA9C8 && wc <= 0xA9C9) ||
- (wc >= 0xAA5D && wc <= 0xAA5F) || (wc >= 0xAAF0 && wc <= 0xAAF1))
- return TRUE;
- if (wc == 0xABEB ||
- (wc >= 0xFE56 && wc <= 0xFE57) || wc == 0xFF01 || wc == 0xFF1F)
+ if ((wc >= 0xA9C8 && wc <= 0xA9C9) ||
+ (wc >= 0xAA5D && wc <= 0xAA5F) ||
+ (wc >= 0xAAF0 && wc <= 0xAAF1) || wc == 0xABEB)
return TRUE;
- if (wc == 0xFF61 ||
- (wc >= 0x10A56 && wc <= 0x10A57) ||
- (wc >= 0x10F55 && wc <= 0x10F59) ||
- (wc >= 0x11047 && wc <= 0x11048))
- return TRUE;
- if ((wc >= 0x110BE && wc <= 0x111DF))
+ if ((wc >= 0xFE56 && wc <= 0x10A57))
{
- if ((wc >= 0x110BE && wc <= 0x110C1))
+ if ((wc >= 0xFE56 && wc <= 0xFE57))
+ return TRUE;
+ if (wc == 0xFF01)
+ return TRUE;
+ if (wc == 0xFF1F)
return TRUE;
- if ((wc >= 0x11141 && wc <= 0x11143))
+ if (wc == 0xFF61 || (wc >= 0x10A56 && wc <= 0x10A57))
return TRUE;
+ return FALSE;
+ }
+ if ((wc >= 0x10F55 && wc <= 0x10F59) ||
+ (wc >= 0x11047 && wc <= 0x11048) ||
+ (wc >= 0x110BE && wc <= 0x110C1) ||
+ (wc >= 0x11141 && wc <= 0x11143))
+ return TRUE;
+ if ((wc >= 0x111C5 && wc <= 0x1123C))
+ {
if ((wc >= 0x111C5 && wc <= 0x111C6))
return TRUE;
- if (wc == 0x111CD || (wc >= 0x111DE && wc <= 0x111DF))
+ if (wc == 0x111CD)
+ return TRUE;
+ if ((wc >= 0x111DE && wc <= 0x111DF))
+ return TRUE;
+ if ((wc >= 0x11238 && wc <= 0x11239) ||
+ (wc >= 0x1123B && wc <= 0x1123C))
return TRUE;
return FALSE;
}
return FALSE;
}
- if ((wc >= 0x11238 && wc <= 0x1DA88))
+ if ((wc >= 0x112A9 && wc <= 0x1DA88))
{
- if ((wc >= 0x11238 && wc <= 0x11239) ||
- (wc >= 0x1123B && wc <= 0x1123C) ||
- wc == 0x112A9 || (wc >= 0x1144B && wc <= 0x1144C))
+ if (wc == 0x112A9 ||
+ (wc >= 0x1144B && wc <= 0x1144C) ||
+ (wc >= 0x115C2 && wc <= 0x115C3) ||
+ (wc >= 0x115C9 && wc <= 0x115D7))
return TRUE;
- if ((wc >= 0x115C2 && wc <= 0x11A43))
+ if ((wc >= 0x11641 && wc <= 0x11A43))
{
- if ((wc >= 0x115C2 && wc <= 0x115C3))
+ if ((wc >= 0x11641 && wc <= 0x11642))
return TRUE;
- if ((wc >= 0x115C9 && wc <= 0x115D7))
+ if ((wc >= 0x1173C && wc <= 0x1173E))
return TRUE;
- if ((wc >= 0x11641 && wc <= 0x11642))
+ if (wc == 0x11944)
return TRUE;
- if ((wc >= 0x1173C && wc <= 0x1173E) ||
- (wc >= 0x11A42 && wc <= 0x11A43))
+ if (wc == 0x11946 || (wc >= 0x11A42 && wc <= 0x11A43))
return TRUE;
return FALSE;
}
@@ -232,7 +291,7 @@ _pango_is_Virama (gunichar wc)
return TRUE;
if (wc == 0x0DCA)
return TRUE;
- if (wc == 0x1B44 || wc == 0xA8C4)
+ if (wc == 0x1B44 || wc == 0xA806 || wc == 0xA8C4)
return TRUE;
return FALSE;
}
@@ -250,13 +309,13 @@ _pango_is_Virama (gunichar wc)
}
if ((wc >= 0x11442 && wc <= 0x11C3F))
{
- if (wc == 0x11442)
+ if (wc == 0x11442 || wc == 0x114C2)
return TRUE;
- if (wc == 0x114C2 || wc == 0x115BF)
+ if (wc == 0x115BF || wc == 0x1163F)
return TRUE;
- if (wc == 0x1163F)
+ if (wc == 0x116B6 || wc == 0x11839)
return TRUE;
- if (wc == 0x116B6 || wc == 0x11839 || wc == 0x11C3F)
+ if (wc == 0x119E0 || wc == 0x11C3F)
return TRUE;
return FALSE;
}
@@ -266,258 +325,257 @@ _pango_is_Virama (gunichar wc)
static inline gboolean
_pango_is_Vowel_Dependent (gunichar wc)
{
- if ((wc >= 0x093A && wc <= 0x0C63))
+ if ((wc >= 0x093A && wc <= 0x0CC8))
{
- if ((wc >= 0x093A && wc <= 0x09C8))
+ if ((wc >= 0x093A && wc <= 0x09CC))
{
- if ((wc >= 0x093A && wc <= 0x093B))
- return TRUE;
- if ((wc >= 0x093E && wc <= 0x094C) ||
- (wc >= 0x094E && wc <= 0x094F))
+ if ((wc >= 0x093A && wc <= 0x093B) ||
+ (wc >= 0x093E && wc <= 0x094C))
return TRUE;
- if ((wc >= 0x0955 && wc <= 0x0957))
+ if ((wc >= 0x094E && wc <= 0x094F) ||
+ (wc >= 0x0955 && wc <= 0x0957))
return TRUE;
if ((wc >= 0x0962 && wc <= 0x0963) ||
- (wc >= 0x09BE && wc <= 0x09C4) ||
- (wc >= 0x09C7 && wc <= 0x09C8))
+ (wc >= 0x09BE && wc <= 0x09C4))
+ return TRUE;
+ if ((wc >= 0x09C7 && wc <= 0x09C8) ||
+ (wc >= 0x09CB && wc <= 0x09CC))
return TRUE;
return FALSE;
}
- if ((wc >= 0x09CB && wc <= 0x0AC9))
+ if ((wc >= 0x09D7 && wc <= 0x0ACC))
{
- if ((wc >= 0x09CB && wc <= 0x09CC) || wc == 0x09D7)
+ if (wc == 0x09D7 || (wc >= 0x09E2 && wc <= 0x09E3))
return TRUE;
- if ((wc >= 0x09E2 && wc <= 0x09E3) ||
- (wc >= 0x0A3E && wc <= 0x0A42))
+ if ((wc >= 0x0A3E && wc <= 0x0A42) ||
+ (wc >= 0x0A47 && wc <= 0x0A48))
return TRUE;
- if ((wc >= 0x0A47 && wc <= 0x0A48) ||
- (wc >= 0x0A4B && wc <= 0x0A4C))
+ if ((wc >= 0x0A4B && wc <= 0x0A4C) ||
+ (wc >= 0x0ABE && wc <= 0x0AC5))
return TRUE;
- if ((wc >= 0x0ABE && wc <= 0x0AC5) ||
- (wc >= 0x0AC7 && wc <= 0x0AC9))
+ if ((wc >= 0x0AC7 && wc <= 0x0AC9) ||
+ (wc >= 0x0ACB && wc <= 0x0ACC))
return TRUE;
return FALSE;
}
- if ((wc >= 0x0ACB && wc <= 0x0B63))
+ if ((wc >= 0x0AE2 && wc <= 0x0BC8))
{
- if ((wc >= 0x0ACB && wc <= 0x0ACC))
- return TRUE;
if ((wc >= 0x0AE2 && wc <= 0x0AE3) ||
(wc >= 0x0B3E && wc <= 0x0B44))
return TRUE;
- if ((wc >= 0x0B47 && wc <= 0x0B48))
+ if ((wc >= 0x0B47 && wc <= 0x0B48) ||
+ (wc >= 0x0B4B && wc <= 0x0B4C))
return TRUE;
- if ((wc >= 0x0B4B && wc <= 0x0B4C) ||
- (wc >= 0x0B56 && wc <= 0x0B57) ||
+ if ((wc >= 0x0B55 && wc <= 0x0B57) ||
(wc >= 0x0B62 && wc <= 0x0B63))
return TRUE;
- return FALSE;
- }
- if ((wc >= 0x0BBE && wc <= 0x0C63))
- {
if ((wc >= 0x0BBE && wc <= 0x0BC2) ||
(wc >= 0x0BC6 && wc <= 0x0BC8))
return TRUE;
+ return FALSE;
+ }
+ if ((wc >= 0x0BCA && wc <= 0x0CC8))
+ {
if ((wc >= 0x0BCA && wc <= 0x0BCC) || wc == 0x0BD7)
return TRUE;
if ((wc >= 0x0C3E && wc <= 0x0C44) ||
(wc >= 0x0C46 && wc <= 0x0C48))
return TRUE;
if ((wc >= 0x0C4A && wc <= 0x0C4C) ||
- (wc >= 0x0C55 && wc <= 0x0C56) ||
- (wc >= 0x0C62 && wc <= 0x0C63))
+ (wc >= 0x0C55 && wc <= 0x0C56))
+ return TRUE;
+ if ((wc >= 0x0C62 && wc <= 0x0C63) ||
+ (wc >= 0x0CBE && wc <= 0x0CC4) ||
+ (wc >= 0x0CC6 && wc <= 0x0CC8))
return TRUE;
return FALSE;
}
return FALSE;
}
- if ((wc >= 0x0CBE && wc <= 0x1733))
+ if ((wc >= 0x0CCA && wc <= 0x17C8))
{
- if ((wc >= 0x0CBE && wc <= 0x0D48))
+ if ((wc >= 0x0CCA && wc <= 0x0D63))
{
- if ((wc >= 0x0CBE && wc <= 0x0CC4))
+ if ((wc >= 0x0CCA && wc <= 0x0CCC) ||
+ (wc >= 0x0CD5 && wc <= 0x0CD6))
return TRUE;
- if ((wc >= 0x0CC6 && wc <= 0x0CC8) ||
- (wc >= 0x0CCA && wc <= 0x0CCC))
+ if ((wc >= 0x0CE2 && wc <= 0x0CE3) ||
+ (wc >= 0x0D3E && wc <= 0x0D44))
return TRUE;
- if ((wc >= 0x0CD5 && wc <= 0x0CD6))
+ if ((wc >= 0x0D46 && wc <= 0x0D48) ||
+ (wc >= 0x0D4A && wc <= 0x0D4C))
return TRUE;
- if ((wc >= 0x0CE2 && wc <= 0x0CE3) ||
- (wc >= 0x0D3E && wc <= 0x0D44) ||
- (wc >= 0x0D46 && wc <= 0x0D48))
+ if (wc == 0x0D57 || (wc >= 0x0D62 && wc <= 0x0D63))
return TRUE;
return FALSE;
}
- if ((wc >= 0x0D4A && wc <= 0x0E39))
+ if ((wc >= 0x0DCF && wc <= 0x0EB9))
{
- if ((wc >= 0x0D4A && wc <= 0x0D4C) || wc == 0x0D57)
+ if ((wc >= 0x0DCF && wc <= 0x0DD4) || wc == 0x0DD6)
return TRUE;
- if ((wc >= 0x0D62 && wc <= 0x0D63) ||
- (wc >= 0x0DCF && wc <= 0x0DD4))
+ if ((wc >= 0x0DD8 && wc <= 0x0DDF) ||
+ (wc >= 0x0DF2 && wc <= 0x0DF3))
return TRUE;
- if (wc == 0x0DD6 || (wc >= 0x0DD8 && wc <= 0x0DDF))
+ if ((wc >= 0x0E30 && wc <= 0x0E39) ||
+ (wc >= 0x0E40 && wc <= 0x0E45))
return TRUE;
- if ((wc >= 0x0DF2 && wc <= 0x0DF3) ||
- (wc >= 0x0E30 && wc <= 0x0E39))
+ if (wc == 0x0E47 || (wc >= 0x0EB0 && wc <= 0x0EB9))
return TRUE;
return FALSE;
}
- if ((wc >= 0x0E40 && wc <= 0x0F81))
+ if ((wc >= 0x0EBB && wc <= 0x1068))
{
- if ((wc >= 0x0E40 && wc <= 0x0E45))
+ if (wc == 0x0EBB || (wc >= 0x0EC0 && wc <= 0x0EC4))
return TRUE;
- if (wc == 0x0E47 || (wc >= 0x0EB0 && wc <= 0x0EB9))
- return TRUE;
- if (wc == 0x0EBB)
- return TRUE;
- if ((wc >= 0x0EC0 && wc <= 0x0EC4) ||
- (wc >= 0x0F71 && wc <= 0x0F7D) ||
+ if ((wc >= 0x0F71 && wc <= 0x0F7D) ||
(wc >= 0x0F80 && wc <= 0x0F81))
return TRUE;
- return FALSE;
- }
- if ((wc >= 0x102B && wc <= 0x1733))
- {
if ((wc >= 0x102B && wc <= 0x1035) ||
(wc >= 0x1056 && wc <= 0x1059))
return TRUE;
if (wc == 0x1062 || (wc >= 0x1067 && wc <= 0x1068))
return TRUE;
+ return FALSE;
+ }
+ if ((wc >= 0x1071 && wc <= 0x17C8))
+ {
if ((wc >= 0x1071 && wc <= 0x1074) ||
(wc >= 0x1083 && wc <= 0x1086))
return TRUE;
if ((wc >= 0x109C && wc <= 0x109D) ||
- (wc >= 0x1712 && wc <= 0x1713) ||
- (wc >= 0x1732 && wc <= 0x1733))
+ (wc >= 0x1712 && wc <= 0x1713))
+ return TRUE;
+ if ((wc >= 0x1732 && wc <= 0x1733) ||
+ (wc >= 0x1752 && wc <= 0x1753))
+ return TRUE;
+ if ((wc >= 0x1772 && wc <= 0x1773) ||
+ (wc >= 0x17B6 && wc <= 0x17C5) || wc == 0x17C8)
return TRUE;
return FALSE;
}
return FALSE;
}
- if ((wc >= 0x1752 && wc <= 0x111BF))
+ if ((wc >= 0x1920 && wc <= 0x11344))
{
- if ((wc >= 0x1752 && wc <= 0x19C0))
+ if ((wc >= 0x1920 && wc <= 0x1BEF))
{
- if ((wc >= 0x1752 && wc <= 0x1753))
+ if ((wc >= 0x1920 && wc <= 0x1928) || wc == 0x193A)
return TRUE;
- if ((wc >= 0x1772 && wc <= 0x1773) ||
- (wc >= 0x17B6 && wc <= 0x17C5))
+ if ((wc >= 0x19B0 && wc <= 0x19C0) ||
+ (wc >= 0x1A17 && wc <= 0x1A1B))
return TRUE;
- if (wc == 0x17C8)
+ if ((wc >= 0x1A61 && wc <= 0x1A73) ||
+ (wc >= 0x1B35 && wc <= 0x1B43))
return TRUE;
- if ((wc >= 0x1920 && wc <= 0x1928) ||
- wc == 0x193A || (wc >= 0x19B0 && wc <= 0x19C0))
+ if ((wc >= 0x1BA4 && wc <= 0x1BA9) ||
+ (wc >= 0x1BE7 && wc <= 0x1BEF))
return TRUE;
return FALSE;
}
- if ((wc >= 0x1A17 && wc <= 0xA8C3))
+ if ((wc >= 0x1C26 && wc <= 0xA9E5))
{
- if ((wc >= 0x1A17 && wc <= 0x1A1B) ||
- (wc >= 0x1A61 && wc <= 0x1A73))
- return TRUE;
- if ((wc >= 0x1B35 && wc <= 0x1B43) ||
- (wc >= 0x1BA4 && wc <= 0x1BA9))
- return TRUE;
- if ((wc >= 0x1BE7 && wc <= 0x1BEF) ||
- (wc >= 0x1C26 && wc <= 0x1C2C))
+ if ((wc >= 0x1C26 && wc <= 0x1C2C) || wc == 0xA802)
return TRUE;
if ((wc >= 0xA823 && wc <= 0xA827) ||
(wc >= 0xA8B5 && wc <= 0xA8C3))
return TRUE;
+ if (wc == 0xA8FF || (wc >= 0xA947 && wc <= 0xA94E))
+ return TRUE;
+ if ((wc >= 0xA9B4 && wc <= 0xA9BC) || wc == 0xA9E5)
+ return TRUE;
return FALSE;
}
- if ((wc >= 0xA8FF && wc <= 0xAAEF))
+ if ((wc >= 0xAA29 && wc <= 0x11045))
{
- if (wc == 0xA8FF)
+ if ((wc >= 0xAA29 && wc <= 0xAA32) ||
+ (wc >= 0xAAB0 && wc <= 0xAABE))
return TRUE;
- if ((wc >= 0xA947 && wc <= 0xA94E) ||
- (wc >= 0xA9B4 && wc <= 0xA9BC))
+ if ((wc >= 0xAAEB && wc <= 0xAAEF) ||
+ (wc >= 0xABE3 && wc <= 0xABEA))
return TRUE;
- if (wc == 0xA9E5)
+ if ((wc >= 0x10A01 && wc <= 0x10A03) ||
+ (wc >= 0x10A05 && wc <= 0x10A06))
return TRUE;
- if ((wc >= 0xAA29 && wc <= 0xAA32) ||
- (wc >= 0xAAB0 && wc <= 0xAABE) ||
- (wc >= 0xAAEB && wc <= 0xAAEF))
+ if ((wc >= 0x10A0C && wc <= 0x10A0D) ||
+ (wc >= 0x11038 && wc <= 0x11045))
return TRUE;
return FALSE;
}
- if ((wc >= 0xABE3 && wc <= 0x111BF))
+ if ((wc >= 0x110B0 && wc <= 0x11344))
{
- if ((wc >= 0xABE3 && wc <= 0xABEA) ||
- (wc >= 0x10A01 && wc <= 0x10A03))
+ if ((wc >= 0x110B0 && wc <= 0x110B8) ||
+ (wc >= 0x11127 && wc <= 0x11132))
return TRUE;
- if ((wc >= 0x10A05 && wc <= 0x10A06) ||
- (wc >= 0x10A0C && wc <= 0x10A0D))
+ if ((wc >= 0x11145 && wc <= 0x11146) ||
+ (wc >= 0x111B3 && wc <= 0x111BF))
return TRUE;
- if ((wc >= 0x11038 && wc <= 0x11045) ||
- (wc >= 0x110B0 && wc <= 0x110B8))
+ if ((wc >= 0x111CB && wc <= 0x111CC) || wc == 0x111CE)
return TRUE;
- if ((wc >= 0x11127 && wc <= 0x11132) ||
- (wc >= 0x11145 && wc <= 0x11146) ||
- (wc >= 0x111B3 && wc <= 0x111BF))
+ if ((wc >= 0x1122C && wc <= 0x11233) ||
+ (wc >= 0x112E0 && wc <= 0x112E8) ||
+ (wc >= 0x1133E && wc <= 0x11344))
return TRUE;
return FALSE;
}
return FALSE;
}
- if ((wc >= 0x111CB && wc <= 0x11EF6))
+ if ((wc >= 0x11347 && wc <= 0x11EF6))
{
- if ((wc >= 0x111CB && wc <= 0x11363))
+ if ((wc >= 0x11347 && wc <= 0x115BB))
{
- if ((wc >= 0x111CB && wc <= 0x111CC) ||
- (wc >= 0x1122C && wc <= 0x11233))
- return TRUE;
- if ((wc >= 0x112E0 && wc <= 0x112E8) ||
- (wc >= 0x1133E && wc <= 0x11344))
- return TRUE;
if ((wc >= 0x11347 && wc <= 0x11348) ||
(wc >= 0x1134B && wc <= 0x1134C))
return TRUE;
if (wc == 0x11357 || (wc >= 0x11362 && wc <= 0x11363))
return TRUE;
- return FALSE;
- }
- if ((wc >= 0x11435 && wc <= 0x116B5))
- {
if ((wc >= 0x11435 && wc <= 0x11441) ||
(wc >= 0x114B0 && wc <= 0x114BE))
return TRUE;
if ((wc >= 0x115AF && wc <= 0x115B5) ||
(wc >= 0x115B8 && wc <= 0x115BB))
return TRUE;
+ return FALSE;
+ }
+ if ((wc >= 0x115DC && wc <= 0x11938))
+ {
if ((wc >= 0x115DC && wc <= 0x115DD) ||
(wc >= 0x11630 && wc <= 0x1163C))
return TRUE;
if (wc == 0x11640 || (wc >= 0x116AD && wc <= 0x116B5))
return TRUE;
+ if ((wc >= 0x11720 && wc <= 0x1172A) ||
+ (wc >= 0x1182C && wc <= 0x11836))
+ return TRUE;
+ if ((wc >= 0x11930 && wc <= 0x11935) ||
+ (wc >= 0x11937 && wc <= 0x11938))
+ return TRUE;
return FALSE;
}
- if ((wc >= 0x11720 && wc <= 0x11D36))
+ if ((wc >= 0x119D1 && wc <= 0x11CB4))
{
- if ((wc >= 0x11720 && wc <= 0x1172A) ||
- (wc >= 0x1182C && wc <= 0x11836))
+ if ((wc >= 0x119D1 && wc <= 0x119D7) ||
+ (wc >= 0x119DA && wc <= 0x119DD))
return TRUE;
- if ((wc >= 0x11A01 && wc <= 0x11A0A) ||
- (wc >= 0x11A51 && wc <= 0x11A5B))
+ if (wc == 0x119E4 || (wc >= 0x11A01 && wc <= 0x11A0A))
return TRUE;
- if ((wc >= 0x11C2F && wc <= 0x11C36) ||
- (wc >= 0x11C38 && wc <= 0x11C3B))
+ if ((wc >= 0x11A51 && wc <= 0x11A5B) ||
+ (wc >= 0x11C2F && wc <= 0x11C36))
return TRUE;
- if ((wc >= 0x11CB0 && wc <= 0x11CB4) ||
- (wc >= 0x11D31 && wc <= 0x11D36))
+ if ((wc >= 0x11C38 && wc <= 0x11C3B) ||
+ (wc >= 0x11CB0 && wc <= 0x11CB4))
return TRUE;
return FALSE;
}
- if ((wc >= 0x11D3A && wc <= 0x11EF6))
+ if ((wc >= 0x11D31 && wc <= 0x11EF6))
{
- if (wc == 0x11D3A || (wc >= 0x11D3C && wc <= 0x11D3D))
+ if ((wc >= 0x11D31 && wc <= 0x11D36) || wc == 0x11D3A)
return TRUE;
- if (wc == 0x11D3F || wc == 0x11D43)
+ if ((wc >= 0x11D3C && wc <= 0x11D3D) || wc == 0x11D3F)
return TRUE;
- if ((wc >= 0x11D8A && wc <= 0x11D8E) ||
- (wc >= 0x11D90 && wc <= 0x11D91))
+ if (wc == 0x11D43 || (wc >= 0x11D8A && wc <= 0x11D8E))
return TRUE;
- if ((wc >= 0x11D93 && wc <= 0x11D94) ||
+ if ((wc >= 0x11D90 && wc <= 0x11D91) ||
+ (wc >= 0x11D93 && wc <= 0x11D94) ||
(wc >= 0x11EF3 && wc <= 0x11EF6))
return TRUE;
return FALSE;
@@ -527,6 +585,276 @@ _pango_is_Vowel_Dependent (gunichar wc)
return FALSE;
}
+static inline gboolean
+_pango_is_Consonant_Prefixed (gunichar wc)
+{
+ if ((wc >= 0x111C2 && wc <= 0x111C3) ||
+ wc == 0x1193F || wc == 0x11A3A || (wc >= 0x11A84 && wc <= 0x11A89))
+ return TRUE;
+ return FALSE;
+}
+
+static inline gboolean
+_pango_is_Consonant_Preceding_Repha (gunichar wc)
+{
+ if (wc == 0x0D4E || wc == 0x11941 || wc == 0x11D46)
+ return TRUE;
+ return FALSE;
+}
+
+static inline gboolean
+_pango_is_EastAsianWide (gunichar wc)
+{
+ if ((wc >= 0x1100 && wc <= 0x2797))
+ {
+ if ((wc >= 0x1100 && wc <= 0x23F3))
+ {
+ if ((wc >= 0x1100 && wc <= 0x115F))
+ return TRUE;
+ if (wc == 0x20A9 || (wc >= 0x231A && wc <= 0x231B))
+ return TRUE;
+ if ((wc >= 0x2329 && wc <= 0x232A))
+ return TRUE;
+ if ((wc >= 0x23E9 && wc <= 0x23EC) || wc == 0x23F0 || wc == 0x23F3)
+ return TRUE;
+ return FALSE;
+ }
+ if ((wc >= 0x25FD && wc <= 0x26BE))
+ {
+ if ((wc >= 0x25FD && wc <= 0x25FE) ||
+ (wc >= 0x2614 && wc <= 0x2615))
+ return TRUE;
+ if ((wc >= 0x2648 && wc <= 0x2653) || wc == 0x267F)
+ return TRUE;
+ if (wc == 0x2693 || wc == 0x26A1)
+ return TRUE;
+ if ((wc >= 0x26AA && wc <= 0x26AB) ||
+ (wc >= 0x26BD && wc <= 0x26BE))
+ return TRUE;
+ return FALSE;
+ }
+ if ((wc >= 0x26C4 && wc <= 0x26FA))
+ {
+ if ((wc >= 0x26C4 && wc <= 0x26C5))
+ return TRUE;
+ if (wc == 0x26CE || wc == 0x26D4)
+ return TRUE;
+ if (wc == 0x26EA)
+ return TRUE;
+ if ((wc >= 0x26F2 && wc <= 0x26F3) || wc == 0x26F5 || wc == 0x26FA)
+ return TRUE;
+ return FALSE;
+ }
+ if ((wc >= 0x26FD && wc <= 0x2797))
+ {
+ if (wc == 0x26FD || wc == 0x2705)
+ return TRUE;
+ if ((wc >= 0x270A && wc <= 0x270B) || wc == 0x2728)
+ return TRUE;
+ if (wc == 0x274C || wc == 0x274E)
+ return TRUE;
+ if ((wc >= 0x2753 && wc <= 0x2755) ||
+ wc == 0x2757 || (wc >= 0x2795 && wc <= 0x2797))
+ return TRUE;
+ return FALSE;
+ }
+ return FALSE;
+ }
+ if ((wc >= 0x27B0 && wc <= 0xFFC7))
+ {
+ if ((wc >= 0x27B0 && wc <= 0x2EF3))
+ {
+ if (wc == 0x27B0)
+ return TRUE;
+ if (wc == 0x27BF || (wc >= 0x2B1B && wc <= 0x2B1C))
+ return TRUE;
+ if (wc == 0x2B50)
+ return TRUE;
+ if (wc == 0x2B55 ||
+ (wc >= 0x2E80 && wc <= 0x2E99) ||
+ (wc >= 0x2E9B && wc <= 0x2EF3))
+ return TRUE;
+ return FALSE;
+ }
+ if ((wc >= 0x2F00 && wc <= 0x318E))
+ {
+ if ((wc >= 0x2F00 && wc <= 0x2FD5) ||
+ (wc >= 0x2FF0 && wc <= 0x2FFB))
+ return TRUE;
+ if (wc == 0x3000 || (wc >= 0x3001 && wc <= 0x303E))
+ return TRUE;
+ if ((wc >= 0x3041 && wc <= 0x3096) ||
+ (wc >= 0x3099 && wc <= 0x30FF))
+ return TRUE;
+ if ((wc >= 0x3105 && wc <= 0x312F) ||
+ (wc >= 0x3131 && wc <= 0x318E))
+ return TRUE;
+ return FALSE;
+ }
+ if ((wc >= 0x3190 && wc <= 0xA97C))
+ {
+ if ((wc >= 0x3190 && wc <= 0x31E3))
+ return TRUE;
+ if ((wc >= 0x31F0 && wc <= 0x321E) ||
+ (wc >= 0x3220 && wc <= 0x3247))
+ return TRUE;
+ if ((wc >= 0x3250 && wc <= 0x4DBF))
+ return TRUE;
+ if ((wc >= 0x4E00 && wc <= 0xA48C) ||
+ (wc >= 0xA490 && wc <= 0xA4C6) ||
+ (wc >= 0xA960 && wc <= 0xA97C))
+ return TRUE;
+ return FALSE;
+ }
+ if ((wc >= 0xAC00 && wc <= 0xFFC7))
+ {
+ if ((wc >= 0xAC00 && wc <= 0xD7A3) ||
+ (wc >= 0xF900 && wc <= 0xFAFF))
+ return TRUE;
+ if ((wc >= 0xFE10 && wc <= 0xFE19) ||
+ (wc >= 0xFE30 && wc <= 0xFE52))
+ return TRUE;
+ if ((wc >= 0xFE54 && wc <= 0xFE66) ||
+ (wc >= 0xFE68 && wc <= 0xFE6B))
+ return TRUE;
+ if ((wc >= 0xFF01 && wc <= 0xFF60) ||
+ (wc >= 0xFF61 && wc <= 0xFFBE) ||
+ (wc >= 0xFFC2 && wc <= 0xFFC7))
+ return TRUE;
+ return FALSE;
+ }
+ return FALSE;
+ }
+ if ((wc >= 0xFFCA && wc <= 0x1F3F4))
+ {
+ if ((wc >= 0xFFCA && wc <= 0x16FF1))
+ {
+ if ((wc >= 0xFFCA && wc <= 0xFFCF))
+ return TRUE;
+ if ((wc >= 0xFFD2 && wc <= 0xFFD7) ||
+ (wc >= 0xFFDA && wc <= 0xFFDC))
+ return TRUE;
+ if ((wc >= 0xFFE0 && wc <= 0xFFE6))
+ return TRUE;
+ if ((wc >= 0xFFE8 && wc <= 0xFFEE) ||
+ (wc >= 0x16FE0 && wc <= 0x16FE4) ||
+ (wc >= 0x16FF0 && wc <= 0x16FF1))
+ return TRUE;
+ return FALSE;
+ }
+ if ((wc >= 0x17000 && wc <= 0x1F004))
+ {
+ if ((wc >= 0x17000 && wc <= 0x187F7) ||
+ (wc >= 0x18800 && wc <= 0x18CD5))
+ return TRUE;
+ if ((wc >= 0x18D00 && wc <= 0x18D08) ||
+ (wc >= 0x1B000 && wc <= 0x1B11E))
+ return TRUE;
+ if ((wc >= 0x1B150 && wc <= 0x1B152) ||
+ (wc >= 0x1B164 && wc <= 0x1B167))
+ return TRUE;
+ if ((wc >= 0x1B170 && wc <= 0x1B2FB) || wc == 0x1F004)
+ return TRUE;
+ return FALSE;
+ }
+ if ((wc >= 0x1F0CF && wc <= 0x1F251))
+ {
+ if (wc == 0x1F0CF)
+ return TRUE;
+ if (wc == 0x1F18E || (wc >= 0x1F191 && wc <= 0x1F19A))
+ return TRUE;
+ if ((wc >= 0x1F200 && wc <= 0x1F202))
+ return TRUE;
+ if ((wc >= 0x1F210 && wc <= 0x1F23B) ||
+ (wc >= 0x1F240 && wc <= 0x1F248) ||
+ (wc >= 0x1F250 && wc <= 0x1F251))
+ return TRUE;
+ return FALSE;
+ }
+ if ((wc >= 0x1F260 && wc <= 0x1F3F4))
+ {
+ if ((wc >= 0x1F260 && wc <= 0x1F265) ||
+ (wc >= 0x1F300 && wc <= 0x1F320))
+ return TRUE;
+ if ((wc >= 0x1F32D && wc <= 0x1F335) ||
+ (wc >= 0x1F337 && wc <= 0x1F37C))
+ return TRUE;
+ if ((wc >= 0x1F37E && wc <= 0x1F393) ||
+ (wc >= 0x1F3A0 && wc <= 0x1F3CA))
+ return TRUE;
+ if ((wc >= 0x1F3CF && wc <= 0x1F3D3) ||
+ (wc >= 0x1F3E0 && wc <= 0x1F3F0) || wc == 0x1F3F4)
+ return TRUE;
+ return FALSE;
+ }
+ return FALSE;
+ }
+ if ((wc >= 0x1F3F8 && wc <= 0x3FFFD))
+ {
+ if ((wc >= 0x1F3F8 && wc <= 0x1F57A))
+ {
+ if ((wc >= 0x1F3F8 && wc <= 0x1F43E))
+ return TRUE;
+ if (wc == 0x1F440 || (wc >= 0x1F442 && wc <= 0x1F4FC))
+ return TRUE;
+ if ((wc >= 0x1F4FF && wc <= 0x1F53D))
+ return TRUE;
+ if ((wc >= 0x1F54B && wc <= 0x1F54E) ||
+ (wc >= 0x1F550 && wc <= 0x1F567) || wc == 0x1F57A)
+ return TRUE;
+ return FALSE;
+ }
+ if ((wc >= 0x1F595 && wc <= 0x1F6EC))
+ {
+ if ((wc >= 0x1F595 && wc <= 0x1F596) || wc == 0x1F5A4)
+ return TRUE;
+ if ((wc >= 0x1F5FB && wc <= 0x1F64F) ||
+ (wc >= 0x1F680 && wc <= 0x1F6C5))
+ return TRUE;
+ if (wc == 0x1F6CC || (wc >= 0x1F6D0 && wc <= 0x1F6D2))
+ return TRUE;
+ if ((wc >= 0x1F6D5 && wc <= 0x1F6D7) ||
+ (wc >= 0x1F6EB && wc <= 0x1F6EC))
+ return TRUE;
+ return FALSE;
+ }
+ if ((wc >= 0x1F6F4 && wc <= 0x1F9FF))
+ {
+ if ((wc >= 0x1F6F4 && wc <= 0x1F6FC))
+ return TRUE;
+ if ((wc >= 0x1F7E0 && wc <= 0x1F7EB) ||
+ (wc >= 0x1F90C && wc <= 0x1F93A))
+ return TRUE;
+ if ((wc >= 0x1F93C && wc <= 0x1F945))
+ return TRUE;
+ if ((wc >= 0x1F947 && wc <= 0x1F978) ||
+ (wc >= 0x1F97A && wc <= 0x1F9CB) ||
+ (wc >= 0x1F9CD && wc <= 0x1F9FF))
+ return TRUE;
+ return FALSE;
+ }
+ if ((wc >= 0x1FA70 && wc <= 0x3FFFD))
+ {
+ if ((wc >= 0x1FA70 && wc <= 0x1FA74) ||
+ (wc >= 0x1FA78 && wc <= 0x1FA7A))
+ return TRUE;
+ if ((wc >= 0x1FA80 && wc <= 0x1FA86) ||
+ (wc >= 0x1FA90 && wc <= 0x1FAA8))
+ return TRUE;
+ if ((wc >= 0x1FAB0 && wc <= 0x1FAB6) ||
+ (wc >= 0x1FAC0 && wc <= 0x1FAC2))
+ return TRUE;
+ if ((wc >= 0x1FAD0 && wc <= 0x1FAD6) ||
+ (wc >= 0x20000 && wc <= 0x2FFFD) ||
+ (wc >= 0x30000 && wc <= 0x3FFFD))
+ return TRUE;
+ return FALSE;
+ }
+ return FALSE;
+ }
+ return FALSE;
+}
+
#endif /* PANGO_BREAK_TABLE_H */
/* == End of generated table == */
diff --git a/pango/pango-language.c b/pango/pango-language.c
index 575d4652..ed8b0195 100644
--- a/pango/pango-language.c
+++ b/pango/pango-language.c
@@ -66,7 +66,7 @@ pango_language_get_private (PangoLanguage *language)
if (!language)
return NULL;
- priv = (PangoLanguagePrivate *) ((char *)language - sizeof (PangoLanguagePrivate));
+ priv = (PangoLanguagePrivate *) ((void *)((char *)language - sizeof (PangoLanguagePrivate)));
if (G_UNLIKELY (priv->magic != PANGO_LANGUAGE_PRIVATE_MAGIC))
{
@@ -331,7 +331,7 @@ pango_language_from_string (const char *language)
G_LOCK_DEFINE_STATIC (lang_from_string);
static GHashTable *hash = NULL; /* MT-safe */
PangoLanguagePrivate *priv;
- char *result;
+ void *result;
int len;
char *p;
@@ -354,7 +354,7 @@ pango_language_from_string (const char *language)
g_assert (result);
priv = (PangoLanguagePrivate *) result;
- result += sizeof (*priv);
+ result = ((char *)result) + sizeof (*priv);
pango_language_private_init (priv);
@@ -749,7 +749,7 @@ parse_default_languages (void)
{
char *p, *p_copy;
gboolean done = FALSE;
- GArray *langs;
+ GPtrArray *langs;
p = getenv ("PANGO_LANGUAGE");
@@ -761,34 +761,34 @@ parse_default_languages (void)
p_copy = p = g_strdup (p);
- langs = g_array_new (TRUE, FALSE, sizeof (PangoLanguage *));
+ langs = g_ptr_array_new ();
while (!done)
{
char *end = strpbrk (p, LANGUAGE_SEPARATORS);
if (!end)
- {
- end = p + strlen (p);
- done = TRUE;
- }
+ {
+ end = p + strlen (p);
+ done = TRUE;
+ }
else
*end = '\0';
/* skip empty languages, and skip the language 'C' */
if (p != end && !(p + 1 == end && *p == 'C'))
{
- PangoLanguage *l = pango_language_from_string (p);
-
- g_array_append_val (langs, l);
- }
+ PangoLanguage *l = pango_language_from_string (p);
+
+ g_ptr_array_add (langs, l);
+ }
if (!done)
- p = end + 1;
+ p = end + 1;
}
g_free (p_copy);
- return (PangoLanguage **) g_array_free (langs, FALSE);
+ return (PangoLanguage **) g_ptr_array_free (langs, FALSE);
}
static PangoLanguage *
diff --git a/pango/pango-renderer.c b/pango/pango-renderer.c
index 6c0786c5..539df34a 100644
--- a/pango/pango-renderer.c
+++ b/pango/pango-renderer.c
@@ -227,7 +227,7 @@ draw_underline (PangoRenderer *renderer,
rect->y + 2 * rect->height,
rect->width,
rect->height);
- /* Fall through */
+ G_GNUC_FALLTHROUGH;
case PANGO_UNDERLINE_SINGLE:
case PANGO_UNDERLINE_LOW:
case PANGO_UNDERLINE_SINGLE_LINE:
diff --git a/pango/pangowin32-fontmap.c b/pango/pangowin32-fontmap.c
index ff7a6e94..b43685c7 100644
--- a/pango/pangowin32-fontmap.c
+++ b/pango/pangowin32-fontmap.c
@@ -611,19 +611,6 @@ read_windows_fallbacks (GHashTable *ht_aliases)
#endif
-
-static gboolean
-load_aliases (GHashTable *ht_aliases)
-{
-
-#ifdef HAVE_CAIRO_WIN32
- read_windows_fallbacks (ht_aliases);
- read_builtin_aliases (ht_aliases);
-#endif
-
- return TRUE;
-}
-
static void
lookup_aliases (GHashTable *aliases_ht,
const char *fontname,
@@ -634,9 +621,6 @@ lookup_aliases (GHashTable *aliases_ht,
struct PangoAlias *alias;
static gsize aliases_inited = 0;
- if (g_once_init_enter (&aliases_inited))
- g_once_init_leave (&aliases_inited, load_aliases (aliases_ht));
-
alias_key.alias = g_ascii_strdown (fontname, -1);
alias = g_hash_table_lookup (aliases_ht, &alias_key);
g_free (alias_key.alias);
@@ -660,8 +644,9 @@ create_standard_family (PangoWin32FontMap *win32fontmap,
int i;
int n_aliases;
char **aliases;
+ PangoWin32FontMapClass *class = (PangoWin32FontMapClass*) G_OBJECT_GET_CLASS (win32fontmap);
- lookup_aliases (win32fontmap->aliases, standard_family_name, &aliases, &n_aliases);
+ lookup_aliases (class->aliases, standard_family_name, &aliases, &n_aliases);
for (i = 0; i < n_aliases; i++)
{
PangoWin32Family *existing_family = g_hash_table_lookup (win32fontmap->families, aliases[i]);
@@ -728,10 +713,6 @@ _pango_win32_font_map_init (PangoWin32FontMap *win32fontmap)
win32fontmap->font_cache = pango_win32_font_cache_new ();
win32fontmap->freed_fonts = g_queue_new ();
- win32fontmap->aliases = g_hash_table_new_full ((GHashFunc)alias_hash,
- (GEqualFunc)alias_equal,
- (GDestroyNotify)alias_free,
- NULL);
win32fontmap->warned_fonts = g_hash_table_new_full (g_str_hash,
g_str_equal,
g_free,
@@ -775,8 +756,9 @@ pango_win32_font_map_fontset_add_fonts (PangoFontMap *fontmap,
int n_aliases;
int j;
PangoWin32FontMap *win32fontmap = PANGO_WIN32_FONT_MAP (fontmap);
+ PangoWin32FontMapClass *class = (PangoWin32FontMapClass*)G_OBJECT_GET_CLASS(win32fontmap);
- lookup_aliases (win32fontmap->aliases, family, &aliases, &n_aliases);
+ lookup_aliases (class->aliases, family, &aliases, &n_aliases);
if (n_aliases)
{
for (j = 0; j < n_aliases; j++)
@@ -819,6 +801,14 @@ _pango_win32_font_map_class_init (PangoWin32FontMapClass *class)
fontmap_class->list_families = pango_win32_font_map_list_families;
fontmap_class->shape_engine_type = PANGO_RENDER_TYPE_WIN32;
fontmap_class->get_face = pango_win32_font_map_get_face;
+ class->aliases = g_hash_table_new_full ((GHashFunc)alias_hash,
+ (GEqualFunc)alias_equal,
+ (GDestroyNotify)alias_free,
+ NULL);
+#ifdef HAVE_CAIRO_WIN32
+ read_windows_fallbacks (class->aliases);
+ read_builtin_aliases (class->aliases);
+#endif
_pango_win32_get_display_dc ();
}
@@ -869,7 +859,6 @@ pango_win32_font_map_finalize (GObject *object)
pango_win32_font_cache_free (win32fontmap->font_cache);
g_hash_table_destroy (win32fontmap->warned_fonts);
- g_hash_table_destroy (win32fontmap->aliases);
g_hash_table_destroy (win32fontmap->fonts);
g_hash_table_destroy (win32fontmap->families);
diff --git a/pango/pangowin32-private.h b/pango/pangowin32-private.h
index f5620b87..1c9c1c09 100644
--- a/pango/pangowin32-private.h
+++ b/pango/pangowin32-private.h
@@ -113,7 +113,7 @@ struct _PangoWin32FontMapClass
PangoContext *context,
PangoWin32Face *face,
const PangoFontDescription *desc);
-
+ GHashTable *aliases;
};
struct _PangoWin32Font
diff --git a/tests/GraphemeBreakTest.txt b/tests/GraphemeBreakTest.txt
index 6847953c..5baf292a 100644
--- a/tests/GraphemeBreakTest.txt
+++ b/tests/GraphemeBreakTest.txt
@@ -1,6 +1,6 @@
-# GraphemeBreakTest-11.0.0.txt
-# Date: 2018-03-18, 13:30:33 GMT
-# © 2018 Unicode®, Inc.
+# GraphemeBreakTest-13.0.0.txt
+# Date: 2019-11-15, 19:49:10 GMT
+# © 2019 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see http://www.unicode.org/terms_of_use.html
#
@@ -56,8 +56,6 @@
÷ 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]
-÷ 0020 ÷ D800 ÷ # ÷ [0.2] SPACE (Other) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
-÷ 0020 × 0308 ÷ D800 ÷ # ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <surrogate-D800> (Control) ÷ [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]
@@ -92,8 +90,6 @@
÷ 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]
-÷ 000D ÷ D800 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] <surrogate-D800> (Control) ÷ [0.3]
-÷ 000D ÷ 0308 ÷ D800 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <surrogate-D800> (Control) ÷ [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]
@@ -128,8 +124,6 @@
÷ 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]
-÷ 000A ÷ D800 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] <surrogate-D800> (Control) ÷ [0.3]
-÷ 000A ÷ 0308 ÷ D800 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <surrogate-D800> (Control) ÷ [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]
@@ -164,8 +158,6 @@
÷ 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]
-÷ 0001 ÷ D800 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] <surrogate-D800> (Control) ÷ [0.3]
-÷ 0001 ÷ 0308 ÷ D800 ÷ # ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <surrogate-D800> (Control) ÷ [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]
@@ -200,8 +192,6 @@
÷ 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]
-÷ 034F ÷ D800 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
-÷ 034F × 0308 ÷ D800 ÷ # ÷ [0.2] COMBINING GRAPHEME JOINER (Extend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <surrogate-D800> (Control) ÷ [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]
@@ -236,8 +226,6 @@
÷ 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]
-÷ 1F1E6 ÷ D800 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
-÷ 1F1E6 × 0308 ÷ D800 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <surrogate-D800> (Control) ÷ [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]
@@ -272,8 +260,6 @@
÷ 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]
-÷ 0600 ÷ D800 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
-÷ 0600 × 0308 ÷ D800 ÷ # ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <surrogate-D800> (Control) ÷ [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]
@@ -308,8 +294,6 @@
÷ 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]
-÷ 0903 ÷ D800 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
-÷ 0903 × 0308 ÷ D800 ÷ # ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <surrogate-D800> (Control) ÷ [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]
@@ -344,8 +328,6 @@
÷ 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]
-÷ 1100 ÷ D800 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
-÷ 1100 × 0308 ÷ D800 ÷ # ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <surrogate-D800> (Control) ÷ [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]
@@ -380,8 +362,6 @@
÷ 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]
-÷ 1160 ÷ D800 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
-÷ 1160 × 0308 ÷ D800 ÷ # ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <surrogate-D800> (Control) ÷ [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]
@@ -416,8 +396,6 @@
÷ 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]
-÷ 11A8 ÷ D800 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
-÷ 11A8 × 0308 ÷ D800 ÷ # ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <surrogate-D800> (Control) ÷ [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]
@@ -452,8 +430,6 @@
÷ 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]
-÷ AC00 ÷ D800 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
-÷ AC00 × 0308 ÷ D800 ÷ # ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <surrogate-D800> (Control) ÷ [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]
@@ -488,8 +464,6 @@
÷ 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]
-÷ AC01 ÷ D800 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
-÷ AC01 × 0308 ÷ D800 ÷ # ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <surrogate-D800> (Control) ÷ [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]
@@ -524,8 +498,6 @@
÷ 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]
-÷ 231A ÷ D800 ÷ # ÷ [0.2] WATCH (ExtPict) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
-÷ 231A × 0308 ÷ D800 ÷ # ÷ [0.2] WATCH (ExtPict) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <surrogate-D800> (Control) ÷ [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]
@@ -560,8 +532,6 @@
÷ 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]
-÷ 0300 ÷ D800 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
-÷ 0300 × 0308 ÷ D800 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <surrogate-D800> (Control) ÷ [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]
@@ -596,8 +566,6 @@
÷ 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]
-÷ 200D ÷ D800 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
-÷ 200D × 0308 ÷ D800 ÷ # ÷ [0.2] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <surrogate-D800> (Control) ÷ [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]
@@ -632,44 +600,6 @@
÷ 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]
-÷ 0378 ÷ D800 ÷ # ÷ [0.2] <reserved-0378> (Other) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
-÷ 0378 × 0308 ÷ D800 ÷ # ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
-÷ D800 ÷ 0020 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] SPACE (Other) ÷ [0.3]
-÷ D800 ÷ 0308 ÷ 0020 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
-÷ D800 ÷ 000D ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ D800 ÷ 0308 ÷ 000D ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ D800 ÷ 000A ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ D800 ÷ 0308 ÷ 000A ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ D800 ÷ 0001 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] <START OF HEADING> (Control) ÷ [0.3]
-÷ D800 ÷ 0308 ÷ 0001 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
-÷ D800 ÷ 034F ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
-÷ D800 ÷ 0308 × 034F ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAPHEME JOINER (Extend) ÷ [0.3]
-÷ D800 ÷ 1F1E6 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-÷ D800 ÷ 0308 ÷ 1F1E6 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-÷ D800 ÷ 0600 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ D800 ÷ 0308 ÷ 0600 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
-÷ D800 ÷ 0903 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ D800 ÷ 0308 × 0903 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
-÷ D800 ÷ 1100 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
-÷ D800 ÷ 0308 ÷ 1100 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
-÷ D800 ÷ 1160 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
-÷ D800 ÷ 0308 ÷ 1160 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
-÷ D800 ÷ 11A8 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
-÷ D800 ÷ 0308 ÷ 11A8 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
-÷ D800 ÷ AC00 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
-÷ D800 ÷ 0308 ÷ AC00 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
-÷ D800 ÷ AC01 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
-÷ D800 ÷ 0308 ÷ AC01 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
-÷ D800 ÷ 231A ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] WATCH (ExtPict) ÷ [0.3]
-÷ D800 ÷ 0308 ÷ 231A ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] WATCH (ExtPict) ÷ [0.3]
-÷ D800 ÷ 0300 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
-÷ D800 ÷ 0308 × 0300 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] COMBINING GRAVE ACCENT (Extend_ExtCccZwj) ÷ [0.3]
-÷ D800 ÷ 200D ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
-÷ D800 ÷ 0308 × 200D ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) × [9.0] ZERO WIDTH JOINER (ZWJ_ExtCccZwj) ÷ [0.3]
-÷ D800 ÷ 0378 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] <reserved-0378> (Other) ÷ [0.3]
-÷ D800 ÷ 0308 ÷ 0378 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
-÷ D800 ÷ D800 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] <surrogate-D800> (Control) ÷ [0.3]
-÷ D800 ÷ 0308 ÷ D800 ÷ # ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend_ExtCccZwj) ÷ [5.0] <surrogate-D800> (Control) ÷ [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]
@@ -695,6 +625,6 @@
÷ 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: 672
+# Lines: 602
#
# EOF
diff --git a/tests/SentenceBreakTest.txt b/tests/SentenceBreakTest.txt
index 70898a31..5ae1f881 100644
--- a/tests/SentenceBreakTest.txt
+++ b/tests/SentenceBreakTest.txt
@@ -1,6 +1,6 @@
-# SentenceBreakTest-11.0.0.txt
-# Date: 2018-01-31, 08:20:29 GMT
-# © 2018 Unicode®, Inc.
+# SentenceBreakTest-13.0.0.txt
+# Date: 2019-11-20, 22:27:22 GMT
+# © 2019 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see http://www.unicode.org/terms_of_use.html
#
diff --git a/tests/WordBreakTest.txt b/tests/WordBreakTest.txt
index c4c92550..3e85759b 100644
--- a/tests/WordBreakTest.txt
+++ b/tests/WordBreakTest.txt
@@ -1,6 +1,6 @@
-# WordBreakTest-11.0.0.txt
-# Date: 2018-03-16, 20:34:16 GMT
-# © 2018 Unicode®, Inc.
+# WordBreakTest-13.0.0.txt
+# Date: 2019-11-20, 22:27:23 GMT
+# © 2019 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see http://www.unicode.org/terms_of_use.html
#
diff --git a/tests/testboundaries_ucd.c b/tests/testboundaries_ucd.c
index ee5617bc..f77abdcd 100644
--- a/tests/testboundaries_ucd.c
+++ b/tests/testboundaries_ucd.c
@@ -104,7 +104,7 @@ parse_line (gchar *line,
{
case 0x00f7: /* DIVISION SIGN: boundary here */
temp_attr.bits |= bits.bits;
- /* fall through */
+ G_GNUC_FALLTHROUGH;
case 0x00d7: /* MULTIPLICATION SIGN: no boundary here */
break;
diff --git a/tools/gen-break-table.py b/tools/gen-break-table.py
index 2c8a7d70..5d346c8c 100755
--- a/tools/gen-break-table.py
+++ b/tools/gen-break-table.py
@@ -9,20 +9,21 @@ from collections import OrderedDict
header = []
ranges = OrderedDict()
-def load_data(filename):
+def load_data(filename, prefix=""):
global header, ranges
f = open(filename)
lines = f.readlines()
for line in lines:
- header.append(line)
if not line.startswith("#"):
break
+ header.append(line)
for line in lines:
line = line.strip()
if not line or line[0] == '#':
continue
rang, typ = [s.strip() for s in line.split('#')[0].split(';')[:2]]
+ typ = prefix + typ
rang = [int(s, 16) for s in rang.split('..')]
if len(rang) > 1:
@@ -87,6 +88,7 @@ def print_ranges(ranges):
def print_balanced_search(ranges):
if 4 >= len(ranges):
print_ranges(ranges)
+ print("return FALSE;")
return
length = len(ranges)
@@ -116,7 +118,7 @@ def print_table():
print("/*")
print(" * The following tables are generated by running:")
print(" *")
- print(" * ./gen-break-table.py SentenceBreakProperty.txt IndicSyllabicCategory.txt | indent")
+ print(" * ./gen-break-table.py SentenceBreakProperty.txt IndicSyllabicCategory.txt EastAsianWidth.txt | indent")
print(" *")
print(" * on files with these headers:")
print(" *")
@@ -132,14 +134,22 @@ def print_table():
for typ,s in ranges.items():
if typ not in ['STerm',
- 'Virama',
- 'Vowel_Dependent']: continue
+ 'Virama',
+ 'Vowel_Dependent',
+ 'Consonant_Prefixed',
+ 'Consonant_Preceding_Repha']: continue
print()
print("static inline gboolean _pango_is_%s (gunichar wc)" % typ)
print("{")
- print_balanced_search(sorted(s))
+ print_balanced_search(sorted(s))
print("}")
+ s = ranges["EastAsian_F"] + ranges["EastAsian_W"] + ranges["EastAsian_H"]
+ print("static inline gboolean _pango_is_EastAsianWide (gunichar wc)")
+ print("{")
+ print_balanced_search(sorted(s))
+ print("}")
+
print()
print("#endif /* PANGO_BREAK_TABLE_H */")
print()
@@ -147,10 +157,11 @@ def print_table():
if __name__ == "__main__":
- if len (sys.argv) != 3:
- print("usage: ./gen-break-table.py SentenceBreakProperty.txt IndicSyllabicCategory.txt | indent", file=sys.stderr)
+ if len (sys.argv) != 4:
+ print("usage: ./gen-break-table.py SentenceBreakProperty.txt IndicSyllabicCategory.txt EastAsianWidth.txt | indent", file=sys.stderr)
sys.exit (1)
load_data(sys.argv[1])
load_data(sys.argv[2])
+ load_data(sys.argv[3], "EastAsian_")
print_table()